Web shell and local server for the PPSSPP WebAssembly build.
This repository contains:
wasm-page/: Angular app, browser UI, service worker, manifest, and icons.server/: HTTPS server with COOP/COEP headers and the browser ad hoc WebSocket relay.
The emulator source and WebAssembly build outputs live in deps/ppsspp-wasm,
the pinned Git submodule used for reproducible checkouts and local development.
If you temporarily want to use a separate checkout, override
WASM_ROOT=/path/to/ppsspp-wasm.
Clone with submodules:
git clone --recurse-submodules https://github.com/root-hunter/ppsspp-web.gitFor an existing checkout:
git submodule update --init --recursiveOr use the Makefile wrapper:
make wasm-submodulesInstall and build the Angular app:
make app-install
make app-buildBuild PPSSPP from the active WASM_ROOT first:
make wasm-devThen serve it from this repository:
make serveBy default the server reads deps/ppsspp-wasm/build-wasm/ and
deps/ppsspp-wasm/build-wasm-release/. Use
WASM_ROOT=/path/to/ppsspp-wasm if the checkout lives somewhere else.
Useful local-development shortcuts:
make wasm-status
make wasm-submodule-branch
make wasm-dev
make serveTo update the pinned submodule to the latest origin/wasm:
make wasm-submodule-update
git diff --submoduleTo pin ppsspp-web to the current committed HEAD of a separate sibling
../ppsspp-wasm checkout, when you are using one:
make wasm-pin-local
git diff --submodulePush the ppsspp-wasm commit before sharing the ppsspp-web submodule pointer,
otherwise other machines will not be able to fetch it.
make server-docker-upThe Docker image builds the Angular web shell in a Node stage, then serves the
compiled static bundle from the Python server. The compose file mounts
WASM_ROOT read-only at /wasm. For the sibling local checkout:
make server-docker-up-localBuild the static Angular bundle with a relative base href, ready for GitHub
Pages, from an existing ppsspp-wasm release build:
make wasm-release
make app-build-pagesOr run the complete local pipeline in one shot:
make pagesThe target writes the publishable app to wasm-page/dist/ppsspp-web/, adds
.nojekyll, copies $(WASM_ROOT)/build-wasm-release/ into
wasm-page/dist/ppsspp-web/build-wasm/, and publishes
$(WASM_ROOT)/assets/ under build-wasm/assets/ when present. That output
directory is the exact static artifact uploaded by the GitHub Pages workflow.