A port of Sonic Mania Plus to the PSP (tested on a PSP-3000 and a PSP Go with CFW, and on the PPSSPP emulator), built on top of the Sonic Mania decompilation and the RSDKv5 engine decompilation, both by RSDKModding.
This repository does not contain the game. You need your own copy of Sonic Mania Plus: its
Data.rsdkis converted, on your own computer, into theData.pspthe PSP reads. Do not share yourData.psporData.rsdk.
- Sonic Mania: SEGA, Christian "Evening Star" Whitehead, Headcannon and PagodaWest Games.
- Sonic Mania and RSDKv5 decompilations: Rubberduckycooly, chuliRMG (RMGRich) and the other contributors at RSDKModding. The decompilation and the original code are not mine.
- PSP port (what this repository adds): ghurone.
- Libraries included in the engine: stb_vorbis (Sean Barrett), tinyxml2 (Lee Thomason), miniz and iniparser.
The code follows the original licenses: SonicManiaDecomp/LICENSE.md (Sonic Mania) and SonicManiaDecomp/dependencies/RSDKv5/LICENSE.md (RSDKv5). Among other things, they forbid commercial use and distributing the game's files.
SonicManiaDecomp/: the Sonic Mania decompilation with the port's changes. The engine lives inside it, independencies/RSDKv5(rather than as a submodule, since the port changes the engine): it is RSDKv5-Decompilation at commitbd59396.psp/: the Makefile that builds the EBOOT.tools/: the converters that turn yourData.rsdkintoData.psp.
The git history keeps the original code and the port's changes in separate commits.
- Drawing on the GE (the PSP's graphics chip): tile layers, the special stages' rotozoom, sprites and 3D models.
- Music in ATRAC3, decoded by the PSP's Media Engine.
- All the data in a single file (
Data.psp), laid out to load quickly from the Memory Stick. - Sleep and resume (power button) without freezing the game or losing the music.
- Portuguese as a language (a PORTUGUÊS button in the language menu).
- An achievements page in the main menu (the PSP has no system list of them).
The notebook does everything below in Google's cloud, for free, with nothing to install: you upload your Data.rsdk
(or pick it from Google Drive), click Runtime → Run all, and about 20 minutes later you download
SonicManiaPSP.zip. Extract it to the root of your Memory Stick and you are done. If the game does not boot, turn on
the extra memory option of your CFW (see Requirements).
The notebook uses the EBOOT from the latest release, which is built without the Plus content (Encore Mode, Mighty and Ray), as the RSDKv5 license requires of pre-built executables. If you own the Plus DLC, build the EBOOT yourself (below) to have it.
The rest of this page is for doing it on your own computer.
- A PSP with 64MB of RAM and CFW: PSP-2000, PSP-3000, PSP Go or PSP Street (E1000). Tested on a PSP-3000 and a PSP Go. The PSP-1000 (32MB) does not have enough memory.
- The game asks the CFW for the PSP's extra memory by itself. If it does not boot (seen on a PSP Go), turn on the CFW's extra memory option (in ARK, the extra memory / +16MB setting).
- The
Data.rsdkof Sonic Mania Plus (version 1.06, the Steam one), found in the game's install folder. - Python 3 with the
numpy,pillowandlz4packages:pip install numpy pillow lz4 - ffmpeg and ffprobe on the PATH (for the music and the videos).
- atracdenc 0.2.3, the ATRAC3 encoder. On Windows, put
atracdenc.exeintools/atracdenc/(or point to it with--atracdenc). - pspdev (toolchain and pspsdk), to build the EBOOT.
python tools/build_psp_data.py "C:\path\to\the\game\Data.rsdk" Data.psp
The conversion takes a few minutes. To leave out Portuguese or the achievements page, add --no-portuguese or
--no-achievements.
With pspdev on the PATH:
cd psp
make -j8
This produces psp/EBOOT.PBP. The PSP menu's icon, background image and sound are optional: put your own ICON0.PNG
(144x80), PIC1.PNG (480x272) and SND0.AT3 in the psp/ folder before building and they go into the EBOOT.
Create the folder PSP/GAME/SonicMania/ on the Memory Stick and copy EBOOT.PBP and Data.psp into it.
The game also runs on PPSSPP (tested on 1.20.4, Vulkan) with the default settings: the
hardware renderer works, no need to switch to the software renderer. Put the same SonicMania folder in
PPSSPP's memstick/PSP/GAME/ (or open EBOOT.PBP from anywhere) and keep the emulated PSP model at its default,
PSP-2000/3000 (the game needs its 64MB). This needs v1.0.9 or newer: older EBOOTs only drew the special stages'
track and the title screen background with the software renderer.
- Mania Mode, Encore Mode and Time Attack work, and the regular stages run at 60 fps.
- The special stages (UFO) run at 60 fps most of the time. UFO6 drops to ~40-50 fps where the horizon sits high on the screen, and the pinball bonus stage runs at ~55 fps.
- Rarely, the PSP freezes as the intro video starts (the Media Engine stops responding). If it happens, restart the game.
- On PPSSPP the game runs with the hardware renderer at 60 fps, special stages included. It is made for, and measured on, real PSP hardware, though: performance on an emulator depends on your computer.