Files
Sylpheed/docs/re/structures/weapon-datasheet-static.md
Sylpheed RE agent 68676d266b re: the static weapon datasheet -- Weapon, Shell, AssortMissileParam
The corpus's weapon numbers came from a runtime capture; the static
tables are now read with no emulator.  The move: IDXD field names are
literal strings in the pool, so the stat-shaped keys already harvested
from the disassembly (MegaTons, GuidanceType, SpiralType, ...) can be
searched directly.  8648 records carry at least one, clustering on
three record names in every per-language GP_MAIN_GAME_*.pak:

  Weapon              131 records, 21 fields -- the launcher
  Shell               131 records, 37 fields -- the projectile
  AssortMissileParam    9 records, 20 fields -- missile guidance

131, not the 59 of the WEAPONS roster: that roster is the arsenal
menu's list, not the full set.

Controlled negative in the same pass: stageNN_settings.tbl does not
exist.  AUTO_SETTINGS names 28; four path prefixes give 0/116 while
both controls in the same loop are found.

Also decoded: EnumUnit (54 unit ids tying eNNN/fNNN mesh prefixes to
faction/class names), ArmsItemFile (59 weapon -> HUD icon mappings),
SETTINGS (sound config), Parameters (HUD markers).

New structure doc + artefact; ISL artefacts byte-identical.
2026-08-27 12:11:03 +00:00

4.1 KiB

The STATIC weapon datasheet — Weapon, Shell, AssortMissileParam

The corpus's weapon numbers came from a runtime capture (weapon-datasheet-runtime, weapon-struct-runtime). The static tables behind them are now located and read, with no emulator involved.

How they were found

Not by guessing a filename. IDXD field names are literal strings in the string pool, so the stat-shaped keys already harvested from the disassembly (data/config-keys.txtMegaTons, GuidanceType, SpiralType, Straight1Type, BulletLimit, CrewCount, HP_CLASS, …) can be searched directly across every record on the disc. 8 648 records carry at least one, and they cluster on three record names.

What is there

record per pak fields what it is
Weapon 131 21 the launcher — rate of fire, heat, ammo, SE/FX
Shell 131 37 the projectile — damage, ballistics, collision, FX
AssortMissileParam 9 20 missile guidance tuning

131 Weapon and 131 Shell records, one-to-one, in each of the per-language GP_MAIN_GAME_*.pak files; a weapon and its shell share a pak entry. Note this is 131, not the 59 of the WEAPONS name roster — the roster is the arsenal menu's list, not the full set.

Weapon (sample: Weapon_TCAF_DeltaSaber_Rocket_P)

ID / Name                 Weapon_TCAF_DeltaSaber_Rocket_P
TargetType                Vessel,Craft,Structure
ShotType                  Single          ReticleType 5
HitRatio                  1.0             SprayAngle  4.0
Interval 1.0              ReadyInterval 0.0
TriggerShotCount 1        TriggerShotInterval 0.1
LoadingCount 1000         Heating 0.00    Cooling 0.10
Mass 100                  SpecialWeaponType 0
ShootSE / ReadySE / FinishSE, MuzzleFlashFxModel_Loop / _OneShot

Shell (sample: Shell_TCAF_DeltaSaber_Rocket_P)

Power 100.0               DamageType Shell        FailedDamageRatio 1.0
Velocity 3000.0           Acceleration 0.0        AngularVelocity 0.0
MinimumVelocity / MaximumVelocity 0.0
MinimumRange 10.0         MaximumRange 6000.0     LifeTime 3.0
CollisionType Capsule     Radius 30.0  Length 10.0  Volume 10.0
ShellMass 0.005           HP 0.0      MovementType Shell
IsGravitated Yes   IsDestructible No   IsLockable No   IsFullCollision No
IsFixedModel Yes   ShellModel wep_t085
Color_R/G/B 1.0 / 0.85 / 0.7
HitFxModel eff_h000  HitFxInEnd Yes  ContrailFxFrame GN_Trc_01
JetFxModel / JetFxFrame, HitSE_Damage / HitSE_NoDamage, ThrusterSE

MaximumRange 6000.0 with the corpus's world unit = 1 metre makes this a 6 km rocket; Velocity 3000.0 is 3 km/s.

AssortMissileParam — the guidance model

GuidanceType 0   SpiralType 1   Straight1Type 1   Straight2Type 0
st1_df_aperture 0.5   st1_up_aperture 1.0   st1_up_bias_pow 0.5   st1_df_pitch 10
sp_sp_round_time  0.35 … 0.5     sp_sp_spiral_pow 0.05 … 0.1
sp_qu_cycle_time  0.6  … 1.2     sp_qu_bias_pow   0.35 … 0.65
sp_zg_cycle       0.2  … 0.4     sp_zg_bias       0.1  … 0.3

Three named motion modes with min/max ranges — sp spiral, qu quick-turn, zg zig-zag — plus a straight-flight aperture and pitch. Nine variants ship.

🔴 And a controlled negative: stageNN_settings.tbl does not exist

AUTO_SETTINGS names 28 files stage01_settings.tblstage29_settings.tbl. Probing pak entry names (name_hash) with four path prefixes — bare, stage\, arsenal\, dat\ — finds 0 of 116, while the two controls in the same loop (stage\UnitGroup_S02.tbl, stage\AIParams_S02.tbl) are both found. So the reader and prefix convention are right and those files are simply not on the disc — the same shape as STAGENN_UNIT_MAX.

🟡 Not settled

  • Whether the 131 Weapon records reconcile with the runtime capture field by field — this locates and reads the table; it does not cross-check it.
  • The other stat keys (MegaTons, BulletLimit, CrewCount, HP_CLASS, HPGauge, WEAPON_CATEGORIES) belong to records not opened here.
  • Why the arsenal roster lists 59 of the 131 weapons.