OBD:BINA/PAR3: Difference between revisions

From OniGalore
Jump to navigation Jump to search
m (fixed image links and header alignment)
(work in progress...)
Line 8: Line 8:
http://ssg.oni2.net/images/bin_r_3h.gif
http://ssg.oni2.net/images/bin_r_3h.gif


{| width="100%" border=1 cellspacing=0 cellpadding=0 bgcolor="#000000"
{{Table}}
|- bgcolor="#FFDDBB" align="CENTER"
{{OBDth}}
| width="15%" | '''Hex'''
{{OBDtr| 0x00 | char[4]    |FF0000| 33 52 41 50 | PAR3       | signature }}
| width="15%" | '''Translation'''
{{OBDtr| 0x04 | int32      |FFFF00| 9C 06 00 00 | 1692       | length of the following 3d particle part from this position }}
| width="60%" | '''Meaning'''
{{OBDtr| 0x08 | int16      |00FF00| 9C 06       | 1692       | length again }}
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
{{OBDtr| 0x0A | int16      |00FF00| 01 20      | 18         | unknown; always the same }}
| bgcolor="#FF0000" | 33 52 41 50
{{OBDtr| 0x0C | int32      |00FFFF| 01 20 00 00 | 0x2001    | unknown; flags? }}
| PAR3
{{OBDtr| 0x10 | int32      |00FFFF| 00 00 00 02 | 0x20000000 | unknown; more flags? }}
| align="LEFT" | particle 3d
{{OBDtr| 0x14 | int32      |FF00FF| 00 00 00 00 | 0         | unknown; looks like garbage data }}
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
{{OBDtr| 0x18 | int16      |FF8000| 01 00       | 1         | number of variables }}
| bgcolor="#FFFF00" | 9C 06 00 00
{{OBDtr| 0x1a | int16      |FF8000| 01 00       | 1         | number of events/actions }}
| 1692
{{OBDtr| 0x1c | int16      |FF8000| 01 00       | 1         | number of emitted particles }}
| align="LEFT" | 1692 bytes is the length of the following 3d particle part from this position
{{OBDtr| 0x1e | int16      |FF8000| 00 01       | 256       | unknown; always the same }}
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| bgcolor="#00FF00" | 9C 06
| 1692
| align="LEFT" | file size again
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| bgcolor="#00FF00" | 12 00
| 18
| align="LEFT" | unknown; always the same
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| bgcolor="#00FFFF" | 01 20 00 00
| unknown
| align="LEFT" | unknown; looks like bitsets
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| bgcolor="#00FFFF" | 00 00 00 02
| unknown
| align="LEFT" | unknown; looks like bitsets
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| bgcolor="#FF00FF" | 00 00 00 00
| 0
| align="LEFT" | unknown; looks like garbage data
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| bgcolor="#FF8000" | 01 00
| 1
| align="LEFT" | amount of variables
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| bgcolor="#FF8000" | 01 00
| 1
| align="LEFT" | amount of events/actions
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| bgcolor="#FF8000" | 01 00
| 1
| align="LEFT" | amount of emitted particles
|- bgcolor="#FFEEDD" align="CENTER" valign="TOP"
| bgcolor="#FF8000" | 00 01
| 256
| align="LEFT" | unknown; always the same
|}
|}
===Event groups (0x20 - 0x5F)===
===Event groups (0x20 - 0x5F)===
Here we have 16 4-byte slots, which correspond to the following 16 particle event types :
Here we have 16 4-byte slots, which correspond to the following 16 particle event types :
Line 263: Line 228:


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

Revision as of 10:11, 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).

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 Raw hex Value Meaning
0x20 00 00 01 00 0, 1 action 0 (actions 0 to 1) triggered by update event
0x24 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by pulse event
0x28 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by start event
0x2C 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by stop event
0x30 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by bgfx_start event
0x34 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by bgfx_stop event
0x38 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by hit_wall event
0x3C 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by hit_char event
0x40 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by lifetime event
0x44 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by explode event
0x48 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by brokenlink event
0x4C 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by create event
0x50 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by die event
0x54 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by newattractor event
0x58 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by delay_start event
0x5C 01 00 01 00 1, 1 no action (actions 1 to 1) triggered by delay_stop event

Other crap

First of the 19 variable/constant blocks of the header :
03 00 00 00 3 type (3:float, 0:16-byte string)
00 00 40 3F 0.750000 value
80 0B 00 00 unknown value (string only)
02 02 00 00 unknown value (string only)
00 00 00 00 unknown value (string only)
E8 01 EF 01 unknown unknown; I'd say garbage
97 3A 42 89 unknown unknown; I'd say garbage
Below follow the remaining colors.
00 00 00 00 0.000000 unknown
00 00 00 00 0.000000 unknown
not used unknown; 16 byte string
notfoundtex texture name; the first 00 is the stop byte; 32 byte string
00 00 0 unknown
00 00 0 unknown
64 00 100 unknown
3C 00 60 unknown
00 00 00 00 0 unknown
00 00 00 00 0 unknown
00 00 00 00 0 unknown
not used unknown; name of a particle; 64 byte string
AC 22 81 0B unknown unknown; maybe garbage?
E0 22 81 0B unknown unknown; maybe garbage?
88 24 81 0B unknown unknown; maybe garbage?



Variables

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

bin_r_31.gif

Hex Translation Meaning
Variable name and type
rotate name of the variable
02 00 00 00 2 variable type (float)
30 00 00 00 48 offset of variable data to ??? (incremented by 4 for every next variable)
Variable value parameters
04 00 00 00 4 3:single value, 4:min-max (random?), 7:...
00 00 B4 C3 -360.000000 min value (or single value)
00 00 B4 43 360.000000 max value (or garbage)
02 02 00 00 unknown unknown; I'd say garbage
00 00 00 00 unknown unknown; I'd say garbage
EC 01 EA 01 unknown unknown; I'd say garbage
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.

bin_r_32.gif

Hex Translation Meaning
22 00 00 00 34 action type (Rotate Y)
00 00 00 00 0 unknown, looks like a (big) pointer
First of the eight A-parameters :
not used name of the parameter (e.g. variable name)
00 00 00 00 0 type of the parameter
00 00 00 00 0 unknown; I'd say garbage
First of the eight B-parameters :
0A 00 00 00 10 type of the "space" parameter : integer
01 00 00 00 1 value of the "space" parameter : world, relative, dunno
00 00 00 00 unknown value (string only)
00 00 00 00 unknown value (string only)
00 00 00 00 unknown value (string only)
00 00 00 00 unknown unknown; I'd say garbage
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

Hex Translation Meaning
env_bomb_p09 name of the particle to emit (3RAPenv_bomb_p09.BINA); 64 byte string
C0 92 62 00 unknown unknown; maybe old offset data?
47 00 00 00 71 unknown
04 00 4 unknown
FF FF -1 unknown
00 00 20 41 10.000000 unknown
00 00 00 00 0 unknown
00 00 00 00 0 unknown
00 00 00 00 0 unknown
03 00 00 00 3 unknown
00 00 00 00 0 unknown
0C 00 00 00 12 unknown
04 00 00 00 4 unknown
Below follows the first of the twelve blocks of the package.
04 00 00 00 4 identifier
00 00 00 3E 0.125000 unknown
00 00 00 3F 0.500000 unknown
02 02 00 00 unknown unknown; maybe garbage?
00 00 00 00 unknown unknown; maybe garbage?
F6 01 ED 01 unknown unknown; maybe garbage?
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]]