For most of his life, Earthworm Jim as just an ordinary worm engaging in normal worm activities, until the Ultra-high-tech-indestructible-super-space-cyber-suit graced his presence. From this point, he was able to embark on many adventures, and go up against the evil “Earthworm Kim”. Unfortunately, Kim was not kind, and required 74 Udders and 950 Marbles from our favourite worm to beat her and consequently, the game.
That was until Jim discovered the power of being able to jump really high and decided to just skip the game.
Game objectives
- Emulator used: BizHawk 1.12.1 (Interpreter, GlideN64, HLE)
- Objective: Beat the game
Key Techniques
- Superjump
- A standard move in the game which is activated when you crouch and then press A with a neutral stick. Whilst this is an intended move, the developers did not consider how high you can get with this move when protecting the player from going out of bounds or accessing areas early. Instead of going through walls, the way of going out of bounds in this game is jumping over walls, so optimising the height you gain is critical for some sequence breaks to work. The twirl/hover move assists with some of this, allowing Jim to gain 0.05 vertical units per frame for 22 frames, and allowing the ability to travel further, extending the range of how far you can go.
This all might seem trivial, but it is all crucial to why this run works
- Perspective Force Slide (PFS)
- When you enter first person (done with R + C-Up), it may seem like you are brought to a halt. However, instead of writing your velocity to 0, entering first person preserves your previously held velocity. The developers tried to stop this being apparent in normal gameplay by severely restricting when you can enter first person to only when you are in the idle animation.
However, we can enter the idle animation and be at a non-zero velocity in many ways. The method demonstrated in the TAS bumps into a wall that forces Jim into the idle animation shortly after he starts his roll. Then we enter first person to initiate a PFS.
There is quite a large gap between the angles you can bump into the wall at and the angle we’re wanting to have during our PFS. We can ensure we can have any angled PFS by crouching in the direction we want our PFS to be, then moving our stick to roll towards the wall to bump into it. The output PFS angle will be whatever our crouch angle was, therefore allowing any angle PFS regardless of wall angle.
Rolls start at anywhere between 3 and 4 velocity (varies depending on situation) and levels out at 2 velocity (very close to the old fastest move speed in the game). The PFS used here is 3.5 velocity (4 velocity PFS wasn’t possible in this scenario), meaning we are moving 1.75x as fast as what the game normally allows
- The Credits Trigger
- (AKA Hey, lets just “L to Levitate” randomly whilst glitch hunting and hey oh wait, there’s the credits.)
Like in most games, triggers in EJ3D are used to define when moments in games are meant to occur, such as cutscene triggers or loading zones. However, unlike a fair amount of games, sometimes there is a random trigger just floating in the air. This is the case with the credits trigger.
The credits trigger is a trigger zone 97.7 units off the ground, which is around 4x the height of a super-jump and twirl combo. Whilst this is certainly out of reach in normal gameplay, and certainly would not be something you would stumble upon randomly during gameplay. However, this route seeks to get there somehow…
Route
- Intro
- Upon booting up the game and cancelling the intro musical cutscene, we can auto-cancel the title demo with any button. The interesting fact about this is that it plays out the action even though you’re cancelling a cutscene (eg. A would make the character start jumping, albeit freeze it very shortly after). The only one which persists is holding Z to pull out Jim’s Blaster. This persists until Jim comes out of the elevator doors in the intro.
After this, we start the file and go through a whole heap of cutscene that takes us to 33s on our TAS timer.
- The Climb
- Next, we head back to the elevator. We jump and roll into the computer wall which prematurely ends the roll and grants us a 3.5 Velocity PFS.
We then jump onto a small lip on the elevator frame. There are a lot of surfaces in the game where jumping onto them locks Jim into the jumping animation for a short period of time. This is not a good effect since it delays when we can initiate the next crouch, however, we can reduce this time until the next crouch by neutral crouching (B + Neutral Stick) for 1 frame, and then letting go of B to put us in the idle animation.
Being on the elevator frame provides enough height to allow the player to get on the roof of the tunnel to the entrance to “Memory” (The first sub-hub in the game).
The next jump is easily the hardest in this run, as we need to jump from the memory tunnel roof onto the back of a window. Unfortunately, the non-slippery part of the back of this window is too high for us to reach, so we must have the right speed, angle and position to be able to slide up the slippery sloped part of the window. Coming at this with not enough speed or Y Position will not allow you to get high enough, not coming at it from the right angle could easily yield the speed coming in to be converted into speed slighting directly away from the window. However, we get on top of the window and convert some of the speed we have into sliding away from the memory tunnel and nearer to our next destination.
The next jump is not a superjump since the height we need to get there can be achieved with a normal jump. Since a superjump requires you to start from a standstill, if you can jump normally when travelling predominantly horizontally, it’s best to do so. This leaves us on top of an electrical cable section.
Jim then jumps onto the back of a window before jumping off that and around the wall to the top of an electrical cable stub, and then on top of a slightly higher stub. This leaves us at around 140 units off the base ground (6-7x the height of a superjump and twirl combo). Now that we have barely enough height, the only thing left to do to hit the credits trigger is to launch ourselves back to the centre of the room to hit the credits trigger.
At this point, the credits sequence starts, however because the camera is locked on the Memory Tunnel, it's tough to see. Here is what it would look like without that locked camera. The only thing that is left is to clear the rest of the textboxes to allow the credits to flow without any additional inputs. The textbox triggers can be triggered a frame or two sooner by interrupting the “locked” walking with crouching and jumping to the next trigger. We can speed this up further by whipping the frame before you land which allows you to move 3.8% faster. Unfortunately a PFS is not possible here due to the camera being locked on Memory tunnel, where entering first person is not permitted.
Making the TAS
This TAS was made with the usage of ScriptHawk, a RAM watch tool which extends RAM watching capabilities further than what BizHawk’s inbuilt RAM Watch tool provides. Huge thanks to the rest of the ScriptHawk team for making the TASing process miles easier with the usage of this script
Miscellaneous
A common question when I talk about the Any% TAS is about whether a 100% TAS is in the works. Yes, it is in the works. I have done 4 levels and a boss, and I’m around 25 minutes into the run. Here is "Are you Hungry Tonite?"
Thank you to Koffingrockz, Markusman64ds & CardinalPickles for assisting with glitch hunting this game. An additional thanks to Isotarge and RingRush from the DK64 community, who have been an inspiration for glitch hunting, TASing and helping promote the idea that learning why the small things work makes the big things come.
feos: Great job with the new movie, thanks for your dedication! I compared the ending with how it's supposed to end normally and noticed no difference: it just wraps back to game start and allows you to keep playing, in both cases. So the credits glitch is valid. Accepting to Moons, since feedback was really good for the first run, and now it's also in the correct region, so we can safely rely on the same data.
Dacicus: Processing...