Darker — executable gameplay definitions

Field meanings and findings · CSV summary · Exact table bytes

33 records, 24 bytes each. Expand a record for values, meanings and code references. Addresses are unpacked image offsets. Zero model pointers are bank-loader placeholders. Shared geometry does not imply shared behaviour. Caero weapon names are linked to mission introductions; unresolved fields remain explicit.

Identified Caero weapons

Slot / keyNameBehaviour
0 / 1Pinner DirectDirect projectile. Firing requires the trigger and sufficient energy; update CC64 adds no homing correction.
1 / 2Pinner MimicMimic projectile. Update CBCE reads the player pitch and roll continuously, rather than homing on an enemy.
2 / 3Brent Forbes Dual Launch — primary capsulePrimary Dual Launch capsule. Fire sets primary selection to 7; follow-up handler later finds an active capsule of this exact definition.
3 / automaticForbes Diffuser — triggerDiffuser trigger. Shares alternating handler CA69 with gas; building impact requires the recorded gas cell and timing window.
4 / 5Forbes Diffuser — gas capsuleDiffuser gas capsule. Impact on an eligible building records one shared cell and a clock deadline. Selection alternates to the trigger.
5 / 6Brent GroundGround homing projectile. CA5A uses the map-target branch and ordinary CDB1 impact rules.
6 / automaticBrent Forbes Dual Launch — follow-up homing unitDual Launch homing unit. CA99 targets an active slot-2 capsule. CBE7 detects proximity and runs area-hit passes, consuming the pair.
7 / 8Caero WeaponCaero Weapon. Air-target firing; impact CF21 calls the original energy-tower source calculation and adds a base damage term.
8 / 9Pinner/Forbes ChargeableChargeable. Trigger starts accumulation, holding continues it, release launches at a valid object target. Impact strength follows remaining projectile deadline.
9 / 0Brent HunterHunter. Air-target homing projectile using CC61/CC9C and ordinary CDB1 impact rules.
00 — Pinner Direct · 1926

00 00 64 cc 3c c8 0a 1e 34 da 18 04 b1 cd c0 ca 00 01 69 39 1d c4 cc 03

Models: bank 30: pool C3EC, runtime C7EC · bank 31: pool 4C37, runtime 5037 · bank 32: pool B33C, runtime B73C

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52324 / CC64Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed60 / 3CRuntime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32200 / C8Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3410 / 0ARuntime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3630 / 1ERuntime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter52 / 34Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed218 / DAProjectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high24 / 18Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed4 / 04Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback51904 / CAC0Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift0 / 00Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags1 / 01Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch29 / 1DNative FM patch index.356B — traced
+15sound_level_high196 / C4Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch972 / 03CCNative pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 480, "runtime_32": 51200, "runtime_34": 640, "runtime_36": 3840, "sound_level": 50431, "base_speed_term": 3488, "ordinary_deadline_delta_ticks": 1024}

01 — Pinner Mimic · 193E

00 00 ce cb 00 00 00 00 38 70 1c 06 b1 cd c0 ca 00 01 69 39 1d c4 cc 03

Models: bank 30: pool C427, runtime C827 · bank 31: pool 4C37, runtime 5037 · bank 32: pool B377, runtime B777

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52174 / CBCECopied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed0 / 00Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_320 / 00Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_340 / 00Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_360 / 00Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter56 / 38Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed112 / 70Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high28 / 1CCompared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed6 / 06Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback51904 / CAC0Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift0 / 00Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags1 / 01Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch29 / 1DNative FM patch index.356B — traced
+15sound_level_high196 / C4Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch972 / 03CCNative pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 0, "runtime_32": 0, "runtime_34": 0, "runtime_36": 0, "sound_level": 50431, "base_speed_term": 1792, "ordinary_deadline_delta_ticks": 1536}

02 — Brent Forbes Dual Launch — primary capsule · 1956

00 00 64 cc 00 00 00 00 32 70 29 0a b1 cd 4a ca 00 04 69 39 1d c4 22 02

Models: bank 30: pool C5E7, runtime C9E7 · bank 31: pool 4C37, runtime 5037 · bank 32: pool B537, runtime B937

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52324 / CC64Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed0 / 00Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_320 / 00Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_340 / 00Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_360 / 00Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter50 / 32Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed112 / 70Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high41 / 29Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed10 / 0ASpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback51786 / CA4AIndirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift0 / 00Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags4 / 04Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch29 / 1DNative FM patch index.356B — traced
+15sound_level_high196 / C4Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch546 / 0222Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 0, "runtime_32": 0, "runtime_34": 0, "runtime_36": 0, "sound_level": 50431, "base_speed_term": 1792, "ordinary_deadline_delta_ticks": 2560}

03 — Forbes Diffuser — trigger · 196E

00 00 61 cc 28 d0 50 1e 14 73 18 0a 84 ce 69 ca 04 02 69 39 1d c8 00 05

