Table
of Contents
- Introduction
- AMS1.0 Format
- AMS1.1 Format
- AMS1.1 Block Records
- AMS1.1 Entry Records
- Example
1. Introduction
AIBO Action Files (*.act) are used to organize individual
skits. They
tell Skitter (and Master Studio) which
Motion/LED/Sound files belong together. Action files store
the
filenames of the various skit elements, along with the action/skit
name,
comments, and the platform type (110/210/220/310/7).
There are two versions of the action file. The first
version (AMS1.0) only supports the
210. The second version
(AMS1.1) can support all AIBO platforms.
2.
AMS1.0
Format
The first action file format uses fixed size fields for
everything. It's organized in three blocks, but none ever
change size. This makes loading/saving the format very
easy. There are numerous unknown fields, which always
appear to be zero.
struct action_entry_type { unsigned signature; // "OACT" unsigned block0_id; // always 0 unsigned block0_len; // always 0x10 (len of block) unsigned unknown[2]; // Version info?
unsigned block1_id; // always 1 unsigned block1_len; // always 0x408 (len of block) char action_title[0x100]; char action_company[0x100]; char action_model[0x100]; char action_comment[0x100];
unsigned block2_id; // always 2 unsigned block2_len; // always 0x434 (len of block) char action_motion[0x100]; unsigned unknown2; // always 0 char action_sound[0x100]; unsigned unknown3; // always 0 char action_led[0x100]; unsigned unknown4; // always 0 char action_mark[0x100]; unsigned unknown5[2]; // always 0 unsigned motion_valid; // Set 1 if motion valid. unsigned sound_valid; // Set 1 if sound valid (MIDI/WAV) unsigned led_valid; // Set 1 if led valid. unsigned unknown6; // always 0 unsigned start_time; // Sound start time. unsigned unknown7; // always 0 };
|
The motion/sound/led fields hold pathnames relative to the position of
the action file. For example:
- Motion\myskit.mtn
- Sound\myskit.wav
- LED\myskit.led
The marker file is used internally by only Master Studio. Marker
files are ignored by Skitter.
3.
AMS1.1
Format
The newer action file format is more complicated, with a different
block organization and variable size data fields. However,
these files are generally much smaller than the AMS1.0
format as a
result. The files consist of a signature followed by one or
more
block records.
struct atn_header_type { unsigned signature; "OATN" };
|
4.
AMS1.1
Block Records
struct atn_block_type { unsigned short block_len; // len not inclusive of atn_block_type unsigned short block_type; };
|
The block types are:
- 0x0000 - Action Info Block
- 0x0100 - Filename Blocks
- 0xFFFF - End of file
indicator
Blocks contain one
or more entry records. There is always
an action info block, followed by up to three filename blocks.
Filename blocks are always ordered: Motion, Sound, LED.
Pathnames stored in the filename blocks are relative to the position of
the action file. For example:
- Motion\myskit.mtn
- Sound\myskit.wav
- LED\myskit.led
5.
AMS1.1
Entry Records
struct atn_entry_type { unsigned short entry_len; // len not inclusive of atn_entry_type unsigned short entry_type; };
|
Action Info Block entry types are:
- 0x0002 Action Name
- 0x0003 Creator Name
- 0x0004 AIBO Model (ie: "ERS-210")
- 0x0005 AIBO Platform (ie: "DRX-910")
- 0x0006 Comment
- 0x0080 Company Name
Filename Block entry types are:
- 0x0101 Unknown (4-byte value)
- 0x0102 Filename
- 0x0103 Set 1 if filename valid (4-byte value)
- 0x0104 Start Time if sound file (in keyframes). Zero
otherwise.
- 0x0105 Unknown
6.
Example
Green:
Block
Record Headers
Brown:
Entry
Record Headers
000000: 4f 41 54 4e 5d 00 00 00 05 00 02 00 70 69 61 6e |OATN].......pian| 000010: 6f 07 00 03 00 53 6b 69 74 74 65 72 1b 00 80 00 |o....Skitter....| 000020: 44 6f 67 73 42 6f 64 79 20 26 20 52 61 74 63 68 |DogsBody & Ratch| 000030: 65 74 20 53 6f 66 74 77 61 72 65 07 00 04 00 45 |et Software....E| 000040: 52 53 2d 32 31 30 07 00 05 00 44 52 58 2d 39 31 |RS-210....DRX-91| 000050: 30 00 00 06 00 04 00 07 00 01 00 00 00 04 00 08 |0...............| 000060: 00 03 00 00 00 34 00 00 01 04 00 01 01 02 00 00 |.....4..........| 000070: 00 10 00 02 01 4d 6f 74 69 6f 6e 5c 70 69 61 6e |.....Motion\pian| 000080: 6f 2e 6d 74 6e 04 00 03 01 01 00 00 00 04 00 04 |o.mtn...........| 000090: 01 00 00 00 00 04 00 05 01 00 00 00 00 33 00 00 |.............3..| 0000a0: 01 04 00 01 01 00 00 00 00 0f 00 02 01 53 6f 75 |.............Sou| 0000b0: 6e 64 5c 70 69 61 6e 6f 2e 6d 69 64 04 00 03 01 |nd\piano.mid....| 0000c0: 01 00 00 00 04 00 04 01 e1 00 00 00 04 00 05 01 |................| 0000d0: 00 00 00 00 31 00 00 01 04 00 01 01 00 00 00 00 |....1...........| 0000e0: 0d 00 02 01 4c 45 44 5c 70 69 61 6e 6f 2e 6c 65 |....LED\piano.le| 0000f0: 64 04 00 03 01 01 00 00 00 04 00 04 01 00 00 00 |d...............| 000100: 00 04 00 05 01 00 00 00 00 00 00 ff ff |............. |
Download Example
|