Crash Bandicoot 3: Warped is a platformer for the Playstation created and developed by Naughty Dog. Crash (with some help along the way) must collect 25 crystals and defeat 5 bosses to complete his quest, to foil Dr. Neo Cortex’s plans for a third time.
This TAS is an improvement of 10:03.532 to the published TAS by Lapogne36. This is almost all due to a glitch called zip-zagging that I found while working on my any% (no major skips) TAS.
Category choice
This run technically obsoletes the published “Item Glitch” TAS by Lapogne36. I’ve left this submission branchless because it should be considered pure any%. I fundamentally disagree with “Any%” including implied restrictions. If it must have a branch name for some reason, it absolutely cannot be called “item glitch”. This is because I plan to TAS Any% (No Major Skips) next which is the equivalent of the Any% (No item glitch) from the RTA community. My Any% (No major skips) TAS will not do the gate clip glitch, which means it can’t skip any bosses. This is why I call it no major skips rather than no item glitch and also why this TAS cannot be called “Item Glitch”. My choice for the branch is simply any% but otherwise it could be called something like Any% (major skips).
Tricks and Techniques
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 |
Slide Spin (invincibility) | 7.05674 |
Slide Jump (invincibility) | 7.4456 |
Interestingly, having the running shoes from beating Cortex (or doing the demo glitch) actually makes no difference at all to the optimal movement. This is because you are only boosted when walking or jumping and not if you jump out of a slide. This means that they have no affect during an NSJ or a slide spin.
Zip-Zagging
The main time this TAS saved over the published run was due to a new glitch which I call zip-zagging since the button inputs are similar to zig-zagging inputs. This is done by alternating between up+left (0,0) and down+right (255,255) every frame. If it is done any slower, it won’t work. By doing these inputs Crash quickly gains a lot of backwards velocity. I haven’t encountered an upper bound to the amount of speed that can be built up. I’ve reached 150x walking speed in testing but only 1/5th of that speed was ever reached in the TAS. The best way that I found to build speed is to do it while jumping, but sometimes it can be done on foot. Every time you hit the ground you lose some speed so it’s best to do jumps as large as possible.
This glitch has a lot of applications. I’ve made a video of a few here:
https://www.youtube.com/watch?v=GIbr3T889TQ
While it seems like you could zip through the entire level extremely fast you are still limited by how fast the level scrolls. If you are moving forward, you can only move so far into the screen until you fall through the level collision simply because it’s too far away from the camera. This means you constantly have to wait for the camera to catch up. This seems to be less of an issue while moving backwards.
Gate clip
The game is divided into 5 main sections. The first contains levels 1-5 and the first boss and so on. In normal play, to fight the boss of an area Crash must collect a crystal from each level in the area first. Once the boss is beaten the gate blocking the way to the next area will open.
After many hours of trying, both myself and Lapogne36 (the author of the previous TAS) were unable to replicate the glitch. I tried many ways, one of which was to exactly reproduce the video frame by frame but I had no luck. I suspect it is either an extremely precise glitch or an emulator error.
Furthermore, once in the gate you would have to clip back out since it’s solid from the back. The exception to this is if you clipped into the last area and never clipped out, which I have routed but is slower.
With a simple application of zip-zagging it is possible to clip the gates. You need to sacrifice a little bit of time to build up enough speed to clip through but it is well worth it due to the routing implications. The main purpose of the gate clip is to skip bosses or to get to levels early. The gate clip is what saves the most time in this run. It skips 4 bosses and it also means I only have to perform the item glitch once rather than twice.
Gate clip doesn’t make the run trivial because if you clip into Cortex’s area and do all 5 levels you still won’t fight him because that requires 25 Crystals in total. Luckily there is the item glitch to obtain the required crystals.
Item glitch
The Item glitch (also known as “box glitch”) is a way to obtain key items through unintended methods. These could include: relics, gems, crystals and the time stopping effect from time trials. In this run, the glitch is the method used to obtain the 25 crystals needed to fight Cortex.
When jumping on multiple enemies in a row, you start getting rewards such as wumpa fruit and extra lives. But if you get 100+ in a row you start getting unintended items. If you jump on 200+ you start getting crystals. Bouncing on boxes doesn’t give you rewards but it does increase the combo counter. To get the 25 crystals I use boxes to get my combo counter to 200 and then bounce on 24 enemies. Each enemy gives me 1 crystal. I also get the intended crystal from the level which makes 25 in total. I chose Gee Wiz since it has two things I need: an arrow box (or something bouncy) and 24 enemies.
The jump combo count is lost if you enter the walking or standing animation. Usually this happens whenever you touch the ground, but by spinning before hitting the ground and jumping before the spin ends you can keep the combo counter. You can also hold circle to duck and keep the counter. With some precision you can slide and keep it too.
The main source of my 200 bounces is the arrow box in the bonus stage. However, this is quite slow since the arrow box bounces Crash so high. This means that I get most of my bounces from standard wooden boxes since Crash can bounce again quicker. It is also possible to make bounces quicker if you spin as you bounce on a box. When doing this, the bounce still counts but Crash bounces much lower. This is actually required when bouncing on the brown lined bouncy boxes otherwise the counter is reset. Unfortunately the bounces are spaced too close to do this spin trick on every box so I only do it on some. I don’t do it on the way to the bonus stage as I need that extra time to build up speed.
The following is a list of some bonuses you get from bouncing combos. This list is from the submission text of the published TAS.
Number of bounces | Item on the next bounce |
---|
1 | Wumpa |
2 | 2 Wumpas |
3 | 3 Wumpas |
4 | Life |
110-199 | Time Trial Freeze |
200-263 | Crystal |
300-363 | Gem |
400-463 | Sapphire Relic |
500-563 | Gold Relic |
600-663 | Platinum Relic |
700-763 | Powers |
SFX
Turning off the sound effects in this game skips the blue vortex cutscenes at the end of the level. This saves roughly 329 frames (5.483 seconds) over the run. Unfortunately this does mean that there are no sound effects but I don’t agree with making speed entertainment tradeoffs so I turned them off and saved the 5 seconds. I also feel that having them off helps to hear some of the great music that you don’t usually get to hear clearly. I also feel that the sound effects off is barely noticeable in my commentary encode.
I did make an attempt at recovering the sound effects using a Lua script that reactivates sound effects when it won’t cause a desync. Unfortunately this game is very prone to desyncs and I was only able to recover about half of the sound effects. My attempt can be found here
https://youtu.be/Mj-qYBHtez0
It took over 10 hours to put sound effects back in to this very short section and I felt that it still looked tacky. As a result I abandoned the attempted recovery.
There seems to be a misconception that turning music off also saves time. I’ve tested this and while it can cause desyncs, it doesn’t seem to definitely save or lose any time.
I saved 8 frames on the title screen over the published TAS. I don’t know exactly where these were saved but I think it was the intro story skip since you have to hold triangle early. It could also possibly be due to BIOS differences.
The route starts off with zip zagging followed by a gate clip to enter Gee Wiz early. Normally you would have to beat 5 levels then the Tiny fight to enter Gee Wiz but clipping allows those things to be skipped. Strangely, clipping through the gate gives crash the ground pound ability. I wanted to show this off by pressing triangle in the pause menu to show abilities but this caused an extra frame of lag. I think every gate clip gives you the appropriate abilities but I haven’t confirmed this and clipping into the last area didn’t give me any more powers.
In Gee Wiz I have to bounce 200 times, then bounce on the 24 enemies to get a crystal from each one. Collecting the intended crystal in the level makes the total up to 25 which is exactly the right amount needed to fight Cortex. I get most of the bounces from the box in the bonus area and then make my way back to the start of the level and bounce on every enemy to the end. I considered hitting a late checkpoint, hitting the enemies in reverse order through the level then deathwarping to get back to the end. I didn’t do this because there would still be backtracking with going to the end of the level after the bonus stage before going backwards. Also the movement is so quick with zip-zagging that it wasn’t worth it, especially when dying caused me to lose my built up speed.
I start the level with non-glitched movement since it’s quicker than building up speed to perform zip-zagging. In the time it takes to bounce on the three boxes I build up speed. This is a common routing theme in the level since I have to stay in place to build speed and I have to stay in place to bounce on boxes.
I leave about half the boxes for the way back. There are 2 reasons for this: the first is to have places to build speed without losing time on the way back, the main reason is to avoid slowing down. For example, if there are 2 boxes stacked on top of each other it is quicker to hit one on the way to the bonus stage and one on the way back. On the way to the bonus stage I do big bounces on the boxes since I need to build up much more speed. On the way back I have a lot more speed since I can build speed on the bonus platform, so I do small bounces and the spin glitch on the way back.
Generally optimizing the level was fairly easy since I usually had to wait a fixed amount of time between the bounces and I’m usually also waiting for screen scrolling. But controlling the glitch and minor optimizations were difficult. Optimizing Any% (No Major Skips) will be much more difficult since there are no required box bounces, so no reason to stay in place. This means I’ll have to plan out exactly how much speed to build up at the start of the level.
After Gee Wiz I have to watch an unavoidable long crystal cutscene. The published TAS was able to avoid this by getting the bulk of the crystals in a boss fight, but as far as I know it’s not possible to skip the cutscene out of the Gee Wiz level. This is because the skip seems to have something to do with the blue vortex cutscene after the level (which I would need SFX on for) but Gee Wiz doesn’t even have a blue vortex cutscene at the end. There were some cool effects of watching the crystal cutscene. The background goes completely black during it and Crash pulls out a few black Crystals and an invisible crystal. Interestingly if the game is paused after the cutscene none of the options are visible, but they all still function.
I have to do a double gate clip to get into the Cortex fight since the gates are solid from the back too. All of the gate clips were really difficult to optimize and I was never entirely happy with them.
The Cortex fight is mainly playaround but hitting him into the hole optimally is important. I was able to save 15 frames over the published TAS on the fight.
Special Thanks
Lapogne36 for helping out with some tech and for making a very recent TAS of this category which provided a good benchmark. I felt terrible that I found the zip-zagging glitch so soon after that TAS but Lapogne36’s TAS is still a very good watch since it uses a different route and you see more of the game.
The Sprash community for providing help with questions I had preparing the TAS.
Pirohiko for figuring out a lot of stuff about this game, providing a lua script with useful watches and creating some good example TASs of the time trials.
Isotarge for adapting the script from Pirohiko to run on Bizhawk and adding many new features. It was part of Scripthawk which supports many games with Lua scripts and RAM watches. It can be found here:
https://github.com/Isotarge/ScriptHawk
Suggested Screenshot: 24100
Fog: Some controversy has come about from this submission, which I feel like should be addressed before continuing with the judgement. I've discussed the following issues with multiple judges in order to come to a consensus on what to do with this particular run.
First off, the most noticeable issue is with the use of no sound effects in order to skip cutscenes. Purely from an entertainment point of view, using NoSFX takes away from the experience of the run in order to save time. However, this is a valid mechanic in order to save time from a technical point of view. There are even some
prior publications which adjust sound settings in order to save time. In this example, the run aimed for Vault, but it's still acceptable in this situation to use as a comparison. As much as I would have preferred to have sound effects in this run, there's a valid use of it in this scenario.
Secondly, the fact that extra, unnecessary memory cards and controllers are plugged in, affecting sync if removed. There are no inputs made on the second controller, and the memory cards are not utilized or written to at any point during the run. If one tries to remove either the memory cards or the extra controller, the lag frame differences make it almost immediately desync. Attempting to fix to use only a single controller, without any memory cards plugged in, would require the TAS to essentially be re-made from the beginning (trust me, I've tried to re-sync this with the required changes with no success). To delay or disqualify this particular run due to easy to make oversights would not make much sense, and I consider it a non-issue for the viability of publishing this run. If there comes a time where either the inputs are synced up to use the proper settings, then a new submission should be done, which would obsolete this run (if it's faster of course!).
Finally, there is some intro cinematic that are not optimally skipped. Compared to what an optimal input would do to skip some of the cinematic, the end result is not something that is easy to identify to the regular viewer, and is of such a minor loss of frames, I'm also considering it a non-issue.
Moving on to the actual run, the new zip-zagging glitch breaks the game in a huge way, making gate clips possible, as well as making movement almost incomprehensible to the normal viewer. The overall audience reception to this run has been mostly positive, minus the issues referenced above. It also utilizes a trick used in the previous publication of this game called the "Item Glitch". This produces a bit of a conundrum in terms of if this particular submission obsoletes this prior publication, or if the zip-zagging/gate clip glitch warrants a new branch to be made for this game. After considering the options, it's best to have this run obsolete the current publication.
With all of that being said, I'm accepting this run for Moons as an improvement to the current publications!
Spikestuff: Pub... Also providing the audio commentary in the downloadables, with subs... which I haven't done much of yet.