Extending old games with reverse engineering and MAME

HEX

For last year’s Toorcamp, the folks over at DorkbotPDX helped out with the Church of Robotron installation. A religion founded on the prophesy of a cybernetic uprising in the year 2084 is a little esoteric even for us, so the Dorkbot crew wanted a way to make playing Robotron: 2084 a little more visceral. Using MAME and a few debugging tools, they were able to read the memory of a machine playing Robotron to extend the game into the physical world. When the player dies, lights go off, alarms sound, and the prophet of the Church of Robotron is pleased.

The setup at the Church of Robotron included a machine running MAME with a Robotron ROM. When events happened in the game, such as lasers firing or a player death, physical events would be triggered. To do this, the Dorkbot team read the memory locations of a game of Robotron at different times and found memory locations tied to in-game events. On their blog they go over using the MAME debug tool to detect a player’s death which can then be translated into physical apparitions for the Church of Robotron.

It’s a very cool hack, and one we wish we had a video of. Having a plastic ghost hit a player while playing Pac-Man seems like an awesome idea, and with the Dorkbot tutorial, it looks fairly easy.

Comments

  1. Manu says:

    There’s a video :)

  2. I was at Toorcamp, and this installation was awesome! I also wrote this about it when I was there: http://hackaday.com/2012/08/20/toorcamp-the-church-of-robotron/

  3. pcf11 says:

    I was pretty good at Robotron. My high score was over 4.5 million. But I did not always have time to finish a game I happened to be playing so I walked away from a lot with a full rack of extra lives. I did that once in NYC where I was playing a machine that was propping open the door of a laundromat on the sidewalk. The crowd I’d attracted freaked out. People tried to dive in and play where I’d left off and as I walked away I could hear all of the dying going on. I think that machine was set pretty low difficulty wise. From what I gathered talking to service techs the game has 10 difficulty settings. I knew a guy who could beat the machine though. He’d play it so hard the machine would pink screen crash. The highest score he could ever get was 16 million before a machine locked up on him (a 4 hour game). I think there are only 100 levels then the machine wraps back to level 1. Might be 250 though, all of that was a while ago now.

    If you’re good you can make the machine sine wave too. That is when the game would array the baddies in a sine wave pattern on the screen. Once you can sine Robotron you’re pretty good. You’ve pretty much owned it then.

  4. 0c says:

  5. Hirudinea says:

    This technique and a taser could really spice up a game of Mortal Combat. “FINISH HIM!” ZZZZZZZZZZZZTTTT! “AUGH!”

  6. HowardC says:

    Apparently these guys had never heard of Mame’s official output system or mamehooker. They wasted half their time doing stuff that was already possible in the stock build of mame. All they had to do was re-write the driver and hook up these values they found to the output system.

    • Hi Howard!

      Thanks for pointing out mamehooker and the output system. The blog post was more focused on using the debugger to explore old games.

      Mamehooker and the MAME output system didn’t really match the needs that we had though. The output system is for publishing events that the original game already was firing signals for. Which we wanted more than that. Mamehooker also appears to be a Windows only piece of software, we were running a Linux box. We also wanted to control when MAME dumped the nvram to a file so we could process the highscores.

      The code that we added to mame was a tiny extension of the debugger. (75 lines of code, https://github.com/breedx2/mcor/blob/master/mamehack/mcor_send.c)

      Most of the time spent was actually reverse engineering breakpoints for event publishing. So even if the output system or mamehooker provided the communication channels we needed, using the debugger would have still needed to happen for discovery.

      Some would try to argue that the whole project was a waste of time, but we think its important to save the last human family. ;)

  7. fartface says:

    They do all that and only use a 19″ monitor? really?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 96,382 other followers