forked from paulguy/liextract
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathOMNIRIFF.txt
112 lines (95 loc) · 3.63 KB
/
OMNIRIFF.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
Lego Island JUKEBOX.SI format
RIFF based
"RIFF" RIFF magic
4 bytes RIFF size
"OMNI" RIFF OMNI data
Most blocks are just a 4 byte type and a 4 byte size, except LIST blocks also
contain a subtype following the size. Sizes are the entire size of the contents
of the block. LIST blocks include the subtype as part of the size.
Node blocks which contain additional blocks:
LIST
Subtypes:
MxSt - Set of objects?
MxDa - Data within a set of chunks?
MxSt - Set of chunks?
Leaf blocks which contain data:
MxHd - Some kind of header
MxOf - Some kind of list of offsets of interest in to the file?
MxOb - Description of a set of chunks? (object?)
1 byte type: 4 for WAVE audio
7 for FLIC/Smacker video
3 for muxed streams/multiple objects
10 for " STL" bitmap
6 bytes padding?
n bytes null terminated string name of object
4 bytes track number?
4 bytes unknown, always 34 or 36?
4 bytes always 0
4 bytes unknown, 0 if it's a video main MxOb
4 bytes some kind of multiple related to previous value?
4 bytes always 0
2 bytes unknown if frame, otherwise 0
4 bytes unknown if frame, otherwise 0
4 bytes always 0
4 bytes unknown if frame, otherwise 0
4 bytes always 0
4 bytes unknown if frame, otherwise 0
20 bytes always 0
4 bytes unknown, always 0x3FF0?
12 bytes always 0
4 bytes unknown, always 0x4FF0?
6 bytes always 0
2 bytes length of name of something, skip this many bytes
The first MxOb in a muxed/multiple object track ends here ...
n bytes null terminated file name of object
8 bytes always 0
4 bytes always 1?
4 bytes format? " WAV", " FLC", " SMK"
4 bytes always 1?
4 bytes always 0?
4 bytes unknown, usually 79 but for one track it's 30
... and continues here.
12 bytes a LIST MxCh header
4 bytes number of additional chunks
n bytes MxOb chunks follow
MxCh - Chunk of data
2 bytes usually 0, 16 if partial, last chunk is always 2
4 bytes the track number
4 bytes maybe a timestamp?
4 bytes chunk size but first partial chunk indicates the full size
including additional partial chunks
n bytes data
First chunks contain additional fields or header and no data:
audio chunk:
WAVE fmt header
2 bytes data type/encoding
2 bytes channels
4 bytes sample rate
4 bytes bytes per second
2 bytes bytes per sample*channels
2 bytes bits per sample
4 bytes total data size?
4 bytes unknown, always 44, RIFF header size?
bitmap chunks (" STL" format):
4 bytes header size, including this value (start of palette?)
4 bytes width
4 bytes height
2 bytes always 1
2 bytes always 8
4 bytes always 0
4 bytes image data size
1 byte always 18 or 19
1 byte always 11
2 bytes always 0
1 byte always the same as byte 24
1 byte always the same as byte 25
10 bytes always 0
1024 bytes palette data, 4 bytes per entry for 256 entries
following frame chunks for " FLC" type contain these fields:
4 bytes always 1
8 bytes always 0
4 bytes always the video width
4 bytes always the video height
audio chunk data contains PCM audio
video chunk data contains a FLC chunk
pad - Padding