A port of the Sonic CD 2011 decompilation to the 3DS.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Saturn 5d62baedb9 don't draw to right screen unless 3D is enabled 2 years ago
.github/workflows attempt to resolve merge conflicts, compiles but crashes 2 years ago
RSDKv3 don't draw to right screen unless 3D is enabled 2 years ago
RSDKv3 ios.xcodeproj refactored the projects to match how we want the decomp to be presented 2 years ago
RSDKv3.vita refactored the projects to match how we want the decomp to be presented 2 years ago
RSDKv3.xcodeproj v3 but mac and better 2 years ago
RSDKv3UWP no more millisecond bug 2 years ago
android I CON!! 2 years ago
dependencies dkglsdkjflskdjflkejslktjwlkrjlwekjrlwkjrw 2 years ago
props free orangutan everywhere you go 2 years ago
resources update banner/icon to match 2011 promo materials, fix cia jingle 2 years ago
.clang-format mostly feature complete, just refinements to go 3 years ago
.gitignore dkglsdkjflskdjflkejslktjwlkrjlwekjrlwkjrw 2 years ago
.gitmodules hopefully this fixes that crash 2 years ago
Android.mk mmmmmmmmmajnia (wrong game!) 2 years ago
LICENSE.md oops 2 years ago
Makefile resolve merge conflict, leave that commented out for now 2 years ago
Makefile.3ds enable mod loader, though apparently prone to memory leaks 2 years ago
README.md add HW/SW build distinction to FAQ 2 years ago
RSDKv3.sln refactored the projects to match how we want the decomp to be presented 2 years ago
RSDKv3SDL1.sln refactored the projects to match how we want the decomp to be presented 2 years ago
RSDKv3UWP.sln refactored the projects to match how we want the decomp to be presented 2 years ago
header.png edit the README to better reflect the port 2 years ago



Even if your platform isn't supported by the official releases, you must buy it for the assets (you dont need to run the official release, you just need the game assets)


  • Complete stereoscopic 3D (HW build only)
  • Video playback support courtesy @Oreo639's 3ds-theoraplayer
  • Built-in mod support, accessible from the Dev Menu
  • There is now a settings.ini file that the game uses to load all settings, similar to Sonic Mania
  • Dev menu can now be accessed from anywhere by pressing the SELECT button if enabled in the config
  • If devMenu is enabled in the config, pressing the R button will activate a palette overlay that shows the game's 8 internal palettes in real time

How to build:

  • Set up a working 3DS Homebrew Environment. You can find more information on this here.
  • Make sure SDL, SDL_mixer, 3ds-dev, 3ds-libvorbisidec, 3ds-libtheora, 3ds-mikmod, and 3ds-libmad are installed.
  • Edit RetroEngine.hpp as necessary depending on what version of the port you want to build. If you want to build the software rendered version, set RETRO_USING_C2D to 0.
  • Run make -f Makefile.3ds. Run make -f Makefile.3ds cia to build a .cia file.


Q: What's the difference between HW and SW builds?

A: SW builds use software rendering, using the same basic rendering backend that the PC/console ports of Sonic CD used. Rendering is more accurate, and all effects like scanline deformation and realtime palettes are supported. However, its rather CPU-intensive, and requires a N3DS to run at full-speed. HW builds use a completely custom Citro2D-based backend, using the 3DS's PICA200 to get graphics on-screen, and thus can run at full-speed on O3DS systems, in addition to supporting features like stereosopic 3D, however, certain features like realtime palettes aren't supported. tl;dr use HW if on O3DS or if you care about 3D, use SW if on N3DS.

Q: Why is the port separated into HW and SW builds?

A: Because that's how the base decomp was set up initially, at the time the port was started. I plan on integrating both backends into a single build eventually, however, this probably won't happen until the HW backend is complete.

Q: Why dont some buttons in the menu work?

A: Buttons like leaderboards & achievements require code to be added to support online functionality & menus (though they are saved anyways), and other buttons like the controls button on PC or privacy button on mobile have no game code and are instead hardcoded through callbacks, and I just didnt feel like going through the effort to decompile all that, since its not really worth it

Q: I found a bug/I have a feature request!

A: Submit an issue in the issues tab and I'll fix/add it (if possible). Keep in mind, however, I won't fix bugs that aren't exclusive to the 3DS port; if the issue also occurs on the base decomp (i.e. on PC), you're better off submitting the issue to the main branch.

Q: Is there a port of the Sonic 1/Sonic 2 decompilation?

A: Yes! You can check out @JeffRuLz's RSDKv4 port here.

Q: Why is video playback so slow?

A: You're going to want to scale down your videos for them to run well on 3DS. You can find pre-scaled versions of the videos here.

Special Thanks

  • Rubberduckycooly: For decompiling CD in the first place, as well as helping me out with a few aspects of the port.
  • JeffRuLz: For implementing frame limiting and helping out with the SW backend, as well as for porting OpenHCL to the 3DS, which helped immensely in developing the Citro2D backend.
  • Oreo639: For helping out with the Makefile, as well as being behind 3ds-theoraplayer, which the port uses to play back videos.


Join the Retro Engine Modding Discord Server for any extra questions you may need to know about the decompilation or modding it. My Discord is saturnsh2x2#3840, and while I'm not the most active on there, ping me if you have a question and I'll see what I can do.