Models: bank 30: pool C6E5, runtime CAE5 · bank 31: pool 4C37, runtime 5037 · bank 32: pool B635, runtime BA35

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed40 / 28Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32208 / D0Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3480 / 50Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3630 / 1ERuntime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter20 / 14Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed115 / 73Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high24 / 18Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed10 / 0ASpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52868 / CE84Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback51817 / CA69Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift4 / 04Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags2 / 02Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch29 / 1DNative FM patch index.356B — traced
+15sound_level_high200 / C8Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch1280 / 0500Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 320, "runtime_32": 53248, "runtime_34": 5120, "runtime_36": 3840, "sound_level": 51455, "base_speed_term": 1840, "ordinary_deadline_delta_ticks": 2560}

04 — Forbes Diffuser — gas capsule · 1986

00 00 61 cc 28 e8 50 1e 1e 73 67 04 84 ce 69 ca 04 02 69 39 1d c8 00 05

Models: bank 30: pool C68A, runtime CA8A · bank 31: pool 4C37, runtime 5037 · bank 32: pool B5DA, runtime B9DA

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed40 / 28Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32232 / E8Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3480 / 50Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3630 / 1ERuntime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter30 / 1EProjectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed115 / 73Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high103 / 67Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed4 / 04Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52868 / CE84Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback51817 / CA69Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift4 / 04Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags2 / 02Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch29 / 1DNative FM patch index.356B — traced
+15sound_level_high200 / C8Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch1280 / 0500Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 320, "runtime_32": 59392, "runtime_34": 5120, "runtime_36": 3840, "sound_level": 51455, "base_speed_term": 1840, "ordinary_deadline_delta_ticks": 1024}

05 — Brent Ground · 199E

00 00 61 cc 32 a0 46 32 38 73 42 05 b1 cd 5a ca 01 02 69 39 1d c8 00 05

Models: bank 30: pool C564, runtime C964 · bank 31: pool 4C37, runtime 5037 · bank 32: pool B4B4, runtime B8B4

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed50 / 32Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32160 / A0Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3470 / 46Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3650 / 32Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter56 / 38Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed115 / 73Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high66 / 42Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed5 / 05Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback51802 / CA5AIndirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift1 / 01Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags2 / 02Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch29 / 1DNative FM patch index.356B — traced
+15sound_level_high200 / C8Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch1280 / 0500Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 400, "runtime_32": 40960, "runtime_34": 4480, "runtime_36": 6400, "sound_level": 51455, "base_speed_term": 1840, "ordinary_deadline_delta_ticks": 1280}

06 — Brent Forbes Dual Launch — follow-up homing unit · 19B6

00 00 e7 cb 20 bc 1e 12 34 96 ca 0a b1 cd 99 ca 00 04 69 39 1d c8 66 02

Models: bank 30: pool C637, runtime CA37 · bank 31: pool 4C37, runtime 5037 · bank 32: pool B587, runtime B987

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52199 / CBE7Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed32 / 20Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32188 / BCRuntime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3430 / 1ERuntime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3618 / 12Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter52 / 34Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed150 / 96Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high202 / CACompared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed10 / 0ASpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback51865 / CA99Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift0 / 00Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags4 / 04Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch29 / 1DNative FM patch index.356B — traced
+15sound_level_high200 / C8Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch614 / 0266Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 256, "runtime_32": 48128, "runtime_34": 1920, "runtime_36": 2304, "sound_level": 51455, "base_speed_term": 2400, "ordinary_deadline_delta_ticks": 2560}

07 — Caero Weapon · 19CE

00 00 61 cc 36 c8 46 1e 3c a2 a5 0a 16 cf 55 ca 00 04 69 39 07 c8 66 02

Models: bank 30: pool C734, runtime CB34 · bank 31: pool 4C37, runtime 5037 · bank 32: pool B684, runtime BA84

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed54 / 36Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32200 / C8Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3470 / 46Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3630 / 1ERuntime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter60 / 3CProjectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed162 / A2Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high165 / A5Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed10 / 0ASpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback53014 / CF16Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback51797 / CA55Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift0 / 00Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags4 / 04Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch7 / 07Native FM patch index.356B — traced
+15sound_level_high200 / C8Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch614 / 0266Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 432, "runtime_32": 51200, "runtime_34": 4480, "runtime_36": 3840, "sound_level": 51455, "base_speed_term": 2592, "ordinary_deadline_delta_ticks": 2560}

08 — Pinner/Forbes Chargeable · 19E6

00 00 68 cc 30 b0 2e 30 3c 40 18 0a 0e cf 7d ca 00 04 57 39 03 c8 ae 02

Models: bank 30: pool C4F7, runtime C8F7 · bank 31: pool 4C37, runtime 5037 · bank 32: pool B447, runtime B847

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52328 / CC68Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed48 / 30Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32176 / B0Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3446 / 2ERuntime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3648 / 30Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter60 / 3CProjectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed64 / 40Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high24 / 18Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed10 / 0ASpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback53006 / CF0ECollision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback51837 / CA7DIndirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift0 / 00Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags4 / 04Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14679 / 3957Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch3 / 03Native FM patch index.356B — traced
+15sound_level_high200 / C8Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch686 / 02AENative pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 384, "runtime_32": 45056, "runtime_34": 2944, "runtime_36": 6144, "sound_level": 51455, "base_speed_term": 1024, "ordinary_deadline_delta_ticks": 2560}

09 — Brent Hunter · 19FE

