History
-------

30/12/2006  *** v2.26 ***

            - Uses DatLib v2.19.
            - Improved -dX modes (understands merging despite differing names) 
            - Added CPS-2 to descriptions when producing disk supplements
            - Added sourcefile information to output datafile
            - Fixed sample functionality in the standard comparison modes.
              i.e. Running MAMEDiff without options or in verbose mode (-v).

11/07/2006  *** v2.25 ***

            - Uses DatLib v2.16.
            - Fixed bug that messed up internal indices (affected crc matching)
            - More intelligent directory scanner (regarding samples and CHDs)
            - Removed 64MB file limit from directory scanner (reads 1MB blocks)

09/01/2006  *** v2.24 ***

            - Added -d4 (even smaller supplements - for ROM archival only).
            - Updated the usage information on the command line.
            - Tidied up the code in generate.c (used by -d1, -d2, -d3, -d4).

06/12/2005  *** v2.23 ***

            - Uses DatLib v2.13.
            - DatLib v2.12 broke the RomCenter drivers (now fixed).

05/12/2005  *** v2.22 ***

            - Uses DatLib v2.12.
            - Fixed a rare crash (if the longest line in the dat was the last).
            - Fixed a problem loading RomCenter data files containing [].
            - From DatLib v2.11.
            - M1 XML will not use hex for ROM sizes after all... changed back!

31/10/2005  *** v2.21 ***

            - Uses DatLib v2.10.
            - Fixed identification of ListXML for MAME+MESS v0.101u4 onwards.

28/10/2005  *** v2.20 ***

            - Uses DatLib v2.9.
            - M1 XML will use hex for ROM sizes. Changed driver accordingly.

05/10/2005  *** v2.19 ***

            - Uses DatLib v2.8.
            - Improved the logerror() function (used for reporting ZIP errors).
            - Added support for M1's XML format (when it becomes available).

17/09/2005  *** v2.18 ***

            - Uses DatLib v2.7.
            - Compiled with zlib 1.3.
            - Improved Neo-Geo handling for the Nebula driver.
            - Improved 'romof' handling for RomCenter 2 driver (during loading).

31/08/2005  *** v2.17 ***

            - Uses DatLib v2.6.
            - Fixed a 'hang' that occurred with circular cloneof relationships.

28/02/2005  *** v2.16 ***

            - Uses DatLib v2.2.
            - Added support for tab delimited files.
            - Fixed problem of unrecognised escape sequences looping forever!

22/02/2005  *** v2.15 ***

            - Uses DatLib v2.1.
            - Now outputs a listing of game name comparisons (mamediff.out).
            - Can identify listinfo files even if they only contain resources.
            - Changed the error messages that are given when files are missing.

13/02/2005  *** v2.14 ***

            - Uses DatLib v2.0.
            - Supports the DatLib v2.0 method of handling baddump/nodump ROMs.

16/01/2005  *** v2.13 ***

            - Uses DatLib v1.14.
            - Added support for Calice drivers (DatLib v1.13).
            - Added support for the GNGEO romrc file.
            - Increased maximum ROM size to 64MB (used when scanning folders).
            - Fixed a memory allocation bug that could cause a hang sometimes.

25/11/2004  *** v2.12 ***

            - Uses DatLib v1.12.
            - Improved the handling of CRC conflicts within the 'fix merging'.

26/10/2004  *** v2.11 ***

            - Uses DatLib v1.11.
            - Added a parser for the ZiNc --list-sets.

18/08/2004  *** v2.10 ***

            - Uses DatLib v1.10.
            - Better handling of 'clones of clones' when loading data files.

02/08/2004  *** v2.9 ***

            - Fixed a bug that was introduced in v2.6 and affected -d3 option.

30/07/2004  *** v2.8 ***

            - Uses DatLib v1.9.
            - Added full support for disk 'merge' and 'flags' information.
            - Made use of the DatLib FORMAT_LISTINFO_XXXXXX macros throughout.

