Actions

Difference between revisions of "Sonic CD Plus Plus"

From Sonic Retro

(+9001links)
Line 1: Line 1:
 
{{Hack
 
{{Hack
 
|screen=SCDPP.png
 
|screen=SCDPP.png
|date=June 20, 2009
+
|date=20 June 2009
 
| system=[[Sega Mega CD]]
 
| system=[[Sega Mega CD]]
|originalgame=Sonic CD
+
|originalgame=Sonic the Hedgehog CD
 
| credits=[[qiuu]], [[snkenjoi]]
 
| credits=[[qiuu]], [[snkenjoi]]
 
|visualmods=
 
|visualmods=
Line 11: Line 11:
 
|advenginemods=yes}}
 
|advenginemods=yes}}
  
'''''SonicCD++''''' (or '''''Sonic CD Plus Plus''''') is a hack of ''[[Sonic CD]]'' by [[qiuu]] and [[snkenjoi]] inserting the ''[[Sonic 2]]''-style [[spin dash]] and the [[homing attack]] into ''Sonic CD''. This causes the gameplay to be significantly speedier, while ''Sonic CD'' is known to be one of the more slow-paced Sonic games.
+
'''''SonicCD++''''' (or '''''Sonic CD Plus Plus''''') is a hack of ''[[Sonic the Hedgehog CD]]'' by [[qiuu]] and [[snkenjoi]], adding the ''[[Sonic the Hedgehog 2 (16-bit)]]'' style [[Spin Dash]] and the newer [[Homing Attack]] into the game. This enables the gameplay to be significantly speedier, while ''Sonic CD'' is known to be one of the more slow-paced games in the classic ''[[Sonic the Hedgehog|Sonic]]'' series.
  
==Features==
+
==New features==
* ''Sonic 2''-style spin dash (pressing down to duck, then {{A}}/{{B}}/{{C}} to charge)
+
* ''[[Sonic the Hedgehog 2 (16-bit)|Sonic the Hedgehog 2]]'' style [[Spin dash]] (hold {{Down}} to duck, press {{A}}/{{B}}/{{C}} to charge)
* '''[[Sonic the Hedgehog Megamix|Megamix]]'' style' homing attack (pressing {{A}}/{{B}}/{{C}} while in a ball)
+
* ''[[Sonic the Hedgehog 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 Roll (when in the air without being in a ball, press {{A}}/{{B}}/{{C}}/{{Down}} to curl into a ball)
* Air Speedcap removed
+
* [[SCHG How-to:Remove the Speed Cap|Air speed cap removed]]
  
 +
==Development history==
  
==Development history==
+
Everything started with [[snkenjoi]] asking [[qiuu]] whether he had attempted making a ''[[Sonic the Hedgehog CD]]'' hack yet (which he had of course not), upon which qiuu brought up [[Mad Echidna]]'s {{LinkRetro|topic=11507|title=offer from a year back}} to pay $100 to the first person to put the [[Spin Dash]] from ''[[Sonic the Hedgehog 2 (16-bit)]]'' spin dash into ''Sonic CD''. 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.
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 [[Mad Echidna]]'s {{LinkRetro|topic=11507|title=offer from a year back}} to pay $100 to the first person to put the ''Sonic 2'' spin dash into ''Sonic CD''. 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 ''Sonic CD'' ISO a lot easier. Being done with that, qiuu set up an SVN repository marking the starting point of our work together. With the spin dash already halfway in progress, qiuu implemented the homing attack which turned out to be significantly less difficult than the spin dash. 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.
+
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 ''Sonic CD'' [[wiki:ISO image|ISO image]] a lot easier. Being done with that, qiuu set up an [[wiki:Apache Subversion|SVN]] repository marking the starting point of the two's collaboration. With the Spin Dash already halfway implemented, qiuu implemented the [[Homing Attack]], which turned out to be significantly less difficult to add. 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 fit them in! The authors thank [[Tweaker]] for helping with this by mentioning the [[Game Secrets:Sonic the Hedgehog CD#Unused sprites|unused Sonic sprites]], and [[MKAmeX]] for contributing Spin Dash sprites for the shrunken form Sonic assumes during some of [[Metallic Madness Zone]].
  
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.
+
Despite only taking around a week 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.
 
In the end, it was a fun challenge.
  
 
==Insight into the technical aspects of the hacking process==
 
==Insight into the technical aspects of the hacking process==
 +
Contrary to what one may believe, no working disassembly was made of any of the [[MMD]] files within the ''Sonic CD'' [[wiki:ISO image|ISO image]], though one or two were used as a reference at times. In essence, the technique that was used is [[sega:Hexadecimal|hex]] hacking without a [[sega:Hex editor|Hex editor]]: Code that is to be inserted is written in [[sega:assembly language|assembly language]], and then assembled into bytecode. The location the code or data is inserted into is automatically detected by the program, which identifies routines by their 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 additionally has to be patched after having been assembled. For the game to run this code, either existing jumps in game have to be hijacked, or code must 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.
  
Contrary to what one may believe, no working disassembly was made of any of the [[MMD]]s within the ''Sonic CD'' ISO, though one or two were used as a reference at times.
+
[[wiki:Source code|Source code]] is available upon request.
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==
 
==Credits==
* qiuu & snkenjoi: main coding and implementation
+
* [[qiuu]] & [[snkenjoi]]: main coding and implementation
* MKameX: sprites for the spindash of small Sonic
+
* [[MKAmeX]]: [[sega:sprite]]s for the [[Spin Dash]] of small Sonic
* MadEchidna: motivation through his $100 code bounty
+
* [[Mad Echidna]]: motivation through his {{LinkRetro|topic=11507|title=$100 code bounty for the ''S2'' Spin Dash in ''SCD''}}
* Tweaker: various suggestions and advice
+
* [[Tweaker]]: various suggestions and advice
  
 
==Download==
 
==Download==
Line 59: Line 57:
 
}}
 
}}
  
==External Links==
+
==External links==
{{LinkRetro|topic=15737|title=Sonic CD++ Release Thread}} at [[Sonic Retro]]
+
{{LinkRetro|topic=15737|title=Sonic CD++ release topic}} at [[Sonic Retro]] Message Board
 +
{{LinkRetro|topic=11507|title=Mad Echidnas's topic offering a $100 bounty for ''S2'''s Spin Dash in ''SCD''}}
  
 
[[Category:Hacks]]
 
