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

Submission #5749: Chef Stef's PSX Crash Bandicoot 2: Cortex Strikes Back in 36:06.78

Console: Sony PlayStation
Game name: Crash Bandicoot 2: Cortex Strikes Back
Game version: Europe
ROM filename: Crash Bandicoot 2 - Cortex Strikes Back (Europe).bin
Emulator: BizHawk 1.11.7
Movie length: 36:06.78
FrameCount: 107829
Re-record count: 132513
Author's real name: Stefan Roger
Author's nickname: Chef Stef
Submitter: Chef Stef
Submitted at: 2017-12-16 05:27:00
Text last edited at: 2017-12-28 00:55:43
Text last edited by: Chef Stef
Download: Download (107907 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:
Crash Bandicoot any% TAS by Chef Stef

Created on BizHawk 1.11.7 but also syncs on the latest 2.2.1 release.

This TAS completes Crash Bandicoot 2 in 36:06.78. The goal is to collect all 25 crystals and beat Cortex as quickly as possible, without abusing major glitches.

In particular, this run avoids using the following:


(Link to video)
Alternate encode (nicovideo): Part 1 Part 2 Part 3 Part 4 Part 5

Version Choice

I used the PAL (Europe) version because movement in that version is generally 5-20% faster (depending on the circumstances) which leads to a few version-exclusive tricks. It's also the version typically used in the speedrunning community. The PAL version does have longer loading times, including a few in-level loading pauses that aren't in NTSC (for example, at the end of level 4 and throughout levels 22 and 24). But overall the are enough benefits with the PAL version to make it the fastest option.

Note that speedrunners typically run the game on a PS2 Slim with faster load times, so RTA times aren't directly comparable to this TAS. This run on a PS2 Slim would likely be minutes faster.

PAL runs at roughly 50FPS, but the game only renders every other frame. With a few exceptions, the game only reads controller input on render frames. So in the discussion below, whenever I mention "frames" I'm talking about input frames, i.e. 25 per second, not the full PAL rate of 50FPS.

General Terms and Tricks

Level-specific tricks are described in the level-by-level notes further down.

Global Cycles

Many enemies and level elements move on a loop, controlled by a cycling timer. This timer is shared across the whole game and continues between levels, hence the name "global cycles". Unlike Crash 3, this game doesn't have many obstacles that actually stop Crash's progress, so global cycles don't actually affect this run that much. The only places I had to worry about them was in levels 21 and 25, which influenced the routing in warp room 5. More details are in the level-by-level comments.


Sliding is the fastest movement option for Crash, but there's a cooldown period at the end where Crash stops and can't slide again for a few frames. You can cancel this waiting period by inputting a spin, which causes Crash to continue moving forward, at a somewhat reduced speed, for the duration of the spin. (Crash's speed will drop even more if you move during the spin, so it's important to avoid inputting any directions during this phase.) You can then start a slide on the first frame after the spin ends, so the technique can be chained repeatedly to speed through a level.

Zig-Zagging (or "Wiggling")

Crash 2 supports analog stick input. A physical controller confines the sticks to a circular area with diameter 256, but the controller actually accepts input from the full 256x256 square area encompassing that circle. Inputs at the corners cause Crash to move faster than usual. This works during regular walking, jumping, sliding, and spinning.

Fast diagonal movement is useful, but Crash typically needs to move straight forward or sideways. This leads to a technique called zig-zagging: Every other frame, alternate between two different diagonal inputs. When performed during a slide or jump, Crash moves forward at the faster diagonal speed without losing any momentum. This technique is combined with the previous slide-spinning trick, and also used on its own when jumping, to increase speeds even further.

This trick shouldn't be confused with zip-zagging, which is a completely different trick that's avoided in this TAS.

Directional Movement Abuse

Although the game accepts analog input across the full 256x256 stick range, the game locks Crash's speed to much more discrete intervals.

Let's suppose Crash is sliding straight forward, with the stick at 90 degrees. Crash's slide speed will be 22.5 in the Z direction. Now let's suppose that you slide with the stick at 80 degrees. Crash will still move forward at a z-velocity of 22.5 but will also have an x-velocity of 2.1, so the sideways movement is free. This means there's some freedom to move sideways without compromising overall "progress" towards the level goal.

Naturally, some levels curve around a lot, preventing you from maintaining an optimal angle the whole time. But, I'm still able to abuse this throughout the TAS to save a lot of time.

Jump-Spin Cancelling

In several places there's a one-frame window where jumping and spinning at the same time will cancel a level or loading trigger. The most common use is to skip Cortex's holograms between levels, but there are other more minor applications. See the individual level notes for more details.


Many pits in the game can be crossed simply by sliding over them. The general rule is that a pit is slide-able if Crash can cross it in less than 5 frames and the far edge is at the same height or lower than where you started. This works because Crash clips into the far edge of the pit before he's fallen far enough.

Movement Options

Having covered the main movement tricks, here's a list of movement options from fastest-to-slowest. This assumes that you're using zig-zagging or diagonal input to boost when possible. All numbers are in somewhat-arbitrary units-per-frame.
  1. Sliding: 22.5
  2. Spinning (after a zig-zagged slide): 15
  3. Jumping: 13.7
  4. Walking: 13.7 if diagonal, 9.6 if straight
  5. Crawling: 1.4

A slide-spin is 8 sliding frames plus 10 spinning frames, giving an average speed of 18.3. This means it's almost always better to slide-spin past things instead of jumping over them if possible. (It's also faster than just sliding everywhere - 8 frames of sliding plus 3 frames of nothing = 16.4 average speed - but I do occasionally double-slide instead of slide-spin when spinning would cause Crash to get hit.)

