9

I know Mame works with drivers for each game or hardware, and it checks for specific ROMs, and I guess it might check also for some checksum to verify the ROMs integrity.
Is there some way you could program a game for the exact same hardware of a supported arcade game and make it work in MAME or any other arcade emulator?

  • 3
    The answer is almost certainly "Yes". But I don't know the details of what minor changes you'd need to make so that MAME recognizes your newly-developed game ROM, and knows what emulated hardware to use to run it. – Brian H Mar 13 at 14:27
  • Yes! People make new ROMs for old game systems all the time (maybe not as much as they program modern computers, but still). Usually for consoles, not arcade machines, but there's no reason you couldn't do it for an arcade machine. The worst case scenario is that you might have to tell MAME which hardware your game runs on. – user253751 Mar 13 at 15:23
  • 1
    MAME is an open-source software and is easy to build yourself. So adding more ROMs or switching ROM checksum check should not be a problem. – lvd Mar 13 at 15:45
  • As long as it fits in the same space, it should work. – ninjalj Mar 13 at 17:31
  • You can peek under the hood in MAME to see what requirements MAME has to the datafiles (ROMs) in order to execute them, and then program accordingly. It is not much different from programming any other computer. – Thorbjørn Ravn Andersen Mar 13 at 18:36
9

Games have "sets" (AKA versions). The software changes but not the hardware. For instance Pengo set 2 is harder than set 1 and has a different music (to avoid lawsuits?)

If you can "mod" an existing game, then ignore the checksums, you could run your own game. You would have messages like:

g8x_p6.bin   WRONG CHECKSUMS:
    EXPECTED: CRC(7e3471d3) SHA1(5997196c9ba3c4ee7d1b40105731e88fed501044)
       FOUND: CRC(403d01c1) SHA1(86109087b10c4fbcc940df6a84f7546de56303d2)
WARNING: the game might not run correctly.
Press any key to continue

And then the game would run.

There are a number of so-called "bootlegs" that were done in the days, including games running on another game hardware (games using Galaxian hardware aren't uncommon, like Frog, which was Frogger with a different, garish color palette and a title screen that lazily replaced three of the letters in the original title with frog sprites), or Crazy Otto, an unauthorized Pac-Man modification kit designed to freshen up the existing game and ended up as Mrs PacMan (source: http://gamingafter40.blogspot.com/2009/07/coin-op-bootlegs.html)

Some more recent work include graphic hacks (using a freely available graphic ripping tool) to play Pac-Man with Pengo graphics (https://www.csh.rit.edu/~jerry/arcade/age/#pengman)

If you coded your own game, you would choose a bootleg driver (unencrypted) for easier ROM generation and modify/create ROM files (code, graphics, sounds) named like the "original" ROM in the ROM .zip file. You would encounter the same limitations as the original driver (colors, number of sprites, CPU speed, RAM & ROM size...).

Early Z80/6502 games would be easy to mod/code a complete new game from their drivers, but the 16/32 bit ones would be a lot tougher because of the format of the graphical assets (sprites, images...)

MAME also has a very good visual debugger, so it's a very comfortable environment to debug your game as well.

| improve this answer | |
  • Cool, thanks. I program in 6502 assembly so with some documentation of the graphics chip I should be good to go. – Petruza Mar 14 at 17:57
  • Any idea how to get the current MAME to actually run a game that has wrong checksums? I can't find a way from inside MAME or yet by Googling. – hippietrail Jul 28 at 1:45
  • I think you get the message as described in my answer. another frequent reason is: some rom files have been renamed, and romsets aren't compatible with current mame version. In that case you get "not found" – Jean-François Fabre Jul 28 at 7:31

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.