22/07/2004  *** v2.7 ***

            - Uses DatLib v1.8.
            - Removed the need for xml2info by adding my own MAME XML parser.
            - A nice side effect is that names like "Alien: The Gun" work now!

21/07/2004  *** v2.6 ***

            - Uses DatLib v1.7.
            - Added support for MESS XML.
            - Avoids duplicate ROMs in MAMEDiff -d1/-d2/-d3 data files.
            - Added support for disks and samples in the -d1/-d2/-d3 options.
              Use '-o disk' or '-o sample' to specify the desired object type.
              These options even work when comparing directories against dats!
            - Added instructions to the readme about ROM/disk/sample auditing.

18/07/2004  *** v2.5 ***

            - Added -b option (non-separated BIOS) for use with the -dX modes.
            - Added sample and disk support to the standard comparison modes.
              i.e. Running MAMEDiff without options or in verbose mode (-v).

11/07/2004  *** v2.4 ***

            - Updated the source to use the new functions of DatLib v1.4.
            - There is no functional change within MAMEDiff though.

06/07/2004  *** v2.3 ***

            - Compiled with DatLib v1.3 to fix a small issue with -d1/-d2/-d3.
              Problem only affected data files containing games without ROMs.

05/07/2004  *** v2.2 ***

            - Fixed a bug in the standard comparison that could cause a memory
              fault and crash MAMEDiff.
            - Made a couple of changes so that MAMEDiff can be used as a batch
              tool for ROM auditing (i.e. compare a directory against a dat):
            - When using -d1/-d2/-d3, games without ROMs are now ignored.
            - When using -d1/-d2/-d3 and -z, no dumps that replace a real CRC
              are not considered a change now (the previous ROM is still fine).
            - To use for simple ROM verification, use the following syntax:
              mamediff -d1 -r [-z] <dir> <dat>

04/07/2004  *** v2.1 ***

            - When using -d1, MAMEDiff will report the options in the log file.
            - Uses DatLib v2.1 so ZIP comparisons will be much faster now.

02/07/2004  *** v2.0 ***

            - Modified to use DatLib so there should be no size limitations now.
            - Basically a complete rewrite of all dat generation routines!
            - Supports all of the DatLib formats (CMPro, XML, RomCenter,
              Nebula Drivers, etc.)
            - Does not re-order games and ROMs in output data files now.
            - Outputs SHA1, MD5, flags (baddump and nodump) and regions now.
            - Better at spotting renames now due to a different game checksum.
            - Better internal 'fix merging' results in more accurate output.
            - The prefix 'Neo-Geo' is no longer added to Neo-Geo games.
            - Supports full-width game descriptions now (i.e. >100 characters).
            - Replaced -M, -S, -N, -t, -T options with -d1, -d2, -d3, -r, -z.
              Read the documentation for full details of the new options.
            - Update and supplement dats will be different, hopefully better!

04/03/2004  v1.26  Increased length of ROM names to 40 chars (for MAME v0.79).

29/01/2004  v1.25  When generating data files and log files, 'crc 00000000'
                   is now written out as 'flags nodump'.

23/01/2004  v1.24  Increased the maximum number of games from 5000 to 6000.
                   Added support for the 0x syntax used in some data files.
                   Fixed a small glitch in -S/-N/-M (used by 'MAME Changes')
                   where resources containing changes may not get output.
                   Note: This only used to happen when the resource was not
                   required by any of the games in the output data file.
                   I finally got around to making a change so that new MAME
                   resources don't need to be added to MAMEDiff ever again.
                   I guess I was being lazy and never expected so many of them!

20/01/2004  v1.23  Internal 'fix merging' runs twice now so that it propagates
                   to all clones.
                   Minor adjustment to the routine that decides if a ROM lives
                   in a resource. This fixes the handling of shootgal/sg-01-0
                   and lots of unrequired games in a 'split-merged changes'
                   datafile.

