.obj file format

All numbers are little-endian, strings are UTF-16LE.

File header
First  bytes are file header. 00000000 ea 00 00 00 30 00 00 00  32 00 30 00 30 00 39 00  |....0...2.0.0.9.| 00000010 2f 00 30 00 33 00 2f 00  31 00 37 00 20 00 31 00  |/.0.3./.1.7. .1.| 00000020 32 00 3a 00 32 00 33 00  3a 00 33 00 37 00 00 00  |2.:.2.3.:.3.7...|

First  bytes specify block count (234 in this case).

The rest ( bytes) can be ignored.

Blocks
Each file is divided into pieces (let's call them "blocks"). Blocks start right after the header. Example of such a block: 00000030 10 00 00 00 bd 02 00 00  00 00 00 00 00 00 00 00  |................| Here first  bytes specify block size (including those   bytes). Next  bytes (  in this case) specify block type.

64 00


Dialogue entry. 000004c0 30 00 00 00 64 00 ff ff  ff ff 0c 00 00 00 8a 30  |0...d..........0| 000004d0 85 30 46 30 58 30 00 30  6e 30 00 30 53 30 46 30  |.0F0X0.0n0.0S0F0| 000004e0 52 30 4d 30 01 ff 00 00  00 00 00 00 00 00 00 00  |R0M0............|
 * — block size
 * — block id
 * — sound id ( = no sound)
 * — unknown (character sprite to animate?)
 * — string length (number of characters)
 * — string, UTF16-LE (りゅうじ　の　こうげき！)
 * — padding