don't click here

Sonic Classic Collection DS: ROM Differences Research

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

  1. Granville

    Granville

    Member
    157
    1
    18
    US
    Been a long time since I was reminded of this. I was a beta tester for JenesisDS back when it was available as homebrew, prior to Sega contracting Lordus to use it for an official release. Fun emulator, not 100% compatibility but surprisingly high considering the hardware. Most games ran at full speed with sound and relatively minor glitches (enormously better experience than the SNES emulators). Lordus never got around to implementing support for 4MB roms before Sega snatched it up though, so games like 3D Blast or the combined S3&K crashed. He had planned to fix up other issues as well.

    It was interesting because the official release actually had framerate issues that weren't present in the homebrew version. It was one of the few DSi enhanced games that took advantage of the higher clock speeds but was somewhat choppy on old DS. Though the homebrew JenesisDS had several graphical and sound glitches. I seem to recall some of the special stages having issues on JenesisDS, and the tilting lava in Lava Reef Act 2's boss was all messed up. They fixed these issues in SCC, so that greater accuracy might have been what caused performance drops.

    The homebrew JenesisDS also had an option to disable the vertical scaling and just output the raw pixels. This cropped off part of the HUD for the unaltered roms, but was preferable to squishing the pixels together IMO. I'd have preferred this as an option in the official release, and i couldn't imagine it being TOO difficult to hack the roms to shift the HUD a little as well. Since they made some other changes to the roms.

    Yup. And in fact, earlier releases of JenesisDS (I think 0.4) had an alternate version with software rendering. It didn't support sound and required some frameskipping to run at the original speed (think like 15fps or so). Fixed a lot of the graphical glitches in hardware mode.
     
    • Informative Informative x 1
    • List
  2. ICEknight

    ICEknight

    Researcher Researcher
    If I remember correctly, that was because the original emulator did some things internally which improved performance but Nintendo didn't allow for some reason.
     
  3. DeadSkullzJr

    DeadSkullzJr

    Member
    5
    2
    3
    4MB ROM images working in jEnesisDS sounds WAY easier said than done. Sonic Classic Collection obviously had Sonic the Hedgehog 3 & Knuckles as one of the games, which the game itself combined is 4MB. However the Nintendo DS/DS Lite only had 4MB of memory to work with, using ALL of that memory to load a ROM as is would result in the system flat out crashing because it doesn't have any more memory to work with for more tasks. The way they got about working around the issue was by making the game work dynamically, so only what was needed was actually called for on the fly depending on where you are and what you do in the game. That's really the only way to get around the issue, jEnesisDS (homebrew variant) actually handles 3MB ROM images at most, you can't run anything higher because of the memory limitations. Maybe they could have worked around that issue by making everyone use RAM expansion packs, however the issue is forcing people to use something they may not want to use. The RAM expansion packs for the Nintendo DS/DS Lite was only ever used for the DS Browser, supposedly some homebrew for the system uses it too, though I haven't encountered any that do. True they could have made their own RAM expansion packs, but at the end of the day, it likely would have left Sonic Classic Collection in a funkier state (people do lose stuff too, and if you lose the expansion pack, you are screwed unless you buy another one online). The idea of making 4MB ROMs work in jEnesisDS (homebrew variant) sounds like am awesome dream considering many great titles are that size, the practically of it would be slim because now you have to handle every 4MB ROM image in a delicate manner so that specific data is handled dynamically for each of said title (which in reality is a huge load of work). Sonic the Hedgehog 3 & Knuckles was the only 4MB based ROM image in Sonic Classic Collection, so doing it for one game isn't a problem, and I am aware that they planned on adding other games to the collection at some point during development, but obviously that reality never happened.

    Knuckles the Echidna in Sonic the Hedgehog 2 was handled a bit differently. The ROM image for that is bigger than 3MB obviously, which is more than what jEnesisDS is designed to handle. However the ROM image is still small enough to leave room for other tasks via emulation. Some aspects of the game was handled dynamically, however majority of the time the game was essentially trimmed to use the needed data only, and anything leftover involving data not needed was just cut out entirely. However this doesn't mean the game will run if you dump said title in the condition it is in, the emulator and the other aspects of the assets present in Sonic Classic Collection do a lot of work to work around the issues so the game can in fact still work.
     
    Last edited: Aug 9, 2020
  4. Granville

    Granville

    Member
    157
    1
    18
    US
    Support for 4MB+ roms was implemented into other emulators for the DS. The sentence of yours I underlined half explains this. They use a paging system that, as I understand it, allows smaller chunks of rom data to be loaded into memory dynamically as needed instead of the entire rom. Lameboy DS for example supports 4MB GBC roms (Shantae, DKC, Dragon Quest 3, Harry Potter 1 & 2 and a handful of other late gen games). There are also several SNES emulators for DS (the best and most well known being SnemulDS, whose author I've also spoken to) that also support 4MB roms. Lordus also said he was working on a paging system for Jenesis DS before abruptly vanishing from the internet for a few years (having been hired to create SCC).

    I don't wish to undervalue the enormous talent and effort that went into these emulators. Nor speak with any sort of authority on how difficult it is to actually implement a paging system. But nevertheless it WAS successfully implemented in a handful of other emulators. And it didn't require game-specific tweaks and hacks to function correctly.

    I just assumed the performance issues were due to upping the emulator accuracy in order to fix some of the graphical glitches. First i've heard of this explanation.