-------------------------------------------------------------------------------

                                     RLDEV

           an unofficial development toolkit for AVG2000 and RealLive

-------------------------------------------------------------------------------
                                   CHANGELOG
-------------------------------------------------------------------------------

-- 1.45 - 2011.07.04 --

  more, more, more!  
  etc, etc, etc.
  piko piko piko.
  monday, monday.
  blue monday.
  
  changed games.info to game.cfg... I panicked!
  
  NOTE: for the -G option to work properly you will need to adjust 
    local paths for LB, LBEX and LBME in rldev-1.45/lib/rldev.cfg
  
  Generating a seen map now produces both txt and html output files!


-- 1.45 - 2011.05.06 --

  possibly counterintuitive rlc directory related changes.
    added resource directory option (-r DIR / --resdir=DIR)
    BEFORE: working directory was set to the source directory 
	  (if specified) prior to loading script source file;
	  this would likely cause confusion when resdir would then be 
      interpreted as a subdirectory within the source directory
	NOW: working directory not changed; source dir prepended to 
	  script file path (dir or '.');  source file path loaded;
	  working directory set to script directory AFTER script
	  global header, seen header and script file(s) unless
	  resdir has been defined, so that resource files are
	  found in same directory as scripts unless overridden
	  a little convoluted, but that's how it is ... TODAY
	  
	rlc auto includes "globalNNNN.kh" after global.kh for "seenNNNN.txt" if present
	clarification (just in case): global header file(s) (if present) are 
	  expected in same directory as script files


-- 1.45 - 2011.04.13 --

  "unable to encode" error now includes line number and file name info


-- 1.45 - 2011.01.20 --

  new action: -i --info
  
    resource sizes and string counts

  rlc was incorrectly compiling "page" (<0:Msg:00210, 0>) 
    to "PAGE" <0:Sys:00163, 0>.  corrected reallive.kfn.

  map file generation (inter-seen cross reference of calls and gotos)
  

-- 1.45 - 2011.01.01 --


-- 1.45 - 2010.11.07 --

  Updated bytecodes and new features by Richard 23.

  Introduce game definition file for defining game
    specific encryption keys and other game info.
	/lib/games.info
	
  Introduce cast of characters translation file.
    cast.ini
	
  Add support for LB, LB-EX, LB-ME, FIVE
  
  Add support for dramatis personae translation & 
    special jp -> en characters (translation prep).
	
  Major update to reallive.kfn function definition file
    (many new functions exposed by RealLiveMax SDK).
	Needs to be more fully tested with existing games.
	
  go[to|sub]_on and go[to|sub]_case are now standard cases
  
  source debugger '#line n' directives now written inline

KPRL:

  when an error occurs during disassembly a hex dump
    file is generated which may help debugging kprl.
	hex dump file has extension 'hex'.
  
  script files use file extension 'org' (was 'ke')
    for compatibility with RealLive source debugger.

  new action: -i --info
  
    not implemented yet
  
  new action: -K --check
  
  new action: -c --compress

  new action:    --decompress

  new action:    --encrypt

  new action:    --decrypt

  new option: -G GID --game=GID
    specify game by id (/lib/games.info)
	affects game-specific key, version
  
  new option: -Z --separate-all-strings (variant of -S)
    inline string values use a separate numbering system
    <Snnn> so that in-process translation isn't affected 
	if "separate all" option is enabled after the fact.
	
  -S or -Z should be the default in order that substrings
	for dynamic output aren't missed during translation.

  new option: -F ADDR --from=ADDR
    specify start address for disassembly

  new option: -T ADDR --to=ADDR
    specify end address for disassembly

  new option:    --kfn=FILE
    specify function definition file to use 
	(default: lib/reallive.kfn)

  new option:    --cast=FILE
    specify cast of characters translation file 
	(default: cast.ini)

  new option: -p --translation-prep
    output resource strings twice, commenting out the first

  new option:    --ext=EXT
    file extension for script files (default: org; was: ke)	
  
