mirror of
https://github.com/Cesarus85/ringfall-mjolnir-vr.git
synced 2026-10-23 16:00:32 +02:00
_collision_debug_render is now strict exact: 4,192 padded / 4,182 meaningful bytes, 278 relocations, normalized sha256 5a365dfa90e8300c345e596646f4d2a0be40c6a2527b4b15e747a3de364990d3. The source is the structural lane's /Od-guided reconstruction, re-gated on188d6c1b. - Locals take the first-party RTC names (point, vector, vector_result, collision_point, rotation_matrix, rotated_points, cube_vector, textstring, position/velocity/new_*, o, p, i, j, k, bounds, v, test_center). The RTC-recorded 2048-byte textstring replaces the earlier 1000-byte buffer and its "bug" comment. - The invented collision_debug_spray_globals aggregate becomes three file-static arrays: collision_debug_spray_normals, _points and _hit_flags. symbols.json carries the matching three-way static split. Evidence for three separate variables: - January's module-140 .bss contribution is exactly normals + points + hit_flags + the four scalars; - the relocation addends are +0, +0x3840 and +0x7080; - the /Od build addresses the three arrays separately and non-contiguously; - one aggregate loses 2 of the 278 relocations. csplit output changes only collision_debug.obj. - New helper COMDATs: _point_from_line3d, _scale_vector3d, _add_vectors3d and _set_real_vector3d. Each is byte-identical to January's selected copy (action_charge, actor_combat, actions), no object defines any of them NODUP any more, and all pair-link in both input orders. This follows the owner's5e81dabfprecedent for all-inlined TUs (biped_limp_noodle, actor_type_infection). - New point/vector cast at add_vectors3d(&point, &vector, &point): the /Od build passes the 12-byte `point` local as argument 1 and 3 at 0x7b0c5c. It is byte-inert (stripped: still EXACT, same sha). The cube-vertex cast was already present. Function credit only. The object is not marked Matching. _collision_debug_cube_vertices is static in source and in January (absent from cachebeta.pdb publics) but still external in symbols.json. That is a separate, pre-existing ownership follow-up. Verification: full ninja (objdiff 3.3.1, as canonical); stable diff vs frozen 8,245-function baseline +1 / 4,192 padded bytes, 0 regressions; parks 103/0/0; admission audit 13/0/7/0 (no new contradiction); fake-match scan 0 -> 0; python -m pytest -q tools 1154 passed; git diff --check clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>