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.
| Slot / key | Name | Behaviour |
|---|---|---|
| 0 / 1 | Pinner Direct | Direct projectile. Firing requires the trigger and sufficient energy; update CC64 adds no homing correction. |
| 1 / 2 | Pinner Mimic | Mimic projectile. Update CBCE reads the player pitch and roll continuously, rather than homing on an enemy. |
| 2 / 3 | Brent Forbes Dual Launch — primary capsule | Primary Dual Launch capsule. Fire sets primary selection to 7; follow-up handler later finds an active capsule of this exact definition. |
| 3 / automatic | Forbes Diffuser — trigger | Diffuser trigger. Shares alternating handler CA69 with gas; building impact requires the recorded gas cell and timing window. |
| 4 / 5 | Forbes Diffuser — gas capsule | Diffuser gas capsule. Impact on an eligible building records one shared cell and a clock deadline. Selection alternates to the trigger. |
| 5 / 6 | Brent Ground | Ground homing projectile. CA5A uses the map-target branch and ordinary CDB1 impact rules. |
| 6 / automatic | Brent Forbes Dual Launch — follow-up homing unit | Dual Launch homing unit. CA99 targets an active slot-2 capsule. CBE7 detects proximity and runs area-hit passes, consuming the pair. |
| 7 / 8 | Caero Weapon | Caero Weapon. Air-target firing; impact CF21 calls the original energy-tower source calculation and adds a base damage term. |
| 8 / 9 | Pinner/Forbes Chargeable | Chargeable. Trigger starts accumulation, holding continues it, release launches at a valid object target. Impact strength follows remaining projectile deadline. |
| 9 / 0 | Brent Hunter | Hunter. Air-target homing projectile using CC61/CC9C and ordinary CDB1 impact rules. |
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52324 / CC64 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 60 / 3C | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 200 / C8 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 10 / 0A | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 30 / 1E | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 52 / 34 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 218 / DA | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 24 / 18 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 4 / 04 | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 51904 / CAC0 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 0 / 00 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 1 / 01 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 29 / 1D | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 196 / C4 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 972 / 03CC | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52174 / CBCE | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 0 / 00 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 0 / 00 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 0 / 00 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 0 / 00 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 56 / 38 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 112 / 70 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 28 / 1C | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 6 / 06 | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 51904 / CAC0 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 0 / 00 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 1 / 01 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 29 / 1D | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 196 / C4 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 972 / 03CC | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52324 / CC64 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 0 / 00 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 0 / 00 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 0 / 00 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 0 / 00 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 50 / 32 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 112 / 70 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 41 / 29 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 10 / 0A | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 51786 / CA4A | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 0 / 00 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 4 / 04 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 29 / 1D | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 196 / C4 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 546 / 0222 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 40 / 28 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 208 / D0 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 80 / 50 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 30 / 1E | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 20 / 14 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 115 / 73 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 24 / 18 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 10 / 0A | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52868 / CE84 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 51817 / CA69 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 4 / 04 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 2 / 02 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 29 / 1D | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 200 / C8 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 1280 / 0500 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 40 / 28 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 232 / E8 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 80 / 50 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 30 / 1E | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 30 / 1E | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 115 / 73 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 103 / 67 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 4 / 04 | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52868 / CE84 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 51817 / CA69 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 4 / 04 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 2 / 02 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 29 / 1D | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 200 / C8 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 1280 / 0500 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 50 / 32 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 160 / A0 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 70 / 46 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 50 / 32 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 56 / 38 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 115 / 73 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 66 / 42 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 5 / 05 | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 51802 / CA5A | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 1 / 01 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 2 / 02 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 29 / 1D | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 200 / C8 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 1280 / 0500 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52199 / CBE7 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 32 / 20 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 188 / BC | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 30 / 1E | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 18 / 12 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 52 / 34 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 150 / 96 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 202 / CA | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 10 / 0A | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 51865 / CA99 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 0 / 00 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 4 / 04 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 29 / 1D | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 200 / C8 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 614 / 0266 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 54 / 36 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 200 / C8 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 70 / 46 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 30 / 1E | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 60 / 3C | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 162 / A2 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 165 / A5 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 10 / 0A | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 53014 / CF16 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 51797 / CA55 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 0 / 00 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 4 / 04 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 7 / 07 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 200 / C8 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 614 / 0266 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52328 / CC68 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 48 / 30 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 176 / B0 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 46 / 2E | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 48 / 30 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 60 / 3C | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 64 / 40 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 24 / 18 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 10 / 0A | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 53006 / CF0E | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 51837 / CA7D | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 0 / 00 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 4 / 04 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14679 / 3957 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 3 / 03 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 200 / C8 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 686 / 02AE | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 66 / 42 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 168 / A8 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 80 / 50 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 62 / 3E | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 59 / 3B | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 178 / B2 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 66 / 42 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 8 / 08 | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 51797 / CA55 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 0 / 00 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 4 / 04 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 29 / 1D | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 200 / C8 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 1280 / 0500 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 60 / 3C | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 184 / B8 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 50 / 32 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 18 / 12 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 90 / 5A | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 137 / 89 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 66 / 42 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 10 / 0A | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 51797 / CA55 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 0 / 00 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 1 / 01 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 33 / 21 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 214 / D6 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 686 / 02AE | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 10 / 0A | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 184 / B8 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 50 / 32 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 18 / 12 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 80 / 50 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 112 / 70 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 66 / 42 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 10 / 0A | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 51802 / CA5A | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 4 / 04 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 2 / 02 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 33 / 21 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 214 / D6 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 515 / 0203 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 60 / 3C | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 184 / B8 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 50 / 32 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 18 / 12 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 140 / 8C | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 156 / 9C | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 66 / 42 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 10 / 0A | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 51797 / CA55 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 0 / 00 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 4 / 04 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 33 / 21 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 214 / D6 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 686 / 02AE | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 60 / 3C | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 184 / B8 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 50 / 32 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 18 / 12 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 80 / 50 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 112 / 70 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 33 / 21 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 10 / 0A | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 0 / 0000 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 0 / 00 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 1 / 01 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 33 / 21 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 214 / D6 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 686 / 02AE | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 64 / 40 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 184 / B8 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 64 / 40 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 48 / 30 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 80 / 50 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 50 / 32 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 66 / 42 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 28 / 1C | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 0 / 0000 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 1 / 01 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 2 / 02 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 33 / 21 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 214 / D6 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 686 / 02AE | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 64 / 40 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 184 / B8 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 50 / 32 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 28 / 1C | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 130 / 82 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 153 / 99 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 66 / 42 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 10 / 0A | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 0 / 0000 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 0 / 00 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 1 / 01 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 33 / 21 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 214 / D6 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 515 / 0203 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 64 / 40 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 184 / B8 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 64 / 40 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 48 / 30 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 80 / 50 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 75 / 4B | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 66 / 42 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 15 / 0F | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 0 / 0000 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 1 / 01 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 2 / 02 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 33 / 21 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 214 / D6 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 686 / 02AE | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 60 / 3C | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 184 / B8 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 50 / 32 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 18 / 12 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 80 / 50 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 156 / 9C | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 66 / 42 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 10 / 0A | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 0 / 0000 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 0 / 00 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 4 / 04 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 33 / 21 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 214 / D6 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 686 / 02AE | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 52321 / CC61 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 46 / 2E | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 168 / A8 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 80 / 50 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 62 / 3E | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 150 / 96 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 106 / 6A | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | energy_threshold_high | 0 / 00 | Compared as (byte << 8) | 255 against reserve; underground overrides high byte to 128. Actual expenditure is handler-dependent. | C9DA–C9F3; CAC9 — traced |
| +0B | deadline_seed | 10 / 0A | Spawn deadline = clock + (byte << 8) on the ordinary launch path. Do not interpret as a firing interval. | CAC4–CAC6; CAF0–CB0F — traced |
| +0C | impact_callback | 52657 / CDB1 | Collision response entry; handlers branch on the collision kind. | 6EB6–6EBA; CDB1; CE84; CF0E; CF16 — traced |
| +0E | fire_callback | 0 / 0000 | Indirect weapon handler; some non-player projectile records have zero. | C9FB — traced |
| +10 | guidance_shift | 0 / 00 | Right-shift count in target/steering calculation. | CCAC–CCAF — traced |
| +11 | target_flags | 1 / 01 | Bit 1 participates in ground-target eligibility and building-impact handling; remaining bits not fully decoded. | D022–D029; CDDA; CDFB — partial bit semantics |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 29 / 1D | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 200 / C8 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 1280 / 0500 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 0 / 0000 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 48 / 30 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 224 / E0 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 80 / 50 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 60 / 3C | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 40 / 28 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 31 / 1F | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 100 / 64 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 100 / 64 | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 11 / 0B | Used as initial high-byte parameter by mission spawning; full role unresolved. | BE9E — partial |
| +0D | raw_0d | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0E | player_speed_seed | 12 / 0C | For player setup only: initial speed target = byte << 3. | BD16–BD22 — traced |
| +0F | player_vertical_target_byte | 20 / 14 | For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term. | BD16–BD19; 8004 — traced |
| +10 | raw_10 | 10 / 0A | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 3 / 03 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14621 / 391D | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 8 / 08 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 228 / E4 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 866 / 0362 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 0 / 0000 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 40 / 28 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 224 / E0 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 80 / 50 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 38 / 26 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 45 / 2D | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 31 / 1F | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 54 / 36 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 54 / 36 | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 12 / 0C | Used as initial high-byte parameter by mission spawning; full role unresolved. | BE9E — partial |
| +0D | raw_0d | 1 / 01 | Role-specific byte; not yet decoded. | — unknown |
| +0E | player_speed_seed | 16 / 10 | For player setup only: initial speed target = byte << 3. | BD16–BD22 — traced |
| +0F | player_vertical_target_byte | 36 / 24 | For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term. | BD16–BD19; 8004 — traced |
| +10 | raw_10 | 15 / 0F | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 3 / 03 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14621 / 391D | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 8 / 08 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 200 / C8 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 1158 / 0486 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 0 / 0000 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 48 / 30 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 224 / E0 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 64 / 40 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 38 / 26 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 75 / 4B | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 37 / 25 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 66 / 42 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 66 / 42 | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 14 / 0E | Used as initial high-byte parameter by mission spawning; full role unresolved. | BE9E — partial |
| +0D | raw_0d | 2 / 02 | Role-specific byte; not yet decoded. | — unknown |
| +0E | player_speed_seed | 29 / 1D | For player setup only: initial speed target = byte << 3. | BD16–BD22 — traced |
| +0F | player_vertical_target_byte | 41 / 29 | For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term. | BD16–BD19; 8004 — traced |
| +10 | raw_10 | 15 / 0F | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 5 / 05 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14621 / 391D | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 6 / 06 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 200 / C8 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 650 / 028A | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 0 / 0000 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 40 / 28 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 224 / E0 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 80 / 50 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 60 / 3C | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 60 / 3C | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 41 / 29 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 80 / 50 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 95 / 5F | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 16 / 10 | Used as initial high-byte parameter by mission spawning; full role unresolved. | BE9E — partial |
| +0D | raw_0d | 1 / 01 | Role-specific byte; not yet decoded. | — unknown |
| +0E | player_speed_seed | 12 / 0C | For player setup only: initial speed target = byte << 3. | BD16–BD22 — traced |
| +0F | player_vertical_target_byte | 2 / 02 | For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term. | BD16–BD19; 8004 — traced |
| +10 | raw_10 | 15 / 0F | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 4 / 04 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14653 / 393D | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 34 / 22 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 240 / F0 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 3264 / 0CC0 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 0 / 0000 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 30 / 1E | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 224 / E0 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 80 / 50 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 30 / 1E | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 78 / 4E | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 16 / 10 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 33 / 21 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 55 / 37 | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 10 / 0A | Used as initial high-byte parameter by mission spawning; full role unresolved. | BE9E — partial |
| +0D | raw_0d | 1 / 01 | Role-specific byte; not yet decoded. | — unknown |
| +0E | player_speed_seed | 14 / 0E | For player setup only: initial speed target = byte << 3. | BD16–BD22 — traced |
| +0F | player_vertical_target_byte | 14 / 0E | For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term. | BD16–BD19; 8004 — traced |
| +10 | raw_10 | 13 / 0D | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 3 / 03 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14621 / 391D | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 9 / 09 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 230 / E6 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 650 / 028A | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 33032 / 8108 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 52 / 34 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 160 / A0 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 80 / 50 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 105 / 69 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 1 / 01 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 0 / 00 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 27 / 1B | Used as initial high-byte parameter by mission spawning; full role unresolved. | BE9E — partial |
| +0D | raw_0d | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0E | player_speed_seed | 32 / 20 | For player setup only: initial speed target = byte << 3. | BD16–BD22 — traced |
| +0F | player_vertical_target_byte | 146 / 92 | For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term. | BD16–BD19; 8004 — traced |
| +10 | raw_10 | 10 / 0A | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 7 / 07 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14612 / 3914 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 8 / 08 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 228 / E4 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 816 / 0330 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 32383 / 7E7F | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 52 / 34 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 160 / A0 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 20 / 14 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 40 / 28 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 1 / 01 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 0 / 00 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 25 / 19 | Used as initial high-byte parameter by mission spawning; full role unresolved. | BE9E — partial |
| +0D | raw_0d | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0E | player_speed_seed | 207 / CF | For player setup only: initial speed target = byte << 3. | BD16–BD22 — traced |
| +0F | player_vertical_target_byte | 166 / A6 | For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term. | BD16–BD19; 8004 — traced |
| +10 | raw_10 | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 7 / 07 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14720 / 3980 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 7 / 07 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 196 / C4 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 408 / 0198 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 33032 / 8108 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 44 / 2C | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 160 / A0 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 70 / 46 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 105 / 69 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 1 / 01 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 0 / 00 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 26 / 1A | Used as initial high-byte parameter by mission spawning; full role unresolved. | BE9E — partial |
| +0D | raw_0d | 1 / 01 | Role-specific byte; not yet decoded. | — unknown |
| +0E | player_speed_seed | 32 / 20 | For player setup only: initial speed target = byte << 3. | BD16–BD22 — traced |
| +0F | player_vertical_target_byte | 150 / 96 | For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term. | BD16–BD19; 8004 — traced |
| +10 | raw_10 | 10 / 0A | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 3 / 03 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14612 / 3914 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 8 / 08 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 228 / E4 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 866 / 0362 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 32329 / 7E49 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 48 / 30 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 160 / A0 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 80 / 50 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 105 / 69 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 1 / 01 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 0 / 00 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 27 / 1B | Used as initial high-byte parameter by mission spawning; full role unresolved. | BE9E — partial |
| +0D | raw_0d | 1 / 01 | Role-specific byte; not yet decoded. | — unknown |
| +0E | player_speed_seed | 32 / 20 | For player setup only: initial speed target = byte << 3. | BD16–BD22 — traced |
| +0F | player_vertical_target_byte | 146 / 92 | For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term. | BD16–BD19; 8004 — traced |
| +10 | raw_10 | 10 / 0A | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 7 / 07 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14612 / 3914 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 8 / 08 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 228 / E4 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 816 / 0330 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 54544 / D510 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 22 / 16 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 0 / 00 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 0 / 00 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 0 / 00 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 1 / 01 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 0 / 00 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 25 / 19 | Used as initial high-byte parameter by mission spawning; full role unresolved. | BE9E — partial |
| +0D | raw_0d | 2 / 02 | Role-specific byte; not yet decoded. | — unknown |
| +0E | player_speed_seed | 12 / 0C | For player setup only: initial speed target = byte << 3. | BD16–BD22 — traced |
| +0F | player_vertical_target_byte | 166 / A6 | For player setup only: copied into immediate at 8006, interpreted there as signed high byte of a target term. | BD16–BD19; 8004 — traced |
| +10 | raw_10 | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 1 / 01 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14720 / 3980 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 7 / 07 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 196 / C4 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 408 / 0198 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 0 / 0000 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 0 / 00 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 0 / 00 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 0 / 00 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 0 / 00 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 0 / 00 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 0 / 00 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0D | raw_0d | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0E | raw_0e | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0F | raw_0f | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +10 | raw_10 | 18 / 12 | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 2 / 02 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14658 / 3942 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 9 / 09 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 204 / CC | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 816 / 0330 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 0 / 0000 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 0 / 00 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 0 / 00 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 0 / 00 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 0 / 00 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 0 / 00 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 0 / 00 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0D | raw_0d | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0E | raw_0e | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0F | raw_0f | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +10 | raw_10 | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 35 / 23 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 195 / C3 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 770 / 0302 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 0 / 0000 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 0 / 00 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 0 / 00 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 0 / 00 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 0 / 00 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 0 / 00 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 0 / 00 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0D | raw_0d | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0E | raw_0e | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0F | raw_0f | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +10 | raw_10 | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 35 / 23 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 195 / C3 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 770 / 0302 | Native 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}
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
| Offset | Field | Value (decimal / hex) | Meaning | Code references / confidence |
|---|---|---|---|---|
| +00 | model_pointer | 0 / 0000 | Zero in the canonical image; bank loader replaces this with special-model pool offset + 0x400. | BF46–BF47; geometry-bank loader — traced |
| +02 | initial_update_callback | 0 / 0000 | Copied to runtime object +0x66. Zero is retained, not inferred as missing data. | BF4A–BF4B; 7A2D — traced |
| +04 | angular_response_seed | 0 / 00 | Runtime +0x30 = unsigned byte << 3. | BF55–BF5E; 83D4 — traced |
| +05 | motion_seed_32 | 0 / 00 | Runtime +0x32 = unsigned byte << 8; physical interpretation incomplete. | BF55–BF58 — transformation verified; semantic role partial |
| +06 | motion_seed_34 | 0 / 00 | Runtime +0x34 = unsigned byte << 6; physical interpretation incomplete. | BF63–BF6B — transformation verified; semantic role partial |
| +07 | motion_seed_36 | 0 / 00 | Runtime +0x36 = unsigned byte << 7; physical interpretation incomplete. | BF63–BF6E — transformation verified; semantic role partial |
| +08 | impact_parameter | 0 / 00 | Projectile strength at CE23; victim comparison parameter at CE3B. Not a simple universal hit-point count. | CE1E–CE69; CB1F — traced |
| +09 | speed_seed | 0 / 00 | Projectile base movement term = byte << 4; also used for initial mission-object speed. | CC87–CC92; BE83–BE8E — traced |
| +0A | raw_0a | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0B | raw_0b | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0C | raw_0c | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0D | raw_0d | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0E | raw_0e | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +0F | raw_0f | 0 / 00 | Role-specific byte; not yet decoded. | — unknown |
| +10 | raw_10 | 18 / 12 | Role-specific byte; not yet decoded. | — unknown |
| +11 | raw_11 | 1 / 01 | Role-specific byte; not yet decoded. | — unknown |
| +12 | sound_callback | 14697 / 3969 | Called before scheduling object sound; may alter pitch/level or reject it. | 3573 — traced |
| +14 | fm_patch | 35 / 23 | Native FM patch index. | 356B — traced |
| +15 | sound_level_high | 195 / C3 | Baseline level = (byte << 8) | 255. | 3566–3569 — traced |
| +16 | sound_pitch | 770 / 0302 | Native 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}