Become a fan of Slashdot on Facebook

 



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

NESBot: Tool Assisted Speedrun On Real Hardware 101

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 @05: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 damn_registrars ( 1103043 ) <damn.registrars@gmail.com> on Saturday February 12, 2011 @06:29PM (#35189266) Homepage Journal

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

      Worry not. After the latest "upgrade" here traffic at slashdot is down enough that we couldn't take your server down even mid-day during the week when geeks are avoiding work. On the weekend when former slashdot readers are reading other websites hoping for relevant news, you have nothing to worry about.

      • by ashpool7 ( 18172 )

        yes, that's funny, but if you're serious, have you tried turning on low bandwidth, simple design, and D1? All I noticed when Slashdot switched was that it looked less cluttered.

  • by Anonymous Coward

    Great. All it needs to do now is develop an ego and look down on people who just want to have fun with their games, and this device can replace every speedrunner on the internet. Another job lost to machines...

    • Do they really? I think speedruns are great, but I don't think that doing that is in any way superior to just playing a game to have fun. In fact, it's really just having fun by abusing the game mechanics to their absolute limits. In fact, when you play a game normally and when you sequence break and glitch your way across the finish line in record time, it's a totally different experience. Different things stick out and different things matter. This is true even if you do your speedruns live.
  • by Anonymous Coward
    Sure looks like he's going through the flesh-eating flowers and the rotating balls to me, or is the game just not accurate enough to detect these collisions?
    • by Pawnn ( 1708484 )
      Actually, the game's accurate enough that if you pay very close attention, he's just BARELY dodging those things. Within pixels.
    • Hitboxes (Score:4, Insightful)

      by tepples ( 727027 ) <.tepples. .at. .gmail.com.> on Saturday February 12, 2011 @06:32PM (#35189296) Homepage Journal

      Sure looks like he's going through the flesh-eating flowers and the rotating balls to me

      Hitboxes for most enemies in SMB1 are only half as tall as small Mario.

    • It's all legit. The device behaves like nothing more than a human who can press and release the controller buttons in arbitrary patterns every frame. The kind of abuse of glitches is a whole other world with tool-assistance.
    • by KDR_11k ( 778916 )

      There's a lot of funny things in the Mario physics that you wouldn't notice when playing the game just using what you see and what the manual says. E.g. the logic for deciding whether you jumped on an enemy or got hit by it is "are you moving downward?", as long as it's met you can touch the enemy anywhere and it counts as jumping on it, even if you hit its foot with your nose. I used that to jump on the giant spiders hanging from the roof in Paper Mario, it doesn't matter that they're above you as long as

  • by Anonymous Coward

    Mario appears to be invincible here.

  • by damn_registrars ( 1103043 ) <damn.registrars@gmail.com> on Saturday February 12, 2011 @06:08PM (#35189166) Homepage Journal
    That run exploits bugs from SMB that I didn't even know where there. I counted at least 4 times that he ran through walls in one way or another; to say nothing of the way that he would jump on the edge of a pipe while the flower was out and not take a hit.
    • My favorite is when he jumps against walls in 8-2 (start at 3:50) to get out of the pit.

      And does anyone know why he's usually jumping facing backward? Does Mario go farther that way?
    • by Mprx ( 82435 )
      Totally legit, but you need frame accurate timing to pull it off. Most of these glitches are impossible for unaided humans to do.
      • by PRMan ( 959735 )
        My Youth Pastor loved Mega Man (the original NES version) and would routinely do about half the glitches you see in the TAS. He used to solve the game in like 12 minutes with all the cheats.
    • I've seen people do the flowers trick before a few times. Collision detection is much different now than it used to be.
    • That's not a bug, or human-impossible-- it's the way the hit boxes are set up. Similar to doing a "pit" maneuver on the spiky-wheeled cars in the original "Spy Hunter", I used to do that all the time back in the day.
      • That's not a bug

        Did you watch the video? He runs through solid walls more than once, and climbs out of a bottomless pit like some kind of ninja. Those are bugs for sure.

        • SMB has walljumps. They are extremely hard to do.

          • The wall jump thing is almost certainly a bug. Though unlike things like going through solid walls which shouldn't happen, the wall jump thing can be thought of as more of an unintended feature.

        • RTFV? You must be new here ;)

          My post only referred to the "standing on the edge of the pipe" trick, I should have been more clear. Sorry for the confusion.

          That set aside, I consider that maneuvers that a human can perform only with extreme difficulty (frame-accurate timing, hitting multiple buttons at once) to be exploits, not bugs. Splitting hairs, I know.
        • by KDR_11k ( 778916 )

          Yeah but running through walls is how the minus world got discovered so it's not impossible in realtime.

    • by ildon ( 413912 )

      to say nothing of the way that he would jump on the edge of a pipe while the flower was out and not take a hit.

      It's funny that people keep mentioning that as impressive, as it's something I used to do when I was like 8 years old playing this game.

  • by Dwedit ( 232252 ) on Saturday February 12, 2011 @06:12PM (#35189186) Homepage

    This won't work with all games. Many games made by Konami use aggressive random number generators which depend on the number of clock cycles consumed while the game waits for the next frame.

    Then the game also plays digital samples through the DMC channel, and the DMC channel does not have a known consistent power-on state. Because the DMC channel periodically interrupts the CPU to fetch bytes, that will affect the number of cycles it takes while it waits for the next frame.

    So we have two issues coming together, number of leftover cycles from power-on state, and initial DMC state, so when you play one of these games, the game's own demo mode isn't even consistent between multiple power-ons.

    You can try it with Blades of Steel or Double Dribble, and see that their demo modes aren't always identical between different power-ons, even when you are aren't touching the joypad.

    No chance of those games being TASed on hardware.

    Other games are far more friendly, and don't rely on exact timing for their random number generator behavior.

  • When I was 10, I sunk probably a thousand hours into that game and never beat it. I got to the last Bowser a few times and died and wanted to cry.

    It sure is fun to see it beat in 5 minutes.

  • 3:54, about to fall down a hole and does Mario Galaxy-style parkour to get out of it. You could do that in original Super Mario Brothers?

    • Not officially, but collision detection can be abused to trick the game into believing a solid wall is ground beneath Mario's feet, allowing him to jump. Frame-precision is needed, hence the tool-assisted aspect of it.

      The tasvideos.org page has more info in their wiki.

    • by splerdu ( 187709 )

      You can do that by hand. I could back in the day, but only for some places like when I just barely miss a ledge and walljump back up.
      The trick is to hit Mario's foot on the 16th pixel of the block, and jump immediately after touching it.

      It's kinda the same for passing through (breakable) walls, except this time you hit mario's head on the upper block to cause his body to get bumped into the wall.

      It's easy as big mario, try for yourself on 4-2 near the start where there's a huge corridor with breakable block

  • by martin-boundary ( 547041 ) on Saturday February 12, 2011 @06:45PM (#35189340)
    Next up, High Frequency Tetris on sub millisecond collocated hardware!!
  • Human players (Score:4, Informative)

    by Anonymous Coward on Saturday February 12, 2011 @07: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.

    • That's nothing... (Score:2, Interesting)

      by Anonymous Coward

      You should see how many updated movies on TASVideos (which I've been visiting for a long time now) beat each other by a few *frames* (i.e. 1/60ths of a second).

      It's not uncommon to have a movie obsoleted in favor of a 2-3 frame improvement, especially in the Mega Man games, which are very, very, very competitively TASed.

      • by Anonymous Coward

        The 2-3 frame improvements generally only occur with games where the previous run was "perfect". Like Super Mario Brothers.

        Have you seen the latest Mega Man 1 TAS??? The guys skip most of BombMan and the first two Dr Wily stages using a buffer overflow and a race condition...it saved three minutes over the previous best run.

        That's right, a buffer overflow and a race condition. In a FUCKING CONSOLE GAME!

  • by Anonymous Coward on Sunday February 13, 2011 @03:13AM (#35191010)
    Uninitialized memory is not random, and relying on it to produce randomness is very bad.
    Interestingly I once saw this in some C code:

    static int c; /* leave uninitialized to make as random as possible */

    • by Dwedit ( 232252 )

      That would go in the .bss section, and on most platforms, is automatically initialized to zero by the crt0 code. The ctr0 code is the real entry point of your program, and it's what calls main().

    • by KDR_11k ( 778916 )

      These are consoles with no clock, there is no source of randomness beyond the user's controller input so developers look for anything they can find to add entropy. IIRC the PRNG in the Mega Man games is based on the number of sprites drawn on a frame in which the screen has scrolled.

  • I've never found tool-assisted speedruns entertaining at all. Legit speedrun videos themselves are kind of boring, but at least they're for real. It's no different than going through a game with invincibility, or infinite time. You're changing the rules of the game - like giving yourself as many mulligans as you want in golf. Or editing out all the frames in which you missed a couple of pins in bowling to make it look like you got a 300. And the worst part is that sometime videos aren't marked as tool-assis
    • I agree that the videos themselves are rather boring to watch, except in some instances when they're paired with fun music or interesting commentary, and that people need to make it clear that they're tool-assisted. (As long as I'm griping, I also hate the totally unnecessary neologism "speedrun" when the phrase "speed run" would have sufficed, and even that is annoyingly redundant. [End semantics Nazi rant.])

      But I think it's weird to suggest that they're somehow illegitimate, just because they run on diffe

Never test for an error condition you don't know how to handle. -- Steinbach

Working...