31/12/2003  v1.22  Added knowledge of the atpsx resource.

28/12/2003  v1.21  Added knowledge of the 2 new resources added in MAME v0.78.
                   Increased the maximum ROM size to 9 digits (for sfish2).

17/08/2003  v1.20  Added knowledge of the 7 new resources added in MAME v0.72.

20/05/2003  v1.19  Found a small glitch while testing the non-public v1.18.

20/05/2003  v1.18  Fixed memory addressing bug (triggered by the many apparent
                   [but not really] merge related changes in MAME v0.58).
                   Included 'fix merging' logic in the listinfo parser because
                   MAME listinfo no longer includes merge details.

19/05/2003  v1.17  Fixed so that the missing konamigx resource in MAME v0.67
                   doesn't cause a crash!
                   Added support for the new 'nodump' syntax of MAME v0.68.

07/04/2003  v1.16  Added knowledge of the Konami GX BIOS.

18/01/2003  v1.15  Increased line buffer size to 32KB (for those people who end
                   up with MAME history in their listinfo).
                   Added knowledge of the Sega ST-V BIOS.

14/11/2002  v1.14  Required some improvements for MAME v0.62:
                   Added support for the SKNS resource.
                   Improved merge handling (required by European SKNS games).
                   Does not output empty year information to mamediff.dat.
                   Made a minor change to improve compatibility with MSVC++.

20/05/2002  v1.13  Automatically detects and handles new resource ROMs.
                   New resource ROMs are now included in the -t/-T output.

22/04/2002  v1.12  Minor improvement to log for supplements.
                   Added support for the PGM BIOS.

04/04/2002  v1.11  Made internal 'fix-merging' logic check CRC as well as name.
                   Increased maximum ROM name length to 20 (for neopong).
                   Minor fix relating to ROM names that are too long.
                   Exits gracefully when the maximum no of games/ROMs reached.

17/03/2002  v1.10  Fixed bug with last version where standard compare refused
                   to start (affected -v as well).

14/03/2002  v1.09  Added the -t and -T options (see section 5.2 above).
                   Made CRCs case insensitive.
                   Minor fix to -v output.

08/02/2002  v1.08  Improved the -M, -S and -N options:
                   - The dats generated now include resource information so
                     that CMPro can separate out Standard/Neo-Geo games etc.
                   - The non-merged dat now doesn't include 'merge' information
                     in games where the parent isn't included in the dat.
                   Modified source to compile easily with CygWin (and FreeBSD?).

07/05/2001  v1.07  Minor fix: Removes unneeded 'romof' details with -S and -N.
                   Now compiled with MinGW (just like the new Windows MAME).
                   Can also be compiled with Microsoft Visual C++.

24/03/2001  v1.06  Added three new modes (-M, -S and -N) to show newly required
                   ZIPs (see section 5 of the documentation for more details).
                   Now ignores RAINE and clrmamepro headers.
                   Compiled with -Wall (fixed all warnings it uncovered).

11/03/2001  v1.05  Tiny fix to exclude resources from the game and ROM totals.

31/12/2000  v1.04  Increased game name length from 8 to 20 (for Modeler dat).
                   Prefixes Neo-Geo titles with 'Neo-Geo' (so they stand out).
                   ROMs added to parent set are also reported for clone too.
                   Now spots merge changes at the same time as CRC complement.
                   Added '-c' option to assist with the maintenance of CAESAR.
                   Included source, do not abuse!
                   Internal change: max of 32 flags instead of 16 (int->long).
                   Internal change: strcpy->strncpy to avoid memory problems.

28/07/2000  v1.03  Added complemented CRC handling.

23/05/2000  v1.02  Added support for MESS (just a minor modification).
                   Added RAINE support too (since it was so easy).

24/04/2000  v1.01  Minor bug fixed (SIGSEGV crash in pure DOS).

15/04/2000  v1.0   Initial Release.
