Sonic the Hedgehog is one of Sega’s most successful mascots, appearing shortly after Alex Kidd and Opa Opa. The first Sonic game was released in 1991 for the Genesis/Megadrive titled “Sonic the Hedgehog”. Later that year, Sega released a Master System version of the same name. The Master System version is completely different from the Genesis version. Sega then released the Game Gear version which is a reworked clone of the Master System version.
Dr. Ivo Robotnik, the mad scientist, is snatching innocent animals and turning them into evil robots! Only one tough dude can put an end to the demented scientist’s fiendish scheme. It’s Sonic, the real cool hedgehog with the spiked haircut and power sneakers that give him super speed. Spin ‘til you’re dizzy, save the animals and become the super hero. Be Sonic! Be atomic!
This Tool Assisted Speedrun completes the Game Gear version as fast as possible, omitting the chaos emeralds. It is an improvement of 4938 frames over #2493: sgrunt's GG Sonic the Hedgehog in 19:18.70. 4800 of those 4938 frames are lost due to receiving larger time bonuses (see Timing Method section for more details).
Back in 2016 I made a TAS of the Master System version. I then decided to TAS the GG version after it was mentioned in a Forum post called The Dega Project Forum/Topics/19272 I knew that there was some time to save in Jungle 1 for the GG TAS by not hitting the speed cap in the water. I knew that there was also some time to save due to the new timing method that I introduced in my Master System version TAS. But I was surprised to find that there were more optimizations to be made. By carefully optimizing every level and having access to better TASing tools (TAStudio) I managed to save some time on every level.
Encodes
37.6% of this TAS is watching time bonus score tick down. To spare everyone the 7 minutes of ear piercing sound and waiting for the next level, I’ve made encodes that cut out the bonus screen and the level title cards. The encode linked at the top of the submission text has no bonus screens. I’ve also made one which doesn’t edit out the bonus screens https://youtu.be/EHkfNscmdYM
Version Choice
SMS vs GG
While the Master System and Game Gear versions appear to be quite similar on the surface, they are extremely different, especially as TAS games. Due to the significant differences between the two versions I think they both deserve separate publications and currently, both versions have published runs on the site. Below are some of the differences between the versions
- The Master System has a much bigger viewport so the action is more visible throughout the run.
- The Master System version has much shorter score screens, with the Game Gear version's being 10x longer at maximum time bonus.
- The versions have completely different layouts for Labyrinth 1 & 2, Sky Base 1, Bridge 2, Sky Base 3 (just the boss part), Bridge 3. The SMS TAS utilizes a horizontal underflow glitch in Labyrinth 2 while the GG version cannot. Every other level has some kind of change between versions. Some levels such as bridge 1 are more fast paced in the GG version.
- Most of the bosses behave differently between the two versions, requiring different strategies. In general the boss fights in the Game Gear version are easier.
- After TASing both versions I’ve found that there are some physics differences between the two including: in the GG version Sonic jumps lower when jumping out of a roll, the GG version has a lower absolute speed cap, you can roll off springs in the GG version (see spring roll glitch), after landing on a platform in the GG version sonic takes much longer to be able to once again roll or jump, in the GG version holding down while rolling in the air will prevent you from building speed, the jump height is much lower in the GG version.
It’s easier to find a copy of the Game Gear version than the Master System version due to it being included in compilation titles such as Sonic Mega Collection Plus on the PS2, Gamecube, and XBOX. Also, the US Master System version is the rarest game on the console, despite the cartridge and ROM being identical to the common PAL version. While I prefer the Master System version mainly due to the viewport and nostalgia, a GG TAS brings a lot to the table and the GG version is a lot more familiar to most people.
V1.0 vs v1.1
The GG port has 2 versions. Version 1.0 has a glitch where you can use the rising platforms in Labyrinth 1 & 2 to partially clip into walls and get zipped up rather than having to wait for them. There is also an extended version of this glitch that allows me to skip most of Labyrinth 1.
Version 1.1 removed this zipping glitch by applying a cheap method of making the rising platform’s collision smaller. But Sonic jumps higher underwater in v1.1. This means that some parts of Labyrinth 1 are quicker on Version 1.1. However, all of these parts where v1.1 saves time are skipped with the extended zipping glitch which skips most of Labyrinth 1 and is 1.0 exclusive. This makes version 1.0 the clear choice and this is the version that this TAS and the published TAS uses.
Timing Method
The timing method that I decided to use for this run was real time minus the time spent in bonus screens and level titles. This is the same method that I used in the Master System TAS.
The reason that I did not optimize purely for real time is the variable length bonus screens at the end of each level. Since completing the level with lower in game time results in a larger time bonus and therefore a longer bonus screen, there are ranges of game times such that instead of finishing the level, it would be quicker in real time to wait for the smaller time bonus. For example, if the level is completed in 19 seconds IGT you get a 300000 time bonus, taking 3000 frames to tick down. If the level is finished in 25 seconds IGT you get a 30000 time bonus, taking 300 frames. This means that by waiting 6 more seconds to finish the level you save 45 seconds on bonus screens (39 seconds saved total). This is not good, since it would make any optimizations to get a time less than 25 seconds IGT useless in real time. So real time is not a good measure for this TAS.
A common opinion is that only game time should be used, but this also has some issues.
The issue with optimizing purely for game time that is most obvious from unassisted runs is the signpost at the end of the level. When hitting the signpost it will spin in the air with the height depending on how fast it was hit. Stopping movement before the signpost is quicker in real time since it shortens the spinning animation but has the potential to reach the next second of game time in some levels. In this run I have decided to stop to shorten this animation. If this wasn’t the case, it could lead to carelessness such as in the published run where there is enough time to stop at the end of the first level before the screen catches up, but the signpost is still hit at full speed costing unnecessary real time with no game time saved.
The less obvious issue with game time is lag. Game time doesn’t count up during lag, so optimizing for game time could completely ignore lag reduction or even use laggier strategies that are slower in real time. This would make some levels such as Bridge Zone 2 trivially easy to TAS, again leading to carelessness. When optimizing for game time, creating as much lag as possible in the boss fights would be used since lag doesn’t slow the boss down.
Since optimizing purely for real time leads to awkward waiting periods in levels, and optimizing purely for game time leads to potential for carelessness, my chosen solution is to time from the frame that the level fades in, until the frame that it fades out. This eliminates the issues with lag, signposts and bonus screens.
One technicality about the timing is when to decide what the first frame of the level is. Usually when the pallet is loaded, the screen goes completely one colour (eg. blue for Green Hill, green for Jungle). But sometimes this colour is black so it’s impossible to visually see it. For this reason I’ve defined the frame that the level fades in to be the first visible frame of the level. The frame it fades out is the first completely black frame (or in Labyrinth 3’s case brown for some reason). I rely on visual cues rather than memory values because I was comparing to the encode of the published run for this TAS.
Another technicality is what to do for the last level. In the table comparing to the published run I went from fade in to fade out, but when I calculate my final time using this method I use fade in to last input just for the lase level. This is to keep with the standard of ending timing on ending input. If I didn’t end inputs early I could fade out the last level 6 frames earlier.
I’ve summarized some timing methods in the following table, which compares this TAS to the published run. Keep in mind that these are not the best possible game times since optimizing purely for game time was not my goal, there may have been some laggier movement to achieve better game times in some levels but this would cost more real time. There may be some slight errors since I had to rely on the encode of the published TAS rather than the button file since I can’t run Dega. I tried to make it as accurate as possible by using my frame count and dividing by 59.9227434 rather than 60.
When my IGT has a time in brackets next to it, that means that theoretically I could get that time in brackets. This is either because slowing down for the signpost costs an in game second or in the case of Labyrinth 1, due to global cycles (see IL comments).
It’s also important to note that Sgrunt aimed for IGT. While I’ve matched or beaten the game times from that run, I do hit the signpost slower to save real time, so in any stage 1 or 2 (not 3 because there’s no signpost) I have a timesave from that. Usually it is about 128 frames (2.13 seconds) that I save from that signpost, but in some levels with a roof above the signpost it’s less timesave, for example labyrinth 2 saves only 85 frames (1.417 seconds). This means that roughly 25 seconds over the run is saved from quicker signposts (probably an overestimate), which was not a fault of Sgrunt’s but rather a different goal choice.
Level | 8bit’s Frames | 8bit’s Seconds | Sgrunt’s Seconds | Seconds Saved | 8bit’s IGT | Sgrunt’s IGT |
---|---|---|---|---|---|---|
GH1 | 1626 | 27.13494 | 30.4833 | 3.3484 | 0:18 | 0:18 |
GH2 | 1636 | 27.30182 | 30.6943 | 3.3475 | 0:19 | 0:20 |
GH3 | 2184 | 36.44693 | 36.5823 | 0.1354 | ||
B1 | 1661 | 27.71902 | 30.5163 | 2.7973 | 0:16 | 0:17 |
B2 | 7254 | 121.0559 | 123.9823 | 2.9264 | 1:53 | 1:53 |
B3 | 2158 | 36.01304 | 37.4823 | 1.4693 | ||
J1 | 1748 | 29.17089 | 41.1823 | 12.011 | 0:20 | 0:28 |
J2 | 2193 | 36.59712 | 41.1493 | 4.5522 | 0:25 | 0:26 |
J3 | 1890 | 31.54061 | 32.3653 | 0.8247 | ||
L1 | 1829 | 30.52263 | 48.1 | 17.577 | 0:21 (0:19) | 0:34 |
L2 | 3722 | 62.11331 | 70.6 | 8.4867 | 0:26 | 0:27 |
L3 | 2152 | 35.91291 | 44.3163 | 8.4034 | ||
Sc1 | 2146 | 35.81278 | 40.567 | 4.7542 | 0:26 | 0:27 |
Sc2 | 4442 | 74.12878 | 81.433 | 7.3042 | 0:38/1:43 (0:38/1:42) | 0:40/1:43 |
Sc3 | 2660 | 44.39049 | 46.533 | 2.1425 | ||
Sk1 | 1739 | 29.0207 | 34.1 | 5.0793 | 0:20 | 0:22 |
Sk2 | 1360 | 22.69589 | 24.9 | 2.2041 | 0:08 | 0:08 |
Sk3 | 1066 | 17.78957 | 18.234 | 0.4444 |
There is also another method of timing which is used on speedrun.com for RTA runs. This starts when you press start and ends when you enter the final warp thing. Then you subtract the time that the bonus was counting down for (1 frame per 100 points). All 3 times for this TAS are summarized in the following table.
Method | Time |
---|---|
My Timing method | 12:02.3468 (43285 frames) |
TAS timing | 19:17.890 |
speedrun.com timing | 14:10.938 (could be 6 frames faster if I didn’t end inputs early) |
Interestingly, using my timing for my SMS TAS of this game, that comes in at 43664 frames which is insanely close to the GG version (43285), especially since the routes differ so much. For most levels GG is faster but the signposts fade out roughly 21 frames faster on SMS and the SMS TAS skips Labyrinth 2 with a horizontal underflow that isn’t possible on GG.
RAM Addresses
Luckily, Sonic’s position is well defined in memory unlike the SMS version. So the GG version was much nicer to TAS. Here are some useful addresses.
X velocity (3 bytes) | 0x1406, 0x1405, 0x1404 |
---|---|
Y velocity (3 bytes) | 0x1409, 0x1408, 0x1407 |
X Position (3 bytes) | 0x1400, 0x13FF, 0x13FE |
Y Position (3 bytes) | 0x1403, 0x1402, 0x1401 |
Platform timer (last ones in Sky Base 1) | 0x14B8 |
Spear timer for Labyrinth (and other global things) | 0x1224 |
Robotnik Health | 0x12ED |
Robotnik Invincibility Frames | 0x12B1 |
Thanks to SprintGod for posting some of the position and velocity addresses in the forums several years ago and saving me from having to find some of the above addresses myself.
Tricks and Techniques
This TAS is all about building and maintaining speed. If you can build a little more speed, that difference will be present on all following frames giving a large net improvement. The majority of tricks in this run are to do with building and maintaining more speed than intended.
Broken Speed Cap
When not in water, Sonic's X speed is capped when it exceeds 0x0300. However, the cap is only applied when Sonic is walking or jumping and the same d-pad direction is pressed. If Sonic is moving faster than the speed cap it is best to let go of all directions to preserve this speed as the cap will not be applied. Water has a speed cap of 0x0100 which can be exploited in the same way as on land. So if Sonic is entering the water at walking speed, it is best to let go of the direction input temporarily to avoid the speed cap being applied. This allows for faster movement speed when entering water. Exploiting the cap in this way is possible in an unassisted run.
Speed Cap misalignment (a.k.a alternation boosting)
Normal acceleration when holding right is 0x0010 velocity units per frame. When not holding any direction, acceleration is -0x0008, or -0x0010 if you are at or above 0x0300. If the speed is 0x02FF and right is pressed, speed on the next frame will be 0x030F. If right is held on the next frame, speed would be capped to 0x0300. But if right is released, speed would be reduced back down to 0x02FF. Therefore it is possible to alternate between pressing right and letting go every frame to alternate between speeds of 0x02FF and 0x030F. The average speed during this movement is 0x030E, which is greater than the speed cap of 0x0300. A side effect of this technique is a visual animation glitch which is seen throughout the run.
In practice, Sonic's velocity has increments of 0x0002, so it’s not possible to achieve a speed of 0x030F. But it is possible to alternate between 0x02FE and 0x030E. This is a rarity though, since manipulating the last digit of X velocity to be E is difficult. The way to achieve this is to start climbing a hill which will lower speed, then jump off when the last digit is E. This is often not the fastest way to move since you would only be averaging speed 0x0300 leading up to the hill and there is not always a perfectly placed hill to use this method of misalignment.
It is possible to alternate between 0x02FC and 0x030C on arbitrary terrain apart from in water. This is achieved by rolling then pressing left. The roll has acceleration -0x0004 which puts you at 0x02FC. Pressing left exits the roll but lowers speed to 0x02CC. After building back up to 0x030C the alternation process can begin. Jumping out of the roll at 0x02FC unfortunately doesn’t work. Since slowing down is needed to set up the alternation boost, it is required to boost for at least 28 frames to be worth it. This drawback along with the extra lag from boosting means that this method is not used in every possible situation. The game has a few different types of lag. One type still has the game complete the calculations for that frame and successfully render, but it doesn’t read input, rather it just copies the input from the previous frame. In levels with this kind of lag, alternation boosting is impossible since it requires different inputs on each frame. The bad type of lag is more common in the SMS version, but it still occasionally happens on Game Gear.
In a run optimizing purely for game time, alternation boosting would be used in more situations since lag does not cause game time to increase.
Unbounded Roll Speed (a.k.a Roll Zipping)
When rolling on flat ground, acceleration is -0x0004. But when rolling in the air and holding right, acceleration is 0x0010. This is the same acceleration as walking, but unbounded as the speed cap is not applied when rolling. The most well-known exploitation of this is in Green Hill 1 where the level can be beaten quickly by rolling off the ramp near the start which is used in unassisted runs. This technique is used in the TAS far more than in unassisted runs, for example Jungle 1, and is the most common method used to exceed the speed cap throughout the run.
Absolute Speed Cap
Even if you break the speed cap (03 00 on land, 01 00 in water) there is still an absolute speed cap that is the fastest the game lets sonic go no matter what. This is 0A FE and when you speed up faster than it, you snap back to 0A 00. I call this the absolute speed cap and it is much lower than what it is in SMS. It usually doesn’t matter too much since I only have to deal with it in 3 levels and it doesn’t save too much time since at that point, you’re almost outrunning the screen. See Green Hill 1 IL comments for how I deal with it. Strangely, I did exceed this cap for a frame in Green Hill 1 and achieved a speed of 0B 10, then a frame later it snapped back down. I’m not sure what the cause of this is but I suspect it’s something to do with the slope I was on at the time. The only time exceeding this speed cap would be useful in the run is while I’m in the air and it doesn’t seem to work in the air. If I could break the absolute speed cap in the air it wouldn’t save many frames at all. It would possibly not save any frames.
Unbounded Negative Velocity
When Sonic is rolling and the player presses the opposite direction on the d-pad, he stops rolling and the game subtracts 0x0030 from his velocity regardless of his facing direction. Since travelling left is negative velocity, subtracting from it speeds Sonic up. So when travelling left, it is possible to increase speed in that direction by 0x002C every 2 frames. This is a greater increase than the usual 0x0010 per frame. Since this process does not involve pressing left while not in a roll the speed cap is never applied. This technique is used in many places throughout the run.
Spring Rolls
The GG version has a quirk where you hit the ground weirdly. Your y velocity goes to 0 but you’re still kind of in the air and kind of not in the air. There’s a point where you’re technically in the air enough to hit a spring but you are on the ground enough to roll. So you can hit an upwards spring in your rolling animation. This means one thing… roll zipping, and a lot of it. Since you get so much height from the spring you can build up massive speed. One spring is often enough to hit the absolute speed cap. This glitch wasn’t used at all in the published TAS and it’s one of the most significant new glitches in this TAS. It saves a huge amount of time in Labyrinth 3 and Jungle 1 and a handful of frames in a lot of other levels.
Optimal Signpost hitting
In this game when you hit a signpost at the end of the level it flies up with height depending on how fast you hit it. The level doesn’t finish until it hits the ground and stops spinning. If you slow down enough it doesn’t fly up any more but it does spin for a little while. If you hit it nearly still then it lets you finish the level nearly instantly (here finish the level means sonic runs off to the right and the jingle for the end of level starts earlier, it’s still a few hundred frames until the level actually fades out).
You can actually hit the sign with 0 velocity by jumping over it, stopping in the air then falling onto it. In practice, this is slower since you can hit it with very close to zero without wasting time by jumping. You’ll usually see me jump after hitting the sign in this TAS. This is mainly to reduce lag and is used in almost every level. If it’s not necessary to jump then I don’t do it, because I don’t want to give runners a false impression that jumping after hitting the sign is faster out of the context of lag because depending on what frame you jump, you might save or lose time to lag over just walking. I also often jump off the capsule in the end of act 3 for the zones, this is also a lag reduction technique.
Usually hitting the signpost slowly like I do saves 128 frames over hitting it at full running speed. Sometimes when there’s a roof over the signpost it saves less time. For example, in Labyrinth 2 hitting it slowly only saves 85 frames.
Rising platform clip (Labyrinth)
This was already mentioned briefly in the version choice section and is a v1.0 exclusive glitch. If you stand on the edge of a rising platform and let it push you into a roof, sonic will clip into it. If you try to press into the wall then you will clip back out, but it you stand there on some platforms you will eventually zip up. This glitch is present in the v1.0 GG version and the Master System version.
I discovered an extended version of this glitch while working on this TAS which makes it possible on many more platforms, but it’s only used once in the TAS. See Labyrinth 1 IL comments for more info.
Damage boosting
If you take damage you get hit the opposite direction that you’re facing. I use this to get hit in the desired direction whenever I use a damage abuse.
Individual Level Comments
Green Hill 1
I had 2 options at the start: roll for 0C alignment sooner or wait until the first slope to get 0E alignment. 0E alignment was 1 frame quicker probably due to less lag so I stuck with that. The published run gets 0C alignment earlier so I save a frame.
I want to get up on the platform with the ring box so that I can roll off of it to build up speed. I can’t just jump over the box because then I can’t roll off the end of the platform. The solution is to roll into the box, pull back left to get into the walking position, and then roll off the end. I need a very specific position rolling off the end to set up a glitch where I can get slightly more roll speed. The first part is that I should be at 03 0E speed when starting the roll to get the 0E boost of normal speed (note I’m still 0E aligned from the slope). Then if I’m in the right position when I get to the bottom of the slope just before the crab, I stay airborne for a little while which brings my speed up about 00 30 units. The published run gets this glitch, I was able to get a little bit more speed from it, probably from starting at 0E rather than 0C on the roll.
When I reach the big hill I still have about 03 50 velocity from the roll. I start rolling up the hill until I’m losing more than 00 10 units of speed per frame then I jump out since I only lose 00 10 units per frame in the air. I timed getting a misalignment off the first jump but it was slower since you still have 00 50 units of speed left before reaching 03 00. I jump the exact height needed on the first jump so that the second jump can just clear the hill without hitting it and losing speed. I delay the second jump slightly to get an 0E alignment and then carry this until the roll down the hill.
I hit the invincibility box to reduce some lag then roll down the hill. By letting go of right a little bit before the roll, I come in with more speed. Then I fly over the top of the rings and from this point outrun the camera, essentially finishing the level. In the air, I hit the absolute speed cap 0A FE (if I hold right any longer it goes to 0A 00). It’s important to do this so that I outrun the screen as quickly as possible.
Near the end of the level I have to jump out of a spike pit off screen, this is interesting since you don’t have to in the Master System version. I can jump out and keep a lot of speed as long as I don’t hit the speed cap by pressing right while jumping. At the end of the level I have plenty of time to stop over there the signpost is, standing completely still so it’s as quick as possible. I experimented with standing position to make sure that it lagged as little as possible.
Green Hill 2
Minor improvement right at the start, I don’t get speed cap misalignment because it’s slower. I also do an earlier jump over the ring box (before the big drop) which saves some time.
Down in the bottom area I make sure I have as much speed as possible by rolling off the ledge. This is so I can bounce off the crab and move faster to the right. Because of this I had to sacrifice some moving right in the long fall because otherwise the jump out of the water just before the roll would overshoot the platform.
There were so many options for how to deal with the second crab: slow down and bounce off it, bounce off it after hitting the water speed cap to slow down so that you can roll across the higher platform at full speed, hit it after hitting the air speed cap, slow down and jump out of the water rather than bouncing off the crab, jump over the water pit. Not to mention the choice of whether or not to get misalignment out of the water afterwards. In the end I timed the method used in the TAS to be the fastest (using the air speed cap to slow down before the crab). Just jumping over the crab was second fastest, being 5 frames slower than this TAS. The method in the published TAS is 9 frames slower than this TAS.
I jump as early as possible in the climbing part then use the unbounded negative speed glitch when I come back into the inside bit.
When jumping through the roof from the spring there’s usually a bee there that hits you. For some reason if you go far enough to the right it despawns, so that’s handy. I use the spring roll glitch on the spring to come out of the top with higher than walking speed. This saves 29 frames over the standard method as used in the published TAS. I actually found the spring roll glitch while in Labyrinth zone so I had to modify this level and then redo the entire run after it again.
At the end of the level I slow down a bit before rolling off the hill so that I don’t overshoot the signpost. If I land on the ground while the signpost is on screen it bounces up losing time, so I have to slow down more than the published TAS does, but it pays off by not hitting the signpost at a high speed.
Green Hill 3
Not much to this level except for speed cap misalignment and using the hills to get to 0E. Rolling into the boss trigger saves a frame since the speed going into it with a roll is 03 0E -> 03 0C -> 03 08 rather than 03 0E alternating with 02 FE. Normally rolling wouldn’t be a good idea because you lose speed in the long run but this was good to just squeeze out a tiny bit of extra distance to hit the boss trigger.
Jumping off the capsule at the end looked cool and reduced lag. Usually you lose control when you hit the capsule. The jump is frame perfect.
Bridge 1
I want to roll across the first gap in the level to start building up speed. You’re supposed to roll into the enemy before it but it’s possible to hit it with a precise jump. This saves time over the published run which rolls (losing speed). Once speed is built up I can keep it all the way up to the see-saw.
The jump to the see-saw would have been difficult to optimize but due to the lag on the bridge there are not many frames that you can actually jump. I thought about jumping over the bridge to reduce lag but this was slower since you start losing speed, but on the bridge you build up speed.
From the see-saw I want to roll off it and bounce off the checkpoint box and keep the roll over the waterfall after it. If you jump high before hitting the see-saw it bounces you higher making this roll easier but it also takes longer before the bounce happens. I do the smallest possible jump while still getting this roll across the waterfall. This makes me come in at less speed but it doesn’t matter since I reach max speed during the roll anyway so starting the roll earlier is more valuable. On the see-saw I jump off to the left to have more room to build up speed before the roll, this saves time over the published run which just waits for the see-saw and doesn’t build up as much speed.
Getting across the waterfall is strange, sometimes if you come in really fast you don’t make it across, I think this is because if you come in slower the platform scrolls further to the right. Getting across the waterfall is extremely easy compared to the Master System version which is almost impossible, it’s still non-trivial in the GG version though.
After the waterfall I can either jump off the hill or roll off it. Rolling off should be many times more optimal, but you are doomed if you do roll off from it since there is nowhere you can jump from and you fall in the water. You do actually hit the curvy bridge thing but there are no frames there that you can jump. So the solution is to jump near the bee and land on the up and down platforms.
From these moving platforms I roll off the second one so that the jump spacing over the spring bush is better. I roll off the see-saw and get a lot more speed than the TAS for the end of the level. I was already ahead before this, but the extra time from the end pushes the time down to 0:16! There was a cool graphical glitch on the bridge which happens I think because it loads too quickly. There was the choice to roll across the bridge or jump across to reduce lag, rolling across was a lot faster.
There was a choice to get a shield or not in this level. Not getting the shield would make me slow down a lot at the start which would not be worth it. It would make between the shield and see-saw take almost twice as long. The downfall of getting the shield is that it causes extra lag. I lose it as soon as possible in Bridge 2 so it doesn’t cause any more lag than it needs to. There is no place to lose it in Bridge 1 without losing a lot of time. The choice was a lot closer in the SMS version but the GG version is less laggy and rolling through the shield in the GG version saves much more time than SMS so the choice was easy. Naturally I tried both ways though.
Bridge 2
Nothing much here except for lag reduction. I get hit by a few enemies to lose bubbles or rings so I don’t get a huge ring bonus or go to the special stage. At first I did a glitch near the end which sort of clones a falling bridge bit, not sure why this happens but I caught a video of it https://youtu.be/8AT4jFn0SVQ Unfortunately when I redid the TAS due to Green Hill 2 timesave I couldn’t replicate the glitch without causing lag.
Bridge 3
There are 3 possibilities for the start of this level: no speed cap misalignment, speed cap misalignment from a roll, speed cap misalignment from the slope. Each of these methods took exactly the same amount of time.
This level has a new strat in it and I was very happy with it, it’s one of my favorite parts of the run. The strategy is to clip through the ground and land a hit on Ivo as he’s coming out of the water, meaning it’s possible to land 5 hits in the first phase rather than just 4. This saves about 48 frames. It involves an extremely precise speed build up and jump, clipping through the slope and hitting him before he comes up. The speed build up on the falling bridge is very strange and it took me over a day to optimize that section. The jump has to be very precise to avoid clipping back in bounds (by going too high). If I go anywhere near the bridge I snap up onto it, meaning I'm back in bounds. The jump in the video is as high as possible while remaining out of bounds. The boss bounce gets me back in bounds one hit ahead of the normal fight. I tried to stay out of bounds to land another hit but he just bounces you too high. This is way too precise to pull off RTA, not to mention there's RNG so he doesn't always come up on the left side first! When I originally did the TAS he came up on the left first when I got there on the earliest frame. Unfortunately on the redo I had to sacrifice 12 frames to get him to come up on the left side first. Where he comes up is based on when you trigger the boss fight so there was no way around this.
I tried many different ways to build up speed. Sometimes rolling off the slope with less speed lets you build up more on the bridge. Sometimes your position varies the amount of speed you can get. It’s very weird and the results from a tiny input change are extremely chaotic. The bridge also lags like crazy, so this had to be managed too. I spent a long time finding out the fastest speed I could keep off the bridge. In the end, I was a little annoyed because the input I needed was just a plain roll off a properly aligned speed cap (I was originally trying with misaligned because you get a slightly faster roll (at the start) but it only loses speed at the end. Very conveniently, the roll that allowed for the skip also happened to be the least laggy roll too. Overall this is probably the most technical, precise section in the TAS.
Hitting the boss the next 7 times is simple. No matter how much this boss lags, the fight takes the same amount of time. This level saves time over the published run mainly from the extra hit and also from finishing the boss with Ivo on the right (he leaves the screen faster). Also rolling across the bridge was done quicker in this TAS.
Jungle 1
At the start of this level I get 0C alignment. This saves a frame in the movement to the first roll. The first roll bounces off a fish, saving time over the published run. I then roll down the U shaped platform and jump to the top before rolling off the edge. Jumping up is faster than simply rolling up to the top.
Once I roll off the U shaped platform I have to pull back my speed a little bit. The goal is to bounce off the shield box (causes more lag but well worth it) and land on the first platform in the waterfall and have a frame where I can jump off. If I go at full speed I do land on the platform but there are no frames to jump from it (usually there’s a little delay after landing before a jump or roll can happen). It’s important that I pull back early since then I have to sacrifice less speed to lose more distance (I want to lose distance not speed).
After this I had 3 routes to choose from. The first route was going under the waterfall platforms, meaning I had to pull back more on the U shaped ramp. This route was good but I just couldn’t maintain speed with it. By the time I got to the next waterfall I was pretty much back to walking speed. The second route was jumping off the first waterfall platform and landing on the grass to the right of the waterfall. This is very similar to what is in the TAS but it’s slower. The TAS jumps off the first waterfall platform, lands on the last high one and rolls off it. This gives a tiny bit more speed in the roll and starting the roll with even a tiny bit more speed adds up extremely quickly. This route was fastest by far.
On the second waterfall I had to jump across. I was hoping to roll across but there was no way to make this happen. The dark water section was one of the biggest improvements on this level. Rather than riding the ball thing, I jump through the water saving a lot of time. I don’t know why the published run rides the ball since it’s visually very slow but I suspect it’s because the speed value is normal walking speed on the ball (30 00 in RAM) but the speed value doesn’t contribute to the full change in position that walking speed normally would (this is a factor on moving platforms and conveyor belts as well). So while the game reads that you’re going fast internally, you are actually going quite slow.
Anyway, I avoid hitting the speed cap in the water by avoiding pressing right in the water (unless I’m rolling). I have some speed left over from the earlier roll zip so I carry this half way through the water. Then I get 0C speed cap misalignment coming out of the water and use that to get through to the next waterfall. I tested not getting speed cap misalignment because that section is quite laggy, but getting misalignment is quicker.
The last waterfall section (apart from the signpost) had a lot of possible routes. These included rolling down to the lower path, waiting for a log on the first waterfall then rolling off it, taking the spring and rolling off the second log (spring from the lower path). On the lower path I had a timesave where I jumped up onto one of the platforms just above the spring then rolled off it, but this wasn’t enough to make the low route faster.
My old route was very non-greedy with rolls at the start of the waterfall and it waits until the second log to start rolling (this is where most other routes finish the roll so the route seemed counterintuitive). Waiting for this pays off since I can roll off the second log and keep rolling across the end bit of the waterfall! This saves a massive amount of time and is a second faster than the next fastest route. Note that I can’t do the same thing by taking the spring to the log since getting to the spring x position loads the log and it falls to far while you’re bouncing to it so you can’t make the roll across to the required platform.
After finding the spring roll glitch I had a completely new route on the second waterfall. First I get to the spring quickly (by rolling to it) then do the spring roll glitch. By going as fast as possible it’s possible to bounce from the checkpoint to stay in the air longer and gain massive speed. In the air I avoid hitting the absolute speed cap as in Green hill 1 (see IL comments for that). Then I do some tricky jumps and rolls in the water area to keep as much speed as possible. The use of spring roll glitch makes a 0:20 Jungle 1 possible, where only a very high 0:22 was possible with the route mentioned above. This saves 158 frames real time.
Jungle 2
This level is really different in the GG version since the camera actually follows you. I save some time over the published run just lots of little optimizations. If you need to jump at a ledge then turn around and jump off it right away it would seem like you should do the smallest jump possible to land on it, then turn around as soon as possible without falling off, then jump off. But sometimes you can turn around sooner if you do a bigger jump to get onto the ledge. This is very strange, but it’s a good method to save time.
Jungle 3
Not too much exciting in this level. I managed to save some time over the published run on vine movement and getting to the end capsule.
Originally I was hoping to be able to skip fighting Ivo entirely. To do this you would have to jump towards where the capsule is and make it quite far without touching the ground. If you get far enough, touching the ground wouldn’t trigger the boss anymore. While I could get quite far, it’s still some way off skipping the boss and you’d need something big to make the skip work (like having a lot of speed to the right). Another possible way to make this work is to somehow get an extra jump off the U shaped boss arena or the grass without triggering the boss. I did a lot of testing and this did not seem to be possible.
Labyrinth 1
Jumping off the green slime is very strange. Sometimes you get a normal jump, but sometimes it pulls you back down really fast. The published run gets a normal jump then turns left, but I get one of the fast pull down jumps which saves time. To make the fast jump work you have to reactivate the speed cap by pressing right otherwise you overshoot the left turn. With a normal jump off you slow down a lot more so it’s not necessary.
After some roll zipping to the left I save time over the published run by jumping before falling down a hole rather than rolling off the edge then having to build up falling speed. This jump is tricky to optimize since the earlier you jump, the less time you have on the ground to build up speed. I use a bonk on the roof to fall quicker, spending less time in the air.
After fall there is a roll to the right. I do a similar jump down a hole rather than falling to save some more time. There are 3 options here, roll down the hole, roll down the first ledge under the hole, roll off the second ledge (lower). In the end the middle option allowed me to jump over the first spear the fastest.
This is where the discovery of roll zipping and the Green Hill 2 and Jungle 1 redo caused some issues. Unfortunately the spears are on global cycles, cycling every 255 frames (which don’t count up during bonus screens). Since I make an earlier cycle by almost 200 frames they are acting completely different. This means that I have to move slower before jumping over the first spear since it is starting to come up so I need more jump height to make it over. Even worse, it means that I can no longer jump over the second spear. Instead I turn to the left and take damage from the second spear. Turning to the left sends me to the right with the recoil. This level ended up being a 0:21 in the final TAS but it was 0:19 before I saved the time in Jungle 1 and Green Hill 2. I uploaded a video of the original 0:19 here: https://www.youtube.com/watch?v=HdjjU70nzeI This means that I lose almost all the time that I saved with spring rolls in GH2 and J1, but they were still worth it. An upside is that there’s 2000 less frames of bonus screen in Labyrinth 1 in the final TAS. I tried messing with the global timers by swapping laggy strats and less laggy strats but the timer counts up through lag so it makes no difference.
Anyway, after the spears there are some rising platforms. The first one is a standard rising platform glitch (see tricks and techniques) but the second platform is a little bit more technical. If you try to do the same glitch, the game spits you to the left out of the wall, due to this the published TAS just rides the platform up like normal. Similarly if you try to walk to the right while in the wall the game ejects you to the left. But if you walk to the left the game does not eject you. However, since you are walking left you leave the wall anyway. There is a way around this, if you very lightly walk to the left by tapping the button just enough to maintain nonzero velocity, then the game still doesn’t eject you, the difference is that you barely move to the left at all. Once you ride the platform high enough the game actually starts zipping you upwards! If you then let go of everything, you get ejected out of the wall just a little bit higher, but if you keep doing the method to stay in the wall you get zipped up to the top of the level just before the signpost! This saves a massive amount of time over climbing up slowly in the water and brings the time down to a 0:21 (theoretical best is 0:19) from the 0:34 in the published run.
Labyrinth 2
The horizontal underflow from the SMS TAS is not possible in the GG version thanks to a wall on the left side of the level in the GG version. Even if the wall wasn’t there I don’t think it would be possible because of the lower absolute speed cap.
I did some optimization on the slides at the start. I basically tried jumping off them every way to find the optimal solution. I save some time by rolling down the first underwater hole rather than jumping down it (the opposite timesave to the first bit of labyrinth 1). The reason it’s quicker to roll down rather than jump like in labyrinth 1 is both because there is no roof to bonk off and because you have to jump quite late since you don’t hit the ground for a while.
I lose a little bit of time due to the global cycle on the spear just before the checkpoint over my original TAS through Labyrinth 2, but not too much time. Rolling from the ledge over the spear saves a lot of time over the published run. I avoid getting the bubble so that I can roll off the ledge. Having the air counter up causes a little bit more lag but the roll is far too valuable to pass up. Also having the bubble on screen before I collect it causes more lag too. If I did want the bubble it would be easy to manipulate it to come up since it’s RNG and by changing my jump spacing I could spawn one. Not collecting the bubble is faster, but also more entertaining in my opinion because I come very close to drowning near exiting the water.
I do another lift zip to skip a very long wait. Then I use roll zipping to travel to the left very quickly (even though that extra speed is largely cancelled out by lag). I make sure to manipulate the bubbles to not appear so that my roll zipping is not interrupted and there is less lag. Originally 2 bubbles were appearing which caused a lot of lag. I got it down to 1 just as it was scrolling off screen. This was the fastest result.
I save some time over the published run by damage boosting off the spinning spiky thing rather than jumping up there normally. I’m not sure if it was in the right spot when the published run got up to it but it was for me. I think the spiky thing is on an individual level cycle rather than global because it was in almost the same spot on my redo even though the global cycle was different.
Luckily I pick up some rings for another damage abuse off the shooting enemies to skip a jump, this was in the published run too. The rest of the level is roll zipping and very difficult to optimize jumps.
Labyrinth 3
This is yet another level made quicker by spring rolls. Originally I planned to use a method found by Greenalink to make the level faster than the published run https://twitter.com/Greenalink/status/778685360272318468
While trying this out I decided to just try rolling off the spring and with some very precise jumping, it worked. With different jumps you can sometimes gain or lose speed. I chose to get the highest speed possible from the spring, which also happened to be the earliest frame to hit it.
Instead of rolling straight to the boss as fast as possible, I slow down to get a jump off the higher ground in the level. This jump allows me to deal 5 hits to Ivo rather than the usual 4 hits. The jump is quite precise as I have to bonk a roof to fall fast enough. To get the 5 hits in the first cycle I have to spawn Ivo 15 frames later, this is definitely worth it though.
When Ivo comes down the left side, the jump spacing is quite precise. Sometimes the earliest possible jump is not optimal since waiting a little longer can make you bounce back down faster, meaning you can start the next jump sooner.
Scrap Brain 1
Some minor optimizations such as getting 0E alignment from slopes rather than 0C from rolls saves time over the published run.
Scrap Brain 2
Similar optimizations to scrap brain 1 saves a lot of time over the published run. The first major thing is the roll into the door for the room transition (leading to the huge drop room). This is similar to Green Hill 1 how you stay in the air at the bottom of the slope for a little while if you have precise positioning. Using this I stay in the air for longer than the published run.
There is a death abuse in this level so I have to start preparing for it. Usually the runs will take damage from an enemy and use the same enemy to kill sonic, but this is slow since you have to wait for Sonic’s invincibility frames to run out. Instead I take damage from one of the pink enemies before the big drop. While this makes the room much slower, it saves a lot of time on the death abuse. The new death abuse route saves 86 frames. I considered taking damage in the room before the big drop, but the drop with the rings ruins it since I can’t avoid picking them up. I think possibly you could avoid it with some careful weaving but this would require a huge jump before the hole and lose a lot of time.
To take the damage I have the option of jumping down to the pink enemy or running off the ledge to hit it. When jumping, I have to touch the ground before the enemy otherwise I kill it with the jump. Even though this is the case, jumping could still hit the enemy a frame earlier than running off the edge to it. But jumping at it makes sonic go farther to the left, meaning to fall down the huge drop takes longer since you are further away from it after being hit. So rolling right to the edge, pressing left to get into the walking animation the frame before leaving the ledge, and hitting it was the fastest overall. I had to make sure that I hit it as far right as possible. I also tried facing left so it hits me into the big drop but you lose control until you land if this happens.
Once out of the teleporter there’s a big stretch to the left followed by a hole. Naturally I did some roll zipping to build speed to the left very quickly then I had the choice of rolling off the edge of the hole or jumping into it. Jumping into it makes you fall down faster but then you want to run to the right. Instead of going to the right by gradually turning Sonic around, since you’re at a high speed and turning around would take a long time it’s much faster to let him slam into the left wall making velocity go to 00 00, then accelerating to the right from there. This makes not jumping down the hole faster since rolling to the hole makes you slam into the wall quicker meaning you can move right quicker. Even though rolling to the hole makes you fall down it slower, it lets you move to the right quicker and since the top of the door is quite high, moving right sooner is more valuable.
There are 2 doors near this drop. One is always closed, the other is open. There’s a switch to the right which alternates them. The intended method to do this level is to hit the switch, putting the right door down, left door up. Then travelling to the big drop, teleporting up and going through the left door. Most of this can be skipped with a death abuse. I take the teleporter up, then hit the switch, causing the left door to open. Taking the teleporter up sets a checkpoint and dying does not reset the doors. So I simply die and return to the teleporter with the left door open for me. This is much faster than doing the level the intended way. I tried a lot of different ways to skip the death. The central idea would be to get a lot of speed to the left, then hit the switch and go under the right door before it closes, then pass through the left door since it’s open. I tried many different approaches but none of them worked.
For the death abuse I had the option to fall down and hit the pink enemy below, or continue right to hit the other pink enemy. Going right was 12 frames slower so I hit the lower enemy.
Scrap Brain 3
There are lots of doors in this level which made it a pain to optimize. Spring roll glitch saves some frames all over the place in this level. I also saved a bit of time to more optimized doors.
Sky Base 1
Lots of this level is cycle based so while I did save every frame I could, it often didn’t matter. Near the start I build up lots of speed with a roll and pass the lightning just as it stops. Then during the next lightning cycle I use a damage abuse to get past it faster.
Near the end of the level is where it gets interesting. There is a platform that flies to the right and two platforms that move up and down above it. The up and down platforms only start moving once you get within a certain range. I get to this range quickly, then have to pull back a bit to wait for it.
Sky Base 2
Usually this level is long and difficult but there is a big skip. There isn’t too much in this level apart from deciding when to stop building up the negative speed with the rolling technique and when to start turning around. I was tempted to get 0C speed cap misalignment for the duration of the skip but it ended up being slower.
Sky Base 3
The start of this level is surprisingly technical. When you reach the boss arena the screen locks then goes into a fixed (very slow) scrolling towards the boss. The strange thing is, the point at where the screen locks and goes to the fixed speed seems to depend on subtle things like your exact position which can be changed by rolling from a different point on the slope. It doesn’t seem to scale linearly with your residual position from passing the trigger and it almost feels random. I never figured it out, but I got to a point where I got the fastest possible roll while still not having to slow down for the edge of the screen at all, so it didn’t matter if I got the screen to transition into slow scrolling speed any further. This can cause the fight to vary by as much as 30 frames.
The fight itself is quite simple. You pull off 1 hit on Ivo, then during the invincibility frames you quickly jump at the glass again. This causes you to clip in and then you can land hits on him from the safety of in the glass. This glitch is also present in the SMS version but it’s a lot easier there. Once I jump into the glass, holding right makes sonic move right as a velocity of 00 10 (very very slow). Unfortunately I have to move right for a few frames before I can jump without being pushed out of the glass. Once you’re far enough in, jumping doesn’t push you out. If you hit the glass from the outside you get ejected at 03 00 speed to the left (walking speed). So I do have to sacrifice some frames to stay in the glass but it’s much faster than the alternative of fighting him from the outside and dodging the fire that eventually comes up on the right.
Once you land the last hit on Ivo, sonic gets spat out at walking speed to the left (because the glass that was keeping him in there has smashed and the hit recoil takes effect). I do a big jump for the last hit and get flung into the side of the roof of the boss arena. This is much faster since you hit the roof, get to 00 00 velocity then can accelerate to the right right away. This is an improvement over the published run which gets flung back into the arena at the end.
I tried to end inputs as early as possible to jump into the portal at the end. If I didn’t worry about ending inputs early I could get into the portal 6 frames earlier than I did in this TAS, but I decided to go for the standard of ending inputs as early as possible.
Thanks
Sgrunt for making a great TAS which was a fantastic reference for this one.
Sprintgod for helping out Sgrunt with the published run and indirectly helping this run
Aloysha for bringing this (among other SMS/GG runs) to my attention with “The Dega project” and providing motivation for improving those runs.
fsvgm777: Setting the console to Game Gear from SMS, since the Game Gear version was TASed here.
Masterjun: Judging.
Masterjun: Great improvements. Sonic games are known for having a problematic goal choices, due to real time being shorter with sloppy play. This is obviously not wanted. Now this submission solves the issue by timing only the actual in-level times, which is a great solution. The optimizations are really great and make an entertaining run, which is confirmed by good viewer feedback.
Accepting to Moons as an improvement to the previous run.
feos: Pub.