AGSC (File Format): Difference between revisions
Jump to navigation
Jump to search
→Tables
imported>Jackoalan (→Tables) |
imported>Jackoalan (→Tables) |
||
Line 734: | Line 734: | ||
'''Tables''' have two functions: for defining curves for volume scaling, or to be used as ADSR envelopes. | '''Tables''' have two functions: for defining curves for volume scaling, or to be used as ADSR envelopes. | ||
The tables continue until 0xffffffff terminator is reached. | |||
{| class="wikitable" | {| class="wikitable" | ||
Line 746: | Line 748: | ||
| 0x4 | | 0x4 | ||
| 2 | | 2 | ||
| '''Table | | '''Table ObjectID''' | ||
|- | |- | ||
| 0x6 | | 0x6 | ||
Line 802: | Line 804: | ||
To express a curve, the table data is simply a 128-element table of <code>uint8_t</code> values | To express a curve, the table data is simply a 128-element table of <code>uint8_t</code> values | ||
==== Keymaps ==== | |||
'''Keymaps''' are swappable, fixed-length tables mapping 128 MIDI keys to sound-producing objects. | |||
The keymaps continue until 0xffffffff terminator is reached. | |||
{| class="wikitable" | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 4 | |||
| '''Keymap size'''; (usually 0x1032) | |||
|- | |||
| 0x4 | |||
| 2 | |||
| '''Keymap ObjectID''' | |||
|- | |||
| 0x6 | |||
| 2 | |||
| '''Padding''' | |||
|- | |||
| 0x1032 | |||
| colspan=2 {{Unknown|128 Keymap entries}} | |||
|} | |||
===== Keymap Entry ===== | |||
{| class="wikitable" | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 2 | |||
| '''ObjectID''' | |||
|- | |||
| 0x2 | |||
| 1 | |||
| '''Transpose''' | |||
|- | |||
| 0x3 | |||
| 1 | |||
| '''Pan''' | |||
|- | |||
| 0x4 | |||
| 1 | |||
| '''Priority Offset''' | |||
|- | |||
| 0x8 | |||
| colspan=2 {{Unknown|Padded to 8 bytes}} | |||
|} | |||
==== Layers ==== | |||
'''Layers''' are one-to-many, ranged keyboard mappings to sound-producing objects. | |||
The layers continue until 0xffffffff terminator is reached. | |||
{| class="wikitable" | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 4 | |||
| '''Layer size''' | |||
|- | |||
| 0x4 | |||
| 2 | |||
| '''Layer ObjectID''' | |||
|- | |||
| 0x6 | |||
| 2 | |||
| '''Padding''' | |||
|- | |||
| Varies | |||
| colspan=2 {{Unknown|Layer data}} | |||
|} | |||
===== Layer Data ===== | |||
Within the layer data, there is a '''u32 count''' of layer range structs: | |||
{| class="wikitable" | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 2 | |||
| '''ObjectID''' | |||
|- | |||
| 0x2 | |||
| 1 | |||
| '''Key Lo''' | |||
|- | |||
| 0x3 | |||
| 1 | |||
| '''Key Hi''' | |||
|- | |||
| 0x4 | |||
| 1 | |||
| '''Transpose''' | |||
|- | |||
| 0x5 | |||
| 1 | |||
| '''Volume''' | |||
|- | |||
| 0x6 | |||
| 1 | |||
| '''Pan''' | |||
|- | |||
| 0x7 | |||
| 1 | |||
| '''Priority Offset''' | |||
|- | |||
| 0x8 | |||
| 1 | |||
| '''Unknown'''; usually 0x40 | |||
|- | |||
| 0xC | |||
| colspan=2 {{Unknown|Padded to 12 bytes}} | |||
|} | |||
The entire Pool chunk is terminated by a value of 0xFFFF. | The entire Pool chunk is terminated by a value of 0xFFFF. |