Reconcile five Halo functions and approved declaration batches

Integrate coherent B3, P2/K17 prerequisites, completed K1-K16 + S, and the independent profile/effects rulings. Five gains and two explicitly approved B3 debits: net +3 strict functions, +2770 meaningful/+2800 padded bytes (+2774 progress credit). No additional losses; Halo objects 394 to 396 and data unchanged.

Clean rebuild, identical 8252-row stable sweep, 68 valid parks, admission/provider checks, 467-unit warning comparison, unchanged fake scan, and 1318 tests passed. Preserve canonical helper recoveries and unrelated work. Full evidence and disclosures in docs/object_matching_logs/astra_five_function_reconciliation_20260928.md.
This commit is contained in:
Jonas Volman committed 2026-09-28 23:17:10 -07:00
1 parent 51cd4d8b67
commit f3aadeab98
251 files changed
+2813 -5280

No files matched your search

+4 -4
View File
@@ -495,7 +495,7 @@
{ "name": "source/rasterizer/xbox/rasterizer_xbox_environment_fog.c", "index": 120, "status": "NonMatching" },
{ "name": "source/rasterizer/xbox/rasterizer_xbox_environment.c", "index": 121, "status": "NonMatching" },
{ "name": "source/rasterizer/xbox/rasterizer_xbox_dynavobgeom.c", "index": 122, "status": "Matching" },
{ "name": "source/rasterizer/xbox/rasterizer_xbox_draw_primitives.c", "index": 123, "status": "NonMatching" },
{ "name": "source/rasterizer/xbox/rasterizer_xbox_draw_primitives.c", "index": 123, "status": "Matching" },
{ "name": "source/rasterizer/xbox/rasterizer_xbox_detail_objects.c", "index": 124, "status": "Matching" },
{ "name": "source/rasterizer/xbox/rasterizer_xbox_decals.c", "index": 125, "status": "Matching" },
{ "name": "source/rasterizer/xbox/rasterizer_xbox_debug.c", "index": 126, "status": "Matching" },
@@ -537,7 +537,7 @@
{ "name": "source/objects/widgets/light_volume_definitions.c", "index": 162, "status": "Matching" },
{ "name": "source/objects/widgets/glow_definitions.c", "index": 163, "status": "Matching" },
{ "name": "source/objects/widgets/glow.c", "index": 164, "status": "NonMatching" },
{ "name": "source/objects/widgets/flags.c", "index": 165, "status": "NonMatching" },
{ "name": "source/objects/widgets/flags.c", "index": 165, "status": "Matching" },
{ "name": "source/objects/widgets/flag_definitions.c", "index": 166, "status": "Matching" },
{ "name": "source/objects/widgets/cellular_automata2d.c", "index": 167, "status": "Matching" },
{ "name": "source/objects/widgets/cellular_automata.c", "index": 168, "status": "Matching" },
@@ -727,7 +727,7 @@
{ "name": "source/cseries/stack_walk_windows.c", "index": 352, "status": "Matching" },
{ "name": "source/cseries/sort.c", "index": 353, "status": "Matching" },
{ "name": "source/cseries/progress.c", "index": 354, "status": "Matching" },
{ "name": "source/cseries/profile.c", "index": 355, "status": "NonMatching" },
{ "name": "source/cseries/profile.c", "index": 355, "status": "Matching" },
{ "name": "source/cseries/errors.c", "index": 356, "status": "Matching" },
{ "name": "source/cseries/debug_memory.c", "index": 357, "status": "Matching" },
{ "name": "source/cseries/cseries_windows.c", "index": 358, "status": "Matching" },
@@ -764,7 +764,7 @@
{ "name": "source/bitmaps/bitmap_utilities.c", "index": 389, "status": "NonMatching" },
{ "name": "source/bitmaps/bitmap_group.c", "index": 390, "status": "NonMatching" },
{ "name": "source/bitmaps/bitmap_extract.c", "index": 391, "status": "Matching" },
{ "name": "source/bitmaps/bitmap_drawing.c", "index": 392, "status": "Matching" },
{ "name": "source/bitmaps/bitmap_drawing.c", "index": 392, "status": "NonMatching" },
{ "name": "source/bitmaps/bitmap_compress.c", "index": 393, "status": "Matching" },
{ "name": "source/bitmaps/s3tc/s3tc.c", "index": 394, "status": "NonMatching" },
{ "name": "source/bitmaps/libtiff/tif_write.c", "index": 395, "status": "Matching" },
+7 -45
View File
@@ -202,25 +202,6 @@
"objdiff_percent": 78.47794
}
},
{
"unit": "source/cseries/profile",
"function": "_compare_profile_sections",
"class": "unclassified",
"evidence": "Natural private qsort callback reconstructed as the sole real profile_dump dependency. It orders active sections first, then implements target-backed name ascending, average elapsed time descending with zero-sample handling, and signed64 rolling-total descending modes using correct public enums and semantic fields. The invalid-mode path preserves the January !\"unreachable\" assertion but returns a defined zero result if fatal system_exit unexpectedly returns. The older Opus donor's exact288B body used an uninitialized return whose accidental value reproduced January after the fatal call; that fake/undefined source is explicitly rejected. Candidate304B/8 relocs versus target288B/8. No return-recipe/register/control-flow search was performed after the defined natural pass. Private linkage is a source-ownership inference supported by the sole incoming relocation from profile_dump, not recovered PDB linkage proof; all35 inherited strict owners remain exact and no forbidden helper is emitted. Reopen only for authentic original-source/type/compiler-context evidence. See docs/object_matching_logs/profile_obj_dump_comparator_natural_boundary_20260905.md.",
"measurements": {
"target": {
"size": 288,
"relocation_count": 8,
"normalized_sha256": "d94ba79bf813177b3186d21957777d58068c95b63f28ea1131ff8ff68ee039a1"
},
"base": {
"size": 304,
"relocation_count": 8,
"normalized_sha256": "aebbef78d074d93227bcb077dadf533651dc5c60c2d7b75b63f127a7cbd93072"
},
"objdiff_percent": 21.59292
}
},
{
"unit": "source/bungie_net/network/transport_endpoint_set_winsock",
"function": "_poll_ep_array_compare_proc",
@@ -543,7 +524,7 @@
"unit": "source/interface/virtual_keyboard",
"function": "_virtual_keyboard_select",
"class": "unclassified",
"evidence": "Fuzzy-parked under the current house rule after reconstructing the complete virtual-key selection dispatcher in ordinary typed C from January disassembly and the independent HaloCEA implementation. The retained body handles done/save validation, shift/caps/symbol modes, backspace, cursor motion, space insertion, configurable character insertion, the .fortune easter egg, feedback sounds, and one-shot shift reset through semantic enums and owner-header prototypes. January and the candidate are both 1,088 padded bytes with 123 relocations, and objdiff reports 93.7518 percent similarity. The fail-closed blocker classifier returns UNKNOWN: the remaining differences are distributed source-order, branch-layout, and register-scheduling choices rather than missing behavior, and prior natural HaloCEA adaptation had a worse 1,120-byte envelope. No forced inline/noinline, barrier, volatile/register forcing, pragma, assembly, raw address, invented dependency, fake branch, or nonsensical matching construct is retained. Reopen only for authenticated January source/local records or a natural compatible-compiler donor that explains the residual schedule.",
"evidence": "Fuzzy-parked under the current house rule after reconstructing the complete virtual-key selection dispatcher in ordinary typed C from January disassembly and the independent HaloCEA implementation. The retained body handles done/save validation, shift/caps/symbol modes, backspace, cursor motion, space insertion, configurable character insertion, the .fortune easter egg, feedback sounds, and one-shot shift reset through semantic enums and owner-header prototypes. January and the candidate are both 1,088 padded bytes with 123 relocations, and objdiff reports 93.7518 percent similarity. The fail-closed blocker classifier returns UNKNOWN: the remaining differences are distributed source-order, branch-layout, and register-scheduling choices rather than missing behavior, and prior natural HaloCEA adaptation had a worse 1,120-byte envelope. No forced inline/noinline, barrier, volatile/register forcing, pragma, assembly, raw address, invented dependency, fake branch, or nonsensical matching construct is retained. Reopen only for authenticated January source/local records or a natural compatible-compiler donor that explains the residual schedule. 2026-09-27 B3 declaration-batch rebaseline (owner-approved batch B3, RF-CB F11): virtual_keyboard_free_space_in_text_buffer becomes static and this body's character-insert path calls it instead of the hand-written free-space copy (the /Od build calls it at that site; VC7 inlines this call and keeps the space site's out-of-line call, January's per-site pattern); the body moves 025bd53f -> ff65b27b at the same 1,088 padded bytes and 123 relocations, objdiff 3.3.1 93.7518 -> 93.805756 (measured at landing HEAD 9736deed + B3). No new exact credit; reopen criterion unchanged.",
"measurements": {
"target": {
"size": 1088,
@@ -553,9 +534,9 @@
"base": {
"size": 1088,
"relocation_count": 123,
"normalized_sha256": "025bd53f5f2169bb649702adf79e4603dd2a13ac0b5967aca9297e7e983565d9"
"normalized_sha256": "ff65b27bb63875dcc188e0f77880d6449e4396208d51722e58ecb8db2f0fb960"
},
"objdiff_percent": 93.7518
"objdiff_percent": 93.805756
}
},
{
@@ -653,25 +634,6 @@
"objdiff_percent": 95.816666
}
},
{
"unit": "source/effects/effects",
"function": "_effect_allowed_by_environment",
"class": "unclassified",
"evidence": "The retained ordinary-C environment switch implements the complete January air, water, vacuum, and anywhere behavior with named enum constants and typed location/point arguments, and the later HCEA reconstruction independently corroborates those four arms. January's invalid-enum arm calls the fatal assertion path and then reloads an uninitialized result byte if system_exit unexpectedly returns. The Opus donor reproduced that indeterminate fallthrough and was exact, but it is rejected under the no-undefined-behavior rule. The closest safe natural source initializes the result from the meaningful anywhere predicate before overriding the air/water arms; invalid and vacuum values therefore remain FALSE. It compiles to 112 padded bytes and ten relocations versus January's 128, with 55.909092 percent objdiff, while preserving the donor's better 1,616-byte and 592-byte shapes in both real callers. Simple FALSE initialization and assignment-after-assert forms also produced 112 bytes but caused both callers to inline the assertion body and regress broadly. The fail-closed classifier returns UNKNOWN. No uninitialized read, false noreturn declaration, volatile/register forcing, barrier, pragma, assembly, fake dependency, or nonsensical branch is retained. Reopen only for authoritative January source proving a safe result lifetime or a truthful shared noreturn contract that naturally reproduces the target. 2026-09-15 (250K lane wave w3d): re-measured after the coupled A8 callee re-baseline. The body is strictly closer - padded size is now January-exact (was 112), 10 relocations with every external target identical, and four distinct jump-table case entries instead of three. Zero strict credit; the row stays parked and fuzzy [sha], and its strict-exact reopen criterion is unchanged and NOT met.",
"measurements": {
"target": {
"size": 128,
"relocation_count": 10,
"normalized_sha256": "a005be4ac405246678b6c4e9a4bf65deb16b96b5208fad9454b45df70e8fa7cd"
},
"base": {
"size": 128,
"relocation_count": 10,
"normalized_sha256": "8f9a2185534b3801351e0f354e1fa4e5e3e39f7250559d1020cf2388df9248cf"
},
"objdiff_percent": 63.909092
}
},
{
"unit": "source/effects/effects",
"function": "_effect_generate_part",
@@ -968,7 +930,7 @@
"unit": "source/ai/ai",
"function": "_ai_test_ballistic_line_of_fire",
"class": "instruction-scheduling",
"evidence": "Complete typed ballistic trajectory, world-collision, friendly-pill, and debug-recording reconstruction from January code/relocations and HCEA semantics. Target and candidate are both 944 padded bytes with all 49 relocations. Remaining differences are compiler-local x87 and independent instruction scheduling. No fake dependency, raw offset, forced inline, or nonsensical logic is retained. Zero exact credit. See docs/object_matching_logs/ai_obj_large_visibility_spatial_packet_20260909.md. 2026-09-20 Lane A re-baseline (zero exact credit): the recorded 250K-lane w3c 'b5' shape is rebuilt from this baseline and landed. Three changes: block-scope segment_time to the coordinate statement; parenthesise the linear term of the z row as (segment_time * arc_velocity.k + point.z); spell the post-call velocity update as (segment_end_time - segment_start_time) * gravity + arc_velocity.k. Instruction counts become 296/296 (HEAD was 292/296) and objdiff rises 94.50 to 98.99645. It reproduces January's x87 structure for segment_time exactly: fsubr of the parameter home at +0x1e7, fst (store-and-keep) to a dead parameter home at +0x1f4, and a post-call fld from that same home at +0x2cc feeding fmul gravity / fadd / fstp. Surviving hunks: an ebx/edi reload transposition at +0x159, a collision_flags/segment_time parameter-home swap, one 3-versus-2 x87 hunk at +0x21a and a consequent 3-byte alignment pad. Reopen only with a spelling that materialises the second x87 copy the way January does; do not replay operand or declaration sweeps. 2026-09-22 integration rebaseline: shared declaration context changed the normalized code hash while preserving the 944-byte envelope and all 49 relocations; similarity improves to 99.05674, with zero exact-row regressions. No new exact credit is claimed. 2026-09-24 R3 bipeds storage rebaseline: removing the four January file-static prototypes (biped_falling_danger, biped_update_airborne, biped_snap_facing, biped_update_moving) from units/bipeds.h changes only this TU's declaration context; the body returns to the Lane A wave A2 hash 5c03c751 (944 bytes, 49 relocations, objdiff 3.3.1 98.99645: the collision_flags/segment_time parameter-home swap reappears). Zero exact-row change in all 23 bipeds.h includers. 2026-09-27 type-ownership rebaseline (owner-approved RF-BE packet K: the hudg, itmc and netgame tag layouts consolidated into hud_definitions.h, item_definitions.h and scenario_definitions.h, hud_globals declared once in hud.h): ai.c is unchanged and sees only scenario_definitions.h, whose three added netgame block types shift this TU's C1 numbering by +23; the body returns to the 2026-09-22 integration hash ea5eb3a4 (944 bytes, 49 relocations, objdiff 3.3.1 99.05674, recorded at 4f4c8502), superseding the 2026-09-24 hash 5c03c751 / 98.99645. Zero exact-row change in the 467-unit sweeps at 04d57ab5 and 399a556b. No new exact credit; reopen criterion unchanged. 2026-09-27 interface owner-header rebaseline (RF-BR minimal packet MP, held for an owner ruling): the game_globals_interface_tag_references element type is declared once in game_globals.h, which includes interface.h for NUMBER_OF_INTERFACE_TAGS; ai.c is unchanged and sees it through game_globals.h (C1 +104); the body returns to hash 5c03c751 (944 bytes, 49 relocations, objdiff 3.3.1 98.99645, remeasured at 6470611a), superseding ea5eb3a4 / 99.05674. No new exact credit; reopen criterion unchanged.",
"evidence": "Complete typed ballistic trajectory, world-collision, friendly-pill, and debug-recording reconstruction from January code/relocations and HCEA semantics. Target and candidate are both 944 padded bytes with all 49 relocations. Remaining differences are compiler-local x87 and independent instruction scheduling. No fake dependency, raw offset, forced inline, or nonsensical logic is retained. Zero exact credit. See docs/object_matching_logs/ai_obj_large_visibility_spatial_packet_20260909.md. 2026-09-20 Lane A re-baseline (zero exact credit): the recorded 250K-lane w3c 'b5' shape is rebuilt from this baseline and landed. Three changes: block-scope segment_time to the coordinate statement; parenthesise the linear term of the z row as (segment_time * arc_velocity.k + point.z); spell the post-call velocity update as (segment_end_time - segment_start_time) * gravity + arc_velocity.k. Instruction counts become 296/296 (HEAD was 292/296) and objdiff rises 94.50 to 98.99645. It reproduces January's x87 structure for segment_time exactly: fsubr of the parameter home at +0x1e7, fst (store-and-keep) to a dead parameter home at +0x1f4, and a post-call fld from that same home at +0x2cc feeding fmul gravity / fadd / fstp. Surviving hunks: an ebx/edi reload transposition at +0x159, a collision_flags/segment_time parameter-home swap, one 3-versus-2 x87 hunk at +0x21a and a consequent 3-byte alignment pad. Reopen only with a spelling that materialises the second x87 copy the way January does; do not replay operand or declaration sweeps. 2026-09-22 integration rebaseline: shared declaration context changed the normalized code hash while preserving the 944-byte envelope and all 49 relocations; similarity improves to 99.05674, with zero exact-row regressions. No new exact credit is claimed. 2026-09-24 R3 bipeds storage rebaseline: removing the four January file-static prototypes (biped_falling_danger, biped_update_airborne, biped_snap_facing, biped_update_moving) from units/bipeds.h changes only this TU's declaration context; the body returns to the Lane A wave A2 hash 5c03c751 (944 bytes, 49 relocations, objdiff 3.3.1 98.99645: the collision_flags/segment_time parameter-home swap reappears). Zero exact-row change in all 23 bipeds.h includers. 2026-09-27 type-ownership rebaseline (owner-approved RF-BE packet K: the hudg, itmc and netgame tag layouts consolidated into hud_definitions.h, item_definitions.h and scenario_definitions.h, hud_globals declared once in hud.h): ai.c is unchanged and sees only scenario_definitions.h, whose three added netgame block types shift this TU's C1 numbering by +23; the body returns to the 2026-09-22 integration hash ea5eb3a4 (944 bytes, 49 relocations, objdiff 3.3.1 99.05674, recorded at 4f4c8502), superseding the 2026-09-24 hash 5c03c751 / 98.99645. Zero exact-row change in the 467-unit sweeps at 04d57ab5 and 399a556b. No new exact credit; reopen criterion unchanged. 2026-09-27 interface owner-header rebaseline (RF-BR minimal packet MP, held for an owner ruling): the game_globals_interface_tag_references element type is declared once in game_globals.h, which includes interface.h for NUMBER_OF_INTERFACE_TAGS; ai.c is unchanged and sees it through game_globals.h (C1 +104); the body returns to hash 5c03c751 (944 bytes, 49 relocations, objdiff 3.3.1 98.99645, remeasured at 6470611a), superseding ea5eb3a4 / 99.05674. No new exact credit; reopen criterion unchanged. 2026-09-27 B3 declaration-batch rebaseline (owner-approved batch B3): the body is unchanged; the batch adds main/console.h to ai.c (P04a: console_printf was implicit) and changes declarations in its include closure (actions.h, actors.h, ai_debug.h, ai_script.h, props.h, profile.h, game_allegiance.h, players.h, units.h), shifting this TU's C1 numbering; the body returns to the hash ea5eb3a4 (944 bytes, 49 relocations, objdiff 3.3.1 99.05674) recorded 2026-09-22 and 2026-09-27, superseding 5c03c751 / 98.99645 (measured at landing HEAD 9736deed + B3). No new exact credit; reopen criterion unchanged. 2026-09-28 rebaseline (zero credit; K1-K16 + S ownership packet, owner-approved): the evidence-selected declaration batch shifts this TU's compiler numbering; base ea5eb3a4/99.05674 -> 5c03c751/98.99645. The function stays residual; its source is unchanged.",
"measurements": {
"target": { "size": 944, "relocation_count": 49, "normalized_sha256": "6c90076033e91f26356e42166cf4bb0a8d5a902ae35bc67db15aec19ee9982ac" },
"base": { "size": 944, "relocation_count": 49, "normalized_sha256": "5c03c751c19c33cde8c6645c5fd39d505e2bca6bf161beb6e6126101f3fbcaa8" },
@@ -1001,11 +963,11 @@
"unit": "source/rasterizer/xbox/rasterizer_xbox_models",
"function": "__rasterizer_model_draw",
"class": "tu-context-optimization",
"evidence": "Best complete typed model draw reconstruction retained from the Opus rasterizer lane after house-rule reconciliation. January and the candidate are both 5,168 padded bytes; January has 350 relocations and the candidate has 348 at 95.32371 percent similarity. The established REAL_MATH_EXTERNAL_POINT_FROM_LINE3D include schedule remains in force and this TU emits no point_from_line3d COMDAT. The shader-plasma access now uses its authentic enclosing definition instead of a raw byte offset, texture-animation outputs use true real_vector4d storage, self-illumination colors are interpolated component by component without incompatible point/vector/color casts, and the atmosphere-dominant test uses the named flag. These defined semantic choices account for part of the measured residual and are retained rather than restoring the closer prohibited representation-cast form. The correctly owned environment-fog backend declaration changes only compiler scheduling in this already-fuzzy owner and adds no exact credit. Semantic model-effect enums and render_lighting fields replace misleading donor placeholders. No forced inline, fake dependency, raw offset, representation pun, undefined behavior, or nonsensical branch is retained. Zero exact credit. See docs/object_matching_logs/rasterizer_xbox_models_obj_opus_reconciliation_20260909.md. On September 14 (lane opus/150k-house-clean-20260914, header packet P6) the real_math.h real_local_random_range named-result correction changed only this unchanged, already-fuzzy body's allocation hash at identical size and relocations (5168/348, sha 112b4321...), the same alternate hash measured under the P7, P8 and P9 real_math.h evaluations (header-inline definition effect). No source change. Re-measured 2026-09-19 after restoring real_rgb_color_to_pixel32 to its authentic bitmaps inline/header ownership: the unchanged zero-credit body returns to the previously documented 5,168/348 hash and 95.32371 percent state, with no inherited exact-function regression. 2026-09-26 (compiler-application lane, worker A2, render_debug owner-prototype packet): adding the genuine render_debug_fog_planes prototype to structures/structures.h, which this TU includes directly, shifts its declaration context by one C1 number; the retained body moves 89b0d7ea -> cbfa8585 at the same 5,168 padded bytes and 348 relocations, objdiff 3.3.1 95.08453 -> 95.07629. Zero exact-row change in the 447-unit shadow sweep; zero exact credit, reopen criterion unchanged. 2026-09-27 render_skinning rebaseline (owner-approved packet P-b2: one struct render_skinning in render/render.h, the HCEX and PC-demo type, replaces the nine lane copies of the skinning struct, this TU's local rasterizer_model_skinning_parameters among them): the body is unchanged; the removed local copy and the new render.h type shift this TU's C1 numbering by -2 at this function, and the body returns to the hash 89b0d7ea (5,168 padded bytes, 348 relocations, objdiff 3.3.1 95.08453) that this entry recorded before the 2026-09-26 render_debug packet, superseding cbfa8585 / 95.07629. Zero exact-row change in the 467-unit sweep at 36e80830; zero exact credit, reopen criterion unchanged.",
"evidence": "Best complete typed model draw reconstruction retained from the Opus rasterizer lane after house-rule reconciliation. January and the candidate are both 5,168 padded bytes; January has 350 relocations and the candidate has 348 at 95.32371 percent similarity. The established REAL_MATH_EXTERNAL_POINT_FROM_LINE3D include schedule remains in force and this TU emits no point_from_line3d COMDAT. The shader-plasma access now uses its authentic enclosing definition instead of a raw byte offset, texture-animation outputs use true real_vector4d storage, self-illumination colors are interpolated component by component without incompatible point/vector/color casts, and the atmosphere-dominant test uses the named flag. These defined semantic choices account for part of the measured residual and are retained rather than restoring the closer prohibited representation-cast form. The correctly owned environment-fog backend declaration changes only compiler scheduling in this already-fuzzy owner and adds no exact credit. Semantic model-effect enums and render_lighting fields replace misleading donor placeholders. No forced inline, fake dependency, raw offset, representation pun, undefined behavior, or nonsensical branch is retained. Zero exact credit. See docs/object_matching_logs/rasterizer_xbox_models_obj_opus_reconciliation_20260909.md. On September 14 (lane opus/150k-house-clean-20260914, header packet P6) the real_math.h real_local_random_range named-result correction changed only this unchanged, already-fuzzy body's allocation hash at identical size and relocations (5168/348, sha 112b4321...), the same alternate hash measured under the P7, P8 and P9 real_math.h evaluations (header-inline definition effect). No source change. Re-measured 2026-09-19 after restoring real_rgb_color_to_pixel32 to its authentic bitmaps inline/header ownership: the unchanged zero-credit body returns to the previously documented 5,168/348 hash and 95.32371 percent state, with no inherited exact-function regression. 2026-09-26 (compiler-application lane, worker A2, render_debug owner-prototype packet): adding the genuine render_debug_fog_planes prototype to structures/structures.h, which this TU includes directly, shifts its declaration context by one C1 number; the retained body moves 89b0d7ea -> cbfa8585 at the same 5,168 padded bytes and 348 relocations, objdiff 3.3.1 95.08453 -> 95.07629. Zero exact-row change in the 447-unit shadow sweep; zero exact credit, reopen criterion unchanged. 2026-09-27 render_skinning rebaseline (owner-approved packet P-b2: one struct render_skinning in render/render.h, the HCEX and PC-demo type, replaces the nine lane copies of the skinning struct, this TU's local rasterizer_model_skinning_parameters among them): the body is unchanged; the removed local copy and the new render.h type shift this TU's C1 numbering by -2 at this function, and the body returns to the hash 89b0d7ea (5,168 padded bytes, 348 relocations, objdiff 3.3.1 95.08453) that this entry recorded before the 2026-09-26 render_debug packet, superseding cbfa8585 / 95.07629. Zero exact-row change in the 467-unit sweep at 36e80830; zero exact credit, reopen criterion unchanged. 2026-09-27 B3 declaration-batch rebaseline (owner-approved batch B3): the batch removes this TU's local copies of rasterizer_debug_options, the frame-statistics view and pixel_shader_definition in favour of their owner headers (P_XMO, RF-CF rasterizer_console_vars.h, CE-F2 / RT5 rasterizer.h, rasterizer_xbox_pixel_shader.h), so this body's statistics and debug-option references use the owner member names at the same offsets and widths, and rasterizer.h, rasterizer_models.h, rasterizer_transparent_geometry.h and structures.h change; the TU's C1 numbering shifts and the body moves 89b0d7ea -> 3bf3e583 at the same 5,168 padded bytes and 348 relocations, objdiff 3.3.1 95.08453 -> 95.24948 (measured at landing HEAD 9736deed + B3). No new exact credit; reopen criterion unchanged. 2026-09-28 rebaseline (zero credit; K1-K16 + S ownership packet, owner-approved): the evidence-selected declaration batch shifts this TU's compiler numbering; base 3bf3e583/95.24948 -> 8af3fbbf/95.241234. The function stays residual; its source is unchanged.",
"measurements": {
"target": { "size": 5168, "relocation_count": 350, "normalized_sha256": "99d8b95f1ce011781cedc3a123887065a0f8af4a54c842194fcd90c22fa2cc4e" },
"base": { "size": 5168, "relocation_count": 348, "normalized_sha256": "89b0d7ea77a71d69d21eda1926e973006f54ed531bf346aaa87a18718e225c01" },
"objdiff_percent": 95.08453
"base": { "size": 5168, "relocation_count": 348, "normalized_sha256": "8af3fbbf93eff5296cb9be8e147423d85f7f1c693f40ed12068de429e333f9cc" },
"objdiff_percent": 95.241234
}
},
{
+1 -1
View File
@@ -52,7 +52,7 @@
},
{
"symbol": "_rdata_002a0a88",
"base_symbol": "$T18502",
"base_symbol": "$T18685",
"source_function": "_main",
"measurements": {
"target": {
-5
View File
@@ -569,11 +569,6 @@
"function": "_first_person_weapon_set_state",
"reason": "hardened COFF comparison proves all 688 padded bytes and all 26 semantic relocations exact (SHA-256 965964af9115913e36fa06e152828b2e857e7ac59e2cc0e6fdcff29ddebcb91f); objdiff reports a private switch-table/local-label ownership false negative"
},
{
"unit": "source/interface/ui_widget_game_data_input_functions",
"function": "_mutliplayer_settings_select_list_update_displayed_items",
"reason": "hardened COFF comparison proves all 1424 padded bytes and all 73 semantic relocations exact (SHA-256 adce7f9ab32aee72ec9d542efc297df9295a839a27406848eb8467ffea97594f); objdiff reports compiler-local switch-table labels as a false negative; January's original misspelling of multiplayer in the owner name is preserved"
},
{
"unit": "source/interface/ui_widget_game_data_input_functions",
"function": "_server_list_menu_update",
+17 -17
View File
@@ -946,7 +946,7 @@
{ "file_offset": 337856, "flags": 32, "name": "_props_initialize_for_new_map" },
{ "file_offset": 337872, "flags": 32, "name": "_props_dispose_from_old_map" },
{ "file_offset": 337888, "flags": 32, "name": "_prop_add", "static": true },
{ "file_offset": 338496, "flags": 32, "name": "_prop_new_blank" },
{ "file_offset": 338496, "flags": 32, "name": "_prop_new_blank", "static": true },
{ "file_offset": 338544, "flags": 32, "name": "_prop_remove", "static": true },
{ "file_offset": 338864, "flags": 32, "name": "_prop_iterator_new" },
{ "file_offset": 338912, "flags": 32, "name": "_prop_iterator_next" },
@@ -3297,8 +3297,8 @@
{ "file_offset": 780976, "flags": 32, "name": "_input_get_gamepad_state" },
{ "file_offset": 781088, "flags": 32, "name": "_input_set_gamepad_rumbler_state" },
{ "file_offset": 781184, "flags": 32, "name": "_input_vertical_blank_interrupt" },
{ "file_offset": 781232, "flags": 32, "name": "_input_unidentified_noop_1" },
{ "file_offset": 781248, "flags": 32, "name": "_input_unidentified_noop_2" },
{ "file_offset": 781232, "flags": 32, "name": "_acquire_input_mutex", "static": true },
{ "file_offset": 781248, "flags": 32, "name": "_release_input_mutex", "static": true },
{ "file_offset": 781264, "flags": 32, "name": "_input_get_device_states", "static": true },
{ "file_offset": 782496, "flags": 32, "name": "_input_flush_rumble", "static": true },
{ "file_offset": 782672, "flags": 32, "name": "_input_update_keyboard_devices", "static": true },
@@ -3323,12 +3323,12 @@
{ "file_offset": 786352, "flags": 32, "name": "_hud_picked_up_ammunition" },
{ "file_offset": 786400, "flags": 32, "name": "_hud_picked_up_weapon" },
{ "file_offset": 786432, "flags": 32, "name": "_hud_picked_up_powerup" },
{ "file_offset": 786464, "flags": 32, "name": "_temporary_hud_draw_reticle" },
{ "file_offset": 786464, "flags": 32, "name": "_temporary_hud_draw_reticle", "static": true },
{ "file_offset": 786672, "flags": 32, "name": "_hud_load" },
{ "file_offset": 786768, "flags": 32, "name": "_hud_autosave" },
{ "file_offset": 786992, "flags": 32, "name": "_hud_draw_friendly_indicator", "static": true },
{ "file_offset": 787344, "flags": 32, "name": "_hud_draw_players" },
{ "file_offset": 787504, "flags": 32, "name": "_temporary_hud_draw" },
{ "file_offset": 787344, "flags": 32, "name": "_hud_draw_players", "static": true },
{ "file_offset": 787504, "flags": 32, "name": "_temporary_hud_draw", "static": true },
{ "file_offset": 788384, "flags": 32, "name": "_hud_draw_screen" },
{ "file_offset": 788704, "flags": 32, "name": "_get_return_eip" },
{ "file_offset": 788720, "flags": 32, "name": "_check_stack_buffer" },
@@ -3629,7 +3629,7 @@
{ "file_offset": 857856, "flags": 32, "name": "_gen_cloud_coord" },
{ "file_offset": 857904, "flags": 32, "name": "_gen_mask_coord" },
{ "file_offset": 857968, "flags": 32, "name": "_draw_layer_int", "static": true },
{ "file_offset": 858320, "flags": 32, "name": "_draw_layer" },
{ "file_offset": 858320, "flags": 32, "name": "_draw_layer", "static": true },
{ "file_offset": 858416, "flags": 32, "name": "_draw_initial_layer", "static": true },
{ "file_offset": 858512, "flags": 32, "name": "_this_is_awful", "static": true },
{ "file_offset": 858560, "flags": 32, "name": "_do_convoluation_coords", "static": true },
@@ -3927,7 +3927,7 @@
{ "file_offset": 937904, "flags": 32, "name": "_virtual_keyboard_get_character", "static": true },
{ "file_offset": 938112, "flags": 32, "name": "_virtual_keyboard_get_current_character", "static": true },
{ "file_offset": 938160, "flags": 32, "name": "_virtual_keyboard_render_internal", "static": true },
{ "file_offset": 939776, "flags": 32, "name": "_virtual_keyboard_free_space_in_text_buffer" },
{ "file_offset": 939776, "flags": 32, "name": "_virtual_keyboard_free_space_in_text_buffer", "static": true },
{ "file_offset": 939808, "flags": 32, "name": "_virtual_keyboard_backspace", "static": true },
{ "file_offset": 939904, "flags": 32, "name": "_virtual_keyboard_close" },
{ "file_offset": 939920, "flags": 32, "name": "_virtual_keyboard_render" },
@@ -4185,7 +4185,7 @@
{ "file_offset": 991008, "flags": 32, "name": "_main_framerate_render" },
{ "file_offset": 991680, "flags": 32, "name": "_halt_and_catch_fire" },
{ "file_offset": 992352, "flags": 32, "name": "_main_loop_of_death" },
{ "file_offset": 992416, "flags": 32, "name": "_main_game_render" },
{ "file_offset": 992416, "flags": 32, "name": "_main_game_render", "static": true },
{ "file_offset": 992864, "flags": 32, "name": "_main_loop" },
{ "file_offset": 994512, "flags": 32, "name": "_connected_geometry_new" },
{ "file_offset": 994560, "flags": 32, "name": "_connected_geometry_delete" },
@@ -4768,7 +4768,7 @@
{ "file_offset": 1127888, "flags": 32, "name": "_model_find_marker" },
{ "file_offset": 1128048, "flags": 32, "name": "_model_get_default_inverse_matrix" },
{ "file_offset": 1128096, "flags": 32, "name": "_model_find_node" },
{ "file_offset": 1128208, "flags": 32, "name": "_model_geometry_part_build_tangent_matrices" },
{ "file_offset": 1128208, "flags": 32, "name": "_model_geometry_part_build_tangent_matrices", "static": true },
{ "file_offset": 1128224, "flags": 32, "name": "_render_model" },
{ "file_offset": 1130368, "flags": 32, "name": "_model_get_marker_by_name" },
{ "file_offset": 1130832, "flags": 32, "name": "_model_build_tangent_matrices" },
@@ -4897,7 +4897,7 @@
{ "file_offset": 1155904, "flags": 32, "name": "_network_game_generate_local_machine_name" },
{ "file_offset": 1156048, "flags": 32, "name": "_network_game_end_and_load_ui" },
{ "file_offset": 1156112, "flags": 32, "name": "_network_game_reset_for_next_round" },
{ "file_offset": 1156288, "flags": 32, "name": "_network_game_dump" },
{ "file_offset": 1156288, "flags": 32, "name": "_network_game_assign_players_to_team" },
{ "file_offset": 1156304, "flags": 32, "name": "_network_player_is_valid" },
{ "file_offset": 1156352, "flags": 32, "name": "_network_game_invalidate_machine" },
{ "file_offset": 1156528, "flags": 32, "name": "_network_game_add_player" },
@@ -6244,7 +6244,7 @@
{ "file_offset": 1519552, "flags": 32, "name": "_hardware_character_cache_get_origin", "static": true },
{ "file_offset": 1519728, "flags": 32, "name": "_flush_hardware_character", "static": true },
{ "file_offset": 1519824, "flags": 32, "name": "_cache_hardware_format_character", "static": true },
{ "file_offset": 1520720, "flags": 32, "name": "_rasterizer_draw_character" },
{ "file_offset": 1520720, "flags": 32, "name": "_rasterizer_draw_character", "static": true },
{ "file_offset": 1520960, "flags": 32, "name": "_rasterizer_draw_character_with_dropshadow", "static": true },
{ "file_offset": 1521328, "flags": 32, "name": "_rasterizer_draw_string" },
{ "file_offset": 1521840, "flags": 32, "name": "_rasterizer_draw_unicode_string" },
@@ -6265,7 +6265,7 @@
{ "file_offset": 1523552, "flags": 32, "name": "_rasterizer_transparent_geometry_stop" },
{ "file_offset": 1523568, "flags": 32, "name": "_rasterizer_sort_internal", "static": true },
{ "file_offset": 1523616, "flags": 32, "name": "_group_sorted_indices_cmpfn", "static": true },
{ "file_offset": 1524000, "flags": 32, "name": "_rasterizer_sort_external" },
{ "file_offset": 1524000, "flags": 32, "name": "_rasterizer_sort_external", "static": true },
{ "file_offset": 1524176, "flags": 32, "name": "_rasterizer_transparent_geometry_draw" },
{ "file_offset": 1524656, "flags": 32, "name": "_render_effects" },
{ "file_offset": 1524688, "flags": 32, "name": "_render_initialize" },
@@ -6388,8 +6388,8 @@
{ "file_offset": 1562672, "flags": 32, "name": "_triangle_strip_iterator_get_triangle" },
{ "file_offset": 1563024, "flags": 32, "name": "_multiplayer_scenario_description_get_list" },
{ "file_offset": 1563168, "flags": 32, "name": "_map_name_from_multiplayer_scenario_description_item" },
{ "file_offset": 1563280, "flags": 32, "name": "_scenario_call_disconnect_from_structure_bsp_procs" },
{ "file_offset": 1563312, "flags": 32, "name": "_scenario_call_reconnect_to_structure_bsp_procs" },
{ "file_offset": 1563280, "flags": 32, "name": "_scenario_call_disconnect_from_structure_bsp_procs", "static": true },
{ "file_offset": 1563312, "flags": 32, "name": "_scenario_call_reconnect_to_structure_bsp_procs", "static": true },
{ "file_offset": 1563344, "flags": 32, "name": "_scenario_initialize" },
{ "file_offset": 1563376, "flags": 32, "name": "_scenario_initialize_for_new_map" },
{ "file_offset": 1563456, "flags": 32, "name": "_scenario_dispose_from_old_map" },
@@ -22545,7 +22545,7 @@
{ "file_offset": 3033952, "flags": 0, "name": "_hs_source_files_block" },
{ "file_offset": 3034132, "flags": 0, "name": "_hs_syntax_data_definition" },
{ "file_offset": 3034148, "flags": 0, "name": "_hs_string_data_definition" },
{ "file_offset": 3034164, "flags": 0, "name": "_default_string" },
{ "file_offset": 3034164, "flags": 0, "name": "_default_string", "static": true },
{ "file_offset": 3034168, "flags": 0, "name": "_global_hud_anchor_names" },
{ "file_offset": 3034188, "flags": 0, "name": "_button_mappings", "static": true },
{ "file_offset": 3034204, "flags": 0, "name": "_time_code_time" },
@@ -23014,7 +23014,7 @@
{ "file_offset": 4450632, "flags": 0, "name": "_king_globals", "static": true },
{ "file_offset": 4451060, "flags": 0, "name": "_king_engine_num_hills", "static": true },
{ "file_offset": 4451064, "flags": 0, "name": "_king_engine_hills", "static": true },
{ "file_offset": 4451192, "flags": 0, "name": "_mp_sound_queue_count" },
{ "file_offset": 4451192, "flags": 0, "name": "_mp_sound_queue_count", "static": true },
{ "file_offset": 4451196, "flags": 0, "name": "_mp_sound_queue", "static": true },
{ "file_offset": 4451240, "flags": 0, "name": "_oddball_globals", "static": true },
{ "file_offset": 4451504, "flags": 0, "name": "_race_globals", "static": true },
@@ -0,0 +1,154 @@
# Five-function reconciliation — 2026-09-28
Canonical base: `51cd4d8b6793f863663d31a9b2a33fd68c5935e4`.
User request: reconcile the five-function handoff and push to the two canonical
repositories. The donor worktree was read only; no agents were launched.
## Bounded source package
The reconciliation takes the complete B3 declaration batch (`49905d70`), its
approved plane2d owner/body repair (`95acf7d6`) and network-game type-ownership
prerequisite K17 (`08aadd01`), and the complete K1–K16 + S follow-up
(`0f1a6c4d`). It does not harvest B3's gaining edits while discarding its debits.
The independent function patches are `b5bf62c4` (profile) and `5ac57092`
(effects), each with its park retirement and approved original-bug disclosure.
The source/ownership justification records are the donor's RF-CI, RF-CK,
RF-CR, RF-CQ, RF-DV and RF-EC packets under
`research/remaining_frontier_20260926/workers/`. The handoff being reconciled
is `95c0bff9`, `lead/UNPUSHED_EXACT_20260928b.md`. These are provenance
references, not a claim that every other donor commit was integrated.
Two mechanical conflicts were resolved:
- Virtual keyboard: retain canonical's genuine
`virtual_keyboard_get_current_character()` call while taking B3's attested
free-space helper call, static storage and `move_size` form. Do not revert
canonical's independent helper recovery to the donor's expansion.
- `hs_library_internal_compile.h`: retire the duplicate prototypes into the
owner headers as K1 requires. Preserve the completed packet's parameter
names in the moved `hs_compile_postprocess` declaration. No prototype-count
padding or alternative placement was introduced.
Canonical's separate physics water-depth recovery and talk-weight landing
remain intact. No whole donor-tree replacement or scorer change was made.
## Exact-function result against canonical
| Function | Meaningful | Padded | Classification |
| --- | ---: | ---: | --- |
| `_collision_move_point` | +4,744 | +4,752 | Recovered approved debit |
| `_player_profile_3wide_list_update` | +1,222 | +1,232 | Recovered approved debit |
| `_rasterizer_dynamic_geometry_initialize` | +473 | +480 | Recovered approved debit |
| `_compare_profile_sections` | +276 | +288 | New reconstruction under narrow ruling |
| `_effect_allowed_by_environment` | +124 | +128 | New reconstruction under narrow ruling |
| `_bitmap_copy` | −2,784 | −2,784 | Explicitly approved B3 debit |
| `__rasterizer_model_transparent_geometry_submit` | −1,285 | −1,296 | Explicitly approved B3 debit |
| **Net** | **+2,770** | **+2,800** | **+3 strict-exact functions** |
There are no additional exact losses. These two losing rows and their exact
source/header contexts remain preserved in the published base commit above;
pre-batch objects and trial receipts are retained locally as well.
The unchanged production progress model credits 128 rather than 124 bytes for
the effects function. Thus the progress-code increase is **2,774**, not 2,770.
This four-byte padding distinction is disclosed, not reported as newly
reconstructed meaningful code.
| Measure | Before | After |
| --- | ---: | ---: |
| Strict exact / 8,252 stable target owners | 7,642 | 7,645 |
| Halo credited code / 1,770,166 | 1,593,655 | 1,596,429 |
| Halo credited functions / 7,574 | 7,469 | 7,472 |
| Complete Halo objects / 468 | 394 | 396 |
| Halo credited data / 3,923,451 | 2,648,123 | 2,648,123 |
| Valid active parks | 70 | 68 |
Profile, flags and draw-primitives are admitted after current whole-object
audits. Bitmap-drawing is honestly revoked for `_bitmap_copy`. Screen-effect
stays Matching: the combined follow-up recovers the intermediate B3 loss,
and a fresh complete audit confirms it. These flips do not create function
credit. The three input/network naming changes are renames, not new matches.
## Source-policy disclosures
The complete owner corrections remain sensitive to VC7 declaration numbering.
Their gains are recoveries, not a general solution to that sensitivity.
S alone loses the units sentinel; the reviewed coherent combination does not.
S completes the January-sized projectile datum and removes both remaining
actor-perception views. Its five inherited offset assertions check real
January offsets (0x1FC, 0x200, 0x20C, 0x214, 0x224); they remain in place,
retargeted to the genuine type. Their numbering effect is load-bearing. No
new assertions, filler declarations, decorative parentheses, assembly,
optimization directives or yield-selected function moves were added.
RT1 prototype placement remains rule-derived rather than proven by January
image order. Later-build ownership/name evidence is not relabelled as original
January source text. The O function-order proposal and R research are not
part of this landing.
The two independent original-bug exceptions are narrow:
- Profile: the invalid-mode arm leaves `result` unassigned. January's range
check/sole-writer proof excludes that arm, and its read also follows the
genuinely nonreturning fatal-exit path. RF-EE independently re-derived the
range, callers, writer, SEH and halt evidence; RF-DW records `/Od`'s
`_RTC_UninitUse("result")` witness.
- Effects: invalid tag data can reach the default arm, but its unassigned
`allowed` read is reached only after the same nonreturning exit. This is
**not** a claim that the arm or invalid tag value is unreachable. RF-EB
records the `/Od` uninitialized-local witness and the explicit vacuum FALSE
assignment.
The canonical check independently decoded January's calls at 0x47e89C and
0x48b1BA, reads at 0x47e8A1 and 0x48b1BF, and the tail jump at 0x47c960.
A conservative intra-frame walk assuming every call returns reaches 205
instructions in the halt/death-loop region and no `ret`. No noreturn annotation,
initializer, warning suppression or general reachable-UB exception was added.
## Verification
- Independent two-function trial: exactly two gains, zero losses; only those
two objects change, and only their target code sections change outside debug
metadata. Named storage/imports/COMMON and all surplus helpers are unchanged.
- Combined full build and stable sweep: exactly the five gains and two approved
losses above; same 8,252 target identities. Talk-weight and units' sentinel
remain exact.
- A second checkpoint after cleaning all compiler-rule outputs rebuilt from
scratch and reproduced the identical 8,252-row snapshot, parks, admission,
fake-scan and test results. The admission/provider and shell-rebinding checks
were repeated on those freshly rebuilt objects.
- Profile (44/44), flags (16/16), draw-primitives (36/36), and screen-effect
(13/13): complete owned-section/symbol audits PASS; zero disagreements with
January PDB publics. All 56 surplus-provider identity rows pass, with 74
bounded pair links in both orders and no duplicate-definition diagnostics.
Expected unresolved-import exits are not represented as executable-link
success.
- Across the board, the only changed surplus definition is geometry's
`_plane2d_from_points`. It now equals January's selected decals copy and the
rebuilt decals provider in bytes and relocations; both link orders pass.
- Shell's semantic data owner is rebound `$T18502` → `$T18685` only after fresh
name-independent checks pass all 31 items: unchanged payload, flags, layout,
relocation destinations, referrers, owner properties and exact `_main`.
No data pin or credited amount is relaxed.
- Parks: 68 active, zero stale/invalid. Profile/effects retired together with
source; affected residuals retain the donor's dated rebaseline history.
- Admission audit: seven review candidates, zero contradicted, rejected or
revoked statuses after the explicit bitmap-drawing revocation.
- Full 467-unit `/W3 /Zs` comparison against archived canonical: 4,107 → 4,067,
no compile errors. Additions are exactly the disclosed 11 inherited math
conversion warnings exposed in vertex-shaders-runtime, one long-to-short
warning in main, and two qualifier warnings in hs-scenario-definitions.
The two independent functions have unchanged `/W3`, with one approved `/W4`
C4701 each.
- Pytest: 1,318 passed, five skipped, 100 subtests passed. Fake-source scan:
the same 26 leads. `git diff --check` clean.
- Objdiff remains 3.3.1, SHA-256
`090987aa22c0fe9b7d252b2b44c2c0c92c5dd3e9b5965d353060802226a13677`.
All generated receipts, original park records, preserved pre-batch objects,
candidate/rollback patches, fresh warning controls and provider-link logs are
under `scratch/astra_five_reconcile_20260928/`. Private executables, PDBs and SDK
assets are not published. Q10, COMMON waves, actions/main data-credit packets,
the jump-table denominator correction and unrelated donor research are outside
this reconciliation. Existing README and untracked research work are untouched.
-9
View File
@@ -86,7 +86,6 @@ symbols in this file:
#include "actions.h"
#include "actor_definitions.h"
#include "actor_perception.h"
#include "actors.h"
#include "ai.h"
#include "ai_communication.h"
@@ -121,14 +120,6 @@ enum
/* ---------- prototypes */
boolean unit_get_melee_range_and_ticks(
long unit_index,
boolean secondary,
short *melee_tick,
real *attack_time,
short *frame_count,
real *damage_time);
static real action_charge_find_target_range(
long actor_index,
short goal,
-1
View File
@@ -28,7 +28,6 @@ symbols in this file:
#include "cseries.h"
#include "actions.h"
#include "action_converse.h"
#include "actors.h"
#include "ai_communication.h"
-26
View File
@@ -1,26 +0,0 @@
/*
ACTION_CONVERSE.H
Public interface owned by ACTION_CONVERSE.C.
*/
#ifndef __ACTION_CONVERSE_H
#define __ACTION_CONVERSE_H
#pragma once
/* ---------- headers */
#include "cseries.h"
/* ---------- structures */
struct converse_state_data;
/* ---------- prototypes/ACTION_CONVERSE.C */
boolean action_converse_setup(
long actor_index,
long conversation_index,
struct converse_state_data *state_data);
#endif /* __ACTION_CONVERSE_H */
-1
View File
@@ -24,7 +24,6 @@ symbols in this file:
#include "actions.h"
#include "actor_definitions.h"
#include "actor_perception.h"
#include "actors.h"
#include "ai_scenario_definitions.h"
#include "props.h"
-1
View File
@@ -46,7 +46,6 @@ symbols in this file:
#define PATH_EXTERNAL_FLEE_ROUTINES
#include "actors.h"
#undef PATH_EXTERNAL_FLEE_ROUTINES
#include "actor_perception.h"
#include "ai.h"
#include "ai_communication.h"
#include "ai_scenario_definitions.h"
+1 -18
View File
@@ -53,6 +53,7 @@ symbols in this file:
#include "actor_definitions.h"
#include "ai_communication.h"
#include "props.h"
#include "game/game_allegiance.h"
/* ---------- constants */
@@ -78,24 +79,6 @@ enum
/* ---------- prototypes */
boolean game_team_is_ally(
short team_a,
short team_b);
long actor_target_unit_index(
long actor_index);
void actor_perception_forget_recent_damage(
long actor_index);
void actor_perception_retreat_successful(
long actor_index);
void actor_stimulus_suspicion(
long actor_index,
short suspicion_level,
long ticks);
/* ---------- globals */
/* ---------- public code */
-1
View File
@@ -249,7 +249,6 @@ symbols in this file:
#include "cseries.h"
#include "actions.h"
#include "actor_looking.h"
#include "actors.h"
#include "ai_communication.h"
#include "ai_debug.h"
-7
View File
@@ -55,13 +55,6 @@ symbols in this file:
/* ---------- prototypes */
long actor_target_unit_index(
long actor_index);
boolean actors_searching_same_position(
long actor_index,
long other_actor_index);
/* ---------- public code */
boolean action_search_setup_target(
+1
View File
@@ -16,6 +16,7 @@ symbols in this file:
/* ---------- headers */
#include "cseries.h"
#include "cseries/errors.h"
#include "actions.h"
#include "actor_definitions.h"
+1 -10
View File
@@ -79,6 +79,7 @@ symbols in this file:
#include "physics/collisions.h"
#include "scenario/scenario.h"
#include "units/unit_definitions.h"
#include "units/units.h"
#include "units/vehicle_definitions.h"
#include "units/vehicles.h"
@@ -139,16 +140,6 @@ static short action_vehicle_find_impromptu_seat(
real_vector3d *entry_facing,
real_point3d *hint_point);
/* This public Units owner is temporarily repeated here while its broad owner
* header is held stable for the parallel Bipeds closure audit. */
boolean unit_get_seat_entrance_point(
long unit_index,
long parent_unit_index,
short seat_index,
real_point3d *entrance_point,
real_point3d *seat_point,
real_point3d *hint_point);
/* ---------- globals */
/* ---------- public code */
-236
View File
@@ -416,41 +416,6 @@ typedef char firing_position_evaluation_context_size_assert[
/* ---------- prototypes */
boolean action_guard_setup_from_fleeing(
long actor_index,
struct flee_state_data *flee_state,
struct guard_state_data *state_data);
boolean action_guard_setup_from_combat_transition(
long actor_index,
struct guard_state_data *state_data);
boolean action_guard_setup_current_position(
long actor_index,
struct guard_state_data *state_data);
boolean action_guard_setup_find_position(
long actor_index,
long wait_ticks,
struct guard_state_data *state_data);
boolean action_guard_setup_postcombat(
long actor_index,
struct guard_state_data *state_data);
void actor_action_change(
long actor_index,
long new_action_type,
struct action_state_data *new_action_data);
long actor_perception_find_recent_damaging_prop_index(
long actor_index,
boolean enemies_only);
long ai_get_responsible_unit(
long object_index,
boolean include_self);
boolean actor_action_handle_combat_selection(
long actor_index);
@@ -461,34 +426,6 @@ boolean actor_action_allow_cover_seeking(
long actor_index,
boolean unopposable);
short vehicle_scripting_find_available_seats(
long vehicle_index,
char const *seat_substring_name,
short seat_desire_type,
short *seat_indices,
short maximum_seat_count);
boolean action_vehicle_setup_specific(
long actor_index,
long vehicle_index,
short seat_index,
struct vehicle_state_data *state_data);
void actor_perception_tried_to_uncover(
long actor_index,
long prop_index);
void actor_perception_tried_to_search(
long actor_index,
long prop_index);
void actor_perception_abandoned_search(
long actor_index,
long prop_index);
boolean actor_action_consider_grenade(
long actor_index);
boolean actor_action_test_grenade(
long actor_index);
@@ -507,63 +444,6 @@ boolean actor_action_try_to_throw_grenade(
long actor_index,
boolean known_trajectory);
boolean action_vehicle_setup_impromptu(
long actor_index,
long vehicle_index,
real attempt_distance,
real continue_distance,
struct vehicle_state_data *state_data);
boolean action_charge_setup(
long actor_index,
short goal,
struct charge_state_data *state_data);
boolean action_fight_setup(
long actor_index,
struct fight_state_data *state_data);
boolean action_uncover_setup_target(
long actor_index,
boolean able_to_search,
struct uncover_state_data *state_data);
boolean action_uncover_setup_pursuit(
long actor_index,
short firing_position_index,
struct uncover_state_data *state_data);
boolean action_search_setup_target(
long actor_index,
boolean must_charge,
struct search_state_data *state_data);
boolean action_search_setup_pursuit(
long actor_index,
short firing_position_index,
boolean tenacious,
struct search_state_data *state_data);
boolean action_search_setup_undirected(
long actor_index,
boolean tenacious,
struct search_state_data *state_data);
boolean action_wait_setup(
long actor_index,
boolean was_actively_searching,
struct wait_state_data *state_data);
boolean action_avoid_setup(
long actor_index,
struct avoid_state_data *state_data);
real vector_to_line_distance_squared3d(
real_point3d const *point,
real_vector3d const *vector,
real_point3d const *base,
real_vector3d const *height);
boolean actor_move_try_evasion_direction(
long actor_index,
real_vector2d *alignment_vector,
@@ -581,122 +461,6 @@ boolean actor_move_try_evasion_vector(
boolean *is_ledge,
void *collision_result);
void actor_stimulus_was_surprised(
long actor_index);
boolean actor_situation_try_new_target(
long actor_index,
long prop_index);
void action_sleep_control(
long actor_index);
void action_fight_begin(
long actor_index);
boolean action_fight_perform(
long actor_index);
void action_fight_update(
long actor_index);
void action_fight_control(
long actor_index);
void action_fight_end(
long actor_index);
void action_uncover_begin(
long actor_index);
boolean action_uncover_perform(
long actor_index);
void action_uncover_update(
long actor_index);
void action_uncover_control(
long actor_index);
void action_uncover_modify_color(
long actor_index,
real_argb_color *color);
void action_uncover_flush_position_indices(
long actor_index);
void action_guard_begin(
long actor_index);
boolean action_guard_perform(
long actor_index);
void action_guard_update(
long actor_index);
void action_guard_control(
long actor_index);
void action_guard_end(
long actor_index);
void action_guard_modify_color(
long actor_index,
real_argb_color *color);
void action_guard_replace_prop(
long actor_index,
long invalid_prop_index,
long replacement_prop_index);
void action_guard_flush_position_indices(
long actor_index);
void action_guard_flush_structure_indices(
long actor_index);
void action_search_begin(
long actor_index);
boolean action_search_perform(
long actor_index);
void action_search_update(
long actor_index);
void action_search_control(
long actor_index);
void action_search_flush_position_indices(
long actor_index);
void action_wait_begin(
long actor_index);
boolean action_wait_perform(
long actor_index);
void action_wait_update(
long actor_index);
void action_wait_control(
long actor_index);
boolean action_vehicle_perform(
long actor_index);
void action_vehicle_update(
long actor_index);
void action_charge_begin(
long actor_index);
boolean action_charge_perform(
long actor_index);
void action_charge_update(
long actor_index);
void action_charge_control(
long actor_index);
void action_converse_begin(
long actor_index);
boolean action_converse_perform(
long actor_index);
void action_converse_update(
long actor_index);
void action_converse_control(
long actor_index);
void action_converse_end(
long actor_index);
void action_converse_replace_prop(
long actor_index,
long invalid_prop_index,
long replacement_prop_index);
void action_avoid_begin(
long actor_index);
boolean action_avoid_perform(
long actor_index);
void action_avoid_update(
long actor_index);
void action_avoid_control(
long actor_index);
void action_avoid_end(
long actor_index);
static boolean actor_action_allowed_to_enter_vehicle(
long actor_index,
+184 -5
View File
@@ -426,8 +426,20 @@ boolean actor_action_set_default_state(
boolean actor_action_handle_initial_action(
long actor_index);
void action_charge_begin(
long actor_index);
void action_charge_update(
long actor_index);
void action_charge_control(
long actor_index);
boolean action_charge_is_leaping(
long actor_index);
boolean action_charge_perform(
long actor_index);
boolean action_charge_setup(
long actor_index,
short goal,
struct charge_state_data *state_data);
boolean actor_action_handle_pending_command_list(
long actor_index);
boolean actor_action_handle_surprise(
@@ -467,6 +479,9 @@ boolean actor_action_handle_active_cover_seeking(
long actor_index,
boolean allow_defensive_cover,
boolean allow_active_cover);
boolean actors_searching_same_position(
long actor_index,
long other_actor_index);
boolean actor_action_handle_danger_avoidance(
long actor_index);
boolean actor_action_handle_vehicle_entry(
@@ -534,11 +549,6 @@ void action_alert_flush_structure_indices(
/* ---------- prototypes/ACTION_CHARGE.C */
real normalize2d(
real_vector2d *vector);
real normalize3d(
real_vector3d *vector);
/* ---------- prototypes/ACTION_OBEY.C */
boolean action_obey_command_list_setup(
@@ -569,10 +579,19 @@ void action_obey_describe_command(
/* ---------- prototypes/ACTION_FIGHT.C */
boolean action_fight_setup(
long actor_index,
struct fight_state_data *state_data);
void action_fight_begin(
long actor_index);
void action_fight_end(
long actor_index);
void action_fight_update(
long actor_index);
void action_fight_control(
long actor_index);
boolean action_fight_perform(
long actor_index);
/* ---------- prototypes/ACTION_FLEE.C */
@@ -608,15 +627,175 @@ boolean action_flee_blind_panic(
/* ---------- prototypes/ACTION_CONVERSE.C */
boolean action_converse_setup(
long actor_index,
long conversation_index,
struct converse_state_data *state_data);
void action_converse_begin(
long actor_index);
boolean action_converse_perform(
long actor_index);
void action_converse_update(
long actor_index);
void action_converse_control(
long actor_index);
void action_converse_replace_prop(
long actor_index,
long old_prop_index,
long new_prop_index);
void actor_conversation_control(
long actor_index);
void action_converse_end(
long actor_index);
/* ---------- prototypes/ACTION_VEHICLE.C */
void action_vehicle_begin(
long actor_index);
void action_vehicle_update(
long actor_index);
void action_vehicle_control(
long actor_index);
boolean action_vehicle_setup_specific(
long actor_index,
long vehicle_index,
short seat_index,
struct vehicle_state_data *state_data);
boolean action_vehicle_perform(
long actor_index);
boolean action_vehicle_setup_impromptu(
long actor_index,
long vehicle_index,
real attempt_distance,
real continue_distance,
struct vehicle_state_data *state_data);
/* ---------- prototypes/ACTION_GUARD.C */
boolean action_guard_setup_current_position(
long actor_index,
struct guard_state_data *state_data);
boolean action_guard_setup_find_position(
long actor_index,
long wait_ticks,
struct guard_state_data *state_data);
boolean action_guard_setup_postcombat(
long actor_index,
struct guard_state_data *state_data);
boolean action_guard_setup_from_combat_transition(
long actor_index,
struct guard_state_data *state_data);
boolean action_guard_setup_from_fleeing(
long actor_index,
struct flee_state_data *flee_state,
struct guard_state_data *state_data);
void action_guard_begin(
long actor_index);
void action_guard_end(
long actor_index);
void action_guard_flush_position_indices(
long actor_index);
void action_guard_flush_structure_indices(
long actor_index);
void action_guard_modify_color(
long actor_index,
real_argb_color *color);
void action_guard_replace_prop(
long actor_index,
long old_prop_index,
long new_prop_index);
void action_guard_update(
long actor_index);
boolean action_guard_perform(
long actor_index);
void action_guard_control(
long actor_index);
/* ---------- prototypes/ACTION_UNCOVER.C */
boolean action_uncover_setup_target(
long actor_index,
boolean able_to_search,
struct uncover_state_data *state_data);
boolean action_uncover_setup_pursuit(
long actor_index,
short firing_position_index,
struct uncover_state_data *state_data);
boolean action_uncover_perform(
long actor_index);
void action_uncover_control(
long actor_index);
void action_uncover_flush_position_indices(
long actor_index);
void action_uncover_modify_color(
long actor_index,
real_argb_color *color);
void action_uncover_begin(
long actor_index);
void action_uncover_update(
long actor_index);
/* ---------- prototypes/ACTION_SEARCH.C */
boolean action_search_setup_target(
long actor_index,
boolean must_charge,
struct search_state_data *state_data);
boolean action_search_setup_pursuit(
long actor_index,
short firing_position_index,
boolean tenacious,
struct search_state_data *state_data);
boolean action_search_setup_undirected(
long actor_index,
boolean tenacious,
struct search_state_data *state_data);
void action_search_update(
long actor_index);
void action_search_flush_position_indices(
long actor_index);
void action_search_control(
long actor_index);
void action_search_begin(
long actor_index);
boolean action_search_perform(
long actor_index);
/* ---------- prototypes/ACTION_WAIT.C */
void action_wait_begin(
long actor_index);
boolean action_wait_perform(
long actor_index);
void action_wait_control(
long actor_index);
boolean action_wait_setup(
long actor_index,
boolean was_actively_searching,
struct wait_state_data *state_data);
void action_wait_update(
long actor_index);
/* ---------- prototypes/ACTION_AVOID.C */
boolean action_avoid_setup(
long actor_index,
struct avoid_state_data *state_data);
void action_avoid_begin(
long actor_index);
void action_avoid_end(
long actor_index);
boolean action_avoid_perform(
long actor_index);
void action_avoid_update(
long actor_index);
void action_avoid_control(
long actor_index);
/* ---------- prototypes/ACTION_SLEEP.C */
void action_sleep_control(
long actor_index);
/* ---------- globals */
+1 -1
View File
@@ -153,9 +153,9 @@ symbols in this file:
#include "cseries.h"
#include "cseries/errors.h"
#include "cseries/sort.h"
#include "actor_definitions.h"
#include "actor_perception.h"
#include "actors.h"
#include "ai.h"
#include "ai_debug.h"
-13
View File
@@ -1,13 +0,0 @@
#ifndef __ACTOR_ITERATORS_H
#define __ACTOR_ITERATORS_H
struct actor_datum;
struct actor_iterator;
void actor_iterator_new(
struct actor_iterator *iterator,
boolean active_only);
struct actor_datum *actor_iterator_next(
struct actor_iterator *iterator);
#endif // __ACTOR_ITERATORS_H
+2 -1
View File
@@ -166,13 +166,14 @@ symbols in this file:
/* ---------- headers */
#include "cseries.h"
#include "ai/actor_looking.h"
#include "math/real_math.h"
#include "actors.h"
#include "actor_definitions.h"
#include "ai_debug.h"
#include "ai_profile.h"
#include "cseries/errors.h"
#include "game/game.h"
#include "items/weapon_definitions.h"
#include "main/console.h"
#include "physics/collisions.h"
-15
View File
@@ -1,15 +0,0 @@
#ifndef __ACTOR_LOOKING_H
#define __ACTOR_LOOKING_H
union real_vector2d;
void actor_look_affect_movement(
long actor_index);
void actor_look_update(
long actor_index);
boolean valid_real_normal2d(
union real_vector2d const *normal);
void actor_look_secondary_stop(
long actor_index);
#endif // __ACTOR_LOOKING_H
+1 -1
View File
@@ -210,7 +210,7 @@ symbols in this file:
#define PATH_EXTERNAL_FLEE_ROUTINES
#include "ai/actions.h"
#include "ai/actor_definitions.h"
#include "ai/actor_looking.h"
#include "math/real_math.h"
#include "ai/actor_types.h"
#include "ai/actors.h"
#include "ai/ai_communication.h"
+6 -125
View File
@@ -260,6 +260,7 @@ symbols in this file:
#include "ai_profile.h"
#include "encounters.h"
#include "game/game.h"
#include "game/game_allegiance.h"
#include "items/projectile_definitions.h"
#include "items/projectiles.h"
#include "items/weapon_definitions.h"
@@ -438,31 +439,6 @@ enum
/* ---------- structures */
struct actor_perception_ai_debug_state_view
{
byte __unknown000[6];
boolean perception_ignore_player_props;
boolean perception_blind_player_props;
byte __unknown008[3];
boolean perception_blind_all_props;
boolean perception_deaf_all_props;
byte __unknown00D[0x94];
boolean perception_trace_player_awareness;
};
struct actor_perception_debug_info_view
{
byte __unknown0000[0x6578];
short perception_awareness_speed;
short evaluation_mode;
};
#define actor_perception_ai_debug_get() \
((struct actor_perception_ai_debug_state_view *)&ai_debug)
#define actor_perception_debug_get(index) \
((struct actor_perception_debug_info_view *)&actor_debug_array[(index)])
#define actor_perception_object_get(index) \
((struct object_datum *)object_get_and_verify_type( \
(index), _object_mask_all))
@@ -748,12 +724,6 @@ struct actor_target_weight_weapon_definition_view
real minimum_target_range;
};
struct actor_perception_projectile_datum_view
{
byte __unknown000[0x1DC];
byte attachment_flags;
};
struct actor_perception_vehicle_definition_view
{
byte __unknown000[4];
@@ -762,13 +732,6 @@ struct actor_perception_vehicle_definition_view
byte danger_zone_flags;
};
struct actor_perception_projectile_view
{
byte __unknown000[0x1F0];
real time_remaining;
real arming_rate;
};
struct actor_perception_communication_context
{
short source_team;
@@ -991,20 +954,8 @@ typedef char actor_emotion_definition_minimum_stand_offset_assert[
offsetof(struct actor_definition, defensive.defensive_crouch_min_stand_time) == 0x304 ? 1 : -1];
typedef char actor_emotion_definition_minimum_crouch_offset_assert[
offsetof(struct actor_definition, defensive.defensive_crouch_min_crouch_time) == 0x308 ? 1 : -1];
typedef char actor_perception_ai_debug_ignore_players_offset_assert[
offsetof(struct actor_perception_ai_debug_state_view, perception_ignore_player_props) == 6 ? 1 : -1];
typedef char actor_perception_ai_debug_blind_players_offset_assert[
offsetof(struct actor_perception_ai_debug_state_view, perception_blind_player_props) == 7 ? 1 : -1];
typedef char actor_perception_ai_debug_blind_all_offset_assert[
offsetof(struct actor_perception_ai_debug_state_view, perception_blind_all_props) == 11 ? 1 : -1];
typedef char actor_perception_ai_debug_deaf_all_offset_assert[
offsetof(struct actor_perception_ai_debug_state_view, perception_deaf_all_props) == 12 ? 1 : -1];
typedef char actor_perception_ai_debug_trace_offset_assert[
offsetof(struct actor_perception_ai_debug_state_view, perception_trace_player_awareness) == 0xA1 ? 1 : -1];
typedef char actor_perception_debug_awareness_speed_offset_assert[
offsetof(struct actor_perception_debug_info_view, perception_awareness_speed) == 0x6578 ? 1 : -1];
typedef char actor_perception_projectile_attachment_flags_offset_assert[
offsetof(struct actor_perception_projectile_datum_view, attachment_flags) == 0x1DC ? 1 : -1];
offsetof(struct actor_debug_info, perception_awareness_speed) == 0x6578 ? 1 : -1];
typedef char actor_perception_source_unit_sound_offset_assert[
offsetof(struct unit_definition, unit.constant_sound) == 0x182 ? 1 : -1];
typedef char actor_perception_source_actor_target_offset_assert[
@@ -1097,41 +1048,6 @@ static long actor_perception_qsort_compare_optional_props(
void const *a,
void const *b);
void actor_situation_update_target_status(
long actor_index);
void actor_situation_combat_status_update(
long actor_index);
real actor_compute_prop_target_weight(
long actor_index,
long prop_index);
boolean actor_compute_prop_unopposable(
long actor_index,
long prop_index);
long ai_get_responsible_unit(
long object_index,
boolean include_self);
long vehicle_find_pathfinding_surface_index(
long vehicle_index,
real_point3d *position);
long biped_find_pathfinding_surface_index(
long biped_index,
real_point3d *position);
boolean actor_attacking_target(
long actor_index,
real_vector3d *attack_vector);
void actor_stimulus_prop_sighted(
long actor_index,
long prop_index,
boolean initial_acknowledgement);
static long actor_perception_unit_from_swarm(
long swarm_actor_index,
long actor_index,
@@ -1154,37 +1070,6 @@ static void actor_perception_refresh_test_object(
struct actor_perception_refresh_list *friend_list,
struct actor_perception_refresh_list *enemy_list);
void actor_input_sample_position(
long actor_index,
long unit_index,
struct actor_position_data *position);
boolean vehicle_causes_collision_damage(
long vehicle_index);
boolean game_team_is_enemy(
short team_index0,
short team_index1);
short actor_visibility_at_point(
long actor_index,
struct actor_position_data const *position,
real_point3d const *target_position,
char lighting,
short line_of_sight,
boolean use_maximum_distance,
boolean target_is_player,
short perception_knowledge);
short actor_audibility_at_point(
long actor_index,
struct actor_position_data const *position,
real_point3d const *source_position,
struct location const *source_location,
short source_type,
real scale,
short line_of_sight);
static boolean actor_perception_assess_suicide_danger(
long actor_index,
long object_index,
@@ -1193,10 +1078,6 @@ static boolean actor_perception_assess_suicide_danger(
boolean enemy,
boolean visible);
real actor_look_compute_prop_interest(
long actor_index,
long prop_index);
/* TU-local copy: the same macro exists in actor_stimulus.c. */
#define prop_acknowledged(prop) \
((prop)->state >= _prop_state_becoming_unacknowledged && \
@@ -5513,8 +5394,8 @@ static void actor_perception_refresh_test_object(
}
else if (current_object->object.type == _object_type_projectile)
{
struct actor_perception_projectile_datum_view *projectile =
(struct actor_perception_projectile_datum_view *)
struct projectile_datum *projectile =
(struct projectile_datum *)
current_object;
struct projectile_definition *projectile_definition =
projectile_definition_get(
@@ -5522,7 +5403,7 @@ static void actor_perception_refresh_test_object(
if (projectile_definition->projectile.danger_radius > 0.0f &&
(current_object->object.parent_object_index == NONE ||
TEST_FLAG(projectile->attachment_flags, 5)))
TEST_FLAG(projectile->projectile.flags, 5)))
{
struct actor_position_data position;
real_point3d origin;
@@ -6637,7 +6518,7 @@ void actor_perception_update(
case _prop_state_becoming_acknowledged:
{
struct actor_perception_debug_info_view *debug = actor_perception_debug_get(DATUM_INDEX_TO_ABSOLUTE_INDEX(actor_index));
struct actor_debug_info *debug = &actor_debug_array[DATUM_INDEX_TO_ABSOLUTE_INDEX(actor_index)];
if (prop->perception == _actor_perception_none)
{
-45
View File
@@ -1,45 +0,0 @@
/*
ACTOR_PERCEPTION.H
header included in hcex build.
*/
#ifndef __ACTOR_PERCEPTION_H
#define __ACTOR_PERCEPTION_H
#pragma once
/* ---------- prototypes/ACTOR_PERCEPTION.C */
struct actor_position_data;
union real_point3d;
short actor_get_perception_knowledge(
long actor_index,
long prop_index);
short actor_visibility_at_point(
long actor_index,
struct actor_position_data const *position,
union real_point3d const *target_position,
char lighting,
short line_of_sight,
boolean use_maximum_distance,
boolean target_is_player,
short perception_knowledge);
void actor_situation_update_target_status(
long actor_index);
void actor_situation_combat_status_update(
long actor_index);
boolean actor_situation_try_new_target(
long actor_index,
long prop_index);
boolean actor_perception_friend_prop_is_attacking(
long actor_index,
long friend_prop_index,
real_vector3d *attack_vector);
void actor_perception_unreachable(
long actor_index,
long prop_index,
boolean unreachable);
#endif // __ACTOR_PERCEPTION_H
-3
View File
@@ -159,9 +159,6 @@ void infection_swarm_aim_jump(
real jump_magnitude,
real_vector3d *jump_velocity);
void unit_detach_from_parent(
long unit_index);
/* ---------- globals */
struct actor_type_definition actor_type_infection =
+2 -3
View File
@@ -283,14 +283,13 @@ symbols in this file:
#include "cseries.h"
#include "actors.h"
#include "actor_definitions.h"
#include "actor_iterators.h"
#include "actor_placement.h"
#include "actor_types.h"
#include "encounters.h"
#include "props.h"
#include "ai.h"
#include "actor_looking.h"
#include "math/real_math.h"
#include "ai_communication.h"
#include "ai_debug.h"
#include "ai_profile.h"
@@ -2372,7 +2371,7 @@ long actor_new(
actor_debug_info->charge_last_time = NONE;
actor_debug_info->field_19C = NONE;
actor_debug_info->vision_last_time = NONE;
actor_debug_info->num_debug_evaluations = NONE;
actor_debug_info->perception_awareness_speed = NONE;
actor_type_initialize(actor_index);
}
+72
View File
@@ -1341,6 +1341,15 @@ boolean actor_compute_prop_unopposable(
real actor_compute_prop_target_weight(
long actor_index,
long prop_index);
short actor_visibility_at_point(
long actor_index,
struct actor_position_data const *position,
union real_point3d const *target_position,
char lighting,
short line_of_sight,
boolean use_maximum_distance,
boolean target_is_player,
short perception_knowledge);
boolean actor_perception_desire_prop(
long actor_index,
short desired_target_state,
@@ -1363,10 +1372,17 @@ void actor_perception_acknowledge(
long prop_index,
boolean had_orphan,
boolean expected_acknowledgement);
short actor_get_perception_knowledge(
long actor_index,
long prop_index);
boolean actor_perception_become_acknowledged(
long actor_index,
long prop_index,
boolean *expected_acknowledgement_out);
void prop_status_refresh(
long actor_index,
long prop_index,
struct actor_position_data *position);
boolean actor_perception_create_orphan_from_friend(
long actor_index,
long unit_index,
@@ -1376,14 +1392,36 @@ long actor_perception_find_killer_prop_index(
long actor_index,
long prop_index,
boolean enemies_only);
long actor_perception_find_recent_damaging_prop_index(
long actor_index,
boolean enemies_only);
void actor_perception_forget_recent_damage(
long actor_index);
void actor_perception_retreat_successful(
long actor_index);
void actor_perception_find_prop_pathfinding_location(
long actor_index,
long prop_index);
void actor_perception_tried_to_uncover(
long actor_index,
long prop_index);
void actor_perception_tried_to_search(
long actor_index,
long prop_index);
void actor_perception_abandoned_search(
long actor_index,
long prop_index);
void actor_perception_find_sense_position(
long actor_index,
real_point3d const *position,
long prop_index,
struct actor_position_data *sense_position);
void prop_position_refresh(
long actor_index,
long prop_index,
struct actor_position_data *position,
boolean refresh_position,
boolean refresh_vehicle);
short actor_audibility_at_point(
long actor_index,
struct actor_position_data const *sense_position,
@@ -1396,11 +1434,22 @@ void actor_perception_update(
long actor_index);
void actor_situation_update(
long actor_index);
boolean actor_perception_friend_prop_is_attacking(
long actor_index,
long friend_prop_index,
real_vector3d *attack_vector);
void actor_emotion_update(
long actor_index);
void actor_perception_unreachable(
long actor_index,
long prop_index,
boolean unreachable);
boolean actor_emotion_flee_with_friends(
long actor_index,
real *desire_to_flee);
boolean actor_situation_try_new_target(
long actor_index,
long prop_index);
/* ---------- prototypes/ACTOR_STIMULUS.C */
@@ -1411,6 +1460,10 @@ void actor_stimulus_surprise(
short surprise_level,
long prop_index,
real_vector3d const *surprise_vector);
void actor_stimulus_suspicion(
long actor_index,
short suspicion_combat_status,
long suspicion_timer);
void actor_stimulus_enter_combat_found_body(
long actor_index,
long prop_index);
@@ -1433,6 +1486,10 @@ void actor_stimulus_environmental_noise(
void actor_stimulus_heard_shooting(
long actor_index,
long prop_index);
void actor_stimulus_prop_sighted(
long actor_index,
long prop_index,
boolean initial_acknowledgement);
void actor_stimulus_noticed_danger_zone(
long actor_index,
short danger_type,
@@ -1471,13 +1528,24 @@ void actor_stimulus_prop_acknowledged(
long prop_index,
boolean reappearance,
boolean expected_acknowledgement);
void actor_stimulus_was_surprised(
long actor_index);
// prototypes/ACTOR_LOOKING.C
void actor_look_secondary_stop(
long actor_index);
real actor_look_compute_prop_interest(
long actor_index,
long prop_index);
void actor_looking_test_validity(
long actor_index,
real_vector3d const *vector,
boolean *aiming_valid,
boolean *looking_valid);
void actor_look_update(
long actor_index);
void actor_look_affect_movement(
long actor_index);
void actor_get_vision_distances(
long actor_index,
@@ -1486,6 +1554,10 @@ void actor_get_vision_distances(
real horizontal_angle,
real *full_distance_reference,
real *partial_distance_reference);
void actor_situation_update_target_status(
long actor_index);
void actor_situation_combat_status_update(
long actor_index);
void actor_berserk(
long actor_index,
+1 -2
View File
@@ -208,10 +208,8 @@ symbols in this file:
#include "ai/ai_communication.h"
#include "ai/ai_debug.h"
#include "ai/ai_profile.h"
#include "ai/ai_runtime.h"
#include "ai/ai_scenario_definitions.h"
#include "ai/ai_script.h"
#include "ai/actor_iterators.h"
#include "ai/actor_placement.h"
#include "ai/actor_types.h"
#include "ai/actions.h"
@@ -228,6 +226,7 @@ symbols in this file:
#include "game/game_globals.h"
#include "game/players.h"
#include "main/console.h"
#include "memory/data.h"
#include "objects/damage.h"
#include "physics/collision_usage.h"
+44
View File
@@ -97,10 +97,16 @@ struct ai_information_packet
void ai_initialize(
void);
void ai_dispose(
void);
void ai_dispose_from_old_map(
void);
void ai_initialize_for_new_map(
void);
void ai_place(
void);
void ai_globals_ai_active(
boolean enabled);
void ai_update(
void);
void ai_disconnect_from_structure_bsp(
@@ -109,8 +115,16 @@ void ai_reconnect_to_structure_bsp(
void);
void ai_globals_dialogue_triggers_enabled(
boolean enabled);
void ai_globals_grenades_enabled(
boolean enabled);
void ai_update_team_status(
void);
void ai_handle_bump(
long unit_index,
long object_index,
union real_vector3d const *old_velocity);
void ai_create_mounted_weapons_for_unit(
long unit_index);
long ai_get_race_from_team_index(
short team_index);
void ai_get_major_upgrade_chance(
@@ -118,6 +132,11 @@ void ai_get_major_upgrade_chance(
boolean *upgrade_major,
boolean *random,
real *chance);
void ai_erase(
long encounter_index,
long platoon_index,
long squad_index,
boolean immediate);
boolean ai_consider_major_upgrade(
long encounter_index,
short squad_index,
@@ -131,6 +150,25 @@ boolean ai_try_vehicle_eviction(
long actor_index,
long entering_unit_index,
boolean immediate);
long ai_get_responsible_unit(
long object_index,
boolean responsible_for_weapon_fire);
void ai_handle_death(
long unit_index,
long killer_object_index,
short damage_category);
boolean ai_handle_killing_spree(
long unit_index,
short killing_spree_count);
void ai_handle_allegiance_status_changed(
short team1_index,
short team2_index,
boolean currently_broken,
boolean permanently_broken);
void ai_handle_allegiance_broken_notification(
short team1_index,
short team2_index,
boolean broken);
boolean ai_test_ballistic_line_of_fire(
long actor_index,
union real_point3d const *origin,
@@ -184,6 +222,12 @@ void ai_handle_damage(
real fraction,
union real_vector3d *damage_velocity,
boolean delayed);
void ai_handle_deleted_object(
long object_index);
void ai_handle_unit_effect(
long unit_index,
short effect_type,
short volume);
void ai_handle_enter_vehicle(
long unit_index,
long vehicle_index);
-42
View File
@@ -549,9 +549,7 @@ symbols in this file:
#include "ai_profile.h"
#include "ai_script.h"
#include "actions.h"
#include "action_converse.h"
#include "actor_definitions.h"
#include "actor_perception.h"
#include "actors.h"
#include "actor_types.h"
#include "ai_scenario_definitions.h"
@@ -1054,8 +1052,6 @@ static boolean ai_conversation_line_perform(
long conversation_index);
static void ai_conversation_line_end(
long conversation_index);
boolean actor_is_fighting(
long actor_index);
static void actor_reset_idle_vocalization_timer(
long actor_index);
static void ai_communication_handle_received_looking(
@@ -1068,29 +1064,8 @@ static void ai_communication_update_speech_timers(
short vocalization_type,
short dialogue_type_index,
short reply_table_index);
short unit_test_speech(
long unit_index,
short priority,
boolean allow_recursive_lookup,
boolean allow_queue,
long *unit_last_speech_time,
short *vocalization_type_reference,
long *sound_definition_index_reference);
void unit_speak(
long unit_index,
short play_type,
struct unit_speech_item const *speech_item);
boolean sound_scripted_dialog_is_playing(
void);
void ai_handle_allegiance_broken_notification(
short team1_index,
short team2_index,
boolean broken);
void actor_iterator_new(
struct actor_iterator *iterator,
boolean active_only);
struct actor_datum *actor_iterator_next(
struct actor_iterator *iterator);
static boolean ai_conversation_find_participant(
long conversation_index,
short participant_index,
@@ -1107,23 +1082,6 @@ static long ai_communication_find_actor_to_reply_to_player(
short vocalization_type,
short damage_category,
real *reply_rating_reference);
void actor_perception_find_sense_position(
long actor_index,
real_point3d const *position,
long prop_index,
struct actor_position_data *sense_position);
short actor_audibility_at_point(
long actor_index,
struct actor_position_data const *position,
real_point3d const *source_position,
struct location const *source_location,
short source_type,
real scale,
short line_of_sight);
void actor_handle_communication(
long actor_index,
long prop_index,
struct ai_information_packet *information);
extern short global_communication_table_indices[NUMBER_OF_COMMUNICATION_TYPES];
extern struct ai_communication_globals_view *ai_globals;
+4 -8
View File
@@ -5,6 +5,7 @@ AI_DEBUG.C
/* ---------- headers */
#include "cseries.h"
#include "cseries/errors.h"
#include "ai_debug.h"
#include "actions.h"
@@ -22,8 +23,8 @@ AI_DEBUG.C
#include "camera/observer.h"
#include "editor/editor_stubs.h"
#include "game/game.h"
#include "game/player_control.h"
#include "game/players.h"
#include "main/console.h"
#include "memory/data.h"
#include "objects/damage.h"
#include "physics/collision_bsp_definitions.h"
@@ -231,11 +232,6 @@ static void ai_debug_render_path_nodes(
boolean render_polygons,
boolean render_costs,
boolean render_closest);
void actor_iterator_new(
struct actor_iterator *iterator,
boolean active_only);
struct actor_datum *actor_iterator_next(
struct actor_iterator *iterator);
/* ---------- globals */
struct ai_debug_state ai_debug;
@@ -4221,13 +4217,13 @@ static void ai_debug_communication_toggle_bits(
if (clear_count)
{
bit_vector_or(vector_size, new_vector, vector, vector);
console_printf(NULL, "set %d flags", clear_count);
console_printf(FALSE, "set %d flags", clear_count);
}
else if (set_count)
{
bit_vector_not(vector_size, new_vector, new_vector);
bit_vector_and(vector_size, new_vector, vector, vector);
console_printf(NULL, "cleared %d flags", set_count);
console_printf(FALSE, "cleared %d flags", set_count);
}
return;
+5 -1
View File
@@ -504,7 +504,7 @@ struct actor_debug_info
long vision_last_time;
real vision_last_maximum_distance;
real vision_last_perception_factor;
short num_debug_evaluations;
short perception_awareness_speed;
short firing_position_type_mismatch_ticks;
};
@@ -539,9 +539,13 @@ void ai_debug_render(
void ai_debug_vocalize(
char const *priority_name,
char const *vocalization_name);
void ai_debug_speak_list(
char const *list_name);
void ai_debug_change_selected_encounter(
boolean a1);
void ai_debug_teleport_to(
long ai_index);
void ai_debug_change_selected_actor(
boolean a1);
+1 -2
View File
@@ -83,7 +83,6 @@ symbols in this file:
#include "cseries/cseries.h"
#include "ai/actors.h"
#include "ai/actor_iterators.h"
#include "ai/encounters.h"
#include "ai/props.h"
@@ -116,7 +115,7 @@ enum
/* ---------- structures */
/* The iterator's public API is in actor_iterators.h. This concrete layout
/* The iterator's public API is in encounters.h. This concrete layout
* agrees with its ACTORS.C owner and the January 28-byte caller frame. */
struct actor_iterator
{
-60
View File
@@ -1,60 +0,0 @@
/*
AI_RUNTIME.H
*/
#ifndef __AI_RUNTIME_H
#define __AI_RUNTIME_H
#pragma once
/* ---------- headers */
#include "cseries/cseries.h"
/* ---------- prototypes/AI.C */
void ai_dispose(
void);
void ai_dispose_from_old_map(
void);
void ai_globals_ai_active(
boolean enabled);
void ai_globals_grenades_enabled(
boolean enabled);
long ai_get_responsible_unit(
long object_index,
boolean responsible_for_weapon_fire);
void ai_handle_bump(
long unit_index,
long object_index,
union real_vector3d const *old_velocity);
void ai_handle_death(
long unit_index,
long killer_object_index,
short damage_category);
boolean ai_handle_killing_spree(
long unit_index,
short killing_spree_count);
void ai_handle_allegiance_broken_notification(
short team1_index,
short team2_index,
boolean broken);
void ai_handle_allegiance_status_changed(
short team1_index,
short team2_index,
boolean currently_broken,
boolean permanently_broken);
void ai_create_mounted_weapons_for_unit(
long unit_index);
void ai_handle_deleted_object(
long object_index);
void ai_handle_unit_effect(
long unit_index,
short effect_type,
short volume);
void ai_erase(
long encounter_index,
long platoon_index,
long squad_index,
boolean immediate);
#endif // __AI_RUNTIME_H
-4
View File
@@ -446,12 +446,9 @@ symbols in this file:
#include "cseries.h"
#include "ai/ai.h"
#include "ai/ai_runtime.h"
#include "ai/actions.h"
#include "ai/actor_iterators.h"
#include "ai/actor_definitions.h"
#include "ai/actor_types.h"
#include "ai/actor_looking.h"
#include "ai/actors.h"
#include "ai/ai_communication.h"
#include "ai/ai_debug.h"
@@ -472,7 +469,6 @@ symbols in this file:
#include "scenario/scenario_definitions.h"
#include "units/bipeds.h"
#include "units/units.h"
#include "units/vehicle_scripting.h"
/* ---------- constants */
+77
View File
@@ -68,6 +68,12 @@ void ai_script_dispose_from_old_map(
void);
void ai_scripting_reconnect(
void);
short ai_scripting_conversation_line(
short conversation_index);
short ai_scripting_conversation_status(
short conversation_index);
void ai_scripting_retreat(
long ai_reference);
void ai_scripting_erase_all(
void);
void ai_index_to_string(
@@ -93,6 +99,22 @@ long object_list_from_ai_reference(
long ai_reference);
struct ai_script_vehicle_enterable *ai_scripting_find_vehicle_enterable(
long vehicle_index);
void ai_scripting_vehicle_enterable_distance(
long ai_reference,
real distance);
void ai_scripting_vehicle_enterable_team(
long object_list_index,
short team);
void ai_scripting_vehicle_enterable_actor_type(
long object_list_index,
short actor_type);
void ai_scripting_vehicle_enterable_actors(
long vehicle_index,
long actor_list_index);
void ai_scripting_vehicle_enterable_disable(
long vehicle_index);
void ai_scripting_detach_unit(
long unit_index);
void ai_scripting_attach_unit(
long unit_index,
long ai_reference);
@@ -126,6 +148,13 @@ void ai_scripting_maneuver_enable(
void ai_scripting_migrate_by_unit(
long object_list_index,
long target_ai_reference);
void ai_scripting_migrate_and_speak(
long source_ai_reference,
long target_ai_reference,
char const *speech_type);
void ai_scripting_allegiance_remove(
short team_a,
short team_b);
void ai_scripting_berserk(
long ai_reference,
boolean berserk);
@@ -164,8 +193,46 @@ void ai_scripting_follow_target_ai(
void ai_scripting_force_active(
long ai_reference,
boolean force);
void ai_scripting_deselect(
void);
void ai_scripting_attach_units(
long ai_reference,
long object_list_index);
void ai_scripting_magically_see_units(
long ai_reference,
long object_list_index);
void ai_scripting_set_respawn(
long ai_reference,
boolean respawn);
void ai_scripting_set_deaf(
long ai_reference,
boolean deaf);
void ai_scripting_set_blind(
long ai_reference,
boolean blind);
void ai_scripting_detach_units(
long object_list_index);
void ai_scripting_kill(
long ai_reference);
void ai_scripting_kill_silent(
long ai_reference);
short ai_scripting_swarm_count(
long ai_reference);
short ai_scripting_nonswarm_count(
long ai_reference);
short ai_scripting_living_count(
long ai_reference);
real ai_scripting_living_fraction(
long ai_reference);
real ai_scripting_strength(
long ai_reference);
boolean ai_scripting_is_attacking(
long encounter_index);
short ai_scripting_going_to_vehicle(
long ai_reference);
void ai_scripting_migrate(
long source_ai_index,
long destination_ai_index);
void ai_scripting_select(
long ai_reference);
short ai_scripting_status(
@@ -181,6 +248,14 @@ void ai_scripting_allegiance(
boolean ai_scripting_allegiance_broken(
short team1_index,
short team2_index);
boolean ai_scripting_conversation(
short conversation_index);
void ai_scripting_conversation_stop(
short conversation_index);
void ai_scripting_conversation_advance(
short conversation_index);
void ai_scripting_stop_looking(
long ai_index);
void ai_scripting_renew(
long ai_reference);
void ai_scripting_braindead_by_unit(
@@ -247,6 +322,8 @@ void ai_scripting_set_team(
short team_index);
void ai_scripting_command_list_advance_by_unit(
long unit_index);
short ai_scripting_command_list_status(
long ai_reference);
/* ---------- globals */
-2
View File
@@ -281,13 +281,11 @@ symbols in this file:
#include "cseries.h"
#include "ai/actor_activation.h"
#include "ai/actor_iterators.h"
#include "encounters.h"
#include "actions.h"
#include "actors.h"
#include "actor_definitions.h"
#include "actor_iterators.h"
#include "actor_placement.h"
#include "actor_types.h"
#include "ai.h"
+5
View File
@@ -153,6 +153,8 @@ struct actor_datum *encounter_actor_iterator_next(
struct encounter_actor_iterator *iterator);
struct actor_datum *encounter_actor_iterator_prev(
struct encounter_actor_iterator *iterator);
struct actor_datum *actor_iterator_next(
struct actor_iterator *iterator);
void encounter_compute_activation_cluster_bit_vector(
long encounter_index,
boolean update_actor_dormancy,
@@ -239,6 +241,9 @@ void encounter_set_respawn(
void encounter_set_deaf(
long encounter_index,
boolean deaf);
void actor_iterator_new(
struct actor_iterator *iterator,
boolean active_only);
void encounter_set_blind(
long encounter_index,
boolean blind);
+4 -18
View File
@@ -72,6 +72,7 @@ symbols in this file:
#include "actors.h"
#include "cseries/errors.h"
#include "game/game.h"
#include "game/game_allegiance.h"
#include "memory/data.h"
#include "saved games/game_state.h"
#include "units/unit_definitions.h"
@@ -85,19 +86,6 @@ symbols in this file:
/* ---------- prototypes */
boolean game_team_is_enemy(short team_index0, short team_index1);
boolean game_team_is_ally(short team_index0, short team_index1);
boolean game_team_ally_status_changed(short team_index0, short team_index1);
void prop_position_refresh(
long actor_index,
long prop_index,
struct actor_position_data *position,
boolean force,
boolean update_status);
void prop_status_refresh(
long actor_index,
long prop_index,
struct actor_position_data *position);
/* ---------- globals */
static long last_prop_data_full_warn_time = NONE;
@@ -243,7 +231,7 @@ static void prop_add(
return;
}
long prop_new_blank(
static long prop_new_blank(
long actor_index)
{
long prop_index = datum_new(prop_data);
@@ -485,9 +473,8 @@ long prop_orphan_transition(
long actor_index,
long parent_prop_index)
{
long prop_index = datum_new(prop_data);
long prop_index = prop_new_blank(actor_index);
prop_add(actor_index, NONE, prop_index);
if (prop_index != NONE)
{
struct prop_datum *parent_prop = prop_get(parent_prop_index);
@@ -515,9 +502,8 @@ long prop_orphan_from_friend(
long unacknowledged_prop_index,
long friend_acknowledged_prop_index)
{
long prop_index = datum_new(prop_data);
long prop_index = prop_new_blank(actor_index);
prop_add(actor_index, NONE, prop_index);
if (prop_index != NONE)
{
struct prop_datum *parent_prop = prop_get(unacknowledged_prop_index);
+2 -2
View File
@@ -160,13 +160,13 @@ void props_initialize_for_new_map(
void);
void props_dispose(
void);
void props_dispose_from_old_map(
void);
void prop_delete(
long actor_index,
long prop_index);
void prop_iterator_new(struct prop_iterator *iterator, long actor_index);
struct prop_datum *prop_iterator_next(struct prop_iterator *iterator);
long prop_new_blank(
long actor_index);
long prop_new_unacknowledged(
long actor_index,
long unit_index,
+1 -1
View File
@@ -47,7 +47,7 @@ symbols in this file:
#include "bitmaps/bitmap_drawing.h"
#include "bitmaps/bitmaps_internal.h"
#include "bitmaps/bitmaps.h"
#include "bitmaps/bitmap_group.h"
#include "bitmaps/bitmap_utilities.h"
#include "cseries/errors.h"
-2
View File
@@ -223,8 +223,6 @@ symbols in this file:
#include "bitmaps/bitmap_group_internal.h"
#include "bitmaps/bitmap_drawing.h"
#include "bitmaps/bitmaps.h"
#include "bitmaps/bitmaps_internal.h"
#include "bitmaps/bitmaps_mipmap.h"
#include "bitmaps/bitmaps_quantitize_internal.h"
#include "bitmaps/bitmap_utilities.h"
#include "cache/cache_files.h"
-1
View File
@@ -302,7 +302,6 @@ symbols in this file:
#include "bitmaps/bitmap_group.h"
#include "bitmaps/bitmaps.h"
#include "bitmaps/bitmaps_internal.h"
#include "cache/cache_files.h"
#include "cseries/errors.h"
#include "tag_files/tag_files.h"
-16
View File
@@ -1,16 +0,0 @@
/*
BITMAP_STRINGS_INTERNAL.H
Narrow string-query interface owned by BITMAPS.C. It remains separate from
bitmaps_internal.h because January's VC7 output is declaration-position
sensitive in bitmap_group.c.
*/
#ifndef __BITMAP_STRINGS_INTERNAL_H
#define __BITMAP_STRINGS_INTERNAL_H
#pragma once
char const *bitmap_type_get_string(
short type);
#endif /* __BITMAP_STRINGS_INTERNAL_H */
+4 -4
View File
@@ -228,7 +228,7 @@ symbols in this file:
#include "cseries.h"
#include "bitmaps/bitmaps_internal.h"
#include "bitmaps/bitmaps.h"
#include "bitmaps/bitmap_utilities.h"
#include "bitmaps/bitmap_group.h"
#include "bitmaps/s3tc/s3tc.h"
@@ -2277,9 +2277,9 @@ real real_rgb_color_brightness(
color->blue * 0.114f;
}
struct hsv_color *rgb_color_to_hsv_color(
union hsv_color *rgb_color_to_hsv_color(
union rgb_color const *rgb,
struct hsv_color *hsv)
union hsv_color *hsv)
{
real red = (real)(long)rgb->red * (1.0f / 65535.0f);
real green = (real)(long)rgb->green * (1.0f / 65535.0f);
@@ -2367,7 +2367,7 @@ struct hsv_color *rgb_color_to_hsv_color(
}
union rgb_color *hsv_color_to_rgb_color(
struct hsv_color const *hsv,
union hsv_color const *hsv,
union rgb_color *rgb)
{
real scaled_hue;
+6 -7
View File
@@ -58,11 +58,10 @@ union rgb_color
};
typedef union rgb_color rgb_color;
struct hsv_color
union hsv_color
{
word hue;
word saturation;
word value;
word n[3];
struct { word hue, saturation, value; };
};
union argb_color
@@ -90,11 +89,11 @@ union real_hsv_color
};
};
struct hsv_color *rgb_color_to_hsv_color(
union hsv_color *rgb_color_to_hsv_color(
union rgb_color const *rgb,
struct hsv_color *hsv);
union hsv_color *hsv);
union rgb_color *hsv_color_to_rgb_color(
struct hsv_color const *hsv,
union hsv_color const *hsv,
union rgb_color *rgb);
union real_hsv_color *real_rgb_color_to_real_hsv_color(
union real_rgb_color const *rgb,
+3 -4
View File
@@ -230,8 +230,6 @@ symbols in this file:
#include "cseries.h"
#include "bitmaps/bitmaps.h"
#include "bitmaps/bitmaps_internal.h"
#include "bitmaps/bitmaps_mipmap.h"
#include "bitmaps/bitmap_group.h"
#include "bitmaps/s3tc/s3tc.h"
#include "cseries/errors.h"
@@ -243,8 +241,6 @@ symbols in this file:
enum
{
NUMBER_OF_ENTRIES_IN_PALETTE = 256,
MAXIMUM_BITMAP_WIDTH = 30000,
MAXIMUM_BITMAP_HEIGHT = 30000,
MAXIMUM_BITMAP_DEPTH = 256,
@@ -303,6 +299,9 @@ enum
/* ---------- prototypes */
long bitmap_mipmap_get_pixel_count(
struct bitmap_data *bitmap,
short mipmap_index);
static boolean bitmap_format_type_valid_width(
short format,
short type,
+89
View File
@@ -14,6 +14,11 @@ header included in hcex build.
/* ---------- constants */
enum
{
NUMBER_OF_ENTRIES_IN_PALETTE = 256
};
/* ---------- macros */
/* ---------- structures */
@@ -22,6 +27,10 @@ struct bitmap_data;
/* ---------- prototypes/BITMAPS.C */
char const *bitmap_type_get_string(
short type);
char const *bitmap_format_get_string(
short format);
void bitmap_rebuild(
struct bitmap_data *bitmap);
void bitmap_delete(
@@ -30,15 +39,93 @@ void bitmap_delete(
boolean bitmap_verify(
struct bitmap_data *bitmap,
boolean repair);
void bitmap_3d_slice_extract(
struct bitmap_data *bitmap,
short mipmap_index,
short slice_index,
struct bitmap_data *slice_bitmap);
void bitmap_3d_slice_insert(
struct bitmap_data *slice_bitmap,
struct bitmap_data *bitmap,
short mipmap_index,
short slice_index);
void bitmap_cube_map_face_extract(
struct bitmap_data *bitmap,
short mipmap_index,
short face_index,
struct bitmap_data *face_bitmap);
void bitmap_cube_map_face_insert(
struct bitmap_data *face_bitmap,
struct bitmap_data *bitmap,
short mipmap_index,
short face_index);
short bitmap_format_get_bits_per_pixel(
short format);
struct bitmap_data *bitmap_2d_new(
short width,
short height,
short mipmap_count,
short format);
struct bitmap_data *bitmap_3d_new(
short width,
short height,
short depth,
short mipmap_count,
short format);
struct bitmap_data *bitmap_cube_map_new(
short width,
short mipmap_count,
short format);
void *bitmap_2d_address(
struct bitmap_data *bitmap,
short x,
short y,
short mipmap_index);
void *bitmap_3d_address(
struct bitmap_data *bitmap,
short x,
short y,
short z,
short mipmap_index);
void *bitmap_cube_map_address(
struct bitmap_data *bitmap,
short x,
short y,
short face_index,
short mipmap_index);
void *bitmap_mipmap_address(
struct bitmap_data *bitmap,
short mipmap_index);
pixel32 bitmap_format_to_a8r8g8b8(
short format,
void const *mipmap_address,
long pixel_index);
byte palette_find_closest_match(
pixel32 const *palette,
pixel32 color);
short bitmap_get_max_mipmap_count(
struct bitmap_data *bitmap);
long bitmap_get_pixel_count(
struct bitmap_data *bitmap);
long bitmap_get_pixel_data_size(
struct bitmap_data *bitmap);
short bitmap_mipmap_get_width(
struct bitmap_data *bitmap,
short mipmap_index);
short bitmap_mipmap_get_height(
struct bitmap_data *bitmap,
short mipmap_index);
short bitmap_mipmap_get_depth(
struct bitmap_data *bitmap,
short mipmap_index);
long bitmap_mipmap_get_pixel_data_size(
struct bitmap_data *bitmap,
short mipmap_index);
long bitmap_mipmap_get_row_pitch(
struct bitmap_data *bitmap,
short mipmap_index);
/* ---------- prototypes/BITMAPS_QUANTITIZE.C */
@@ -75,6 +162,8 @@ union real_rgb_color *rgb_colors_interpolate_and_scale(
/* ---------- globals */
extern pixel32 global_vector_palette[NUMBER_OF_ENTRIES_IN_PALETTE];
/* ---------- public code */
#endif // __BITMAPS_H
-79
View File
@@ -1,79 +0,0 @@
/*
BITMAPS_INTERNAL.H
Narrow cross-translation-unit interface owned by BITMAPS.C.
*/
#ifndef __BITMAPS_INTERNAL_H
#define __BITMAPS_INTERNAL_H
#pragma once
#include "bitmaps/bitmaps.h"
extern pixel32 global_vector_palette[];
char const *bitmap_format_get_string(
short format);
pixel32 bitmap_format_to_a8r8g8b8(
short format,
void const *mipmap_address,
long pixel_index);
byte palette_find_closest_match(
pixel32 const *palette,
pixel32 color);
void *bitmap_3d_address(
struct bitmap_data *bitmap,
short x,
short y,
short z,
short mipmap_index);
void *bitmap_mipmap_address(
struct bitmap_data *bitmap,
short mipmap_index);
short bitmap_mipmap_get_width(
struct bitmap_data *bitmap,
short mipmap_index);
short bitmap_mipmap_get_height(
struct bitmap_data *bitmap,
short mipmap_index);
long bitmap_get_pixel_count(
struct bitmap_data *bitmap);
long bitmap_get_pixel_data_size(
struct bitmap_data *bitmap);
struct bitmap_data *bitmap_2d_new(
short width,
short height,
short mipmap_count,
short format);
struct bitmap_data *bitmap_3d_new(
short width,
short height,
short depth,
short mipmap_count,
short format);
struct bitmap_data *bitmap_cube_map_new(
short width,
short mipmap_count,
short format);
void bitmap_3d_slice_extract(
struct bitmap_data *bitmap,
short mipmap_index,
short slice_index,
struct bitmap_data *slice_bitmap);
void bitmap_3d_slice_insert(
struct bitmap_data *slice_bitmap,
struct bitmap_data *bitmap,
short mipmap_index,
short slice_index);
void bitmap_cube_map_face_extract(
struct bitmap_data *bitmap,
short mipmap_index,
short face_index,
struct bitmap_data *face_bitmap);
void bitmap_cube_map_face_insert(
struct bitmap_data *face_bitmap,
struct bitmap_data *bitmap,
short mipmap_index,
short face_index);
#endif /* __BITMAPS_INTERNAL_H */
-47
View File
@@ -1,47 +0,0 @@
/*
BITMAPS_MIPMAP.H
Narrow cross-translation-unit mipmap interface owned by BITMAPS.C.
*/
#ifndef __BITMAPS_MIPMAP_H
#define __BITMAPS_MIPMAP_H
#pragma once
/* ---------- structures */
struct bitmap_data;
/* ---------- prototypes/BITMAPS.C */
void *bitmap_mipmap_address(
struct bitmap_data *bitmap,
short mipmap_index);
void *bitmap_cube_map_address(
struct bitmap_data *bitmap,
short x,
short y,
short face_index,
short mipmap_index);
short bitmap_mipmap_get_width(
struct bitmap_data *bitmap,
short mipmap_index);
short bitmap_mipmap_get_height(
struct bitmap_data *bitmap,
short mipmap_index);
short bitmap_mipmap_get_depth(
struct bitmap_data *bitmap,
short mipmap_index);
long bitmap_mipmap_get_pixel_count(
struct bitmap_data *bitmap,
short mipmap_index);
long bitmap_mipmap_get_pixel_data_size(
struct bitmap_data *bitmap,
short mipmap_index);
long bitmap_mipmap_get_row_pitch(
struct bitmap_data *bitmap,
short mipmap_index);
short bitmap_get_max_mipmap_count(
struct bitmap_data *bitmap);
#endif /* __BITMAPS_MIPMAP_H */
+1 -2
View File
@@ -25,6 +25,7 @@ symbols in this file:
#include "cseries.h"
#include "bitmaps/bitmap_group.h"
#include "bitmaps/bitmaps.h"
#include "tag_files/files.h"
/* ---------- constants */
@@ -59,8 +60,6 @@ struct targa_header
/* ---------- prototypes */
void *bitmap_2d_address(struct bitmap_data *bitmap, short x, short y, short mipmap_index);
/* ---------- globals */
/* ---------- public code */
-1
View File
@@ -48,7 +48,6 @@ symbols in this file:
#include "bitmaps/bitmaps.h"
#include "bitmaps/bitmap_group.h"
#include "bitmaps/bitmaps_internal.h"
#include "bitmaps/libtiff/tiffio.h"
#include "bitmaps/tiff_file.h"
#include "math/integer_math.h"
+2 -3
View File
@@ -37,8 +37,10 @@ symbols in this file:
/* ---------- headers */
#include "cseries.h"
#include "cseries/errors.h"
#include "bungie_net/common/64bit_math.h"
#include "bungie_net/common/public_key_crypt.h"
#include "bungie_net/common/prime_numbers.h"
#include "bungie_net/common/random_numbers.h"
#include "memory/byte_swapping.h"
@@ -50,9 +52,6 @@ symbols in this file:
/* ---------- prototypes */
unsigned long randomprime(
unsigned long maximum);
static unsigned long x_exp_y_mod_n(
unsigned long base,
unsigned long exponent,
@@ -25,6 +25,8 @@ symbols in this file:
#include "cseries.h"
#include "bungie_net/common/random_numbers.h"
#include <time.h>
/* ---------- constants */
/* ---------- macros */
@@ -116,9 +116,6 @@ short delete_endpoint_set(
struct transport_endpoint_set *set);
void delete_transport_endpoint(
struct transport_endpoint *endpoint);
void transport_get_nonce(
void *nonce,
long nonce_length);
char const *winsock_error_to_string(
long error);
-14
View File
@@ -1,14 +0,0 @@
/*
CACHE_FILE_PRECACHING.H
*/
#ifndef __CACHE_FILE_PRECACHING_H
#define __CACHE_FILE_PRECACHING_H
#pragma once
/* ---------- prototypes/CACHE_FILES.C */
boolean cache_files_give_time_to_precache(
char const *map_name);
#endif /* __CACHE_FILE_PRECACHING_H */
+2 -8
View File
@@ -130,6 +130,8 @@ symbols in this file:
#include "cache_files.h"
#include "physical_memory_map.h"
#include "sound_cache.h"
#include "texture_cache.h"
#include "interface/ui_widget.h"
#include "scenario/scenario_definitions.h"
#include "sound/sound_manager.h"
@@ -219,14 +221,6 @@ typedef char verify_cache_file_header_size[
static struct cache_file_tag_instance *cache_get_tag_instance(
long tag_index);
void texture_cache_close(
void);
void display_error_damaged_media(
void);
void texture_cache_open(
void);
void sound_idle(
void);
/* ---------- globals */
+2
View File
@@ -51,6 +51,8 @@ boolean cache_file_header_verify(
struct cache_file_header *header,
char const *scenario_name,
boolean fatal);
boolean cache_files_give_time_to_precache(
char const *map_name);
unsigned long cache_files_get_checksum(
void);
-3
View File
@@ -455,9 +455,6 @@ static void cache_copy_block_on_raw_write(
struct simple_decompressor_definition *self);
static void cache_copy_wait_for_async_io(
struct simple_decompressor_definition *self);
struct cache_copy_read_request *acquire_read_request(
struct simple_decompressor_definition *self,
short read_sequence_index);
static void cache_copy_issue_read(
struct simple_decompressor_definition *self,
void *buffer,
+1 -5
View File
@@ -14,6 +14,7 @@ symbols in this file:
#include "cache/predicted_resources.h"
#include "cache/sound_cache.h"
#include "bitmaps/bitmap_group.h"
#include "cache/texture_cache.h"
#include "sound/sound_definitions.h"
#include "tag_files/tag_groups.h"
@@ -25,11 +26,6 @@ symbols in this file:
/* ---------- prototypes */
void *_texture_cache_bitmap_get_hardware_format(
struct bitmap_data *bitmap,
boolean block,
boolean load);
static void predicted_resources_sound_precache(long sound_definition_index);
/* ---------- globals */
+6
View File
@@ -28,12 +28,18 @@ void texture_cache_bitmap_delete(
struct bitmap_data *bitmap);
void texture_cache_new(
void);
void texture_cache_close(
void);
void texture_cache_delete(
void);
void texture_cache_open(
void);
void texture_cache_idle(
void);
void texture_cache_return_memory(
void);
void texture_cache_flush(
void);
void *texture_cache_steal_memory(
long size);
void texture_cache_debug_render(
+2
View File
@@ -93,7 +93,9 @@ symbols in this file:
/* ---------- headers */
#include "cseries/cseries.h"
#include "cseries/cseries_windows.h"
#include "cseries/errors.h"
#include "cache/cache_files.h"
#include "cache/physical_memory_map.h"
#include "cache/sound_cache.h"
#include "interface/terminal.h"
+7 -3
View File
@@ -98,11 +98,9 @@ symbols in this file:
#include "cseries/errors.h"
#include "cseries/sort.h"
#include "bitmaps/bitmap_group.h"
#include "bitmaps/bitmaps_internal.h"
#include "bitmaps/bitmaps_mipmap.h"
#include "bitmaps/bitmaps.h"
#include "cache/cache_files.h"
#include "cache/texture_cache.h"
#include "cache/xbox_texture_cache.h"
#include "cache/physical_memory_map.h"
#include "interface/interface.h"
#include "interface/terminal.h"
@@ -262,6 +260,12 @@ static void texture_cache_delete_block_proc(
long block_index);
static const char *texture_cache_name_block_proc(
long block_index);
long bitmap_format_to_d3d_format(
short format,
word flags);
long bitmap_format_to_d3d_linear_format(
short format,
word flags);
static boolean compare(
struct bitmap_data *first,
struct bitmap_data *second);
-27
View File
@@ -1,27 +0,0 @@
/*
XBOX_TEXTURE_CACHE.H
focused owner header for the xbox_texture_cache.c bitmap-format-to-D3D mapping
routines that the platform-neutral texture_cache.h does not declare; adding them
to texture_cache.h regresses exact consumers through declaration-count
sensitivity.
*/
#ifndef __XBOX_TEXTURE_CACHE_H
#define __XBOX_TEXTURE_CACHE_H
#pragma once
/* ---------- headers */
#include "cseries/cseries.h"
/* ---------- prototypes/XBOX_TEXTURE_CACHE.C */
long bitmap_format_to_d3d_format(
short format,
word flags);
long bitmap_format_to_d3d_linear_format(
short format,
word flags);
#endif // __XBOX_TEXTURE_CACHE_H
+1 -10
View File
@@ -39,7 +39,7 @@ symbols in this file:
#include "bored_camera.h"
#include "camera/static_camera.h"
#include "cseries/cseries_windows.h"
#include "game/player_control.h"
#include "game/players.h"
#include "math/real_math.h"
#include "units/unit_definitions.h"
#include "units/units.h"
@@ -67,15 +67,6 @@ typedef char unit_camera_track_size_assert[
/* ---------- prototypes */
unsigned long *get_global_local_random_seed_address(
void);
float real_seed_random_range(
unsigned long *seed,
float lower_bound,
float upper_bound);
long player_control_get_aiming_unit_index(
short local_player_index);
static long bored_camera_shot_threshold_milliseconds(
long boredom_count);
static long bored_camera_shot_duration_milliseconds(
-2
View File
@@ -137,8 +137,6 @@ void scripted_camera_set(
short camera_point_index,
word transition_time,
long relative_object_index);
void observer_update(
real dt);
void first_person_camera_fake(
long unit_index,
struct scripted_camera_command *result);
+18
View File
@@ -28,6 +28,22 @@ union real_vector3d;
void scripted_camera_enable(
boolean enabled);
void scripted_camera_set_animation(
long animation_graph_index,
char const *animation_name);
void scripted_camera_set_first_person(
long object_index);
void scripted_camera_set_dead(
long object_index);
boolean scripted_camera_object_is_first_person_camera(
long object_index);
void scripted_camera_set(
short camera_point_index,
word transition_time,
long relative_object_index);
void scripted_camera_set_absolute(
short camera_point_index,
word transition_time);
void scripted_camera_set_camera_point_relative(
union real_point3d const *position,
union real_vector3d const *forward,
@@ -35,6 +51,8 @@ void scripted_camera_set_camera_point_relative(
real field_of_view,
word transition_time,
long relative_object_index);
short scripted_camera_time(
void);
void scripted_camera_update(
struct dead_camera *camera,
struct camera_control const *controls,
-1
View File
@@ -129,7 +129,6 @@ symbols in this file:
#include "orbiting_camera.h"
#include "editor/editor_stubs.h"
#include "game/player_control.h"
#include "game/players.h"
#include "input/input.h"
#include "main/console.h"
+2 -1
View File
@@ -91,7 +91,8 @@ symbols in this file:
#include "flying_camera.h"
#include "camera_scripting.h"
#include "director.h"
#include "game/player_control.h"
#include "game/players.h"
#include "interface/terminal.h"
#include "main/console.h"
#include "observer.h"
#include "static_camera.h"
+1 -8
View File
@@ -26,6 +26,7 @@ symbols in this file:
#include "observer.h"
#include "static_camera.h"
#include "game/players.h"
#include "objects/objects.h"
#include "units/unit_definitions.h"
#include "units/units.h"
@@ -54,14 +55,6 @@ struct first_person_camera_result
/* ---------- prototypes */
long player_control_get_unit_index(
short local_player_index);
void player_control_get_facing_direction(
short local_player_index,
real_vector3d *facing_direction);
real player_control_get_field_of_view(
short local_player_index);
static void first_person_camera_for_unit_and_vector(
long unit_index,
real_vector3d const *forward,
+3 -11
View File
@@ -17,6 +17,7 @@ symbols in this file:
#include "flying_camera.h"
#include "observer.h"
#include "static_camera.h"
#include "rasterizer/rasterizer_console_vars.h"
/* ---------- constants */
@@ -24,19 +25,10 @@ symbols in this file:
/* ---------- structures */
struct rasterizer_debug_options
{
byte reserved[0x5E];
short flying_camera_reset_ticks;
byte trailing[8];
};
/* ---------- prototypes */
/* ---------- globals */
extern struct rasterizer_debug_options rasterizer_debug_options;
/* ---------- public code */
void flying_camera_new(
@@ -81,12 +73,12 @@ void flying_camera_update(
camera->roll += controls->facing_delta.roll;
}
if (rasterizer_debug_options.flying_camera_reset_ticks > 0)
if (rasterizer_debug_options.freeze_flying_camera > 0)
{
camera->facing.yaw = 0.f;
camera->facing.pitch = 0.f;
camera->roll = 0.f;
rasterizer_debug_options.flying_camera_reset_ticks--;
rasterizer_debug_options.freeze_flying_camera--;
}
result->timer = 0.3f;
+1 -1
View File
@@ -46,7 +46,7 @@ symbols in this file:
#include "static_camera.h"
#include "game/game_globals.h"
#include "game/player_control.h"
#include "game/players.h"
#include "objects/objects.h"
#include "scenario/scenario.h"
#include "tag_files/tag_groups.h"
-4
View File
@@ -167,10 +167,6 @@ struct file_pointer_totals
/* ---------- prototypes */
unsigned long *get_global_local_random_seed_address(
void);
word seed_random(
unsigned long *seed);
static int compare_file_pointer_totals(
const void *a,
const void *b);
+4 -7
View File
@@ -172,7 +172,7 @@ void write_to_error_file(
return;
}
void reset_error_state(
static void reset_error_state(
void)
{
error_globals.delayed = FALSE;
@@ -186,8 +186,7 @@ void errors_initialize(
{
error_globals.output_to_debug_file = TRUE;
error_globals.overflow_suppression = TRUE;
error_globals.delayed = FALSE;
error_globals.message_buffer_size = 0;
reset_error_state();
stack_walk_initialize();
return;
@@ -323,8 +322,7 @@ boolean errors_handle(
{
boolean delayed = error_globals.delayed;
error_globals.delayed = FALSE;
error_globals.message_buffer_size = 0;
reset_error_state();
return delayed;
}
@@ -332,8 +330,7 @@ boolean errors_handle(
void errors_clear(
void)
{
error_globals.delayed = FALSE;
error_globals.message_buffer_size = 0;
reset_error_state();
return;
}
+16 -1
View File
@@ -1589,7 +1589,7 @@ int compare_profile_sections(
{
struct profile_section *const *first = (struct profile_section *const *)section0;
struct profile_section *const *second = (struct profile_section *const *)section1;
int result = 0;
int result;
if ((*first)->active && !(*second)->active)
{
@@ -1620,6 +1620,8 @@ int compare_profile_sections(
result = -1;
else if (first_average<second_average)
result = 1;
else
result = 0;
break;
}
@@ -1628,10 +1630,23 @@ int compare_profile_sections(
result = -1;
else if ((*first)->recent_elapsed_timebase<(*second)->recent_elapsed_timebase)
result = 1;
else
result = 0;
break;
default:
match_assert("c:\\halo\\SOURCE\\cseries\\profile.c", 844, !"unreachable");
/* BUG (original, preserved for exact matching): this arm leaves result
* unassigned, and January returns it after the fatal assertion: 0x47e840 +0x61 mov eax,[ebp+8]
* reads the dead first-parameter home. The Sept-25-2001 build is identical; the Aug-15-2001
* build reads its uninitialised [ebp-4] slot the same way. The later /Od+/RTC build attests the
* uninitialised declaration: its single exit calls _RTC_UninitUse("result").
* The arm is unreachable in defined execution. compare_type is written only by profile_dump,
* after its sort_mode range assertion; January's two profile_dump callers pass 0/1 and 2; and
* each of the NUMBER_OF_PROFILE_SORT_MODES (3) modes has a case above that assigns result.
* Were the arm entered, display_assert returns into an unconditional system_exit, which never
* returns: halt_and_catch_fire loops, or calls exit() on re-entry. So the uninitialised return
* is not executed in January. A corrected build assigns result in this arm. */
break;
}
}
+4
View File
@@ -173,6 +173,10 @@ real profile_frame_get_value(
struct profile_frame_iterator *iterator,
short frame_value,
short section_index);
void profile_sections_activate(
char const *section_name);
void profile_sections_deactivate(
char const *section_name);
void profile_seconds_elapsed(
real seconds);
void profile_texture_start(
-4
View File
@@ -120,10 +120,6 @@ typedef char verify_hud_global_default_title_bounds_offset[
/* ---------- prototypes */
void draw_quad(
rectangle2d *rectangle,
pixel32 color);
/* ---------- globals */
struct cinematic_global_data *cinematic_globals = NULL;
+8
View File
@@ -18,6 +18,10 @@ header included in hcex build.
void recorded_animations_initialize(
void);
void recorded_animations_dispose(
void);
void recorded_animations_dispose_from_old_map(
void);
void recorded_animations_initialize_for_new_map(
void);
void recorded_animations_update(
@@ -27,6 +31,10 @@ void recorded_animations_clear_debug_storage(
boolean recorded_animation_controlling_unit(
long unit_index);
void recorded_animation_kill(
long unit_index);
long recorded_animation_get_time_left(
long unit_index);
boolean recorded_animation_play(
long unit_index,
+15
View File
@@ -60,6 +60,21 @@ struct light_fixture_datum
/* ---------- prototypes/DEVICE_LIGHT_FIXTURES.C */
void light_fixtures_initialize(
void);
void light_fixtures_dispose(
void);
void light_fixtures_initialize_for_new_map(
void);
void light_fixtures_dispose_from_old_map(
void);
boolean light_fixture_new(
long object_index);
void light_fixture_delete(
long object_index);
boolean light_fixture_update(
long object_index);
/* ---------- globals */
/* ---------- public code */
+1 -3
View File
@@ -30,6 +30,7 @@ symbols in this file:
#include "device_machines.h"
#include "game/game.h"
#include "game/game_allegiance.h"
#include "memory/data.h"
#include "units/bipeds.h"
#include "units/unit_definitions.h"
@@ -66,9 +67,6 @@ struct device_group_datum
/* ---------- prototypes */
boolean game_team_is_enemy(
short team_index0,
short team_index1);
/* ---------- globals */
/* ---------- public code */
+19
View File
@@ -82,8 +82,18 @@ struct machine_datum
/* ---------- prototypes/DEVICES.C */
void devices_initialize(
void);
void devices_initialize_for_new_map(
void);
void device_delete(
long object_index);
void devices_dispose(
void);
void devices_dispose_from_old_map(
void);
boolean device_new(
long object_index);
void device_add_scenario_information(
long object_index,
struct scenario_device_datum *scenario_device);
@@ -98,6 +108,9 @@ real device_get_power(
void device_set_never_appears_locked(
long device_index,
boolean never_locked);
void device_group_set_actual_value(
short group_index,
real actual_value);
void device_one_sided_set(
long device_index,
boolean one_sided);
@@ -107,6 +120,12 @@ void device_operates_automatically_set(
void device_set_actual_position(
long device_index,
real position);
boolean device_set_desired_position(
long device_index,
real position);
void device_set_power(
long device_index,
real power);
boolean device_group_set_desired_value(
short group_index,
real desired_value);
+2 -1
View File
@@ -22,7 +22,8 @@ boolean game_in_editor(
}
boolean editor_preprocess_rendered_object(
void)
long object_index,
struct render_lighting *lighting)
{
return TRUE;
}
+5 -1
View File
@@ -6,11 +6,15 @@ EDITOR_STUBS.H
#define __EDITOR_STUBS_H
#pragma once
/* ---------- structures */
struct render_lighting;
/* ---------- prototypes/EDITOR_STUBS.C */
void editor_render(void);
boolean game_in_editor(void);
boolean editor_preprocess_rendered_object(void);
boolean editor_preprocess_rendered_object(long object_index, struct render_lighting *lighting);
boolean editor_should_exit(void);
void editor_initialize(void);
void editor_dispose(void);
+1 -23
View File
@@ -212,12 +212,10 @@ symbols in this file:
/* ---------- headers */
#define plane2d_from_points plane2d_from_points_inline
#include "effects/decals.h"
#include "cseries/cseries.h"
#include "math/real_math.h"
#include "physics/collision_bsp_definitions.h"
#undef plane2d_from_points
#include "cseries/errors.h"
#include "game/game.h"
@@ -233,7 +231,7 @@ symbols in this file:
#include "bitmaps/bitmaps.h"
#include "cache/texture_cache.h"
#include "effects/decal_definitions.h"
#include "rasterizer/rasterizer_debug_options.h"
#include "rasterizer/rasterizer_console_vars.h"
#include "render/render.h"
#include "render/render_debug.h"
#include "saved games/game_state.h"
@@ -810,26 +808,6 @@ static void decal_sprite_get_bounds(
return;
}
real_plane2d *plane2d_from_points(
real_plane2d *plane,
real_point2d const *point0,
real_point2d const *point1)
{
plane->n.i = point1->y - point0->y;
plane->n.j = point0->x - point1->x;
if (normalize2d(&plane->n) == 0.0f)
{
plane->d = 0.0f;
return NULL;
}
plane->d = dot_product2d((real_vector2d *)point0, &plane->n);
return plane;
}
pixel32 real_a_rgb_color_to_pixel32(
real alpha,
real_rgb_color const *color)
+12 -1
View File
@@ -2596,7 +2596,7 @@ static boolean effect_allowed_by_environment(
struct location const *location,
real_point3d const *world_point)
{
boolean allowed = FALSE;
boolean allowed;
switch (environment)
{
@@ -2613,6 +2613,7 @@ static boolean effect_allowed_by_environment(
break;
case _effect_environment_vacuum:
allowed = FALSE;
break;
default:
@@ -2621,6 +2622,16 @@ static boolean effect_allowed_by_environment(
888,
FALSE,
NULL);
/* BUG (original, preserved for exact matching): this arm leaves allowed
* unassigned, and January returns it after the fatal assertion: 0x48b160 +0x5f mov al,[ebp-1]
* reads the never-written byte slot. The later /Od+/RTC build attests the uninitialised
* declaration: its single exit calls _RTC_UninitUse("allowed").
* The read is not executed in January: display_assert returns into an unconditional
* system_exit, which never returns (it jumps to halt_and_catch_fire, which loops, or calls
* _exit on re-entry), and no other path reaches the read. The arm itself is entered only for
* an environment value outside the four cases above, each of which assigns allowed; the
* value comes from effect tag data, so this arm is not proven unreachable. A corrected build
* assigns allowed in this arm. */
break;
}
+1 -2
View File
@@ -91,11 +91,10 @@ symbols in this file:
#include "camera/observer.h"
#include "game/game.h"
#include "game/game_globals.h"
#include "game/player_control.h"
#include "game/player_rumble.h"
#include "game/players.h"
#include "math/periodic_functions.h"
#include "math/random_math.h"
#include "math/real_math.h"
#include "main/console.h"
#include "networking/network_connection.h"
#include "objects/damage.h"
-14
View File
@@ -50,7 +50,6 @@ symbols in this file:
#include "game/game.h"
#include "game/game_allegiance.h"
#include "game/game_globals.h"
#include "game/player_control.h"
#include "game/players.h"
#include "math/real_math_cones.h"
#include "items/weapon_definitions.h"
@@ -114,12 +113,6 @@ static void object_compute_autoaim_target(
real_point3d const *position,
real_vector3d const *direction,
real_point3d *target);
boolean aim_assist_compute_target(
struct aim_assist_parameters const *parameters,
long object_index,
real_point3d const *position,
real_vector3d const *direction,
struct aim_assist_target *target);
static short find_aim_assist_targets_recursive(
struct aim_assist_parameters const *parameters,
long object_index,
@@ -141,13 +134,6 @@ static short find_aim_assist_targets(
short ignore_team_index,
short maximum_target_count,
struct aim_assist_target *targets);
boolean aim_assist(
struct aim_assist_parameters const *parameters,
real_point3d const *position,
real_vector3d const *direction,
long ignore_object_index,
short ignore_team_index,
struct aim_assist_target *target);
/* ---------- globals */
+1
View File
@@ -49,6 +49,7 @@ symbols in this file:
/* ---------- headers */
#include "cseries.h"
#include "cseries/errors.h"
#include "cheats.h"
#include "cache/cache_files.h"
#include "camera/director.h"
+14
View File
@@ -34,12 +34,26 @@ void cheats_initialize(
void);
void cheats_initialize_for_new_map(
void);
void cheat_teleport_to_camera(
void);
void cheat_active_camouflage(
void);
void cheat_all_weapons(
void);
void cheat_all_powerups(
void);
void cheat_all_vehicles(
void);
void cheats_dispose(
void);
void cheats_dispose_from_old_map(
void);
void cheats_update(
void);
void cheats_load(
void);
void cheat_active_camouflage_local_player(
short player_index);
/* ---------- globals */
+3 -132
View File
@@ -123,7 +123,6 @@ struct game_options;
#include "game/game.h"
#undef set_random_seed
#include "ai/ai.h"
#include "ai/ai_runtime.h"
#include "bink/bink_playback.h"
#include "bungie_net/network/transport.h"
#include "cache/cache_files.h"
@@ -144,8 +143,6 @@ struct game_options;
#include "game/cheats.h"
#include "game/game_allegiance.h"
#include "game/game_engine.h"
#include "game/game_engine_runtime.h"
#include "game/player_control.h"
#include "game/player_queues_new.h"
#include "game/player_rumble.h"
#include "game/players.h"
@@ -162,20 +159,22 @@ struct game_options;
#include "items/projectiles.h"
#include "main/main.h"
#include "main/console.h"
#include "math/random_math.h"
#include "math/real_math.h"
#include "memory/data.h"
#include "networking/network_messages.h"
#include "networking/telnet_console.h"
#include "objects/objects.h"
#include "objects/widgets/widgets.h"
#include "physics/breakable_surfaces.h"
#include "physics/collision_usage.h"
#include "physics/point_physics.h"
#include "rasterizer/common/rasterizer_common.h"
#include "rasterizer/rasterizer.h"
#include "render/render.h"
#include "saved games/game_state.h"
#include "saved games/saved_game_files.h"
#include "scenario/scenario.h"
#include "shaders/shaders.h"
#include "sound/game_sound.h"
#include "sound/sound_classes.h"
#include "sound/sound_manager.h"
@@ -226,134 +225,6 @@ typedef char verify_game_runtime_globals_difficulty_offset[
/* ---------- prototypes */
void game_engine_game_starting(
void);
void game_engine_player_added(
long player_index);
void recorded_animations_dispose(
void);
void cinematic_dispose(
void);
void hs_dispose(
void);
void cheats_dispose(
void);
void ui_widgets_dispose(
void);
void editor_dispose(
void);
void player_effect_dispose(
void);
void rumble_dispose(
void);
void game_sound_dispose(
void);
void sound_classes_dispose(
void);
void particles_dispose(
void);
void contrails_dispose(
void);
void players_dispose(
void);
void decals_dispose(
void);
void breakable_surfaces_dispose(
void);
void structures_dispose(
void);
void render_dispose(
void);
void objects_dispose(
void);
void director_dispose(
void);
void game_allegiance_dispose(
void);
void saved_game_files_dispose(
void);
void event_manager_dispose(
void);
void input_abstraction_dispose(
void);
void player_ui_dispose(
void);
void game_state_dispose(
void);
void bink_playback_dispose(
void);
void progress_bar_dispose(
void);
void rasterizer_dispose_from_old_map(
void);
void game_state_dispose_from_old_map(
void);
void cheats_dispose_from_old_map(
void);
void recorded_animations_dispose_from_old_map(
void);
void hs_dispose_from_old_map(
void);
void cinematic_dispose_from_old_map(
void);
void editor_dispose_from_old_map(
void);
void ai_dispose_from_old_map(
void);
void player_effect_dispose_from_old_map(
void);
void rumble_dispose_from_old_map(
void);
void point_physics_dispose_from_old_map(
void);
void decals_dispose_from_old_map(
void);
void breakable_surfaces_dispose_from_old_map(
void);
void structures_dispose_from_old_map(
void);
void render_dispose_from_old_map(
void);
void objects_dispose_from_old_map(
void);
void director_dispose_from_old_map(
void);
void observer_dispose_from_old_map(
void);
void players_dispose_from_old_map(
void);
void contrails_dispose_from_old_map(
void);
void particles_dispose_from_old_map(
void);
void game_sound_dispose_from_old_map(
void);
void sound_classes_dispose_from_old_map(
void);
void sound_dispose_from_old_map(
void);
void game_allegiance_dispose_from_old_map(
void);
void game_engine_dispose_from_old_map(
void);
void scenario_dispose_from_old_map(
void);
void particles_update(
real dt);
void contrails_update(
real dt);
void widgets_update(
real dt);
void scenario_frame_update(
real dt);
void rasterizer_frame_update(
real dt);
void numeric_countdown_timer_update(
void);
/* ---------- globals */
static struct game_runtime_globals_prefix *game_globals = NULL;
+1 -1
View File
@@ -52,7 +52,7 @@ symbols in this file:
#include "cseries/cseries.h"
#include "cseries/errors.h"
#include "ai/ai_runtime.h"
#include "ai/ai.h"
#include "game/game_allegiance.h"
#include "saved games/game_state.h"
+1
View File
@@ -37,6 +37,7 @@ boolean game_team_is_enemy(
boolean game_team_is_ally(
short our_team_index,
short other_team_index);
boolean game_team_ally_status_changed(short team_index0, short team_index1);
short game_allegiance_get_incidents(
short our_team_index,
short other_team_index,
+1 -11
View File
@@ -543,7 +543,6 @@ symbols in this file:
#include "game_engine.h"
#include "game_engine_list.h"
#include "game_engine_place.h"
#include "game_engine_runtime.h"
#include "bitmaps/bitmap_group.h"
#include "bitmaps/bitmap_group_lookup.h"
@@ -570,12 +569,11 @@ symbols in this file:
#include "objects.h"
#include "objects/damage_effect_definitions.h"
#include "physics/collision_features.h"
#include "player_control.h"
#include "player_rumble.h"
#include "players.h"
#include "players_runtime.h"
#include "rasterizer/rasterizer.h"
#include "rasterizer/rasterizer_debug_options.h"
#include "rasterizer/rasterizer_console_vars.h"
#include "render/render.h"
#include "saved games/player_profile.h"
#include "scenario/scenario.h"
@@ -825,14 +823,6 @@ static void netgame_verify_equipment(
short game_type,
char const *error_message);
long game_engine_did_player_win_default(
long player_index);
void game_show_score_extended(
long player_index,
long score,
long team_index);
boolean multiple_teams_alive(
void);
+25
View File
@@ -329,6 +329,8 @@ void game_engine_post_rasterize(
void game_engine_nonplayer_post_rasterize(
void);
void game_engine_update(
void);
void game_engine_update_non_deterministic(
real delta_seconds);
@@ -337,12 +339,17 @@ boolean match_game_type(
long game_type,
long count,
short const *game_types);
void game_engine_flag_reset(
long weapon_index,
union real_point3d const *position);
void game_engine_initialize(
struct game_variant *variant);
void game_engine_initialize_for_new_map(
void);
void game_engine_player_added(
long player_index);
real game_engine_get_distance_rating_for_spawn(
long player_index,
@@ -385,6 +392,8 @@ void game_engine_prespawn_player_update(
long game_engine_did_player_win(
long player_index);
long game_engine_did_player_win_default(
long player_index);
struct game_variant *game_engine_get_variant(
void);
@@ -395,6 +404,9 @@ struct game_variant *game_engine_get_variant_by_name(
boolean game_engine_get_goal_in_use(
short goal_index);
real_point3d *game_engine_get_goal_position(
real_point3d *position,
short goal_index);
void game_engine_set_goal_position(
short goal_index,
@@ -522,6 +534,19 @@ long game_engine_remap_object_definition(long definition_index);
long game_engine_remap_vehicle(long vehicle_definition_index);
long game_engine_remap_equipment(long equipment_definition_index);
void game_show_score_team(
long team_index,
long score);
void game_show_score_you_ally_enemy(
long player_index,
long you_score,
long ally_score,
long enemy_score,
long other_player_index);
void game_show_score_extended(
long player_index,
long score,
long team_index);
long game_engine_remap_weapon(long weapon_definition_index);
+2 -1
View File
@@ -122,7 +122,6 @@ symbols in this file:
#include "cseries/cseries_windows.h"
#include "cseries/errors.h"
#include "game_engine.h"
#include "game_engine_runtime.h"
#include "players.h"
#include "players_runtime.h"
#include "items/weapons.h"
@@ -232,6 +231,8 @@ typedef char verify_ctf_globals_size[
/* ---------- prototypes */
void ctf_state_message_update_warning(
long team_index);
static long ctf_create_flag_object(
struct scenario_netgame_flag *flag);
+16 -30
View File
@@ -103,11 +103,6 @@ struct multiplayer_sound_queue
struct queued_multiplayer_sound sounds[MAXIMUM_QUEUED_MULTIPLAYER_SOUNDS];
};
struct multiplayer_sound_queue_count
{
long count;
};
struct game_globals_multiplayer_sound_view
{
byte unused[0x164];
@@ -115,7 +110,6 @@ struct game_globals_multiplayer_sound_view
};
typedef char verify_multiplayer_sound_queue_size[sizeof(struct multiplayer_sound_queue) == 0x2C ? 1 : -1];
typedef char verify_multiplayer_sound_queue_count_size[sizeof(struct multiplayer_sound_queue_count) == sizeof(long) ? 1 : -1];
typedef char verify_game_globals_multiplayer_information_offset[
offsetof(struct game_globals_multiplayer_sound_view, multiplayer_information) == 0x164 ? 1 : -1];
@@ -145,13 +139,10 @@ static boolean sound_is_queueable[_multiplayer_sound_ting] =
TRUE, TRUE, FALSE,
};
struct multiplayer_sound_queue_count mp_sound_queue_count = { 0 };
static long mp_sound_queue_count = 0;
static struct queued_multiplayer_sound mp_sound_queue[
MAXIMUM_QUEUED_MULTIPLAYER_SOUNDS] = { 0 };
#define multiplayer_sound_queue_count mp_sound_queue_count.count
#define multiplayer_sound_queue_sounds mp_sound_queue
/* ---------- public code */
static void _game_engine_play_multiplayer_sound(
@@ -184,13 +175,11 @@ static void push_queued_sound(
long sound_index,
long delay_ticks)
{
long queue_index = multiplayer_sound_queue_count;
if (queue_index < MAXIMUM_QUEUED_MULTIPLAYER_SOUNDS)
if (mp_sound_queue_count < MAXIMUM_QUEUED_MULTIPLAYER_SOUNDS)
{
multiplayer_sound_queue_sounds[queue_index].sound_index = sound_index;
multiplayer_sound_queue_sounds[queue_index].delay_ticks = delay_ticks;
multiplayer_sound_queue_count++;
mp_sound_queue[mp_sound_queue_count].sound_index = sound_index;
mp_sound_queue[mp_sound_queue_count].delay_ticks = delay_ticks;
mp_sound_queue_count++;
}
return;
@@ -200,17 +189,14 @@ void game_engine_update_multiplayer_sound(
void)
{
long i;
long queue_count = multiplayer_sound_queue_count;
if (queue_count && --multiplayer_sound_queue_sounds[0].delay_ticks == 0)
if (mp_sound_queue_count && --mp_sound_queue[0].delay_ticks == 0)
{
for (i = 1; i < queue_count; i++)
multiplayer_sound_queue_sounds[i - 1] = multiplayer_sound_queue_sounds[i];
for (i = 1; i < mp_sound_queue_count; i++)
mp_sound_queue[i - 1] = mp_sound_queue[i];
queue_count--;
multiplayer_sound_queue_count = queue_count;
if (queue_count)
_game_engine_play_multiplayer_sound(multiplayer_sound_queue_sounds[0].sound_index);
if (--mp_sound_queue_count)
_game_engine_play_multiplayer_sound(mp_sound_queue[0].sound_index);
}
return;
@@ -254,7 +240,7 @@ void game_engine_play_multiplayer_sound(
push_queued_sound(
sound_index,
get_sound_length_in_ticks(sound_index) + 5);
if (multiplayer_sound_queue_count == 1)
if (mp_sound_queue_count == 1)
_game_engine_play_multiplayer_sound(sound_index);
}
else
@@ -269,12 +255,12 @@ void game_engine_intialize_queued_sounds(
void)
{
csmemset(
multiplayer_sound_queue_sounds,
mp_sound_queue,
0,
sizeof(multiplayer_sound_queue_sounds));
multiplayer_sound_queue_count = 1;
multiplayer_sound_queue_sounds[0].sound_index = NONE;
multiplayer_sound_queue_sounds[0].delay_ticks = MULTIPLAYER_SOUND_QUEUE_INITIAL_DELAY_TICKS;
sizeof(mp_sound_queue));
mp_sound_queue_count = 1;
mp_sound_queue[0].sound_index = NONE;
mp_sound_queue[0].delay_ticks = MULTIPLAYER_SOUND_QUEUE_INITIAL_DELAY_TICKS;
return;
}
+1 -1
View File
@@ -107,7 +107,7 @@ symbols in this file:
#include "cseries/cseries.h"
#include "cseries/errors.h"
#include "game/game_engine_place.h"
#include "game/game_engine_runtime.h"
#include "game/game_engine.h"
#include "game.h"
#include "items/weapon_definitions.h"
#include "items/weapons.h"
-44
View File
@@ -1,44 +0,0 @@
/*
GAME_ENGINE_RUNTIME.H
*/
#ifndef __GAME_ENGINE_RUNTIME_H
#define __GAME_ENGINE_RUNTIME_H
#pragma once
/* ---------- headers */
#include "cseries/cseries.h"
#include "game/game_engine.h"
/* ---------- structures */
union real_point3d;
/* ---------- prototypes/GAME_ENGINE.C */
void game_engine_update(
void);
void game_show_score_team(
long team_index,
long score);
void game_show_score_you_ally_enemy(
long player_index,
long you_score,
long ally_score,
long enemy_score,
long other_player_index);
void game_engine_flag_reset(
long weapon_index,
union real_point3d const *position);
/* ---------- prototypes/GAME_ENGINE_CTF.C */
void ctf_state_message_update_warning(
long team_index);
#endif // __GAME_ENGINE_RUNTIME_H
+1 -2
View File
@@ -84,6 +84,7 @@ symbols in this file:
#include "game/game.h"
#include "game/game_engine.h"
#include "game/game_globals.h"
#include "game/game_allegiance.h"
#include "scenario/scenario.h"
/* ---------- constants */
@@ -94,8 +95,6 @@ symbols in this file:
/* ---------- prototypes */
boolean game_team_is_enemy(short team_index0, short team_index1);
/* ---------- globals */
char const *global_material_type_strings[NUMBER_OF_MATERIAL_TYPES] =
Loaded 100 of 251 files, more files were not shown because too many files have changed in this diff. Show more