RLC:
	
    Fixed rlc/function.ml get_func_def() for 
		zero param function calls (eg, page) seen2505
  
	rlc -v[erbose] -> -v[erbose]=LVL; was boolean, 
		changed to integer (consistent with kprl)

  
-- [subversion] --
-- 1.41 - 200x.x.xx --

  Add support for Traditional Chinese (CP950).

KPRL:

  Add support for reading the additional encryption layer used in
  Little Busters!.  Note that rlc CANNOT currently recompile files in
  this format - only extraction is supported.

RLC:

  Encode selections properly when using Chinese or Korean text.
  

-- 1.40 - 2006.6.22 --

  Fix build system for portability (it now works in Darwin and Solaris).
  Add support for rlBabel-encoded default names.  
  Modify Korean support, replacing the hanja with more hangul.

VACONV:

  Fix decoding of G00 format 1.

RLC:

  Fix a potential issue with compilation of unary operations in function
 parameters.
  Fix various parsing errors in gameexe.ini.


-- 1.39 - 2006-5-1 --

  Fix UTF-8 BOM handling.  
  Improve handling of the case where a scenario ends with a label.  
  Add support for Korean text (KS X 1001).


-- 1.38 - 2006-4-22 --

  Fix some more code-generation bugs.


-- 1.37 - 2006-4-21 --

VACONV:

  Implement origin specifications in G00 format 2 regions; these are used by
 some dialog graphics in Clannad.  
  Fix fatal errors caused by failure to range-check region bounds.
  

-- 1.36 - 2006-4-17 --

  Fix a bug causing incorrect code generation in CLANNAD's SEEN9033.  
  Support non-inline speaker names in rlBabel.


-- 1.35 - 2006-4-11 --

  Numerous bug fixes.
  The Textout library now works properly.
  rlBabel's proportional text output is now mature enough for limited use (it 
 supports the features Kanon needs).

RLC:

  "case" statements are now compiled more efficiently in the optimal case where
 all "of" expressions are constant and there are no gaps in coverage.


-- 1.30 - 2006-2-1 --

  Support for non-Japanese character sets.  Games can now use ISO-8859-1 or 
 GB2132, in addition to JIS.  (This requires interpreter support.  A generic 
 noninvasive patch is supplied which works with RealLive 1.2 and up.)
  Support per-file input encoding specification.
  Fixed a number of bugs in all utilities related to relative pathnames.
  Fixed handling of effects in select() calls, removing the Princess Bride
 special-casing and replacing it with what should be the correct general
 implementation.  The syntax accepted for effect clauses has been expanded
 accordingly.

  Disabled Camomile support, as it was unmaintained and largely unused.
  
RLC:
  
  Fixed a bug that sometimes caused calls to certain functions from conditional 
 expressions to be compiled twice.
  Generate correct code for == and != on string operands.
  New alternative dynamic formatting library 'rlBabel': this supports 
 proportional text, but only works in RealLive 1.2 and up.  Work in progress.

KPRL:

  Fixed a longstanding bug in the API versioning checks.

API:

  Modified a number of function names, definitions, and documentation in the 
 light of new information.  This has resulted in some non-backwards-compatible 
 API changes, though the old functions have been deprecated rather than removed 
 for now.  Note in particular that the streq() function no longer exists: it 
 was a victim of mistaken identity.


-- 1.25 - 2005-12-16 --

RLC:

  Fixed a bug introduced in the previous release that was causing optimisation
 of conditional jumps to emit invalid bytecode.


-- 1.24 - 2005-12-10 --

RLC:

  Fixed faulty 1.3 support by implementing the other call variables (strK)
 and fixing the related jump functions.  Internally, reduced the number of
 hardwired special cases.
  

-- 1.23 - 2005-9-26 --

  Improved support for RealLive 1.3 by implementing call variables (intL) and
 adding the ability to parse some related jump functions.
  
API:

  Implemented colour() modifier for select strings.

  