With that said, Crash's speed while jumping is not very much slower than his spinning speed, so it often makes sense to replace a spin with a jump if there are obstacles in the way. I often manipulate the position and timing of slide-spin cycles to take advantage of this (jumping over pits just as the slide ends, and such).

Other Minor Tricks

Lag Abuse

Occasionally the game will lag when doing something particularly intensive, such as rendering a bunch of crates exploding. The game tries to compensate Crash's movement speed for this, but it's not exact and Crash can move further than he should. On top of that, the game still counts down the slide and spin timers as though no lag happened. This means it's sometimes useful to deliberately trigger lag frames to move faster or reduce the number of spin frames in a slide-spin cycle (boosting Crash's average speed).

Extra-High Jumps

Slide-jumping is a technique to gain more air height: jump during a slide, and Crash will go through a different jump animation and rise higher in the air than usual. This was intended to be the maximum jump height achievable. However, Crash reaches a little bit higher if you input a spin immediately after jumping. (A well-known application of this is slide-spin-jumping to the red gem in level 2.) This is useful when I need to clear extra distance or get to platforms that are just barely out of reach.


Sliding on ice instantly boosts Crash to the maximum slide speed (22.5) even without using zig-zagging. Spinning as you exit the ice patch back onto regular ground boosts Crash even more (up to 23.2 speed) for the duration of the spin. This works even if you jump onto the ground instead of just sliding up to it.

Spinning Un-Spinnable Enemies

Some enemies like the mice in sewer levels can't be killed with a spin, and generally have big hitboxes so you can't even spin near them. Since slide-spinning is such an integral technique to the TAS this would seem to be problematic. However, if you jump and spin on the same frame as you reach the enemy, the game engine will decide you killed it and Crash will survive. This is used to quickly get rid of enemies that would otherwise cost a lot of time to kill or avoid, particularly in levels 21 and 25.


A few levels have long straight edges that boost Crash forward when you push into them. This can be abused to move Crash even faster than usual. Not every edge will do this, and it usually wastes time to move near the edge, so this trick isn't used that often in the run. It's mainly used in the boulder levels (sliding into the edges) and in the surfing levels (boosting the surfboard into the edges).

Level-by-Level Comments

Starting the Game

Selecting Load Game puts Crash in the warp room immediately, and it's actually possible to escape by sliding on the right frame. This skips the opening cutscene and saves a lot of time. Note that the NTSC version can skip this even faster, but on PAL there's still a short waiting period before you can move.

Level 1:

The large pits and muddy areas can be skipped by sliding precisely off the level geometry, which is finicky but saves a lot of time. Pirohiko's original 100% WIP was a big help here for demonstrating the strategies and giving me a mark to aim for.

Level 2: Snow Go

The first of several ice levels. You can see the ice-sliding trick a few times, but Crash moves so quickly even off the ice it's not that noticeable.

Level 3: Hang Eight

Edge-boosting makes its first appearance in the surfing sections. Surprisingly, it only saves a few frames each time, but it is indeed the fastest way to move here.

The gem at the end is avoided, as it's not necessary, and wastes time when Crash collects it in the warp room.

Level 4: The Pits

The birds in this level really get in the way; often the only real way to avoid them is jumping. You can boost off them by spinning, but the speedup isn't much (only about 10% faster than regular spin-speed) and it's usually much faster to just start sliding again instead. I did boost once, during the double-bird section, so that I could glitch through the second one without having to jump again.

Level 5: Crash Dash

Crash outruns the bounders handily thanks to zig-zag slide-spinning. You can see a few applications of the edge-sliding trick just before and after collecting the crystal.

Boss 1: Ripper Roo

This guy's basically an autoscroller boss; the only thing to worry about is hitting him on the first frame he's vulnerable. The rest of the time I mess around by spinning through the explosions and playing with hitboxes.

Level 6: Snow Biz

In the warp room, I use jump-spin cancelling to avoid the level-enter trigger, letting me continue moving while the level loads. Crash seemingly falls in a pit, but since the level loads up as usual it doesn't actually matter! I do this a few other times in the run when it didn't cost time to set up.

The rolling wheels in the final section are on a global cycle, but there are so many options for avoiding them that the cycle timer didn't really matter.

Level 7: Air Crash

I damage boost in a couple of spots to take minor shortcuts, saving a few frames each time. At the end I had to be careful around the nitro boxes, as it was easy to accidentally spin a fish into them and get caught in the blast.

Level 8: Bear It

The bear is literally on rails for the entire level, so it doesn't matter if you move left/right too much or try to cut corners - you'll finish the level in exactly the same time. The only way to speed things up is to charge and jump with the bear as often as possible. It's optimal to jump on the first frame after a charge. This turns the level into a jumpathon instead of a simple runthrough.

Crash is immune to damage on the first frame of a charge-jump, so I abuse this in a few places to survive collision with obstacles.

Level 9: Crash Crush

More boulder out-running. The electric gates have a gap in their hitbox on the right side so it's possible to slide around them.

Level 10: The Eel Deal

The electrified water is extremely touchy so I have to carefully jump over it on platforms instead of sliding.

In the second section, I burn two masks to clear through without having to grab any grates. Conveniently, there are two easy masks earlier in the level so I didn't need to do any routing to make this possible (unlike later warp rooms).

Boss 2: Komodo Bros

Komodo Joe will stop spinning after a random interval of time so it's important to manipulate that to be as short as possible. He'll also bounce around unpredictably depending on where Crash is in the room. I did what I could to make the fight entertaining while still maintaining the optimal time.

Level 11: Plant Food

It's tempting to try and skip surfing sections by bouncing on floating crates. Unfortunately they don't have hitboxes so Crash just falls in the water and dies. (The ones in level 7 are an exception as you're intended to do that to reach a secret area.)

It turns out the final surfing section is skippable by bouncing off the ramp and one of the high boxes. This is convenient as otherwise I'd need to burn a mask or waste time killing off the plants. The gap across the water is huge so even with optimal zig-zagging there's almost no room for error.

Level 12: Sewer or Later

The pipe-welding enemies are well-known in the speedrunning community for being super annoying to skip due to their huge hitboxes. Even in the TAS I found it tricky to avoid being hit. With perfect timing it's possible to sneak under them with a slide, but just barely. After lots of trial and error, I eventually discovered quick strats to avoid them all, with the exception of the final one (who's positioned awkwardly over a jump). I opted to burn a mask rather than wait or go around.

The pipe-welders actually give you a speed boost when you spin them, same as the birds from level 4. Taking advantage of this requires specific positioning and timing, though, so it almost never saved time to do so.

