Homebrew Homebrew game [Release] Sonic Mania (3DS Port)

  • Thread starter Thread starter SaturnSH2x2
  • Start date Start date
  • Views Views 114,000
  • Replies Replies 97
  • Likes Likes 36
Just fixed autobuilds by updating the actions to v4. Unfortunately, it seems GitHub has removed support for downloading autobuild artifacts outside of zip files, so I can't provide a direct QR code to the .cia file; you'll have to download the build manually. To download, visit the Actions page on GitHub, click on the latest commit, then click on the download icon in the corner to download a zip containing the .3dsx and .cia of the latest build.


Given that these are non-release builds, don't expect things to work perfectly, however, if you want to keep up-to-date with recent changes, feel free to check them out.

Hey there, thanks for your contributions, this is really amazing. How difficult is it to enable Mania Plus with this latest updated version (I'm unsure of what the old comment about "compiling it yourself" means when it comes to the DLC content)? I'm not used to doing stuff like this. I only have the extracted data files for my purchased Plus version on Steam.
 
New release (v1.1.0) is officially out. I was gonna hold off on releasing to see if caching sprites would've resulted in even faster load times, however, at this point there's a ton of improvements to the port, and everyone's been waiting long enough anyhow.

Changelog from the GitHub release:
  • Game now runs on engine version v5U, however, without v3/v4 Legacy support. This engine version is referred to as v5C internally.
  • Dev menu now displays extra information regarding memory usage, as well as if the game is running on a N3DS.
  • Audio thread now runs on core 1, with support for asynchronous file loading, alleviating microloads during gameplay and resulting in speedup in certain sections (start of Studiopolis Act 2, parts of Flying Battery Act 1). Additionally, the game no longer suffers from delayed audio.
  • Engine now supports loading assets from an external RomFS file.
  • Loading times improved significantly while using the Data file. Thanks to @davidgf for using setvbuf on Data file accesses. Additionally, all static object files and sprite bin files are cached. Loading times are ~30-40 seconds on initial boot, and ~5-10 seconds on stage load, however, YMMV.
  • Port now incorporates more or less the latest version of both the RSDKv5 decomp and Mania decomp (thanks @Mefiresu and @c08oprkiua).
  • Game now boots on O3DS. However, don't expect full-speed frame rates. A Citro2D/3D backend is still planned to get performance up to speed.
Installation process is the same as before. Copy the Data.rsdk or extracted Data folder to /3ds/SonicMania on your 3DS's SD Card.

The port is still a work-in-progress, so anyone feel free to report and bugs or issues you might run into.

Hey there, thanks for your contributions, this is really amazing. How difficult is it to enable Mania Plus with this latest updated version (I'm unsure of what the old comment about "compiling it yourself" means when it comes to the DLC content)? I'm not used to doing stuff like this. I only have the extracted data files for my purchased Plus version on Steam.
"Compiling it yourself" entails having a working 3DS homebrew development environment set up to build homebrew. There is a buildscript in the repo that you can run that automates the process, however, you'll still need to set up the environment yourself. There is no way to enable it through a setting on the release binaries; Plus support is either enabled or disabled via a flag turned on at compile time.

How difficult setting that up depends on how familiar you are with homebrew development, unfortunately. I can, however, point you to some resources towards setting such an environment up. For more info, see here: https://www.3dbrew.org/wiki/Setting_up_Development_Environment

The reason Plus is disabled in pre-built binaries is because the decomp has no way of actually detecting whether or not Plus was purchased or not; the Data file is the same. While it isn't much, the decomp developers have chosen to disable Plus support on pre-compiled builds of the decomp as a way to hinder people from simply pirating Plus, and I've chosen to do the same on the 3DS port.
 
  • Like
Reactions: PacDan16
I appreciate the reply, thanks for the new update! I had just checked my 3DS and Wii U for some homebrew stuff after ages, and what a coincidence that projects like these are still going! Thanks! It's just so fun to see how hard it can be pushed, and cute to see the thing run on a tiny New 3DS, lol. Graphics look super crisp. I know it runs on phones now due to Netflix but this is way cooler. TBH the reasoning is a little silly, given the game is $6 on sale right now (and the DLC is $1, IMO logically, pirating is entirely unnecessary as the game is both very affordable and very accessible).. I understand your reasoning of course, still wish the DLC was enabled by default to make the installation a little less tedious, but it is what it is, I suppose! (It doesn't stop anyone from pirating the more expensive, main game then -- the logic behind their decision makes no sense to me ultimately.. must have to do with protecting the project against legal action or something).
The Wii U version of this project simply allows you to enable the flag yourself. Update: I guess you add -DRETRO_DISABLE_PLUS=off to the buildscript.. I can't get the buildscript to work with the program and have no idea where it'd output the files on the Windows File Manager yet. Oh, you have to drag and drop the script into the MSYS2 program. I think I've done something like this before, but nowhere near as much as some people here. (Not a programmer) I need more experience with terminal programs *sigh*

Edit: oh, here's the update link for y'all too: https://github.com/SaturnSH2x2/RSDKv5-Decompilation/releases/tag/v1.1.0
 
Last edited by PacDan16,
  • Like
Reactions: OM3GAZX
You're doing absolutely godly work with this port.
I hope you manage to optimize the special stages. Right now they don't really run as much as they "walk".
 
  • Like
Reactions: SaturnSH2x2
You're doing absolutely godly work with this port.
I hope you manage to optimize the special stages. Right now they don't really run as much as they "walk".
Thanks. That is definitely planned. Current plan for now is to implement a custom hardware renderer to both increase performance in Special Stages as well as on O3DS, however, depending on how much work it would take to implement, I might also look into offloading all draw calls to a core 2 thread to see how that would speed up performance on N3DS systems in particular, and put that into an intermediary release. That is assuming it won’t take as much work as just writing the hardware renderer, though.
 
  • Like
Reactions: OM3GAZX
Ok, so I found a bug, in the Sonic 3 orb bonus stages, when converting a blue orbs group into rings, the rings are not visible.
And also, the game freezes the whole console when loading Studiopolis zone from Chemical plant or special/bonus stages, I have to restart my 3ds and load it form the save file each time
 
Ok, so I found a bug, in the Sonic 3 orb bonus stages, when converting a blue orbs group into rings, the rings are not visible.
And also, the game freezes the whole console when loading Studiopolis zone from Chemical plant or special/bonus stages, I have to restart my 3ds and load it form the save file each time
I've also run into the issue with Blue Spheres; will try to address this in a later release. The bit regarding Studiopolis is unusual, though; by loading Studiopolis from Chemical Plant, do you mean through the regular stage transition, or via the dev menu?
 
1749063022223.png

I tried using the autobuild script and I got this error. Does anyone know whats going on?

I'm trying to build the game so I have the Plus DLC enabled.
 
I've also run into the issue with Blue Spheres; will try to address this in a later release. The bit regarding Studiopolis is unusual, though; by loading Studiopolis from Chemical Plant, do you mean through the regular stage transition, or via the dev menu?
Sory for the late reply, i meant through the regular stage transition
 
New release (v1.1.0) is officially out. I was gonna hold off on releasing to see if caching sprites would've resulted in even faster load times, however, at this point there's a ton of improvements to the port, and everyone's been waiting long enough anyhow.

Changelog from the GitHub release:
  • Game now runs on engine version v5U, however, without v3/v4 Legacy support. This engine version is referred to as v5C internally.
  • Dev menu now displays extra information regarding memory usage, as well as if the game is running on a N3DS.
  • Audio thread now runs on core 1, with support for asynchronous file loading, alleviating microloads during gameplay and resulting in speedup in certain sections (start of Studiopolis Act 2, parts of Flying Battery Act 1). Additionally, the game no longer suffers from delayed audio.
  • Engine now supports loading assets from an external RomFS file.
  • Loading times improved significantly while using the Data file. Thanks to @davidgf for using setvbuf on Data file accesses. Additionally, all static object files and sprite bin files are cached. Loading times are ~30-40 seconds on initial boot, and ~5-10 seconds on stage load, however, YMMV.
  • Port now incorporates more or less the latest version of both the RSDKv5 decomp and Mania decomp (thanks @Mefiresu and @c08oprkiua).
  • Game now boots on O3DS. However, don't expect full-speed frame rates. A Citro2D/3D backend is still planned to get performance up to speed.
Installation process is the same as before. Copy the Data.rsdk or extracted Data folder to /3ds/SonicMania on your 3DS's SD Card.

The port is still a work-in-progress, so anyone feel free to report and bugs or issues you might run into.


"Compiling it yourself" entails having a working 3DS homebrew development environment set up to build homebrew. There is a buildscript in the repo that you can run that automates the process, however, you'll still need to set up the environment yourself. There is no way to enable it through a setting on the release binaries; Plus support is either enabled or disabled via a flag turned on at compile time.

How difficult setting that up depends on how familiar you are with homebrew development, unfortunately. I can, however, point you to some resources towards setting such an environment up. For more info, see here: https://www.3dbrew.org/wiki/Setting_up_Development_Environment

The reason Plus is disabled in pre-built binaries is because the decomp has no way of actually detecting whether or not Plus was purchased or not; the Data file is the same. While it isn't much, the decomp developers have chosen to disable Plus support on pre-compiled builds of the decomp as a way to hinder people from simply pirating Plus, and I've chosen to do the same on the 3DS port.
Post automatically merged:

New release (v1.1.0) is officially out. I was gonna hold off on releasing to see if caching sprites would've resulted in even faster load times, however, at this point there's a ton of improvements to the port, and everyone's been waiting long enough anyhow.

Changelog from the GitHub release:
  • Game now runs on engine version v5U, however, without v3/v4 Legacy support. This engine version is referred to as v5C internally.
  • Dev menu now displays extra information regarding memory usage, as well as if the game is running on a N3DS.
  • Audio thread now runs on core 1, with support for asynchronous file loading, alleviating microloads during gameplay and resulting in speedup in certain sections (start of Studiopolis Act 2, parts of Flying Battery Act 1). Additionally, the game no longer suffers from delayed audio.
  • Engine now supports loading assets from an external RomFS file.
  • Loading times improved significantly while using the Data file. Thanks to @davidgf for using setvbuf on Data file accesses. Additionally, all static object files and sprite bin files are cached. Loading times are ~30-40 seconds on initial boot, and ~5-10 seconds on stage load, however, YMMV.
  • Port now incorporates more or less the latest version of both the RSDKv5 decomp and Mania decomp (thanks @Mefiresu and @c08oprkiua).
  • Game now boots on O3DS. However, don't expect full-speed frame rates. A Citro2D/3D backend is still planned to get performance up to speed.
Installation process is the same as before. Copy the Data.rsdk or extracted Data folder to /3ds/SonicMania on your 3DS's SD Card.

The port is still a work-in-progress, so anyone feel free to report and bugs or issues you might run into.


"Compiling it yourself" entails having a working 3DS homebrew development environment set up to build homebrew. There is a buildscript in the repo that you can run that automates the process, however, you'll still need to set up the environment yourself. There is no way to enable it through a setting on the release binaries; Plus support is either enabled or disabled via a flag turned on at compile time.

How difficult setting that up depends on how familiar you are with homebrew development, unfortunately. I can, however, point you to some resources towards setting such an environment up. For more info, see here: https://www.3dbrew.org/wiki/Setting_up_Development_Environment

The reason Plus is disabled in pre-built binaries is because the decomp has no way of actually detecting whether or not Plus was purchased or not; the Data file is the same. While it isn't much, the decomp developers have chosen to disable Plus support on pre-compiled builds of the decomp as a way to hinder people from simply pirating Plus, and I've chosen to do the same on the 3DS port.
I tried both the CIA and 3dsx DL from universal updater (v 1.1.0). Put my Data.rdsk from my steam copy into the /3ds/SonicMania folder. However whether I boot via homebrew launcher or the installed cia file I have a black screen, after about a minute I hear the "SEGA" logo sound and the title screen music but nothing else (still with a black screen). Any suggestions? This is on a new 3ds (non xl).

Looking forward to this. Thank you for your work.
 
Last edited by segashack,
I'm running the latest version on a New 3DS XL. Data file is in the correct folder. The game starts with a black screen, splashes white while the Sega sound plays then goes back to black while the start menu music plays and then nothing else happens.

I've tried searching to see if anyone else has had this issue but no luck
 
  • Like
Reactions: jeffyTheHomebrewer
Wanted to bump this to indicate that I am having the same issue as the two fellows above me! On version 1.1 I load for about a minute before getting a white flash and then the audio, but no visuals (regardless of letting this sit for 10+ mins.). I found the .cia for version 1.0 and it booted no problem. (And wonderful work with this project, this is incredible stuff!)
 
I own Sonic Mania on both Nintendo Switch and Steam. I was considering on using the data.rsdk file from the former, but since I have no plans to softmod my launch model Nintendo Switch, I'll use the datapack file from the PC release.

I do have one question. I'm not skilled at coding or executing commands in a terminal, but... are there ways to compile the port more easily? I know compiling stuff can be difficult. I just want to play with the Encore DLC enabled, that's all I want to ask.
 
Last edited by PlantedWave5190,
View attachment 509191
I tried using the autobuild script and I got this error. Does anyone know whats going on?

I'm trying to build the game so I have the Plus DLC enabled.
I'm having an issue myself with building the port using the buildscript shell executable. Except I got this error:
Screenshot 2026-03-09 150249.png

What am I doing wrong? Did I miss any steps? I sure hope I followed everything correctly...

EDIT: I'm on Windows 10, and got devkitPro, Visual Studio, CMake, and other related dependencies installed. Maybe I need to reinstall everything from a clean state? Or maybe I need a computer with Linux? Compiling stuff isn't easy, ya know!

EDIT 2: I deleted the error codes and inserted a screenshot of the error. Much more convenient, right? If anyone can help me out of this situation, I'd be much appreciated! I just want to play the latest version of the 3DS port with the Plus DLC enabled.
 
Last edited by PlantedWave5190,
I was able to build my own port properly with the Plus DLC enabled thanks to the helpful and generous people in the Retro Engine Modding Server on Discord. I'm able to test every zone and act except for Stardust Speedway Act 2, which crashed my 3DS (at least on my 3DSX build).

Have you built your ports? If so, how far did you reach starting from Green Hill Act 1? I got to the end of Press Garden Act 1 after defeating the boss where the game froze, at least the first time. It didn't freeze the second time I defeated the boss.
 
Last edited by PlantedWave5190,

Site & Scene News

Popular threads in this forum