Potato
He/Him
Editor, Player (113)
Joined: 3/7/2020
Posts: 51
Location: Mars
MUGG wrote:
To answer your question, in order to be able to buy #1 Trousers from the Bean clothing shop, you have to defeat Mom Piranha or Trunkle or Popple & Birdo, or collect all 4 star bean pieces.
Thanks, I also figured it out a few hours ago that you needed to defeat Mom Pirahna in order to unlock the #1 Trousers, but yours is way more helpful. We planned to do Mom Pirahna, Birdo & Trunkle early on anyway. This is how the route looks so far for All Bosses: 1. Tolstar 2. Hoohooros 3. Dragohoho 4. Queen Bean 5. Popple & Rookie (I) 6. Mom Pirahna 7. Birdo 8. Trunkle 9. Popple (Solo) 10. Wiggler 11. Chuckolator 12. Cackletta 13. Popple & Rookie (II) 14. Hermie III 15. Chucklissa And now we're trying to figure out the optimal boss order for Bowser's Castle. We have 2 ways to look at it; the first would be to play through the castle as "normal" (meaning, no Castle Skip to reach Bowletta and doing Iggy first and Fawful last). The first thought we had was to do them in this order: *Note: Since we're going to do Bowletta and Cackletta last no matter what they are not going to be in the list below. - Iggy - Roy (using teleports to reach him early) - Ludwig - Lemmy - Morton - Wendy - Larry - Fawful The other way we could do it is to just do them in the intended order. This would mean, Iggy, Morton, Lemmy, Ludwig, Roy, Wendy. Larry, Fawful, but I think that may be slower than the previous order. Finally, there is also the possibility to do the bosses in the reversed order; this would imply doing Castle Skip to reach Fawful and fight him first, then work your way backwards to Iggy and then perform Castle Skip again to fight Bowletta. We're not sure if you can defeat the Koopalings after you defeat Bowletta and Cackletta by skipping Prince Peasly's cutscene with a teleport. That will have to be tested in the near future.
"Questioning his life decisions for 18 years straight."MLSS Any% TAS out! (link)MLSS All Bosses TAS out! (link)MLSS Glitchless TAS out! (link)
Potato
He/Him
Editor, Player (113)
Joined: 3/7/2020
Posts: 51
Location: Mars
MUGG wrote:
You can manipulate RNG without losing time or with losing only very little time, by optimizing the camera (having entities be active or inactive at different frame counts, thus causing a different advancement of RNG), but it is very time-consuming and tedious.
How do you exactly know when entities go offscreen? This information would be very helpful for future TASes.
"Questioning his life decisions for 18 years straight."MLSS Any% TAS out! (link)MLSS All Bosses TAS out! (link)MLSS Glitchless TAS out! (link)
Editor, Expert player (2313)
Joined: 5/15/2007
Posts: 3855
Location: Germany
How do you exactly know when entities go offscreen? This information would be very helpful for future TASes.
It is probably possible to visualize it by luascript. For my own projects I've only relied on trial and error. RNG values aren't advancing if the entity has gone offscreen too far (= it has gone inactive).
Editor, Expert player (2313)
Joined: 5/15/2007
Posts: 3855
Location: Germany
For future reference, a list of battle backgrounds by ID. When entering battle, $24BA (IWRAM) will tell which background to use and $4204 (IWRAM) and $654E (IWRAM) will be set to the same value subsequently. You can poke a different value to $24BA to get a different background. Also see here. 0 - Test (unused) 1 - Peach Castle 2 - On Koopa Cruiser 3 - Stardust Fields 4 - Hoohoo Mountain 5 - Hoohoo Mountain Top 6 - Beanbean Outskirts cave 7 - Inside Koopa Cruiser 8 - Beanbean Outskirts (same as 11) 9 - Beanbean Outskirts South 10 - Beanbean Beach 11 - Beanbean Outskirts (same as 8) 12 - Beanbean Castle Sewers 13 - Beanbean International Airport 14 - Chateau de Chucklehuck 15 - Chucklehuck Woods 16 - Chucklehuck Woods South (Towards Snail Game) 17 - Chuckolator room 18 - Gwarhar Lagoons 19 - Seabed 20 - Woohoo Hooniversity 21 - Woohoo Hooniversity Library 22 - Woohoo Hooniversity Green Floor 23 - Woohoo Hooniversity Cackletta room 24 - Woohoo Hooniversity Purple Floor with stars (unused) 25 - Woohoo Hooniversity Basement 26 - Beanbean Castle 27 - Teehee Valley Underground 28 - Guffawha Ruins 29 - Teehee Valley 30 - Oho Oasis Fire Temple 31 - Oho Oasis Thunder Temple 32 - Joke's End Inside 33 - Joke's End Outside 34 - Woohoo Hooniversity Barrel Section 35 - Bowser's Castle 36 - Bowser's Castle Lava 37 - vs. Final Cackletta 38 - vs. Final Fawful 39 - vs. Bowletta 40 - (crash) 41 ...
Potato
He/Him
Editor, Player (113)
Joined: 3/7/2020
Posts: 51
Location: Mars
MUGG wrote:
For future reference, a list of battle backgrounds by ID. When entering battle, $24BA (IWRAM) will tell which background to use and $4204 (IWRAM) and $654E (IWRAM) will be set to the same value subsequently.
How would this help though?
"Questioning his life decisions for 18 years straight."MLSS Any% TAS out! (link)MLSS All Bosses TAS out! (link)MLSS Glitchless TAS out! (link)
Editor, Expert player (2313)
Joined: 5/15/2007
Posts: 3855
Location: Germany
This is for documentation. Useful if anyone or I wants to make a video fighting enemies in unusual places. I'm really only trying to improve upon that atlas script you gave me, though.
Potato
He/Him
Editor, Player (113)
Joined: 3/7/2020
Posts: 51
Location: Mars
Okay, so I've been trying to do teleports in different places on English just to see if we're able to skip cutscenes or reach loading zones that were not doable without the usage of teleports. Here are my results: • With 2 precise teleports you can actually reach the Popple (Solo) fight in Chucklehuckle Woods early; one to get past the big koopa blocking the door to the cave section, and one to get past the NPC to skip having to do the minigame for 500 coins to reach Popple's room. You then need to do another teleport to get past the NPC on your way back as well. With some careful Follow Path positioning I was able to get all 3 teleports. This enables us to do Popple early if we want to for All Bosses, and we thought about it carefully, since he gives lots of coins and EXP. We'll see if we want to forgo doing him as early as possible over doing him later when you have more mush damage. • Also in the Chucklehuckle Woods, you can do a 136 warp to go past Chuckroot without getting into his cutscene at all. Even though we are forced to switch more often since 136 gets overwritten very quickly, those switches obviously pay off if we can reach Chuckolator early. RTA used to do something similar on the Japanese version; they'd warp into a wall and then jumped with Luigi high in the air to make Mario clip past Chuckroot, and then they emerged with Luigi to enter the loading zone. What we do for TAS is obviously faster than what RTA does. We have been trying to come up with a way to 1 cycle Chuckolator, without letting him do any attacks using #1 Trousers, but that involves getting Mario to 59 speed, and that requires a LOT of level ups. We are going to further investigate if it's worth doing. • The door in University that gets us to Cackletta can be barely teleported into. It seems like at Z 57344 there is actually another loading zone for this door that we can enter by letting the walls push us into it. But how do you even get to Z 57344? Well, you teleport into a wall, then use emerge. While emerging, the walls will launch Luigi in the air 57344 units upwards in a single frame. This skips having to hit the last switch to open the door which saves a lot of time. • If you don't defeat Chuckolator, there is a door inside Beanbean Castle that doesn't unlock unless you defeat him and play the cutscene of resurrecting Queen Bean. But at this point I wouldn't have talked about it if it wasn't possible to skip it. So, yes, you can skip it, but not in the same way the University door was skipped. You will need to do a 136 warp instead of a 256 one by teleporting from the ledge where the door is standing on. If your Follow Path Y is perfectly set up to be the exact Y coordinate of the loading zone behind the door, and if your Follow Path X is also between certain coordinates, you can barely manage to get inside. This means we don't have to do Chuckolator early, but we will still probably do it, mainly to skip having to teleport past the guards to get to Cackletta and to teleport past the rocks that block us from reaching the East side of Beanbean Town, which are also unlocked after you defeat Chuckolator. I will test some more areas of the game, probably Joke's End and Bowser's Castle, to see how much more can be skipped.
"Questioning his life decisions for 18 years straight."MLSS Any% TAS out! (link)MLSS All Bosses TAS out! (link)MLSS Glitchless TAS out! (link)
Editor, Expert player (2313)
Joined: 5/15/2007
Posts: 3855
Location: Germany
I'm sorry I just disappeared for half a year without saying anything. Surely you are disappointed that I didn't help you out with your WIPs or with the overlay. I'm too burned out. There are countless projects that I had left over the years, abandoned, that I really wished I could finish but I never could. It pains me. Somehow after all these years of TASing and glitch hunting and documenting, it felt like I had to do a hard break. At this point I lost all fun and it felt like the "reward" for putting work in is not enough, or not worth my life time anymore. I have certainly hit a stage where I can say I have done what I could. And I have done a lot for this community.
Post subject: All Bosses - First preview
Potato
He/Him
Editor, Player (113)
Joined: 3/7/2020
Posts: 51
Location: Mars
"Questioning his life decisions for 18 years straight."MLSS Any% TAS out! (link)MLSS All Bosses TAS out! (link)MLSS Glitchless TAS out! (link)
Potato
He/Him
Editor, Player (113)
Joined: 3/7/2020
Posts: 51
Location: Mars
Thought I'd leave them here too. Link to video Link to video
"Questioning his life decisions for 18 years straight."MLSS Any% TAS out! (link)MLSS All Bosses TAS out! (link)MLSS Glitchless TAS out! (link)
Post subject: PAL version
Potato
He/Him
Editor, Player (113)
Joined: 3/7/2020
Posts: 51
Location: Mars
So a few weeks ago Sjorec found out that the PAL version doesn't lag as much when using Void Barrel, and most importantly (for RTA at least) it also lets you change Mario's action command so you can hammer out of the Void Barrel. It's estimated to save about 10 seconds in Any% for RTA, and perhaps it could be slightly faster than the English version for TAS as well, but I'm wondering if there's anything else that's different in the PAL version. Link to video
"Questioning his life decisions for 18 years straight."MLSS Any% TAS out! (link)MLSS All Bosses TAS out! (link)MLSS Glitchless TAS out! (link)
Post subject: All Bosses TAS reveal
Potato
He/Him
Editor, Player (113)
Joined: 3/7/2020
Posts: 51
Location: Mars
I am proud to present to you my newest TAS of this game: the All Bosses TAS. Reveal will be once again on my YouTube channel and this time I will try my best to also release the commentary for it. Don't know the date though.
"Questioning his life decisions for 18 years straight."MLSS Any% TAS out! (link)MLSS All Bosses TAS out! (link)MLSS Glitchless TAS out! (link)
Post subject: All Bosses TAS
Potato
He/Him
Editor, Player (113)
Joined: 3/7/2020
Posts: 51
Location: Mars
"Questioning his life decisions for 18 years straight."MLSS Any% TAS out! (link)MLSS All Bosses TAS out! (link)MLSS Glitchless TAS out! (link)
Potato
He/Him
Editor, Player (113)
Joined: 3/7/2020
Posts: 51
Location: Mars
Glitchless TAS will be premiered today at 1:30PM EST on my YouTube channel. Link to video
"Questioning his life decisions for 18 years straight."MLSS Any% TAS out! (link)MLSS All Bosses TAS out! (link)MLSS Glitchless TAS out! (link)
Potato
He/Him
Editor, Player (113)
Joined: 3/7/2020
Posts: 51
Location: Mars
So, it was just a normal day yesterday when I suddenly got the idea to try and mess around in Peach escort room 4, the infamous room where Mugg got the credits warp back in 2014 that was deemed impossible to replicate outside of the VBA emulator. But back in 2022, RETIRE figured out that it's possible to do it on mGBA, although it requires memory editing to change the byte at $2336 in IWRAM to 10 in order for the game to load the credits sequence. Up until now, based on the attempts that were made to pull off the credits warp legit, the result always ended up being one of the scripts being played, and the script loaded stayed mostly consistent every time it was loaded, so it was pretty much assumed that this game only had Arbitrary Script Execution to work with. Below is a list with all the scripts that could be played by changing the byte at $2336.
Byte valueOutcome
05Mario turns into his form when he ingests water
07Warp to room ??? (room ID: 128)
08Warp to room ??? (room ID: 128)
09Start minecart minigame
0AStar amimation from when entering a battle (softlocks the game)
0BOpen suitcase menu
0COpen save menu
0DOpen map (area selection screen)
0EOpen shop selling items menu
0FTrigger death warp (respawn screen)
10Trigger credits sequence
11Warp to test room (room ID: 0, unused)
12+No effect, game simply softlocks
The byte at $2416 is responsible if the game crashes when Luigi breaks out or hops off a barrel. Throughout the game, this byte is set to 0 most of the time but a few rooms, like room 4 of Peach escort or Chuckroot's room, change it to 22 instead if Luigi is in a barrel which triggers the crash to happen. However, when Luigi breaks out of the barrel (or when Mario hops off the barrel), as soon as both bros are on the ground, the game always sets the byte at $2336 to 0A which corresponds to the star animation being played. This caused the progress to stop dead in its tracks, since we realised this value is most likely not useful for us if we want to make credits warp a reality in real time. It was already established for years that the bros' position in the room and what action command Mario had in the back could lead to different scripts being played, but yesterday I decided that I wanted to try to trigger as many of these scripts as I could and make input files for them in order to maybe analyze them and potentially figure out why they happen when they happen. I was able to trigger some of these events, as well as some other events that couldn't be achieved by editing $2336. But probably the most interesting result that I got during my testing session was this: This is the shop selling menu, a script that is by no means a rare script to trigger, in fact I managed to trigger it dozens of times before. However, this instance of the script was special because it had this glitched badge at the bottom (which I was able to actually sell and not softlock the game), something which never appeared in any of my other instances of triggering the shop menu. I am not sure why this badge was generated but my assumption is that it had to have read some garbage parameters from somewhere when it was loading the items, which got my hopes up a bit that actual Arbitrary Code Execution might be possible to do in this game. I have yet to figure out how it happened but this might a good step in the path to discovering ACE.
"Questioning his life decisions for 18 years straight."MLSS Any% TAS out! (link)MLSS All Bosses TAS out! (link)MLSS Glitchless TAS out! (link)
Potato
He/Him
Editor, Player (113)
Joined: 3/7/2020
Posts: 51
Location: Mars
This is an update to the post I made yesterday, because we have made a lot of progress during the last 24 hours.
when Luigi breaks out of the barrel (or when Mario hops off the barrel), as soon as both bros are on the ground, the game always sets the byte at $2336 to 0A which corresponds to the star animation being played. This caused the progress to stop dead in its tracks, since we realized this value is most likely not useful for us if we want to make credits warp a reality in real time.
In the previous post I mentioned that trying to modify $2336 in IWRAM was established to not actually be useful for pulling it off legit, however we discovered that $2336 is not the only value that handles what scripts are being run or what events are being triggered. The memory address $2337 handles which minigame you are currently into; when you are not inside of a minigame, the game simply sets this byte to FF, and when you are inside the game changes this byte to one of these values, depending on which minigame you are in.
Byte valueMinigame entered
00Minecart minigame (Hoohoo Mountain)
01Geno minigame (Little Fungitown)
02Border jump (Stardust Fields)
03Barrel minigame (Cruise Ship)
04Winkle minigame (Chucklehuck Woods)
05+All entities disappear, game softlocks
This value is also not very useful for us since it stays as FF while doing the crash, but it was something to work with. What is useful to us, however, is that there is another address that changes what script you trigger, located at $2339. This byte is responsible for the shop menu and which one you open (the menu for buying items, the menu for selling items, and the menu for buying clothing gear & badges). It is usually set to 02 for the EU version and 00 for the US version, and after you talk to a shop NPC the game sets it to one of these values, depending on which shop you enter and if you want to buy/sell.
Byte valueShop menu entered
01Item shop (selling menu)
03Item shop (buying menu)
07Badge shop (Beanbean Town)
0FBadge shop (Little Fungitown)
One reason why this byte is useful for us is that we can actually enter all of these menus from room 4 in Teehee Valley, but the main reason that makes it especially useful is because of this line inside of the game's code, which looks like this after being simplified:
03002339 = 03002339 & 0xee;
The game takes the value at $2339 and ands it with 0xEE, and this process is looped however many times you close out of a script. Then, the game runs this code with the result:
addr_02339 = (addr_0220C + 0x12d);
  if ((addr_02339 & 1) != 0) {
    FUN_08027740(addr_0220C);
    FUN_080254b6();
  }
  if ((addr_02339 & 0x10) != 0) {
    FUN_08028160(addr_0220C);
    FUN_080254b6();
  }
  if ((addr_02339 & 0x20) != 0) {
    FUN_08028f08(addr_0220C);
    FUN_080254b6();
  }
The first check is for the shop menu script, whether or not it's the script that is active. After this check is done it sets bit 0 if it is active, then it ands it with 0xEE once you close out of the shop and then bit 0 is removed. The second check is for whether or not this script is active, and if it is, it sets bit 4. The third check is for whether or not the script for the credits sequence is active. If it is, it sets bit 5. Past 0x20, the majority of values will yield us a credits warp, and since bit 0 is always removed no matter what script you close, this means that the conditions for a credits warp to happen would be to set any value that has bit 5 set but not bit 4. So now, all we have left to do is figure out which process is writing to here.
"Questioning his life decisions for 18 years straight."MLSS Any% TAS out! (link)MLSS All Bosses TAS out! (link)MLSS Glitchless TAS out! (link)
Potato
He/Him
Editor, Player (113)
Joined: 3/7/2020
Posts: 51
Location: Mars
This document contains all the useful information that we have found so far.
"Questioning his life decisions for 18 years straight."MLSS Any% TAS out! (link)MLSS All Bosses TAS out! (link)MLSS Glitchless TAS out! (link)