don't click here

Sonic Classic Collection DS: ROM Differences Research

Discussion in 'Engineering & Reverse Engineering' started by LadyLeia, Jul 27, 2020.

  1. LadyLeia

    LadyLeia

    Member
    7
    5
    3
    [​IMG]

    These builds have new bugs exclusive to the DS release as well as changes like UI being moved to fix in the new screen size.

    The games also run slightly quicker. And yes you can use Rom lock-on tools to lock Sonic and Knuckles onto other Roms and NoWay exists as well as getting Knuckles in Sonic1 and Sonic2 but the roms they used for this wasn't found so running it in lock-on will create a few changes but all combinations function.

    known changes (there are likey a lot more)
    2 player removed
    lots of exclusive bugs in the game (to document)
    The game runs just a bit quicker (to compensate for slow emulation)
    UI placement changed on all UI elements in the game:
    [​IMG]
    [​IMG]

    Todo:
    document all the bugs and oddity in these roms. (there are a good amount of them)
     
    Last edited: Jul 28, 2020
  2. The Joebro64

    The Joebro64

    SAY HELLO TO MY CHOCOLATE BLEND Member
    3,221
    2,886
    93
    Man, this brings me back. Sonic Classic Collection was the first place I experienced the classics.
     
  3. Mastered Realm

    Mastered Realm

    Member
    3,854
    572
    93
    -
    Prototype? Was a prototype for Sonic Classic Collection ever found? We've had the original game ROMs dumped since 2010.
     
    • Informative Informative x 1
    • List
  4. LadyLeia

    LadyLeia

    Member
    7
    5
    3
    This is the first time hearing that those versions was dumped, eather way those builds haven't fully been documented eather.
     
    Last edited: Jul 27, 2020
  5. Mastered Realm

    Mastered Realm

    Member
    3,854
    572
    93
    -
    KazoWar made some videos with the ripped ROMs running on JenesisDS in 2010 and had them released, I couldn't find links now, though. I guess it's because people didn't really care much about them back then.

     
    Last edited: Jul 27, 2020
  6. LadyLeia

    LadyLeia

    Member
    7
    5
    3
    These roms have lots and lots of changes from UI bugs and much more that we haven't yet documented. but these roms are from a very much pre-final build of the game and both those ones dumped 10 years back and these havent been documented at all, anyways these dumps are not those dumps so its best to get back on topic.
     
  7. Mastered Realm

    Mastered Realm

    Member
    3,854
    572
    93
    -
    That's interesting. Is that NDS ROM available? I haven't heard of a prototype of Sonic Classic Collection before.
     
    Last edited: Jul 27, 2020
  8. LadyLeia

    LadyLeia

    Member
    7
    5
    3
    Sigh~

    Everyone is saying there the same as the final and have no value. a few say its the same as the MegaDrive versions and even a few say there fakes. almost tempted to remove my release, only been out for a bit and most people are asking info on how i got them when I don't really know was just sent the broken ones and fixed them to run and release them.
     
  9. Black Squirrel

    Black Squirrel

    no reverse gear Wiki Sysop
    9,065
    2,897
    93
    Northumberland, UK
    steamboat wiki
    I had always assumed the Nintendo DS compilation was just emulating the original ROMs, albeit scaled down to look like arse to fit the DS' screen resolution. The compilation came out when emulated versions of Sonic 1/2/3 were everywhere - it's easy to see why it would be ignored.

    But if UI elements were played with as these versions seem to suggest, that is indeed something worth documenting.


    But then again so are the versions in Sonic Jam, and they've been waiting for documentation since 1997.
     
  10. LadyLeia

    LadyLeia

    Member
    7
    5
    3
    `But then again so are the versions in Sonic Jam, and they've been waiting for documentation since 1997.`
    Sonic Jam doesnt use emulation.... they used the source and completely rebuilt the game.

    This uses emulation and a modified rom with lots of changes that create bugs and alters graphics, I'm not that much of a sonic fan so that's why I'm posting it publicly here.
     
  11. Kilo

    Kilo

    Deathly afraid of the YM2612 Tech Member
    928
    944
    93
    Canada
    Sonic 1 Source Code Recreation + Source Code Wiki Page
    So here are my notes since I kind of helped out with this.
    These are not prototypes in any sense. Neither to Sonic Classic Collection, nor the Mega Drive games. These ROMs are modified versions of the last Mega Drive releases, found in the release ROM of Sonic Classic Collection that you can buy off a shelf. Nothing here is a prototype.
    As I mentioned, they're based on the last Mega Drive revisions, however modified. I like to call these revDS, for that. They have the mentioned changes of removing 2-player and options screens from Sonic 2 and 3 (They might still be in the ROMs, just inaccessible, play with a memory editor!)
    They do in fact introduce new bugs as well. Here's a particular instance in Sonic 3
    After the act 2 boss of Angel Island, if you spam the flame shield's air dash for whatever reason, the transition cutscene could trigger early. And before you get to the bridge, it's already gone, causing Sonic to fall. But the death plane doesn't exist, neither does the level change trigger. Sonic will only die from being below the screen for too long:
    [​IMG]
    [​IMG]
    Sonic 3 on the Mega Drive is smart though and won't trigger the cutscene early just from some silly shield spam.

    What I found really interesting from the revDS games is that they are unchanged in ways that don't necessarily make sense.
    For starters, audio is streamed through files called snd_SonicX_trx.mods and snd_SonicX_sfx.mods, rather than the emulator actually emulating the Mega Drive's sound (To be fair it's a difficult thing to do), but the audio is left in these revisions. Maybe it isn't too surprising though, it'd be a lot of effort to cut out the sound drivers entirely just to optimize the size since audio is streamed. But what I found odd and for valid reasons, is that you can pause in-game. This is weird because in Classic Collection, you cannot use the start button in-game to pause it, Classic Collection makes you tap an icon on the touch screen which simply freezes the emulator. This means that the emulator actually checks what's going on in-game to prevent you from pausing with the start button, but still letting you use the start button in menus and whatnot.
     
  12. Liliam

    Liliam

    Oldbie
    1,563
    117
    43
    I am very confused.

    First, I downloaded these ROMs and compared them to the ones in this thread -- they're a perfect match, so these would appear to be final and not prototypes as purported.

    Second, except for the invalid opcode shenanigans detailed here, there are very few byte differences between these and the regular Mega Drive ROMs, all of them cosmetic in some way, and suggesting the games were hex edited by the developers of the DS collection. I've gone through and documented all of these changes below, and the fact is none of them should affect the behavior of the games at large in any way, so I don't understand where you're getting these absurd bugs or sped-up gameplay from.

    All ROMs have a recalculated checksum at $18E. Individual game changes follow.

    $0033A: The branch that would jump to a checksum fail trap now leads to the 'OK' code path.
    $1EC6C: Replaced Enigma-compressed title screen plane mappings to move copyright text closer to the center. This is not foolproof, as now there is garbage to the right of the text.

    $00346: The branch that would jump to a checksum fail trap now leads to the 'OK' code path.
    $03B58: Title screen copyright text written to different place on the plane A buffer, so it's moved down and closer to the center.
    $03D6E: EHZ demo sets the 2P mode flag to off rather than on. Tails still runs his own inputs though, goes off-screen, respawns, and desyncs the playback.
    $03DF4: Replaced Nemesis-compressed art for title screen options.
    $0BCF6: Removed spaces around "TAILS" in the pre-title-screen card, to take up less of the screen.
    $13638: This one's neat. Changes all references to the Title_screen_option RAM variable to point at the low byte of Player_option instead. This effectively makes the cursor control the selected character, and the initial cursor position also reflects which character you last chose. It still ANDs away everything but the low bit though, so choosing Tails and returning to the title screen causes Sonic+Tails to be selected.
    $13B70: Changed title screen sprite mappings to go along with new Nemesis art.
    $14C08: Changed title card mappings to move the SONIC THE HEDGEHOG text a bit to the left.

    $04088: Changed X/Y position of title screen copyright sprite.
    $040F8: Okay, this is stupid. This change prevents the title screen option from being decremented when pressing up.
    $04110: And this one prevents it from incrementing when pressing down. But the object still processes the controller inputs, and it still refreshes the selected menu option and attempts to play a sound effect.
    $04132: Except this changes the sound effect to zero, so nothing is heard.
    $042DC: Changed title screen sprite mappings to remove the COMPETITION option.
    $0434E: Smushed up title screen copyright sprite mappings, to take up less of the screen.
    $0762A: Special Stage - draw initial sphere counter higher and further to the right.
    $07640: Special Stage - draw initial ring counter higher and further to the left.
    $07944: Special Stage - draw sphere counter higher and further to the right.
    $0795E: Special Stage - draw ring counter higher and further to the left.
    $07DAA: Special Stage - changed sprite mappings to move HUD icons next to new counter positions.
    $2CD7A: Changed title card sprite mappings to move the level name a bit to the left. Note that this change doesn't apply to Sonic & Knuckles, so enjoy your playthrough of Mushroom Hil

    $05F64: Changed title screen sprite mappings to move TM symbol from the side of the logo to above it.
    $05F6E: Smushed up title screen copyright sprite mappings, to take up less of the screen.
    $0839C: Special Stage - draw initial sphere counter higher and further to the right.
    $083B2: Special Stage - draw initial ring counter higher and further to the left.
    $08882: Special Stage - draw sphere counter higher and further to the right.
    $0889C: Special Stage - draw ring counter higher and further to the left.
    $08E32: Special Stage - changed sprite mappings to move HUD icons next to new counter positions.

    EDIT: I assume the DS collection also patches the lock-on titles separately, but I haven't looked at the lock-on patches provided in the aforementioned gbatemp thread yet.

    EDIT THE SECOND: Wait, now that I've parsed that previous post, I'm wondering -- isn't that just the bug where if you go from the act 1 Knuckles cutscene all the way to act 2 one without ever reloading the level (so no deaths, bonus or special stages), the button spawns in the same slot as act 1 Knuckles, "detects itself" and breaks the bridge before it's supposed to?

    Or something like that, anyway. I'd have to look at the code tomorrow. Did you try any of what you described on a vanilla Sonic 3 ROM?
     
    Last edited: Jul 28, 2020
  13. Overlord

    Overlord

    Now playable in Smash Bros Ultimate Moderator
    19,443
    1,066
    93
    Long-term happiness
    OK, given these are final ROMs but that researching of them is worth keeping the topic alive for, I've renamed the thread and moved it to E&RE.
     
  14. Kilo

    Kilo

    Deathly afraid of the YM2612 Tech Member
    928
    944
    93
    Canada
    Sonic 1 Source Code Recreation + Source Code Wiki Page
    I'm personally confused as to why the devs of the collection didn't just make the emulator properly fit the screen, such a fuss to reposition all these things.
     
  15. DeadSkullzJr

    DeadSkullzJr

    Member
    5
    2
    3
    I'm surprised this is new information for you guys considering I dumped these back in May, here's a link to my topic about it (If I am not allowed to post links to other forum threads outside Sonic Retro, I can remove it):
    https://gbatemp.net/threads/sonic-classic-collection-dumps-and-opcode-fixes.565585/

    I do not know who told anyone these were prototypes, but that's clearly not right. All of these versions are all retail builds that the public got via official means like the game cartridges. There isn't anything too special behind them, as for the bugs, these bugs aren't from the ROMs themselves, they are from the emulator and other audio based assets in Sonic Classic Collection that produce these bugs that generally aren't present in these titles standalone. Running these titles on official hardware or on an emulator will result in the same performance and results as the original dumps of the games. The only notable changes are the slight graphical changes (was done to account for the size of the Nintendo DS display), and the opcode changes (the reasons for this isn't necessarily clear, however I would like to believe it was just a way for the developers to prevent people from running around with these games so easily).

    Checksum validations for Sonic the Hedgehog and Sonic the Hedgehog 2 were edited to not work when launching the titles, even though the checksums did in fact change somewhere during their edits, they are clearly still incorrect for a few reasons (mainly the opcode changes). Sonic the Hedgehog 3 and Sonic & Knuckles however didn't need any tweaking as the checksum validation functionality for both was essentially scrapped because of how slow games would boot because of it.

    Multiplayer wise, they weren't removed, only merely phased out. Sonic the Hedgehog 2 just had some option tweaking done so it worked the way it did in the game. Sonic the Hedgehog 3 only had edits to disable the ability to scroll to the next option let alone see it. In doing so though it rendered the Sound Test option to be unable to be selected, however it's still fully functional. Due to the way the emulator is however, multiplayer game modes are heavily bugged, however when dumping the games and using them on a proper emulator and or on real hardware, they function just as they were intended.

    The lock-on variants of the respective titles are handled dynamically. Considering the Nintendo DS only had 4MB of RAM to work with, running a full 4MB SEGA Genesis ROM isn't going to work, so the developers designed it so depending on what happens in the game or where you are in the game, data is dynamically called for on the fly, which allows you to obviously play the game as you normally would.

    NOTE:
    The bugs presented via the screenshots provided above from the earlier Sonic the Hedgehog 3 comment, this only happens when you dump the game too early without actually allowing the opcodes to properly update. Some of the data for Sonic the Hedgehog 3 was made dynamic in Sonic Classic Collection, so you can't just dump the game and expect it to work correctly as is.


    Screenshots:

    Sonic the Hedgehog 2:
    Left image is the original options, right image is the fixed options.
    [​IMG] [​IMG]
    Left image is the original options, right image is the fixed options.
    [​IMG] [​IMG]

    Sonic the Hedgehog 3:
    [​IMG] [​IMG]
    [​IMG] [​IMG]

    Sonic the Hedgehog 3 & Knuckles:
    [​IMG]
    [​IMG]

    MAJOR EDIT:
    Turns out @LadyLeia fibbed a tad bit (maybe they were given the stuff still, but someone isn't sourcing where these came from either way) and actually took what I actually posted in that GBAtemp thread, patched the ROMS respectively (checked against verified hash data), and reuploaded it. How I know this is because the Sonic the Hedgehog 3 data is dynamic in Sonic Classic Collection as I stated, and the chances of others figuring that out right away and getting the exact same dump isn't plausible (not even KazoWAR's dump worked exactly like mine, so much so that it wouldn't run on jEnesisDS based on his video, mine however can based on the video footage I made and slapped into the same thread).
     
    Last edited: Jul 28, 2020
    • Informative Informative x 3
    • Like Like x 2
    • List
  16. LadyLeia

    LadyLeia

    Member
    7
    5
    3
    Turns out the person who sent me the raw files might have gotten it off that GBAtemp thread all i did was fix the Oppcodes. feeling pretty ashamed that i didn't ask more questions from when i got the original thing, i only turned around to do it when Iso Kilo asked me to see if i can get into them using those dumps due to me struggling to get them from the original DS files and took me only like a few hours to fix the mistake. i fully expected those roms to be final (or near enough) so i just went with that. I'm truly sorry if this came off as me trying to deserve you all, it was not my intent.

    i blocked those who sent those files to me and made me make a fool out of myself publicly like this.

    So I'm sorry, should have asked someone to validate before releasing this.
     
  17. Mastered Realm

    Mastered Realm

    Member
    3,854
    572
    93
    -
    Well, at least now we have all the changes documented :)
     
  18. Techokami

    Techokami

    For use only on NTSC Genesis systems Researcher
    1,374
    84
    28
    HoleNet!
    Sonic Worlds Next
    Because the screen resolution of the Nintendo DS is 256x192 pixels, and the Genesis/Mega Drive is 320x224 pixels. Crunching down the resolution would look like arse.
     
  19. Kilo

    Kilo

    Deathly afraid of the YM2612 Tech Member
    928
    944
    93
    Canada
    Sonic 1 Source Code Recreation + Source Code Wiki Page
    They crunch it down anyways, though
    upload_2020-8-1_21-7-38.png
    upload_2020-8-1_21-8-17.png
     
  20. Mastered Realm

    Mastered Realm

    Member
    3,854
    572
    93
    -
    They scale the resolution down vertically, but do so using special hardware tricks like skipping lines etc. Horizontal interpolation would require rendering the image in software, making the games unplayable, as the framerate would tank.
     
    Last edited: Aug 3, 2020