00 00 61 cc 42 a8 50 3e 3b b2 42 08 b1 cd 55 ca 00 04 69 39 1d c8 00 05

Models: bank 30: pool C46A, runtime C86A · bank 31: pool 4C37, runtime 5037 · bank 32: pool B3BA, runtime B7BA

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed66 / 42Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32168 / A8Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3480 / 50Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3662 / 3ERuntime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter59 / 3BProjectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed178 / B2Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high66 / 42Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed8 / 08Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback51797 / CA55Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift0 / 00Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags4 / 04Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch29 / 1DNative FM patch index.356B — traced
+15sound_level_high200 / C8Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch1280 / 0500Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 528, "runtime_32": 43008, "runtime_34": 5120, "runtime_36": 7936, "sound_level": 51455, "base_speed_term": 2848, "ordinary_deadline_delta_ticks": 2048}

10 — Projectile slot 10 · 1A16

00 00 61 cc 3c b8 32 12 5a 89 42 0a b1 cd 55 ca 00 01 69 39 21 d6 ae 02

Models: bank 30: pool C7C4, runtime CBC4 · bank 31: pool 4C37, runtime 5037 · bank 32: pool B714, runtime BB14

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed60 / 3CRuntime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32184 / B8Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3450 / 32Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3618 / 12Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter90 / 5AProjectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed137 / 89Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high66 / 42Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed10 / 0ASpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback51797 / CA55Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift0 / 00Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags1 / 01Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch33 / 21Native FM patch index.356B — traced
+15sound_level_high214 / D6Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch686 / 02AENative pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 480, "runtime_32": 47104, "runtime_34": 3200, "runtime_36": 2304, "sound_level": 55039, "base_speed_term": 2192, "ordinary_deadline_delta_ticks": 2560}

11 — Projectile slot 11 · 1A2E

00 00 61 cc 0a b8 32 12 50 70 42 0a b1 cd 5a ca 04 02 69 39 21 d6 03 02

Models: bank 30: pool C819, runtime CC19 · bank 31: pool 4C8C, runtime 508C · bank 32: pool B769, runtime BB69

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed10 / 0ARuntime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32184 / B8Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3450 / 32Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3618 / 12Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter80 / 50Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed112 / 70Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high66 / 42Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed10 / 0ASpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback51802 / CA5AIndirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift4 / 04Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags2 / 02Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch33 / 21Native FM patch index.356B — traced
+15sound_level_high214 / D6Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch515 / 0203Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 80, "runtime_32": 47104, "runtime_34": 3200, "runtime_36": 2304, "sound_level": 55039, "base_speed_term": 1792, "ordinary_deadline_delta_ticks": 2560}

12 — Projectile slot 12 · 1A46

00 00 61 cc 3c b8 32 12 8c 9c 42 0a b1 cd 55 ca 00 04 69 39 21 d6 ae 02

Models: bank 30: pool C8C0, runtime CCC0 · bank 31: pool 4D33, runtime 5133 · bank 32: pool B810, runtime BC10

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed60 / 3CRuntime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32184 / B8Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3450 / 32Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3618 / 12Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter140 / 8CProjectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed156 / 9CProjectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high66 / 42Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed10 / 0ASpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback51797 / CA55Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift0 / 00Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags4 / 04Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch33 / 21Native FM patch index.356B — traced
+15sound_level_high214 / D6Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch686 / 02AENative pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 480, "runtime_32": 47104, "runtime_34": 3200, "runtime_36": 2304, "sound_level": 55039, "base_speed_term": 2496, "ordinary_deadline_delta_ticks": 2560}

13 — Projectile slot 13 · 1A5E

00 00 61 cc 3c b8 32 12 50 70 21 0a b1 cd 00 00 00 01 69 39 21 d6 ae 02

Models: bank 30: pool C819, runtime CC19 · bank 31: pool 4C8C, runtime 508C · bank 32: pool B769, runtime BB69

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed60 / 3CRuntime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32184 / B8Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3450 / 32Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3618 / 12Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter80 / 50Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed112 / 70Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high33 / 21Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed10 / 0ASpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback0 / 0000Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift0 / 00Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags1 / 01Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch33 / 21Native FM patch index.356B — traced
+15sound_level_high214 / D6Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch686 / 02AENative pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 480, "runtime_32": 47104, "runtime_34": 3200, "runtime_36": 2304, "sound_level": 55039, "base_speed_term": 1792, "ordinary_deadline_delta_ticks": 2560}

14 — Projectile slot 14 · 1A76

00 00 61 cc 40 b8 40 30 50 32 42 1c b1 cd 00 00 01 02 69 39 21 d6 ae 02

Models: bank 30: pool C91A, runtime CD1A · bank 31: pool 4D8D, runtime 518D · bank 32: pool B86A, runtime BC6A

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed64 / 40Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32184 / B8Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3464 / 40Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3648 / 30Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter80 / 50Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed50 / 32Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high66 / 42Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed28 / 1CSpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback0 / 0000Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift1 / 01Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags2 / 02Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch33 / 21Native FM patch index.356B — traced
+15sound_level_high214 / D6Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch686 / 02AENative pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 512, "runtime_32": 47104, "runtime_34": 4096, "runtime_36": 6144, "sound_level": 55039, "base_speed_term": 800, "ordinary_deadline_delta_ticks": 7168}

