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