OBD:TURR

From OniGalore
Revision as of 21:38, 9 December 2023 by Iritscen (talk | contribs) (changed family; terminology)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
This is about the turret class resource. For turret instances, see OBD:BINA/OBJC/TURR.
ONI BINARY DATA
TStr << Other file types >> TXAN
TURR : Turret
switch to XML:TURR page
Overview @ Oni Stuff
OBD.png


The first pic shows the beginning of this file. The second pic the end of it.


Turr a.gif


Offset Type Raw Hex Value Description
0x000 res_id 01 BF 01 00 447 ID for TURRsap_turret_floor
0x004 lev_id 01 00 00 00 0 level 0
0x008 char[64] sap_turret_floor name of this file
0x048 int32 00 00 00 00 0 unknown; always zero
0x04C char[8] AD DE dead unused
0x054 int16 00 00 0 unknown; always zero; (ignored) amount of shots?
0x056 int16 07 00 7 amount of particles (the array contains space for 16 elements)
0x058 int16 01 00 1 unknown; always the same; amount of firing modes?
0x05A char[6] AD DE dead unused
0x060 link 01 C0 01 00 448 link to M3GM00448 - turret body
0x064 link 00 00 00 00 0 obsolete OBLS link
0x068 link 00 00 00 00 0 unknown; always zero; body-something?
0x06C link 01 C3 01 00 451 link to M3GM00451 - turret head
0x070 link 00 00 00 00 0 unknown; always zero; head-something?
0x074 link 01 C4 01 00 452 link to M3GM00452 - turret gun
0x078 link 00 00 00 00 0 unknown; always zero; gun-something?
0x07C float 0D F8 C1 34 0.000000... X translation for turret head (body-relative)
0x080 float CF B4 07 41 8.481642 Y translation for turret head (body-relative)
0x084 float 13 A2 03 34 0.000000... Z translation for turret head (body-relative)
0x088 float DA F5 9F B1 -0.000000... X translation for turret gun (head-relative)
0x08C float 1D FC 33 32 0.000000... Y translation for turret gun (head-relative)
0x090 float F7 FE 3F B3 -0.000000... Z translation for turret gun (head-relative)


Particle array (see ONWC)
The particle elements are not exactly the same as in ONWC (4 bytes shorter)
Offset Type Raw Hex Value Description
First element (black outline)
0x000 char[16] w2_sap_e01 3D particle name (reference to BINA/PAR3w2_sap_e01)
0x010 int32 00 00 00 00 0 runtime only: pointer to particle class
0x014 int32 05 00 00 00 5 delay between shots in frames; here, 5/60 = 0.0833 s
0x018 float B0 90 9F B8 -0.000076 x1 coefficient of transform matrix ^_^
0x01C float 9E C1 7F 3F 0.999048 y1 coefficient of transform matrix ^_^
0x020 float 39 AC 32 3D 0.043621 z1 coefficient of transform matrix ^_^
0x024 float 62 F8 0E 3C 0.008726 x2 coefficient of transform matrix ^_^
0x028 float C9 A9 32 BD -0.043619 y2 coefficient of transform matrix ^_^
0x02C float 21 BF 7F 3F 0.999010 z2 coefficient of transform matrix ^_^
0x030 float 81 FD 7F 3F 0.999962 x3 coefficient of transform matrix ^_^
0x034 float D6 6B EF 39 0.000457 y3 coefficient of transform matrix ^_^
0x038 float A0 C7 0E BC -0.008715 z3 coefficient of transform matrix ^_^
0x03C float 46 0F 4D BD -0.050063 x4 coefficient of transform matrix ^_^
0x040 float 47 C9 C4 BD -0.096087 y4 coefficient of transform matrix ^_^
0x044 float 81 4E 94 40 4.634583 z4 coefficient of transform matrix ^_^
0x048 char[4] AD DE dead unused


Turr e.gif


