0.1
	- initial release

0.2
	- make interval configurable (second commandline parameter - optional / 0 = disabled [default = 100])
	- make ftr configurable (third commandline parameter - optional / only values >= allowed [default = 2])
	- make gamelist file (-list output) configurable (fourth commandline parameter - optional)

0.21
	- the ftr commandline parameter was ignored

0.22
	- use -listfull instead of -list (easier to parse and -list is obsolete)

0.23
	- disable "11beat", because it causes the system to hang
	- added file for stdout logging

0.24
	- check returncode of MAME and write all games with != 0 into crash.txt

0.25
	- always flush the crash.txt
	- do not write games with returncode 1 (roms missing) to crash.txt
	- do not stop, when "11beat" is reached

0.30
	- added parsing of -listxml format (requires way more memory)
	- disabled "tank8a" and "tank8b", because they cause the system to hang
	- log all untested game (MAME returncode 1 / missing roms) to untested.txt
	- only print information about custom game and stdout file, when the supplied parameters aren't empty

0.31
	- fixed problem with MESS when using -listxml output

0.32
	- forgot to skip "orbit" as well, because it also casues a hang
	- changed messages for games, that are skipped

0.35
	- fixed some potential unbounded string operations (and I just read a book about secure coding - geez!)
	- added comparison of -ftr auto snapshots (by file size and by existence so far)
	- renamed all output files - they now all have the prefix "mrt_"

0.40
	- changed snapshot comparison from simple filesize fix to IDAT size and CRC check
	- UNIX compilation fixes (thx .stl)
	- accidentally did snapshot comparison on every returncode, should only be done when game returned 0 (OK - snapshot should be there)

0.45
	- now also uses "autosave" for games, that support it (enabled by default / only works with -listxml output)
	- removed "tank8a", "tank8b" and "orbit" from the ignored games list, because they don't cause a freeze in 0.101u5 anymore
	- added a simple HTML report, that is written to "mrt_report.html" and will only have the different snapshots included	(report only works in IE so far)

