This week, Super Mario 64’s glitch hunters took another look at a glitch that dates back at least three years, and ended up with a completely new method of obtaining infinite coins in Bob-omb Battlefield and Tiny-Huge Island.
In this 2015 video, TASer sonicpacker demonstrates an intriguing phenomenon – after generating high speed while riding a shell, the unshelled koopa was seemingly able to dive at Mario and steal the shell back right from under Mario’s feet. If you attempted to perform this without hyperspeed, you would likely end up with a dead koopa (and a blue coin) on your hands. While at the time this video was posted the technical aspects of this finding were a mystery, we now understand all of the mechanics at play.
When Mario attacks a koopa, a shell object is spawned. If Mario proceeds to touch this shell object, he will enter the “riding shell” action, which causes him to surf around. If instead we wait for a while, the now unshelled koopa will eventually make his way to the shell and dive into it to pick it up, which despawns the shell object. The idea behind sonicpacker’s glitch is that if we could have the koopa pick up its shell while Mario is riding it, then we could despawn the shell, allowing Mario to ride a vacant object slot!
So why is the hyperspeed necessary? Well, the koopa was programmed to avoid picking up its shell while Mario is riding it. While the developers could have just checked if the shell was being ridden, they instead opted to check whether Mario is within 200 units of the shell. It seems reasonable to assume that if Mario is riding the shell, then he must be within 200 units of it. However, due to the order of events in a frame, the shell actually lags behind Mario by one frame when this check occurs. In other words, if Mario is moving at 200 units per frame, then the shell will be 200 units away from Mario. In this way, we can trick the koopa into thinking that Mario is not riding the shell, and so will pick it up and despawn the shell object.
On Saturday, reverse engineer bad_boot independently discovered this glitch, and took it one step further.
After performing the glitch, Mario is riding a vacant object slot. This means that new objects can load into that slot, and Mario will be “riding” them instead. If Mario presses Z or runs into a wall while in this state, a signal will be sent to the object, informing it that Mario has stopped riding on it. When the koopa shell receives this signal, it destroys itself. So what happens when we start sending this signal to other objects, like coins and goombas? Well… nothing. The vast majority of objects don’t expect to be ridden at all, and so they completely ignore this signal. Out of the very short list of objects that do react to this signal (e.g. crazy box, water shell), only the koopa shell exists in Bob-omb Battlefield or Tiny-Huge Island.
But after another look at the code, bad_boot noticed a subtle property of this signal: it overwrites any other signals that were sent to the object on the same frame. When collecting a coin, for example, after the coin counter is incremented, an “interacted” signal is sent to the coin to tell it to despawn. If we ride the coin using the above glitch, and then send the “stop riding” signal on the same frame that we collect the coin, we can prevent the “interacted” signal from being sent at all, and so the coin never despawns! This is demonstrated in the below video.
By using this glitch, we are able to collect a coin again after it has already contributed to the coin counter. Since we are cancelling the signal that causes the coin to despawn, we call this glitch “ride cancel”. Because it does not pollute object slots like regular cloning does, we can use this glitch to obtain infinite coins in Bob-omb Battlefield and Tiny-Huge Island. While it’s true that both of these courses already had known infinite coin glitches, the technical details of this glitch are interesting and shine a light on previously unexplored territory.
Pannenkoek2012 uploaded his own rendition of the glitch, demonstrating the use of a shell clone to avoid the need for hyperspeed, and then ride cancelling the blue coin dropped by the koopa himself. Thus ends the tragic tale of the koopa, whose courageous retrieval of his beloved shell ended up leaving him dead and in debt.
A Brief Word- The No Joystick Challenge
Written by Bloopiero
Although the A Button Challenge is the most widely-known Super Mario 64 challenge run by a long shot, it is far from the only one. SM64 has a long and rich history of people attempting to beat the game within self-imposed limits, from concepts as simple as damageless, to ones as complex as UBER, a challenge with no fewer than 25 restrictions that will soon be celebrating its 10th birthday. But one of the oft-neglected ones isn’t even theoretically completable – the No Joystick Allowed Challenge. Although removing the ability to enter doors was a bold creative decision by Pannenkoek2012, the creator of the challenge, many stars can still be collected on an individual basis. Recently, fresh progress has been made in TTC, with a relatively new member of the community, ds273 (known for his work on the latest Stomp on the Thwomp A press saves), completing “Roll into the Cage” and “Timed Jumps on Moving Bars” without the use of the joystick, bringing the total count of collectable stars up to 22. He later stated that he is “certain there’s more we haven’t realized are doable yet” and that “Stomp on the Thwomp” and “The Pit and the Pendulums” are likely within reach as well, so expect to see more development on this front soon.
In Other News
- Drozowdosky set a new 1 Star World Record with a time 7:21.47, beating Xiah‘s longstanding world record of 7:21.57 by just 0.1 seconds! Congratulations to Droz!
- Superdavo0001 and dar gos, the duo who improved the 1 Key TAS, improved the star “Swingin’ in the Breeze” by a total of 2 frames. Davo has a thorough explanation of the improvement in the description of the video.
- As suggested might happen in last week’s article, both lunarjump and TriforceTK set “nonstop” world records this week. In 16 star nonstop, Triforce started the week with an 18 second improved world record of 11:06. The previous world record holder lunarjump had no plans to let Triforce keep the world record, getting the first sub-11 run with a time of 10:48. Congratulations to both lunar and Triforce!
- In task 6 of the Speed-TASing Competition, TASers had only an hour to put together a TAS in Wet-Dry World. CeeSZee took first, Nis took second, and Dyllonstej took third. Great job to all of the TASers! The reveal stream can be found here.
- Task 17 of the Freerun Competition was based around exhibiting glitches in Whomp’s Fortress. Nis finished in first while Ojj and dar gos tied for second. The full results can be seen here.
- The TASing community published multiple excellent freeruns in addition to those from the competition, specifically one by Bretaigne & Super Watermelon 64 and one by Doctor Dab’s Half Brother.