Anonymous

Changes

From Final Fantasy Inside

FF7/PSX/Sound/INSTRx.DAT

256 bytes added, 18:25, 20 June 2020
Add hard-coded load offset information for each files.
There are two files of such type: SOUND/INSTR.DAT - Main game sounds (93 instruments)
 {| class="wikitable"! File! Number of Instruments! Load Offset! Load Size! Description|-|SOUND/INSTR.DAT|style="text-align:right"| 93|0|0x2000 (128 * 0x40)|Main game sounds|-|SOUND/INSTR2.DAT |style="text- align:right"| 4|0xD40 (53 * 0x40)|0x12C0 (75 * 0x40)|Voices from ending theme "One Winged Angel" (4 instruments)|}
These files contain index data for all instruments from INSTRx.ALL.
== Record format ==
struct InstrumentIndexAkaoInstrumentAttr
{
/* offsets */
uint32_t attack_offset addr; // offset to attack part of instrument(SPU hardware address) uint32_t loop_offsetloop_addr; // offset to loop part of instrument(SPU hardware address)
/* ADSR Envelope settings */
uint8_t attack_ratear; // ADSR: attack rate (0x00-0x7f) uint8_t decay_ratedr; // ADSR: decay rate (0x00-0x0f) uint8_t sustain_levelsl; // ADSR: sustain level (0x00-0x0f) uint8_t sustain_ratesr; // ADSR: sustain rate (0x00-0x7f) uint8_t release_raterr; // ADSR: release rate (0x00-0x1f) uint8_t attack_modea_mode; // ADSR: attack mode
// 0x05 - (exponential)
// other 0x01 (default) - (linear) uint8_t sustain_modes_mode; // ADSR: sustain mode
// 0x01 - (linear, increase)
// 0x05 - (exponential, increase)
// 0x07 - (exponential, decrease)
// other 0x03 (default) - (linear, decrease) uint8_t release_moder_mode; // ADSR: release mode
// 0x07 - (exponential decrease)
// other 0x03 (default) - (linear decrease)
uint32_t pitch[12]; // predefined pitch set for instrument
};
Each index file takes 4 CDROM sectors, so rest unused data filled with zeroes. Attack and loop offsets isn't real file offsets, it's offsets to instruments in SPU internal memory (all instrument data from INSTRx.ALL files are copied by DMA to SPU memory in one chunk), so to translate INSTR.ALL you need tu to subtract 0x0ff0 (not sure about or you need to subtract 0x38540 for INSTR2.DAT file, haven't investigate that yet). INSTR.DAT file resides in PSX RAM at address 0x80075f30 and when it's needed to load any instrument or to reset pitch for this instrument this table is used.
112
edits