AGSC (File Format): Difference between revisions
→Normal / Drum Page Entry
imported>Jackoalan (→ADSR) |
imported>Jackoalan |
||
(10 intermediate revisions by 3 users not shown) | |||
Line 103: | Line 103: | ||
==== ObjectID ==== | ==== ObjectID ==== | ||
After this are four tables of objects. Each object is identified with a 16-bit '''ObjectID''' | After this are four tables of objects. Each object is identified with a 16-bit '''ObjectID'''. | ||
Factor5 designed ObjectIDs to used in a polymorphic manner. The top 2 bits of the ID are used | |||
to differentiate between SoundMacros, Keymaps, and Layers. If the ID passes a mask of 0x4000, | |||
the object is a ''Keymap''. If the ID passes a mask of 0x8000, the object is a ''Layer''. | |||
Otherwise, the object is assumed to be a ''SoundMacro''. ''Tables'' don't require this type of | |||
polymorphism due to the context in which they are accessed. | |||
''' | |||
==== SoundMacros ==== | ==== SoundMacros ==== | ||
Line 508: | Line 492: | ||
| colspan="5" {{unknown|}} | | colspan="5" {{unknown|}} | ||
|- | |- | ||
| | | 0x36 | ||
| SETPRIORITY | | SETPRIORITY | ||
| Prio | | Prio | ||
| colspan="6" {{unknown|}} | | colspan="6" {{unknown|}} | ||
|- | |- | ||
| | | 0x37 | ||
| ADDPRIORITY | | ADDPRIORITY | ||
| {{unknown|}} | | {{unknown|}} | ||
Line 519: | Line 503: | ||
| colspan="4" {{unknown|}} | | colspan="4" {{unknown|}} | ||
|- | |- | ||
| | | 0x38 | ||
| AGECNTSPEED | | AGECNTSPEED | ||
| colspan="3" {{unknown|}} | | colspan="3" {{unknown|}} | ||
| colspan="4" | Time | | colspan="4" | Time | ||
|- | |- | ||
| | | 0x39 | ||
| AGECNTVEL | | AGECNTVEL | ||
| {{unknown|}} | | {{unknown|}} | ||
Line 738: | Line 722: | ||
| colspan="2" | Immediate | | colspan="2" | Immediate | ||
| {{unknown|}} | | {{unknown|}} | ||
|- | |||
| 0x65 | |||
| SET_VAR | |||
| Ctrl | |||
| A = | |||
| colspan="1" {{unknown|}} | |||
| colspan="2" | Immediate | |||
| colspan="2" {{unknown|}} | |||
|- | |- | ||
| 0x70 | | 0x70 | ||
Line 872: | Line 864: | ||
===== Curves ===== | ===== Curves ===== | ||
To express a volume curve, the table data is simply an arbitrarily-sized table of <code>uint8_t</code> values | To express a volume curve, the table data is simply an arbitrarily-sized table of <code>uint8_t</code> values (although typically in MIDI range [0,127]) | ||
==== Keymaps ==== | ==== Keymaps ==== | ||
Line 1,070: | Line 1,062: | ||
These function the same way as the SoundMacro ID table, but indexes other types of entities instead. | These function the same way as the SoundMacro ID table, but indexes other types of entities instead. | ||
'''Note:''' Keymap and Layer IDs in these tables have their top 2 bits (indicating their type) masked off. | |||
Keymaps must be OR'd with 0x4000 and Layers must be OR'd with 0x8000 in order to reconstruct the actual IDs. | |||
==== Normal / Drum Page Entry ==== | ==== Normal / Drum Page Entry ==== | ||
Line 1,101: | Line 1,096: | ||
| '''Padding''' | | '''Padding''' | ||
|} | |} | ||
'''Note:''' The drum table is accessed when the MIDI channel is 10, otherwise the normal table is accessed. | |||
==== SFX Entry ==== | ==== SFX Entry ==== | ||
Line 1,138: | Line 1,135: | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| | | 1 | ||
| '''Definite Key'''; The default pitch ( | | '''Definite Key'''; The default pitch - usually 0x3C (MIDI C4) | ||
|- | |||
| 0x9 | |||
| 1 | |||
| '''Padding''' | |||
|} | |} | ||
Line 1,288: | Line 1,289: | ||
== Tools == | == Tools == | ||
* [https://drive.google.com/file/d/0B9MLV21H7SDvemgwN1daYnliSjA/view?usp=sharing Prime Audio Decoder] by | * [https://drive.google.com/file/d/0B9MLV21H7SDvemgwN1daYnliSjA/view?usp=sharing Prime Audio Decoder] by Aruki will dump all sound effects contained in a given AGSC file. | ||
[[Category:File Formats]] | [[Category:File Formats]] |