An interface for
dynamic emulator manipulation.
       

 

ROM Hacking seems to be all the rage these days.

For those unfamiliar with the concept, it basically involves the manipulation
of the static data stored within old video game cartridges (typically the NES).
These modifications can result in different colors, graphics, unique new
gameplay, or even the addition of new game levels.

The problem is that these types of changes are typically made through the use
of either a hex editor, or a complex editor that is tied to one specific game.

For things like new level creation, these tools are required. For color, graphics,
or gameplay modifications, they are not. Therefore, it would be really nice to
have a structured mechanism for making these types of changes. Examples of
these types of modifications can be found in my NES visualization project.

In order to accomplish this effect, I have developed two components. First, I have
modified the Nintendulator open source NES emulator to accept dynamic color,
graphics, and gameplay modifications. These changes are sent as
OpenSoundControl (OSC) packets over a network to a small OSC server
embedded within the emulator. The emulator interprets the packets, and makes
the relevant modifications. The current implementation uses Max/MSP to create
the packets, and send them over the network. The Max/MSP interface allows
nearly any type of input to be used as data to send to the emulator, from
physical gestures to real time audio processing.

While the underlying emulator architecture is in place, a number of design
decisions still need to be addressed. How to best structure data writes into the
sprite buffers and the color palette? How can I ensure that dynamic gameplay
modifications don't crash the emulator?

These are difficult to answer. But for those who can't wait:

Windows NT/2000/XP users:

1. Download the modified Nintendulator binaries.
2. Download the Max/MSP modifier patch.
3. Do not use derivatives of this work for commercial purposes.

Updated 11/11/2005