Home






AIBO ODA File Format
Contents of this website are freeware and/or copyrighted material, and may not be sold under any circumstances.
Email: dogsbody@dogsbodynet.com     Home: https://dogsbodynet.com


1. Introduction

AIBO ODA files are archives containing multiple other files.   Typically motion, LED, or sound elements for skits.  

ODA's consist of a 64-byte header, followed by an index table storing chunk names & file offset/length of the corresponding elements, followed by the chunks/elements themselves.

These files may be optionally GZIP compressed -- AIBO can decompress them on-the-fly.   In Aibo Mind, the file headers are uncompressed and the -entries- individually GZIP compressed.   This enables AIBO to dynamically load compressed audio files  without reading the entire ODA archive (as necessary for decompressing whole files).

2. ODA Header

struct oda_header_type {
char signature[4]; // "ODAR"
int oda_version; // 0x30000
int entry_count;
int index_recordlen; // Size of ODA Index Entry (always 0x90)
char reserved[0x30];
};
3. ODA Index Entry

struct oda_index_type {
char signature[4]; // Signature copied from chunk/element.
char chunk_name[0x80]; // Reference name for chunk/element (null padded).
unsigned data_ofs; // Byte offset within file of chunk/element.
int data_len; // Byte length of chunk/element.
unsigned reserved;
};
4. Example

Simple ODA file containing two LED files...
000000:  4f 44 41 52  00 00 03 00  02 00 00 00  90 00 00 00  |ODAR............|
000010:  00 00 00 00 00 00 00 00  00 00 00 00  00 00 00 00  |................|
000020:  00 00 00 00 00 00 00 00  00 00 00 00  00 00 00 00  |................|
000030:  00 00 00 00 00 00 00 00  00 00 00 00  00 00 00 00  |................|
000040:  4c 45 44 00 4e 65 77 53  6b 69 74 31  00 00 00 00  |LED.NewSkit1....|
000050:  00 00 00 00 00 00 00 00  00 00 00 00  00 00 00 00  |................|
000060:  00 00 00 00 00 00 00 00  00 00 00 00  00 00 00 00  |................|
000070:  00 00 00 00 00 00 00 00  00 00 00 00  00 00 00 00  |................|
000080:  00 00 00 00 00 00 00 00  00 00 00 00  00 00 00 00  |................|
000090:  00 00 00 00 00 00 00 00  00 00 00 00  00 00 00 00  |................|
0000a0:  00 00 00 00 00 00 00 00  00 00 00 00  00 00 00 00  |................|
0000b0:  00 00 00 00 00 00 00 00  00 00 00 00  00 00 00 00  |................|
0000c0:  00 00 00 00 60 01 00 00  41 00 00 00  00 00 00 00  |....`...A.......|
0000d0:  4c 45 44 00 4e 65 77 53  6b 69 74 32  00 00 00 00  |LED.NewSkit2....|
0000e0:  00 00 00 00 00 00 00 00  00 00 00 00  00 00 00 00  |................|
0000f0:  00 00 00 00 00 00 00 00  00 00 00 00  00 00 00 00  |................|
000100:  00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 |................|
000110:  00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 |................|
000120:  00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 |................|
000130:  00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 |................|
000140:  00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 |................|
000150:  00 00 00 00 a1 01 00 00  3a 00 00 00  00 00 00 00  |........:.......|
000160:  4d 54 68 64 00 00 00 06  00 00 00 01  00 78 4d 54  |MThd.........xMT|
000170:  72 6b 00 00 00 2b 00 ff  01 09 4d 4f  44 45 4c 3d  |rk...+....MODEL=|
000180:  32 31 30 00 ff 03 08 75  6e 74 69 74  6c 65 64 00  |210....untitled.|
000190:  ff 51 03 07 a1 20 00 90  54 7f 78 54  00 00 ff 2f  |.Q... ..T.xT.../|
0001a0:  00 4d 54 68 64 00 00 00  06 00 00 00  01 00 78 4d  |.MThd.........xM|
0001b0:  54 72 6b 00 00 00 24 00  ff 03 08 75  6e 74 69 74  |Trk...$....untit|
0001c0:  6c 65 64 00 ff 51 03 07  a1 20 00 90  3c 7f 00 3d  |led..Q... ..<..=|
0001d0:  7f 78 3c 00 00 3d 00 00  ff 2f 00                 |.x<..=.../.     |
Download Example