I’m porting PPSSPP to WebAssembly to test the limits of browser-native apps
Posted by roothunter-dev@reddit | programming | View on Reddit | 2 comments
I’ve been working on an experimental project: running PPSSPP in the browser through WebAssembly.
Demo: https://root-hunter.github.io/ppsspp-web/
Source:
https://github.com/root-hunter/ppsspp-web
https://github.com/root-hunter/ppsspp-wasm
The goal is not just “emulation in a tab”, but exploring how far the browser can be pushed as a runtime for complex native-style applications.
This touches several interesting areas:
- compiling a large native/C++ application to WebAssembly
- Emscripten integration
- WebGL rendering constraints
- browser file APIs for loading large local files
- save/settings persistence in browser storage
- audio latency
- gamepad/controller input
- memory limits
- mobile browser behavior
- performance differences between Chrome, Firefox, Edge and Safari
- possible PWA/offline workflows
The project is still experimental and very browser/device dependent, but it’s already useful as a real-world stress test for WebAssembly beyond small demos.
Some of the questions I’m working through:
- What is the best storage layer for this kind of app: IndexedDB, OPFS, or something else?
- How should large local files be handled efficiently in the browser?
- How much can WebGL be optimized before WebGPU becomes necessary?
- How reliable is Gamepad API support across browsers?
- How should save states and virtual filesystem persistence be handled?
- How much does browser tab throttling affect real-time workloads?
- Can this become a usable PWA, or is native still the only serious option?
Important note: this is an unofficial PPSSPP WebAssembly/browser experiment. It does not include or link to games, BIOS files, ISOs, CSOs, ROMs, or copyrighted content. Users provide their own local files.
I’d love feedback from people who have experience with WebAssembly, Emscripten, browser storage, WebGL/WebGPU, or porting native applications to the web.
What would you focus on first to make this kind of browser-native port more stable and performant?
Librarian-Rare@reddit
Would be interesting to see this. Especially performance vs native, and the hardest impacts to performance.
programming-ModTeam@reddit
r/programming is not a place to post your project, get feedback, ask for help, or promote your startup.
Technical write-ups on what makes a project technically challenging, interesting, or educational are allowed and encouraged, but just a link to a GitHub page or a list of features is not allowed.
The technical write-up must be the focus of the post, not just a tickbox-checking exercise to get us to allow it. This is a technical subreddit.
We don't care what you built, we care how you build it.