1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2024-11-29 03:34:07 +00:00

Misc Sequence Docs (#1400)

* misc bgm and fanfare docs

* more docs

* function.h cleanup

* fix horse

* typo

* add comment to song of storms cutscene in windmill

* PR review

* woopsie

* seqId macros

* revert macro
This commit is contained in:
engineer124 2022-10-16 12:12:36 -04:00 committed by GitHub
parent 7996df1913
commit e4664b4750
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 91 additions and 88 deletions

View file

@ -1826,9 +1826,9 @@ void func_800F4524(Vec3f* pos, u16 sfxId, s8 arg2);
void func_800F4254(Vec3f* pos, u8 level); void func_800F4254(Vec3f* pos, u8 level);
void Audio_PlaySfxRiver(Vec3f* pos, f32 freqScale); void Audio_PlaySfxRiver(Vec3f* pos, f32 freqScale);
void Audio_PlaySfxWaterfall(Vec3f* pos, f32 freqScale); void Audio_PlaySfxWaterfall(Vec3f* pos, f32 freqScale);
void func_800F47BC(void); void Audio_SetBgmVolumeOffDuringFanfare(void);
void func_800F47FC(void); void Audio_SetBgmVolumeOnDuringFanfare(void);
void func_800F483C(u8 targetVol, u8 volFadeTimer); void Audio_SetMainBgmVolume(u8 targetVol, u8 volFadeTimer);
void Audio_SetGanonsTowerBgmVolumeLevel(u8 ganonsTowerLevel); void Audio_SetGanonsTowerBgmVolumeLevel(u8 ganonsTowerLevel);
void Audio_LowerMainBgmVolume(u8 volume); void Audio_LowerMainBgmVolume(u8 volume);
void Audio_PlaySfxIncreasinglyTransposed(Vec3f* pos, s16 sfxId, u8* semitones); void Audio_PlaySfxIncreasinglyTransposed(Vec3f* pos, s16 sfxId, u8* semitones);
@ -1842,12 +1842,12 @@ void Audio_PlaySariaBgm(Vec3f* pos, u16 seqId, u16 distMax);
void Audio_ClearSariaBgm2(void); void Audio_ClearSariaBgm2(void);
void Audio_PlayMorningSceneSequence(u16 seqId); void Audio_PlayMorningSceneSequence(u16 seqId);
void Audio_PlaySceneSequence(u16 seqId); void Audio_PlaySceneSequence(u16 seqId);
void func_800F574C(f32 scaleTempoAndFreq, u8 duration); void Audio_SetMainBgmTempoFreqAfterFanfare(f32 scaleTempoAndFreq, u8 duration);
void func_800F5718(void); void Audio_PlayWindmillBgm(void);
void func_800F5918(void); void Audio_SetFastTempoForTimedMinigame(void);
void func_800F595C(u16); void Audio_PlaySequenceInCutscene(u16 seqId);
void func_800F59E8(u16); void Audio_StopSequenceInCutscene(u16 seqId);
s32 func_800F5A58(u8); s32 Audio_IsSequencePlaying(u16 seqId);
void func_800F5ACC(u16 seqId); void func_800F5ACC(u16 seqId);
void func_800F5B58(void); void func_800F5B58(void);
void func_800F5BF0(u8 natureAmbienceId); void func_800F5BF0(u8 natureAmbienceId);
@ -1867,11 +1867,8 @@ void Audio_SetExtraFilter(u8);
void Audio_SetCutsceneFlag(s8 flag); void Audio_SetCutsceneFlag(s8 flag);
void Audio_PlaySfxIfNotInCutscene(u16 sfxId); void Audio_PlaySfxIfNotInCutscene(u16 sfxId);
void func_800F6964(u16); void func_800F6964(u16);
void func_800F6AB0(u16); void Audio_StopBgmAndFanfare(u16 fadeOutDuration);
// ? Audio_DisableAllSeq(?);
// ? func_800F6BB8(?);
void Audio_PreNMI(void); void Audio_PreNMI(void);
// ? func_800F6C34(?);
void Audio_SetNatureAmbienceChannelIO(u8 channelIdxRange, u8 ioPort, u8 ioData); void Audio_SetNatureAmbienceChannelIO(u8 channelIdxRange, u8 ioPort, u8 ioData);
void Audio_PlayNatureAmbienceSequence(u8 natureAmbienceId); void Audio_PlayNatureAmbienceSequence(u8 natureAmbienceId);
void Audio_Init(void); void Audio_Init(void);

View file

@ -1241,8 +1241,8 @@ u8 sMalonSingingTimer;
u8 sAudioSpecPeakNumNotes[0x12]; u8 sAudioSpecPeakNumNotes[0x12];
u8 sMalonSingingDisabled; u8 sMalonSingingDisabled;
u8 D_8016B9F3; u8 D_8016B9F3;
u8 D_8016B9F4; u8 sFanfareStartTimer;
u16 D_8016B9F6; u16 sFanfareSeqId;
OcarinaStaff sPlayingStaff; OcarinaStaff sPlayingStaff;
OcarinaStaff sPlaybackStaff; OcarinaStaff sPlaybackStaff;
@ -3208,7 +3208,7 @@ void AudioDebug_ProcessInput_SndCont(void) {
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CDOWN)) { if (CHECK_BTN_ANY(sDebugPadPress, BTN_CDOWN)) {
if (sAudioSndContSel == 0) { if (sAudioSndContSel == 0) {
if (1) {} if (1) {}
func_800F595C(sAudioSndContWork[sAudioSndContSel]); Audio_PlaySequenceInCutscene(sAudioSndContWork[sAudioSndContSel]);
} }
} }
@ -3693,7 +3693,7 @@ void AudioDebug_ProcessInput(void) {
} }
void Audio_UpdateRiverSoundVolumes(void); void Audio_UpdateRiverSoundVolumes(void);
void func_800F5CF8(void); void Audio_UpdateFanfare(void);
/** /**
* This is Audio_Update for the graph thread * This is Audio_Update for the graph thread
@ -3707,7 +3707,7 @@ void func_800F3054(void) {
Audio_StepFreqLerp(&sWaterfallFreqScaleLerp); Audio_StepFreqLerp(&sWaterfallFreqScaleLerp);
Audio_UpdateRiverSoundVolumes(); Audio_UpdateRiverSoundVolumes();
Audio_UpdateSceneSequenceResumePoint(); Audio_UpdateSceneSequenceResumePoint();
func_800F5CF8(); Audio_UpdateFanfare();
if (gAudioSpecId == 7) { if (gAudioSpecId == 7) {
Audio_ClearSariaBgm(); Audio_ClearSariaBgm();
} }
@ -4260,17 +4260,17 @@ void Audio_StepFreqLerp(FreqLerp* lerp) {
} }
} }
void func_800F47BC(void) { void Audio_SetBgmVolumeOffDuringFanfare(void) {
Audio_SetVolumeScale(SEQ_PLAYER_BGM_MAIN, VOL_SCALE_INDEX_FANFARE, 0, 10); Audio_SetVolumeScale(SEQ_PLAYER_BGM_MAIN, VOL_SCALE_INDEX_FANFARE, 0, 10);
Audio_SetVolumeScale(SEQ_PLAYER_BGM_SUB, VOL_SCALE_INDEX_FANFARE, 0, 10); Audio_SetVolumeScale(SEQ_PLAYER_BGM_SUB, VOL_SCALE_INDEX_FANFARE, 0, 10);
} }
void func_800F47FC(void) { void Audio_SetBgmVolumeOnDuringFanfare(void) {
Audio_SetVolumeScale(SEQ_PLAYER_BGM_MAIN, VOL_SCALE_INDEX_FANFARE, 0x7F, 3); Audio_SetVolumeScale(SEQ_PLAYER_BGM_MAIN, VOL_SCALE_INDEX_FANFARE, 0x7F, 3);
Audio_SetVolumeScale(SEQ_PLAYER_BGM_SUB, VOL_SCALE_INDEX_FANFARE, 0x7F, 3); Audio_SetVolumeScale(SEQ_PLAYER_BGM_SUB, VOL_SCALE_INDEX_FANFARE, 0x7F, 3);
} }
void func_800F483C(u8 targetVol, u8 volFadeTimer) { void Audio_SetMainBgmVolume(u8 targetVol, u8 volFadeTimer) {
Audio_SetVolumeScale(SEQ_PLAYER_BGM_MAIN, VOL_SCALE_INDEX_BGM_MAIN, targetVol, volFadeTimer); Audio_SetVolumeScale(SEQ_PLAYER_BGM_MAIN, VOL_SCALE_INDEX_BGM_MAIN, targetVol, volFadeTimer);
} }
@ -4593,7 +4593,7 @@ void Audio_PlaySceneSequence(u16 seqId) {
Audio_QueueCmdS32(0xF8000000, 0); Audio_QueueCmdS32(0xF8000000, 0);
} }
if ((sSeqFlags[sPrevSceneSeqId] & SEQ_FLAG_RESUME_PREV) && sSeqFlags[seqId & 0xFF & 0xFF] & SEQ_FLAG_RESUME) { if ((sSeqFlags[sPrevSceneSeqId] & SEQ_FLAG_RESUME_PREV) && (sSeqFlags[seqId & 0xFF & 0xFF] & SEQ_FLAG_RESUME)) {
// Resume the sequence from the point where it left off last time it was played in the scene // Resume the sequence from the point where it left off last time it was played in the scene
if ((sSeqResumePoint & 0x3F) != 0) { if ((sSeqResumePoint & 0x3F) != 0) {
fadeInDuration = 30; fadeInDuration = 30;
@ -4622,7 +4622,7 @@ void Audio_PlaySceneSequence(u16 seqId) {
void Audio_UpdateSceneSequenceResumePoint(void) { void Audio_UpdateSceneSequenceResumePoint(void) {
u16 seqId = Audio_GetActiveSeqId(SEQ_PLAYER_BGM_MAIN); u16 seqId = Audio_GetActiveSeqId(SEQ_PLAYER_BGM_MAIN);
if ((seqId != NA_BGM_DISABLED) && (sSeqFlags[(u8)seqId & 0xFF] & SEQ_FLAG_RESUME)) { if ((seqId != NA_BGM_DISABLED) && (sSeqFlags[seqId & 0xFF & 0xFF] & SEQ_FLAG_RESUME)) {
if (sSeqResumePoint != SEQ_RESUME_POINT_NONE) { if (sSeqResumePoint != SEQ_RESUME_POINT_NONE) {
// Get the current point to resume from // Get the current point to resume from
sSeqResumePoint = gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].soundScriptIO[3]; sSeqResumePoint = gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].soundScriptIO[3];
@ -4633,14 +4633,15 @@ void Audio_UpdateSceneSequenceResumePoint(void) {
} }
} }
void func_800F5718(void) { void Audio_PlayWindmillBgm(void) {
if (Audio_GetActiveSeqId(SEQ_PLAYER_BGM_MAIN) != NA_BGM_WINDMILL) { if (Audio_GetActiveSeqId(SEQ_PLAYER_BGM_MAIN) != NA_BGM_WINDMILL) {
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, 0, NA_BGM_WINDMILL); SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, 0, NA_BGM_WINDMILL);
} }
} }
void func_800F574C(f32 scaleTempoAndFreq, u8 duration) { void Audio_SetMainBgmTempoFreqAfterFanfare(f32 scaleTempoAndFreq, u8 duration) {
if (scaleTempoAndFreq == 1.0f) { if (scaleTempoAndFreq == 1.0f) {
// Should instead use `SEQCMD_SETUP_RESET_TEMPO` to wait until the fanfare is finished
SEQCMD_RESET_TEMPO(SEQ_PLAYER_BGM_MAIN, duration); SEQCMD_RESET_TEMPO(SEQ_PLAYER_BGM_MAIN, duration);
} else { } else {
SEQCMD_SETUP_SCALE_TEMPO(SEQ_PLAYER_FANFARE, SEQ_PLAYER_BGM_MAIN, duration, scaleTempoAndFreq * 100.0f); SEQCMD_SETUP_SCALE_TEMPO(SEQ_PLAYER_FANFARE, SEQ_PLAYER_BGM_MAIN, duration, scaleTempoAndFreq * 100.0f);
@ -4649,52 +4650,51 @@ void func_800F574C(f32 scaleTempoAndFreq, u8 duration) {
SEQCMD_SETUP_SET_PLAYER_FREQ(SEQ_PLAYER_FANFARE, SEQ_PLAYER_BGM_MAIN, duration, scaleTempoAndFreq * 100.0f); SEQCMD_SETUP_SET_PLAYER_FREQ(SEQ_PLAYER_FANFARE, SEQ_PLAYER_BGM_MAIN, duration, scaleTempoAndFreq * 100.0f);
} }
void func_800F5918(void) { /**
if (Audio_GetActiveSeqId(SEQ_PLAYER_BGM_MAIN) == NA_BGM_TIMED_MINI_GAME && * Set the tempo for the timed minigame sequence to 210 bpm,
* which is faster than the default tempo
*/
void Audio_SetFastTempoForTimedMinigame(void) {
if ((Audio_GetActiveSeqId(SEQ_PLAYER_BGM_MAIN) == NA_BGM_TIMED_MINI_GAME) &&
Audio_IsSeqCmdNotQueued(SEQCMD_OP_PLAY_SEQUENCE << 28, SEQCMD_OP_MASK)) { Audio_IsSeqCmdNotQueued(SEQCMD_OP_PLAY_SEQUENCE << 28, SEQCMD_OP_MASK)) {
SEQCMD_SET_TEMPO(SEQ_PLAYER_BGM_MAIN, 5, 210); SEQCMD_SET_TEMPO(SEQ_PLAYER_BGM_MAIN, 5, 210);
} }
} }
void func_800F595C(u16 arg0) { void Audio_PlaySequenceInCutscene(u16 seqId) {
u8 arg0b = arg0 & 0xFF; if (sSeqFlags[seqId & 0xFF & 0xFF] & SEQ_FLAG_FANFARE) {
Audio_PlayFanfare(seqId);
if (sSeqFlags[arg0b] & SEQ_FLAG_FANFARE) { } else if (sSeqFlags[seqId & 0xFF & 0xFF] & SEQ_FLAG_FANFARE_GANON) {
Audio_PlayFanfare(arg0); SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_FANFARE, 0, 0, seqId);
} else if (sSeqFlags[arg0b] & SEQ_FLAG_FANFARE_GANON) {
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_FANFARE, 0, 0, arg0);
} else { } else {
Audio_PlaySequenceWithSeqPlayerIO(SEQ_PLAYER_BGM_MAIN, arg0, 0, 7, SEQ_IO_VAL_NONE); Audio_PlaySequenceWithSeqPlayerIO(SEQ_PLAYER_BGM_MAIN, seqId, 0, 7, SEQ_IO_VAL_NONE);
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 0); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 0);
} }
} }
void func_800F59E8(u16 arg0) { void Audio_StopSequenceInCutscene(u16 seqId) {
u8 arg0b = arg0 & 0xFF; if (sSeqFlags[seqId & 0xFF & 0xFF] & SEQ_FLAG_FANFARE) {
if (sSeqFlags[arg0b] & SEQ_FLAG_FANFARE) {
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 0); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 0);
} else if (sSeqFlags[arg0b] & SEQ_FLAG_FANFARE_GANON) { } else if (sSeqFlags[seqId & 0xFF & 0xFF] & SEQ_FLAG_FANFARE_GANON) {
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 0); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 0);
} else { } else {
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0);
} }
} }
s32 func_800F5A58(u8 arg0) { s32 Audio_IsSequencePlaying(u16 seqId) {
u8 phi_a1 = 0; u8 seqPlayerIndex = SEQ_PLAYER_BGM_MAIN;
if (sSeqFlags[arg0 & 0xFF] & SEQ_FLAG_FANFARE) { if (sSeqFlags[seqId & 0xFF & 0xFF] & SEQ_FLAG_FANFARE) {
phi_a1 = 1; seqPlayerIndex = SEQ_PLAYER_FANFARE;
} else if (sSeqFlags[arg0 & 0xFF] & SEQ_FLAG_FANFARE_GANON) { } else if (sSeqFlags[seqId & 0xFF & 0xFF] & SEQ_FLAG_FANFARE_GANON) {
phi_a1 = 1; seqPlayerIndex = SEQ_PLAYER_FANFARE;
} }
if (arg0 == (u8)Audio_GetActiveSeqId(phi_a1)) { if ((seqId & 0xFF) == (Audio_GetActiveSeqId(seqPlayerIndex) & 0xFF)) {
return 1; return true;
} else { } else {
return 0; return false;
} }
} }
@ -4757,31 +4757,35 @@ void func_800F5C2C(void) {
} }
void Audio_PlayFanfare(u16 seqId) { void Audio_PlayFanfare(u16 seqId) {
u16 sp26; u16 curSeqId;
u32 sp20; u32 outNumFonts;
u8* sp1C; u8* curFontId;
u8* sp18; u8* requestedFontId;
sp26 = Audio_GetActiveSeqId(SEQ_PLAYER_FANFARE); curSeqId = Audio_GetActiveSeqId(SEQ_PLAYER_FANFARE);
sp1C = func_800E5E84(sp26 & 0xFF, &sp20);
sp18 = func_800E5E84(seqId & 0xFF, &sp20); curFontId = func_800E5E84(curSeqId & 0xFF, &outNumFonts);
if ((sp26 == NA_BGM_DISABLED) || (*sp1C == *sp18)) { requestedFontId = func_800E5E84(seqId & 0xFF, &outNumFonts);
D_8016B9F4 = 1;
if ((curSeqId == NA_BGM_DISABLED) || (*curFontId == *requestedFontId)) {
sFanfareStartTimer = 1;
} else { } else {
D_8016B9F4 = 5; // Give extra time to start the fanfare if both another fanfare needs to be stopped
// and a new fontId needs to be loaded in
sFanfareStartTimer = 5;
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 0); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 0);
} }
D_8016B9F6 = seqId; sFanfareSeqId = seqId;
} }
void func_800F5CF8(void) { void Audio_UpdateFanfare(void) {
u16 seqIdFanfare; u16 seqIdFanfare;
u16 seqIdBgmMain; u16 seqIdBgmMain;
u16 seqIdBgmSub; u16 seqIdBgmSub;
if (D_8016B9F4 != 0) { if (sFanfareStartTimer != 0) {
D_8016B9F4--; sFanfareStartTimer--;
if (D_8016B9F4 == 0) { if (sFanfareStartTimer == 0) {
Audio_QueueCmdS32(0xE3000000, SEQUENCE_TABLE); Audio_QueueCmdS32(0xE3000000, SEQUENCE_TABLE);
Audio_QueueCmdS32(0xE3000000, FONT_TABLE); Audio_QueueCmdS32(0xE3000000, FONT_TABLE);
@ -4802,7 +4806,7 @@ void func_800F5CF8(void) {
SEQCMD_SETUP_SET_CHANNEL_DISABLE_MASK(SEQ_PLAYER_FANFARE, SEQ_PLAYER_BGM_SUB, 0); SEQCMD_SETUP_SET_CHANNEL_DISABLE_MASK(SEQ_PLAYER_FANFARE, SEQ_PLAYER_BGM_SUB, 0);
} }
} }
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_FANFARE, 1, 0, D_8016B9F6); SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_FANFARE, 1, 0, sFanfareSeqId);
SEQCMD_SET_CHANNEL_DISABLE_MASK(SEQ_PLAYER_BGM_MAIN, 0xFFFF); SEQCMD_SET_CHANNEL_DISABLE_MASK(SEQ_PLAYER_BGM_MAIN, 0xFFFF);
if (seqIdBgmSub != NA_BGM_LONLON) { if (seqIdBgmSub != NA_BGM_LONLON) {
SEQCMD_SET_CHANNEL_DISABLE_MASK(SEQ_PLAYER_BGM_SUB, 0xFFFF); SEQCMD_SET_CHANNEL_DISABLE_MASK(SEQ_PLAYER_BGM_SUB, 0xFFFF);
@ -4833,7 +4837,7 @@ void Audio_SetSequenceMode(u8 seqMode) {
seqMode = SEQ_MODE_IGNORE; seqMode = SEQ_MODE_IGNORE;
} }
if ((seqId == NA_BGM_DISABLED) || (sSeqFlags[(u8)(seqId & 0xFF)] & SEQ_FLAG_ENEMY) || if ((seqId == NA_BGM_DISABLED) || (sSeqFlags[seqId & 0xFF & 0xFF] & SEQ_FLAG_ENEMY) ||
((sPrevSeqMode & 0x7F) == SEQ_MODE_ENEMY)) { ((sPrevSeqMode & 0x7F) == SEQ_MODE_ENEMY)) {
if (seqMode != (sPrevSeqMode & 0x7F)) { if (seqMode != (sPrevSeqMode & 0x7F)) {
if (seqMode == SEQ_MODE_ENEMY) { if (seqMode == SEQ_MODE_ENEMY) {
@ -5160,10 +5164,10 @@ void func_800F6964(u16 arg0) {
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_SUB, (arg0 * 3) / 2); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_SUB, (arg0 * 3) / 2);
} }
void func_800F6AB0(u16 arg0) { void Audio_StopBgmAndFanfare(u16 fadeOutDuration) {
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, arg0); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, fadeOutDuration);
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, arg0); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, fadeOutDuration);
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_SUB, arg0); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_SUB, fadeOutDuration);
Audio_SetVolumeScale(SEQ_PLAYER_BGM_MAIN, VOL_SCALE_INDEX_BGM_SUB, 0x7F, 0); Audio_SetVolumeScale(SEQ_PLAYER_BGM_MAIN, VOL_SCALE_INDEX_BGM_SUB, 0x7F, 0);
Audio_SetVolumeScale(SEQ_PLAYER_BGM_MAIN, VOL_SCALE_INDEX_FANFARE, 0x7F, 0); Audio_SetVolumeScale(SEQ_PLAYER_BGM_MAIN, VOL_SCALE_INDEX_FANFARE, 0x7F, 0);
} }
@ -5223,7 +5227,7 @@ void func_800F6C34(void) {
sPrevMainBgmSeqId = NA_BGM_DISABLED; sPrevMainBgmSeqId = NA_BGM_DISABLED;
Audio_QueueCmdS8(0x46 << 24 | SEQ_PLAYER_BGM_MAIN << 16, -1); Audio_QueueCmdS8(0x46 << 24 | SEQ_PLAYER_BGM_MAIN << 16, -1);
sSariaBgmPtr = NULL; sSariaBgmPtr = NULL;
D_8016B9F4 = 0; sFanfareStartTimer = 0;
D_8016B9F3 = 1; D_8016B9F3 = 1;
sMalonSingingDisabled = false; sMalonSingingDisabled = false;
} }
@ -5297,7 +5301,7 @@ void Audio_PlayNatureAmbienceSequence(u8 natureAmbienceId) {
u8 ioData; u8 ioData;
if ((gActiveSeqs[SEQ_PLAYER_BGM_MAIN].seqId == NA_BGM_DISABLED) || if ((gActiveSeqs[SEQ_PLAYER_BGM_MAIN].seqId == NA_BGM_DISABLED) ||
!(sSeqFlags[((u8)gActiveSeqs[SEQ_PLAYER_BGM_MAIN].seqId) & 0xFF] & SEQ_FLAG_NO_AMBIENCE)) { !(sSeqFlags[gActiveSeqs[SEQ_PLAYER_BGM_MAIN].seqId & 0xFF & 0xFF] & SEQ_FLAG_NO_AMBIENCE)) {
Audio_StartNatureAmbienceSequence(sNatureAmbienceDataIO[natureAmbienceId].playerIO, Audio_StartNatureAmbienceSequence(sNatureAmbienceDataIO[natureAmbienceId].playerIO,
sNatureAmbienceDataIO[natureAmbienceId].channelMask); sNatureAmbienceDataIO[natureAmbienceId].channelMask);

View file

@ -437,14 +437,14 @@ void Cutscene_Command_SetLighting(PlayState* play, CutsceneContext* csCtx, CsCmd
// Command 0x56: Play Background Music // Command 0x56: Play Background Music
void Cutscene_Command_PlayBGM(PlayState* play, CutsceneContext* csCtx, CsCmdMusicChange* cmd) { void Cutscene_Command_PlayBGM(PlayState* play, CutsceneContext* csCtx, CsCmdMusicChange* cmd) {
if (csCtx->frames == cmd->startFrame) { if (csCtx->frames == cmd->startFrame) {
func_800F595C(cmd->sequence - 1); Audio_PlaySequenceInCutscene(cmd->sequence - 1);
} }
} }
// Command 0x57: Stop Background Music // Command 0x57: Stop Background Music
void Cutscene_Command_StopBGM(PlayState* play, CutsceneContext* csCtx, CsCmdMusicChange* cmd) { void Cutscene_Command_StopBGM(PlayState* play, CutsceneContext* csCtx, CsCmdMusicChange* cmd) {
if (csCtx->frames == cmd->startFrame) { if (csCtx->frames == cmd->startFrame) {
func_800F59E8(cmd->sequence - 1); Audio_StopSequenceInCutscene(cmd->sequence - 1);
} }
} }

View file

@ -60,7 +60,7 @@ void BgRelayObjects_Init(Actor* thisx, PlayState* play) {
} else { } else {
thisx->world.rot.y = 0x80; thisx->world.rot.y = 0x80;
} }
func_800F5718(); Audio_PlayWindmillBgm();
thisx->room = -1; thisx->room = -1;
thisx->flags |= ACTOR_FLAG_5; thisx->flags |= ACTOR_FLAG_5;
if (D_808A9508 & 2) { if (D_808A9508 & 2) {

View file

@ -507,7 +507,7 @@ void EnDivingGame_Update(Actor* thisx, PlayState* play2) {
if (1) {} if (1) {}
if (gSaveContext.timer1Value == 10) { if (gSaveContext.timer1Value == 10) {
func_800F5918(); Audio_SetFastTempoForTimedMinigame();
} }
if (this->eyeTimer == 0) { if (this->eyeTimer == 0) {
this->eyeTimer = 2; this->eyeTimer = 2;

View file

@ -1833,7 +1833,7 @@ void EnGo2_BiggoronEyedrops(EnGo2* this, PlayState* play) {
this->eyeMouthTexState = 2; this->eyeMouthTexState = 2;
this->unk_20C = 0; this->unk_20C = 0;
this->goronState++; this->goronState++;
func_800F483C(0x28, 5); Audio_SetMainBgmVolume(0x28, 5);
OnePointCutscene_Init(play, 4190, -99, &this->actor, CAM_ID_MAIN); OnePointCutscene_Init(play, 4190, -99, &this->actor, CAM_ID_MAIN);
break; break;
case 1: case 1:
@ -1848,7 +1848,7 @@ void EnGo2_BiggoronEyedrops(EnGo2* this, PlayState* play) {
Message_ContinueTextbox(play, 0x305A); Message_ContinueTextbox(play, 0x305A);
this->eyeMouthTexState = 3; this->eyeMouthTexState = 3;
this->goronState++; this->goronState++;
func_800F483C(0x7F, 5); Audio_SetMainBgmVolume(0x7F, 5);
} }
break; break;
case 2: case 2:

View file

@ -2512,7 +2512,7 @@ void EnHorse_UpdateHbaAnim(EnHorse* this) {
void EnHorse_UpdateHorsebackArchery(EnHorse* this, PlayState* play) { void EnHorse_UpdateHorsebackArchery(EnHorse* this, PlayState* play) {
f32 playSpeed; f32 playSpeed;
s32 sp20; s32 isFanfarePlaying;
if (this->animationIdx == ENHORSE_ANIM_WALK) { if (this->animationIdx == ENHORSE_ANIM_WALK) {
EnHorse_PlayWalkingSfx(this); EnHorse_PlayWalkingSfx(this);
@ -2521,10 +2521,10 @@ void EnHorse_UpdateHorsebackArchery(EnHorse* this, PlayState* play) {
this->hbaTimer++; this->hbaTimer++;
} }
sp20 = func_800F5A58(NA_BGM_HORSE_GOAL); isFanfarePlaying = Audio_IsSequencePlaying(NA_BGM_HORSE_GOAL);
EnHorse_UpdateHbaRaceInfo(this, play, &sHbaInfo); EnHorse_UpdateHbaRaceInfo(this, play, &sHbaInfo);
if (this->hbaFlags & 1 || this->hbaTimer >= 46) { if ((this->hbaFlags & 1) || (this->hbaTimer >= 46)) {
if (sp20 != 1 && gSaveContext.minigameState != 3) { if ((isFanfarePlaying != true) && (gSaveContext.minigameState != 3)) {
gSaveContext.cutsceneIndex = 0; gSaveContext.cutsceneIndex = 0;
play->nextEntranceIndex = ENTR_SPOT12_16; play->nextEntranceIndex = ENTR_SPOT12_16;
play->transitionTrigger = TRANS_TRIGGER_START; play->transitionTrigger = TRANS_TRIGGER_START;

View file

@ -243,7 +243,9 @@ void func_80ABF4C8(EnOkarinaTag* this, PlayState* play) {
case 2: case 2:
play->csCtx.segment = D_80ABF9D0; play->csCtx.segment = D_80ABF9D0;
gSaveContext.cutsceneTrigger = 1; gSaveContext.cutsceneTrigger = 1;
func_800F574C(1.18921f, 90); // Increase pitch by 3 semitones i.e. 2^(3/12), scale tempo by same ratio
// Applies to the windmill bgm once the song of storms fanfare is complete
Audio_SetMainBgmTempoFreqAfterFanfare(1.18921f, 90);
break; break;
case 4: case 4:
play->csCtx.segment = D_80ABFB40; play->csCtx.segment = D_80ABFB40;

View file

@ -797,7 +797,7 @@ void EnTa_RunCuccoGame(EnTa* this, PlayState* play) {
} }
if (gSaveContext.timer1Value == 10) { if (gSaveContext.timer1Value == 10) {
func_800F5918(); Audio_SetFastTempoForTimedMinigame();
} }
if (gSaveContext.timer1Value == 0 && !Play_InCsMode(play)) { if (gSaveContext.timer1Value == 0 && !Play_InCsMode(play)) {

View file

@ -3237,14 +3237,14 @@ void func_80836448(PlayState* play, Player* this, LinkAnimationHeader* anim) {
func_80832698(this, NA_SE_VO_LI_DOWN); func_80832698(this, NA_SE_VO_LI_DOWN);
if (this->actor.category == ACTORCAT_PLAYER) { if (this->actor.category == ACTORCAT_PLAYER) {
func_800F47BC(); Audio_SetBgmVolumeOffDuringFanfare();
if (Inventory_ConsumeFairy(play)) { if (Inventory_ConsumeFairy(play)) {
play->gameOverCtx.state = GAMEOVER_REVIVE_START; play->gameOverCtx.state = GAMEOVER_REVIVE_START;
this->unk_84F = 1; this->unk_84F = 1;
} else { } else {
play->gameOverCtx.state = GAMEOVER_DEATH_START; play->gameOverCtx.state = GAMEOVER_DEATH_START;
func_800F6AB0(0); Audio_StopBgmAndFanfare(0);
Audio_PlayFanfare(NA_BGM_GAME_OVER); Audio_PlayFanfare(NA_BGM_GAME_OVER);
gSaveContext.seqId = (u8)NA_BGM_DISABLED; gSaveContext.seqId = (u8)NA_BGM_DISABLED;
gSaveContext.natureAmbienceId = NATURE_ID_DISABLED; gSaveContext.natureAmbienceId = NATURE_ID_DISABLED;
@ -8384,7 +8384,7 @@ void func_80843AE8(PlayState* play, Player* this) {
} }
this->unk_A87 = 20; this->unk_A87 = 20;
func_80837AFC(this, -20); func_80837AFC(this, -20);
func_800F47FC(); Audio_SetBgmVolumeOnDuringFanfare();
} }
} else if (this->unk_84F != 0) { } else if (this->unk_84F != 0) {
this->unk_850 = 60; this->unk_850 = 60;