OBD:BINA/PAR3
|
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.
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.
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 )
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.
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):
(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):
|
0x5C | int32 | 03 00 00 00 | 3 | option; requieres element 6, 7 and 8; the following options are possible (values in dec):
|
0x60 | int32 | 00 00 00 00 | 0 | rate; requieres element 9 and 10; the following rates are possible (values in dec):
|
0x64 | int32 | 0C 00 00 00 | 12 | direction, requires element 11; the following directions are possible (values in dec):
|
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]] |