diff --git a/asm/music.s b/asm/music.s index c6177949d..929d0600c 100644 --- a/asm/music.s +++ b/asm/music.s @@ -54,7 +54,7 @@ _0800C6A0: strh r0, [r2] b _0800C8A2 .align 2, 0 -_0800C6B4: .4byte gUnknown_202D68E +_0800C6B4: .4byte gCurrentFanfareSong _0800C6B8: .4byte 0x000003e5 _0800C6BC: ldrh r0, [r3] @@ -66,7 +66,7 @@ _0800C6C0: cmp r1, r0 beq _0800C6D8 movs r0, 0 - bl sub_800CAF0 + bl IsMusicPlayerPlaying lsls r0, 24 cmp r0, 0 beq _0800C6D8 @@ -86,7 +86,7 @@ _0800C6E4: .align 2, 0 _0800C6F0: .4byte gCurrentBGSong _0800C6F4: .4byte 0x000003e7 -_0800C6F8: .4byte gUnknown_202D68E +_0800C6F8: .4byte gCurrentFanfareSong _0800C6FC: .4byte 0x000003e5 _0800C700: ldr r0, _0800C724 @@ -95,7 +95,7 @@ _0800C700: cmp r1, r0 beq _0800C718 movs r0, 0x1 - bl sub_800CAF0 + bl IsMusicPlayerPlaying lsls r0, 24 cmp r0, 0 bne _0800C718 @@ -108,7 +108,7 @@ _0800C718: strh r0, [r1] b _0800C8A2 .align 2, 0 -_0800C724: .4byte gUnknown_202D68E +_0800C724: .4byte gCurrentFanfareSong _0800C728: .4byte 0x000003e5 _0800C72C: .4byte gUnknown_202D692 _0800C730: @@ -118,7 +118,7 @@ _0800C730: cmp r1, r0 beq _0800C754 movs r0, 0x1 - bl sub_800CAF0 + bl IsMusicPlayerPlaying lsls r0, 24 cmp r0, 0 beq _0800C748 @@ -126,7 +126,7 @@ _0800C730: _0800C748: b _0800C75A .align 2, 0 -_0800C74C: .4byte gUnknown_202D68E +_0800C74C: .4byte gCurrentFanfareSong _0800C750: .4byte 0x000003e5 _0800C754: ldr r0, _0800C76C @@ -141,7 +141,7 @@ _0800C75A: strh r0, [r1] b _0800C8A2 .align 2, 0 -_0800C76C: .4byte gUnknown_2000970 +_0800C76C: .4byte gMPlayInfo_Fanfare _0800C770: .4byte gUnknown_202D692 _0800C774: ldr r3, _0800C794 @@ -187,7 +187,7 @@ _0800C7BE: _0800C7CC: .4byte gBGMusicPlayerState _0800C7D0: .4byte gMPlayInfo_BGM _0800C7D4: .4byte gUnknown_202D690 -_0800C7D8: .4byte gUnknown_202D68E +_0800C7D8: .4byte gCurrentFanfareSong _0800C7DC: .4byte 0x000003e5 _0800C7E0: ldr r5, _0800C810 @@ -206,7 +206,7 @@ _0800C7E0: cmp r1, r0 beq _0800C80A movs r0, 0 - bl sub_800CAF0 + bl IsMusicPlayerPlaying lsls r0, 24 cmp r0, 0 beq _0800C8A2 @@ -225,7 +225,7 @@ _0800C81C: cmp r1, r0 beq _0800C83C movs r0, 0 - bl sub_800CAF0 + bl IsMusicPlayerPlaying lsls r0, 24 cmp r0, 0 bne _0800C8A2 @@ -253,7 +253,7 @@ _0800C85C: .4byte gCurrentBGSong _0800C860: .4byte 0x000003e7 _0800C864: movs r0, 0 - bl sub_800CAF0 + bl IsMusicPlayerPlaying lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -309,7 +309,7 @@ _0800C8D0: beq _0800C8E4 lsls r0, r5, 16 lsrs r0, 16 - bl sub_800CAF0 + bl IsMusicPlayerPlaying lsls r0, 24 cmp r0, 0 beq _0800C926 @@ -322,7 +322,7 @@ _0800C8EC: .4byte 0x000003e7 _0800C8F0: lsls r0, r5, 16 lsrs r0, 16 - bl sub_800CAF0 + bl IsMusicPlayerPlaying lsls r0, 24 lsrs r0, 24 cmp r0, 0 diff --git a/include/m4a.h b/include/m4a.h index 6f2ffc583..0bc7988ff 100644 --- a/include/m4a.h +++ b/include/m4a.h @@ -22,6 +22,12 @@ void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 void m4aSoundVSync(void); extern struct MusicPlayerInfo gMPlayInfo_BGM; // BGM?? -extern struct MusicPlayerInfo gUnknown_2000970; +extern struct MusicPlayerInfo gMPlayInfo_Fanfare; +extern struct MusicPlayerInfo gMPlayInfo_SE1; +extern struct MusicPlayerInfo gMPlayInfo_SE2; +extern struct MusicPlayerInfo gMPlayInfo_SE3; +extern struct MusicPlayerInfo gMPlayInfo_SE4; +extern struct MusicPlayerInfo gMPlayInfo_SE5; +extern struct MusicPlayerInfo gMPlayInfo_SE6; #endif //GUARD_M4A_H diff --git a/include/music.h b/include/music.h index c086c8968..7527a07c7 100644 --- a/include/music.h +++ b/include/music.h @@ -3,13 +3,13 @@ void StopBGMusicVSync(void); void StartBGMusicVSync(void); -u8 sub_800CA38(u32 songIndex); +bool8 IsValidSong(u32 songIndex); void StartNewBGM(u16 songIndex); bool8 IsBGSong(u32 songIndex); bool8 IsSoundEffect(u32 songIndex); bool8 IsFanfare(u32 songIndex); u16 GetMusicPlayerIndex(u16 songIndex); -bool8 sub_800CAF0(u16 songIndex); +bool8 IsMusicPlayerPlaying(u16 songIndex); void StartNewBGM(u16 songIndex); void FadeInNewBGM(u16 SongIndex, u16 speed); u16 GetCurrentBGSong(void); @@ -18,8 +18,28 @@ void sub_800BF80(void); void FadeOutBGM(u16 speed); void sub_800C074(u16 SongIndex, u16 param_2); void sub_800C298(u16 songIndex); +void sub_800C3F8(u16 songIndex, u16 speed); void nullsub_19(void); void nullsub_20(u16 songIndex); +enum GetMusicPlayerIndex +{ + INDEX_BGM, + INDEX_FANFARE, + INDEX_SE1, + INDEX_SE2, + INDEX_SE3, + INDEX_SE4, + INDEX_SE5, + INDEX_SE6, +}; + +enum BG_Player_State +{ + BG_PLAYER_STATE_INITIALIZE = 0, + BG_PLAYER_STATE_PLAYING = 1, + BG_PLAYER_STATE_STOPPED = 4, +}; + #endif //GUARD_MUSIC_H diff --git a/sound/music_player_table.inc b/sound/music_player_table.inc index 11b4e5ccf..3c2a3f8c3 100644 --- a/sound/music_player_table.inc +++ b/sound/music_player_table.inc @@ -1,10 +1,10 @@ .align 2 gMPlayTable:: @ 9E8665C - music_player gMPlayInfo_BGM, gMPlayTrack_BGM, 12, 0 @ BGM - music_player gUnknown_2000970, gMPlayTrack_Unknown1, 6, 0 @ SE? - music_player 0x20009B0, gMPlayTrack_Unknown2, 1, 0 - music_player 0x2000A40, gMPlayTrack_Unknown3, 1, 0 - music_player 0x20009F0, gMPlayTrack_Unknown4, 2, 0 - music_player 0x2000870, gMPlayTrack_Unknown5, 2, 0 - music_player 0x20008B0, gMPlayTrack_Unknown6, 2, 0 - music_player 0x2000930, gMPlayTrack_Unknown7, 1, 0 + music_player gMPlayInfo_BGM, gMPlayTrack_BGM, 12, 0 + music_player gMPlayInfo_Fanfare, gMPlayTrack_Fanfare, 6, 0 + music_player gMPlayInfo_SE1, gMPlayTrack_SE1, 1, 0 + music_player gMPlayInfo_SE2, gMPlayTrack_SE2, 1, 0 + music_player gMPlayInfo_SE3, gMPlayTrack_SE3, 2, 0 + music_player gMPlayInfo_SE4, gMPlayTrack_SE4, 2, 0 + music_player gMPlayInfo_SE5, gMPlayTrack_SE5, 2, 0 + music_player gMPlayInfo_SE6, gMPlayTrack_SE6, 1, 0 diff --git a/src/music.c b/src/music.c index 79502a965..2acb74337 100644 --- a/src/music.c +++ b/src/music.c @@ -10,7 +10,6 @@ extern void sub_809C730(); extern bool8 DisableInterrupts(); extern bool8 EnableInterrupts(); -extern void sub_800C3F8(u16, u16); extern void Random(); extern void sub_800BA5C(); extern void xxx_update_bg_sound_input(); @@ -48,11 +47,11 @@ void StopBGMusicVSync(void) { gUnknown_202D694 = 0; } - else if(gBGMusicPlayerState == 1) + else if(gBGMusicPlayerState == BG_PLAYER_STATE_PLAYING) { gUnknown_202D694 = 1; } - gBGMusicPlayerState = 4; + gBGMusicPlayerState = BG_PLAYER_STATE_STOPPED; } } } @@ -72,9 +71,9 @@ void StartBGMusicVSync(void) { if(gCurrentBGSong != 999) { - if(gBGMusicPlayerState == 4) + if(gBGMusicPlayerState == BG_PLAYER_STATE_STOPPED) { - gBGMusicPlayerState = 1; + gBGMusicPlayerState = BG_PLAYER_STATE_PLAYING; if(gUnknown_202D694 != 0) { m4aSongNumStart(gCurrentBGSong); @@ -98,30 +97,30 @@ void nullsub_179(void) } // Unused -u8 sub_800CA38(u32 songIndex) +bool8 IsValidSong(u32 songIndex) { if(IsBGSong(songIndex)) { - if(GetMusicPlayerIndex(songIndex) == 0) + if(GetMusicPlayerIndex(songIndex) == INDEX_BGM) { - return 1; + return TRUE; } } if(IsFanfare(songIndex)) { - if(GetMusicPlayerIndex(songIndex) == 1) + if(GetMusicPlayerIndex(songIndex) == INDEX_FANFARE) { - return 1; + return TRUE; } } else if(IsSoundEffect(songIndex)) { - if(GetMusicPlayerIndex(songIndex) > 1) + if(GetMusicPlayerIndex(songIndex) >= INDEX_SE1) { - return 1; + return TRUE; } } - return 0; + return FALSE; } void nullsub_19(void) @@ -160,14 +159,14 @@ u16 GetMusicPlayerIndex(u16 songIndex) return gSongTable[songIndex].ms; } -bool8 sub_800CAF0(u16 songIndex) +bool8 IsMusicPlayerPlaying(u16 playerIndex) { // Had to cast this.. m4a_internal header has this as u32 - if((u16)gMPlayTable[songIndex].info->status == 0) + if((u16)gMPlayTable[playerIndex].info->status == 0) { - return 0; + return FALSE; } - return 1; + return TRUE; } void nullsub_20(u16 songIndex) diff --git a/src/music_pre.c b/src/music_pre.c index b93ddbfa5..252e26033 100644 --- a/src/music_pre.c +++ b/src/music_pre.c @@ -4,6 +4,7 @@ #include "bg.h" #include "music.h" #include "input.h" +#include "constants/bg_music.h" extern bool8 EnableInterrupts(void); extern bool8 DisableInterrupts(void); @@ -33,7 +34,7 @@ extern u32 gUnknown_203B0A4; extern u16 gBGMusicPlayerState; extern u16 gCurrentBGSong; extern u16 gUnknown_202D68C; -extern u16 gUnknown_202D68E; +extern u16 gCurrentFanfareSong; extern u16 gUnknown_202D690; extern u16 gUnknown_202D692; extern u8 gUnknown_202D694; @@ -407,12 +408,12 @@ void InitMusic(void) gBGMusicPlayerState = 0; gCurrentBGSong = 999; gUnknown_202D68C = 999; - gUnknown_202D68E = 997; + gCurrentFanfareSong = 997; gUnknown_202D690 = 0; gUnknown_202D692 = 0; gUnknown_202D694 = 0; - for(counter = 0, preload = &gUnknown_3000FD8[0]; counter < 8; counter++, preload++) + for(counter = INDEX_BGM, preload = &gUnknown_3000FD8[0]; counter < INDEX_SE6 + 1; counter++, preload++) { preload->unk0 = 0; preload->songIndex = 997; @@ -443,7 +444,7 @@ void StartNewBGM(u16 songIndex) if((u16)(gBGMusicPlayerState - 1) <= 1) return; } - if(GetMusicPlayerIndex(songIndex)) + if(GetMusicPlayerIndex(songIndex) != INDEX_BGM) { nullsub_20(songIndex); return; @@ -454,22 +455,22 @@ void StartNewBGM(u16 songIndex) if(gUnknown_202D690 == 0) { - gBGMusicPlayerState = 1; + gBGMusicPlayerState = BG_PLAYER_STATE_PLAYING; m4aSongNumStart(songIndex); } if(interrupt_flag) EnableInterrupts(); } -void FadeInNewBGM(u16 SongIndex, u16 speed) +void FadeInNewBGM(u16 songIndex, u16 speed) { bool8 interrupt_flag; - if(!IsBGSong(SongIndex)) + if(!IsBGSong(songIndex)) return; - if(SongIndex == 999) + if(songIndex == 999) return; - if(SongIndex == gCurrentBGSong) + if(songIndex == gCurrentBGSong) { if((u16)(gBGMusicPlayerState - 1) <= 1) return; @@ -489,32 +490,32 @@ void FadeInNewBGM(u16 SongIndex, u16 speed) } interrupt_flag = DisableInterrupts(); - gCurrentBGSong = SongIndex; + gCurrentBGSong = songIndex; gUnknown_202D694 = 1; if(gUnknown_202D690 == 0) { - gBGMusicPlayerState = 1; - m4aSongNumStart(SongIndex); + gBGMusicPlayerState = BG_PLAYER_STATE_PLAYING; + m4aSongNumStart(songIndex); m4aMPlayImmInit(&gMPlayInfo_BGM); m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFF, 0); - m4aSongNumStop(SongIndex); + m4aSongNumStop(songIndex); m4aMPlayFadeIn(&gMPlayInfo_BGM, speed); } if(interrupt_flag) EnableInterrupts(); } -void sub_800BF48(u16 SongIndex) +void sub_800BF48(u16 songIndex) { u16 preload = gCurrentBGSong; if(preload == 999) { - StartNewBGM(SongIndex); + StartNewBGM(songIndex); gUnknown_202D68C = preload; return; } - gUnknown_202D68C = SongIndex; + gUnknown_202D68C = songIndex; } void sub_800BF80(void) @@ -583,23 +584,23 @@ u16 GetCurrentBGSong(void) return gCurrentBGSong; } -void sub_800C074(u16 SongIndex, u16 param_2) +void sub_800C074(u16 songIndex, u16 param_2) { bool8 interrupt_flag; bool8 interrupt_flag2; - u16 msVar; + u16 playerIndex; struct unkStruct_3000FD8 *preload; - if (SongIndex == 997) + if (songIndex == 997) return; if (param_2 > 256) param_2 = 256; - if (IsFanfare(SongIndex)) + if (IsFanfare(songIndex)) { - if (GetMusicPlayerIndex(SongIndex) == 1) { + if (GetMusicPlayerIndex(songIndex) == INDEX_FANFARE) { interrupt_flag = DisableInterrupts(); - gUnknown_202D68E = SongIndex; + gCurrentFanfareSong = songIndex; if(gUnknown_202D690 == 0) { if (gCurrentBGSong != 999) @@ -617,14 +618,14 @@ void sub_800C074(u16 SongIndex, u16 param_2) { gUnknown_202D690 = 3; m4aMPlayStop(&gMPlayInfo_BGM); - m4aSongNumStart(gUnknown_202D68E); + m4aSongNumStart(gCurrentFanfareSong); } } else { gUnknown_202D690 = 3; m4aMPlayStop(&gMPlayInfo_BGM); - m4aSongNumStart(gUnknown_202D68E); + m4aSongNumStart(gCurrentFanfareSong); } } else @@ -632,27 +633,27 @@ void sub_800C074(u16 SongIndex, u16 param_2) if (1 < (u16)(gUnknown_202D690 - 1)) { m4aMPlayStop(&gMPlayInfo_BGM); - m4aSongNumStart(gUnknown_202D68E); + m4aSongNumStart(gCurrentFanfareSong); gUnknown_202D690 = 3; } } switch(gCurrentBGSong) { - case 26: // 0x1A - case 27: // 0x1B - case 28: // 0x1C - case 29: // 0x1D - case 30: // 0x1E - case 31: // 0x1F - case 34: // 0x22 - case 35: // 0x23 - case 37: // 0x25 - case 38: // 0x26 - case 117: // 0x75 - case 118: // 0x76 - case 119: // 0x77 - case 122: // 0x7A - case 127: // 0x7F + case MUS_RAYQUAZAS_DOMAIN: + case MUS_FRIEND_AREA_STRATOS_LOOKOUT: + case MUS_FRIEND_AREA_RAINBOW_PEAK: + case MUS_DREAM_EATER: + case MUS_FRIEND_AREA_DEEPSEA_CURRENT: + case MUS_FRIEND_AREA_SEAFLOOR_CAVE: + case MUS_FRIEND_AREA_VOLCANIC_PIT: + case MUS_FRIEND_AREA_CRYPTIC_CAVE: + case MUS_THE_OTHER_SIDE: + case MUS_THE_MOUNTAIN_OF_FIRE: + case MUS_FRIEND_AREA_LEGENDARY_ISLAND: + case MUS_FRIEND_AREA_SOUTHERN_ISLAND: + case MUS_FRIEND_AREA_ENCLOSED_ISLAND: + case MUS_FRIEND_AREA_FINAL_ISLAND: + case MUS_FRIEND_AREA_HEALING_FOREST: gUnknown_202D694 = 1; break; default: @@ -663,23 +664,23 @@ void sub_800C074(u16 SongIndex, u16 param_2) } else { - nullsub_20(SongIndex); + nullsub_20(songIndex); } } else { - if (!IsSoundEffect(SongIndex)) + if (!IsSoundEffect(songIndex)) return; - msVar = GetMusicPlayerIndex(SongIndex); - preload = &gUnknown_3000FD8[msVar]; // need to load this before comparison to match - if (msVar <= 1) - nullsub_20(SongIndex); + playerIndex = GetMusicPlayerIndex(songIndex); + preload = &gUnknown_3000FD8[playerIndex]; // need to load this before comparison to match + if (playerIndex < INDEX_SE1) + nullsub_20(songIndex); else { interrupt_flag2 = DisableInterrupts(); - m4aSongNumStart(SongIndex); + m4aSongNumStart(songIndex); preload->unk0 = 1; - preload->songIndex = SongIndex; + preload->songIndex = songIndex; if(param_2 == 256) { preload->unk6 = 0; @@ -695,10 +696,10 @@ void sub_800C074(u16 SongIndex, u16 param_2) } } -void sub_800C214(u16 songIndex, u16 volume) +void SetSoundEffectVolume(u16 songIndex, u16 volume) { bool8 interrupt_flag; - u16 msVar; + u16 playerIndex; struct MusicPlayerInfo *info; struct unkStruct_3000FD8 *preload; @@ -707,10 +708,10 @@ void sub_800C214(u16 songIndex, u16 volume) } if ((!IsFanfare(songIndex)) && (IsSoundEffect(songIndex))) { - msVar = GetMusicPlayerIndex(songIndex); - info = gMPlayTable[msVar].info; - preload = &gUnknown_3000FD8[msVar]; - if (msVar > 1) { + playerIndex = GetMusicPlayerIndex(songIndex); + info = gMPlayTable[playerIndex].info; + preload = &gUnknown_3000FD8[playerIndex]; + if (playerIndex >= INDEX_SE1) { interrupt_flag = DisableInterrupts(); if (preload->songIndex == songIndex) { m4aMPlayVolumeControl(info, 0xf, volume); @@ -729,8 +730,8 @@ void sub_800C298(u16 songIndex) char cVar3; char cVar4; - u32 uVar2; - int iVar4; + u32 playerIndex; + s32 playerIndex2; struct MusicPlayerInfo *puVar6; struct unkStruct_3000FD8 *preload; struct unkStruct_3000FD8 *puVar3; @@ -738,9 +739,9 @@ void sub_800C298(u16 songIndex) if (songIndex == 997) { cVar1 = DisableInterrupts(); - for(iVar4 = 2, puVar3 = &gUnknown_3000FE8[0]; iVar4 < 7; iVar4++, puVar3++) + for(playerIndex2 = INDEX_SE1, puVar3 = &gUnknown_3000FE8[0]; playerIndex2 < INDEX_SE6; playerIndex2++, puVar3++) { - m4aMPlayStop(gMPlayTable[iVar4].info); + m4aMPlayStop(gMPlayTable[playerIndex2].info); puVar3->unk0 = 0; puVar3->songIndex = 997; puVar3->unk4 = 0; @@ -752,10 +753,10 @@ void sub_800C298(u16 songIndex) } else if (IsSoundEffect(songIndex)) { - uVar2 = GetMusicPlayerIndex(songIndex); - puVar6 = gMPlayTable[uVar2].info; - preload = &gUnknown_3000FD8[uVar2]; - if (uVar2 < 2) { + playerIndex = GetMusicPlayerIndex(songIndex); + puVar6 = gMPlayTable[playerIndex].info; + preload = &gUnknown_3000FD8[playerIndex]; + if (playerIndex < INDEX_SE1) { nullsub_21(songIndex); } else { @@ -776,9 +777,9 @@ void sub_800C298(u16 songIndex) { cVar3 = DisableInterrupts(); if (gUnknown_202D690 != 0) { - if (gUnknown_202D68E != 997) { - gUnknown_202D68E = 997; - m4aMPlayStop(&gUnknown_2000970); + if (gCurrentFanfareSong != 997) { + gCurrentFanfareSong = 997; + m4aMPlayStop(&gMPlayInfo_Fanfare); } } if (cVar3 != '\0') { @@ -789,9 +790,9 @@ void sub_800C298(u16 songIndex) { cVar4 = DisableInterrupts(); if (gUnknown_202D690 != 0) { - if (gUnknown_202D68E == songIndex) { - gUnknown_202D68E = 997; - m4aMPlayStop(&gUnknown_2000970); + if (gCurrentFanfareSong == songIndex) { + gCurrentFanfareSong = 997; + m4aMPlayStop(&gMPlayInfo_Fanfare); } } if (cVar4 != '\0') { @@ -807,11 +808,11 @@ void sub_800C3F8(u16 songIndex, u16 speed) char cVar3; char cVar4; u32 comparison; - s32 uVar6; - u32 uVar8; + s32 playerIndex2; + u32 playerIndex; struct unkStruct_3000FD8 *preload; struct unkStruct_3000FD8 *puVar3; - struct MusicPlayerInfo *puVar5; + struct MusicPlayerInfo *playerInfo; comparison = 0x80 << 17; // 16777216 if((speed * 65536) > comparison) @@ -828,14 +829,14 @@ void sub_800C3F8(u16 songIndex, u16 speed) if (songIndex == 997) { cVar1 = DisableInterrupts(); - for(uVar6 = 2, puVar3 = &gUnknown_3000FE8[0]; uVar6 < 7; uVar6++, puVar3++) + for(playerIndex2 = INDEX_SE1, puVar3 = &gUnknown_3000FE8[0]; playerIndex2 < INDEX_SE6; playerIndex2++, puVar3++) { if (puVar3->songIndex != 997) { - if (sub_800CAF0(uVar6) != '\0') { - m4aMPlayFadeOut(gMPlayTable[uVar6].info,speed); + if (IsMusicPlayerPlaying(playerIndex2)) { + m4aMPlayFadeOut(gMPlayTable[playerIndex2].info,speed); } else { - m4aMPlayStop(gMPlayTable[uVar6].info); + m4aMPlayStop(gMPlayTable[playerIndex2].info); puVar3->unk0 = 0; puVar3->songIndex = 997; puVar3->unk4 = 0; @@ -847,58 +848,56 @@ void sub_800C3F8(u16 songIndex, u16 speed) EnableInterrupts(); } } - else { - if (IsSoundEffect(songIndex)) { - uVar8 = GetMusicPlayerIndex(songIndex); - preload = &gUnknown_3000FD8[uVar8]; - puVar5 = gMPlayTable[uVar8].info; - cVar2 = DisableInterrupts(); - if (preload->songIndex != 997) { - if (sub_800CAF0(uVar8) != '\0') { - m4aMPlayFadeOut(puVar5,speed); - } - else { - m4aMPlayStop(puVar5); - preload->unk0 = 0; - preload->songIndex = 997; - preload->unk4 = 0; - preload->unk6 = 0; - } + else if (IsSoundEffect(songIndex)) { + playerIndex = GetMusicPlayerIndex(songIndex); + preload = &gUnknown_3000FD8[playerIndex]; + playerInfo = gMPlayTable[playerIndex].info; + cVar2 = DisableInterrupts(); + if (preload->songIndex != 997) { + if (IsMusicPlayerPlaying(playerIndex)) { + m4aMPlayFadeOut(playerInfo,speed); } - if (cVar2 != '\0') { - EnableInterrupts(); + else { + m4aMPlayStop(playerInfo); + preload->unk0 = 0; + preload->songIndex = 997; + preload->unk4 = 0; + preload->unk6 = 0; } } - else if (songIndex == 998) { - cVar3 = DisableInterrupts(); - if ((gUnknown_202D690 != 0) && (gUnknown_202D68E != 997)) { - if (sub_800CAF0(1) != '\0') { - m4aMPlayFadeOut(&gUnknown_2000970,speed); - } - else { - m4aMPlayStop(&gUnknown_2000970); - gUnknown_202D68E = 997; - } + if (cVar2 != '\0') { + EnableInterrupts(); + } + } + else if (songIndex == 998) { + cVar3 = DisableInterrupts(); + if ((gUnknown_202D690 != 0) && (gCurrentFanfareSong != 997)) { + if (IsMusicPlayerPlaying(INDEX_FANFARE)) { + m4aMPlayFadeOut(&gMPlayInfo_Fanfare,speed); } - if (cVar3 != '\0') { - EnableInterrupts(); + else { + m4aMPlayStop(&gMPlayInfo_Fanfare); + gCurrentFanfareSong = 997; } } - else if (IsFanfare(songIndex)) { - cVar4 = DisableInterrupts(); - if ((gUnknown_202D690 != 0) && (gUnknown_202D68E == songIndex)) { - if (sub_800CAF0(1) != '\0') { - m4aMPlayFadeOut(&gUnknown_2000970,speed); - } - else { - m4aMPlayStop(&gUnknown_2000970); - gUnknown_202D68E = 997; - } + if (cVar3 != '\0') { + EnableInterrupts(); + } + } + else if (IsFanfare(songIndex)) { + cVar4 = DisableInterrupts(); + if ((gUnknown_202D690 != 0) && (gCurrentFanfareSong == songIndex)) { + if (IsMusicPlayerPlaying(INDEX_FANFARE)) { + m4aMPlayFadeOut(&gMPlayInfo_Fanfare,speed); } - if (cVar4 != '\0') { - EnableInterrupts(); + else { + m4aMPlayStop(&gMPlayInfo_Fanfare); + gCurrentFanfareSong = 997; } } + if (cVar4 != '\0') { + EnableInterrupts(); + } } } @@ -911,10 +910,9 @@ bool8 sub_800C5D0(u16 songIndex) songIndex_u32 = songIndex; songIndex_u32_2 = songIndex_u32; - if (IsFanfare(songIndex_u32)) { - if ((gUnknown_202D690 != 0) && (gUnknown_202D68E == songIndex_u32)) { + if ((gUnknown_202D690 != 0) && (gCurrentFanfareSong == songIndex_u32)) { return TRUE; } } @@ -923,7 +921,7 @@ bool8 sub_800C5D0(u16 songIndex) if (IsSoundEffect(songIndex_u32)) { uVar3 = GetMusicPlayerIndex(songIndex_u32); preload = &gUnknown_3000FD8[uVar3]; - if ((1 < uVar3) && (preload->songIndex == songIndex_u32_2)) { + if ((INDEX_SE1 <= uVar3) && (preload->songIndex == songIndex_u32_2)) { return TRUE; } } diff --git a/sym_ewram.txt b/sym_ewram.txt index 5ad637869..fe49cf47a 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1,38 +1,53 @@ gMPlayTrack_BGM = .; /* 2000000 */ . += 0x3C0; -gMPlayTrack_Unknown1 = .; /* 20003C0 */ +gMPlayTrack_Fanfare = .; /* 20003C0 */ . += 0x1E0; -gMPlayTrack_Unknown2 = .; /* 20005A0 */ +gMPlayTrack_SE1 = .; /* 20005A0 */ . += 0x50; -gMPlayTrack_Unknown3 = .; /* 20005F0 */ +gMPlayTrack_SE2 = .; /* 20005F0 */ . += 0x50; -gMPlayTrack_Unknown4 = .; /* 2000640 */ +gMPlayTrack_SE3 = .; /* 2000640 */ . += 0xA0; -gMPlayTrack_Unknown5 = .; /* 20006E0 */ +gMPlayTrack_SE4 = .; /* 20006E0 */ . += 0xA0; -gMPlayTrack_Unknown6 = .; /* 2000780 */ +gMPlayTrack_SE5 = .; /* 2000780 */ . += 0xA0; -gMPlayTrack_Unknown7 = .; /* 2000820 */ +gMPlayTrack_SE6 = .; /* 2000820 */ . += 0x50; -gUnknown_2000870 = .; /* 2000870 */ - . += 0x80; +gMPlayInfo_SE4 = .; /* 2000870 */ + . += 0x40; + +gMPlayInfo_SE5 = .; /* 20008B0 */ + . += 0x40; gMPlayInfo_BGM = .; /* 20008F0 */ - . += 0x80; + . += 0x40; -gUnknown_2000970 = .; /* 2000970 */ - . += 0xC0; +gMPlayInfo_SE6 = .; /* 2000930 */ + . += 0x40; + +gMPlayInfo_Fanfare = .; /* 2000970 */ + . += 0x40; + +gMPlayInfo_SE1 = .; /* 20009B0 */ + . += 0x40; + +gMPlayInfo_SE3 = .; /* 20009F0 */ + . += 0x40; gMPlayMemAccArea = .; /* 2000A30 */ - . += 0x50; + . += 0x10; + +gMPlayInfo_SE2 = .; /* 2000A40 */ + . += 0x40; gUnknown_2000A80 = .; /* 2000A80 */ . += 0x8; @@ -305,7 +320,7 @@ gCurrentBGSong = .; /* 202D68A */ gUnknown_202D68C = .; /* 202D68C */ . += 0x2; -gUnknown_202D68E = .; /* 202D68E */ +gCurrentFanfareSong = .; /* 202D68E */ . += 0x2; gUnknown_202D690 = .; /* 202D690 */