15 — Projectile slot 15 · 1A8E

00 00 61 cc 40 b8 32 1c 82 99 42 0a b1 cd 00 00 00 01 69 39 21 d6 03 02

Models: bank 30: pool C7C4, runtime CBC4 · bank 31: pool 4C37, runtime 5037 · bank 32: pool B714, runtime BB14

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed64 / 40Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32184 / B8Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3450 / 32Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3628 / 1CRuntime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter130 / 82Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed153 / 99Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high66 / 42Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed10 / 0ASpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback0 / 0000Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift0 / 00Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags1 / 01Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch33 / 21Native FM patch index.356B — traced
+15sound_level_high214 / D6Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch515 / 0203Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 512, "runtime_32": 47104, "runtime_34": 3200, "runtime_36": 3584, "sound_level": 55039, "base_speed_term": 2448, "ordinary_deadline_delta_ticks": 2560}

16 — Projectile slot 16 · 1AA6

00 00 61 cc 40 b8 40 30 50 4b 42 0f b1 cd 00 00 01 02 69 39 21 d6 ae 02

Models: bank 30: pool C819, runtime CC19 · bank 31: pool 4C8C, runtime 508C · bank 32: pool B769, runtime BB69

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed64 / 40Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32184 / B8Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3464 / 40Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3648 / 30Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter80 / 50Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed75 / 4BProjectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high66 / 42Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed15 / 0FSpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback0 / 0000Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift1 / 01Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags2 / 02Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch33 / 21Native FM patch index.356B — traced
+15sound_level_high214 / D6Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch686 / 02AENative pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 512, "runtime_32": 47104, "runtime_34": 4096, "runtime_36": 6144, "sound_level": 55039, "base_speed_term": 1200, "ordinary_deadline_delta_ticks": 3840}

17 — Projectile slot 17 · 1ABE

00 00 61 cc 3c b8 32 12 50 9c 42 0a b1 cd 00 00 00 04 69 39 21 d6 ae 02

Models: bank 30: pool C8C0, runtime CCC0 · bank 31: pool 4D33, runtime 5133 · bank 32: pool B810, runtime BC10

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed60 / 3CRuntime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32184 / B8Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3450 / 32Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3618 / 12Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter80 / 50Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed156 / 9CProjectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high66 / 42Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed10 / 0ASpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback0 / 0000Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift0 / 00Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags4 / 04Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch33 / 21Native FM patch index.356B — traced
+15sound_level_high214 / D6Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch686 / 02AENative pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 480, "runtime_32": 47104, "runtime_34": 3200, "runtime_36": 2304, "sound_level": 55039, "base_speed_term": 2496, "ordinary_deadline_delta_ticks": 2560}

18 — Projectile slot 18 · 1AD6

00 00 61 cc 2e a8 50 3e 96 6a 00 0a b1 cd 00 00 00 01 69 39 1d c8 00 05

Models: bank 30: pool C46A, runtime C86A · bank 31: pool 4C8C, runtime 508C · bank 32: pool B3BA, runtime B7BA

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback52321 / CC61Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed46 / 2ERuntime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32168 / A8Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3480 / 50Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3662 / 3ERuntime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter150 / 96Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed106 / 6AProjectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Aenergy_threshold_high0 / 00Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent.C9DA–C9F3; CAC9 — traced
+0Bdeadline_seed10 / 0ASpawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval.CAC4–CAC6; CAF0–CB0F — traced
+0Cimpact_callback52657 / CDB1Collision response entry; handlers branch on the collision kind.6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced
+0Efire_callback0 / 0000Indirect weapon handler; some non-player projectile records have zero.C9FB — traced
+10guidance_shift0 / 00Right-shift count in target/steering calculation.CCAC–CCAF — traced
+11target_flags1 / 01Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded.D022–D029; CDDA; CDFB — partial bit semantics
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch29 / 1DNative FM patch index.356B — traced
+15sound_level_high200 / C8Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch1280 / 0500Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 368, "runtime_32": 43008, "runtime_34": 5120, "runtime_36": 7936, "sound_level": 51455, "base_speed_term": 1696, "ordinary_deadline_delta_ticks": 2560}

19 — Craft slot 19 · 1AEE

00 00 00 00 30 e0 50 3c 28 1f 64 64 0b 00 0c 14 0a 03 1d 39 08 e4 62 03

Models: bank 30: pool D25F, runtime D65F · bank 31: pool 4E53, runtime 5253 · bank 32: pool C1AF, runtime C5AF

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback0 / 0000Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed48 / 30Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32224 / E0Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3480 / 50Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3660 / 3CRuntime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter40 / 28Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed31 / 1FProjectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a100 / 64Role-specific byte; not yet decoded. — unknown
+0Braw_0b100 / 64Role-specific byte; not yet decoded. — unknown
+0Craw_0c11 / 0BUsed as initial high-byte parameter by mission spawning; full role unresolved.BE9E — partial
+0Draw_0d0 / 00Role-specific byte; not yet decoded. — unknown
+0Eplayer_speed_seed12 / 0CFor player setup only: initial speed target = byte << 3.BD16–BD22 — traced
+0Fplayer_vertical_target_byte20 / 14For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term.BD16–BD19; 8004 — traced
+10raw_1010 / 0ARole-specific byte; not yet decoded. — unknown
+11raw_113 / 03Role-specific byte; not yet decoded. — unknown
+12sound_callback14621 / 391DCalled before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch8 / 08Native FM patch index.356B — traced
+15sound_level_high228 / E4Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch866 / 0362Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 384, "runtime_32": 57344, "runtime_34": 5120, "runtime_36": 7680, "sound_level": 58623}

