P3P3DS is an open-source (MIT) project to run Shin Megami Tensei: Persona 3 Portable (ULUS-10512) natively on the New 3DS / New 2DS XL.
It is not a PSP emulator: the game's MIPS executable is statically recompiled ahead of time into C++ and then ARM code, and the PSP system services it needs are reimplemented on top of libctru (HLE). Graphics run on the 3DS GPU (PICA200, citro3d).
Current status (v0.3.0, October 2026): playable, early
How to try it
No copyrighted files are distributed. Download the P3P3DS Builder from the GitHub Releases page (Windows wizard or Linux console version). It turns your own ULUS-10512 ISO into p3p3ds.3dsx on your PC in about 5-15 minutes. You need devkitPro with the 3DS packages installed. Copy p3p3ds.3dsx to /3ds/ and your ISO to /p3p3ds/ on the SD card.
Reports help a lot: a photo plus sdmc:/p3p3ds/report.txt (build, speed and where the time goes).
Roadmap
Audio (NDSP) -> the remaining glitches (start logos, transitions, portraits) -> battles at a steady 30 fps -> opening movie, .cia. Old 3DS: tested, it stops at start for lack of memory (the port needs about 112 MB, the Old 3DS gives 64-96 MB); it would need a different approach, so not soon.
About development: I use Claude Code (an AI coding assistant) heavily for writing code. I decide what gets built, test every build on my New 2DS XL, and nothing is claimed without a measurement or a photo.
Repo: https://github.com/endercodezz/P3P3DS
Releases: https://github.com/endercodezz/P3P3DS/releases
Feedback and contributions are welcome, especially from people who know PSP internals, citro3d / PICA200, NDSP or ATRAC3plus / H.264 decoding.



It is not a PSP emulator: the game's MIPS executable is statically recompiled ahead of time into C++ and then ARM code, and the PSP system services it needs are reimplemented on top of libctru (HLE). Graphics run on the 3DS GPU (PICA200, citro3d).
Current status (v0.3.0, October 2026): playable, early
- Runs on a real New 3DS / New 2DS XL from the title screen through NEW GAME, the first days and the first Dark Hour, including battles. Tested by me on a New 2DS XL through the first days and the first battle; later parts of the game are untested.
- Dorm / field: 28-30 fps, dialogue scenes 30 fps most of the time.
- Battle: 16-25 fps on hardware (0.2.7 ran battles at 5-7.5 fps). The PSP graphics work now runs on the New 3DS's second CPU core, in parallel with the game.
- Saving and loading work, through a save menu on the bottom screen (D-Pad to choose, B to confirm, A to go back). Saves use their own format, not compatible with PSP / PPSSPP saves.
- No sound yet. The opening movie has no decoder yet and is skipped automatically.
- Known glitches: garbage instead of the logos right after start (0.3.0); a garbage or black frame at some scene transitions; a light outline around changed facial expressions in dialogue portraits.
- Expect crashes in places nobody has reached yet: the game stops with the name of the missing PSP function, which goes straight into the next fix.
How to try it
No copyrighted files are distributed. Download the P3P3DS Builder from the GitHub Releases page (Windows wizard or Linux console version). It turns your own ULUS-10512 ISO into p3p3ds.3dsx on your PC in about 5-15 minutes. You need devkitPro with the 3DS packages installed. Copy p3p3ds.3dsx to /3ds/ and your ISO to /p3p3ds/ on the SD card.
Reports help a lot: a photo plus sdmc:/p3p3ds/report.txt (build, speed and where the time goes).
Roadmap
Audio (NDSP) -> the remaining glitches (start logos, transitions, portraits) -> battles at a steady 30 fps -> opening movie, .cia. Old 3DS: tested, it stops at start for lack of memory (the port needs about 112 MB, the Old 3DS gives 64-96 MB); it would need a different approach, so not soon.
- 0.3.0: playable on hardware. The PSP graphics work runs on the New 3DS's second CPU core in parallel with the game: battles 16-25 fps on a New 2DS XL (0.2.7: 5-7.5), dorm 28-30 fps. Smaller recompiled code (about 3.5 MB more free memory).
- 0.2.9: battles faster again (about 9.9 -> 16 fps in Azahar): model vertices cached between frames, thousands of tiny model draws merged into a few dozen blocks per frame, cheaper speed report; two emulation bugs fixed (VFPU state of new threads, a skipped retry of blocking audio/file calls).
- 0.2.8: faster battles (about 5.8 -> 9.9 fps): the 3DS renderer sends GPU state only when it changes and merges consecutive model draws into one GPU draw.
- 0.2.7: the first battle renders correctly (the "exploded" models and black background were a back-face culling bug).
- 0.2.6: 3D models transformed, skinned and lit on the GPU; Linux Builder (thanks to Dmitri Shimanski); releases built automatically.
- 0.2.5: the first battle no longer crashes.
- 0.2.2: saving and loading; menus at their real 30 fps; speed limiter.
About development: I use Claude Code (an AI coding assistant) heavily for writing code. I decide what gets built, test every build on my New 2DS XL, and nothing is claimed without a measurement or a photo.
Repo: https://github.com/endercodezz/P3P3DS
Releases: https://github.com/endercodezz/P3P3DS/releases
Feedback and contributions are welcome, especially from people who know PSP internals, citro3d / PICA200, NDSP or ATRAC3plus / H.264 decoding.



Last edited by enderlit,













