Forgot your password?
typodupeerror
NES (Games) Classic Games (Games) Hardware Hacking Nintendo Games Build

NESBot: Tool Assisted Speedrun On Real Hardware 101

Posted by Soulskill
from the take-that-game-genie dept.
Xistic writes "For many years tool assisted speedruns were purely theoretical and the domain of emulators. No longer! Using an Arduino Duemilanove microcontroller to drive an actual Nintendo console, pjgat09 plays back prerecorded input to beat Super Mario Bros. in record time. The selection of possible games is limited: 'If the game relies on any uninitialized memory for randomness, or if it is heavily based on console timing, it may not work. In the case of Super Mario Bros however, as long as the button presses start play back at the right time, the movie will play back correctly.' The author includes complete instructions on how to setup the device."

This discussion has been archived. No new comments can be posted.

NESBot: Tool Assisted Speedrun On Real Hardware

Comments Filter:
  • Welcome Slashdotters (Score:5, Informative)

    by Anonymous Coward on Saturday February 12, 2011 @06:53PM (#35189100)

    Welcome Slashdotters.

    An introduction [tasvideos.org] might be in order. Please note we have many other movies [tasvideos.org] for other consoles. We also have a list of recommended movies [tasvideos.org] for first-time viewers.

    Please don't beat up our poor server too badly.

  • by Soilworker (795251) on Saturday February 12, 2011 @07:18PM (#35189230)

    http://themushroomkingdom.net/bugs/smb [themushroomkingdom.net]

    everything is there.

  • One of the key things that makes this work is that on the nes the game controls polling of the controller and the controller polling process involves controlling a shift register in in the controller. Afaict his board locks to one of the signals that controls the shift register and uses it to stay in sync with the game. This allows it to play through an entire game with frame accurate timing. Something that would be MUCH harder to do by mechanically actuating a real controller even if you took a sync source from the console.

    And doing it without a sync source would be basically impossible.

    was not an easy task because of the way lag is handled

    Lag probablly isn't a particaully good term for the issue. AIUI the issue is that there is not a 1:1 mapping between controller input cycles and frames out output. Since his device is locked to controller input signals rather than dispaly frames he needs to strip out the frames that don't have a corresponding input cycles.

  • Human players (Score:4, Informative)

    by Anonymous Coward on Saturday February 12, 2011 @08:50PM (#35189632)

    Though I am impressed that someone got an Arduino to do something like this, I still think that it's impressive that it only barely squeaked by the "real" record. Here's a human player (not Tool-assisted):
    http://www.youtube.com/watch?v=bRyhpxR3l_g

    By my count (seconds are "game-seconds"):
    1-1 Tie
    2-1 Arduino up 1
    4-1 Tie
    4-2 Arduino up 3
    8-1 Tie
    8-2 Human up 4
    8-3 Arduino up 2
    8-4 Arduino up 2

    So if my reckoning is correct, the Arduino, with all its glitches, only beats a human player by 4 in-game seconds. Though SDA counts time from when the games starts to finishes, including loading times between stages, in which case it looks like the Arduino may have won by 5 real seconds. Still, the human players have done incredibly well on this game to fine-tune it to the point they have. Yes, I am a geek.

"Regardless of the legal speed limit, your Buick must be operated at speeds faster than 85 MPH (140kph)." -- 1987 Buick Grand National owners manual.

Working...