20 — Craft slot 20 · 1B06

00 00 00 00 28 e0 50 26 2d 1f 36 36 0c 01 10 24 0f 03 1d 39 08 c8 86 04

Models: bank 30: pool E2B0, runtime E6B0 · bank 31: pool 5EA4, runtime 62A4 · bank 32: pool CE9D, runtime D29D

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback0 / 0000Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed40 / 28Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32224 / E0Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3480 / 50Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3638 / 26Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter45 / 2DProjectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed31 / 1FProjectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a54 / 36Role-specific byte; not yet decoded. — unknown
+0Braw_0b54 / 36Role-specific byte; not yet decoded. — unknown
+0Craw_0c12 / 0CUsed as initial high-byte parameter by mission spawning; full role unresolved.BE9E — partial
+0Draw_0d1 / 01Role-specific byte; not yet decoded. — unknown
+0Eplayer_speed_seed16 / 10For player setup only: initial speed target = byte << 3.BD16–BD22 — traced
+0Fplayer_vertical_target_byte36 / 24For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term.BD16–BD19; 8004 — traced
+10raw_1015 / 0FRole-specific byte; not yet decoded. — unknown
+11raw_113 / 03Role-specific byte; not yet decoded. — unknown
+12sound_callback14621 / 391DCalled before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch8 / 08Native FM patch index.356B — traced
+15sound_level_high200 / C8Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch1158 / 0486Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 320, "runtime_32": 57344, "runtime_34": 5120, "runtime_36": 4864, "sound_level": 51455}

21 — Craft slot 21 · 1B1E

00 00 00 00 30 e0 40 26 4b 25 42 42 0e 02 1d 29 0f 05 1d 39 06 c8 8a 02

Models: bank 30: pool D67A, runtime DA7A · bank 31: pool 526E, runtime 566E · bank 32: pool CBA6, runtime CFA6

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback0 / 0000Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed48 / 30Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32224 / E0Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3464 / 40Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3638 / 26Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter75 / 4BProjectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed37 / 25Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a66 / 42Role-specific byte; not yet decoded. — unknown
+0Braw_0b66 / 42Role-specific byte; not yet decoded. — unknown
+0Craw_0c14 / 0EUsed as initial high-byte parameter by mission spawning; full role unresolved.BE9E — partial
+0Draw_0d2 / 02Role-specific byte; not yet decoded. — unknown
+0Eplayer_speed_seed29 / 1DFor player setup only: initial speed target = byte << 3.BD16–BD22 — traced
+0Fplayer_vertical_target_byte41 / 29For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term.BD16–BD19; 8004 — traced
+10raw_1015 / 0FRole-specific byte; not yet decoded. — unknown
+11raw_115 / 05Role-specific byte; not yet decoded. — unknown
+12sound_callback14621 / 391DCalled before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch6 / 06Native FM patch index.356B — traced
+15sound_level_high200 / C8Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch650 / 028ANative pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 384, "runtime_32": 57344, "runtime_34": 4096, "runtime_36": 4864, "sound_level": 51455}

22 — Craft slot 22 · 1B36

00 00 00 00 28 e0 50 3c 3c 29 50 5f 10 01 0c 02 0f 04 3d 39 22 f0 c0 0c

Models: bank 30: pool DD76, runtime E176 · bank 31: pool 596A, runtime 5D6A · bank 32: pool C1AF, runtime C5AF

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback0 / 0000Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed40 / 28Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32224 / E0Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3480 / 50Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3660 / 3CRuntime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter60 / 3CProjectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed41 / 29Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a80 / 50Role-specific byte; not yet decoded. — unknown
+0Braw_0b95 / 5FRole-specific byte; not yet decoded. — unknown
+0Craw_0c16 / 10Used as initial high-byte parameter by mission spawning; full role unresolved.BE9E — partial
+0Draw_0d1 / 01Role-specific byte; not yet decoded. — unknown
+0Eplayer_speed_seed12 / 0CFor player setup only: initial speed target = byte << 3.BD16–BD22 — traced
+0Fplayer_vertical_target_byte2 / 02For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term.BD16–BD19; 8004 — traced
+10raw_1015 / 0FRole-specific byte; not yet decoded. — unknown
+11raw_114 / 04Role-specific byte; not yet decoded. — unknown
+12sound_callback14653 / 393DCalled before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch34 / 22Native FM patch index.356B — traced
+15sound_level_high240 / F0Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch3264 / 0CC0Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 320, "runtime_32": 57344, "runtime_34": 5120, "runtime_36": 7680, "sound_level": 61695}

