History
-------

29/07/2007  *** v2.21 ***

            - Empty attributes are now ignored (e.g. sha1="")
            - Removed cloneof, romof and sampleof fixes from datutil -i
            - DatUtil -i, -I and -p now default the output format to CMPro
              (in addition to -g, -G and -r which already behave like that)
            - Added support for the isbios="yes" of MAME v0.117u2 onwards.

01/01/2007  *** v2.20 ***

            - Added 'prune' feature for removing roms, disk and/or samples
            - Added 'incorporate' feature to assist in combining datafiles

30/12/2006  *** v2.19 ***

            - Internal change that only affects MAMEDiff (see note below)
            - Improved -dX modes (understands merging despite differing names) 

17/10/2006  *** v2.18 ***

            - More intelligent DTD creation when saving in ListXML format
            - Added support for game/display (MAME v0.107)
            - Added support for game/input/control (MAME v0.107)
            - Added support for emulator/build (MAME+MESS v0.101u4 upwards)
            - Added support for driver/savestate (MAME v0.101u1 upwards)
            - Note: The above changes affect the tab delimited format!

16/07/2006  *** v2.17 ***

            - Fixed bug that caused the DatUtil -g and -r options to crash

11/07/2006  *** 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)

13/01/2006  *** v2.15 ***

            - Last release would not load data files less than 4KB in size!

12/01/2006  *** v2.14 ***

            - Added a save-only format to imitate MAME's gamelist.txt file.
            - File identification is now done by loading just the first 4KB.

06/12/2005  *** v2.13 ***

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

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

            - Fixed a rare crash (if the longest line in the dat was the last).
            - Fixed a problem loading RomCenter data files containing [].

13/11/2005  *** v2.11 ***

            - Added support for 'board', 'colordeep', 'credits' and 'archive'
              (fully supported by ListInfo, ListXML and Delimited formats).
            - M1 XML loader now retains the 'board' information (see above).
            - M1 XML will not use hex for ROM sizes after all... changed back!
            - Improved the way that the Nebula driver handles Neo-Geo ROMs.
            - Fixed Nebula Jukebox driver for Neo-Geo ROMs (broken in v2.7).

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

            - Fixed identification of ListXML for MAME+MESS v0.101u4 onwards.
            - Added OPTION_ALWAYS_QUOTE for DatUtil (the '-q' option).

28/10/2005  *** v2.9 ***

            - Added better support for file formats that use hex ROM sizes.
            - M1 XML will use hex for ROM sizes. Changed driver accordingly.
            - Now reports duplicate game descriptions and CRCs (i.e. ROMs).

05/10/2005  *** 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.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.6 ***

            - Fixed a 'hang' that occurred with circular cloneof relationships.

10/04/2005  *** v2.5 ***

            - Excludes disks from RomCenter data files (datutil -k to override).

25/03/2005  *** v2.4 ***

            - Fixed another crash with datutil -X and 'forcemerging full'.
            - Changed the delimited format to use \N for NULLs.
            - Changed the delimited format so that all types are 'game_*'.
            - Changed the delimited format so that games include 'runnable'.
            - Added save support for a DISK section in the RomCenter format.
            - Added several aliases for the output formats (see DatUtil docs).

07/03/2005  *** v2.3 ***

            - Fixed a problem with counting parents (happened with DatUtil -X).
            - This also avoids a crash with datutil -X and 'forcemerging full'.

28/02/2005  *** v2.2 ***

            - Changed strtof to atof (for the guys compiling on NetBSD).
            - Added support for tab delimited files ('-f delimited').
            - Added save-support for RomCenter sublists ('-f sublist').
            - Added \t support to the listinfo driver (and tab delimited).
            - Fixed problem of unrecognised escape sequences looping forever!

22/02/2005  *** v2.1 ***

            - Made selections more flexible (can now use commas as a delimiter).
            - Added warnings for invalid game/sourcefile selections (-g and -G).
            - Added warning messages for duplicated games (i.e. same game name).
            - Can identify listinfo files even if they only contain resources.
            - The 'remove clones' option will retain the original dat format.
            - Fixed a crash caused by empty selection files (the '@' syntax).
            - Saving a RomCenter datafile will now report an error if the '¬'
              symbol is used in the game or ROM details (i.e. the dat is bad).
            - Changed the error messages that are given when files are missing.

