marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Wow. You really weren't kidding when you said the game doesn't like being force scrolled, huh? After a few resets, the game eventually got stuck at lag frames, showing only this: In the end, I was forced to manually reset the 68000 processor so the map hack could continue. Edit: it seems that the map hack has reset along with the 68000 processor, and is back at failing at the same spot: about maybe 3-4 half-screens down from the initial position, after the first (vertical) rotating gray cylinder. This is around the area where the Knuckles cutscene happens, if I am not mistaken. Edit 2: It seems I was wrong and it went all the way through. After going over the level as described, however, hitting 'B' had no effect except if I left capslock on (that is, if I ignored step 20). And now I know why your maps do not have backgrounds too.
Marzo Junior
upthorn
He/Him
Emulator Coder, Active player (388)
Joined: 3/24/2006
Posts: 1802
Oh right. If you have caps-lock off, you have to hit S after B to get it to actually dump. I forgot about that. For some reason the code logic only lets it dump on the same frame that it takes a new screenshot.
How fleeting are all human passions compared with the massive continuity of ducks.
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Well, I now just have to figure out how to force Gens to let me actually scroll to the bottom of the stage -- there are five or six rows of about screen height missing from the bottom because of that, including a good chunk of the bottom route.
Marzo Junior
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
New WIP until end of IceCap 2. Act 1 is almost 3 seconds faster and act 2 is 1 frame faster. The act 1 trick came from an unassisted run I found by accident.
Marzo Junior
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Uff... it was quite a bit of work*, but I finally managed to get Gens maphack to work as I wanted! The first map is for Launch Base 1: here it is (warning: it is 0.97MB in size). * For those that care: first, there was a scrolling limit bug that had to be fixed (alternatively, a bitmap-size bug, but it was easier to fix as the former) -- X and Y from lines 1833-1834 have to be pre-divided by the ratio (rounding up) or you will be able to scroll too far to the right or bottom for certain scale factors (most of them, actually). I also had to tweak the values of X and Y for Launch Base 1, as large parts of the level were being cut otherwise. The automatic mode was sadly more annoying than useful, so I turned it off (in particular, the changed X and Y values caused it to hang continuously). Then I disabled ring animation to help make the map; but the line in question actually in SonicHackSuite.cpp actually does it wrong, and instead makes the ring rotate extremely quickly (instead of setting the timer to zero -- causing a change every frame -- it should be set to (say) 127 instead). Finally, the pre-divided X and Y values from above forced me to adjust the line that sets the water level for levels without water. Each of these forced me to restart the map, but eventually it was done. I think (hope) that the other maps will be a lot easier now that I have some experience with it.
Marzo Junior
upthorn
He/Him
Emulator Coder, Active player (388)
Joined: 3/24/2006
Posts: 1802
marzojr wrote:
Uff... it was quite a bit of work*, but I finally managed to get Gens maphack to work as I wanted! The first map is for Launch Base 1: here it is (warning: it is 0.97MB in size).
This is great work. The bitmap size thing wasn't really a bug, exactly. It was a limit set because mapcap.bmp is always generated at the resolution specified, and the machine I was working on at the time was running out of memory even trying to open files that were more than a little bit larger than that. The main reason I never did Launch Base, though, was because I couldn't figure out how to deal with the tileswapping for those inside/outside areas in an easy way. Also, there's two last things I forgot which should be really helpful for future maps, but I don't think should make too much difference for the one you already did. 1. Make a copy of your S3K ROM, and open that copy in a hex editor go to 0x01DB50, and replace
0100 01FF 0100 0202 0102 02FF 0100 0303
0103 03FF 0100 0404 0104 04FF 0100 0505
0105 05FF 0100 0606 0106 06FF 0100 0707
0107 07FF 0100 0808 0108 08FF 0100 0909
0109 09FF 0100 0A0A 010A 0AFF 0200 010B
FE01
with
0101 01FF 0102 0202 0202 02FF 0103 0303
0303 03FF 0104 0404 0404 04FF 0105 0505
0505 05FF 0106 0606 0606 06FF 0107 0707
0707 07FF 0108 0808 0808 08FF 0109 0909
0909 09FF 010A 0A0A 0A0A 0AFF 020B 0B0B
FE01
to prevent monitors from ever showing static. 2. Before dumping maps, enable graphics->layers->sprites->sprites always on top. This will cause rings and monitors and enemies to show even when they would normally be obscured by scenery.
How fleeting are all human passions compared with the massive continuity of ducks.
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
upthorn wrote:
The main reason I never did Launch Base, though, was because I couldn't figure out how to deal with the tileswapping for those inside/outside areas in an easy way.
I did it by enabling debug mode, activating it and teleporting inside the inside area in question to swap the tiles. It had the nice additional effect of showing the camera position; it also did not trigger effects such as the bosses. It had the unfortunate effect that I had to do a couple of parts again because the game placed some extraneous rings here and there, but that was easy to spot and fix.
upthorn wrote:
1. Make a copy of your S3K ROM, and open that copy in a hex editor go to 0x01DB50, and replace [...] with [...] to prevent monitors from ever showing static.
Now, that is useful! Thanks, redoing monitors to disable static was a pain.
upthorn wrote:
2. Before dumping maps, enable graphics->layers->sprites->sprites always on top. This will cause rings and monitors and enemies to show even when they would normally be obscured by scenery.
I did that more towards the end (about halfway through), but it didn't make much difference for the top half (and I redid the parts where it did make a difference).
Marzo Junior
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Launch Base 2 map is here (916KiB), already with the hacked monitors. By any chance, is there a similar hack for the big rings? Sure they are fewer and farther apart than monitors, but it would still help.
Marzo Junior
upthorn
He/Him
Emulator Coder, Active player (388)
Joined: 3/24/2006
Posts: 1802
marzojr wrote:
By any chance, is there a similar hack for the big rings? Sure they are fewer and farther apart than monitors, but it would still help.
I never found the giant ring animation scripts, so no, there is not. But it actually shouldn't be that difficult for me to go try and make one right now. edit: At 0x0619C2, change
04000001020304050607F80C060B0A0908
to
04080808080808080808F80C0608080808
How fleeting are all human passions compared with the massive continuity of ducks.
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
That did the trick, thanks. Using the twice-hacked ROM, I now have done the Flying Battery maps too: act 1, act 2.
Marzo Junior
Active player (278)
Joined: 5/29/2004
Posts: 5712
Wow, VGMaps is a little short on Sonic maps compared to you guys now.
put yourself in my rocketpack if that poochie is one outrageous dude
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Wow, VGMaps is a little short on Sonic maps compared to you guys now.
The more Sonic-oriented sites are a much better source for Sonic maps than more generic map sites; for example, Sonic Retro has several maps by Upthorn, Stealth and others. I am just completing the S3&K map set of maps that also show sprites. Which reminds me that another map bites the dust*: Sandopolis 1 is done (1.74 MiB). That leaves Lava Reef (1 to 4), Hidden Palace, Sky Sanctuary, Death Egg 1 & 2 and The Doomsday (if it can be mapped at all...). * Although I guess that 'sand' might be more appropriate than 'dust' in this case.
Marzo Junior
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
marzojr wrote:
* Although I guess that 'sand' might be more appropriate than 'dust' in this case.
Dust Hill Zone. *runs*
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Lava Reef 1 map is finished.
Marzo Junior
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Here are the maps for Lava Reef 2 (1.62 MiB), Lava Reef Boss (275 KiB, done for completness) and for Hidden Palace (223 KiB). I admittedly did not take as much attention to Lava Reef 2 timed sprites simply because there are too many scattered everywhere and I got a bit lazy.
Marzo Junior
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
Hrm. For now, I think I will skip mapping Sky Sanctuary and go straight through to Death Egg. It turns out that those clouds are sprites, and will horribly pollute the map. Further, disabling the sprite layer they are on also disables all monitors and rings, defeating the purpose of the map. It there a way to disable those clouds? Maybe a way to edit the sprites to be totally transparent?
Marzo Junior
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
The maps for Death Egg 1 (592 KiB), Death Egg 2 (721 KiB) and The Doomsday (83.2 KiB) zones are done. The only map still left to do is Sky Sanctuary (technically, so is the Death Egg 2 final bosses before The Doomsday, but they have nothing interesting).
Marzo Junior
upthorn
He/Him
Emulator Coder, Active player (388)
Joined: 3/24/2006
Posts: 1802
marzojr wrote:
Hrm. For now, I think I will skip mapping Sky Sanctuary and go straight through to Death Egg. It turns out that those clouds are sprites, and will horribly pollute the map. Further, disabling the sprite layer they are on also disables all monitors and rings, defeating the purpose of the map. It there a way to disable those clouds? Maybe a way to edit the sprites to be totally transparent?
file->game genie add these codes:
057BF6:4EF9
057BF8:0001
057BFA:ABB6
then select all three and click ok. This makes the cloud object code into a nonconditional jump to "deleteobject" You could also do this with a hexeditor, but since the required change is so small and only needed once, game genie makes more sense to me.
How fleeting are all human passions compared with the massive continuity of ducks.
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
That did it, thanks. Here is the Sky Sanctuary map, completing the map set. Monitors seem weird in this stage, and a few bits seem to be missing; maybe they are related to the Knuckles cutscene (which I didn't wait for to make the map)? Anyways, with the maps all done, I will be resuming the run shortly.
Marzo Junior
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
WIP until Launch Base 1. Comments: At the beginning, going through the bottom route after turning Super is 60 frames slower and does not net me the fire shield. Hitting the ceiling at about the time the fire shield plays is about 20 frames faster than doing it otherwise because there is no drag and the ceiling does not hamper my acceleration. The slight waits before entering the tubes are to glitch out of them sooner, of course. At about 0:26, I am too fast to go down without losing speed; I had to improvise, and found another zip that saved some time. At about 0:37, it is quite faster to slow down and go the top route because Supersonic can't double-jump into the rotating cylinder from the top route like Sonic could with the lightning shield. Towards the end, at about 1:20, collecting the 3 rings loses me about 9 frames until the boss, but I save a lot more than that because I don't have to hit the boss 3 times after reverting to normal Sonic. Moreover, there is no way Supersonic can get up on those platforms. All in all, it is exactly as fast as Nitsuja's run using Tails to kill the boss.
Marzo Junior
Player (36)
Joined: 9/9/2006
Posts: 388
At the boss would it not save time to crouch and let it get close to you for 2 hits? It seems like it could save time?
A whisper in the wind~~
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
My gut reaction was that it probably wouldn't save any time, because of the time that the boss takes to get low enough for it, but I tried anyway. With a slightly more optimized version of the ring grabbing (saving 6 frames), it actually saves a total of 70 frames -- enough that I could grab one less ring at the end, which will save a further frame on the score tally. Moreover, I put a memory watch on the boss' Y position and determined what was the best Y position to hit him the first time and get the two hits in the fewest frames possible, so that the kill is frame-perfect. So, thanks for the suggestion :-) Here is the updated WIP.
Marzo Junior
Player (36)
Joined: 9/9/2006
Posts: 388
marzojr wrote:
My gut reaction was that it probably wouldn't save any time, because of the time that the boss takes to get low enough for it, but I tried anyway. With a slightly more optimized version of the ring grabbing (saving 6 frames), it actually saves a total of 70 frames -- enough that I could grab one less ring at the end, which will save a further frame on the score tally. Moreover, I put a memory watch on the boss' Y position and determined what was the best Y position to hit him the first time and get the two hits in the fewest frames possible, so that the kill is frame-perfect. So, thanks for the suggestion :-) Here is the updated WIP.
Glad to help :-)
A whisper in the wind~~
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
WIP until end of Launch Base 2. Comments: the fire shield was only to get to the big ring faster. Slowing down to hit that spring at 0:09 is about 60 frames (!) faster than not doing it. Grabbing the rings at 0:13 does not lose any time, as I would have to slow down for the spring at 0:14 anyway (I could grab only one of them, though). Charging the spindash at 0:19 any more or any less loses frames. At 0:20-0:22, going the bottom route is slightly slower. Hitting the spring at 0:39 is a lot slower. At 0:45-0:46, I go slightly higher to gain slightly more speed until the first boss. Just before 0:48, I glitch past the invisible wall due to sheer speed: as a result, Robotnik never shows up, leaving me to destroy his unattended machine.
Marzo Junior
marzojr
He/Him
Experienced player (749)
Joined: 9/29/2008
Posts: 964
Location: 🇫🇷 France
WIP until end of Mushroom Hill 1. A few comments: all other routes from the first giant ring to the second are ultimately slower. Same thing from there to the third giant ring or from the third to the fourth.
Marzo Junior