Super Pitfall is a platforming game well known for glitchiness and overall poor programming. The current run takes advantage of several major glitches to beat the game in under 5 minutes.
Game objectives
- Emulator used: FCEUX 2.2.2
- Beats the game as fast as possible
- Abuses programming errors
This game is pretty poorly programmed, as anyone who has tried to play the game casually can attest. The 2 major glitches this run takes advantage of are clipping through walls and the game not clearing memory states at game over.
'Wall Clip': This glitch occurs because a particular memory address ($00D5) is reused for multiple purposes in a frame. One of those purposes is for collision detection. Normally, this byte fails a check that prevents the player from moving forward when walking against a wall. However, it turns out that $00D5 is also changed at an interrupt of some sort. If the interrupt timing is just right, the value will be modified and not changed back before the collision detection check. When this happens the character moves one step into the wall. This is quite random, and I have found no way to consistently make it happen. Only a brute force search could really find the best case as far as I could tell. But it happens often enough to make it a time saver.
'Ending Warp': It turns out the game fails to clear critical memory values at game over. So, if you completed all your objectives and game over, it still has those values set until you start a new game. The problem is that the demo that runs if you leave the game idle starts the character at the ending trigger, oops! So once you rescue the girl you can simply go down one ladder and end input. Then you will repeatedly die until game over, and eventually warp to the ending.
I had very little to do with the inputs of this run. The first 1.5 minutes or so is played by Kyman, who's WIP performed the wall clips much quicker then I had managed. I tested a second potential clip to save another death warp, but it turns out you have to pass through 2 wall sections instead of 1, making it very unlikely to be faster. From there, Arc's original inputs were pretty optimal and required only slight modification by me.