Firing mode (see ONWC)
Turret firing spreads are not shown for ai2_showfiringspreads=1, which makes it harder to check the floats at 0x588, 0x58C, 0x590, 0x5C8, 0x5CC, 0x5D0.
Offset Type Raw Hex Value Description
0x554 int32 00 00 00 00 0 firing mode options; the following bits are possible (values in hex): 0x01 00 00 00 - No wild shots
0x0DC matrix4x3
81 FD 7F 3F 8E A7 47 39 1A F8 0E 3C
8E A7 47 39 A0 C1 7F 3F 6F A9 32 BD
1A F8 0E BC 6F A9 32 3D 21 BF 7F 3F
00 00 00 00 00 00 00 00 00 00 00 00
0.999962 0.000190 0.008726
0.000190 0.999048 -0.043619
-0.008726 0.043619 0.999010
0.000000 0.000000 0.000000
targeting inverse transform matrix - the inverse of the matrix that gives the targeting direction
0x588 vector3
62 F8 0E 3C C9 A9 32 BD 21 BF 7F 3F
0.008726 -0.043619 0.999010
targeting direction
0x594 vector3
44 57 B9 BD 73 27 D9 3D D1 99 B1 3B
-0.090498 0.106032 0.005420
targeting origin
0x5A0 float 00 00 96 44 1200.000000 prediction speed
0x5A4 float 00 00 00 00 0.000000 inaccuracy tolerance; always 0 for TURR
0x5A8 float 00 00 20 40 2.500000 aim radius; always the same for TURR and ONWC
0x5AC float 00 00 48 44 800.000000 sound sphere radius; always the same for TURR
0x5B0 float 00 00 00 00 0.000000 minimal shooting distance; always 0 for TURR
0x5B4 float 00 00 00 00 0.000000 maximal shooting distance; always 0 for TURR
0x5B8 int16 05 00 5 maximum startle misses
0x5BA int16 00 00 0 AI shooting skill ID; always 0 for TURR
0x5BC int32 00 00 00 00 0 fight timer; always 0 for TURR; 240 for ONWCw4_psm, 200 for ONWCv6_vdg
0x5C0 float 00 00 00 00 0.000000 ballistic projectile speed (150 for ONWCw5_sbg, 160 for w11_ba1); always 0 for TURR
0x5C4 float 00 00 00 00 0.000000 ballistic projectile gravity (0.5 for ONWCw5_sbg, 0.3 for w11_ba1); always 0 for TURR
0x5C8 float 00 00 00 00 0.000000 length of firing spread; always 0 for TURR
0x5CC float 00 00 00 00 0.000000 width of firing spread; always 0 for TURR
0x5D0 float 00 00 00 00 0.000000 skew angle of firing spread; always 0 for TURR


Same as in ONCC at 0x140-0x158
Offset Type Raw Hex Value Description
0x5D4 float 00 00 00 3F 0.500000 unknown; something with prediction? always the same for TURR and ONCC
0x5D8 float 00 00 F0 42 120.000000 unknown; something with prediction? always the same for TURR and ONCC
0x5DC float 00 00 80 3F 1.000000 unknown; something with prediction? always the same for TURR
0x5E0 int32 00 00 00 00 0 unknown frame count; something with prediction; always the same for TURR
0x5E4 int32 05 00 00 00 5 unknown frame count; something with prediction; always the same for TURR
0x5E8 int32 0F 00 00 00 15 unknown frame count; something with prediction; always the same for TURR
0x5EC int32 3C 00 00 00 60 unknown frame count; something with prediction; always the same for TURR


Shooting skill (see ONCC)
All the TURR have the same shooting skill.
Offset Type Raw Hex Value Description
0x5F0 float 9A 99 99 3E 0.300000 recoil compensation amount (0.0 = min, 1.0 = max)
0x5F4 float BE F9 0E 3C 0.008727 best aiming angle in radians
0x5F8 float 00 00 00 00 0.000000 shot grouping error
0x5FC float 00 00 00 3F 0.500000 shot grouping decay
0x600 float 00 00 80 3F 1.000000 shooting inaccuracy multiplier
0x604 int16 00 00 0 minimum delay between shots in frames
0x606 int16 00 3F 16128 maximum delay between shots in frames


Turret specific options
Offset Type Raw Hex Value Description
0x608 int32 84 03 00 00 900 timeout in frames; here, 15 seconds
0x60C float C2 B8 B2 BE -0.349066 minimum elevation in radians; here, 20°
0x610 float DB 0F C9 3F 1.570796 maximum elevation in radians; here, 90°
0x614 float 67 3B 54 C0 -3.316126 minimum azimuth in radians; here, -190°
0x618 float 67 3B 54 40 3.316126 maximum azimuth in radians; here, 190°
0x61C float AE 4B 6E 3C 0.014544 maximum vertical speed in radian/frame; here, 50°/s
0x620 float AE 4B 6E 3C 0.014544 maximum horizontal speed in radian/frame; here, 50°/s
0x624 char[32] turret_active active turret sound (reference to OSBDturret_active.amb)
0x644 int32 00 00 00 00 0 runtime only
0x648 char[24] AD DE dead unused; always the same
Turret geometry
  • The body geometry is used during play, it is only used at design time. Once a turret is added to a level the body is baked into the environment. The head and gun geometries are used because unlike the body they are not fixed, they need to move during play.


Here you can download the complete overview of all turrets as a text file.
Copy it to a spreadsheet calculation program like Excel.


ONI BINARY DATA
TStr << Other file types >> TXAN
TURR : Turret
Level file