Submission #8643: NEVERDOORS's GC Luigi's Mansion "Hidden Mansion, 100%" in 56:35.57

(Link to video)
Nintendo GameCube
Hidden Mansion, 100%
Dolphin 5.0 Lua Core
203734 (Cycle Count 1650237762894)
60
291937
! Sram
Submitted by NEVERDOORS on 10/1/2023 12:15:27 AM
Submission Comments

To sync the run:

This TAS was created using Dolphin 5.0 Lua Core, a custom 5.0-based build that supports some Lua scripting functionality. This movie should also sync on the standard 5.0 build.
Settings:
  • OpenGL backend
  • Enable Dual Core DISABLED
  • Enable Idle Skipping ENABLED
  • JIT Recompiler
  • DSP HLE emulation
.iso MD5 checksum: 83839f063e42f04147157382dcb019b2 (Luigi's Mansion JP)

SRAM Setup:

Download the verification movie here. Make sure you have a fresh JP memory card file for Slot A.
For whatever reason, possibly due to an accident on my part, this TAS will only sync if the system audio is set to MONO. Changing this setting in-game is the very first thing the verification movie does, as Stereo should be the default option upon opening the game for the first time.

Objectives:

  • ‘100%’ Completion. This is defined as:
    • Collecting all 50 boos
    • Collecting all 23 Portrait Ghosts
    • Achieving ‘A’ Rank at the end of the game (collecting at least 100,000,000 G)
  • Complete all objectives and finish the game as fast as possible
  • Starts from SRAM (Hidden Mansion mode)
  • Takes damage to save time (win)
  • have fun and be swag :D

Overview:

Well, here it is! The number one most highly suggested youtube search from ‘luigis mansion tas’, and first of its kind. To begin, let me explain why this TAS starts from SRAM:
“We start from SRAM in order to access the 'Hidden Mansion' (rather than 'The Mansion', or the Normal Mansion as it's called), which is only accessible when the game has been completed once. This skips several mandatory cutscenes only present on the first playthrough, as well as having to visit the Training Room for a tutorial on using the vacuum. Otherwise, the only thing the Hidden mansions changes on NTSC releases of LM is simply the strength of the vacuum (you can drain ghosts of 1 health every frame rather than every other frame). Everything else is identical to the Normal Mansion. Only the PAL release Hidden Mansion changes anything about the mansion itself, to the point of it being considered an entirely separate mode/challenge from Normal Mansion. For this reason, the Hidden Mansion is considered the standard mode for all NTSC speedruns of the game.”
This run also plays on the Japanese version of the game. The complete list of version differences is very small, and the only relevant differences for this run are text speed: overall, the JP version has faster text than English.
100%!!! Wow!!!! So lets talk about what this category is, and what it isn’t.
What it is:
  • All Boos
  • All Portrait Ghosts
  • A Rank (final money count greater than or equal to 100,000,000 G).
That’s it!
What it isn’t:
  • ALL possible / maximum money (142,390,000 G)
  • All rooms cleared
  • All Keys collected / doors unlocked
  • All toads saved
  • All gold frames for portrait ghosts
Most of the later are requirements for max%, not 100%. Agree with it or not, these are the only 3 100% requirements for RTA runs, and I didn’t see any compelling reason to incorporate additional requirements for the TAS. The money requirement makes the most sense to me, as getting any amount over the minimum required 100,000,000 G for A rank changes nothing else about the game or ending. In fact, this A rank requirement opens up what is really the central question informing the entire route: What is the fastest way to collect 100 million G? As you can imagine, a great routing effort was required before breaking ground on the TAS itself, and the ‘money route’ did indeed take a lot of time and testing to get into a serviceable state that would allow me to start creation of the movie proper. This run also takes advantage of out of bounds clips and movement in order to skip watching some cutscenes and collecting some keys, while still finding ways to collect all of the requisite Boos and Portrait Ghosts.

Techniques

Vacuum Cancel / Flashlight Skip
Two names for different applications of what is essentially the same technique: skipping the short animation that plays when you bring out the vacuum in a lit room or the flashlight in a dark room. Performed by soft-pressing L on one frame, and hard-pressing L on the frame immediately after. This ends the animation and allows Luigi to start moving and/or using the vacuum instantly instead of being locked in place waiting for it to finish. This is useful for using vacuum instantly in lit rooms, and for skipping the animation of Luigi pulling out his flashlight after opening a door going from a lit room to a dark room. It also makes Element Duping possible.
Half-Cancel
The same as Vacuum Canceling, with one key difference. Instead of soft-pressing L, you soft-press R before hard-pressing L on the next frame. This has the same effect, and takes the same amount of time, but instead of shooting a ball of element (and thus wasting a full bar) it only uses 1 frame of normal element spray. This is greatly useful for conserving element while still being able to vacuum cancel as much as we need to.
R-Pumping
By holding down both triggers while using the vacuum, you can release and re-press R to quickly switch to element for a frame before resuming vacuuming, without having to go through the whole ‘pulling out the vacuum’ animation again and also retaining the same angle. This is useful for keeping Boos in place while draining them, as they are ‘stunned’ for about 20 frames when hit with the initial pull of the vacuum, which you can continually hit them with by repeatedly R-Pumping. Each R-Pump wastes 1 frame of optimal Boo draining, so we try to use as few as possible. Boos can only be 're-stunned' a maximum of 14 times using optimal R-Pumps, after which we lose control of them completely until they leave the room. This means that we can count on draining ~150 health at most from R-Pumping alone.
Duping
This is a central component to the money route for this run. Touching some money to Luigi’s body and vacuum hitboxes on the same frame allows us to collect that money twice, thus duplicating it. There are two ways you can achieve this: ‘element duping’ and ‘air duping’. Element duping takes advantage of the fact that you can get an active vacuum hitbox between Luigi’s legs (and thus inside of his body hitbox) for a couple frames by doing a slightly delayed vacuum cancel, but only works in lit rooms. Air duping can be done anywhere, and takes advantage of the active vacuum hitbox you can get inside of Luigi’s head while doing an R-Pump. Both methods have their situational advantages; element dupes are generally easier and faster to execute, while air dupes are the only way to dupe in dark rooms and let you start/stop the vacuum several times during a single pump, which in a TAS setting means we can more precisely group scattered bunches of pearls together and dupe them all at the same time once they are high enough in the air, which allows for some impressive looking pearl manipulation dupes such as after Nana and Grimmly.
These methods of duping money only work on the pearls (small (50,000G), medium (100,000G), and large (1,000,000G)) that drop from portrait ghosts, and gold bars (100,000G). It notably does not work on gems of any kind. This is significant to the route, mostly because of one specific type of gem; the Gold Diamond, of which there are only two in the game. One , which we skip, can be found by watering the plant in the backyard repeatedly as one progresses through the 4 areas of the game (the route we take through the mansion, doing bosses out of order, breaks this sequence and makes it impossible to get, though it would be slow to do this anyway). The other spawns upon defeating the 50th boo, whichever that happens to be depending on your playthrough. Each Gold Diamond is worth 20 million G, or 20% of the total 100 million that we need to collect by the end of the game. Being able to dupe gems would heavily trivialize the money route, but as it stands we are able to reach 100m with careful pearl dupe management and collecting all of the bills/coins in our path that waste no (or minimal) time to get.
Map Glitch
Map Glitch is performed by doing a precise soft-reset of the game while closing a text box and pressing Y to bring up the map screen. The effect of this is that the map screen is completely disabled until the console is hard-reset. This saves about half a second every time we collect a key, as the game usually forces the map screen to appear and we have to close it manually, but not with Map Glitch active. RTA runners set up this glitch in the training room before actually starting runs, but including that setup in the movie itself would be very slow so we instead set it up just after receiving the Fire Medallion from Mirror Room, where we were going to savewarp (and thus soft-reset) anyway.
Skews
Here is a technical explanation of how exactly skews work: idk.
Here is a general explanation of how to get a skew: sometimes, getting hit at the right place while holding the right angle for the right amount of time makes Luigi tilt either really far forward or backward, again depending on some magic that I know nothing about. We do know that this only seems to work with a small number of damage sources, namely ceiling bats, mice, and the flying fish ghosts that can be found in the courtyard. While in this skewed state, Luigi’s hitbox is both visually and practically distorted (probably in separate ways, though its unclear since there are really no tools currently for visualizing what the real hitboxes in this game look like). What I do know is that Luigi’s Y position in this state is higher than normal, which equates to him being higher off the ground the more severe the skew angle you get is (imagine his height being determined from the heel of his shoes).
Once you have achieved this skewed state, you have to be careful to only change Luigi’s facing angle with the C-Stick, and only use the analogue stick for movement, as angle changing with the analogue stick will cause you to drop your skew. For RTA runners, the way to do this is to switch the control scheme in the pause menu to Sidestep, which achieves this desired kind of movement naturally. For TAS, we are able to remain in Standard control mode by only using the analogue stick to move while we are already using the C-Stick. In fact there are a couple of very precise C-Stick positions that we can hold that don’t actually change Luigi’s angle, but still register as C-Stick movement and allow us to move around in a ‘psuedo-sidestep’ fashion without switching control schemes.
Clips
Getting skews allows us clip through or around certain walls, floors and doors, which proves quite useful throughout this route. Depending on the specific geometry of the room around where we are trying to clip, sometimes we can leverage our distorted position and increased height to simply walk around a wall or door (multiple times while walking along Floor 1.5 after Chauncey, clipping past the Area 3 door to the courtyard). Other times (when we clip into Rec Room from floor 1.5, clipping into Billiards Hall, Wardrobe, and Sitting Room from Floor 2, and into Conservatory from courtyards), we have to use the Gameboy Horror while releasing our skew in order to clip through a wall in the desired way. I don’t really know why exactly, my best guess is that using the GBH right after releasing a skew rapidly adjusts your angle in some way that can put you far enough into the wall to move through it, or at least be pushed to the other side.
Boo spawn position manipulation
Being able to make sure that the Boo for any given room is in a specific, pre-determined place out of the many possible pieces of furniture it could choose from is central to the micro-routing for each room.
The position for each Boo is determined when that room is loaded into memory. This happens as soon as you enter the room of the mansion where the door to that room is, which is sometimes obvious and other times not. For example, when we return to the Parlor for the first time after releasing the Boos into the mansion, the position for the Anteroom boo is set as soon as we enter Parlor. Likewise, the position for the Wardrobe boo is set as soon as we enter Anteroom. Larger ‘rooms’, such as the Area 2 and 3 hallways, are split into multiple sections that are not fully loaded all at once. So for example, the position for the Laundry Room and Fortune-Teller’s Room boos are loaded as soon as you enter the Area 2 hallway from the Foyer, but the Dining Room and Ballroom boo positions are not determined until you move up into the central connecting hallway, and the Conservatory and Billiards Hall boos are not set until you move further still up into the north-most horizontal stretch of hallway. Once a room is loaded into memory and the boo position is determined, it will never change, even if you leave the area. The only way to reset boo positions is to unload the whole mansion, which could mean hard or soft resetting the game, or being taken to egadd’s hut or laboratory for a cutscene before returning to the mansion, like after you defeat an Area Boss. This means that we often need to be sure very far in advance exactly where we want a boo to be located in a given room, and make sure that we manipulate it to load into that piece of furniture the very first time we load that room, even if we won’t be actually going inside of it until many minutes later in the run.
Using the vacuum, using element, and generating dust in different places from walking at different angles all advance the RNG that the game uses to determine boo position, so you will often see me shoot a small whisp of element or take out the vacuum for a frame or two just before opening a door or entering a new hallway area in order to manipulate that.
Suckup Animation Optimization
Significant time was saved throughout the run by optimizing ghost suck-ups. For the most part, draining ghosts of their HP optimally is a relatively simple process: hold away from the directions they are flying in for 10 frames with the C or analogue stick, input a neutral value on both sticks for one frame to reset the amount you are able to drain continuously, and repeat. The optimization comes after their health reaches 0, but before they begin the ‘suck-up’ animation into the vacuum: during this time, the game determines how long the suck-up animation will take to complete. It has been commonly understood that there are two types of animations you can get for every suck-up: a ‘wave’, or a ‘twirl’, with twirls being faster than waves in almost every instance. However, the mechanics behind getting faster than normal suck-up animations of either sort are very complex, and not even I understand completely what the game is actually checking for when making these calculations. In practice, there were several factors that seem to come into play:
  1. Distance between the ghost and the vacuum
  2. Direction the ghost is moving, as well as how fast they are moving
  3. Vacuum suction shape
    • RTA runners of this game, aware of the potential time save from faster suck-up animations, have long been in the practice of flicking the control stick back and forth repeatedly at the end of draining a ghost to help improve their chances of getting a fast animation, which seems to actually help in improving consistency. While it isn’t as simple as ‘more/faster flicks = faster animation’, there is a reason why this works. Again, I don’t really have a technical explanation for this but in my experience; it helps to think of the vacuum suction shape (the shape of the visible air-force between the vacuum and the ghost) as a rope. Before the animation starts, if the shape of the rope makes a really wide arc in any direction, you will likely get a slow animation even if you're physically close to the ghost. However, wiggling the stick in certain ways, all relative to the first two factors of speed/direction and distance mentioned above, allows you ‘pull the rope taut’, and doing this can decrease the distance the ghost needs to travel in order to finish the animation, thus speeding it up significantly. It is important to note that once a ghost actually enters the suck-up animation, the length of it has been completely determined and you can no longer influence it, which means that you are free to move how you’d like before the ghost actually ‘pops’ into the vacuum without worrying about slowing it down.
In a TAS setting, this means that it is advantageous to manipulate ghost flight directions while you’re draining them so that when their health drops to 0, they are as close to you as possible, flying towards your vacuum, and/or completely stuck on a wall/Luigi/a piece of furniture. This manipulation is obvious with some ghosts, but it was applied to every ghost in the run, and saves many seconds throughout the run overall. Some ghosts have very low health and do not spawn by furniture that they are able to get stuck on, so their HP is drained before they can be manipulated in the same way as some other ghosts.
Cutscene skips / overlaps
There any many different cutscenes throughout the run that briefly take control away from Luigi. Sometimes, we can either skip these completely or overlap them with other cutscenes, in order to minimize the total amount of time spent without control.
  • Often, we knock on an object to activate a boo just before a chest spawn cutscene plays after we clear a room. Once activated, the boo has to take some time to move into the center of a room and play its own cutscene before we can drain it, and having some or all of the boo’s spawn happen while we are locked in place watching the chest spawn cutscene is a clear timesave that we take advantage of whenever we can.
  • Collecting a gem just after a chest spawn cutscene starts allows us to override the chest cs completely, saving time overall.
  • In one instance in the Foyer, we approach the Area 2 door (which has its own special unlocking cutscene) and use the Gameboy Horror camera at the same time, which allows us to regain control while the door is unlocking.
  • We often are able to skip the cutscene and egadd call that plays after you collect a boo by sucking up a sheet or tablecloth just after collecting the boo.

Route Summary

Ok honestly there's not much to say about a lot of the route. A lot of it is self explanatory if you're familiar with the game. Here are some light notes; if you have any further specific questions, I may have answered it in my in depth commentary video. If not, I'm happy to answer any specific questions in this thread.
  • Area 1 is standard. We forego grabbing the Area Key after Chauncey in order to utilize the chest to clip out of bounds, and clip back into Rec Room early for the treadmill Key. This gives us immediate access to the main Area 3 hallway through the shortcut door from Area 2, which will be important to the route later on.
  • We continue through Area 2 as usual, up until boo release in Storage Room. Doing this forces us to go to egadd’s hut for a cutscene, after which we are placed back in the Foyer, now locked out of the Area 2 hallway door. We return to Nursery to grab the key, and use a cutscene skip to walk up to the Area 1 rooms for boo collecting while the door unlocks to save some time.
  • Area 1 boo collecting.
  • Area 2 boo collecting. Getting 5 boos unlocks the washroom which gives us the key to fortune tellers room and access to fire element in Mirror Room. While collecting the Mirror Room boo and savewarping, we set up Map Glitch and also collect fire medallion to skip the long egadd cutscene that comes with it.
  • We continue with a standard Area 2 up until Melody, where we take a quick detour to clip into Area 3 Courtyard to grab Mario’s Letter. Because we already have access to Rec Room/Area 3 via the shortcut door we unlocked earlier, we are able to skip going down into the Well for a long cutscene and the other key to Rec Room, and we clip back inside Conservatory to continue with Area 2.
  • The route again diverges majorly from normal after doing Dining Room / Kitchen: instead of heading to Boneyard/Graveyard for the Area 2 boss, we take the shortcut that we unlocked previously into Area 3.
  • Being in Area 3 before fully completing Area 2 causes the boo spawns here to behave incorrectly, and we cannot collect them yet. We make our way through Area 3 as normal, though skipping the Billiards key from Petunia’s washroom. After Astral Hall, we skew clip down into Billiards and take care of Projector Room as well. Our next destination is the Twins Room in the Area 1 hallway, so we savewarp back to Foyer off the Projector Boo while collecting Mario’s Glove to save some travel/cutscene time. We finish up Area 3 and head to Boolossus. Luckily, even without access to (most) Area 3 room boos, we still have the minimum 20 required to enter the Balcony without a hassle.
  • After Boolosus, we make a couple quick detours to grab the Area 3 boos we couldn’t collect previously before going back up to Balcony to trigger blackout. Instead of mirror warping from Safari and walking through Area 1 to get to Grimmly, we clip into Wardrobe from the Area 3 hallway, which is equally as fast and allows us to grab some bills and coins from the A3 hall gold mouse and also be more swag and cool. Our first trip into the basement is standard, though we leave the Cellar boo here for now to set up a double later on.
  • Now that the power is back on and Area 4 is fully available, we go through Boneyard/Graveyard to finally take care of Bogmire, the Area 2 boss. Doing Bogmire after Boolossus has the benefit of warping us to Balcony, completely skipping the Area 3 Key as well as the post-A3 egadd cutscenes, and saving the travel time it would take to manually walk all the way back up to Balcony again, so we can get right into the meat of Area 4.
  • A4 first half goes mostly standard, though unlike most routes we minimize backtracking by getting Boo doubles in both sets of rooms, and not having to go back to Rooftop to get into Sealed Room (which we will be skipping entirely) means we can just mirror warp from Armory and continue to the basement. We spawn the Cellar boo on our way to Pipe Room, and while progressing through the room we manipulate it to move into Cold Storage to set up for another double.
  • Standard Van Gore. The boo here is the only ghost of any sort in the game that cannot be one-cycled; it’s speed and health is extremely high, and there is no way to make it switch between different room targets as the hallway is its only option. Usually one would either savewarp here or mirror warp from Safari, but we have to take care of some unfinished 100% business by clipping into Sitting Room for a couple boos and one last portrait ghost. Then its just heading to King Boo’s Altar and gg.

Possible Timesaves

  • Some more time can probably be saved by even further optimizing some suckups
  • Some time can probably be saved from further optimizing a few of the pearl dupes throughout the run.
  • While activating the Parlor boo to setup for the Parlor/Anteroom double, I did not hold C-up while approaching the drawer that the boo was in, which (probably? need to verify) lost a few frames.
  • Manipulating Nursery boo to be in the picture behind the chest instead of the right side dresser would save 1 frame (I was unable to manipulate this position while also manipulating the correct positions for all 3 other rooms when entering the Area 1 hallway).
  • It was decided to capture Nursery boo on the 2nd trip there, in order to skip the long egadd text that plays when upon capturing your first boo (having the Parlor/Anteroom double be our first boo skips this slow text). However, this seems to be slightly slower still, as entering/exiting nursery an additional time is slightly slower.
  • Grabbing fire element on 3F instead of 1F while traveling to Artist's Studio may have been slower (need to verify)
  • After getting the Boo / Gold Diamond in Guest Room, it likely would have been faster to savewarp. The decision was made to mirror warp in order to keep element, so we could still flashlight skip / vacuum cancel on the way to King Boo, but 'gem warping' in this case may have been faster (need to verify)
  • Ok here's where you all learn about my fucking white whale for this run. In short, there is a way to use the gravity panels inside of Tea Room to clip up onto the Balcony where Boolosus is, and actually enter the fight without the game checking for the minimum 20 Boos. Being able to do Boolosus even earlier than we already do in this run would save time from not having to backtrack for Tea Room/Nana/Astral Hall boos, as well as give us an opportunity to complete Sitting Room/Guest Room earlier in the run, with a faster skew setup. This would save probably 1 minute at least? Unfortunately, the only known ways of doing this clip require Tea Room to still be dark. This means that we have no way to do this clip after we get Ice Element, which is required to defeat Boolossus. I did extensive testing trying to get this glitch to work in the lit Tea Room, to no avail :( im sure now that this run is done, someone will find it lol.....

Other Comments

  • This run was created on the 5.0 Lua Dolphin Build in order to implement one specific script that helped me automate the process of finding fast suckup animations for single ghosts. While this did help, and ended up saving frames I may not have otherwise found, its use was more limited and situational than I anticipated, mostly due to the script only working on single ghosts. Many of the actual Lua commands used to create script didn't seem to work at all... so it was a bit hacky and difficult to troubleshoot. Oh well
  • Many memory addresses were monitored with Dolphin Memory Engine that helped quite a bit with certain portions of the run. X/Y/Z values for Luigi, skew angle, and values for tracking where each Boo is located were used most often.

Special Thanks

I mean it when I say that this run would not exist without the help I received from my wonderful friends and peers.
  • Saria100 and minimini352 are LM wizards and were there to help me from the very beginning, when this run was just an idea and didn't even have a route yet, and continued to provide feedback on my WIPs the whole way through. Without them, I would have missed a ton of tiny optimizations, and a couple big ones... Specific shoutouts to Hopelesslmanity for spotting one specific optimization I missed as well.
  • Malleo was a great help in hunting down some specific memory values I needed to watch for scripting purposes, and also came in clutch as tech support on many occasions as I struggled with Dolphin issues and figuring out how to make my own high-quality encode. Not to mention his amazing No OoB TAS which I used as a guidepost for many segments of this run.
  • Many thanks to Keeta for basically writing the suckup script I needed, and also being cool and swag and a good friend
  • Many thanks to the entire LM community, especially anyone who helped contribute to the Furniture Values document and the LM Money Guide - both of these were enormously helpful for planning out the money route.
  • Thanks to MuzYoshi for designing the thumbnail text for me :D
  • EZGames69 for helping me solve a desync issue I had when attempting to verify the run.
  • my cat Peppermint Patty who love to sit on my lap while i TAS

suggested screenshot frame: 73299

ViGadeomes: Claiming for judging.
ViGadeomes: First off, The movie seems well optimized and this is cool to see more of the game.
About the 100% category, there were discussions amongst staff on weither or not this movie should be considered as full completion:
  • All possible/Maximum money
This wouldn't change the A rank, plus there is a duplication possible on each pieces...
  • All rooms cleared, All Keys collected / doors unlocked, All toads saved
These are not tracked by the game & Toads are just saving points.
  • All gold frames for portrait ghosts
This recquires for each portrait ghosts to catch the ghost in one go which is very tough in RTA, that's why this is not recquired in 100% by the RTA community.
Thanks to EZGame69 & Fsvgm777 who explained these, we will keep the RTA definition of 100%.
Accepting as a new branch.

EZGames69: Processing...
Last Edited by EZGames69 on 12/3/2023 12:38 PM
Page History Latest diff List referrers