Introduction
Shantae is a relatively obscure GBC metroidvania from 2002, primarily due to being released after the GBA. It features gorgeous pixel artwork and sound, alongside dancing!!!!!
This run is my fourth attempt at TASing any% for this game, and is an improvement of 32,918 frames (a little over 9 minutes) over my original published run primarily due to better optimization, a complete overhaul of the route, and the incorporation of new strategies and glitches developed over the years.
Run Details
- Aims for fastest time
- Uses death to save time
- Takes damage to save time
- Heavy glitch abuse
- Uses warps
-
General Mechanics
Shantae's basic movement involves her jump, crouching/crawling, attacking, and the ability to run by holding B. It takes Shantae in base form 1 frame every time she jumps, meaning that is minimized whenever possible. Attacking with the hair whip can be slow, although it's possible to cancel the animation with a jump and there's a few useful bugs related to it. For most general movement running is a necessity, so B is held throughout. There's also various quirks when falling off of ledges that base form can take advantage of to begin falling a frame earlier then usual when jumping off a ledge is not possible, alongside being able to stop on a dime from a run by pressing Down. It's also possible for Shantae to dance with the Select button.
Partway through the run I obtain access to the Boot and Sash parts of the Fighter's Gear, which allow Shantae to do an up kick by double-tapping Up, and a Spiral Kick by holding B during the prior attack. Both are extremely useful due to them dealing more damage then a regular hair whip, and the Spiral Kick in particular can be cancelled much faster then a hair whip to decimate minor enemies.
Shantae also has access to various transformations she collects over time, each with varying levels of usefulness. To summarize briefly the ones in the run:
- Monkey Form is about as fast as base form and can climb walls, but is unable to attack without a special item which is skipped in this run due to taking too much time to obtain. Monkey also loses 3 frames per jump compared to 1 frame for base form.
- Elephant Form is relatively slow, but has a dash attack that can break down special obstacles.
- Tinkerbat Form is available only when Shantae is read as being played on a GBA, and can be obtained for 500 gems in the final town. It's a combination of Monkey, Elephant, and Spider, being able to climb walls and background tiles alongside having a dash attack and a sword, however they can't crawl in small spaces.
- Harpy Form is the last form obtained, and is able to fly infinitely, although it has rather slow friction making it hard to slow down quickly.
Luck Manipulation
RNG in Shantae is a very fickle thing, being run per frame and able to be manipulated based on the amount of inputs being done in a given frame. Luck is therefore manipulated continually in the run, particularly towards the start to collect 125 gems for shopping, alongside manipulating the solutions to puzzles and enemy patterns.
Lag Reduction
Possibly related to RNG, lag is a common problem in Shantae that needs to be mitigated whenever possible. The sole ways to reduce lag is generally clearing the screen via killing enemies, and using Shantae's hair whip while jumping to stop her animation cycle from running.
When entering locations that go into the screen, such as towns or dungeons, it's possible to save on lag frames by entering a loading zone or jumping and attacking as the transition happens.
Tricks and Glitches
A quirk in Shantae's animation frames at the end of a hair whip allows her to extend her hitbox by up to two additional frames via ending a crouch by letting go of Down and jumping. This is used a few times when applicable, most notably during the first Risky fight and a key chest in Golem Mine.
Crouch-Falling
Pressing Down before Shantae starts falling from a ledge allows her to stay crouched in mid-air, which can be jumped out of. This saves time in a few places where a destination is below Shantae in an unusual position that would normally require her to navigate from lower areas.
Dance-Falling
A subset of Crouch-Falling, only using Select instead of down, which lets Shantae dance while in the air. This is situational but did end up saving a small amount of time in Golem Mine.
Slide Climbing
While in base form, it's possible to jump on slippery slopes a frame before they're supposed to lock Shantae into a longer slide animation. This saves time on traversal, and also is fundamental towards getting a key early in Cackle Mound.
Locked Door Cancel
Jumping before opening a locked door overrides the game's attempt to place Shantae in a standing pose until the door opens, which saves small amounts of time everywhere.
A consequence of Locked Door Cancel only possible when morphed into a form, jumping into a locked door while in a form can temporarily turn you into base form, which saves time on movement when possible.
Under certain circumstances, it's possible to transform and de-transform while in a doorway to save time on the end of the animation due to the difference in hitboxes between forms pushing Shantae through doorways earlier then intended.
Invincibility
Taking damage from multiple hitboxes at the exact same time, for instance the intersection of two sprites for a cacti, confuses the game into thinking Shantae is under a constant state of invulnerability alongside cancelling the damage animation, which lasts until a new area is accessed or Shantae falls into a bottomless pit. This saves 129 frames traversing the deserts before Golem Mine.
Cutscene Interruptions
Generally, it's not possible to take damage during a cutscene as most NPCs are located in places where there are no enemies present. However, the developers missed an edge case with the Storm Puff's ability to damage Shantae, allowing her to break out of any interaction that would normally lock her in place. This has wide-ranging ramifications on the run and its route, and leads into various important glitches.
Genie Cutscene Skips
Every time a Genie is spoken to, the game immediately gives Shantae the form in question before the cutscene properly starts. By having Shantae die via a Storm Puff or warping out with an Exit Candy, it's possible to skip this cutscene. This is done twice in the run to save a collective 30 seconds.
Shop Glitching
Getting hit when first speaking to a shopkeeper allows Shantae to break out of the interaction while the shop menu is still up. If you then attempt to leave while buying an item with proper timing, it's possible to both receive the item and increase Shantae's money based on the price of the item in question. This highly useful bug allows me to obtain important pieces of the Fighter's Gear alongside a few potions the very first time I enter Water Town, allowing their usage in the game's four dungeons.
Squid Underflow
Dying when speaking with a mother Warp Squid allows you to talk to her multiple times, including displaying the 'Yes/No' prompt for giving a baby Warp Squid over to her. Doing this while only having one Squid causes the counter to underflow, making the game think that Shantae possesses 254 Squids by the end rather then 0. This allows me to skip obtaining 3 Warp Squids in Dribble Fountain, alongside letting me set up an additional warp to the Zombie Caravan later in the run to skip needing to traverse Mud Bog.
Item Hopping
When using an item in the air, the game has 1 frame where it thinks Shantae is on the ground at the end of the animation, allowing her to jump again while in the air. This can be chained infinitely with sufficient enough items to gain arbitrary amounts of height without the necessity of any transformations. This is used in Cackle Mound to grab a key early and reach the boss room without the Spider transformation, skipping its necessity and saving a bit over 4 minutes in the run.
Transition Clipping (New!)
Easily the most complicated part of the run, this glitch requires explaining multiple obscure mechanics in the game in order to understand why it works.
First lets talk about the loading zones within dungeons. To transition between rooms, loading zones are placed throughout dungeons, which temporarily lock Shantae into an animation as it fades out. Less immediately obvious is the differences between zones.
For instance, its observable even casually that when moving through Dribble Fountain, Twinkle Palace, and entering/exiting Genie rooms that Shantae can still move during the fade-in. In Golem Mine and Cackle Mound, this is not the case, and Shantae must wait until the fade-in completes to move. While seemingly a minor difference, this ends up mattering a great deal in how the game handles death during a fade-out.
If Shantae were to die in a loading transition, and was able to move back in to the loading zone before the game figures out what's happening, as is possible in prior examples due to this small oversight, the game places Shantae into her 'going through a zone' state, but without a zone to actually go into. While in this state, Shantae's collision detection is disabled, thus meaning she's capable of running through walls and even clipping through floors. The major caveat of this is that since Shantae was never meant to be controlled in this state, moving during this will result in a softlock under normal circumstances.
This then leads into the second obscure mechanic. Whenever you finish any normal cutscene/dialog, the game automatically resets Shantae's state to her default standing ground pose. This is again observable normally by nothing the few frames of running she needs to do to reach full speed after a cutscene, even if B was already being held. What makes this minor quirk notable is this state change is true even after breaking out of a cutscene via a death and closing out a textbox later, meaning this 'state reset' can be carried to arbitrary locations.
Combining these two mechanics leads to a new glitch I call Transition Clipping. In this run, I die after speaking with the Twinkle Palace Genie once obtaining the Harpy transformation, and then take that textbox over to a zone close enough to the boss room. From there, I die again and use the transition state to bypass a locked door, and then close the textbox to regain control of Shantae. Doing all of this ultimately ends up saving 37 seconds over the old block method of skipping the key.
Route
Intro
- Minor time is saved in the intro through lag reduction.
- I need exactly 125 gems for a Storm Puff for shop glitches and a Vial3 for its 100 gem cost to be used for duplication, and so I need to manipulate various enemies through the early parts of the run to drop 5 gems, which I begin here in the intro by obtaining 5 gems from Tinkerbats, including two double manipulations from the same attack that were particularly intensive to solve.
- CTEH is used on Risky's boat fight to do the first section in only one round. The variant I do this time around produces 3 hits rather then 2, causing the first phase to end faster then the published TAS. After this I do better lag management on phase 2 and die on the final hit for later.
Before Dribble Fountain
- I buy the Storm Puffs in Scuttle Town before leaving for later. 50 gems were manipulated on-route to Water Town.
- I save in Water Town in order to set it up for a death warp after Golem Mine, and also do various shop glitches to obtain the first two parts of the Fighter's Gear and various potions.
Dribble Fountain
- Lag reduction everywhere.
- Time was saved not needing to menu for Flash Bolts for the minibosses.
- A crouch fall was used when obtaining the second key to save a few frames on traversal by going the upper route instead of the lower route.
- Spiral Kicks were used to decimate the second miniboss, and to quickly push a block.
- The genie cutscene was skipped via an intentional death, saving 15 seconds.
- Three warp squids were skipped due to only one being required for Squid Underflow, which saves about 10 seconds overall.
- The boss is killed in 3 hits rather then 5 due to the up-kick being 2X as strong as the hair whip, and time between the 2nd and 3rd hit is reduced via a 1-frame window that prevents the boss from spinning around.
Before Golem Mine
- Invincibility was used in the desert to save frames.
- Squid Underflow is utilized in Oasis Town to roll my amount of Warp Squids from 1 to 254 for later.
Golem Mine
- I use a precise hair whip to bypass the elevator when first entering the dungeon, saving two seconds.
- The first and second keys are grabbed with the incorrect polarity to save a few seconds each.
- An Exit Candy is used to skip the Genie cutscene instead of a Storm Puff, which is slightly faster and saves roughly 18 seconds.
- Miniboss after returning was decimated with the Spiral Kick.
- I use Dance-Falling on the elevator to save a few seconds, since my next destination requires the use of the Elephant directly after anyway.
- I maintain Elephant Form when approaching the boss room to save time on transformations/detransformations via Temporary Base Form, alongside de-loading the elevator to save a few seconds.
- Boss was optimized to reduce lag.
Before Cackle Mound
- A death is taken immediately after Golem Mine to deathwarp to Water Town to save on a lot of travel time. Unlike the published TAS I made sure to have only half a heart before this point, saving about 10 seconds of waiting.
- Due to all my earlier timesaves on overworld traversal and Dribble Fountain (time of day doesn't advance in towns or Golem Mine), I was able to reach the Zombie Caravan before night ended, which saved 68 seconds of waiting.
- I set up a warp in the Zombie Caravan for later.
Cackle Mound
- I use a combination of a slide jump and item hop to collect a key earlier then intended. Time was saved collecting the key via Spiral Kick.
- I immediately backtrack to the room leading to the boss area and do 11 item hops to reach it without the necessity of Spider Form, which saves 4 minutes. As a consequence, the boss fight is a bit slower then the published TAS since there's no way to push the buttons on the wall.
Before Twinkle Fountain
- I immediately warp to Cackle Mound and manipulate its location to be closer to Bandit Town, which by effect skips needing to traverse Mud Bog and saves 50 seconds.
- Tinkerbat Form is obtained for 500 gems in Bandit Town (thanks GBA).
Twinkle Fountain
- A few transformations were saved via Tinkerbat Form replacing the necessity of Monkey/Elephant in some cases.
- Few seconds were saved when entering the spinner room by approaching the first one from directly below, which allows Shantae to jump at the end of a chain directly to the doorway.
- A Transition Clip was used to skip a key needed to reach the boss room, which saves time over the old block clipping method by reducing traversal time, saving about 37 seconds.
- Boss was optimized via Spiral Kicks and being moved over to the raised ledge so Shantae can land earlier.
Risky's Island
- Time was saved using Monkey to climb up the Tinkertank rather then Harpy, alongside timesaves from Spiral Kick strats.
- Risky now takes two hits per jump sans the first one like in 100% which saves a few seconds, and I'm also sure to walk as far left as possible to reduce time in the subsequent cutscene.
- I take an intentional death at the very end of the autoscroller to save loading time.
Potential Improvements
- Possibly a way to use Transition Clipping in Golem Mine to skip a key. From testing this didn't appear to save any time due the only valid loading transition to initiate the glitch being the Genie room and no way to obtain keys early before obtaining Elephant. If an early key were to be found this could easily save 10-20 seconds.
- Some potential way to skip the Monkey transformation. It's possible to access the first boss via Item Hopping and clear most dungeons without Monkey, however the final area has a few unavoidable uses since base form can't crouch in the air. Being able to fully skip Monkey would save at least 3 minutes if possible.
- Somehow saving enough time in Dribble Fountain/traversal to be able to save right outside Cackle Mound to do a death warp to there after Zombie Caravan. This would save 6 seconds, but the setup time required is too long and would cause time loss from time of day.
Suggested Screenshot
Frame 131010 (Item Hopping)
Frame 162915 (Transition Clipping)