TASVideos

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

Submission #5556: The8bitbeast's PSX Crash Bandicoot: Warped in 39:00.52

Console: Sony PlayStation
Game name: Crash Bandicoot: Warped
Game version: USA
ROM filename: Crash Bandicoot - Warped (USA).bin
Branch:
Emulator: Bizhawk 1.11.9
Movie length: 39:00.52
FrameCount: 138776
Re-record count: 217938
Author's real name: Jake Miell
Author's nickname: The8bitbeast
Submitter: The8bitbeast
Submitted at: 2017-06-17 06:54:27
Text last edited at: 2017-07-12 11:19:08
Text last edited by: Fog
Download: Download (95782 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:

(Link to video)

Uncommentated version: https://www.youtube.com/watch?v=GsbY751eEVs&t=1769s

Category Description

Normally, for any% glitchless in this game you have to collect a crystal from each level, then after each 5 levels you fight a boss, totaling 25 levels and 5 bosses. There is a glitch called item glitch which allows you to get all of the crystals in a few minutes (and gems, relics…) meaning that you only have to go into 1 level. There’s also a method to clip the gates which usually block the later areas. Combining these, the game can be beaten by only entering 1 level and the final boss.

This category doesn’t allow item glitch or gate clip, meaning that all of the 25 levels and 5 bosses from any% glitchless have to be beaten, although there are still plenty of other glitches in this TAS. This category is simply known as "Any% (no item glitch)" in the RTA community, since gate clip is not RTA viable so it’s not worth restricting.

This category could be further broken down into 2 categories: one with zip-zagging and one without (zip-zagging explained later). This TAS uses zip-zagging. One question that can be raised is why ban gate clip but not zip-zagging when zip-zagging is used for gate clip? It wouldn’t make sense to ban an application of zip-zagging but not zip-zagging itself but there is also a way to do gate clip without zip-zagging: https://www.youtube.com/watch?v=7fCyI038cAI with this reasoning I could justify banning gate clip but not zip-zagging. I would like to see zip-zagging and no zip-zagging published as separate categories if both categories were submitted in the future (especially if someone submitted a Crash 1 TAS with zip-zagging).

To sum up, I’ve left this branchless to go with the TASvideos standard but if someone does a TAS in the future without zip-zagging I believe it should be a separate branch.

I’ve also bundled into the category description that turning off SFX is banned (see below)

SFX

SFX is a subject of much controversy in Crash 3. By turning off SFX you can skip some cutscenes which saves about a minute over the run. Normally these are skippable with triangle, but SFX off completely stops them from loading in the first place. Unfortunately this means that there are no sound effects throughout the entire run which some people find to be less entertaining. This TAS keeps SFX on. While it could be considered a speed entertainment tradeoff, I’ve included it in the category description as the point of the category is to restrict glitches (item glitch and gate clip) to allow for more entertainment and seeing more of the game. In the following I can hopefully explain the reason for my decision.

Benefits of SFX off: The speed is the primary benefit of SFX off. Also some levels can be quite annoying with SFX (eg. N. Gin) and having SFX off allows the good music to be heard, as it’s usually drowned out. During zip-zagging the sound effects become quieter since you’re further away so it’s almost not worth having them. Having SFX off only skips boring parts of the run, so there is more action packed gameplay. Normally RTA has SFX off, so having it off would make the TAS closer to the speedrunning community.

Benefits of SFX on: Some people consider this more entertaining. Since the category already contains arbitrary restrictions for entertainment this is less of a stretch. SFX does not affect the route at all so I can calculate the exact time the TAS would be with it off even though I had SFX on. SFX on allows for an extra glitch (after the N. Tropy Fight).

I conducted a poll near the start of making this TAS and the results were 47%/53% (on/off) so I had to make my own decision. Personally, I would have preferred SFX off but I left it on in for the viewers of the TAS who prefer it on. There is no way that I would turn it on in pure any% (and I did turn it off in that TAS) since I am extremely against speed entertainment tradeoffs. But the thing is, if I wanted to go as fast as possible I would be using item glitch and gate clip and just doing the any% category. This category already contains arbitrary restrictions put in place for entertainment. Since this category itself is already focused on entertainment over speed it makes sense to keep SFX on.

I also feel that the people that the poll reached caused some bias. The main traffic on the poll came from the Crash speedrunning community. While they all have valid opinions and intelligent reasoning, generally there will be a preference among speedrunners to have the TAS resemble the non tool-assisted speedrun as much as possible (no SFX).

TAS Timing vs. RTA Timing

This TAS comes in at 39:00.517 using TAS timing. At first glance it seems like the TAS saves about 5:45 over the current RTA WR (44:45) but this is incorrect. There are 3 main differences which make TAS timing not comparable to RTA.

The first difference is the timing itself. TAS timing starts from power on, but RTA starts from when you gain control of Crash (about 48 seconds after power on). Both timing methods end on the last input.

The second difference is use of SFX. I chose to keep it on, losing roughly a minute but most RTA runs turn it off.

The last difference is the loading times. As it should, Bizhawk emulates the loading times for a PS1 accurately as far as I know. However, it’s possible to play PS1 games on a PS2 slim which has a feature called FDS (Fast Disc Speed) which drastically reduces loading times. Naturally, most speedrunners play using a slim PS2 with FDS. This costs about 6 seconds in every single level.

I calculated what time the TAS would get if it used RTA timing, turned off SFX and used FDS. The final time was 33:42.285. This might vary by up to 1 or 2 seconds as the global cycles in the water levels would have to be rerouted.

Version Choice

The physics were adjusted accordingly for the PAL version so that became an option. Unfortunately the maximum screen scrolling speed is very slightly slower in PAL. Also there are less aku aku’s which means that many levels become slower, especially deep trouble and N. Tropy. Finally the title screen is longer in PAL.

Another choice was the Japanese version. The title screen is roughly 142 frames longer than US and there is a cutscene when you get an aku aku. This cutscene is skippable, but it still takes quite a while to skip it.

The US version has none of these problems so it was used for the TAS.

RAM addresses and scripts

Lots of stuff is dynamically allocated in this game, so I rarely used a RAM watch. A few values were always in the same address shown below
069034 Global Timer
065D70 Screen Scrolling Progress

The following are dynamically allocated, but the listed values are where they were in the TAS

0B46B8, 0B2C14, 0B2E50, 0B0A90, 0B0854, 0B20E8, 0B3BB8 Bye Bye Blimps HP
0B1174, 0B0F38, 0B0CFC, 0B0AC0, 0B0884 N. Gin Phase 1 HP
0B3E24, 0B13B0, 0B30BC, 0B2A08, 0B01D0, 0B6420, 0B4950 N. Gin Phase 2 HP
0B0BC0, 0AF568, 0B1038, 0B16EC, 0B074C Mad Bombers Enemy HP (+0x000004 for other engine)

This TAS wouldn’t have been possible without the use of Scripthawk: https://github.com/Isotarge/ScriptHawk

Scripthawk supports multiple games including Crash 3. It was useful for this game by dealing with the dynamic allocation and giving all of the values position, velocity etc. A lot of the way the dynamic allocation works was figured out by Pirohiko, whose script unfortunately is incompatible with Bizhawk.

Miscellaneous Glitches

N. Tropy cutscene skip

When leaving the N. Tropy fight, by skipping the blue vortex cutscene on a specific frame the cutscene of Crash tumbling out of the warp portal is skipped. After getting opinions from the Crash speedrunning community and trying a lot to get this otherwise, it seems that this glitch only works with SFX on since it has something to do with the blue vortex cutscene. The only place where this glitch happens in the run is after the N. Tropy fight.

The vigilant viewer will notice that this glitch happened after the Tiny fight in Lapogne36’s TAS #5368: lapogne36's PSX Crash Bandicoot: Warped "item glitch" in 18:27.42, but not this one. I attempted every single possible frame for skipping the cutscene and many, many different frames for starting the cutscene and couldn’t get the glitch. However, I believe that the glitch is not possible unless you are taking crystals out of the Tiny fight using item glitch (which Lapogne did and I didn’t in this TAS). I used the tiny fight from my TAS, but got a crystal from it and managed to pull off the glitch in 4-5 tries. This is extremely strong evidence to conclude that it’s only possible with crystals and there is no way that I could have done it in this TAS.

Button glitch

There are some glitches in the warp room simply used for entertainment when they don’t use time. The main one is button glitch. Normally when you enter a portal into a level, you get sucked in and lose control, then the level loads. If you’re spinning and jump on the same frame you touch the portal then you can move around while the level loads. This has an application in 105% with the time trials, you can load the wrong target times for the level by stepping onto another button as the level loads.

In this TAS I just use button glitch to have more time for playaround. Sometimes I don’t use it because NSJ is the fastest way to enter the portal and I need to slide spin for button glitch, but when slide spin is the same speed, I do a button glitch. Doing the glitch itself doesn’t save or lose any time as long as your movement doesn’t cause any lag. Unfortunately, while I knew about it at the start of the TAS, I only figured out how to do it in warp 4. I try to make the most of it for the rest of the TAS.

Audio Glitch

In warp 5 coming out of 2 of the levels there’s a glitch where there’s no music for a little while in the warp room. I’m not sure what causes this but it was interesting so I’m glad it was in the TAS.

Shake a Cutscene

Entering mad bombers I use a button glitch and body slam just before the level loads in. This has the effect that you hear the sound of the body slam, but Crash never visually hits the ground. Another side effect is that the blue vortex cutscene has a shaking effect like a body slam would normally cause. If you don’t have a blue vortex cutscene, then whatever level you are going into shakes at the start.

Movement and optimization Tech

I’ll explain all that I can about movement below, but I’ve also made a video tutorial explaining all forms of movement in this game aimed at speedrunners: https://www.youtube.com/watch?v=Cun2Eokv9xg (note: I don’t talk about zip-zagging in the video)

Zig-zagging and normal movement

While there wasn’t much normal movement in the TAS I’ll cover the basics here for completeness. When not invincible the fastest form of intended movement is sliding. Crash will completely stop at the end of a slide, but by performing a spin or a jump at the end it can be avoided. A popular form of movement in Crash 3 is a Neutral Slide Jump (NSJ), this is done by jumping at the end of a slide and letting go of the analog stick. If you don’t let go you snap straight back to walking speed, but if you let go you only gradually lose speed in the air. The other option for movement is spinning after a slide. This snaps you back to walking speed but has the advantage of being able to start a slide again sooner than jumping.

Zig-zagging is another useful technique. It is done by alternating the adjacent directions to your direction of travel. For example to zig-zag when holding up, you will alternate between up+right and up+left. The best results are achieved by using the analog stick. My current theory on zig-zagging is to do with the range of the analog stick. The coordinates for a direction on the analog stick are in a square 0 to 255 for both x and y with (128, 128) being central. It seems that if you are on the edge of the circle with radius 128 around the center then Crash would move at the intended full speed. However in the corners of the analog range, the distance from the center is sqrt(2)*128. I don’t know if this is the cause but it is a consistent theory and the speeds do seem to get multiplied by roughly sqrt(2) when zig-zagging. The analog stick in the virtual pad in Bizhawk provides a good visual representation and an image of this is linked below.

Crash can zig-zag when sliding, spinning and jumping but not walking. It would seem that you wouldn’t gain any forward speed from my explanation since you only get 128 range forward and 128 right or left but you do get more than 128 range worth of forward speed because crash doesn’t turn to face the diagonal direction immediately.

Somewhat counter intuitively, if you have perfect zig-zagging, spinning after a slide is faster than jumping in the long run due to being able to perform more slides. I calculated some averages for these forms of movement which are summarized as follows

Movement type Average units per frame
Slide Spin (no invincibility) 6.63167
NSJ (no invincibility) 6.2721
Running Shoes* 6.7599
Slide Spin (invincibility) 7.05674
Slide Jump (invincibility) 7.4456

(*) With jumping and zig-zagging, applies to both invincibility and no invincibility movement, likely an overestimate.

Zip-zagging

The main tech used for platforming is called zip-zagging. This glitch allows me to build up negative speed in place reasonably quickly and it’s theoretically unbounded. Then I can use this massive speed to get through the levels extremely quickly. To build up speed you need to be jumping while not moving and alternate between up left and down right (or up right and down left) every single frame (30fps). Spinning makes this process slightly faster. Being on the ground makes you lose speed so you should be jumping as much as possible. The part of this glitch where you build up the speed is TAS only, although it is possible to pause buffer it if you’re bouncing on something (so you don’t have to worry about jumping), however it’s extremely difficult https://www.youtube.com/watch?v=IwZUVGIwZ4c

Once the speed is built up, you can use it by holding the direction away from where you want to go (since it’s negative speed). If you just hold the direction, you lose speed every frame even while in the air. But if you zig-zag you don’t lose the speed while in the air (e.g. to travel forward hold down while alternating left and right each frame). You should keep jumping to avoid losing speed. If you jump frame perfectly you shouldn’t lose speed while on the ground. When originally working on this TAS I found zip-zagging during the playaround for the Tiny fight and I had to start the TAS from scratch, it was definitely worth it though. Zip-zagging works on all 3 of the original Crash games.

Optimizing zip-zagging

First I had to consider optimizing the speed build up. There are 4 choices for how to alternate: UR/DL, DL/UR (starting on DL instead of UR), UL/DR, DR/UL. All of these were used at least once in the TAS and it’s impossible to tell in advance which one will build speed the fastest. Also, even in the same level the fastest method is not always the same if you come in on a different frame or global cycle (this game is not resync friendly so you can’t just copy paste inputs for a level and have the level sync). I keep spinning as much as possible to build up speed slightly faster.

Once the speed is building up as quickly as possible I have to consider how much to build up to get through the level optimally and not waste time by building up too much. The camera heavily dictates how much speed I build up. The camera only has a fixed scrolling speed in Crash 3 so I am limited by that as how fast I can get through the level. If you outrun the camera too much, the level collision becomes not solid. Also certain things only load when they’re roughly visible on the camera like the opening and closing doors in the tomb levels, the gates in the warp room and the warp portal to finish the level. However, even if level geometry is on camera if it’s too far away it’s not solid.

My strategy for optimizing the levels is to build up just enough speed that I can begin to outrun the camera and have it scrolling at the maximum speed (roughly 35 units of velocity in Scripthawk). Once I get far enough ahead that I can slow down for a frame without the camera slowing down, I use that frame to build up more speed using the method above. Then I’m roughly at maximum speed by the end of the level (you can keep building up velocity units but there’s a maximum with how the game translates that into change in position). The two things that get in my way with zip-zagging are corners/bends and gaining height. I can only zip-zag in one direction without losing speed, so when I approach a corner while moving forward I either have to move completely left or right for a frame to get around the corner (running the risk of slowing down the camera) or I have to move diagonally around the corner (sacrificing some of my built up speed). The reason that I need to keep building up speed when I outrun the camera is because usually I move diagonally around the corners to keep the camera fast scrolling which makes me lose speed. Because of this I generally have to build up more speed for levels with lots of corners.

The other difficulty is gaining height. Usually gaining height is fairly easy in this game since you can slide jump or double jump if you have it unlocked but slide jump costs you 10 units of speed (about 1/3 – 1/6 of my speed depending on how much I have). Double jump completely sets the speed to 0 so that is almost useless. Generally my strategy for gaining height is to get really far in front of the camera and do lots of single jumps, or build up so much speed to that I can slide jump. For some levels (eg. High time) there are very large climbing sections where I use double jump and lose my speed but then just use the rest of the climbing time to build up speed again.

Finally at the end of the level I have to get into the warp portal as soon as possible. Usually it loads as soon as it comes on camera so in some levels it was easy (like running backwards levels) but in some levels it was hard since it comes on camera really early. Note: if it’s on camera but really far away it might not load until you’re close enough.

For most levels I can get in on the first frame that the portal loads. The way that I test this is outside of the TAS, I save a state from where the TAS was earier in the level, then edit my position to be the coordinates of the warp portal and see what frame the level finishes. Then I make sure to get the same frame in the actual TAS. In some levels this wasn’t possible, most of the time due to problems getting height. I mention these in the individual level comments.

The game has a strange way of handling the negative speed. In the range 0 to -60 units (roughly) it behaves as expected, just hold whatever way you don’t want to go. -60 is moving as fast as possible. Then when you move past -60 it turns into the same magnitude but a positive speed (internally it’s still negative), I can tell this because it changes so that you have to hold the direction that you want to move rather than away from it. Once you get up to roughly -120 that’s about 0 speed and then it starts over again (-120 is very similar to 0). I haven’t extensively tested past about -800 but it would take so long to build up that much speed that no matter what the outcome, it wouldn’t be useful. Note: I’ve oversimplified a bit here, above is how it behaves when zia-zagging but completely holding a direction is different, but has a similar speed cap.

Global Cycles

This game has a lot of things which are global cycles (some enemies, tomb wader water level, magic carpets, opening and closing doors in tomb levels, etc.). The most important global cycle is in the water levels, with the spinning wheel zappy things. Due to these I had to route warp room 1 and 3 completely around them. This meant that I had to TAS each level in them 2 or 3 times to know exactly how long they take. Then warp room movement and blue vortex cutscenes messed it up whenever I thought I’d figured it out. Also since this game is very prone to desyncs I had to completely redo each level every time I changed the order, I couldn’t just copy paste the inputs. There are other global cycles in the platforming levels but luckily I could just clip things and get around without losing time so I didn’t need to route them.

Swimming Levels

In swimming levels, spinning is the fastest form of movement but between spins it’s good to press X to paddle. Paddling is especially good while travelling vertically since spinning is less fast for a little while after you swap from horizontal to vertical. When in the submarine, boosting with circle on the first frame possible is the only real tech. There are also some sneaky shots to get rid of some obstacles. There’s some tech called box boosting which (I believe it was found by BlitzPhoenix98). When you’re swimming over a box (or coral) there’s one frame where if you spin, you get a boost in speed (roughly 1.5x speed for the spin). This is frame perfect and doing it any earlier makes you lose all of the speed.

Tiger levels

These levels generally start with coco walking up to Pura. To optimize this, jumping and zig-zagging is used. You have to start walking for a little bit to reach full speed before jumping and zig-zagging. The main thing to optimize is jump spacing, I want to land directly on the spot that triggers the jumping onto Pura cutscene. Too late and I waste time in the air before the cutscene starts, too early and I have ground movement towards the cutscene which is slower.

The strategy on Pura is to hold the boost button and jump as much as possible. Each time you jump it roughly doubles your speed for a frame (so each jump saves roughly a frame). This adds up quickly over the whole level. I use a strategy where I get underneath the side railing of the level and use the collision down there to jump. I learnt about this method by watching the time trial TASes, as far as I can tell it was originally found by trihex. This is very tricky to do without falling down or accidentally jumping back in bounds and often you can only do it in short bursts before a hill comes up which means you have to get back in bounds. At the end of the 2 tiger levels I do a cuddle skip, which skips the animation of Coco slowly hopping off, then cuddling Pura. This glitch saves about 5 seconds. See the IL comments for individual level explanations of the glitch.

Jet ski Levels

These are probably the least tech filled levels but there are still some tricks. The main thing is being aware of the level axes. If you are travelling along an angle within 45 degrees from an axis you will travel at full speed along that axis, so for each direction parallel to an axis, there’s a 90 degree range where you can travel full speed in that direction. The speed in the other axis direction varies along the 90 degree range, minimizing in the middle and maximizing at the edges. This also means that if you move at an angle exactly between a pair of axes, you will move at full speed in both the x and z direction (sqrt(2)*normal full speed). Normally this isn’t used because you need to travel primarily in the direction parallel to an axis. This means that there can be some places where it looks like the TAS loses time, but it isn’t because it’s travelling at full speed along an axis where it needs to.

There are also waves which are on a global cycle. Sometimes these waves can speed up or slow down Coco but it’s rare, I took advantage of the speed ups wherever possible. The waves seem to matter more when dealing with 105% and getting the right height off ramps to break boxes in the air.

Driving Levels

If you press X at the right time at the start of the level, you get a boost and a wheelie for a short time. Depending on when you start holding X for the boost, different results can happen. These vary up to about 1/15th of the distance you’d travel in one frame. I make sure I get the optimal boost in all levels (which varies a lot depending on the level!) but it’s possible that this distance wouldn’t have even saved any frames. The basic strategy in the driving levels is to go over a boost to get a wheelie and try not to lose it. This involves sneaking through gaps in obstacles and driving straight over holes. You can brake to turn a little bit sharper while still keeping the wheelie but this wasn’t useful anywhere in the TAS.

If you do have to lose a wheelie, you let go of X. Somewhat counterintuitively if you let go of X then press it right away you actually slow down faster. What you should do is let go of X and don’t start holding it again until you’ve gone back down to normal driving speed. Another thing to mention is that you can travel at is a very limited set of possible angles, rather than an approximate continuum like one would expect.

Due to this, precise analog inputs are not extremely important since you ‘snap’ to particular angles on certain frames and finer analog precision doesn’t make that any more precise. Nevertheless, I make sure to always use precise analog inputs when it it necessary.

An interesting thing with angles is that you can travel almost forward and a little bit to the left or right, but still keep the full speed forward. Basically, it doesn’t take away from your forwards speed but just adds sideways speed, so technically you’re covering more distance per frame (although no farther forward). Once you turn too sharply you start covering less distance forward. There are similar ranges like this centered around not forward, e.g. the fastest forward speed is about 38, then there is a range of about 10 degrees where you can travel 37 (with varying horizontal speed), then the next range is about 34 and so on. My strategy for turning sharply is to be right on the edge of a range where it is about to make me travel at less forwards speed, but while turning as left/right as possible still within this range. These ranges are all about 10 degrees, some are bigger than others.

Flying Levels

Not too much tech here. I can turn a little bit during the little cutscene at the start of the level and I use this to get closer to what I need to shoot. Moving up or down reduces your forward speed so I try to avoid it. Instead of matching the height of the blimp or plane, I point my nose up or down at it to shoot. This is so I can do as little up or down movement as possible. Mashing shoot perfectly is the same speed as just holding it and doing a barrel roll doesn’t affect speed. X is a brake which I don’t use except very rarely to line up enemy shots.

The hardest part of these 2 levels was the routing but I managed to find good routes going through both which both differ from the RTA routes due to increased difficulty with shooting from above/below.

There is also a death abuse at the end of both levels. This happens when you shoot the last thing and die at the same time. This was extremely hard in bye bye blimps because the enemy planes are so weak. The plane shooting is RNG so sometimes I fire a shot seemingly randomly to get them to shoot me sooner. Even though it’s RNG it can only be manipulated to a certain extent. The planes don’t like to shoot you too early in the level even if you try to get hit so most of my damage comes later in each level.

Individual Level Comments

Level 4 (Bone Yard)

This level is extremely laggy. I do my best to reduce it here. Getting into the portal isn’t too precise since the camera takes a while to reach it.

Level 5 (Makin' Waves)

I sacrifice 2 frames to do a weird camera thing at the end of this level but global timers mean that I don't lose any time overall. Wave cycles can be different.

Level 2 (Under Pressure)

This was the most inconvenient level in the first warp room. I had to wait for the second loop so any frames saved throughout the level wouldn’t make much difference apart from lag.

Level 3 (Orient Express)

I was happy with how often I could get under the level to jump, but there were some slopes that I wish I could have gotten underneath. There is a cuddle skip at the end of this level used in RTA. To do it you have to use the roof collision to get a high jump and hit the portal before the cuddle animation starts. I jump at the roof, do one jump in the roof and then a jump at the end of the roof. Leaving that first jump in the roof collision saves some frames as you hit the portal sooner. The horizontal position on the roof doesn’t seem to matter. Coco can zip-zag when walking to pura but normal movement with zig-zagging is faster. If Coco is in the air she won’t jump onto Pura and she only jumps onto Pura once past a certain point. Since jumping allows for zig-zagging and walking doesn’t this means that timing the jump to hit the ground in the exact spot where Coco can jump to Pura is best.

Level 1 (Toad Village)

I TASed this level about 6 times overall for different reasons: I TASed it once before finding zip-zagging and a few times for global timer testing and experimenting with different amounts of charge up speed. I am fairly sure that I built up the right amount of speed in the TAS. Building up any less means that I cant get to the portal as quickly. I use a damage boost at the end of the level to get into the portal on the first frame possible (besides lag).

Tiny

This boss is surprisingly more complicated than it seems. When the lions come out there can be one or a pair of 2. Each pair of 2 lions lose roughly 6 frames. This can add up significantly if not properly manipulated. Ideally a single lion will come out every 30 frames (sometimes 28). There is also the issue of lag reduction. There is no lag in this fight normally, but if I do zip-zagging playaround it can cause lag so I have to be careful. It’s possible to hit Tiny out of the arena with zip-zagging but the lag would mean I lose time so I decided not to do that.

Warp Room

The section moving from the first section (levels 1-5) to the second section (levels 6-10) was difficult to figure out. Originally I thought that zip-zagging would be much faster. This looked good in theory but it had some issues. There are two big lag spikes (one on each bridge) when using zip-zagging. This means I either have to go through the lag spike (losing speed) or build up more speed just before it and wait for the area to load. I tried many different amounts of built up speed and eventually optimized the zip-zagging movement. Even though I squeezed out all that I could zip-zagging, normal movement was still 8 frames faster overall.

Level 6 (Gee Wiz)

Nothing much to say about this level except that I make sure to get an aku aku since I lose one in Toad Villiage. I made it into the warp at the theoretical best time, so the only possible places I could have lost time is the start or laggy areas.

Level 10 (Midnight Run)

This level has the same tech as orient express. Once again it’s quicker to walk to Pura normally rather than zip-zagging. I would have liked to get underneath the level to do more jumps but the geometry prevented me from doing so. The main difference in this level from Orient express is the cuddle skip at the end. The skip is much harder in this level. I use the flag on the right and the trick with the skip is getting as far right as possible to land on the edge of the path near the warp. This gives Coco enough speed to make it to the warp before the cuddle animation. This was a pain to optimize and I spent many hours trying to do so. It’s possible to do the skip without taking damage but I chose to take the damage as it gave me some more height, saving some time. This is not an issue since masks are quite disposable with zip-zagging.

Level 9 (Tomb Time)

This level had many roadblocks compared to the other platformers. First there is a big stack of boxes at the start. This is easily dealt with by jumping high and spinning the top row and I don’t lose any screen scrolling speed. Then there is a set of stairs which caused some trouble. Crash doesn’t jump high enough to make it up the stairs in one go so having the screen slow down here was unavoidable. I built up just enough speed at the start of the level so that Crash makes it up the first set of stairs in one jump rather than two. In the part of the level near the bonus stage I wanted to skip the detour to the right, but due to the way the camera works even if I made it across without going to the right it wouldn’t be any faster.

One of the biggest hurdles in the level is the doors which open and close. These are on a global cycle so I had 2 options: manipulate the cycle or clip the doors. Since the global cycle manipulation was horrible to route in warp one I chose to clip the doors. To clip the doors they must be off screen, but this presents another problem as Crash will fall through the ground if he is too far forward. I managed to use a strategic box bounce to clip the doors and lose no time compared to if the doors were open.

The ending for this level was the most difficult part. You are a lot lower than the warp portal and the stairs leading up to the warp portal don’t become solid until it’s too late. I found that the wall collision loads earlier so I get stuck in the wall and use that to jump out and get extra height. Even with the height I still hit the warp portal from much lower. I made it into the portal 18 frames slower than the theoretical best time which ignores the level layout and gets into the portal the first frame that it loads. While this bothered me I still think I did well considering the awful layout near the portal.

Level 8 (Hog Ride)

This level is a standard application of the driving physics. I stay at angles closest to the z axis to keep maximum speed. There is a bump into a sign and a police car which both speed me up slightly for 2 frames. At the end there are 2 zippers, I tried hitting both, hitting none (going to left of police car) and hitting just the last one, hitting just the last one was fastest. At the end of the level I wanted to do a glitch where I fall out of bounds but unfortunately you don’t get the crystal if you do the glitch. I drive into the mud at the end since that is a similar method to falling out of bounds. Driving into the mud doesn’t cost any time.

Level 7 (Hang’Em High)

This level starts with a convenient upwards section where I can build most of the zip-zagging speed without losing time. Unfortunately there is a big lag spike near the first aku-aku box. I had to slow down the screen scrolling to avoid this, but the advantage was I could build up some more speed. The long section of grating was difficult since there is no ground to jump off. Luckily this was towards the end of the level and I had enough speed to get through long sections on a jump. The enemy placement allowed me to not grab the grating. Grabbing it doesn’t make you lose your speed instantly but it makes the speed decrease fast. After the crystal I had to slow down while getting height off the arrow box. The ending to the level was 2 frames slower than the theoretical maximum (1 frame at 30fps). I bounced on the boxes which was the earliest thing I found that gave me enough height to reach the warp.

Dingodile

The first jump was kind of precise but the rest of the fight was pretty much an autoscroller. Due to weird lag stuff the point where I grabbed the powerup needed to be optimized. Crash’s position doesn’t seem to matter though.

Level 15 (Double Header)

This level is known for crashing or causing glitch graphics. I wanted to have glitchy graphics but I couldn’t replicate it and it probably would lose time anyway. There are lots of bends in this level so optimizing zip-zagging charge up was a pain. I TASed the level a few times to make sure I had the best amount of speed.

Level 12 (Deep Trouble)

Yay more global cycles. These ones weren’t quite as bad but they were still the cause of me redoing 2 levels due to different ordering and redoing lots of other little bits. In level 2 I could be a little lazy since I had to wait for the wheel anyway but here I didn’t have to wait at all. I just barely squeezed through with my cycle but the window of valid cycles without losing time is quite wide.

The watery turbine things aren’t global. They use the global timer to keep time, but they only start when loaded, by Crash reaching a certain position. Since there are three sets that I can’t get past and I only have 2 masks I had to stop for one. I tried so hard to sneak past at least one set with no luck. You don’t move fast enough to get through with normal movement but I hoped to with box boosting. Box boosting helps but with the way that the boxes line up with the spin spacing, it’s impossible to make it through any set of turbines as far as I know. This is because to boost on the boxes, you have to have finished a spin right as the turbines load. This is bad because ideally you want as much spinning as possible for extra speed. This was one part of the TAS that I really wasn’t happy with because if I could just squeeze out a little bit more movement I would save several seconds by not waiting.

You can make it through the turbine past the last spinning wheel since it loads while you’re travelling upwards, hence it’s finished spinning when you reach it.

Level 14 (Road Crash)

This level was a lot more difficult than the first driving level. My strategy of staying as close to the z-axis doesn’t work since the track is a circuit, rather than a sprint like hog ride. This means I have to play it more like a physically accurate racing simulator, but I did sneak in some axis shenanigans. I keep the first boost over the gap and use another driver to turn me sharper. Optimizing the tight corners was a pain and they were the parts I was least confident with in the level, but in the end I think I took the corners quite optimally.

Level 13 (High Time)

What an awful level. The nice part is there is lots of vertical sections to charge zip-zagging. The bad part is these vertical sections require double jump or ground pound to do quickly. Double jump and ground pound both reset speed to zero so I had to plan when to start charging which means slower climbing. The grating was a pain this time but I managed to get around the first one by clipping into the wall behind the boxes. It’s possible to get on top of the grating but this requires double jump which would kill my speed. In my first pass of this level I didn’t need the mask, so I bounced off the enemy with the pots to reach the second climbing section. Since I need the mask for the optimal route (used in the TAS) I had to delay reaching the bouncy thing to get the mask.

It was possible to make it to the warp at the fastest theoretical time, but this caused about 30 extra frames of lag. I sacrificed 1 non-lag frame (30fps) to save the 30 frames (60fps) of lag.

N. Tropy

No huge tech in this fight, just hit him as soon as he becomes vulnerable. I can play around and get really close, but if you get too close he does an instant death attack. He only checks to do this attack sometimes so there are times where it’s safe to get quite close.

The only time save in this fight is damage abuse. When he shoots the last fireball, he won’t start his next attack until the last fireball is gone. By getting hit by the fireball, it’s possible to save 142 frames (60fps). Using 2 masks in this fight saved 284 frames overall. It’s fastest to do the damage abuse in the second and third phase because in the first phase, you can’t get to the fireball fast enough to hit it on the earliest possible frame because he shoots it very shortly after you gain control.

I also make him do the instant death attack after getting hit by fireballs. Usually this attack just ignores your masks and kills you, but since I have temporary invincibility from being hit by the fireball, the instant death attack doesn’t hit me. I don’t know why, but combining the instant death attack with the damage abuse is about 30 frames faster than just doing the damage abuse. Maybe it skips an animation or something like that.

Level 16 (Sphynxinator)

This was one of the more difficult platforming levels, especially considering I had the tornado spin power which made the platforming easier and this was still difficult. There are a lot of doors on global cycles, but what I’ve learnt at this point is global cycles are awful to route. Luckily I can use zip-zagging to get past some closed doors. Usually I clip a roof or wall to get around the door rather than clipping the door itself. The reason is that doors are objects and objects keep their collision further from the camera. Standard walls, roofs, floors become non-solid closer to the camera than objects. Basically if an object is on camera at all it’s usually solid. Many more doors were clipped than it appears. When you clip a door and get past it, it opens up. So it looks like all the doors were open for me when in reality I clipped nearly every one.

The hardest part of this level was the huge staircase. Before this staircase is a massive section of black oily ground. Hitting this oil gets rid of the zip-zagging velocity so it’s essential to jump over it. This presents a new problem because the height is all messed up for the stairs. I want to jump as high as possible before the stairs but if I jump at the end of the oil I’m reaching the end of my jump when I reach the stairs.

My solution for this part was to bounce on the enemy that pulls the lever (this is very difficult). Then I’m far enough from the camera to clip into the roof. Once in the roof I have to very carefully slow down so that when the collision loads I’m in the section of the roof furthest back (otherwise there are walls stopping me from jumping forward). Then I jumped onto the stairs from the roof. Once on the stairs I would have to jump once to a higher stair, then once again to clear the staircase. Usually multiple jumps like this would slow me down enough that the screen scrolls slower but I was far enough ahead to pull it off without slowing down the screen.

There is one last issue with the big staircase. The door at the top is closed. I tried for a long time trying to get around the door with my final jump (the one that clears the staircase) but I had no luck. You need to load the collision to jump off the stairs and by the time the camera is that close, the walls are solid. In the end my solution was to use the jump to get to a higher stair, clip through the stairs (under the door) during this jump.

Going underneath the door opened it. Then I had to pull back, get back in bounds and jump off another stair to clear the staircase. Note that I couldn’t simply keep going past the door from underneath as I’d die. I could double jump to get in bounds but this would kill the velocity. This was a really complicated solution to the section and probably one of the most difficult sections to route.

Level 17 (Bye Bye Blimps)

I had to plan the order to do the blimps for this level. Originally I tried to do the same route as RTA but I found a new route (used in the TAS) that is faster than the RTA route, but only with TAS accuracy. I tried completely TASed all of the possible routes that could be the fastest, then I started thinking about the death abuse. I also confirmed that none of the other routes could take more damage and lose less time.

The death abuse planning was probably one of the most difficult parts of the TAS to optimize. Since it’s the first flying level the game is very generous with your defense. It’s also a very quick level so it actually becomes difficult to take enough damage before the level is over. The enemy planes aren’t very violent at the start of the level so most of my damage has to be taken towards the end. The shooting is RNG so I had to manipulate the planes, but it’s not completely RNG. This is because the planes have to line up and fly towards you to be able to shoot, then whether they shoot and how much they shoot is RNG but there seems to be a limit. This basically means that I have to keep flying in a straight line to take damage, this is bad because the optimal path turns as soon as each blimp is shot so there are no long sections of straight lines to take damage (except before the fourth blimp because the planes aren’t aggressive). I had to take a detour for damage between blimps 5 and 6. This was the part I was least happy with but it was quicker than taking the rest of the damage at the last blimp.

I sacrificed 102 frames (at 60fps) to get the death abuse but the death abuse saves roughly 351 frames so I saved 249 frames overall with the death abuse. This was the level that I put the most time into, but it was also the level that I was the least happy with.

Level 20 (Tomb Wader)

With death tornado spin the water isn’t too much of an issue in this level. Often I can spin over the top of a whole water section. The main issue in this level is the doors. I had to build up a lot of speed so that I could hit the switches and open the doors without losing time to the screen catching up. I couldn’t simply open the second door, so I had to clip past it. It’s possible to use the short open area with the death platform to get outside either the left or right walls of the level (this is easy and can even be done without zip-zagging. The issue with this is it’s impossible to get back in bounds, even though there’s still a little bit of floor you can jump off OOB. This is simply because even if you are very far from the camera, the walls remain solid. My solution was to clip over the top of the door by clipping, this lost no time. I was lucky that I pulled off the roof clip, otherwise I might have had to route more global cycles so that I could hit the switch (the water level cycle is global). The warp portal in this level loads ridiculously early and there is not much to work with to gain height. The best I could do was 18 frames (30fps) off the theoretical best. This seemed to be a bottleneck as even if I made it to the coordinates of the portal earlier, it didn’t seem to end the level any earlier.

Level 19 (Future Frenzy)

The hardest part of this level was choosing how much speed to build at the start. After testing different possibilities, the optimal solution was just enough to scroll the screen as fast as possible (the usual strategy). This was the case even though you can start the platform moving before the screen has fully scrolled to it. During the cutscene of the platform taking me to the sidescroller bit I can build up speed. This shouldn’t work because I’m on the ground but for some reason the “locked” movement state allows speed build up without jumping or spinning. After this cutscene I have more than enough speed for the rest of the level.

The only other complication is the lifts. The lifts seem to wait to take you up if you reach them too quickly, but there is a limit to this waiting so it was worth just going as fast as possible. It’s possible to use the global cycles timer to tell if the lifts are optimized and each lift was taken on the theoretical first frame (apart from possibly lag frames which were reduced as much as possible). In the lifts I need to keep zip-zagging to keep the speed so this caused a little extra lag and it was very hard to stay in the lift. I have to be on the platform (not jumping) just before it goes up otherwise it doesn’t go up. Being on the ground loses a lot of speed, but I have speed to spare in this level due to the platform cutscene. The level portal was the theoretical fastest frame and I triggered a weird glitch where the level portal is invisible. This doesn’t save or lose any time and I don’t understand what the cause was, but it was cool to have in the TAS.

Level 18 (Tell No Tales)

This is another fairly simple level in terms of optimization. Some of the turns I do don’t look optimal, but Crash 3 physics bears little resemblance to real physics. Many of the turns are based on the way that the level axis lines up.

The enemy with the anchor shortly before the Aku-Aku box caused a bit of trouble. I had 3 options: keep go around the right hand side, get an Aku-Aku in an earlier level and damage abuse or go close to him while the anchor is far out to avoid being hit. Going around the right was too slow because I want to go as left as possible and any further right is just travelling away from where I want to go. I tried going back to the previous level for an Aku-Aku but it ended up costing more lag than it saved. So I went so close that the anchor didn’t hit me. It looked slightly worse than going right but due to the level axes is was much faster. I could travel at almost full speed along the x-axis which is what I wanted. I was travelling at about 20 units per frame (30fps) and the maximum is around 22. Overall I lost roughly 3 frames (30fps) worth of distance compared to if the anchor enemy wasn’t there at all.

N. Gin

This fight has 2 phases. The first is mainly waiting around for the second gun arm to come up. You have to wait until it’s up to shoot it so I make sure I’ve gotten rid of all the other parts and missiles before it comes up. It’s possible to make it come up sooner but this requires making the first arm come up sooner. To make the first arm come up sooner I would need to destroy the other 3 parts quicker than what was possible. I’m hitting them nearly every frame that I can shoot a bullet but it’s still not quick enough to get first arm (hence second arm) early.

The second phase is where the fight gets more interesting. Everything takes 20 hits and there is a lot of choice in the order of hitting the parts. I get rid of the bottom bit first to avoid the thing that is shoots blocking my bullets and taking a lot of hits to destroy. The bottom bit can be hit even when it’s closed unlike all the other parts. Then there is also the issue of missiles. Missiles take 4 hits to destroy and can get in the way of where I’m shooting. Generally I try to avoid destroying the missiles but sometimes it can’t be avoided. I try to minimize the number of missiles by destroying the missile dispensing parts early. If I do have to destroy the missiles I either use travel time between different parts of N. Gin to do some damage, or I hit a part of N. Gin at the same time as the missile (this is very rare and depends on how far the missile has travelled).

I discovered a glitch in phase 2 where you can hit the top middle 2 missile dispenser parts at the same time. This essentially means that I can destroy those 2 parts in 20 shots instead of 40. This is not used to its limit as they are not often both open at the same time. Also I have to travel across one of them to get to the middle so one will get a few extra shots. Regardless of these restrictions I was able to do over half of the damage to the top middle 2 parts using these double shots. In phase 2 I finish up by narrowly avoiding destroying 3 missiles by some very precise maneuvering. After this I deal the last 3 hits of damage to the right part. It looks like I could have destroyed the right part earlier, but it actually becomes invincible shortly before closing so I do in fact deal as many hits as possible before moving to the top 4 bits about half way through phase 2.

Lastly there is a concept of depth of the shots used in both phases of the fights. If you shoot your bullet on an angle so that it travels further into the background before hitting the part of N. Gin it will delay the damage dealing due to the time it takes for the bullet to travel further (imagine for example in phase 1 hitting the elbow instead of the front of the arm cannon). Usually if you hit the parts of N. Gin on the front with a continuous stream of bullets, every bullet in the stream will hit often with a 6 frame gap between each unit of damage. However if you start hitting him further back, then move towards the front this 6 frame window can be reduced significantly. But N. Gin is still recovering from the shot if the window is less than 6 frames, so this means moving closer to the front of the part will make the next bullet fail to hit. It’s important to note that this depends on what part (and also happens on missiles) and it’s a bit inconsistent. Sometimes it’s possible to have a 4 frame window and still land the hit. Generally I tried to fire my shots as early as possible (equivalent to later shots hitting him closer to Coco). Then I try to hit him the closest to the camera with each shot so that if a 4 frame instead of 6 window was possible, it would be achieved. The other advantage is since the last shot is fired earlier, I can usually start moving towards the next part sooner. This depth manipulation is also how you can sometimes hit the missile and a part of N. Gin at the same time (by hitting the back of the missile and the front of the part).

I tried to get a cutscene skip with death abuse like in Level 17 but dying at the same time as the last shot hits just causes a game crash. It’s impossible to die after the last shot too as taking any damage that will kill just leaves you on 1%.

I used Lapogne36’s any% (Item Glitch) TAS #5368: lapogne36's PSX Crash Bandicoot: Warped "item glitch" in 18:27.42 as a basis for this level, but soon found different routes. I spent weeks optimizing the fight and managed to save 282 frames over that TAS. Only 11 of these were from phase 1 because of the arm cannon waiting, the rest were from phase 2. About 60-100 of these frames were from the double shot glitch.

Level 21 (Gone Tomorrow)

The start of this level had to be done differently than usual. There is a big delay before being able to build up speed for zip-zagging so I use this time to slide further into the level. I do a jump at the end of the slide for more distance. This strategy saved 2 or 3 frames (30fps), but it wasn’t used in other levels because the delay in other levels before building speed is not big enough to be worth it. The only other level where this is worth it is level 23.

Level 24 (Mad Bombers)

The goal of this level is to shoot down 5 planes by hitting them in the propellers. The hit detection is awful but I managed to land shots as fast as I could shoot mostly. It’s possible to hit both propellers at once and I do this as much as possible, however it’s quite difficult.

This level was more difficult to route and brute forcing it by optimizing 120 different routes was not an option. I reduced the routes down to a handful of sensible ones and settled on the one in the TAS after some testing. It differs from the RTA route for the level, mainly because the TAS is able to hit the first plane without getting behind it. The end of the level seems a bit slow, but this is only so that the enemies line up to shoot. Destroying the plane faster would mean that I have to turn a lot and the enemies only like to start shooting if you’re moving roughly straight. Apart from platforming levels with zip-zagging this level saves the most time over RTA, being 24.368 seconds faster than the fastest time that I managed to find. This is because of better accuracy with TAS (those planes are really hard to hit), new routing due to the improved accuracy and the death abuse glitch at the end of the level.

Level 25 (Bug Lite)

This level was annoying for 2 reasons: the sloped ground and the doors. The sloped ground means that I have to run up it rather than jump, otherwise I can’t get height quick enough to outrun the camera. I manage to not slow down the camera in 2 out of 3 of the slopes but in the second slope, running up it cost too much speed.

The first door that caused me trouble was the last one before the 3 Aku-Aku crates. I rush to the enemy just before the door and quickly take damage. For some reason, taking damage stops the door from closing as quickly. The other issue with this first door is that the terrain is very uphill just before it. By coming in from a high point, staying ahead of the camera and bouncing after taking damage, I don’t slow down the camera from this.

The second door was more difficult to deal with. Taking damage didn’t work to delay the door slowing as there were no well placed enemies. Instead I had to get very far in front of the camera and clip through the door by having it not yet on screen. This is the reason I had to lose 3-4 frames on the second slope, otherwise I wouldn’t have enough speed. It might be theoretically possible to get a better global cycle so that the clip wouldn’t be required but there are so many doors in this level that I couldn’t find a better cycle to start on than this one. Also, sacrificing the 3-4 frames on the second slope means that I’m moving faster for the 3rd slope and don’t have to lose time on it (which would possibly cost time entering the portal).

Cortex

This fight is pretty much an autoscroller so I have room to play around, but hitting Cortex into the hole optimally is important. Somehow I managed to save 46 frames over my “Item Glitch, Gate Clip” TAS. I don’t know what the cause of this is. It was much easier to hit him into the hold with the death tornado spin so that helped, but even in parts where this didn’t matter (eg between the last hit and running shoes textbox) I saved time. I have 2 thoughts on what might be the cause: either the item glitch caused some more lag in the game in “Item glitch, gate clip” or having SFX on somehow caused less lag in this TAS. Another difference is that I entered the fight with an aku-aku in this TAS but I doubt that would make a difference since you lose it in the fight. Both TASes hit Cortex into the hole optimally as far as I know.

Thanks

Pirohiko: For making the original script for Crash 3 and discovering lots of non-zip-zagging movement tech.

Isotarge: For porting Pirohiko’s script into Scripthawk and adding tons of new features. Also for helping me find lots of other level specific RAM addresses.

Lapogne36: For making the first Crash 3 TAS which was extremely useful for references on the boss fights.

Crash speedrunning community: For being really helpful and friendly and helping me to find lots of subtle tech that I may have otherwise missed (eg. Death warps in flying levels, cuddle skip advice, speedrun tutorials and so on)

Stream viewers: For hanging out while I streamed the making of this TAS, making suggestions and providing ongoing motivation to keep at it.


Mothrayas: Judging.

Mothrayas: The response to this movie is slightly mixed due to the use of zip-zagging, but is still positive enough overall. The movie still has decent diversity outside of the zip-zagging platforming stages. Accepting to Moons as a new publication for this game.

Fog: Processing.


Similar submissions (by title and categories where applicable):