8

I've never heard of any emulator which requires different ROMs based on which version the emulator is.

I thought that ROMs were fixed files that were dumped from hardware cartridges or PCBs, and then the emulator is just software interpreting those fixed files.

It's not like the games change between them being dumped and later, just because a new version of MAME is released?

Yet I see a lot of weird information where various "ROM sets" are for a specific version of MAME and they don't work in newer MAME versions and whatnot.

It seems very strange to me and I don't get it at all.

3
  • 1
    An example would be helpful. My guess would be that it has to do with the way the ROM data is packaged, e.g. is it in 8 separate files in a .zip archive or 1 big uncompressed file. You might also want to try reddit.com/r/MAME .
    – fadden
    Oct 4 '20 at 4:44
  • Not arcade, but mame 225 mockingboard emulation needs the votrax rom (sc01a.bin). mame 224 mockingboard emulation did not need it. Why? 225 improved the emulation and now it's required. But the ROM itself hasn't changed in 40 years or so. Oct 4 '20 at 5:22
  • 2
    Have you read the dokumentation? "Handling and updating of ROMs and Sets used in MAME is probably the biggest area of confusion and frustration that MAME users will run into" "docs.mamedev.org/usingmame/aboutromsets.html Have you asked at the forum ?forum.mamedev.org
    – ghellquist
    Oct 4 '20 at 6:41
13

When MAME started, the aim was to make the classic games work on a "modern" machine.

For that, a lot of shortcuts were taken:

  • hardcoding some game data / hardware color palette in the code
  • giving names to EEPROMS that weren't the most logical
  • sometimes the emulator used the Yamaha YM chip from the popular Sounblaster / AWE64 to play the sounds of games which used similar YM chips

The main difference with, say a NES or Sega Megadrive emulator is that MAME is able to emulate a lot of different hardware, and the ROMs that you feed the emulator with is a ROM set (on NES/SNES... it's just a ROM dump of the program code), with roms from all chips included.

When MAME evolved to try to emulate all machines as faithfully as possible and without any shortcuts

  • a lot of "common rom parts" were identified so different versions were just an add-on to the original ROM set, without repeating the data. For instance, a "bootleg" version is the original version with just one file changed.
  • some more strict renaming rules were decided, breaking compatibility with old .zip archives (tools like ClrMAME exist to "repair" romsets but anyhow it's a mess): the data is almost the same, but somehow renamed or with some small data missing.
  • they dropped the YM sound redirection now fully emulated (to be honest, it could be because Soundblaster cards aren't useable on nowadays PCs, but the FM sound was a wonder to listen to)
  • even protection chips were emulated instead of just "cracking" the game by code

This allows MAME to emulate the bare metal, without any shortcuts, but since 1996 a lot of archives became invalid, and the confusion was even greater when Android/Raspberry Pi MAME4All version forked from an old 0.37b5 MAME core (newer MAME versions are a lot more CPU intensive) and retained the old versions of the ROMs.

The challenge for the users who need to play all games on the latest MAME is to find a reliable source to download "recent" roms, knowing that it's still barely legal to do so if you don't own the original machine to say the least. Personally I have 2 MAME versions around so I can play some games that I don't have the updated ROMs for.

6
  • 1
    "on NES/SNES... it's just a ROM dump of the program code" at least on NES it's a bit more complicated than just a "dump of the program code", there are many different mapper chips in NES carts and many games have "character rom" which is totally separate from the "program rom" . Still not as complex as something like MAME though. Oct 4 '20 at 23:47
  • you're probably right about the NES (SNES is even worse with on-cart chips and all), I should have used a more simplistic example (like tape dumps for ZX or C64). But you see the idea: NES is globally the same hardware so it follows the same rules. MAME hardware evolves constantly. Oct 5 '20 at 4:44
  • 1
    From what I remember from puttering around with dumping my carts and writing my own hash checker, an NES ROM in the standard iNES format has a field in the header which specifies which mapper to emulate and then the rest is the contents of the PRG and CHR ROMs concatenated together.
    – ssokolow
    Oct 5 '20 at 10:55
  • makes sense; and it's always the same format, for the same hardware Oct 5 '20 at 12:27
  • I think "barely legal" is actually "illegal"
    – user253751
    Oct 5 '20 at 13:28
2

MAME emulates a fixed, finite (if rather large) list of arcade games. The complete circuit board layout of every game is stored in the MAME executable. All code and data needed for emulation of most of the chips is compiled into the MAME executable, but for practical reasons, the contents of ROM chips are stored in external files. This is partly to keep the executable from becoming absurdly large, and partly for copyright reasons. Because the external files are conceptually part of the executable, there is only one correct set of bits for every file. The executable rejects external files whose checksum doesn't match the expected checksum stored in the executable.

The external files could change from version to version for many reasons. The change might even have no effect on the emulation in practice: for example, the old ROM dump contained garbage values for addresses that weren't actually stored in the ROM chip, and the new dump correctly omits those values. They could retain support for the old ROM file in such cases, but they have no interest in doing that because the data is conceptually a part of the emulator and they want to be free to refactor it like anything else.

Other emulators emulate systems with swappable external storage like cartridges or magnetic disks, they support future-proof, documented file formats that describe the contents of the cartridges or disks (sometimes rather inaccurately called "ROMs"), and they will make a best effort to emulate any file that fits the format. Aside from that, though, they're similar in design to MAME. They only support a fixed list of motherboard configurations, only a fixed list of circuit board layouts in cartridges, and only a fixed list of expansion cards in systems that support those.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.