mirror of
https://github.com/Cesarus85/ringfall-mjolnir-vr.git
synced 2026-10-17 12:00:26 +02:00
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:
1 parent
51cd4d8b67
commit
f3aadeab98
251 files changed
+2813
-5280
No files matched your search
+4
-4
@@ -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
@@ -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
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
},
|
||||
{
|
||||
"symbol": "_rdata_002a0a88",
|
||||
"base_symbol": "$T18502",
|
||||
"base_symbol": "$T18685",
|
||||
"source_function": "_main",
|
||||
"measurements": {
|
||||
"target": {
|
||||
|
||||
@@ -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
@@ -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.
|
||||
@@ -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,
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 */
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -16,6 +16,7 @@ symbols in this file:
|
||||
/* ---------- headers */
|
||||
|
||||
#include "cseries.h"
|
||||
#include "cseries/errors.h"
|
||||
#include "actions.h"
|
||||
|
||||
#include "actor_definitions.h"
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
@@ -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 */
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
@@ -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 */
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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
@@ -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,
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 */
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Vendored
-14
@@ -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 */
|
||||
Vendored
+2
-8
@@ -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 */
|
||||
|
||||
|
||||
Vendored
+2
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
Vendored
+1
-5
@@ -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 */
|
||||
|
||||
Vendored
+6
@@ -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(
|
||||
|
||||
Vendored
+2
@@ -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"
|
||||
|
||||
Vendored
+7
-3
@@ -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);
|
||||
|
||||
Vendored
-27
@@ -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
|
||||
@@ -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(
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -22,7 +22,8 @@ boolean game_in_editor(
|
||||
}
|
||||
|
||||
boolean editor_preprocess_rendered_object(
|
||||
void)
|
||||
long object_index,
|
||||
struct render_lighting *lighting)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 */
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
@@ -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
Reference in new issue
Block a user