- Emulator used: Bizhawk 2.4.2
- CD ID: SCUS-94426
- Bios: SCPH1001.bin
- Version: NTSC-U
- Abuses Programming Errors
- Manipulates Luck
- Genre: Racing Game
This is CTR: Crash Team Racing Any% Warpless. This means that this category does not include the Battle Mode Warp Glitch
which jumps to the credits. Skips are allowed, the goal is to beat Oxide as fast as possible and stop him from (u)turning the earth into a Parking Lot.
TAS – RTA – IGT Timing
These are very different between each other.
- TAS timing starts when booting up the game, ends when press start on the Podium after beating Oxide (last input).
- RTA (Real Time Attack) starts when I confirm the selection of choosing Tiny Tiger as a character and the loading screen takes place. Mainly used in speedruns. I might add this in the future if I find a way to do a proper fds timing estimation.
- IGT (In Game Time) is the sum of all the courses times [26:03.15]
Lua Scripts and Addresses
Basically every value as far as I know is dynamically allocated in CTR. I used most of the time Lapogne36’s scripts which uses a pointer for the values, making it really easy to check stuff while writing the TAS for reference.
I also used TheRedHotBR and Schwooples lua script for the checkpoint system and track progression, but only in one track: Oxide Station. To pull of the startline glitch I needed to know exactly what was the last known checkpoint value the game had. Also to make sure the progression value correctly overflowed.
Thanks a lot to TheRedHotBR for helping with some strategies before going into some warps!
There’s also the visual script developed by No More Lasagna and ThunderAxe31. This is a project I initially started to implement a working controller display in lua, but they improved it to the best it could be; ThunderAxe31 did the final touches before the submission and implemented the RNG script by Lapogne36 aswell. It was a lot of work and I'm really grateful to both TASers, huge dedication.
NyXx developed the graphics, which were implemented in Lasagna/Thunder script in lua. He’s an incredibly talented ctr TASer, who is also an animator. I have nothing but immense respect for Emmanuel, we’ve known each other for years.
Thanks to Korky, for his work on reverse engineering the code on the Modding discord along Niko and the other developers, which helped to understand how RNG works.
And, last but not least, thanks a lot to Spikestuff for the encoding! My laptop just cant take it.
I'm very, very, very grateful to everyone! This TAS would not have been possible without the initial lapogne work, he was an inspiration.
Lapogne36, ThunderAxe31, and The8BitBeast for giving me a huge motivation to start this project after looking at their TASes.
This TAS was fun(it was also my first), as ctr has always been basically the only game I’ve played in 20 years, but it has been an absolute nightmare for me to deal with these desyncs on PSX, every track had at least one, and I'm not even kidding. (I redid Roo and Hot Air Skyway 6 times each)
Glitches and Techs
First of all, why NTSC and not PAL?
This is because NTSC has the trophy skip (more on this on this topic later), which makes it the fastest version to TAS, despite PAL having the language glitch.
Why not NTSC-J?
Because the boss cutscenes are longer.
In this run I abuse a lot of techniques and glitches, so I will try to cover them all as best as I can.
No Man Zone (NMZ) and Startline Glitch
Both are major glitches I found in august 2018. TheRedHotBr has it all figured out in IT terms recently. (I know very little about informatics outside of ram addresses and a few of lua scripting).
Basically, NMZ, is a zone that isn’t covered in “mask grabs”, when the game detects you’re in a zone too advanced to drive on. In every track, if you were to fly (with some ram address poke testing), you can drop down behind the goal, but the lap wont count if you’re too close to it (for the progression value that is just like if you drove backwards).
However, just behind this “pre-goal-zone” I just introduced, on Papu’s Pyramid there’s another one that isn’t a mask grab polygon nor a pre goal zone. As a result, if you drive at least after the first checkpoint of the track, you are allowed to land there, and end the lap. This polygon on Papu’s pyramid is VERY hard to reach: you need to use ceRTAin techs to perform it RTA. It’s only used in the time trials community, only a few of us managed to get it (not with the tech I’m using in this TAS, which is to impossible for a human: I will explain this soon when introducing OOB terrain.)
There are a grand total of 5 NMZs in the game, 2 of which are debatable(Cove and Arena):
Crash Cove, Papu’s Pyramid, Coco Park, Tiny Arena, Slide Coliseum.
To explain why, I need to introduce the Startline glitch.
The startline glitch is basically the game progression value that overflows. This lets you drop down a bit after the goal and start the lap later, normally.
The game keeps track of the kart movements in 2 ways: checkpoint and progression value.
The checkpoint value is just an address that decreases his number the more of the track you drive, towards the end.
The progression value relies on the checkpoint one; when you go out of bounds (there are oob sections that you can drive on) the checkpoint value wont update. The tech consists in leaving the track when being close to the last checkpoint of the lap, so that the progression value overflows when crossing the goal while being out of bounds, (otherwise if you go oob too early the progression value will stop decreasing before you even reach the goal), then you can drop down back on the track where mask grabs are allowed (first checkpoint of the track for example), and so, you can start the lap a few seconds later.
What happened in Oxide Station and Tiny Arena is a result of an extended (or reversed?) version of the startline glitch. I did it on tiny arena without knowing what actually caused it 6 months ago, when I discovered it. Basically the concept is the same, but we’re dropping a bit before the end of the track, STILL overflowing the progression value, and since there aren’t mask grabs there as well, you’re allowed to land. This is pretty much track breaking, but it doesn’t work anywhere. So far I managed to replicate it only on Oxide Station, Tiny Arena and Hot Air Skyway(HAS). On HAS it’s impossible outside of ram testing, due to the lack of OOB’s to make it real.
Which leads me to the last point: Crash Cove. This track completely changes the progression value wherever you cross the goal, even when you’re really far from it (eg: on the wooden bridge). This is the logic that prevents a lot of glitches anywhere (so you don’t just drive backwards and end the lap), however, what happens here is that I’m dropping down the track AFTER crossing the goal in the correct driving sense, (just before falling). So the game updated the progression value, BUT, then it has to respawn me on my last known checkpoint, which is? Just before the goal. So the progression value updates again, because for the game, I did not drive backwards the goal. The game just respawned me there. This works in every track, but usually there are mask grabs to prevent this from happening, thanks to the checkpoint system. Unfortunately for crash cove, there is a very, very tiny section of a polygon not covered in this, and we fall on it after the drop, without being infinitely respawned by the mask (the game realized you’re first and you should spawn there, but you don’t have the checkpoints). I'll explain more on crash cove later.
Here’s a few videos I realized years ago on NMZ’s, to make this explanation easier:
OOB (Out of bounds):
When the game checkpoint value cant detect you anymore, the progression value will keep having a vague idea of where you’re going, depending on your xyz movement, but only for a small section, after that, it will just stop updating if you keep being oob.
You are considered out of bounds technically every time you’re not touching a track connected with the checkpoint value, but this plays a major role when:
- you make jumps out of invisible walls
- you actually stand on solid track, which does not have checkpoints. We called this “Fake NMZ”. There’s a few polygons here and there on some track with these properties, but it was not worth for any use in this TAS. (Example: the infamous glitch on Dragon Mines, which wont count the lap if you jump before crossing the goal line before ending the lap, because the gravel section doesnt keep track of checkpoints properly, so if you land still on the gravel after jumping the goal line, the game will assume you just drove backwards.)
SG's (Temporary Speed Boost)
There are many kinds of SG's. Some of them are intended (increased speed on a downhill), some are not (corner/edge SG's, or sewer speedway walls).
The corner one is the most abused bug in the game for TASing, (hardest tech RTA) where you just land on a corner of the track (usually with 1 wheel) and get a huge speed boost, but it doesn’t last very long. I can keep temporary speed with bunny hop (aka Froggy). We have many theories about why corner SG's are a thing, but no one really knows why they exist. It might be due to the Z falling speed being interrupted by a corner and transforming it into XZ speed, or something else. I’ve read some comments from Amaraticando on old topics that some pixels on the corners, zoomed in, might indeed be interpreted as big downhills, giving speed as the game physics usually does. The bad news, is that this is FPS-dependent (in PAL this is much easier and the SG's last a lot more time), and also relies on LAG. This is not a consistent bug AT ALL, not even in TAS. There are so many variables no one knows about, that makes it close to impossible to manipulate perfectly. Even when having the exact angle on the same XYZ, you might not be able to trigger a speed boost during another lap or race on the same tracks. Having Tiny as a character and using NTSC-U (30fps), made this an absolute hell.
Short inside info: Why are Tiny/Dingo so painful to TAS with?
Because they are characters in the "advanced" stats as the game named them, which consists in having the max speed, and the worst stat for turning capabilities. Not being able to make sharp turns when chaining corner SG's makes it really hard to manage, however the speed stat is still the one that matters the most in this game. More on stats ram details at the bottom of the topic!
You can chain SG's and top of hills too, depends where you land, its not really a constant.
Basic speed: You can get this just by pressing X, it reflects, of course, the characters stats. Acceleration characters reach this speed faster than the others. That’s all the acceleration statistic does in the whole game, yep. (Doesn’t affect deceleration or speed/SG's while being in air.)
The amount of “gasoline” you have stored. You can increase it with a powerslide (you can do 3 miniturbos in sequence during a single powerslide), with turbopads, the red turbo item, and with jumps over 0.66.
You lose them once they drop down to 0 over time, when you hit a wall/collision, or if you press square.
You can perform a powerslide by pressing r1 or l1 + left or right, and then holding the opposite directional key: you can then hit a boost as the bar in the bottom right fills up by pressing r1 or l1 (the other free shoulder button). The fuller the bar, the more reserves you will get. But be aware that it is not a linear increase! Every frame you wait for the bar to get fuller, the reserves reward will increase dramatically! There is a big difference between the last frames of full miniturbos, this is another aspect where TAS shines.
Unlike SG's, which last only for some moments, there are fire levels, which you can trigger with jumps or turbopads. These ones will last, as long as you have Reserves (the amount of stored turbo you can see). There is only an exception, USF (Ultimate Sacred Fire).
- Green 1 or 2: Given by 1 or 2 miniturbos, respectively, in a row, or with [0.66; 99] jumps. 0.66 might not trigger sometimes (The game doesnt display the approximation). [These numbers for jumps (0.66 etc.) are just the time you’ve been in air in milliseconds.]
- Yellow: 3 miniturbos in a row, or with 100 to 149 hang time turbo jumps.
- Sacred: From a turbopad, and 150 to 255 hang time turbo jump..
- USF: The ultimate speed. You can only keep it if you don’t get ANY OTHER kind of fire in the game AND if you do not lose reserves. The only way to get it, is with Super Turbo Pads. They are in all of the HUB4 tracks.
This technique is very common in RTA and I used it to every last drop in this TAS. It lets you do VERY sharp turns, at the cost of all your reserves. Due to Tiny having poor turning, I relied on this technique for very short amounts of frames, sometimes. This helped A LOT. You can perform it by pressing Down + Square + Left/Right Arrow. Shines when combined with froggy!
The act of doing a miniturbo and performing an hang-time-turbo at the same time. It's great to build up reserves in a short amount of time. Also great for setting up the angle before corner SG's. You can perform it by adding another r1/l1 before doing a powerslide, in proximity of a hill/jump section.
Basically mashing the jump buttons (R1/L1): ctr inputs data only from drawing frames, into static frames. So the best way to froggy for me, was to alternate r1 and l1 in single inputs, adjusting for lag frames (this game is full of those). However, if you perform a jump, and you land with 0.16 on the meter or less, the game wont let you do another jump before a short amount of time. This kills most SG's, so sometimes I had to change trajectories when froggying for the best possible SG speed.
In HUB 3 and 4, once you don’t have the mask tutorials after the end of races anymore, there is a 1 frame window to pause, while the game is rewarding you a trophy. Doing this, and exiting the pause menu right after, lets you skip a bit of this cutscene, and you gain control of the kart sooner. Saves some seconds in the whole run.
Great to gain speed fast and turn at the same time, when starting from 0 speed, without having the chance to use the starting lights turbo. Perfect for hub movement after winning trophies. It’s performed by spamming X and holding a left/right arrow.
Froggy Cancelled Mid Airs (TAS-only tech)
This is a tech i didn’t personally develop, i’ve heard NyXx talk about it in the past. It consists in doing the first animation of a mid air and releasing it, doing a normal jump to froggy, before actually landing again on the track (even on a flat surface). I implemented it in this run and it helped SO MUCH, especially on N.Gin Labs and Cortex Castle, due to Tiny Tiger poor turning capabilities, not letting him perform such turns.
Every frame, while you’re in the HUBs, the RNG value will keep spinning. This lets you basically choose a proper item seed to start the race with. But I had to keep in mind that RNG changes while being in races too, A LOT. More specifically:
- every time i break a wumpa box or an item box (+1 value)
- every time i change checkpoint (almost) (+1 value)
- every time i'm close to the CPU after the first item box drop (this results in a constant change of RNG, +1 for every frame)
- every time a vial is broken when the kart is close to it (this gives a total reset)
- every time you change rank during a race
Same RNG value contains a seed of items and wumpas drop ( from 5 to 8 ), so i had to decide this too when preparing a track RNG, they are linked to items, so i couldn't pick one item and force the game to get 8 wumpas aswell before it/aftwerwards, if the RNG table didn't have any combination with it in the few frames i had to choose from.
- Red Turbo Item: gives yellow fire normally, gives sacred fire when powered up with 10 wumpas; amount of reserves given upon activation is the same
They increase speed, for each one of them, till the 9th (2.82% speed increase). The 10th one just upgrades the item you’re holding, it doesn’t add speed. (eg: Mask goes from 8.5 to 12.5 seconds of full duration.)
NB: Even if for the lua script i had a mask item seed during boss races, the game wouldn’t just let me get it, as in boss races you cannot get masks, so ctr just forced another item to be picked up. Mostly x3 rockets.
Another fact: A red turbo (10 wumpas or not) gives you 2044 reserves (2 byte value), a full miniturbo gives you 1860, and a jump (any height) gives 960. Some turbopads give +960, others just freeze your current reserve value, as long as you are driving over them.
The nmz drop consists in going in a VERY small out of bounds window (this one was one of the hardest thing to TAS ever, having Tiny. Followed by some underroad driving, before crossing the goal the first time, grabbing checkpoint before the goal, and crossing the goal again in the correct sense, while falling. Respawning on the nmz and ONLY pressing left, is the only thing you’re allowed to do, the zone free of mask grabs is so small, that it is absolutely impossible to perform a respawn turbo, or any other kind of turbo to regain speed fast.
This track doesn’t use unintended skips, but it's all about getting great SG's and maintaining them.
The thing about keeping SG's with froggy, is that depending on the angle, an uphill froggy might INSTANTLY kill your SG. So picking the right trajectory to do some cornering with, while keeping a good SG, was not an easy TASk. SG's usually disappear in these situations if your froggy jump is too big (if it takes too much time to land again on the uphill after you started the jump – there are more variables into this, but this plays the biggest role).
First lap is faster thanks to an incredibly lucky sg, due to having both of the turtles up. Turtles cycles are: ( UP: 1.45s, Down: 1.30s ); waiting for the race start animation skip (a way to control game animated objects) would have made me lose more time than what i would have gained. This is the most optimized race i could do with this seed. Also, turtles are on a global timer (that’s not the case for cortex castle spiders and dragon mines minecarts).
Rest is """just""" sg'a chains all around, cornering, and rng manipulation (red turbos) for reserves.
And here we go, the first track where Tiny Tiger is REALLY bad on. I took some SG's which in TTs we didn’t believe were possible AT ALL in ntsc’s versions. I'm referring to the one after the first barrel (clody's SG), which is really hard to get on pal. I don’t think anyone has ever done it in ntsc, so this was a surprise.
RNG manipulation was really hard here, i had no good seeds to use, without losing too many frames to get them before the warp. I just went for wumpas + red turbo.
Here, we have the first mask abuse. This TAS took a while to figure how to optimize, due to restarts and desyncs after I finished it. The SG's were REALLY hard to chain and maintain (end section), but luckily after a couple of days, i finally got them.
Keeping reserves here is key, SG's don’t last on grass (slow-proc), so you want to have sacred fire after exiting the grass section.
Second mask abuse! Also a completely new tech, getting sacred fire in the SL (Starting LAP) with a 150+ jump value on the turbometer. This is impossible RTA, i’ve tried it for months in the past on BizHawk for time trials. It saved 2.5 seconds only for lap1, with the combination of Mask! The most impoRTAnt section of this track is the tunnel, where you can get 2 SG's in a row from the downhill by just jumping again after taking the sg.
Weird, as usually the game doesn’t let you increase SG's by doing this. This tech only works with a precise timing, and at the very beginning of the downhill, too.
NMZ, as described above! Also made sure I got a mask again + red turbo for instant Yellow Fire. Great RNG here. Saved 1.5secs compared to a non-item TAS, with Tiny.
It’s corner SG's city! I didn’t personally like this track tasing, but the grind paid off. Also, it was key again to keep reserves, as there is another section which has a slow-proc (first sc), which means you cant go with SG's there, it would destroy your race, assuming you don't have reserves at that point.
Reserves = useless. This track was once famous for being the only TAS sub 1 minute on the game, by Zah666(Zord). With some new SG's, it was recently pushed to 57 seconds from NyXx. Taking some single wumpas here during the first laps wasn’t worth it, as it would have decreased some SG's strength when chaining jumps, due to the location of some wumpas themselves, even if they looked a few pixels away.
UGHH. Worst track of the game for ntsc-u. The terrain here is very weird (same case for HAS); sometimes you CANT get a proper sg on the bridge, no matter what. I got extremely lucky to have lag in lap3, due to the cpu being there, i took my chance and got an absolute monster of a sg, usf level. RNG was BAD. The minecart would just be in the way for lap 1, no matter how fast I was, that was the max. I decided to go for wumpas + red turbo for free reserves.
Best track in the game. Reserves are almost useless, its all about SG's. This was kinda hard to TAS, but im very happy with the result. Lap 1 ending jump was insane, lap 3 start had the best cpu-sg abuse ever, very lucky to get that. For RNG I just went for red turbos.
Why not 2 masks instead of one? This is the first TAS that does all the sc’s in one course, to me it looks really fun. Also SG's chaining before doing the first sc (NyXx sc, which requires some checkpoint unlocking, followed with a uturn to perform the sc right after) during lap 1.
Desync city hit me hard here. Got absurd SG's, which of course had 2 desyncs. I somehow built them back each time, but the reserves management and cornering (Had to build them up for the USF pad at the end) was hell.
Definitely the worst track for Tiny, no doubts about it. RNG was all about red turbos, which the game didn’t really want to give me in decent amounts.
Another mask abuse, this time i figured that it would have been the best strat to use it right from the start, since i had no reserves. That let me build reserves and still go fast, ignoring the forced weird trajectories. Wumpas + Red Turbos were the way to optimize it. Cornering is KEY on Castle, this track will punish you for every little mistake when cutting corners.
Hot Air Skyway
BAAAAAD RNG. Best i could get was this one, but the cpu was never really fast enough, so i didn’t really have a choice. The rest wasn’t really that big of a deal, it was mostly trajectories and corner sg's chains before the second shortcut. It wasn’t consistent at all, but i just had to try it over and over and over.
Mindblown! Implementation of the recent discoveries from a month ago or so from TheRedHotBR, Schwooples, and me. A TAS for this strat didn’t exist at all, not even with Penta Penguin. Definitely lots of stuff going on, along SG's on usf level. Abuses startline glitch, described above.
The game statistics for characters, along with the RAM speedometer, are quite off.
I will link some png’s and informatives we (Time Trial community) created, there’s also a ctr discord server, you can join for even more about ctr: https://discord.gg/ttfYgkn
What about the game physics differences between versions?
So far there are quite a few. For starters, we found just recently, by poking the value that affects frames intervals, (static and drawn) that increasing fps does indeed make some techs harder by a lot. Sg's are weaker, way harder to get aswell. We don't have an answer, my only guess is that PAL having 25 fps has a less accurate elaboration of data in those short intervals of inputs. FPS difference affects jump height aswell, playing a pretty big difference in froggy effectiveness. Wall climbs shortcuts, corner sg's, sewer speedway wall sg's, are WAY easier and stronger in PAL.
What about Saffi Fire?
Unlike the name suggests, that is not a fire. Its just the result of overflowing the reserves value by doing enough turbos, faster than their drop speed. It’s not used in this run cause that’s useless, takes too much time to build up and the only pro of it, is having infinite fire for the race, as long as you don’t hit square.
Generally saffi fire is almost never used RTA, except for some laps in time trials, to optimize them as much as possible, but that’s it.
Regarding best versions for tracks (with the current best strats):
- C.Cove: NTSC U/J(Not possible in PAL)
- RooTubes: NTSC. Easier to mantain some sg's. Froggy gets stuck on PAL quite often in tas aswell, there are workarounds but its not optimal.
- Mystery Caves: They seem to be equal, each one has pro's and cons due to the usual differences (PAL likely to get froggy stuck, but stronger sg's on certain sections) - RTA: NTSC Mystery wins, way easier to manage.
- Sewer Speedway: Absolutely PAL. Every single sg is more consistent in PAL, especially the middle one and the last one.
- Tiger Temple: Equal
- Coco Park: NTSC (J): I've tased this track in every version, and it feels really different from the other ntsc, might be placebo, i dont have proof.
- Papu's Pyramid: For TAS, PAL. RTA uses different techs that make PAL froggy stuck, so that goes on NTSC.
- Dingo Canyon: PAL, cause sg's are way stronger and consistent.
- Blizzard Bluff: Equal. Last sg is WAY stronger in NTSC, for some reason. Middle one shines on PAL. I honestly have no idea why this is specifically the case.
- Dragon Mines: PAL, sg's are stronger, even not taking into account the bridge corner. Also, NTSC has the minecarts going faster.
- Polar Pass: NTSC. This track has a lot of uphills where your kart froggies and gets often -0.16 jump value, making it stuck, there is no workaround. PAL won't win here despite sg's being slightly stronger.
- Tiny Arena: PAL. The wallclimbs are close to being impossible themselves, let alone doing them in NTSC. Also sg's give pal the advantage, but just for consistency, not strenght, most of the time.
- N.Gin Labs: RTA: NTSC! Froggy gets 100% stuck in the tunnel in PAL, so that's not viable. TAS: PAL, cause we don't care about the tunnel, just go for a whole lot of corner sg's.
- Cortex Castle: Equal, if the strat implies pad skip with USF. If we're talking about Tiny, which can't do this trick due to turning, then PAL wins.
- Hot Air Skyway: NTSC somehow wins, it's just better. Same goes for RTA.
- Oxide Station: NTSC-U, due to PAL and NTSC-J having startline glitches fixed (there are workarounds but it takes way more time than ntsc-u).
- Special Thanks to TAS reviewers (some reviews before proceeding with the TAS):
HUB1 TOT IGT : 5.59.76
HUB2 TOT: 4.28.88
HUB3 TOT: 5.47.96
HUB4 TOT: 8.45.00
TOT IGT: 26.03.15
Lastly, thanks to YOU for taking the time to see this TAS! I appreciate it.
: Hello again, and welcome to TASVideos, AleMastroianni!
I've been following closely the development of this TAS. I can attest that the author is among the highest experts of speedrunning knowledge for this game. I also observed proficient usage of TASing techniques, with careful planning and thorough optimization.
I found the resulting movie to be particularly entertaining, and the audience also reacted with high appreciation. I think this is thanks to both game choice and techniques used: this is one of the most popular and fun games for the PSX, while the tricks and glitches used give a clear sense of superhuman play, in particular the unexpected shortcuts and item abuse, on top of using a hard to use character. And it keeps being fast paced through the whole run.
Before the verdict, I have to note that there is a known wrong warp glitch
that wasn't used in this movie. That glitch alone could allow to beat the game in a matter of less than 10% of the duration of this movie, overshadowing all the other tricks and glitches, and result much less entertaining. So it should be considered as a different branch, as fastest completion. Instead, beating this game without using the wrong warp glitch, as in this submission, counts as the most common goal for this game, which we also call the "trunk", from which all the other "branch" goals are derived. This is also the reason why we intentionally leave the label blank for this movie.
With all that said, accepting this submission for the Moons tier.
: Engines go brrrrrrrrrrrrrrrrrrrrrrrrrrrrrr