Homebrew Homebrew game [WIP] P3P3DS - Persona 3 Portable Statically Recompiled for New 3DS

enderlit

New Member
Newbie
Joined
Oct 1, 2026
Messages
4
Reaction score
9
Trophies
0
Age
26
XP
20
Country
Israel
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).

Current status (October 2026)
  • Boots on real New 3DS hardware and in Azahar: title screen, NEW GAME, the first days and the first Dark Hour.
  • Graphics run on the PICA200 GPU (citro3d).
  • Saving and loading work, through a save menu on the bottom screen.
  • No audio yet. The opening movie has no decoder yet and is skipped automatically.
  • Speed is below full speed in many scenes: about 87% of real time on average on real hardware; heavy 3D scenes (Dark Hour) drop much lower. The game itself runs at 30 FPS like on PSP; reaching a stable 100% is the current priority.
  • 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 (Windows) from the GitHub Releases page; it turns your own ULUS-10512 ISO into p3p3ds.3dsx in about 5-15 minutes. You need devkitPro (3DS Development) installed. Copy p3p3ds.3dsx to /3ds/ and your ISO to /p3p3ds/ on the SD card.

Roadmap: stable full speed -> audio (NDSP) -> lighting, movie, .cia. Old 3DS support is planned, but not soon: today the port needs about 112 MB of memory and the New 3DS CPU.

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 in Azahar, and nothing is claimed without a measurement or a screenshot.

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.

_02.10.26_21.18.01.975.png
 

Attachments

  • _02.10.26_21.04.14.315.png
    _02.10.26_21.04.14.315.png
    125.2 KB · Views: 1
  • _02.10.26_21.11.44.591.png
    _02.10.26_21.11.44.591.png
    128 KB · Views: 1
Last edited by enderlit,
I feel like this should have maybe been shared once it got past the point of being ports of the ATLUS and CRIWARE logos lol

Either way, best of luck to you. I'm all for seeing more wacky ports. Might also be an idea to add a disclaimer that you are indeed driving development and not just blindly following Claude (assuming this is the case) if you want people to join in on development.
 
  • Like
Reactions: Exnor
I feel like this should have maybe been shared once it got past the point of being ports of the ATLUS and CRIWARE logos lol

Either way, best of luck to you. I'm all for seeing more wacky ports. Might also be an idea to add a disclaimer that you are indeed driving development and not just blindly following Claude (assuming this is the case) if you want people to join in on development.
small UPD: now you can play the game at 40-60 fps
 

Attachments

  • _02.10.26_00.00.15.176.png
    _02.10.26_00.00.15.176.png
    107.9 KB · Views: 1
  • _01.10.26_23.58.56.831.png
    _01.10.26_23.58.56.831.png
    100.4 KB · Views: 1
I'm not going to complain about this being only on New 3DS since it's clearly pretty early in development right now, but I do hope you'll optimise the game well and consider making it playable on old models too.
 
Update - P3P3DS Builder 0.2.2

  • Saving and loading work. The PSP's save dialog is replaced by a menu on the bottom screen: D-Pad to choose, B to confirm, A to go back.
  • Fixed the crash at the first Shadow (battle transition).
  • Menus now run at their real 30 FPS (an input timing bug made them run at 20).
  • The speed limiter keeps the game from running faster than real time.

A correction: the "30-60 FPS" I posted earlier came from a counter that measured screen refreshes, not game frames. The bottom-screen report now shows both. Real numbers: about 87% of full speed on average on my New 2DS XL; in Azahar the Dark Hour drops to around 7 game FPS. Getting a stable 100% is what I'm working on next, then audio.

Download: https://github.com/endercodezz/P3P3DS/releases (you still need your own ISO and devkitPro).
If it crashes, please post a photo of the bottom screen or the file sdmc:/p3p3ds/report.txt.
Post automatically merged:

P3P3DS Builder 0.2.4 is out

Download: https://github.com/endercodezz/P3P3DS/releases (same as before: run the Builder on your PC with your own ULUS-10512 ISO, then copy p3p3ds.3dsx and the ISO to the SD card).

What changed since 0.2.2

  • Speed: removed a lot of wasted work outside the game code: per-call allocations in debug code, a memory leak (every GPU display list was kept forever), and a full 12 MB GPU-memory cache flush on every frame. The renderer also no longer re-presents a frame that hasn't changed.
  • Crash fix: 0.2.3 could crash at the first Shadow, with an exception screen and then the console shutting down. Fixed in 0.2.4.
  • Bottom-screen report: now shows where the time goes over the last 10 seconds (game code, system calls, graphics, idle). Useful if you want to send a report.
Measured on my New 2DS XL (build before the crash fix):

  • In the field: mostly a steady 30 fps, sometimes down to 20.
  • Average: 88% of real time.
  • First Shadow: drops to about 15 fps. Battles are the next thing to optimize.
  • Saving and loading work.
Not working yet: no sound, no opening movie (it's skipped). Old 3DS / 2DS is still not supported.

Not verified yet: whether battles after the first Shadow work. If you get there, please post your sdmc:/p3p3ds/report.txt and say where it happened. That's the most useful feedback right now.
 
Last edited by enderlit,

Site & Scene News

New Hot Discussed User Submitted