PLAYSTATION EMULATOR
nupsx
nuPSX (nupsx) is an open-source experimental PlayStation (PS1) emulator and debugger written in Zig. It is a learning-focused implementation that can boot and play many commercial and homebrew titles but is not positioned as a finished end-user product.

WHY IT MATTERS
Why this project exists
nupsx was created as a learning exercise to explore Zig and to implement PlayStation hardware behavior with an emphasis on being a readable, debuggable codebase rather than a polished "play everything" emulator. The repo author documents state, compatibility, and areas still incomplete so developers can study and contribute.
BEST FOR
Notable strengths
Readable Zig codebase useful for learning PS1 internals and emulator architecture; active development on GitHub with prebuilt binaries for major desktop platforms; a debug UI and disassembly/breakpoint options for inspecting execution.
The people behind nupsx
History & status
The project is hosted on GitHub and contains an ongoing commit history (200+ commits). The README clearly states the project is experimental: it can boot and play many commercial games (Crash Bandicoot, Metal Gear Solid, etc.) but still has missing features and audio/graphics quirks for some titles. The repository provides prebuilt binaries for multiple platforms and build instructions. The author cites PSX-SPX (problemkaputt.de) and community resources used during development.
What nupsx supports
- Windows (x86_64 binary provided)
- macOS (universal and architecture-specific binaries provided)
- Linux (x86_64 and aarch64 binaries provided)
- Browser (WASM build / web demo available via project web page)
- Command-line interface, optional debug UI (desktop builds)
Download and availability
OFFICIAL DOWNLOADS
Get nupsx
Prebuilt binaries are provided on the project's GitHub releases page. Source code is available from the repository for building with Zig. The emulator requires an external PlayStation BIOS file (e.g. SCPH-1001.bin) which is not included.
Get nupsx ↗DOCUMENTATION
Official documentation
Read the official configuration, compatibility, and troubleshooting material before changing advanced options.
Read official documentation ↗nupsx setup guide
Setup note: This guide describes verified, emulator-specific setup and usage details drawn from the project's README and documentation. Follow the project's releases page for prebuilt downloads or build from source with Zig. You must supply your own PS1 BIOS and legally obtained game images.
- Fetch prebuilt binaries or clone the repo: Preferred: download a prebuilt binary from the project's GitHub Releases page matching your OS/architecture. Alternative: clone the repository with `git clone https://github.com/maxpoletaev/nupsx.git` to build locally.
- Obtain a PlayStation BIOS: nupsx requires a PlayStation BIOS file passed with the –bios option (example shows SCPH1001.bin). The BIOS is not supplied by the project; obtain it from your own legally-owned hardware before running the emulator.
- Build from source (if needed): Install Zig and any platform toolchains required. From the repository root run: `zig build –release=safe` which produces `zig-out/bin/nupsx`. The repository depends on zig-gamedev libraries for graphics/audio/ImGui bindings; follow the repo's build notes if dependency issues appear.
- Run the emulator: Example command: `./zig-out/bin/nupsx –bios SCPH1001.bin –cdrom game.cue` Use `–memcard` to specify a memcard image (default is ~/.nupsx/memcard.mcd). The README lists additional options: –debug, –disasm, –breakpoint <addr>, –uncapped, –no-shader, –upscale <n>, and others. On macOS you may need to remove the quarantine attribute from downloaded binaries (`xattr -d com.apple.quarantine nupsx`) if macOS blocks execution.
- Controls and input: The repo documents keyboard mappings for the default controller layout and notes some games require analog/dual-analog support. If using a controller, map it through your OS or through any input/frontend you attach.
- Debugging and development: nupsx offers a debug UI and optional disassembly/breakpoint features intended for development and reverse-engineering. Enable them with `–debug` and `–disasm` and use `–breakpoint` to set execution breakpoints.
- Browser / Web demo: The project provides a web-hosted demo/build. If using the browser build, follow the project's web documentation; browser builds typically run as WASM and also require a BIOS and disc image supplied according to the web UI instructions.
Software reminder: nupsx does not include PlayStation BIOS, commercial game images, or other copyrighted firmware. You must provide your own BIOS and legally-obtained game images.
Sources and further reading
Detailed guides and tutorials
Explore step-by-step guides for nupsx as they are published.
Retro Replay Retro Gaming History, Reviews & Emulation