TASVideos

Tool-assisted game movies
When human skills are just not enough

Submission #5243: weatherton's N64 Mario Kart 64 in 20:33.32

Console: Nintendo 64
Game name: Mario Kart 64
Game version: USA v1.0
ROM filename: Mario Kart 64 (U) [!].z64
Branch:
Emulator: BizHawk 1.11.6
Movie length: 20:33.32
FrameCount: 73999
Re-record count: 207935
Author's real name: Drew Weatherton
Author's nickname: weatherton
Submitter: weatherton
Submitted at: 2016-10-04 06:20:56
Text last edited at: 2016-10-16 20:49:48
Text last edited by: Spikestuff
Download: Download (85607 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:
Official Encode Recommended Screenshot Console Verification Video
Frame 40643:


Other interesting screenshots

Courtesy of micro500

Goal Choice / Branch Name

Mario Kart 64 has no unlockable cups, courses or characters. Players can turn on the game and immediately play the hardest engine class (150cc) with the best characters. There is one unlockable mode though; Extra. If you play Grand Prix (GP) mode and get a gold trophy on all four cups, you unlock Extra mode. The credits also roll (although this happens even if you play only Special Cup). Extra mode is just mirrored versions of every course so they don't actually differ in any meaningful way from the other modes with one exception, Toad's Turnpike has traffic driving against you rather than with you. Unfortunately, Extra mode is only at the 100cc engine class. So, Extra is actually a slower and easier mode than 150cc. The only other unlockables are course ghosts in Time Trials.

So, by playing in GP mode I can unlock gold trophies (which are stored to the cartridge), 150cc is the fastest and most challenging engine class and upon getting gold trophies on all cups, I unlock the only hidden mode in the game. By finishing on Special Cup I also get to see the credits. Two player GP is also an option and it may be faster (note that both players must finish every race, so you can't just use one player to jump off of). However, the strategies would differ enough to warrant a separate branch as players could trade places to always have access to better items and could hit one another.

Thus, to be completely clear what the goals are of this run, the branch name is '1 player GP 150cc all cups'. The order of the words is also consistent with the menuing in the game. An alternate title could be '1 player unlock extra mode' but this is the same number of characters while providing less information about the mode being played.

I've deleted the branch name to be consistent with the published SMK run. I also began a discussion in the Mario Kart 64 thread about possible branched.

Background

I first played Mario Kart 64 on February 10, 1997 (when it was released in North America) and completed the game on 150cc soon thereafter. The game could be completed quickly, but there was a depth to it that I was drawn to. With four player and time trials, I found myself consistently playing the game year after year. In 2002 I joined the Mario Kart 64 Players' Page, encouraged to do so by my friend David Hehn and invited in with open arms by the webmaster, Kevin Booth. In 2004, I began experimenting with using emulators and save states to create superplay style movies. My friend Martin McMullan and I used standard emulators (without input recording) and screen capture software to record segmented movies, from save state to save state. The results were unlike anything we had seen before. We were using CPUs as strategic launch pads to hop around the levels in fun and surprising ways. In November of 2005, the world suffered a loss when Martin took his life. I was devastated to lose a friend and I commented that I would like to someday finish a 150cc TAS in his honor. In March of 2007 I collaborated with Comicalflop and Michael Fried to complete Luigi Raceway in 37"18. My contribution came on the last lap where I jumped off of Wario, spun around the finish line and landed back on the road. At this time, I was still not completely comfortable with recording input in a movie file and using even basic tools to improve my output. I decided to practice so that my skills would improve while having a bit of fun. I completed three test runs: Star Cup (April 9, 2007); Special Cup (April 25, 2007) and Flower Cup (April 11, 2008). I even submitted the Special Cup run to TASVideos as an Any % completion but it was sadly rejected. I was now more comfortable with building a TAS, but I had not yet built my capabilities to the level necessary to achieve consistent excellence in such a challenging game.

On June of 2008, Peter T."Xenos" began TASing Mario Kart 64. He immediately demonstrated a mastery of the game with an ability to produce nearly perfect input (as demonstrated in his Choco Mountain non-shortcut fast lap completion) while also thinking outside the box and developing new strategies. Xenos noticed that toggling the control stick during a slide increased his speed slightly and he used this to beat Michael Fried's very strong Mario Raceway fast lap time. He then went on to demonstrate creative applications of red shells on Luigi Raceway and Mario Raceway and even found a new shortcut on Kalimari Desert that required a CPU jump. All this happened in just a few months and then he was mostly on to other projects. His precise runs, careful analysis and creativity were an inspiration for me though.

In August of 2009 I began working on improving Luigi Raceway. It's perhaps fitting that the 150cc TAS should start with one of the most challenging courses in the game. I was able to beat Xenos' 29"71 TAS, initially just barely with a 29"47. I continued working and also received some good ideas on the TASVideos forums from Kyman about the initial landing. After several versions, I achieved the 25"06 that is in this TAS. That run was something I was (and am) really proud of. I had to work really hard for it and without any assurance of success. In the end, I produced a TAS that was precise, surprising and fast. This single video has had several rounds of viral sharing on Facebook and Twitter that generated millions of views (for other people who didn't credit me). If I were to try it again now, with everything I've learned and all of the tools I've built I'm sure I could beat it, but not by a huge amount. It provided a pretty strong foundation for me to produce an all cups TAS.

AGDQ

In January of 2014, TASVideos was set to present the first "TAS Block". Micro500 had built an N64 bot and was looking for games that would console verify to show off. Mario 64 worked and so did Mario Kart 64. It just so happened that I live near where AGDQ is held each year. DwangoAC and micro500 realized this and asked me if I would like to commentate on some of my Mario Kart 64 runs. Here is the Mushroom Cup video which is the same version as the final submitted run. Earlier we had also shown the old Special Cup test run.

At AGDQ 2015, I didn't have any completed cups ready but I pitched a "Choco Mountain 4-Player Gauntlet" concept using the 4-player capabilities of his bot to set up a challenging scenario of items and boulders to later be played by real players. We played this at AGDQ 2015. Making the movie required lag compensated multi-track recording lua script and special build of BizHawk that micro500 made.

At AGDQ 2016, we showed Star Cup, which I completed just in time. The AGDQ 2016 deadline motivated me to focus again on developing my TAS after a long period of focusing more on the Lua script. We will probably show another cup or two at AGDQ 2017 so keep an eye out for that if you're interested in live commentary. For more detailed commentary though, look below.

Optimal Movement in Mario Kart 64

I have worked with Beck Abney and abitalive to develop a Game Resources page in which we've documented aspects of Mario Kart 64 that are important to Tool Assisted Speedrunning. Go there for more extensive descriptions of relevant strategies and documentation of relevant game data. Please note that the page is (and will continue to be) a work in progress. For the purpose of this submission text, I will summarize a some relevant information here.

The Mini Turbo (MT)

A MT is a small boost awarded after a player performs a complicated drift process used to build the boost. The MT is a core advanced driving technique and is a primary differentiator between beginner and advanced players. It can be done around corners as well as on straightaways (a "Straight Stretch Mini Turbos" or SSMT). A MT has seven unique phases which can be performed "frame perfect". The longer a player spends on each step beyond what is necessary, the more speed they lose while building the MT boost and the greater overall distance they travel. Thus, for a TAS it is important to understand the absolute limits of this technique. The following table summarizes the MT phase requirements:

MT Phase Frames Ī£Frames Phase Description
1. Inward jump 6 6 Jump and turn (on the same frame) in the direction you wish to MT. 6 frames assumes flat ground.
2. First outward slide 9 15 Once you land, immediately turn the opposite direction and hold the slide to charge.
3. First inward toggle 1 16 Toggle inward to change smoke from yellow to orange
4. Second outward slide 4 20 Immediately toggle back outward and hold the slide to charge.
5. Second inward toggle 1 21 Toggle inward to change smoke from orange to red. Release "R" immediately and, if done frame-perfect, the red smoke will not be visible
6. Glide turn 8-12 29-33 Once you release the slide a MT boost is active for 14 frames (speed is still elevated for some time after the boost ends). During this boost you can turn without losing speed. This MT glide allows you to angle yourself correctly coming out of the MT
7. Untilt 1-2 30-35 Once angled correctly, you must toggle the opposite direction for at least one frame to align your kart to the track. If you do not do this the kart drives at an angle or is "tilted" to its direction of travel and loses speed.

Note that optimal MT spacing is situation dependent. Generally some spacing after untilting is beneficial (as some speed is lost while generating a new MT) but there are cases (around corners) in which a new MT is worth generating before even starting a glide turn.

Jumps

Although generally it is best to avoid getting airborne (as time off the ground is time not accelerating), getting airborne can be useful especially for achieving shortcuts. Although you can jump in this game, it's not a very large jump. Big air can be achieved through the use of items, by jumping off of terrain or by jumping off of other players (in the case of GP mode, CPU players). When performing a "CPU jump" the larger the weight difference between characters, the further the lighter character can jump. A boost is necessary to obtain big air while not spinning out. Particularly large jumps are possible when the heavier character pushes the lighter character into the ground which provides a very large upwards boost to the lighter character when they are ejected. There are three lightweights in the game and all three have equal stats for time trials. The lightweights are by far the best characters to choose in nearly every situation and they are also the best choice for getting large CPU jumps. Yoshi and Peach are both the same weight and Toad weighs 22% less. Weight only matters when characters collide with one another.

RNG Manipulation

The random number generator in Mario Kart 64 is based upon the same function used in Mario 64, which pannenkeok2012 describes very well in one of his youtube videos. Although the RNG is called many times per frame, presumably for things like generating exhaust and dust, it is also called by the item roulette process. When a player hits an item box, they have a period of a few seconds during which they can select an item by hitting the Z button. Thanks to the great work that abitalive and Beck Abney did in reverse engineering the random item function just a few months ago, we now know how the item function works.

The randomness for the item selection works as follows:
Formula: (RNGValue + ABRFrames + RaceFrames + LastItem) % 100

  RNG Value: Returned value of random number call giving a random number from 0 to 99
  A/B/R Buttons: Counter goes up each frame (29.97fps) that on of these buttons is pressed. Can go up by 1, 2, or 3 depending on how many of them are pressed at once (or more if using more than 1 controller).
  Race Frames: Counter that goes up each frame (59.94fps) during a race (including startup with Lakitu and points screens)
  Last Selected Item: Last item table number that was produced from the formula above
For additional details on this, see: Beck's item RNG calculator and abitalive's item RNG assembly code with comments.

Because of the way the item RNG works, it is possible to cycle the RNG rotation by using the A, B, and R buttons when they otherwise don't affect the driving (before the race starts, for example). So, I can use frames of A, B and R or "ABR frames" before a race to ensure that I get the item I want from on the first possible frame for the first item box (which is sometimes useful). After the first item, I am more limited on my ability to manipulate the ABR counter because it can take on 100 different values but I can only increase it without affecting speed while I'm in the air. So, for each MT I can either release R while in the air (which changes the count by -5 in most situations) or I can add B while in the air (which has no noticeable affect for brief periods but does slightly alter physics many frames later). My biggest weapon for item manipulation is the frame I press Z, which is why my Lua script contains an item bot (thanks in large part to micro500).

In May of 2014, Sean Sullivan was tracing the item rng code to try to help me understand what was going on and to determine whether the item I would get could be predicted. His conclusion was that predicting the item would be very challenging (as you could conclude from Beck and abitalive's later findings, in fact, it's not possible in BizHawk because we can't follow register values at the requisite sub-frame levels). On 5/28/2014 though, Sean did come across a large set of tables, 100 bytes long that seemed to list item values that were returned from the item RNG function. With this finding, I quickly copied the values from the ROM and built a table to calculate the values in the first eight columns. For the first time, we had the actual probabilities (assuming each row was as likely as the next) of receiving items. Mark Jones found that this first table was for GP mode, the next was for CPUs (which I confirmed by altering the values) followed by 2-player versus, 3-player versus, 4-player versus and finally battle mode.

abitalive later made a ROM hack to fill the expansion pack with output from the item RNG function. After running for several hours, he had millions of results and confirmed that all values are equally likely. Having said all of this, it's only possible for RTA runners to control the item RNG function in very limited ways, none of which are useful. For example, Beck was able to consistently get the same item by tapping through the menus as quickly as possible (including selecting Mario) and then holding the A button through the entire race setup so that Mario would consistently spin out and drive straight to the items. He had to wait for the item roulette to expire and give him and item. All of this was necessary to ensure he could get the same result from the item RNG function. In normal situations, an RTA runner would have no way to know what item they would get (beyond the probability for the place they are in). Knowing the item probabilities is extremely helpful and they are summarized in the following tables:

Item Probabilities

Item Code 1st 2nd 3rd 4th 5th 6th 7th 8th
Banana 1 30%
Banana Bunch 2 5% 5%
Green Shell 3 30% 5%
Triple Green Shell 4 5% 10% 10%
Red Shell 5 5% 15% 20% 15% 10%
Triple Red Shell 6 20% 20% 20% 20% 20% 20% 20%
Spiny Shell 7 5% 5% 10% 10% 15%
Thunder Bolt 8 5% 5% 10% 10% 15% 20% 20%
Fake Item Box 9 10% 5%
Super Star A 5% 10% 15% 15% 20% 30% 30%
Boo B 5% 5%
Mushroom C 10% 5% 5% 5% 5%
Triple Mushrooms E 15% 20% 20% 25% 25% 10% 5%
Super Mushroom F 5% 10% 10% 10% 10% 10% 10%
Total 100% 100% 100% 100% 100% 100% 100% 100%

This table is a summary of the entries that start at memory address 0x1A7A90.

Item Code 1st 2nd 3rd 4th 5th 6th 7th 8th
Banana 1 60% 50% 40% 35% 30% 30% 30% 25%
Banana Bunch 2
Green Shell 3 25% 25% 25% 25% 20% 20% 20% 20%
Triple Green Shell 4 5% 10% 15% 20% 20% 20% 20%
Red Shell 5
Triple Red Shell 6
Spiny Shell 7
Thunder Bolt 8 1%
Fake Item Box 9 10% 10% 10% 10% 5% 5%
Super Star A 5% 5% 10% 10%
Boo B 5% 5% 5% 5%
Mushroom C 5% 10% 10% 20% 20% 20% 24%
Triple Mushrooms E
Super Mushroom F
Total 100% 100% 100% 100% 100% 100% 100% 100%

This table is a summary of the entries that start at memory address 0x1A7DBO.

(Interestingly, CPUs can get green shells but they never use them. Also, a Thunder Bolt has only a 1% chance of occurring for the 8th place CPU)

The full lookup table is helpful when manipulating ABR frames and this is summarized in a table on the Game Resources page.

Tools

In 2014, after AGDQ, I transitioned from Mupen to BizHawk (Mupen64Plus). I was convinced to do this by adelikat and micro500 with the promise of Lua scripting. On Mupen, I had had to use external tools to monitor memory addresses and the closest thing to scripting I was beginning to do was to use Auto Hotkey to play back basic input. With Lua, I was able to create an on-screen HUD with a variety of direct measures and calculations. I was also able to store optimal MTs of various types in a catalog and recall them into an input queue to be fed into the game. Over time, I added additional features including an item bot and waypoint markers.

The initial foundation for feeding input into the game was written by adelikat and I collaborated with micro500 on the item bot, though he wrote most of the code for it. Micro500 also wrote the recording functionality and has generally been a sounding board and teacher for me as I fumble through writing code. Beck Abney found the (very helpful) rivals memory address and added it to the script.

The current Lua scripts that partially automate optimal maneuvers and provide helpful information while TASing Mario Kart 64 are available at https://github.com/weatherton/BizHawkMarioKart64.

This year I began experimenting with TAStudio and encountered several crashing issues (which I believe have now largely been addressed by Feos). I did use TAStudio for updating the menuing to use 4 controllers and it was very helpful for that purpose. I look forward to using it more in the future.

Run Commentary and Summary Information

Race Times and Odds Summary Table

Level Race Frames Race Time In-Game Time Item RNG Odds
Luigi Raceway 1508 0:25.13 00'25"06 1 in 400,000
Moo Moo Farm 3963 1:06.05 01'06"03 1 in 4,000,000,000,000
Koopa Troopa Beach 4223 1:10.38 01'10"37 1 in 1,388,888,889
Kalimari Desert 2935 0:48.92 00'48"92 1 in 40,000
Mushroom Cup 12629 3:30.48 03"30"38 1 in 8.89E+31
Toad's Turnpike 4920 1:22.00 01'21"93 1 in 1,085,069,444,444
Frappe Snowland 1452 0:24.20 00'24"05 1 in 1
Choco Mountain 1089 0:18.15 00'18"14 1 in 4
Mario Raceway 1445 0:24.08 00'24"06 1 in 25
Flower Cup 8906 2:28.43 02'28"18 1 in 1.09E+14
Wario Stadium 681 0:11.35 00'11"34 1 in 1
Sherbet Land 2875 0:47.92 00'47"92 1 in 500,000
Royal Raceway 3499 0:58.32 00'58"32 1 in 33,333
Bowser's Castle 2901 0:48.35 00'48"34 1 in 400
Star Cup 9956 2:45.93 02'45"92 1 in 6.67E+12
D.K.'s Jungle Parkway 921 0:15.35 00'15"34 1 in 100
Yoshi Valley 1725 0:28.75 00'28"73 1 in 1
Banshee Boardwalk 2707 0:45.12 00'45"10 1 in 400
Rainbow Road 3377 0:56.28 00'56"24 1 in 1,333
Special Cup 8730 2:25.50 02'25"41 1 in 5.33E+07
ALL CUPS 40221 11:10.35 11'09"89 1 in 3.43E+66

As you can see, the item RNG odds are highly manipulated in my favor throughout the run. We run out of named numbers to use to describe such a large number directly.

When comparing this run to RTA, it is important to know that the times are about 2.5 minutes different. RTA runs start timing when Mushroom Cup is selected, power cycle the moment they finish the fourth race of a cup and stop timing the moment they finish Rainbow Road. In this TAS, timing starts at power-on, the game is power cycled the frame after the gold trophy is stored and the timing stops on the last input required to advance to the end credits (over a minute after the second-to-last required input).

Run Timing Summary Table

Level Total Frames Real-Time RTA Timing In-Game Time
Mushroom Cup 20209 5:36.82 5:06.57 3"30"38
Flower Cup 16213 4:30.22 4:14.22 2'28"18
Star Cup 17268 4:47.80 4:31.83 2'45"92
Special Cup 16127 4:28.78 4:12.77 2'25"41
ALL CUPS 69817 19:23.62 18:05.38 11'09"89
Trigger Credits 73999 20:33.32
Credits End 84200 23:23.33

Menuing and Restarts

While making the 4-player Choco Mountain Gauntlet TAS, I realized that all four controllers can be used while menuing. Because of the game's implementation of polling, if all four controllers press buttons they are read in order. With four controllers, I have enough sub-frame polls to complete every section of the menus in one frame a piece. This means that I can move the cursor to the entry I want and select and confirm it all in one frame. The one exception is the character select screen where only controller one is functional. Controller one is also the only controller that is functional while in 1 Player GP mode. It is not possible to use the other controllers to manipulate RNG or pause the game or anything.

In-Game Time:
03'30"38
RTA Timing*:
5:06.57
TAS Timing:
5:36.82
Cup RNG Odds:
1 in 8.89E+31
*From selecting Mushroom Cup through finishing Kalimari Desert


Course 1/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
25"06
(7"48, 8"91, 8"67)
29"71 (Xenos)
(7"69, 12"15, 9"87)
38"44* (Beck Abney)
(21"61, 10"62, 6"21)
*Completed on Japanese version which has a unique shortcut that is slower but more consistent. The RTA record for the US version is 55"38 (Beck Abney)

First, a note on character selection. I chose Yoshi for this cup because it takes 6 fewer frames to choose him on the character select screen than Toad. Yoshi and Peach are both the same weight and Toad weighs 22% less. Having a lighter character enables me to jump higher off CPU players which can make the difference between a large shortcut being possible or not. I only need to jump off a CPU once in Mushroom Cup though. I rolled the dice choosing Yoshi to save just 6 frames since I wasn't sure at the time that Yoshi could make the one jump I would need to make (on the last lap of the last course in the cup).

At the start, I carefully push Luigi out of the way so that I can jump off of DK to get over the left wall and fall down into the tunnel. Both Japanese versions of the game have hit detection on the grass above the tunnel (which, coincidentally, can be taken advantage by abusing checkpoints in an alternate shortcut discovered by Beck Abney and used in RTA runs). All other versions of the game removed the hit detection from the grass and I take advantage of this to fall straight through to the tunnel. It's very difficult to avoid over-shooting the tunnel and landing in the water. By continuing to hold both A and B the entire time I'm in the air, I maintain my AB spin state and am able to spin around quickly.

I land on an item box to pick up a single red shell and begin dragging it behind me soon enough to pick up another item, a mushroom. I then begin a left-facing slide toward the steep wall at the exit of the tunnel. The high parts of the wall cause your kart to tumble if you land on them, but if you bounce off the seam between polygons, you can bounce. I use this property to bounce a second time with enough height to clear the wall. This trick is incredibly precise and very challenging to do even with tools. The precision required of the maneuver is exacerbated by the fact that I need to manipulate release the red shell at a specific angle and manipulate a mushroom as I release it. By releasing the red shell at just the right time and angle, it angles around the edge of the course (without running into the wall) before returning to the center of the course (where it would follow the centerline until it gets near a CPU player). I use the mushroom to allow me to get to the center of the course just as the red shell reaches there. This throws me up and over the wall and I ensure that I land directly on the item boxes. In case you're wondering, a green shell does not provide enough height to get over the wall and I could not get the blue shell because I'm in 1st (and the hot air balloon is too far away to be useful). On the next lap I use the same strategy. On the second half of the final lap I no longer need a red shell so I pick up just a mushroom. The single bounce jump over the wall was only possible because of the mushroom and it's actually slightly slower than the double bounce (because I travel wider around). Because of Luigi's placement though, I was forced to use this strategy as he was otherwise in my way.

Strategy Table
Item / CPU Usage Course Odds
RNG Probability N/A 5% (In 1st) 10% (In 1st) 5% (In 1st) 10% (In 1st) 10% (In 1st) 1 in 400,000


Course 2/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
1'06"03
(21"98, 21"90, 22"15)
1'06"40 (Xenos)
(22"45, 21"87, 22"08)
1'09"11 (Beck Abney)
(23"03, 23"05, 23"03)

This is the only race in the run that does not use any type of shortcut or course-specific glitch. It's a simple course design (although the uneven terrain makes for some very challenging driving) with high walls and there is currently no hypothesis for performing a shortcut. Still, I use a novel strategy. I begin the race in an AB spin state. I do this because when I get to the items I need to turn around to fall back into 2nd place so that I can get a better item. If I were to drive normally toward the items, I would have to slow down before I could turn around and that approach takes about 0.5 seconds longer in this particular case. I'm able to stay in 2nd for both items and I chose to pick up a star for both. While using a star, it's still possible to pick up other items whereas a super mushroom does not allow this. A star also lasts 10 seconds while a super mushroom only lasts 7 seconds. Lastly, a star provides a 1.2 multiple to my speed while allowing me to still drive normally (although it's hard to drive as tightly as normal because turning capability is not increased and MT charging takes a set number of frames) with speeds up to to 100kph whereas using mushrooms requires special sliding techniques and provides a smaller increase (with speeds in the 85kph range).

In lap 2, just as my second star is wearing out, I'm able to initiate the single mushroom I picked up and slide through the item boxes to pick up another mushroom. Single mushrooms are the only speed items I can pick up in first, so I manipulate these for every item box on the rest of the race and I slide whenever possible to derive the maximum speed benefit from each mushroom. On the very last mushroom of the race, I use the Xenos slide technique to gain slightly more speed. From the lap times you can see that getting two stars saved time on the race, but not by as much as you may think. The savings was at least 0.50 seconds but less than 1.00 seconds. It's hard to know exactly because some time is lost on lap 1 of every race because you start behind the finish line and from a stop and on the end of lap 3, I use a mushroom earlier than I would have used if I had more laps to race.

Strategy Table
Item / CPU Usage Course Odds
RNG Probability 5% (In 2nd) 5% (In 2nd) 10% (In 1st) 10% (In 1st) 10% (In 1st) 10% (In 1st) 10% (In 1st) 10% (In 1st) 10% (In 1st) 10% (In 1st) 10% (In 1st) 10% (In 1st) 1 in 4,000,000,000,000

Course 3/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
1'10"37
(24"23, 23"49, 22"65)
None 1'14"06 (Beck Abney)
(26"47, 23"63, 23"96)

Koopa Troopa Beach (KTB) is another race where I use no unintended shortcuts, I take the fastest intended route and also take advantage of a finish line glitch to get 8th place items while in first place. Going to the left of the turtle rock is the faster path but I initially go right a bit to pick up an item box and then head back left again. When going left, the game's path count does not increment as quickly and I'm able to trick the game into considering me to be in second long enough to manipulate a star from the item box. I then drive a standard path around the course and ensure that I pick up a single mushroom from one of the item boxes. When jumping into the cave path, I do not jump but instead charge a MT so that I can release it when I land. You cannot charge a MT while you're in the air but you can maintain the charge and release it when landing. Once the star expires I trigger the single I'd picked up so that I can slide through the item boxes. I pick up a ghost so that I can select an item as I cross the finish line. Ghosts function just like normal item boxes (although you have a 20% chance of receiving nothing) so the items you can get depend on what place you are in when you trigger the ghost. I trigger the ghost on a mismapped polygon on the finish line that considers me to be at the start of the lap rather than the end. I use this to pick up a star for both this lap an the third lap. RTA runs do not use a ghost, they drive up the ramp in front of the finish line to pick up an item box close enough to just time their selection. The ghost strategy is faster.

The water moves in and out on a set schedule and because of the sequencing and timing of the items I pick up, I can't substantially alter the time that I drive in the water. Thus, the water is at its deepest exactly as I am in it on lap 1, unfortunately. Even if I were substantially faster, I would still drive through deep water since it already begins receding as I exit. On lap 2, I'm lucky and hardly touch the water. On lap 3, I get a mushroom instead of a ghost and then shroom slide toward the finish line. The lap timings may seem a bit odd but keep in mind that on lap 1 I had to slow down to pick up a star and I had to drive through deep water near the finish line (and quick math shows that 20% faster speed for 10 seconds saves about 2 seconds, so the star was still worth slowing down for on lap 1). On lap 2 I got a star without slowing down and got to drive on dry ground but I slid relatively far to the left to avoid the water and set up for the next turn. On lap 3 not only did I not have to wait for the star but I also got to use an extra mushroom and take a direct path into the water and toward the finish line to complete. So the lap times do make sense.

Strategy Table
Item / CPU Usage Course Odds
RNG Probability 10% (In 2nd) 10% (In 1st) 5% (In 1st) 24%* (In 8th) 10% (In 1st) 5% (In 1st) 24%* (In 8th) 10% (In 1st) 10% (In 1st) 1 in 1,388,888,889

Course 4/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
48"92
(15"79, 22"68, 10"45)
49"16 (Xenos)
(16"18, 22"57, 10"41)
1'05"51(Beck Abney)
(26"37, 14"43, 24"71)

Kalimari Desert is unique in that it has an easter egg shortcut in it. If you drive counterclockwise through the train tunnel while using a star, the lap count increments as you pass by the finish line. This trick works on every lap other than the final lap (i.e. you cannot finish the race inside of the tunnel with this trick). With such a massive shortcut available, I'd love to use it more than once. Two key attributes limit my ability to use this skip repeatedly. First, if you drive back and forth over the spot in the tunnel with a star active the lap will increment and decrement back and forth. You have to lose your star state to pass back over the line without decrementing the lap. Second, the only way to use two stars without returning to item boxes is to trigger one immediately and pick the second one up in reserve. To use this I would either need to turn around (and initiate on lap 0) or wait for the CPUs to reach the last item boxes on the lap.

Thanks to a CPU jump lapskip discovered by Xenos, I really don't need to worry about getting two star shortcut laps. I race ahead to the first set of item boxes and pick up triple shrooms while waiting for the CPUs to catch up and then a star while I'm in second. This way, I can shoot a green shell through the tunnel that I will use later to jump the fence. I drive into the tunnel and stop as soon as I pass the extended finish line. I shoot the shell as I turn around at just the right angle for me to chase it down. I use the star to trigger the lap and then drive into a polygon seam that allows me to tumble and lose the star (something I serendipitously discovered while doing a test run). Now I can drive back across the line without decrementing the lap. I chase the green shell, hit myself into the item boxes. I need one mushroom but I may as well use the first one I get to obtain top speed. After crossing the finish line I must wait for a heavyweight CPU so that I can jump over the wall and back across the finish line. By going past the wall before going backwards across the finish line, I am able to trick Lakitu into putting me down on the finish line while the game did not decrement my lap. If I had landed further to the left I would have been placed in front of the finish line and I would have had to drive forward but I landed at the exact point that would trigger my lap the moment Lakitu dropped me.

Strategy Table
Item / CPU Usage Course Odds
RNG Probability 5% (In 2nd) 5% (In 1st) 10% (In 1st) 10%* (In 1st) N/A N/A 1 in 40,000

In-Game Time:
02'28"18
RTA Timing*:
4:14.22
TAS Timing:
4:30.22
Cup RNG Odds:
1 in 1.09E+14
*From power on through finishing Mario Raceway


Course 5/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
1'21'93
(29'67, 26'67, 25'59)
1'28"40 (Weatherton)
(31"61, 28"79, 28"00)
1'28"42 (Beck Abney)
(31"59, 28"79, 28"04)

Similar to MMF, I begin by holding an AB spin state so that when I get to the items, I can immediately turn around. I need a mushroom to smoothly jump off of a player down to the track below but I want a star so that I can get the largest speed boost and also drive through cars. There's a well-known shortcut on this course that uses Lakitu to get down on the lower track, you'll notice that I don't use this because Lakitu takes about 5 seconds and it's not worth the wait when I have other options (in GP mode at least). So I land on the lower track a bit behind the standard Lakitu strategy but I have a star so it's faster overall. I then pick up item boxes to get ghosts sot that I can drive more direct routes. Depending on the situation, I manipulate additional ghosts but ultimately usually get a mushroom for the boost before heading to the item pit stops again. One exception to this is at the end of lap 1 where I get a single green shell rather than a mushroom. The green shell gives me enough height to clear the guardrail and grass to land on the course below. I land as early as possible so that the guardrail deflects me along the course as I continue to tumble. My mushroom in reserve allows me to recover my speed quickly.

At the end of lap 2, Bowser is almost perfectly positioned so that I can jump off of him (and avoid the time loss from the green tumble). I do give him a small nudge to push him forward and over. I jump as early as I can while still landing on the course with a good angle. Throughout the course I'm repeatedly doing very tight MTs with zero margin for error next to the guardrails. For the last turn, I tried three different strategies including skipping the items entirely. They were all very close but, picking up one last shroom was the fastest. On the last slide, I again use a Xenos slide to slightly increase my speed.

Strategy Table
Item / CPU Usage Course Odds
RNG Probability 10% (In 1st) 30% (In 5th) 5% (In 1st) 24% (In 1st) 10% (In 1st) 5% (In 1st) 4% (In 1st) 8% (In 1st) N/A 5% (In 1st) 4% (In 1st) 8% (In 1st) 10% (In 1st) 1 in 400,000


Course 6/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
24"05
(11"11, 7"19, 5"75)
N/A 25"57* (Beck Abney)
(11"94, 8"04, 5"59)
*This time is from 1st place. RTA individual level runs are performed from 8th place (which is not possible during a cups run). The best RTA time from 8th is 24"97

This is the first course that ends up being slower than time trials because I never pick up any items. The course has a broken checkpoint system that allows me to trick Lakitu to teleport back behind the finish line without decrementing the lap count. The trick requires that you trigger the checkpoint on the bridge and then enter the snow without touching the road checkpoints. You can go either to the left or to the right but the out-of-bounds section on the left is a bit closer, so it's faster to go left. I begin the race by AB spinning clockwise so that I can begin moving backwards as quickly as possible while also giving me enough space to turn to the left. The CPUs seem to be in my way but they actually don't slow me down as I bounce off of their heads. In fact, as I land in an AB-spin turn, I am able to turn more quickly because landing in this state triggers a maximum turn. This is a recent discovery that I had and it saves about .06 seconds when used for a 180 degree turn. Normally this is triggered by jumping before AB-Spin turning, so I call it an ABR turn or "tornado" turn. Tornado may seem a bit excessive for a slightly faster turn, but this same property allows you to continue turning tightly in the air and I've been able to complete full 720 degree turns in the air while jumping off of a CPU. I'd known about the airborne "tornado" jump for many years, but I only realized this year that the same property could be triggered (and was useful) on the ground.

As soon as my mushroom wears off, things get awkward. I have to stay in the snow but the snow is bumpy and the out-of-bounds section is too close to make a MT worth performing. So, I hop to avoid the slow-down caused by the snow. I also have to avoid an invisible out-of-bounds section on the left side as I hop around it toward the far left of the finish line. If I do not move all the way to the left, I will be placed down in front of the bridge and lose time as I have to reverse further to ensure I don't trigger the wrong checkpoints. As Lakitu puts me down I rev my engine to the max and AB spin turn backward until I have enough of an angle to move forward smoothly. I triple-tap A to accelerate quickly and again head to the same leftward portion of the finish line. On lap 2, I drive more directly toward the finish line. This time being placed ahead of the finish line is a good thing as I don't have to drive as far to complete the race. To spice the race up a little bit, I manipulate the 8th place CPU to get a lightning bolt (a 1/100 probability) by incrementing the RNG A/B/R frames counter before the race began. So, I didn't increment the RNG value but rather the 0 to 99 index used to offset the RNG Value when selecting from the item table. Because I'm out of bounds I am able to shock dodge and do not lose any time.

Strategy Table
Item / CPU Usage Course Odds
RNG Probability N/A N/A N/A 1 in 1

Course 7/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
18"14
(11"33, 3"64, 3"17)
45"99
(13"78, 22"58, 9"63)
1'04"65 (Beck Abney)
(21"25, 22"11, 21"29)

Although I developed a number of new shortcuts and strategies for GP mode during the making of this TAS, Choco Mountain (CM) is special because the shortcut I discovered here (details in this thread) is also achievable in time trials. In fact, I first hit it in time trials (with tools). The "Weathertenko" is extremely precise and is the only time trials shortcut in the game that saves substantial time on each lap but has not yet been hit 3/3. The trick requires a mushroom due to the height and angle of the jump required and the width of the track at this part. The skip is done by tricking the game into thinking you've made more progress into the lap than you actually have right as you cross back next to the finish line, while in the air. This is done by briefly "landing" at the very top of the wall for one frame which advances the path counter to indicate that a I've completed a quarter lap (the top of the wall is mapped to the same path segment as the exit of the tunnel). I then travel backwards by the finish line while still in the air and close to the wall (so I'm over the slanted wall but not the driving surface) this allows me to avoid the lap decrementing while also getting credit for the full lap progress because the game thinks I've made substantial progress on the lap already.

As I mentioned above, I need a mushroom to do the lap skip so I need to go to the nearest item boxes. I tried a variety of other strategies to use a CPU jump on lap 1 to get a lap skip right away but not only was there not enough room for me to do it but I would then only be able to pick up single mushrooms (being in first). So, if I were to do a lap skip right away off a CPU then I would need to make two trips to the item boxes. Instead, I race directly toward the item boxes. Because the course is thin, I'm able to quickly turn around by running into the wall and tumbling. I do this just after running into an item box so that I can pick up a single mushroom, which I use to boost back through the item boxes and toward the start. As I head back, I drop out of first so I can finally get a triple mushroom. As I rounded the corner back to the start, I was presented with a tall order or making a 90 degree turn on a thin track without losing time. In the worst case, I could have slammed on the brakes or tumbled to stop and AB spin to face the inner wall but I was able to snag the back of my kart on the outer wall to slide smoothly into position and trigger one mushroom for my first lap skip. I jump as I collide with the wall to propel my kart upward. The angle and speed requirements are very precise because I need to get just enough height to barely touch the top of the wall without getting picked up by Lakitu. As I hit the top wall, I adjust my joystick so that I am knocked just far enough to the left to land beyond the finish line without having decremented my lap. If I land any closer to the line, the lap does not count.

When I land from the lap skip, I need to get back to the opposite wall again. Turning around (twice) would take too long so simply reversing is the fastest way. I perform another lap skip and reverse again for the final lap skip. When landing from the third lap skip, I just need to get across the finish line so I AB spin in reverse to turn quickly toward the finish line while in reverse. It's again not worth turning to go forward as I'm already angled more backward and reverse acceleration is actually very good (until you hit the set 12kph speed limit).

Strategy Table
Item / CPU Usage Course Odds
RNG Probability 10% (In 1st) 20% (In 4th) 1 in 50

Course 8/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
24"06
(10"55, 7"77, 5"74)
Unknown* 33"18(Beck Abney)
(12"41, 10"60, 10"17)
*Xenos completed a test run using the red shell strategy but the movie has since been lost

Mario Raceway has a famous shortcut where players use a mushroom to jump over a wall about halfway through the course. In 150cc GP it's even possible to make this jump without a mushroom by executing a perfectly timed MT and jump. As Xenos first demonstrated, in GP mode we can make use red shells to jump over any part of the walls. RTA runners slow down to drop out of 1st and hope for triple red shells so that they can jump forward over this wall three times. For this TAS, I tried two different strategies. First, I quickly picked up two sets of triple red shells and used the strategy that you see in the TAS. I then tried not slowing down at all and just picking up a single red shell, which requires me to return to the item boxes on the next two laps to get two more single red shells. This strategy ended up being one frame faster. I was surprised they were so close and somewhat disappointed that the more frantic 5-shell strategy had been beaten. I worked a bit more on the last lap and was able to make the 5-shell strategy faster.

I begin in an AB-spin state so that I can quickly turn around after hitting an item box. I travel backwards just long enough to get into second, manipulate a triple red shell (I added ABR frames before the race to ensure the first frame I could hit Z gave me the triple reds) and equip the red shells the frame I hit the next item box. I then manipulate another set of triple reds as I shoot my first red shell to the right so that it hits me as it heads back toward the road. I time the hit so that I drop below the height of the wall before the other side which causes tumble to the ground (if I don't tumble down, I will bounce on the ground and lose time). I shoot my next red shell as I begin to tumble and angle it so that it quickly turns back and follows the wall before re-centering after the finish line. I use this path to throw me back over the wall. This time, I triple tap into an AB spin so that I can quickly turn around as soon as I'm far enough from the wall to shoot the red shell without it hitting the wall. I have a more direct angle on the wall this time so this time I shoot my next red shell (the first of my second set of triple red shells) early enough so that it can go through the wall (it seems the hit detection has not quite loaded fully). The red shell still circles back to the center of the road (basically teleporting the final distance) and I use this to throw me back over the wall. This time I can afford an even more direct angle at the wall as I aim to hit the finish line directly to finish the race. This is incredibly precise and even a change of 2/127 on the control stick for one frame stops the lap from counting.

After finishing the race, I have one red shell left and you can still use equipped items after the race finishes. So, I used the last red shell to shoot right at the camera and then circle the track.

Strategy Table
Item / CPU Usage Course Odds
RNG Probability 20% (In 2nd) 20% (In 2nd) 1 in 25

In-Game Time:
02'45"92
RTA Timing*:
4:31.83
TAS Timing:
4:47.80
Cup RNG Odds:
1 in 6.67E+12
*From power on to finishing Bowser's Castle
Course 9/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
11"34
(2"99, 4"36, 3"99)
12"14 (Van Helsing)
(2"85, 4"91, 4"38)
16"85 (Myles Bukrim)
(5"75, 5"72, 5"38)

Wario Stadium is another course with a well known shortcut, the walls are so low here that they almost seem to be designed to be jumped over. My guess is that they were designed to be jumped but more likely using the feather jump item state that is still in the game memory (though not directly accessible). We can clear the walls by jumping as we hit them. It's easy to jump over the first wall and much harder to jump back over. I begin by using Donkey Kong to jump over the first wall and maintaining my AB spin state so that I can spin back around quickly and jump the big wall back. You may have noticed that this is slower than Van Helsing's first lap. This is unavoidable as I am using Toad, who is lighter than Yoshi (something that will be a great asset later in this cup) and gets thrown higher into the air by Donkey Kong. When I return the CPUs are already gone, so I drop my AB spin state and turn fully to the left while hopping to turn as tightly as possible. I did try staying in the AB spin state and just spinning back and forth over the wall, but it takes too long to recover my speed without mushrooms. The rest of the race is all about turning sharply while maintaining speed. On the final wall jump, I trigger an AB spin state as I hit the wall so that I can turn more sharply and save an extra .01 seconds. This would not have been faster on lap 2 because I would lose too much speed at the start of the last lap.

Strategy Table
Item / CPU Usage Course Odds
RNG Probability N/A 1 in 1


Course 10/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
47"92
(23"83, 17"86, 6"23)
1'28"18 (Weatherton)
(25"59, 31"46, 31"13)
1'32"66 (Beck Abney)
(30"74, 30"94, 30"98)

Sherbet Land is a course that no RTA runner has ever hit a shortcut on and yet it does have several (very challenging) options. In my test run, I used a mushroom to jump off of Bowser in front of the cave entrance and over the water to skip the cave (which saves about 6 seconds). In this run, I use the island to take an even bigger shortcut that saves about 7.75 seconds. So although I cut out a much larger section of the course, I only save an extra 1.75 seconds. A lot of the time I save is lost to the time required for Lakitu to retrieve me. Lakitu takes longer to retrieve players when they are in water and the water in Sherbet Land takes even more time because even after Lakitu lets go of me, my character is frozen in an ice crystal. In total, this process takes about 7 seconds. Another benefit of the island shortcut is that it breaks the level's checkpoint system and creates a finish line glitch on a mismapped path polygon on the right wall by the finish line. For laps 2 and 3 I do a lap skip that requires a CPU jump. You may wonder why I don't do the lap skip on lap 1 and there are a few reasons. First, my start boost does not last long enough for the first CPUs to make it to the required location. Second, I cannot get to the first set of item boxes (go get a mushroom) and back to the required spot in time for any of the CPUs to still be there. Third, even if I could get the skip on lap 1, I would then have to wait for the CPUs to copmlete their lap to be able to get additional lap skips.

The island shortcut has the most complicated item requirements of any shortcut in the game. The checkpoint that I need to reach on the other side of the island (the one that causes Lakitu to put me on the opposite side of the course) is not close enough to just jump to. In fact, it's not even close enough to just hit myself to with a shell. The checkpoint is just barely within reach if I hit myself with a shell while shroom sliding. This means that I need to myself to the island with shells equipped and mushrooms in reserve. To get there quickly I need to jump off of a CPU (it's possible to get there by hitting myself with a red shell but the setup for that is very slow). So, I have to pick up a mushroom and use that also pick up two additional items while that mushroom boost is still active to be able to do a CPU jump and also gain the items I need. When I land on the island, I immediately fire the red shells towards the side of the island closest to the checkpoint that I need jump to. Thankfully the red shells angle back towards the course in a way that makes it possible for me to chatch them. I then fire the first of my triple mushrooms so that I can slide into a collision with the red shells.

When Lakitu puts me down, I still have two of my mushrooms left. I used the first immediately and the second at the last possible frame before I hit the item box. Here I pick up a boo so that I can take advantage of the broken path polygon next to the finish line. I grab triple mushrooms to get just the right number for the two lap skips I am about to do. I am way ahead of all of the CPUs and have the items I need so I've got some time to kill. Queue the only play-around section of the entire run and enjoy. The lap skip works by progressing beyond the first corner and then jumping back towards the finish line without going over the driving surface before that corner. By staying over the wall, the game does not update my path as I move backward. So, I can sneak around the finish line and advance to the next lap. After landing, I use my second mushroom to get into position for the next heavy weight so I can finish the race with a 6 second lap.

Strategy Table
Item / CPU Usage Course Odds
RNG Probability 10% (In 1st) 20% (In 2nd) N/A 5% (In 1st) N/A 5% (In 1st) 4% (In 8th) N/A N/A 1 in 500,000


Course 11/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
58"32
(23"80, 26"93, 7"59)
1'13"35 (Weatherton)
(24"49, 26"43, 22"43)
1'31"57 (Mark Jones)
(33"43, 25"31, 32"83)

Here's a race where every lap is completely different. I begin lap 1 by racing ahead to the item box and then turning around to drop out of first before selecting my item. Bumping the wall helps me turn more quickly. The item boxes are just far enough to make normal driving faster than holding an AB spin. I use my first mushroom from the triple to get up onto the ramp. It's possible to get up to the ramp by hitting a CPU without using a mushroom but you spin out after hitting a heavier CPU like this and the spinout animation continues even after you have landed on the ramp. Even after recovering, you have to begin accelerating from a stop and also do not have any items in reserve. So, it's faster to spend the time driving up to the item boxes. When I land on the ramp, I still have an active mushroom boost so I jump directly into a slide. The mushroom does wear out before the boost panel but only briefly. I jump off the left side of the ramp because there are some strangely mapped polygons on the edge of the water over there. It's actually possible to have Lakitu place you directly at the finish line but I need to pick up a new item so I take the slightly inferior Lakitu placement so that I can pick up an item. I use both mushrooms before hitting the item boxes and pick up a boo. This is another course with a mismapped path polygon on the side of the finish line (both the left and right side). The right-side mismapped polygon is faster to access for what I'm doing. I need a blue shell so I trigger the boo on the mismatched polygon. Instead of just driving normally though, I purposely spin out just as I use the boo so that I cancel my invincible boo state. Thankfully, I get to keep my blue shell.

Now that I have a blue shell and am not invincible, I am able to use the blue shell to hit myself up onto the wall under the ramp. Because I am in first, the blue shell turns back and hits me (whereas a red shell would not home in on me). When Lakitu picks me up under the ramp, he places me on top right near Luigi. By jumping off Luigi I'm able to jump the entire gap and land back on the track. I ensure that I land directly on an item box as I will need a mushroom for an incredibly large jump. theyounggun, a Mario Kart 64 player discovered a shortcut on this course using high speed gameshark codes. Players began trying to hit the shortcut using 2-player mode so that they could position a heavyweight in specific locations. Soon players were hitting the shortcut (in 2player). Eventually Beck Abney figured out what was going on with the checkpoints. The shortcut works on both sides of the course but requires that you pass over certain checkpoints but not others. I am able to jump off of Bowser earlier and trigger the lap skip earlier by jumping to the left side of the finish line. However, Bowser is driving towards the finish line, which is the same direction I need to jump. I need to jump off Bowser and turn in mid air to trigger the correct checkpoints while also crossing the finish line to trigger lap 3. When Lakitu puts me down, he is confused by the checkpoints and places me behind the finish line but I'm on lap 3 already so he enables me to completely my lap in 7 seconds.

Strategy Table
Item / CPU Usage Course Odds
RNG Probability 5% (In 2nd) N/A N/A 5% (In 1st) 12% (In 8th) N/A N/A 10% (In 1st) N/A N/A 1 in 33,333

Course 12/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
48"34
(37"38, 5"52, 5"44)
none 1'47"17* (Beck Abney)
(36"43, 35"36, 35"38*)
*Estimated time because console was reset

Bowser Castle, where a banana bunch is the weapon of choice... err, yes, of course. In my test run, I was able to jump over the green Thwomp up to the bridge area off of a CPU jump. While doing this run though, I found a lap skip that uses a CPU jump. Similar to SL, I can't hit it on lap 1 (the course is too thin to turn around on with my start boost and the items are too far away). So, I need to get to the end of lap 1 with at least two mushrooms (and ideally three) far enough ahead of the first heavyweight to set up for the lap skip and with another heavyweight spaced back just right for another lap skip. When I began TASing this course, I did not yet know that I could influence the CPU items using ABR frames. So, my safest option for providing maximum control over the CPUs was a banana bunch. With a banana bunch in tow, I could focus on driving as well as possible and then later go back to add banana drops (and throws) without affecting my movement. This also provides the side benefit of lag reduction on console (which lags more during races than Mupen64Plus).

I begin by racing forward to the item boxes. With the first item I need (a banana bunch) being available while I'm in first, I do not need to turn around to drop backward. So, I stop before the last item box as I wait for the item roulette to allow me to select an item. I manipulate a banana bunch as soon as possible and immediately equip it. I triple tap A to accelerate and hit the last item box just after making room for a reserve item by equipping the banana bunch. I jump to avoid passing Yoshi (while maintaining my engine rpms) so that I can obtain a triple mushroom while in second. From here, I can rely only on clean driving to pull away from the pack. You can really see the rubberbanding AI at work on this level though. When CPUs are outside of my view, they are able to drive through obstacles and turn without slowing down. This is particularly beneficial for CPUs on this course, with thwomps and tight corners at every turn. I won't go through each room of the TAS but I'll point out some key sections.

When I'm exiting the long, sloped corridor after the second room of thwomps, I puprosely clip the corner. This is necessary for me to line up far enough to the right of the room to both avoid the last sliding thwomp and also begin the left turn early and sharply enough to avoid hitting the far wall. Also, if you look closely, the corner I hit is unusual. Most corners in this level are exactly 90 degrees but this one has an angled bevel section. The 90 degree corners, if clipped, grab your kart and slow you down while turning your kart. The amount of slowdown from a 90 degree corner is not worth the tighter cornering unless you're turning a full 180 degrees. This beveled section allows me to turn my kart without getting slowed down.

Exiting the bridge before the stairs normally throws karts into the air but I avoided this by sliding over the exit at a slight angle. Heading into the stairs, I experimented with clipping the corner and not only was it nearly impossible to get the clip but, once I got it, the speed loss was (again) not worth the sharper turn. At the bottom of the stairs, I need to make a 180 degree turn into the courtyard and I was finally able to use a corner clip to save some time. By clipping the first corner, I'm able to take the corner more agressively and the speed loss actually saves me additional distance for a net benefit to my progress.

Heading into the spiral I release the rest of my bananas. I had tried releasing these in many different times and locations. This particular configuration does not slow down Bowser (in fact, he speeds up slightly for some reason) and it positions DK optimally for a second lap skip. The optimal way to drive the spiral section is something which RTA players have often debated. From my testing, the best approach is to bump the inside wall on a flat section to turn me a bit more and then to bump slightly against the far wall as I complete the turn. It's possible to hit the far wall just once and get thrown hard toward the left side of spiral exit but this was slightly slower from my testing. Another benefit of the timing of my wall bumps is that I have time to execute one MT before the edge of the ramp. This MT saves about 0.2 over alternate methods.

As I begin lap 2, I need to get onto the wooden bridge and turn around as quickly as possible. I triple tap B and initiate an AB spin to turn. The lap skip works by jumping from the wooden bridge and landing behind the finishline without ever going over the driving surface. Thankfully the distance is close enough to make off a CPU jump and also, it's possible to turn slightly in the air while bouncing off a CPU. As you can see, I just barely had enough time to turn around and boost before hitting Bowser. I really couldn't have cut it closer. I maintain my AB spin state even after landing so that I can quickly turn and get into position on the bridge again, this time for DK. And, again, DK is perfectly timed for me to barely be able to do the lap skip. I couldn't have asked for better CPU placement here. When landing from the DK jump, I'm able to land partially in the wall and get snagged so that I can turn around and use my last mushroom to cross the finish line. Falling in the lava after the race didn't lose any time so I kept that in for comedic relief. "I'm the best!"

Strategy Table
Item / CPU Usage Course Odds
RNG Probability 5% (In 1st) 5% (In 2nd) 1 in 400

In-Game Time:
02'25"41
RTA Timing*:
4:12.77
TAS Timing**:
4:28.78
Cup RNG Odds:
1 in 5.33E+07
*From power on to finishing Rainbow Road **From power on to the gold trophy saving to SRAM


Course 13/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
15"34
(8"01, 3"77, 3"56)
20"91 (Weatherton)
(10"48, 6"21, 4"22)
25"09 (Beck Abney)
(11"54, 7"34, 6"21)

I completed DKJP and was halfway through Banshee Boardwalk before I found a way to substantially improve the first lap of DKJP. I returned to the course to implement the new strategy. In GP mode you always begin the first race of a cup in 8th place. For DKJP, this means I'm nearly inside the cave. Given that the shortcut requires me to turn back into the cave, this seems like it would be helpful. In reality, it's hard to turn around quickly enough to benefit from this placement. In my first version, I just turned around as quickly as I could on the ground. In my updated version, I purpsely run into the cave wall so that I can agressively ricochet towards the wall I need to jump through. The ricochet was challenging to optimize but well worth the effort. The most challenging part was converting enough of my speed into the direction I needed to travel as the ricochet was sending me across the cave. When I land, I'm still moving slightly due to my low tumble which is a problem because I'm not able to initiate an AB spin state while moving. To fix this, I jump which immediately slows my movement and allows me to turn quickly.

From here, I am able to get a mushroom from the closest item box. I'd like to use it right away but it's better to wait until after my next lap skip. I was able to find a polygon seam at the edge of the cave road that grabs my kart and allows me to triple tap A while aggressively turning. This gives me just enough speed to make the jump to the lap skip. When I land I still jump to compensate for my low tumble and although I don't leave the ground, the jump helps me turn. I shroom as soon as it will benefit me (any earlier and I'd be sent out wide). I manage to take an unusually tight turn while AB spin shrooming and I go airborne very early so that I can land as soon as possible. I'm not sure how else to describe it but you can see how soon I leave the ground and how closely I come to touching the ground again as I clip through the wall. This saved substantial time.

On lap 3 I'm able to take this corner even more agressively as I do not need another item. It's very slightly (~0.1) faster to take the road to the finish line rather than the shortcut. This is partly because I get to benefit more from my mushroom while staying on the road and partly it's because turning sharply enough to slip through the wall loses some speed. Oddly, getting airborne on the last section of the course is faster than sticking to the ground (by ~0.02). I think this is because the mushroom wears out while I'm in the air and my regression back to normal speed is delayed while I'm still in the air.

Strategy Table
Item / CPU Usage Course Odds
RNG Probability 10% (In 1st) 10% (In 1st) 1 in 100


Course 14/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
28"73
(9"27, 9"73, 9"73)
29"43 (Weatherton)
(9"33, 10"33, 9"77)
30"60 (Beck Abney)
(9"33, 10"67, 10"60)

Yoshi Valley has a particularly odd lap skip triggered by jumping the fence and hitting the far wall. Basically, we can jump around the finishline so that the game thinks we've make it further into the course than we have. By bouncing behind the finish line. Oddly though, Lakitu puts us down past the finish line and the next lap still counts. This skip has its limits though, if you are put down too far into the next lap the game will no longer award you with a lap. This is important because Lakitu puts you down along the road based on how far you moved forward on the prior lap. So, if you don't turn sharply enough each lap, by the third lap the skip may not work any more. On my test run, this required me to jump over the fence by bouncing off of it rather than jumping over it on lap 2 (to avoid moving too far forward). On this version, I was able to turn tightly enough. This is not easy to do because I need to charge and release a mini turbo and this gives me just barely enough speed to get over the fence while driving directly at it (rather than pointing backward).

I experimented with lightning to see if it was worth manipulating the CPUs to zap me while I'm falling. Unfortunately, getting hit by lightning does not change your fall speed (it only changes your horizontal speed). Also, I was not able to get the 8th place CPU to use their item at a convenient time to see if I could randomly gain some time from getting hit by lightning.

Strategy Table
Item / CPU Usage Course Odds
RNG Probability N/A N/A N/A 1 in 1


Course 15/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
45"10
(33"48, 6"57, 5"05)
1'29"80 (Weatherton)
(33"36, 23"99, 32"45)
1'39"84 (Matthias Rustemeyer)
(33"66, 33"17, 33"01)

In my test run, I performed a large CPU jump to the bat house to skip half of the second lap. I've done this same jump without tools on console by using two player mode and placing Bowser stopped in the corner so I could jump straight off of him but it's hard to do even with that setup. To date, there is no RTA shortcut record on this course. In May of 2014 I discovered a lap skip on this course. This was before I discovered the BC lap skip (which I just found this year). By progressing past the first straight section, I'm able to trick the game into allowing me to jump behind the finish line and have the lap count. Just like the BC skip (and SL skip) I have to ensure that I do not cross over the driving surface until I'm behind the finish line.

This course took me three or four retries to get right. Just like BC, I need to complete the first lap with at least two mushrooms in reserve and far enough ahead of Bowser to have time to turn around and jump. My first completion was not fast enough, although I finished the first lap in 35"28 I was only about 2 seconds ahead of Bowser which was not enough time to stop, turn around and jump off of him. Also of note in that 35"28 is that I took the left-side path in the bat house. I tried very hard to make the left side faster than the right but, in the end, it's about a frame slower. I went back to the start of the race and was able to improve my item pickup process by about 0.4 seconds by AB spinning to get my eighth place item faster. This also make it just as fast to get two eight place items. My take was that a half second was not going to be enough time save to ensure that I could jump off of Bowser. Since doing the initial version of the race, I also now understood how to use ABR frames (I used these, in part to save some of the time picking up items). With my ABR knowledge, I had some confidence that I could affect Wario and DK's movement enough to roughly time their arrival to when I was ready to make the second lap skip. With this knowledge, I began working on a version of BB where I picked up a star and then a super mushroom.

Using a star, my movement was so much faster that it was no longer effective to do nearly as many MTs as I had done in my first version. The extra were either not possible to fit in or provided such a short boost before I had to do the next that I had to substantially simplify my driving. I'm not going to give a full description of the lap but I'll touch on the highlights. When sliding up the the ramp after the large fish flies overhead, it's very challenging to avoid air during the flat section. This is especially challenging when moving at 90kph. The key is to move at an angle relative to the ramp as the ramp ends. This is easier to do while moving outward, away from the turn but the best outcome is to avoid air while moving inward, toward the turn. This was very challenging to do, especially while charging a MT in time to release it into a tight corner.

When dropping off of the broken seciontion of the pier, I'm stilling carrying higher than normal speed. As a result, I'm not able to get a MT charged in time to release it while entering the next corner. I tried a number of options but the fastest was to just hold a slide through the entire corner. The rest of the course probably speaks for itself so I'll jump right to lap 2. After crossing the line, I triple tap B and use an AB spin turn to get into position. I have more than enough time now (1.80 more seconds than my best prior completion). I'm able to let the camera pan behind me (something which I have very little control over) so that I can see where I'm jumping. When making the jump, I'm able to clip the edge of the fence so that I can immediately turn around and use a mushroom. You can see that I'm cutting things tightly because DK is visible on the road behind me before I even use my next mushroom boost. I purposely bump the wall lightly to lose my boost state so that I can turn around more quickly. This time I have no time to spare and immediately jump off of DK. I get thrown out around the driving surface just barely far enough for the lap skip to count. As I land, I still have some time left on my super mushroom so I'm able to use a fourth mushroom. I get a lighter snag on the wall this time because I do not need to enter another AB spin shroom state (which can only be done from a stop).

Strategy Table
Item / CPU Usage Course Odds
RNG Probability 5% (In 2nd) 5% (In 2nd) N/A N/A 1 in 400

Course 16/16 This TAS Time Next Best TAS Time RTA Record Time Course Map
56"24
(29"74, 14"89, 11"88)
1'02"32 (Weatherton)
(34"95, 13"92, 13"45)
1'36"51 (Beck Abney)
(1'01"90, 21"06, 13"55)

I tried some crazy CPU jump strategies at the start of this race but the checkpoint I need to get to for a lap skip to count is too far back to make that useful. Even if I had been sucessful, I'm not sure it would have been faster (since I would have been placed so far ahead of the items). The strategy in the final run is nearly identical to my test run, so it's somewhat surprising that I was able to save over 6 seconds. The test run was fairly well done but I was able to tighten up every lap and incorporate a new strategy for lap 1.

On lap 1, I turn around and immediately jump into a slide while my start boost is still active. Once I get to the item boxes, I stop and turn so that I can pick up one item (a blue shell) and then drive forward to hit another item box for a super mushroom. Keep in mind that it is not possible to get green shells in 8th place and both blue and red shell hits cause players to tumble very slowly for a very long time (you never come out of the tumble into a normal falling state). In the test run, I used triple reds and triple mushrooms. I chose a blue shell this time because it's faster to equip a single shell than triple shells, it's also faster to shoot one shell than three. The blue shell also can move faster than a red shell. I chose a super mushroom because I will have Lakitu lower me directly onto the item boxes after I do my first lap skip and I need to have my item reserve available and the super mushroom expires after 7 seconds. If I had triple shrooms, I would have to use all three mushrooms before jumping the fence, which is not helpful in my situation.

I shoot my blue shell backward so that it will come back up the middle of the course. I then AB spin around and use my mushroom at the same frame that I am hit by the blue shell. This is a sub-frame perfect trick and relies on confusing the order of operations for the collision and the boost. The result is an odd state where I have sustained a shell hit and am thrown upward but with no tumble. The jump is not very high, but it's enough to clear the fence. As fall I am approaching the finish line and the game still believes I'm making progress on my lap. My lap counts but when Lakitu comes to get me, he brings me back to where I fell off the course. Specifcally, he brings me to the exactly location where I was last over the driving surface. I ensured that this was precisely on the item boxes so as Lakitu puts me down, I pick up green shells. I'm able to do this on the first possible frame because I added extra R frames while in the air so that the ABR counter would put me at triple shells in the item table on tha first frame. (Note: I tested an alternate strategy where I initially reverse so that I can get a mushroom in reserve but that ended up being slower overall).

I then equip my triple shells on the first possible frame and shoot the first one on the first possible frame. After shooting a green shell, there is a brief period during which I am invincible to my own green. I ensure that I hit the green shell on the first frame the it can do damage. As I fall toward the finish line, I shoot one of my two remaining green shells. This not only looks cool but it puts my remaining shell in a better rotation position for the final wall jump. I rev my engine and use AB spin to turn as quickly toward the wall as I can so that I can release the shell as early as possible. I then hit the shell on the first vulnerability frame to make the final lap skip. As I'm placed back on the course, you can hear the blue shell that I hit myself with as it rounds the spiral half a lap ahead of me. It was not destroyed when it hit me because I was not in first place at that time. I fully rev my engine as Lakitu releases me and then execute two quick MTs. This is slighty faster than just one MT at this short distance.

Strategy Table
Item / CPU Usage Course Odds
RNG Probability 15% (In 8th) 10% (In 8th) N/A 5% (In 1st) N/A N/A 1 in 1,333

Possible Improvements

Although all 16 races in this submission are faster than any previous completion, no run is perfect. Over the extended development time of the TAS, I improved my TASing capabilities, switched to BizHawk and iteratively developed a robust Lua script (with contributions from micro500, Beck Abney and adelikat). Our knowledge of the game also improved over this period. Relevant knowledge includes an understanding of how CPU rivals are chosen, how item RNG works (for both the player and the CPUs) and how to directly manipulate it, and how more ways to cancel collisions to achieve large jumps. If an improvement is worked on, Toad should be chosen for Mushroom cup as this will set Bowser as the primary rival. With Bowser as the rival, I could jump off of him on lap 3 of LR directly to the finish line and I would not have to wait as long for him as I did for Wario on lap 3 of KD. KTB could, in general, be better executed as I somewhat rushed this level so that I could see whether the lap skip on KD was possible with Yoshi.

I could have used ABR frames to get some items a few frames earlier. I also have a new strategy on Royal Raceway involving red shell item tumble cancellation. Speaking of cancellation, there is a new set of cancellation jumps that we are just beginning to understand. It is possible to cancel tumbles caused by certain obstacles by spinning out. This includes Chain Chomps (confirmed) and (theoretically) the KD train and TT vehicles. I say theoretically because it's still not been done but it seems plausible because those obstacles put you in the same state as the chomp. There is even one type of spin-out jump that I have personally experience during a 4-player match in October of 2015 in which I triggered the "Large feather jump" state that is still in the game code. The feather item was in the pre-release versions of the game and can be seen in some screenshots. The large version of the feather jump triggers such a massive jump that when I triggered it I jumped halfway across the Rainbow Road level. This has never been replicated but I did it by hitting a Chain Chomp and that state activator behaves in an unusual way so it's plausible that this could be reproduced. Keep in mind that this may only be possible on the three levels I mentioned before (KD, TT and RRd) as they are the only levels with this type of obstacle. Still, this large feather jump is similar to the Mario 64 TTC Upward $1000 Bounty because it has only happened once that we know of it requires a similar "bit flip" type of change to memory.

Special Thanks

  • This run is dedicated to the memory of Martin McMullan
  • My wife, Katie, for her endless support and patience with my hobbies and interests.
  • micro500: For being a general wizard and friend. For porting the Mupen64Plus core to BizHawk, tricking Jabo 1.6.1 (a closed source video plugin) to run in Mupen64Plus, for building the N64 bot (with 4 controller support) for creating a custom build of BizHawk to support lag-tolerant multi-track recording, for TASLink and for unending support through the development of this run.
  • Beck Abney: For discussing strategies and ideas and pushing the 150cc RTA community to new heights
  • Sean Sullivan: For finding the item RNG lookup tables and the frame scaling factors in the ROM.
  • abitalive: For tracing a lot of the Mario Kart 64 logic (including item RNG) and for being the lead developer of the Mario Kart 64 Tournament Edition modification
  • adelikat: For his role in TASVideos, BizHawk and in enabling me to begin Lua scripting
  • dwangoAC: For the opportunity to present at AGDQ and all the work he does to make the TAS block a success.
The members of: Anyone who has provided encouragement to me on the forums, Twitch or chat.


Mothrayas: Judging.

Mothrayas: Here, we have a run that has been in the making, in various shapes and iterations, for many years. This TAS follows a history of almost a decade of TASing this game. The end result shows. The submission text excellently describes every trick available, every item manipulated, and every step performed, and the TAS itself is just a work of art. All of the various and precise tricks used make this run a marvel to watch. This is what years of building up a TAS looks like in the end. Accepting to Stars.

Spikestuff: You guys realize that Moth actually wrote "Accepting to Stars". You don't need to keep writing that it should be stared after it already got the Star.... Publishing.


Similar submissions (by title and categories where applicable):