23 — Craft slot 23 · 1B4E

00 00 00 00 1e e0 50 1e 4e 10 21 37 0a 01 0e 0e 0d 03 1d 39 09 e6 8a 02

Models: bank 30: pool D971, runtime DD71 · bank 31: pool 5565, runtime 5965 · bank 32: pool C1AF, runtime C5AF

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback0 / 0000Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed30 / 1ERuntime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32224 / E0Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3480 / 50Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3630 / 1ERuntime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter78 / 4EProjectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed16 / 10Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a33 / 21Role-specific byte; not yet decoded. — unknown
+0Braw_0b55 / 37Role-specific byte; not yet decoded. — unknown
+0Craw_0c10 / 0AUsed as initial high-byte parameter by mission spawning; full role unresolved.BE9E — partial
+0Draw_0d1 / 01Role-specific byte; not yet decoded. — unknown
+0Eplayer_speed_seed14 / 0EFor player setup only: initial speed target = byte << 3.BD16–BD22 — traced
+0Fplayer_vertical_target_byte14 / 0EFor player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term.BD16–BD19; 8004 — traced
+10raw_1013 / 0DRole-specific byte; not yet decoded. — unknown
+11raw_113 / 03Role-specific byte; not yet decoded. — unknown
+12sound_callback14621 / 391DCalled before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch9 / 09Native FM patch index.356B — traced
+15sound_level_high230 / E6Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch650 / 028ANative pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 240, "runtime_32": 57344, "runtime_34": 5120, "runtime_36": 3840, "sound_level": 59135}

24 — Craft slot 24 · 1B66

00 00 08 81 34 a0 50 69 01 00 00 00 1b 00 20 92 0a 07 14 39 08 e4 30 03

Models: bank 30: pool D25F, runtime D65F · bank 31: pool 4E53, runtime 5253 · bank 32: pool C1AF, runtime C5AF

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback33032 / 8108Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed52 / 34Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32160 / A0Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3480 / 50Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_36105 / 69Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter1 / 01Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed0 / 00Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a0 / 00Role-specific byte; not yet decoded. — unknown
+0Braw_0b0 / 00Role-specific byte; not yet decoded. — unknown
+0Craw_0c27 / 1BUsed as initial high-byte parameter by mission spawning; full role unresolved.BE9E — partial
+0Draw_0d0 / 00Role-specific byte; not yet decoded. — unknown
+0Eplayer_speed_seed32 / 20For player setup only: initial speed target = byte << 3.BD16–BD22 — traced
+0Fplayer_vertical_target_byte146 / 92For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term.BD16–BD19; 8004 — traced
+10raw_1010 / 0ARole-specific byte; not yet decoded. — unknown
+11raw_117 / 07Role-specific byte; not yet decoded. — unknown
+12sound_callback14612 / 3914Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch8 / 08Native FM patch index.356B — traced
+15sound_level_high228 / E4Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch816 / 0330Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 416, "runtime_32": 40960, "runtime_34": 5120, "runtime_36": 13440, "sound_level": 58623}

25 — Caero player configuration · 1B7E

00 00 7f 7e 34 a0 14 28 01 00 00 00 19 00 cf a6 00 07 80 39 07 c4 98 01

Models: bank 30: pool C9E0, runtime CDE0 · bank 31: pool 4E53, runtime 5253 · bank 32: pool B930, runtime BD30

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback32383 / 7E7FCopied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed52 / 34Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32160 / A0Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3420 / 14Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_3640 / 28Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter1 / 01Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed0 / 00Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a0 / 00Role-specific byte; not yet decoded. — unknown
+0Braw_0b0 / 00Role-specific byte; not yet decoded. — unknown
+0Craw_0c25 / 19Used as initial high-byte parameter by mission spawning; full role unresolved.BE9E — partial
+0Draw_0d0 / 00Role-specific byte; not yet decoded. — unknown
+0Eplayer_speed_seed207 / CFFor player setup only: initial speed target = byte << 3.BD16–BD22 — traced
+0Fplayer_vertical_target_byte166 / A6For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term.BD16–BD19; 8004 — traced
+10raw_100 / 00Role-specific byte; not yet decoded. — unknown
+11raw_117 / 07Role-specific byte; not yet decoded. — unknown
+12sound_callback14720 / 3980Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch7 / 07Native FM patch index.356B — traced
+15sound_level_high196 / C4Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch408 / 0198Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 416, "runtime_32": 40960, "runtime_34": 1280, "runtime_36": 5120, "sound_level": 50431, "initial_player_speed_target": 1656, "vertical_target_signed_byte": -90}

26 — Skimma player configuration · 1B96

00 00 08 81 2c a0 46 69 01 00 00 00 1a 01 20 96 0a 03 14 39 08 e4 62 03

