Independently gate storage + K, OQ-4 P-a/P-b1, four static-local packets and comment-only disclosures. Preserve all 7641 exact owner rows, 71 valid parks and 1161 passing tests; code/data credit unchanged. G and game_engine admission remain held because current canonical loses populate_statistic_buffer. Existing collision static-local repair is not duplicated. No donor tree, held candidate, scorer or private asset imported.
- symbols.json: IDirect3DDevice8_IsBusy/KickPushBuffer and IDirect3DBaseTexture8_IsBusy
are static (D3DINLINE is static __forceinline; none is a cachebeta public).
- Three invented static names replaced by first-party names from the 2001-09-25
cachebeta-xbe linker map (atlas 7eacac85, re-anchored on 20 named symbols):
texture_cache_name_block_proc, compare (also January atlas exact tier) and
texture_cache_initialize_hardware_format.
- bitmap_group.h (shared, 45 includers): struct bitmap_data fields per HCEX
(mipmap_pad, long pixels_offset/pixels_size/tag_index/cache_block_index);
bink_playback.c and bitmaps.c adopt the names. The TU-local bitmap_data view
and raw tag_get('bitm') prefix view in xbox_texture_cache.c are gone.
- texture_cache.h declares texture_cache_debug_render (render_debug.c had no
prototype in scope). The Xbox-only public format mappers get the object's own
header cache/xbox_texture_cache.h. Adding them to texture_cache.h regresses
declaration-count-sensitive consumers (decals); this is disclosed in the header.
- Reviewer amendment: the invented pad member reserved006[2] in the TU-private
texture struct is removed (natural alignment; HCEX texture_datum has no pad).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Integrate verified source and data progress; exclude unproven COMMON ownership, held UB/asm forms, and address-named data credit. Stable sweep: 23 exact functions gained, zero lost.
Integrate six accepted exact functions, two whole-object admissions, evidence-backed zero-credit source corrections, owner-header cleanup, and curated campaign records. Preserve zero regressions and exclude generated scratch archives from canonical history.
- _render_debug_add_cache_entry: success-first single exit, string case
if/else, one case body per debug type as January emits them
- _ctf_engine_weapon_update: long return-team locals from the owner team
field (January's 32-bit movsx locals)
- _action_uncover_perform: timeslice-block locals, one evaluation-mode
store (removes HEAD's duplicated arm stores), field-order target stores
- _row_dither: indexed channel loops with PIN clamps replace pointer
cursors and a hand-written ternary clamp
- _lruv_debug_to_file: removes a goto web; MIN(9999, age) and the
NULL-name fallback in the fprintf arguments (integer compare order
disclosed; constant-first MIN is attested in Bungie source)
- _action_guard_perform: short firing-position index matching the
actor_select_firing_position return type
render_debug, game_engine_ctf, action_uncover, bitmaps_quantitize,
lruv_cache and action_guard are now all-function exact.
Stable diff: 0 regressions; active parks 219 -> 213.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- _dsound_initialize: one final success/dispose block instead of four
per-arm dsound_dispose calls; create_inanity_channel chained into the
success flag like the channel loops
- _extract_build_texture_pages_by_sequence: begin the selected texture
page once after the page-selection if/else (park reopen)
Rejected: _player_control_modify_desired_angles (factor order selected
from a 12-order search - operand permutation steering; owner-ruling
queue), _compute_sound_obstruction (new _vector_from_points3d COMDAT,
pending owner ruling), _update_potentially_audible_looping_sound
(duplicated arm stores), _path_avoid_obstacles and
_render_debug_obstacle_path (unauthenticated .bss label names).
Stable diff: 0 regressions; active parks 223 -> 222.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- tiff_file (3/3): _tiff_import as nested single-exit checks with one
TIFFClose and the cseries PIN/match_malloc/match_free helpers;
_tiff_export with a short format, single-exit error handling, byte row
size, per-case pixel expansion, and bitmaps_internal.h replacing
consumer-local prototypes
- _hud_render_nav_points: the TU's local-player unit ternary and a short
nav-point index loop (park reopen)
- _distance3d: square_root(distance_squared3d(a, b)) replaces a
hand-expanded body
Rejected: _item_update (hand-expanded point_from_line3d evading the
COMDAT hold). Stable diff vs 9062b1e96: 77 gained, 0 regressions;
active parks 224 -> 223.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Header packet (house rule 9): struct rgb_color, hsv_color, argb_color and
union real_hsv_color move from bitmap_utilities.c into their owner header
with prototypes for the six public conversion functions January defines
externally and that had no prototype anywhere. Measured board-wide (full
ninja + stable diff over bitmap_extract, bitmap_utilities, hud_draw,
hud_nav_points, object_lights): +1 function, 0 regressions.
_bitmap_2d_smooth: shared short x/y, coefficient read after the pixel
load, inline rounding/shift expression. The untouched fuzzy park
_bitmap_3d_smooth is re-measured (1792/28 before and after, objdiff
78.03 -> 78.04). Parks 231 -> 230.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- _actor_start_burst: burst geometry in its own block, negate_vector3d
instead of hand-written negation stores (select-any _negate_vector3d
COMDAT disclosed, laws_w3 A30 class), same capped-radius arithmetic
- _actor_combat_reaim_grenade: block-scoped 2D aim vector and a named
within_aiming_angle predicate (park reopen)
- _actor_combat_find_nearby_target: clamps the miss_distance parameter
directly (park reopen)
- _bitmap_2d_sharpen: short loop bounds, natural kernel order, and the
cast-free match_assert texts January's literals carry (park reopen;
no exact row traded, unlike the declined cast trade)
Rejected: _breakable_surface_effect (renamed local copies of
point_from_line3d / projection_from_vector3d evading two holds).
Stable diff: 0 regressions; parks 234 -> 231.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wave w3 landing, adversarially verified. park reopens: _extract_sprites. Full ninja build and per-function stable_verdicts sweep: 0 regressions. 1 park(s) removed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wave w2 landing, adversarially verified. park reopens: _bitmap_copy. Full ninja build and per-function stable_verdicts sweep: 0 regressions. 1 park(s) removed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wave w1 landing, adversarially verified. park reopens: _bitmap_2d_shrink, _bitmap_3d_shrink, _bitmap_2d_uncompress_from_mipmap. Full build of the combined batch: 54 strict gains / 29,440 padded, 0 regressions, parks 355/0/0. 3 park(s) removed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wave w1 landing, adversarially verified. park reopens: _extract_plateless_cube_map, _extract_get_bitmap_format. Full build of the combined batch: 54 strict gains / 29,440 padded, 0 regressions, parks 355/0/0. 2 park(s) removed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bitmap_group.h: signed depth/mipmap_count and union point2d registration_point (HCEA types, January movsx reads and whole-point copies), respelled in its four consumers. bitmaps_mipmap.h declares bitmap_get_max_mipmap_count (fixes an implicit declaration); bitmap_group_internal.h declares bitmap_group_add_bitmap (bitmap_group.h placement regressed decals by declaration count). bitmap_compress_to_mipmap takes the transparent-colour reference pointer January passes. Header renames and their consumers are one measured packet. Unparks _extract_add_bitmap, _extract_build_debug_plate, _extract_mipmaps_to_bitmap, _extract_pixels_from_mipmap, _extract_pixels_to_mipmap (+4,544 padded); re-baselines parked _bitmap_group_add_bitmap (same 992/59). Adversarially verified; 45 bitmap_group.h consumers rebuilt, 0 regressions.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Documented criteria met: extract_add_bitmap and the private extraction callees are now reconstructed in this TU. Single-exit result flags, January assert spellings and 16-bit indices; extract_cube_maps keeps January's freed-pointer bug (commented). extract_sequence stays parked because its exact form reproduces redundant logic (verifier rejected). 5 parks removed; +5 exact (3,040 padded). Full build of the combined reopen set: 0 regressions, parks 451/0/0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>