A night-time downhill drift game for the Sony PSP, written in Rust.
Sekira Pass after dark. Sideways the whole way down.
Download AngleZero.0.3.0.zip from Releases and
unzip it at the root of the memory stick. That is the whole installation — everything in the
archive is already in the place it belongs:
PSP/GAME/AngleZero/EBOOT.PBP
PSP/GAME/AngleZero/CARS/*.azcar
The cars are separate files rather than being built into the EBOOT, so adding one later is copying
a file into CARS/ — no rebuild, and the title screen offers it with D-pad Left/Right. Put as many in there as
the stick will hold: only the car on screen is in memory, and it is read in as you pick it.
Then it appears under Game → Memory Stick.
It needs custom firmware. Stock firmware will not launch unsigned homebrew, and there is nothing this end can do about that.
cargo psp --releaseCopy target/mipsel-sony-psp/release/angle-zero.EBOOT.PBP to PSP/GAME/AngleZero/EBOOT.PBP on a
memory stick, renaming it to exactly EBOOT.PBP.
To run the whole test suite, which needs no PSP and no emulator:
cargo testTo build the same archive the releases are cut from:
scripts/release.shToolchain, emulator setup and controls are in Building and running.
| The idea | What the game is and why it works the way it does |
| Building and running | Toolchain, build flags, controls, running under PPSSPP |
| Architecture | The crate split, and how the game is tested on the host |
| PSP hardware notes | Traps the hardware sets that emulators do not, and where the frame budget goes |
| Diagnostics | Capturing frames and traces from the console, and headless screenshots |
| Assets | The XMB icon, background and music, and how the ATRAC3 is encoded |
| Cars | Turning a 400k-triangle model into a car the console draws, and adding another |
src/ game core — no PSP dependency, runs and is tested on the host
src/psp/ the shell: GU setup, rendering, audio, save data, diagnostics
tools/ the car asset compiler — host-only, never built for the console
tests/ 331 tests, all host-side
scripts/ music encoding, the glitch hunt, pulling captures off a PSP
assets/ XMB icon, background, music, and the car models in three stages
docs/ everything above
The split is the point: src/ knows nothing about the PSP, so track generation, physics, scoring,
the camera and the screen flow are all ordinary Rust that cargo test exercises directly. Only
src/psp/ needs hardware, and it holds no game logic. See
Architecture.
The same split runs the other way for content. tools/anglezero-asset compiles a car model into a
.azcar on a development machine; the console opens that file and draws it. Adding a car is a
model, a config file and a conversion — no renderer code. See Cars.
The car models are other people's work, under licences that require attribution — twenty of the twenty-seven are non-commercial. Each car's credit is read out of its compiled asset and drawn on the title screen, so the attribution ships with the car rather than with this file. The models, their authors and what each licence allows are in Cars.
