diff --git a/docs/re/INDEX.md b/docs/re/INDEX.md index 265c6ce..4cd406d 100644 --- a/docs/re/INDEX.md +++ b/docs/re/INDEX.md @@ -22,6 +22,7 @@ Promote to a prose `structures/…md` file when a format needs behavioural notes | XBG7 mesh | 🟑/❔ | `sylpheed-formats/src/mesh.rs` + `tests/mesh_disc.rs` ([xbg7](structures/xbg7-mesh.md)) | weapons/props: declaration-driven variable stride (36 models), GPU-confirmed. **Stage containers: 5662 sub-models across 22 stages** via content-anchored grouped pools (`stage_models`). Quantized hero bodies (DeltaSaber `f004`) still declined | | Capital-ship part placement | 🟑 | `sylpheed-formats/src/ship.rs` (static) + [runtime capture](ship-placement-runtime-capture.md) | hull placement static-exact; external parts approximate statically. **Runtime capture** (Canary F10 β†’ VS-constant WorldView) gives ground truth β€” validated on `e106` destroyer; not yet baked into the viewer | | Weapon fields defaulted on disc | βœ… | [runtime struct](structures/weapon-struct-runtime.md) Β· [DATA SHEET route](weapon-datasheet-runtime.md) | **Solved.** Canary maps guest RAM into `/dev/shm`, so the parsed `Weapon`/`Shell` objects are readable live; their layout is solved against disc ground truth (zero contradictions over 100+ records). All 126 weapons, exact numbers, no story progress needed β€” [4 393 values](captures/weapon-runtime-fields.csv) the disc does not carry. Supersedes the letter-bucket limit of the DATA SHEET route, which now serves as the independent cross-check | +| Unit (craft/vessel) fields defaulted on disc | βœ…/🟑 | [runtime struct](structures/unit-struct-runtime.md) | The parsed `unit\UN_*.tbl` definition object, vtable `0x820af844`, β‰₯`0x380` bytes, one per unit β€” **discovered, not assumed** (`unit_discover.py`), and distinguished from the spawned-entity class `0x820af030` by being one-per-ID and byte-constant across snapshots. 22 fields βœ…; the `Maneuver` block is **schema declaration order, 4 bytes/field, base `0x9c` with a two-slot gap after `AA_Roll_Min`** (29 anchors, 0 conflicts), which also pins 5 fields *no* disc record ever values. Angles are **radians at runtime, degrees on disc**. Unlike weapons, unit definitions are instantiated **per stage**, so coverage (18/110) grows by visiting missions β€” [values](captures/unit-runtime-fields.csv) | | UI screen layout (`.rat`) | βœ…/🟑 | [ui-rat-layout](structures/ui-rat-layout.md) | One pak per UI screen; each RATC = one (context Γ— language) build; every `.t32` sprite has a `.rat` **layout record** (BE u32; 1280Γ—720 design space; scale/tint/X/Y, keyframes for animated elements, `opt ` link to the focused state). **The tutorial PAUSE menu and the title main menu both rebuild pixel-accurately from the disc.** `loop1.rat` (screen-level draw order) not yet decoded | ## Runtime / dynamic-capture technique diff --git a/docs/re/captures/unit-runtime-fields.csv b/docs/re/captures/unit-runtime-fields.csv new file mode 100644 index 0000000..5850608 --- /dev/null +++ b/docs/re/captures/unit-runtime-fields.csv @@ -0,0 +1,1531 @@ +unit,field,offset,enc,value,source,conf +UN_bf001_TCAF_SchlosBase,Slalom_CutoffRatio,0x00c,f32,2.8026e-45,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,Size_X,0x030,f32,2500,disc,confirmed +UN_bf001_TCAF_SchlosBase,Size_Y,0x034,f32,3100,disc,tentative +UN_bf001_TCAF_SchlosBase,Size_Z,0x038,f32,2600,disc,confirmed +UN_bf001_TCAF_SchlosBase,Color_R,0x040,f32,0,disc,confirmed +UN_bf001_TCAF_SchlosBase,Color_G,0x044,f32,1,disc,confirmed +UN_bf001_TCAF_SchlosBase,Color_B,0x048,f32,0,defaulted-on-disc,confirmed +UN_bf001_TCAF_SchlosBase,Size_Radius,0x050,f32,1500,disc,confirmed +UN_bf001_TCAF_SchlosBase,HP,0x054,f32,10000,disc,confirmed +UN_bf001_TCAF_SchlosBase,HQRatio,0x058,f32,0.2,disc,tentative +UN_bf001_TCAF_SchlosBase,ShieldRatio,0x05c,f32,0.3,disc,tentative +UN_bf001_TCAF_SchlosBase,ThrusterRatio,0x060,f32,0.2,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,BridgeCount,0x070,i32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,ResistanceToOptics,0x074,f32,0.1,disc,confirmed +UN_bf001_TCAF_SchlosBase,ResistanceToShell,0x078,f32,0.1,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,ResistanceToExplosion,0x07c,f32,0.1,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,ResistanceToPlayer,0x080,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,ResistanceParalyze,0x084,f32,1,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,ScorePoint,0x08c,f32,0,disc,confirmed +UN_bf001_TCAF_SchlosBase,MassScore,0x094,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,MinimumVelocity,0x09c,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,MaximumVelocity,0x0a0,f32,0,defaulted-on-disc,confirmed +UN_bf001_TCAF_SchlosBase,CruisingVelocity,0x0a4,f32,0,defaulted-on-disc,confirmed +UN_bf001_TCAF_SchlosBase,Acceleration,0x0a8,f32,0,defaulted-on-disc,confirmed +UN_bf001_TCAF_SchlosBase,Deceleration,0x0ac,f32,0,defaulted-on-disc,confirmed +UN_bf001_TCAF_SchlosBase,AV_PitchPlus_Max,0x0b0,rad,0,defaulted-on-disc,confirmed +UN_bf001_TCAF_SchlosBase,AV_PitchPlus_Min,0x0b4,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AA_PitchPlus_Max,0x0b8,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AA_PitchPlus_Min,0x0bc,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AV_PitchMinus_Max,0x0c0,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AV_PitchMinus_Min,0x0c4,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AA_PitchMinus_Max,0x0c8,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AA_PitchMinus_Min,0x0cc,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AV_Yaw_Max,0x0d0,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AV_Yaw_Min,0x0d4,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AA_Yaw_Max,0x0d8,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AA_Yaw_Min,0x0dc,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AV_Roll_Max,0x0e0,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AV_Roll_Min,0x0e4,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AA_Roll_Max,0x0e8,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AA_Roll_Min,0x0ec,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,SideThrustVelocity_Max,0x0f8,f32,0,defaulted-on-disc,confirmed +UN_bf001_TCAF_SchlosBase,SideThrustAcceleration,0x0fc,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,MaximumBank_Normal,0x100,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,YawDragFactor,0x104,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,TurnAttack_DoubleTimeMin,0x110,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,ArterBurner_Vc,0x114,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,ReverseThrust_Vc,0x118,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,ReverseThrust_Acc,0x120,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AccPitchFactor,0x124,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,MaxValue,0x238,f32,1000,disc,confirmed +UN_bf001_TCAF_SchlosBase,ChargeDelay,0x23c,f32,1,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,ChargeDelay_Break,0x240,f32,1,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,ChargeSpeed,0x244,f32,10,disc,confirmed +UN_bf001_TCAF_SchlosBase,Delay,0x248,f32,3,disc,tentative +UN_bf001_TCAF_SchlosBase,DestroyMotionTime,0x270,f32,0,defaulted-on-disc,confirmed +UN_bf001_TCAF_SchlosBase,DryMass,0x274,f32,10000,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,GrossMass,0x278,f32,10000,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,LowerHPThresholdRatio,0x298,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,RadarRange,0x2a0,f32,0,defaulted-on-disc,confirmed +UN_bf001_TCAF_SchlosBase,FCSRange,0x2a4,f32,0,defaulted-on-disc,confirmed +UN_bf001_TCAF_SchlosBase,AttackVesselPoint,0x2b4,f32,0,defaulted-on-disc,confirmed +UN_bf001_TCAF_SchlosBase,AttackCraftPoint,0x2b8,f32,0,defaulted-on-disc,tentative +UN_bf001_TCAF_SchlosBase,DefencePoint,0x2bc,f32,0,defaulted-on-disc,confirmed +UN_bf001_TCAF_SchlosBase,PitchDragFactor,0x108,f32,0,never-valued-on-disc,interpolated +UN_bf001_TCAF_SchlosBase,RollDragFactor,0x10c,f32,0,never-valued-on-disc,interpolated +UN_bf001_TCAF_SchlosBase,DragFactorThreshold,0x110,f32,0,never-valued-on-disc,interpolated +UN_bf001_TCAF_SchlosBase,ArterBurner_Acc,0x11c,f32,0,never-valued-on-disc,interpolated +UN_bf001_TCAF_SchlosBase,DecPitchFactor,0x128,f32,0,never-valued-on-disc,interpolated +UN_e007_ADAN_Turret,Slalom_CutoffRatio,0x00c,f32,1.4013e-45,disc,tentative +UN_e007_ADAN_Turret,Size_X,0x030,f32,20,disc,confirmed +UN_e007_ADAN_Turret,Size_Y,0x034,f32,9,disc,tentative +UN_e007_ADAN_Turret,Size_Z,0x038,f32,22,disc,confirmed +UN_e007_ADAN_Turret,Color_R,0x040,f32,1,disc,confirmed +UN_e007_ADAN_Turret,Color_G,0x044,f32,0.5,disc,confirmed +UN_e007_ADAN_Turret,Color_B,0x048,f32,0.1,disc,confirmed +UN_e007_ADAN_Turret,Size_Radius,0x050,f32,11,disc,confirmed +UN_e007_ADAN_Turret,HP,0x054,f32,100,disc,confirmed +UN_e007_ADAN_Turret,HQRatio,0x058,f32,1,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,ShieldRatio,0x05c,f32,1,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,ThrusterRatio,0x060,f32,1,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,BridgeCount,0x070,i32,0,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,ResistanceToOptics,0x074,f32,1,defaulted-on-disc,confirmed +UN_e007_ADAN_Turret,ResistanceToShell,0x078,f32,0.8,disc,tentative +UN_e007_ADAN_Turret,ResistanceToExplosion,0x07c,f32,0.5,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,ResistanceToPlayer,0x080,f32,1,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,ResistanceParalyze,0x084,f32,0.97,disc,tentative +UN_e007_ADAN_Turret,ScorePoint,0x08c,f32,10,disc,confirmed +UN_e007_ADAN_Turret,MassScore,0x094,f32,15,disc,tentative +UN_e007_ADAN_Turret,MinimumVelocity,0x09c,f32,100,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,MaximumVelocity,0x0a0,f32,500,disc,confirmed +UN_e007_ADAN_Turret,CruisingVelocity,0x0a4,f32,280,disc,confirmed +UN_e007_ADAN_Turret,Acceleration,0x0a8,f32,200,disc,confirmed +UN_e007_ADAN_Turret,Deceleration,0x0ac,f32,150,disc,confirmed +UN_e007_ADAN_Turret,AV_PitchPlus_Max,0x0b0,rad,40,disc,confirmed +UN_e007_ADAN_Turret,AV_PitchPlus_Min,0x0b4,rad,100,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,AA_PitchPlus_Max,0x0b8,rad,15,disc,tentative +UN_e007_ADAN_Turret,AA_PitchPlus_Min,0x0bc,rad,50,disc,tentative +UN_e007_ADAN_Turret,AV_PitchMinus_Max,0x0c0,rad,20,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,AV_PitchMinus_Min,0x0c4,rad,60,disc,tentative +UN_e007_ADAN_Turret,AA_PitchMinus_Max,0x0c8,rad,5,disc,tentative +UN_e007_ADAN_Turret,AA_PitchMinus_Min,0x0cc,rad,20,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,AV_Yaw_Max,0x0d0,rad,12.5,disc,tentative +UN_e007_ADAN_Turret,AV_Yaw_Min,0x0d4,rad,30,disc,tentative +UN_e007_ADAN_Turret,AA_Yaw_Max,0x0d8,rad,25,disc,tentative +UN_e007_ADAN_Turret,AA_Yaw_Min,0x0dc,rad,120,disc,tentative +UN_e007_ADAN_Turret,AV_Roll_Max,0x0e0,rad,60,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,AV_Roll_Min,0x0e4,rad,80,disc,tentative +UN_e007_ADAN_Turret,AA_Roll_Max,0x0e8,rad,30,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,AA_Roll_Min,0x0ec,rad,75,disc,tentative +UN_e007_ADAN_Turret,SideThrustVelocity_Max,0x0f8,f32,1000,disc,confirmed +UN_e007_ADAN_Turret,SideThrustAcceleration,0x0fc,f32,1000,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,MaximumBank_Normal,0x100,rad,60,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,YawDragFactor,0x104,f32,3,disc,tentative +UN_e007_ADAN_Turret,TurnAttack_DoubleTimeMin,0x110,f32,0.5,disc,tentative +UN_e007_ADAN_Turret,ArterBurner_Vc,0x114,f32,2,disc,tentative +UN_e007_ADAN_Turret,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_e007_ADAN_Turret,ReverseThrust_Acc,0x120,f32,2,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,AccPitchFactor,0x124,f32,30,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,SideRoll_Length,0x174,f32,300,disc,tentative +UN_e007_ADAN_Turret,BarrelRoll_Time,0x184,f32,1.2,disc,tentative +UN_e007_ADAN_Turret,BarrelRoll_Radius,0x188,f32,250,disc,tentative +UN_e007_ADAN_Turret,TurnAttack_CutoffRatio,0x190,f32,0.4,disc,tentative +UN_e007_ADAN_Turret,TurnAttack_DoubleRatio,0x194,f32,0.3,disc,tentative +UN_e007_ADAN_Turret,CutoffTimeMin,0x198,f32,0.6,disc,tentative +UN_e007_ADAN_Turret,TurnAttack_DoubleTimeMax,0x1a4,f32,2.5,disc,tentative +UN_e007_ADAN_Turret,Turn_AngularVelocity,0x1ac,rad,45,disc,tentative +UN_e007_ADAN_Turret,HoldPosition_LengthMax,0x1cc,f32,400,disc,tentative +UN_e007_ADAN_Turret,Through_Time2Max,0x210,f32,1.5,disc,tentative +UN_e007_ADAN_Turret,SolidCutoff_LengthMax,0x22c,f32,2500,disc,tentative +UN_e007_ADAN_Turret,MaxValue,0x238,f32,100,defaulted-on-disc,confirmed +UN_e007_ADAN_Turret,ChargeDelay,0x23c,f32,3,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,ChargeDelay_Break,0x240,f32,10,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,ChargeSpeed,0x244,f32,25,defaulted-on-disc,confirmed +UN_e007_ADAN_Turret,Delay,0x248,f32,0,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,DestroyMotionTime,0x270,f32,5,disc,confirmed +UN_e007_ADAN_Turret,DryMass,0x274,f32,100,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,GrossMass,0x278,f32,200,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,LowerHPThresholdRatio,0x298,f32,0.3,defaulted-on-disc,tentative +UN_e007_ADAN_Turret,RadarRange,0x2a0,f32,3500,disc,confirmed +UN_e007_ADAN_Turret,FCSRange,0x2a4,f32,2500,disc,confirmed +UN_e007_ADAN_Turret,AttackVesselPoint,0x2b4,f32,0.001,disc,confirmed +UN_e007_ADAN_Turret,AttackCraftPoint,0x2b8,f32,0.2,disc,tentative +UN_e007_ADAN_Turret,DefencePoint,0x2bc,f32,0.00025,disc,confirmed +UN_e007_ADAN_Turret,PitchDragFactor,0x108,f32,3,never-valued-on-disc,interpolated +UN_e007_ADAN_Turret,RollDragFactor,0x10c,f32,3,never-valued-on-disc,interpolated +UN_e007_ADAN_Turret,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_e007_ADAN_Turret,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_e007_ADAN_Turret,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_e010_ADAN_Attacker_S,Slalom_CutoffRatio,0x00c,f32,1.4013e-45,disc,tentative +UN_e010_ADAN_Attacker_S,Size_X,0x030,f32,100,disc,confirmed +UN_e010_ADAN_Attacker_S,Size_Y,0x034,f32,40,disc,tentative +UN_e010_ADAN_Attacker_S,Size_Z,0x038,f32,50,disc,confirmed +UN_e010_ADAN_Attacker_S,Color_R,0x040,f32,1,disc,confirmed +UN_e010_ADAN_Attacker_S,Color_G,0x044,f32,0.2,disc,confirmed +UN_e010_ADAN_Attacker_S,Color_B,0x048,f32,1,defaulted-on-disc,confirmed +UN_e010_ADAN_Attacker_S,Size_Radius,0x050,f32,50,defaulted-on-disc,confirmed +UN_e010_ADAN_Attacker_S,HP,0x054,f32,500,disc,confirmed +UN_e010_ADAN_Attacker_S,HQRatio,0x058,f32,1,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,ShieldRatio,0x05c,f32,1,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,ThrusterRatio,0x060,f32,1,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,BridgeCount,0x070,i32,0,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,ResistanceToOptics,0x074,f32,0.1,disc,confirmed +UN_e010_ADAN_Attacker_S,ResistanceToShell,0x078,f32,0.1,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,ResistanceToExplosion,0x07c,f32,0.1,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,ResistanceToPlayer,0x080,f32,1,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,ResistanceParalyze,0x084,f32,0.97,disc,tentative +UN_e010_ADAN_Attacker_S,ScorePoint,0x08c,f32,30,disc,confirmed +UN_e010_ADAN_Attacker_S,MassScore,0x094,f32,100,disc,tentative +UN_e010_ADAN_Attacker_S,MinimumVelocity,0x09c,f32,100,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,MaximumVelocity,0x0a0,f32,500,disc,confirmed +UN_e010_ADAN_Attacker_S,CruisingVelocity,0x0a4,f32,250,disc,confirmed +UN_e010_ADAN_Attacker_S,Acceleration,0x0a8,f32,200,disc,confirmed +UN_e010_ADAN_Attacker_S,Deceleration,0x0ac,f32,50,defaulted-on-disc,confirmed +UN_e010_ADAN_Attacker_S,AV_PitchPlus_Max,0x0b0,rad,20,disc,confirmed +UN_e010_ADAN_Attacker_S,AV_PitchPlus_Min,0x0b4,rad,60,disc,tentative +UN_e010_ADAN_Attacker_S,AA_PitchPlus_Max,0x0b8,rad,10,disc,tentative +UN_e010_ADAN_Attacker_S,AA_PitchPlus_Min,0x0bc,rad,30,disc,tentative +UN_e010_ADAN_Attacker_S,AV_PitchMinus_Max,0x0c0,rad,15,disc,tentative +UN_e010_ADAN_Attacker_S,AV_PitchMinus_Min,0x0c4,rad,45,disc,tentative +UN_e010_ADAN_Attacker_S,AA_PitchMinus_Max,0x0c8,rad,5,disc,tentative +UN_e010_ADAN_Attacker_S,AA_PitchMinus_Min,0x0cc,rad,15,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AV_Yaw_Max,0x0d0,rad,10,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AV_Yaw_Min,0x0d4,rad,20,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AA_Yaw_Max,0x0d8,rad,5,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AA_Yaw_Min,0x0dc,rad,15,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AV_Roll_Max,0x0e0,rad,20,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AV_Roll_Min,0x0e4,rad,60,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AA_Roll_Max,0x0e8,rad,10,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AA_Roll_Min,0x0ec,rad,60,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,SideThrustVelocity_Max,0x0f8,f32,100,defaulted-on-disc,confirmed +UN_e010_ADAN_Attacker_S,SideThrustAcceleration,0x0fc,f32,100,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,MaximumBank_Normal,0x100,rad,30,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,YawDragFactor,0x104,f32,3,disc,tentative +UN_e010_ADAN_Attacker_S,TurnAttack_DoubleTimeMin,0x110,f32,0.5,disc,tentative +UN_e010_ADAN_Attacker_S,ArterBurner_Vc,0x114,f32,1.5,disc,tentative +UN_e010_ADAN_Attacker_S,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_e010_ADAN_Attacker_S,ReverseThrust_Acc,0x120,f32,2,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AccPitchFactor,0x124,f32,30,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,SideRoll_Length,0x174,f32,1000,disc,tentative +UN_e010_ADAN_Attacker_S,BarrelRoll_Time,0x184,f32,1.2,disc,tentative +UN_e010_ADAN_Attacker_S,BarrelRoll_Radius,0x188,f32,250,disc,tentative +UN_e010_ADAN_Attacker_S,TurnAttack_CutoffRatio,0x190,f32,0.4,disc,tentative +UN_e010_ADAN_Attacker_S,TurnAttack_DoubleRatio,0x194,f32,0.3,disc,tentative +UN_e010_ADAN_Attacker_S,CutoffTimeMin,0x198,f32,0.6,disc,tentative +UN_e010_ADAN_Attacker_S,TurnAttack_DoubleTimeMax,0x1a4,f32,2.5,disc,tentative +UN_e010_ADAN_Attacker_S,Turn_AngularVelocity,0x1ac,rad,30,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,HoldPosition_LengthMax,0x1cc,f32,400,disc,tentative +UN_e010_ADAN_Attacker_S,Through_Time2Max,0x210,f32,1.5,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,SolidCutoff_LengthMax,0x22c,f32,2500,disc,tentative +UN_e010_ADAN_Attacker_S,MaxValue,0x238,f32,100,defaulted-on-disc,confirmed +UN_e010_ADAN_Attacker_S,ChargeDelay,0x23c,f32,3,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,ChargeDelay_Break,0x240,f32,10,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,ChargeSpeed,0x244,f32,25,disc,confirmed +UN_e010_ADAN_Attacker_S,Delay,0x248,f32,1.5,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,DestroyMotionTime,0x270,f32,6,disc,confirmed +UN_e010_ADAN_Attacker_S,DryMass,0x274,f32,100,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,GrossMass,0x278,f32,200,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,LowerHPThresholdRatio,0x298,f32,0.3,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,RadarRange,0x2a0,f32,6000,disc,confirmed +UN_e010_ADAN_Attacker_S,FCSRange,0x2a4,f32,3000,disc,confirmed +UN_e010_ADAN_Attacker_S,AttackVesselPoint,0x2b4,f32,0.005,disc,confirmed +UN_e010_ADAN_Attacker_S,AttackCraftPoint,0x2b8,f32,0.1,defaulted-on-disc,tentative +UN_e010_ADAN_Attacker_S,DefencePoint,0x2bc,f32,0.001,disc,confirmed +UN_e010_ADAN_Attacker_S,PitchDragFactor,0x108,f32,3,never-valued-on-disc,interpolated +UN_e010_ADAN_Attacker_S,RollDragFactor,0x10c,f32,3,never-valued-on-disc,interpolated +UN_e010_ADAN_Attacker_S,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_e010_ADAN_Attacker_S,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_e010_ADAN_Attacker_S,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_e015_ADAN_Puppy,Slalom_CutoffRatio,0x00c,f32,1.4013e-45,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,Size_X,0x030,f32,7,disc,confirmed +UN_e015_ADAN_Puppy,Size_Y,0x034,f32,5.5,disc,tentative +UN_e015_ADAN_Puppy,Size_Z,0x038,f32,10,disc,confirmed +UN_e015_ADAN_Puppy,Color_R,0x040,f32,1,disc,confirmed +UN_e015_ADAN_Puppy,Color_G,0x044,f32,0.5,disc,confirmed +UN_e015_ADAN_Puppy,Color_B,0x048,f32,0.1,disc,confirmed +UN_e015_ADAN_Puppy,Size_Radius,0x050,f32,5,disc,confirmed +UN_e015_ADAN_Puppy,HP,0x054,f32,10,defaulted-on-disc,confirmed +UN_e015_ADAN_Puppy,HQRatio,0x058,f32,1,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,ShieldRatio,0x05c,f32,1,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,ThrusterRatio,0x060,f32,1,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,BridgeCount,0x070,i32,0,disc,tentative +UN_e015_ADAN_Puppy,ResistanceToOptics,0x074,f32,0,disc,confirmed +UN_e015_ADAN_Puppy,ResistanceToShell,0x078,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,ResistanceToExplosion,0x07c,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,ResistanceToPlayer,0x080,f32,1,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,ResistanceParalyze,0x084,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,ScorePoint,0x08c,f32,5,disc,confirmed +UN_e015_ADAN_Puppy,MassScore,0x094,f32,10,disc,tentative +UN_e015_ADAN_Puppy,MinimumVelocity,0x09c,f32,50,disc,tentative +UN_e015_ADAN_Puppy,MaximumVelocity,0x0a0,f32,400,disc,confirmed +UN_e015_ADAN_Puppy,CruisingVelocity,0x0a4,f32,200,disc,confirmed +UN_e015_ADAN_Puppy,Acceleration,0x0a8,f32,200,defaulted-on-disc,confirmed +UN_e015_ADAN_Puppy,Deceleration,0x0ac,f32,150,disc,confirmed +UN_e015_ADAN_Puppy,AV_PitchPlus_Max,0x0b0,rad,10,defaulted-on-disc,confirmed +UN_e015_ADAN_Puppy,AV_PitchPlus_Min,0x0b4,rad,17,disc,tentative +UN_e015_ADAN_Puppy,AA_PitchPlus_Max,0x0b8,rad,10,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AA_PitchPlus_Min,0x0bc,rad,17,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AV_PitchMinus_Max,0x0c0,rad,5,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AV_PitchMinus_Min,0x0c4,rad,8.5,disc,tentative +UN_e015_ADAN_Puppy,AA_PitchMinus_Max,0x0c8,rad,5,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AA_PitchMinus_Min,0x0cc,rad,8.5,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AV_Yaw_Max,0x0d0,rad,10,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AV_Yaw_Min,0x0d4,rad,17,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AA_Yaw_Max,0x0d8,rad,10,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AA_Yaw_Min,0x0dc,rad,17,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AV_Roll_Max,0x0e0,rad,5,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AV_Roll_Min,0x0e4,rad,8.5,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AA_Roll_Max,0x0e8,rad,5,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AA_Roll_Min,0x0ec,rad,8.5,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,SideThrustVelocity_Max,0x0f8,f32,1000,disc,confirmed +UN_e015_ADAN_Puppy,SideThrustAcceleration,0x0fc,f32,1000,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,MaximumBank_Normal,0x100,rad,20,disc,tentative +UN_e015_ADAN_Puppy,YawDragFactor,0x104,f32,3,disc,tentative +UN_e015_ADAN_Puppy,TurnAttack_DoubleTimeMin,0x110,f32,0.5,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,ArterBurner_Vc,0x114,f32,2,disc,tentative +UN_e015_ADAN_Puppy,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_e015_ADAN_Puppy,ReverseThrust_Acc,0x120,f32,2,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AccPitchFactor,0x124,f32,1,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,MaxValue,0x238,f32,0,defaulted-on-disc,confirmed +UN_e015_ADAN_Puppy,ChargeDelay,0x23c,f32,3,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,ChargeDelay_Break,0x240,f32,10,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,ChargeSpeed,0x244,f32,25,disc,confirmed +UN_e015_ADAN_Puppy,Delay,0x248,f32,0,defaulted-on-disc,tentative +UN_e015_ADAN_Puppy,DestroyMotionTime,0x270,f32,5,disc,confirmed +UN_e015_ADAN_Puppy,DryMass,0x274,f32,100,disc,tentative +UN_e015_ADAN_Puppy,GrossMass,0x278,f32,200,disc,tentative +UN_e015_ADAN_Puppy,LowerHPThresholdRatio,0x298,f32,0.2,disc,tentative +UN_e015_ADAN_Puppy,RadarRange,0x2a0,f32,3000,disc,confirmed +UN_e015_ADAN_Puppy,FCSRange,0x2a4,f32,2000,disc,confirmed +UN_e015_ADAN_Puppy,AttackVesselPoint,0x2b4,f32,0.0005,disc,confirmed +UN_e015_ADAN_Puppy,AttackCraftPoint,0x2b8,f32,0.05,disc,tentative +UN_e015_ADAN_Puppy,DefencePoint,0x2bc,f32,0.0005,defaulted-on-disc,confirmed +UN_e015_ADAN_Puppy,PitchDragFactor,0x108,f32,3,never-valued-on-disc,interpolated +UN_e015_ADAN_Puppy,RollDragFactor,0x10c,f32,3,never-valued-on-disc,interpolated +UN_e015_ADAN_Puppy,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_e015_ADAN_Puppy,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_e015_ADAN_Puppy,DecPitchFactor,0x128,f32,0.5,never-valued-on-disc,interpolated +UN_e105_ADAN_Cruiser,Slalom_CutoffRatio,0x00c,f32,2.8026e-45,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,Size_X,0x030,f32,600,disc,confirmed +UN_e105_ADAN_Cruiser,Size_Y,0x034,f32,600,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,Size_Z,0x038,f32,3800,disc,confirmed +UN_e105_ADAN_Cruiser,Color_R,0x040,f32,1,disc,confirmed +UN_e105_ADAN_Cruiser,Color_G,0x044,f32,0.3,disc,confirmed +UN_e105_ADAN_Cruiser,Color_B,0x048,f32,0.2,disc,confirmed +UN_e105_ADAN_Cruiser,Size_Radius,0x050,f32,1900,disc,confirmed +UN_e105_ADAN_Cruiser,HP,0x054,f32,30000,disc,confirmed +UN_e105_ADAN_Cruiser,HQRatio,0x058,f32,0.2,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,ShieldRatio,0x05c,f32,0,disc,tentative +UN_e105_ADAN_Cruiser,ThrusterRatio,0x060,f32,0.22,disc,tentative +UN_e105_ADAN_Cruiser,BridgeCount,0x070,i32,1,disc,tentative +UN_e105_ADAN_Cruiser,ResistanceToOptics,0x074,f32,0.8,disc,confirmed +UN_e105_ADAN_Cruiser,ResistanceToShell,0x078,f32,0.1,disc,tentative +UN_e105_ADAN_Cruiser,ResistanceToExplosion,0x07c,f32,0.5,disc,tentative +UN_e105_ADAN_Cruiser,ResistanceToPlayer,0x080,f32,1,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,ResistanceParalyze,0x084,f32,0.97,disc,tentative +UN_e105_ADAN_Cruiser,ScorePoint,0x08c,f32,2500,disc,confirmed +UN_e105_ADAN_Cruiser,MassScore,0x094,f32,400000,disc,tentative +UN_e105_ADAN_Cruiser,MinimumVelocity,0x09c,f32,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,MaximumVelocity,0x0a0,f32,150,disc,confirmed +UN_e105_ADAN_Cruiser,CruisingVelocity,0x0a4,f32,50,disc,confirmed +UN_e105_ADAN_Cruiser,Acceleration,0x0a8,f32,100,disc,confirmed +UN_e105_ADAN_Cruiser,Deceleration,0x0ac,f32,250,disc,confirmed +UN_e105_ADAN_Cruiser,AV_PitchPlus_Max,0x0b0,rad,3.6,disc,confirmed +UN_e105_ADAN_Cruiser,AV_PitchPlus_Min,0x0b4,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AA_PitchPlus_Max,0x0b8,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AA_PitchPlus_Min,0x0bc,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AV_PitchMinus_Max,0x0c0,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AV_PitchMinus_Min,0x0c4,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AA_PitchMinus_Max,0x0c8,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AA_PitchMinus_Min,0x0cc,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AV_Yaw_Max,0x0d0,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AV_Yaw_Min,0x0d4,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AA_Yaw_Max,0x0d8,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AA_Yaw_Min,0x0dc,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AV_Roll_Max,0x0e0,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AV_Roll_Min,0x0e4,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AA_Roll_Max,0x0e8,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AA_Roll_Min,0x0ec,rad,3.6,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,SideThrustVelocity_Max,0x0f8,f32,20,disc,confirmed +UN_e105_ADAN_Cruiser,SideThrustAcceleration,0x0fc,f32,10,disc,tentative +UN_e105_ADAN_Cruiser,MaximumBank_Normal,0x100,rad,60,disc,tentative +UN_e105_ADAN_Cruiser,YawDragFactor,0x104,f32,2,disc,tentative +UN_e105_ADAN_Cruiser,TurnAttack_DoubleTimeMin,0x110,f32,0.5,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,ArterBurner_Vc,0x114,f32,2,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_e105_ADAN_Cruiser,ReverseThrust_Acc,0x120,f32,0.25,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AccPitchFactor,0x124,f32,30,disc,tentative +UN_e105_ADAN_Cruiser,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,MaxValue,0x238,f32,15000,disc,confirmed +UN_e105_ADAN_Cruiser,ChargeDelay,0x23c,f32,1,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,ChargeDelay_Break,0x240,f32,5,disc,tentative +UN_e105_ADAN_Cruiser,ChargeSpeed,0x244,f32,240,disc,confirmed +UN_e105_ADAN_Cruiser,Delay,0x248,f32,0,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,DestroyMotionTime,0x270,f32,67,disc,confirmed +UN_e105_ADAN_Cruiser,DryMass,0x274,f32,10000,disc,tentative +UN_e105_ADAN_Cruiser,GrossMass,0x278,f32,10000,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,LowerHPThresholdRatio,0x298,f32,0.3,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,RadarRange,0x2a0,f32,60000,disc,confirmed +UN_e105_ADAN_Cruiser,FCSRange,0x2a4,f32,45000,disc,confirmed +UN_e105_ADAN_Cruiser,AttackVesselPoint,0x2b4,f32,0.25,disc,confirmed +UN_e105_ADAN_Cruiser,AttackCraftPoint,0x2b8,f32,0.1,defaulted-on-disc,tentative +UN_e105_ADAN_Cruiser,DefencePoint,0x2bc,f32,0.25,defaulted-on-disc,confirmed +UN_e105_ADAN_Cruiser,PitchDragFactor,0x108,f32,2,never-valued-on-disc,interpolated +UN_e105_ADAN_Cruiser,RollDragFactor,0x10c,f32,2,never-valued-on-disc,interpolated +UN_e105_ADAN_Cruiser,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_e105_ADAN_Cruiser,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_e105_ADAN_Cruiser,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_e106_ADAN_Destroyer,Slalom_CutoffRatio,0x00c,f32,2.8026e-45,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,Size_X,0x030,f32,300,disc,confirmed +UN_e106_ADAN_Destroyer,Size_Y,0x034,f32,300,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,Size_Z,0x038,f32,2100,disc,confirmed +UN_e106_ADAN_Destroyer,Color_R,0x040,f32,1,disc,confirmed +UN_e106_ADAN_Destroyer,Color_G,0x044,f32,0.5,disc,confirmed +UN_e106_ADAN_Destroyer,Color_B,0x048,f32,0.1,disc,confirmed +UN_e106_ADAN_Destroyer,Size_Radius,0x050,f32,550,disc,confirmed +UN_e106_ADAN_Destroyer,HP,0x054,f32,10000,disc,confirmed +UN_e106_ADAN_Destroyer,HQRatio,0x058,f32,0.2,disc,tentative +UN_e106_ADAN_Destroyer,ShieldRatio,0x05c,f32,0,disc,tentative +UN_e106_ADAN_Destroyer,ThrusterRatio,0x060,f32,0.2,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,BridgeCount,0x070,i32,1,disc,tentative +UN_e106_ADAN_Destroyer,ResistanceToOptics,0x074,f32,0.8,disc,confirmed +UN_e106_ADAN_Destroyer,ResistanceToShell,0x078,f32,0.1,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,ResistanceToExplosion,0x07c,f32,0.5,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,ResistanceToPlayer,0x080,f32,1,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,ResistanceParalyze,0x084,f32,0.97,disc,tentative +UN_e106_ADAN_Destroyer,ScorePoint,0x08c,f32,500,disc,confirmed +UN_e106_ADAN_Destroyer,MassScore,0x094,f32,100000,disc,tentative +UN_e106_ADAN_Destroyer,MinimumVelocity,0x09c,f32,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,MaximumVelocity,0x0a0,f32,150,disc,confirmed +UN_e106_ADAN_Destroyer,CruisingVelocity,0x0a4,f32,50,disc,confirmed +UN_e106_ADAN_Destroyer,Acceleration,0x0a8,f32,100,disc,confirmed +UN_e106_ADAN_Destroyer,Deceleration,0x0ac,f32,250,disc,confirmed +UN_e106_ADAN_Destroyer,AV_PitchPlus_Max,0x0b0,rad,3.6,disc,confirmed +UN_e106_ADAN_Destroyer,AV_PitchPlus_Min,0x0b4,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AA_PitchPlus_Max,0x0b8,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AA_PitchPlus_Min,0x0bc,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AV_PitchMinus_Max,0x0c0,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AV_PitchMinus_Min,0x0c4,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AA_PitchMinus_Max,0x0c8,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AA_PitchMinus_Min,0x0cc,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AV_Yaw_Max,0x0d0,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AV_Yaw_Min,0x0d4,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AA_Yaw_Max,0x0d8,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AA_Yaw_Min,0x0dc,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AV_Roll_Max,0x0e0,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AV_Roll_Min,0x0e4,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AA_Roll_Max,0x0e8,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AA_Roll_Min,0x0ec,rad,3.6,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,SideThrustVelocity_Max,0x0f8,f32,20,disc,confirmed +UN_e106_ADAN_Destroyer,SideThrustAcceleration,0x0fc,f32,10,disc,tentative +UN_e106_ADAN_Destroyer,MaximumBank_Normal,0x100,rad,60,disc,tentative +UN_e106_ADAN_Destroyer,YawDragFactor,0x104,f32,2,disc,tentative +UN_e106_ADAN_Destroyer,TurnAttack_DoubleTimeMin,0x110,f32,0.5,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,ArterBurner_Vc,0x114,f32,2,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_e106_ADAN_Destroyer,ReverseThrust_Acc,0x120,f32,0.25,disc,tentative +UN_e106_ADAN_Destroyer,AccPitchFactor,0x124,f32,30,disc,tentative +UN_e106_ADAN_Destroyer,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,MaxValue,0x238,f32,5000,disc,confirmed +UN_e106_ADAN_Destroyer,ChargeDelay,0x23c,f32,1,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,ChargeDelay_Break,0x240,f32,5,disc,tentative +UN_e106_ADAN_Destroyer,ChargeSpeed,0x244,f32,80,disc,confirmed +UN_e106_ADAN_Destroyer,Delay,0x248,f32,0,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,DestroyMotionTime,0x270,f32,67,disc,confirmed +UN_e106_ADAN_Destroyer,DryMass,0x274,f32,10000,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,GrossMass,0x278,f32,10000,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,LowerHPThresholdRatio,0x298,f32,0.3,disc,tentative +UN_e106_ADAN_Destroyer,RadarRange,0x2a0,f32,60000,disc,confirmed +UN_e106_ADAN_Destroyer,FCSRange,0x2a4,f32,45000,disc,confirmed +UN_e106_ADAN_Destroyer,AttackVesselPoint,0x2b4,f32,0.1,defaulted-on-disc,confirmed +UN_e106_ADAN_Destroyer,AttackCraftPoint,0x2b8,f32,0.1,defaulted-on-disc,tentative +UN_e106_ADAN_Destroyer,DefencePoint,0x2bc,f32,0.1,defaulted-on-disc,confirmed +UN_e106_ADAN_Destroyer,PitchDragFactor,0x108,f32,2,never-valued-on-disc,interpolated +UN_e106_ADAN_Destroyer,RollDragFactor,0x10c,f32,2,never-valued-on-disc,interpolated +UN_e106_ADAN_Destroyer,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_e106_ADAN_Destroyer,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_e106_ADAN_Destroyer,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_e108_ADAN_ASFrigate,Slalom_CutoffRatio,0x00c,f32,2.8026e-45,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,Size_X,0x030,f32,80,disc,confirmed +UN_e108_ADAN_ASFrigate,Size_Y,0x034,f32,80,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,Size_Z,0x038,f32,350,disc,confirmed +UN_e108_ADAN_ASFrigate,Color_R,0x040,f32,1,disc,confirmed +UN_e108_ADAN_ASFrigate,Color_G,0x044,f32,0.5,disc,confirmed +UN_e108_ADAN_ASFrigate,Color_B,0x048,f32,0.1,disc,confirmed +UN_e108_ADAN_ASFrigate,Size_Radius,0x050,f32,175,disc,confirmed +UN_e108_ADAN_ASFrigate,HP,0x054,f32,4000,disc,confirmed +UN_e108_ADAN_ASFrigate,HQRatio,0x058,f32,1,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,ShieldRatio,0x05c,f32,1,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,ThrusterRatio,0x060,f32,0.2,disc,tentative +UN_e108_ADAN_ASFrigate,BridgeCount,0x070,i32,0,disc,tentative +UN_e108_ADAN_ASFrigate,ResistanceToOptics,0x074,f32,0.8,disc,confirmed +UN_e108_ADAN_ASFrigate,ResistanceToShell,0x078,f32,0.1,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,ResistanceToExplosion,0x07c,f32,0.5,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,ResistanceToPlayer,0x080,f32,1,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,ResistanceParalyze,0x084,f32,0.97,disc,tentative +UN_e108_ADAN_ASFrigate,ScorePoint,0x08c,f32,200,disc,confirmed +UN_e108_ADAN_ASFrigate,MassScore,0x094,f32,50000,disc,tentative +UN_e108_ADAN_ASFrigate,MinimumVelocity,0x09c,f32,0,disc,tentative +UN_e108_ADAN_ASFrigate,MaximumVelocity,0x0a0,f32,200,disc,confirmed +UN_e108_ADAN_ASFrigate,CruisingVelocity,0x0a4,f32,125,disc,confirmed +UN_e108_ADAN_ASFrigate,Acceleration,0x0a8,f32,100,disc,confirmed +UN_e108_ADAN_ASFrigate,Deceleration,0x0ac,f32,200,defaulted-on-disc,confirmed +UN_e108_ADAN_ASFrigate,AV_PitchPlus_Max,0x0b0,rad,3.6,disc,confirmed +UN_e108_ADAN_ASFrigate,AV_PitchPlus_Min,0x0b4,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AA_PitchPlus_Max,0x0b8,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AA_PitchPlus_Min,0x0bc,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AV_PitchMinus_Max,0x0c0,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AV_PitchMinus_Min,0x0c4,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AA_PitchMinus_Max,0x0c8,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AA_PitchMinus_Min,0x0cc,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AV_Yaw_Max,0x0d0,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AV_Yaw_Min,0x0d4,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AA_Yaw_Max,0x0d8,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AA_Yaw_Min,0x0dc,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AV_Roll_Max,0x0e0,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AV_Roll_Min,0x0e4,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AA_Roll_Max,0x0e8,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AA_Roll_Min,0x0ec,rad,3.6,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,SideThrustVelocity_Max,0x0f8,f32,20,disc,confirmed +UN_e108_ADAN_ASFrigate,SideThrustAcceleration,0x0fc,f32,10,disc,tentative +UN_e108_ADAN_ASFrigate,MaximumBank_Normal,0x100,rad,60,disc,tentative +UN_e108_ADAN_ASFrigate,YawDragFactor,0x104,f32,2,disc,tentative +UN_e108_ADAN_ASFrigate,TurnAttack_DoubleTimeMin,0x110,f32,0.5,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,ArterBurner_Vc,0x114,f32,2,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_e108_ADAN_ASFrigate,ReverseThrust_Acc,0x120,f32,0.25,disc,tentative +UN_e108_ADAN_ASFrigate,AccPitchFactor,0x124,f32,30,disc,tentative +UN_e108_ADAN_ASFrigate,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,MaxValue,0x238,f32,1000,disc,confirmed +UN_e108_ADAN_ASFrigate,ChargeDelay,0x23c,f32,1,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,ChargeDelay_Break,0x240,f32,1,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,ChargeSpeed,0x244,f32,10,defaulted-on-disc,confirmed +UN_e108_ADAN_ASFrigate,Delay,0x248,f32,0,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,DestroyMotionTime,0x270,f32,67,disc,confirmed +UN_e108_ADAN_ASFrigate,DryMass,0x274,f32,10000,disc,tentative +UN_e108_ADAN_ASFrigate,GrossMass,0x278,f32,10000,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,LowerHPThresholdRatio,0x298,f32,0.3,disc,tentative +UN_e108_ADAN_ASFrigate,RadarRange,0x2a0,f32,60000,disc,confirmed +UN_e108_ADAN_ASFrigate,FCSRange,0x2a4,f32,20000,disc,confirmed +UN_e108_ADAN_ASFrigate,AttackVesselPoint,0x2b4,f32,0.05,disc,confirmed +UN_e108_ADAN_ASFrigate,AttackCraftPoint,0x2b8,f32,0.1,defaulted-on-disc,tentative +UN_e108_ADAN_ASFrigate,DefencePoint,0x2bc,f32,0.03,disc,confirmed +UN_e108_ADAN_ASFrigate,PitchDragFactor,0x108,f32,2,never-valued-on-disc,interpolated +UN_e108_ADAN_ASFrigate,RollDragFactor,0x10c,f32,2,never-valued-on-disc,interpolated +UN_e108_ADAN_ASFrigate,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_e108_ADAN_ASFrigate,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_e108_ADAN_ASFrigate,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_e201_ADAN_ISCMissile,Slalom_CutoffRatio,0x00c,f32,2.8026e-45,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,Size_X,0x030,f32,300,disc,confirmed +UN_e201_ADAN_ISCMissile,Size_Y,0x034,f32,300,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,Size_Z,0x038,f32,2800,disc,confirmed +UN_e201_ADAN_ISCMissile,Color_R,0x040,f32,1,disc,confirmed +UN_e201_ADAN_ISCMissile,Color_G,0x044,f32,0.1,disc,confirmed +UN_e201_ADAN_ISCMissile,Color_B,0x048,f32,0.1,defaulted-on-disc,confirmed +UN_e201_ADAN_ISCMissile,Size_Radius,0x050,f32,1500,disc,confirmed +UN_e201_ADAN_ISCMissile,HP,0x054,f32,3000,disc,confirmed +UN_e201_ADAN_ISCMissile,HQRatio,0x058,f32,1,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,ShieldRatio,0x05c,f32,0,disc,tentative +UN_e201_ADAN_ISCMissile,ThrusterRatio,0x060,f32,0.2,disc,tentative +UN_e201_ADAN_ISCMissile,BridgeCount,0x070,i32,0,disc,tentative +UN_e201_ADAN_ISCMissile,ResistanceToOptics,0x074,f32,0.8,disc,confirmed +UN_e201_ADAN_ISCMissile,ResistanceToShell,0x078,f32,0.1,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,ResistanceToExplosion,0x07c,f32,0.5,disc,tentative +UN_e201_ADAN_ISCMissile,ResistanceToPlayer,0x080,f32,1,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,ResistanceParalyze,0x084,f32,1,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,ScorePoint,0x08c,f32,400,disc,confirmed +UN_e201_ADAN_ISCMissile,MassScore,0x094,f32,100000,disc,tentative +UN_e201_ADAN_ISCMissile,MinimumVelocity,0x09c,f32,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,MaximumVelocity,0x0a0,f32,450,disc,confirmed +UN_e201_ADAN_ISCMissile,CruisingVelocity,0x0a4,f32,450,defaulted-on-disc,confirmed +UN_e201_ADAN_ISCMissile,Acceleration,0x0a8,f32,200,disc,confirmed +UN_e201_ADAN_ISCMissile,Deceleration,0x0ac,f32,500,disc,confirmed +UN_e201_ADAN_ISCMissile,AV_PitchPlus_Max,0x0b0,rad,3.6,disc,confirmed +UN_e201_ADAN_ISCMissile,AV_PitchPlus_Min,0x0b4,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AA_PitchPlus_Max,0x0b8,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AA_PitchPlus_Min,0x0bc,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AV_PitchMinus_Max,0x0c0,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AV_PitchMinus_Min,0x0c4,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AA_PitchMinus_Max,0x0c8,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AA_PitchMinus_Min,0x0cc,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AV_Yaw_Max,0x0d0,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AV_Yaw_Min,0x0d4,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AA_Yaw_Max,0x0d8,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AA_Yaw_Min,0x0dc,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AV_Roll_Max,0x0e0,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AV_Roll_Min,0x0e4,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AA_Roll_Max,0x0e8,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AA_Roll_Min,0x0ec,rad,3.6,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,SideThrustVelocity_Max,0x0f8,f32,20,disc,confirmed +UN_e201_ADAN_ISCMissile,SideThrustAcceleration,0x0fc,f32,10,disc,tentative +UN_e201_ADAN_ISCMissile,MaximumBank_Normal,0x100,rad,60,disc,tentative +UN_e201_ADAN_ISCMissile,YawDragFactor,0x104,f32,2,disc,tentative +UN_e201_ADAN_ISCMissile,TurnAttack_DoubleTimeMin,0x110,f32,0.5,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,ArterBurner_Vc,0x114,f32,2,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_e201_ADAN_ISCMissile,ReverseThrust_Acc,0x120,f32,0.25,disc,tentative +UN_e201_ADAN_ISCMissile,AccPitchFactor,0x124,f32,30,disc,tentative +UN_e201_ADAN_ISCMissile,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,MaxValue,0x238,f32,1000,disc,confirmed +UN_e201_ADAN_ISCMissile,ChargeDelay,0x23c,f32,1,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,ChargeDelay_Break,0x240,f32,1,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,ChargeSpeed,0x244,f32,10,defaulted-on-disc,confirmed +UN_e201_ADAN_ISCMissile,Delay,0x248,f32,1,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,DestroyMotionTime,0x270,f32,67,disc,confirmed +UN_e201_ADAN_ISCMissile,DryMass,0x274,f32,10000,disc,tentative +UN_e201_ADAN_ISCMissile,GrossMass,0x278,f32,10000,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,LowerHPThresholdRatio,0x298,f32,0.3,disc,tentative +UN_e201_ADAN_ISCMissile,RadarRange,0x2a0,f32,0,defaulted-on-disc,confirmed +UN_e201_ADAN_ISCMissile,FCSRange,0x2a4,f32,0,defaulted-on-disc,confirmed +UN_e201_ADAN_ISCMissile,AttackVesselPoint,0x2b4,f32,0,defaulted-on-disc,confirmed +UN_e201_ADAN_ISCMissile,AttackCraftPoint,0x2b8,f32,0,defaulted-on-disc,tentative +UN_e201_ADAN_ISCMissile,DefencePoint,0x2bc,f32,0.05,disc,confirmed +UN_e201_ADAN_ISCMissile,PitchDragFactor,0x108,f32,2,never-valued-on-disc,interpolated +UN_e201_ADAN_ISCMissile,RollDragFactor,0x10c,f32,2,never-valued-on-disc,interpolated +UN_e201_ADAN_ISCMissile,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_e201_ADAN_ISCMissile,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_e201_ADAN_ISCMissile,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T,Slalom_CutoffRatio,0x00c,f32,1.4013e-45,disc,tentative +UN_f001_TCAF_DeltaSaber_T,Size_X,0x030,f32,10,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,Size_Y,0x034,f32,7,disc,tentative +UN_f001_TCAF_DeltaSaber_T,Size_Z,0x038,f32,29,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,Color_R,0x040,f32,0.1,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,Color_G,0x044,f32,0.5,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,Color_B,0x048,f32,1,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,Size_Radius,0x050,f32,10,defaulted-on-disc,confirmed +UN_f001_TCAF_DeltaSaber_T,HP,0x054,f32,1000,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,HQRatio,0x058,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,ShieldRatio,0x05c,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,ThrusterRatio,0x060,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,BridgeCount,0x070,i32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,ResistanceToOptics,0x074,f32,1,defaulted-on-disc,confirmed +UN_f001_TCAF_DeltaSaber_T,ResistanceToShell,0x078,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,ResistanceToExplosion,0x07c,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,ResistanceToPlayer,0x080,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,ResistanceParalyze,0x084,f32,0.97,disc,tentative +UN_f001_TCAF_DeltaSaber_T,ScorePoint,0x08c,f32,0,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,MassScore,0x094,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,MinimumVelocity,0x09c,f32,100,disc,tentative +UN_f001_TCAF_DeltaSaber_T,MaximumVelocity,0x0a0,f32,1200,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,CruisingVelocity,0x0a4,f32,700,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,Acceleration,0x0a8,f32,600,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,Deceleration,0x0ac,f32,400,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,AV_PitchPlus_Max,0x0b0,rad,80,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,AV_PitchPlus_Min,0x0b4,rad,200,disc,tentative +UN_f001_TCAF_DeltaSaber_T,AA_PitchPlus_Max,0x0b8,rad,30,disc,tentative +UN_f001_TCAF_DeltaSaber_T,AA_PitchPlus_Min,0x0bc,rad,100,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,AV_PitchMinus_Max,0x0c0,rad,40,disc,tentative +UN_f001_TCAF_DeltaSaber_T,AV_PitchMinus_Min,0x0c4,rad,120,disc,tentative +UN_f001_TCAF_DeltaSaber_T,AA_PitchMinus_Max,0x0c8,rad,10,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,AA_PitchMinus_Min,0x0cc,rad,40,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,AV_Yaw_Max,0x0d0,rad,25,disc,tentative +UN_f001_TCAF_DeltaSaber_T,AV_Yaw_Min,0x0d4,rad,60,disc,tentative +UN_f001_TCAF_DeltaSaber_T,AA_Yaw_Max,0x0d8,rad,50,disc,tentative +UN_f001_TCAF_DeltaSaber_T,AA_Yaw_Min,0x0dc,rad,240,disc,tentative +UN_f001_TCAF_DeltaSaber_T,AV_Roll_Max,0x0e0,rad,120,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,AV_Roll_Min,0x0e4,rad,160,disc,tentative +UN_f001_TCAF_DeltaSaber_T,AA_Roll_Max,0x0e8,rad,60,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,AA_Roll_Min,0x0ec,rad,150,disc,tentative +UN_f001_TCAF_DeltaSaber_T,SideThrustVelocity_Max,0x0f8,f32,1000,defaulted-on-disc,confirmed +UN_f001_TCAF_DeltaSaber_T,SideThrustAcceleration,0x0fc,f32,1000,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,MaximumBank_Normal,0x100,rad,60,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,YawDragFactor,0x104,f32,3,disc,tentative +UN_f001_TCAF_DeltaSaber_T,TurnAttack_DoubleTimeMin,0x110,f32,0.5,disc,tentative +UN_f001_TCAF_DeltaSaber_T,ArterBurner_Vc,0x114,f32,2,disc,tentative +UN_f001_TCAF_DeltaSaber_T,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_f001_TCAF_DeltaSaber_T,ReverseThrust_Acc,0x120,f32,2,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,AccPitchFactor,0x124,f32,30,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,SideRoll_Length,0x174,f32,500,disc,tentative +UN_f001_TCAF_DeltaSaber_T,BarrelRoll_Time,0x184,f32,1.2,disc,tentative +UN_f001_TCAF_DeltaSaber_T,BarrelRoll_Radius,0x188,f32,250,disc,tentative +UN_f001_TCAF_DeltaSaber_T,TurnAttack_CutoffRatio,0x190,f32,0.4,disc,tentative +UN_f001_TCAF_DeltaSaber_T,TurnAttack_DoubleRatio,0x194,f32,0.3,disc,tentative +UN_f001_TCAF_DeltaSaber_T,CutoffTimeMin,0x198,f32,0.6,disc,tentative +UN_f001_TCAF_DeltaSaber_T,TurnAttack_DoubleTimeMax,0x1a4,f32,2.5,disc,tentative +UN_f001_TCAF_DeltaSaber_T,Turn_AngularVelocity,0x1ac,rad,100,disc,tentative +UN_f001_TCAF_DeltaSaber_T,HoldPosition_LengthMax,0x1cc,f32,400,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,Through_Time2Max,0x210,f32,1.5,disc,tentative +UN_f001_TCAF_DeltaSaber_T,SolidCutoff_LengthMax,0x22c,f32,2500,disc,tentative +UN_f001_TCAF_DeltaSaber_T,MaxValue,0x238,f32,2000,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,ChargeDelay,0x23c,f32,5,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,ChargeDelay_Break,0x240,f32,10,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,ChargeSpeed,0x244,f32,800,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,Delay,0x248,f32,3,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,DestroyMotionTime,0x270,f32,10,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,DryMass,0x274,f32,100,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,GrossMass,0x278,f32,200,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,LowerHPThresholdRatio,0x298,f32,0.3,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,RadarRange,0x2a0,f32,500000,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,FCSRange,0x2a4,f32,500000,defaulted-on-disc,confirmed +UN_f001_TCAF_DeltaSaber_T,AttackVesselPoint,0x2b4,f32,0.02,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,AttackCraftPoint,0x2b8,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T,DefencePoint,0x2bc,f32,0.001,disc,confirmed +UN_f001_TCAF_DeltaSaber_T,PitchDragFactor,0x108,f32,3,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T,RollDragFactor,0x10c,f32,3,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T_Player,Slalom_CutoffRatio,0x00c,f32,1.4013e-45,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,Size_X,0x030,f32,10,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,Size_Y,0x034,f32,7,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,Size_Z,0x038,f32,29,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,Color_R,0x040,f32,0.1,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,Color_G,0x044,f32,0.5,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,Color_B,0x048,f32,1,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,Size_Radius,0x050,f32,10,defaulted-on-disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,HP,0x054,f32,1500,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,HQRatio,0x058,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,ShieldRatio,0x05c,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,ThrusterRatio,0x060,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,BridgeCount,0x070,i32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,ResistanceToOptics,0x074,f32,1,defaulted-on-disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,ResistanceToShell,0x078,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,ResistanceToExplosion,0x07c,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,ResistanceToPlayer,0x080,f32,0,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,ResistanceParalyze,0x084,f32,0.97,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,ScorePoint,0x08c,f32,0,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,MassScore,0x094,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,MinimumVelocity,0x09c,f32,100,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,MaximumVelocity,0x0a0,f32,1200,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,CruisingVelocity,0x0a4,f32,350,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,Acceleration,0x0a8,f32,600,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,Deceleration,0x0ac,f32,500,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,AV_PitchPlus_Max,0x0b0,rad,70,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,AV_PitchPlus_Min,0x0b4,rad,150,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AA_PitchPlus_Max,0x0b8,rad,210,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AA_PitchPlus_Min,0x0bc,rad,375,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AV_PitchMinus_Max,0x0c0,rad,40,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AV_PitchMinus_Min,0x0c4,rad,75,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AA_PitchMinus_Max,0x0c8,rad,100,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AA_PitchMinus_Min,0x0cc,rad,180,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AV_Yaw_Max,0x0d0,rad,25,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AV_Yaw_Min,0x0d4,rad,45,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AA_Yaw_Max,0x0d8,rad,65,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AA_Yaw_Min,0x0dc,rad,120,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AV_Roll_Max,0x0e0,rad,125,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AV_Roll_Min,0x0e4,rad,200,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AA_Roll_Max,0x0e8,rad,475,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AA_Roll_Min,0x0ec,rad,750,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,SideThrustVelocity_Max,0x0f8,f32,500,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,SideThrustAcceleration,0x0fc,f32,1000,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,MaximumBank_Normal,0x100,rad,60,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,YawDragFactor,0x104,f32,3,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,TurnAttack_DoubleTimeMin,0x110,f32,0.5,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,ArterBurner_Vc,0x114,f32,2,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,ReverseThrust_Acc,0x120,f32,2,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AccPitchFactor,0x124,f32,30,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AV_AxisMode_Min,0x130,rad,35,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AA_AxisMode_Max,0x134,rad,20,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AB_ConsumeShield_Begin,0x144,f32,50,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AB_AA_PitchPlus,0x150,rad,15,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,AB_AV_PitchMinus,0x154,rad,16,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,MaxValue,0x238,f32,400,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,ChargeDelay,0x23c,f32,5,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,ChargeDelay_Break,0x240,f32,10,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,ChargeSpeed,0x244,f32,25,defaulted-on-disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,Delay,0x248,f32,3,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,DestroyMotionTime,0x270,f32,3,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,DryMass,0x274,f32,100,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,GrossMass,0x278,f32,250,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,LowerHPThresholdRatio,0x298,f32,0.3,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,RadarRange,0x2a0,f32,500000,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,FCSRange,0x2a4,f32,500000,defaulted-on-disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,AttackVesselPoint,0x2b4,f32,0.02,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,AttackCraftPoint,0x2b8,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player,DefencePoint,0x2bc,f32,0.001,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player,PitchDragFactor,0x108,f32,3,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T_Player,RollDragFactor,0x10c,f32,3,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T_Player,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T_Player,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T_Player,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,Slalom_CutoffRatio,0x00c,f32,1.4013e-45,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,Size_X,0x030,f32,10,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,Size_Y,0x034,f32,7,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,Size_Z,0x038,f32,29,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,Color_R,0x040,f32,0.1,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,Color_G,0x044,f32,0.5,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,Color_B,0x048,f32,1,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,Size_Radius,0x050,f32,10,defaulted-on-disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,HP,0x054,f32,1500,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,HQRatio,0x058,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ShieldRatio,0x05c,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ThrusterRatio,0x060,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,BridgeCount,0x070,i32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ResistanceToOptics,0x074,f32,1,defaulted-on-disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ResistanceToShell,0x078,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ResistanceToExplosion,0x07c,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ResistanceToPlayer,0x080,f32,0,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ResistanceParalyze,0x084,f32,0.1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ScorePoint,0x08c,f32,0,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,MassScore,0x094,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,MinimumVelocity,0x09c,f32,100,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,MaximumVelocity,0x0a0,f32,1200,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,CruisingVelocity,0x0a4,f32,350,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,Acceleration,0x0a8,f32,600,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,Deceleration,0x0ac,f32,500,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AV_PitchPlus_Max,0x0b0,rad,70,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AV_PitchPlus_Min,0x0b4,rad,150,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AA_PitchPlus_Max,0x0b8,rad,210,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AA_PitchPlus_Min,0x0bc,rad,375,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AV_PitchMinus_Max,0x0c0,rad,40,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AV_PitchMinus_Min,0x0c4,rad,75,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AA_PitchMinus_Max,0x0c8,rad,100,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AA_PitchMinus_Min,0x0cc,rad,180,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AV_Yaw_Max,0x0d0,rad,25,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AV_Yaw_Min,0x0d4,rad,45,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AA_Yaw_Max,0x0d8,rad,65,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AA_Yaw_Min,0x0dc,rad,120,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AV_Roll_Max,0x0e0,rad,125,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AV_Roll_Min,0x0e4,rad,200,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AA_Roll_Max,0x0e8,rad,475,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AA_Roll_Min,0x0ec,rad,750,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,SideThrustVelocity_Max,0x0f8,f32,500,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,SideThrustAcceleration,0x0fc,f32,1000,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,MaximumBank_Normal,0x100,rad,60,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,YawDragFactor,0x104,f32,3,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,TurnAttack_DoubleTimeMin,0x110,f32,0.5,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ArterBurner_Vc,0x114,f32,2,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ReverseThrust_Acc,0x120,f32,2,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AccPitchFactor,0x124,f32,30,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AV_AxisMode_Min,0x130,rad,35,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AA_AxisMode_Max,0x134,rad,20,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AB_ConsumeShield_Begin,0x144,f32,50,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AB_AA_PitchPlus,0x150,rad,15,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AB_AV_PitchMinus,0x154,rad,16,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,MaxValue,0x238,f32,500,defaulted-on-disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ChargeDelay,0x23c,f32,5,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ChargeDelay_Break,0x240,f32,10,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ChargeSpeed,0x244,f32,25,defaulted-on-disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,Delay,0x248,f32,3,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,DestroyMotionTime,0x270,f32,3,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,DryMass,0x274,f32,100,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,GrossMass,0x278,f32,250,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,LowerHPThresholdRatio,0x298,f32,0.3,disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,RadarRange,0x2a0,f32,10000,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,FCSRange,0x2a4,f32,10000,defaulted-on-disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AttackVesselPoint,0x2b4,f32,0.02,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,AttackCraftPoint,0x2b8,f32,1,defaulted-on-disc,tentative +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,DefencePoint,0x2bc,f32,0.001,disc,confirmed +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,PitchDragFactor,0x108,f32,3,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,RollDragFactor,0x10c,f32,3,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_f003_TCAF_ArrowHead,Slalom_CutoffRatio,0x00c,f32,1.4013e-45,disc,tentative +UN_f003_TCAF_ArrowHead,Size_X,0x030,f32,10,disc,confirmed +UN_f003_TCAF_ArrowHead,Size_Y,0x034,f32,5,disc,tentative +UN_f003_TCAF_ArrowHead,Size_Z,0x038,f32,20,disc,confirmed +UN_f003_TCAF_ArrowHead,Color_R,0x040,f32,0.1,disc,confirmed +UN_f003_TCAF_ArrowHead,Color_G,0x044,f32,0.5,disc,confirmed +UN_f003_TCAF_ArrowHead,Color_B,0x048,f32,1,disc,confirmed +UN_f003_TCAF_ArrowHead,Size_Radius,0x050,f32,10,defaulted-on-disc,confirmed +UN_f003_TCAF_ArrowHead,HP,0x054,f32,300,disc,confirmed +UN_f003_TCAF_ArrowHead,HQRatio,0x058,f32,1,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,ShieldRatio,0x05c,f32,1,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,ThrusterRatio,0x060,f32,1,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,BridgeCount,0x070,i32,0,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,ResistanceToOptics,0x074,f32,0.1,defaulted-on-disc,confirmed +UN_f003_TCAF_ArrowHead,ResistanceToShell,0x078,f32,0.1,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,ResistanceToExplosion,0x07c,f32,0.1,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,ResistanceToPlayer,0x080,f32,1,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,ResistanceParalyze,0x084,f32,0.97,disc,tentative +UN_f003_TCAF_ArrowHead,ScorePoint,0x08c,f32,0,disc,confirmed +UN_f003_TCAF_ArrowHead,MassScore,0x094,f32,0,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,MinimumVelocity,0x09c,f32,100,disc,tentative +UN_f003_TCAF_ArrowHead,MaximumVelocity,0x0a0,f32,1200,disc,confirmed +UN_f003_TCAF_ArrowHead,CruisingVelocity,0x0a4,f32,700,disc,confirmed +UN_f003_TCAF_ArrowHead,Acceleration,0x0a8,f32,600,disc,confirmed +UN_f003_TCAF_ArrowHead,Deceleration,0x0ac,f32,400,disc,confirmed +UN_f003_TCAF_ArrowHead,AV_PitchPlus_Max,0x0b0,rad,80,disc,confirmed +UN_f003_TCAF_ArrowHead,AV_PitchPlus_Min,0x0b4,rad,200,disc,tentative +UN_f003_TCAF_ArrowHead,AA_PitchPlus_Max,0x0b8,rad,30,disc,tentative +UN_f003_TCAF_ArrowHead,AA_PitchPlus_Min,0x0bc,rad,100,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,AV_PitchMinus_Max,0x0c0,rad,40,disc,tentative +UN_f003_TCAF_ArrowHead,AV_PitchMinus_Min,0x0c4,rad,120,disc,tentative +UN_f003_TCAF_ArrowHead,AA_PitchMinus_Max,0x0c8,rad,10,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,AA_PitchMinus_Min,0x0cc,rad,40,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,AV_Yaw_Max,0x0d0,rad,25,disc,tentative +UN_f003_TCAF_ArrowHead,AV_Yaw_Min,0x0d4,rad,60,disc,tentative +UN_f003_TCAF_ArrowHead,AA_Yaw_Max,0x0d8,rad,50,disc,tentative +UN_f003_TCAF_ArrowHead,AA_Yaw_Min,0x0dc,rad,240,disc,tentative +UN_f003_TCAF_ArrowHead,AV_Roll_Max,0x0e0,rad,120,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,AV_Roll_Min,0x0e4,rad,160,disc,tentative +UN_f003_TCAF_ArrowHead,AA_Roll_Max,0x0e8,rad,60,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,AA_Roll_Min,0x0ec,rad,150,disc,tentative +UN_f003_TCAF_ArrowHead,SideThrustVelocity_Max,0x0f8,f32,1000,disc,confirmed +UN_f003_TCAF_ArrowHead,SideThrustAcceleration,0x0fc,f32,1000,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,MaximumBank_Normal,0x100,rad,60,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,YawDragFactor,0x104,f32,3,disc,tentative +UN_f003_TCAF_ArrowHead,TurnAttack_DoubleTimeMin,0x110,f32,0.5,disc,tentative +UN_f003_TCAF_ArrowHead,ArterBurner_Vc,0x114,f32,2,disc,tentative +UN_f003_TCAF_ArrowHead,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_f003_TCAF_ArrowHead,ReverseThrust_Acc,0x120,f32,2,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,AccPitchFactor,0x124,f32,30,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,SideRoll_Length,0x174,f32,500,disc,tentative +UN_f003_TCAF_ArrowHead,BarrelRoll_Time,0x184,f32,1.2,disc,tentative +UN_f003_TCAF_ArrowHead,BarrelRoll_Radius,0x188,f32,250,disc,tentative +UN_f003_TCAF_ArrowHead,TurnAttack_CutoffRatio,0x190,f32,0.4,disc,tentative +UN_f003_TCAF_ArrowHead,TurnAttack_DoubleRatio,0x194,f32,0.3,disc,tentative +UN_f003_TCAF_ArrowHead,CutoffTimeMin,0x198,f32,0.6,disc,tentative +UN_f003_TCAF_ArrowHead,TurnAttack_DoubleTimeMax,0x1a4,f32,2.5,disc,tentative +UN_f003_TCAF_ArrowHead,Turn_AngularVelocity,0x1ac,rad,60,disc,tentative +UN_f003_TCAF_ArrowHead,HoldPosition_LengthMax,0x1cc,f32,400,disc,tentative +UN_f003_TCAF_ArrowHead,Through_Time2Max,0x210,f32,1.5,disc,tentative +UN_f003_TCAF_ArrowHead,SolidCutoff_LengthMax,0x22c,f32,2500,disc,tentative +UN_f003_TCAF_ArrowHead,MaxValue,0x238,f32,100,defaulted-on-disc,confirmed +UN_f003_TCAF_ArrowHead,ChargeDelay,0x23c,f32,3,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,ChargeDelay_Break,0x240,f32,10,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,ChargeSpeed,0x244,f32,25,defaulted-on-disc,confirmed +UN_f003_TCAF_ArrowHead,Delay,0x248,f32,3,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,DestroyMotionTime,0x270,f32,5,disc,confirmed +UN_f003_TCAF_ArrowHead,DryMass,0x274,f32,100,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,GrossMass,0x278,f32,200,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,LowerHPThresholdRatio,0x298,f32,0.3,defaulted-on-disc,tentative +UN_f003_TCAF_ArrowHead,RadarRange,0x2a0,f32,4500,disc,confirmed +UN_f003_TCAF_ArrowHead,FCSRange,0x2a4,f32,3500,disc,confirmed +UN_f003_TCAF_ArrowHead,AttackVesselPoint,0x2b4,f32,0.0015,disc,confirmed +UN_f003_TCAF_ArrowHead,AttackCraftPoint,0x2b8,f32,0.25,disc,tentative +UN_f003_TCAF_ArrowHead,DefencePoint,0x2bc,f32,0.0003,disc,confirmed +UN_f003_TCAF_ArrowHead,PitchDragFactor,0x108,f32,3,never-valued-on-disc,interpolated +UN_f003_TCAF_ArrowHead,RollDragFactor,0x10c,f32,3,never-valued-on-disc,interpolated +UN_f003_TCAF_ArrowHead,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_f003_TCAF_ArrowHead,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_f003_TCAF_ArrowHead,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_f101_TCAF_Acropolis,Slalom_CutoffRatio,0x00c,f32,2.8026e-45,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,Size_X,0x030,f32,400,disc,confirmed +UN_f101_TCAF_Acropolis,Size_Y,0x034,f32,400,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,Size_Z,0x038,f32,1400,disc,confirmed +UN_f101_TCAF_Acropolis,Color_R,0x040,f32,1,disc,confirmed +UN_f101_TCAF_Acropolis,Color_G,0x044,f32,1,defaulted-on-disc,confirmed +UN_f101_TCAF_Acropolis,Color_B,0x048,f32,1,defaulted-on-disc,confirmed +UN_f101_TCAF_Acropolis,Size_Radius,0x050,f32,800,disc,confirmed +UN_f101_TCAF_Acropolis,HP,0x054,f32,25000,disc,confirmed +UN_f101_TCAF_Acropolis,HQRatio,0x058,f32,1,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,ShieldRatio,0x05c,f32,1,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,ThrusterRatio,0x060,f32,1,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,BridgeCount,0x070,i32,1,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,ResistanceToOptics,0x074,f32,0.8,disc,confirmed +UN_f101_TCAF_Acropolis,ResistanceToShell,0x078,f32,0.1,disc,tentative +UN_f101_TCAF_Acropolis,ResistanceToExplosion,0x07c,f32,0.5,disc,tentative +UN_f101_TCAF_Acropolis,ResistanceToPlayer,0x080,f32,1,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,ResistanceParalyze,0x084,f32,0.97,disc,tentative +UN_f101_TCAF_Acropolis,ScorePoint,0x08c,f32,0,disc,confirmed +UN_f101_TCAF_Acropolis,MassScore,0x094,f32,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,MinimumVelocity,0x09c,f32,0,disc,tentative +UN_f101_TCAF_Acropolis,MaximumVelocity,0x0a0,f32,150,disc,confirmed +UN_f101_TCAF_Acropolis,CruisingVelocity,0x0a4,f32,50,disc,confirmed +UN_f101_TCAF_Acropolis,Acceleration,0x0a8,f32,100,disc,confirmed +UN_f101_TCAF_Acropolis,Deceleration,0x0ac,f32,250,disc,confirmed +UN_f101_TCAF_Acropolis,AV_PitchPlus_Max,0x0b0,rad,3.6,disc,confirmed +UN_f101_TCAF_Acropolis,AV_PitchPlus_Min,0x0b4,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AA_PitchPlus_Max,0x0b8,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AA_PitchPlus_Min,0x0bc,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AV_PitchMinus_Max,0x0c0,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AV_PitchMinus_Min,0x0c4,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AA_PitchMinus_Max,0x0c8,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AA_PitchMinus_Min,0x0cc,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AV_Yaw_Max,0x0d0,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AV_Yaw_Min,0x0d4,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AA_Yaw_Max,0x0d8,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AA_Yaw_Min,0x0dc,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AV_Roll_Max,0x0e0,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AV_Roll_Min,0x0e4,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AA_Roll_Max,0x0e8,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AA_Roll_Min,0x0ec,rad,3.6,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,SideThrustVelocity_Max,0x0f8,f32,20,disc,confirmed +UN_f101_TCAF_Acropolis,SideThrustAcceleration,0x0fc,f32,10,disc,tentative +UN_f101_TCAF_Acropolis,MaximumBank_Normal,0x100,rad,60,disc,tentative +UN_f101_TCAF_Acropolis,YawDragFactor,0x104,f32,2,disc,tentative +UN_f101_TCAF_Acropolis,TurnAttack_DoubleTimeMin,0x110,f32,0.5,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,ArterBurner_Vc,0x114,f32,2,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_f101_TCAF_Acropolis,ReverseThrust_Acc,0x120,f32,0.25,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AccPitchFactor,0x124,f32,30,disc,tentative +UN_f101_TCAF_Acropolis,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,MaxValue,0x238,f32,12500,disc,confirmed +UN_f101_TCAF_Acropolis,ChargeDelay,0x23c,f32,1,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,ChargeDelay_Break,0x240,f32,5,disc,tentative +UN_f101_TCAF_Acropolis,ChargeSpeed,0x244,f32,200,disc,confirmed +UN_f101_TCAF_Acropolis,Delay,0x248,f32,0,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,DestroyMotionTime,0x270,f32,200,disc,confirmed +UN_f101_TCAF_Acropolis,DryMass,0x274,f32,10000,disc,tentative +UN_f101_TCAF_Acropolis,GrossMass,0x278,f32,10000,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,LowerHPThresholdRatio,0x298,f32,0.3,disc,tentative +UN_f101_TCAF_Acropolis,RadarRange,0x2a0,f32,60000,disc,confirmed +UN_f101_TCAF_Acropolis,FCSRange,0x2a4,f32,45000,disc,confirmed +UN_f101_TCAF_Acropolis,AttackVesselPoint,0x2b4,f32,0.08,disc,confirmed +UN_f101_TCAF_Acropolis,AttackCraftPoint,0x2b8,f32,0.5,defaulted-on-disc,tentative +UN_f101_TCAF_Acropolis,DefencePoint,0x2bc,f32,0.25,disc,confirmed +UN_f101_TCAF_Acropolis,PitchDragFactor,0x108,f32,2,never-valued-on-disc,interpolated +UN_f101_TCAF_Acropolis,RollDragFactor,0x10c,f32,2,never-valued-on-disc,interpolated +UN_f101_TCAF_Acropolis,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_f101_TCAF_Acropolis,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_f101_TCAF_Acropolis,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_f105_TCAF_Cruiser,Slalom_CutoffRatio,0x00c,f32,2.8026e-45,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,Size_X,0x030,f32,700,disc,confirmed +UN_f105_TCAF_Cruiser,Size_Y,0x034,f32,700,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,Size_Z,0x038,f32,3800,disc,confirmed +UN_f105_TCAF_Cruiser,Color_R,0x040,f32,0.1,disc,confirmed +UN_f105_TCAF_Cruiser,Color_G,0x044,f32,1,disc,confirmed +UN_f105_TCAF_Cruiser,Color_B,0x048,f32,0.5,disc,confirmed +UN_f105_TCAF_Cruiser,Size_Radius,0x050,f32,2000,disc,confirmed +UN_f105_TCAF_Cruiser,HP,0x054,f32,30000,disc,confirmed +UN_f105_TCAF_Cruiser,HQRatio,0x058,f32,1,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,ShieldRatio,0x05c,f32,0,disc,tentative +UN_f105_TCAF_Cruiser,ThrusterRatio,0x060,f32,1,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,BridgeCount,0x070,i32,1,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,ResistanceToOptics,0x074,f32,0.8,disc,confirmed +UN_f105_TCAF_Cruiser,ResistanceToShell,0x078,f32,0.1,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,ResistanceToExplosion,0x07c,f32,0.5,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,ResistanceToPlayer,0x080,f32,1,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,ResistanceParalyze,0x084,f32,0.97,disc,tentative +UN_f105_TCAF_Cruiser,ScorePoint,0x08c,f32,0,disc,confirmed +UN_f105_TCAF_Cruiser,MassScore,0x094,f32,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,MinimumVelocity,0x09c,f32,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,MaximumVelocity,0x0a0,f32,150,disc,confirmed +UN_f105_TCAF_Cruiser,CruisingVelocity,0x0a4,f32,50,disc,confirmed +UN_f105_TCAF_Cruiser,Acceleration,0x0a8,f32,100,disc,confirmed +UN_f105_TCAF_Cruiser,Deceleration,0x0ac,f32,250,disc,confirmed +UN_f105_TCAF_Cruiser,AV_PitchPlus_Max,0x0b0,rad,3.6,disc,confirmed +UN_f105_TCAF_Cruiser,AV_PitchPlus_Min,0x0b4,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AA_PitchPlus_Max,0x0b8,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AA_PitchPlus_Min,0x0bc,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AV_PitchMinus_Max,0x0c0,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AV_PitchMinus_Min,0x0c4,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AA_PitchMinus_Max,0x0c8,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AA_PitchMinus_Min,0x0cc,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AV_Yaw_Max,0x0d0,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AV_Yaw_Min,0x0d4,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AA_Yaw_Max,0x0d8,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AA_Yaw_Min,0x0dc,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AV_Roll_Max,0x0e0,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AV_Roll_Min,0x0e4,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AA_Roll_Max,0x0e8,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AA_Roll_Min,0x0ec,rad,3.6,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,SideThrustVelocity_Max,0x0f8,f32,20,disc,confirmed +UN_f105_TCAF_Cruiser,SideThrustAcceleration,0x0fc,f32,10,disc,tentative +UN_f105_TCAF_Cruiser,MaximumBank_Normal,0x100,rad,60,disc,tentative +UN_f105_TCAF_Cruiser,YawDragFactor,0x104,f32,2,disc,tentative +UN_f105_TCAF_Cruiser,TurnAttack_DoubleTimeMin,0x110,f32,0.5,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,ArterBurner_Vc,0x114,f32,2,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_f105_TCAF_Cruiser,ReverseThrust_Acc,0x120,f32,0.25,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AccPitchFactor,0x124,f32,30,disc,tentative +UN_f105_TCAF_Cruiser,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,MaxValue,0x238,f32,15000,disc,confirmed +UN_f105_TCAF_Cruiser,ChargeDelay,0x23c,f32,1,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,ChargeDelay_Break,0x240,f32,5,disc,tentative +UN_f105_TCAF_Cruiser,ChargeSpeed,0x244,f32,240,disc,confirmed +UN_f105_TCAF_Cruiser,Delay,0x248,f32,3,disc,tentative +UN_f105_TCAF_Cruiser,DestroyMotionTime,0x270,f32,67,disc,confirmed +UN_f105_TCAF_Cruiser,DryMass,0x274,f32,10000,disc,tentative +UN_f105_TCAF_Cruiser,GrossMass,0x278,f32,10000,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,LowerHPThresholdRatio,0x298,f32,0.3,disc,tentative +UN_f105_TCAF_Cruiser,RadarRange,0x2a0,f32,60000,disc,confirmed +UN_f105_TCAF_Cruiser,FCSRange,0x2a4,f32,45000,disc,confirmed +UN_f105_TCAF_Cruiser,AttackVesselPoint,0x2b4,f32,0.25,disc,confirmed +UN_f105_TCAF_Cruiser,AttackCraftPoint,0x2b8,f32,0.1,defaulted-on-disc,tentative +UN_f105_TCAF_Cruiser,DefencePoint,0x2bc,f32,0.25,defaulted-on-disc,confirmed +UN_f105_TCAF_Cruiser,PitchDragFactor,0x108,f32,2,never-valued-on-disc,interpolated +UN_f105_TCAF_Cruiser,RollDragFactor,0x10c,f32,2,never-valued-on-disc,interpolated +UN_f105_TCAF_Cruiser,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_f105_TCAF_Cruiser,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_f105_TCAF_Cruiser,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_f106_TCAF_Destroyer,Slalom_CutoffRatio,0x00c,f32,2.8026e-45,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,Size_X,0x030,f32,200,disc,confirmed +UN_f106_TCAF_Destroyer,Size_Y,0x034,f32,200,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,Size_Z,0x038,f32,2000,disc,confirmed +UN_f106_TCAF_Destroyer,Color_R,0x040,f32,0.1,disc,confirmed +UN_f106_TCAF_Destroyer,Color_G,0x044,f32,0.5,disc,confirmed +UN_f106_TCAF_Destroyer,Color_B,0x048,f32,1,disc,confirmed +UN_f106_TCAF_Destroyer,Size_Radius,0x050,f32,1000,disc,confirmed +UN_f106_TCAF_Destroyer,HP,0x054,f32,10000,disc,confirmed +UN_f106_TCAF_Destroyer,HQRatio,0x058,f32,1,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,ShieldRatio,0x05c,f32,0,disc,tentative +UN_f106_TCAF_Destroyer,ThrusterRatio,0x060,f32,1,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,BridgeCount,0x070,i32,1,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,ResistanceToOptics,0x074,f32,0.8,disc,confirmed +UN_f106_TCAF_Destroyer,ResistanceToShell,0x078,f32,0.1,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,ResistanceToExplosion,0x07c,f32,0.5,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,ResistanceToPlayer,0x080,f32,1,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,ResistanceParalyze,0x084,f32,0.97,disc,tentative +UN_f106_TCAF_Destroyer,ScorePoint,0x08c,f32,0,disc,confirmed +UN_f106_TCAF_Destroyer,MassScore,0x094,f32,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,MinimumVelocity,0x09c,f32,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,MaximumVelocity,0x0a0,f32,150,disc,confirmed +UN_f106_TCAF_Destroyer,CruisingVelocity,0x0a4,f32,50,disc,confirmed +UN_f106_TCAF_Destroyer,Acceleration,0x0a8,f32,100,disc,confirmed +UN_f106_TCAF_Destroyer,Deceleration,0x0ac,f32,250,disc,confirmed +UN_f106_TCAF_Destroyer,AV_PitchPlus_Max,0x0b0,rad,3.6,disc,confirmed +UN_f106_TCAF_Destroyer,AV_PitchPlus_Min,0x0b4,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AA_PitchPlus_Max,0x0b8,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AA_PitchPlus_Min,0x0bc,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AV_PitchMinus_Max,0x0c0,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AV_PitchMinus_Min,0x0c4,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AA_PitchMinus_Max,0x0c8,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AA_PitchMinus_Min,0x0cc,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AV_Yaw_Max,0x0d0,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AV_Yaw_Min,0x0d4,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AA_Yaw_Max,0x0d8,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AA_Yaw_Min,0x0dc,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AV_Roll_Max,0x0e0,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AV_Roll_Min,0x0e4,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AA_Roll_Max,0x0e8,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AA_Roll_Min,0x0ec,rad,3.6,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,SideThrustVelocity_Max,0x0f8,f32,20,disc,confirmed +UN_f106_TCAF_Destroyer,SideThrustAcceleration,0x0fc,f32,10,disc,tentative +UN_f106_TCAF_Destroyer,MaximumBank_Normal,0x100,rad,60,disc,tentative +UN_f106_TCAF_Destroyer,YawDragFactor,0x104,f32,2,disc,tentative +UN_f106_TCAF_Destroyer,TurnAttack_DoubleTimeMin,0x110,f32,0.5,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,ArterBurner_Vc,0x114,f32,2,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_f106_TCAF_Destroyer,ReverseThrust_Acc,0x120,f32,0.25,disc,tentative +UN_f106_TCAF_Destroyer,AccPitchFactor,0x124,f32,30,disc,tentative +UN_f106_TCAF_Destroyer,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,MaxValue,0x238,f32,5000,disc,confirmed +UN_f106_TCAF_Destroyer,ChargeDelay,0x23c,f32,1,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,ChargeDelay_Break,0x240,f32,5,disc,tentative +UN_f106_TCAF_Destroyer,ChargeSpeed,0x244,f32,80,disc,confirmed +UN_f106_TCAF_Destroyer,Delay,0x248,f32,3,disc,tentative +UN_f106_TCAF_Destroyer,DestroyMotionTime,0x270,f32,67,disc,confirmed +UN_f106_TCAF_Destroyer,DryMass,0x274,f32,10000,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,GrossMass,0x278,f32,10000,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,LowerHPThresholdRatio,0x298,f32,0.3,disc,tentative +UN_f106_TCAF_Destroyer,RadarRange,0x2a0,f32,60000,disc,confirmed +UN_f106_TCAF_Destroyer,FCSRange,0x2a4,f32,45000,disc,confirmed +UN_f106_TCAF_Destroyer,AttackVesselPoint,0x2b4,f32,0.1,defaulted-on-disc,confirmed +UN_f106_TCAF_Destroyer,AttackCraftPoint,0x2b8,f32,0.1,defaulted-on-disc,tentative +UN_f106_TCAF_Destroyer,DefencePoint,0x2bc,f32,0.1,defaulted-on-disc,confirmed +UN_f106_TCAF_Destroyer,PitchDragFactor,0x108,f32,2,never-valued-on-disc,interpolated +UN_f106_TCAF_Destroyer,RollDragFactor,0x10c,f32,2,never-valued-on-disc,interpolated +UN_f106_TCAF_Destroyer,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_f106_TCAF_Destroyer,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_f106_TCAF_Destroyer,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_f201_TCAF_Tanker,Slalom_CutoffRatio,0x00c,f32,2.8026e-45,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,Size_X,0x030,f32,350,disc,confirmed +UN_f201_TCAF_Tanker,Size_Y,0x034,f32,70,disc,tentative +UN_f201_TCAF_Tanker,Size_Z,0x038,f32,200,disc,confirmed +UN_f201_TCAF_Tanker,Color_R,0x040,f32,0.7,disc,confirmed +UN_f201_TCAF_Tanker,Color_G,0x044,f32,0.7,defaulted-on-disc,confirmed +UN_f201_TCAF_Tanker,Color_B,0x048,f32,1,disc,confirmed +UN_f201_TCAF_Tanker,Size_Radius,0x050,f32,100,disc,confirmed +UN_f201_TCAF_Tanker,HP,0x054,f32,10000,disc,confirmed +UN_f201_TCAF_Tanker,HQRatio,0x058,f32,1,disc,tentative +UN_f201_TCAF_Tanker,ShieldRatio,0x05c,f32,1,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,ThrusterRatio,0x060,f32,1,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,BridgeCount,0x070,i32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,ResistanceToOptics,0x074,f32,1,defaulted-on-disc,confirmed +UN_f201_TCAF_Tanker,ResistanceToShell,0x078,f32,1,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,ResistanceToExplosion,0x07c,f32,1,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,ResistanceToPlayer,0x080,f32,0,disc,tentative +UN_f201_TCAF_Tanker,ResistanceParalyze,0x084,f32,1,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,ScorePoint,0x08c,f32,0,disc,confirmed +UN_f201_TCAF_Tanker,MassScore,0x094,f32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,MinimumVelocity,0x09c,f32,50,disc,tentative +UN_f201_TCAF_Tanker,MaximumVelocity,0x0a0,f32,300,disc,confirmed +UN_f201_TCAF_Tanker,CruisingVelocity,0x0a4,f32,200,defaulted-on-disc,confirmed +UN_f201_TCAF_Tanker,Acceleration,0x0a8,f32,20,disc,confirmed +UN_f201_TCAF_Tanker,Deceleration,0x0ac,f32,10,disc,confirmed +UN_f201_TCAF_Tanker,AV_PitchPlus_Max,0x0b0,rad,7.2,disc,confirmed +UN_f201_TCAF_Tanker,AV_PitchPlus_Min,0x0b4,rad,3.6,disc,tentative +UN_f201_TCAF_Tanker,AA_PitchPlus_Max,0x0b8,rad,3.6,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AA_PitchPlus_Min,0x0bc,rad,3.6,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AV_PitchMinus_Max,0x0c0,rad,7.2,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AV_PitchMinus_Min,0x0c4,rad,3.6,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AA_PitchMinus_Max,0x0c8,rad,3.6,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AA_PitchMinus_Min,0x0cc,rad,3.6,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AV_Yaw_Max,0x0d0,rad,7.2,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AV_Yaw_Min,0x0d4,rad,3.6,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AA_Yaw_Max,0x0d8,rad,3.6,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AA_Yaw_Min,0x0dc,rad,3.6,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AV_Roll_Max,0x0e0,rad,7.2,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AV_Roll_Min,0x0e4,rad,3.6,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AA_Roll_Max,0x0e8,rad,3.6,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AA_Roll_Min,0x0ec,rad,3.6,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,SideThrustVelocity_Max,0x0f8,f32,20,defaulted-on-disc,confirmed +UN_f201_TCAF_Tanker,SideThrustAcceleration,0x0fc,f32,10,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,MaximumBank_Normal,0x100,rad,60,disc,tentative +UN_f201_TCAF_Tanker,YawDragFactor,0x104,f32,2,disc,tentative +UN_f201_TCAF_Tanker,TurnAttack_DoubleTimeMin,0x110,f32,0.5,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,ArterBurner_Vc,0x114,f32,2,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_f201_TCAF_Tanker,ReverseThrust_Acc,0x120,f32,0.25,disc,tentative +UN_f201_TCAF_Tanker,AccPitchFactor,0x124,f32,30,disc,tentative +UN_f201_TCAF_Tanker,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,MaxValue,0x238,f32,1000,disc,confirmed +UN_f201_TCAF_Tanker,ChargeDelay,0x23c,f32,1,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,ChargeDelay_Break,0x240,f32,1,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,ChargeSpeed,0x244,f32,10,defaulted-on-disc,confirmed +UN_f201_TCAF_Tanker,Delay,0x248,f32,3,disc,tentative +UN_f201_TCAF_Tanker,DestroyMotionTime,0x270,f32,0,defaulted-on-disc,confirmed +UN_f201_TCAF_Tanker,DryMass,0x274,f32,10000,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,GrossMass,0x278,f32,10000,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,LowerHPThresholdRatio,0x298,f32,0.3,disc,tentative +UN_f201_TCAF_Tanker,RadarRange,0x2a0,f32,0,defaulted-on-disc,confirmed +UN_f201_TCAF_Tanker,FCSRange,0x2a4,f32,0,defaulted-on-disc,confirmed +UN_f201_TCAF_Tanker,AttackVesselPoint,0x2b4,f32,0,defaulted-on-disc,confirmed +UN_f201_TCAF_Tanker,AttackCraftPoint,0x2b8,f32,0,defaulted-on-disc,tentative +UN_f201_TCAF_Tanker,DefencePoint,0x2bc,f32,0.02,disc,confirmed +UN_f201_TCAF_Tanker,PitchDragFactor,0x108,f32,2,never-valued-on-disc,interpolated +UN_f201_TCAF_Tanker,RollDragFactor,0x10c,f32,2,never-valued-on-disc,interpolated +UN_f201_TCAF_Tanker,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_f201_TCAF_Tanker,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_f201_TCAF_Tanker,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated +UN_n001_TTRL_Box,Slalom_CutoffRatio,0x00c,f32,2.8026e-45,defaulted-on-disc,tentative +UN_n001_TTRL_Box,Size_X,0x030,f32,0.1,disc,confirmed +UN_n001_TTRL_Box,Size_Y,0x034,f32,0.1,defaulted-on-disc,tentative +UN_n001_TTRL_Box,Size_Z,0x038,f32,0.1,defaulted-on-disc,confirmed +UN_n001_TTRL_Box,Color_R,0x040,f32,0.3,disc,confirmed +UN_n001_TTRL_Box,Color_G,0x044,f32,0.9,disc,confirmed +UN_n001_TTRL_Box,Color_B,0x048,f32,0.6,disc,confirmed +UN_n001_TTRL_Box,Size_Radius,0x050,f32,0.1,defaulted-on-disc,confirmed +UN_n001_TTRL_Box,HP,0x054,f32,100,disc,confirmed +UN_n001_TTRL_Box,HQRatio,0x058,f32,0.2,disc,tentative +UN_n001_TTRL_Box,ShieldRatio,0x05c,f32,0.3,defaulted-on-disc,tentative +UN_n001_TTRL_Box,ThrusterRatio,0x060,f32,0.2,defaulted-on-disc,tentative +UN_n001_TTRL_Box,BridgeCount,0x070,i32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,ResistanceToOptics,0x074,f32,0.1,defaulted-on-disc,confirmed +UN_n001_TTRL_Box,ResistanceToShell,0x078,f32,0.1,defaulted-on-disc,tentative +UN_n001_TTRL_Box,ResistanceToExplosion,0x07c,f32,0.1,defaulted-on-disc,tentative +UN_n001_TTRL_Box,ResistanceToPlayer,0x080,f32,1,disc,tentative +UN_n001_TTRL_Box,ResistanceParalyze,0x084,f32,1,defaulted-on-disc,tentative +UN_n001_TTRL_Box,ScorePoint,0x08c,f32,100,disc,confirmed +UN_n001_TTRL_Box,MassScore,0x094,f32,1000,disc,tentative +UN_n001_TTRL_Box,MinimumVelocity,0x09c,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,MaximumVelocity,0x0a0,f32,0,defaulted-on-disc,confirmed +UN_n001_TTRL_Box,CruisingVelocity,0x0a4,f32,0,defaulted-on-disc,confirmed +UN_n001_TTRL_Box,Acceleration,0x0a8,f32,0,defaulted-on-disc,confirmed +UN_n001_TTRL_Box,Deceleration,0x0ac,f32,0,defaulted-on-disc,confirmed +UN_n001_TTRL_Box,AV_PitchPlus_Max,0x0b0,rad,0,defaulted-on-disc,confirmed +UN_n001_TTRL_Box,AV_PitchPlus_Min,0x0b4,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AA_PitchPlus_Max,0x0b8,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AA_PitchPlus_Min,0x0bc,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AV_PitchMinus_Max,0x0c0,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AV_PitchMinus_Min,0x0c4,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AA_PitchMinus_Max,0x0c8,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AA_PitchMinus_Min,0x0cc,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AV_Yaw_Max,0x0d0,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AV_Yaw_Min,0x0d4,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AA_Yaw_Max,0x0d8,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AA_Yaw_Min,0x0dc,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AV_Roll_Max,0x0e0,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AV_Roll_Min,0x0e4,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AA_Roll_Max,0x0e8,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AA_Roll_Min,0x0ec,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,SideThrustVelocity_Max,0x0f8,f32,0,defaulted-on-disc,confirmed +UN_n001_TTRL_Box,SideThrustAcceleration,0x0fc,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,MaximumBank_Normal,0x100,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,YawDragFactor,0x104,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,TurnAttack_DoubleTimeMin,0x110,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,ArterBurner_Vc,0x114,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,ReverseThrust_Vc,0x118,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,ReverseThrust_Acc,0x120,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AccPitchFactor,0x124,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,MaxValue,0x238,f32,1000,disc,confirmed +UN_n001_TTRL_Box,ChargeDelay,0x23c,f32,1,defaulted-on-disc,tentative +UN_n001_TTRL_Box,ChargeDelay_Break,0x240,f32,1,defaulted-on-disc,tentative +UN_n001_TTRL_Box,ChargeSpeed,0x244,f32,10,disc,confirmed +UN_n001_TTRL_Box,Delay,0x248,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,DestroyMotionTime,0x270,f32,2,disc,confirmed +UN_n001_TTRL_Box,DryMass,0x274,f32,10000,disc,tentative +UN_n001_TTRL_Box,GrossMass,0x278,f32,10000,defaulted-on-disc,tentative +UN_n001_TTRL_Box,LowerHPThresholdRatio,0x298,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,RadarRange,0x2a0,f32,0,disc,confirmed +UN_n001_TTRL_Box,FCSRange,0x2a4,f32,0,defaulted-on-disc,confirmed +UN_n001_TTRL_Box,AttackVesselPoint,0x2b4,f32,0,defaulted-on-disc,confirmed +UN_n001_TTRL_Box,AttackCraftPoint,0x2b8,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box,DefencePoint,0x2bc,f32,0,defaulted-on-disc,confirmed +UN_n001_TTRL_Box,PitchDragFactor,0x108,f32,0,never-valued-on-disc,interpolated +UN_n001_TTRL_Box,RollDragFactor,0x10c,f32,0,never-valued-on-disc,interpolated +UN_n001_TTRL_Box,DragFactorThreshold,0x110,f32,0,never-valued-on-disc,interpolated +UN_n001_TTRL_Box,ArterBurner_Acc,0x11c,f32,0,never-valued-on-disc,interpolated +UN_n001_TTRL_Box,DecPitchFactor,0x128,f32,0,never-valued-on-disc,interpolated +UN_n001_TTRL_Box_move,Slalom_CutoffRatio,0x00c,f32,1.4013e-45,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,Size_X,0x030,f32,0.1,disc,confirmed +UN_n001_TTRL_Box_move,Size_Y,0x034,f32,0.1,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,Size_Z,0x038,f32,0.1,defaulted-on-disc,confirmed +UN_n001_TTRL_Box_move,Color_R,0x040,f32,0.3,disc,confirmed +UN_n001_TTRL_Box_move,Color_G,0x044,f32,0.9,disc,confirmed +UN_n001_TTRL_Box_move,Color_B,0x048,f32,0.6,disc,confirmed +UN_n001_TTRL_Box_move,Size_Radius,0x050,f32,0.1,defaulted-on-disc,confirmed +UN_n001_TTRL_Box_move,HP,0x054,f32,100,disc,confirmed +UN_n001_TTRL_Box_move,HQRatio,0x058,f32,0.2,disc,tentative +UN_n001_TTRL_Box_move,ShieldRatio,0x05c,f32,0.3,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,ThrusterRatio,0x060,f32,1,disc,tentative +UN_n001_TTRL_Box_move,BridgeCount,0x070,i32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,ResistanceToOptics,0x074,f32,0.1,defaulted-on-disc,confirmed +UN_n001_TTRL_Box_move,ResistanceToShell,0x078,f32,0.1,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,ResistanceToExplosion,0x07c,f32,0.1,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,ResistanceToPlayer,0x080,f32,1,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,ResistanceParalyze,0x084,f32,1,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,ScorePoint,0x08c,f32,100,disc,confirmed +UN_n001_TTRL_Box_move,MassScore,0x094,f32,1000,disc,tentative +UN_n001_TTRL_Box_move,MinimumVelocity,0x09c,f32,100,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,MaximumVelocity,0x0a0,f32,800,disc,confirmed +UN_n001_TTRL_Box_move,CruisingVelocity,0x0a4,f32,350,disc,confirmed +UN_n001_TTRL_Box_move,Acceleration,0x0a8,f32,500,disc,confirmed +UN_n001_TTRL_Box_move,Deceleration,0x0ac,f32,150,disc,confirmed +UN_n001_TTRL_Box_move,AV_PitchPlus_Max,0x0b0,rad,10,disc,confirmed +UN_n001_TTRL_Box_move,AV_PitchPlus_Min,0x0b4,rad,10,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AA_PitchPlus_Max,0x0b8,rad,10,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AA_PitchPlus_Min,0x0bc,rad,10,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AV_PitchMinus_Max,0x0c0,rad,5,disc,tentative +UN_n001_TTRL_Box_move,AV_PitchMinus_Min,0x0c4,rad,5,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AA_PitchMinus_Max,0x0c8,rad,5,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AA_PitchMinus_Min,0x0cc,rad,5,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AV_Yaw_Max,0x0d0,rad,10,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AV_Yaw_Min,0x0d4,rad,17,disc,tentative +UN_n001_TTRL_Box_move,AA_Yaw_Max,0x0d8,rad,10,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AA_Yaw_Min,0x0dc,rad,17,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AV_Roll_Max,0x0e0,rad,5,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AV_Roll_Min,0x0e4,rad,5,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AA_Roll_Max,0x0e8,rad,5,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AA_Roll_Min,0x0ec,rad,5,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,SideThrustVelocity_Max,0x0f8,f32,100,defaulted-on-disc,confirmed +UN_n001_TTRL_Box_move,SideThrustAcceleration,0x0fc,f32,100,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,MaximumBank_Normal,0x100,rad,20,disc,tentative +UN_n001_TTRL_Box_move,YawDragFactor,0x104,f32,3,disc,tentative +UN_n001_TTRL_Box_move,TurnAttack_DoubleTimeMin,0x110,f32,0.5,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,ArterBurner_Vc,0x114,f32,2,disc,tentative +UN_n001_TTRL_Box_move,ReverseThrust_Vc,0x118,f32,-0.5,disc,tentative +UN_n001_TTRL_Box_move,ReverseThrust_Acc,0x120,f32,2,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AccPitchFactor,0x124,f32,30,disc,tentative +UN_n001_TTRL_Box_move,AV_AxisMode_Min,0x130,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AA_AxisMode_Max,0x134,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AB_ConsumeShield_Begin,0x144,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AB_AA_PitchPlus,0x150,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,AB_AV_PitchMinus,0x154,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,SideRoll_Length,0x174,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,BarrelRoll_Time,0x184,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,BarrelRoll_Radius,0x188,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,TurnAttack_CutoffRatio,0x190,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,TurnAttack_DoubleRatio,0x194,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,CutoffTimeMin,0x198,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,TurnAttack_DoubleTimeMax,0x1a4,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,Turn_AngularVelocity,0x1ac,rad,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,HoldPosition_LengthMax,0x1cc,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,Through_Time2Max,0x210,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,SolidCutoff_LengthMax,0x22c,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,MaxValue,0x238,f32,100,defaulted-on-disc,confirmed +UN_n001_TTRL_Box_move,ChargeDelay,0x23c,f32,3,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,ChargeDelay_Break,0x240,f32,10,disc,tentative +UN_n001_TTRL_Box_move,ChargeSpeed,0x244,f32,25,disc,confirmed +UN_n001_TTRL_Box_move,Delay,0x248,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,DestroyMotionTime,0x270,f32,2,disc,confirmed +UN_n001_TTRL_Box_move,DryMass,0x274,f32,10000,disc,tentative +UN_n001_TTRL_Box_move,GrossMass,0x278,f32,10000,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,LowerHPThresholdRatio,0x298,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,RadarRange,0x2a0,f32,0,disc,confirmed +UN_n001_TTRL_Box_move,FCSRange,0x2a4,f32,0,defaulted-on-disc,confirmed +UN_n001_TTRL_Box_move,AttackVesselPoint,0x2b4,f32,0,defaulted-on-disc,confirmed +UN_n001_TTRL_Box_move,AttackCraftPoint,0x2b8,f32,0,defaulted-on-disc,tentative +UN_n001_TTRL_Box_move,DefencePoint,0x2bc,f32,0,defaulted-on-disc,confirmed +UN_n001_TTRL_Box_move,PitchDragFactor,0x108,f32,3,never-valued-on-disc,interpolated +UN_n001_TTRL_Box_move,RollDragFactor,0x10c,f32,3,never-valued-on-disc,interpolated +UN_n001_TTRL_Box_move,DragFactorThreshold,0x110,f32,0.5,never-valued-on-disc,interpolated +UN_n001_TTRL_Box_move,ArterBurner_Acc,0x11c,f32,2,never-valued-on-disc,interpolated +UN_n001_TTRL_Box_move,DecPitchFactor,0x128,f32,30,never-valued-on-disc,interpolated diff --git a/docs/re/structures/unit-struct-runtime.md b/docs/re/structures/unit-struct-runtime.md new file mode 100644 index 0000000..cca9e3f --- /dev/null +++ b/docs/re/structures/unit-struct-runtime.md @@ -0,0 +1,222 @@ +# Runtime `Unit` struct (craft / vessel definitions) β€” read from live guest memory + +**Confidence: βœ… CONFIRMED** for the 22 fields marked βœ… below (each binding is +reproduced by 10–18 independent disc records, on β‰₯3 distinct values, with +**zero** contradictions), plus the Maneuver block's declaration-order layout +(29 anchors, two bases, no conflicts). 🟑 PROBABLE for the fields interpolated +between confirmed anchors. 🟑/❔ for the thin single-value bindings, which are +listed but must not be trusted yet. + +Captured 2026-07-29 from Xenia Canary running the retail disc in the sylph-re +container: the **BASIC CONTROLS tutorial** (4 units) and **Stage 02 "Declaration +of War"** loaded from save slot 01 (14 units). 18 of the disc's 110 units. + +## Why this exists + +Craft stats were the one Route-B target the previous two passes could not +reach. The Hangar exposes only `Gross Weight` (a class, not a number), and +[the menu route](../weapon-datasheet-runtime.md) has no surface at all for the +flight model. From the memory side, menus were equally useless: **only the +player craft's name string is resident there β€” the definition objects do not +exist until a mission loads.** + +They do exist in-mission. This documents their layout and the values the disc +leaves defaulted. + +## Finding the class (discovered, not assumed) + +[`tools/re-capture/unit_discover.py`](../../../tools/re-capture/unit_discover.py) +takes no vtable as input. It locates every disc unit-ID string in a memory +snapshot, finds every aligned word pointing at `string_va - d` for a range of +`d`, and tallies the word at `pointer_site - k` across **distinct** unit IDs. +One `(d, k, word)` combination wins by a wide margin: + +| Ξ΄ (name-record β†’ string) | ID pointer at | word | distinct units | +|---|---|---|---| +| `0x10` | object `+0x04` | `0x820af030` | 4 | +| `0x10` | object `+0x04` | `0x820af844` | 4 | + +β€” i.e. exactly the `Weapon` shape: the object holds a name-record pointer at +`+0x04`, and the ID string sits at `name_record + 0x10`. + +The two vtables are **two different things**, and telling them apart matters: + +| vtable | what it is | evidence | +|---|---|---| +| `0x820af030` | **spawned entity instance** β€” live state | 12 objects for 4 IDs; the same ID appears many times (one per box in the scene); irregular spacing | +| `0x820af844` | **parsed definition** β€” the `.tbl` | exactly one object per distinct unit ID; minimum spacing `0x380` | + +Only `0x820af844` is used. It is the runtime image of the `.tbl`, and its +objects are **byte-identical across two snapshots taken ~12 minutes apart with +combat in between** (14/14 objects, 0 differing bytes) β€” definition data, not +state. + +One `.tbl` β†’ **one** object. A unit table is several sub-records (`Generic`, +`Maneuver`, `Shield`, `Explosion`, `Mass`, `Effect`, `SE`, `Turret_00N`), and +they are all flattened into that single β‰₯`0x380`-byte object β€” unlike weapons, +where `Weapon` and `Shell` are separate arrays. + +## Solving the layout + +Same discipline as +[`weapon_runtime.py`](../../../tools/re-capture/weapon_runtime.py): score every +`(field, byte-offset, encoding)` triple against the disc records and accept a +binding only on **zero contradictions**, requiring β‰₯3 distinct values so a +field whose samples are all one number cannot match any offset holding that +constant. + +```bash +python3 tools/re-capture/unit_runtime.py unit_tokens.txt snap_a.bin snap_b.bin --csv +``` + +Snapshots are **unioned** β€” each mission instantiates only the units in its own +stage, so coverage grows by visiting stages. `cp --sparse=always` a copy of +`/dev/shm/xenia_memory_*` first (~2 s); the running emulator pegs every core +under lavapipe and makes repeated live reads flaky. + +### Encoding note β€” angles are radians at runtime + +Every `AV_*` / `AA_*` / `*Bank*` / `Turn_AngularVelocity` field is stored as +**float32 radians**, while the disc writes **degrees**. The solver needed a +`rad` encoding (`degrees(f32)`) to bind them at all; 15 units agree on +`AV_PitchPlus_Max` alone. A reimplementation reading the `.tbl` must convert. + +## Confirmed layout + +βœ… = β‰₯10 disc records agree on β‰₯3 distinct values, zero contradict. + +| offset | enc | field | agree | distinct | +|---|---|---|---:|---:| +| `+0x030` | f32 | `Size_X` | 18 | 13 | +| `+0x038` | f32 | `Size_Z` | 16 | 13 | +| `+0x040` | f32 | `Color_R` | 18 | 5 | +| `+0x044` | f32 | `Color_G` | 16 | 6 | +| `+0x048` | f32 | `Color_B` | 14 | 5 | +| `+0x050` | f32 | `Size_Radius` | 11 | 10 | +| `+0x054` | f32 | `HP` | 17 | 10 | +| `+0x074` | f32 | `ResistanceToOptics` | 10 | 3 | +| `+0x08c` | f32 | `ScorePoint` | 18 | 9 | +| `+0x0a0` | f32 | `MaximumVelocity` | 16 | 8 | +| `+0x0a4` | f32 | `CruisingVelocity` | 14 | 7 | +| `+0x0a8` | f32 | `Acceleration` | 15 | 5 | +| `+0x0ac` | f32 | `Deceleration` | 14 | 5 | +| `+0x0b0` | rad | `AV_PitchPlus_Max` | 15 | 7 | +| `+0x0f8` | f32 | `SideThrustVelocity_Max` | 12 | 3 | +| `+0x238` | f32 | `MaxValue` (Shield) | 12 | 6 | +| `+0x244` | f32 | `ChargeSpeed` (Shield) | 11 | 6 | +| `+0x270` | f32 | `DestroyMotionTime` | 16 | 7 | +| `+0x2a0` | f32 | `RadarRange` | 15 | 8 | +| `+0x2a4` | f32 | `FCSRange` | 10 | 6 | +| `+0x2b4` | f32 | `AttackVesselPoint` | 11 | 8 | +| `+0x2bc` | f32 | `DefencePoint` | 10 | 7 | + +`Size_Y +0x034`, `MassScore +0x094`, `HQRatio +0x058`, `ShieldRatio +0x05c`, +`ThrusterRatio +0x060`, `ResistanceToShell +0x078`, +`ResistanceToExplosion +0x07c`, `ResistanceToPlayer +0x080`, +`ResistanceParalyze +0x084`, `BridgeCount +0x070` (i32), +`MinimumVelocity +0x09c`, `DryMass +0x274`, `GrossMass +0x278`, +`LowerHPThresholdRatio +0x298`, `AttackCraftPoint +0x2b8` bind with zero +contradictions on fewer records or fewer distinct values β€” 🟑 PROBABLE. The +full solver output is in +[`captures/unit-runtime-fields.csv`](../captures/unit-runtime-fields.csv) +(1 440 values, `conf` column). + +## The Maneuver block is laid out in schema declaration order + +This is the strongest structural result and it is independent of any single +field's agreement count. + +[`schema_order.py`](../../../tools/re-capture/schema_order.py) merges the +`Maneuver` field-name order from **all 113 unit tables** by topological sort +over their pairwise "k[i] precedes k[i+1]" constraints. The merge is acyclic and +**every one of the 113 tables is a subsequence of the merged 102-field order** β€” +so that order is the schema's. + +Against it, the solved offsets fall into two exact runs: + +| declaration indices | offset rule | anchors that fit | +|---|---|---| +| 0 … 20 (`MinimumVelocity` … `AA_Roll_Min`) | `0x09c + 4Β·i` | 21 / 21 | +| 21 … 32 (`SideThrustVelocity_Max` … `AccPitchFactor`) | `0x0a4 + 4Β·i` | 8 / 8 | + +One 4-byte slot per field, with a **two-slot gap after `AA_Roll_Min`** +(`0x0f0`–`0x0f4`, purpose unknown). 29 independently-derived anchors, zero +conflicts, across a 0x9c–0x125 span. + +### Fields NO disc record ever values β€” 🟑 PROBABLE + +Five `Maneuver` fields are declared by the schema but left at their default by +*every* one of the 110 unit tables, so no amount of disc analysis can ever +reach them. The declaration-order rule pins them between confirmed anchors +(`YawDragFactor +0x104` … `ArterBurner_Vc +0x114`, and +`ReverseThrust_Vc +0x118` … `ReverseThrust_Acc +0x120`): + +| offset | field | craft (`f00*`, `e0*`) | capital ships (`*1**`, `e2*`) | inert (`SchlosBase`, `Box`) | +|---|---|---:|---:|---:| +| `+0x108` | `PitchDragFactor` | 3 | 2 | 0 | +| `+0x10c` | `RollDragFactor` | 3 | 2 | 0 | +| `+0x110` | `DragFactorThreshold` | 0.5 | 0.5 | 0 | +| `+0x11c` | `ArterBurner_Acc` | 2 | 2 | 0 | +| `+0x128` | `DecPitchFactor` | 30 | 30 | 0 | + +Corroboration beyond the interpolation, checked over all 18 units: + +* `PitchDragFactor == RollDragFactor == YawDragFactor` holds **18/18** β€” and + `YawDragFactor` is *disc-supplied* (3.0 for craft, 2.0 for warships), so two + interpolated offsets reproduce a known number, per unit, every time. +* `DecPitchFactor == AccPitchFactor` holds **17/18**. The exception is + `UN_e015_ADAN_Puppy` (`AccPitchFactor` 1, `DecPitchFactor` 0.5) β€” which + defaults *both* on disc, so it is two independent fields that happen to be + set equal elsewhere, not a broken binding. + +`UN_e015_ADAN_Puppy` also breaks the craft/warship bucketing above for +`DecPitchFactor` (0.5, not 30); the per-unit values are in the CSV. + +The tail of the `Maneuver` block (the AI-behaviour fields β€” `SideRoll_*`, +`BarrelRoll_*`, `TurnAttack_*`, `HoldPosition_*`, `Slalom_*`, `Through_*`, +`SolidCutoff_*`, and the `AxisMode` / `AB_*` sub-block) is **NOT resolved**. +Those fields are declared by only a handful of tables and almost always with a +single distinct value, so the solver's bindings there are coincidences: it +placed `Slalom_CutoffRatio` at `+0x00c` and `TurnAttack_DoubleTimeMin` at +`+0x110`, both of which the declaration-order rule contradicts. They are marked +`tentative` in the CSV. **NEEDS-HUMAN / needs more coverage** β€” more stages +would give those fields distinct values and settle it. + +## The player craft, `UN_f001_TCAF_DeltaSaber_T_Player` + +30 of its fields are defaulted on disc. Notable recovered values: + +| field | value | note | +|---|---|---| +| `Size_Radius` | 10 | βœ… | +| `FCSRange` | 500000 | βœ… β€” same as `RadarRange` | +| `ChargeSpeed` (shield) | 25 | βœ… | +| `ResistanceToOptics` | 1 | βœ… | +| `HQRatio` / `ShieldRatio` / `ThrusterRatio` | 1 / 1 / 1 | 🟑 | +| `ResistanceToShell` / `ResistanceToExplosion` | 1 / 1 | 🟑 | +| `DryMass` | 100 | 🟑 (`GrossMass` 250 is on disc) | +| `LowerHPThresholdRatio` | 0.3 | 🟑 | +| `ChargeDelay_Break` | 10 | 🟑 | +| `MassScore` | 0 | 🟑 | + +Every AI-behaviour field the solver bound reads **0** for the player craft, +which is the expected shape (the player is not AI-driven) β€” but see the caveat +above: those offsets are not settled, so treat the zeros as consistent, not +proven. + +The `…Ratio` family that the Route-B target list parked is **1.0 for almost +every unit**, with real exceptions that only the runtime shows: +`UN_e105_ADAN_Cruiser` `HQRatio` = 0.2, `UN_bf001_TCAF_SchlosBase` and +`UN_e106_ADAN_Destroyer` `ThrusterRatio` = 0.2, +`UN_n001_TTRL_Box` `ShieldRatio` = 0.3. + +## Coverage and how to extend it + +18 of 110 units. Unlike weapons β€” where one snapshot held all 126 β€” **unit +definitions are instantiated per stage**, so coverage is bounded by the stages +reachable from the save (slot 01 is at 5 %, Stage 02). Each further mission or +tutorial adds its own units; `unit_runtime.py` unions any number of snapshots +and re-solves, and more units directly promote the 🟑 bindings to βœ… by adding +distinct values. + +Stages captured so far: `Ttrl` (BASIC CONTROLS), Stage 02. diff --git a/tools/re-capture/README.md b/tools/re-capture/README.md index b7882e6..c139c64 100644 --- a/tools/re-capture/README.md +++ b/tools/re-capture/README.md @@ -18,3 +18,17 @@ Canary + lavapipe, headless. They assume the container helpers `screenshot`, auto-repeat (two rows per press). Findings produced with these: [`docs/re/weapon-datasheet-runtime.md`](../../docs/re/weapon-datasheet-runtime.md). + +## Guest-memory tools (no screenshots) + +| Script | What it does | +|---|---| +| `gmem.py` | Read the live guest address space out of `/dev/shm/xenia_memory_*` (Xenia's backing file), addressed by guest VA. `find` / `read` / `words`. | +| `weapon_runtime.py` | Solve the `Weapon`/`Shell` struct layouts against the disc records and read the fields the disc defaults. | +| `unit_discover.py` | Find *which* runtime class carries a set of ID strings, assuming no vtable: tallies the word at `pointer_site - k` across distinct IDs. | +| `unit_runtime.py` | Same solver for the `unit\UN_*.tbl` definition objects (vtable `0x820af844`). Unions several snapshots β€” unit definitions are per-stage. | +| `schema_order.py` | Merge a sub-record's field-declaration order across all tables (topological sort); the layout check that pins fields no table ever values. | +| `order_check.py` | Test `offset = base + 4*index` for one table's sub-record against solver output. | + +Snapshot first β€” `cp --sparse=always /dev/shm/xenia_memory_* snap.bin` (~2 s) β€” and +point `$GMEM_FILE` at the copy; the running emulator pegs every core under lavapipe. diff --git a/tools/re-capture/order_check.py b/tools/re-capture/order_check.py new file mode 100644 index 0000000..95b67cf --- /dev/null +++ b/tools/re-capture/order_check.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python3 +"""Test the hypothesis that a unit sub-record's runtime fields are laid out in +*schema declaration order*, one 4-byte slot each. + +The IDXD string pool lists a sub-record's field names in declaration order, +including the ones this .tbl leaves at their default (they appear as a bare key +with no preceding value). If the runtime struct is `base + 4*index` over that +list, then the offsets the solver found independently must all satisfy it. + +That is a much stronger check than any single field's agreement count: one base +offset has to explain dozens of independently-derived anchors at once. + +Usage: order_check.py +""" +import re +import sys + +NUMERIC = re.compile(r"^[-+]?[0-9]*\.?[0-9]+[fF]?$|^0x[0-9a-fA-F]+$") +VALUE_WORDS = {"Yes", "No", "YES", "NO", "On", "Off", "ON", "OFF"} + + +def section(dump, tbl, sub, subs): + """Ordered token list of one sub-record of one .tbl.""" + toks, on = [], False + for line in open(dump): + if line.startswith("RAW "): + on = line.split()[1] == tbl + continue + if on and line.startswith("T "): + toks.append(line[2:].rstrip("\n")) + starts = [i for i, t in enumerate(toks) if t in subs or t.lstrip("(") in subs] + for n, i in enumerate(starts): + name = toks[i].lstrip("(") + if name != sub: + continue + end = starts[n + 1] if n + 1 < len(starts) else len(toks) + return toks[i + 1 : end] + return [] + + +def keys_in_order(toks): + """Field names, in declaration order: every token that is not a value. + + In the numeric sub-records every value is a number literal, so a token that + is not numeric and not a Yes/No word is a key. + """ + out = [] + for t in toks: + if NUMERIC.match(t) or t in VALUE_WORDS: + continue + if t not in out: + out.append(t) + return out + + +def solved_offsets(path): + out = {} + for line in open(path): + m = re.match(r"\s*(0x[0-9a-f]+)\s+(\w+)\s+(\w+)\s+(\d+)\s+(\d+)\s+(\d+)\s*$", line) + if m: + off, enc, field, agree, dist, bad = m.groups() + out[field] = (int(off, 16), enc, int(agree), int(dist), int(bad)) + return out + + +def main(): + dump, tbl, sub, solvedf = sys.argv[1:5] + subs = {"Generic", "Maneuver", "Shield", "Explosion", "Mass", "Effect", "SE"} + keys = keys_in_order(section(dump, tbl, sub, subs)) + solved = solved_offsets(solvedf) + anchors = [(i, k, solved[k]) for i, k in enumerate(keys) if k in solved] + if not anchors: + sys.exit(f"no solved field lands in {sub}") + + # base that the most anchors agree on + votes = {} + for i, k, (off, *_) in anchors: + votes.setdefault(off - 4 * i, []).append(k) + base, winners = max(votes.items(), key=lambda kv: len(kv[1])) + print(f"# {sub}: {len(keys)} declared fields, {len(anchors)} solved anchors") + print(f"# best base = {base:#x} -> {len(winners)}/{len(anchors)} anchors fit " + f"offset = base + 4*index\n") + for i, k in enumerate(keys): + off = base + 4 * i + if k in solved: + so, enc, agree, dist, bad = solved[k] + mark = "fits" if so == off else f"CONFLICT solver={so:#x}" + print(f" +{off:#05x} [{i:3d}] {k:<34} {enc} agree={agree:<3} " + f"dist={dist:<3} {mark}") + else: + print(f" +{off:#05x} [{i:3d}] {k:<34} β€” (never valued on disc)") + + +if __name__ == "__main__": + main() diff --git a/tools/re-capture/schema_order.py b/tools/re-capture/schema_order.py new file mode 100644 index 0000000..64151f1 --- /dev/null +++ b/tools/re-capture/schema_order.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +"""Recover a sub-record's FULL schema field order by merging every unit .tbl. + +Each .tbl's string pool lists only the fields that .tbl declares, in schema +order. Merging them is a topological sort over the pairwise "k[i] precedes +k[i+1]" constraints of all 110 tables: any single table is a subsequence of the +schema, so the union order is the schema order β€” provided the constraints are +acyclic, which is itself the check that the premise holds. + +Usage: schema_order.py [solved.txt] +""" +import sys +from collections import defaultdict + +sys.path.insert(0, ".") +from order_check import section, keys_in_order, solved_offsets # noqa: E402 + +SUBS = {"Generic", "Maneuver", "Shield", "Explosion", "Mass", "Effect", "SE"} + + +def merged_order(dump, sub): + tbls = [l.split()[1] for l in open(dump) if l.startswith("RAW ")] + succ, indeg, nodes = defaultdict(set), defaultdict(int), [] + seqs = [] + for t in tbls: + ks = keys_in_order(section(dump, t, sub, SUBS)) + if ks: + seqs.append(ks) + for k in ks: + if k not in nodes: + nodes.append(k) + for a, b in zip(ks, ks[1:]): + if b not in succ[a]: + succ[a].add(b) + indeg[b] += 1 + # Kahn, breaking ties by first-seen order so the result is deterministic + ready = [n for n in nodes if indeg[n] == 0] + out, cycles = [], False + while ready: + ready.sort(key=nodes.index) + n = ready.pop(0) + out.append(n) + for m in sorted(succ[n], key=nodes.index): + indeg[m] -= 1 + if indeg[m] == 0: + ready.append(m) + if len(out) != len(nodes): + cycles = True + out += [n for n in nodes if n not in out] + return out, seqs, cycles + + +def main(): + dump, sub = sys.argv[1], sys.argv[2] + order, seqs, cycles = merged_order(dump, sub) + print(f"# {sub}: {len(order)} fields merged from {len(seqs)} tables" + f"{' !! CYCLE β€” order is not consistent' if cycles else ''}") + # every table must be a subsequence of the merged order β€” the real check + pos = {k: i for i, k in enumerate(order)} + bad = [s for s in seqs if [pos[k] for k in s] != sorted(pos[k] for k in s)] + print(f"# tables that are NOT a subsequence of the merged order: {len(bad)}") + + if len(sys.argv) > 3: + solved = solved_offsets(sys.argv[3]) + anchors = [(i, k, solved[k]) for i, k in enumerate(order) if k in solved] + votes = defaultdict(list) + for i, k, (off, *_) in anchors: + votes[off - 4 * i].append((i, k)) + print(f"# {len(anchors)} solved anchors; base votes:") + for b, ks in sorted(votes.items(), key=lambda kv: -len(kv[1])): + idx = sorted(i for i, _ in ks) + print(f"# base {b:#07x}: {len(ks):3d} anchors, indices {idx[0]}..{idx[-1]}") + for i, k in enumerate(order): + s = solved.get(k) + note = f"solver={s[0]:#x} {s[1]} agree={s[2]} dist={s[3]}" if s else "" + print(f" [{i:3d}] {k:<34} {note}") + + +if __name__ == "__main__": + main() diff --git a/tools/re-capture/unit_discover.py b/tools/re-capture/unit_discover.py new file mode 100644 index 0000000..fd1f240 --- /dev/null +++ b/tools/re-capture/unit_discover.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 +"""Discover the runtime class that carries the parsed `UN_*` unit definitions. + +No vtable VA is assumed. Procedure: + 1. locate every disc unit-ID string in the snapshot; + 2. find every 4-byte-aligned word in RAM that points at (string_va - d) for a + few plausible name-record deltas; + 3. for each such pointer site P and each small back-offset k, read the word at + P-k and tally it across *distinct* unit IDs. +A word that appears at the same (d, k) for many different units is that class's +vtable pointer, and k is the ID-pointer offset inside the object. +""" +import os +import re +import struct +import sys +from collections import defaultdict + +sys.path.insert(0, "/home/fabi/RE - Project Sylpheed/sylpheed-reborn/tools/re-capture") +import gmem # noqa: E402 + +DELTAS = [0x00, 0x10, 0x08, 0x04, 0x0C, 0x14, 0x18, 0x20] +BACK = list(range(0, 0x60, 4)) + + +def load_ids(path): + ids = [] + for line in open(path): + if line.startswith("REC "): + p = line.split() + if p[3] == "Generic" and p[4].startswith("UN_"): + ids.append(p[4]) + return sorted(set(ids)) + + +def scan_strings(f, size, ids): + """{id: [va,...]} β€” every NUL-terminated occurrence of each id string.""" + pats = {i: (i.encode() + b"\0") for i in ids} + rx = re.compile(b"|".join(re.escape(p) for p in pats.values())) + out = defaultdict(list) + for a, b in gmem.extents(f.fileno(), size): + f.seek(a) + blob = f.read(b - a) + for m in rx.finditer(blob): + off = a + m.start() + va = gmem.primary_va(off) + if va is not None: + out[m.group(0)[:-1].decode()].append(va) + return out + + +def scan_pointers(f, size, targets): + """{target_va: [site_va,...]} for every aligned word equal to a target.""" + want = {struct.pack(">I", t): t for t in targets} + rx = re.compile(b"|".join(re.escape(k) for k in want)) + out = defaultdict(list) + for a, b in gmem.extents(f.fileno(), size): + f.seek(a) + blob = f.read(b - a) + for m in rx.finditer(blob): + off = a + m.start() + if off % 4: + continue + va = gmem.primary_va(off) + if va is not None: + out[want[m.group(0)]].append(va) + return out + + +def main(): + ids = load_ids(sys.argv[1]) + path = gmem.mem_path() + size = os.path.getsize(path) + with open(path, "rb") as f: + strs = scan_strings(f, size, ids) + print(f"# {len(ids)} disc unit IDs, {len(strs)} found in RAM " + f"({sum(len(v) for v in strs.values())} occurrences)", file=sys.stderr) + + # every (id, string_va - delta) we want pointers to + targets, owner = set(), defaultdict(set) + for uid, vas in strs.items(): + for va in vas: + for d in DELTAS: + t = va - d + targets.add(t) + owner[t].add((uid, d)) + ptrs = scan_pointers(f, size, targets) + print(f"# {len(ptrs)} of {len(targets)} candidate targets are pointed at", + file=sys.stderr) + + # tally (delta, back-offset, word) over distinct unit IDs + tally = defaultdict(set) + sites = defaultdict(list) + for tgt, plist in ptrs.items(): + for uid, d in owner[tgt]: + for p in plist: + for k in BACK: + base = p - k + try: + f.seek(gmem.va_to_off(base)) + except ValueError: + continue + w = f.read(4) + if len(w) < 4: + continue + (vt,) = struct.unpack(">I", w) + if 0x82000000 <= vt < 0x83000000: + tally[(d, k, vt)].add(uid) + sites[(d, k, vt)].append((base, uid)) + + rank = sorted(tally.items(), key=lambda kv: -len(kv[1])) + print(f"{'delta':>6} {'idoff':>6} {'word':>10} {'#ids':>5}") + for (d, k, vt), s in rank[:25]: + print(f"{d:#6x} {k:#6x} {vt:#010x} {len(s):5d} e.g. {sorted(s)[:2]}") + if rank: + best = rank[0][0] + print("\n# object bases for the top candidate (first 20):", file=sys.stderr) + for base, uid in sorted(set(sites[best]))[:20]: + print(f"# {base:#010x} {uid}", file=sys.stderr) + + +if __name__ == "__main__": + main() diff --git a/tools/re-capture/unit_runtime.py b/tools/re-capture/unit_runtime.py new file mode 100644 index 0000000..c28497e --- /dev/null +++ b/tools/re-capture/unit_runtime.py @@ -0,0 +1,260 @@ +#!/usr/bin/env python3 +"""Solve the runtime `Unit` (craft/vessel definition) struct layout against the +disc's `unit\\UN_*.tbl` records, then read the fields the disc leaves defaulted. + +Same method as weapon_runtime.py, with two differences forced by the data: + * the runtime class is *discovered*, not assumed β€” see unit_discover.py; the + definition objects carry vtable 0x820af844 and hold a pointer to their name + record at +0x04 (string at name+0x10), exactly like `Weapon`; + * a unit `.tbl` is one object made of several sub-records (Generic, Maneuver, + Shield, Explosion, Mass, Effect, SE, Turret_*), all flattened into ONE + runtime object, so the disc side is merged per unit ID. + +Only the *definition* objects are used. The other class found in RAM +(0x820af030) is the spawned-entity instance β€” same ID string, live state, not +definition data β€” and is deliberately ignored. + +Usage: unit_runtime.py (snapshots are unioned) +""" +import math +import os +import re +import struct +import sys +from collections import defaultdict + +sys.path.insert(0, "/home/fabi/RE - Project Sylpheed/sylpheed-reborn/tools/re-capture") +import gmem # noqa: E402 + +DEF_VTABLE = 0x820AF844 +STRIDE = 0x380 +SUBRECS = ("Generic", "Maneuver", "Shield", "Explosion", "Mass", "Effect", "SE") + +# `Maneuver` fields that EVERY unit table leaves at its default, so the solver +# can never bind them: there is no disc value anywhere to score against. Their +# offsets come from the declaration-order rule (see schema_order.py), which 29 +# solved anchors confirm, and each of these sits *between* two of those anchors +# -- `YawDragFactor +0x104` .. `ArterBurner_Vc +0x114` and +# `ReverseThrust_Vc +0x118` .. `ReverseThrust_Acc +0x120`. Reported separately +# and marked `interpolated`, never mixed into the solved set. +INTERPOLATED = [ + (0x108, "PitchDragFactor", "f32"), + (0x10C, "RollDragFactor", "f32"), + (0x110, "DragFactorThreshold", "f32"), + (0x11C, "ArterBurner_Acc", "f32"), + (0x128, "DecPitchFactor", "f32"), +] + + +# ---------------------------------------------------------------- disc side + + +def read_tokens(path): + """{unit_id: {field: value}} merged over the tbl's sub-records. + + A field name that two sub-records of the same unit define with different + values is ambiguous *within* the object, so it is dropped rather than + silently resolved. + """ + per_hash = defaultdict(lambda: {"id": None, "f": defaultdict(set)}) + cur = None + for line in open(path): + if line.startswith("REC "): + _, h, _, ty, rid = line.split() + cur = per_hash[h] + if ty == "Generic" and rid.startswith("UN_"): + cur["id"] = rid + elif line.startswith("F ") and cur is not None: + _, k, v = line.rstrip("\n").split(" ", 2) + cur["f"][k].add(v) + out, ambiguous = {}, {} + for rec in per_hash.values(): + if not rec["id"]: + continue + fields, bad = {}, [] + for k, vs in rec["f"].items(): + if len(vs) == 1: + fields[k] = next(iter(vs)) + else: + bad.append(k) + out[rec["id"]] = fields + if bad: + ambiguous[rec["id"]] = sorted(bad) + return out, ambiguous + + +# ------------------------------------------------------------- runtime side + + +def scan_vtable(f, size, vt): + pat = struct.pack(">I", vt) + hits = [] + for a, b in gmem.extents(f.fileno(), size): + f.seek(a) + blob = f.read(b - a) + for m in re.finditer(re.escape(pat), blob): + off = a + m.start() + if off % 4 == 0: + hits.append(off) + return sorted(set(hits)) + + +def runtime_objects(paths): + """{id: raw} unioned over snapshots; identical IDs must agree byte-for-byte.""" + objs, conflicts = {}, [] + for path in paths: + size = os.path.getsize(path) + with open(path, "rb") as f: + for off in scan_vtable(f, size, DEF_VTABLE): + f.seek(off) + raw = f.read(STRIDE) + (p,) = struct.unpack_from(">I", raw, 4) + try: + f.seek(gmem.va_to_off(p + 0x10)) + except ValueError: + continue + nm = f.read(96).split(b"\0")[0] + try: + nm = nm.decode("ascii") + except UnicodeDecodeError: + continue + if not nm.startswith("UN_"): + continue + if nm in objs and objs[nm] != raw: + conflicts.append((nm, os.path.basename(path))) + objs[nm] = raw + return objs, conflicts + + +# ------------------------------------------------------------------- solver + +ENC = { + "f32": lambda raw, o: struct.unpack_from(">f", raw, o)[0], + "u32": lambda raw, o: float(struct.unpack_from(">I", raw, o)[0]), + "i32": lambda raw, o: float(struct.unpack_from(">i", raw, o)[0]), + "rad": lambda raw, o: math.degrees(struct.unpack_from(">f", raw, o)[0]), +} + + +def near(a, b): + if a == b: + return True + return abs(a - b) <= 2e-4 * max(abs(a), abs(b), 1e-6) + + +def solve(disc, run): + numeric = {} + for rid, fields in disc.items(): + if rid not in run: + continue + for k, v in fields.items(): + try: + numeric.setdefault(k, {})[rid] = float(v.rstrip("fF")) + except ValueError: + pass + + solved = {} + for field, samples in numeric.items(): + if len(samples) < 2: + continue + cands = [] + # +0x00 is the vtable and +0x04 the name-record pointer; no field lives + # there. They are excluded explicitly because a huge-exponent pointer + # word read as f32 is a denormal, which the tolerance test happily + # "matches" against any disc value of 0.0. + for off in range(8, STRIDE - 3, 4): + for enc, fn in ENC.items(): + agree, bad = 0, [] + for rid, want in samples.items(): + got = fn(run[rid], off) + if math.isfinite(got) and near(got, want): + agree += 1 + else: + bad.append((rid, want, got)) + if agree >= 2: + cands.append((len(bad), -agree, off, enc, agree, bad)) + if not cands: + continue + cands.sort() + nbad, _, off, enc, agree, bad = cands[0] + if len(bad) > 0.2 * len(samples): + continue + good = {rid for rid in samples} - {b[0] for b in bad} + distinct = len({round(samples[r], 6) for r in good}) + solved[field] = (off, enc, agree, bad, distinct) + + # two fields cannot share one byte offset -- and the offset alone is the + # identity, not (offset, encoding): the same word read as f32 and as i32 is + # still one field. + best_at = {} + for field, (off, enc, agree, bad, distinct) in solved.items(): + score = (distinct, agree, -len(bad)) + if off not in best_at or score > best_at[off][1]: + best_at[off] = (field, score) + winners = {f for f, _ in best_at.values()} + return {f: v for f, v in solved.items() if f in winners}, numeric + + +def main(): + tokens = sys.argv[1] + snaps = [a for a in sys.argv[2:] if not a.startswith("--")] + disc, ambiguous = read_tokens(tokens) + run, conflicts = runtime_objects(snaps) + matched = sorted(set(disc) & set(run)) + print(f"# disc units: {len(disc)} runtime objects: {len(run)} matched: {len(matched)}") + if conflicts: + print(f"# !! objects that differ between snapshots: {conflicts}") + unknown = sorted(set(run) - set(disc)) + if unknown: + print(f"# runtime IDs with no disc record: {unknown}") + + solved, numeric = solve(disc, run) + print(f"# numeric disc fields on matched units: {len(numeric)} solved: {len(solved)}\n") + print(f"{'offset':>8} {'enc':>4} {'field':<32} {'agree':>5} {'dist':>4} {'bad':>3}") + for field, (off, enc, agree, bad, distinct) in sorted(solved.items(), key=lambda kv: kv[1][0]): + print(f"{off:#8x} {enc:>4} {field:<32} {agree:5d} {distinct:4d} {len(bad):3d}") + + if "--csv" in sys.argv: + import csv + + w = csv.writer(open("unit-runtime-fields.csv", "w", newline="")) + w.writerow(["unit", "field", "offset", "enc", "value", "source", "conf"]) + for rid in matched: + for field, (off, enc, agree, bad, distinct) in sorted( + solved.items(), key=lambda kv: kv[1][0] + ): + conf = "confirmed" if (not bad and agree >= 10 and distinct >= 3) else "tentative" + src = "disc" if field in disc[rid] else "defaulted-on-disc" + w.writerow([rid, field, f"{off:#05x}", enc, + f"{ENC[enc](run[rid], off):g}", src, conf]) + for off, field, enc in INTERPOLATED: + w.writerow([rid, field, f"{off:#05x}", enc, + f"{ENC[enc](run[rid], off):g}", + "never-valued-on-disc", "interpolated"]) + + for arg in sys.argv: + if arg.startswith("--unit="): + rid = arg.split("=", 1)[1] + print(f"\n# every solved field of {rid}") + for field, (off, enc, agree, bad, distinct) in sorted( + solved.items(), key=lambda kv: kv[1][0] + ): + conf = "OK " if (not bad and agree >= 10 and distinct >= 3) else "thin" + src = "disc" if field in disc.get(rid, {}) else "DEFAULTED" + print(f" +{off:#05x} {enc} {conf} {field:<32} " + f"{ENC[enc](run[rid], off):>14g} {src}") + + if "--values" in sys.argv: + print("\n# defaulted-on-disc values read from the runtime objects") + for field, (off, enc, agree, bad, distinct) in sorted(solved.items(), key=lambda kv: kv[1][0]): + if bad: + continue + miss = [(r, ENC[enc](run[r], off)) for r in matched if field not in disc[r]] + if miss: + print(f"\n{field} (+{off:#x}, {enc}):") + for r, v in miss: + print(f" {r:<48} {v:g}") + + +if __name__ == "__main__": + main()