document all music players

This commit is contained in:
Seth Barberee
2022-06-16 16:38:44 -07:00
parent 10248ae248
commit 4ba50b5349
7 changed files with 215 additions and 177 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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;
}
}

View File

@@ -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 */