Skip to content

Glossary

M T edited this page Oct 4, 2026 · 1 revision

Glossary

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.

Project and release

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.

Translation and guest CPU

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).

Host runtime (Windows emulation)

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.

Graphics

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.

Panorama, pacing and presentation

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.

Audio, input and haptics

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.

Diagnostics

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.

Related pages

Clone this wiki locally