[[Category:Hacks]]

Revision as of 10:42, 22 June 2010

SCDPP.png
Sonic CD Plus Plus
Last release: 20 June 2009
System: Sega Mega CD
Original game: Sonic the Hedgehog CD
Credits: qiuu, snkenjoi

SonicCD++ (or Sonic CD Plus Plus) is a hack of Sonic the Hedgehog CD by qiuu and snkenjoi, adding the Sonic the Hedgehog 2 (16-bit) style Spin Dash and the newer Homing Attack into the game. This enables the gameplay to be significantly speedier, while Sonic CD is known to be one of the more slow-paced games in the classic Sonic series.

New features

Development history

Everything started with snkenjoi asking qiuu whether he had attempted making a Sonic the Hedgehog CD hack yet (which he had of course not), upon which qiuu brought up Mad Echidna's
Sonic Retro
offer from a year back
to pay $100 to the first person to put the Spin Dash from Sonic the Hedgehog 2 (16-bit) spin dash into Sonic CD. 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 Sonic CD ISO image a lot easier. Being done with that, qiuu set up an SVN repository marking the starting point of the two's collaboration. With the Spin Dash already halfway implemented, qiuu implemented the Homing Attack, which turned out to be significantly less difficult to add. 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 fit them in! The authors thank Tweaker for helping with this by mentioning the unused Sonic sprites, and MKAmeX for contributing Spin Dash sprites for the shrunken form Sonic assumes during some of Metallic Madness Zone.

Despite only taking around a week 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 MMD files within the Sonic CD ISO image, though one or two were used as a reference at times. In essence, the technique that was used is hex hacking without a Hex editor: Code that is to be inserted is written in assembly language, and then assembled into bytecode. The location the code or data is inserted into is automatically detected by the program, which identifies routines by their 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 additionally has to be patched after having been assembled. For the game to run this code, either existing jumps in game have to be hijacked, or code must 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

Download

Download.svg

Download Sonic CD++
Multiple downloads available

US version (18.51 MB) (info)
EU version (17.2 MB) (info)
JP version (17.2 MB) (info)

External links

Sonic Retro
Sonic CD++ release topic
at Sonic Retro Message Board
Sonic Retro
Mad Echidnas's topic offering a $100 bounty for S2's Spin Dash in SCD