Repository navigation
Glossary
M T edited this page Oct 4, 2026
·
1 revision
These are terms used across the code, comments and this wiki. Each entry
links to the page that explains it in depth. Hex numbers such as 0050BEA0
are virtual addresses of functions or data in the supported halo.exe.
| Term | Meaning |
|---|---|
| Master Chef / Halo Vision | The public project name and the internal name, respectively. The app is HaloVision.app, its display name is "Halo Vision", and its Xcode target is EngineVision. |
| Supported executable | Retail Halo: Combat Evolved PC 1.10 halo.exe, with SHA-256 c9acf0c469543283cfed6d7dc04ade976dbdfc7cb4532cf070386de169c19545. c9acf0c46954 (its first 12 hex digits) names the decompilation/ directory. See Function Address Lists. |
| Build91 / Build103 | Build91 is the owner's private build series, which was installed and startup-verified on a headset. Build 103 is the public CURRENT_PROJECT_VERSION for v1.0.3: the same runtime with complete resource packaging. See Release Process and Hygiene. |
| Complete bundle | The MasterChef-v1.0.3-Complete.zip release asset. It contains an unsigned app, source, game content, visual packs and manifests, but no registration or signing. |
| GamePayload | Your own game files, staged by setup into .setup/GamePayload. GamePayloadManifest.json lists the size and SHA-256 of each file, and the payload is bundled into the app. See Device Preparation and Signing. |
| payloadID | SHA-256 of the sorted manifest rows. On the headset, a bundled payload installs to Application Support/HaloVision/PackagedGames/<payloadID>. |
| halo-vision-registry.txt | Private seed file (ROOT|KEY|NAME|TYPE|VALUE lines) behind the emulated ADVAPI32 registry. It lives in the game root and is rewritten on RegSetValueExA. |
Direct build (--direct) |
Builds the app with xcrun clang and swiftc instead of Xcode. The result is unsigned. See Build System. |
| Hygiene audit |
tools/check_repository_hygiene.py. It finds private data and build artifacts in a source tree without printing the matched values. |
| Term | Meaning |
|---|---|
| Static translation | Each x86 function is converted ahead of time into a C function that operates on an explicit guest CPU struct. See Static Translation Pipeline. |
| Guest / host | Guest means the translated Windows program and its 32-bit address space. Host means the native Apple-platform runtime around it. |
| XWA toolchain | The vendored MIT x86 static-recompilation tools (third_party/xwa): PE analysis, Capstone disassembly and lifting. See XWA Decoder and Lifter. |
| Strict lifter |
tools/engine_reuse/lift.py. It has no per-function CPU reset, no flag heuristics and no no-op fallback. Every unresolved operation is reported. |
--discover |
Generator option. Adds code addresses found as instruction immediates (callbacks) to the work queue until nothing new appears. |
--trap-unsupported |
Generator option. Lowers an instruction the lifter cannot express to a runtime failure, instead of dropping the whole function. |
| Chunk | One of the 32 generated chunk_NNN.c files. Each includes a slice of the per-function sub_XXXXXXXX.c files. |
EngineCPU |
The guest CPU: 8 general registers, EFLAGS, pc, x87 state, memory callbacks and the TEB base (fs_base). See EngineReuse Runtime. |
Block leader / L_ENTRY |
An address where a generated function may be entered, such as a branch target or a call return site. The L_ENTRY switch at the top of each function jumps to the leader named by cpu->pc. |
engine_dispatch |
Generated lookup for an address. It routes in this order: magic import handles, then host overrides, then a binary search of translated entries. |
ENGINE_DIRECT |
A direct C call to a known function entry, skipping dispatch. It is used for about 80% of call sites unless the target is hooked. |
| Hook list |
ENGINE_HOOK_ADDRESSES in engine_hooks.h. These are addresses that must go through dispatch so the host can intercept them. Changing the list requires rebuilding the chunks. |
| dispatch_interest | A 64K-bit filter that skips override lookups for addresses that are not hooked. |
| Tail call | A jump or fallthrough into another known function entry. It is lowered as dispatch followed by return. |
| Rotating x87 stack | ST(i) lives in fp_reg[(fp_top + i) & 7], so push and pop touch one slot. See x87 Floating Point. |
| Nearest fast path | In round-to-nearest mode, x87 arithmetic is plain binary64 with no FPCR change. Other modes use inline FPCR writes (HALO_ARM64_FENV_FAST). |
| Term | Meaning |
|---|---|
| Shim | A native C function that implements one Win32 or COM import. It reads stack arguments with ARG(i) and returns with RET_STDCALL. See Win32 Compatibility Layer. |
| Magic proc address |
0xFF000000 | index. It is written into import table slots and COM vtables, and dispatch routes it to a shim. MAGIC_PROC | 0 is the return token pushed when the host calls into guest code. |
| Magic module handle |
0xFE000000 | n. These are HMODULE tokens for the known DLLs. |
| Flat guest memory | One 4 GiB mmap. A guest address is an offset from engine_flat_base, and the first 64 KiB is PROT_NONE. See Guest Memory and Heap. |
| Guest heap / page space / explicit pool | The three guest allocation regions: heap allocations, VirtualAlloc granules, and fixed-address reservations. |
| TEB / PEB | Emulated Windows thread and process environment blocks. Each guest thread has its own TEB, with its TLS slots and last error. |
| APC ring | A per-thread queue of ReadFileEx completions, delivered by alertable waits. |
| Presenting thread | The engine thread that calls Present. Only its idle time counts toward the panorama budget. |
| Cache-read wait | The bounded 1 ms condvar wait that replaces Halo's Sleep(0) spin while it waits for map data (HALO_IO_WAIT). |
| Override | A native function registered at a guest address. It replaces the function, observes it, or wraps it. See Engine Overrides and Hooks. |
| HSC | Halo Script, the engine's mission scripting system. hsc_trace.inc observes its thread scheduler (0048A1A0). |
| a10 |
levels\a10\a10, the first campaign mission (Pillar of Autumn). It is used throughout for diagnostics. |
| HaloSettings | Lock-free live settings shared by the engine and the SwiftUI settings panel. They are seeded from the environment. See Runtime Settings. |
HOST_ENV |
A macro that reads an environment variable once per call site and caches it. See Environment Variables. |
| Term | Meaning |
|---|---|
| D3DObj | The host record behind each emulated D3D9 COM object. The guest object holds a vtable, a slot index and a generation. See Direct3D9 Bridge. |
| content_generation | A per-resource counter, bumped on Lock/Unlock, ProcessVertices or readback. Texture keys and resident vertex copies are reused while it is unchanged. |
| gpu_dirty | Marks a surface whose GPU copy is newer than its guest bytes. The surface is read back only when the CPU needs it. |
| RHW path | Drawing of pre-transformed screen-space vertices (XYZRHW FVFs, or Halo's POSITIONT declarations). |
| FF3D | The CPU fixed-function 3D draw path (HALO_FF3D). It transforms and lights vertices on the CPU. |
| Resident vertex buffer | An immutable Metal copy of a static vertex buffer, re-verified against guest bytes on each draw that uses it. The total is capped at 128 MiB (HALO_DRAW_FASTPATH). |
| Arena | The per-command-buffer transient vertex and index buffer (32 MiB, a pool of three). |
| Folded clear | A deferred clear that becomes the next render pass's load action. |
| Pipeline recipe / manifest | A record of everything needed to rebuild a Metal pipeline. Recipes persist in the pipeline store so they can be precompiled next session. See Metal Renderer. |
| Pixel extras / variant | Alpha-test and fog code spliced into MojoShader output, because Metal has neither fixed-function stage. The variant is alpha_func*2 + fog. See Shader Translation. |
| Synthetic CTAB | A constant-table comment inserted so that MojoShader accepts Halo's stripped shaders that use relative constant addressing. |
HVTEX001 / .hvt |
The native texture pack. Entries are keyed by TexMod CRC32 of mip 0 and hold raw BGRA8 pixels, and the pack is memory-mapped read-only. See Textures and Texture Packs. |
HVSHD001 / .hvs |
The shader pack. Each entry pairs exact original ps_2_0 bytecode with its replacement. |
| Native gather / leaves / visible surfaces | Exact native replacements of hot BSP traversal and math routines. Each keeps its translated original behind a switch. See Geometry Fast Paths. |
| Radial fog | A vertex-shader rewrite that measures fog by distance from the eye, so all bearings fog a point equally. See Radial Fog. |
| Term | Meaning |
|---|---|
| Bearing | One fixed camera direction the engine renders each frame. See Panorama System. |
| Layer | One of 10 back-buffer-sized images: six ring bearings, the zenith cap, the nadir cap, the HUD (layer 3) and the right-eye centre (layer 4). |
| Ring / caps | The ring is layers 0, 1, 2, 7, 8 and 9, at −60°, 0°, +60°, +120°, 180° and −120° yaw. The caps are layer 5 (up) and layer 6 (down). |
| Panel | One engine camera's image laid on the presenter's sphere. There are 8: six ring panels plus sky and floor. See Immersive Presenter. |
| Mono / stereo mask | The set of layers that must hold a picture for a frame to count as a complete sphere. |
| source_epoch / layer_epoch |
source_epoch is the frame number assigned on the first pass each frame. layer_epoch is the source_epoch that actually drew a layer's current image. |
| scene_epoch / cut_epoch |
scene_epoch is bumped by any invalidation: a camera cut, level entry, D3D Reset or flat frame. cut_epoch is the first epoch after a cut; older layers must not be aligned to it. |
| Camera cut | A jump of more than 2 world units that departs from the previous motion, or a turn of more than 30°. |
| Bearing budget / tier | The scheduler that chooses which bearings are redrawn each frame. Tiers 0–3 trade peripheral refresh for speed, and the higher tiers share one centre view between both eyes. See Panorama Budget and LOD. |
| GPU carry | Copying layers that were not redrawn from the last published GPU slot into the current one. |
| Zero-copy lease | The compositor borrows one of three bridge-owned slots of layer textures for the duration of a command buffer. |
| Interface record | The game's extra renderer record that draws only 2D elements: letterbox, timer, modal and framerate counter. |
| Rung | A frame-pacing cadence of n × 90 Hz display periods (n = 2–6). See Frame Pacing. |
| Neutral pose / recenter | The head pose captured at recenter. All presentation is relative to it, which supports reclined play. |
| Layer alignment | An experimental rotation of older layers toward the newest centre camera (HALO_LAYER_ALIGN). See Layer Alignment. |
| Weapon zone | The region of the side bands kept unturned by alignment, so the first-person weapon does not tear at the joins. |
| Transition hold | The last complete panorama is kept for up to 22 compositor frames across menu and mission transitions. |
| World cadence | Statistics of the intervals between newly submitted world epochs, counted in nominal 90 Hz periods. |
| Term | Meaning |
|---|---|
| Voice | One of Halo's looping DirectSound buffers. Every sound streams through a fixed pool of them. See Audio System. |
| Voice reuse bug |
GetStatus reported LOOPING for stopped buffers, so effects went silent until the next stop-all. This was found in Build75 and fixed. |
| Self voice / own-weapon lift | A 3D voice within 0.5 units of the listener. It is boosted by HALO_SELF_GAIN_DB. |
| Onset | A sharp rise inside a positional voice (3 ms vs 15 ms envelopes). It becomes a haptic pulse. See Haptics. |
| Fire window | 150–500 ms after R2 is seen held. During this window, a positional onset counts as the player's own shot. |
| Haptics mailbox | One atomic word from the mixer to the presenter's haptics pump. The latest event wins. |
| Link guard | Haptics pacing (about 4 per second), a 3 s grace period after a controller connects, and backoff after controller drops linked to pulses. |
| PAD2KEY | The bridge that turns controller input into DirectInput keyboard keys and mouse motion (HALO_PAD2KEY). See Input and Controllers. |
| Virtual gamepad | The always-enumerated "Halo Vision Gamepad" DirectInput device. |
| Pointer servo / gaze pointer | Steers Halo's own menu cursor toward the gaze target using synthetic mouse deltas. Pinch or Cross selects. |
| Term | Meaning |
|---|---|
| Core telemetry | Engine-thread Present-to-Present samples: frame split, residency, waits and ticks per frame (HALO_CORE_TELEMETRY). See Diagnostics and Telemetry. |
| Frame split | The breakdown of wall time between Presents into passes, limiter idle, waits, residual, CPU and off-core time. |
| Deep telemetry | A health journal sampled at about 5 Hz, with fault begin and end events (deep-*.jsonl). It is mirrored to live.json. |
| report.json / timeline / history | The app's diagnostic report, its one-second timeline, and an append-only bounded session history in Documents/Diagnostics. |
Documents master-chef at commit 9f915af (v1.0.3). Unofficial project, not affiliated with Microsoft, Bungie, Gearbox or Apple. Original code is MIT licensed; game content is not included.
Overview
- Architecture Overview
- Repository Layout
- Glossary
- Environment Variables
- Contributing Guide
- Open Questions
Translation
- Static Translation Pipeline
- XWA Decoder and Lifter
- Function Address Lists
- EngineReuse Runtime
- x87 Floating Point
Host runtime
- EngineHost Overview
- Win32 Compatibility Layer
- Threading and Synchronization
- Guest Memory and Heap
- Engine Overrides and Hooks
- Runtime Settings
Graphics
- Direct3D9 Bridge
- Metal Renderer
- Shader Translation
- Textures and Texture Packs
- Geometry Fast Paths
- Radial Fog
Panorama and presentation
- Panorama System
- Panorama Budget and LOD
- Frame Pacing
- visionOS App
- Immersive Presenter
- Layer Alignment
Audio and input
Tooling and process