This is a 361 frame (6.04 second) improvement to my previous run with nitrogenesis and jlun2 due to slightly different routes, a couple of new tricks, and some optimizations aided by the use of memory addresses.
Note: While it appears this run is only about 263 frames faster than the previous run, that run's time was incorrectly calculated with a frame rate of 60 fps, whereas this run's time was calculated with the correct ~59.73 fps. All frame amounts noted in this submission text were figured out with simple subtraction of frame numbers.
About the run
- Emulator used: BizHawk 1.5.3
- Aims for fastest time
- Takes damage to save time
- Abuses programming errors in the game
- Manipulates luck
- Genre: Platform
I made most of this as a test of GBCHawk when it was first released, but got distracted by school and other projects. But I've recently had some time on my hands, so I was able to finish this run! I'm happy I was able to bring this under 6 minutes, and I hope you all enjoy it!
Area | Frames Saved | Total Frames Saved |
---|---|---|
To Goo Lagoon | 0 | 0 |
Goo Lagoon | 53 | 53 |
To Undersea Desert | 0 | 53 |
Undersea Desert | 27 | 80 |
To Kelpazoic Jungle | 0 | 80 |
Kelpazoic Jungle | 209 | 289 |
To The Carnival | 3 | 292 |
The Carnival | 0 | 292 |
To Jellyfish Fields | 16 | 308 |
Jellyfish Fields | 4 | 312 |
Rock Bottom | 26 | 338 |
Dutch Under | 26 | 364 |
Ending | -3 | 361 |
New tricks
Platform Boost
When SpongeBob is slowing down from a high jump, brushing against some sort of platform boosts him to his maximum vertical speed as if he has just taken off from another high jump. The main benefit of this is that it moves SpongeBob at his normal horizontal jump speed, so having this boost at the end of a glitch jump gives you a better position upon landing at no cost of time.
Sliding into Walls (originally discovered by NitroGenesis)
This was used in the previous run for entertainment before I found that it can save time after the final boss fight. It's achieved by walking toward a wall, facing the opposite direction for one frame, and then slide jumping in the direction you're moving. This causes SpongeBob to slide a few pixels into a wall. Unfortunately, he can only slide up to 13 pixels, meaning you still can't make it through one-tile-width walls.
Glitch Fall Clipping (not used in this run)
When you walk off a cliff and jump and autofire A (to glitch jump), SpongeBob will instead fall, gaining velocity as well as the sprite displacement that the glitch causes. But because SpongeBob is jumping down, the game displaces his sprite to the bottom-right instead of the top-right. This means that if you fall for a good length of time, SpongeBob can clip through 8-pixel high floors and even inside objects!
Here are some memory addresses for SpongeBob's position, speed, and other useful values, which helped me see how each jump affected his momentum:
Here's a table showing the average speed of each normal jump (no glitch) SpongeBob makes. (Standing gains no horizontal distance while squatting before a jump, walking gains 1 pixel/frame, and sliding gains 1.5 pixels/frame):
Jump Hgt | Jump Type | Dist (Pixels) | Time (Frames) | Avg Speed |
---|---|---|---|---|
0,2 | Standing | 67 | 36 | 1.861 |
0,2 | Walking | 75 | 37 | 2.027 |
0,2 | Sliding | 90 | 44 | 2.045 |
4,6 | Standing | 82 | 41 | 2.000 |
4,6 | Walking | 90 | 42 | 2.143 |
4,6 | Sliding | 105 | 49 | 2.143 |
8,10 | Standing | 97 | 46 | 2.109 |
8,10 | Walking | 105 | 47 | 2.234 |
8,10 | Sliding | 120 | 54 | 2.222 |
12,14 | Standing | 112 | 51 | 2.196 |
12,14 | Walking | 120 | 52 | 2.308 |
12,14 | Sliding | 135 | 59 | 2.288 |
As you can see, walking one frame and jumping the max height (12 or 14) is the fastest normal horizontal jump SpongeBob can make. These values are slightly different with the spring shoes equipped, but the proportions are the same. Usually, the only reason I deviate from the fastest method of movement is to avoid an obstacle or line myself up to land on something precisely.
Quick Text Box
Opening the Start, Select, or Utility Belt menus will make sign messages come up immediately after exiting the menu.
Old tricks
Jumping Glitch
When an item you are using has spawned an object (ex: bubble wand spawns a bubble), as long as that object is onscreen, you can hold B and autofire A to make SpongeBob jump very high. When SpongeBob has the spring shoes equipped, performing this glitch will allow SpongeBob to jump infinitely (until he hits something). The main drawback is that it freezes SpongeBob's position every time A is pressed, so he will only move half the horizontal distance while glitch-jumping compared to a normal jump, so it is sometimes better to jump normally.
Sinking Glitch
The programmers intended the player to jump to the top of the level and grab an anchor to send SpongeBob plummeting through the goo to the treasure chest. This glitch lets you skip all of that by jumping off of the goo where the anchor normally would fall and then immediately pressing A, sending you down through the goo as if you were on the anchor and allowing you to land right next to the treasure chest. It's interesting to note that no matter how you reach the chest, the game destroys the anchor object after the map cutscene.
Luck manipulation
Moving platforms and enemies can be manipulated by jumping at a different height.
Avoiding damage
Using your equipped item (ex: throwing a patty, blowing a bubble) can be used to avoid taking damage.
Sliding before jumping
By walking for 9 frames before jumping with the spring shoes equipped, SpongeBob will move forward faster (2 px/frame instead of 1 px/frame) while squatting to jump, giving more horizontal distance at the cost of some time. The effect is enhanced on platforms that are moving in the direction you're jumping.
Slowing down in midair
Pressing A the first of every two frames in midair (the second of every two frames will glitch jump) will force SpongeBob's jump velocity to count down as if he was later in his jump, allowing him to land earlier. This saves time when jumping vertically and having to land on the edge of something or in a precise spot.
Level by level comments
To Goo Lagoon
- To my surprise, I didn't find any improvements here. I figured at least Sandy's Park could be improved a little.
Goo Lagoon
- I start the level by jumping in a specific pattern to set up the sinking glitch jump. This is because I have to hit the water on a specific pixel when coming from this direction, or else the game's camera would lose SpongeBob and I would be forced to restart the area.
- I save 8 frames in the Bottom of the Lagoon with better jumping and a slightly more helpful damage boost.
- The new route replaces the hopping back from the island and slower sinking glitch jump and saves 45 frames.
Undersea Desert
- I found that jumping from higher platforms instead of off the ground (when possible without losing horizontal momentum) saves time because SpongeBob can cover a similar distance without having to fall down to the ground and jump back up again. Utilizing this and a second jump to break up the really long one from last time and cover more horizontal distance, I saved 16 frames before the portal.
- I don't think it's been mentioned before, but I take the portal because it saves at least a few seconds.
- Saved 2 frames in the portal room by jumping a little lower to reach the exit portal.
- Saved a frame jumping down the rocks to Hot Sauce Bandito.
- Saved 8 more frames by switching back to the Spring Shoes right before the To Outer Town message.
Kelpazoic Jungle
- Saved a frame in the jump up to the first portal.
- Saved 26 frames from walking a little further to glitch-jump the whole way up at the beginning of the second room.
- Forgoing the damage boost through more creative use of the slowing down in midair trick saved 11 frames, and utilizing the extra health point later in the maze saved an additional 74 frames!
- The last regular jump in the maze before the glitch-jump may look sloppy, but it's actually necessary to manipulate an enemy so it doesn't move in SpongeBob's way and kill him.
- For some reason, the Jungle Fish's platform is not solid, so you can jump right through it into the battle! Doing this saves 89 frames.
- Saved 8 more frames with Quick Text Box.
To The Carnival
- Saved 3 frames exiting Downtown through a slightly different route.
To Jellyfish Fields
- Similar to how jumping from higher platforms saved time in Undersea Desert, staying near the ground helped save time in Sandy's Park.
- It's hard to jump right in front of the sign for Jellyfish Fields. Besides Bubble Bass hanging out near it, there's a really annoying jellyfish floating between him and the signpost that always manages to be in your way. But working backwards from the spot, I managed to find a good path to jump right to the edge of the sign's trigger and save 16 frames!
Jellyfish Fields
- Saved 2 frames from slowing down in midair to make a lower jump onto the geyser.
- Saved a frame in jumping to the second geyser.
- Saved another frame from the jump to the Big Jellyfish.
- When making the last run, we noticed SpongeBob landed in a different spot after spawning in Rock Bottom but figured it was because we paused in a different spot (which saved a frame), so we didn't bother testing it. But I found that both jumping and blowing a bubble change these values. By doing these actions at certain Y-positions after the Big Jellyfish battle, I manipulate SpongeBob to land as far right as possible.
Rock Bottom
- Saved 26 frames with the better initial landing spot and better utilization of the jumping glitch.
Dutch Under
- With a different glitch jump to the top of the area, I was able to utilize what is apparently a platform boost (no idea why it's there) to gain more horizontal velocity than glitch jumping and save 18 frames before I enter the ship.
- Quick Text Box would save 4 frames when I enter the Flying Dutchman's battle screen, but it would put SpongeBob in a worse patty-throwing position that would waste at least 6 frames.
- I used the Sliding into Walls glitch to put SpongeBob in a better position when the game loads the spatula area, saving 5 frames.
- Being out of patties means I can use glitch jumping and the slowing down in midair trick to save 3 frames from the jumping to the spatula.
Ending
- The last input is the only place where BizHawk's emulation differs from VBA's. 3 frames are lost to more accurate lag emulation before dismissing Mr. Krabs's text box.
Suggested screenshots
10593, 11310
Thanks to
- The BizHawk devs for the awesome emulator
- My former teammates for their prior work
- Got4n for encouraging me to get it done and volunteering to help even though I didn't need it
feos: Accepting to Moons and publishing...