13/02/2005  *** v2.0 ***

            - Compiled with GCC 3.4.2 (previously used GCC 3.2.3).
            - Added 'sourcefile' support to the listinfo and listxml drivers.
            - Now supports all known details in listinfo and listxml.
            - Use the flag OPTION_KEEP_FULL_DETAILS to switch on full loading!
            - N.b. ROM region is not loaded without OPTION_KEEP_FULL_DETAILS.
            - Supports 'history' entries (when using OPTION_KEEP_FULL_DETAILS).
            - Added support for \\, \n, \xXX and \" in ListInfo (e.g. history).
            - Improved entity handling (e.g. &amp; &#X;) in the ListXML parser.
            - Supports 2 additional MESS objects (devices and extensions).
            - DatLib can now save data in listxml format (MAME and MESS).
            - Changed the listxml and listinfo drivers to use simple macros.
            - Changed the internal representation of baddump/nodump.
            - Complemented CRCs are reported (should use flags nodump instead).
            - Added checks for MD5 and SHA1 conflicts (CRCs already checked).
            - Added OPTION_FIX_MERGING_OFF and OPTION_REMOVE_DUPLICATES_OFF.
            - Added OPTION_SOURCEFILE_SELECTION and OPTION_INVERT_SELECTION.
            - Added support for external selection files with the @ symbol.
            - Renamed OPTION_GAME to OPTION_GAME_SELECTION.
            - Renamed OPTION_GAME_AND_CLONES to OPTION_CLONE_SELECTION.
            - Removed the hack made in DatLib v1.13 for Calice drivers.
            - Removed funny size and missing year checks (pretty useless now).

16/01/2005  *** v1.14 ***

            - Added support for the GNGEO romrc file.
            - Increased maximum ROM size to 64MB (used when scanning folders).

04/01/2005  *** v1.13 ***

            - Added support for Calice drivers.
            - Modified the -i functionality for the use of Calice drivers.
            - Made a change to getopt.h for the latest version of MinGW/GCC.

25/11/2004  *** v1.12 ***

            - Improved the handling of CRC conflicts within the 'fix merging'.

26/10/2004  *** v1.11 ***

            - Added a parser for the ZiNc --list-sets.

18/08/2004  *** v1.10 ***

            - Better handling of 'clones of clones' when loading data files.

30/07/2004  *** v1.9 ***

            - Added full support for disk 'merge' and 'flags' information.
            - Improved the FORMAT_LISTINFO_XXXXXX macros a little bit.

22/07/2004  *** 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  *** v1.7 ***

            - Added support for MESS XML.
            - Added disks and samples to the game_zip structures.
            - Now avoids duplicate ROMs getting into the game_zip structures.
            - Added OPTION_INCLUDE_NODUMPS_IN_ZIPS for game_zip structures.
            - Directory scanner now supports CHDs (when in a game directory).
            - Directory scanner can spoof samples (OPTION_OBJECT_TYPE_SAMPLE).
            - Improved 'fix merging' (where clone ROMs are not in the parent).
            - Enhanced 'fix merging' to work for disks (SHA1/MD5 are copied).
            - Added check for SHA1/MD5 conflicts of disks across clones.

18/07/2004  *** v1.6 ***

            - Added disk CRCs for MAMEDiff (CRC is calculated using MD5/SHA1).
            - Added OPTION_NON_SEPERATED_BIOS_ROMS for MAMEDiff -d1/-d2/-d3.

17/07/2004  *** v1.5 ***

            - Added the OPTION_NEBULA_JUKEBOX (parses Z80 and Samples only).

11/07/2004  *** v1.4 ***

            - Added support for comments before games in CMPro data files.
            - Added an option to ignore missing year information.
            - Changed the way that parameters are passed to init_dat().
            - Changed the way that parameters are passed to save_dat().
            - Only SHA1 _or_ MD5 will be processed now. Using both is silly!
            - Added function to extract missing info from another dat/dir.

06/07/2004  *** v1.3 ***

            - Fixed a build_zip_structures() problem occurring with empty ZIPs.

05/07/2004  *** v1.2 ***

            - Removed ROM size limit when extended checksums are not being used.
            - Empty ZIPs are not loaded into the game_zip structures now. 

04/07/2004  *** v1.1 ***

            - ClrMamePro/RomCenter header is now ignored when using OPTION_GAME.
            - Removed a warning when you try using 'datutil -g <resource> -c'.
            - Added debug information to identify spurious warnings like above.
            - Directory/ZIP scanner will not calculate MD5/SHA1 by default now.
            - You must use OPTION_EXTENDED_CHECKSUMS, as used by 'datutil -x'.

02/07/2004  *** v1.0 ***

            - First public release.
