Submission #2802: marzojr's Genesis Sonic 3 & Knuckles "newgame+" in 31:16.15

Sega Genesis
Gens 11b
Sonic and Knuckles & Sonic 3 (W) [!].bin
Submitted by marzojr on 8/14/2010 8:55:15 PM
Submission Comments
Starting from SRAM giving all chaos and super emeralds, and with his game-wrecking sidekick tagging along, Sonic destroys the game utterly, shattering all speed records.
This movie starts from a savestate. Specifically, it is either this savestate (Gens 11a) or this savestate (Gens 11b).
WARNING: The awesomeness of Hyper Sonic may damage your eyes or trigger seizures in susceptible people.

Game objectives

  • Emulator used: Gens 11b (but synchronizes perfectly on Gens 11a) + S3KCamhack + SolidityViewer + (partial)HitboxDisplay + LUA HUD for Genesis Sonic games
  • Ignores delays caused by bonus effects
  • Aims for fastest (primarily in-game) time
  • Takes Damage to save time
  • Abuses death
  • Abuses programming errors
  • Counts time spent dying
  • One player controls two characters
  • Starts will all Chaos and Super emeralds

Generating the savestate anchor

First of all, lets start by linking in the verification movie. This movie plays through the game normally (a good deal of it in real time), gathering all Chaos and Super emeralds and finishing the game. The latter is required so that the present movie can begin from Angel Island zone. There is an innate arbitrariness on where exactly to generate the savestate anchor for a movie; depending on where exactly it is done, you can have a more favorable random number generator, for example.
To counteract this, I developed a procedure for doing such which eliminates this arbitrariness and allows consistent generation of the savestate anchor. It has several other advantages too, which I will explain after the generation procedure:
  1. Play the verification movie until the end; make sure to go until after the last input and stop the movie. This will generate SRAM. Note: This movie, particularly the first half of it, is terribly unoptimized since I played most of it in real time.
  2. Make sure that you do a soft reset and go to the starting menu to make sure that the SRAM has been properly generated (there should be a save with all emeralds).
  3. Close Gens so that SRAM is written to disk. Then go into the SRAM directory and make a backup copy of the S3&K SRAM. We will need this shortly.
  4. Reopen Gens and the S3&K ROM, and make sure to PAUSE the emulation.
  5. Start recording a new movie; do NOT check "Record from now and make a savestate". The movie name is irrelevant; if you paid attention to the above step, emulation will be paused.
  6. Make a savestate.
  7. Advance one frame.
  8. Load the savestate you just made. These last 3 steps ensure that the movie has an empty input list.
  9. Stop the movie.
  10. Go to the SRAM directory and replace the S3&K SRAM with the 'dirty' backup copy you made in step 3.
  11. Open the movie you created in step 5. Make sure that "Clear SRAM" is UNCHECKED, and that emulation is paused.
  12. Start recording a new movie; make sure that "Record from now and make a savestate" is CHECKED. The movie name is irrelevant.
  13. Gens will prompt for the state file name; select one you will remember: this is the anchor savestate.
Applying this procedure yields the savestate anchors linked to above: for Gens 11a, for Gens 11b. Warning: Gens 11b will complain about the Gens 11a savestate, but it works; Gens 11a will crash with the Gens 11b savestate.

Advantages of the method

  1. The generated savestate anchors are all consistent. There is some slight variation, probably due to the PSG, but it does not affect synchronization of the movie.
  2. By hex-editing the savestate dependency away (change byte 0x16 of the movie from 0x5f to 0x1f) and using the "dirty" SRAM from step 3, the movie will still synchronize -- if you make sure that "Clear SRAM" is UNCHECKED when you load the movie.


Due to the use of an anchor savestate, this movie should probably go into the Starts from a saved state or SRAM section if it gets published.
If there is a glitch in the game which makes it faster, I have used it; no silly restrictions of any kind. Several levels are identical to those of the latest S3&K run; some of these (virtually all improvements in the latest installment of that run) I actually discovered while I was working on this submission.
You will notice that Tails is almost always right there when I need him; that was very hard to pull off: Hyper Sonic is so fast that Tails can barely keep up. Still, I am happy about the results.

Time table

