don't click here

Sonic 1 Jap Disassembly

Discussion in 'Engineering & Reverse Engineering' started by Esrael, Jan 31, 2009.

Thread Status:
Not open for further replies.
  1. Esrael

    Esrael

    Neto Tech Member
    304
    257
    63
    Brazil, São Paulo, Guarulhos
    Neto Assembler Editor / Sonic 2 Delta / Neto MD-DOS
    Sonic 1 Jap Disassembly

    Come with Esrael Assembler Editor project file "Sonic1j.epr" (Levels and Special Stages).
    SNASM68K and E.N.A.E internal compiler compatible.

    I make this disassembly to use in Sonic 2 Delta ports, but I am releasing to public, enjoy.
     
  2. Spanner

    Spanner

    The Tool Member
    This certainly is interesting, and it's good that we now have a disassembly of the Rev01 version. Although, some cleanup would be useful such as labeling routines rather than leaving them as Offset_0x*, as well as support for asm68k. Keep it up. I wonder if it would be possible if this, along with your other disassemblies could be added to the SVN server. This would be ideal, since others can do more with them and submit them.
     
  3. Overlord

    Overlord

    Now playable in Smash Bros Ultimate Moderator
    19,239
    972
    93
    Long-term happiness
    Very nice, good work! I see the special effects in this ROM gaining wider use in hacks now =P
     
  4. Hivebrain

    Hivebrain

    Administrator
    3,049
    161
    43
    53.4N, 1.5W
    Github
    Actually, this could be incorporated into the existing S1 disassembly on the svn. I'd put a variable somewhere near the beginning like so:

    Code (ASM):
    1. Revision:   = 1
    Then insert a conditional statement whenever there's a difference. This way, you could choose which revision to build just by changing one variable.
     
  5. Overlord

    Overlord

    Now playable in Smash Bros Ultimate Moderator
    19,239
    972
    93
    Long-term happiness
    Yeah, that's eminently doable.
     
  6. Sik

    Sik

    Sik is pronounced as "seek", not as "sick". Tech Member
    6,718
    1
    0
    being an asshole =P
    Also would be easier than relabeling everything.
     
  7. Tweaker

    Tweaker

    Banned
    12,387
    2
    0
    There's already a tutorial available to port the effects over, so I don't think will have any significant impact in that regard.

    Interesting idea—I definitely think this possibility should be explored.

    Great job, Esrael! Nice to see you're still working on ripping apart as many Sonic games as possible. :eng101:

    So, with that covered, I'm interested—what other differences are present in the Japanese release compared to the US one? I'm aware of the background effects and the fact that the blocks in Marble Zone now bob up and down slowly in lava, but does the code indicate any other specific changes? It'd be nice to have a more precise list of changes from one revision to the next, if only for the sake of posterity. Anyone up to the challenge?
     
  8. c1owd

    c1owd

    Previously 'CarrascoZX0' Member
    183
    0
    16
    Hm, very interesting. I might actually use this!
     
  9. Hivebrain

    Hivebrain

    Administrator
    3,049
    161
    43
    53.4N, 1.5W
    Github
    And done. It's up on the svn now. Here's a complete list of differences between revisions:

    1. "clr.l" used instead of "move.l #0" in ClearScreen.
    2. Garbage removed from CalcSine.
    3. "TM" on Sega screen is hidden if the console is Japanese.
    4. "TM" on title screen isn't loaded if the console is Japanese.
    5. Score is set to 5000 when enter a stage from level select.
    6. Level select stage order is correct.
    7. Level select code is UDDDLR (instead of UDLR) if the console is Japanese.
    8. Score is set to 5000 during a demo.
    9. Moved restart level flag check in Level_MainLoop.
    10. Added background scroll check to LZWaterFeatures.
    11. d2 is cleared in a slightly different way in MoveSonicInDemo.
    12. Added gamemode check in SS_MainLoop.
    13. Tidied EndSTH (obj89).
    14. Layer scrolling changed.
    15. Tile drawing changed.
    16. Stuff added to DLE_MZ1.
    17. Blank frame added to rings mappings.
    18. Added check in monitor contents item to prevent interruption of drowning music.
    19. Lamppost time is cleared after game over (obj39).
    20. Tidied MarbleBrick (obj46).
    21. Tidied FloatingBlock (obj56).
    22. Minor change to DrownCount (obj0A).
    23. Changes to Caterkiller (obj78).
    24. Minor change to Labyrinth boss (obj77).
    25. Minor changes to Final boss (obj85), including 100 point bonus for killing it.
    26. Changes to AddPoints.
    27. Ending sequence debug list changed.
    28. Some unneeded things removed from Pattern Load Cues.
    29. Sega logo graphics and mappings slightly different.
    30. Unused graphics data removed.
    31. MZ & SBZ 256x256 tiles modified.
    32. SS1 & SS2 layouts modified.
    33. SYZ background modified.
    34. Minor change to SolidObject subroutine.
     
  10. Tweaker

    Tweaker

    Banned
    12,387
    2
    0
    Awesome! Thanks for taking the time to document all those changes, Hivebrain. ;)

    So, who wants to be the first to put it on the wiki? =P
     
  11. Spanner

    Spanner

    The Tool Member
    Sonic the Hedgehog (16-bit)
    I'm still working on it, such as providing links to the code on the web SVN, other than that it seems to be fine.
     
  12. Tweaker

    Tweaker

    Banned
    12,387
    2
    0
    I don't think you need to make a false namespace for it; just put it into the main article.
     
  13. Spanner

    Spanner

    The Tool Member
    Okay, I added the contents to the main article. I thought that it would look better if it had its own page, but whatever.
     
  14. Ollie

    Ollie

    DIGGY DIGGY HOLE Member
    I've recently been looking at this since I haven't been doing any assembly properly for a good year or two now, I was just wondering how do you compile everything to make the Rom. ;)
     
  15. FraGag

    FraGag

    Tech Member
    I want to add some corrections to this. It's not the actual score, but the score that will give the player an extra life that is set (and since the displayed score is 10x the score stored in RAM, it means it's "50000"). Also, it's set not only when entering a stage from the level select, but also when simply pressing Start on the title screen: the value is set in PlayLevel, which is called in both situations. What may have confused you is the fact that the location used to store this variable was simply holding a copy of the score in REV00.
     
  16. Hivebrain

    Hivebrain

    Administrator
    3,049
    161
    43
    53.4N, 1.5W
    Github
    So that's what AddPoints was doing with it. I wondered about that.
     
  17. Diablohead

    Diablohead

    Indie dev Oldbie
    1,898
    87
    28
    Near London
    games
    So these are all the changes from our eu/us build to the japanese one, more then I expected from it.

    Is there any reason why the score shown in game is 10x the score which is behind the scenes?
     
  18. SonicAD

    SonicAD

    Oldbie
    10
    0
    1
    I would guess because the last digit in the score doesn't matter, as you can't get a single point, the least you can get is 10 points from the bumpers in Spring Yard. Not storing the extra digit saves some space, while making the score look bigger.
     
Thread Status:
Not open for further replies.