112
edits
Changes
From Final Fantasy Inside
Add new structures, SPU shadows and music player
= Structures =
struct MusicPlayerTrack AkaoSpuVoiceAttr { uint32_t voice; // 0x00: voice number uint32_t update_flags; // 0x04: bitset that indicates what SPU registers need to be updated uint32_t addr; // 0x08: waveform data start address (SPU address) uint32_t loop_addr; // 0x0c: loop start address (SPU address) uint32_t a_mode; // 0x10: ADSR: attack rate mode uint32_t s_mode; // 0x14: ADSR: sustain rate mode uint32_t r_mode // 0x18: ADSR: release rate mode uint16_t pitch; // 0x1c: pitch uint16_t ar; // 0x1e: ADSR: attack rate uint16_t dr; // 0x20: ADSR: decay rate uint16_t sl; // 0x22: ADSR: sustain level uint16_t sr; // 0x24: ADSR: sustain rate uint16_t rr; // 0x26: ADSR: release rate SpuVolume volume; // 0x28: volume (left and right) }; struct AkaoPlayer // instances exist at 0x8009A104 and 0x80099FC8 { uint32_t stereo_mode; // 0x00: stereo mode (1: stereo, 4: surround, otherwise: mono) uint32_t field_4; // 0x04: unknown voice bitset uint32_t field_8; // 0x08: unknown voice bitset uint32_t field_C; // 0x0c: unknown voice bitset uint32_t field_10; // 0x10: unknown voice bitset uint32_t field_14; // 0x14: unknown voice bitset uint32_t tempo; // 0x18: tempo (Q16 fixed-point number) int32_t tempo_slope; // 0x1c: slope of tempo slider (Q16 fixed-point number) uint32_t time_counter; // 0x20: time counter (0x10000 = 1 tick) uint32_t overlay_voices; // 0x24: bitset that indicates the sub-voices used for overlay (opcode 0xF4) uint32_t alternate_voices; // 0x28: bitset that indicates the sub-voices used for alternate voice (opcode 0xF8) uint32_t noise_voices; // 0x2c: bitset that indicates the voices with noise mode enabled uint32_t reverb_voices; // 0x30: bitset that indicates the voices with reverb enabled uint32_t pitch_lfo_voices; // 0x34: bitset that indicates the voices with pitch LFO (frequency modulation) mode enabled uint32_t spucnt; // 0x38: SPUCNT shadow uint32_t reverb_type; // 0x3c: reverb type uint32_t reverb_depth; // 0x40: reverb depth (Q16 fixed-point number) int32_t reverb_depth_slope; // 0x44: slope of reverb depth slider (Q16 fixed-point number) uint16_t tempo_slide_length; // 0x48: tempo slide length uint16_t song_id; // 0x4a: current song id uint16_t field_4C; // 0x4c: unknown uint16_t field_4E; // 0x4e: unknown uint16_t reverb_depth_slide_length; // 0x50: length of reverb depth slide uint16_t field_52; // 0x52: unknown uint16_t field_54; // 0x54: unknown uint16_t beats_per_measure; // 0x56: beats per measure uint16_t beat; // 0x58: current beat uint16_t ticks_per_beat; // 0x5a: ticks per beat uint16_t tick; // 0x5c: current ticks per beat uint16_t measure; // 0x5e: current measure
};