NESBot video game automation

nesbot

If you happen to enjoy video games, but don’t actually like playing them, boy do we have the hack for you! [pjgat09] shows us how, armed with an Arduino, you can force a Nintendo to play games by itself, not unlike an old-time player piano. The hack involves programming an Arduino to accept commands mapped out in “movies”, which are actually scripted sets of button presses that one would perform while playing a game. These sorts of scripts are available from TASVideo, a community specializing in “tool assisted” speed runs of video games. These movies are typically used with emulators, so there are some adjustments that need to be made in order to make them work with a console, since the button presses are mapped to each frame that is drawn on the screen. While we are not sure quite how useful this hack is, it is a pretty novel concept. You can see video of the 5-minute SMB speed run after the jump.

17 thoughts on “NESBot video game automation

  1. Awesome, i’ve been thinking about making one of these automated controllers for years.

    I just need to find an NES.
    By the way does anyone know how much watt an NES consumes? I can’t find this on the net.

  2. Awesome! That makes me want to program a genetic algorithm to find the fastest Mario solution, that would take weeks but who cares?

  3. That’s neat, but it totally doesn’t count as playing it through on an NES in 5 minutes. Look at 3:54–my NES doesn’t let me wall-jump like that! Or look at 5:10!

  4. @Daniel 3:54 is a legitimate glitch even on real hardware. Pressing jump at precisely the corner of the block (i.e with 60Hz accuracy) dose work, to do it that may times in a row is suspicious.
    5:10 is underwater.

  5. @bWare “3:54 is a legitimate glitch even on real hardware” Really? That’s interesting, I guess I’ll have to try it sometime…doubt I could actually do it, but worth trying.

    “5:10 is underwater” I realize it was underwater, I just wondered how he went through the fire and enemies without getting hurt. Is that legitimate also?

  6. Uh, you guys are all missing the point. He did NOT modify the NES. He simply replaced the controller with a device that feeds the inputs at 60 Hz. The NES sends out a pulse every time it wants controller data, and then the shift-register pumps it out. This is as legit as it gets.

  7. Almost ALL glitches & tricks of all games were discovered many years ago on real consoles. Guys who make runs like the one you’ve just seen, study these glitches with the help of emulation & make them real by clever input (they create movie files frame by frame).
    YouTube is full of demos of different glitches, performed on real consoles.

  8. There are two things here that, to me, are utterly remarkable:
    1. The game that’s running is actually the same level of determinance as the emulator. Just because the input is being fed at 60Hz, does not mean that the emulator provides controller inputs at exactly the same processor clock steps as the real system. Small timing variances, small variances in the crystal driving the whole system, can possibly lead to the whole operation desynchronizing. This game was a good choice to demo this since there are no random elements that I see, and nothing that is randomized by input timing.
    2. This is really the most remarkable: the emulator that was used to develop the controller script is actually so accurate as to allow this to be created. One little variation, one instruction that takes an emulated clock cycle longer than it does on the real hardware, and this whole thing could be ruined.

    This is really a stunning testament to the quality of some of the console emulators out there. Bravo, community.

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