don't click here

Hack Demo: Sonic 1 ""reduced""

Discussion in 'Engineering & Reverse Engineering' started by Tahazzar, Feb 22, 2024.

Tags:
  1. Tahazzar

    Tahazzar

    Member
    5
    2
    3
    Finland
    https://www.mediafire.com/file/nxpb2we82zgx12s/sonicReducedv001.bin/file (2024-02-23)
    This is an incomplete demo / proof of concept of an idea I've had for a hack. I think I started working on it 2021 and then got it to this state at the end of that year but never bothered to post it :D

    It features a single stage (Starlight zone) and a second stage which is just the boss. There are also two custom special stages in the hack. The stages are linked in a way that it loops from the boss stage back to the first level.

    s1built000.jpg s1built002.jpg s1built003.jpg s1built004.jpg s1built005.jpg s1built006.jpg s1built007.jpg s1built008.jpg s1ss01.jpg s1ss03.jpg

    The hack includes some contentious modifications into the physics of sonic, mostly lowering his jump height, acceleration, and top speed. This does quite dramatically change how one needs to adjust their playstyle in comparison to the usual Sonic physics. The importance of momentum is especially pronounced since the speed reductions are much lesser for Sonic in the rolling state, so using rolling properly is of utmost importance. Simply to get out of the immediate starting section you will need to be rolling to gain momentum.

    The hack features some assembly modifications but nothing too notable. I made it so that the hack boots up directly into the first level - this however seems to have the bug that sometimes there's some memory junk at the screen on startup in which case a hard reset is recommended. Robotnik monitors spawn a Bomb badnik instead of say dealing instant damage. Memory adjustments and spike-death bug fix were included as per the tutorials.

    The concept idea of the hack was conceived when I experienced the Mini-Sonic hack in which Sonic uses his "mini" Sprite as seen in Metallic Madness. I have this rambly spiel about it: https://justpaste.it/90s6p
    At this point I'm no longer sure if I really would want to use that mini-sonic collider/sprite.

    In the grander scheme the starlight zone here would prolly be the 2nd or 3rd zone - definitely not the first. Not that it matters that much since the likelihood of me finishing this is pretty much nil but it's more so to just say that the hack isn't intended to start as harsh as this does. I would definitely give player some "breathing room" to get used to the new physics with much more relaxed platforming obstacles. Just getting out of a steep downward loop hole can be tricky here if aren't accustomed to this.

    There are few secrets and couple of alternative routes through the map as well as the two extra new special zones. I think the modified zones were 1st and the 3rd ones. You can get to them due to game looping the zone over and over. The provided images of the special zones aren't exactly correct since I think the importer there is a bit bugged in that it shows some of the gem blocks as being of wrong color. The secrets I can still recall are the route
    to the upper secret right from the beginning and then the monitors inside the walls early on the 2nd floor. Also an one-up around the middle of stage where you needed to jump from the spike ball but dunno if that was really a secret since I think it was plainly visible.

    All in all I'm actually rather pleased with how this ended up being, especially the boss (with such little changes) and the modified special stages. As to why I never got into developing it further prolly comes down to how taxing level editing and such is with the current tools - though they are certainly much appreciated. Still, I have a bunch of other projects going on such as a game of my own that has been under development for some time (not having to work in assembly is very nice xD). I did plan out the layout of the Casino Zone, as well as briefly try upon making it in the editor, albeit there was some trouble with loop physics that was conflicting with what I had planned there. Also I think the "vision design" for the Emerald zone was pretty much finished or so but yeah.
     
    Last edited: Feb 23, 2024
  2. Kilo

    Kilo

    Deathly afraid of the YM2612 Tech Member
    1,039
    1,038
    93
    Canada
    Sonic 1 Source Code Recreation + Source Code Wiki Page
    upload_2024-2-22_8-26-12.png
    People still use Fusion to test their ROM hacks these days, huh.

    Anyways, I wanted to try and enjoy the level design but Sonic's slower physics and lower jump height just made it frustrating. Although level design also has some seriously questionable moments especially at the start of act 1 placing a loop right at the start, and having a gap with spikes you have to roll through when it's already hard enough to get speed to roll in the first place.
     
  3. Chimes

    Chimes

    The One SSG-EG Maniac Member
    928
    641
    93
    alright which emulator should i use for this bc i can't think of anything older than 5 years
     
  4. Tahazzar

    Tahazzar

    Member
    5
    2
    3
    Finland
    Fusion is the emulator I used.

    There's no second act. I guess I forgot to mention that there in fact would never be any act 2s but rather that 2nd act would always be the boss right away as its own stage.

    Also as I said this would not be the first zone but yeah. The loop is there right away to force the player to know using rolling to gain momentum is paramount.
     
  5. Kilo

    Kilo

    Deathly afraid of the YM2612 Tech Member
    1,039
    1,038
    93
    Canada
    Sonic 1 Source Code Recreation + Source Code Wiki Page
    This hack only works on inaccurate emulators like Fusion.
    Blastem and clownmdemu are both in active development are far more hardware accurate than Fusion.
     
  6. Chimes

    Chimes

    The One SSG-EG Maniac Member
    928
    641
    93
    Um, dude, that thing is well over fourteen years old, where in the world did you find it? LOL
    Anyways, had to dig through 2000s emulation websites just to find one that worked (Fusion for some reason keeps closing out on my machine). Will write up my thoughts later...
     
  7. Devon

    Devon

    La mer va embrassé moi et délivré moi lakay. Tech Member
    1,423
    1,740
    93
    your mom
    Are we now at this point lol? For years in the hacking community, it was basically one of the most popular emulators for playing hacks on, even though it wasn't exactly designed to be a full on testing/debugging emulator. I've always found the version hosted on Sega Retro to work fine on anything I ever ran it on in the past decade or so.
     
    • Agree Agree x 3
    • Like Like x 1
    • List
  8. Chimes

    Chimes

    The One SSG-EG Maniac Member
    928
    641
    93
    Well... hmm. Admittedly this thread got off to a very crusty start and I can already smell what the later posts to this are going to look like, so I'll get out what I have to say quick enough.
    So let's start off with the good stuff.

    upload_2024-8-26_7-22-9.png

    (2024 edit: There was an image here, but... well, you get the idea. Sorry about that.)

    This ROM hack has some interesting ideas - taking notes from Sonic Labyrinth and Sonic CD, you play as Sonic who can't move as fast, with his pace slowed to a simple jog. Your main means of momentum is rolling and jumping, and the level does provide some level of interactivity to help you exploit being able to roll around in a brisk manner. If you're skilled enough, you can gain a lot of speed using the loops and adjacent slopes to build up speed to get to places.
    The idea of Eggman monitors releasing enemies that kill you is a interesting idea. I wish that can be explored more in a expanded fashion; instead of rings or shoes, you get a Roller that jumps at you if you're not quick enough, or a Caterkiller to immediately get you on your toes. That actually can add a dynamic that I don't think I've seen in hacks... yet? Haven't played much hacks since I was 7, though.
    The fans being able to restrict Sonic's movement is certainly a interesting usage of their concept, although there are areas where it can falter.
    Overall, it was a pretty okay experience at first... but then the beast revealed itself to me and next that I know my hands are all sticky and there's black plasticky goop all over my table.

    Let's get to the parts that set this ROM hack back from being a cool experiment to microwaving water with a spoon still inside.
    First off... it wasn't actually tested in a modern emulator. This I can set aside for now, considering Kega Fusion is still promoted as a good emulator despite being so old there's teenagers that weren't even born when 3.64 first came out, but it sucks for me because now I have to use something as dreaded as Gens which just feels icky and archaistic on my Windows 10 machine. (Fusion doesn't even work on my PC... RIP.)
    Now lets get to the meat of things. While Sonic's movement was indeed reduced, his acceleration should've been more proportionate. Right now, it feels really strange trying to actually move and hit things even after a good session of play because Sonic... just is too slow. Take for example the orbinauts... I try to hit them, but Sonic literally can't reach them horizontally. He can get to their height, but his acceleration prevents him from actually hitting them at a safe angle unlike normal speeds. It's hard to reach some springs and platforms, because Sonic can't move enough. He can jump but he can't get anywhere. He also has a hard time getting away from the monitor enemies in time because his initial speed is too slow depending on where you hit them.
    If Sonic's acceleration was upped up a smidge, this wouldn't be a problem because now he can just reach springs and hit enemies in time.
    The fans needed some placement adjustments... At first they kind of helped but at times they fling Sonic around and you have to kind of play two games at the same time: platforming, and slingshotting yourself from the fans Angry Birds style. The boss unfortunately suffers the greatest from this, as although in paper it should work and I think it can, what ends up happening is due to Sonic's too low of a acceleration (he starts off too slow laterally) and the fans requiring you to do two playstyles at once thanks to how they work, you have to wait for Eggman to be in the right spot (which can take dozens of seconds) and then hop on the spike hemispheres and hit him and then let the fans wring you out. This takes minutes and it sours the idea bc I know theres some good potential in this!

    But by far the biggest thing that marred the whole experience is the requirement of a old emulator. At some point, the game began to melt on me. Literally, the graphics began to melt.
    I don't know what caused it but I assume it's the fact it's a old emulator, but slowly as I was playing the game's graphics began to disappear. Initially it was fuzzy but next that I know I could not see anything. Try as I might the nature of the corruption was irrepressible.... it was very unfortunate. At one point the game showed nothing but garbage and Sonic only, and at that point I couldn't play that much anymore. It was too unstable.



    Overall there were good ideas and I see potential for a slow Sonic game and what I see can be expanded on. But the execution falters and the technical glitches certainly hurt the experience. It's a okay experiment that's marred with some flaws. I'd like to see something more out of this!
     
    Last edited: Aug 26, 2024
    • Like Like x 2
    • Agree Agree x 1
    • List
  9. saxman

    saxman

    Oldbie Tech Member
    I use Fusion exclusively. Nothing wrong with Fusion. It was, and still is, a *very* good Genesis emulator. Of course it doesn't emulate many finer details that would trip up a 68000, but so what? For a demo, it's a perfectly fine benchmark. He never claimed it would work on real hardware, so cut him slack.
     
  10. Chimes

    Chimes

    The One SSG-EG Maniac Member
    928
    641
    93
    Normally I would agree, but Fusion is over 13 years old and in my case I had trouble trying to get it to run... it just closes out.
    There's a website that maintains a list of emulators of today, and Fusion is listed as not recommended simply because other emulators just do what it does better.
    It's not bad, just old. Sometimes its age can show in cases like this. But I digress...
     
  11. Devon

    Devon

    La mer va embrassé moi et délivré moi lakay. Tech Member
    1,423
    1,740
    93
    your mom
    I do feel like the lack of address error emulation is a bit problematic for development purposes, as that is a pretty common and easy error to make. I do feel like compatibility with other emulators (that do emulate address errors) at the very least should be encouraged, just to make the player's life easier. Otherwise, though, I find that Kega Fusion (for me) generally works okay for just testing general/gameplay stuff.

    Though, I am curious on how there's a PSG read happening. That's definitely quite an odd error.
     
    Last edited: Feb 22, 2024
  12. Overlord

    Overlord

    Now playable in Smash Bros Ultimate Moderator
    19,470
    1,083
    93
    Long-term happiness
    Fusion works perfectly fine and I still use it - can we stop shitting on an emulator in a thread that's got nothing to do with it?
     
  13. MarkeyJester

    MarkeyJester

    Original, No substitute Resident Jester
    2,248
    509
    93
    Japan
    Ah right, I see what you were doing, you wanted to remove the title screen, and removed all this:

    Code (Text):
    1.  
    2. Title_ClrObjRam:
    3.        move.l   d0,(a1)+
    4.        dbf   d1,Title_ClrObjRam ; fill object RAM ($D000-$EFFF) with   $0
    5.  
    6.        move.l   #$40000000,($C00004).l
    7.        lea   (Nem_JapNames).l,a0 ; load Japanese credits
    8.        bsr.w   NemDec
    9.        move.l   #$54C00000,($C00004).l
    10.        lea   (Nem_CreditText).l,a0 ;   load alphabet
    11.        bsr.w   NemDec
    12.        lea   ($FF0000).l,a1
    13.        lea   (Eni_JapNames).l,a0 ; load mappings for   Japanese credits
    14.        move.w   #0,d0
    15.        bsr.w   EniDec
    16.        lea   ($FF0000).l,a1
    17.        move.l   #$40000003,d0
    18.        moveq   #$27,d1
    19.        moveq   #$1B,d2
    20.        bsr.w   ShowVDPGraphics
    21.        lea   ($FFFFFB80).w,a1
    22.        moveq   #0,d0
    23.        move.w   #$1F,d1
    24.  
    25. Title_ClrPallet:
    26.        move.l   d0,(a1)+
    27.        dbf   d1,Title_ClrPallet ; fill pallet with 0   (black)
    28.  
    29.        moveq   #3,d0       ; load Sonic's pallet
    30.        bsr.w   PalLoad1
    31.        move.b   #$8A,($FFFFD080).w ; load "SONIC TEAM PRESENTS"   object
    32.        jsr   ObjectsLoad
    33.        jsr   BuildSprites
    34.        bsr.w   Pal_FadeTo
    35.        move   #$2700,sr
    36.        move.l   #$40000001,($C00004).l
    37.        lea   (Nem_TitleFg).l,a0 ; load title   screen patterns
    38.        bsr.w   NemDec
    39.  
    40.        move.l   #$60000001,($C00004).l
    41.        lea   (Nem_TitleSonic).l,a0 ;   load Sonic title screen   patterns
    42.        bsr.w   NemDec
    43.        move.l   #$62000002,($C00004).l
    44.        lea   (Nem_TitleTM).l,a0 ; load "TM" patterns
    45.        bsr.w   NemDec
    46.        lea   ($C00000).l,a6
    47.        move.l   #$50000003,4(a6)
    48.        lea   (Art_Text).l,a5
    49.        move.w   #$28F,d1

    But you left this behind:
    Code (Text):
    1. Title_LoadText:
    2.        move.w   (a5)+,(a6)
    3.        dbf   d1,Title_LoadText ; load uncompressed text patterns

    a5 had C00004 left over from the VRAM clear subroutine (ClearScreen), if you'd like to fix the issue @Tahazzar remove those last three lines, and that'll fix their PSG complaints d;

    Will have a playthrough in a moment once I'm settled down, it's been a while since we've had hacks like this released, reminds me of the good old days~

    --- --- ---

    So the hack itself, it's very bizarre layout placement, I wouldn't say lazy, just visually strange, and really difficult to navigate. The control scheme makes it a real challenge, and I think that's probably what annoyed me the most, just this very slow acceleration and movement making the platforming difficult... I will give you props though, having the eggman monitors spawn a bomb badnik is quite unique, I don't think anyone's done that before, and it definitely adds a unique gameplay element to it, nice one~

    I couldn't really get passed the first act, I think with time maybe I could, but it's a lot of energy to ask of me. I'd love to give those special stages a go, we'll see if that's enough motivation lol
     
    Last edited: Feb 22, 2024
    • Useful Useful x 5
    • Like Like x 2
    • List
  14. Tahazzar

    Tahazzar

    Member
    5
    2
    3
    Finland
    Ok so I downloaded clownmdemu standalone version and it's certainly great that it works basically out of the box with controller config and all. However, the rom still booted perfectly fine for using this emulator so I think there might be something else going on as far as those issues go. Had I used clownmdemu from the beginning, it seems it wouldn't have changed a thing :eyebrow:

    @MarkeyJester I removed the two lines, I'm a bit confused when you say "three lines" - I mean I can't remove the routine name from that part can I? Specifically these two I commented out:
    Code (Text):
    1. ;move.w    (a5)+,(a6)
    2. ;dbf    d1,Title_LoadText ; load uncompressed text patterns
    Hmm, actually I guess that title name isn't referred to anywhere else and I think in ASM they are just like go-to skip marker more than anything. Leaving it "Title_LoadText:" hopefully doesn't hurt though. Anyways, that's the v001 version I uploaded and updated to the main post. Hopefully it helps somewhat but I unfortunately can't tell the difference since both versions boot for me whether I use clownmdemu or Fusion.

    I forgot to mention that toward the very end of the stage there are few too many sprites (two of the three routes there both utilize sprites heavily at that point), which can cause some sprite flickering even with the memory increase edits. It was the last problem I recall trying to address before I decided to leave it for now and moved onto designing the other levels such as the special levels.

    @Chimes What I saw in those gameplay recordings was obviously something else altogether though as it's clearly freaking out and I have never seen anything as severe as that. Again, I think there must be something else going on specific to the differences between our set-ups that's messing the gameplay this bad for you.

    As far as the speed acceleration goes, the thing to get is that you are pretty much required to have even a smidge of momentum before jumping on stuff - trying to do that from completely standstill is ill-advised. Once you get used to it, it really isn't that bad. I did few runs of it just now as a refresher and I hadn't booted this up in an year or two xD.

    Regardless, I don't blame anyone for finding it too draining. The hack as it currently exists basically starts somewhere in the mid to mid-late game so it can create this nasty shellshock when you're just thrown into this modified system as there isn't any of that "easing in" with early-game levels that I mentioned in the main post.
     
    Last edited: Feb 23, 2024
  15. Devon

    Devon

    La mer va embrassé moi et délivré moi lakay. Tech Member
    1,423
    1,740
    93
    your mom
    I believe BlastEm actually properly emulates what happens when you read from the PSG on real hardware. PSG doesn't respond to reads, only writes. Basically, when the 68000 requests a data read/write on the bus (indicated by setting its AS (Address Strobe) pin), whatever device responds will set the 68000's DTACK (DaTa ACKnowledge) pin to indicate that it has performed the read or write, and the 68000 can then continue. As a result of the lack of response, the 68000 gets locked up, as it will be in a perpetual wait state, waiting for DTACK to be set, when it'll never get set... Seems like clownmdemu doesn't emulate that. Genesis Plus GX (can be found on BizHawk and RetroArch, and is also in active development) does emulate it, but instead of throwing an error message, it'll behave like hardware and just freeze.

    As for the "three lines" bit, he was referring to that label, yes. It can be removed, because it's only ever used in that loop. Anyways, I went ahead and ran the latest ROM in BlastEm, and the crash no longer happens. As such, it'll likely now run on hardware, so that's a neat bonus.

    As for the gameplay, I'm gonna have to agree with the others that the new physics are cumbersome. The stage chunks were very much not designed with the slower speed in mind. It's especially difficult to jump over stuff due to the slower speed and lower jump height.
     
    Last edited: Feb 23, 2024
  16. Chimes

    Chimes

    The One SSG-EG Maniac Member
    928
    641
    93
    Thank you for patching the bug!
    Now that I've sat down and properly given it a go, here's some of my collected thoughts.

    So parts of the hack did grow on me. Strange acceleration aside, I love how this hack makes great use of Sonic's ability to just roll, with tons of curves and platforms to keep rolling on. While getting around feels a little weird at first, I eventually got used to it and managed to play through it from iteration to iteration.
    The boss is still a sore spot however... I wish the fans can be used to fling Sonic straight to Eggman in a playable, controlled manner but in practice it's hard to actually do that since the fans just slide Sonic off the platform before he can actually jump.
    I also wasn't able to really get the special stages? I don't know what I'm doing wrong but 50+ doesn't seem to get the big ring to appear.
    There were a lot less glitches than I had last time, although I noticed the sprite flickering can sometimes appear if you stay in the upper route getting the rings for too long. Maybe the older emulation aggravated it somehow? Additionally once I got a feel for the stage I noticed there were plenty of places where Sonic just falls through the walls and floors if he's too fast. There's a part where you're supposed to roll off a ramp next to a spring, but do it wrong and you end up landing inside the floor itself and falling to the bottom of the screen. I managed to find ways to get out of them but it got weird at first try.
    Overall I liked this hack but it has some irons to kink out. There's some promising concepts here and that enemy monitor idea is still really cool.
     
  17. Tahazzar

    Tahazzar

    Member
    5
    2
    3
    Finland
    :O I always love seeming some gameplay, that's some smooth one actually. The special stage ring only appears on the upper exit after the longer swinging half-spike ball platforms (ie. the section right after you fell to the lower floors in that video).

    I recorded a playthrough of the boss here where I barely scraped through :D Kinda half-blind since this was after however much time after my last playthrough. Took me about 40 seconds but maybe that's 'cause I played like a madman and got lucky? Dunno. I don't think it was even particularly super fast or anything considering I "wasted time" getting hit and such. Your playthrough though did seem maybe a tad more careful than need be - perhaps the "proper" way to play it is somewhere in the between.

    I guess this forum doesn't allow webm uploads. Well, here's a link to the 1,5mb vid I recorded with screen-to-gif xD https://www.mediafire.com/file/yg4bochb070f701/robo.webm/file

    Also, somehow in that video I'm at 3 rings even though I just finished the special stage... Hmmm, I now faintly starting to remember that I did some ring reset or such when you entered or exited the special stage.

    ---

    EDIT1: This is btw pretty off-topic but I found it funny that in this vid from few hours ago pigsy of symphony of the night on genesis port fame showcases the tech in Kega Fusion :D
    [

    ---

    EDIT2: To my surprise while browsing utube randomly, I just noticed that Razor & Zenon did a playthrough of this O_O

    As a minor note on the gameplay on the vid, you can quite roll beneath the first Orbinaut you encounter after the breakable wall - no need to wait it out. It showcases the first modified special stage but is missing the other one, but since it's the third one reaching it would require playing through 3 cycles so it's very understandable to skip it.

    Another even lesser note that comes to mind is that if go down the bottom route and roll down the loop, and then end up hitting the shaking platform, you can actually roll the wayback through that loop and be thrown to the middle of the rotating platforms on the upper section. I think one would have to time it to see whether that might be faster but eh.
     
    Last edited: Feb 24, 2024