The offset->field map read out of sub_82341A20 is now usable rather than just documented: data/unit_definition_layout.txt carries the 159 fields with their provenance and the two conventions (angles are degrees on disc and radians in the object; a defaulted field keeps the accessor's 0.0 miss value), and sylpheed_formats::unit_layout exposes fields()/field_at()/offset_of() so a memory snapshot can be read by name. tests/unit_layout_disc.rs replays the verification against the checked-in live dump -- every mapped float of all 11 identified objects must equal its disc value, angles compared in radians -- asserting 0 disagreements and >=400 agreements. It needs no emulator. Full suite green: 11 binaries. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
178 lines
5.6 KiB
Plaintext
178 lines
5.6 KiB
Plaintext
# Unit / vessel definition object layout — offset, field, kind.
|
|
#
|
|
# Read out of the title's own loader, not inferred: `sub_82341A20` builds every
|
|
# key as `addi r4, r30, -N` with `r30 = 0x82088f94`, so the field NAME for each
|
|
# store is a string in the executable image; pairing each key with the first
|
|
# store after its accessor call gives the offset. The accessor for floats is
|
|
# `sub_822FC5A8`, which returns 0.0 when the pool has no value for the key.
|
|
#
|
|
# Verified against live objects dumped from a running Stage 02: 406 field values
|
|
# agree with the disc records and 0 disagree, over 11 objects spanning both the
|
|
# UNIT and VESSEL schemas (see docs/re/live-unit-definitions.md).
|
|
#
|
|
# Two conventions matter for a reimplementation:
|
|
# * angle fields are DEGREES on disc and RADIANS in this object;
|
|
# * a field the disc record omits is left at the accessor's miss value (0.0 for
|
|
# floats) unless something later derives it — `Size_Y` takes `Size_X`.
|
|
#
|
|
# offset kind field
|
|
24 str Model
|
|
28 str CollisionModel
|
|
48 f32 Size_X
|
|
52 f32 Size_Y
|
|
56 f32 Size_Z
|
|
64 f32 Color_R
|
|
68 f32 Color_G
|
|
72 f32 Color_B
|
|
80 f32 Size_Radius
|
|
84 f32 HP
|
|
88 f32 HQRatio
|
|
92 f32 ShieldRatio
|
|
96 f32 ThrusterRatio
|
|
100 word IsDestructible
|
|
104 str NamePlate
|
|
112 word MountedShieldGenerator
|
|
116 f32 ResistanceToOptics
|
|
120 f32 ResistanceToShell
|
|
124 f32 ResistanceToExplosion
|
|
128 f32 ResistanceToPlayer
|
|
132 f32 ResistanceParalyze
|
|
136 str HUDMarkerID
|
|
156 f32 MinimumVelocity
|
|
160 f32 MaximumVelocity
|
|
164 f32 CruisingVelocity
|
|
168 f32 Acceleration
|
|
172 f32 Deceleration
|
|
176 f32 AV_PitchPlus_Max
|
|
180 f32 AV_PitchPlus_Min
|
|
184 f32 AA_PitchPlus_Max
|
|
188 f32 AA_PitchPlus_Min
|
|
192 f32 AV_PitchMinus_Max
|
|
196 f32 AV_PitchMinus_Min
|
|
200 f32 AA_PitchMinus_Max
|
|
204 f32 AA_PitchMinus_Min
|
|
208 f32 AV_Yaw_Max
|
|
212 f32 AV_Yaw_Min
|
|
216 f32 AA_Yaw_Max
|
|
220 f32 AA_Yaw_Min
|
|
224 f32 AV_Roll_Max
|
|
228 f32 AV_Roll_Min
|
|
232 f32 AA_Roll_Max
|
|
236 f32 AA_Roll_Min
|
|
248 f32 SideThrustVelocity_Max
|
|
252 f32 SideThrustAcceleration
|
|
256 f32 MaximumBank_Normal
|
|
260 f32 YawDragFactor
|
|
264 f32 PitchDragFactor
|
|
268 f32 RollDragFactor
|
|
272 f32 DragFactorThreshold
|
|
276 f32 ArterBurner_Vc
|
|
280 f32 ReverseThrust_Vc
|
|
284 f32 ArterBurner_Acc
|
|
288 f32 ReverseThrust_Acc
|
|
292 f32 AccPitchFactor
|
|
296 f32 DecPitchFactor
|
|
300 f32 AV_AxisMode_Max
|
|
304 f32 AV_AxisMode_Min
|
|
308 f32 AA_AxisMode_Max
|
|
312 f32 AA_AxisMode_Min
|
|
316 f32 PowerCutConsumeShield
|
|
320 f32 PowerCutDeceleration
|
|
324 f32 AB_ConsumeShield_Begin
|
|
328 f32 AB_ConsumeShield
|
|
332 f32 AB_AV_PitchPlus
|
|
336 f32 AB_AA_PitchPlus
|
|
340 f32 AB_AV_PitchMinus
|
|
344 f32 AB_AA_PitchMinus
|
|
348 f32 AB_AV_Yaw
|
|
352 f32 AB_AA_Yaw
|
|
356 f32 AB_AV_Roll
|
|
360 f32 AB_AA_Roll
|
|
364 word SideRoll
|
|
368 f32 SideRoll_Time
|
|
372 f32 SideRoll_Length
|
|
376 word BarrelRoll
|
|
380 f32 BarrelRoll_CountMinimum
|
|
384 f32 BarrelRoll_CountMaximum
|
|
388 f32 BarrelRoll_Time
|
|
392 f32 BarrelRoll_Radius
|
|
396 word TurnAttack
|
|
400 f32 TurnAttack_CutoffRatio
|
|
404 f32 TurnAttack_DoubleRatio
|
|
408 f32 CutoffTimeMin
|
|
412 f32 CutoffTimeMax
|
|
416 f32 TurnAttack_DoubleTimeMin
|
|
420 f32 TurnAttack_DoubleTimeMax
|
|
424 word TurnAway
|
|
428 f32 Turn_AngularVelocity
|
|
432 f32 TurnAway_Time_Minimum
|
|
436 f32 TurnAway_Time_Maximum
|
|
440 word BoostAway
|
|
444 f32 BoostAway_Time_Minimum
|
|
448 f32 BoostAway_Time_Maximum
|
|
452 word HoldPosition
|
|
456 f32 HoldPosition_LengthMin
|
|
460 f32 HoldPosition_LengthMax
|
|
464 f32 HoldPosition_MinimumTime
|
|
468 f32 HoldPosition_MaximumTime
|
|
472 f32 HoldPosition_SideRatio
|
|
476 f32 HoldPosition_BackRatio
|
|
480 f32 HoldPosition_CutoffRatio
|
|
484 f32 HoldPosition_CancelTime
|
|
488 word Slalom
|
|
492 f32 Slalom_CutoffRatio
|
|
496 f32 Slalom_TurnCount_Min
|
|
500 f32 Slalom_TurnCount_Max
|
|
504 word Through
|
|
508 f32 Through_CutoffRatio
|
|
512 f32 Through_AngleMinimum
|
|
516 f32 Through_AngleMaximum
|
|
520 f32 Through_Time1Max
|
|
524 f32 Through_Time1Min
|
|
528 f32 Through_Time2Max
|
|
532 f32 Through_Time2Min
|
|
536 f32 Through_LengthMinimum
|
|
540 f32 Through_LengthMaximum
|
|
544 word SolidCutoff
|
|
548 f32 SolidCutoff_Ratio
|
|
552 f32 SolidCutoff_LengthMin
|
|
556 f32 SolidCutoff_LengthMax
|
|
560 f32 HomingResistAdjustment
|
|
564 f32 UsingChaffRatio
|
|
568 f32 MaxValue
|
|
572 f32 ChargeDelay
|
|
576 f32 ChargeDelay_Break
|
|
580 f32 ChargeSpeed
|
|
584 f32 Delay
|
|
588 f32 DelayAdjustment
|
|
596 str LowerHPFxModel
|
|
604 str ExplosionFxModel
|
|
612 str DestroyMotionName
|
|
620 str ExplosionMotionName
|
|
624 f32 DestroyMotionTime
|
|
628 f32 DryMass
|
|
632 f32 GrossMass
|
|
636 word Thruster
|
|
640 word SideThruster
|
|
644 word ExplosionSE
|
|
648 word JumpIn
|
|
652 word JumpOut
|
|
656 word ShipEnvironmentSE
|
|
660 word LowerHPSE
|
|
664 f32 LowerHPThresholdRatio
|
|
668 f32 SELength
|
|
672 f32 RadarRange
|
|
676 f32 FCSRange
|
|
680 f32 FiringRange
|
|
684 word MountedFCS
|
|
692 f32 AttackVesselPoint
|
|
696 f32 AttackCraftPoint
|
|
700 f32 DefencePoint
|
|
736 str ShieldRecoverEffectName
|
|
740 str ShieldHitEffectName
|
|
744 str JumpIn
|
|
748 str JumpOut
|
|
752 str FadeIn
|
|
756 str FadeOut
|
|
760 str Effect_Paralyze
|