OBD:BINA/PAR3: Difference between revisions

From OniGalore
Jump to navigation Jump to search
No edit summary
m (→‎Header: bitsets)
Line 16: Line 16:
{{OBDtr| 0x08 | int16      |00FF00| 9C 06      | 1692      | length again }}
{{OBDtr| 0x08 | int16      |00FF00| 9C 06      | 1692      | length again }}
{{OBDtr| 0x0A | int16      |00FF00| 12 00      | 18        | version }}
{{OBDtr| 0x0A | int16      |00FF00| 12 00      | 18        | version }}
{{OBDtr| 0x0C | int32      |00FFFF| 01 20 00 00 | 0x2001    | unknown; flags? }}
{{OBDtr| 0x0C | int32      |00FFFF| 01 20 00 00 | 0x2001    | flags1; known flags (from left to right):
{{OBDtr| 0x10 | int32      |00FFFF| 00 00 00 02 | 0x20000000 | unknown; more flags? }}
:0x00'''01'''0000 - geometry
{{OBDtr| 0x14 | int32      |FF00FF| 00 00 00 00 | 0          | unknown; looks like garbage data }}
:0x0000'''02'''00 - decal
:0x0000'''32'''00 - has contrail data}}
{{OBDtr| 0x10 | int32      |00FFFF| 00 00 00 02 | 0x02000000 | flags2; known flags (from left to right):
:0x000000'''02''' - invisible}}
{{OBDtr| 0x14 | int32      |FF00FF| 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}}
{{OBDtr| 0x18 | int16      |FF8000| 01 00      | 1          | number of variables }}
{{OBDtr| 0x18 | int16      |FF8000| 01 00      | 1          | number of variables }}
{{OBDtr| 0x1a | int16      |FF8000| 01 00      | 1          | number of events/actions }}
{{OBDtr| 0x1a | int16      |FF8000| 01 00      | 1          | number of events/actions }}

Revision as of 15:41, 6 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 )

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; known flags (from left to right):
0x00010000 - geometry
0x00000200 - decal
0x00003200 - has contrail data
0x10 int32 00 00 00 02 0x02000000 flags2; known flags (from left to right):
0x00000002 - invisible
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

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 unused for float values
0x74 E8 01 EF 01 unknown; I'd say garbage
0x78 97 3A 42 89 unknown; I'd say garbage
float property Collision radius
0x7C int32 03 00 00 00 3 value type: float
0x80 float 00 00 00 00 0.0 value
0x84 unused for float values
0x90 00 00 00 00 unknown; I'd say garbage
0x94 00 00 00 00 unknown; I'd say garbage
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 unused for float values
0xC4 00 00 00 00 unknown; I'd say garbage
0xC8 00 00 00 00 unknown; I'd say garbage
float property Y Scale
0xCC int32 03 00 00 00 3 value type: float
0xD0 float 00 00 80 3F 1.0 value
0xD4 unused for float values
0xE0 00 00 00 00 unknown; I'd say garbage
0xE4 00 00 00 00 unknown; I'd say garbage
float property Rotation
0xE8 int32 00 00 00 00 0 value type: variable
0xEC char[16] "rotate" value
0xFC 00 00 00 00 unknown; I'd say garbage
0x100 00 00 00 00 unknown; I'd say garbage
float property Alpha
0x104 int32 03 00 00 00 3 value type: float
0x108 float 00 00 80 3F 1.0 value
0x10C unused for float values
0x118 00 00 00 00 unknown; I'd say garbage
0x11C 00 00 00 00 unknown; I'd say garbage
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 unused for float values
0x154 00 00 00 00 unknown; I'd say garbage
0x158 00 00 00 00 unknown; I'd say garbage
float property X Shorten
0x15C int32 03 00 00 00 3 value type: float
0x160 float 00 00 00 00 0.0 value
0x164 unused for float values
0x170 00 00 00 00 unknown; I'd say garbage
0x174 00 00 00 00 unknown; I'd say garbage
color property Tint
0x178 int32 07 00 00 00 3 value type: color
0x17C float FF FF FF FF white value
0x180 unused for color values
0x18C 00 00 00 00 unknown; I'd say garbage
0x190 00 00 00 00 unknown; I'd say garbage
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 unused for float values
0x1A8 00 00 00 00 unknown; I'd say garbage
0x1AC 00 00 00 00 unknown; I'd say garbage
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 unused for float values
0x1C4 00 00 00 00 unknown; I'd say garbage
0x1C8 00 00 00 00 unknown; I'd say garbage
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 00 00 00... unused unused for float values
0x1E0 00 00 00 00 unknown; I'd say garbage
0x1E4 00 00 00 00 unknown; I'd say garbage
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 unused for float values
0x1FC 00 00 00 00 unknown; I'd say garbage
0x200 00 00 00 00 unknown; I'd say garbage
Others
0x204 00 00 0 unknown
0x206 00 00 0 unknown
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 unused for float values
0x220 00 00 00 00 unknown; I'd say garbage
0x224 00 00 00 00 unknown; I'd say garbage
Others
0x228 00 00 00 00 0 unknown
0x22C 00 00 00 00 0 unknown
0x230 00 00 00 00 0 unknown
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 unused for float values
0x288 00 00 00 00 unknown; I'd say garbage
0x28C 00 00 00 00 unknown; I'd say garbage
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 00 00 00... unused unused for float values
0x2A4 00 00 00 00 unknown; I'd say garbage
0x2A8 00 00 00 00 unknown; I'd say garbage
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 unused for float values
0x2C0 00 00 00 00 unknown; I'd say garbage
0x2C4 00 00 00 00 unknown; I'd say garbage
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 unused for float values
0x2DC 00 00 00 00 unknown; I'd say garbage
0x2E0 00 00 00 00 unknown; I'd say garbage
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 unused for float values
0x2F8 00 00 00 00 unknown; I'd say garbage
0x2FC 00 00 00 00 unknown; I'd say garbage
Others
0x300 AC 22 81 0B 0B 81 22 AC old offset data; start line of part 1 (variables)
0x304 E0 22 81 0B 0B 81 22 E0 old offset data; start line of part 2 (events / actions)
0x308 88 24 81 0B 0B 81 24 88 old offset data; start line of part 3 (emitted particles)
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)
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 int32 EC 01 EA 01 unknown unknown; I'd say garbage
0x30 int32 97 3A 42 89 unknown unknown; I'd say garbage
Variable types
1 - int16
2 - float
4 - string?
8 - color
4096 - int32
8192 - string?
16384 - string?

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 variable reference
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 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 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]]