TASVideos

Tool-assisted game movies
When human skills are just not enough

Submission #4161: CoolKirby's GBC SpongeBob SquarePants: Legend of the Lost Spatula in 05:57.98

Console: Game Boy Color
Game name: SpongeBob SquarePants: Legend of the Lost Spatula
Game version: USA
ROM filename: SpongeBob SquarePants - Legend Of The Lost Spatula (U) [C][!].gbc
Branch:
Emulator: BizHawk 1.5.3
Movie length: 05:57.98
FrameCount: 21381
Re-record count: 10112
Author's real name:
Author's nickname: CoolKirby
Submitter: CoolKirby
Submitted at: 2014-01-15 22:15:05
Text last edited at: 2014-01-19 23:01:31
Text last edited by: CoolKirby
Download: Download (3313 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:
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!


(Link to video)

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:

Address Set #44: SpongeBob SquarePants: Legend of the Lost Spatula
System: Game Boy Color
Download .wch file for: BizHawk
Domain Address Data Type Signed Endian Description
WRAM 03B8 Byte Signed Little Y-Speed
WRAM 03BA Word Signed Little Y-Position
WRAM 03BC Word Signed Little X-Position
WRAM 03C6 Byte Signed Little Health (0 = Death)
WRAM 0419 Byte Unsigned Little Item On-Screen Indicator (neg is partially off-screen)
WRAM 07B8 Byte Signed Little Jump Height (0-14)
WRAM 07B9 Byte Signed Little X-Speed
WRAM 0FE6 Byte Unsigned Little Item On-Screen Y-Pos

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...

Similar submissions (by title and categories where applicable):