Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Nice guess(es). The act 1 of Launch Base sees Hyper Sonic battling the twin hammers, similarly to the any% run, which means that act 2 starts after dying, indeed. But sadly, it is impossible to zip into an horizontal underflow: the sole good place for that is the very first giant ring room, which is underwater -- this means I can't control the ground entrance and fall into a place where I can't get out.
But the generic zipping is indeed the key: there are many zippable places this level, so much so that it is very much the reason for the run's title. You see those squiggly tubes that are everywhere in this level? They are *just* wide enough for Hyper Sonic to go into them and do a shallow zip. There are six zips in the route I chose -- including one of which I wasn't able to pull out earlier, and may reduce time by a further 2-3 seconds or so.
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
The entire Hidrocity 2, including the Robotnik fight, is exactly like the any% run. Since there is no bubble shield to bounce high enough, and given the need to jump to get Tails back on the playing field, the first hit is as fast as possible -- Tails saves a lot more time than the alternative. Other than the first hit, there is only one of the hits there (the fifth) which is delayed by a few frames from the first frame where it can be delivered. This was done to avoid an even greater loss of frames: you have to either fall to the ground or get hit by the propeller blades, both of which take longer to recover from than delaying the hit.
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
New WIP until end of Marble Garden 1. Hidrocity 2 is almost identical to the any% run -- but the death at the start is slightly more optimized, being 11 frames faster (although there is no reason why the any% run can't be updated to include this change). Marble Garden 1 is finished in 0:25::56, or 273 frames faster than the any% run.
Now a teaser: early tries show that Launch Base 2 can be brought down to 0:45::23 and possibly slightly less. I'll leave you to try to puzzle out how until I finish the intervening 6 levels :-)
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
In another front, I made some progress into the Hyper Sonic from the start front. For now, I am starting from this save state, and the WIP is up to the end of Hidrocity 1. The times are:
Angel Island 1 0:35::34 (191)
Angel Island 2 1:06::42 (581)
Hidrocity 1 0:32::59 (22)
The numbers in parenthesis are the amount of frames by which the WIP is faster than the any% run. I can make Angel Island 2 faster by some 10-20 frames if I skip the fire shield, but the transition will be much slower with a bubble shield.
The only "rule" I have been use is to finish as fast as possible, which means that Hidrocity 2 will probably end up identical to the any% run -- there is no way to gather 50 rings that fast. Marble Garden 2 and Carnival Night 1 will both probably suffer the same fate, but Marble Garden 1, Carnival Night 2, IceCap (maybe) and Launch Base 1 & 2 can all be improved with Hyper Sonic.
For the Sonic & Knuckles part, I know that Mushroom Hill 1 can be vastly improved from the any% run with Hyper Sonic, and Mushroom Hill 2 can see some improvement. Flying Battery 1 & 2, Lava Reef 2, Hidden Palace and Sky Sanctuary will all probably look like the any% run, as it is faster, but the remaining levels will be mostly similar to the 100% run with some improvements due to Tails.
If anyone wants, I can provide the movie I used to make the initial save state, but it isn't terribly optimized (as a good chunk of the start was played in real time). I couldn't hex edit the 100% run to use Tails as he causes desynchs due to lag (and I decided not to resynch it that way), and having Tails around helps differentiate from the 100% run.
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Hm. I kept staring at your post in disbelief as the script I have locally works correctly. Just to be safe, I downloaded the script from the links and found something even weirder: the first thing I fixed (the S2 Boom ring counter) was not on the file linked to, but the second thing I fixed (do_huds_init calling kill_orig_hud) was. I have no idea what happened, but the fixed version is up now.
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
DDRKhat wrote:
Any chance you can add support for "Sonic Boom" ?
It's a total modification hack based on Sonic 2, I took a shot at it myself and it works except that they seem to have changed the memory address for the HUD and so kill_orig_hud doesn't function properly.
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
AndyD wrote:
metropolis 2 in 14 seconds
If you had bothered to read 3 posts up, you would have seen Metropolis 2 done 46 frames faster than that; and the post immediately after explained how to get 3 more frames.
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Nicely done. Still, it is possible to get it down to 0:14::03 with a minor change: in frames 47410 and 47411, hold L+R, do a 2-frame jump (holding right) starting on frame 47412 and start holding left on frame 47450 and until frame 47489. Hold right on frames 47494 until 47499. The rest is easy.
Edit: Also, Sky Chase desynchs because there are 2 fewer frames of lag between Metropolis 3 and Sky Chase in your version: deleting frames 54426-54427 should be enough to resynch it (if there are no further lag differences).
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
As it turns out, the S3/SK/S3&K version of the HUD disabling causes a desynch in the 100% run. I found a workable replacement for SK/S3&K, based on the S2 trick, but I am still investigating the equivalent for S3. I will update this post and the first post when I find it.
Edit: New version whose original HUD removal doesn't desynch in S3&K any% and 100%.
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
As it turns out, exactly as it was the script caused a desynch in Tails in Sonic 1. I modified the script to move the HUD in the other direction in S1 & hacks, which requires less distance and it works. The fixed script is here.
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
DDRKhat wrote:
That is the intention of the script yes. I suppose I should have simply posted saying "I would like it if there was a toggle for the LUA HUD also".
Understood. The next version has it in a way that also disables the Lua HUD in its entirety, even the jump predictor.
DDRKhat wrote:
How is it I trigger "Jump Prediction" ?
If you (1) have the toggle on (it is on by default), (2) are inside a game level (including some special stages) and (3) either recording OR not playing a movie, a second set of speed values will appear in the character HUD between the speed values and the angle. In this case, each character HUD will have 4 lines, the 3rd being the jump prediction: this is what the character's speed will be like if you press the 'c' button for the next two frames (in S2/SCD, both of which have air speed limits if you hold in the forward direction, the left/right directions will be cleared for the prediction).
DDRKhat wrote:
Whilst I'm making little requests. Don't suppose you could add nitsuja's FastForward During "IsBoring()" script with variable toggle but eliminate the part that fast-forwards while the player is off-screen? (I personally find it difficult to keep track of whats going on when it zips at those parts)
For S2 and S3/S3&K, there is no real problem; but for S1/SCD, I have no idea how to determine if the score tally is on or not. If anyone can chip in, I'd appreciate. Other than that, it is fairly easy to add the boring stuff skipper.
In fact, I just finished the HUD disabling code: it turns out that I can push the HUDs offscreen in S1 and SCD too, without causing desynchs and without recourse to Nitsuja's script above. The HUDs are sprites in these two games, which means I had to push them *just* offscreen so that they don't unload.
The new script is here; I haven't updated the 7z file because MediaFire seems to be down. In this new version, I add a toggle for the entire Lua HUD, added a partial skip of boring stuff (level tallies are not skipped) with its own toggle, a disabler of Hyper Sonic's hyperlaunch flash (with its own toggle), made toggle widgets show only on mouse contact if they are inactive, swapped back [+] and [-] (as I noticed they were inverted) and implemented the above changes to disabling the original HUDs.
Edit: forgot to mention fixing a couple bugs in SCD.
Also, if anyone knows how to disable the SCD warp direction indicators (you know, the 'past' and 'future' images that appear after you go past a sign) I'd appreciate knowing -- the way I was doing it didn't work all levels, and caused other issues.
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
You are still allowing jump prediction to go on (lines 1631-1633), which emulate a couple of frames into the future; without the HUD to display it, this is just wasted emulation. Slightly better would be to exit prematurely from the create_hud function right at the top.
Moreover, as-is the variable is misnamed: it disabled the Lua HUD if it is false, so a better name would be "enable_lua_hud" instead. Either that or switch the comparison in line 1642 from == to ~=.
I assume that this is for making movie files without the original or Lua HUDs, right?
Edit: a thought I just had: maybe the little [+] boxes should appear only on mouse over?
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Here is the script that removes the HUD for all Sonic games. It is a pity that Sonic 1/2/CD aren't done nowhere nearly as elegantly as Sonic 3 & K...
Edit: Actually, Sonic 2 can be done almost as elegantly by moving the hud offscreen too; the new script is here. But Knuckles in Sonic 2 is annoying as hell, now that I have tested it, and can't be done either the new or the old way... Anyway, I'll try Sonic 1 & hacks & CD before tackling S2&K.
Edit 2: Knuckles in Sonic 2 done too; just needed the right address.
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
As it turns out, S3&K is *great* for removing the HUD! With nothing but the following:
memory.writebyte(0xfff711,128)
memory.registerwrite(0xfff711, function(address, range)
if memory.readbyte(0xfff711) ~= 128 then
memory.writebyte(0xfff711,128)
end
end)
the current any% run synchs up fine up until the end of Launch Base 2 (which is as far as I have watched).
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
HHS wrote:
In that case, try memory.writebyte(0xfffff711,128) for S&K. This moves the HUD off the screen. It probably works in Sonic 3 too.
In Sonic 2, the 0x40d8a address was wrong, the right address turned out to be 0x40804. But since ROM writes don't work, you have to write 0 to 0xfffff711. This has the side effect that rings will disappear.
I had already tried it earlier today for S2, and noticed the ring disappearing effect, which is why I ditched it in favor of killing the HUD drawing function just before it actually draws the HUD (I am using Lua to overwrite a register just before a check is made which cancels the HUD draw; I watch a big enough chunk to make sure the overwrite happens before the check).
I haven't tried it for S3/S3&K -- I had assumed it would yield a similar result (hiding the rings). But the fact that I can write 128 there to move the HUD offscreen is intriguing; I will look into it.
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
HHS wrote:
In Sonic & Knuckles, you can write 0x4E75 to 0xDB44 to remove the HUD.
In Sonic 2 rev. 1, write 0x4E75 to 0x40D8A.
This causes desynchs; I had already tried something similar for S2 (today, about an hour or so ago, using Game Genie codes) having discovered it through S2 disassemblies. In any event, a Lua script can't write to ROM addresses, only to RAM, so this is out of the question anyway.
DDRKhat wrote:
You sure about this? I took the demoscript posted by nitsuja and made the appropriate change and I couldn't get the HUD to go with[snip]
HHS was talking about modifying the rom itself; Lua can't do that. Nor do you have to: I have just finished modifying the script so that it also works with S2 (it is here, script only).
I am still looking for what I need to do in SK/S3&K (and plain S3 will be though as there are no disassemblies for it anywhere), so it won't work there if you try it.
Experienced Forum User, Published Author, Experienced player
(758)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
New version of the script, fixing bug introduced recently on continues display; also, finished object-oriented design for interface by introducing clickable widgets.
The combine script that removes the original S1/SCD huds is here (script only).