Arcade Cabinet

Valid XHTML 1.0!

Valid CSS!













DatLib is now at the heart of all of my tools!

It supports a variety of data file formats and handles the standard loading, cleansing, converting and saving operations that are required by tools such as DatUtil, MAMEDiff, ROMBuild, ROMInfo and ZipIdent.

This package is a source only release and is only required if you want to compile any of my tools.

Download DatLib v2.36 (107KB)



13 April 2009 - DatLib v2.36

- Added support for 64-bit ROM sizes (n.b. not for directory scan).

9 January 2009 - DatLib v2.35

- Fixed warning messages for ROM size conflicts (Kawaks v1.60).

2 November 2008 - DatLib v2.34

- Changed the order of MD5 and SHA1 in listinfo and XML datafiles.
- Removed the ambiguous "-f xml" option. Use listxml or genericxml.

28 October 2008 - DatLib v2.33

- Added SHA1 / MD5 information for Neil Corlett's KGPE hack.
- Added load / support for AAE RomList.
- datutil -k now allows MD5 and SHA1 at the same time.
- datutil -n will NOT determine file types (everything = roms).
- Changed the directory scanner to process zero byte files / roms.
- Support for a new rom / disk status of 'verified'
- Added save support for the Hyperspin Database format.

16 July 2008 - DatLib v2.32

- Improved datutil -i to search for ROMs by CRC as well as name.

29 June 2008 - DatLib v2.31

- Added support for ' in the XML formats.

24 June 2008 - DatLib v2.30

- Added XML entity support to generic XML headers (when saving).

10 June 2008 - DatLib v2.29

- Added warning when forcenodump is missing.

5 May 2008 - DatLib v2.28

- Fixed parsing of listinfo comments.
- MAMEDiff -z option is inferred from 'forcenodump' (if present).
- Fixed de-duplication of "nodump" ROMs and disks for MAMEDiff.

16 April 2008 - DatLib v2.27

- Fixed generation of url within CMPro datafiles (needs quotes).
- Added support for release information (mainly for console ROMs).
- Added release support to list+generic xml, listinfo, delimited.
- Added the <release> element to the ROM Management Datafile DTD.
- Added support for Game Launcher and GameEx Map Files (untested).
- Added support for substring selections (within descriptions).

6 April 2008 - DatLib v2.26

- Minor tweaks to the DTD (header and manufacturer now optional).
- Fixed empty header being written to Generic XML datafiles.
- Fixed conversion of MESS XML to Generic XML (machines -> games).

4 April 2008 - DatLib v2.25

- Added automatic date population (based on the version number).
- Renamed forcezipping to forcepacking (CMPro).
- Renamed forcedrommode to rommode (RomCenter 3).
- Renamed forcedbiosmode to biosmode (RomCenter 3).
- Renamed forcedsamplemode to samplemode (RomCenter 3).
- Changed from m/s/n to merged/split/unmerged (RomCenter 3).
- Changed from y/n to yes/no (RomCenter 3).
- Added internal flags for all header items (fixes, warnings, etc).
- Added fix summary for header items (appears in datutil.log).
- Added warnings for invalid header items (appear in datutil.log).
- Added notices for lost header items (appear in datutil.log).
- Added the DTD for ROM Management Datafiles (revision 1.1).
- Documented the limitations of the XML parser in readme.txt.

24 March 2008 - DatLib v2.24

- Fixed crash (allzip had spurious carriage returns in kyukaidk).

17 March 2008 - DatLib v2.23

- Simplified the internal handling of CMPro and RomCenter headers.
- Added date, email, homepage, url, comment, forcenodump to CMPro.
- Added category to RomCenter header (for completeness).
- Added the Generic XML format.
- Note: CMPro, RomCenter and XML headers all contain the same info.

26 November 2007 - DatLib v2.22

- Fixed crash when loading full MESS XML (0.105 upwards).
- MESS: Support for new device attributes (type, tag and mandatory).
- MESS: Support for machine "RAM options".
- MAME + MESS: Support for new emulator "debug" attribute.
- MAME + MESS: Changed "refresh" attributes from float to double.
- MAME + MESS: Added driver "savestate" warnings.

29 July 2007 - DatLib 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.

1 January 2007 - DatLib v2.20

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

30 December 2006 - DatLib v2.19

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

17 October 2006 - DatLib 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 July 2006 - DatLib v2.17

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

11 July 2006 - 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)

13 January 2006 - DatLib v2.15

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

12 January 2006 - DatLib 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.

6 December 2005 - DatLib v2.13

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

5 December 2005 - 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 [].

13 November 2005 - DatLib 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 October 2005 - DatLib v2.10

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

28 October 2005 - DatLib 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).

5 October 2005 - DatLib v2.8

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

17 September 2005 - 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 August 2005 - DatLib v2.6

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

10 April 2005 - DatLib v2.5

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

25 March 2005 - DatLib 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).

7 March 2005 - DatLib v2.3

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

28 February 2005 - DatLib 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 February 2005 - DatLib 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.

15 February 2005 - DatLib 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 support for external selection files with the @ symbol.
- Removed the hack made in DatLib v1.13 for Calice drivers.
- Removed funny size and missing year checks (pretty useless now).

16 January 2005 - DatLib v1.14

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

4 January 2005 - DatLib 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 November 2004 - DatLib v1.12

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

26 October 2004 - DatLib v1.11

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

18 August 2004 - DatLib v1.10

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

30 July 2004 - DatLib v1.9

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

22 July 2004 - DatLib v1.8

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

21 July 2004 - DatLib 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 July 2004 - DatLib 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 July 2004 - DatLib v1.5

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

11 July 2004 - DatLib 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.

6 July 2004 - DatLib v1.3

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

5 July 2004 - DatLib v1.2

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

4 July 2004 - DatLib 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'.

2 July 2004 - DatLib v1.0

- The first public release.