Rename many music functions and symbols

This commit is contained in:
Ryan Dwyer 2021-10-31 18:07:35 +10:00
parent a83ab5396a
commit 1e2e530f04
22 changed files with 309 additions and 250 deletions

View File

@ -6177,7 +6177,7 @@ bool aiStopCutsceneTrack(void)
bool aiPlayTemporaryTrack(void)
{
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
musicStartTemporary(cmd[2]);
musicStartTemporaryAmbient(cmd[2]);
g_Vars.aioffset += 3;
return false;
@ -6189,7 +6189,7 @@ bool aiPlayTemporaryTrack(void)
bool aiStopAmbientTrack(void)
{
g_Vars.aioffset += 2;
musicEndAmbient();
musicEndTemporaryAmbient();
return false;
}

View File

@ -3189,7 +3189,7 @@ void creditsTickSlide(void)
g_CreditsData->unk4204 = 0;
g_CreditsData->unk4208 = 0;
musicResumeAfterUnpause();
musicEndMenu();
musicStartPrimary(0);
}
} while (credit && credit->more && g_CreditsData->numthisslide < 4);
@ -4847,7 +4847,7 @@ void creditsTick(void)
musicStartPrimary(0);
} else {
musicSetStage(STAGE_CREDITS);
musicStartMenu2(MUSIC_CREDITS);
musicStartTrackAsMenu(MUSIC_CREDITS);
}
}
@ -4938,7 +4938,7 @@ glabel var7f1afe70nb
.NB0f1359ec:
/* f1359ec: 0fc5a1ab */ jal musicSetStage
/* f1359f0: 2404005c */ addiu $a0,$zero,0x5c
/* f1359f4: 0fc5a176 */ jal musicStartMenu2
/* f1359f4: 0fc5a176 */ jal musicStartTrackAsMenu
/* f1359f8: 24040058 */ addiu $a0,$zero,0x58
/* f1359fc: 00002025 */ or $a0,$zero,$zero
.NB0f135a00:

View File

@ -1223,7 +1223,7 @@ glabel var7f1a863c
.PF0f01cfd4:
/* f01cfd4: 0c0039af */ jal mainChangeToStage
/* f01cfd8: 00000000 */ nop
/* f01cfdc: 0fc5b88c */ jal func0f16d3d0
/* f01cfdc: 0fc5b88c */ jal musicQueueStopAllEvent
/* f01cfe0: 00000000 */ nop
/* f01cfe4: 10000042 */ b .PF0f01d0f0
/* f01cfe8: 240fffff */ li $t7,-1
@ -1297,7 +1297,7 @@ glabel var7f1a863c
.PF0f01d0dc:
/* f01d0dc: 52000004 */ beqzl $s0,.PF0f01d0f0
/* f01d0e0: 240fffff */ li $t7,-1
/* f01d0e4: 0fc5ba5d */ jal musicStartForMenu
/* f01d0e4: 0fc5ba5d */ jal musicStartMenu
/* f01d0e8: 00000000 */ nop
.PF0f01d0ec:
/* f01d0ec: 240fffff */ li $t7,-1
@ -3000,7 +3000,7 @@ glabel var7f1a863c
.L0f01cf04:
/* f01cf04: 0c003a57 */ jal mainChangeToStage
/* f01cf08: 00000000 */ nop
/* f01cf0c: 0fc5b4f4 */ jal func0f16d3d0
/* f01cf0c: 0fc5b4f4 */ jal musicQueueStopAllEvent
/* f01cf10: 00000000 */ nop
/* f01cf14: 10000042 */ b .L0f01d020
/* f01cf18: 2419ffff */ addiu $t9,$zero,-1
@ -3074,7 +3074,7 @@ glabel var7f1a863c
.L0f01d00c:
/* f01d00c: 52000004 */ beqzl $s0,.L0f01d020
/* f01d010: 2419ffff */ addiu $t9,$zero,-1
/* f01d014: 0fc5b6c5 */ jal musicStartForMenu
/* f01d014: 0fc5b6c5 */ jal musicStartMenu
/* f01d018: 00000000 */ nop
.L0f01d01c:
/* f01d01c: 2419ffff */ addiu $t9,$zero,-1
@ -4768,7 +4768,7 @@ glabel var7f1a863c
.NB0f01cbe4:
/* f01cbe4: 0c003c56 */ jal mainChangeToStage
/* f01cbe8: 00000000 */ sll $zero,$zero,0x0
/* f01cbec: 0fc5a04d */ jal func0f16d3d0
/* f01cbec: 0fc5a04d */ jal musicQueueStopAllEvent
/* f01cbf0: 00000000 */ sll $zero,$zero,0x0
/* f01cbf4: 10000042 */ beqz $zero,.NB0f01cd00
/* f01cbf8: 2419ffff */ addiu $t9,$zero,-1
@ -4842,7 +4842,7 @@ glabel var7f1a863c
.NB0f01ccec:
/* f01ccec: 52000004 */ beqzl $s0,.NB0f01cd00
/* f01ccf0: 2419ffff */ addiu $t9,$zero,-1
/* f01ccf4: 0fc5a1e8 */ jal musicStartForMenu
/* f01ccf4: 0fc5a1e8 */ jal musicStartMenu
/* f01ccf8: 00000000 */ sll $zero,$zero,0x0
.NB0f01ccfc:
/* f01ccfc: 2419ffff */ addiu $t9,$zero,-1
@ -5916,7 +5916,7 @@ glabel var7f1a863c
// gamefileLoadDefaults(&g_GameFile);
// gamefileApplyOptions(&g_GameFile);
// mainChangeToStage(IS4MB() ? STAGE_4MBMENU : STAGE_CITRAINING);
// func0f16d3d0();
// musicQueueStopAllEvent();
// } else {
// // cf1c
// s32 pass = false;
@ -5944,7 +5944,7 @@ glabel var7f1a863c
// }
//
// if (pass) {
// musicStartForMenu();
// musicStartMenu();
// }
// }
//

View File

