all functions named

This commit is contained in:
z64a 2025-05-24 00:19:58 -04:00
parent b38ba22a90
commit c9eee0142f
12 changed files with 220 additions and 208 deletions

View File

@ -62,7 +62,9 @@ typedef u8* WaveData;
#define AU_MAX_VOLUME_16 0x7FFF
#define AU_MAX_VOLUME_32 0x7FFFFFFF
#define AU_PAN_MIN 0
#define AU_PAN_MID 64
#define AU_PAN_MAX 127
// only valid for vol != 0
#define AU_VOL_8_TO_16(vol) (((vol) << 8) | 0xFF)
@ -144,18 +146,18 @@ typedef enum MusicState {
MUSIC_STATE_PLAY_NEXT = 5,
} MusicState;
enum MusicFlags {
typedef enum MusicFlags {
MUSIC_FLAG_PLAYING = 0x01,
MUSIC_FLAG_ENABLE_PROX_MIX = 0x02,
MUSIC_FLAG_PUSHING = 0x04,
MUSIC_FLAG_POPPING = 0x08,
MUSIC_FLAG_IGNORE_POP = 0x10,
MUSIC_FLAG_FADE_IN_NEXT = 0x20,
};
} MusicFlags;
enum MusicFades {
MUSIC_CROSS_FADE = 0,
};
typedef enum BGMSnapshots {
BGM_SNAPSHOT_0 = 0,
} BGMSnapshots;
typedef enum BGMPlayerState {
BGM_PLAY_STATE_IDLE = 0,
@ -197,6 +199,12 @@ typedef enum DelayChannel {
AU_DELAY_CHANNEL_RIGHT = 2,
} DelayChannel;
typedef enum DelayState {
AU_DELAY_STATE_ON = 0, /// channel delay is enabled (though not necessarily applied)
AU_DELAY_STATE_OFF = 1, /// channel delay is disabled
AU_DELAY_STATE_REQUEST_OFF = 2, /// game thread has scheduled the channel delay to be disabled
} DelayState;
typedef enum EnvelopeCommand {
ENV_CMD_END_LOOP = 0xFB,
ENV_CMD_START_LOOP = 0xFC,
@ -445,7 +453,7 @@ typedef union SeqArgs {
u8 type;
u8 arg1;
u8 arg2;
} UnkCmdFF;
} Special;
} SeqArgs;
/// Structure for volume fading for SFX and BGM. Has independent controls for base and envelope volumes.
@ -965,11 +973,11 @@ typedef struct AuEffectChange {
/* 0x2 */ char unk_02[2];
} AuEffectChange;
typedef struct SndGlobalsSub6C {
typedef struct BGMPlayerSnapshot {
/* 0x00 */ struct BGMPlayer* bgmPlayer;
/* 0x04 */ u8 assigned;
/* 0x05 */ u8 priority;
} SndGlobalsSub6C;
} BGMPlayerSnapshot;
// found at 801D57A0
typedef struct AuGlobals {
@ -995,14 +1003,14 @@ typedef struct AuGlobals {
/* 0x0058 */ BGMInstrumentInfo* dataPRG;
/* 0x005C */ struct BGMHeader* dataBGM[2];
/* 0x0064 */ struct MSEQHeader* dataMSEQ[2];
/* 0x006C */ SndGlobalsSub6C unk_globals_6C[1];
/* 0x0074 */ struct BGMPlayer* unk_74;
/* 0x0078 */ struct BGMPlayer* unk_78;
/* 0x007C */ s32 unkSongName;
/* 0x0080 */ s32 unk_80;
/* 0x0084 */ s32 unkFadeTime;
/* 0x0088 */ s32 unkFadeStart;
/* 0x008C */ s32 unkFadeEnd;
/* 0x006C */ BGMPlayerSnapshot snapshots[1];
/* 0x0074 */ struct BGMPlayer* resumeCopyTo;
/* 0x0078 */ struct BGMPlayer* resumeCopyFrom;
/* 0x007C */ s32 resumeSongName;
/* 0x0080 */ b32 resumeRequested;
/* 0x0084 */ s32 resumeFadeTime;
/* 0x0088 */ s32 resumeFadeStart;
/* 0x008C */ s32 resumeFadeEnd;
/* 0x0090 */ MusicEventTrigger* musicEventQueuePos;
/* 0x0094 */ MusicEventTrigger* musicEventQueue;
/* 0x0098 */ u32 musicEventQueueCount;
@ -1017,7 +1025,7 @@ typedef struct AuGlobals {
/* 0x0DEC */ InstrumentBank bankSet5[16];
/* 0x11EC */ InstrumentBank bankSet6[4];
/* 0x12EC */ InstrumentBank* bankSets[8];
/* 0x130C */ u8 unk_130C;
/* 0x130C */ u8 channelDelayState;
/* 0x130D */ char unk_130D[3];
/* 0x1310 */ BKFileBuffer* auxBanks[3];
/* 0x131C */ char unk_131C[4];
@ -1033,12 +1041,12 @@ typedef struct BGMPlayerTrack {
/* 0x18 */ s8_24 subTrackVolume;
/* 0x1C */ s16_16 subTrackVolumeStep;
/* 0x20 */ s16_16 subTrackVolumeTarget;
/* 0x24 */ s32 subTrackVolumeTime;
/* 0x24 */ s32 subTrackVolumeTicks;
/* 0x28 */ s32 delayTime;
/* 0x2C */ s16_16 proxVolume;
/* 0x30 */ s16_16 proxVolumeStep;
/* 0x34 */ s16 proxVolumeTarget;
/* 0x36 */ s16 proxVolumeTime;
/* 0x36 */ s16 proxVolumeTicks;
/* 0x38 */ s16 segTrackTune;
/* 0x3A */ s16 tremoloDelay;
/* 0x3C */ char unk_3C[0x2];
@ -1093,7 +1101,7 @@ typedef struct BGMPlayer {
/* 0x014 */ s32 updateCounter;
/* 0x018 */ s32 songPlayingCounter;
/* 0x01C */ s32 songName;
/* 0x020 */ s32 fadeSongName;
/* 0x020 */ s32 pushSongName;
/* 0x024 */ s32 bgmFileIndex;
/* 0x028 */ s32 songID;
/* 0x02C */ Fade fadeInfo;
@ -1101,27 +1109,27 @@ typedef struct BGMPlayer {
/* 0x04C */ u8 effectIndices[4];
/* 0x050 */ s32 randomValue1;
/* 0x054 */ s32 randomValue2;
/* 0x058 */ u16 unk_58;
/* 0x05A */ s16 unk_5A;
/* 0x058 */ u16 unk_58; // related to legacy command system, unused
/* 0x05A */ u16 unk_5A; // related to legacy command system, unused
/* 0x05C */ s16 prevUpdateResult; // unused, may indicate error status
/* 0x05E */ char pad5E[2];
/* 0x05E */ char pad_5E[2];
/* 0x060 */ s32 curVariation;
/* 0x064 */ struct BGMHeader* bgmFile;
/* 0x068 */ SegData* compReadPos;
/* 0x06C */ SegData* compStartPos;
/* 0x070 */ SegData* phraseStartPos;
/* 0x074 */ s32 unk_74;
/* 0x074 */ u8* tickRatePtr; // related to legacy command system, unused
/* 0x078 */ BGMDrumInfo* drumsInfo;
/* 0x07C */ BGMInstrumentInfo* instrumentsInfo;
/* 0x080 */ BGMDrumInfo* drums[12];
/* 0x0B0 */ s32 masterTempo;
/* 0x0B4 */ s32 masterTempoStep;
/* 0x0B8 */ s32 masterTempoTarget;
/* 0x0BC */ s32 masterTempoTime;
/* 0x0BC */ s32 masterTempoTicks;
/* 0x0C0 */ s8_24 masterVolume;
/* 0x0C4 */ s32 masterVolumeStep;
/* 0x0C8 */ s32 masterVolumeTarget;
/* 0x0CC */ s32 masterVolumeTime;
/* 0x0CC */ s32 masterVolumeTicks;
/* 0x0D0 */ f32 playbackRate;
/* 0x0D4 */ SeqArgs seqCmdArgs;
/* 0x0D8 */ SegData* compLoopStartLabels[32];
@ -1130,7 +1138,7 @@ typedef struct BGMPlayer {
/* 0x16C */ s32 proxMixValue;
/* 0x170 */ u8 proxMixID;
/* 0x171 */ u8 proxMixVolume;
/* 0x172 */ char unk_172[0x2];
/* 0x172 */ char pad_172[2];
/* 0x174 */ s16 customPressEnvelopes[8][9]; /// Dynamically customizable press envelopes
/* 0x204 */ u8* trackVolsConfig;
/* 0x208 */ u16 masterTempoBPM;
@ -1145,19 +1153,19 @@ typedef struct BGMPlayer {
/* 0x21C */ u8 bgmDrumCount;
/* 0x21D */ u8 bgmInstrumentCount;
/* 0x21E */ u8 unk_21E;
/* 0x21F */ char unk_21F[0x1];
/* 0x21F */ char pad_21F[1];
/* 0x220 */ u8 paused;
/* 0x221 */ u8 masterState;
/* 0x222 */ u8 unk_222;
/* 0x223 */ u8 unk_223;
/* 0x224 */ u8 effectValues[4];
/* 0x227 */ char unk_228[0x2];
/* 0x227 */ char pad_228[2];
/* 0x22A */ u8 unk_22A[8];
/* 0x232 */ u8 bFadeConfigSetsVolume;
/* 0x233 */ u8 initLinkMute; /// Used to mute any linked tracks after the first one encountered.
/* 0x234 */ u8 priority;
/* 0x235 */ u8 busID;
/* 0x236 */ char unk_236[0x2];
/* 0x236 */ char pad_236[2];
/* 0x238 */ s32 cmdBufData[8]; /// Buffer for an unused (legacy) system for controlling the BGMPlayer from the main thread
/* 0x258 */ u8 cmdBufPending;
/* 0x259 */ u8 cmdBufReadPos;
@ -1196,7 +1204,7 @@ typedef struct SongUpdateRequestC {
/* 0x08 */ s32 startVolume;
/* 0x0C */ s32 finalVolume;
/* 0x10 */ s32 index;
/* 0x14 */ s32 pauseMode;
/* 0x14 */ s32 pauseMode; /// if true, the player is paused, else it will be saved to a snapshot
/* 0x18 */ char pad_18[8];
} SongUpdateRequestC; // size = 0x1C or 0x20

View File

@ -99,7 +99,7 @@ void bgm_update_music_control(void) {
music->state = stateFadeOut;
}
} else {
if (snd_song_UNK_push_stop(music->songName) == AU_RESULT_OK) {
if (snd_song_push_stop(music->songName) == AU_RESULT_OK) {
music->state = stateFadeOut;
}
}
@ -108,7 +108,7 @@ void bgm_update_music_control(void) {
music->state = stateFadeOut;
}
} else {
if (snd_song_UNK_request_push_fade_out(music->songName, 250) == AU_RESULT_OK) {
if (snd_song_request_push_fade_out(music->songName, 250) == AU_RESULT_OK) {
music->state = stateFadeOut;
}
}
@ -170,7 +170,7 @@ void bgm_update_music_control(void) {
if (music->flags & MUSIC_FLAG_IGNORE_POP) {
music->state = MUSIC_STATE_IDLE;
music->flags &= ~(MUSIC_FLAG_IGNORE_POP | MUSIC_FLAG_POPPING);
} else if (snd_song_UNK_request_pop(music->savedSongName) == AU_RESULT_OK) {
} else if (snd_song_request_pop(music->savedSongName) == AU_RESULT_OK) {
music->requestedSongID = music->savedSongID;
music->variation = music->savedVariation;
music->songName = music->savedSongName;
@ -210,7 +210,7 @@ s32 _bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s
bgm_set_target_volume(volume);
if (music->flags & MUSIC_FLAG_PUSHING) {
func_80055B80(music->songName);
snd_song_request_snapshot(music->songName);
music->flags &= ~MUSIC_FLAG_PUSHING;
}

View File

@ -76,7 +76,7 @@ void au_bgm_begin_video_frame(BGMPlayer* player) {
}
player->bgmFile = bgmFile;
bgmData = &bgmFile->info;
au_bgm_set_tick_resolution(player, BGM_SAMPLE_RATE, BgmTicksRates[((u8*)player->unk_74)[0] & 7]); //TODO revise unk_74 typing
au_bgm_set_tick_resolution(player, BGM_SAMPLE_RATE, BgmTicksRates[*(player->tickRatePtr) & 7]);
compOffset = bgmData->compositions[compID];
if (compOffset == 0) {
@ -109,7 +109,7 @@ void au_bgm_begin_video_frame(BGMPlayer* player) {
player->bgmInstrumentCount = 0;
}
} else {
if (player->unk_58) {
if (player->unk_58 != 0) {
player->masterState = BGM_PLAY_STATE_STOP;
player->nextUpdateCounter = 1;
player->nextUpdateStep = 1;
@ -304,7 +304,7 @@ AuResult au_bgm_process_fade_out(SongUpdateRequestB* request) {
player->fadeInfo.baseStep = ((volume << 0x10) - player->fadeInfo.baseVolume) / player->fadeInfo.baseTicks;
player->fadeInfo.onCompleteCallback = request->callback;
if (request->onPush == 1) {
player->fadeSongName = songName;
player->pushSongName = songName;
}
}
}
@ -321,25 +321,25 @@ AuResult au_bgm_process_fade_out(SongUpdateRequestB* request) {
return status;
}
AuResult func_8004DC80(s32 songName) {
AuResult au_bgm_complete_push(s32 songName) {
SongUpdateRequestC s;
s.songName = songName;
s.duration = 0;
s.startVolume = 0;
s.finalVolume = 0;
s.index = MUSIC_CROSS_FADE;
s.index = BGM_SNAPSHOT_0;
s.pauseMode = FALSE;
return au_bgm_process_suspend(&s, 0);
return au_bgm_process_suspend(&s, 0); // force stop
}
AuResult au_bgm_process_suspend(SongUpdateRequestC* request, s32 clearChanged) {
AuResult au_bgm_process_suspend(SongUpdateRequestC* request, b32 skipStop) {
AuResult status;
BGMPlayer* playerA;
BGMPlayer* playerB;
BGMPlayer* player;
BGMPlayer* snapshot;
s32 songName;
s32 index; //TODO
s32 index;
u32 i;
u32 j;
@ -348,15 +348,15 @@ AuResult au_bgm_process_suspend(SongUpdateRequestC* request, s32 clearChanged) {
status = AU_RESULT_OK;
if (songName != 0) {
playerA = au_bgm_get_player_with_song_name(songName);
if (playerA != NULL) {
player = au_bgm_get_player_with_song_name(songName);
if (player != NULL) {
if (!request->pauseMode) {
playerB = au_unk_get_temp_player_for_index(index);
if (playerB != NULL) {
if (songName == playerA->songName) {
if (!clearChanged) {
for (i = 0; i < ARRAY_COUNT(playerA->tracks); i++) {
BGMPlayerTrack* track = &playerA->tracks[i];
snapshot = au_get_snapshot_by_index(index);
if (snapshot != NULL) {
if (songName == player->songName) {
if (!skipStop) {
for (i = 0; i < ARRAY_COUNT(player->tracks); i++) {
BGMPlayerTrack* track = &player->tracks[i];
if (track->bgmReadPos != NULL) {
for (j = track->firstVoice; j < track->lastVoice; j++) {
track->changed.all = 0;
@ -364,22 +364,22 @@ AuResult au_bgm_process_suspend(SongUpdateRequestC* request, s32 clearChanged) {
}
}
}
playerA->globals->unk_globals_6C[index].priority = playerA->priority;
playerA->globals->unk_globals_6C[index].assigned = 1;
playerA->fadeSongName = 0;
au_copy_words(playerA, playerB, sizeof(*playerA));
if (clearChanged == 0) {
au_bgm_stop_player(playerA);
player->globals->snapshots[index].priority = player->priority;
player->globals->snapshots[index].assigned = 1;
player->pushSongName = 0;
au_copy_words(player, snapshot, sizeof(*player));
if (!skipStop) {
au_bgm_stop_player(player);
}
}
} else {
status = AU_ERROR_INVALID_SONG_DURATION;
}
} else {
if (songName == playerA->songName) {
if (playerA->masterState != BGM_PLAY_STATE_IDLE) {
playerA->paused = TRUE;
au_bgm_reset_all_voices(playerA);
if (songName == player->songName) {
if (player->masterState != BGM_PLAY_STATE_IDLE) {
player->paused = TRUE;
au_bgm_reset_all_voices(player);
}
}
}
@ -394,8 +394,8 @@ AuResult au_bgm_process_suspend(SongUpdateRequestC* request, s32 clearChanged) {
AuResult au_bgm_process_resume(SongUpdateRequestE* request) {
AuResult status;
BGMPlayer* playerA;
BGMPlayer* playerB;
BGMPlayer* player;
BGMPlayer* snapshot;
s32 index;
s32 songName;
s32 volume0;
@ -408,12 +408,12 @@ AuResult au_bgm_process_resume(SongUpdateRequestE* request) {
if (songName != 0) {
if (!request->pauseMode) {
playerA = au_unk_get_temp_player_for_index(index);
if (playerA != NULL && playerA->globals->unk_globals_6C[index].assigned == 1) {
playerB = au_get_client_by_priority(playerA->globals->unk_globals_6C[index].priority);
if (playerB != NULL) {
if (!au_bgm_player_is_active(playerB)) {
status = au_unk_80053E58(playerA->songID, playerA->bgmFile);
snapshot = au_get_snapshot_by_index(index);
if (snapshot != NULL && snapshot->globals->snapshots[index].assigned == 1) {
player = au_get_client_by_priority(snapshot->globals->snapshots[index].priority);
if (player != NULL) {
if (!au_bgm_player_is_active(player)) {
status = au_reload_song_files(snapshot->songID, snapshot->bgmFile);
duration = request->duration;
if (duration != 0) {
if (duration > SND_MAX_DURATION) {
@ -438,13 +438,13 @@ AuResult au_bgm_process_resume(SongUpdateRequestE* request) {
} else {
volume1 = AU_MAX_VOLUME_16;
}
playerB->globals->unk_74 = playerB;
playerB->globals->unk_78 = playerA;
playerB->globals->unkSongName = songName;
playerB->globals->unkFadeTime = duration;
playerB->globals->unkFadeStart = volume0;
playerB->globals->unkFadeEnd = volume1;
playerB->globals->unk_80 = 1;
player->globals->resumeCopyTo = player;
player->globals->resumeCopyFrom = snapshot;
player->globals->resumeSongName = songName;
player->globals->resumeFadeTime = duration;
player->globals->resumeFadeStart = volume0;
player->globals->resumeFadeEnd = volume1;
player->globals->resumeRequested = TRUE;
} else {
status = AU_ERROR_7;
}
@ -455,11 +455,11 @@ AuResult au_bgm_process_resume(SongUpdateRequestE* request) {
status = AU_ERROR_INVALID_SONG_DURATION;
}
} else {
playerB = au_bgm_get_player_with_song_name(songName);
if (playerB != NULL) {
if (songName == playerB->songName) {
if (playerB->paused) {
playerB->paused = FALSE;
player = au_bgm_get_player_with_song_name(songName);
if (player != NULL) {
if (songName == player->songName) {
if (player->paused) {
player->paused = FALSE;
}
}
}
@ -470,7 +470,7 @@ AuResult au_bgm_process_resume(SongUpdateRequestE* request) {
return status;
}
void func_8004DFD4(AuGlobals* globals) {
void au_bgm_restore_copied_player(AuGlobals* globals) {
BGMPlayer* player;
BGMPlayerTrack* track;
SeqNote* note;
@ -478,9 +478,9 @@ void func_8004DFD4(AuGlobals* globals) {
u32 j;
s32 k;
player = globals->unk_74;
au_copy_words(globals->unk_78, globals->unk_74, sizeof(*player));
if (globals->unkSongName == player->songName) {
player = globals->resumeCopyTo;
au_copy_words(globals->resumeCopyFrom, globals->resumeCopyTo, sizeof(*player));
if (globals->resumeSongName == player->songName) {
for (i = 0; i < ARRAY_COUNT(player->tracks); i++) {
track = &player->tracks[i];
if (track->bgmReadPos != NULL) {
@ -497,9 +497,9 @@ void func_8004DFD4(AuGlobals* globals) {
au_BGMCmd_E6_MasterEffect(player, track);
}
}
au_fade_init(&player->fadeInfo, globals->unkFadeTime, globals->unkFadeStart, globals->unkFadeEnd);
au_fade_init(&player->fadeInfo, globals->resumeFadeTime, globals->resumeFadeStart, globals->resumeFadeEnd);
}
globals->unk_80 = 0;
globals->resumeRequested = FALSE;
}
AuResult au_bgm_adjust_volume(SongUpdateRequestA* request) {
@ -531,16 +531,16 @@ void au_bgm_player_init(BGMPlayer* player, s32 priority, s32 busID, AuGlobals* g
player->updateCounter = 0;
player->songPlayingCounter = 0;
player->songName = 0;
player->fadeSongName = 0;
player->unk_58 = FALSE;
player->unk_5A = FALSE;
player->pushSongName = 0;
player->unk_58 = 0;
player->unk_5A = 0;
player->compReadPos = NULL;
player->compStartPos = NULL;
player->phraseStartPos = 0;
player->masterTempoTime = 0;
player->masterTempoTicks = 0;
player->masterTempoTarget = 0;
player->masterTempoStep = 0;
player->masterVolumeTime = 0;
player->masterVolumeTicks = 0;
player->masterVolumeTarget = 0;
player->masterVolumeStep = 0;
player->masterPitchShift = 0;
@ -631,8 +631,9 @@ void au_bgm_update_fade(BGMPlayer* player) {
player->fadeInfo.onCompleteCallback();
}
if (player->fadeSongName != 0) {
func_8004DC80(player->fadeSongName);
// Was this fade tagged as a push?
if (player->pushSongName != 0) {
au_bgm_complete_push(player->pushSongName);
} else if (player->fadeInfo.baseVolume == 0) {
au_bgm_stop_player(player);
}
@ -725,10 +726,10 @@ void au_bgm_player_initialize(BGMPlayer* player) {
track->tremoloRate = 0;
track->subTrackVolumeStep = 0;
track->subTrackVolumeTarget = 0;
track->subTrackVolumeTime = 0;
track->subTrackVolumeTicks = 0;
track->proxVolumeStep = 0;
track->proxVolumeTarget = 0;
track->proxVolumeTime = 0;
track->proxVolumeTicks = 0;
track->unk_4D = FALSE;
track->unk_4E = 0;
track->unk_4F = 0;
@ -759,12 +760,12 @@ void au_bgm_player_initialize(BGMPlayer* player) {
player->masterTempoBPM = BGM_DEFAULT_TEMPO / 100;
player->unk_21E = 0x80;
player->masterVolume = AU_MAX_VOLUME_8 << 24;
player->fadeSongName = 0;
player->unk_74 = 0;
player->pushSongName = 0;
player->tickRatePtr = NULL;
player->masterTempoTarget = 0;
player->masterPitchShift = 0;
player->detune = 0;
player->masterVolumeTime = 0;
player->masterVolumeTicks = 0;
player->masterVolumeTarget = 0;
player->masterVolumeStep = 0;
player->proxMixValue = 0;
@ -852,7 +853,7 @@ void au_bgm_player_read_composition(BGMPlayer* player) {
u32 cmd;
player->masterTempoStep = 0;
player->masterTempoTime = 0;
player->masterTempoTicks = 0;
while (continueReading) {
cmd = *player->compReadPos++;
@ -995,9 +996,9 @@ void au_bgm_player_update_stop(BGMPlayer* player) {
player->paused = FALSE;
player->songName = 0;
player->fadeSongName = 0;
player->unk_58 = FALSE;
player->unk_5A = FALSE;
player->pushSongName = 0;
player->unk_58 = 0;
player->unk_5A = 0;
for (i = 0; i < ARRAY_COUNT(player->tracks); i++) {
player->tracks[i].bgmReadPos = NULL;
}
@ -1014,6 +1015,7 @@ if (track->detourLength != 0) {\
}\
}
/// play next tick
void au_bgm_player_update_playing(BGMPlayer *player) {
s32 bVolumeFading;
u8 sp1F;
@ -1037,9 +1039,9 @@ void au_bgm_player_update_playing(BGMPlayer *player) {
bVolumeFading = FALSE;
bFinished = FALSE;
if (player->masterTempoTime != 0) {
player->masterTempoTime--;
if (player->masterTempoTime == 0) {
if (player->masterTempoTicks != 0) {
player->masterTempoTicks--;
if (player->masterTempoTicks == 0) {
player->masterTempo = player->masterTempoTarget;
player->masterTempoTarget = 0;
player->masterTempoStep = 0;
@ -1048,9 +1050,9 @@ void au_bgm_player_update_playing(BGMPlayer *player) {
}
player->nextUpdateStep = player->masterTempo * 10;
}
if (player->masterVolumeTime != 0) {
player->masterVolumeTime--;
if (player->masterVolumeTime == 0) {
if (player->masterVolumeTicks != 0) {
player->masterVolumeTicks--;
if (player->masterVolumeTicks == 0) {
player->masterVolume = player->masterVolumeTarget;
player->masterVolumeTarget = 0;
player->masterVolumeStep = 0;
@ -1106,18 +1108,18 @@ void au_bgm_player_update_playing(BGMPlayer *player) {
} else {
track->changed.volume = FALSE;
}
if (track->subTrackVolumeTime != 0) {
track->subTrackVolumeTime--;
if (track->subTrackVolumeTime == 0) {
if (track->subTrackVolumeTicks != 0) {
track->subTrackVolumeTicks--;
if (track->subTrackVolumeTicks == 0) {
track->subTrackVolume = track->subTrackVolumeTarget;
} else {
track->subTrackVolume += track->subTrackVolumeStep;
}
track->changed.volume = TRUE;
}
if (track->proxVolumeTime != 0) {
track->proxVolumeTime--;
if (track->proxVolumeTime == 0) {
if (track->proxVolumeTicks != 0) {
track->proxVolumeTicks--;
if (track->proxVolumeTicks == 0) {
track->proxVolume = track->proxVolumeTarget << 16;
} else {
track->proxVolume += track->proxVolumeStep;
@ -1325,7 +1327,7 @@ void au_bgm_player_update_playing(BGMPlayer *player) {
voice->reverb = track->subTrackReverb;
if (track->envelopeOverride != 0) {
voice->envelope.cmdListPress = (u8*) player->customPressEnvelopes[track->envelopeOverride - 1]; //TODO ???
voice->envelope.cmdListPress = (u8*) player->customPressEnvelopes[track->envelopeOverride - 1];
} else {
voice->envelope.cmdListPress = track->envelope.cmdListPress;
}
@ -1503,7 +1505,7 @@ void au_BGMCmd_E0_MasterTempo(BGMPlayer* player, BGMPlayerTrack* track) {
tempo = au_bgm_bpm_to_tempo(player, bpm);
player->masterTempo = tempo;
player->nextUpdateStep = tempo * 10;
player->masterTempoTime = 0;
player->masterTempoTicks = 0;
player->masterTempoTarget = 0;
player->masterTempoStep = 0;
}
@ -1531,7 +1533,7 @@ void au_BGMCmd_E1_MasterVolume(BGMPlayer* player, BGMPlayerTrack* track) {
}
player->masterVolume = volume;
player->masterVolumeTime = 0;
player->masterVolumeTicks = 0;
player->masterVolumeTarget = 0;
player->masterVolumeStep = 0;
player->volumeChanged = TRUE;
@ -1568,7 +1570,7 @@ void au_BGMCmd_E4_MasterTempoFade(BGMPlayer* player, BGMPlayerTrack* track) {
time = 1;
}
player->masterTempoTime = time;
player->masterTempoTicks = time;
player->masterTempoTarget = tempo;
player->masterTempoStep = (tempo - player->masterTempo) / time;
}
@ -1585,7 +1587,7 @@ void au_BGMCmd_E5_MasterVolumeFade(BGMPlayer* player, BGMPlayerTrack* track) {
time = 1;
}
player->masterVolumeTime = time;
player->masterVolumeTicks = time;
player->masterVolumeTarget = volume;
player->masterVolumeStep = (volume - player->masterVolume) / time;
}
@ -1619,7 +1621,7 @@ void au_BGMCmd_F6_TrackVolumeFade(BGMPlayer* player, BGMPlayerTrack* track) {
time = 1;
}
track->subTrackVolumeTime = time;
track->subTrackVolumeTicks = time;
track->subTrackVolumeTarget = volume;
track->subTrackVolumeStep = (volume - track->subTrackVolume) / time;
}
@ -1773,7 +1775,7 @@ void au_BGMCmd_FC_Jump(BGMPlayer* player, BGMPlayerTrack* track) {
track->envelopeOverride = 0;
track->segTrackTune = 0;
track->tremoloDepth = 0;
track->subTrackVolumeTime = 0;
track->subTrackVolumeTicks = 0;
track->randomPanAmount = 0;
track->busID = player->busID;
}
@ -1784,9 +1786,9 @@ void au_BGMCmd_FF(BGMPlayer* player, BGMPlayerTrack* track) {
u8 delayTime;
u32 i;
u32 type = player->seqCmdArgs.UnkCmdFF.type;
u32 arg1 = player->seqCmdArgs.UnkCmdFF.arg1;
u32 arg2 = player->seqCmdArgs.UnkCmdFF.arg2;
u32 type = player->seqCmdArgs.Special.type;
u32 arg1 = player->seqCmdArgs.Special.arg1;
u32 arg2 = player->seqCmdArgs.Special.arg2;
switch (type) {
case BGM_SPECIAL_SET_STEREO_DELAY:
@ -1904,10 +1906,10 @@ static u8 au_bgm_get_random_pan(BGMPlayer* player, u8 pan, u8 amplitude) {
} else {
retPan = base - ((amplitude * random) >> 8);
}
if (retPan < 0) {
retPan = 0;
} else if (retPan >= 0x80) {
retPan = 0x7F;
if (retPan < AU_PAN_MIN) {
retPan = AU_PAN_MIN;
} else if (retPan > AU_PAN_MAX) {
retPan = AU_PAN_MAX;
}
return retPan;
}
@ -1997,7 +1999,7 @@ void au_bgm_set_playback_rate(BGMPlayer* player, f32 rate) {
player->playbackRate = rate;
player->masterTempo = au_bgm_bpm_to_tempo(player, player->masterTempoBPM);
player->nextUpdateStep = player->masterTempo * 10;
player->masterTempoTime = 0;
player->masterTempoTicks = 0;
player->masterTempoTarget = 0;
player->masterTempoStep = 0;
}
@ -2037,10 +2039,10 @@ void au_bgm_set_prox_mix_fade(BGMPlayer* player, BGMPlayerTrack* track, s32 targ
duration = 1000;
}
if (target == track->proxVolume) {
track->proxVolumeTime = 0;
track->proxVolumeTicks = 0;
return;
}
track->proxVolumeTime = duration;
track->proxVolumeTicks = duration;
track->proxVolumeTarget = target;
track->proxVolumeStep = ((target << 0x10) - track->proxVolume) / duration;
}

View File

@ -59,8 +59,8 @@ Instrument* au_get_instrument(AuGlobals* globals, BankSetIndex bank, s32 patch,
void au_get_bgm_player_and_file(u32 playerIndex, BGMHeader** outCurrentTrackData, BGMPlayer** outPlayer);
void au_get_bgm_player(u32 playerIndex, BGMPlayer** outPlayer);
AuResult au_load_song_files(u32 arg0, BGMHeader* arg1, BGMPlayer* arg2);
AuResult au_unk_80053E58(s32 songID, BGMHeader* arg1);
BGMPlayer* au_unk_get_temp_player_for_index(s32 arg0);
AuResult au_reload_song_files(s32 songID, BGMHeader* arg1);
BGMPlayer* au_get_snapshot_by_index(s32 index);
AuResult au_ambient_load(u32 arg0);
BGMPlayer* au_get_client_by_priority(u8 arg0);
void au_load_INIT(AuGlobals* arg0, s32 romAddr, ALHeap* heap);
@ -75,7 +75,7 @@ s32 au_load_aux_bank(s32 bkFileOffset, s32 bankIndex);
void au_clear_instrument_group(s32 bankIndex, BankSet bankSet);
void au_set_bus_volume_level(s32 arg0, u32 idx);
s32 au_set_reverb_type(s32 arg0, s32 arg1);
void au_unk_80054DA8(u32 arg0);
void au_sync_channel_delay_enabled(u32 arg0);
void au_read_rom(s32 romAddr, void* buffer, u32 size);
void au_memset(void* dst, s32 size, u8 value);
void au_copy_bytes(s8* src, s8* dest, s32 size);
@ -90,7 +90,7 @@ void au_driver_release(void);
void au_use_global_volume(void);
void au_set_global_volume(s16 arg0);
s16 au_get_global_volume(void);
void func_80056D5C(b8 arg0);
void au_set_stereo_enabled(b8 enabled);
void au_bus_set_volume(u8 busID, u16 value);
u16 au_bus_get_volume(u8 busID);
void au_bus_set_effect(u8 busID, u8 effectID);

View File

@ -59,8 +59,8 @@ void au_engine_init(s32 outputRate) {
globals->dataMSEQ[0] = (MSEQHeader*) &dummyTrackData[0x1C00];
globals->dataMSEQ[1] = (MSEQHeader*) &dummyTrackData[0x1400];
for (i = 0; i < ARRAY_COUNT(globals->unk_globals_6C); i++) {
globals->unk_globals_6C[i].bgmPlayer = alHeapAlloc(alHeap, 1, sizeof(BGMPlayer));
for (i = 0; i < ARRAY_COUNT(globals->snapshots); i++) {
globals->snapshots[i].bgmPlayer = alHeapAlloc(alHeap, 1, sizeof(BGMPlayer));
}
globals->dataSEF = alHeapAlloc(alHeap, 1, 0x5200);
@ -77,9 +77,9 @@ void au_engine_init(s32 outputRate) {
globals->audioThreadCallbacks[0] = NULL;
globals->audioThreadCallbacks[1] = NULL;
for (i = 0; i < ARRAY_COUNT(globals->unk_globals_6C); i++) {
globals->unk_globals_6C[i].assigned = 0;
globals->unk_globals_6C[i].priority = 0;
for (i = 0; i < ARRAY_COUNT(globals->snapshots); i++) {
globals->snapshots[i].assigned = 0;
globals->snapshots[i].priority = 0;
}
for (i = 0; i < ARRAY_COUNT(globals->effectChanges); i++) {
@ -206,7 +206,7 @@ static void au_reset_instrument_entry(BGMInstrumentInfo* info) {
}
/// Called exactly once per audio frame (every 5.75ms at 32kHz).
/// Updates synthesizer, ambience, SFX, and BGM players for the current audio frame.
/// Updates MSEQ, SFX, and BGM players for the current audio frame.
void au_update_clients_for_audio_frame(void) {
AuGlobals* globals = gSoundGlobals;
SoundManager* sfxManager = gSoundManager;
@ -235,7 +235,7 @@ void au_update_clients_for_audio_frame(void) {
sfxManager->prevUpdateResult = au_sfx_manager_audio_frame_update(sfxManager);
}
// update gBGMPlayerB
// Update gBGMPlayerB
if (!PreventBGMPlayerUpdate) {
bgmPlayer = gBGMPlayerB;
if (bgmPlayer->fadeInfo.baseTicks != 0) {
@ -252,9 +252,10 @@ void au_update_clients_for_audio_frame(void) {
}
}
// Update gBGMPlayerA
if (!PreventBGMPlayerUpdate) {
if (globals->unk_80 != 0) {
func_8004DFD4(globals);
if (globals->resumeRequested) {
au_bgm_restore_copied_player(globals);
}
bgmPlayer = gBGMPlayerA;
if (bgmPlayer->fadeInfo.envelopeTicks != 0) {
@ -277,6 +278,8 @@ void au_update_clients_for_audio_frame(void) {
bgmPlayer->prevUpdateResult = au_bgm_player_audio_frame_update(bgmPlayer);
}
}
// With all clients updated, now update all voices
au_update_voices(globals);
}
@ -305,12 +308,12 @@ void au_update_clients_for_video_frame(void) {
void au_syn_begin_audio_frame(AuGlobals* globals) {
u32 i;
if (globals->unk_130C == 2) {
globals->unk_130C = 1;
if (globals->channelDelayState == AU_DELAY_STATE_REQUEST_OFF) {
globals->channelDelayState = AU_DELAY_STATE_OFF;
au_disable_channel_delay();
}
if (globals->channelDelayPending && (globals->unk_130C == 0)) {
if (globals->channelDelayPending && (globals->channelDelayState == AU_DELAY_STATE_ON)) {
switch (globals->channelDelaySide) {
case AU_DELAY_CHANNEL_LEFT:
au_set_delay_time(globals->channelDelayTime);
@ -495,7 +498,6 @@ void au_fade_update_envelope(Fade* fade) {
}
}
//TODO cleanup and documentation
/// Note that bank is supplied as BankSetIndex and not BankSet, which means it will be used to perform a raw
/// access into AuGlobals::bankSets. This does not affect values above 3, but 1 and 2 differ.
Instrument* au_get_instrument(AuGlobals* globals, BankSetIndex bank, s32 patch, EnvelopeData* envData) {
@ -614,7 +616,7 @@ AuResult au_load_song_files(u32 songID, BGMHeader* bgmFile, BGMPlayer* player) {
}
}
AuResult au_unk_80053E58(s32 songID, BGMHeader* bgmFile) {
AuResult au_reload_song_files(s32 songID, BGMHeader* bgmFile) {
AuResult status;
SBNFileEntry fileEntry;
SBNFileEntry sbnEntry;
@ -652,9 +654,9 @@ AuResult au_unk_80053E58(s32 songID, BGMHeader* bgmFile) {
return status;
}
BGMPlayer* au_unk_get_temp_player_for_index(s32 index) {
if (index == MUSIC_CROSS_FADE) {
return gSoundGlobals->unk_globals_6C[MUSIC_CROSS_FADE].bgmPlayer;
BGMPlayer* au_get_snapshot_by_index(s32 index) {
if (index == BGM_SNAPSHOT_0) {
return gSoundGlobals->snapshots[BGM_SNAPSHOT_0].bgmPlayer;
}
return NULL;
}
@ -1188,17 +1190,17 @@ s32 au_set_reverb_type(s32 soundTypeFlags, s32 reverbType) {
return 0;
}
void au_unk_80054DA8(u32 bMonoSound) {
void au_sync_channel_delay_enabled(u32 bMonoSound) {
if (bMonoSound % 2 == 1) {
// mono sound
if (gSoundGlobals->unk_130C == 0) {
gSoundGlobals->unk_130C = 2;
if (gSoundGlobals->channelDelayState == AU_DELAY_STATE_ON) {
gSoundGlobals->channelDelayState = AU_DELAY_STATE_REQUEST_OFF;
}
} else {
// stereo sound
if (gSoundGlobals->unk_130C != 0) {
if (gSoundGlobals->channelDelayState != AU_DELAY_STATE_ON) {
gSoundGlobals->channelDelayPending = TRUE;
gSoundGlobals->unk_130C = 0;
gSoundGlobals->channelDelayState = AU_DELAY_STATE_ON;
}
}
}

View File

@ -14,7 +14,7 @@ BSS s32 AuDelayCount;
AuSynDriver* gActiveSynDriverPtr = NULL;
AuSynDriver* gSynDriverPtr = NULL;
u8 AuUseGlobalVolume = FALSE;
u16 AuGlobalVolume = 0x7FFF;
u16 AuGlobalVolume = AU_MAX_VOLUME_16;
u8 AuSynStereoDirty = FALSE;
extern s16 AuEqPower[128];
@ -40,7 +40,7 @@ void au_driver_init(AuSynDriver* driver, ALConfig* config) {
gActiveSynDriverPtr = driver;
gSynDriverPtr = driver;
AuUseGlobalVolume = FALSE;
AuGlobalVolume = 0x7FFF;
AuGlobalVolume = AU_MAX_VOLUME_16;
AuSynStereoDirty = TRUE;
gSynDriverPtr->pvoices = alHeapAlloc(heap, config->num_pvoice, sizeof(*gSynDriverPtr->pvoices));
@ -281,8 +281,8 @@ s16 au_get_global_volume(void) {
return AuGlobalVolume;
}
void func_80056D5C(b8 bStereoSound) {
AuSynUseStereo = bStereoSound;
void au_set_stereo_enabled(b8 enabled) {
AuSynUseStereo = enabled;
AuSynStereoDirty = TRUE;
}

View File

@ -54,10 +54,10 @@ void au_bgm_stop_all(void);
AuResult au_bgm_is_song_playing(s32 songName);
b32 au_bgm_player_is_active(BGMPlayer* player);
AuResult au_bgm_process_fade_out(SongUpdateRequestB* s);
AuResult func_8004DC80(s32 songName);
AuResult au_bgm_process_suspend(SongUpdateRequestC* update, s32 clearChanged);
AuResult au_bgm_complete_push(s32 songName);
AuResult au_bgm_process_suspend(SongUpdateRequestC* update, b32 skipStop);
AuResult au_bgm_process_resume(SongUpdateRequestE* update);
void func_8004DFD4(AuGlobals* globals);
void au_bgm_restore_copied_player(AuGlobals* globals);
AuResult au_bgm_adjust_volume(SongUpdateRequestA* update);
void au_bgm_player_init(BGMPlayer* player, s32 arg1, s32 arg2, AuGlobals* arg3);
void au_bgm_set_effect_indices(BGMPlayer* player, u8* list);
@ -148,10 +148,10 @@ AuResult snd_song_is_playing(s32 songName);
AuResult snd_song_request_fade_in(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume);
AuResult snd_song_request_fade_in_default(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume);
AuResult snd_song_request_fade_out(s32 songName, s32 fadeTime, AuCallback callback);
AuResult snd_song_UNK_push_stop(s32 songName);
AuResult snd_song_UNK_request_pop(s32 songName);
AuResult func_80055B80(s32 songName);
AuResult snd_song_UNK_request_push_fade_out(s32 songName, s32 fadeTime);
AuResult snd_song_push_stop(s32 songName);
AuResult snd_song_request_pop(s32 songName);
AuResult snd_song_request_snapshot(s32 songName);
AuResult snd_song_request_push_fade_out(s32 songName, s32 fadeTime);
AuResult snd_song_request_pause(s32 songName);
AuResult snd_song_request_unpause(s32 songName);
AuResult snd_song_set_volume_quiet(s32 songName);

View File

@ -41,10 +41,10 @@ AuResult snd_song_is_playing(s32 songName);
AuResult snd_song_request_fade_in(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume);
AuResult snd_song_request_fade_in_default(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume);
AuResult snd_song_request_fade_out(s32 songName, s32 fadeTime, AuCallback callback);
AuResult snd_song_UNK_push_stop(s32 songName);
AuResult snd_song_UNK_request_pop(s32 songName);
AuResult func_80055B80(s32 songName);
AuResult snd_song_UNK_request_push_fade_out(s32 songName, s32 fadeTime);
AuResult snd_song_push_stop(s32 songName);
AuResult snd_song_request_pop(s32 songName);
AuResult snd_song_request_snapshot(s32 songName);
AuResult snd_song_request_push_fade_out(s32 songName, s32 fadeTime);
AuResult snd_song_request_pause(s32 songName);
AuResult snd_song_request_unpause(s32 songName);
AuResult snd_song_set_volume_quiet(s32 songName);

View File

@ -587,8 +587,8 @@ void sfx_get_spatialized_sound_params(f32 x, f32 y, f32 z, s16* volume, s16* pan
if (*pan < 1) {
*pan = 1;
}
if (*pan > 127) {
*pan = 127;
if (*pan > AU_PAN_MAX) {
*pan = AU_PAN_MAX;
}
}

View File

@ -1478,10 +1478,10 @@ static u8 au_sfx_get_random_pan(s32 seed, s32 pan, s32 amplitude) {
} else {
retPan = pan - (((amplitude & 0xFF) * random) >> 8);
}
if (retPan < 0) {
retPan = 0;
} else if (retPan > 0x7F) {
retPan = 0x7F;
if (retPan < AU_PAN_MIN) {
retPan = AU_PAN_MIN;
} else if (retPan > AU_PAN_MAX) {
retPan = AU_PAN_MAX;
}
return retPan;
}

View File

@ -202,8 +202,8 @@ void snd_start_sound(s32 soundID, u8 volume, u8 pan) {
vol |= 0xFF;
}
if (pan > 0x7F) {
pan = 0x7F;
if (pan > AU_PAN_MAX) {
pan = AU_PAN_MAX;
}
au_sfx_enqueue_event(soundManager, soundID, vol, 0, pan);
@ -217,8 +217,8 @@ void snd_start_sound_with_shift(s32 soundID, u8 volume, u8 pan, s16 pitchShift)
vol |= 0xFF;
}
if (pan > 0x7F) {
pan = 0x7F;
if (pan > AU_PAN_MAX) {
pan = AU_PAN_MAX;
}
if (pitchShift > 2 * AU_OCTAVE) {
@ -238,8 +238,8 @@ void snd_adjust_sound(s32 soundID, u8 volume, u8 pan) {
vol |= 0xFF;
}
if (pan > 0x7F) {
pan = 0x7F;
if (pan > AU_PAN_MAX) {
pan = AU_PAN_MAX;
}
au_sfx_enqueue_event(soundManager, soundID | SOUND_ID_ADJUST, vol, 0, pan);
@ -253,8 +253,8 @@ void snd_adjust_sound_with_shift(s32 soundID, u8 volume, u8 pan, s16 pitchShift)
vol |= 0xFF;
}
if (pan > 0x7F) {
pan = 0x7F;
if (pan > AU_PAN_MAX) {
pan = AU_PAN_MAX;
}
if (pitchShift > 2 * AU_OCTAVE) {
@ -555,20 +555,20 @@ AuResult snd_song_request_fade_out(s32 songName, s32 fadeTime, AuCallback callba
return au_bgm_process_fade_out(&s);
}
AuResult snd_song_UNK_push_stop(s32 songName) {
AuResult snd_song_push_stop(s32 songName) {
SongUpdateRequestC s;
s.songName = songName;
s.duration = 0;
s.startVolume = 0;
s.finalVolume = 0;
s.index = MUSIC_CROSS_FADE;
s.index = BGM_SNAPSHOT_0;
s.pauseMode = FALSE;
return au_bgm_process_suspend(&s, 0);
return au_bgm_process_suspend(&s, 0); // force stop
}
AuResult snd_song_UNK_request_pop(s32 songName) {
AuResult snd_song_request_pop(s32 songName) {
AuResult status;
SongUpdateRequestE s;
@ -577,7 +577,7 @@ AuResult snd_song_UNK_request_pop(s32 songName) {
s.duration = 2000;
s.startVolume = 1;
s.finalVolume = AU_MAX_VOLUME_8;
s.index = MUSIC_CROSS_FADE;
s.index = BGM_SNAPSHOT_0;
s.pauseMode = FALSE;
status = au_bgm_process_resume(&s);
PreventBGMPlayerUpdate = FALSE;
@ -585,20 +585,20 @@ AuResult snd_song_UNK_request_pop(s32 songName) {
return status;
}
AuResult func_80055B80(s32 songName) {
AuResult snd_song_request_snapshot(s32 songName) {
SongUpdateRequestC s;
s.songName = songName;
s.duration = 0;
s.startVolume = 0;
s.finalVolume = 0;
s.index = MUSIC_CROSS_FADE;
s.index = BGM_SNAPSHOT_0;
s.pauseMode = FALSE;
return au_bgm_process_suspend(&s, 1);
return au_bgm_process_suspend(&s, 1); // no stop
}
AuResult snd_song_UNK_request_push_fade_out(s32 songName, s32 fadeTime) {
AuResult snd_song_request_push_fade_out(s32 songName, s32 fadeTime) {
SongUpdateRequestB s;
s.songName = songName;
@ -618,10 +618,10 @@ AuResult snd_song_request_pause(s32 songName) {
s.duration = 0;
s.startVolume = 0;
s.finalVolume = 0;
s.index = MUSIC_CROSS_FADE;
s.index = BGM_SNAPSHOT_0;
s.pauseMode = TRUE;
return au_bgm_process_suspend(&s, 0);
return au_bgm_process_suspend(&s, 0); // force stop
}
AuResult snd_song_request_unpause(s32 songName) {
@ -631,7 +631,7 @@ AuResult snd_song_request_unpause(s32 songName) {
s.duration = 0;
s.startVolume = 0;
s.finalVolume = 0;
s.index = MUSIC_CROSS_FADE;
s.index = BGM_SNAPSHOT_0;
s.pauseMode = TRUE;
return au_bgm_process_resume(&s);
@ -871,13 +871,13 @@ void snd_register_callback(AuCallback func, s32 index) {
}
void snd_set_stereo(void) {
func_80056D5C(1);
au_unk_80054DA8(0);
au_set_stereo_enabled(TRUE);
au_sync_channel_delay_enabled(0);
}
void snd_set_mono(void) {
func_80056D5C(0);
au_unk_80054DA8(1);
au_set_stereo_enabled(FALSE);
au_sync_channel_delay_enabled(1);
}
void snd_set_bgm_volume(VolumeLevels volume) {

View File

@ -557,7 +557,7 @@ au_bgm_process_fade_out = 0x8004DB4C; // type:func rom:0x28F4C
func_8004DC80 = 0x8004DC80; // type:func rom:0x29080
au_bgm_process_suspend = 0x8004DCB8; // type:func rom:0x290B8
au_bgm_process_resume = 0x8004DE2C; // type:func rom:0x2922C
func_8004DFD4 = 0x8004DFD4; // type:func rom:0x293D4
au_bgm_restore_copied_player = 0x8004DFD4; // type:func rom:0x293D4
au_bgm_adjust_volume = 0x8004E0F4; // type:func rom:0x294F4
au_bgm_player_init = 0x8004E158; // type:func rom:0x29558
au_bgm_set_effect_indices = 0x8004E344; // type:func rom:0x29744
@ -665,7 +665,7 @@ au_get_bgm_player_and_file = 0x80053C58; // type:func rom:0x2F058
au_get_bgm_player = 0x80053CB4; // type:func rom:0x2F0B4
au_load_song_files = 0x80053CF8; // type:func rom:0x2F0F8
au_unk_80053E58 = 0x80053E58; // type:func rom:0x2F258
au_unk_get_temp_player_for_index = 0x80053F64; // type:func rom:0x2F364
au_get_snapshot_by_index = 0x80053F64; // type:func rom:0x2F364
au_ambient_load = 0x80053F80; // type:func rom:0x2F380
au_get_client_by_priority = 0x80054248; // type:func rom:0x2F648
au_load_INIT = 0x800542BC; // type:func rom:0x2F6BC
@ -681,7 +681,7 @@ snd_load_BK = 0x80054C4C; // type:func rom:0x3004C
func_80054C84 = 0x80054C84; // type:func rom:0x30084
au_set_bus_volume_level = 0x80054CE0; // type:func rom:0x300E0
au_set_reverb_type = 0x80054D74; // type:func rom:0x30174
au_unk_80054DA8 = 0x80054DA8; // type:func rom:0x301A8
au_sync_channel_delay_enabled = 0x80054DA8; // type:func rom:0x301A8
au_read_rom = 0x80054E00; // type:func rom:0x30200
au_memset = 0x80054E90; // type:func rom:0x30290
au_copy_bytes = 0x80054F48; // type:func rom:0x30348