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

enderlit

Member
Newcomer
Joined
Oct 1, 2026
Messages
8
Reaction score
14
Trophies
0
Age
26
XP
27
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). Graphics run on the 3DS GPU (PICA200, citro3d).

Current status (v0.2.7, October 2026)
  • Runs on a real New 3DS / New 2DS XL: title screen, NEW GAME, the first days and the first Dark Hour, including the first battle, which now renders correctly (models, faces, environment).
  • Field / dorm: 21-30 fps, about 90% of full speed.
  • Battle: 7-10 fps on hardware in 0.2.8 (about 18-25% of full speed). Making battles fast is the current priority: 20 fps first, then the game's full 30.
  • 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. No fog in 3D scenes yet. The opening movie has no decoder yet and is skipped automatically.
  • 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.
Correction: an early reply in this thread said "40-60 fps". That number was wrong: the counter measured screen refreshes, not game frames. P3P runs at 30 fps at most; the numbers above are real game frames.

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
Battle speed -> audio (NDSP) -> fog, opening movie, .cia. Old 3DS support is planned, but not soon: today the port needs about 112 MB of memory and the New 3DS CPU.

  • 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.
photo_2026-10-05_21-06-48.jpg
 
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

EDIT: this number was wrong (the counter measured screen refreshes); real numbers are in the first post.
 

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
Last edited by enderlit,
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.
 
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.
Yeah, Old 3DS optimization is planned.
 
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,
P3P3DS Builder 0.2.6 — first battle renders characters, Linux builder

  • The first Shadow battle no longer crashes (since 0.2.5).
  • New: 3D models are now transformed, skinned and lit on the 3DS GPU (vertex shader). In battle, characters now show up with lighting. Still broken: models look distorted, faces are missing, the background is black, and battles run at about 7–11 fps. That's what I'm working on next.
  • Field: about 21–30 fps, saves work, no sound yet.
  • Linux builder (console version) — thanks to Dmitri Shimanski, the project's first outside contributor.
  • Releases are now built automatically on GitHub (Windows zip + Linux tar.gz).
Known issues are listed in the README. Reports from your console (sdmc:/p3p3ds/report.txt plus a photo) are very welcome.
 
P3P3DS 0.2.7 is out.

The "exploded" models and black battle background from 0.2.6 were one bug: for 3D draws the back-face culling kept the wrong side, so models were drawn inside out and the walls and floor facing the camera were culled. Fixed in both renderers (the PC reference renderer had the same problem, which is how I found it: the PC runner now plays through the whole first battle). Confirmed on a New 2DS XL, photos attached.
  • Battle: 5-7.5 fps, 18-25% of real time. GE work on the CPU takes 63-70% of the time (about 1,000 draws per frame); GPU wait 10-20%.
  • Field: 21-30 fps, about 90% speed.
Known issues: battles are slow (next target: 20 fps at full speed), no sound, opening movie skipped, own save format, New 3DS only.

Download: https://github.com/endercodezz/P3P3DS/releases/tag/v0.2.7 (Builder for Windows and Linux; you need your own ULUS-10512 ISO and devkitPro).

Reports (photo + sdmc:/p3p3ds/report.txt) are very welcome.

photo_2026-10-05_21-06-48.jpgphoto_2026-10-05_21-06-49.jpgphoto_2026-10-05_21-06-50.jpg
 
  • Love
Reactions: Mayo1990
P3P3DS 0.2.8: faster battles

0.2.7 fixed how battles look; 0.2.8 is about speed.

The 3DS renderer was doing a lot of CPU work for every single draw: P3P draws its 3D models as thousands of tiny pieces, and for each piece the port re-sent the whole GPU state and rebuilt the shader inputs. Now state is only sent when it changes, and consecutive pieces with the same state are merged into one GPU draw: in the first battle about 2 million game draws became 55 thousand.

Numbers (tested on the first battle, Evoker scene)
  • 0.2.7: 5.8 fps, 19% of real time
  • 0.2.8: 9.9 fps, 33% of real time
  • The rest of the time now goes to the game's own code and to unpacking model vertices, which are the next targets (goal: 20 fps).
Known issues: battles still slow, no sound, opening movie skipped, own save format, New 3DS only.

Download: https://github.com/endercodezz/P3P3DS/releases/tag/v0.2.8 (Builder for Windows and Linux; you need your own ULUS-10512 ISO and devkitPro).

Reports welcome: a photo of the bottom screen in battle, or sdmc:/p3p3ds/report.txt.
 

Site & Scene News

New Hot Discussed User Submitted