This repository has been archived on 2026-09-16. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Syplheed-Reborn/docs/re/structures/weapon-datasheet-static.md
Sylpheed RE agent f2cacce59d 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

92 lines
4.1 KiB
Markdown

# ✅ The STATIC weapon datasheet — `Weapon`, `Shell`, `AssortMissileParam`
The corpus's weapon numbers came from a **runtime capture**
([weapon-datasheet-runtime](../weapon-datasheet-runtime.md),
[weapon-struct-runtime](weapon-struct-runtime.md)). 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.txt``MegaTons`, `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.tbl``stage29_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.