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
    Commented Mar 13, 2020 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. Commented Mar 13, 2020 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
    Commented Mar 13, 2020 at 15:45
  • As long as it fits in the same space, it should work.
    – ninjalj
    Commented Mar 13, 2020 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. Commented Mar 13, 2020 at 18:36

1 Answer 1


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.

  • Cool, thanks. I program in 6502 assembly so with some documentation of the graphics chip I should be good to go.
    – Petruza
    Commented Mar 14, 2020 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. Commented Jul 28, 2020 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" Commented Jul 28, 2020 at 7:31

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .