The A-button Challenge: The Bully Battery Plan
So, Iâve been lurking on the A-Button Challenge discord (check previous post), and as a result, can speak fairly authoritatively about the currently extant plans to save one or more A-button presses, taking the number of A-presses to get all 120 stars in Super Mario 64 down from 19 to 14. These 5 planned saves can be neatly divided into two chunks. Thereâs the two âBully Batteryâ saves, and the three âPast Pole 0xâ saves. It is fair to describe both of these two plans as the most complex plans ever assembled in any TAS of any game, 3 years in the making for the Bully Battery one that Iâll be describing. If youâre curious, no, a 0xA 120-star run is definitely not happening. Maybe the A-press count could drop to, like, 10 eventually, if you apply a slightly unreasonable amount of optimism to the prospects of the 14 A-presses without plans. But A 0xA 70-star run (a standard completion of Super Mario 64, in 0 A presses) is only blocked by one single A-press left that hasnât been saved yet. And itâs one of the five with plans. That one goddamn pole in Bowser in the Fire Sea (BitFS from now on)
So, I should mention that this one has sorta kinda has been saved. Thereâs an oscillating platform below the pole, and for the port of SM64 to the Wii, thereâs a rounding error bug that wasnât present on the original game, which means that the error in that platform position keeps accumulating. So, if you wait for three days, the platform eventually floats high enough to make it past the pole in 0 A presses. Problem 1: The Wii version of SM64 lacks a glitch present on the original Japanese version that lets you save 3 Japan-exclusive A presses, and so a solution that works on that version must be found. Problem 2: When watching a TAS of Super Mario 64 completed in 0 A presses, the gaming populace want to watch arcane wizard Mario push the game to its limits. They want to behold the adventures of a plumber capable of extraordinary feats of black magic glitchery, and perfected inhuman movement, but who skipped too many leg days so he wonât be jumping. They do not want to watch a âââspeedâââ-run where thereâs an hour and a half of Mario doing exactly that, and then 3 days of Mario lazing about waiting for rounding error to accumulate. This is because it would suck ass. So, a better way must be found, to get Mario further up in the level, past the pole. Said better way relies on three key pieces of information. Number 1: When Mario is on a tilting or rotating platform, the tilt or rotation is applied for one extra frame. If Mario is going stupidly fast so that on that extra frame Mario is very far away from the platform, then... applying the rotation matrix to a Mario very far away from the origin results in Mario moving a whole heck of a lot. Possibly up? That would get Mario past the pole. Number 2: BitFS has a tilty rotaty 3d platform thatâs complicated enough that the developers rolled their own code for it. And as a result, they slightly fucked up their rotation matrix. Said platform almost always displaces Mario down instead of up, when he tries doing the aforementioned speedy rotation trick. Key word, almost. At certain extreme tilt ranges, the fucked up rotation matrix is capable of tilting a speedy Mario up, as desired. Number 3: BitFS has bullies. They are an enemy that bumps you. The game physics for this is very nearly an elastic collision simulator. But perfectly elastic collisions didnât look aesthetically pleasing enough, so the programmers changed it a bit to make the impacts aesthetic. That change violates conservation of energy. And you know what that means! You can CHARGE UP UNLIMITED ENERGY. So, the basic plan is to charge up a large thermonuclear bomb worth of energy in the bully, use that to yeet Mario at 10% of lightspeed from the tilty platform, and then the small rotation matrix error is amplified by Mario being 1000 kilometers away in the next 1/30th of a second, giving Mario sufficient height. Then Mario just has to navigate through the Parallel Universe Grid at low-relativistic speed to land back in the main universe and kick Bowserâs ass. Princess Peach doesnât appreciate how good she has it. Isnât this just so much better than waiting around for 3 days? This is extremely far from easy, though. The strategy was beset by seemingly fatal problems from the start, and only Tyler Kehne had the ambition to see it through to viability. Problem 1: How do you trap a bully? You need to hold it in place, somehow, while still having the game register it as traveling at high speed, in order to accumulate energy. Problem 2: If youâve got your bully trapped, then each time Mario hits it, only adds a constant amount of energy each impact, so to get a thermonuclear bombâs worth of energy stored up, itâs going to take a unreasonable fuckload of time. Problem 3: The bully-trapping spot isnât at the weird tilty platform. Once the bully is charged, you need to move it from the bully trap, to the tilty platform. Itâs got relativistic speed, though, which is incompatible with âgently move the thingâ. Problem 4: When the bully is going fast and hits Mario, Marioâs vast speed is entirely eliminated on the very next frame by bonking against thin air since heâs moving way too damn fast. You canât get the energy out of the bully in a useable way. Problem 5: The platform can only displace you upwards at very extreme tilts that are hard to achieve in practice. Also, you can get around Problem 4 with a trick called squish canceling, but that requires you be under the platform. Every instant youâre off the platform, itâll adjust back to normal, and this will very rapidly eliminate the rare sensitive upwards-displacement angle you need. So basically, going off the platform to get the speed from the bully, means that you unavoidably fuck up the platform angle. Problem 6: Charting a return route through parallel universes at low-relativistic speeds, traveling further than the diameter of the earth.... Is kinda hard. Especially because of your 1/30th of a second movement granularity, and angle granularity. And double-especially if you know what the deal is with parallel universe movement, and why it might be difficult to chart the proper return path when youâre traveling thousands of PUâs each frame, at weird diagonal angles. Solution time! Problem 1... yeah, thereâs bully traps. There are different sorts of traps for different speeds, I donât really understand it that much. Gotta dig deep into bully physics there. But itâs definitely doable. Problem 2 and 4: The Slow Bully Battery (SBB) builds energy a constant amount each iteration. Mario repeatedly whacks a stationary bully. But thereâs another thing, the Fast Bully Battery (FBB), where, basically... the high-speed bully hits Mario, and on the same frame Mario gets squished by a ceiling, canceling the bonk, and then the squish itself gets canceled the next frame after that, so Mario retains the energy, and if Mario can then hit the bully again without slowing down in the meantime, it transfers the energy back to the bully at a 2.5x or 3x speed multiplier! Doubling or tripling the speed every single iteration can get you up to relativistic speeds exponentially faster than adding constant energy each iteration. Itâs hard as shit to do, though. Problem 3: When a bullyâs position on the next frame is out of bounds, it will reflect off out-of-bounds, changing direction, and gravity is not applied for that frame and the next. This means that when a bully is going fast enough that, on every frame or every other frame, itâs reflecting off of out-of-bounds, itâll just... stay floating in air, gravity doesnât apply. Also, thereâs a very strong tendency for the bully movement to end up in semistable attractor states at these speeds, where it reflects off of parallel universes in a simple repeating pattern. This is called Hover Speed. Bully movement simplifies drastically at this stage, itâs quite easy to control, you donât have to worry about gravity, you donât have to worry about trapping, you can get it to where you want it to go, you can even do FBB iterations easily. It initiates at around Mach 7. Problem 5: This whole raft of shit is called the Final Speed Transfer problem. Or the FST for short. Itâs the hardest part of the whole thing. Iâll be detailing the solution insanity later, but I canât believe itâs been solved. Problem 6: Yeah, thatâs a rough one. Get a computer to do it instead of doing it by hand? And so, roughly, the blueprint for the overall plan looks like this: Step 1: Get the bully to the appropriate location. Easy. (starting phase, <1 minute). Step 2: Trap it and start doing slow bully batteries to the appropriate speed needed. In the best case, it might be only a few minutes. In the worst possible case, itâll be a full 24 hours. Thereâs a difficult sequence of steps to hit the bully with lots of speed to make this part go way faster, but noodyâs figured out how to do it yet. (SBB phase, 1 minute best case, 24 hours worst case) Step 3: Do the first few fast bully battery iterations, doubling or tripling the speed each time, until hover speed is reached. Use bully traps, raising glitches, and overall cleverness here, to deal with the gigantic fucking headache of thousand-mph billiards with gravity and friction and slightly fucked up physics where you have to do extremely difficult glitches and never lose the ball. Expected to be an absolute nightmare and hard as shit. (Initial FBB phase, <5 minutes?) Step 4: Now that youâre at hover speed, you are afforded a much greater degree of bully control and further fast bully battery iterations are quite doable, doubling or tripling the speed each time to quickly raise the bully from mach 7 to relativistic speeds, and send it off to where it needs to be. (Hover Boosting Phase, <2 minutes) Step 5: Go on the platform and get the energy out of the bully while not fucking up the platform rotation angle in the process using UNFATHOMABLY COMPLICATED BULLSHIT WORKAROUNDS, then blast off to the Parallel Universes at 0.1 c. âThe most complicated two seconds in any speedrun of any gameâ. (Final Speed Transfer, <10 seconds) Step 6: Return from the Mario multiverse at low-relativistic speeds. Get your computer to help you out on this one, this is not for humans. Apparently thereâs a glitch called 1-frame crouchsliding thatâs very handy here? I donât understand it. (PU Return, ~1 second) So, howâs the team doing on this magnificent plan? Well... the problem needs to be worked in reverse. Bruteforcers must be coded for many steps in this process, and the overall problem needs a strategy of, like, finding initial conditions that get step N to work out, and making those initial conditions the optimization target that step N-1 is trying to hit, and working backwards. Not many people have the Mario knowledge and the coding knowledge at the same time. But itâs progressing slowly. So, hereâs the deal with the steps, since weâre working backwards. Step 6, the PU return has had the brute-forcers coded up for it already, and itâs.. suprisingly doable! Lots of solutions, a nice rich solution space to work with, itâs basically solved. Step 5, the Final Speed Transfer... Tyler has solved it. I didnât believe it. The explanation about how it works required, like, 15 steps, all in two seconds, and an appalling amount of glitches and subtle movement mechanics. Sadly, the solution required hitting three high-speed bullies instead of one (two of the impacts were to get across the platform in time before the tilt angle got fucked up). The plan was to find a firing solution where one high-speed bully would zip around the parallel universes in a chaotic pattern, doing relativistic ricochets off of the voids between them, to be in the main universe at the three exact right spots at the three exact right times with the three exact right velocity vectors. But as it turns out, this is an incredibly hard problem to solve, and they gave up after several months with nothing to show for it. But then, a breakthrough in the last two months! As it turns out, one of the bruteforcers revealed that there was a 1x6 cm sweetspot on the platform where Mario could stay on it at immense speeds to tilt the platform back into the right angle range, without rotation matrix fuckery declaring âoops, Mario is technically off the platform now, time to tilt it back to useless anglesâ. Everything works. And this means that two of the three bully collisions for the final speed transfer can be eliminated! Theyâre only there to get Mario across the platform fast enough, but if you can tilt the platform back to the right angle with the sweetspot, you donât have to worry about âgotta go fast to not screw up the angles too badly while Iâm off doing other thingsâ. And so, with one bully collision needed post-breakthrough, the problem shifts from âhave the bully zip around the multiverse to be in these three spots at the right times with the right velocitiesâ to âhave the bully be in this spot at this time, with this velocityâ. much more doable! So we can move on to Step 4, the Hover Boosting Phase! Step 4, the Hover Boosting Phase. Thereâs a proof-of-concept for a single FBB iteration, the movement scripting tools are being worked on, and this part will probably go smoothly. Step 3, the Initial FBB Phase. This is expected to be absolute bullshit. Itâs the hardest part besides the Final Speed Transfer. Nobody has any idea how long itâll take to do this, as this phase hasnât been engaged with that much. I expect at least three separate instances of a seemingly-fatal problem with this stage being defeated by a brilliant solution pulled out of Tyler Kehneâs ass. Roughly, the problem is figuring out how to do Fast Bully Batteries at all when hover speed isnât drastically simplifying the problem for you. The worst case scenario is that this stage is impossible, and itâll take a full 24 hours of Slow Bully Battery to charge the bully up to mach 7, to proceed with the plan. However, since Fast Bully Battery doubles or triples speed each time, and Slow Bully Battery adds constant energy each time, the last few iterations of FBB save most of the time. If only the last instance of Fast Bully Battery gets solved, that cuts the Slow Bully Battery time from 24 hours down to 4 hours. Two FBB instances being solved mean 35 minutes on battery duty, and three and four drop the slow battery time to 6 and 1 minutes, respectively. Step 2, the SBB Phase. Going to take some scripting work to have it flow nicely into the rest of the plan, especially if thousands of iterations are required because Step 3 went poorly, but expected to not be too much of an issue if Step 3 doesnât completely fail. And Step 1 should be trivial if all else is done. So, thatâs where weâre at. PU Return is solved, the Final Speed Transfer has had a big simplifying breakthrough and weâre just waiting on the scripting and bruteforcer tools to whip up a demonstration, FBB iterations past hover speed are expected to be easy when we get there, the first few FBB iterations are expected to be hard as shit and take ??? time, and things should be easily solvable from there. Oh right, one last thing. Presenting the absolute insanity that is the Final Speed Transfer blueprint. The simplified version, post-breakthrough, which still qualifies as the most complex 2 seconds in TASing. Most of the following is floating-point precise (ie, micrometer-precise if translated to real-world terms) Mario runs in arcs on the platform to build up speed (to get off the platform fast when needed), and get the platform tilted appropriately. Mario does a few pause-buffered dive recovers to haul ass across the platform and get there a few frames faster. Also, since Mario is within 4 cm of the platform when he does this, the platform will go âah, Mario is on me, time to tiltâ and we need all the tilting we can get. Mario lands with the control stick in neutral to instantly stop in place, as Mario is going too fast now, and the instant deceleration saves another 1/15th of a second. Mario walks very slowly for 1/30th of a second, putting him in a sub-pixel-precise spot on the platform called the NUT Spot. (Nonstatic Unit Truncation). The C-up button is pressed, to decelerate Mario, which cancels into idling, which, due to rounding errors in the platform rotational displacement, cancels into freefall off the platform. Gravity then applies to Mario, and then Mario applies direction adjustment in midair, to land back on the platform in the NUT spot, so then the platform is like âoh, Mario is on me, time to keep tiltingâ. All this occurred in one frame. This entire sequence of events with the NUT spot occurs 5 more times in a row, so for 1/6th of a second, Mario is having gravity continually applied to him, while being in a limbo state of being on and off the platform for the purpose of good platform tilting. Now, with Marioâs stored gravitational acceleration, he can fall off the platform fast, saving 2/15ths of a second of falling, decreasing the amount that the tilting platform tilts back to normal. The relativistic bully impacts Mario, and being below a ceiling, he can do the squish cancel speed transfer. Now, Mario canât really move unless his next intended position is in-bounds, (it is not, currently) so the platform, in the process of tilting back to normal since Mario is off it, ends up tilting so Mario now technically counts as being on it. Mario is now in the 1x6 cm sweetspot where rotation matrix stuff doesnât screw him over, and can just hang out there for 4/15ths of a second, as the platform continues to tilt. Then the platform tilts too far, Mario counts as off it, and then it tilts back in such a way that guess what! Mario is back on the platform again. Another 4/15ths of a second goes by, this âMarioâs off the platform and back on itâ glitch happens again, and now Marioâs got... almost an entire second before the platform tilts so Mario falls off it for good. This luxuriously high amount of time, a full second and a half, is easily enough so that the platform tilt requirements are finally met, and Mario adusts his angle slightly to zip off to the parallel universes and get a good height boost. Sadly, Mario is flying forward, a sure ticket to getting stuck in an alternate universe, or crashing the game. But thereâs one last glitch. The 10k glitch, so named because past 10,000 speed (around mach 9, and weâre well past that), Mario can instantaneously reverse his speed direction in a single frame. Mario redirects his relativistic speed backwards in an instant, to navigate back to the main universe with 1-frame crouchsliding. Finally touching down past the pole, in 0 A presses, the last A press to be saved in a full-game run. THIS IS THE FUCKING SIMPLIFIED VERSION OF THE STRATEGY, IT USED TO BE EVEN WORSE HOW IN THE HELL IS A PLAN LIKE THIS CREATED IS TYLER KEHNE A MORTAL MAN Oh, one last thing! Bully Battery plans also have promise to save another A-press, the one in Lethal Lava Land. Because thereâs a bully there, and that means INFINITE ENERGY. That plan is much simpler. Partially because nobodyâs really working on it yet, so the plan is missing a lot of details. The optimism without a concrete plan is because everyoneâs like âwell, thereâs a bully there, and a bunch of really janky geometry and platforms to interact with, and we only need sub-sonic bully speeds because Hyperspeed Lava Boosting is a thing (and it looks incredibly cool). Fuck it, weâll probably be able to whip something up after we get BitFS taken care ofâ Damn this was long. Â










