NESBot video game automation


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.


  1. Gert says:

    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. MrX says:

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

  3. Daniel says:

    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. IceBrain says:

    @MrX: sorry, already been done:
    (although it would be interesting to connect it to an actual NES)

  5. bWare says:

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

  6. Daniel says:

    @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?

  7. Colin says:

    So what about 1:28 and 2:21, legitimate glitches as well?

  8. Daniel says:

    @Colin I have actually the one at 1:28, but I want to try 2:21 because I haven’t seen it before.

  9. MrX says:


    Nice! I guess now its time to do it on a real SNES and change the fitness function to use the score instead.

  10. boarder2k7 says:

    Holy wall-jumping ninja Mario Batman!

    Definitely a cooler project than watching an emulator do the same thing.

  11. DanAdamKOF says:

    You guys complaining about using glitches totally don’t understand the point of a Tool Assisted Speedrun.

  12. DarkKobold says:

    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.

  13. feos says:

    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.

  14. slipp says:

    why don’t the flags come down?

  15. tyco says:

    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.

  16. feos says:
  17. Daniel says:

    Thanks feos!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your 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


Get every new post delivered to your Inbox.

Join 96,598 other followers