You will need:
An Arduino Duemilanove (other boards will probably work, but you will have to adjust the steps for your device)
Working NES Console
Super Mario Bros. (Note: this must be only the single game, not the two- or three-in-one cartridge)
A controller you can cut the cord from
Two LEDs (two different colors are recommended but not required)
2x ~390 ohm resistors
3x 1.6k ohm resistors
3x 3.3k ohm resistors
4021 (16 pin Shift Register. Note: the 74xx series will not work)
SD Card slot (more on this later)
A pushbutton (not required, but recommended)
A switch (not required, but recommended)
A soldering iron (you'll probably need one)
Multimeter
Hookup wire
Software needed:
Arduino Interface, available from http://arduino.cc/
Processing, available from http://processing.org/
FCEUX, available from http://fceux.com/ (you probably want the windows binary unless you know what you're doing)
Remove these ads by
Signing UpStep 1Background information
Every approved submission (called "movies", even though they contain no audio or video data) on their website is simply a series of recorded button presses that in theory can be played back on the actual console for which they are intended. In most cases however the emulator differs too greatly from the actual consoles to make this possible, but in the case of the NES the difference is significantly smaller.
The game choice also makes a big difference as to whether the button presses can be played back or not. 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.
These button presses are based on frames on the console. Almost every time the console redraws the screen (~60 times a second), the controller is polled for input. However, there are times when the screen is redrawn, but the controller is not polled. These are called lag frames. Due to the difference in the way the emulator handles these lag frames, any movie must be modified to run correctly on the console. This is handled later on.
To turn "in theory" into reality, we will start by modifying the controller.
| « Previous Step | Download PDFView All Steps | Next Step » |











































I switched to using the 4021 after my order for them came in since it is the chip the controller actually uses. I don't think using the shiftout will work on the arduino due to the speed required. The latch pulse arrives every so often, slow enough for the arduino to handle, but after it arrives the 4021 is clocked 7-8 times extremely quickly, faster than the arduino can likely handle.
On a serious note:
Cool, all you need now is one that can play brawl and you will be champion of the world, at brawl.
At 4:50, notice how the Piranha Plant disappears when Mario jumps up onto the tube. It doesn't retract, it just disappears as he lands on it.
These are all exploits that existed in the original game, but are generally difficult/impossible to generate under normal circumstances.
It's a known glitch in the game.
did you just jump off of lava? O_o 4:49
touched the flame rope? 5:11. 5:14
touched the squid? 5:12, 5:15
the flame rope and squid, i have no explanations for.
As for apparent collisions with squid / ropes / piranha plants / etc, the collision detection algorithms aren't perfect in this game (remember, this was made in 1985...) so if you time it right you can seemingly pass by the edges of something.
Running across gaps works fine as long as there's only a single block gap on a panel (ie, several in world 8, etc.)
And you can definitely slide through bricks - the trick in 1-2 is actually a method to get to the so-called minus world (-1) that is a never ending water world.
It looks weird, and part of the oddity with this is the 'perfect" computer controlled player, but every one of these tricks can be done by a human with the right timing. I've done all of these at one time or another save for the jumping out of the large gap - now I'm really tempted to try it...
Other than those details, it seems to read pretty well for a novice audience.
It probably shouldn't(but does) amaze me at all the folks that don't know about these glitches. As mdmetzger poignantly illuminated, this game was made while game development and even software development was in it's infancy. I've performed most of these bugs at one time or another. The frequency and skill with which they are performed in this video has nothing to do with anyone's physical ability. The title and description should have made that clear. This video wasn't made to show off that the glitches could be performed. This video was made to show that you can do TAS runs on actual hardward, not just through emulation(which is clearly, vastly easier.)
pjgat09, awesome, awesome job! I look forward to being able to afford these components so I can try to learn more about how this is done. I'm so WAY jealous of the things that you know! :-)
not because you can't it means it's impossible!