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

Submission #7030: Potato, Migu's GBA Mario & Luigi: Superstar Saga in 59:19.35

Console: Game Boy Advance
Game name: Mario & Luigi: Superstar Saga
Game version: USA
ROM filename: Mario & Luigi - Superstar Saga (U).gba
Emulator: BizHawk 2.4
Movie length: 59:19.35
FrameCount: 212591
Re-record count: 100505
Author's real name:
Author's nickname: Potato, Migu
Submitter: Snodeca
Submitted at: 2021-02-16 21:56:00
Text last edited at: 2021-02-21 17:44:31
Text last edited by: Potato
Download: Download (98531 bytes)
Status: judging underway
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:
In this game, the Beanbean Kingdom pays a formal visit to the Mushroom Kingdom. However, that visit was a fluke and the main villain of this game, Cackletta, steals Princess Peach's voice and escapes. As an attempt to save their princess' voice, Mario and green 'stache (forced by Bowser) now team up to retrieve Peach's voice and save the Beanbean Kingdom in record time.

This movie is an improvement to Mugg's 2012 TAS by approximately 13 minutes and 10 seconds due to several new time saving glitches, along with better routing, RNG manipulating and the new inclusion of a particular, overpowered item.

The flashing that are seen may not be that bad, however if you are susceptible to seizures, beware that there is flashing past the 44 minute mark!


(Link to video)

Game objectives

  • Emulator used: BizHawk 2.4
  • Beats the game as fast as possible
  • RNG Manipulation
  • Abuses glitches to save time
  • Takes damage to save time

Route Overview

The first 44 minutes of the run are played mostly as normal. We collect extra mushrooms (and other items to sell and get more mushrooms) throughout the run to power up the Mush Badge (see below). There is a small section of Hoohoo Mountain before Hoohooros skipped using a ledge clip. We unlock Splash Bros Advanced during the Dragohoho fight, which is extremely useful on Queen Bean. We also unlock pipes 1 and 4 for later use.

Once we get access to a barrel in Chucklehuck Woods, we can start sequence breaking. We set up the Action Command Glitch by performing Barrel Storage, Sign Glitch, and Mini Mario Glitch. This gives high jump on Mario. We use this high jump to get a glitched hammer on Mario. This allows us to perform Luigi Hat Teleportation, which is the main method of going through walls and performing skips.

We take pipe 5 to pipe 4 (Beanbean fields) and head to the east part of Teehee Valley. Then we teleport past rocks and past Trunkle to get to Fungitown early. The sole purpose of this section is to get the Mush Badge which saves an enormous amount of time in the remaining battles.

Then we warp to pipe 4 from Fungitown and head to the south part of Teehee Valley. We teleport past the rock blocking the entrance, another rock in the first room, and a wall to access the place where Popple and Birdo capture Luigi much later in the game. Defeating Popple and Birdo triggers endgame. To get back to Beanbean castle, we teleport past the rock at the Teehee entrance again to leave, and also teleport past an invisible wall near the castle entrance.

To get to Bowser's Castle we take pipe 3 to pipe 1 and walk through Stardust Fields. We perform Bowser's Castle Skip which skips straight to the final boss via the escape sequence. After defeating Cackletta we take the escape sequence normally to the final cutscene.

Mush Badge

One of the biggest timesaves over Mugg's TAS is the use of the Mush Badge. This badge gives you an attack bonus based on how many mushrooms (including super, ultra, and max mushrooms) you have. This bonus is added on to the base damage. On the US version, each Mushroom and Super Mushroom increases the bonus by 51/256 points (the total is rounded down to an integer). Ultra and Max Mushrooms increase damage a little more but aren't used in this run. Also, the bonus damage is less on the Japanese version. This is one reason the US version is faster.

The Mush Badge is especially broken when combined with Chopper Bros. This move is supposed to do many hits that do a small amount of damage, quickly decaying to 1 damage per hit. But the Mush Badge bonus is added to every hit, so the total damage is effectively multiplied by the Mush bonus. TAS can do 26 or 27 hits per attack depending on the enemy using autofire.

By the Popple and Birdo fight, we have just enough mushrooms to do 9 damage per hit, which allows us to kill Birdo in 2 turns. By the final battle, we are doing 16 damage per hit, which means we can kill Bowletta with 2 uses of Chopper Bros and Cackletta's heart with 3.

