Hyper Hover (Super Mario Sunshine)
Do you remember when the biggest nuisance SMS had with stale memory was that you couldn’t practise Pianta 1 properly because when chomplets chased you depended on what you’d been doing in like the past 15 minutes? Pepperidge Farm remembers. GameCube-era Nintendo games really laid bare the corners devs would cut to get games shipped on time, as well as how hard C++ is, with for example their reliance on stale memory. In C++, you declare a piece of memory to store your numbers, but nowhere does it force you to put in a number before you use it 🤔 so the chomplet timers in Pianta 1 were number-reinterpretations of w/e tf that memory was being used for before. What was in that space would get shifted about by previous levels, shine-counts, language differences… which of your collected shines is first in the shine load order (cos that’s, uh, when the blue shine model gets loaded).
The new glitch is that whenever we collect a hover nozzle, we have a unit vector pointing in the direction Mario’s meant to get pushed when hovering. This gets set when you switch to hover, but if you’re spraying water while picking up the nozzle, the hover starting outraces the pushback vector getting set. So the game instead reads some stale shite where the vector is meant to be, which gives a decidedly-not-unit vector that scales the amount Mario gets pushed, and in a chaotic direction. Then we use that speed to do unspeakable things.
So now ppl be out here loading in/out of random levels, collecting shines/coins, lobbing fruit and standing at specific distance from spider, all to trial+error chaotic (yet consistent) speed-boost setups. And I’ve gotta figure out how to keep tabs on that to verify ILs. Thanks, game. Here’s the current Underbell world record + setup (the hover vector here was set by *checks notes* the distance between the camera and Nokis under a hut in Sirena 3).
The previous WR was 6.36 so it rly didn’t need to go lower lmao. Most-likely applications for full-game runs atm are Bianco 6 entry, Noki 2, and for stuff outside Any%, mostly plaza movement I think. Anywhere where there are accessible nozzle boxes and fast horizontal travel would help. TAS can already use it as a new Gelato Beach Skip method. That’s cute.
And this is terrifying.
通しで使えないかっこいい入り方 pic.twitter.com/y3ivQPtWfo
— 大福 (@zelpikukirby) March 30, 2021</blockquote>
But spare a thought for Zelpiku’s WIP 120-Shines TAS, which has an absolute reckoning on its hands keeping up.
The most famous stale-memory glitch is Stale Reference Manipulation (SRM) in the N64 Zeldas, where the game looks for function addresses to execute in spots of memory after they’ve been repurposed, hence the arbitrary code execution found soon after. SMS is tryna read numbers from spots before they’ve been repurposed, so not a whole lot can go wrong… just the odd crash from reading in the special “not a number” value that a number can have (kek) or either of the infinities. So the game won’t descend into the tyre-fire that is Ocarina of Time.
And We Praise Miyamoto For This Blessing Every Single Day.
SRM is a use-after-free glitch, whereas Hyper Hover is an uninitialised variable glitch.