Angel Island 10:35::33
Angel Island 21:06::09
Hydrocity 10:32::26
Hydrocity 2 pre-death0:05::21
Hydrocity 2 post-death0:25::24
Marble Garden 10:25::53
Marble Garden 20:35::36
Carnival Night 10:34::50
Carnival Night 20:40::24
IceCap 10:59::57
IceCap 20:00::00
Launch Base 10:32::18
Launch Base 20:26::58
Launch Base 2 cutscene0:18::06
Mushroom Hill 10:36::15
Mushroom Hill 20:30::50
Flying Battery 10:56::16
Flying Battery 21:11::21
Sandopolis 11:27::51
Sandopolis 20:48::52
Lava Reef 10:52::41
Lava Reef 20:21::42
Hidden Palace0:18::26
Sky Sanctuary0:52::25
Death Egg 10:53::16
Death Egg 21:59::23
The table shows the in-game timer values. The value after the final colon pair indicates the in-game frame counter, and is restricted to the 0-59 range. It is updated every frame (except during lag frames), and increments the in-game second when resetting to zero.
[1] The Doomsday timer stops at this value; the last hit (i.e., the point where the movie ends) is at time 1:30::36. Moreover, the last time visible on-screen is 1:33::50.
[2] This is total in-game time. Which means that there are over 11 minutes (!) of level loading times, score tallies and cutscenes in the movie.

Stage by stage comments

Hydrocity 1

The extended zip on this level causes Sonic to be far ahead of the camera; this causes the game to delete the walk-on-water object. By avoiding the creation of new objects, the mini-boss gets loaded in that same slot. On transition to Hydrocity 2 (when the score tally starts), Hydrocity 2 deletes the mini-boss, replacing it again with Hydrocity 2's walk-on-water object. Since the last function of the mini-boss was to unlock the camera, it stays locked and causes Sonic to die much faster than in the latest S3&K run. I literally stumbled into this trick, and HHS later explained it; it seems impossible to replicate it with regular Sonic.

Hydrocity 2, Marble Garden 2, Flying Battery 1, Flying Battery 2, Lava Reef 2

All those levels are identical to the latest S3&K run. I had actually found those improvements while working on the present run and back-ported those improvements.

Carnival Night 1, Sky Sanctuary, final Death Egg 2 boss

The only levels with wholesale lifting of input from the latest S3&K run. Credit goes to Nitsuja for them.

Launch Base 2

A few minutes after the submission had been accepted for publication, Mr_Sweed sent me a video showing an improvement of 10 seconds for Launch Base 2 over the submission, and about 32 seconds faster than the latest S3&K run; that improvement turned out to be suboptimal by about 5 seconds. Splicing the improvement made the following cutscene longer by 15 frames, and nothing I did made any difference. The resulting luck differences also ended up costing me 2 frames until the last hit in Doomsday, although the level timer still stops at the same value.

Sandopolis 1

Annoying timed objects force me to go topside. Without losing time, only Hyper Sonic can get there, and only with the help of Tails. The way I do it, I actually gain time from it.

Hidden Palace

This features a 44-improvement on the fight versus Knuckles. I only had the idea for this improvement after the latest S3&K run was already published, sadly. I managed to land 15 hits on Robotnik in this level too, and needed every last one to get Tails in the right spot.

Death Egg 1

This level features a slightly different route than the 100% S3&K Sonic run; this is because I gain enough frames from Tails and improved precision that there is a light bridge closing the 100% S3&K Sonic run route. If I wait for the bridge to disappear, I lose almost everything I gained this far; the new route allows me to keep most of it.


It is actually possible to collect all rings in this level. This ends up being 22 frames slower, because the level is not a fixed-length autoscroller.

Other comments

Thanks goes to Nitsuja and Upthorn for their Sonic runs, Orkal for his glitch videos, HHS for his explanation of the Hydrocity transition glitch and you for watching. Also, thanks to Mr_Sweed for the Launch Base 2 improvement.
Suggested screenshot: frame 2064.

Flygon: Added YouTube module, note that when MisterEpic's HD encode is made, the module should probably be replaced.
Truncated: Submission file has been replaced with an improved version, 13 frames faster. Marzojr will update the submission text to describe the changes.
marzojr: Updated text with the new times
OmnipotentEntity: A little update, Mister Epic had some issues with encoding this in HD, so I'm doing a little experiment, :) I'll be handling publication of this movie if it is accepted.
Nach: I'm accepting this with the same remarks as #2812: MUGG's GB Super Mario Land "hard mode" in 12:14.77. Publishers please remember to mark the game as 'impure', and copy the note from [1607] GB Super Mario Land "hard mode" by MUGG in 12:14.77.
OmnipotentEntity: Setting to publication underway.
FractalFusion: Setting to delayed as the author is made aware of an improvement in one of the stages.
Truncated: Submission file has again been replaced with an updated version. This one is just above 15 seconds faster, thanks to the suggestion of a yet unnamed contributor. marzojr to spill the beans.
marzojr: Updated text explaining new improvement
adelikat: Accepting for publication.
Nahoc: replaced removed YT module by a new one.
Last Edited by adelikat on 9/19/2023 2:42 PM
Page History Latest diff List referrers