OBD:BINA/PAR3

From OniGalore
< OBD:BINA
Revision as of 15:05, 6 February 2008 by Neo (talk | contribs)
Jump to navigation Jump to search
ONI BINARY DATA
AKVA << Other file types >> CBPI
ONIE << Other BINA >> SABD
PAR3 : 3D Particle
switch to XML:BINA/PAR3 page
Overview @ Oni Stuff
OBD.png

The following example is the raw/sep part of 3RAPenv_bomb_e06.BINA (level 0). (Another example: http://ssg.oni2.net/test.htm )

Particle dialogs: http://ssg.oni2.net/subfold/bluebox/3d-part.htm

Header

The header takes up 780 = 0x30C bytes.

bin_r_3h.gif

Offset Type Raw Hex Value Description
0x00 char[4] 33 52 41 50 PAR3 signature
0x04 int32 9C 06 00 00 1692 length of the following 3d particle part from this position
0x08 int16 9C 06 1692 length again
0x0A int16 12 00 18 version
0x0C int32 01 20 00 00 0x2001 flags1; used flags (from left to right):
0x01 00 00 00 - decorative
0x08 00 00 00 - unknown
0xE0 00 00 00 - sprite/contrail mode mask (3 bits, see below for possible values)
0x00 01 00 00 - geometry
0x00 02 00 00 - collide with walls
0x00 04 00 00 - collide with chars
0x00 08 00 00 - unknown
0x00 10 00 00 - has velocity
0x00 20 00 00 - has orientation
0x00 40 00 00 - offset position
0x00 80 00 00 - attached to object
0x00 00 01 00 - unknown
0x00 00 02 00 - has decal state
0x00 00 04 00 - texture animation: random start
0x00 00 08 00 - texture animation: animate independently
0x00 00 10 00 - unknown
0x00 00 20 00 - has contrail data
0x00 00 40 00 - unknown; lensflare related
0x00 00 80 00 - is attracted
0x00 00 00 01 - has collision cache
0x10 int32 00 00 00 02 0x02000000 flags2; used flags (from left to right):
0x01 00 00 00 - use special tint
0x02 00 00 00 - unknown
0x08 00 00 00 - unknown
0x10 00 00 00 - unknown
0x60 00 00 00 - disable level mask (2 bits, 0x00 - never disable, 0x40 - disable medium detail, 0x60 - disable low detail)
0x00 00 10 00 - draw as sky
0x00 00 20 00 - unknown
0x00 00 80 00 - decal
0x00 00 00 01 - unknown
0x00 00 00 02 - invisible
0x00 00 00 04 - unknown
0x00 00 00 08 - vector
0x00 00 00 10 - unknown
0x00 00 00 20 - contrail
0x00 00 00 40 - lensflare
0x00 00 00 80 - unknown
0x14 int32 00 00 00 00 0 unknown; looks like garbage data; maybe thelast one (if you read it from right to left) is a bitset too
0x18 int16 01 00 1 number of variables
0x1a int16 01 00 1 number of events/actions
0x1c int16 01 00 1 number of emitted particles
0x1e int16 00 01 256 unknown; always the same

Sprite modes:

  • 0 - sprite (face camera orient to screen)
  • 1 - rotated sprite (face camera orient to particle)
  • 2 - beam (parallel face camera)
  • 3 - arrow (parallel orient to particle)
  • 7 - discus (parallel orient to particle)
  • 4 - flat (perpendicular)

Contrail modes:

  • 5 - contrail (orient to particle)
  • 6 - contrail (face camera)

Event groups (0x20 - 0x5F)

Here we have 16 4-byte slots, which correspond to the following 16 particle event types :

0:update 1:pulse 2:start 3:stop
4:bgfx_start 5:bgfx_stop 6:hit_wall 7:hit_char
8:lifetime 9:explode A:brokenlink B:create
C:die D:newattractor E:delay_start F:delay_stop

The ZZZZ actions in the file (ZZZZ is specified at 0x1A above) are bound to a specific event # by means of this list.

If the 4-byte slot for event # reads XX XX YY YY, where XXXX < YYYY < ZZZZ, then event # will execute all the actions whose slot is greater or equal to XXXX, and less than YYYY.

Example
3RAPglass_shard.BINA has 10 actions, distributed between events as follows :
(0,4)(4,4)(4,4)(4,4)(4,4)(4,4)(4,7)(7,9)(9,10)(10,10)(10,10)(10,10)(10,10)(10,10)(10,10)(10,10)
That means :
  • actions {0,1,2,3} will be triggered by an update event
  • actions {4,5,6} will be triggered by a hit_wall event
  • actions {7,8} will be triggered by a hit_char event
  • action {9} will be triggered by a lifetime event
Back to the silly 3RAPenv_bomb_e06.BINA...
Offset Type Raw Hex Value Description
0x20 int16,int16 00 00 01 00 0, 1 action 0 (actions 0 to 1) triggered by update event
0x24 int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by pulse event
0x28 int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by start event
0x2C int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by stop event
0x30 int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by bgfx_start event
0x34 int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by bgfx_stop event
0x38 int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by hit_wall event
0x3C int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by hit_char event
0x40 int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by lifetime event
0x44 int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by explode event
0x48 int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by brokenlink event
0x4C int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by create event
0x50 int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by die event
0x54 int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by newattractor event
0x58 int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by delay_start event
0x5C int16,int16 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by delay_stop event

Particle Properties

Offset Type Raw Hex Value Description
float property Lifetime (seconds, 0 = live forever)
0x60 int32 03 00 00 00 3 value type: float
0x64 float 00 00 40 3F 0.750000 value
0x68 not used for float values
float property Collision radius
0x7C int32 03 00 00 00 3 value type: float
0x80 float 00 00 00 00 0.0 value
0x84 not used for float values
Others
0x98 float 00 00 00 00 0.000000 unknown (AI dodge radius ?)
0x9C float 00 00 00 00 0.000000 unknown (AI alert radius ?)
0xA0 char[16] 00 "" flyby sound name
float property Scale
0xB0 int32 03 00 00 00 3 value type: float
0xB4 float 00 00 80 3F 1.0 value
0xB8 not used for float values
float property Y Scale
0xCC int32 03 00 00 00 3 value type: float
0xD0 float 00 00 80 3F 1.0 value
0xD4 not used for float values
float property Rotation
0xE8 int32 00 00 00 00 0 value type: variable
0xEC char[16] "rotate" value
0xFC int32 00 00 00 00 runtime: storage type
0x100 int32 00 00 00 00 runtime: storage offset
float property Alpha
0x104 int32 03 00 00 00 3 value type: float
0x108 float 00 00 80 3F 1.0 value
0x10C not used for float values
Others
0x120 char[32] "notfoundtex" texture name or geometry name
float property X Offset
0x140 int32 03 00 00 00 3 value type: float
0x144 float 00 00 00 00 0.0 value
0x148 not used for float values
float property X Shorten
0x15C int32 03 00 00 00 3 value type: float
0x160 float 00 00 00 00 0.0 value
0x164 not used for float values
color property Tint
0x178 int32 07 00 00 00 3 value type: color
0x17C float FF FF FF FF white value
0x180 not used for color values
float property Edge Fade Min (min value used: 0, max value used: 0.95)
0x194 int32 03 00 00 00 3 value type: float
0x198 float 00 00 00 00 0.0 value
0x19C not used for float values
float property Edge Fade Max (min value used: 0, max value used: 1)
0x1B0 int32 03 00 00 00 3 value type: float
0x1B4 float 00 00 00 3F 0.5 value
0x1B8 not used for float values
float property Max Contrail (min value used: 0, max value used: 100)
0x1CC int32 03 00 00 00 3 value type: float
0x1D0 float 00 00 00 00 0.0 value
0x1D4 not used for float values
float property Lens Flare Distance (min value used: 0, max value used: 9000)
0x1E8 int32 03 00 00 00 3 value type: float
0x1EC float 00 00 00 00 0.0 value
0x1F0 not used for float values
Others
0x204 int16 00 00 0 fade in frames
0x206 int16 00 00 0 fade out frames
0x208 64 00 100 unknown
0x20A 3C 00 60 unknown
float property Decal Wrap Angle (min value used: 20, max value used: 120)
0x20C int32 03 00 00 00 3 value type: float
0x210 float 00 00 70 42 60.0 value
0x214 not used for float values
Others
0x228 int32 00 00 00 00 none particle attractor type
0 - none
1 - link
2 - class
3 - tag
4 - characters
5 - hostiles
6 - emitted towards
7 - parent's attractor
8 - all characters
0x22C int32 00 00 00 00 distance particle attractor selection
0 - distance
1 - angle
0x230 00 00 00 00 0 runtime only
0x234 char[64] 00 "" unknown; name of a particle
float property Unknown Property 1 (min value used: 12, max value used: 2000)
0x274 int32 03 00 00 00 3 value type: float
0x278 float 00 00 16 43 150.0 value
0x27C not used for float values
float property Unknown Property 2 (min value used: 15, max value used: 180)
0x290 int32 03 00 00 00 3 value type: float
0x294 float 00 00 F0 41 30.0 value
0x298 not used for float values
float property Unknown Property 3 (min value used: 3, max value used: 180)
0x2AC int32 03 00 00 00 3 value type: float
0x2B0 float 00 00 40 40 3.0 value
0x2B4 not used for float values
float property Unknown Property 4 (min value used: 20, max value used: 180)
0x2C8 int32 03 00 00 00 3 value type: float
0x2CC float 00 00 A0 41 20.0 value
0x2D0 not used for float values
float property Unknown Property 5 (min value used: 1, max value used: 100)
0x2E4 int32 03 00 00 00 3 value type: float
0x2E8 float 00 00 40 40 3.0 value
0x2EC not used for float values
Others
0x300 AC 22 81 0B 0B 81 22 AC runtime pointer to variables
0x304 E0 22 81 0B 0B 81 22 E0 runtime pointer to events/actions
0x308 88 24 81 0B 0B 81 24 88 runtime pointer to emissions
Value types
0 - variable
1 - int16
2 - random int16:
3 - float
4 - random float (2 floats, range, min and max value)
5 - random float (normal distribution;)
6 - instance name
7 - color
8 - random color
9 - random color (normal distribution)
10 - int32
11 - time

Variables

Every variable takes up 52=0x34 bytes. The number of variables is specified at 0x18 in the header.

bin_r_31.gif

Offset Type Raw Hex Value Description
0x00 char[16] "rotate" name of the variable
0x10 int32 02 00 00 00 2 storage type: float
0x14 int32 30 00 00 00 48 storaget offset (incremented by the storage type size for every next variable)
Initial value
0x18 int32 04 00 00 00 4 value type: random
0x1c float 00 00 B4 C3 -360.000000 min value
0x20 float 00 00 B4 43 360.000000 max value
0x24 not used for random float
0x2c not used for random float
0x30 not used for random float
Storage types
1 - int16 (storage size: 2)
2 - float (storage size: 4)
4 - string? (storage size: 16)
8 - color (storage size: 4)
4096 - pingpong state (storage size: 4)
4112 - action index (storage size: 4)
4128 - emitter (storage size: 4)
4144 - blast falloff (storage size: 4)
4160 - coord frame (storage size: 4)
4176 - collision orient (storage size: 4)
4192 - boolean (storage size: 4)
4208 - ambient sound (storage size: 4)
4224 - impulse sound (storage size: 4)
4240 - impact modifier (storage size: 4)
4256 - damage type (storage size: 4)
  • 0 - normal
  • 1 - minor stun
  • 2 - major stun
  • 3 - minor knockdown
  • 4 - major knockdown
  • 5 - blownup
  • 6 - pickup
8192 - string? (storage size: 16)
16384 - string? (storage size: 16)

Actions

Every action takes up 424=0x1A8 bytes. The number of actions is specified at 0x1A in the header.

bin_r_32.gif

Offset Type Raw Hex Value Description
0x00 int32 22 00 00 00 34 Action type: Rotate Y
0x04 int32 00 00 00 00 0 unknown
First variable reference
0x00 char[16] 00 "" variable name, if empty this block is not used
0x10 int32 00 00 00 00 0 runtime: storage type
0x14 int32 00 00 00 00 0 runtime: storage offset
First action parameter
0x00 int32 0A 00 00 00 10 value type: int32
0x04 int32 01 00 00 00 1 value (rotation space)
0x08 not used for int32 values
0x14 not used for int32 values
0x18 not used for int32 values



Emitted particles

Every emitted particle takes up 444=0x1BC bytes. The number of emitted particles is specified at 0x1C in the header.

bin_r_33.gif

Offset Type Raw Hex Value Description
0x00 char[64] "env_bomb_p09" name of the particle to emit (3RAPenv_bomb_p09.BINA)
0x40 int32 C0 92 62 00 runtime pointer to emitted particle class
0x44 int32 47 00 00 00 71 flags (from 0 to 775)
0x48 int16 04 00 4 unknown (from 0 to 100)
0x4A uint16 FF FF 65535 emit probability (scaled by 65535)
0x4C float 00 00 20 41 10.000000 amount of (sprite) copies
0x50 int32 00 00 00 00 0 unknown
0x54 int32 00 00 00 00 0 emit rate; can use elements 1 and 2; possible values (in dec):
0 - continuous (emit interval)
1 - random (min interval, max interval)
2 - instant
3 - distance (distance)
4 - attractor (recharge time, check interval)
0x58 int32 00 00 00 00 0 position; can use elements 3, 4 and 5; possible values (in dec):
0 - point
1 - line (radius)
2 - circle (inner radius, outer radius)
3 - sphere (inner radius, outer radius)
4 - offset (x, y, z)
5 - cylinder (heigt, inner radius, outer radius)
6 - body-surface (offset radius)
7 - body-bones (offset radius)
0x5C int32 03 00 00 00 3 direction; can use elements 6, 7 and 8; possible values (in dec):
0 - straight
1 - random
2 - cone (angle, center bias)
3 - ring (angle, offset)
4 - offset (x, y, z)
5 - inaccurate (base angle, inaccuracy, center bias)
6 - attractor
0x60 int32 00 00 00 00 0 speed; can use elements 9 and 10; possible values (in dec):
0 - uniform (speed)
1 - stratified (speed 1, speed 2)
0x64 int32 0C 00 00 00 12 orientation dir; can use element 11?; possible values (in dec):
0 - parent +X
1 - parent -X
2 - parent +Y
3 - parent -Y
4 - parent +Z
5 - parent -Z
6 - world +X
7 - world -X
8 - world +Y
9 - world -Y
10 - world +Z
11 - world -Z
12 - velocity
13 - reverse-velocity
14 - towards-emitter
15 - awayfrom-emitter
0x68 int32 04 00 00 00 4 orientation up; can use element 12? same possible values as for orientation dir
First element (black outline)
0x00 int32 04 00 00 00 4 value type: random float
0x04 float 00 00 00 3E 0.125000 attractor - recharge time min value
0x08 float 00 00 00 3F 0.500000 attractor - recharge time max value
0x0C not used for random float values
0x14 not used for random float values
0x18 not used for random float values




ONI BINARY DATA
AKVA << Other file types >> CBPI
BINA : Binary data
ONIE << Other BINA >> SABD
PAR3 : 3D Particle
[[OBD:File types/{{{family}}}|{{{family}}} file]]