Sunday 5 March 2017

Building a Glitchable Mega Drive Emulator

This is a little project I did back last summer, to explore glitching games. I've long been inspired by speedrunning, and glitches like the Missingno glitch in Pokémon Red and Blue.

I love being able to pull apart the game and see how they work, an getting an insight into what the data looks like from the perspective of the machine. For example, the Missingno glitch shows us what happens when the GameBoy interprets the player's name as the parameters of a Pokémon.

I also think there's a certain beauty to seeing a game not as a finished work but as a raw material - a starting point to be reinterpreted. Speedrunning gives us a new objective, and can turn a game of exploration into a deep exercise in resource management. Changing the control system for Sonic 2 allowed me to turn a game about dexterity into a game about teamwork.

With this project I worked on modifying GenesisPlus, an open source Sega Mega Drive emulator for Mac, which is bundled as part of OpenEmu. I put in a system of scripting interactions with the console's memory. This means it can write new values into memory on certain triggers. These include a time period passing, a button being pressed, or another value in memory changing.

I then worked on turning this into something that would be fun to play in its own right. I added networking features so that players playing separate copies of the game can interact with each other, using glitching to fuel a competitive challenge.

The video below talks about how I created this, how it works, the thought process I went to, and the Sonic the Hedgehog 2 variant that emerged as a result. I hope you enjoy watching!