P3P3DS — Persona 3 Portable on New Nintendo 3DS
P3P3DS is an open-source, MIT-licensed project that brings the North American release of Shin Megami Tensei: Persona 3 Portable (ULUS-10512) to the New Nintendo 3DS, New 3DS XL and New 2DS XL.
The Builder translates the game's PSP executable into C++ ahead of time and compiles it to ARM code on your PC. The port provides the PSP system services the game needs and renders on the 3DS GPU using citro3d.
Latest release: P3P3DS Builder v0.3.2
Release notes and checksums · Windows ZIP · Linux x86-64 tarball
Current status: playable, still early
How to try it
You'll need a New 3DS-family console with the Homebrew Launcher, your own North American ULUS-10512 ISO, and devkitPro with the 3DS development tools on your PC.
The Builder package contains the tools and runtime. It generates the game-derived code locally from your ISO. Please keep the resulting .3dsx for your own use.
Changelog
What's next
Sound through NDSP, better battle performance, and fixes for scene fades and portrait edges. Opening movie support and .cia packaging are also on the roadmap. Old 3DS support would require a different approach to memory use.
Bug reports and contributions
If you hit a crash, a graphics glitch or a slowdown, please say which console you're using and where it happened. A photo of the bottom screen and
Contributions are welcome, especially from people familiar with PSP internals, citro3d, NDSP or PSP movie decoding.
Source code · Issue tracker · All releases



P3P3DS is an open-source, MIT-licensed project that brings the North American release of Shin Megami Tensei: Persona 3 Portable (ULUS-10512) to the New Nintendo 3DS, New 3DS XL and New 2DS XL.
The Builder translates the game's PSP executable into C++ ahead of time and compiles it to ARM code on your PC. The port provides the PSP system services the game needs and renders on the 3DS GPU using citro3d.
Latest release: P3P3DS Builder v0.3.2
Release notes and checksums · Windows ZIP · Linux x86-64 tarball
Current status: playable, still early
- I've played through the opening days and the first battle on my New 2DS XL. Later parts of the game are still untested.
- In earlier New 2DS XL tests, the dorm ran at about 28–30 fps, dialogue was usually at 30 fps, and the first battle ran at about 16–25 fps. These are game frames. The 40–60 fps figure I posted early in the thread came from counting screen refreshes.
- Saving and loading work through a bottom-screen menu. Use the D-Pad to choose a slot, B to confirm and A to go back. The port uses its own save format, so PSP and PPSSPP saves are currently incompatible.
- The ATLUS and CRIWARE startup logos are back in 0.3.2. I checked them on console, and the fix was also verified in Azahar.
- There is no sound on the 3DS yet, and the opening movie is skipped. Some scene transitions still show black frames, and changed dialogue expressions can have a light outline.
- This build supports the New 3DS family. Old 3DS and Old 2DS models run out of memory at startup.
How to try it
You'll need a New 3DS-family console with the Homebrew Launcher, your own North American ULUS-10512 ISO, and devkitPro with the 3DS development tools on your PC.
- Download and extract the Builder for your platform.
- On Windows, run P3P3DS-Builder.exe, select your ISO and the devkitPro folder if needed, then click Build. On Linux, run
./P3P3DS-Builder --iso "/path/to/Persona 3 Portable.iso". Use--devkitpro <dir>if devkitPro is installed somewhere else. - Put the generated
p3p3ds.3dsxin/3ds/on the SD card and your ISO in/p3p3ds/. The Windows Builder can copy them for you. - Start P3P3DS from the Homebrew Launcher.
The Builder package contains the tools and runtime. It generates the game-derived code locally from your ISO. Please keep the resulting .3dsx for your own use.
Changelog
- 0.3.2 — Restored the startup logos, sped up C++ generation on PC, validated save paths, and fixed how failed asynchronous opens and event-flag timeouts report their results. The release workflow now runs host tests before packaging.
- 0.3.1 — Moved periodic report writes off the game thread to fix stalls on slow SD cards. New render targets are cleared so transitions no longer show leftover video memory.
- 0.3.0 — Moved graphics preparation and submission to the second CPU core. The first battle ran at 16–25 fps in New 2DS XL testing.
- 0.2.9 — Cached model vertices and grouped draws more aggressively. Fixed VFPU state for new threads and retries for blocking audio and file calls.
- 0.2.8 — Reduced redundant GPU state changes and combined consecutive draws.
- 0.2.7 — Fixed the inverted models and missing scenery in the first battle.
- 0.2.6 — Moved model transforms, skinning and lighting to the GPU. Added the Linux Builder with help from Dmitri Shimanski.
- 0.2.5 — Got past the first Shadow battle crash.
- 0.2.2 — Added saving and loading, corrected menu timing and capped gameplay at real time.
What's next
Sound through NDSP, better battle performance, and fixes for scene fades and portrait edges. Opening movie support and .cia packaging are also on the roadmap. Old 3DS support would require a different approach to memory use.
Bug reports and contributions
If you hit a crash, a graphics glitch or a slowdown, please say which console you're using and where it happened. A photo of the bottom screen and
sdmc:/p3p3ds/report.txt are especially helpful. Reports from beyond the first battle are welcome.Contributions are welcome, especially from people familiar with PSP internals, citro3d, NDSP or PSP movie decoding.
Source code · Issue tracker · All releases



Last edited by enderlit,