Battle by battle comments


The fight always ends after 5 hits no matter how much damage we do. The only way we can speed up the fight is by dodging every counterattack on the first possible frame and avoiding the tutorials.

Goomba #1 (Tutorial)

Lucky hits are disabled here. We can again speed up the fight by hitting every counterattack on the first possible frame.

Goomba #2 (Tutorial)

Before entering the battle we manipulated RNG to get a +3 on POW as soon as possible in the roulette level up. We will be only upgrading POW and Stache throughout this run since we will be extremely underleveled and we need to do as much damage to the bosses as we can.


Fawful’s helmet has 18 HP, Fawful himself has 12 HP. It’s faster for Fawful to attack Mario as much as possible since he is a few pixels closer to Fawful than Luigi, but we couldn’t manipulate that to occur every time without losing time overall.

Fighter Fly #1

In order to gain the 100 coins back in order to progress further it’s mandatory that we enter some enemy encounters. This is the first of 3 battles that we do in preparation for Tolstar. In this fight we want to do 3 splash bros before we run out of BP. The reason why we need to do 3 and not 2 is because, in order to get the Advanced version of Splash Bros, which is needed for this route, we have to perform 20 successful splash bros attacks. Since we avoid all random encounters except for these 3, we only fight bosses after these, and without doing them in those encounters we won’t have any other battles to do them in. You might have noticed that we wasted frames before entering the battle. This is to start with a good RNG seed which allows for 3 mushrooms to be dropped at the end of the battle, which is roughly a 1 in 400 odds scenario. Mushroom routing is a very important part of this TAS and we’ll explain why later.

Fighter Fly (Tutorial)

This tutorial conveniently refills our HP and BP after finishing it and lets us keep our total uses of Splash Bros. We said earlier that we need to use Splash Bros. 20 times. On the Japanese version, our total uses for Splash Bros. is reset to 0, meaning that we would have to do three battles after the tutorial rather than one before and two after. This is another reason why English is faster. The Splash Bros. in this tutorial counts towards our total uses, so that brings our total to 4 uses.

Fighter Fly #2

Fortunately for this battle we don’t have to waste much time at all to get the RNG seed that we need. This time we don’t get the same 3 mushroom drop as in the previous battle, instead we manipulated a lucky hit on this cannon to kill it in a single jump as well as a 2 mushroom drop at the end. We only do 1 splash bros in this fight to kill the last cannon because doing more than 1 loses time.

Fighter Fly #3

We had to waste a significant amount of frames in order to get a good RNG seed for this last battle. Like in the first fight, we manipulate another 3 mushroom drop after the battle is over, as well as a pretty fast +3 POW upgrade. We take damage on every fly counterattack because doing that saves 1 frame each time which is very important for the fight against Tolstar because we only had 1 frame to spare to get the optimal RNG.


We had to consume a syrup before the battle begins to refill Mario’s BP so that he could do splash bros attacks against Tolstar. This favorably wasted the right amount of frames so that we could manipulate a very rare event to occur inside the battle; normally, when fighting Tolstar, there is a good chance every time she gets to counterattack that she spawns an additional textbox that indicates that the spikeball will jump higher. This loses many frames throughout the battle, but thankfully, the amount of textboxes that she spawns is random, thus we manipulated a battle with no additional textboxes, and that’s how we made up for the time spent manipulating RNG for the previous 3 fights.


Now that we are out of Stardust Fields we will only be fighting bosses from now on. The items that they drop will always drop after the battle, meaning we don’t have to manipulate RNG to get mushroom drops anymore. However we still managed to get a good RNG seed for this battle for the pillars and Hoohooros to target Mario more often, which saves a few frames every time.


This is the first bossfight where the POW stat of Mario really starts to matter, because if it’s any lower than 27, we would have to spend an additional turn killing Dragohoho, as well as sit through his attack and both of those lose close to 15 seconds. Second, we manage to get Splash Bros Advanced right at the end of the battle. This is the reason why we needed to do those extra splash bros in the earlier battles. We want to get Advanced before the Queen Bean boss fight so that we can significantly speed up the fight. Lastly, in order to kill Dragohoho in 3 turns, we also have to use Bounce Bros. Throughout this run we try to avoid using it because you unlock Bounce Bros Advanced after only 8 uses. The animation loses time and we don’t need its Advanced version so we try to use it as rarely as possible. In this fight we start giving Luigi stache, because having a higher stache gives a higher discount for when buying items later.

