NESBot: Tool Assisted Speedrun On Real Hardware
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."
Not that there isn't a certain cool factor to it, but at the end of the day it's just sending signals on the controller lines; would have been more impressive if it was actually hitting the controller buttons or something.
Welcome Slashdotters.
An introduction might be in order. Please note we have many other movies for other consoles. We also have a list of recommended movies for first-time viewers.
Please don't beat up our poor server too badly.
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...
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?
Mario appears to be invincible here.
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.
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
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.
Yeah - I call BS. There were several times where he clearly died - fast forward to the water scene near the end, and he literally swims through the CENTER of the squids.
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?
"These people look deep within my soul and assign me a number based on the order in which I joined" --Homer re:
Posted on hackaday a few days ago...
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 is just an evolution over autofire and macro based controllers.
Next up, High Frequency Tetris on sub millisecond collocated hardware!!
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.
He's not actually invincible, they just abuse the hell out of hitboxes. If you think that's bad, watch the TAS for Legend of Zelda: A Link to the Past. They walk through some walls, completely screw up the game and warp to the end. It's all possible without cheat codes, but some of it involves doing crazy things like pressing up *and* down on the controller at the same time.
In other words, this is just massive bug abuse & "luck manipulation." They do the same things in RPGs, exploiting bad programming in the original that would be difficult or impossible to trigger without frame-perfect precision.
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.
Tools assisted Speed runs?
Like..say... Angband bot? Rogue-o-matic?
HELLO! WHERE HAVE YOU BEEN?
Interestingly I once saw this in some C code:
Let me know when it beats Contra without 30 lives. Then we'll talk.
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-assisted, so it leaves doubt as to whether some true speed runs were assisted or not.
Freedom is drinking a beer in the park when you're supposed to be at work.