-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathCHANGELOG
758 lines (707 loc) · 40.8 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
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
0.71
- fixed compilation with USE_VALGRIND set to 1
- fixed resource leak when parsing MNGs without MHDR (reported by cppcheck)
- replaced some unecessary strlen() calls reported by cppcheck
- added missing static to clear_directory_nosnap()
- simplified append_string()
- avoid Visual Studio warnings about constant expressions
0.72
- do not write "autosave" flag to output XML when "use_autosave" is not set to 1
- moved info from mame_regtest.c to README
- enabled parse_directory() for Visual Studio 2010 by using dirent API
- separated project output folders in Visual Studio
- also compile mame_regtest Release as C++
- avoid warning about unreachable code with Visual Studio Release build
- added split_string() to common.c/.h
- added free_array() to common.c/.h
- updated default "valgrind_parameters"
- removed "--leak-resolution=med" since the valgrind default is now "high"
- added "--track-origins=yes"
- added "pngcmp" for PNG comparison
- fixed "start_at" example in default configuration
- added get_directory() to common.c/.h
- changed "device_mandatory" from integer to string
- added option "hack_softwarelist" to work around broken -listsoftware
- use the first matching interface when using softwarelists
- fixed memory leaks when using softwarelists
- fixed driver being executed multiple times without a device when the softwarelist entries don't match any interface
- use first matching interface when using softwarelists
- add command-line to output XML
- added replace_string() to common.c/.h
- replaced convert_xpath_expr() with replace_string() and got rid of xpath_placeholder_size
- added allocation logging in LOG_ALLOC define
- small cleanup to config_read_option_str_ptr()
- renamed made "driv_inf" from main() global and renamed to "global_driv_inf"
- moved cleanup_driver_info_list() call to cleanup_and_exit() to avoid leaks in case of premature exit
- fixed parsing of dipswitches and configurations - only the first one was tested and the others were leaked
- fixed memory leaks with dipswitches and configurations
- parse_listxml_element_cfg() now returns if it found the entry in the XML
- sped up parse_listxml_element() a bit
- log name of driver, that is being parsed when "verbose" is set to 1
- added append_string_n() to common.c/.h
- added mrt_system() to common.c/.h
- use mrt_system() on Windows
- cleaned up makefile
- added libxml2_init() to common.c/.h
- made everything compile with official libxml2 win32 binaries from ftp://ftp.zlatkovic.com/pub/libxml/
- had to define IN_LIBXML and call listxml2_init() for MinGW
- added dependency to iconv.dll
- updated libxml2 to 2.7.7 and zlib to 1.2.5
- Visual Studio builds finally work
- handle dirname == NULL in parse_directory() and clear_directory()
- enabled "Smaller Type Check" in Visual Studio projects
- added command_to_argv() to common.c
- try to rename the output folder until it succeeded
- added option "use_gdb" to perform each run within gdb (most of the code was already there, but disabled)
- moved "ramoption" parsing into APP_MESS block
- removed usage of .ini files in favour of command-line options
- add defining of _MAX_PATH if missing
- replaced itoa() call with snprintf()
- fixed linux compilation of common.c/.h
- do not quote the whole command-line on linux
- report proper exitcode on linux
- added create_thread() and wait_for_thread() to common.c/.h
- moved command-line parameter creation into create_commandline()
- added "parameters" parameter to execute_mame()
- replaced all system() calls with execute_mame()
- made redirecting of output and directory changing optional in execute_mame()
- fixed warnings in common.c/.h when compiling with optimizations
- mrt_system() did not return valid strings when no output was written at all
- mrt_system() might have omitted the last block of the output data
- added "stdout_out" parameter to execute_mame() to get the stdout data
- removed option "test_createconfig"
- added option "test_frontend" to test various frontend options
- removed get_inifile()
- added get_filename_base() to common.c/.h
- fixed some GCC 4.6 compilation warnings
- added option "use_slots" to test slots
- improved configuration loading error messages
- added -verifysoftware to "test_frontend"
- only parse "devices" if necessary
- execute_mame() now correctly returns if the execution was successful (fixes second autosave being executed when the first one failed)
- bail out when -listxml failed
- write all errors to stderr
- improve some log messages
- added makefile options DEBUG and LOG_ALLOC
- removed obsolete wiki links from README
- check "xpath_expr" for DRIVER_ROOT
- disallow usage of "use_gdb" and "use_valgrind" at the same time
- do not check the default ramsize again in combined bios/ram runs
- renamed clear_directory_nosnap() to clear_directory_2()
- renamed clear_callback_nosnap() to clear_callback_2()
- do not remove the -log and valgrind output with "store_output" set to 2
- added support for running only the first entry of the softwarelist when "use_softwarelist" is set to 2
- removed unnecessary returnvalues from execute_mame2() and execute_mame3()
create_report
- added a summary at the end when "dokuwiki_format" is set
- added support for multiple input folders (separated by ';')
- updated comparison report to invoke pngcmp and output in HTML
- added option "output_folder" for comparison reports
- skip *_listsoftware.xml files
- added option "recursive"
- added header to docuwiki format
- added command-line to docuwiki format
- added speed comparison report (report_type 2)
- fixed PNG comparison - images were in the wrong order
- added support for slots
- create "output_folder"
0.73
- fixed potential memory leak in strip_sampleof_pinmame() detected by cppcheck
- fixed various cppcheck warnings
- fixed wrong variable being used in non-WIN32 code of wait_for_thread()
- added missing pthread.h include for non-WIN32 code in common.c
- fixed valgrind logfile location
- do not use valgrind for executions without a driver_entry
- added missing -lpthread in makefile
- added -Wno-unused-variable to build without warnings with clang
- corrected default valgrind parameters in source
- added detection of duplicated bios entries
- added message when no matching software entry could be found in the -listsoftwarelist output
- renamed valgrind logfile to just valgrind.log
- enabled DTD validation when reading -listsoftware output
- added filter check to only try to run compatible -listsoftware entries
- added detection of duplicated ramsize entries
- do not remove the valgrind output with "store_output" set to 2 (again)
- added filter_unprintable() to common.c/.h
- filter unprintable characters before writing to XML
- added mrt_array and append_to_array() to common.c/.h
- added "noreturn" attribute to cleanup_and_exit() and removed unnecessary hack to silence compiler from main()
- added missing static to some global variables
- added option "no_execution" to perform testruns without executing the binaries
- added device_slot to image_entry and set it in read_softlist_entry()
- added missing xmlCleanupParser() call in cleanup_and_exit()
- updated WARNINGS in makefile and added clang-specific ones
- removed unnecessary global variable listxml_output
- moved get_xpath_nodeset() from mame_regtest.c to common.c/.h
- suppress Linux/Unix-related messages in stdout by using SDL dummy drivers for video and audio
- removed pngcmp binary and source since it is not part of official MAME/MESS
- added device_part to image_entry
- part names are now read from softwarelists and used for execution ("part<num>" is not being added to output files and folders)
- all parts of a softwarelist entry are now being run with "use_softwarelist" set to 1
- added support for running the first softwarelist entry for each available slot when "use_softwarelist" is set to 3
- added mrt_setenv() to common.c/.h
- replaced putenv calls with mrt_setenv()
- increased size of slot_info.slotoptions to 512 to avoid buffer overflow with internal nes slots in MESS
- enabled AddressSanitizer and UndefinedBehaviorSanitizer with clang always
- fixed crash in split_string() when no delimiter is found
- fixed crash in free_array() when array is NULL
- greatly improved the speed of read_file()
- added -listsource and -listmidi to "test_frontend"
- always include debug information in the binaries
- treat compiler warnings as errors
- moved error reporting and handling out of read_file() - returns errno in error case now
- updated copyright year in README
- only keep final.png when "store_output" is set to 2
- also run a software list entry without any slot when "use_softwarelist" is set to 3
- no softwarelist entries might have been used at all when "use_softwarelist" is set to 3 because of bogus counting of processed entries
- the number of the softwarelist entry in the result will now always match the place in the software list
- added support for running one entry for each interface found in the softwarelist by setting "use_softwarelist" 4
- use new option "-sound none" when "use_sound" is set to 0
- added option "hack_nosound" to support version with old option -nosound
- fixed handle leak in read_file() when it encountered an error during reading
- explicitly use "-debugger internal" when "use_debug" is set to 1
- only process software list entries, that doen't have "supported" set to "no"
- fixed memory leak when processing software list entries
create_report
- pass the file descriptor as parameter to PRINT_INFO
- improved layout of comparison report
- removed option "ignore_exitcode_4" and always filter the mandatory device messages
- filter unprintable characters from input XMLs
- improved summary a bit
- "called within reset scope by" errors did not include stderr
- added hard-coded "runtime error:" reporting for now (only generated by UndefinedBehaviorSanitizer)
- added tagmap report (report_type 3)
- added speed report (report_type 4)
- added option "tagmap_threshold" for report_type 3
- added option "speed_threshold" for report_type 4
- renamed option "dokuwiki_format" to "wiki_format"
- use GitHub "Markdown" format when "wiki_format" is set to 2
- added separate entry in summary for runtime errors
0.74
- removed CC definition from makefile
- updated warnings for Clang 5.0
- updated warnings for GCC 5.4 (ubuntu 16.04)
- use $(RM) in makefile
- added SANITIZE makefile option to specify sanitzer(s)
- added detection of operating system to makefile
- fixed warning in mrt_system() on Windows by checking against proper value
- updated bundled libxml2 to 2.9.3 and use 64-bit version to fix linking on Windows with latest MinGW
- updated bundled zlib to 1.2.8 and use 64-bit version to fix linking on Windows with latest MinGW
- adjusted makefile for Windows linking - no longer requires library files to be specified explicitly
- updated copyright
- removed references to specific library versions from README
- adjusted author name
- added missing IN_LIBXML define in create_image_xml.c
- changed libmxl2 includes to angle-brackets
- removed unnecessary bundled iconv
- increased size of driver_info.bioses
- added assertions to insertions into fixed sized arrays - disabled when SANITIZE is set
0.75
- fixed some Clang warnings
- added CMake support
- added .gitignore
- added .clang-tidy
- fixed some clang-tidy warnings
- fixed Cppcheck warnings
- fixed some CLion inspection warnings
- added some missing pointer checks
- fixed Visual Studio compilation issues
- added README.md and CONFIG.md (based on the MESS Wiki documentation)
- temporarily re-added iconv files to allow Visual Studio compilation
- fixed MinGW compilation
- removed obsolete create_release.bat and kzip.exe
- removed dirent.h from distribution and fetch it in Visual Studio CMake build instead
- updated dirent.h to 1.23.2
- updated copyright year
- removed Visual Studio files as they can be generated via CMake
- use conan for external dependencies on Windows
- removed external libraries from distribution
- add CMake option "USE_CONAN" to specify if conan should be used for external dependencies (defaults to ON on Windows and OFF on all other platforms)
- properly include external includes
- use static libraries on Windows
- adjusted library dependencies
- updated libxml2 to 2.9.14 (conan only)
- added some more "xpath_expr" examples to mame_regtest.xml
- support -listxml format of combined MAME/MESS
- added "hack_driver_root" to use old MAME/MESS specific -listxml node names
- disabled "test_frontend" and executable existence check when "no_execution" is set to "1"
- fixed compilation of non-debug build with NO_ASSERT
- avoided some strlen() usage
- replaced some ext() calls with return
- added CMake option "USE_SANITIZERS" to enable AddressSanitizer/UndefinedBehaviorSanitizer if supported
- removed "LOG_ALLOC" in favor of sanitizers
- removed makefile - use CMake instead
- moved IN_LIBXML definition for MinGW from source to CMakeList.txt
- disabled -Wpadded Clang warning
- enabled -Wconversion -Wsign-conversion for GCC 10+ only
- always create a compilation database
- a "run-clang-tidy" target will now be added if the executable is available
- implemented ATTR_NORETURN for Visual Studio
- added CMake option USE_VS_ANALYZE to enable Visual Studio Code Analysis
- added CMake option USE_GCC_ANALYZER to enable GCC Static Analysis
- added processorcount.cmake to get the available threads for the system via NPROC and NPROC_HALF
- added iwyu.cmake and add a "run-iwyu" target if the "iwyu_tool" executable is available
- adjusted some includes based on include-what-you-use
- added ClangBuildAnalyzer.sh for build time analysis (requires a Clang compiler)
- run it by passing the build command you want to analyze - e.g. "./ClangBuildAnalyzer.sh make clean all"
- added cppcheck.cmake and add a "run-cppcheck" target if the "cppcheck" executable is available
- fixed Cppcheck warning
- cleaned up README.md
- merged README into README.md
- updated zlib to 1.2.12 (conan only)
- disabled "-Wdeclaration-after-statement" for Clang since it just warns about backwards compatibility
create_report
- fixed some clang-tidy warnings
- fixed Cppcheck warnings
- fixed some CLion inspection warnings
- improved error reporting of report type 4 (speed)
- fixed incorrect "executed" count in the summary when "use_autosave" is set to "1"
- added "executed with autosave" counter to summary
- fixed/improved output when "wiki_format" is set to "2"
- removed support for DocuWiki format ("wiki_format" set to "1")
- renamed "wiki_format" to "use_markdown"
- changed extension of "report_10" output to ".md"
- changed "comparison" report to Markdown format
- removed "report_type" 3 (tagmap report)
- removed "tagmap_threshold"
- added checks for fopen() calls and reported error when it fails
- return a result from create_report()
- added option "unexpected_stderr" to check for unexpected stderr messages
- properly access configuration via report_cb_data
create_image_xml
- fixed some CLion inspection warnings