SonicCD++

Discussion in 'Engineering & Reverse Engineering' started by qiuu, Jun 20, 2009.

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

    qiuu

    Tech Member
    144
    9
    18
    Blue Ball & Blocks
    <div align='center'><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->SonicCD++<!--sizec--></span><!--/sizec--></div>

    <div align='center'><!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo-->Collaborative Sonic CD hack by qiuu & snkenjoi<!--sizec--></span><!--/sizec--></div>

    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.

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

    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 <a href="http://forums.sonicretro.org/index.php?showtopic=11507" target="_blank">MadEchidna's offer</a> 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.

    <b>Insight into the technical aspects of the hacking process</b>

    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.
    EDIT 09-06-28: clarification here: <a href="http://forums.sonicretro.org/index.php?s=&showtopic=15737&view=findpost&p=324656" target="_blank">http://forums.sonicretro.org/index.php?s=&...st&p=324656</a>

    <b>Credits</b><ul><li>qiuu & snkenjoi: main coding and implementation</li><li>MKameX: sprites for the spindash of small Sonic</li><li>MadEchidna: motivation through his <a href="http://forums.sonicretro.org/index.php?showtopic=11507" target="_blank">$100 code bounty</a></li><li>Tweaker: various suggestions and advice</li></ul>~Collaborative text by qiuu & snkenjoi, written in MoonEdit

    EDIT 09-06-28:
    In addition, a basic <b>level insertion tool</b> is available now (should work for both the original game and the hack):
    Link: <a href="http://geoo.digibase.ca/Genesis/SCDLevMngr.7z" target="_blank">SCDLevMngr.7z</a>
    Source: <a href="http://geoo.digibase.ca/Genesis/SCDLevMngr_src.tar.gz" target="_blank">SCDLevMngr_src.tar.gz</a>
    EDIT 09-10-04: links updated
     
  2. snkenjoi

    snkenjoi

    Tech Member
    85
    0
    0
    <div align='center'>
    <img src="http://snk.digibase.ca/hacks/SCDPP/01.png" border="0" class="linked-image" /><img src="http://snk.digibase.ca/hacks/SCDPP/02.png" border="0" class="linked-image" />
    <img src="http://snk.digibase.ca/hacks/SCDPP/03.png" border="0" class="linked-image" /><img src="http://snk.digibase.ca/hacks/SCDPP/04.png" border="0" class="linked-image" />

    <!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Download<!--sizec--></span><!--/sizec-->

    <a href="http://snk.digibase.ca/hacks/SCDPP/SCDPP_(J).7z" target="_blank">SonicCD++ (J)</a> (ISO) MD5: 2fb156393c350e8cc7ad6fb7a129fdfd

    <a href="http://snk.digibase.ca/hacks/SCDPP/SCDPP_(U).7z" target="_blank">SonicCD++ (U)</a> (ISO) MD5: 222abed4f186c07e56b213bc354d6daf

    <a href="http://snk.digibase.ca/hacks/SCDPP/SCDPP_(E).7z" target="_blank">SonicCD++ (E)</a> (ISO) MD5: 4e5d674d9447f1361bb881d06e17cfbf
    </div>
     
  3. PARASOL

    PARASOL

    Member
    I'm assuming this is the first Sonic CD hack ever released? :P Correct me if I'm wrong.

    Anyways, I'm glad this replaced the old spindash. It was way too slow so I've always used peel out. Oh, and homing attack will surely be useful throughout the game. :P
     
  4. MarkeyJester

    MarkeyJester

    ♡ ! Resident Jester
    Great job guys, I do prefer the S2 spindash for it's instant release, the added jumpdash and homing attack make SCD more fun and worth playing, this is getting written to CD and added with the other Mega CD games I have =D
     
  5. Mad Echidna

    Mad Echidna

    Gone Oldbie
    5,219
    0
    0
    Very nice work. I think it's great you guys even did mini sonic and everything!
     
  6. True Dude

    True Dude

    Member
    1,332
    15
    18
    This is incredibly awesome. I hated the spindash so much in the old version that I wouldn't even use it anymore. Looks like it's time for me to burn a new CD.
     
  7. Hitaxas

    Hitaxas

    Retro 80's themed Paladins Twich streamer Member
    1,438
    0
    16
    Litchfield,CT
    Becoming a Twitch partner, and getting my life back together
    Source code please? This is all relevant to my interest.

    Awesome work, qiuu & snkenjoi. =D
     
  8. Spanner

    Spanner

    The Tool Member
    3,254
    50
    28
    United Kingdom
    Sonic Hacking Contest
    This is amazing. Good job! :thumbsup:
    I'll put this on the wiki soon.
     
  9. roxahris

    roxahris

    Everyone's a hypocrite. Take my word for it. Member
    1,224
    0
    0
    Doing anything at all
    Wow. Awesome.
    Now port the Sonic CD spindash back into Sonic 2 :argh:

    EDIT: Sadly, I can't really say how awesome I think this is without an overdose of the word awesome; as of such, I'll leave it so.
     
  10. Spanner

    Spanner

    The Tool Member
    3,254
    50
    28
    United Kingdom
    Sonic Hacking Contest
    <!--quoteo(post=321633:date=Jun 20 2009, 06:43 PM:name=roxahris)--><div class='quotetop'>QUOTE (roxahris @ Jun 20 2009, 06:43 PM) <a href="index.php?act=findpost&pid=321633"><img src="public/style_images/retro/snapback.png"></a></div><div class='quotemain'><!--quotec-->Wow. Awesome.
    Now port the Sonic CD spindash back into Sonic 2 :argh:<!--QuoteEnd--></div><!--QuoteEEnd-->
    It's in progress, along with the peelout.
     
  11. Mikel

    Mikel

    Member
    496
    0
    16
    Oklahoma
    MUGEN Stuff
    Wow, Awesome work, I love how Mini-Sonic from MMZ2 can now do the spindash.

    Anyway, the source code could help me into making a perfect Homing Attack, and It could help me on the subject of Sonic CD Sound Effects, because I suck at porting sound effects from MDINIT.mmd

    Other than that, Nice work, I'd love to see some more Sonic CD hacks soon.

    Oh, and PARASOL: There was another Sonic CD hack by Stealth named Sonic CD+ (No, it's not related to this hack of Sonic CD).
     
  12. NoNameAtAll

    NoNameAtAll

    MY HAT'S ON FIRE. HALP! Moderator
    540
    0
    16
    Impressive stuff! Honest.

    I'm gonna look forward to the day when there can be layouts that take advantage of this stuff. But I digress. Awesome, AWESOME stuff.
     
  13. TheBarAdmin

    TheBarAdmin

    Member
    107
    0
    16
    NICE! These features make the game much more fun for me. I don't have to put up with the gay SCD spindash :argh:
    Also, didn't forget MINI-SONIC ^___________________^

    Awesome job! :)
     
  14. Overlord

    Overlord

    ...did we just switch realities? Moderator
    17,637
    82
    28
    Berkshire, England
    Learning Cymraeg
    Holy shit finally, a version of Sonic CD that has a workable spindash. Kudos, guys =P
     
  15. Ollie

    Ollie

    DIGGY DIGGY HOLE Member
    <!--sizeo:7--><span style="font-size:36pt;line-height:100%"><!--/sizeo--><3<!--sizec--></span><!--/sizec-->

    NICE WORK! Now I have a decent reason to replay Sonic CD.
     
  16. Emerald Spirit

    Emerald Spirit

    Squandered Potential Member
    It definitely gives the game a much faster feel. Awesome job!
     
  17. Granville

    Granville

    Member
    148
    0
    16
    US
    <!--quoteo(post=321652:date=Jun 20 2009, 12:35 PM:name=Mikel)--><div class='quotetop'>QUOTE (Mikel @ Jun 20 2009, 12:35 PM) <a href="index.php?act=findpost&pid=321652"><img src="public/style_images/retro/snapback.png"></a></div><div class='quotemain'><!--quotec-->Oh, and PARASOL: There was another Sonic CD hack by Stealth named Sonic CD+ (No, it's not related to this hack of Sonic CD).<!--QuoteEnd--></div><!--QuoteEEnd-->
    I remember that. It ported Sonic CD to the Genesis. It was impressive and had the first stage (present time only) fully ported with no music. All mechanics worked perfectly though. I'd like to have seen that achieved actually with new Genesis music!

    <a href="http://forums.sonicretro.org/index.php?showtopic=11861&st=0" target="_blank">http://forums.sonicretro.org/index.php?sho...=11861&st=0</a>

    Nice job on this hack! Sonic CD is my favorite Sonic game and I'm glad people are interested in it.
     
  18. Tweaker

    Tweaker

    Misfit
    12,389
    1
    0
    Cheers on the successful release, guys! :)

    For the record, I absolutely <I>love</I> this hack! It's made the original Sonic CD infinitely more enjoyable for me in every single way, simply because Sonic's moveset is so much more versatile! I always felt it was more difficult to manipulate Sonic CD than in any other game, mainly due to his shoddy charge sequence for the Spin Dash and Peel-Out in addition to the rather imposing speed cap. It was far, <I>far</I> more of a task to gain speed in a reasonable manner and blaze through the levels. Not anymore, though! :D

    I also find great joy in the fact that this controls exactly like Megamix. Glad to see we made a constructive influence! :)
     
  19. synchronizer

    synchronizer

    Member
    1,921
    1
    18
    When I click on the download link, (and even in firefox), I don't get a download, but instead I get a page filled with this:

    7z¼¯'�/¦ól:(����h�������ó5v�)‘E
    œííU°Xää¿¢7­-¦UŽ`¿}B•®³øIeI‚ZîhS:QÊ 'IÉA£kZV’ gQ{¹œû`Á>†O¦Î ú/æ!1µäPk:SL¹€_^QI&ãU|sîÒaâð7ï‘ ¡ñ³‡í´­~èö�{^
    kë\<‡ìfCB‡ßúîx¬1êoÎåèÑrG®=~µ!}ÞÿŠ~ˆÍ¸¨7©ïn'º+D/ÿÍNܹOÝñ=G#£H‡{bUº­W£ªNZ®ÝŠU~æ
    ’›
    ðؼÚÝnò�¯3zúg´¿ÇÂÚ›·Ž>môä]üaê§E·âëIUWWNÜcë·eÑM {m´^EAG+‰™8p¤Í£-Ž¸ÇÑBÂ3©TR¼õ‡ñò� §›*7Ƥ²÷u¿Ùç¼ÑxE!ïpþ€ú“¦üDº¹huµÀÙD¥}ÿâ*1˜u‘lÄ¡_Ö¬'ÜÓPebœb…#çOî…—€ì…ÈzWg¹úüÏúðØKƒ†}š.ç&\þ#ÖõO‹DTiÿÌG½OœC>nzêz§Šû!ÇE!l XèÂÑc-ª_7<òµÜô…XZ¯ÎÛÅÔN¬½ô‹quR¯›À~LáF¼?ÑñhƺkØÑbM‚‘ØMúÛR]*'€öÒúh£o,Ïpâ“/ +vñÔ «ìè˜4âþ%R>”±XÝï3ÿÿCè¯Ñ¶¨
    ž0…;bô¨f?o·¯öÁ&.(e�š}üÛÌá(ê(ç òsÀD XšÄw!¹Ä=m„6¯/<9íÿ±_E»,>þŸŒÖÿ(÷¸Í0›k ©ñ÷l0<5{þLO‚‹ˆòzª€ÅÞù94š®ÛŽþ¯™¿EM²…9˜ Iëè²’g¼*¥§ç6¥ÅgO¶ÈZå‰pâyùÉ’òƒK³)½j¯=–
    œ³{FÂŒ‡2ü9Ä…6,Z“ÿlXAôç¶'¡ëÕÿõ¢¹`«âN$¤¸²Û/ ÷Žê"JÓ‚E9&‚w[°U[I lKµ…|Yº>bbÎ8?ú"?‡GšGýP~à¾?*ªš6k؝s¤vGz‡òBÍo¡ÐêvR‰µå2µ3I¸iUõ†~[Ãuqº‚Ù¾?
    ?˜•5¿1Ì%|þRfŠ 쵝 œ¡¯QKÀO Ɔ"B“šå±ÐëÞ+{³šàÍÞ,«çyB3%­mTÍ9­„¯9ÕÆcÒ` 7u°£%†æð%?pkN òsµŒ›9Y3þ‘¨WÓEÿ¹äIlë1©ÕÄÃ%q ͷ̝¬.OÞùŸ]’MqàÖ&Œk¯Ù¨@Äò: ¾˜ª3LÛ*§ûÍßü¿†‹ƒç40«°¾~$Úì€Ù (etc.)

    What am I doing wrong? Would someone help me out please?
     
  20. Andlabs

    Andlabs

    「いっきまーす」 Wiki Sysop
    2,175
    0
    0
    Writing my own MD/Genesis sound driver :D
    As said many times already (it's starting to sound like the Megamix thread), this is awesome.

    <!--quoteo(post=321697:date=Jun 20 2009, 04:28 PM:name=synchronizer)--><div class='quotetop'>QUOTE (synchronizer @ Jun 20 2009, 04:28 PM) <a href="index.php?act=findpost&pid=321697"><img src="public/style_images/retro/snapback.png"></a></div><div class='quotemain'><!--quotec-->When I click on the download link, (and even in firefox), I don't get a download, but instead I get a page filled with this:

    <I>...text conversion of 7z binary data...</I>

    What am I doing wrong? Would someone help me out please?<!--QuoteEnd--></div><!--QuoteEEnd-->

    Get a 7z decompresser first. Most archive handling programs work with these kinds of files. If that still doesn't do anything, right click and click Download or Save or whatever it is.
     
Thread Status:
Not open for further replies.