Need help getting started? Try the player guide. These notes include older work; the game overview explains what’s ready now.

Native type-64 sector clipping

src/sector_clip.c recovers original D000 wall selection, CE50 correction and 053D0 relocation geometry. The shared projectile runtime and original entity dispatcher now update native type-64 objects through that backend. Construction requests use the existing native shared-pool constructor. This closes the previously rejected relocation callback; it does not establish new campaign coverage or identify additional original type-64 creation sites.

The wall selector scans the current sector's tagged line list, preserving its order and strict best-distance ties. It uses the original trig tables, signed 64-bit dot product, integer segment quotient, wrapped absolute value and signed distance. Live heights govern two-sided walls: step equality at48 is allowed; either opening below100 units forces correction. Correction retains the extra 3-unit bias and original BSP update order. Consecutive repeated tagged walls terminate the correction loop.

053D0 adds velocity once without multiplying by elapsed ticks, uses a fixed 32-unit radius, then clamps Z to the destination floor/ceiling without subtracting body height. The outer type-64 controller already adds velocity times ticks, so combined displacement retains velocity * (ticks + 1). This path emits no invented impact, damage or destruction.

Only a nonzero correction unlinks the old sector node before committing XYZ and reinserts at the new sector's head after clamping. Body floor, ceiling, step adjustment and block-grid links stay unchanged. Zero correction can still change geometry sector while retaining the old list node. ssa_world_sector_move supports that distinction; remove/replace locate the actual registered head when necessary. Release, replacement and teardown cannot leave stale heads. Ordinary player movement is unchanged; live owners never move in memory.

Scratch is call-local and does not overwrite movement, camera or ray workspaces. Invalid geometry leaves pure output unchanged; the runtime retains earlier controller effects on failure. Synthetic original corner cases can exceed1024 iterations. Native calls bound that work and return an explicit atomic error. Those cases count as guards, not terminating-ROM parity comparisons.

Validation:

Reports: sector-clip-rom-validation.json, sector-clip-runtime-validation.json andwindows-sector-clip-validation.json. The native game executes no ROM code.

One real decomp.wtf compile of recovered/sector_relocate.c reached85.3%, with scheduling, clamp-store and literal placement differences. It is not exact; the claim was released with notes. Live matching remains74/526 functions, 2152/87648 catalogued bytes(2.46%),523 attempts. Discovery is incomplete.