All work
Phantom
Personal project, in development since July 2026.
A wireframe dogfight game for the Waveshare ESP32-S3 with a 480×480 AMOLED touch screen.
Engine
- Procedural
- Ships, arena, sky, canopy and audio generated at runtime.
- No texture samples.
- Rendering
- Direct to the display over QSPI, no widget toolkit.
- 60 fps in combat.
- Opponents
- Radio chatter.
- AI flown by combination of trained network and hand-written tactics.
- Codebase
- C++ game, shared by the PC build and the firmware.
- Python tools.
- PowerShell and batch build scripts.
Hardware
Running on the board.
- Board. Waveshare ESP32-S3-Touch-AMOLED-2.16.
- Screen. 480×480 AMOLED, QSPI at 80 MHz.
- Controls
- Touch steering.
- BOOT button fires.
- +/− key rolls in flight and works the menus.
- Audio. Mono codec and built-in speaker.
Combat
Missile warning
Anomaly event
Radio chatter
Tools
Score Studio
- Editor
- Draggable notes on a grid.
- Parts follow the chord roots or stand alone as melody.
- Sections can be duplicated, repeated or skipped.
- Playback. Through the game's own synthesizer.
- Report
- Peak polyphony against the synth's 8 voices.
- Speaker check per note, against the 1 cm speaker's 300 Hz floor.
- Thin: square waves carried by the 3rd harmonic.
- Silent: sines, and low-pass filters that cut the 3rd harmonic.
- Soundtrack. Five individual tracks covering menus and each tournament round.
Pilot network
- Training
- Small neural network trained on recorded flying.
- Console covers record, train, inspect, evaluate, deploy and build.
- Deployment
- Weights compile into the firmware as a header file.
- Gate hands unfamiliar ships back to hand-written tactics.
Recording
Rendering
Recorder
- Record. Saves inputs and frame times over USB serial.
- Render. Replays the session on the board, which sends back true pixels with no tearing.
- Gamma. Adjustable, from exact framebuffer values to close to device brightness.
- Sessions
- Directory per recording, named by start time.
- Input session (
.phr).
- Folder per render: video (
.mp4), board audio (.wav) and both combined (-av.mp4).