Uff, finally something I like for Death Egg. I have a new WIP, but first a small preamble: in the wake of the release of
Gens 11b by Adelikat -- which I was essentially already using -- and the fact that it embeds input into the savestate, making it (the savestate) not very compatible with Gens 11a, I decided to revise the procedure to generate the starting save state for the run (the old savestate is still good, mind you, it is just that the old procedure which was the issue, as it required too much dexterity to pull off).
The new procedure I am using goes like this:
- 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.
- 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).
- Go into the SRAM directory and make a backup copy of the S3&K SRAM. We will need this shortly.
- PAUSE the emulation.
- 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, Gens will be paused.
- Make a savestate.
- Advance one frame.
- Load the savestate you just made. These 3 steps ensure that the movie has an empty input list.
- Stop the movie.
- Go to the SRAM directory and replace the S3&K SRAM with the 'dirty' backup copy you made in step 3.
- Open the movie you created in step 5. Make sure that "Clear SRAM" is UNCHECKED, and that emulation is paused.
- Start recording a new movie; make sure that "Record from now and make a savestate" is CHECKED. The movie name is irrelevant.
- Gens will prompt for the state file name; select one you will remember: this is the anchor savestate.
That was long... but it ensures consistent starting savestates. There does seem to be some variation, but it seems related to PSG starting state and doesn't seem to affect synch.
There is one major advantage from this method: if you hex edit the movie to eliminate the savestate anchor (change byte 0x16 from 0x5f to 0x1f) and use the dirty SRAM from step 3, the movie will still synch -- if you make sure that "Clear SRAM" is UNCHECKED when you load the movie.
With that out of the way:
here is the new WIP, which finishes the game. And here are the savestates generated by the above procedure:
Gens 11a savestate;
Gens 11b savestate.
This WIP has one further 44-frame improvement for the any% run in Hidden Palace due to a better fight with Knuckles; final time is 0:18::26.
Sky Sanctuary is identical to the any% run (one of the earlier versions, at any rate). I tried very hard to die at the starting cutscene by scrolling objects offscreen, but always came up slightly short of the mark.
Death Egg 1 was annoying as hell. The time I gained from having Tails, as well as better optimization in the path to Hyper Sonic, all led to a light bridge blocking the route used in the 100% run. Waiting for it to go out would cost me all but 17 of the frames I had gained thus far; I used an alternate route that is slightly slower than the one in the 100% run, but which is faster than waiting. I don't think it is possible to gain enough frames to get to the 100% route before the light bridge appears. Slightly better optimization overall leads to a final time of 0:53::16, which is 3 seconds 47 frames faster than the 100% run.
Death Egg 2 was another pain; it desynched whenever I tried something else in Death Egg 1. That should teach me to finalize Death Egg 1 before doing Death Egg 2... When I lose the shield at 0:09-0:10, I do it so I don't lose any frames from that -- I timed it so that if I spindashed 1 frame earlier, I wouldn't hit the ground and be able to jump. The resulting time gain from being able to walk through that badnik is great :-) At 0:16-0:17, that serpentine drop is hard as hell to pull off; it is worth it though. A couple of new shortcuts, an annoying sub-boss, and the battle copied from the any% run later mean a time of 1:59::33 for this level -- an improvement of 9 seconds, 13 frames over the 100% run, and a sub 2 minutes time for this level.
Doomsday zone is another annoying as hell level because of luck issues. This level is also NOT a fixed length auto-scroller! I managed to do what I had deemed impossible earlier -- collect ALL rings -- but it loses too much time, so it is not on the movie. I managed to improve this level by a few frames -- last hit is at 1:30::36, last visible time is 1:33:53 (both of which show a 4 frame improvement over the 100% run), while the timer stops at 1:34::33 (3 frames better than 100% run).