Vectrex Studio SDK
Native C games for the Vectrex
A C SDK that runs your game natively on an RP2350 cartridge and drives the Vectrex beam directly: drawing, sound, input, SD card, 3D, physics and more. Independent of the IDE.
Vectrex Studio Debug Cart
Supported
UVMC2
Supported
PiTrex
Coming soon
Getting Started
- OverviewWhat the Vectrex Studio SDK is, which cartridges it runs on, and how it is organised.
- InstallationInstall the toolchain, set up the starter kit, build your first .um2 image and run it on a real Vectrex.
- Your First GameThe build chain from Makefile to .um2, the smallest game that works, and the build options that matter.
- ExamplesThe example programs in the starter kit: what each one shows, which libraries it uses, and where to find it.
- Calibrating a ConsoleWhy the beam is calibrated per console, how to open the calibration screen, and what each field fixes.
Hardware & Runtime
- How the Engine WorksA complete, measured walk through the SDK's drawing engine: the bus rule, the beam model, a frame command by command, the PIO program, the DMA ring and the dual-core split.
- The HardwareWhat the cartridge is, what a .um2 image contains, and why an SDK game drives the Vectrex's VIA itself.
- The Command ListHow a frame is recorded as a list of VIA writes, what each command costs, and what happens when the list fills up.
- DrawingThe beam model: how a stroke becomes hardware, sub-unit geometry, re-zeroing, and what actually costs time.
- Dual Core, PIO and DMAHow the SDK keeps the beam moving while the CPU works: the core split, the PIO bus program and the DMA feed.
Sound, Input & Storage
- SoundThe PSG, digitised samples injected into the draw list, and the UVMC2's 16-bit audio jack with a small voice mixer.
- InputReading the buttons and joysticks, digital versus analog sticks, and what the console's reset button does in an SDK game.
- SD Card & PSRAMReading, writing and streaming files on the SD card, loading arcade romsets, and what the 8 MB of PSRAM is good for.
Libraries
- libvpyThe game library most SDK games are written against: lifecycle, drawing, text, input, math, sound and levels, in integer C.
- vpy3d — 3DMeshes with hidden-line removal, a camera and projection, solids that hide each other, dents, shot marks, text in the world, stereo, level of detail and terrain.
- Physics & impact soundsvpyphys — deterministic rigid bodies, hulls, joints and ray casts — and vpyimpact, the sound of things hitting each other synthesised from the hit.
- Effects, camera & easingvpyfx for sparks, shattering, disintegration and shockwaves; vpycam for a camera that follows, shakes and holds; vpyease for curves and tweens.
- AnimationSkeletal animation with keyframed clips and two-bone IK, soft bodies (cloth, blobs, jelly meshes), and ropes.
- Entities, AI & replaysvpyent ties meshes, bodies, occluders, marks and sounds into one table; vpyai steers and finds paths; vpyreplay records input and plays it back exactly.
- Low-level APILevel 2, the backend-neutral PiTrex/host contract; Level 3, the cartridge runtime (drawing, bus, input, sound, storage, calibration); and the syscall ABI.
Debugging
- Debugging on HardwareThe counters that tell one fault from another, the on-screen HUD, and reading a running console over SWD with a Pico as the probe.
- Host ToolsAnalysing frames on a laptop with the real emitter, capturing the list the console actually ran, and the measurement rules that keep results honest.
Arcade Ports
- Porting from MAMEUsing a MAME driver as the specification for a Vectrex port, and choosing between emulation, translation, or writing the game fresh.
- Porting an AAE GameLinking an AAE arcade driver into a cartridge image: feasibility checks, the eight pieces you write, and the bring-up order, using Tac/Scan as the example.