OBD:BINA/PAR3: Difference between revisions

From OniGalore
Jump to navigation Jump to search
Line 119: Line 119:
:2 - random int16:
:2 - random int16:
:3 - float
:3 - float
:4 - random float (2 floats, min and max value; increase(min < max))
:4 - random float (2 floats, range, min and max value)
:5 - random float (normal distribution;) -  Note: Looks more like the same above but decrease (min > max))
:5 - random float (normal distribution;)
:6 - instance name
:6 - instance name
:7 - color
:7 - color

Revision as of 21:47, 5 December 2007

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 )

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 01 20 18 unknown; always the same
0x0C int32 01 20 00 00 0x2001 unknown; flags?
0x10 int32 00 00 00 02 0x20000000 unknown; more flags?
0x14 int32 00 00 00 00 0 unknown; looks like garbage data
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

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
First element (black outline)
0x60 int32 03 00 00 00 3 value type: float
0x64 float 00 00 40 3F 0.750000 value (lifetime in seconds); (be careful: 0 = live forever; the emit-interval is stored in part 3 (emitted particles))
0x68 80 0B 00 00 unused unused for float values
0x6c 02 02 00 00 unused unused for float values
0x70 00 00 00 00 unused unused for float values
0x74 E8 01 EF 01 unused unknown; I'd say garbage
0x78 97 3A 42 89 unused unknown; I'd say garbage
Remaining colors
0x00 00 00 00 00 0.000000 unknown (AI dodge radius ?)
0x00 00 00 00 00 0.000000 unknown (AI alert radius ?)
0x00 char[16] 00 "" flyby sound name
0x00 char[32] notfoundtex texture name or geometry name
0x00 00 00 0 unknown
0x00 00 00 0 unknown
0x00 64 00 100 unknown
0x00 3C 00 60 unknown
0x00 00 00 00 00 0 unknown
0x00 00 00 00 00 0 unknown
0x00 00 00 00 00 0 unknown
0x00 char[64] 00 "" unknown; name of a particle
0x00 AC 22 81 0B 0B 81 22 AC old offset data; start line of part 1 (variables)
0x00 E0 22 81 0B 0B 81 22 E0 old offset data; start line of part 2 (events / actions)
0x00 88 24 81 0B 0B 81 24 88 old offset data; start line of part 3 (emitted particles)
elements
1 - lifetime (value types 3 and 4 used)
2 - collision radius (it seems that this radius belongs to a sphere; only value type 3 used)
3 - x-scale (values types 0, 3, 4 and 5 used)
4 - y-scale (values types 0, 3 and 4 used)
5 - rotation (values types 0, 3 and 4 used)
6 - alpha (values types 0, 3 and 4 used)
7 - x-offset? (values types 0 and 3 used)
8 - x-shorten? (values types 0 and 3 used)
9 - tint? (values types 0, 7 and 8 used)
10 - unknown (only value type 3 used; min value used: 0, max value used: 0.95)
11 - unknown (only value type 3 used; min value used: 0, max value used: 1)
12 - unknown (only value type 3 used; min value used: 0, max value used: 100)
13 - unknown (only value type 3 used; min value used: 0, max value used: 9000)
14 - unknown (only value type 3 used; min value used: 20, max value used: 120)
15 - unknown (only value type 3 used; min value used: 12, max value used: 2000)
16 - unknown (only value type 3 used; min value used: 15, max value used: 180)
17 - unknown (only value type 3 used; min value used: 3, max value used: 180)
18 - unknown (only value type 3 used; min value used: 20, max value used: 180)
19 - unknown (only value type 3 used; min value used: 1, max value used: 100)
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 variable type: float
0x14 int32 30 00 00 00 48 offset of variable data to ??? (incremented by 4 for every next variable)
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 int32 02 02 00 00 unknown unknown; I'd say garbage
0x28 int32 00 00 00 00 unknown unknown; I'd say garbage
0x2c int32 EC 01 EA 01 unknown unknown; I'd say garbage
0x30 int32 97 3A 42 89 unknown unknown; I'd say garbage



Actions

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

The available actions are listed HERE, together with their 2 sets of parameters : A-parameters and B-parameters. (Not so verbose but a bit more i-candy: http://ssg.oni2.net/oni_b_32.htm )

bin_r_32.gif

Offset Type Raw Hex Value Description
0x00 int32 22 00 00 00 34 action: Rotate Y, see action types (or here)
0x04 int32 00 00 00 00 0 unknown
First element (black outline)
0x00 char[16] 00 "" variable name, if empty this block is not used
0x10 int32 00 00 00 00 0 runtime only
0x14 int32 00 00 00 00 0 unknown; I'd say garbage
First element (black outline)
0x00 int32 0A 00 00 00 10 value type: int32
0x04 int32 01 00 00 00 1 value (rotation space)
0x08 int32 00 00 00 00 unused not used for int32 values
0x0c int32 00 00 00 00 unused not used for int32 values
0x10 int32 00 00 00 00 unused not used for int32 values
0x14 int32 00 00 00 00 unknown unknown; I'd say garbage
0x18 int32 00 00 00 00 unknown unknown; I'd say garbage



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 unknown unknown; maybe old offset data?
0x44 int32 47 00 00 00 71 unknown (from 0 to 775)
0x48 int16 04 00 4 unknown (from 0 to 100)
0x4A int16 FF FF -1 unknown (from -1? to 53083?)
0x4C float 00 00 20 41 10.000000 amount of (sprite) copies
0x50 int32 00 00 00 00 0 interval; requieres element 1; the following intervals are 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)

(I'm not sure about this. Maybe only the next row is the interval value and requires element 1 and 2 and this row is something else.)

0x54 int32 00 00 00 00 0 the same as above; requires element 2
0x58 int32 00 00 00 00 0 type; requieres element 3, 4 and 5; the following types are 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 option; requieres element 6, 7 and 8; the following options are 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 rate; requieres element 9 and 10; the following rates are possible (values in dec):
0 - uniform (speed)
1 - stratified (speed 1, speed 2)
0x64 int32 0C 00 00 00 12 direction, requires element 11; the following directions are 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 the same as above, requires element 12
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 int32 02 02 00 00 unused not used for random float values
0x10 int32 00 00 00 00 unknown not used for random float values
0x14 int32 F6 01 ED 01 unknown unknown; maybe garbage?
0x18 int32 97 3A 42 89 unknown unknown; maybe garbage?




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