The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
The first image shows the header and the beginning of the first element. The second image the end of it.
Offset |
Type |
Raw Hex |
Value |
Description
|
0x000 |
res_id |
01 35 02 00 |
565 |
00565-.CRSA
|
0x004 |
lev_id |
01 00 00 06 |
3 |
level 3
|
0x008 |
char[12] |
AD DE |
dead |
unused
|
0x014 |
int32 |
11 00 00 00 |
17 |
number of "fixed" corpses
|
0x018 |
int32 |
11 00 00 00 |
17 |
number of "used" corpses
|
0x01C |
int32 |
14 00 00 00 |
20 |
array capacity; always the same in original Oni
|
First element (black outline)
|
0x000 |
char[32] |
_lvl_3_Intro_TCL_A_corpse.dat |
ignored; the name of the source file
|
0x020 |
int[32] |
|
|
runtime only
|
0x0A0 |
link |
01 36 02 00 |
566 |
link to 00566-TCTF_lite_1.ONCC
|
0x0A4 |
matrix |
C1 74 66 3F |
00 78 3E 3D |
45 AB DD 3E
|
A6 8B 7D 3D |
19 73 7F BF |
EE 67 B0 BC
|
03 AE DC 3E |
82 2C 3D 3D |
8D B2 66 BF
|
C5 FA E7 41 |
2E 2B CB C1 |
58 B4 45 C1
|
|
0.900219 |
0.046501 |
0.432947
|
0.061901 |
-0.997850 |
0.021534
|
0.431015 |
0.0461850 |
-0.901162
|
28.997446 |
-25.396084 |
-12.356529
|
|
transform matrix for the pelvis (in world space)
|
0xD4-0x434 : transform matrices for the other 18 bones
|
0x434 |
AABB |
D4 22 8C 41 |
95 50 E9 C1 |
BC 31 9C C1
|
75 E6 14 42 |
2E 20 B1 C1 |
07 B1 D3 C0
|
|
17.517006 |
-29.164347 |
-19.524284
|
37.225056 |
-22.140713 |
-6.615360
|
|
bounding box for the whole corpse
|
- Array capacity
- The array capacity is larger than the number of "fixed"/"used" corpses to allow the engine to store new corpses at runtime. "Fixed" means that those corpses are never overwritten/deleted at runtime, all new corpses are stored after the "fixed" ones. This means that "fixed" <= "used" <= "capacity".
- Bones
- Here is one of the few places where the bone count 19 is apparently hardcoded.
- I.e., custom characters with weird bone counts won't work. See, e.g., TRIA
- What's in a bone?
- The transformation matrix (3D rotation/scale/shear/mirror and translation)
- can be seen as four 3D vectors X, Y, Z, and R in world space.
- If a bone mesh has a vertex at (x, y, z) in its native coordinates,
- then the actual position of that vertex in the level will be R + x X + y Y + z Z
- That's the transformation defined by the 3x4 transform matrix.
Reminder : the 2nd coordinate of X, Y, Z, and R is the height.
- Authoring
- The script command make_corpse(filename) creates a separate corpse file in the Oni folder. The pose of this corpse is taken from the player character (the Dev Mode shortcut Ctrl+F7, "Play dead", would have come in handy here). The format is roughly as above. The contents of the files thus created can then be inserted as elements in a level's CRSA.