Queen Bean

Normally to defeat this boss you have to take down her 2 arms and then you can use splash bros on her head. However, since we got Splash Bros Advanced, we are able to do damage to the head without taking down her arms because the Advanced version of the attack can damage spiky enemies, which saves a lot of time. POW also matters for this battle; since she has 120 HP, we are barely able to defeat her in 3 turns. As a fun fact, if we are short of Power in RTA speedruns, we deal 39 damage to Queen Bean. This allows Luigi, who deals 1 damage with the hammer, to kill Queen Bean.

Popple & Rookie

If you kill Rookie first, Popple will run away from the battle. Thus, we aim only for Rookie. Luigi intentionally takes damage so that he dies on the last counterattack because we don’t need more level ups from him and they lose time. Getting Rookie to 40 HP or below will trigger a very slow cutscene of him showing his fire attack, but by dealing enough damage to leave him in 41 HP exactly, we skip that, that’s why we intentionally miss the 2nd bounce bros. After this battle POW becomes almost irrelevant, thus we start giving Mario stache as well.


Like we said before, the damage dealt with the Mush Badge increases with the more mushrooms you have. Where the power of the Mush Badge really shines however is when using Chopper Bros. We collected just enough mushrooms to reach 9 mush damage that is applied on every hit, making what is normally a very long battle into a 2 cycle Birdo kill. The reason that this works is because the damage from the Mush Badge is applied after the calculation of the damage has been done, simply adding to the total damage. This means we, no matter what, always do at least 9 damage, because the minimum damage is 1 plus 8 from all the mushrooms that we have. We also manipulated Popple to target and kill Luigi at the end of the battle so that we skip his 4 level ups that he should have gotten, since Luigi’s stats become practically useless from now on.


The first phase of the final boss, Bowletta, has 500 HP. Because her Speed stat is so large, she gets to attack first as soon as the battle begins. Therefore, we manipulated her to do 2 fire laser attacks, because they waste the least time of all the other attacks she can do. As in the previous battle, we use Mush Badge alongside Chopper Bros attacks which allows us to kill Bowletta in 2 cycles. We intentionally fail the jump from Luigi so that RNG doesn’t advance, otherwise we would’ve gotten a slower attack. On the last textbox we wait the right amount of frames to manipulate as many fast attacks for the true final boss of the game: Cackletta.

Cackletta’s Soul

The hands have 80HP each and the head has 200 HP. Her head is the fastest of the 3, so it gets to attack first. In the first phase of the fight, her head can only do a hand spin attack, or an energy ball attack. However she can also choose to power up one of her body parts, and since this skips the head’s turn, we went with that. Since her hands and the heart have the same Speed stat, the game does 2 and then 1 RNG calls to determine who goes first. Even though we get a thunder ball attack, getting it before we do damage to the heart is faster than after. We want to get rid of the head first, since it can only give us slow attacks, then the left hand and lastly, the right hand. The attacks that we do with Luigi throughout the fight are to further manipulate RNG into giving us as many fast attacks as possible. We should also talk about the “phases” of Cackletta. After you reveal the heart, the game starts to do many health checks to determine inbetween what thresholds the heart’s HP is. Every 300 HP dealt, she gets a new attack and her attacks generally get longer. Once the heart has been revealed, Cackletta does 4 attacks. If you defeat her hand in a counterattack, she actually does 8, so we want to defeat the hand by jumping on it. Failing the jump with Mario allows for the head to do an energy ball attack targetted at Luigi. This is crucial, because there is a strange mechanic with Luigi where he can destroy the energy ball in just 2 hammer dodges. This only works for Luigi because Mario has a shorter hammer dodging animation. We then deal damage to her heart with Chopper Bros., dealing about 400 damage. This brings her into the second phase, where she gets a new attack. Note that if you kill any of her body parts, she will revive them at the end of your turn and heal all to full health. Thus, we only aim for the heart and we avoid using knockback bros. Dealing another 400 damage brings her into the third phase, where some of her attacks become significantly longer. Once reaching this phase, it becomes increasingly harder to manipulate fast attacks, but as you’ll see in a bit, we manage to get a really good phase 3. Since we can do the remaining 400 damage in 1 chopper bros, this means that we can completely skip the 4th and final phase of the fight, meaning the fight will end in phase 3 after Cackletta does her final attacks.