0.46
	- do not call unrunnable games (e.g. bioses in MAME) when -listxml is used
	- check with all available ramsizes in MESS when -listxml is used (not working properly with snapshots yet)
	- the HTML report now passed the W3C Markup Validation Service (http://validator.w3.org/)

0.47
	- made calls with ramsize optional
	- clear all driver-specific files between calls when running driver multiple times (e.g. ramsize checks)
	- rename snapshots for ramsize checks (postfix _ram<count>)
	- avoid some additional ramsize checks - only games with more then one ramsize are now checked, but the one is assumed to be the default one

0.48
	- numbering will now be incremental - no more big jumps for big changes
	- clear all the driver-specific files before each "normal" call
	- added basic cart support for MESS - put a file named "mrt_cart_<drivername>.txt" where mame_regtest is run form (no snapshot comparison or clone support yet / only works with -listxml output)

0.49
	- fixed stupid bug with unrunnable games in -listxml output causing mame_regtest to hang
	- disable autosave by default as it's not properly handled yet

0.50
	- added commandline option to only check games in a specific sourcefile
	- dropped -listfull format (commandline parameter still exists, but is ignored)w hich allowed a source cleanup
	- check driver_info before processing it

0.51
	- added support for floppies (same as -cart support, but file is mrt_flop_<drivername>.txt)
	- split up IDAT reading code to prepare MNG comparison support
	- added check if given executable exists - you have to specify the name with extension now
	- properly formatted the whole source
	- added writing of MNG files / files are written in the folder 'mng'
	- added comparison of MNG files (no HTML report entries yet)
	- added valgrind support / writes logfiles "valgrind_<game>.<pid>" (unix-only)
	- renamed sourcefile from "main.c" to "mame_regtest.c"
	- fixed warning about already defined LITTLE_ENDIAN/BIG_ENDIAN on linux
	- disabled "-window" under linux
	- fixed pause interval under linux (was never working)
	- fixed win32-only code to work under linux (always way for keypress at abort)
	- '11beat' is no longer skipped, as it doesn't cause the hang anymore - no more ignored games now
	- added rompath to parameters
	- changed copyright
	- removed writing "mrt_untested.txt" as "1" is not a reliable returncode for missing roms and linux returncodes differ
	- remove created -listxml output file after parsing it
	- CRC mismatches weren't put in the HTML report
	- use proper libxml2 include path

0.52
	- fix stupid bug on linux introduced in last second change
	- added parameter to set the driver to start with (note: drivers are ordered as in the -listmxl output)
	- print sourcefile as well when processing a driver (commandline and stdout file)
	- added second call when using autosave to find problem with savestates
	- added autosave mode to only call drivers, that support savestates (mode 2)
	- got the devices working again as before (will change in the future)

0.53
	- remove the "please press any key to continue" when mame_regtest exists
	- added samplerate as commandline option (11025, 22050, 44100, 48000 - default: 44100)

0.54
	- removed default samplerate
	- using new proper default settings to make it possible to run mame_regtest in background (no video and no sound)
	- the device type and file weren't reported in "mrt_crash.txt"
	- removed extra whitespace between game name and additional information

0.55-pre1
	- introduced XML-based config file / all commandline options have been dropped
	- renamed temporary -listxml output file to "listxml.xml"
	- added new option "log_devices" to enable logging of devices only
	- added new option "use_bios" to test all bioses of a driver
	- read build information from -listxml output
	- write application build and mame_regtest version in HTML report
	- renamed default result file from "mrt_crash.txt" to "mrt_result.txt"
	- added options "result_file", "html_file", "snap_diff_file" and "mng_diff_file" to specficy the output files
	- added option "use_sound" to enable sound output
	- print message, if 'ftr' value is too small (must be at least 2)
	- removed option "samplerate"
	- flush after each HTML report write
	- introduced internal structure "driver_entry" to have less function parameters
	- introduced internal function print_driver_info() to get rid of redundant code

0.55-pre2

0.55-pre3
	- fixed formating of HTML report header
	- added postfix to driver_entry structure for snapshot renaming
	- fixed snapshot comparison with bioses, ramsizes, devices etc.
	- change HTML report to have the snapshots side by side
	- updated returncode list

0.55-pre4
	- added content-type to HTML report (is now valid XHTML1 Strict)
	- properly encode the device file name in the HTML report
	- increased internal buffer for "executable" option
	- added autosave to "driver_entry" to bring execute_mame() down to one parameter
	- added execute_mame2() to handle autosave properly and make it working with ramsize, bios and devices
	- added generic device support (NOTE: file for device-list input changed to mrt_<drivername>_<device-briefname>.txt)
	- added an underscore between device and image number for the screenshots, because device name can also contain digits

0.55-pre5
	- also using "postfix" for valgrind logfile to support devices, bios and ramsizes
	- also using "-window" in UNIX, as SDLMAME/SDLMESS use it and xmame is now defunc
	- added check on configuration reading if reference paths exist
	- adding mrt_snap_diff.txt entry if reference snapshot is missing
	- added message if a device file was found
	- added commandline parameter to specify the configuration
	- restrcutured parsing code to prepare XPath support
	- removed obsolete "list-type" output
	- added option "xpath_expr" to specify an XPath expression to select drivers to test
	- removed option "sourcefile" in favor of "xpath_expr"
	- removed option "start_at" in favor of "xpath_expr"
	- added option "use_throttle" to control throttling

0.55-pre6:
	- fixed a memory leak, a crash and an error in the output of "use_throttle"
	- added get_option_int() to get rid of redundant code
	- added get_option_str() to get rid of redundant code and properly terminate all strings
	- fixed an improperly bracket piece of code in MNG configuration reading
	- added option "use_debug" to control debug window (uses -debugscript to start emulation in debugger)
	- added option "hack_debug" to tell mame_regtest, if the executable is a debug build
	- changed option "ftr" to "str" to reflect latest MAME changes
	- added option "hack_ftr" to use "-ftr" instead of "-str"

0.61:
	- passing "driver_entry" as pointer into functions
	- added option "use_devices" to control usage of device files
	- added APP_* defines to specify type of -listxml (MAME and MESS so far)
	- disabled parts of parsing code, that not apply to the APPL_* listxml output
	- MESS now uses "-rp" to specify the rompath
	- added option "hack_biospath" to use "-bp" instead of "-rp"
	- added cleanup_and_exit() to cleanup in one place
	- deleting the mrt_debugscript file at exit
	- added xmlDocPtr to get_option_* functions in preparation of multiple configuratioon support
	- moved hack_* options at end of output
	- added support for multiple configurations in one XML (add as new element and specify name as command-line parameter)
	- changed command-line parameter from XML filename to configuration name (configuration is now hard-coded mame_regtest.xml)
	- added more command-line logging

0.62
	- removed obsolete variable "str"
	- added FILESLASH define and used it in hard-coded paths (should now properly work on unix)
	- fixed MNG writing for newer writing into the "snap" folder
	- added ramsize, bios and device support for MNG
	- added option "hack_mngwrite" for older versions, that took a path instead of a filename
	- improved MNG comparison
		- report error, if a file is missing
		- do not check for frame CRC after size check already failed
		- removed debugging code
		- added to HTML report
		- changed HTML report code to add links to the MNGs as they can't be shown inline
		- fixed a wrong check in compare_mng()
	- changed clear_driver_files() to take the "driver_entry" and clear the .mng
	- small formating changes on HTML report source
	- renamed difference logging functions
	- moved redundant difference logging code and html_report_* functions in add_diff_entry_* functions
	- added missing image and MNG messages to HTML report
	- increased the buffers in the compare_* functions
	- finally support new snapshot naming
	- properly cleanup snapshots when "postfix" is used
	- changed count for devices, ramszies, bioses to be 5-digits for proper file sorting
	- added option "hack_numbering" to use old counts without prepending 0s
	- added option "use_nonrunnable" to also test drivers with "runnable='no'" attribute
	- added handling of old snapshot names as part of "hack_ftr"

0.63
	- updated libxml2 to 2.6.27 as 2.6.22 was crashing when validating the -listxml output
	- added option "validate_listxml" to enable validation of -listxml output (will output on command-line)
	- added detection of debug build by -listxml attribute
	- moved some code from execute_mame() into execute_mame2()
	- removed the logging of the number of games checked (was wrong anyways)
	- changed counter for "pause_at" to be incremented on each application call and not per driver (so will now properly pause withing bios/ramsize/device loops)
	- removed "use_autosave" mode 2 in favor of XPath expression (see sample XML)
	- added logging of recently added options
	- disabled clearing of snapshots before the executable is run, because it would remove the default file when bios/ramsize/devices are used
	- moved some device logging code out of normal execution
	- added "device_mandatory" to driver_info for further usage
	- added savestates lacking the ".sta" extension to clearing of driver files
	- added placeholder "DRIVER_ROOT" for option "xpath_expr", so you can combine different expressions
	- the PNG comparison wasn't updated to the new snapshot paths
	- deleting autosave savestates from new path
	- fixed some typos in comments
	- added URLs to official mame_regtest pages

0.64
	- do not proceed, if no nodes have been found by a XPath expression
	- fixed some signedness warnings
	- postfix in driver_entry was referencing invalid memory
	- added option "use_dummy_root" to enable a seperate folder for files created by MAME and write an output XML
	- added option "use_output_dir" to enable a seperate folder for files created by mame_regtest
	- added option "output_folder" to specify the folder the output files are written to
	- changed C++ style comments to C style comment
	- fixed creation of folders, that already exist
	- added option "device_file" to set a specific device file
	- added option "stderr_file" to log stderr output into a file
	- added mrt_mkdir() wrapper to keep code clean
	- proper stdout on unix when "stdout_file" isn't set

0.65
	- added proper EOL in stdout and stderr files
	- moved TODOs from mame_regtest.c to TODOS
	- moved history from mame_regtest.c to CHANGELOG
	- removed comparison code
		- removed option "ref_snap_folder"
		- removed option "snap_diff_file"
		- removed option "mng_ref_folder"
		- removed option "mng_diff_file"
	- removed HTML reporting code
		- removed option "html_report"
		- removed option "html_file"
	- renamed crash_fd to result_fd
	- made read-only xmlNodePtrs const
	- changed the device file format to XML
		- allows usage of multiple devices
		- example:
			<images>
				<image cart="superchargercart.rom" cassette="superchargergame.cas"/>
				<image cart="superchargercart1.rom" cassette="superchargergame1.cas"/>
				<image cart="cart2.rom"/>
			</images>
	- changed the device file name to "mrt_<driver>.xml"
	- added result nodes to XML output containing the exitcode of MAME and stderr and stdout (suppresses the stdout and stderr files)
	- added option "use_isbios" to enable/disable testing of MAME bios sets (disabled by default)
	- removed references to xmame/xmess
	- added the output files for the first autosave run to the XML
	- changed some variables from static buffers to dynamic ones to remove length limitations
	- changed sprintf() to snprintf()
	- added option "store_output "to enable/disable storing of output files (disabled by default / directory names match XML names)
	- removed option "use_output_dir" - files will always be written to the output folder
	- added option "clear_output_folder" to clear the output folder on start-up (disabled by default)
	- not adding file CRC and size for PNG and MNG files to the output XML anymore - it will differ although the files are identical
	- added option "use_mt" to enable/disable multithreading
	- added "name" and "sourcefile" attribute to XML output
	- fixed MNG frame count - was incremented on each block read and not on actual frames
	- changes some const char* to const char* const
	- changed postfix in driver_entry to an array
	- removed static postfix buffers
	- changed device postfix from dev_XXXXX to devXXXXX
	- added backup_default_snap() to avoid abuse of rename_snap()
	- added execute_mame3() to wrap simple and device execuation
	- made ramsizes and bioses work with devices
	- added option "test_createconfig" to test the writing of the default config (enabled by default)
	- added get_executable() to get rid of redundant code
	- listxml output is now written to output folder and not being deleted anymore
	- added get_inifile() for application inifile name
	- changed APP_* defines to enum
	- properly increment device count for postfix (was always incremented by 2)

	NOTE: for now you can compare the XMLs with a simple "diff -uN" call
	
0.66
	- changed more arrays to dynamically allocated buffers
	- added option "additional_options" to specify more options for the command-line
	- removed "use_mt" in favour of "additional_options"
	- added option "skip_mandatory" to skip driver calls without devices, if they are mandatory
	- made bioses work with ramsizes
	- removed "hack_numbering" - it was the only hack for an old mame_regtest version
	- only run with the default options when no additional bioses or ramsizes are available to avoid duplicate runs
	- added option "osdprocessors" to set the OSDPROCESSOR environment variable
	- "stdout_file" and "stderr_file" are now written to the "output_folder"
	- added mrt_remove() to remove files from output folder
	- parse device data from listxml even if "use_device" is disabled
	- do not allow a "str" value lower than 2 when "hack_ftr" is being used
	- renamed my_getch() to mrt_getch()
	- added a makefile (please modify the *_INC and LIBS as you need them)
	- finally removed the useless mame_regtest.dev file
	
0.67
	- fixed compilation error on non-win32 systems (Thanks Peter Trauner)
	- added option "print_xpath_results" to print the results of the XPath expression(s) to "xpath_results.xml"
	- enabled "use_dummy_root" by default
	- added option "use_log" to also write the -log output
	- moved some common functions into common.c/.h
	- create the "mrt_debugscript" with file functions instead of a command-line call
	- added option "test_softreset" to perform a softreset (only works with "use_debug")
	- added attribute "autosave" to root node in output XML for driver, that support autosave
	- added attribute "mandatory" to root node in output XML for driver, that have mandatory devices it
	- added attribute "ramsize" to root node in output XML for driver, that are called with a ramsize
	- added attribute "bios" to root node in output XML for driver, that are called with a bios
	- added "devices" node in output XML for driver, which are called with devices
	- properly set the OSDPROCESSORS environment variable
	- renamed parse_directory() to build_output_xml()
	- implemented new callback-based parse_directory() function and moved to common.c
	- added a recursive parameter to parse_directory()
	- converted build_output_xml() and clear_directory() to the new callback-based parse_directory()
	- the output files are now within the "result" node in the output XML
	- added a small application called "create_image_xml" to create imagelist XMLs from a folder
	- changed the valgrind log format from "valgrind_<driver>[_<postfix>]" to "<driver>[_<postfix>]_valgrind_%p.log" (%p should work around the overwriting issue for now)
	
0.68
	NOTE: dummy_root is now the only supported mode

	- removed option "use_dummy_root"
	- removed option "stderr_file"
	- removed option "stdout_file"
	- removed function rename_snap()
	- removed function backup_default_snap()
	- removed function restore_default_snap()
	- removed function mrt_remove()
	- removed function clear_driver_files()
	- removed the code within the ENABLE_OBSOLETE_CODE blocks
	- converted more static arrays to dynamically allocated memory
	- writing non-driver specific options into dummy_root INI
	- added a small tool called "create_report", which will create reports out of the output XMLs
	- removed option "result_file" in favor of "report 1"
	- removed html_enc parameter from print_driver_info()
	- removed option "log_devices", because MESS already has the -listdevices option
	- changed valgrind outfile file to <driver_string>.valgrind_<pid>
	- valgrind output files are now written to the "output_folder"
	- added option "valgrind_binary" to specify the valgrind binary location
	- added option "valgrind_parameters" to specify the valgrind parameters (--log-file is added by mame_regtest)
	- put valgrind code into compile-time defijne USE_VALGRIND
	- removed option "validate_listxml" - DTD validation is now always performed
	- using folder "mrt_temp" to store temporary files
		- tmp_stdout
		- tmp_stderr
		- mrt_debugscript
		- dummy_ini folder
	- added function is_absolute_path()
	- changed most relative paths to be absolute ones
	- restructed get_executable() a bit
	- empty "additional_options" were appended
	- quoted all parts of command-line string, that could contain whitespaces as well as the whole command-line string
	- added function append_quoted_string()
	- added function append_driver_info()
	- added option "hack_pinmame" (still hangs at warning screens)
	- CWD is changed to dummy_root to get all output files (including error.log)
	- removed option "use_log", because it doesn't need any special handling anymore and can be specified via the "additional_options" option
	- rewrote configuration code to utilize a structure for initialisation to be able to re-use it
	- renamed config_get_* to config_read_*
	- renamed all configuration variables to config_*
	- re-grouped the static variables
	- removed unnecessary static variable "use_custom_list"
	- moved the configuration code to config.c/.h
	- cleaned up global variables

	create_report
	- initial version

	create_image_xml
	- added version number

0.69
	- moved mrt_mkdir() to common.c/.h
	- added "get_filename" to common.c/.h
	- updated copyright
	- renamed "block" to "chunk"
	- renamed internal_get_IDAT_data() to internal_get_next_IDAT_data()
	- changed variable declarations
	- added "png_width" and "png_height" for PNGs to XML output
	- renamed get_png_IDAT_data() to get_png_data()
	- added option "write_avi" to control creation of .avi files
	- renamed open_mng_and_skip_header() to open_mng_and_skip_sig()
	- added get_MHDR_data()
	- added "width" and "height" for MNGs to XML output
	- added option "verbose" to enable more logging
	- move some log messages to "verbose" mode
	- improved some error messages
	- disabled logging of configuration entries
	- moved calc_crc32(), clear_directory() and clear_callback() to common.c/.h
	- added clear_callback_nosnap() and clear_directory_nosnap()
	- changed option "store_output" to take value "2" to only store the "snap" folder
	- bail out when "output_folder" was found and "clear_output_folder" is not set
	- print a message when valgrind options are not supported
	- added disabled code to support gdb calls
	- removed "please report" from log message
	- added option "write_wav" to control creation of .wav files
	- temporary path and dummy root now contain the process ID to allow running of multiple instances from the same folder (NOTE: left-overs from frocefully termination and crashes cannot be cleared anymore)
	- removed option "pause_interval"
	- added check for signal file "pause.<pid>" to pause processing on the next entry (needs to be placed in working folder)
	- fixed bug in is_absolute_path() - absolute paths for "executable" are working now
	- do not treat path starting with "/" as absolute on windows
	- moved "output_folder" check before first usage of it
	- changed options "str" and "output_folder" from CFG_STR to CFG_STR_PTR
		- fixes reading of "output_folder" - it was only reading the first 4 characters
		- they cannot be left empty anymore - the defaults in the source had to be removed
	- removed config_entry_type CFG_STR from config.c/.h (it was never working properly)
	- added message about "test_softreset" only working with "use_debug" enabled
	- removed "hack_debug" as debugger can also be in non-debug builds now
	- "use_debug" can now be used with non-debug builds
	- added option "use_dipswitches" to test all non-default dipswitch settings
	- updated URLs in comments from toseciso.org to redump.net
	- added option "use_configurations" to test all non-default configurations settings
	- removed -Wunreachable-code from compilation options since it causes spurious warnings with newer GCC versions
	- removed duplicated freeing of valgrind variables
	- fixed mixture of libc and libxml2 allocation when using "hack_pinmame"
	- fixed mixture of libc and libxml2 allocations in configuration code
	- fixed compilation with new toolchain
	- added option "hashpath" to specify the location of the MESS hash files
	- added Visual Studio 2010 solution and project files
	- fixes for compilation with Visual Studio 2010 (still not working completely)
	- avoid duplicated runs for sets with bios and ram options
	- added "size" and "crc" for all file entry in output XML for completeness and verification of output data
	- remember the default ram and bios options for future usage

	create_report
	- added option "report_type" (0 = result report / 1 = comparison report)
	- added option "compare_folder" (used for comparison report to compare "xml_folder" against)
	- implemented comparison report (checks "exitcode", "stderr" and "png_crc")
	- fixed crash when invalid configuration was specified
	- added option "print_stdout" to add stdout data to report
	- made it possible to simply use "print_stdout" and "print_stderr"
	- added "stdout_file" and "stderr_file" to default configuration to match old reports
	- always print all available data in normal mode
	- stdout was not printed was not added to report if stderr was missing
	- added support for dipswitches
	- fixed some memory leaks
	- added support for configurations
	- added hard-coded reporting of "called within reset scope by" for now
	- fixed formating of output when no stderr exists

0.70
	- read "mameconfig" version from listxml when available
	- report error in case of unsupported "mameconfig" version
	- fixed return value of create_cfg() in case of success
	- do not process any entries when "xpath_expr" is invalid
	- added a few more XPath error messages
	- fixed memory leak in create_cfg() when creating a .cfg file
	- merged redundant dipswitch/configuration parsing code into parse_listxml_element_cfg()
	- added enum cfg_type for .cfg entry type parameter
	- added option "use_softwarelist" to control usage of software lists
	- renamed the output file postfix for device file entries from "dev" to "sfw" (software)
	- made process ID code working with Visual Studio
	- added warning when "use_softwarelist" is set, but "hashpath" isn't
	- renamed device_type to device_briefname
