SolidifiedGaming
TLoZ: Phantom Hourglass - Mutohs Temple Boss Key Shortcut
updated
Although this just looks like a standard item jump onto the platform, there is actually quite a bit more going on here. If you were to do an item jump from this position normally, Mario would just hit his head on the bottom of the platform and you'd end up getting nowhere.
In order to avoid this, you first need to get against the left wall and as close to the bottom edge of the pile of trash as possible while facing to the right. Doing this will allow you to walk up-left while both turning Mario around and making him fall off the ledge on the next frame before landing right back on the pile of trash. If on the frame that you are falling you let go of the analog stick and input A + Start/Dpad, then you will pause buffer a neutral jump in this partially turned around orientation.
To explain why facing a different direction when jumping is significant, here are 2 pictures of Mario showing how the collision detection changes:
cdn.discordapp.com/attachments/299265887712575490/1040831322387664916/image.png
cdn.discordapp.com/attachments/299265887712575490/1040831343552114698/image.png
As you can see from the lines highlighted in red, the ceiling check vectors (and also the floor check ones) are positioned differently around Mario based on his facing/moving directions, which in turn allows you to squeeze between the wall and the platform with certain angle orientations, and hit the bottom of it (and/or land on it) with others. Conveniently enough when we use an item our facing angle is reset to a default value that makes us go from the former scenario described to the latter at a level where we are already considered above the platform. This means that Mario lands on the platform instead of falling back through the gap on the way down and can simply hold left to make his way to the pipe after the item animation ends.
In most instances when you are being followed by an npc in this game, there is an "idle timer" that will count down from a minute (3600 frames) and will usually reset when moving. If this timer reaches 0 the npc will talk to you and comment on your lack of activity, which we can exploit. By hitting a direction to trigger certain cutscenes on the frame after the timer expires you can stack it with the idle dialogue and close that quickly to store the triggered cutscene.
For this trick we end up chaining the storage into the following Entei cutscene and obtain the "walk through walls" property to sneak past the researchers and enter the fourth trial earlier than intended (and skip waiting for another cutscene after the fact).
When Mario is hammering, there are several wall checks that occur to detect collision and determine how far into the swing something was found. The first of these vectors is at Mario's X and Z positions, but slightly above his head, so it will only find walls that are taller than him. As for the rest of them, they are slightly in front of Mario in the direction he is facing pointing downward along the arc which means that partially clipping into a wall with something like a pause unspin can allow Mario to hammer right through it if the wall's height is between the first and second collision vector.
0:23 - Passable collision exploit
When Mario is moving, there are 2 types of wall collision checks that occur. The first is just a standard vector pointing in the direction of Mario's movement, while the second is a set of 8 vectors that act to detect walls around him. The first of these 8 is also in the direction of movement, and the following 7 are each 45 degree rotations from the last vector. This ensures that collision all around Mario is considered and not just what's directly in front of him.
However, there is still a major flaw with this system that is abused here. Each vector can only find 1 piece of collision, even if that piece of collision is passable. This means that we can essentially "block" the vectors from hitting the impassable corner using things like loading zones and make our way through as if that corner is also passable.
0:51 - Spin jump ceiling displacement / floor clip
When Mario is doing a spin jump, there is a ceiling check that is done and if met, Mario is brought down to be below it. If this is done in a small enough space above floor collision, then Mario will be put below the floor and can use that to clip.
1:16 - Tube mode pause jump through ceiling
Pause jumping is known to be able to ignore wall collision due to the way that movement is handled while paused. However, pause jumping in tube mode also adds the ability to ignore ceiling collision, thereby making clips like the one seen in this clip possible.
1:37 - Yoshi hazard respawn trigger oversight
When using Yoshi, separate collision functions are used to handle movement. One of these functions that checks for ground is also ran while Yoshi is heading towards Mario before getting on him. This action is considered for some parts of that functions like checking for steps, but misses the possibility of setting a hazard respawn position during it. This allows for remotely setting a respawn point with Yoshi using things like partner "moon jumps" or clipping him through collision to get to places that Mario normally cannot.
Deck menu (0:00)
This glitch allows you to put any Magnus in any character's deck (this includes both Magnus meant for other characters and ones that are never meant to ever be added to a deck). Magnus that are put into a "wrong" deck will still maintain their normal functionality in battle, while ones that are never meant to be used in battle won't even be selectable in your hand.
Use menu (0:16)
Sorting a different Magnus into a useable Magnus' slot when selecting it allows the swapped Magnus to be removed from the stock in place of the used one. This means that some stats can in theory be increased infinitely using junk Magnus in place of ones like the Deluxe Shortcake.
Equip menu (0:42)
Just like with deck menu, you are able to equip any Magnus to any character. Ones put on the "wrong" character will work as intended, but others that aren't meant to be equipped will temporarily break that character's equip functionality and will be removed/dropped when leaving the equip menu.
Drop menu (1:01)
In a similar way to the use/sell menus, you are able to get rid of Magnus you normally wouldn't be able to by sorting said Magnus into the slot of the original one you are trying to drop.
Shop buy/sell menu (1:21)
By using this glitch to buy a Magnus that is worth more than the amount of money you currently have, you can end up with an amount that is negative. For some unknown reason, this seems to remove the ability to sell anything except for the Magnus that you just bought.
In order to track when to proc poison (among other repeatable things like PP restores) there is a timer value that triggers when it rolls around from 255 to 0. Normally this just increases by 1 every frame that you are moving, but jumping across a gap adds a fixed amount to this timer that also does not trigger the poison immediately. This means that with jumps back and forth we can set up this extra "queued" proc to happen right before the timer rolls back to 0 again, thereby giving us a second proc in the air.
This trick is possible without the extra proc, but it is much harder to perform due to needing very precise movement to clip far enough into the pillar to move it to the right.
This makes them move out of the way and because the original cutscene for them blocking your path is no longer there, you can simply run into the fortress.
Found April 14th, 2021.
Keep an eye out for a full explanation video on Malleo's channel in the coming weeks!
youtube.com/channel/UC5C-7TI6goM9uQ7Gf3JwnRQ
As written in the intro, I ended up using cheats to set some addresses in order to achieve this proof of concept. This includes:
The generated global evt thread ID to save me many hours of spawning evts to reach the required value for this to be doable.
Mario's X-coordinate to save me the headache of getting the float-perfect value needed to match the required thread ID (the exact Z-coordinate was obtained legitimately by very slowly pushing off of the npc).
Some flags that correspond to shine sprite and star piece collection to save me from having to go around the game collecting all of the specific ones to write the cmd to warp to the credits.
Also, the 15 minutes spent hammering would not have been needed for this demonstration if I had simply cheated the global evt thread ID to a higher value, but I didn't realize that until I was basically done recording all of the inputs so I decided to just leave it in.
However, one discovery changed all of that. By using a super jump, we can walk around during the Doopliss 1 cutscenes (the spring is actually what locks Mario in place and is separate from the real cutscene trigger). This lets us leave the room between when our partners are taken from the menu and the partner we have out is removed. With this newly obtained "fake partner" we can keep them out to get past the first obstacle and then save and reload to remove them before Doopliss 2 since the partner will only be kept out on reload if we have them in our menu. This whole process saves us a whole trip through Twilight Trail along with a lot of cutscenes related to obtaining Vivian, which is a bit over 5 minutes excluding the time to setup the new tricks.
TTYD has an internal scripting language that is used for all sorts of things like setting up objects/npcs in a room upon load, orchestrating cutscenes, etc., and each time a script is executed it is done as an evtEntry. Hammering shakes the screen, which is also done using an evt. This means that by pause buffering Mario's hammering we can create as many evts as we want while also preventing those evts from completing until we unpause. If we do this enough times to fill up the 256 available evtEntry slots, then any evts created after that point will overflow into the section of memory just after the last slot, meaning it will not be executed. Since the hammer evt is quite short, we only get 8 frames after unpausing to take advantage of this before they will all end and open up all of their slots again, but that is more than enough time to utilize it.
For this specific application of this glitch, it can be used to pick up the key for the lock dropped by Dark Bones without advancing the sequence value. This means that we can re-enter the room with the first key, open the lock with it and then pick up a second one that has spawned. Since this key's evt isn't prevented from running, it reverts us to the sequence value before opening the lock. When going through the Endless Hallway, the evt that makes Mario have to do the puzzle checks for the sequence value that is set when opening the lock. However, since we reverted using the key that part of the evt will not run just like if you had already completed the room, allowing us to skip it.
TTYD has an internal scripting language that is used for all sorts of things like setting up objects/npcs in a room upon load, orchestrating cutscenes, etc., and each time a script is executed it is done as an evtEntry. Hammering shakes the screen, which is also done using an evt. This means that by pause buffering Mario's hammering we can create as many evts as we want while also preventing those evts from completing until we unpause. If we do this enough times to fill up the 256 available evtEntry slots, then any evts created after that point will overflow into the section of memory just after the last slot, meaning it will not be executed. Since the hammer evt is quite short, we only get 8 frames after unpausing to take advantage of this before they will all end and open up all of their slots again, but that is more than enough time to utilize it.
This specific application takes advantage of the default behaviour of a lock when it is triggered with no evt tied to it. When the lock is created, a list of items is specified that can be used to unlock the lock. However, this is typically used in conjunction with the evt tied to it to open the selection menu where it can handle the different options accordingly. With no evt being executed though the lock will simply unlock if we have any of the items in its item list. With the lock on the blue cage, they decided to allow for a separate dialogue using the red key, and thus included both the red and blue key in its list. So by applying all of the knowledge given up to this point, we can unlock the blue lock just by having the red key in our inventory (without even losing the item).
Normally this type of scenario wouldn't be useful since it would just prevent the next cutscene from ever being played, but coincidentally they also handle the cutscene that follows the unlocking of this lock in a rather unconventional way. There are two global flags used in relation to this, one when opening the lock and another when the following cutscene is played. For whatever reason, upon entering this room part of the initialization evt checks the state of these flags and if the one for opening the lock is set while the one for the cutscene isn't, then it executes another evt for that cutscene. This allows us to obtain the rest of the 101 punies whenever we want after performing this trick and is the main reason that either of the route options shown here can save time over the standard Great Tree route.
Under certain circumstances, this will cause Link to jump diagonally onto a ledge, but due to the distance being changed he won't fully make it. This causes him to fall back away from the ledge while still keeping that layer, so in this case he can simply walk on the higher layer to get behind the boss door and skip the key.
As for actually getting Jump Storage, it can be obtained from the email trigger after initially leaving the train with Koops or from anywhere else prior to this point if one chooses to use a save file.
This should have a lot of uses, one example being this version of Conveyor Belt Skip in Any% categories that skips just as much as my previous video (background + plane panel) without the need for the Ultra Boots.
(If you somehow go back in bounds where the switch is you can spring jump into a vial to get back out again).
The menu in this game can be opened by either using buttons or the touch screen. However, the touch screen button can be held to delay the menu from opening until released, while at the same time putting the player into a kind of semi paused state. This also allows the player to "drift" for a bit before they are forced to stop moving by the button being held, which means thin cutscene triggers can be bypassed.
Although there aren't very many triggers throughout the game that are thin enough to drift through, the ones I managed to get past are seen in this video.
To set this whole thing up, we first need to get out of bounds next to the spring. Currently the only way to do this is by using a horizontal Yoshi Teleport with a Mowz textbox, which I perform by utilizing Time Stop. Once that is done, we need to get Hitbox Glitch to cut Mario's hitbox size in half, which can be done simply by landing on the spring in paper mode and releasing R in the air. And finally, we can get back on Yoshi and hit the spring once before falling onto it again to give us a frame to pause.
This "extra frame" is caused by an oddity with certain springs and switches that perform animations/actions just after hitting them. In this case, if the spring is still in the process of bouncing when Mario/Yoshi lands on it a second time then it will take an additional frame to set up the bounce again, hence giving us time to enter the pause menu.
Once we have paused on top of the spring, we can simply use an item to dismount Yoshi and fall into the void below (Mario's reduced hitbox causes him to be off of the spring while Yoshi is still on it), which will spawn us next to the entrance we took earlier. After the item animation has completed the spring will activate due to it still being stored by the pause and Mario will then fly into the air where holding right will easily bring him onto the upper platform to trigger the cutscene in Gloomtail's room.
If the area you are loading into does not have an entrance with the same name as the one stored, then you will end up spawning at some predetermined default entrance.
Although this glitch does have its limitations due to its reliance on loading trigger names, it should allow for a lot of different skips throughout the game.
Even if the reroute ends up being slower though this trick no longer needing Yoshi gives us a lot more leeway for saving time in any% and should come in handy at some point in the future.
Once Jump Storage has been obtained, Mario can use Bobbery and have him explode while holding him at a somewhat precise height next to a ledge to set his action to idle and walk back up that ledge as if it were a step. This is important because steps give Mario vertical speed (and no acceleration) in order to push him above them, which is what we need in order to perform a Super Jump up to the door for this cutscene.
What this ultimately means is that any ledge can be used as a step for Super Jumps as long as Mario's action can be set to idle at the right height next to it, which could be huge news for this glitch as a whole.
The reason this results in us falling into the Teleporter Room when we unpause is because of the steep outward angle on the side of the building combined with the pause menu's properties. For whatever reason, as long as Mario isn't falling he will not be pushed out of steep angles like this one while in the pause menu. The decreased hitbox of paper mode just happens to be small enough to allow Mario to clip fully inside the wall this way, and by also buffering a direction with the jump we can carry Mario's momentum further into the room once the menu is closed in order to not fall back outside.
This state will even carry on through loading zones (which is shown in the video) and save files!
For now this is the only known way to get into this weird jump state, but the actual scenario needed for it could easily be done in other ways in theory, so we'll see where this ends up in the future.
Jump Method: Hit A+Y on the frame that Mario lands in paper mode while the control stick is neutral
Pause Buffer Method: Hit A+Y+Start/D-pad while spinning into paper mode (R must be held)
0:15 - The speed at which you go through bars is actually proportional to Mario's hitbox size, which is why he goes further through the bars here.
0:27 - Side collision only applies to the paper mode hitbox while in paper mode, but ceilings and floors still use the larger one. This lets Mario walk on floors that are directly under walls from the outside.
0:58 - Doing this glitch in the corner allows Mario to be in boat mode on top of the step, but this initial glitch can be done anywhere on the left half of the boat panel (the right half will still put you in the water and you won't be able to use the panel). Doing it away from the corner will just put Mario on the panel, and the smaller hitbox causes Mario to clip right through the step so that result isn't always ideal.
1:19 - Although I don't know exactly what makes these differing results occur, they seem to be consistent across all boat panels and not continuous.
Note: The glitched paper mode state also allows Mario to easily clip through steps by walking at an angle toward a wall while moving inching him into them.
This should actually make the gap between JP and the other versions a bit smaller since the Ultra Boots are no longer required to complete either of them.
Unlike JP, the US and PAL versions of the game don't reset the variable that keeps track of the amount you've spun the stick when doing a hammer spin or going into tube mode after you enter an airborne state. This property can be used to set up a pause buffered hammer spin by doing a paper spin off of the upper floor onto the spring, which redirects the angle to send Mario to the left instead of the right. This ends up letting Mario pass through the wall, allowing him to fall to the bottom of the room quickly.
There is actually a way to complete the chapter with this method, but it requires a huge workaround due to 2 instances being impassible under certain circumstances:
1. If you have no partner out when spelling Doopliss' name, the game will softlock due to the camera attempting to find the non-existent partner (and failing to do so).
2. Going to Doopliss 2 with any partner out other than Vivian will cause the game to crash on the first selection box due to the default text not being able to handle it.
What both of these limitations means for the route is that we would need to keep a partner out up until right before the room where we fight Doopliss at the end of the chapter and then somehow remove it so we can be given Vivian (if you have no partners out, Vivian will automatically be brought out upon starting that cutscene). Believe it or not, there is actually a way to accomplish this which I may show off in a later video, but I'm not too optimistic about it saving time as of yet.
This can in theory give you any start to these fights, including getting first struck and hammering/jumping on them with Mario, but those scenarios will be hard if not impossible to perform given the limitations set on hitting these cutscenes after the fight.
This is actually the second clip found in this room, but this first one only works on the U version: youtu.be/DtT_Qb5U4XU
Vynneve's video: youtu.be/zrzqbKYi_lk
Doing this allows us to skip all of the spikes in this area which means there is no longer any required movement of the platforms by the babies.
In order to achieve this, we set the babies up in the top right room for the adults to come back to later (they don't actually need to be put on that ledge) and then walk down to the bottom left room with the adults to enter the top screen with a precise jump off of the middle platform. Since the adults are never supposed to enter these screens, switching back to the babies doesn't despawn the room and we can then leave the screen through the bottom right exit to end up on this new normally unreachable ledge. At this point all we need to do is set the babies up in the top middle room and have the adults enter and leave this second top screen in the same way as before to be placed out of bounds near the babies. The adults can then grab the babies through the back of the right loading zone and make their way to the pipe through one of the bottom loading zones to be taken inside the Star Shrine.
The method for clipping into the spring has been improved slightly since making this video, instead of clipping baby Luigi into the spring the way I do here we clip baby Mario by having him walk off of the spring and back to fall inside of it.
This can only be used when going to get Mowz in English runs at the moment (and doesn't save that much time because of it), but if another method of text storage that could be done during chapter 1 is found then this could be used to save a few minutes in all categories.
However, this method also initially allows for a new type of storage that we're going to be calling "Time Stop". While in this state you cannot pause or activate most events (excluding hazards), which can allow for things like the alternate way of achieving Shadow Siren Skip shown in this video.
Feel Free to check out Malleo's video explaining this trick in more depth: youtube.com/watch?v=YbJcajw-O-k
With this room, we are able to preserve the default spawn location for the water (the center of the room) and be brought over to the chapter 1 pipe earlier than intended. This should save around 3:30 in prologue for RTA runs, but should lose a little bit of time later on due to skipping Power Smash.