NPC Boosts

Whenever you jump into an NPC’s hitbox the game will try to push you out of its hitbox. After being ejected you gain a small speed boost in the direction you were facing which saves a couple of frames.

Ledge boosting

We can use ledges that end in a corner in order to boost Mario or Luigi forward, if you walk off the ledge diagonally and then move towards the corner. The speed that you get from the ledge boost is influenced by !! the angle of movement relative to the angle of the ledge and the distance to the ledge the frame before walking off it.

Instant Switching

If the bros are on the same pixel or the path between the bros is blocked by the corner of a wall, the switching will be finished immediately which saves a few frames per application.


Jump Course Skip

A trigger zone near the exit normally stops the brothers after completing the Spin Jump & High Jump tutorial, but it can be bypassed by positioning the brothers next to it and using Spin Jump. If done correctly, the back brother will stand past the trigger zone. When switching the brothers around the corner, it will cause the front brother to stand past the trigger zone and be able to enter the loading zone to go to the next room.

Tunnel clipping

The game prevents stacking under a ceiling that's too low to fit the stack. However, if Mario is less than 1 pixel under a ledge and Luigi is far enough to the right of Mario and close enough to the ledge, the game will allow them to stack under a ceiling that's too low. Now if they spin jump into the ledge, the game will try to move them to a place where they can fit. If there is a floor above them, they will be clipped up to that floor. This was found by mugg and was applied in Hoohoo Mountain by SolidifyGaming to save a full minute.

Barrel Storage

There is a variable at $2440 and $2430 in IWRAM that keeps track of the action commands for Luigi and Mario respectively. Normally, when you break out of a barrel, without doing Barrel Storage, the game simply sets the third byte in $2440 to FF. But how it does that is pretty interesting; it copies the third byte to the first byte, and then it copies the fourth byte to the third byte. The first byte is the action command of Luigi when he is in front. When you're inside of the barrel, the third byte is usually 00, and when you're not inside the barrel the byte is FF instead. With barrel storage however, you are inside the barrel, but the third byte is set to FF. Now, if you break out of the barrel, like I said, the third byte gets copied to the first byte, meaning the first byte is now also FF, which means Luigi will have the blank action command on his A button.

Sign Glitch

Talking to the sign while in this state has interesting results. If we talk to the sign, the first byte is changed to 00. But again, the game handles this a bit differently; what is actually happening is the first byte is copied to the fourth byte, and then it sets the first byte to 00. A very important note to make is that the first byte is copied to the fourth byte 1 frame before the first byte is set to 00, which means even though the first byte is 00, the fourth byte is still FF. Because the fourth byte is FF, it will keep the action command of talking to the sign even if you get away from it. Now let's go back to the variable at $2430: the first byte there is set to 02, which means Mario should be talking to a sign, but he is in the back so you still have the normal Jump. However, after you switch, this byte is responsible for being able to change Luigi's action commands past the intended limit. We use Spin Jump on Mario but then immediately hop off. This gets us Spin Jump but on Luigi's B button after we switch. Using Spin Jump on Luigi sets the equivalent of $2430 of Luigi, but for Mario (at $2418). It sets it to $8204, which for Mario is apparently a value that works to make his action command id go up. We get ID 21 after we land, which is the "Emerge" action command. Finally, we use emerge, we switch twice and we can now leave the room. All of this was to get ID 3 for Mario's B button after leaving this room.

Mini Mario Glitch