Models: bank 30: pool D25F, runtime D65F · bank 31: pool 4E53, runtime 5253 · bank 32: pool C1AF, runtime C5AF

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback33032 / 8108Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed44 / 2CRuntime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32160 / A0Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3470 / 46Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_36105 / 69Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter1 / 01Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed0 / 00Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a0 / 00Role-specific byte; not yet decoded. — unknown
+0Braw_0b0 / 00Role-specific byte; not yet decoded. — unknown
+0Craw_0c26 / 1AUsed as initial high-byte parameter by mission spawning; full role unresolved.BE9E — partial
+0Draw_0d1 / 01Role-specific byte; not yet decoded. — unknown
+0Eplayer_speed_seed32 / 20For player setup only: initial speed target = byte << 3.BD16–BD22 — traced
+0Fplayer_vertical_target_byte150 / 96For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term.BD16–BD19; 8004 — traced
+10raw_1010 / 0ARole-specific byte; not yet decoded. — unknown
+11raw_113 / 03Role-specific byte; not yet decoded. — unknown
+12sound_callback14612 / 3914Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch8 / 08Native FM patch index.356B — traced
+15sound_level_high228 / E4Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch866 / 0362Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 352, "runtime_32": 40960, "runtime_34": 4480, "runtime_36": 13440, "sound_level": 58623, "initial_player_speed_target": 256, "vertical_target_signed_byte": -106}

27 — Upgraded Skimma player configuration · 1BAE

00 00 49 7e 30 a0 50 69 01 00 00 00 1b 01 20 92 0a 07 14 39 08 e4 30 03

Models: bank 30: pool D25F, runtime D65F · bank 31: pool 4E53, runtime 5253 · bank 32: pool C1AF, runtime C5AF

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback32329 / 7E49Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed48 / 30Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_32160 / A0Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_3480 / 50Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_36105 / 69Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter1 / 01Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed0 / 00Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a0 / 00Role-specific byte; not yet decoded. — unknown
+0Braw_0b0 / 00Role-specific byte; not yet decoded. — unknown
+0Craw_0c27 / 1BUsed as initial high-byte parameter by mission spawning; full role unresolved.BE9E — partial
+0Draw_0d1 / 01Role-specific byte; not yet decoded. — unknown
+0Eplayer_speed_seed32 / 20For player setup only: initial speed target = byte << 3.BD16–BD22 — traced
+0Fplayer_vertical_target_byte146 / 92For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term.BD16–BD19; 8004 — traced
+10raw_1010 / 0ARole-specific byte; not yet decoded. — unknown
+11raw_117 / 07Role-specific byte; not yet decoded. — unknown
+12sound_callback14612 / 3914Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch8 / 08Native FM patch index.356B — traced
+15sound_level_high228 / E4Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch816 / 0330Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 384, "runtime_32": 40960, "runtime_34": 5120, "runtime_36": 13440, "sound_level": 58623, "initial_player_speed_target": 256, "vertical_target_signed_byte": -110}

28 — Underground player configuration · 1BC6

00 00 10 d5 16 00 00 00 01 00 00 00 19 02 0c a6 00 01 80 39 07 c4 98 01

Models: bank 30: pool C9E0, runtime CDE0 · bank 31: pool 4E53, runtime 5253 · bank 32: pool B930, runtime BD30

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback54544 / D510Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed22 / 16Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_320 / 00Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_340 / 00Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_360 / 00Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter1 / 01Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed0 / 00Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a0 / 00Role-specific byte; not yet decoded. — unknown
+0Braw_0b0 / 00Role-specific byte; not yet decoded. — unknown
+0Craw_0c25 / 19Used as initial high-byte parameter by mission spawning; full role unresolved.BE9E — partial
+0Draw_0d2 / 02Role-specific byte; not yet decoded. — unknown
+0Eplayer_speed_seed12 / 0CFor player setup only: initial speed target = byte << 3.BD16–BD22 — traced
+0Fplayer_vertical_target_byte166 / A6For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term.BD16–BD19; 8004 — traced
+10raw_100 / 00Role-specific byte; not yet decoded. — unknown
+11raw_111 / 01Role-specific byte; not yet decoded. — unknown
+12sound_callback14720 / 3980Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch7 / 07Native FM patch index.356B — traced
+15sound_level_high196 / C4Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch408 / 0198Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 176, "runtime_32": 0, "runtime_34": 0, "runtime_36": 0, "sound_level": 50431, "initial_player_speed_target": 96, "vertical_target_signed_byte": -90}

29 — Other Special slot 29 · 1BDE

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 02 42 39 09 cc 30 03

Models: bank 30: pool C9E0, runtime CDE0 · bank 31: pool 4E53, runtime 5253 · bank 32: pool C5A4, runtime C9A4

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback0 / 0000Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed0 / 00Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_320 / 00Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_340 / 00Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_360 / 00Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter0 / 00Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed0 / 00Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a0 / 00Role-specific byte; not yet decoded. — unknown
+0Braw_0b0 / 00Role-specific byte; not yet decoded. — unknown
+0Craw_0c0 / 00Role-specific byte; not yet decoded. — unknown
+0Draw_0d0 / 00Role-specific byte; not yet decoded. — unknown
+0Eraw_0e0 / 00Role-specific byte; not yet decoded. — unknown
+0Fraw_0f0 / 00Role-specific byte; not yet decoded. — unknown
+10raw_1018 / 12Role-specific byte; not yet decoded. — unknown
+11raw_112 / 02Role-specific byte; not yet decoded. — unknown
+12sound_callback14658 / 3942Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch9 / 09Native FM patch index.356B — traced
+15sound_level_high204 / CCBaseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch816 / 0330Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 0, "runtime_32": 0, "runtime_34": 0, "runtime_36": 0, "sound_level": 52479}

