OBD:BINA/PAR3: Difference between revisions
(that's just the other way around...) |
|||
Line 75: | Line 75: | ||
*6 - contrail (face camera) | *6 - contrail (face camera) | ||
†If you children particles (bullets, for example) to leave the shooting character unharmed, the parent particles must have this flag set, too | †If you children particles (bullets, for example) and want to leave the shooting character unharmed, the parent particles must have this flag set, too | ||
===Event groups (0x20 - 0x5F)=== | ===Event groups (0x20 - 0x5F)=== |
Revision as of 21:35, 26 July 2008
|
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.
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):
|
0x10 | int32 | 00 00 00 02 | 0x02000000 | flags2; used flags (from left to right):
|
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 emitters |
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)
- 4 - flat (perpendicular)
- 7 - discus (parallel, orient to particle)
Contrail modes:
- 5 - contrail (orient to particle)
- 6 - contrail (face camera)
†If you children particles (bullets, for example) and want to leave the shooting character unharmed, the parent particles must have this flag set, too
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 | AI dodge radius |
0x9C | float | 00 00 00 00 | 0.000000 | AI alert radius |
0xA0 | char[16] | 00 | "" | flyby sound name |
Particle Appearance
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
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 | 7 | 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 | max decals | |
0x20A | 3C 00 | 60 | decal fade frames | |
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 |
Particle Attractor
Offset | Type | Raw Hex | Value | Description |
---|---|---|---|---|
0x228 | int32 | 00 00 00 00 | none | particle attractor type
|
0x22C | int32 | 00 00 00 00 | distance | particle attractor selection
|
0x230 | 00 00 00 00 | 0 | runtime only | |
0x234 | char[64] | 00 | "" | particle name (when attractor type is 3) or particle class name (when attractor type is 2) |
float property Attractor Max Distance (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 Attractor Max Angle (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 Attractor Angle Select Min (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 Attractor Angle Select Max (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 Attractor Angle Select Weight (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 | |||
Runtime only | ||||
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.
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
- 0x0001 (0x01 00 00 00) - int16 (storage size: 2)
- 0x0002 (0x02 00 00 00) - float (storage size: 4)
- 0x0004 (0x04 00 00 00) - string? (storage size: 16)
- 0x0008 (0x08 00 00 00) - color (storage size: 4)
- 0x1000 (0x00 10 00 00) - pingpong state (storage size: 4)
- 0x1010 (0x10 10 00 00) - action index (storage size: 4)
- 0x1020 (0x20 10 00 00) - emitter (storage size: 4)
- 0x1030 (0x30 10 00 00) - blast falloff (storage size: 4)
- 0x1040 (0x40 10 00 00) - coord frame (storage size: 4)
- 0x1050 (0x50 10 00 00) - collision orient (storage size: 4)
- 0x1060 (0x60 10 00 00) - boolean (storage size: 4)
- 0x1070 (0x70 10 00 00) - ambient sound (storage size: 4)
- 0x1080 (0x80 10 00 00) - impulse sound (storage size: 4)
- 0x1090 (0x90 10 00 00) - impact modifier (storage size: 4)
- 0x10A0 (0xA0 10 00 00) - damage type (storage size: 4)
- 0 - normal
- 1 - minor stun
- 2 - major stun
- 3 - minor knockdown
- 4 - major knockdown
- 5 - blownup
- 6 - pickup
- 0x2000 (0x00 20 00 00) - string? (storage size: 16)
- 0x4000 (0x00 40 00 00) - string? (storage size: 16)
Actions
Every action takes up 424=0x1A8 bytes. The number of actions is specified at 0x1A in the header.
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 |
Emitters
Every emitter takes up 444=0x1BC bytes. The number of emitters is specified at 0x1C in the header. Each emitter has space for 12 parameters but it appears that the last 2 are never used.
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 | 0x47 | flags; used values:
|
0x48 | int16 | 04 00 | 4 | turn off treshold |
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 | emitter number? |
0x54 | int32 | 00 00 00 00 | 0 | emit rate; can use parameters 1 and 2; possible values (in dec):
|
0x58 | int32 | 00 00 00 00 | 0 | position; can use parameters 3, 4 and 5; possible values (in dec):
|
0x5C | int32 | 03 00 00 00 | 3 | direction; can use parameters 6, 7 and 8; possible values (in dec):
|
0x60 | int32 | 00 00 00 00 | 0 | speed; can use parameters 9 and 10; possible values (in dec):
|
0x64 | int32 | 0C 00 00 00 | 12 | orientation dir; possible values (in dec):
|
0x68 | int32 | 04 00 00 00 | 4 | orientation up; same possible values as for orientation dir |
First emitter parameter | ||||
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]] |