Sonic Unused Content/Prototype Digging General

Discussion in 'Discussion & Q&A' started by Devon, Jun 30, 2022.

  1. Devon

    Devon DROWN, DROWN, DROWN MYSELF! Member

    Joined:
    Aug 26, 2013
    Messages:
    1,401
    Location:
    your mom
    I haven't seen this documented anywhere, but there's a THIRD unused hanging sprite (on the very left here). The unused hanging sprites are found in Tidal Tempest (which seems to be a hub for these unused sprites in the final, with leftover mappings as far back as v0.02).

    [​IMG]

    In the Wacky Workbench sprite data, all 3 are replaced with the final sprites, even in the 510 prototype, so it's possible that this set is the pre-510 version, before they were redrawn.

    Also, funny thing about these sprites. On TCRF and Retro's wiki, they were portrayed as a single sprite, colored blue, and a few sprite sheets I've seen color the second frame white. The game data shows that the first frame is black and white, and the second frame is yellow and black.

    [​IMG]
     
    Last edited: Nov 27, 2022
    ProjectFM, Pacca, MrLordSith and 3 others like this.
  2. Devon

    Devon DROWN, DROWN, DROWN MYSELF! Member

    Joined:
    Aug 26, 2013
    Messages:
    1,401
    Location:
    your mom
    So, in the v0.02 prototype of Sonic CD, object ID 0x25 just points to a blank object. However, there is leftover code that was assigned to that ID. By adding the pointer back in, it can be seen that object 0x25 was a log bridge! The graphics for it were already found, and in fact, are also loaded into VRAM. The mappings were also referenced in the debug mode object list. If you restore the bridge pointer and re-enable debug mode, you can place bridges.



    Interesting thing to note is that bridges were actually placed in the level earlier in the development, but got dummied out, with a row of those invisible platforms being put in its place.

    Also, if you set its subtype value to be nonzero, it does this:
    [​IMG]
     
    Last edited: Jan 25, 2023
    Crimson Neo, Pacca, Clownacy and 5 others like this.
  3. Devon

    Devon DROWN, DROWN, DROWN MYSELF! Member

    Joined:
    Aug 26, 2013
    Messages:
    1,401
    Location:
    your mom
    So, I took a dive into the Nemesis compressed graphics/objects in the stage files, and came across some stuff.

    Collision Chaos

    [​IMG]

    This is a teleporter. It can be found in the 510 prototype, albeit with broken mappings. 3 of these will circle around, and when Sonic enters one, he gets teleported to another one within the circle.

    [​IMG]

    Tidal Tempest

    [​IMG] [​IMG]

    First, some unused platforms. Interestingly, despite the fact it doesn't seem to fit, the one on the left came from the past. The others come from the future.

    [​IMG]
    [​IMG]

    This is some kind of electric beam? The code for it can be found in the 510 and v0.51 prototypes. Only the v0.51 prototype has working collision detection, where touching it makes it stop. The code was removed by the 712 prototype.

    [​IMG]

    I wonder if these unused sprites are related... they are also found in Tidal Tempest's sprite data...

    [​IMG]

    Stardust Speedway

    [​IMG]
    [​IMG]

    So, as you may know, in earlier prototypes, Stardust Speedway didn't have searchlights. They instead used horizontal interrupts to move a lit up section up and down. These sprites were gonna be placed at the edges of the lit up section. As is, it would've looked something like:

    [​IMG] [​IMG]

    [​IMG]

    This is a duplicate set of those mesh tiles that would've been placed as objects.

    Metallic Madness

    [​IMG]

    This is a trap door. This was actually used in later prototypes, but got scrapped in the final.

    [​IMG]
     
  4. Devon

    Devon DROWN, DROWN, DROWN MYSELF! Member

    Joined:
    Aug 26, 2013
    Messages:
    1,401
    Location:
    your mom
    So, in most of the stage files, there are 2 unused sets of stage layout data. They are layouts for Green Hill Act 2 and 3 from Sonic 1.

    What I think happened is that each stage started off with all 3 acts of Green Hill in the stage layout data, and just replaced act 1 with the proper stage layout. The loading routine always loads the first entry, hence why act 1 is missing. These leftovers date as far back as v0.02!

    The only exception is R11A, which had a few optimizations not applied to the rest of the stage files, which included removing those leftover layouts.
     
    Last edited: Feb 2, 2023
    Pacca, JGamer2151 and DeltaW like this.
  5. SSaturn

    SSaturn Newcomer Trialist

    Joined:
    Feb 3, 2023
    Messages:
    1
    Holy crap!! That is a lot of prototype discoveries, you're the TRUE discovery! [​IMG]
     
  6. JGamer2151

    JGamer2151 Well-Known Member/Lurker Member

    Joined:
    Dec 1, 2020
    Messages:
    100
    So most of the levels (aside from R11A) in Sonic CD started off with a complete set of Green Hill Zone level layouts ranging from acts 1-3, then the first act layout was replaced with the proper one while the others were kept intact…interesting find I’ll say.

    Never would’ve guessed that the Green Hill level layouts for acts 2 and 3 would be leftover in Sonic CD, really points towards the fact that Sonic CD was built off of Sonic 1's code.
     
  7. Devon

    Devon DROWN, DROWN, DROWN MYSELF! Member

    Joined:
    Aug 26, 2013
    Messages:
    1,401
    Location:
    your mom
    ...besides the fact that it uses Sonic 1's engine.

    Also, I completely forgot to crosspost this over here. I found an alternate prototype palette for Palmtree Panic Past in the final game. It fits the v0.02 graphics like so:
    [​IMG]

    [​IMG]

    Palette cycling is the same as in v0.02.

    Also, in between v0.02 and 510, before the background was changed to the final one, the palette was slightly altered to make the sky a little less saturated. This palette data can be found leftover in the final game.

    (Left = v0.02, Right = Alteration before 510)
    [​IMG] [​IMG]
     
    Last edited: Feb 4, 2023
    Clownacy, JGamer2151 and Nik Pi like this.
  8. Nik Pi

    Nik Pi Well-Known Member Member

    Joined:
    Feb 14, 2022
    Messages:
    109
    Location:
    Kazakhstan
    I guess, I can post here something.

    I have research of wall recoil program in Sonic 2 beta and try to port it in the final game.
    You know, that it has main code, but also it has some links.

    First that I've found was the Sonic_HurtStop:
    It has a check of flag, that recoil code sets:

    Code:
    Sonic_HurtStop:                ; CODE XREF: ROM:loc_1077Ep
            move.w    ($FFFFEECE).w,d0
            addi.w    #$E0,d0    ; 'а'
            cmp.w    $C(a0),d0
            bcs.w    JmpTo_KillSonic
            bsr.w    Sonic_DoLevelCollision
            btst    #1,$22(a0)
            bne.s    locret_107E6
            moveq    #0,d0
            move.w    d0,$12(a0)
            move.w    d0,$10(a0)
            move.w    d0,$14(a0)
            tst.b    $25(a0); test wall recoil flag
            beq.s    loc_107D6; if not- go away!
            move.b    #$FF,$25(a0); delete(?) recoil flag
            move.b    #$B,$1C(a0); play second recoil animation
            rts
    But between this and Obj01_Dead you can see the code, that was removed since Simon Wai prototype!
    Code:
    loc_107E8:     
            cmpi.b    #$B,$1C(a0); test for recoil 2 anim
            bne.s    loc_107FA; if no- go there
            move.b    ($FFFFF605).w,d0; idk lol
            andi.b    #$7F,d0    ; .. something :p
            beq.s    loc_10804; go to unused function
    
    loc_107FA:
            subq.b    #2,routine(a0)
            move.b    #0,$25(a0); zeroize wall recoil flag(?)
    
    loc_10804:
            bsr.w    Sonic_RecordPos
            bsr.w    Sonic_Animate
            bsr.w    LoadSonicDynPLC
            jmp    DisplaySprite
    It uses to not flickering sonic, unlike it flickering when it get a hurt.

    Ok, I lied. loc_10804 still exists in da final game as unused function:

    Code:
    Sonic_HurtInstantRecover:
        subq.b    #2,routine(a0)    ; => Obj01_Control
        move.b    #0,routine_secondary(a0)
        bsr.w    Sonic_RecordPos
        bsr.w    Sonic_Animate
        bsr.w    LoadSonicDynPLC
        jmp    (DisplaySprite).l
    Link to this code you can find in Obj01_Hurt:

    Code:
    Obj01_Hurt:                ; DATA XREF: ROM:0000FA1Ao
            tst.b    $25(a0); test recoil flag
            bmi.w    loc_107E8; go there
    Well, I hasn't found anything for Tails, so wall recoil can be presented here as function that will be removed soon.


    I explained you how this shit have been worked in NA proto. I... idk why you need it but anyway :D



    Btw, if you'll try to port it all in the fg disasm- you'll get all working well, but animation is too fast.
     
    Last edited: Feb 4, 2023
    JGamer2151 likes this.
  9. DashTurbo780

    DashTurbo780 Newcomer Trialist

    Joined:
    Dec 31, 2015
    Messages:
    21
    Location:
    Pittsburgh, PA
    It's pretty crazy how much was unused in Sonic 2 and CD, definitely happy Christian added Hidden Palace back.
     
  10. JGamer2151

    JGamer2151 Well-Known Member/Lurker Member

    Joined:
    Dec 1, 2020
    Messages:
    100
    Fun fact, I’ve just recently discovered this unused feature months ago in one of my Sonic 2 hacks when I was skimming through the source code of the disassembly, and I indeed ported it over to the final game in that same hack as well. Now to get that function working for Tails…*

    *It should be doable.
     
  11. Nik Pi

    Nik Pi Well-Known Member Member

    Joined:
    Feb 14, 2022
    Messages:
    109
    Location:
    Kazakhstan
    Wall recoil for Miles is possible, you just need to make something similar like in my wall recoil guide, then rename some programs, and insert custom Tails sprites.
    Possibly, I'll make an extended guide for booth characters in future ;)
     
    JGamer2151 likes this.
  12. JGamer2151

    JGamer2151 Well-Known Member/Lurker Member

    Joined:
    Dec 1, 2020
    Messages:
    100
    Haha, yeah that should be simple enough. I can just copypaste the code I had for Sonic into Miles/Tails, I just need to change instances of Sonic to Tails in the wall-rebound code, and so on. Again, should be simple enough for me to do.
     
  13. Nik Pi

    Nik Pi Well-Known Member Member

    Joined:
    Feb 14, 2022
    Messages:
    109
    Location:
    Kazakhstan
    Hey, can anybody here explain me one think?
    When I tried to recreate clouds from EHZ magazine mockup-
    GD_Sonic2_EHZ_Mockup_3.png
    I meet few weird thing.
    First: tiles can't be placed on the top of sky chunk. Idk why.
    Second: if you'll place a clouds that has a 2 tiles in height, you'll see, that first tile is moves with one speed, but another MOVES WITH ANOTHER SPEED!
    And, 6 month later, when I remember about this feature- I go to recreate it. Sad, but, seems, like first source of S2 archives, in which clouds were drawn- was lost. I tried to recreate it in N.A., S.W., and final. But this time- everything was... fine?!? It's really strange, that I can't even give you proof for it.....

    But I belive it's true! Clouds were programmed in game! IT WAS REAL! REEEEEAAAL!!!
    [​IMG]
     
    Dark Shamil Khan likes this.
  14. DashTurbo780

    DashTurbo780 Newcomer Trialist

    Joined:
    Dec 31, 2015
    Messages:
    21
    Location:
    Pittsburgh, PA
    According to Naoto Ohshima, the name for R2 was originally "Dubious Depths", and was supposed to be a Marble Zone style stage.
    It got cut possibly due to it not meeting Sonic's speed (which might just be him referring to time travel mechanics).

    Masato Nishimura also states that a name for the zone during development was also called "Ridicule Root".

    Holy fucking shit it's actually been revealed after 30 years.
     
  15. Devon

    Devon DROWN, DROWN, DROWN MYSELF! Member

    Joined:
    Aug 26, 2013
    Messages:
    1,401
    Location:
    your mom
    A more detailed look on the unused swinging platform object in Sonic CD v0.02 (object 0x29):



    While not placed in the stage, its graphics are loaded in act 2 around the area in which a swing is placed in the final.

    The number of chain links it spawns is determined by the lower 4 bits of its subtype value (0 = underflow, 1 = 0 links, 2 = 1 link, etc.). The upper 4 bits determine how it moves. There are 8 unique movement types:
    • 0x - Moves in a circular motion clockwise.
    • 1x - Moves in a circular motion counter-clockwise.
    • 2x - Moves 180 degrees downwards.
    • 3x - Moves 180 degrees upwards.
    • 4x - Moves 540 degrees, starts facing west.
    • 5x - Moves 540 degrees, starts facing north.
    • 6x - Moves 90 degrees downwards.
    • 7x - Moves in a circular motion counter-clockwise, and also spawns object 0x13, which is a Mosqui in Salad Plain. It is unknown what the object was intended to be (maybe a switch?).
    It was speculated before that it was meant for Tidal Tempest, but the fact that the graphics do load here say otherwise. In fact, the final swing object in Palmtree Panic also features 8 different movement modes, while the one in Tidal Tempest only has 2 movement modes, both moving in circular motions.




    Really, the idea of remnant objects from other zones in v0.02's R1 doesn't really work out when you realize that Sonic's movement code references the Collision Chaos pinball flippers by object ID, yet the actual object is not found in the v0.02 build. Also, the Collision Chaos remnants in v0.02 are all within Sonic's object code, which makes sense, since it's shared between stages.

    Also, in v0.02, a pre-v0.02 FM sound driver can be found in the stage files, and they contain an even earlier version of the time warp sound.
     
    Last edited: Feb 26, 2023
    DeltaW, Nik Pi, AsuharaMoon and 4 others like this.
  16. Nik Pi

    Nik Pi Well-Known Member Member

    Joined:
    Feb 14, 2022
    Messages:
    109
    Location:
    Kazakhstan
    Hello, people! My friend CaioST (Lucaio Super) found unused and extremely early Volcano Valley music version from S3D Blast beta!
     
    Last edited: May 23, 2023
  17. Mega De Glitcher

    Mega De Glitcher Newcomer Trialist

    Joined:
    May 20, 2023
    Messages:
    6
    Location:
    Secret Jungle Zone
    that video you sent seems to have troubles loading
    edit: it works now!
     
    Last edited: May 24, 2023
  18. JGamer2151

    JGamer2151 Well-Known Member/Lurker Member

    Joined:
    Dec 1, 2020
    Messages:
    100
    It's working on my end

    BTW, cool discovery!
     
    Last edited: Jun 13, 2023
  19. ValleyBell

    ValleyBell Well-Known Member Member

    Joined:
    Dec 23, 2011
    Messages:
    166
    That early Volcano Valley song has actually been part of my archive of SMPS rips since v4 of my SMPS Research Pack.

    It is in the folder Z80/Sonic 3D Blast/Proto_08-14.
    For some reason, that prototype also contains an unreferenced version of The Final Fight. (I don't remember if that is different from the final version.)
     
    Crimson Neo and JGamer2151 like this.
  20. MDTravis

    MDTravis Local Prototyper Member

    Joined:
    Dec 22, 2019
    Messages:
    25
    There are a total of three unreferenced songs in 814 (and 819, since it uses the same sound banks). One of them being the early Volcano Valley draft, and the other two being duplicates of existing songs (final fight and s3 gumball bonus).
    I've been working on a manual decompilation of it here.
     
    Last edited: May 25, 2023
    JGamer2151 and Nik Pi like this.