Luigi can use Hammer on Mario to flatten him. Small Mario walking through a tunnel will cause the brothers to get separated. When Luigi then approaches Mario, Mario will walk behind Luigi and Luigi will turn Mario back to big. However, if Luigi approaches Mario in a way that Mario does not need to walk behind Luigi at all, Luigi will forget to turn Mario back to big. This can be done by having Luigi jump twice, then aim at Mario and land precisely in front of him. In other words, small Mario is exactly behind Luigi at the time they are united again. Using actions such as flattening one of the bros, using Spin Jump, etc., determines the game to "fix" the command it's supposed to show; for example, the action command that we got for Mario earlier, an X, gets changed to "Hand" instead after Luigi flattens him. The byte at $2419 is set to 0B when in Mini Mario mode and remains unchanged when performing Mini Mario Glitch (just like Sign Glitch and the spin jump on Luigi), which is why we can get to ID 6. Now, if we use this action command, which is a Hammer that is fake, the game tries to fix it and makes it show the "real" action command we should have, a High Jump.

Luigi Hat Teleportation

Teleporting was discovered in order to go past walls both horizontally and vertically, since Barrel Clipping does not work on the English version the same way it does on the Japanese version. The first requirement for teleporting is having glitched movement; when you walk normally, both bros walk at 512 speed like we’ve said before. When you hammer Luigi, both bros walk at halved speed instead. However, if Mario high jumps on Luigi while he is underground, Mario will walk at normal speed again. This is done by using a glitched hammer on Luigi, so that you can change Mario’s action command to high jump while Luigi is underground.

At this point Mario is moving faster than Luigi, so they eventually catch up to each other and reach the same position on a certain frame. On the next frame, Mario tries to follow Luigi as usual, but since they are in the same position, he ends up teleporting somewhere. To understand where Mario teleports to, we have to explain the "follow path".

The follow path is a list of the most recent 256 x,y positions the front bro has been. On a frame of normal movement, each bro advances 8 indices on the follow path. The back bro goes to the position 8 indices ahead in the list, then the front bro moves 512 units, divides this movement into 8 64-unit intervals, and writes the endpoints of these intervals to the follow path. They stay 64 indices, or 8 frames apart, and the whole list is looped every 32 frames. When Luigi is underground, they walk at half speed so they only advance 4 indices per frame.

The follow path is "reset" when you enter a loading zone, switch places, or use a bros move like dunking Luigi, spin jump, and high jump. This means the front bro is moved to index 64, back bro to index 0, and indices 1-64 are filled with 64 positions between them. Indices 65-256 are untouched, so you can store positions later in the follow path by resetting it.

When you have glitched movement, Luigi advances by 4 indices while Mario advances by 8. The follow path is reset when doing the high jump to activate glitched movement. After 16 frames of movement, they both reach index 128. The next frame of walking, Mario goes to the position at index 136, which can be stored from earlier. Furthermore if Luigi jumps when you have glitched movement, he'll advance by 8 indices per frame like normal. So if you move for n frames in the air, they will coincide at entry 128+8n instead, and warp to entry 136+8n. In this way, we can warp to any entry (that's a multiple of 8) from 129 to 256. Entries 1-128 will always be overwritten before the teleport so are useless to teleport to.

Mario doesn't warp to the exact position in the follow path: he only warps to the closest position that matches the lower 2 bytes of the follow path position. In other words he can't move more than 0x8000 units in any direction. Also, teleports will sometimes be blocked by walls - Mario will end up teleporting to the wall's position instead of going through it. However if the lower 2 bytes of the follow path position is exactly 0x8000 away, Mario's position will decrease and this "exact warp" always goes through walls.

I'll give a summary of all the teleports we perform in this run. In the maze-like room in NW Beanbean, we switch to set entry 256 to a position that will correspond to just past the blocky stairs in the middle of the next room. Then we set entry 248 to a position near the black rocks. While walking to the loading zone, we switch a few times to avoid overwriting these positions. After getting glitched movement, we set 136 to a position that is 0x10000 away from just past the rocks. Then we jump to warp to entry 248, then warp to the entry 136 we just set up. Next we jump to warp to the 256 we set up before, now past the stairs. Then we can warp to 136 and then 256 again, this time 0x10000 further right, which is right under a mushroom block. We hit it with a high jump which also allows us to switch Luigi's command to emerge, to end the glitched movement.