30 — Other Special slot 30 · 1BF6

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 39 23 c3 02 03

Models: bank 30: pool E793, runtime EB93 · bank 31: pool 4E53, runtime 5253 · bank 32: pool C5A4, runtime C9A4

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback0 / 0000Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed0 / 00Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_320 / 00Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_340 / 00Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_360 / 00Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter0 / 00Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed0 / 00Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a0 / 00Role-specific byte; not yet decoded. — unknown
+0Braw_0b0 / 00Role-specific byte; not yet decoded. — unknown
+0Craw_0c0 / 00Role-specific byte; not yet decoded. — unknown
+0Draw_0d0 / 00Role-specific byte; not yet decoded. — unknown
+0Eraw_0e0 / 00Role-specific byte; not yet decoded. — unknown
+0Fraw_0f0 / 00Role-specific byte; not yet decoded. — unknown
+10raw_100 / 00Role-specific byte; not yet decoded. — unknown
+11raw_110 / 00Role-specific byte; not yet decoded. — unknown
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch35 / 23Native FM patch index.356B — traced
+15sound_level_high195 / C3Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch770 / 0302Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 0, "runtime_32": 0, "runtime_34": 0, "runtime_36": 0, "sound_level": 50175}

31 — Other Special slot 31 · 1C0E

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 39 23 c3 02 03

Models: bank 30: pool EAB5, runtime EEB5 · bank 31: pool 4E53, runtime 5253 · bank 32: pool C5A4, runtime C9A4

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback0 / 0000Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed0 / 00Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_320 / 00Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_340 / 00Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_360 / 00Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter0 / 00Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed0 / 00Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a0 / 00Role-specific byte; not yet decoded. — unknown
+0Braw_0b0 / 00Role-specific byte; not yet decoded. — unknown
+0Craw_0c0 / 00Role-specific byte; not yet decoded. — unknown
+0Draw_0d0 / 00Role-specific byte; not yet decoded. — unknown
+0Eraw_0e0 / 00Role-specific byte; not yet decoded. — unknown
+0Fraw_0f0 / 00Role-specific byte; not yet decoded. — unknown
+10raw_100 / 00Role-specific byte; not yet decoded. — unknown
+11raw_110 / 00Role-specific byte; not yet decoded. — unknown
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch35 / 23Native FM patch index.356B — traced
+15sound_level_high195 / C3Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch770 / 0302Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 0, "runtime_32": 0, "runtime_34": 0, "runtime_36": 0, "sound_level": 50175}

32 — Other Special slot 32 · 1C26

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 01 69 39 23 c3 02 03

Models: bank 30: pool EC4D, runtime F04D · bank 31: pool 4E53, runtime 5253 · bank 32: pool C5A4, runtime C9A4

OffsetFieldValue (decimal / hex)MeaningCode references / confidence
+00model_pointer0 / 0000Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400.BF46–BF47; geometry-bank loader — traced
+02initial_update_callback0 / 0000Copied to runtime object +0x66. Zero is retained, not inferred as missing data.BF4A–BF4B; 7A2D — traced
+04angular_response_seed0 / 00Runtime +0x30 = unsigned byte << 3.BF55–BF5E; 83D4 — traced
+05motion_seed_320 / 00Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete.BF55–BF58 — transformation verified; semantic role partial
+06motion_seed_340 / 00Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete.BF63–BF6B — transformation verified; semantic role partial
+07motion_seed_360 / 00Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete.BF63–BF6E — transformation verified; semantic role partial
+08impact_parameter0 / 00Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count.CE1E–CE69; CB1F — traced
+09speed_seed0 / 00Projectile base movement term = byte << 4; also used for initial mission-object speed.CC87–CC92; BE83–BE8E — traced
+0Araw_0a0 / 00Role-specific byte; not yet decoded. — unknown
+0Braw_0b0 / 00Role-specific byte; not yet decoded. — unknown
+0Craw_0c0 / 00Role-specific byte; not yet decoded. — unknown
+0Draw_0d0 / 00Role-specific byte; not yet decoded. — unknown
+0Eraw_0e0 / 00Role-specific byte; not yet decoded. — unknown
+0Fraw_0f0 / 00Role-specific byte; not yet decoded. — unknown
+10raw_1018 / 12Role-specific byte; not yet decoded. — unknown
+11raw_111 / 01Role-specific byte; not yet decoded. — unknown
+12sound_callback14697 / 3969Called before scheduling object sound; may alter pitch/level or reject it.3573 — traced
+14fm_patch35 / 23Native FM patch index.356B — traced
+15sound_level_high195 / C3Baseline level = (byte << 8) | 255.3566–3569 — traced
+16sound_pitch770 / 0302Native pitch parameter, not Hz or a MIDI note. Can be changed at runtime.356E; CC5C — traced

Expanded values: {"runtime_30": 0, "runtime_32": 0, "runtime_34": 0, "runtime_36": 0, "sound_level": 50175}