-- 1.22 - 2005-9-15 --

API:

  Fixed __empty_string?() implementation.
 
  Textout: implemented breaking after non-escaped hyphens; added `\k-' and `\k ' 
 for explicit non-breaking hyphen and space.

RLC:
  
  Fixed precedence of && and || in generated bytecode.

VACONV:

  Rearchitected in a more extensible way; added basic output support for Majiro
 formats (.rc8, .rct).


-- 1.21 - 2005-6-22 --

API:

  Renamed Date(), Time(), and DateTime() to GetDate(), GetTime(), and
 GetDateTime() respectively, to resolve a naming conflict.  Renamed objHide()
 and objBgHide() to objClear() and objBgClear(), which more accurately
 reflect the functions' purpose.
  Textout: fixed inaccurate lineation in the presence of \e{} and \em{}.

RLC:

  Fixed bug where using empty string parameters could generate malformed code.
  Fixed bug preventing use of certain non-ASCII characters in identifiers.
  Implemented resource-file-based code rewriting with the \f{} control code.
 (As yet undocumented.)

VACONV:

  Fixed generation of regions in G00 format 2 bitmaps.
  Fixed bug causing black and white masks to be lost in some circumstances.

RLXML:

  First release: auxiliary data conversion tool.  Currently supports conversion
 of GAN files to and from XML.


-- 1.20 - 2005-6-7 --

API:

  Fine-grained API versioning; among other things, this means that pre-1.1
 versions of RealLive are now supported properly.
  More new control codes (\mv{}, \pos{}, etc.)
  Introduced Textout, a new dynamic lineation library.

RLC:

  Preliminary implementation of user variables and arrays.


-- 1.11 - 2005-4-19 --

  Major compatibility breaches.  Altered syntax of several features; removed
 static lineation and glosses altogether, pending improved reimplementation.

API:

  Support for emitting codes \e{}, \em{}.
  Generalised handling of grpMulti etc; other functions of this sort (e.g.
 the index_series() function introduced in later 1.2.6 builds) can now just be
 added straight to reallive.kfn.

RLC:

  First release: new compiler superceding Rlas.

KPRL:

  Support for the new entrypoint marker used in RealLive 1.2.5 and newer.

VACONV:

  First release: graphic conversion tool.  Currently supports conversions
 between G00, PDT, and PNG.


-- 1.03 - 2004-12-16 --

KPRL:

  Fixed unhandled exception resulting from failure to auto-detect `kinetic'
 target.

RLAS:

  Compilation to `kinetic' target now works.
  New control code \assume{} provides a workaround for various situations that
 the automatic lineation routine cannot handle correctly.  [Removed in 1.11]
  New variable GLOSS_SEP_WINDOW provides a method to display hypertext glosses
 in novel-type games using R_COMMAND_MOD to display long pages.  [Removed in 1.11]


-- 1.02 - 2004-12-12 --

  Limited support for a new target `kinetic', which handles the bytecode changes
 in the kinetic.exe interpreter.

RLAS:

  Lineation now reads settings from the INI file as documented and applies the
 correct spacing to hankaku characters.
  Fixed AVG2000 support.


-- 1.01 - 2004-12-11 --

  Minor bug fix release.
  

-- 1.00 - 2004-11-25 --

  Manual written.
  Support for encodings other than CP932.
  Camomile is now optional.
  Package renamed; the default search path now looks for an rldev directory
 rather than a kprl directory, and the KPRL environment variable has been
 renamed RLDEV.

KPRL:

  Archive modification (adding and removing files).

RLAS:

  AVG2000 support.
  New codes: glosses [removed in 1.11], resource string management.
  More convenient format for names with \{}, \m{A-ZZ}, and \l{A-ZZ}.
  Recognise conditional options and inline variables in the select() family.


-- 0.99 - 2004-10-26 --

RLAS:

  First release.


-- 0.80 - 2004-07-28 --

KPRL:

  First release.


-------------------------------------------------------------------------------