In the long room in Teehee, we set 256 to a position near the loading zone to the second maze room, and then switch twice to preserve it. In the next room we switch twice again to set 248 to a particular position past the first maze wall. Then we set up glitched movement while moving up enough to warp to this 248 position but 0x10000 lower Y. Next we warp to 136 followed by the 256 we set up before, and enter the loading zone. We need to have Luigi enter the loading zone since he's in front. This means Mario actually teleports a little bit past the loading zone, which can cause Mario to get stuck. If Mario is stuck when Luigi enters the loading zone, there's about a second when Mario can't move after entering the next room, so we avoid this. Before getting glitched movement in the next room, we are in a strange state where if Luigi jumps, the follow path is reset every frame. This means we can move far enough to warp to 256 again in this room, followed by a 136 warp past a rock.

Just outside the Trunkle room, we set 256 to a particular position. After getting glitched movement, we set 136 Y to 0x10000 more than the Y of the bottom of the elevator, then warp to 256. Then we warp to 136. Mario actually gets sent high into the air after the first teleport, so Luigi emerges while Mario is falling.

The next teleport chain is by far the longest, consisting of 26 teleports in a row. First we set 256 to a position that will be near the loading zone past the black rock in Teehee Valley room 1. Then we set 248 to a very particular position past the rock in front of the Teehee entrance. Then we switch a few times before setting up glitched movement in the next room. We first warp to 248 - we set 248 originally for a specific purpose but we can use it before then. We can't warp to 256 though, since that would overwrite the stored 248. Then we warp to 136, followed by 248 again, then 240 and then 136, right into the loading zone on the bridge. Normally you can't be underground on this bridge but there is a region near the loading zone you can warp to that allows you to be underground. In the next room, we are confined to this small region, so we can't move very far before warping to 240. We then warp to 232, 0x10000 further right than the small region on the bridge. The rest of the room is straightforward alternating between 136 and 240. In the final Beanbean room, we set 136 sufficiently far to the right, then warp to 248 but 0x10000 below the rock. Then we warp to 136, now on the right of the rock. Then we do an exact warp to 248, behind the rock, and emerge into the loading zone. By cancelling the emerge animation with the loading zone, Luigi stays underground, but Mario gets stuck.

In the first room of Teehee Valley, we warp to 248, then 240, then to the 256 we set up back in Beanbean. This room is relatively straightforward but squeezing out the maximum possible distance on each of these three teleports to the NW was difficult. Before entering the loading zone we overwrite 240 but not 248, since it is in a good position to get past the wall in the next room. In the next room we set 136 sufficiently high and then warp to the 240 we set at the previous loading zone. We then warp 136, then 240, then 136, which is right next to a Super Mushroom block. We hit it and then do an exact warp to the 248 we set in the previous room, performing "big skip". Then we walk to the loading zone. The final room of this chain is straightforward, we just warp to 256, 136, 256, 136, and then emerge on the platform next to the pipe.

There is a wall blocking the way to Birdo which RTA runs open by getting Firehand on Mario. It's slightly faster to just teleport past it. We set 256 as low as possible with doing any extra follow path resetting, and then warp to it, getting past the wall. Then we warp to 136 and emerge on the stairs.

After Birdo, we set 136 while changing action commands. It turned out to be fastest to not go out of our way to set this value. We simply warp to 136 and then emerge to lose height.

In Castle Town, we set 256 to a position that will correspond to just next to the loading zone to the castle. Then we set 248 to position just far enough left so that when we teleport to it, Luigi doesn't get stuck inside a wall. We then do an exact warp to 256, in the middle of the bridge to the castle, then warp to 136 and then 256. Then we emerge and avoid Mario getting stuck before entering the loading zone.



Potential Improvements

  • 3 frames after Popple & Rookie 1 (Sub optimal switch; affects RNG, so we didn't change this).
  • ~5 frames after the first gate in Chucklehuck Woods from instant reuniting.
  • It was discovered extremely late in the TAS that you can, apparently, hit Cackletta 27 times instead of 26 times in one turn with Chopper Bros.; this makes it just enough so that we can actually skip a couple mushrooms, potentially saving up to a few seconds. We were practically already done with the TAS however and saving time anywhere before any fight would throw off the entire RNG, so we did not implement this time save. For most bosses, you can only hit 26 times, so we assumed the same for Cackletta.
  • Getting better RNG can save up to 1000 frames if everything was perfect. Alas, we can only dream.

Memory: Claiming for judgment

Similar submissions (by title and categories where applicable):