[An interface for dynamic emulator manipulation]


      [NES]

        ROM Hacking, for those unfamiliar with the concept, 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.

        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 I 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.

        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.

                  
        These above two videos demonstrate some of the possibilities. The first is a short video of
        what color palette and sprite buffer scribbling can accomplish. The emulation mechanism
        also provides a way to get at the screen pixels after we've scribbled into the sprite buffer.
        This allows us to apply post pass image processing techniques as the game is played. The
        second video demonstrates this technique.

        If you would like to give it a try, you can download it here:

        (Windows NT/2000/XP):

        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