@ -4231,7 +4231,7 @@ void currentPlayerTickPauseMenu(void)
}
}
musicStartForMenu();
musicStartMenu();
}
break;
case PAUSEMODE_PAUSED:
@ -4244,7 +4244,7 @@ void currentPlayerTickPauseMenu(void)
if (g_Vars.currentplayer->pausetime60 >= 20) {
lvSetPaused(false);
g_Vars.currentplayer->pausemode = PAUSEMODE_UNPAUSED;
musicResumeAfterUnpause();
musicEndMenu();
}
break;
}
@ -4259,11 +4259,11 @@ void currentPlayerPause(s32 root)
}
}
void func0f0baf38(void)
void currentPlayerUnpause(void)
{
if (g_Vars.currentplayer->pausemode == PAUSEMODE_PAUSED) {
lvSetPaused(false);
musicResumeAfterUnpause();
musicEndMenu();
g_Vars.currentplayer->pausemode = PAUSEMODE_UNPAUSED;
}
}
@ -14520,7 +14520,7 @@ Gfx *currentPlayerRenderHud(Gfx *gdl)
if (g_Vars.mplayerisrunning == false) {
musicStartSoloDeath();
} else {
func0f16dd14();
musicStartMpDeath();
}
} else {
if (g_Vars.currentplayer->redbloodfinished) {

View File

@ -17713,7 +17713,7 @@ glabel var7f1b29f8
/* f0f8538: 24040004 */ addiu $a0,$zero,0x4
/* f0f853c: 1000001e */ b .L0f0f85b8
/* f0f8540: 00000000 */ nop
/* f0f8544: 0fc5b6c5 */ jal musicStartForMenu
/* f0f8544: 0fc5b6c5 */ jal musicStartMenu
/* f0f8548: 00000000 */ nop
/* f0f854c: 3c03800a */ lui $v1,%hi(g_MenuData)
/* f0f8550: 246319c0 */ addiu $v1,$v1,%lo(g_MenuData)
@ -17737,7 +17737,7 @@ glabel var7f1b29f8
/* f0f8594: 24040001 */ addiu $a0,$zero,0x1
/* f0f8598: 10000007 */ b .L0f0f85b8
/* f0f859c: 00000000 */ nop
/* f0f85a0: 0fc5b6c5 */ jal musicStartForMenu
/* f0f85a0: 0fc5b6c5 */ jal musicStartMenu
/* f0f85a4: 00000000 */ nop
/* f0f85a8: 3c03800a */ lui $v1,%hi(g_MenuData)
/* f0f85ac: 246319c0 */ addiu $v1,$v1,%lo(g_MenuData)
@ -17952,7 +17952,7 @@ glabel var7f1b29f8
/* f0f4ea0: 24040004 */ addiu $a0,$zero,0x4
/* f0f4ea4: 1000001e */ beqz $zero,.NB0f0f4f20
/* f0f4ea8: 00000000 */ sll $zero,$zero,0x0
/* f0f4eac: 0fc5a1e8 */ jal musicStartForMenu
/* f0f4eac: 0fc5a1e8 */ jal musicStartMenu
/* f0f4eb0: 00000000 */ sll $zero,$zero,0x0
/* f0f4eb4: 3c03800a */ lui $v1,0x800a
/* f0f4eb8: 24635eb0 */ addiu $v1,$v1,0x5eb0
@ -17976,7 +17976,7 @@ glabel var7f1b29f8
/* f0f4efc: 24040001 */ addiu $a0,$zero,0x1
/* f0f4f00: 10000007 */ beqz $zero,.NB0f0f4f20
/* f0f4f04: 00000000 */ sll $zero,$zero,0x0
/* f0f4f08: 0fc5a1e8 */ jal musicStartForMenu
/* f0f4f08: 0fc5a1e8 */ jal musicStartMenu
/* f0f4f0c: 00000000 */ sll $zero,$zero,0x0
/* f0f4f10: 3c03800a */ lui $v1,0x800a
/* f0f4f14: 24635eb0 */ addiu $v1,$v1,0x5eb0
@ -18000,7 +18000,7 @@ glabel var7f1b29f8
void func0f0f85e0(struct menudialog *dialog, s32 root)
{
if (dialog == &g_CiMenuViaPcMenuDialog) {
musicStartForMenu();
musicStartMenu();
}
menuPushRootDialog(dialog, root);
@ -23743,7 +23743,7 @@ void func0f0fa6ac(void)
case MENUROOT_FILEMGR:
case MENUROOT_4MBMAINMENU:
case MENUROOT_TRAINING:
func0f0baf38();
currentPlayerUnpause();
g_PlayersWithControl[0] = true;
}
}

View File

@ -611,7 +611,7 @@ s32 stageGetPrimaryTrack(s32 stagenum)
s32 i;
if (g_Vars.normmplayerisrunning) {
return func0f18c4c0();
return mpChooseRandomTrack();
}
i = 0;
@ -619,7 +619,7 @@ s32 stageGetPrimaryTrack(s32 stagenum)
while (g_StageTracks[i].stagenum) {
if (g_StageTracks[i].stagenum == stagenum) {
if (g_StageTracks[i].primarytrack == -1) {
return func0f18c4c0();
return mpChooseRandomTrack();
}
return g_StageTracks[i].primarytrack;
@ -628,7 +628,7 @@ s32 stageGetPrimaryTrack(s32 stagenum)
i++;
}
return func0f18c4c0();
return mpChooseRandomTrack();
}
s32 stageGetAmbientTrack(s32 stagenum)
@ -646,7 +646,7 @@ s32 stageGetAmbientTrack(s32 stagenum)
return -1;
}
s32 stageGetXTrack(s32 stagenum)
s32 stageGetNrgTrack(s32 stagenum)
{
s32 i = 0;

View File

@ -356,7 +356,7 @@ void lvInit(s32 stagenum)
g_MiscAudioHandle = NULL;
func0f16d324();
musicInit();
func0f011124(true);
func0f013b80();
texturesLoadConfigs();
@ -681,7 +681,7 @@ glabel var7f1b1f44nc
/* f1628ac: a22004d6 */ sb $zero,0x4d6($s1)
/* f1628b0: a22004d7 */ sb $zero,0x4d7($s1)
/* f1628b4: 3c018008 */ lui $at,0x8008
/* f1628b8: 0fc5a026 */ jal func0f16d324
/* f1628b8: 0fc5a026 */ jal musicInit
/* f1628bc: ac206894 */ sw $zero,0x6894($at)
/* f1628c0: 0fc04399 */ jal func0f011124
/* f1628c4: 24040001 */ addiu $a0,$zero,0x1

View File

@ -52,7 +52,7 @@ const char var7f1b8a00[] = "||||||||||||| Starting game... players %d\n";
#endif
s32 var80087260 = 0x00000000;
u32 var80087264 = 0x00000000;
bool g_MpEnableMusicSwitching = false;
struct mpweapon g_MpWeapons[0x27] = {
/*0x00*/ { WEAPON_NONE, 0x00, 0x00, 0x00, 0x00, 1, 0, MODEL_CHRTT33, 0x0100 },
@ -263,7 +263,7 @@ void mpInit(void)
g_MpSetup.paused = false;
var80087264 = 0;
g_MpEnableMusicSwitching = false;
if (g_Vars.normmplayerisrunning) {
if (mpGetUsingMultipleTunes()) {
@ -278,7 +278,7 @@ void mpInit(void)
}
if (count >= 2) {
var80087264 = 1;
g_MpEnableMusicSwitching = true;
}
}
@ -7253,7 +7253,7 @@ void mpEndMatch(void)
s32 prevplayernum;
s32 i;
musicStartForMenu();
musicStartMenu();
mpSetPaused(MPPAUSEMODE_GAMEOVER);
prevplayernum = g_Vars.currentplayernum;
@ -7793,7 +7793,7 @@ s32 mpGetCurrentTrackSlotNum(void)
#if VERSION >= VERSION_PAL_FINAL
GLOBAL_ASM(
glabel func0f18c4c0
glabel mpChooseRandomTrack
/* f18d564: 27bdffc8 */ addiu $sp,$sp,-56
/* f18d568: afbf0034 */ sw $ra,0x34($sp)
/* f18d56c: afb60030 */ sw $s6,0x30($sp)
@ -8007,7 +8007,7 @@ glabel func0f18c4c0
);
#else
GLOBAL_ASM(
glabel func0f18c4c0
glabel mpChooseRandomTrack
/* f18c4c0: 27bdffc8 */ addiu $sp,$sp,-56
/* f18c4c4: afbf0034 */ sw $ra,0x34($sp)
/* f18c4c8: afb60030 */ sw $s6,0x30($sp)
@ -8062,12 +8062,12 @@ glabel func0f18c4c0
/* f18c578: aec20004 */ sw $v0,0x4($s6)
/* f18c57c: 006f1821 */ addu $v1,$v1,$t7
/* f18c580: 94637a70 */ lhu $v1,%lo(g_MpTracks)($v1)
/* f18c584: 3c018008 */ lui $at,%hi(var800840f8)
/* f18c584: 3c018008 */ lui $at,%hi(g_MusicLife60)
/* f18c588: 307801ff */ andi $t8,$v1,0x1ff
/* f18c58c: 0018c900 */ sll $t9,$t8,0x4
/* f18c590: 0338c823 */ subu $t9,$t9,$t8
/* f18c594: 0019c880 */ sll $t9,$t9,0x2
/* f18c598: ac3940f8 */ sw $t9,%lo(var800840f8)($at)
/* f18c598: ac3940f8 */ sw $t9,%lo(g_MusicLife60)($at)
/* f18c59c: 10000073 */ b .L0f18c76c
/* f18c5a0: 00031242 */ srl $v0,$v1,0x9
.L0f18c5a4:
@ -8105,12 +8105,12 @@ glabel func0f18c4c0
/* f18c608: 1661000a */ bne $s3,$at,.L0f18c634
/* f18c60c: 3c038008 */ lui $v1,%hi(g_MpTracks)
/* f18c610: 94637a70 */ lhu $v1,%lo(g_MpTracks)($v1)
/* f18c614: 3c018008 */ lui $at,%hi(var800840f8)
/* f18c614: 3c018008 */ lui $at,%hi(g_MusicLife60)
/* f18c618: 306801ff */ andi $t0,$v1,0x1ff
/* f18c61c: 00084900 */ sll $t1,$t0,0x4
/* f18c620: 01284823 */ subu $t1,$t1,$t0
/* f18c624: 00094880 */ sll $t1,$t1,0x2
/* f18c628: ac2940f8 */ sw $t1,%lo(var800840f8)($at)
/* f18c628: ac2940f8 */ sw $t1,%lo(g_MusicLife60)($at)
/* f18c62c: 1000004f */ b .L0f18c76c
/* f18c630: 00031242 */ srl $v0,$v1,0x9
.L0f18c634:
@ -8130,12 +8130,12 @@ glabel func0f18c4c0
/* f18c664: aed30004 */ sw $s3,0x4($s6)
/* f18c668: 006b1821 */ addu $v1,$v1,$t3
/* f18c66c: 94637a70 */ lhu $v1,%lo(g_MpTracks)($v1)
/* f18c670: 3c018008 */ lui $at,%hi(var800840f8)
/* f18c670: 3c018008 */ lui $at,%hi(g_MusicLife60)
/* f18c674: 306c01ff */ andi $t4,$v1,0x1ff
/* f18c678: 000c6900 */ sll $t5,$t4,0x4
/* f18c67c: 01ac6823 */ subu $t5,$t5,$t4
/* f18c680: 000d6880 */ sll $t5,$t5,0x2
/* f18c684: ac2d40f8 */ sw $t5,%lo(var800840f8)($at)
/* f18c684: ac2d40f8 */ sw $t5,%lo(g_MusicLife60)($at)
/* f18c688: 10000038 */ b .L0f18c76c
/* f18c68c: 00031242 */ srl $v0,$v1,0x9
.L0f18c690:
@ -8170,12 +8170,12 @@ glabel func0f18c4c0
/* f18c6f8: aec20004 */ sw $v0,0x4($s6)
/* f18c6fc: 006f1821 */ addu $v1,$v1,$t7
/* f18c700: 94637a70 */ lhu $v1,%lo(g_MpTracks)($v1)
/* f18c704: 3c018008 */ lui $at,%hi(var800840f8)
/* f18c704: 3c018008 */ lui $at,%hi(g_MusicLife60)
/* f18c708: 307801ff */ andi $t8,$v1,0x1ff
/* f18c70c: 0018c900 */ sll $t9,$t8,0x4
/* f18c710: 0338c823 */ subu $t9,$t9,$t8
/* f18c714: 0019c880 */ sll $t9,$t9,0x2
/* f18c718: ac3940f8 */ sw $t9,%lo(var800840f8)($at)
/* f18c718: ac3940f8 */ sw $t9,%lo(g_MusicLife60)($at)
/* f18c71c: 10000013 */ b .L0f18c76c
/* f18c720: 00031242 */ srl $v0,$v1,0x9
.L0f18c724:
@ -8190,12 +8190,12 @@ glabel func0f18c4c0
/* f18c744: aec20004 */ sw $v0,0x4($s6)
/* f18c748: 00681821 */ addu $v1,$v1,$t0
/* f18c74c: 94637a70 */ lhu $v1,%lo(g_MpTracks)($v1)
/* f18c750: 3c018008 */ lui $at,%hi(var800840f8)
/* f18c750: 3c018008 */ lui $at,%hi(g_MusicLife60)
/* f18c754: 306901ff */ andi $t1,$v1,0x1ff
/* f18c758: 00095100 */ sll $t2,$t1,0x4
/* f18c75c: 01495023 */ subu $t2,$t2,$t1
/* f18c760: 000a5080 */ sll $t2,$t2,0x2
/* f18c764: ac2a40f8 */ sw $t2,%lo(var800840f8)($at)
/* f18c764: ac2a40f8 */ sw $t2,%lo(g_MusicLife60)($at)
/* f18c768: 00031242 */ srl $v0,$v1,0x9
.L0f18c76c:
/* f18c76c: 8fbf0034 */ lw $ra,0x34($sp)

View File

@ -6512,7 +6512,7 @@ s32 mpSelectTuneListHandler(s32 operation, struct menuitem *item, union handlerd
break;
case MENUOP_LISTITEMFOCUS:
if (data->list.value < mpGetNumUnlockedTracks()) {
musicStartMenu2(mpGetTrackMusicNum(data->list.value));
musicStartTrackAsMenu(mpGetTrackMusicNum(data->list.value));
}
break;
case MENUOP_GETLISTITEMCHECKBOX:

View File

@ -11,8 +11,10 @@
#include "data.h"
#include "types.h"
#define FADETYPE_STOP 0
#define FADETYPE_PAUSE 1
s32 g_MusicStageNum;
u32 var800aa5d4;
struct musicevent g_MusicEventQueue[40];
struct var800aaa38 var800aaa38[3];
u32 g_AudioXReasonsActive[4];
@ -29,20 +31,20 @@ s32 var800840d0 = -1;
#endif
u32 g_MusicNextEventId = 0;
u32 g_MusicNrgIsPlaying = false;
s32 var800840dc = 0;
bool g_MusicNrgIsActive = false;
bool g_MusicMpDeathIsPlaying = false;
s32 var800840e0 = 15;
s32 var800840e4 = 0;
s32 var800840e8 = 0;
bool g_MusicSoloDeathIsPlaying = false;
#if VERSION >= VERSION_NTSC_1_0
u16 var800840ec = 0x5000;
u16 g_MusicVolume = 0x5000;
#endif
s32 g_MusicDeathTimer240 = 0x00000000;
s32 var800840f4 = 0x00000000;
s32 var800840f8 = PAL ? 100 : 120;
s32 var800840fc = 0x00000000;
s32 g_MusicDeathTimer240 = 0; // Counts down 5 seconds while death music plays
s32 g_MusicAge60 = 0; // The current age of the MP track being played
s32 g_MusicLife60 = PALDOWN(120); // The max age of any MP track (this value is changed in MP code)
s32 g_MusicSilenceTimer60 = 0; // Counts down the 2 second silence between MP track changes
#if VERSION < VERSION_NTSC_1_0
const char var7f1b2030nb[] = "MUSIC : musicPlayLevel\n";
@ -55,12 +57,12 @@ const char var7f1b20b8nb[] = "musicStartWatch start\n";
const char var7f1b20d0nb[] = "musicEndWatch start\n";
const char var7f1b20e8nb[] = "musicEndWatch end\n";
const char var7f1b20fcnb[] = "musicStartDead\n";
const char var7f1b210cnb[] = "musicStartTemporary\n";
const char var7f1b210cnb[] = "musicStartTemporaryAmbient\n";
const char var7f1b2124nb[] = "musicEndTemporary\n";
const char var7f1b2138nb[] = "musicStartCutscene\n";
const char var7f1b214cnb[] = "musicEndCutscene\n";
const char var7f1b2160nb[] = "musicStartAmbient : Tune=%d\n";
const char var7f1b2180nb[] = "musicEndAmbient\n";
const char var7f1b2180nb[] = "musicEndTemporaryAmbient\n";
#endif
char *var80084100[] = {
@ -88,8 +90,8 @@ u16 musicGetVolume(void)
return 0x5000;
}
if (var800840ec < 0x5000) {
volume = var800840ec;
if (g_MusicVolume < 0x5000) {
volume = g_MusicVolume;
} else {
volume = 0x5000;
}
@ -111,13 +113,13 @@ void musicSetVolume(u16 volume)
#endif
for (i = 0; i < ARRAYCOUNT(var800aaa38); i++) {
if (var800aaa38[i].tracktype != 0 && var800aaa38[i].tracktype != TRACKTYPE_AMBIENT) {
snd0000fd9c(&var80094ed8[i], volume);
if (var800aaa38[i].tracktype != TRACKTYPE_NONE && var800aaa38[i].tracktype != TRACKTYPE_AMBIENT) {
sndSetMusicChannelVolume(&var80094ed8[i], volume);
}
}
#if VERSION >= VERSION_NTSC_1_0
var800840ec = volume;
g_MusicVolume = volume;
#endif
}
@ -157,7 +159,7 @@ s32 func0f16d124(s32 tracktype)
return 0;
}
s32 func0f16d180(s32 tracktype)
s32 musicGetChannelByTrackType(s32 tracktype)
{
s32 i;
@ -170,7 +172,7 @@ s32 func0f16d180(s32 tracktype)
return -1;
}
void musicStart(u32 tracktype, u32 tracknum, f32 arg2, u16 volume)
void musicQueueStartEvent(u32 tracktype, u32 tracknum, f32 arg2, u16 volume)
{
if (!g_SndDisabled) {
g_MusicEventQueue[g_MusicEventQueueLength].tracktype = tracktype;
@ -185,7 +187,7 @@ void musicStart(u32 tracktype, u32 tracknum, f32 arg2, u16 volume)
}
}
void musicEnd(s32 tracktype)
void musicQueueStopEvent(s32 tracktype)
{
if (!g_SndDisabled) {
g_MusicEventQueue[g_MusicEventQueueLength].tracktype = tracktype;
@ -197,12 +199,12 @@ void musicEnd(s32 tracktype)
}
}
void func0f16d2ac(s32 tracktype, f32 arg1, s32 arg2)
void musicQueueFadeEvent(s32 tracktype, f32 arg1, bool fadetopause)
{
if (!g_SndDisabled) {
g_MusicEventQueue[g_MusicEventQueueLength].tracktype = tracktype;
g_MusicEventQueue[g_MusicEventQueueLength].unk0c = arg1;
g_MusicEventQueue[g_MusicEventQueueLength].unk08 = arg2;
g_MusicEventQueue[g_MusicEventQueueLength].fadetopause = fadetopause;
g_MusicEventQueue[g_MusicEventQueueLength].eventtype = MUSICEVENTTYPE_FADE;
g_MusicEventQueue[g_MusicEventQueueLength].id = g_MusicNextEventId++;
g_MusicEventQueue[g_MusicEventQueueLength].numattempts = 0;
@ -211,7 +213,7 @@ void func0f16d2ac(s32 tracktype, f32 arg1, s32 arg2)
}
}
void func0f16d324(void)
void musicInit(void)
{
s32 i;
@ -224,22 +226,22 @@ void func0f16d324(void)
#if VERSION >= VERSION_NTSC_1_0
func0f16d430();
func0f16d3d0();
func0f16d44c();
musicQueueStopAllEvent();
musicQueueType5Event();
#else
func0f16d3d0();
musicQueueStopAllEvent();
#endif
var800840e8 = 0;
g_MusicSoloDeathIsPlaying = false;
g_MusicDeathTimer240 = 0;
g_MenuTrack = -1;
g_TemporaryPrimaryTrack = -1;
g_TemporaryAmbientTrack = -1;
g_MusicNrgIsPlaying = 0;
g_MusicNrgIsActive = false;
}
}
void func0f16d3d0(void)
void musicQueueStopAllEvent(void)
{
#if VERSION >= VERSION_NTSC_1_0
g_MusicEventQueue[0].tracktype = TRACKTYPE_6;
@ -262,7 +264,7 @@ void func0f16d430(void)
var800840e0 = 0;
}
void func0f16d44c(void)
void musicQueueType5Event(void)
{
g_MusicEventQueue[g_MusicEventQueueLength].tracktype = TRACKTYPE_6;
g_MusicEventQueue[g_MusicEventQueueLength].eventtype = MUSICEVENTTYPE_5;
@ -280,7 +282,7 @@ void func0f16d44c(void)
void musicStartPrimary(f32 arg0)
{
if (PRIMARYTRACK() >= 0) {
musicStart(TRACKTYPE_PRIMARY, PRIMARYTRACK(), arg0, musicGetVolume());
musicQueueStartEvent(TRACKTYPE_PRIMARY, PRIMARYTRACK(), arg0, musicGetVolume());
}
}
@ -296,8 +298,8 @@ void musicStartAmbient(f32 arg0)
pass = true;
} else if (musicIsAnyPlayerInAmbientRoom()) {
if (g_Vars.tickmode != TICKMODE_CUTSCENE && AMBIENTTRACK() != stageGetAmbientTrack(g_MusicStageNum)) {
musicEnd(TRACKTYPE_AMBIENT);
musicStartTemporary(stageGetAmbientTrack(g_MusicStageNum));
musicQueueStopEvent(TRACKTYPE_AMBIENT);
musicStartTemporaryAmbient(stageGetAmbientTrack(g_MusicStageNum));
return;
}
@ -309,7 +311,7 @@ void musicStartAmbient(f32 arg0)
pass = func0f16d124(TRACKTYPE_AMBIENT);
if (pass == 0 || pass == 2) {
musicStart(TRACKTYPE_AMBIENT, AMBIENTTRACK(), arg0, VOLUME(g_SfxVolume));
musicQueueStartEvent(TRACKTYPE_AMBIENT, AMBIENTTRACK(), arg0, VOLUME(g_SfxVolume));
}
}
}
@ -372,12 +374,12 @@ glabel musicStartAmbient
/* f1682dc: 8fa30018 */ lw $v1,0x18($sp)
/* f1682e0: 5043000b */ beql $v0,$v1,.NB0f168310
/* f1682e4: 24050001 */ addiu $a1,$zero,0x1
/* f1682e8: 0fc59fed */ jal musicEnd
/* f1682e8: 0fc59fed */ jal musicQueueStopEvent
/* f1682ec: 24040005 */ addiu $a0,$zero,0x5
/* f1682f0: 3c04800b */ lui $a0,0x800b
/* f1682f4: 0fc5c65e */ jal stageGetAmbientTrack
/* f1682f8: 8c84ee80 */ lw $a0,-0x1180($a0)
/* f1682fc: 0fc5a2f1 */ jal musicStartTemporary
/* f1682fc: 0fc5a2f1 */ jal musicStartTemporaryAmbient
/* f168300: 00402025 */ or $a0,$v0,$zero
/* f168304: 1000001a */ beqz $zero,.NB0f168370
/* f168308: 8fbf0014 */ lw $ra,0x14($sp)
@ -407,7 +409,7 @@ glabel musicStartAmbient
/* f168358: 3c078006 */ lui $a3,0x8006
/* f16835c: 94e7f6e8 */ lhu $a3,-0x918($a3)
/* f168360: 24040005 */ addiu $a0,$zero,0x5
/* f168364: 0fc59fcc */ jal musicStart
/* f168364: 0fc59fcc */ jal musicQueueStartEvent
/* f168368: 8fa60020 */ lw $a2,0x20($sp)
.NB0f16836c:
/* f16836c: 8fbf0014 */ lw $ra,0x14($sp)
@ -430,11 +432,11 @@ bool musicIsAnyPlayerInAmbientRoom(void)
return false;
}
if (var800840e8) {
if (g_MusicSoloDeathIsPlaying) {
return false;
}
if (g_MusicNrgIsPlaying && var800840dc) {
if (g_MusicNrgIsActive && g_MusicMpDeathIsPlaying) {
return false;
}
@ -459,30 +461,41 @@ bool musicIsAnyPlayerInAmbientRoom(void)
return false;
}
void musicStartX(f32 arg0)
void musicStartNrg(f32 arg0)
{
musicStart(TRACKTYPE_X, stageGetXTrack(g_MusicStageNum), arg0, musicGetVolume());
musicQueueStartEvent(TRACKTYPE_NRG, stageGetNrgTrack(g_MusicStageNum), arg0, musicGetVolume());
}
void musicStartMenu(f32 arg0)
/**
* Not called.
*/
void musicStartWatch(f32 arg0)
{
musicStart(TRACKTYPE_MENU, menuChooseMusic(), arg0, musicGetVolume());
musicQueueStartEvent(TRACKTYPE_MENU, menuChooseMusic(), arg0, musicGetVolume());
}
void musicStartMenu2(s32 tracknum)
/**
* Play a specific track as a menu track.
*
* Used in credits and the soundtrack dialog in MP setup.
*/
void musicStartTrackAsMenu(s32 tracknum)
{
if (tracknum != g_MenuTrack) {
musicEnd(TRACKTYPE_MENU);
musicEnd(TRACKTYPE_DEATH);
func0f16d2ac(TRACKTYPE_PRIMARY, 0.5f, 1);
func0f16d2ac(TRACKTYPE_X, 0.5f, 1);
func0f16d2ac(TRACKTYPE_AMBIENT, 0.5f, 1);
musicStart(TRACKTYPE_MENU, tracknum, 0, musicGetVolume());
musicQueueStopEvent(TRACKTYPE_MENU);
musicQueueStopEvent(TRACKTYPE_DEATH);
musicQueueFadeEvent(TRACKTYPE_PRIMARY, 0.5f, FADETYPE_PAUSE);
musicQueueFadeEvent(TRACKTYPE_NRG, 0.5f, FADETYPE_PAUSE);
musicQueueFadeEvent(TRACKTYPE_AMBIENT, 0.5f, FADETYPE_PAUSE);
musicQueueStartEvent(TRACKTYPE_MENU, tracknum, 0, musicGetVolume());
}
g_MenuTrack = tracknum;
}
/**
* Used when starting combat simulator matches.
*/
void musicSetStageAndStartMusic(s32 stagenum)
{
g_MusicStageNum = stagenum;
@ -494,6 +507,9 @@ void musicSetStageAndStartMusic(s32 stagenum)
}
}
/**
* Used for solo missions.
*/
void musicSetStage(s32 stagenum)
{
g_MusicStageNum = stagenum;
@ -503,60 +519,63 @@ void musicReset(void)
{
#if VERSION >= VERSION_NTSC_1_0
func0f16d430();
func0f16d3d0();
func0f16d44c();
musicQueueStopAllEvent();
musicQueueType5Event();
#else
func0f16d3d0();
musicQueueStopAllEvent();
#endif
}
void musicStartNrg(void)
void musicActivateNrg(void)
{
#if VERSION >= VERSION_NTSC_1_0
if (g_MusicNrgIsPlaying == 0)
if (!g_MusicNrgIsActive)
#endif
{
if (stageGetXTrack(g_MusicStageNum) >= 0) {
musicEnd(TRACKTYPE_X);
musicEnd(TRACKTYPE_MENU);
musicEnd(TRACKTYPE_DEATH);
func0f16d2ac(TRACKTYPE_PRIMARY, 0.5, 1);
musicStartX(0);
if (stageGetNrgTrack(g_MusicStageNum) >= 0) {
musicQueueStopEvent(TRACKTYPE_NRG);
musicQueueStopEvent(TRACKTYPE_MENU);
musicQueueStopEvent(TRACKTYPE_DEATH);
musicQueueFadeEvent(TRACKTYPE_PRIMARY, 0.5, FADETYPE_PAUSE);
musicStartNrg(0);
g_MusicNrgIsPlaying = 1;
g_MusicNrgIsActive = true;
}
}
}
void musicStopNrg(void)
void musicDeactivateNrg(void)
{
#if VERSION >= VERSION_NTSC_1_0
if (g_MusicNrgIsPlaying)
if (g_MusicNrgIsActive)
#endif
{
musicEnd(TRACKTYPE_MENU);
musicEnd(TRACKTYPE_DEATH);
func0f16d2ac(TRACKTYPE_X, 1, 0);
musicQueueStopEvent(TRACKTYPE_MENU);
musicQueueStopEvent(TRACKTYPE_DEATH);
musicQueueFadeEvent(TRACKTYPE_NRG, 1, FADETYPE_STOP);
if (g_Vars.dontplaynrg == false) {
musicStartPrimary(0.5);
}
g_MusicNrgIsPlaying = 0;
g_MusicNrgIsActive = false;
}
}
void musicStartForMenu(void)
/**
* Called in many places when opening a pause menu.
*/
void musicStartMenu(void)
{
musicStartMenu2(menuChooseMusic());
musicStartTrackAsMenu(menuChooseMusic());
}
void musicResumeAfterUnpause(void)
void musicEndMenu(void)
{
func0f16d2ac(TRACKTYPE_MENU, 1, 0);
musicQueueFadeEvent(TRACKTYPE_MENU, 1, FADETYPE_STOP);
if (func0f16d0a8(TRACKTYPE_X, 1)) {
musicStartX(1);
if (func0f16d0a8(TRACKTYPE_NRG, 1)) {
musicStartNrg(1);
} else {
musicStartPrimary(1);
}
@ -566,119 +585,142 @@ void musicResumeAfterUnpause(void)
void musicStartSoloDeath(void)
{
var800840e8 = 1;
g_MusicSoloDeathIsPlaying = true;
#if VERSION >= VERSION_NTSC_1_0
func0f16d430();
#endif
musicEnd(TRACKTYPE_MENU);
musicEnd(TRACKTYPE_DEATH);
musicQueueStopEvent(TRACKTYPE_MENU);
musicQueueStopEvent(TRACKTYPE_DEATH);
musicUnsetXReason(-1);
musicEnd(TRACKTYPE_X);
musicEnd(TRACKTYPE_PRIMARY);
musicEnd(TRACKTYPE_AMBIENT);
musicStart(TRACKTYPE_PRIMARY, MUSIC_DEATH_SOLO, 0, VOLUME(g_SfxVolume) > musicGetVolume() ? VOLUME(g_SfxVolume) : musicGetVolume());
musicQueueStopEvent(TRACKTYPE_NRG);
musicQueueStopEvent(TRACKTYPE_PRIMARY);
musicQueueStopEvent(TRACKTYPE_AMBIENT);
musicQueueStartEvent(TRACKTYPE_PRIMARY, MUSIC_DEATH_SOLO, 0, VOLUME(g_SfxVolume) > musicGetVolume() ? VOLUME(g_SfxVolume) : musicGetVolume());
#if VERSION >= VERSION_NTSC_1_0
func0f16d44c();
musicQueueType5Event();
#endif
}
void musicStartMpDeath(f32 arg0)
void _musicStartMpDeath(f32 arg0)
{
#if VERSION >= VERSION_NTSC_1_0
func0f16d430();
musicStart(TRACKTYPE_DEATH, MUSIC_DEATH_MP, arg0, VOLUME(g_SfxVolume) > musicGetVolume() ? VOLUME(g_SfxVolume) : musicGetVolume());
func0f16d44c();
musicQueueStartEvent(TRACKTYPE_DEATH, MUSIC_DEATH_MP, arg0, VOLUME(g_SfxVolume) > musicGetVolume() ? VOLUME(g_SfxVolume) : musicGetVolume());
musicQueueType5Event();
#else
musicStart(TRACKTYPE_DEATH, MUSIC_DEATH_MP, arg0, VOLUME(g_SfxVolume) > musicGetVolume() ? VOLUME(g_SfxVolume) : musicGetVolume());
musicQueueStartEvent(TRACKTYPE_DEATH, MUSIC_DEATH_MP, arg0, VOLUME(g_SfxVolume) > musicGetVolume() ? VOLUME(g_SfxVolume) : musicGetVolume());
#endif
}
void func0f16dd14(void)
void musicStartMpDeath(void)
{
#if VERSION >= VERSION_NTSC_1_0
func0f16d430();
#endif
musicEnd(TRACKTYPE_MENU);
musicEnd(TRACKTYPE_DEATH);
musicEnd(TRACKTYPE_AMBIENT);
musicQueueStopEvent(TRACKTYPE_MENU);
musicQueueStopEvent(TRACKTYPE_DEATH);
musicQueueStopEvent(TRACKTYPE_AMBIENT);
if (g_MusicNrgIsPlaying) {
func0f16d2ac(TRACKTYPE_X, 0.1f, 1);
if (g_MusicNrgIsActive) {
musicQueueFadeEvent(TRACKTYPE_NRG, 0.1f, FADETYPE_PAUSE);
} else {
func0f16d2ac(TRACKTYPE_PRIMARY, 0.1f, 1);
musicQueueFadeEvent(TRACKTYPE_PRIMARY, 0.1f, FADETYPE_PAUSE);
}
musicStartMpDeath(0);
_musicStartMpDeath(0);
g_MusicDeathTimer240 = PALDOWN(1200);
var800840dc = 1;
g_MusicMpDeathIsPlaying = true;
#if VERSION >= VERSION_NTSC_1_0
func0f16d44c();
musicQueueType5Event();
#endif
}
void func0f16ddb0(void)
void musicEndDeath(void)
{
func0f16d2ac(TRACKTYPE_DEATH, 2, 0);
musicQueueFadeEvent(TRACKTYPE_DEATH, 2, FADETYPE_STOP);
if (g_MusicNrgIsPlaying) {
musicStartX(2);
if (g_MusicNrgIsActive) {
musicStartNrg(2);
} else {
musicStartPrimary(2);
}
var800840dc = 0;
g_MusicMpDeathIsPlaying = false;
}
/**
* Stop all other music and play the given track.
*
* It's used by the AI scripting language, specifically for CI training and
* the Skedar King battle.
*
* The track type used is primary.
*/
void musicPlayTrackIsolated(s32 tracknum)
{
#if VERSION >= VERSION_NTSC_1_0
func0f16d430();
#endif
musicEnd(TRACKTYPE_MENU);
musicEnd(TRACKTYPE_DEATH);
musicQueueStopEvent(TRACKTYPE_MENU);
musicQueueStopEvent(TRACKTYPE_DEATH);
musicUnsetXReason(-1);
musicEnd(TRACKTYPE_X);
musicEnd(TRACKTYPE_PRIMARY);
musicEnd(TRACKTYPE_AMBIENT);
musicStart(TRACKTYPE_PRIMARY, tracknum, 0, musicGetVolume());
musicQueueStopEvent(TRACKTYPE_NRG);
musicQueueStopEvent(TRACKTYPE_PRIMARY);
musicQueueStopEvent(TRACKTYPE_AMBIENT);
musicQueueStartEvent(TRACKTYPE_PRIMARY, tracknum, 0, musicGetVolume());
#if VERSION >= VERSION_NTSC_1_0
func0f16d44c();
musicQueueType5Event();
#endif
}
/**
* Restart the level's default tracks after using the isolated track above.
*
* It's used by the AI scripting language, specifically when ending CI training.
*/
void musicPlayDefaultTracks(void)
{
musicEnd(TRACKTYPE_PRIMARY);
musicEnd(TRACKTYPE_AMBIENT);
musicQueueStopEvent(TRACKTYPE_PRIMARY);
musicQueueStopEvent(TRACKTYPE_AMBIENT);
musicStartPrimary(0.5f);
}
/**
* Used by the title screen, as well as AF1's NRG theme which never ends.
*/
void musicStartTemporaryPrimary(s32 tracknum)
{
musicEnd(TRACKTYPE_PRIMARY);
musicQueueStopEvent(TRACKTYPE_PRIMARY);
g_TemporaryPrimaryTrack = tracknum;
musicStartPrimary(0.5f);
}
/**
* Used by AI scripting on each stage.
*
* The cutscene track is played with a primary tracktype.
*
* The NRG theme will not play while a cutscene theme is active.
*/
void musicStartCutscene(s32 tracknum)
{
u32 volume;
musicEnd(TRACKTYPE_MENU);
musicEnd(TRACKTYPE_DEATH);
musicQueueStopEvent(TRACKTYPE_MENU);
musicQueueStopEvent(TRACKTYPE_DEATH);
musicUnsetXReason(-1);
musicEnd(TRACKTYPE_X);
musicEnd(TRACKTYPE_PRIMARY);
musicQueueStopEvent(TRACKTYPE_NRG);
musicQueueStopEvent(TRACKTYPE_PRIMARY);
if (g_SfxVolume < musicGetVolume()) {
volume = musicGetVolume();
@ -686,34 +728,41 @@ void musicStartCutscene(s32 tracknum)
volume = g_SfxVolume;
}
musicStart(TRACKTYPE_PRIMARY, tracknum, 0, volume);
musicQueueStartEvent(TRACKTYPE_PRIMARY, tracknum, 0, volume);
g_Vars.dontplaynrg = true;
}
/**
* Used by AI scripting on each stage.
*/
void musicEndCutscene(void)
{
g_Vars.dontplaynrg = false;
if (var800624a4 == 0) {
musicEnd(TRACKTYPE_PRIMARY);
musicEnd(TRACKTYPE_AMBIENT);
musicQueueStopEvent(TRACKTYPE_PRIMARY);
musicQueueStopEvent(TRACKTYPE_AMBIENT);
musicStartPrimary(0.5f);
}
}
void musicStartTemporary(s32 tracknum)
/**
* Used by AI scripting, and only to set the ambient track during the Defection
* intro and Extraction outro to traffic noises.
*/
void musicStartTemporaryAmbient(s32 tracknum)
{
g_TemporaryAmbientTrack = tracknum;
musicEnd(TRACKTYPE_AMBIENT);
musicQueueStopEvent(TRACKTYPE_AMBIENT);
musicStart(TRACKTYPE_AMBIENT, tracknum, 0, VOLUME(g_SfxVolume));
musicQueueStartEvent(TRACKTYPE_AMBIENT, tracknum, 0, VOLUME(g_SfxVolume));
}
void musicEndAmbient(void)
void musicEndTemporaryAmbient(void)
{
g_TemporaryAmbientTrack = -1;
musicEnd(TRACKTYPE_AMBIENT);
musicQueueStopEvent(TRACKTYPE_AMBIENT);
}
void musicSetXReason(s32 reason, u32 minsecs, u32 maxsecs)
@ -739,20 +788,23 @@ void musicUnsetXReason(s32 reason)
}
#if VERSION >= VERSION_NTSC_1_0
if (g_MusicNrgIsPlaying) {
musicStopNrg();
if (g_MusicNrgIsActive) {
musicDeactivateNrg();
}
#endif
}
}
void func0f16e138(void)
/**
* Called by musicTick every 0.25 seconds.
*/
void musicTickAmbient(void)
{
if (g_TemporaryAmbientTrack == -1) {
if (musicIsAnyPlayerInAmbientRoom()) {
musicStartAmbient(1);
} else if (func0f16d124(TRACKTYPE_AMBIENT) == 1) {
func0f16d2ac(TRACKTYPE_AMBIENT, 1, 1);
musicQueueFadeEvent(TRACKTYPE_AMBIENT, 1, FADETYPE_PAUSE);
}
} else if (stageGetAmbientTrack(g_MusicStageNum) >= 0) {
musicStartAmbient(1);

View File

@ -417,7 +417,7 @@ glabel func0f01616c
void titleInitLegal(void)
{
func0f16d3d0();
musicQueueStopAllEvent();
var800624f4 = 1;
g_TitleTimer = 0;
var800624a8 = 0;
@ -2440,7 +2440,7 @@ void func0f017980(void)
g_TitleTimer = PALDOWN(549);
var80062730 = 0;
musicStartTemporaryPrimary(1);
musicStartTemporaryPrimary(MUSIC_TITLE2);
}
#if VERSION >= VERSION_PAL_FINAL
@ -6035,7 +6035,7 @@ void titleInitRareLogo(void)
var800624f4 = 1;
func0f16d3d0();
musicQueueStopAllEvent();
joy00014810(false);
if (var800624a4 == false && g_Is4Mb != true) {
@ -6089,7 +6089,7 @@ void titleTickRareLogo(void)
g_TitleTimer++;
} else {
if (g_TitleTimer == 0) {
musicStart(TRACKTYPE_PRIMARY, MUSIC_TITLE1, 0, 0x7fff);
musicQueueStartEvent(TRACKTYPE_PRIMARY, MUSIC_TITLE1, 0, 0x7fff);
}
g_TitleTimer += g_Vars.lvupdate240_60;

View File

@ -3765,7 +3765,7 @@
#define TRACKTYPE_NONE 0
#define TRACKTYPE_PRIMARY 1
#define TRACKTYPE_X 2
#define TRACKTYPE_NRG 2 // NRG = "energy" (the high-energy X track)
#define TRACKTYPE_MENU 3
#define TRACKTYPE_DEATH 4
#define TRACKTYPE_AMBIENT 5

View File

@ -457,13 +457,13 @@ extern s32 var80082050;
extern u32 g_GfxNumSwaps;
extern s32 g_NumReasonsToEndMpMatch;
extern s32 g_MusicEventQueueLength;
extern u32 g_MusicNrgIsPlaying;
extern bool g_MusicNrgIsActive;
extern s32 var800840e0;
extern s32 var800840e4;
extern s32 g_MusicDeathTimer240;
extern s32 var800840f4;
extern s32 var800840f8;
extern s32 var800840fc;
extern s32 g_MusicAge60;
extern s32 g_MusicLife60;
extern s32 g_MusicSilenceTimer60;
extern bool g_Jpn;
#if VERSION >= VERSION_PAL_FINAL
extern s32 g_LanguageId;
@ -509,7 +509,7 @@ extern struct mpscenariooverview g_MpScenarioOverviews[];
extern struct menudialog g_MpScenarioMenuDialog;
extern struct menudialog g_MpQuickTeamScenarioMenuDialog;
extern s32 var80087260;
extern u32 var80087264;
extern bool g_MpEnableMusicSwitching;
extern struct mpweapon g_MpWeapons[0x27];
extern struct mphead g_MpHeads[75];
extern struct mpsimulanttype g_MpSimulantTypes[];

View File

@ -29,7 +29,7 @@ void currentPlayerUpdateZoom(void);
void func0f0bace0(void);
void currentPlayerTickPauseMenu(void);
void currentPlayerPause(s32 root);
void func0f0baf38(void);
void currentPlayerUnpause(void);
Gfx *func0f0baf84(Gfx *gdl);
Gfx *fadeDraw(Gfx *gdl, u32 r, u32 g, u32 b, f32 frac);
Gfx *currentPlayerDrawFade(Gfx *gdl);

View File

@ -14,6 +14,6 @@ void *func0f176668(s32 arg0);
Gfx *func0f1766b4(Gfx *gdl);
s32 stageGetPrimaryTrack(s32 stagenum);
s32 stageGetAmbientTrack(s32 stagenum);
s32 stageGetXTrack(s32 stagenum);
s32 stageGetNrgTrack(s32 stagenum);
#endif

View File

@ -79,7 +79,7 @@ void mpDisableAllMultiTracks(void);
void mpRandomiseMultiTracks(void);
void mpSetTrackToRandom(void);
s32 mpGetCurrentTrackSlotNum(void);
u32 func0f18c4c0(void);
u32 mpChooseRandomTrack(void);
struct mpchr *func0f18c794(s32 index);
u32 func0f18c828(void);
s32 mpGetNumChrs(void);

View File

@ -8,38 +8,38 @@ u16 musicGetVolume(void);
void musicSetVolume(u16 volume);
bool func0f16d0a8(s32 tracktype, s32 arg1);
s32 func0f16d124(s32 tracktype);
void musicStart(u32 tracktype, u32 tracknum, f32 arg2, u16 volume);
void musicEnd(s32 tracktype);
void func0f16d2ac(s32 tracktype, f32 arg1, s32 arg2);
void func0f16d324(void);
void func0f16d3d0(void);
void musicQueueStartEvent(u32 tracktype, u32 tracknum, f32 arg2, u16 volume);
void musicQueueStopEvent(s32 tracktype);
void musicQueueFadeEvent(s32 tracktype, f32 arg1, bool fadetopause);
void musicInit(void);
void musicQueueStopAllEvent(void);
void func0f16d430(void);
void func0f16d44c(void);
void musicQueueType5Event(void);
void musicStartPrimary(f32 arg0);
void musicStartAmbient(f32 arg0);
bool musicIsAnyPlayerInAmbientRoom(void);
void musicStartX(f32 arg0);
void musicStartMenu2(s32 tracknum);
void musicStartNrg(f32 arg0);
void musicStartTrackAsMenu(s32 tracknum);
void musicSetStageAndStartMusic(s32 stagenum);
void musicSetStage(s32 stagenum);
void musicReset(void);
void musicStartNrg(void);
void musicStopNrg(void);
void musicStartForMenu(void);
void musicResumeAfterUnpause(void);
void musicActivateNrg(void);
void musicDeactivateNrg(void);
void musicStartMenu(void);
void musicEndMenu(void);
void musicStartSoloDeath(void);
void musicStartMpDeath(f32 arg0);
void func0f16dd14(void);
void func0f16ddb0(void);
void _musicStartMpDeath(f32 arg0);
void musicStartMpDeath(void);
void musicEndDeath(void);
void musicPlayTrackIsolated(s32 tracknum);
void musicPlayDefaultTracks(void);
void musicStartTemporaryPrimary(s32 tracknum);
void musicStartCutscene(s32 tracknum);
void musicEndCutscene(void);
void musicStartTemporary(s32 tracknum);
void musicEndAmbient(void);
void musicStartTemporaryAmbient(s32 tracknum);
void musicEndTemporaryAmbient(void);
void musicSetXReason(s32 reason, u32 minsecs, u32 maxsecs);
void musicUnsetXReason(s32 reason);
void func0f16e138(void);
void musicTickAmbient(void);
#endif

View File

@ -25,7 +25,7 @@ bool sndIsMp3(u16 soundnum);
bool snd0000fbc4(s16 arg0);
u32 snd0000fc48(void);
u32 snd0000fd74(void);
void snd0000fd9c(struct var80094ed8 *arg0, u16 volume);
void sndSetMusicChannelVolume(struct var80094ed8 *arg0, u16 volume);
void snd0000fe18(void);
void snd0000fe20(void);
void snd0000fe50(void);

View File

@ -6129,7 +6129,7 @@ struct optiongroup {
struct musicevent {
s32 tracktype;
s32 tracknum;
s32 unk08;
bool fadetopause;
f32 unk0c;
s16 volume;
u16 eventtype;
@ -6259,7 +6259,7 @@ struct var80094ed8 {
/*0x0f4*/ u32 unk0f4;
/*0x0f8*/ N_ALCSPlayer *seqp;
/*0x0fc*/ void *unk0fc;
/*0x100*/ u16 unk100;
/*0x100*/ u16 volume;
/*0x104*/ u32 unk104;
};

View File

@ -3189,7 +3189,7 @@ void mainEndStage(void)
}
setCurrentPlayerNum(prevplayernum);
musicStartForMenu();
musicStartMenu();
} else if (g_Vars.antiplayernum >= 0) {
s32 prevplayernum = g_Vars.currentplayernum;
s32 i;
@ -3200,12 +3200,12 @@ void mainEndStage(void)
}
setCurrentPlayerNum(prevplayernum);
musicStartForMenu();
musicStartMenu();
} else if (g_Vars.normmplayerisrunning) {
mpEndMatch();
} else {
endscreenPrepare();
musicStartForMenu();
musicStartMenu();
}
}

View File

@ -40,7 +40,7 @@ const char var70053f38[] = "MUSIC : Tick -> Channel %d (State=%d) has faded to s
const char var70053f7c[] = "MUSIC : WARNING -> Force fade termination\n";
const char var70053fa8[] = "MUSIC TICK : Job Guid = %u\n";
s32 var8005edf0 = -1;
s32 g_MusicNextAmbientTick240 = -1;
GLOBAL_ASM(
glabel musicHandleStartEvent
@ -147,7 +147,7 @@ glabel var70053fd8
/* 11558: 02202025 */ or $a0,$s1,$zero
/* 1155c: 96a50010 */ lhu $a1,0x10($s5)
/* 11560: 240c0002 */ addiu $t4,$zero,0x2
/* 11564: 0c003f67 */ jal snd0000fd9c
/* 11564: 0c003f67 */ jal sndSetMusicChannelVolume
/* 11568: afac0044 */ sw $t4,0x44($sp)
/* 1156c: 3c0e800b */ lui $t6,%hi(var800aaa38)
/* 11570: 25ceaa38 */ addiu $t6,$t6,%lo(var800aaa38)
@ -295,8 +295,8 @@ s32 musicHandleFadeEvent(struct musicevent *event, u32 arg1)
func00039e5c(var80094ed8[i].seqp, j, var70053ca0[event->tracktype], 32);
}
var800aaa38[i].unk04 = event->unk08;
var800aaa38[i].unk08 = event->unk08;
var800aaa38[i].unk04 = event->fadetopause;
var800aaa38[i].unk08 = event->fadetopause;
var800aaa38[i].unk0c = var80094ed8[i].seqp->chanState[0].unk0d;
}
}
@ -1148,37 +1148,43 @@ void musicTick(void)
|| (g_Vars.antiplayernum >= 0 && !g_Vars.bond->isdead)
|| (g_Vars.coopplayernum >= 0 && (!g_Vars.bond->isdead || !g_Vars.coop->isdead)))) {
// Someone is dying in MP, or anti is dying, or *one* person is dying in coop
var800840fc = 0;
g_MusicSilenceTimer60 = 0;
g_MusicDeathTimer240 -= g_Vars.lvupdate240;
if (g_MusicDeathTimer240 <= 0) {
func0f16ddb0();
musicEndDeath();
if (var80087264 && g_Vars.normmplayerisrunning && var800840f8 < var800840f4) {
var800840f4 = 0;
musicEnd(TRACKTYPE_MENU);
musicEnd(TRACKTYPE_DEATH);
musicEnd(TRACKTYPE_PRIMARY);
musicStart(TRACKTYPE_PRIMARY, stageGetPrimaryTrack(g_MusicStageNum), 0, musicGetVolume());
// The death is complete. Are we due to start a new track?
if (g_MpEnableMusicSwitching && g_Vars.normmplayerisrunning && g_MusicLife60 < g_MusicAge60) {
g_MusicAge60 = 0;
musicQueueStopEvent(TRACKTYPE_MENU);
musicQueueStopEvent(TRACKTYPE_DEATH);
musicQueueStopEvent(TRACKTYPE_PRIMARY);
musicQueueStartEvent(TRACKTYPE_PRIMARY, stageGetPrimaryTrack(g_MusicStageNum), 0, musicGetVolume());
}
}
} else if (var80087264 && g_Vars.normmplayerisrunning && var800840f8 < var800840f4) {
var800840f4 = 0;
func0f16d2ac(TRACKTYPE_PRIMARY, 2, 1);
var800840fc = PALDOWN(120);
} else if (g_MpEnableMusicSwitching && g_Vars.normmplayerisrunning && g_MusicLife60 < g_MusicAge60) {
// Due to start a new track. Fade out the old one,
// then start a 2 second time before starting the new one.
g_MusicAge60 = 0;
musicQueueFadeEvent(TRACKTYPE_PRIMARY, 2, 1);
g_MusicSilenceTimer60 = PALDOWN(120);
}
if (var80087264 && g_Vars.normmplayerisrunning) {
var800840f4 += g_Vars.diffframe60;
if (g_MpEnableMusicSwitching && g_Vars.normmplayerisrunning) {
g_MusicAge60 += g_Vars.diffframe60;
if (var800840fc > 0) {
var800840fc -= g_Vars.diffframe60;
// If the silence timer is set, it means we're transitioning between
// songs in multiplayer. Tick the timer down, and when it reaches
// zero start a new track.
if (g_MusicSilenceTimer60 > 0) {
g_MusicSilenceTimer60 -= g_Vars.diffframe60;
if (var800840fc <= 0) {
musicEnd(TRACKTYPE_MENU);
musicEnd(TRACKTYPE_DEATH);
musicEnd(TRACKTYPE_PRIMARY);
musicStart(TRACKTYPE_PRIMARY, stageGetPrimaryTrack(g_MusicStageNum), 0, musicGetVolume());
if (g_MusicSilenceTimer60 <= 0) {
musicQueueStopEvent(TRACKTYPE_MENU);
musicQueueStopEvent(TRACKTYPE_DEATH);
musicQueueStopEvent(TRACKTYPE_PRIMARY);
musicQueueStartEvent(TRACKTYPE_PRIMARY, stageGetPrimaryTrack(g_MusicStageNum), 0, musicGetVolume());
}
}
}
@ -1212,35 +1218,36 @@ void musicTick(void)
#if VERSION >= VERSION_NTSC_1_0
if (g_Vars.lvupdate240 != 0) {
if (g_MusicNrgIsPlaying) {
if (g_MusicNrgIsActive) {
if (!playnrg) {
musicStopNrg();
musicDeactivateNrg();
}
} else {
if (playnrg && !g_Vars.dontplaynrg) {
musicStartNrg();
musicActivateNrg();
}
}
}
#else
if (g_Vars.lvupdate240 != 0) {
if (func0f16d0a8(TRACKTYPE_X, 1)) {
if (func0f16d0a8(TRACKTYPE_NRG, 1)) {
if (!playnrg) {
musicStopNrg();
musicDeactivateNrg();
}
} else {
if (playnrg && !g_Vars.dontplaynrg) {
musicStartNrg();
musicActivateNrg();
}
}
}
#endif
if (g_Vars.lvupdate240 > var8005edf0) {
func0f16e138();
var8005edf0 = PALDOWN(60);
// Check if the player is in an ambient room every 0.25 seconds
if (g_Vars.lvupdate240 > g_MusicNextAmbientTick240) {
musicTickAmbient();
g_MusicNextAmbientTick240 = PALDOWN(60);
} else {
var8005edf0 -= g_Vars.lvupdate240;
g_MusicNextAmbientTick240 -= g_Vars.lvupdate240;
}
musicTickEvents();
@ -1267,7 +1274,7 @@ bool musicAreTracksPlaying(u8 bits)
return false;
}
if ((bits & 0x02) && !musicIsTrackTypePlaying(TRACKTYPE_X)) {
if ((bits & 0x02) && !musicIsTrackTypePlaying(TRACKTYPE_NRG)) {
return false;
}

View File

@ -2523,7 +2523,7 @@ glabel snd0000fc48
/* fd40: 0c003f5d */ jal snd0000fd74
/* fd44: 02002025 */ or $a0,$s0,$zero
/* fd48: 02002025 */ or $a0,$s0,$zero
/* fd4c: 0c003f67 */ jal snd0000fd9c
/* fd4c: 0c003f67 */ jal sndSetMusicChannelVolume
/* fd50: 3045ffff */ andi $a1,$v0,0xffff
/* fd54: 0c00e70c */ jal func00039c30
/* fd58: 8e0400f8 */ lw $a0,0xf8($s0)
@ -2654,7 +2654,7 @@ glabel snd0000fc48
/* 10290: 0c0040b1 */ jal snd0000fd74
/* 10294: 02002025 */ or $a0,$s0,$zero
/* 10298: 02002025 */ or $a0,$s0,$zero
/* 1029c: 0c0040bb */ jal snd0000fd9c
/* 1029c: 0c0040bb */ jal sndSetMusicChannelVolume
/* 102a0: 3045ffff */ andi $a1,$v0,0xffff
/* 102a4: 0c00ec00 */ jal func00039c30
/* 102a8: 8e0400f8 */ lw $a0,0xf8($s0)
@ -2683,13 +2683,13 @@ glabel snd0000fd74
/* fd98: 3062ffff */ andi $v0,$v1,0xffff
);
void snd0000fd9c(struct var80094ed8 *arg0, u16 volume)
void sndSetMusicChannelVolume(struct var80094ed8 *arg0, u16 volume)
{
if (!g_SndDisabled) {
u32 tmp = (var8005ecf8[arg0->unk104] * volume);
tmp >>= 15;
arg0->unk100 = volume;
arg0->volume = volume;
if (tmp > 0x7fff) {
tmp = 0x7fff;