re: CoverArea is a 6-bit MOUNT mask; the three other turret leftovers closed
Six bits, never more. Over all 835 turrets: 41 distinct values, max 0x3f, bits 6/7 set on none; per-bit 709/117/274/274/260/237. 0x00 (34) = the empty Weapon_NULL hardpoints with YawLimit 0; 0x01 alone (439) = craft hardpoints with YawLimit 2.5/1.0/0; 2-6 bits (362) = warship mounts with YawLimit 45-180. It tracks the MOUNT, not the weapon. UN_e107_ADAN_AAFrigate has eight identical AAFrigate_AAGun turrets: GN_GunXS_01..04 are 0x1d and 05..08 are 0x2d -- same gun, same YawLimit 120, different mask. The Battleship spreads five masks over GN_TGunL_01..05 / GN_TGunM_02..03, all firing the same CAF_Ship_ASGun. Which sector each bit denotes is NOT determined; six bits and the name invite +-X/+-Y/+-Z or six hull faces, but nothing static fixes the convention. Not adopted. Refuted on the way: bits 2 and 3 are not a mutually-exclusive pair -- 188 turrets set both. The 26 weapons no turret mounts are a coherent set: 11 _P player variants, the nose/twin mounts, two _Child sub-munitions, the three S16Boss_*, three Weapon_Test_*, and ADAN_Attacker_S_GunTurret. Versatile_NNN ships nowhere -- 0 populated records across all 41 archives, only the ??? template row. The two units one turret short: both extras are missile mounts with no Frame. Elan_EX4 = NoseGun + Missile, both mask 0x01, both frameless; AAFrigate_EX4 = eight framed guns plus one Ship_AAMissile at 0x0c with no Frame. n=2, stated as the observed pattern, not a rule. New artefact and regenerator; the other nine regenerate byte-identical.
This commit is contained in:
114
docs/re/data/turret-coverarea.txt
Normal file
114
docs/re/data/turret-coverarea.txt
Normal file
@@ -0,0 +1,114 @@
|
||||
# Turret CoverArea, and the turret leftovers
|
||||
# Regenerate: python3 tools/re-capture/turret_coverarea.py
|
||||
# See docs/re/structures/unit-substructure-records.md
|
||||
|
||||
## CoverArea is a 6-BIT mask
|
||||
turrets 835 ; distinct values 41 ; max 0x3f ; any bit >= 6 set: False
|
||||
per-bit set count:
|
||||
bit 0 709
|
||||
bit 1 117
|
||||
bit 2 274
|
||||
bit 3 274
|
||||
bit 4 260
|
||||
bit 5 237
|
||||
bit 6 0
|
||||
bit 7 0
|
||||
popcount: {0: 34, 1: 439, 2: 40, 3: 62, 4: 147, 5: 100, 6: 13}
|
||||
|
||||
## it tracks the MOUNT, not the weapon
|
||||
mask n weapon classes
|
||||
0x01 439 {'Gun': 95, 'Beam': 67, 'Cannon': 56, 'Laser': 41}
|
||||
0x3d 82 {'Missile': 82}
|
||||
0x00 34 {'NULL': 34}
|
||||
0x2d 28 {'ASGun': 14, 'AAGun': 12, 'Beam': 2}
|
||||
0x1d 25 {'ASGun': 14, 'AAGun': 8, 'Beam': 2, 'Laser': 1}
|
||||
0x17 13 {'AAGun': 13}
|
||||
0x1b 13 {'AAGun': 13}
|
||||
0x3f 13 {'Gun': 13}
|
||||
0x39 12 {'AAGun': 8, 'ASGun': 4}
|
||||
0x35 12 {'AAGun': 8, 'ASGun': 4}
|
||||
0x27 12 {'AAGun': 10, 'ASGun': 2}
|
||||
0x2b 12 {'AAGun': 10, 'ASGun': 2}
|
||||
0x19 10 {'AAGun': 5, 'ASGun': 4, 'Gun': 1}
|
||||
0x15 10 {'AAGun': 5, 'ASGun': 4, 'Gun': 1}
|
||||
0x14 10 {'AAGun': 6, 'ASGun': 4}
|
||||
0x18 10 {'AAGun': 6, 'ASGun': 4}
|
||||
worked example -- one hull, one weapon, masks differ by mount:
|
||||
UN_e107_ADAN_AAFrigate
|
||||
mask 0x1d Frame=GN_GunXS_01_ContH Yaw=120.0 Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x1d Frame=GN_GunXS_02_ContH Yaw=120.0 Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x1d Frame=GN_GunXS_03_ContH Yaw=120.0 Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x1d Frame=GN_GunXS_04_ContH Yaw=120.0 Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x2d Frame=GN_GunXS_05_ContH Yaw=120.0 Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x2d Frame=GN_GunXS_06_ContH Yaw=120.0 Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x2d Frame=GN_GunXS_07_ContH Yaw=120.0 Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x2d Frame=GN_GunXS_08_ContH Yaw=120.0 Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x0c Frame= Yaw=20.0 Weapon_ADAN_Ship_AAMissile
|
||||
UN_f104_TCAF_Battleship
|
||||
mask 0x01 Frame= Yaw=3.0 Weapon_TCAF_Battleship_BowChaser
|
||||
mask 0x1d Frame=GN_TGunL_01_ContH Yaw=120.0 Weapon_TCAF_Ship_ASGun
|
||||
mask 0x2b Frame=GN_TGunM_02_ContH Yaw=120.0 Weapon_TCAF_Ship_ASGun
|
||||
mask 0x1d Frame=GN_TGunL_02_ContH Yaw=120.0 Weapon_TCAF_Ship_ASGun
|
||||
mask 0x27 Frame=GN_TGunM_03_ContH Yaw=120.0 Weapon_TCAF_Ship_ASGun
|
||||
mask 0x39 Frame=GN_TGunL_03_ContH Yaw=120.0 Weapon_TCAF_Ship_ASGun
|
||||
mask 0x17 Frame=GN_TAAGunL_01 Yaw=45.0 Weapon_TCAF_Ship_AAGun
|
||||
mask 0x39 Frame=GN_TGunL_04_ContH Yaw=120.0 Weapon_TCAF_Ship_ASGun
|
||||
mask 0x1b Frame=GN_TAAGunL_02 Yaw=45.0 Weapon_TCAF_Ship_AAGun
|
||||
mask 0x35 Frame=GN_TGunL_05_ContH Yaw=120.0 Weapon_TCAF_Ship_ASGun
|
||||
mask 0x17 Frame=GN_TAAGunL_03 Yaw=45.0 Weapon_TCAF_Ship_AAGun
|
||||
mask 0x35 Frame=GN_TGunL_06_ContH Yaw=120.0 Weapon_TCAF_Ship_ASGun
|
||||
mask 0x1b Frame=GN_TAAGunL_04 Yaw=45.0 Weapon_TCAF_Ship_AAGun
|
||||
mask 0x2d Frame=GN_TGunL_07_ContH Yaw=120.0 Weapon_TCAF_Ship_ASGun
|
||||
mask 0x27 Frame=GN_TAAGunL_05 Yaw=45.0 Weapon_TCAF_Ship_AAGun
|
||||
mask 0x2d Frame=GN_TGunL_08_ContH Yaw=120.0 Weapon_TCAF_Ship_ASGun
|
||||
mask 0x2b Frame=GN_TAAGunL_06 Yaw=45.0 Weapon_TCAF_Ship_AAGun
|
||||
mask 0x1f Frame=GN_TGunM_01_ContH Yaw=120.0 Weapon_TCAF_Ship_ASGun
|
||||
mask 0x27 Frame=GN_TAAGunL_07 Yaw=45.0 Weapon_TCAF_Ship_AAGun
|
||||
mask 0x2b Frame=GN_TAAGunL_08 Yaw=45.0 Weapon_TCAF_Ship_AAGun
|
||||
|
||||
## the weapons no turret mounts
|
||||
Weapon.ID 131 ; mounted 105 ; never 26
|
||||
Weapon_ADAN_Attacker_S_GunTurret
|
||||
Weapon_DSaber_P_wep_13_Child
|
||||
Weapon_DSaber_P_wep_29_Child
|
||||
Weapon_S16Boss_AAGun
|
||||
Weapon_S16Boss_HBeam
|
||||
Weapon_S16Boss_Laser
|
||||
Weapon_TCAF_DeltaSaber_ASMissile_P
|
||||
Weapon_TCAF_DeltaSaber_Beam_P
|
||||
Weapon_TCAF_DeltaSaber_Bomb_P
|
||||
Weapon_TCAF_DeltaSaber_Cannon_P
|
||||
Weapon_TCAF_DeltaSaber_Gun_P
|
||||
Weapon_TCAF_DeltaSaber_Laser_P
|
||||
Weapon_TCAF_DeltaSaber_Laser_Ttrl
|
||||
Weapon_TCAF_DeltaSaber_Missile_P
|
||||
Weapon_TCAF_DeltaSaber_NoseGun
|
||||
Weapon_TCAF_DeltaSaber_NoseGun_None
|
||||
Weapon_TCAF_DeltaSaber_NoseGun_P
|
||||
Weapon_TCAF_DeltaSaber_NoseGun_Ttrl
|
||||
Weapon_TCAF_DeltaSaber_Rocket_P
|
||||
Weapon_TCAF_DeltaSaber_Shotgun_P
|
||||
Weapon_TCAF_DeltaSaber_Special_P
|
||||
Weapon_TCAF_DeltaSaber_TwinGun
|
||||
Weapon_TCAF_DeltaSaber_TwinGun_P
|
||||
Weapon_Test_ASMissile
|
||||
Weapon_Test_Gun_Player
|
||||
Weapon_Test_Missile_Player
|
||||
|
||||
## Versatile_NNN across all 41 archives
|
||||
populated records: NONE — only the `???` template row
|
||||
|
||||
## the two units whose turret count is one short
|
||||
UN_e001_ADAN_Elan_EX4 TurretCount=1 records=2
|
||||
mask 0x01 Frame='' Weapon_ADAN_Turret_NoseGun
|
||||
mask 0x01 Frame='' Weapon_ADAN_Turret_Missile
|
||||
UN_e107_ADAN_AAFrigate_EX4 TurretCount=8 records=9
|
||||
mask 0x1d Frame='GN_GunXS_01_ContH' Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x1d Frame='GN_GunXS_02_ContH' Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x1d Frame='GN_GunXS_03_ContH' Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x1d Frame='GN_GunXS_04_ContH' Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x2d Frame='GN_GunXS_05_ContH' Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x2d Frame='GN_GunXS_06_ContH' Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x2d Frame='GN_GunXS_07_ContH' Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x2d Frame='GN_GunXS_08_ContH' Weapon_ADAN_AAFrigate_AAGun
|
||||
mask 0x0c Frame='' Weapon_ADAN_Ship_AAMissile
|
||||
Reference in New Issue
Block a user