Level 13: Bear Down

The strategies from level 8 apply here as well. The obstacles in this level are tougher but it's otherwise more of the same.

Level 14: Road to Ruin

I cut a lot of corners in the ruin-themed levels to save time. There are invisible walls everywhere so I often can't skip as much as would otherwise be possible.

Level 15: Un-Bearable

Another boulder level... oh wait, it's a giant bear level instead! Same deal as usual, just outrunning bears this time. During the last section I found a way to get onto the ceiling and ride the level geometry; not only is it funny, but it actually saves time from being able to dash jump more often. At the very end, being as high in the air as possible makes Crash land farther away, saving a few frames.

Boss 3: Tiny Tiger

Another boss that's effectively an autoscroller. I survive getting close to Tiny by spinning just as Crash would take damage.

Level 20: Bee-Having

I need two masks for level 16 so I do this warp room in reverse order.

Despite the name, you'll see no bees in this level, Crash is just way too fast. Taking damage and sliding through the nitro crates saves 5 frames from the shorter path and extra lag.

Level 19: Ruination

This level is mostly the same as Road to Ruin, but I have fun blowing up TNT and nitro boxes along the way. The diagonal jump onto the 3D-rotating pillar is extremely tight; I found absolutely no other movement combinations that would let me land on it in one jump.

Level 18: Cold Hard Crash

