PlayStation 1 homebrew experiments using PSYQo (C++20). The goal is to make PSX development as easy as possible to get started with.
- mipsel-none-elf-gcc — MIPS cross-compiler for PS1
- GNU Make
- DuckStation (or any PS1 emulator) for testing
macOS (Homebrew):
brew install ./third_party/nugget/mipsel-none-elf.rbLinux:
# See https://github.com/pcsx-redux/nugget#readme for install instructionsgit clone --recursive https://github.com/EBonura/psx-lab.git cd psx-lab make BUILD=ReleaseThe compiled binary lands in release/room_test.ps-exe — open it in DuckStation to run.
psx-lab/ ├── Makefile # top-level build wrapper ├── src/ │ ├── Makefile # build config (includes psyqo.mk) │ └── room_test.cpp # current experiment ├── third_party/ │ └── nugget/ # PSYQo library (git submodule) └── release/ # build output (.ps-exe) PSYQo is a modern C++20 library for PS1 development, part of the nugget toolchain from the PCSX-Redux project. It provides GPU, GTE, controller, and audio abstractions — no legacy Sony SDK required.
A first-person room renderer with:
- World-space FPS camera with proper GTE view transform
- 5x5 tiled floor with checkerboard pattern
- Colored perimeter walls (north/south/east/west)
- D-pad movement (up/down = walk, left/right = turn)
- L1/R1 strafe, analog stick support
- Near-plane handling with vertex clamping
- Double-buffered rendering
| Input | Action |
|---|---|
| D-pad Up/Down | Walk forward/backward |
| D-pad Left/Right | Turn |
| L1/R1 | Strafe left/right |
| Left stick | Look/turn |
| Right stick | Move/strafe |