Skip to content

Glossary ​

This project has a working vocabulary of its own. Terms link to the page that owns them.

TermMeaning
guestthe TypeScript game running in QuickJS (in Bun when headless). Owns the game state, the RNG and the save. Architecture
corepocketvoxel-core, the Rust scene library. Owns only presentation: chunks, entities, cameras, the draw list, the chip synth.
surfacethe pinned op vocabulary between guest and core. The Voxel Surface
opone numeric call across the boundary (cam, ent, uiTile, …). Steady state is ~10–40 per tick.
backenda consumer of the core's ordered draw list: pocketvoxel-gu (PSP GE), pocketvoxel-gxm (Vita), the sim's software rasterizer.
pakvoxelmon.vxpak — the one cooked artifact every machine loads. Data & Formats
cookthe offline voxelizer run: classify → volumes → mesh → atlas → colour → cull → pack. Byte-deterministic. The Asset Pipeline
rungone step of the quality ladder (psp / vita / desktop), named by the host at boot — never by the guest, never a re-cook. The Quality Ladder
dialone runtime fidelity setting inside a rung (treeHullDist, detailDensity, …). All distances measure through one function.
identity (rung / anchor)the top rung, which must draw exactly the pre-ladder picture; *-max.hashes pin it and are never re-recorded for a dial edit.
tapean intent script (walk, press, wait, mark) — never frame counts. One tape drives every host. Formats
trace / .vtracethe recorded op stream a headless run produced; what the sim replays through the real core.
marka named checkpoint in a tape where the sim renders and hashes a frame. 11 story + 4 battle.
goldena committed frame hash (fnv1a64 of RGBA). Never a pixel.
the ceremonywhat re-basing the identity goldens costs: a named legitimate event plus a pixel-diff proof. Testing
no-moving-boundary ruleno camera-relative representation change inside the visible field ships — moving boundaries play as flicker on device.
bank slothow audio ops name a ROM bank: its index in the manifest's bankOrder, i.e. the position of its 0x4000-byte window in programs.bin.
channel programthe GB sound driver's bytecode for one channel; the core interprets these to PCM directly — no register emulation.
RED++ / pokered-gbcthe per-tile colour model, baked into the terrain texel index at cook time (texel = group*4 + shade).
SuperPaletteone named SGB four-colour palette from the RED++ pack; the pak carries 37 plus the RED++ tail.
stampa pre-cooked removable sub-mesh (cut tree, moved boulder) the guest toggles at runtime.
ghostthe player's occluded silhouette, drawn with an inverted depth test and no depth write.
oraclethe unmodified Lua reference running under LuaJIT, used as ground truth — trace-for-trace for gameplay, sample-exact for audio.
capture EBOOTthe --features capture build that replays recorded input under PPSSPP and hashes what the GE drew — the hardware half of the e2e.
manifest-driventhe importer reads gen1recomp's rom_manifest.json (symbols, charmap, map metadata) instead of hardcoding offsets.
content boundarythe legal line: ROM-derived bytes live only under git-ignored dist/, verified by SHA-1 before any decode. Getting Started

MIT Licensed. The ROM, and everything derived from it, stays yours and stays local.