enderlit.

enderlit.

I write code for things that look interesting to me. Lately that’s a Persona 3 Portable port for the New 3DS, an offline anime library and a music player.

Some days it’s a web backend, some days it’s C++ and a disassembler. If the problem is interesting, the stack is secondary.

Projects

P3P3DS

C++ / New Nintendo 3DS

Persona 3 Portable running natively on the New Nintendo 3DS. No emulator: the PSP code is statically recompiled into C++ and built for the console’s ARM CPU.

  • 751,674 PSP instructions recompiled into 237 C++ files; an interpreter covers what static analysis misses.
  • On a real New 3DS: title screen, new game and the first days at up to 30 fps, rendered on the PICA200 GPU. Saves work.

AnimeBox

Python / FastAPI / React / TypeScript

A local anime library: search several sources, stream, download episodes and watch them offline.

  • One portable archive for Windows, Linux (including Steam Deck) and macOS. Python and FFmpeg are bundled, nothing to install.
  • Episodes are stored as regular files; the library and watch progress work without internet.

Enderlit Player

Python / PySide6 / Windows

A small desktop music player for people who keep music in folders.

  • Albums are grouped by folder, not by tags. Cover art from the file or cover.jpg.
  • Playlists, track order and tag editing, English and Russian UI. Ready-made .exe for Windows.

Smaller projects are on GitHub.

What I use

Low level
C++, MIPS and ARM, static recompilation, devkitARM and 3DS homebrew, emulator and recomp codebases
Web & backend
Python, FastAPI, TypeScript, React, Next.js, PostgreSQL, SQLAlchemy
Desktop
PySide6 (Qt), portable builds with everything bundled
Servers
Linux, nginx, Docker. This site runs on my own server.

Contact

Got an interesting problem, an idea or a question about one of the projects? Telegram is the fastest way to reach me.