1 Attachment(s)
How to check which files are missing for a particular ROM set in (Wolf)MAME
Most versions of MAME and WolfMAME are used at the command line. So there is some expectation that you understand this in the below. Earlier versions of WolfMAME included third-party code which enabled a GUI and that gave some extra options and I'll try to reference them but please realise these are ancient versions.
Before I begin, one thing to understand about how MAME checks the files: it is done on the content of the ROM file and not based on the name of the zip file nor on the name of the files contained in the zip file. So, for example, if you have a an "sfix.sfix" file in your neogeo.zip file or a "pacman.6e" in your pacman.zip: it doesn't mean it is the correct one. This occurs because the dump (extraction of data from a ROM chip) may not have been complete, or was incorrect, or even some mistake occurred afterwards like putting it into the wrong game in MAME by a developer: several other explanations occur but the only thing you need to be aware of is that different versions of MAME can use different files for the same game. This happens over time so the newest MAMEs should have the correct information but the older MAMEs won't have been updated and still reference the incorrect information. To illustrate this , there is a -listroms command which can show the set of files included in a particular ROM set.
Puckman in MAME 0.106:
Code:
C:\MAME>mame106.exe -listroms puckman
This is the list of the ROMs required for driver "puckman".
Name Size Checksum
namcopac.6e 4096 CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669
)
namcopac.6f 4096 CRC(39d1fc83) SHA1(326dbbf94c6fa2e96613dedb53702f8832b47d59
)
namcopac.6h 4096 CRC(02083b03) SHA1(7e1945f6eb51f2e51806d0439f975f7a2889b9b8
)
namcopac.6j 4096 CRC(7a36fe55) SHA1(01b4c38108d9dc4e48da4f8d685248e1e6821377
)
pacman.5e 4096 CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9
)
pacman.5f 4096 CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599
)
82s123.7f 32 CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5
)
82s126.4a 256 CRC(3eb3a8e4) SHA1(19097b5f60d1030f8b82d9f1d3a241f93e5c75d6
)
82s126.1m 256 CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081
)
82s126.3m 256 CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746
)
Puckman in MAME 0.165:
Code:
C:\MAME>mame165.exe -listroms puckman
ROMs required for driver "puckman".
Name Size Checksum
pm1_prg1.6e 2048 CRC(f36e88ab) SHA1(813cecf44bf5464b1aed64b36f5047e4
c79ba176)
pm1_prg2.6k 2048 CRC(618bd9b3) SHA1(b9ca52b63a49ddece768378d331deebb
e34fe177)
pm1_prg3.6f 2048 CRC(7d177853) SHA1(9b5ddaaa8b564654f97af193dbcc29f8
1f230a25)
pm1_prg4.6m 2048 CRC(d3e8914c) SHA1(c2f00e1773c6864435f29c8b7f44f2ef
85d227d3)
pm1_prg5.6h 2048 CRC(6bf4f625) SHA1(afe72fdfec66c145b53ed865f9873468
6b26e921)
pm1_prg6.6n 2048 CRC(a948ce83) SHA1(08759833f7e0690b2ccae573c929e2a4
8e5bde7f)
pm1_prg7.6j 2048 CRC(b6289b26) SHA1(d249fa9cdde774d5fee7258147cd25fa
3f4dc2b3)
pm1_prg8.6p 2048 CRC(17a88c13) SHA1(eb462de79f49b7aa8adb0cc6d31535b1
0550c0ce)
pm1_chg1.5e 2048 CRC(2066a0b7) SHA1(6d4ccc27d6be185589e08aa9f18702b6
79e49a4a)
pm1_chg2.5h 2048 CRC(3591b89d) SHA1(79bb456be6c39c1ccd7d077fbe181523
131fb300)
pm1_chg3.5f 2048 CRC(9e39323a) SHA1(be933e691df4dbe7d12123913c3b7b7b
585b7a35)
pm1_chg4.5j 2048 CRC(1b1d9096) SHA1(53771c573051db43e7185b1d18853305
6290a620)
pm1-1.7f 32 CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f511
09b1f2a5)
pm1-4.4a 256 CRC(3eb3a8e4) SHA1(19097b5f60d1030f8b82d9f1d3a241f9
3e5c75d6)
pm1-3.1m 256 CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a
23430081)
pm1-2.3m 256 CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a
74759746)
To perform the check on the files you have, instead of -listroms use -verifyroms. If the set of files you have are sufficient you get a small amount of feedback and the message is the same for all current (TG perspective) versions. Note: for early WolfMAME versions with a GUI (0.106 and earlier): there is the option to right-click and choose Audit to get this information.
Code:
C:\MAME>mame106.exe -verifyroms puckman
romset puckman is good
1 romsets found, 1 were OK.
C:\MAME>mame165.exe -verifyroms puckman
romset puckman is good
1 romsets found, 1 were OK.
For many games, the files may be spread across two or three files - this is due to a "parent - clone" relationship and the possibility of a BIOS file (neogeo.zip is a popular case). The pacman set, for example, is a clone of the original Japanese set puckman.
Pacman is shown to be a clone of puckman with the reference to the parent set in square brackets:
Code:
C:\MAME>mame106.exe -verifyroms pacman
romset pacman [puckman] is good
1 romsets found, 1 were OK.
This means that any of the files that are needed by pacman can be placed in either pacman.zip, puckman.zip or both: MAME will find the files regardless of which zip they are in. To this end, you can lump all the clone ROMs into the parent set (puckman in this case). Additionally, MAME does not care what the files are named: it does not look for "pacman.6e" but instead references the file by checksum or Cyclic Redundancy Check (CRC) - a small piece of information which aids in understanding the content of the file without looking inside the file. If you use 7-zip, for example, you can see this information in the CRC column:
Attachment 8573
Notice how in this file there are multiple files with the same CRC? These are exactly the same file but with different file names (I was too lazy to clean up). MAME doesn't care: it will find the file it seeks if it is in the zip file. This one file (the above 7-Zip snapshot) has been created by merging the files of numerous clones together, across multiple versions of MAME. One complex puckman.zip for all versions of MAME and all clones of puckman that I've ever required. Takes a little thought to get set up.
Occasionally, you'll stumble across a note from the MAME team that something isn't right but there's nothing you can do about it. For example, the "NEEDS REDUMP" message:
Code:
C:\MAME>mame.exe -verifyroms 19xxjr1
19xxjr1 : qsound.bin (8192 bytes) - NEEDS REDUMP
romset 19xxjr1 [19xx] is best available
1 romsets found, 1 were OK.
This is not a problem: this version (whichever it is) was known to have an incorrect ROM file and this version will forever have the incorrect knowledge. Newer versions may have corrected the issue. A similar issue you can do nothing about (for the version of MAME tested) is the "NOT FOUND - NO GOOD DUMP KNOWN":
Code:
47pie2 : 91022-01.ic83 (1 bytes) - NOT FOUND - NO GOOD DUMP KNOWN
When something is wrong MAME will inform you in a manner like the following:
Code:
C:\MAME>mame.exe -verifyroms 2020bb
2020bb : 000-lo.lo (131072 bytes) - INCORRECT LENGTH: 65536 bytes
2020bb : uni-bios_3_1.rom (131072 bytes) - NOT FOUND (neogeo)
2020bb : sm1.sm1 (131072 bytes) - INCORRECT CHECKSUM:
EXPECTED: CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf)
FOUND: CRC(97cf998b)
romset 2020bb [neogeo] is bad
1 romsets found, 0 were OK.
In this example, three different files are indicated: this means three different issues have occurred. Observations which display as INCORRECT something are the wrong file. I'd suggest renaming those files (which could be correct for other versions of MAME) and then seeking out another file. In the above you can see that two checksums of the sm1.sm1 file are given: one is the what this version of MAME expects to find and the other is the file's own checksum. Again, it is likely that the file works for some other versions of MAME. It has been known for files to get dropped from a series of MAME and then become required for a future version MAME. Just because the files is wrong now doesn't really mean it is wrong in all circumstances and we circle back to my first note: it depends on the reason it is wrong and could just have been associated with the wrong ROM set.
The third case in this example is simple: the NOT FOUND message simply indicates the file is missing.
HTH some understanding of what goes on by MAME & how to check.