SonicCD++

Discussion in 'Showroom Archive' started by snkenjoi, Jun 25, 2009.

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

    snkenjoi Well-Known Member Member

    Joined:
    Sep 6, 2008
    Messages:
    59
    (repost from retro, Mad reminded me)

    SonicCD++





    Collaborative Sonic CD hack by qiuu & snkenjoi




    SonicCD++ is a hack of Sonic CD inserting, as the title implies, the Sonic 2 style spindash and the homing attack into Sonic CD. This causes the gameplay to be significantly more speedy, while Sonic CD is known to be one of the more slow-paced Sonic games.


    Features

    • Sonic 2 style spindash (pressing down to duck, then A/B/C to charge)
    • 'Megamix style' homing attack (pressing A/B/C while in a ball)
    • Air Roll (when in the air without being in a ball, press A/B/C/Down to curl into a ball)
    • Air Speedcap removed


    Development history


    Everything started with snkenjoi asking qiuu whether he had attempted making a Sonic CD hack yet (which he had of course not), upon which qiuu brought up MadEchidna's offer from a year back to pay $100 to the first person to put the Sonic 2 spindash into SonicCD. While qiuu doubted that it was up to date, it got snkenjoi motivated to start attempting to insert the move into the game. So, had it not been for either of these two (snkenjoi and MadEchidna), the project wouldn't have even started in the first place.


    So for some time, qiuu mostly kept passive merely giving advice to snkenjoi every now and then, but seeing the progress, he felt more and more like joining in. So parallel to snkenjoi's work, he started writing a tool that would make finding and inserting new content into the SCD iso a lot easier. Being done with that, qiuu set up an svn repository marking the starting point of our work together. With the spindash already halfway in progress, qiuu implemented the homing attack which turned out to be significantly less difficult than the spindash. From here, it was simply a case of further developing the code in order to insert the additional features into the game - and notably, repeatedly trying to find free space to put them in (thanks to Tweaker for mentioning the unused Sonic sprites). We'd also like to thank MKAmeX for his contribution of spindash sprites for the small sonic seen in MMZ2.


    Despite only taking around a week's time to accomplish, most of the development time was spent fixing bugs that had appeared. The final touch, again upon Tweaker's suggestion, was adding the air roll, which took barely ~20 minutes in the end.


    In the end, it was a fun challenge.


    Insight into the technical aspects of the hacking process


    Contrary to what one may believe, no working disassembly was made of any of the MMDs within the Sonic CD ISO, though one or two were used as a reference at times.


    In essence, it is hex-hacking without a hex-editor. Code that is to be inserted is written in ASM, and then assembled into bytecode. The location the code or data is inserted into is automatically detected by the program identifying routines by its bytecode. From here, the new code can be inserted into locations of known unused space. If a section of the code refers to routines or data from within the MMD, it has to be patched in addition after having been assembled. For the game to run this code, either existing jumps in game have to be hijacked or code be overwritten to point to the locations of the injected code, with the overwritten data being relocated at the jump destination to ensure correct program flow.


    Source code is available upon request.


    Credits

    • qiuu & snkenjoi: main coding and implementation
    • MKameX: sprites for the spindash of small Sonic
    • MadEchidna: motivation through his $100 code bounty
    • Tweaker: various suggestions and advice


    ~Collaborative text by qiuu & snkenjoi, written in MoonEdit


    [​IMG][​IMG]


    [​IMG][​IMG]


    Download


    SonicCD++ (J) (ISO) MD5: 2fb156393c350e8cc7ad6fb7a129fdfd


    SonicCD++ (U) (ISO) MD5: 222abed4f186c07e56b213bc354d6daf


    SonicCD++ (E) (ISO) MD5: 4e5d674d9447f1361bb881d06e17cfbf

     
  2. Selbi

    Selbi The Euphonic Mess Member

    Joined:
    Jul 20, 2008
    Messages:
    2,429
    Location:
    Northern Germany
    The hack is of course awesome! But I have a question: Is there a reason why there is no Spindash dust?
     
  3. Irixion

    Irixion Well-Known Member Member

    Joined:
    Aug 11, 2007
    Messages:
    670
    Location:
    Ontario, Canada
    Mini sonic spindash looks like a grape. I want grapes now. Look what you did.


    Seriously, SCD is now great.
     
  4. Rydia3667

    Rydia3667 Guest

    I wanna play, but I cant go on the cpu. Im on the wii.
     
    Last edited: Jul 28, 2009
  5. NewSonic

    NewSonic Newcomer Member

    Joined:
    Sep 16, 2008
    Messages:
    19
    This hack is very good!


    I love the new speed.


    Nice work! :)
     
Thread Status:
Not open for further replies.