Thought we were done with snow levels, didn't you? In the middle section it's just barely faster to take the death path instead of continuing the level normally. I found some neat tricks to save time in the normal path (https://youtu.be/1ZJ06d2UDKo) but even after full optimization the death path route was still faster by 10-ish frames.

Level 17: Diggin' It

For some reason I found the bee levels to be the most tedious to finish. They just seemed to go on and on... Maybe it's the zoomed-out camera and lack of credible threats from the enemies.

Here the main obstacle is the electric gates, which are (you guessed it) on the global cycle. I had good timing for some of them but for others I had to get creative about jumping around or over them.

Level 16: Hangin' Out

Unlike level 12, the middle section has two stretches with grates, and I can only burn two masks (or resort to three-mask invincibility, which is extremely slow in Crash 2), so it seems inevitable that I'll have to jump on the grates at some point. However, in the second half there's a place where you can go out of bounds and slide over the whole area! This trick is known by the speedrunning community and appears to have been discovered by Gunnaromg (https://youtu.be/juoBvsN9fMk). The level trigger to exit this section actually stretches infinitely left and right so you don't have to land in the hole at the end to progress (thanks to ferianjay for pointing this out).

Boss 4: N Gin

The PAL version saves a lot of time on this boss because N Gin leaves his weak points exposed for longer. I managed to clear both shoulders in one cycle, which to my knowledge is a first either unassisted or tool-assisted. Getting five hits on the right shoulder required frame-perfect zig-zag jumping so it's probably not RTA-viable, but who knows! At the end, falling off the edge lets me hit N Gin early as he's rising up, saving a few frames.

Level 21: Piston it Away

Like the snow levels earlier in the game, this level and level 25 have side-scrolling sections with invisible walls. However, they also have nasty enemies with hard-to-avoid hitboxes, which proved to be a huge challenge to clear through quickly. Luckily the global cycle was reasonable for this level, so things are still speedy overall.

Midway through the level I deliberately get hit by one of the shrink rays. Normally getting hit causes Crash to shrink further and further until the game calls you dead and sends you back. But it turns out if you jump-spin on the frame that Crash would die, the death will be cancelled and you can continue through the level as tiny Crash. Tiny Crash has the same horizontal hitboxes but has an almost non-existent vertical hitbox, letting him slip under lowered pistons and clip into the level geometry more freely. With my strat it costs 2 frames to get hit, but it saves around 10 frames to skip the piston at the very end, making it worth it! I discovered a version of the glitch on my own, but I'd like to thank Dustiel for pointing out this version and where it might be useful.

Level 25: Spaced Out

After level 21, the global cycle for this level happened to be extremely good, so I complete it next. It costs 5 frames overall to do the levels out of order but this time is easily saved from the faster in-level strategies.

In one section of the level I bounce off one of the scientists to reach an upper area, saving a few jumps. Sadly there's an invisible wall near the end of the section so I can't stay up there very long.

Level 24: Pack Attack

This level and level 22 use a trick to skip the jet pack and slide through with normal gravity. This saves a huge amount of time since the jet pack moves quite slowly.

Grabbing the crystal is non-trivial. Right in that area is a glitched trigger point where Crash gets teleported all the way to the end. Interestingly, this is dependent on the camera position, not Crash's position, so it's still possible to collect the crystal by manipulating the camera backwards (as is done in RTA runs) or outrunning it (as I do here in the TAS). Yet again the timing for this strat is extremely close (I just barely clip the crystal hitbox on the very last frame before Crash gets teleported) but I was very happy to find it since it saves a good second or so over shifting the camera manually.

Level 23: Night Fight

A twist on the regular jungle levels, this one's shrouded in darkness and you have to use limited-supply fireflies to see. As usual Crash moves so fast that this isn't a problem at all.

Interestingly, if you manage to collect three fireflies at once, the game messes up and puts you in total darkness after only two of them leave. I didn't get to show this off since the optimal level route skips some of the fireflies.

Level 22: Rock It

Once again you can skip the jet pack... but this time the crystal is way further into the teleportation zone, and there's currently no known way to collect it (either RTA or TAS). The optimal route for this level is therefore to skip the jet pack, hit the last checkpoint before the crystal, die and respawn (which automatically gives you a jet pack), and collect the crystal normally.

Boss 5: Cortex

A pretty anti-climactic final boss, all you have to do is charge towards Cortex and spin him three times. The main optimization point is making sure you reach the spot where he starts moving as early as possible. I cut corners and manipulate momentum with the jetpack to quickly reach and hit Cortex all three times.

Known Improvements

There are a few areas with known improvements. In general I went back and redid sections when improvements were found, but there are a few cases where it wasn't worth it and I moved on. Unfortunately this game is almost impossible to hex-edit due to the global cycles and the very touchy nature of the physics engine. (I've had cases where Crash had exactly the same speed, and was in exactly the same place, but in the hexed version the game engine somehow decided he hit the ground one frame earlier... Sigh.)

The improvements are:

  • When entering boss rooms, jump directly onto the central platform instead of walking up to it. I did this in later warp rooms but missed it in warp rooms 1 and 2. Saves 2-4 frames per use.
  • In several levels it's possible to slide directly onto the ending platform instead of jumping onto it. Saves 2-4 frames each time.
  • In levels 2 and 6, keep momentum from more ice patches. Saves around 5 frames each time.
  • In level 11, burn an extra mask to take a straighter path through the plants at the end of the middle surfing section. Saves 2-3 frames.
  • There's a faster strat for the second boss that saves 4-5 seconds compared to the one I did in this run.

It's also possible that a different level order would result in savings from better global cycles, though as noted earlier there weren't very many places this mattered. Of course, any of the above improvements could change the timing enough to make it matter after all.

Acknowledgements and Thanks

Special thanks to Spikestuff for consistently watching WIPs, giving feedback, and cross-posting stuff from the speedrun community to keep me up to date. I'd also like to thank Spikestuff for convincing me to use the PAL version, despite my misgivings at the time. Thanks a bunch for all you do!

Thanks to pirohiko for sharing the Lua script from earlier runs; I eventually wrote my own set of scripts but this was a big help early on. Pirohiko's partial 100% WIP and completed glitched run were also super useful when learning how to optimize this game.

Thanks to Ferianjay for WIP feedback and advice on the last two warp rooms, and for pointing out a two-second timesaver in level 16 that I missed.

Thanks to Dustiel for WIP feedback and key info that led to the shrink-glitch timesaver in level 21.

And a big thanks to everyone who watched and commented on WIPs here on TASVideos and on the Crash speedrunning Discord!

Fog: Judging.

Fog: This is a great improvement over the existing branchless publication, with lots of nice improvements.

Accepting as an improvement to the previous publication.

Spikestuff: Already on the Publishing Train... just didn't claim cause yes.

Similar submissions (by title and categories where applicable):