Geometrizer Vita
More actions
| Geometrizer Vita | |
|---|---|
| General | |
| Author | frangarcj |
| Type | Arcade |
| Version | 20260711 |
| License | N/A |
| Last Updated | 2026/07/01 |
| Links | |
| Download | |
| Website | |
| Source | |
Geometrizer is a Sega Model 1 arcade-board emulator written in C11, targeting Virtua Racing, running on macOS and the PlayStation Vita. The project is described first and foremost as a playground for AI-assisted development: most of its code is written by an AI coding agent iterating against real hardware, reference traces, and an emulator oracle, with the goal of testing how far an AI can drive a difficult, low-level systems project — including cycle-accurate CPU cores, a custom geometry DSP, a software 3D pipeline, and a GPU renderer built from scratch for a 2012 handheld.
Its status is listed as experimental / work-in-progress, with Virtua Racing reported to boot, render, and play on both target platforms.
Features
Architecture
- V60 — NEC V60 main CPU (16 MHz), variable-length ISA, with both interpreter and DRC/JIT execution
- TGP — MB86233 geometry DSP handling 3D transform/lighting/clipping with custom non-IEEE floating point, also with interpreter and DRC execution
- Bus — a 32-region address map mapping to flat memory or I/O callbacks
- Video — a display-list pipeline (parse → transform → light → clip → Z-sort → rasterize) plus S24 tilemaps for the HUD
- Sound — M68000 CPU, YM3438 sound chip, two MultiPCM chips, and an optional DSB, all command-driven over a UART
- Each CPU runs in its own cooperative libco fiber, scheduled round-robin with timeslices proportional to clock rate
PlayStation Vita build (performance-focused, vitasdk/vitaGL)
- vitaGL (GLES2) backend rendering directly to the framebuffer
- GPU-side geometry, moving object transform/project/clip/cull into a vertex shader, with the opaque pass using a per-object draw path
- GPU-rendered S24 HUD/background tilemaps using native Cg integer shaders with FBO caching
- Sound processing (M68000 plus sound chips) run on its own dedicated thread
- An overlapped emulation/video pipeline, where the emulator runs on a dedicated worker core while the main thread submits GL output for the previous frame
- Platform-specific glue including libco built on SceFiber, JIT code/data placed in a VM memory domain, deferred present, and runtime tuning via trigger files stored in ux0:data/geometrizer/
Screenshots
Changelog
v2026-07-11
- First Release.