mirror of
https://github.com/HarbourMasters/Starship
synced 2026-08-16 21:47:35 -04:00
Cumulative docs update (#221)
* lights fix * names * remove header * so many names * format * more docs * makefile
This commit is contained in:
+203
-196
@@ -4,15 +4,15 @@
|
||||
#include "audiothread_cmd.h"
|
||||
#include "audioseq_cmd.h"
|
||||
|
||||
void func_8001D0B4(f32* sfxSource, u32 sfxId, f32 freqMod);
|
||||
void Audio_SetModulationAndPlaySfx(f32* sfxSource, u32 sfxId, f32 freqMod);
|
||||
s32 Audio_GetCurrentVoice(void);
|
||||
void Audio_PlaySequence(u8, u16, u8, u8);
|
||||
void Audio_PlayFanfare(u16, u8, u8, u8);
|
||||
void Audio_PlaySequenceDistorted(u8, u16, u16, u8, u8);
|
||||
|
||||
void func_8001DD40(void);
|
||||
void func_8001D6DC(u8);
|
||||
void func_8001DE1C(u8);
|
||||
void Audio_RestartSeqPlayers(void);
|
||||
void Audio_PlayMapMenuSfx(u8);
|
||||
void Audio_StartReset(u8);
|
||||
|
||||
static const char devstr1[] = "preload start (%d): ";
|
||||
static const char devstr2[] = "%d ";
|
||||
@@ -45,11 +45,11 @@ ActiveSfx sActiveSfx[5][8];
|
||||
u8 sCurSfxPlayerChannelIndex;
|
||||
u8 sSfxBankMuted[5];
|
||||
Modulation sSfxVolumeMods[5];
|
||||
f32 D_80149AD8[256];
|
||||
f32 D_80149ED8[256];
|
||||
f32 D_8014A2D8[384];
|
||||
f32 D_8014A8D8[32];
|
||||
u8 D_8014A958[32];
|
||||
f32 sAudioAnalyzerData[256];
|
||||
f32 sAnalyzerBuffer1[256];
|
||||
f32 sAnalyzerBuffer2[384];
|
||||
f32 sNewFreqAmplitudes[32];
|
||||
u8 sFreqAnalyzerBars[32];
|
||||
SeqRequest sSeqRequests[4][5];
|
||||
u8 sNumSeqRequests[4];
|
||||
s32 sAudioSeqCmds[256];
|
||||
@@ -58,10 +58,10 @@ u16 sDelayedSeqCmdFlags;
|
||||
DelayedSeqCmd sDelayedSeqCmds[16];
|
||||
SfxChannelState sSfxChannelState[16];
|
||||
PlayerNoiseModulation sPlayerNoise[4];
|
||||
f32 D_8014BA10[4];
|
||||
u8 D_8014BA20[4];
|
||||
u8 D_8014BA24[4];
|
||||
s32 D_8014BA28[4];
|
||||
f32 sBombFreqMod[4];
|
||||
u8 sBombType[4];
|
||||
u8 sBombState[4];
|
||||
s32 sBombStartFrame[4];
|
||||
|
||||
u8 sChannelsPerBank[5][5] = {
|
||||
{ 3, 2, 2, 2, 2 }, { 3, 1, 2, 2, 2 }, { 3, 2, 2, 2, 3 }, { 6, 0, 2, 0, 4 }, { 0, 0, 0, 0, 0 },
|
||||
@@ -82,13 +82,13 @@ u8 sSeqCmdWritePos = 0;
|
||||
u8 sSeqCmdReadPos = 0;
|
||||
u8 sStartSeqDisabled = 0;
|
||||
u8 sSoundModeList[4] = { SOUNDMODE_STEREO, SOUNDMODE_HEADSET, SOUNDMODE_SURROUND, SOUNDMODE_MONO };
|
||||
u8 sNewAudioSpecId = AUDIOSPEC_0;
|
||||
u8 D_800C5D58 = 0;
|
||||
u8 sAudioSpecId = AUDIOSPEC_0;
|
||||
u8 sAudioResetStatus = AUDIORESET_READY;
|
||||
s32 D_800C5D5C = 0; // unused. file split?
|
||||
s8 sBaseReverb = 0;
|
||||
s8 sEnvReverb = 0;
|
||||
s8 sAudioSpecReverb = 0;
|
||||
u8 sVolumeSettings[3] = { 99, 99, 99 };
|
||||
u8 D_800C5D6C[29][7] = {
|
||||
u8 sAudioSpecInstrumentSets[29][7] = {
|
||||
{ 0, 3, 4, 80, 12, 21, 255 }, { 17, 18, 15, 96, 20, 22, 255 }, { 0, 3, 5, 80, 16, 255, 0 },
|
||||
{ 17, 18, 15, 96, 20, 22, 255 }, { 0, 3, 4, 80, 12, 21, 255 }, { 17, 18, 15, 96, 20, 22, 255 },
|
||||
{ 0, 3, 4, 80, 12, 21, 255 }, { 17, 18, 15, 96, 20, 22, 255 }, { 0, 3, 4, 80, 12, 21, 255 },
|
||||
@@ -100,10 +100,10 @@ u8 D_800C5D6C[29][7] = {
|
||||
{ 255, 0, 0, 0, 0, 0, 0 }, { 255, 0, 0, 0, 0, 0, 0 }, { 255, 0, 0, 0, 0, 0, 0 },
|
||||
{ 255, 0, 0, 0, 0, 0, 0 }, { 0, 3, 4, 80, 12, 21, 255 },
|
||||
};
|
||||
s8 D_800C5E38[29] = {
|
||||
s8 sAudioSpecReverbAdd[29] = {
|
||||
10, 0, 25, 0, 25, 0, 10, 0, 10, 35, 0, 10, 40, 0, 25, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
u32 D_800C5E58[5] = { 20, 16, 10, 10, 20 };
|
||||
u32 sPlayerNoiseTimes[5] = { 20, 16, 10, 10, 20 };
|
||||
s32 D_800C5E6C = 0; // unused. file split?
|
||||
u8 D_800C5E70 = 0;
|
||||
f32 sSfxFreqMod = 1.0f;
|
||||
@@ -111,7 +111,7 @@ f32 sSfxVolMod = 1.0f; // never modified
|
||||
u8 sPlaylistIndex = 255;
|
||||
s32 sPlaylistTimer = 0;
|
||||
u8 sPlaylistCmdIndex = 0;
|
||||
u32 D_800C5E88[] = {
|
||||
u32 sEventSfx[] = {
|
||||
0x1903000D, 0x1903000E, 0x19500015, 0x2903A021, 0x4900000C, 0x19122005, 0x1913204A, 0x2900306A,
|
||||
0x29034024, 0x2902306C, 0x19032056, 0x19030057, 0x19033058, 0x19030006, 0x29503032, 0x1903407D,
|
||||
0x4900402E, 0x19038072, 0x1903807E, 0x1903807F, 0x19038080, 0x11032081, 0x19031082,
|
||||
@@ -508,12 +508,12 @@ PlaylistCmd sPlaylists[][100] = {
|
||||
},
|
||||
};
|
||||
|
||||
s32 D_800C737C = 0; // unused. file split?
|
||||
f32 D_800C7380 = 1.0f;
|
||||
s32 D_800C737C = 0; // unused. file split?
|
||||
f32 D_800C7380 = 1.0f; // unused/
|
||||
u32 sNextVoiceId = 0;
|
||||
u32 sCurrentVoiceId = 0;
|
||||
u8 sSetNextVoiceId = 0;
|
||||
u8 D_800C7390 = 0;
|
||||
u8 sUnkVoiceParam = 0;
|
||||
u8 sMuteBgmForVoice = 0;
|
||||
|
||||
void func_80016A50(void) {
|
||||
@@ -581,7 +581,7 @@ s8 Audio_GetSfxReverb(u8 bankId, u8 entryIndex, u8 channelId) {
|
||||
if (scriptReverb == -1) {
|
||||
scriptReverb = 0;
|
||||
}
|
||||
totalReverb = *sSfxBanks[bankId][entryIndex].reverbAdd + distReverb + scriptReverb + sBaseReverb + sAudioSpecReverb;
|
||||
totalReverb = *sSfxBanks[bankId][entryIndex].reverbAdd + distReverb + scriptReverb + sEnvReverb + sAudioSpecReverb;
|
||||
totalReverb = MIN(127, totalReverb);
|
||||
return totalReverb;
|
||||
}
|
||||
@@ -688,6 +688,7 @@ void Audio_SetSfxProperties(u8 bankId, u8 entryIndex, u8 channelId) {
|
||||
sSfxChannelState[channelId].pan = pan;
|
||||
}
|
||||
}
|
||||
|
||||
f32 Audio_UpdateDopplerShift(f32* srcPos, f32* srcVel, f32 soundSpeed, f32* curDopplerShift) {
|
||||
f32 xVel;
|
||||
f32 zVel;
|
||||
@@ -742,25 +743,25 @@ f32 Audio_UpdateDopplerShift(f32* srcPos, f32* srcVel, f32 soundSpeed, f32* curD
|
||||
return newShift;
|
||||
}
|
||||
|
||||
void func_80017494(void) {
|
||||
void Audio_LoadInstruments(void) {
|
||||
u8 i;
|
||||
|
||||
for (i = 0; D_800C5D6C[sNewAudioSpecId][i] != 0xFF; i++) {
|
||||
AUDIOCMD_GLOBAL_SYNC_LOAD_INSTRUMENT(0, D_800C5D6C[sNewAudioSpecId][i], 0);
|
||||
for (i = 0; sAudioSpecInstrumentSets[sAudioSpecId][i] != 0xFF; i++) {
|
||||
AUDIOCMD_GLOBAL_SYNC_LOAD_INSTRUMENT(0, sAudioSpecInstrumentSets[sAudioSpecId][i], 0);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80017550(void) {
|
||||
if (sNewAudioSpecId == AUDIOSPEC_12) {
|
||||
AUDIOCMD_GLOBAL_SYNC_LOAD_SEQ_PARTS(14, 0);
|
||||
void Audio_LoadAquasSequence(void) {
|
||||
if (sAudioSpecId == AUDIOSPEC_12) {
|
||||
AUDIOCMD_GLOBAL_SYNC_LOAD_SEQ_PARTS(SEQ_ID_AQUAS, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void Audio_ResetSfxChannelState(void) {
|
||||
u8 i;
|
||||
|
||||
sBaseReverb = 0;
|
||||
sAudioSpecReverb = D_800C5E38[sNewAudioSpecId];
|
||||
sEnvReverb = 0;
|
||||
sAudioSpecReverb = sAudioSpecReverbAdd[sAudioSpecId];
|
||||
for (i = 0; i < 16; i++) {
|
||||
sSfxChannelState[i].volMod = 1.0f;
|
||||
sSfxChannelState[i].freqMod = 1.0f;
|
||||
@@ -805,7 +806,7 @@ void Audio_ProcessSeqCmd(u32 seqCmd) {
|
||||
s32 priority;
|
||||
u8 i; // sp63
|
||||
u8 specId;
|
||||
u8 sp61;
|
||||
u8 oldSpecId;
|
||||
u8 ioPort;
|
||||
u8 channel;
|
||||
u8 found;
|
||||
@@ -1018,12 +1019,12 @@ void Audio_ProcessSeqCmd(u32 seqCmd) {
|
||||
case SEQCMD_OP_RESET_AUDIO_HEAP:
|
||||
specId = seqCmd & 0xFF;
|
||||
sSfxChannelLayout = (seqCmd & 0xFF00) >> 8;
|
||||
sp61 = sNewAudioSpecId;
|
||||
sNewAudioSpecId = specId;
|
||||
oldSpecId = sAudioSpecId;
|
||||
sAudioSpecId = specId;
|
||||
|
||||
if (sp61 != specId) {
|
||||
if (oldSpecId != specId) {
|
||||
AudioThread_ResetAudioHeap(specId);
|
||||
func_8001DE1C(sp61);
|
||||
Audio_StartReset(oldSpecId);
|
||||
AUDIOCMD_GLOBAL_STOP_AUDIOCMDS();
|
||||
|
||||
} else {
|
||||
@@ -1082,14 +1083,15 @@ void Audio_ResetSequenceRequests(u8 seqPlayId) {
|
||||
sNumSeqRequests[seqPlayId] = 0;
|
||||
}
|
||||
|
||||
void func_800184EC(u8 seqPlayId, u8 setupOpDisable) {
|
||||
// unused
|
||||
void Audio_DisableSetupOp(u8 seqPlayId, u8 opcode) {
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < sActiveSequences[seqPlayId].setupCmdNum; i++) {
|
||||
u8 setupOp = ((sActiveSequences[seqPlayId].setupCmd[i] & 0xF00000) >> 20);
|
||||
|
||||
if (setupOp == setupOpDisable) {
|
||||
sActiveSequences[seqPlayId].setupCmd[i] = 0xFF000000;
|
||||
if (setupOp == opcode) {
|
||||
sActiveSequences[seqPlayId].setupCmd[i] = 0xFF000000; // 0 duration volume reset on SEQ_PLAYER_BGM
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1246,7 +1248,7 @@ void Audio_UpdateActiveSequences(void) {
|
||||
if (sActiveSequences[seqPlayId].setupCmdNum == 0) {
|
||||
continue;
|
||||
}
|
||||
if (!Audio_SeqCmdValueNotQueued(SEQCMD_OP_MASK, SEQCMD_OP_RESET_AUDIO_HEAP << 28)) {
|
||||
if (!Audio_SeqCmdValueNotQueued(SEQCMD_OP_RESET_AUDIO_HEAP << 28, SEQCMD_OP_MASK)) {
|
||||
sActiveSequences[seqPlayId].setupCmdNum = 0;
|
||||
break;
|
||||
}
|
||||
@@ -1254,9 +1256,9 @@ void Audio_UpdateActiveSequences(void) {
|
||||
sActiveSequences[seqPlayId].setupCmdTimer--;
|
||||
} else if (!gSeqPlayers[seqPlayId].enabled) {
|
||||
for (i = 0; i < sActiveSequences[seqPlayId].setupCmdNum; i++) {
|
||||
setupOp = (sActiveSequences[seqPlayId].setupCmd[i] & 0xF00000) >> 0x14;
|
||||
setupOp = (sActiveSequences[seqPlayId].setupCmd[i] & 0xF00000) >> 20;
|
||||
|
||||
setupSeqPlayId = (sActiveSequences[seqPlayId].setupCmd[i] & 0xF0000) >> 0x10;
|
||||
setupSeqPlayId = (sActiveSequences[seqPlayId].setupCmd[i] & 0xF0000) >> 16;
|
||||
val2 = (sActiveSequences[seqPlayId].setupCmd[i] & 0xFF00) >> 8;
|
||||
val1 = sActiveSequences[seqPlayId].setupCmd[i] & 0xFF;
|
||||
switch (setupOp) {
|
||||
@@ -1321,24 +1323,24 @@ void Audio_UpdateDelayedSeqCmds(void) {
|
||||
}
|
||||
}
|
||||
|
||||
u8 func_80018FA4(void) {
|
||||
if (D_800C5D58 != 0) {
|
||||
if (D_800C5D58 == 1) {
|
||||
if (func_8001ED34() == 1) {
|
||||
D_800C5D58 = 0;
|
||||
u8 Audio_HandleReset(void) {
|
||||
if (sAudioResetStatus != AUDIORESET_READY) {
|
||||
if (sAudioResetStatus == AUDIORESET_WAIT) {
|
||||
if (AudioThread_ResetComplete() == true) {
|
||||
sAudioResetStatus = AUDIORESET_READY;
|
||||
AUDIOCMD_SEQPLAYER_SET_IO(SEQ_PLAYER_SFX, 0, sSfxChannelLayout);
|
||||
func_8001DD40();
|
||||
Audio_RestartSeqPlayers();
|
||||
}
|
||||
} else if (D_800C5D58 == 2) {
|
||||
while (func_8001ED34() != 1) {
|
||||
} else if (sAudioResetStatus == AUDIORESET_BLOCK) {
|
||||
while (AudioThread_ResetComplete() != true) {
|
||||
;
|
||||
}
|
||||
D_800C5D58 = 0;
|
||||
sAudioResetStatus = AUDIORESET_READY;
|
||||
AUDIOCMD_SEQPLAYER_SET_IO(SEQ_PLAYER_SFX, 0, sSfxChannelLayout);
|
||||
func_8001DD40();
|
||||
Audio_RestartSeqPlayers();
|
||||
}
|
||||
}
|
||||
return D_800C5D58;
|
||||
return sAudioResetStatus;
|
||||
}
|
||||
|
||||
void Audio_ResetActiveSequences(void) {
|
||||
@@ -2008,14 +2010,14 @@ s32 Audio_GetCurrentVoiceStatus(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void func_8001AF40(u8 unkVoiceParam) {
|
||||
D_800C7390 = unkVoiceParam;
|
||||
void Audio_SetUnkVoiceParam(u8 unkVoiceParam) {
|
||||
sUnkVoiceParam = unkVoiceParam;
|
||||
}
|
||||
|
||||
void func_8001AF50(void) {
|
||||
if (D_800C7390 != 0xFF) {
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_VOICE, 14, 0, D_800C7390);
|
||||
D_800C7390 = 0xFF;
|
||||
void Audio_UpdateUnkVoiceParam(void) {
|
||||
if (sUnkVoiceParam != 0xFF) {
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_VOICE, 14, 0, sUnkVoiceParam);
|
||||
sUnkVoiceParam = 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2093,9 +2095,9 @@ void Audio_UpdateArwingNoise(u8 playerId) {
|
||||
sPlayerNoise[playerId].freqMod[i].value += sPlayerNoise[playerId].freqMod[i].step;
|
||||
if ((sPlayerNoise[playerId].freqMod[i].timer == 0) && (sPlayerNoise[playerId].freqMod[i].target != 1.0f)) {
|
||||
sPlayerNoise[playerId].freqMod[i].target = 1.0f;
|
||||
sPlayerNoise[playerId].freqMod[i].timer = D_800C5E58[i];
|
||||
sPlayerNoise[playerId].freqMod[i].timer = sPlayerNoiseTimes[i];
|
||||
sPlayerNoise[playerId].freqMod[i].step =
|
||||
(1.0f - sPlayerNoise[playerId].freqMod[i].value) / D_800C5E58[i];
|
||||
(1.0f - sPlayerNoise[playerId].freqMod[i].value) / sPlayerNoiseTimes[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2138,9 +2140,9 @@ void Audio_UpdateLandmasterNoise(u8 playerId) {
|
||||
sPlayerNoise[playerId].freqMod[i].value += sPlayerNoise[playerId].freqMod[i].step;
|
||||
if ((sPlayerNoise[playerId].freqMod[i].timer == 0) && (sPlayerNoise[playerId].freqMod[i].target != 1.0f)) {
|
||||
sPlayerNoise[playerId].freqMod[i].target = 1.0f;
|
||||
sPlayerNoise[playerId].freqMod[i].timer = D_800C5E58[i];
|
||||
sPlayerNoise[playerId].freqMod[i].timer = sPlayerNoiseTimes[i];
|
||||
sPlayerNoise[playerId].freqMod[i].step =
|
||||
(1.0f - sPlayerNoise[playerId].freqMod[i].value) / D_800C5E58[i];
|
||||
(1.0f - sPlayerNoise[playerId].freqMod[i].value) / sPlayerNoiseTimes[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2196,9 +2198,9 @@ void Audio_UpdateBlueMarineNoise(u8 playerId) {
|
||||
sPlayerNoise[playerId].freqMod[i].value += sPlayerNoise[playerId].freqMod[i].step;
|
||||
if ((sPlayerNoise[playerId].freqMod[i].timer == 0) && (sPlayerNoise[playerId].freqMod[i].target != 1.0f)) {
|
||||
sPlayerNoise[playerId].freqMod[i].target = 1.0f;
|
||||
sPlayerNoise[playerId].freqMod[i].timer = D_800C5E58[i];
|
||||
sPlayerNoise[playerId].freqMod[i].timer = sPlayerNoiseTimes[i];
|
||||
sPlayerNoise[playerId].freqMod[i].step =
|
||||
(1.0f - sPlayerNoise[playerId].freqMod[i].value) / D_800C5E58[i];
|
||||
(1.0f - sPlayerNoise[playerId].freqMod[i].value) / sPlayerNoiseTimes[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2268,8 +2270,8 @@ void Audio_ResetVoicesAndPlayers(void) {
|
||||
sPlayerNoise[playerId].reverbAdd = 0;
|
||||
sPlayerNoise[playerId].totalMod = 1.0f;
|
||||
sPlayerNoise[playerId].dopplerShift = 1.0f;
|
||||
D_8014BA24[playerId] = 0;
|
||||
D_8014BA28[playerId] = 0;
|
||||
sBombState[playerId] = 0;
|
||||
sBombStartFrame[playerId] = 0;
|
||||
}
|
||||
sSfxFreqMod = 1.0f;
|
||||
sSfxVolMod = 1.0f;
|
||||
@@ -2321,7 +2323,7 @@ void Audio_ProcessPlaylist(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_8001BFC0(f32* buffer0, f32* buffer1, s32 length, f32* buffer2) {
|
||||
void Audio_AnalyzeFrequencies(f32* buffer0, f32* buffer1, s32 length, f32* buffer2) {
|
||||
f32 temp_ft0;
|
||||
f32 var_fs0;
|
||||
f32* buff0fromStart;
|
||||
@@ -2399,14 +2401,14 @@ void func_8001BFC0(f32* buffer0, f32* buffer1, s32 length, f32* buffer2) {
|
||||
}
|
||||
|
||||
u8* Audio_UpdateFrequencyAnalysis(void) {
|
||||
s32 temp2;
|
||||
s32 i;
|
||||
s32 j;
|
||||
s32 k;
|
||||
s32 l;
|
||||
s32 m;
|
||||
s16* temp;
|
||||
f32* test;
|
||||
s32 fmax;
|
||||
s32 i1;
|
||||
s32 fmin;
|
||||
s32 i2;
|
||||
s32 i3;
|
||||
s32 fbin;
|
||||
s16* aiData;
|
||||
s32 pad;
|
||||
static s32 sFreqBins[] = {
|
||||
0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 14, 16, 19, 22,
|
||||
26, 31, 37, 44, 54, 68, 88, 108, 138, 163, 188, 208, 222, 234, 242, 246,
|
||||
@@ -2419,36 +2421,36 @@ u8* Audio_UpdateFrequencyAnalysis(void) {
|
||||
|
||||
Audio_ProcessPlaylist();
|
||||
// clang-format off
|
||||
temp = gAiBuffers[gCurAiBuffIndex];\
|
||||
for(l = 0; l < 256; l++) {\
|
||||
D_80149AD8[l] = *temp++;
|
||||
aiData = gAiBuffers[gCurAiBuffIndex];\
|
||||
for(i3 = 0; i3 < 256; i3++) {\
|
||||
sAudioAnalyzerData[i3] = *aiData++;
|
||||
}
|
||||
// clang-format on
|
||||
func_8001BFC0(D_80149AD8, D_80149ED8, 8, D_8014A2D8);
|
||||
j = 0;
|
||||
for (i = 0; i < 32; i++) {
|
||||
temp2 = sFreqBins[i] + 1;
|
||||
for (m = j; m < temp2; m++) {
|
||||
if (D_80149AD8[m] > 0.0f) {
|
||||
D_8014A8D8[i] += D_80149AD8[m];
|
||||
Audio_AnalyzeFrequencies(sAudioAnalyzerData, sAnalyzerBuffer1, 8, sAnalyzerBuffer2);
|
||||
fmin = 0;
|
||||
for (i1 = 0; i1 < 32; i1++) {
|
||||
fmax = sFreqBins[i1] + 1;
|
||||
for (fbin = fmin; fbin < fmax; fbin++) {
|
||||
if (sAudioAnalyzerData[fbin] > 0.0f) {
|
||||
sNewFreqAmplitudes[i1] += sAudioAnalyzerData[fbin];
|
||||
} else {
|
||||
D_8014A8D8[i] -= D_80149AD8[m];
|
||||
sNewFreqAmplitudes[i1] -= sAudioAnalyzerData[fbin];
|
||||
}
|
||||
}
|
||||
j = m;
|
||||
fmin = fbin;
|
||||
}
|
||||
for (k = 0; k < 32; k++) {
|
||||
D_8014A8D8[k] /= 8;
|
||||
for (i2 = 0; i2 < 32; i2++) {
|
||||
sNewFreqAmplitudes[i2] /= 8;
|
||||
}
|
||||
for (l = 0; l < 32; l++) {
|
||||
D_8014A8D8[l] = (D_8014A8D8[l] / 32768.0f) * sFreqGain;
|
||||
if (D_8014A8D8[l] > 1.0f) {
|
||||
D_8014A8D8[l] = 1.0f;
|
||||
for (i3 = 0; i3 < 32; i3++) {
|
||||
sNewFreqAmplitudes[i3] = (sNewFreqAmplitudes[i3] / 32768.0f) * sFreqGain;
|
||||
if (sNewFreqAmplitudes[i3] > 1.0f) {
|
||||
sNewFreqAmplitudes[i3] = 1.0f;
|
||||
}
|
||||
sFreqAmplitudes[l] = sFreqAmplitudes[l] * 0.75f + 0.25f * D_8014A8D8[l];
|
||||
D_8014A958[l] = sFreqAmplitudes[l] * 255.0f;
|
||||
sFreqAmplitudes[i3] = sFreqAmplitudes[i3] * 0.75f + 0.25f * sNewFreqAmplitudes[i3];
|
||||
sFreqAnalyzerBars[i3] = sFreqAmplitudes[i3] * 255.0f;
|
||||
}
|
||||
return D_8014A958;
|
||||
return sFreqAnalyzerBars;
|
||||
}
|
||||
|
||||
void Audio_StartPlayerNoise(u8 playerId) {
|
||||
@@ -2479,7 +2481,7 @@ void Audio_StartPlayerNoise(u8 playerId) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_8001CA24(u8 playerId) {
|
||||
void Audio_StopPlayerNoise(u8 playerId) {
|
||||
u32 sfxId = 0x00000000;
|
||||
|
||||
switch (sPlayerNoise[playerId].form) {
|
||||
@@ -2505,56 +2507,56 @@ void func_8001CA24(u8 playerId) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_8001CB80(u8 playerId, u8 arg1) {
|
||||
D_8014BA28[playerId] = sAudioFrameCounter;
|
||||
switch (arg1) {
|
||||
void Audio_InitBombSfx(u8 playerId, u8 type) {
|
||||
sBombStartFrame[playerId] = sAudioFrameCounter;
|
||||
switch (type) {
|
||||
case 1:
|
||||
D_8014BA10[playerId] = 1.0f;
|
||||
D_8014BA20[playerId] = 1;
|
||||
sBombFreqMod[playerId] = 1.0f;
|
||||
sBombType[playerId] = 1;
|
||||
break;
|
||||
case 2:
|
||||
D_8014BA10[playerId] = 1.5f;
|
||||
D_8014BA20[playerId] = 2;
|
||||
sBombFreqMod[playerId] = 1.5f;
|
||||
sBombType[playerId] = 2;
|
||||
break;
|
||||
default:
|
||||
case 0:
|
||||
D_8014BA10[playerId] = 0.75f;
|
||||
D_8014BA20[playerId] = 0;
|
||||
sBombFreqMod[playerId] = 0.75f;
|
||||
sBombType[playerId] = 0;
|
||||
break;
|
||||
}
|
||||
if (D_8014BA24[playerId] != 1) {
|
||||
Audio_PlaySfx(0x01008008, gPlayer[playerId].sfx.srcPos, playerId, &D_8014BA10[playerId], &gDefaultMod,
|
||||
if (sBombState[playerId] != 1) {
|
||||
Audio_PlaySfx(0x01008008, gPlayer[playerId].sfx.srcPos, playerId, &sBombFreqMod[playerId], &gDefaultMod,
|
||||
&sPlayerNoise[playerId].reverbAdd);
|
||||
D_8014BA24[playerId] = 1;
|
||||
sBombState[playerId] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8001CCDC(u8 playerId, f32* sfxSource) {
|
||||
if (D_8014BA24[playerId] != 0) {
|
||||
switch (D_8014BA20[playerId]) {
|
||||
void Audio_PlayBombFlightSfx(u8 playerId, f32* sfxSource) {
|
||||
if (sBombState[playerId] != 0) {
|
||||
switch (sBombType[playerId]) {
|
||||
case 1:
|
||||
D_8014BA10[playerId] = 1.2f;
|
||||
sBombFreqMod[playerId] = 1.2f;
|
||||
break;
|
||||
case 2:
|
||||
D_8014BA10[playerId] = 1.5f;
|
||||
sBombFreqMod[playerId] = 1.5f;
|
||||
break;
|
||||
default:
|
||||
case 0:
|
||||
D_8014BA10[playerId] = 1.0f;
|
||||
sBombFreqMod[playerId] = 1.0f;
|
||||
break;
|
||||
}
|
||||
Audio_KillSfxBySourceAndId(gPlayer[playerId].sfx.srcPos, 0x01008008);
|
||||
Audio_PlaySfx(0x09001001, sfxSource, playerId, &D_8014BA10[playerId], &gDefaultMod,
|
||||
Audio_PlaySfx(0x09001001, sfxSource, playerId, &sBombFreqMod[playerId], &gDefaultMod,
|
||||
&sPlayerNoise[playerId].reverbAdd);
|
||||
D_8014BA24[playerId] = 2;
|
||||
sBombState[playerId] = 2;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8001CE28(u8 playerId, f32* sfxSource) {
|
||||
void Audio_PlayBombExplodeSfx(u8 playerId, f32* sfxSource) {
|
||||
u32 sfxId;
|
||||
|
||||
if (D_8014BA24[playerId] != 0) {
|
||||
switch (D_8014BA20[playerId]) {
|
||||
if (sBombState[playerId] != 0) {
|
||||
switch (sBombType[playerId]) {
|
||||
case 1:
|
||||
sfxId = 0x0903A00A;
|
||||
break;
|
||||
@@ -2568,35 +2570,35 @@ void func_8001CE28(u8 playerId, f32* sfxSource) {
|
||||
}
|
||||
Audio_KillSfxByTokenAndId(playerId, 0x09001001);
|
||||
AUDIO_PLAY_SFX(sfxId, sfxSource, playerId);
|
||||
D_8014BA24[playerId] = 0;
|
||||
sBombState[playerId] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8001CEFC(f32* sfxSource) {
|
||||
void Audio_StartEngineNoise(f32* sfxSource) {
|
||||
u32 sfxId = (gPlayer[0].sfx.levelType == LEVELTYPE_SPACE) ? 0x31000040 : 0x3100000C;
|
||||
|
||||
AUDIO_PLAY_SFX(sfxId, sfxSource, 0);
|
||||
}
|
||||
|
||||
void func_8001CF60(f32* sfxSource) {
|
||||
void Audio_StopEngineNoise(f32* sfxSource) {
|
||||
u32 sfxId = (gPlayer[0].sfx.levelType == LEVELTYPE_SPACE) ? 0x31000040 : 0x3100000C;
|
||||
|
||||
Audio_KillSfxBySourceAndId(sfxSource, sfxId);
|
||||
}
|
||||
|
||||
void func_8001CFA8(f32 arg0) {
|
||||
f32 var_fv0 = ABS(arg0);
|
||||
void Audio_SetSfxSpeedModulation(f32 vel) {
|
||||
f32 speed = ABS(vel);
|
||||
|
||||
if (var_fv0 < 6.0f) {
|
||||
var_fv0 = 6.0f;
|
||||
} else if (var_fv0 > 30.0f) {
|
||||
var_fv0 = 30.0f;
|
||||
if (speed < 6.0f) {
|
||||
speed = 6.0f;
|
||||
} else if (speed > 30.0f) {
|
||||
speed = 30.0f;
|
||||
}
|
||||
|
||||
sSfxFreqMod = ((var_fv0 - 18.0f) / 24.0f) + 1.0f;
|
||||
sSfxFreqMod = ((speed - 18.0f) / 24.0f) + 1.0f;
|
||||
}
|
||||
|
||||
void func_8001D034(f32* sfxSource, u32 sfxId, u8 semitones) {
|
||||
void Audio_SetTransposeAndPlaySfx(f32* sfxSource, u32 sfxId, u8 semitones) {
|
||||
f32 semitoneMods[] = {
|
||||
1.0f, 1.059f, 1.122f, 1.189f, 1.26f, 1.335f, 1.414f, 1.498f, 1.587f, 1.682f, 1.782f, 1.888f, 2.0f,
|
||||
};
|
||||
@@ -2604,64 +2606,69 @@ void func_8001D034(f32* sfxSource, u32 sfxId, u8 semitones) {
|
||||
if (semitones > 12) {
|
||||
semitones = 12;
|
||||
}
|
||||
func_8001D0B4(sfxSource, sfxId, semitoneMods[semitones]);
|
||||
Audio_SetModulationAndPlaySfx(sfxSource, sfxId, semitoneMods[semitones]);
|
||||
}
|
||||
|
||||
void func_8001D0B4(f32* sfxSource, u32 sfxId, f32 freqMod) {
|
||||
void Audio_SetModulationAndPlaySfx(f32* sfxSource, u32 sfxId, f32 freqMod) {
|
||||
sSfxFreqMod = freqMod;
|
||||
Audio_PlaySfx(sfxId, sfxSource, 0, &sSfxFreqMod, &gDefaultMod, &gDefaultReverb);
|
||||
}
|
||||
|
||||
void func_8001D10C(f32* sfxSource, u32 sfxId) {
|
||||
void Audio_PlaySfxModulated(f32* sfxSource, u32 sfxId) {
|
||||
Audio_PlaySfx(sfxId, sfxSource, 0, &sSfxFreqMod, &sSfxVolMod, &gDefaultReverb);
|
||||
}
|
||||
|
||||
void func_8001D15C(u8 arg0) {
|
||||
if (arg0 < 12) {
|
||||
sSfxFreqMod = (arg0 / 11.0f) + 0.5f;
|
||||
void Audio_SetSfxMapModulation(u8 fMod) {
|
||||
if (fMod < 12) {
|
||||
sSfxFreqMod = (fMod / 11.0f) + 0.5f;
|
||||
} else {
|
||||
sSfxFreqMod = 1.5f;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8001D1C8(u8 arg0, u8 arg1) {
|
||||
u8 temp1;
|
||||
u8 temp2;
|
||||
void Audio_SetHeatAlarmParams(u8 shields, u8 heightParam) {
|
||||
// height param is (s32) height / 100 - 1, clamped to [0, 5]
|
||||
u8 alarmVolume;
|
||||
u8 heightVolume;
|
||||
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 9, 2, 8 + (arg0 >> 2));
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 10, 2, 8 + (arg0 >> 2));
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 11, 2, 8 + (arg0 >> 2));
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 9, 1, 19 - (arg1 * 3));
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 10, 1, 19 - (arg1 * 3));
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 11, 1, 19 - (arg1 * 3));
|
||||
temp1 = 68 - (arg0 >> 3);
|
||||
temp2 = 80 - (arg1 * 10);
|
||||
if (temp1 < temp2) {
|
||||
temp1 = temp2;
|
||||
// modifies tempo
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 9, 2, 8 + (shields >> 2));
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 10, 2, 8 + (shields >> 2));
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 11, 2, 8 + (shields >> 2));
|
||||
|
||||
// modifies frequency
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 9, 1, 19 - (heightParam * 3));
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 10, 1, 19 - (heightParam * 3));
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 11, 1, 19 - (heightParam * 3));
|
||||
|
||||
alarmVolume = 68 - (shields >> 3);
|
||||
heightVolume = 80 - (heightParam * 10);
|
||||
if (heightVolume > alarmVolume) {
|
||||
alarmVolume = heightVolume;
|
||||
}
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 9, 3, temp1);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 10, 3, temp1);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 11, 3, temp1);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 9, 3, alarmVolume);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 10, 3, alarmVolume);
|
||||
AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, 11, 3, alarmVolume);
|
||||
}
|
||||
|
||||
void Audio_PlayEventSfx(f32* sfxSource, u16 arg1) {
|
||||
if ((D_800C5E88[arg1] & 0xF0000000) != 0x40000000) {
|
||||
AUDIO_PLAY_SFX(D_800C5E88[arg1], sfxSource, 0);
|
||||
void Audio_PlayEventSfx(f32* sfxSource, u16 eventSfxId) {
|
||||
if ((sEventSfx[eventSfxId] & 0xF0000000) != 0x40000000) {
|
||||
AUDIO_PLAY_SFX(sEventSfx[eventSfxId], sfxSource, 0);
|
||||
} else {
|
||||
AUDIO_PLAY_SFX(D_800C5E88[arg1], gDefaultSfxSource, 0);
|
||||
AUDIO_PLAY_SFX(sEventSfx[eventSfxId], gDefaultSfxSource, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void Audio_StopEventSfx(f32* sfxSource, u16 arg1) {
|
||||
if ((D_800C5E88[arg1] & 0xF0000000) != 0x40000000) {
|
||||
Audio_KillSfxBySourceAndId(sfxSource, D_800C5E88[arg1]);
|
||||
void Audio_StopEventSfx(f32* sfxSource, u16 eventSfxId) {
|
||||
if ((sEventSfx[eventSfxId] & 0xF0000000) != 0x40000000) {
|
||||
Audio_KillSfxBySourceAndId(sfxSource, sEventSfx[eventSfxId]);
|
||||
} else {
|
||||
Audio_KillSfxBySourceAndId(gDefaultSfxSource, D_800C5E88[arg1]);
|
||||
Audio_KillSfxBySourceAndId(gDefaultSfxSource, sEventSfx[eventSfxId]);
|
||||
}
|
||||
}
|
||||
|
||||
void Audio_SetBaseSfxReverb(s8 reverb) {
|
||||
sBaseReverb = reverb;
|
||||
void Audio_SetEnvSfxReverb(s8 reverb) {
|
||||
sEnvReverb = reverb;
|
||||
}
|
||||
|
||||
void Audio_SetBgmParam(s8 bgmParam) {
|
||||
@@ -2681,16 +2688,16 @@ void Audio_PlayFanfare(u16 seqId, u8 bgmVolume, u8 bgmFadeoutTime, u8 bgmFadeinT
|
||||
}
|
||||
}
|
||||
|
||||
void func_8001D520(void) {
|
||||
void Audio_PlayDeathSequence(void) {
|
||||
u8 i;
|
||||
|
||||
if (sNewAudioSpecId == AUDIOSPEC_24) {
|
||||
if (sAudioSpecId == AUDIOSPEC_24) {
|
||||
Audio_ClearVoice();
|
||||
func_8001D6DC(0);
|
||||
Audio_PlayMapMenuSfx(0);
|
||||
AUDIO_PLAY_SFX(0x0903F004, gDefaultSfxSource, 4);
|
||||
SEQCMD_SET_SEQPLAYER_VOLUME(SEQ_PLAYER_BGM, 5, 30);
|
||||
SEQCMD_SETUP_RESTORE_SEQPLAYER_VOLUME(SEQ_PLAYER_FANFARE, SEQ_PLAYER_BGM, 30);
|
||||
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_FANFARE, 0, 0, 39);
|
||||
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_FANFARE, 0, 0, SEQ_ID_DEATH);
|
||||
} else {
|
||||
for (i = 0; i < 5; i++) {
|
||||
Audio_KillSfxByBank(i);
|
||||
@@ -2699,12 +2706,12 @@ void func_8001D520(void) {
|
||||
AUDIO_PLAY_SFX(0x0903F004, gDefaultSfxSource, 4);
|
||||
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 0);
|
||||
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 0);
|
||||
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM, 0, 0, 39);
|
||||
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM, 0, 0, SEQ_ID_DEATH);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8001D638(u8 arg0) {
|
||||
if (arg0) {
|
||||
void Audio_PlayPauseSfx(u8 active) {
|
||||
if (active) {
|
||||
AUDIO_PLAY_SFX(0x4900F000, gDefaultSfxSource, 4);
|
||||
AUDIOCMD_GLOBAL_MUTE();
|
||||
} else {
|
||||
@@ -2713,8 +2720,8 @@ void func_8001D638(u8 arg0) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_8001D6DC(u8 arg0) {
|
||||
if (arg0) {
|
||||
void Audio_PlayMapMenuSfx(u8 active) {
|
||||
if (active) {
|
||||
AUDIO_PLAY_SFX(0x49000019, gDefaultSfxSource, 4);
|
||||
AUDIOCMD_GLOBAL_MUTE();
|
||||
} else {
|
||||
@@ -2723,7 +2730,7 @@ void func_8001D6DC(u8 arg0) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_8001D780(u8 audioType) {
|
||||
void Audio_RestoreVolumeSettings(u8 audioType) {
|
||||
s8 volume = ((sVolumeSettings[audioType] * 127) / 99) % 128U;
|
||||
u8 i;
|
||||
|
||||
@@ -2748,7 +2755,7 @@ void Audio_SetVolume(u8 audioType, u8 volume) {
|
||||
volume = 99;
|
||||
}
|
||||
sVolumeSettings[audioType] = volume;
|
||||
func_8001D780(audioType);
|
||||
Audio_RestoreVolumeSettings(audioType);
|
||||
}
|
||||
|
||||
void Audio_PlaySoundTest(u8 enable) {
|
||||
@@ -2834,40 +2841,40 @@ void Audio_InitSounds(void) {
|
||||
Audio_StartSequence(SEQ_PLAYER_SFX, SEQ_ID_SFX, 0xFF, 10);
|
||||
}
|
||||
|
||||
void func_8001DD40(void) {
|
||||
void Audio_RestartSeqPlayers(void) {
|
||||
s32 pad1;
|
||||
s32 pad2;
|
||||
u16 sp1E = 1;
|
||||
u16 fadeIn = 1;
|
||||
|
||||
Audio_StartSequence(SEQ_PLAYER_VOICE, SEQ_ID_VOICE, 0xFF, 1);
|
||||
if (sNewAudioSpecId == AUDIOSPEC_12) {
|
||||
sp1E = 360;
|
||||
} else if (sNewAudioSpecId < AUDIOSPEC_23) {
|
||||
sp1E = 90;
|
||||
if (sAudioSpecId == AUDIOSPEC_12) {
|
||||
fadeIn = 360;
|
||||
} else if (sAudioSpecId < AUDIOSPEC_23) {
|
||||
fadeIn = 90;
|
||||
}
|
||||
Audio_StartSequence(SEQ_PLAYER_SFX, SEQ_ID_SFX, 0xFF, sp1E);
|
||||
func_80017494();
|
||||
func_80017550();
|
||||
Audio_StartSequence(SEQ_PLAYER_SFX, SEQ_ID_SFX, 0xFF, fadeIn);
|
||||
Audio_LoadInstruments();
|
||||
Audio_LoadAquasSequence();
|
||||
SEQCMD_SET_SEQPLAYER_VOLUME(SEQ_PLAYER_SFX, 0, 127);
|
||||
SEQCMD_SET_SEQPLAYER_VOLUME(SEQ_PLAYER_VOICE, 0, 127);
|
||||
AudioThread_ScheduleProcessCmds();
|
||||
AUDIOCMD_GLOBAL_STOP_AUDIOCMDS();
|
||||
AUDIOCMD_GLOBAL_STOP_AUDIOCMDS();
|
||||
AUDIOCMD_GLOBAL_STOP_AUDIOCMDS();
|
||||
func_8001D780(0);
|
||||
func_8001D780(2);
|
||||
func_8001D780(1);
|
||||
Audio_RestoreVolumeSettings(0);
|
||||
Audio_RestoreVolumeSettings(2);
|
||||
Audio_RestoreVolumeSettings(1);
|
||||
}
|
||||
|
||||
void func_8001DE1C(u8 oldSpecId) {
|
||||
void Audio_StartReset(u8 oldSpecId) {
|
||||
if (oldSpecId == AUDIOSPEC_16) {
|
||||
if ((sNewAudioSpecId == AUDIOSPEC_22) || (sNewAudioSpecId == AUDIOSPEC_23)) {
|
||||
D_800C5D58 = 2;
|
||||
if ((sAudioSpecId == AUDIOSPEC_22) || (sAudioSpecId == AUDIOSPEC_23)) {
|
||||
sAudioResetStatus = AUDIORESET_BLOCK;
|
||||
}
|
||||
} else if ((oldSpecId == AUDIOSPEC_28) && (sNewAudioSpecId == AUDIOSPEC_23)) {
|
||||
D_800C5D58 = 2;
|
||||
} else if ((oldSpecId == AUDIOSPEC_28) && (sAudioSpecId == AUDIOSPEC_23)) {
|
||||
sAudioResetStatus = AUDIORESET_BLOCK;
|
||||
} else {
|
||||
D_800C5D58 = 1;
|
||||
sAudioResetStatus = AUDIORESET_WAIT;
|
||||
}
|
||||
AUDIOCMD_GLOBAL_UNMUTE(true);
|
||||
Audio_ResetVoicesAndPlayers();
|
||||
@@ -2877,13 +2884,13 @@ void func_8001DE1C(u8 oldSpecId) {
|
||||
}
|
||||
|
||||
void Audio_Update(void) {
|
||||
if (func_80018FA4() == 0) {
|
||||
if (Audio_HandleReset() == AUDIORESET_READY) {
|
||||
Audio_ProcessSfxRequests();
|
||||
Audio_ProcessSeqCmds();
|
||||
Audio_PlayAllSfx();
|
||||
Audio_UpdatePlayerNoise();
|
||||
Audio_UpdateVoice();
|
||||
func_8001AF50();
|
||||
Audio_UpdateUnkVoiceParam();
|
||||
Audio_UpdateActiveSequences();
|
||||
Audio_UpdateDelayedSeqCmds();
|
||||
AudioThread_ScheduleProcessCmds();
|
||||
|
||||
+15
-15
@@ -291,7 +291,7 @@ s32 AudioLoad_SyncLoadInstrument(s32 fontId, s32 instId, s32 drumId) {
|
||||
|
||||
void AudioLoad_AsyncLoadSampleBank(s32 sampleBankId, s32 nChunks, s32 retData, OSMesgQueue* retQueue) {
|
||||
if (AudioLoad_AsyncLoadInner(2, AudioLoad_GetLoadTableIndex(2, sampleBankId), nChunks, retData, retQueue) == NULL) {
|
||||
osSendMesg(retQueue, NULL, 0);
|
||||
osSendMesg(retQueue, NULL, OS_MESG_NOBLOCK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -642,14 +642,14 @@ void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium) {
|
||||
break;
|
||||
}
|
||||
AudioLoad_Dma(&gSyncDmaIoMsg, 1, 0, devAddr, ramAddr, 0x400, &gSyncDmaQueue, medium, D_800C50E8);
|
||||
osRecvMesg(&gSyncDmaQueue, NULL, 1);
|
||||
MQ_WAIT_FOR_MESG(&gSyncDmaQueue, NULL);
|
||||
size -= 0x400;
|
||||
devAddr += 0x400;
|
||||
ramAddr += 0x400;
|
||||
}
|
||||
if (size != 0) {
|
||||
AudioLoad_Dma(&gSyncDmaIoMsg, 1, 0, devAddr, ramAddr, size, &gSyncDmaQueue, medium, D_800C50F4);
|
||||
osRecvMesg(&gSyncDmaQueue, NULL, 1);
|
||||
MQ_WAIT_FOR_MESG(&gSyncDmaQueue, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -737,7 +737,7 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData,
|
||||
ramAddr = AudioLoad_SearchCaches(tableType, id);
|
||||
if (ramAddr != NULL) {
|
||||
loadStatus = 2;
|
||||
osSendMesg(retQueue, (void*) (retData << 0x18), 0);
|
||||
osSendMesg(retQueue, (void*) (retData << 0x18), OS_MESG_NOBLOCK);
|
||||
} else {
|
||||
table = AudioLoad_GetLoadTable(tableType);
|
||||
size = table->entries[id].size;
|
||||
@@ -990,7 +990,7 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus) {
|
||||
slowLoad = &gSlowLoads.slowLoad[i];
|
||||
switch (slowLoad->state) {
|
||||
case 2:
|
||||
osRecvMesg(&slowLoad->msgQueue, NULL, 1);
|
||||
MQ_WAIT_FOR_MESG(&slowLoad->mesgQueue, NULL);
|
||||
if (resetStatus != 0) {
|
||||
slowLoad->state = 3;
|
||||
break;
|
||||
@@ -1035,8 +1035,8 @@ static char devstr47[] = "Other Type: Not Write ID.\n";
|
||||
|
||||
void AudioLoad_DmaSlowCopy(AudioSlowLoad* slowLoad, s32 size) {
|
||||
osInvalDCache(slowLoad->curRamAddr, size);
|
||||
osCreateMesgQueue(&slowLoad->msgQueue, &slowLoad->msg, 1);
|
||||
AudioLoad_Dma(&slowLoad->ioMesg, 0, 0, slowLoad->curDevAddr, slowLoad->curRamAddr, size, &slowLoad->msgQueue,
|
||||
osCreateMesgQueue(&slowLoad->mesgQueue, &slowLoad->msg, 1);
|
||||
AudioLoad_Dma(&slowLoad->ioMesg, 0, 0, slowLoad->curDevAddr, slowLoad->curRamAddr, size, &slowLoad->mesgQueue,
|
||||
slowLoad->medium, D_800C52F4);
|
||||
}
|
||||
|
||||
@@ -1081,7 +1081,7 @@ AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, u8* ramAddr, u32 size, s32
|
||||
asyncLoad->medium = medium;
|
||||
asyncLoad->retMsg = retMesg;
|
||||
|
||||
osCreateMesgQueue(&asyncLoad->msgQueue, &asyncLoad->msg, 1);
|
||||
osCreateMesgQueue(&asyncLoad->mesgQueue, &asyncLoad->msg, 1);
|
||||
return asyncLoad;
|
||||
}
|
||||
|
||||
@@ -1114,11 +1114,11 @@ void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) {
|
||||
asyncLoad->delay = 0;
|
||||
} else {
|
||||
if (resetStatus != 0) {
|
||||
osRecvMesg(&asyncLoad->msgQueue, NULL, 1);
|
||||
MQ_WAIT_FOR_MESG(&asyncLoad->mesgQueue, NULL);
|
||||
asyncLoad->status = 0;
|
||||
return;
|
||||
}
|
||||
if (osRecvMesg(&asyncLoad->msgQueue, NULL, 0) == -1) {
|
||||
if (!MQ_GET_MESG(&asyncLoad->mesgQueue, NULL)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1160,7 +1160,7 @@ void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) {
|
||||
break;
|
||||
}
|
||||
asyncLoad->status = 0;
|
||||
osSendMesg(asyncLoad->retQueue, asyncLoad->retMsg, 0);
|
||||
osSendMesg(asyncLoad->retQueue, asyncLoad->retMsg, OS_MESG_NOBLOCK);
|
||||
} else {
|
||||
if (asyncLoad->bytesRemaining < asyncLoad->chunkSize) {
|
||||
if (asyncLoad->medium == MEDIUM_UNK) {
|
||||
@@ -1190,9 +1190,9 @@ static char D_800C53AC[] = "BGCOPY";
|
||||
void AudioLoad_AsyncDma(AudioAsyncLoad* asyncLoad, u32 size) {
|
||||
size = ALIGN16(size);
|
||||
osInvalDCache(asyncLoad->curRamAddr, size);
|
||||
osCreateMesgQueue(&asyncLoad->msgQueue, &asyncLoad->msg, 1);
|
||||
osCreateMesgQueue(&asyncLoad->mesgQueue, &asyncLoad->msg, 1);
|
||||
if (size) {}
|
||||
AudioLoad_Dma(&asyncLoad->ioMesg, 0, 0, asyncLoad->curDevAddr, asyncLoad->curRamAddr, size, &asyncLoad->msgQueue,
|
||||
AudioLoad_Dma(&asyncLoad->ioMesg, 0, 0, asyncLoad->curDevAddr, asyncLoad->curRamAddr, size, &asyncLoad->mesgQueue,
|
||||
asyncLoad->medium, D_800C53AC);
|
||||
}
|
||||
|
||||
@@ -1353,11 +1353,11 @@ s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus) {
|
||||
|
||||
if (gPreloadSampleStackTop > 0) {
|
||||
if (resetStatus != 0) {
|
||||
if (osRecvMesg(&gPreloadSampleQueue, (OSMesg) &preloadIndex, 0)) {}
|
||||
if (!MQ_GET_MESG(&gPreloadSampleQueue, &preloadIndex)) {}
|
||||
gPreloadSampleStackTop = 0;
|
||||
return false;
|
||||
}
|
||||
if (osRecvMesg(&gPreloadSampleQueue, (OSMesg) &preloadIndex, 0) == -1) {
|
||||
if (!MQ_GET_MESG(&gPreloadSampleQueue, &preloadIndex)) {
|
||||
return false;
|
||||
}
|
||||
// "Receive %d\n"
|
||||
|
||||
+46
-46
@@ -165,44 +165,44 @@ TunedSample* func_80011D10(Instrument* instrument, s32 arg1) {
|
||||
return sample;
|
||||
}
|
||||
|
||||
Instrument* Audio_GetInstrument(s32 arg0, s32 arg1) {
|
||||
Instrument* temp_v1;
|
||||
Instrument* Audio_GetInstrument(s32 fontId, s32 instId) {
|
||||
Instrument* instrument;
|
||||
|
||||
if ((gFontLoadStatus[arg0] < 2) != 0) {
|
||||
D_80155D88 = arg0 + 0x10000000;
|
||||
if ((gFontLoadStatus[fontId] < 2) != 0) {
|
||||
D_80155D88 = fontId + 0x10000000;
|
||||
return NULL;
|
||||
}
|
||||
if (arg1 >= gSoundFontList[arg0].numInstruments) {
|
||||
D_80155D88 = (arg0 << 8) + arg1 + 0x03000000;
|
||||
if (instId >= gSoundFontList[fontId].numInstruments) {
|
||||
D_80155D88 = (fontId << 8) + instId + 0x03000000;
|
||||
return NULL;
|
||||
}
|
||||
temp_v1 = gSoundFontList[arg0].instruments[arg1];
|
||||
if (temp_v1 == NULL) {
|
||||
D_80155D88 = (arg0 << 8) + arg1 + 0x01000000;
|
||||
return temp_v1;
|
||||
instrument = gSoundFontList[fontId].instruments[instId];
|
||||
if (instrument == NULL) {
|
||||
D_80155D88 = (fontId << 8) + instId + 0x01000000;
|
||||
return instrument;
|
||||
}
|
||||
return temp_v1;
|
||||
return instrument;
|
||||
}
|
||||
|
||||
Drum* Audio_GetDrum(s32 arg0, s32 arg1) {
|
||||
Drum* temp;
|
||||
Drum* Audio_GetDrum(s32 fontId, s32 drumId) {
|
||||
Drum* drum;
|
||||
|
||||
if ((gFontLoadStatus[arg0] < 2) != 0) {
|
||||
D_80155D88 = arg0 + 0x10000000;
|
||||
if ((gFontLoadStatus[fontId] < 2) != 0) {
|
||||
D_80155D88 = fontId + 0x10000000;
|
||||
return NULL;
|
||||
}
|
||||
if (arg1 >= gSoundFontList[arg0].numDrums) {
|
||||
D_80155D88 = (arg0 << 8) + arg1 + 0x04000000;
|
||||
if (drumId >= gSoundFontList[fontId].numDrums) {
|
||||
D_80155D88 = (fontId << 8) + drumId + 0x04000000;
|
||||
return NULL;
|
||||
}
|
||||
if ((u32) gSoundFontList[arg0].drums < AUDIO_RELOCATED_ADDRESS_START) {
|
||||
if ((u32) gSoundFontList[fontId].drums < AUDIO_RELOCATED_ADDRESS_START) {
|
||||
return NULL;
|
||||
}
|
||||
temp = gSoundFontList[arg0].drums[arg1];
|
||||
if (gSoundFontList[arg0].drums[arg1] == NULL) {
|
||||
D_80155D88 = (arg0 << 8) + arg1 + 0x05000000;
|
||||
drum = gSoundFontList[fontId].drums[drumId];
|
||||
if (gSoundFontList[fontId].drums[drumId] == NULL) {
|
||||
D_80155D88 = (fontId << 8) + drumId + 0x05000000;
|
||||
}
|
||||
return temp;
|
||||
return drum;
|
||||
}
|
||||
|
||||
void func_80011EB8(Note* note) {
|
||||
@@ -428,35 +428,35 @@ void func_8001268C(SequenceLayer* layer) {
|
||||
func_80012438(layer, 7);
|
||||
}
|
||||
|
||||
s32 func_800126AC(Note* note, SequenceLayer* layer, s32 arg2) {
|
||||
f32 var_fv0;
|
||||
u8 var_v1 = 0;
|
||||
s32 func_800126AC(Note* note, SequenceLayer* layer, s32 waveId) {
|
||||
f32 freqMod;
|
||||
u8 harmonicIndex = 0;
|
||||
|
||||
if (arg2 < 128) {
|
||||
arg2 = 128;
|
||||
if (waveId < 128) {
|
||||
waveId = 128;
|
||||
}
|
||||
var_fv0 = layer->freqMod;
|
||||
freqMod = layer->freqMod;
|
||||
if ((layer->portamento.mode != 0) && (layer->portamento.extent > 0.0f)) {
|
||||
var_fv0 *= layer->portamento.extent + 1.0f;
|
||||
freqMod *= layer->portamento.extent + 1.0f;
|
||||
}
|
||||
if (var_fv0 < 1.0f) {
|
||||
var_fv0 = 1.0465f;
|
||||
} else if (var_fv0 < 2.0f) {
|
||||
var_v1 = 1;
|
||||
var_fv0 = 0.52325f;
|
||||
} else if (var_fv0 < 4.0f) {
|
||||
var_v1 = 2;
|
||||
var_fv0 = 0.26263f;
|
||||
if (freqMod < 1.0f) {
|
||||
freqMod = 1.0465f;
|
||||
} else if (freqMod < 2.0f) {
|
||||
harmonicIndex = 1;
|
||||
freqMod = 0.52325f;
|
||||
} else if (freqMod < 4.0f) {
|
||||
harmonicIndex = 2;
|
||||
freqMod = 0.26263f;
|
||||
} else {
|
||||
var_v1 = 3;
|
||||
var_fv0 = 0.13081f;
|
||||
harmonicIndex = 3;
|
||||
freqMod = 0.13081f;
|
||||
}
|
||||
|
||||
layer->freqMod *= var_fv0;
|
||||
note->playbackState.waveId = arg2;
|
||||
note->playbackState.harmonicIndex = var_v1;
|
||||
note->noteSubEu.waveSampleAddr = &gWaveSamples[arg2 - 128][var_v1 * 64];
|
||||
return var_v1;
|
||||
layer->freqMod *= freqMod;
|
||||
note->playbackState.waveId = waveId;
|
||||
note->playbackState.harmonicIndex = harmonicIndex;
|
||||
note->noteSubEu.waveSampleAddr = &gWaveSamples[waveId - 128][harmonicIndex * 64];
|
||||
return harmonicIndex;
|
||||
}
|
||||
|
||||
void func_800127B0(Note* note, SequenceLayer* layer) {
|
||||
@@ -601,7 +601,7 @@ void func_80012C40(Note* note) {
|
||||
}
|
||||
}
|
||||
|
||||
Note* func_80012C6C(AudioListItem* item, s32 arg1) {
|
||||
Note* func_80012C6C(AudioListItem* item, s32 priority) {
|
||||
AudioListItem* var_v0;
|
||||
AudioListItem* var_v1;
|
||||
void* temp_a0;
|
||||
@@ -620,7 +620,7 @@ Note* func_80012C6C(AudioListItem* item, s32 arg1) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (((Note*) var_v1->u.value)->playbackState.priority >= arg1) {
|
||||
if (((Note*) var_v1->u.value)->playbackState.priority >= priority) {
|
||||
return NULL;
|
||||
}
|
||||
return (Note*) var_v1->u.value;
|
||||
|
||||
+103
-103
@@ -349,25 +349,25 @@ void func_80014748(SequenceLayer* layer) {
|
||||
break;
|
||||
}
|
||||
switch (cmd) { /* switch 5; irregular */
|
||||
case 0xFF: /* switch 5 */
|
||||
case 0xFF:
|
||||
if (state->depth == 0) {
|
||||
func_800140D0(layer);
|
||||
return;
|
||||
}
|
||||
state->pc = state->stack[--state->depth];
|
||||
break;
|
||||
case 0xFC: /* switch 5 */
|
||||
case 0xFC:
|
||||
sp44 = func_800146D4(state);
|
||||
state->stack[state->depth] = state->pc;
|
||||
state->depth++;
|
||||
state->pc = &seqPlayer->seqData[sp44];
|
||||
break;
|
||||
case 0xF8: /* switch 5 */
|
||||
case 0xF8:
|
||||
state->remLoopIters[state->depth] = func_800146C0(state);
|
||||
state->stack[state->depth] = state->pc;
|
||||
state->depth++;
|
||||
break;
|
||||
case 0xF7: /* switch 5 */
|
||||
case 0xF7:
|
||||
state->remLoopIters[state->depth - 1]--;
|
||||
if (state->remLoopIters[state->depth - 1] != 0) {
|
||||
state->pc = state->stack[state->depth - 1];
|
||||
@@ -375,15 +375,15 @@ void func_80014748(SequenceLayer* layer) {
|
||||
state->depth--;
|
||||
}
|
||||
break;
|
||||
case 0xFB: /* switch 5 */
|
||||
case 0xFB:
|
||||
sp44 = func_800146D4(state);
|
||||
state->pc = &seqPlayer->seqData[sp44];
|
||||
break;
|
||||
case 0xF4: /* switch 5 */
|
||||
case 0xF4:
|
||||
state->pc += (s8) func_800146C0(state);
|
||||
break;
|
||||
case 0xC1: /* switch 5 */
|
||||
case 0xCA: /* switch 5 */
|
||||
case 0xC1:
|
||||
case 0xCA:
|
||||
var_s2 = *state->pc++;
|
||||
if (cmd == 0xC1) {
|
||||
layer->velocitySquare = (f32) (var_s2 * var_s2) / 16129.0f;
|
||||
@@ -391,8 +391,8 @@ void func_80014748(SequenceLayer* layer) {
|
||||
layer->pan = var_s2;
|
||||
}
|
||||
break;
|
||||
case 0xC2: /* switch 5 */
|
||||
case 0xC9: /* switch 5 */
|
||||
case 0xC2:
|
||||
case 0xC9:
|
||||
var_s2 = *state->pc++;
|
||||
if (cmd == 0xC9) {
|
||||
layer->gateTime = var_s2;
|
||||
@@ -400,8 +400,8 @@ void func_80014748(SequenceLayer* layer) {
|
||||
layer->transposition = var_s2;
|
||||
}
|
||||
break;
|
||||
case 0xC4: /* switch 5 */
|
||||
case 0xC5: /* switch 5 */
|
||||
case 0xC4:
|
||||
case 0xC5:
|
||||
if (cmd == 0xC4) {
|
||||
layer->continuousNotes = 1;
|
||||
} else {
|
||||
@@ -409,11 +409,11 @@ void func_80014748(SequenceLayer* layer) {
|
||||
}
|
||||
func_8001266C(layer);
|
||||
break;
|
||||
case 0xC3: /* switch 5 */
|
||||
case 0xC3:
|
||||
sp44 = func_80014704(state);
|
||||
layer->shortNoteDefaultDelay = sp44;
|
||||
break;
|
||||
case 0xC6: /* switch 5 */
|
||||
case 0xC6:
|
||||
cmd = func_800146C0(state);
|
||||
if (cmd >= 127) {
|
||||
if (cmd == 127) {
|
||||
@@ -433,7 +433,7 @@ void func_80014748(SequenceLayer* layer) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xC7: /* switch 5 */
|
||||
case 0xC7:
|
||||
layer->portamento.mode = func_800146C0(state);
|
||||
cmd = func_800146C0(state) + channel->transposition + layer->transposition + seqPlayer->transposition;
|
||||
if (cmd > 127) {
|
||||
@@ -447,27 +447,27 @@ void func_80014748(SequenceLayer* layer) {
|
||||
layer->portamentoTime = sp44;
|
||||
}
|
||||
break;
|
||||
case 0xC8: /* switch 5 */
|
||||
case 0xC8:
|
||||
layer->portamento.mode = 0;
|
||||
break;
|
||||
case 0xCB: /* switch 5 */
|
||||
case 0xCB:
|
||||
sp44 = func_800146D4(state);
|
||||
layer->adsr.envelope = (EnvelopePoint*) &seqPlayer->seqData[sp44];
|
||||
layer->adsr.decayIndex = func_800146C0(state);
|
||||
break;
|
||||
case 0xCC: /* switch 5 */
|
||||
case 0xCC:
|
||||
layer->bit1 = 1;
|
||||
break;
|
||||
case 0xCD: /* switch 5 */
|
||||
case 0xCD:
|
||||
layer->stereo.asByte = func_800146C0(state);
|
||||
break;
|
||||
default: /* switch 5 */
|
||||
default:
|
||||
switch (cmd & 0xF0) { /* switch 6; irregular */
|
||||
case 0xD0: /* switch 6 */
|
||||
case 0xD0:
|
||||
sp44 = (u16) seqPlayer->shortNoteVelocityTable[cmd & 0xF];
|
||||
layer->velocitySquare = (f32) (sp44 * sp44) / 16129.0f;
|
||||
break;
|
||||
case 0xE0: /* switch 6 */
|
||||
case 0xE0:
|
||||
layer->gateTime = seqPlayer->shortNoteGateTimeTable[cmd & 0xF];
|
||||
break;
|
||||
default:
|
||||
@@ -518,14 +518,14 @@ void func_80014748(SequenceLayer* layer) {
|
||||
cmd -= (cmd & 0xC0);
|
||||
} else {
|
||||
switch (cmd & 0xC0) { /* switch 4; irregular */
|
||||
case 0x0: /* switch 4 */
|
||||
case 0x0:
|
||||
sp44 = func_80014704(state);
|
||||
layer->lastDelay = sp44;
|
||||
break;
|
||||
case 0x40: /* switch 4 */
|
||||
case 0x40:
|
||||
sp44 = layer->shortNoteDefaultDelay;
|
||||
break;
|
||||
case 0x80: /* switch 4 */
|
||||
case 0x80:
|
||||
sp44 = layer->lastDelay;
|
||||
break;
|
||||
}
|
||||
@@ -587,19 +587,19 @@ void func_80014748(SequenceLayer* layer) {
|
||||
temp_fv1 = gPitchFrequencies[cmd] * tuning;
|
||||
temp_fa1 = gPitchFrequencies[layer->portamentoTargetNote] * tuning;
|
||||
portamento = &layer->portamento;
|
||||
switch (portamento->mode & ~0x80) { /* switch 3 */
|
||||
case 1: /* switch 3 */
|
||||
case 3: /* switch 3 */
|
||||
case 5: /* switch 3 */
|
||||
switch (portamento->mode & ~0x80) {
|
||||
case 1:
|
||||
case 3:
|
||||
case 5:
|
||||
var_v0_2 = temp_fv1;
|
||||
freqMod = temp_fa1;
|
||||
break;
|
||||
case 2: /* switch 3 */
|
||||
case 4: /* switch 3 */
|
||||
case 2:
|
||||
case 4:
|
||||
freqMod = temp_fv1;
|
||||
var_v0_2 = temp_fa1;
|
||||
break;
|
||||
default: /* switch 3 */
|
||||
default:
|
||||
freqMod = temp_fv1;
|
||||
var_v0_2 = temp_fv1;
|
||||
break;
|
||||
@@ -741,7 +741,7 @@ void func_800153E8(SequenceChannel* channel) {
|
||||
case 0xD5:
|
||||
case 0xD6:
|
||||
break;
|
||||
case 0xFF: /* switch 3 */
|
||||
case 0xFF:
|
||||
if (state->depth == 0) {
|
||||
func_8001415C(channel);
|
||||
goto end_loop;
|
||||
@@ -750,10 +750,10 @@ void func_800153E8(SequenceChannel* channel) {
|
||||
break;
|
||||
case 0xFE:
|
||||
goto end_loop;
|
||||
case 0xFD: /* switch 3 */
|
||||
case 0xFD:
|
||||
channel->delay = func_80014704(state);
|
||||
goto end_loop;
|
||||
case 0xEA: /* switch 3 */
|
||||
case 0xEA:
|
||||
channel->stopScript = 1;
|
||||
goto end_loop;
|
||||
case 0xFC:
|
||||
@@ -764,14 +764,14 @@ void func_800153E8(SequenceChannel* channel) {
|
||||
state->depth++;
|
||||
state->pc = &seqPlayer->seqData[sp52];
|
||||
break;
|
||||
case 0xF8: /* switch 3 */
|
||||
case 0xF8:
|
||||
// if (0 && state->depth >= 4) {
|
||||
// }
|
||||
state->remLoopIters[state->depth] = func_800146C0(state);
|
||||
state->stack[state->depth] = state->pc;
|
||||
state->depth++;
|
||||
break;
|
||||
case 0xF7: /* switch 3 */
|
||||
case 0xF7:
|
||||
state->remLoopIters[state->depth - 1]--;
|
||||
if (state->remLoopIters[state->depth - 1] != 0) {
|
||||
state->pc = state->stack[state->depth - 1];
|
||||
@@ -779,13 +779,13 @@ void func_800153E8(SequenceChannel* channel) {
|
||||
state->depth--;
|
||||
}
|
||||
break;
|
||||
case 0xF6: /* switch 3 */
|
||||
case 0xF6:
|
||||
state->depth--;
|
||||
break;
|
||||
case 0xF5: /* switch 3 */
|
||||
case 0xF9: /* switch 3 */
|
||||
case 0xFA: /* switch 3 */
|
||||
case 0xFB: /* switch 3 */
|
||||
case 0xF5:
|
||||
case 0xF9:
|
||||
case 0xFA:
|
||||
case 0xFB:
|
||||
sp52 = func_800146D4(state);
|
||||
if (((cmd == 0xFA) && (sp4B != 0)) || ((cmd == 0xF9) && (sp4B >= 0)) ||
|
||||
((cmd == 0xF5) && (sp4B < 0))) {
|
||||
@@ -793,34 +793,34 @@ void func_800153E8(SequenceChannel* channel) {
|
||||
}
|
||||
state->pc = &seqPlayer->seqData[sp52];
|
||||
break;
|
||||
case 0xF2: /* switch 3 */
|
||||
case 0xF3: /* switch 3 */
|
||||
case 0xF4: /* switch 3 */
|
||||
case 0xF2:
|
||||
case 0xF3:
|
||||
case 0xF4:
|
||||
temps8 = func_800146C0(state);
|
||||
if (((cmd == 0xF3) && (sp4B != 0)) || ((cmd == 0xF2) && (sp4B >= 0))) {
|
||||
break;
|
||||
}
|
||||
state->pc = &state->pc[temps8];
|
||||
break;
|
||||
case 0xF1: /* switch 3 */
|
||||
case 0xF1:
|
||||
func_80012964(&channel->notePool);
|
||||
func_80012AC4(&channel->notePool, func_800146C0(state));
|
||||
break;
|
||||
case 0xF0: /* switch 3 */
|
||||
case 0xF0:
|
||||
func_80012964(&channel->notePool);
|
||||
break;
|
||||
case 0xC2: /* switch 3 */
|
||||
case 0xC2:
|
||||
sp52 = func_800146D4(state);
|
||||
channel->dynTable = (u8(*)[2]) & seqPlayer->seqData[sp52];
|
||||
break;
|
||||
case 0xC5: /* switch 3 */
|
||||
case 0xC5:
|
||||
if (sp4B != -1) {
|
||||
seqData = channel->dynTable[sp4B];
|
||||
sp52 = (seqData[0] << 8) + seqData[1];
|
||||
channel->dynTable = (u8(*)[2]) & seqPlayer->seqData[sp52];
|
||||
}
|
||||
break;
|
||||
case 0xEB: /* switch 3 */
|
||||
case 0xEB:
|
||||
cmd = func_800146C0(state);
|
||||
sp52 = ((u16*) gSeqFontTable)[seqPlayer->seqId];
|
||||
loBits = gSeqFontTable[sp52];
|
||||
@@ -829,85 +829,85 @@ void func_800153E8(SequenceChannel* channel) {
|
||||
channel->fontId = cmd;
|
||||
}
|
||||
/* fallthrough */
|
||||
case 0xC1: /* switch 3 */
|
||||
case 0xC1:
|
||||
cmd = func_800146C0(state);
|
||||
func_80015330(channel, cmd);
|
||||
break;
|
||||
case 0xC3: /* switch 3 */
|
||||
case 0xC3:
|
||||
channel->largeNotes = false;
|
||||
break;
|
||||
case 0xC4: /* switch 3 */
|
||||
case 0xC4:
|
||||
channel->largeNotes = true;
|
||||
break;
|
||||
case 0xDF: /* switch 3 */
|
||||
case 0xDF:
|
||||
cmd = func_800146C0(state);
|
||||
func_800153C4(channel, cmd);
|
||||
channel->changes.s.volume = 1;
|
||||
break;
|
||||
case 0xE0: /* switch 3 */
|
||||
case 0xE0:
|
||||
channel->volumeMod = (s32) func_800146C0(state) * 0.0078125f;
|
||||
channel->changes.s.volume = 1;
|
||||
break;
|
||||
case 0xDE: /* switch 3 */
|
||||
case 0xDE:
|
||||
sp52 = func_800146D4(state);
|
||||
channel->freqMod = (s32) sp52 / 32768.0f;
|
||||
channel->changes.s.freqMod = 1;
|
||||
break;
|
||||
case 0xD3: /* switch 3 */
|
||||
case 0xD3:
|
||||
cmd = func_800146C0(state) + 0x80;
|
||||
channel->freqMod = gBendPitchOneOctaveFrequencies[cmd];
|
||||
channel->changes.s.freqMod = 1;
|
||||
break;
|
||||
case 0xEE: /* switch 3 */
|
||||
case 0xEE:
|
||||
cmd = func_800146C0(state) + 0x80;
|
||||
channel->freqMod = gBendPitchTwoSemitonesFrequencies[cmd];
|
||||
channel->changes.s.freqMod = 1;
|
||||
break;
|
||||
case 0xDD: /* switch 3 */
|
||||
case 0xDD:
|
||||
channel->newPan = func_800146C0(state);
|
||||
channel->changes.s.pan = 1;
|
||||
break;
|
||||
case 0xDC: /* switch 3 */
|
||||
case 0xDC:
|
||||
channel->panChannelWeight = func_800146C0(state);
|
||||
channel->changes.s.pan = 1;
|
||||
break;
|
||||
case 0xDB: /* switch 3 */
|
||||
case 0xDB:
|
||||
temps8 = *(state->pc++);
|
||||
channel->transposition = temps8;
|
||||
break;
|
||||
case 0xDA: /* switch 3 */
|
||||
case 0xDA:
|
||||
sp52 = func_800146D4(state);
|
||||
channel->adsr.envelope = (EnvelopePoint*) &seqPlayer->seqData[sp52];
|
||||
break;
|
||||
case 0xD9: /* switch 3 */
|
||||
case 0xD9:
|
||||
channel->adsr.decayIndex = func_800146C0(state);
|
||||
break;
|
||||
case 0xD8: /* switch 3 */
|
||||
case 0xD8:
|
||||
channel->vibratoDepthTarget = func_800146C0(state) * 8;
|
||||
channel->vibratoDepthStart = 0;
|
||||
channel->vibratoDepthChangeDelay = 0;
|
||||
break;
|
||||
case 0xD7: /* switch 3 */
|
||||
case 0xD7:
|
||||
channel->vibratoRateStart = channel->vibratoRateTarget = func_800146C0(state) * 32;
|
||||
channel->vibratoRateChangeDelay = 0;
|
||||
break;
|
||||
case 0xE2: /* switch 3 */
|
||||
case 0xE2:
|
||||
channel->vibratoDepthStart = func_800146C0(state) * 8;
|
||||
channel->vibratoDepthTarget = func_800146C0(state) * 8;
|
||||
channel->vibratoDepthChangeDelay = func_800146C0(state) * 0x10;
|
||||
break;
|
||||
case 0xE1: /* switch 3 */
|
||||
case 0xE1:
|
||||
channel->vibratoRateStart = func_800146C0(state) * 32;
|
||||
channel->vibratoRateTarget = func_800146C0(state) * 32;
|
||||
channel->vibratoRateChangeDelay = func_800146C0(state) * 0x10;
|
||||
break;
|
||||
case 0xE3: /* switch 3 */
|
||||
case 0xE3:
|
||||
channel->vibratoDelay = func_800146C0(state) * 0x10;
|
||||
break;
|
||||
case 0xD4: /* switch 3 */
|
||||
case 0xD4:
|
||||
channel->targetReverbVol = func_800146C0(state);
|
||||
break;
|
||||
case 0xC6: /* switch 3 */
|
||||
case 0xC6:
|
||||
cmd = func_800146C0(state);
|
||||
sp52 = ((u16*) gSeqFontTable)[seqPlayer->seqId];
|
||||
loBits = gSeqFontTable[sp52];
|
||||
@@ -916,15 +916,15 @@ void func_800153E8(SequenceChannel* channel) {
|
||||
channel->fontId = cmd;
|
||||
}
|
||||
break;
|
||||
case 0xC7: /* switch 3 */
|
||||
case 0xC7:
|
||||
cmd = func_800146C0(state);
|
||||
sp52 = func_800146D4(state);
|
||||
seqData = &seqPlayer->seqData[sp52];
|
||||
*seqData = (u8) sp4B + cmd;
|
||||
break;
|
||||
case 0xC8: /* switch 3 */
|
||||
case 0xC9: /* switch 3 */
|
||||
case 0xCC: /* switch 3 */
|
||||
case 0xC8:
|
||||
case 0xC9:
|
||||
case 0xCC:
|
||||
temps8 = func_800146C0(state);
|
||||
if (cmd == 0xC8) {
|
||||
sp4B -= temps8;
|
||||
@@ -934,40 +934,40 @@ void func_800153E8(SequenceChannel* channel) {
|
||||
sp4B &= temps8;
|
||||
}
|
||||
break;
|
||||
case 0xCD: /* switch 3 */
|
||||
case 0xCD:
|
||||
func_8001415C(seqPlayer->channels[func_800146C0(state)]);
|
||||
break;
|
||||
case 0xCA: /* switch 3 */
|
||||
case 0xCA:
|
||||
channel->muteBehavior = func_800146C0(state);
|
||||
break;
|
||||
case 0xCB: /* switch 3 */
|
||||
case 0xCB:
|
||||
sp52 = func_800146D4(state);
|
||||
pad = sp52 + sp4B;
|
||||
// seqData =&seqPlayer->seqData[sp4B];
|
||||
sp4B = seqPlayer->seqData[pad];
|
||||
break;
|
||||
case 0xCE: /* switch 3 */
|
||||
case 0xCE:
|
||||
channel->unkC4 = func_800146D4(state);
|
||||
break;
|
||||
case 0xCF: /* switch 3 */
|
||||
case 0xCF:
|
||||
sp52 = func_800146D4(state);
|
||||
seqData = &seqPlayer->seqData[sp52];
|
||||
seqData[0] = (channel->unkC4 >> 8) & 0xFF;
|
||||
seqData[1] = channel->unkC4 & 0xFF;
|
||||
break;
|
||||
case 0xD0: /* switch 3 */
|
||||
case 0xD0:
|
||||
channel->stereoHeadsetEffects = func_800146C0(state);
|
||||
break;
|
||||
case 0xD1: /* switch 3 */
|
||||
case 0xD1:
|
||||
channel->noteAllocPolicy = func_800146C0(state);
|
||||
break;
|
||||
case 0xD2: /* switch 3 */
|
||||
case 0xD2:
|
||||
channel->adsr.sustain = func_800146C0(state);
|
||||
break;
|
||||
case 0xE5: /* switch 3 */
|
||||
case 0xE5:
|
||||
channel->someOtherPriority = func_800146C0(state);
|
||||
break;
|
||||
case 0xE4: /* switch 3 */
|
||||
case 0xE4:
|
||||
if (sp4B != -1) {
|
||||
if (state->depth >= 4) {
|
||||
// eu_stubbed_printf_0("Audio:Track: CTBLCALL Macro Level Over Error!\n");
|
||||
@@ -982,10 +982,10 @@ void func_800153E8(SequenceChannel* channel) {
|
||||
// }
|
||||
}
|
||||
break;
|
||||
case 0xE6: /* switch 3 */
|
||||
case 0xE6:
|
||||
channel->bookOffset = func_800146C0(state);
|
||||
break;
|
||||
case 0xE7: /* switch 3 */
|
||||
case 0xE7:
|
||||
sp52 = func_800146D4(state);
|
||||
seqData = &seqPlayer->seqData[sp52];
|
||||
channel->muteBehavior = *seqData++;
|
||||
@@ -998,7 +998,7 @@ void func_800153E8(SequenceChannel* channel) {
|
||||
channel->someOtherPriority = *seqData++;
|
||||
channel->changes.s.pan = 1;
|
||||
break;
|
||||
case 0xE8: /* switch 3 */
|
||||
case 0xE8:
|
||||
channel->muteBehavior = func_800146C0(state);
|
||||
channel->noteAllocPolicy = func_800146C0(state);
|
||||
channel->notePriority = func_800146C0(state);
|
||||
@@ -1009,7 +1009,7 @@ void func_800153E8(SequenceChannel* channel) {
|
||||
channel->someOtherPriority = func_800146C0(state);
|
||||
channel->changes.s.pan = 1;
|
||||
break;
|
||||
case 0xEC: /* switch 3 */
|
||||
case 0xEC:
|
||||
channel->vibratoDepthTarget = 0;
|
||||
channel->vibratoDepthStart = 0;
|
||||
channel->vibratoDepthChangeDelay = 0;
|
||||
@@ -1018,58 +1018,58 @@ void func_800153E8(SequenceChannel* channel) {
|
||||
channel->vibratoRateChangeDelay = 0;
|
||||
channel->freqMod = 1.0f;
|
||||
break;
|
||||
case 0xE9: /* switch 3 */
|
||||
case 0xE9:
|
||||
channel->notePriority = func_800146C0(state);
|
||||
break;
|
||||
case 0xED: /* switch 3 */
|
||||
case 0xED:
|
||||
// cmd =
|
||||
channel->reverbIndex = func_800146C0(state);
|
||||
break;
|
||||
case 0xEF: /* switch 3 */
|
||||
case 0xEF:
|
||||
func_800146D4(state);
|
||||
func_800146C0(state);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
loBits = cmd & 0xF;
|
||||
switch (cmd & 0xF0) { /* switch 2 */
|
||||
case 0x0: /* switch 2 */
|
||||
switch (cmd & 0xF0) {
|
||||
case 0x0:
|
||||
if (channel->layers[loBits] != NULL) {
|
||||
sp4B = channel->layers[loBits]->finished;
|
||||
} else {
|
||||
sp4B = -1;
|
||||
}
|
||||
break;
|
||||
case 0x10: /* switch 2 */
|
||||
case 0x10:
|
||||
channel->seqScriptIO[loBits] = -1;
|
||||
if (AudioLoad_SlowLoadSample(channel->fontId, sp4B, &channel->seqScriptIO[loBits]) == -1) {}
|
||||
break;
|
||||
case 0x70: /* switch 2 */
|
||||
case 0x70:
|
||||
channel->seqScriptIO[loBits] = sp4B;
|
||||
break;
|
||||
case 0x80: /* switch 2 */
|
||||
case 0x80:
|
||||
sp4B = channel->seqScriptIO[loBits];
|
||||
if (loBits < 4) {
|
||||
channel->seqScriptIO[loBits] = -1;
|
||||
}
|
||||
break;
|
||||
case 0x50: /* switch 2 */
|
||||
case 0x50:
|
||||
sp4B -= channel->seqScriptIO[loBits];
|
||||
break;
|
||||
case 0x60: /* switch 2 */
|
||||
case 0x60:
|
||||
channel->delay = loBits;
|
||||
goto end_loop;
|
||||
case 0x90: /* switch 2 */
|
||||
case 0x90:
|
||||
sp52 = func_800146D4(state);
|
||||
if (func_80013FC4(channel, loBits) == 0) {
|
||||
// if(1) {}
|
||||
channel->layers[loBits]->state.pc = &seqPlayer->seqData[sp52];
|
||||
}
|
||||
break;
|
||||
case 0xA0: /* switch 2 */
|
||||
case 0xA0:
|
||||
func_8001410C(channel, loBits);
|
||||
break;
|
||||
case 0xB0: /* switch 2 */
|
||||
case 0xB0:
|
||||
if ((sp4B != -1) && (func_80013FC4(channel, loBits) != -1)) {
|
||||
seqData = channel->dynTable[sp4B];
|
||||
sp52 = (seqData[0] << 8) + seqData[1];
|
||||
@@ -1080,11 +1080,11 @@ void func_800153E8(SequenceChannel* channel) {
|
||||
sp52 = func_800146D4(state);
|
||||
func_80014440(seqPlayer, loBits, &seqPlayer->seqData[sp52]);
|
||||
break;
|
||||
case 0x30: /* switch 2 */
|
||||
case 0x30:
|
||||
cmd = func_800146C0(state);
|
||||
seqPlayer->channels[loBits]->seqScriptIO[cmd] = sp4B;
|
||||
break;
|
||||
case 0x40: /* switch 2 */
|
||||
case 0x40:
|
||||
cmd = func_800146C0(state);
|
||||
sp4B = seqPlayer->channels[loBits]->seqScriptIO[cmd];
|
||||
break;
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
#include "sys.h"
|
||||
#include "sf64audio_provisional.h"
|
||||
|
||||
s32 D_80145D40;
|
||||
s32 D_80145D40; // unused
|
||||
|
||||
// all of these are part of the DFT-related function
|
||||
f32 D_80145D48[256];
|
||||
f32 D_80146148[256];
|
||||
f32 D_80146548[515];
|
||||
|
||||
+24
-26
@@ -8,19 +8,19 @@ void AudioThread_SetFadeInTimer(s32 seqPlayId, s32 fadeTime);
|
||||
|
||||
OSMesgQueue sAudioTaskStartQueue;
|
||||
OSMesgQueue sThreadCmdProcQueue;
|
||||
OSMesgQueue sAudioUnkQueue;
|
||||
OSMesgQueue sAudioSpecQueue;
|
||||
OSMesgQueue sAudioResetQueue;
|
||||
AudioCmd gThreadCmdBuffer[256];
|
||||
OSMesg sAudioTaskStartMsg[1];
|
||||
OSMesg sThreadCmdProcMsg[4];
|
||||
OSMesg sAudioUnkMsg[1];
|
||||
OSMesg sAudioSpecMsg[1];
|
||||
OSMesg sAudioResetMsg[1];
|
||||
|
||||
u8 gThreadCmdWritePos = 0;
|
||||
u8 gThreadCmdReadPos = 0;
|
||||
OSMesgQueue* gAudioTaskStartQueue = &sAudioTaskStartQueue;
|
||||
OSMesgQueue* gThreadCmdProcQueue = &sThreadCmdProcQueue;
|
||||
OSMesgQueue* gAudioUnkQueue = &sAudioUnkQueue;
|
||||
OSMesgQueue* gAudioSpecQueue = &sAudioSpecQueue;
|
||||
OSMesgQueue* gAudioResetQueue = &sAudioResetQueue;
|
||||
|
||||
static const char devstr0[] = "DAC:Lost 1 Frame.\n";
|
||||
@@ -57,7 +57,7 @@ SPTask* AudioThread_CreateTask(void) {
|
||||
if ((gAudioTaskCountQ % gAudioBufferParams.count) != 0) {
|
||||
return gWaitingAudioTask;
|
||||
}
|
||||
osSendMesg(gAudioTaskStartQueue, (OSMesg) gAudioTaskCountQ, 0);
|
||||
osSendMesg(gAudioTaskStartQueue, (OSMesg) gAudioTaskCountQ, OS_MESG_NOBLOCK);
|
||||
gAudioTaskIndexQ ^= 1;
|
||||
gCurAiBuffIndex++;
|
||||
gCurAiBuffIndex %= 3;
|
||||
@@ -71,7 +71,7 @@ SPTask* AudioThread_CreateTask(void) {
|
||||
gCurAudioFrameDmaCount = 0;
|
||||
AudioLoad_DecreaseSampleDmaTtls();
|
||||
AudioLoad_ProcessLoads(gResetStatus);
|
||||
if (osRecvMesg(gAudioUnkQueue, (OSMesg) &sp38, 0) != -1) {
|
||||
if (MQ_GET_MESG(gAudioSpecQueue, &sp38)) {
|
||||
if (gResetStatus == 0) {
|
||||
gResetStatus = 5;
|
||||
}
|
||||
@@ -79,7 +79,7 @@ SPTask* AudioThread_CreateTask(void) {
|
||||
}
|
||||
if ((gResetStatus != 0) && (AudioHeap_ResetStep() == 0)) {
|
||||
if (gResetStatus == 0) {
|
||||
osSendMesg(gAudioResetQueue, (OSMesg) (s32) gAudioSpecId, 0);
|
||||
osSendMesg(gAudioResetQueue, (OSMesg) (s32) gAudioSpecId, OS_MESG_NOBLOCK);
|
||||
}
|
||||
gWaitingAudioTask = NULL;
|
||||
return NULL;
|
||||
@@ -102,7 +102,7 @@ SPTask* AudioThread_CreateTask(void) {
|
||||
if (gAiBuffLengths[sp4C] > gAudioBufferParams.maxAiBufferLength) {
|
||||
gAiBuffLengths[sp4C] = gAudioBufferParams.maxAiBufferLength;
|
||||
}
|
||||
while (osRecvMesg(gThreadCmdProcQueue, (OSMesg) &sp34, 0) != -1) {
|
||||
while (MQ_GET_MESG(gThreadCmdProcQueue, &sp34)) {
|
||||
AudioThread_ProcessCmds(sp34);
|
||||
}
|
||||
gCurAbiCmdBuffer = func_80009B64(gCurAbiCmdBuffer, &sp50, sp40, gAiBuffLengths[sp4C]);
|
||||
@@ -111,7 +111,7 @@ SPTask* AudioThread_CreateTask(void) {
|
||||
|
||||
sp4C = gAudioTaskIndexQ;
|
||||
|
||||
gAudioCurTask->msgQueue = NULL;
|
||||
gAudioCurTask->mesgQueue = NULL;
|
||||
gAudioCurTask->msg = NULL;
|
||||
|
||||
task = &gAudioCurTask->task.t;
|
||||
@@ -244,7 +244,7 @@ void AudioThread_InitQueues(void) {
|
||||
gThreadCmdReadPos = 0;
|
||||
osCreateMesgQueue(gAudioTaskStartQueue, sAudioTaskStartMsg, 1);
|
||||
osCreateMesgQueue(gThreadCmdProcQueue, sThreadCmdProcMsg, 4);
|
||||
osCreateMesgQueue(gAudioUnkQueue, sAudioUnkMsg, 1);
|
||||
osCreateMesgQueue(gAudioSpecQueue, sAudioSpecMsg, 1);
|
||||
osCreateMesgQueue(gAudioResetQueue, sAudioResetMsg, 1);
|
||||
}
|
||||
|
||||
@@ -282,7 +282,7 @@ void AudioThread_ScheduleProcessCmds(void) {
|
||||
D_800C7C70 = (u8) (gThreadCmdWritePos - gThreadCmdReadPos + 0x100);
|
||||
}
|
||||
msg = (((gThreadCmdReadPos & 0xFF) << 8) | (gThreadCmdWritePos & 0xFF));
|
||||
osSendMesg(gThreadCmdProcQueue, (OSMesg) msg, 0);
|
||||
osSendMesg(gThreadCmdProcQueue, (OSMesg) msg, OS_MESG_NOBLOCK);
|
||||
gThreadCmdReadPos = gThreadCmdWritePos;
|
||||
}
|
||||
|
||||
@@ -327,10 +327,10 @@ void AudioThread_ProcessCmds(u32 msg) {
|
||||
player->recalculateVolume = true;
|
||||
}
|
||||
break;
|
||||
case AUDIOCMD_OP_SEQPLAYER_SET_TEMPO: /* switch 1 */
|
||||
case AUDIOCMD_OP_SEQPLAYER_SET_TEMPO:
|
||||
player->tempo = cmd->asInt * 48;
|
||||
break;
|
||||
case AUDIOCMD_OP_SEQPLAYER_SET_TRANSPOSITION: /* switch 1 */
|
||||
case AUDIOCMD_OP_SEQPLAYER_SET_TRANSPOSITION:
|
||||
player->transposition = cmd->asSbyte;
|
||||
break;
|
||||
case 0x46: // AUDIOCMD_OP_SEQPLAYER_SET_IO?
|
||||
@@ -387,45 +387,43 @@ void AudioThread_ProcessCmds(u32 msg) {
|
||||
}
|
||||
|
||||
u32 AudioThread_GetAsyncLoadStatus(u32* outData) {
|
||||
u32 sp1C;
|
||||
u32 loadStatus;
|
||||
|
||||
if (osRecvMesg(&gExternalLoadQueue, (OSMesg*) &sp1C, 0) == -1) {
|
||||
if (!MQ_GET_MESG(&gExternalLoadQueue, &loadStatus)) {
|
||||
*outData = 0;
|
||||
return 0;
|
||||
}
|
||||
*outData = sp1C & 0xFFFFFF;
|
||||
return sp1C >> 0x18;
|
||||
*outData = loadStatus & 0xFFFFFF;
|
||||
return loadStatus >> 0x18;
|
||||
}
|
||||
|
||||
u8* AudioThread_GetFontsForSequence(s32 seqId, u32* outNumFonts) {
|
||||
return AudioLoad_GetFontsForSequence(seqId, outNumFonts);
|
||||
}
|
||||
|
||||
s32 func_8001ED34(void) {
|
||||
bool AudioThread_ResetComplete(void) {
|
||||
s32 pad;
|
||||
s32 sp18;
|
||||
|
||||
if (osRecvMesg(gAudioResetQueue, (OSMesg*) &sp18, 0) == -1) {
|
||||
return 0;
|
||||
if (!MQ_GET_MESG(gAudioResetQueue, &sp18)) {
|
||||
return false;
|
||||
}
|
||||
if (sp18 != gAudioSpecId) {
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
void AudioThread_ResetAudioHeap(s32 specId) {
|
||||
// clang-format off
|
||||
s32 m1 = -1;OSMesg sp28;do {} while (osRecvMesg(gAudioResetQueue, &sp28, 0) != m1);
|
||||
// clang-format on
|
||||
MQ_CLEAR_QUEUE(gAudioResetQueue);
|
||||
|
||||
AudioThread_ResetCmdQueue();
|
||||
osSendMesg(gAudioUnkQueue, (OSMesg) specId, 0);
|
||||
osSendMesg(gAudioSpecQueue, (OSMesg) specId, OS_MESG_NOBLOCK);
|
||||
}
|
||||
|
||||
void AudioThread_PreNMIReset(void) {
|
||||
gResetTimer = 1;
|
||||
AudioThread_ResetAudioHeap(0);
|
||||
AudioThread_ResetAudioHeap(AUDIOSPEC_0);
|
||||
gResetStatus = 0;
|
||||
}
|
||||
|
||||
|
||||
+138
-145
@@ -62,7 +62,7 @@ s32 gAllRangeSupplyTimer;
|
||||
s32 sStarWolfKillTimer;
|
||||
s16 gStarWolfMsgTimer;
|
||||
s32 gAllRangeWingRepairTimer;
|
||||
s32 gAllRangeWingRepairSent;
|
||||
s32 gAllRangeSuppliesSent;
|
||||
f32 gSzMissileR;
|
||||
f32 gSzMissileG;
|
||||
f32 gSzMissileB;
|
||||
@@ -250,7 +250,7 @@ void AllRange_GreatFoxRepair(Player* player) {
|
||||
player->unk_014 = 0;
|
||||
player->unk_018 = 0;
|
||||
player->unk_01C = 0;
|
||||
gActors[0].state = 2;
|
||||
gActors[0].state = STATE360_2;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -402,10 +402,10 @@ void ActorAllRange_SpawnTeam(void) {
|
||||
} else {
|
||||
actor->aiIndex = D_360_800C9ADC[i];
|
||||
}
|
||||
actor->state = 2;
|
||||
actor->state = STATE360_2;
|
||||
actor->unk_0F4.y = 180.0f;
|
||||
if (actor->aiIndex <= -1) {
|
||||
actor->state = 3;
|
||||
actor->state = STATE360_3;
|
||||
}
|
||||
actor->health = 50;
|
||||
if ((gLevelType == LEVELTYPE_PLANET) || (gCurrentLevel == LEVEL_BOLSE)) {
|
||||
@@ -442,7 +442,7 @@ void ActorAllRange_SpawnStarWolf(void) {
|
||||
actor->health = 100;
|
||||
actor->unk_0C9 = 1;
|
||||
actor->unk_0F4.y = 225.0f;
|
||||
actor->state = 0;
|
||||
actor->state = STATE360_0;
|
||||
actor->timer_0BC = 250;
|
||||
actor->unk_0F4.x = -20.0f;
|
||||
actor->iwork[11] = 1;
|
||||
@@ -474,8 +474,8 @@ void ActorAllRange_StarWolfDefeatMesg(u16* msg, RadioCharacterId character) {
|
||||
ActorAllRange_PlayMessage(msg, character);
|
||||
}
|
||||
|
||||
void func_360_8002F69C(Actor* actor) {
|
||||
Actor* otherActor;
|
||||
void func_360_8002F69C(Actor* this) {
|
||||
Actor* actor;
|
||||
s32 i;
|
||||
|
||||
if (sStarWolfKillTimer != 0) {
|
||||
@@ -492,7 +492,7 @@ void func_360_8002F69C(Actor* actor) {
|
||||
}
|
||||
if (gAllRangeEventTimer == D_360_800C9B4C) {
|
||||
ActorAllRange_SpawnStarWolf();
|
||||
actor->state = 3;
|
||||
this->state = STATE360_3;
|
||||
gPlayer[0].state_1C8 = PLAYERSTATE_1C8_STANDBY;
|
||||
if ((gCurrentLevel == LEVEL_VENOM_2) || (gCurrentLevel == LEVEL_BOLSE)) {
|
||||
gPlayer[0].camRoll = 20.0f;
|
||||
@@ -510,56 +510,53 @@ void func_360_8002F69C(Actor* actor) {
|
||||
gPlayer[0].cam.at.y = gActors[4].obj.pos.y;
|
||||
gPlayer[0].cam.at.z = gActors[4].obj.pos.z;
|
||||
}
|
||||
if (gAllRangeEventTimer > D_360_800C9B4C) {
|
||||
if (gStarWolfMsgTimer == 0) {
|
||||
gAllRangeFrameCount++;
|
||||
for (i = 1, otherActor = &gActors[1]; i < 8; i++, otherActor++) {
|
||||
if ((otherActor->obj.status == OBJ_ACTIVE) && (otherActor->state == 2) && (otherActor->health < 70) &&
|
||||
(otherActor->timer_0C6 != 0) && (otherActor->unk_0D4 == 1)) {
|
||||
if ((gActors[otherActor->aiIndex].state == STATE360_3) &&
|
||||
(gActors[otherActor->aiIndex].aiType <= AI360_ANDREW)) {
|
||||
gActors[otherActor->aiIndex].iwork[2] = AI360_FOX;
|
||||
gActors[otherActor->aiIndex].state = 2;
|
||||
gActors[otherActor->aiIndex].aiIndex = otherActor->aiType;
|
||||
if (gTeamHelpActor == &gActors[otherActor->aiIndex]) {
|
||||
gTeamHelpActor = NULL;
|
||||
gTeamHelpTimer = 0;
|
||||
}
|
||||
if (gActors[otherActor->aiIndex].iwork[3] == 0) {
|
||||
switch (gActors[otherActor->aiIndex].aiType) {
|
||||
case AI360_FALCO:
|
||||
ActorAllRange_PlayMessage(gMsg_ID_9160, RCID_FALCO);
|
||||
break;
|
||||
case AI360_SLIPPY:
|
||||
ActorAllRange_PlayMessage(gMsg_ID_9170, RCID_SLIPPY);
|
||||
break;
|
||||
case AI360_PEPPY:
|
||||
ActorAllRange_PlayMessage(gMsg_ID_9180, RCID_PEPPY);
|
||||
break;
|
||||
}
|
||||
gActors[otherActor->aiIndex].iwork[3] = 200;
|
||||
}
|
||||
if ((gAllRangeEventTimer > D_360_800C9B4C) && (gStarWolfMsgTimer == 0)) {
|
||||
gAllRangeFrameCount++;
|
||||
for (i = 1, actor = &gActors[1]; i < 8; i++, actor++) {
|
||||
if ((actor->obj.status == OBJ_ACTIVE) && (actor->state == STATE360_2) && (actor->health < 70) &&
|
||||
(actor->timer_0C6 != 0) && (actor->unk_0D4 == 1)) {
|
||||
if ((gActors[actor->aiIndex].state == STATE360_3) && (gActors[actor->aiIndex].aiType <= AI360_ANDREW)) {
|
||||
gActors[actor->aiIndex].iwork[2] = AI360_FOX;
|
||||
gActors[actor->aiIndex].state = STATE360_2;
|
||||
gActors[actor->aiIndex].aiIndex = actor->aiType;
|
||||
if (gTeamHelpActor == &gActors[actor->aiIndex]) {
|
||||
gTeamHelpActor = NULL;
|
||||
gTeamHelpTimer = 0;
|
||||
}
|
||||
if (otherActor->aiType == AI360_WOLF) {
|
||||
if (gCurrentLevel != LEVEL_VENOM_2) {
|
||||
otherActor->state = STATE360_3;
|
||||
otherActor->unk_04E = 300;
|
||||
if (gActors[actor->aiIndex].iwork[3] == 0) {
|
||||
switch (gActors[actor->aiIndex].aiType) {
|
||||
case AI360_FALCO:
|
||||
ActorAllRange_PlayMessage(gMsg_ID_9160, RCID_FALCO);
|
||||
break;
|
||||
case AI360_SLIPPY:
|
||||
ActorAllRange_PlayMessage(gMsg_ID_9170, RCID_SLIPPY);
|
||||
break;
|
||||
case AI360_PEPPY:
|
||||
ActorAllRange_PlayMessage(gMsg_ID_9180, RCID_PEPPY);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
otherActor->state = STATE360_3;
|
||||
otherActor->aiIndex = -1;
|
||||
gActors[actor->aiIndex].iwork[3] = 200;
|
||||
}
|
||||
}
|
||||
if (actor->aiType == AI360_WOLF) {
|
||||
if (gCurrentLevel != LEVEL_VENOM_2) {
|
||||
actor->state = STATE360_3;
|
||||
actor->unk_04E = 300;
|
||||
}
|
||||
} else {
|
||||
actor->state = STATE360_3;
|
||||
actor->aiIndex = -1;
|
||||
}
|
||||
}
|
||||
if (gTeamShields[TEAM_ID_FALCO] <= 0) {
|
||||
gActors[AI360_LEON].aiIndex = AI360_FOX;
|
||||
}
|
||||
if (gTeamShields[TEAM_ID_SLIPPY] <= 0) {
|
||||
gActors[AI360_ANDREW].aiIndex = AI360_FOX;
|
||||
}
|
||||
if (gTeamShields[TEAM_ID_PEPPY] <= 0) {
|
||||
gActors[AI360_PIGMA].aiIndex = AI360_FOX;
|
||||
}
|
||||
}
|
||||
if (gTeamShields[TEAM_ID_FALCO] <= 0) {
|
||||
gActors[AI360_LEON].aiIndex = AI360_FOX;
|
||||
}
|
||||
if (gTeamShields[TEAM_ID_SLIPPY] <= 0) {
|
||||
gActors[AI360_ANDREW].aiIndex = AI360_FOX;
|
||||
}
|
||||
if (gTeamShields[TEAM_ID_PEPPY] <= 0) {
|
||||
gActors[AI360_PIGMA].aiIndex = AI360_FOX;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -582,7 +579,7 @@ void func_360_8002FB4C(Actor* actor) {
|
||||
}
|
||||
if (!var_a0) {
|
||||
actor->aiIndex = i;
|
||||
actor->state = 2;
|
||||
actor->state = STATE360_2;
|
||||
actor->iwork[2] = AI360_FOX;
|
||||
break;
|
||||
}
|
||||
@@ -590,31 +587,29 @@ void func_360_8002FB4C(Actor* actor) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_360_8002FC00(Actor* actor) {
|
||||
Actor* otherActor;
|
||||
void func_360_8002FC00(Actor* this) {
|
||||
Actor* actor;
|
||||
s32 i;
|
||||
|
||||
for (i = 0, otherActor = &gActors[10]; i < 50; i++, otherActor++) {
|
||||
if ((otherActor->obj.status == OBJ_DYING) && (otherActor->aiIndex >= AI360_FALCO) &&
|
||||
(otherActor->aiIndex <= AI360_PEPPY)) {
|
||||
for (i = 0, actor = &gActors[10]; i < 50; i++, actor++) {
|
||||
if ((actor->obj.status == OBJ_DYING) && (actor->aiIndex >= AI360_FALCO) && (actor->aiIndex <= AI360_PEPPY)) {
|
||||
Actor* actor2;
|
||||
s32 j;
|
||||
|
||||
for (j = 0, actor2 = &gActors[10]; j < 51; j++, actor2++) {
|
||||
if ((actor2->obj.status == OBJ_ACTIVE) && (actor2->state == 2) &&
|
||||
(actor2->aiIndex == otherActor->aiIndex)) {
|
||||
if ((actor2->obj.status == OBJ_ACTIVE) && (actor2->state == STATE360_2) &&
|
||||
(actor2->aiIndex == actor->aiIndex)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (gTeamShields[otherActor->aiIndex] > 0) {
|
||||
func_360_8002FB4C(&gActors[otherActor->aiIndex]);
|
||||
if ((otherActor->iwork[5] != 0) && (otherActor->unk_0D4 == 1) &&
|
||||
(gActors[otherActor->aiIndex].iwork[3] == 0)) {
|
||||
if (gTeamHelpActor == &gActors[otherActor->aiIndex]) {
|
||||
if (gTeamShields[actor->aiIndex] > 0) {
|
||||
func_360_8002FB4C(&gActors[actor->aiIndex]);
|
||||
if ((actor->iwork[5] != 0) && (actor->unk_0D4 == 1) && (gActors[actor->aiIndex].iwork[3] == 0)) {
|
||||
if (gTeamHelpActor == &gActors[actor->aiIndex]) {
|
||||
gTeamHelpActor = NULL;
|
||||
gTeamHelpTimer = 0;
|
||||
}
|
||||
switch (gActors[otherActor->aiIndex].aiType) {
|
||||
switch (gActors[actor->aiIndex].aiType) {
|
||||
case AI360_FALCO:
|
||||
ActorAllRange_PlayMessage(gMsg_ID_9160, RCID_FALCO);
|
||||
break;
|
||||
@@ -625,15 +620,15 @@ void func_360_8002FC00(Actor* actor) {
|
||||
ActorAllRange_PlayMessage(gMsg_ID_9180, RCID_PEPPY);
|
||||
break;
|
||||
}
|
||||
gActors[otherActor->aiIndex].iwork[3] = 200;
|
||||
gActors[otherActor->aiIndex].timer_0C4 = 600;
|
||||
gActors[actor->aiIndex].iwork[3] = 200;
|
||||
gActors[actor->aiIndex].timer_0C4 = 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool func_360_8002FE74(void) {
|
||||
bool AllRange_SupplyEvent(void) {
|
||||
switch (gCurrentLevel) {
|
||||
case LEVEL_FORTUNA:
|
||||
return gAllRangeEventTimer == D_360_800C9B4C + 2400;
|
||||
@@ -650,7 +645,7 @@ void ActorAllRange_SpawnSupplies(Actor* this) {
|
||||
s32 i;
|
||||
|
||||
if ((gCallTimer != 0) && (gControllerPress[gMainController].button & R_CBUTTONS)) {
|
||||
func_8001AF40(0);
|
||||
Audio_SetUnkVoiceParam(0);
|
||||
gCallVoiceParam = 0;
|
||||
gCallTimer = 0;
|
||||
Radio_PlayMessage(gMsg_ID_20230, RCID_ROB64);
|
||||
@@ -682,13 +677,13 @@ void ActorAllRange_SpawnSupplies(Actor* this) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && !gAllRangeWingRepairSent) {
|
||||
if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && !gAllRangeSuppliesSent) {
|
||||
if (gAllRangeWingRepairTimer != 0) {
|
||||
gAllRangeWingRepairTimer--;
|
||||
}
|
||||
if ((gPlayer[0].shields < 64) || func_360_8002FE74() || (gAllRangeWingRepairTimer == 1)) {
|
||||
if ((gPlayer[0].shields < 64) || AllRange_SupplyEvent() || (gAllRangeWingRepairTimer == 1)) {
|
||||
gCallTimer = 60;
|
||||
gAllRangeWingRepairSent = true;
|
||||
gAllRangeSuppliesSent = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -719,27 +714,27 @@ void ActorAllRange_UpdateEvents(Actor* this) {
|
||||
ActorAllRange_SpawnSupplies(this);
|
||||
}
|
||||
|
||||
s32 func_360_800301F4(Actor* actor) {
|
||||
s32 func_360_800301F4(Actor* this) {
|
||||
Boss* boss;
|
||||
f32 temp_ft4;
|
||||
f32 temp_ft5;
|
||||
s32 i;
|
||||
f32 sp1C;
|
||||
f32 sp18;
|
||||
f32 sinY;
|
||||
f32 cosY;
|
||||
|
||||
if (gLevelMode == LEVELMODE_ON_RAILS) {
|
||||
return 0;
|
||||
}
|
||||
sp1C = SIN_DEG(actor->obj.rot.y);
|
||||
sp18 = COS_DEG(actor->obj.rot.y);
|
||||
temp_ft4 = actor->fwork[9] * 10.0f + (sp1C * 650.0f);
|
||||
temp_ft5 = actor->fwork[9] * 10.0f + (sp18 * 650.0f);
|
||||
sinY = SIN_DEG(this->obj.rot.y);
|
||||
cosY = COS_DEG(this->obj.rot.y);
|
||||
temp_ft4 = this->fwork[9] * 10.0f + (sinY * 650.0f);
|
||||
temp_ft5 = this->fwork[9] * 10.0f + (cosY * 650.0f);
|
||||
for (i = 0; i < 200; i++) {
|
||||
if ((gScenery360[i].obj.status == OBJ_ACTIVE) &&
|
||||
(fabsf(gScenery360[i].obj.pos.x - (actor->obj.pos.x + temp_ft4)) < 1000.0f) &&
|
||||
(fabsf(gScenery360[i].obj.pos.z - (actor->obj.pos.z + temp_ft5)) < 1000.0f)) {
|
||||
if (fabsf(gScenery360[i].obj.pos.y - actor->obj.pos.y) < 1000.0f) {
|
||||
if (gScenery360[i].obj.pos.y < actor->obj.pos.y) {
|
||||
(fabsf(gScenery360[i].obj.pos.x - (this->obj.pos.x + temp_ft4)) < 1000.0f) &&
|
||||
(fabsf(gScenery360[i].obj.pos.z - (this->obj.pos.z + temp_ft5)) < 1000.0f)) {
|
||||
if (fabsf(gScenery360[i].obj.pos.y - this->obj.pos.y) < 1000.0f) {
|
||||
if (gScenery360[i].obj.pos.y < this->obj.pos.y) {
|
||||
return 1;
|
||||
} else {
|
||||
return -1;
|
||||
@@ -748,10 +743,10 @@ s32 func_360_800301F4(Actor* actor) {
|
||||
}
|
||||
}
|
||||
boss = &gBosses[0];
|
||||
if ((gCurrentLevel == LEVEL_SECTOR_Z) && (fabsf(boss->obj.pos.x - (actor->obj.pos.x + temp_ft4)) < 2000.0f) &&
|
||||
(fabsf(boss->obj.pos.z - (actor->obj.pos.z + temp_ft5)) < 2000.0f)) {
|
||||
if (fabsf(boss->obj.pos.y - actor->obj.pos.y) < 1500.0f) {
|
||||
if (boss->obj.pos.y < actor->obj.pos.y) {
|
||||
if ((gCurrentLevel == LEVEL_SECTOR_Z) && (fabsf(boss->obj.pos.x - (this->obj.pos.x + temp_ft4)) < 2000.0f) &&
|
||||
(fabsf(boss->obj.pos.z - (this->obj.pos.z + temp_ft5)) < 2000.0f)) {
|
||||
if (fabsf(boss->obj.pos.y - this->obj.pos.y) < 1500.0f) {
|
||||
if (boss->obj.pos.y < this->obj.pos.y) {
|
||||
return 1;
|
||||
} else {
|
||||
return -1;
|
||||
@@ -761,7 +756,7 @@ s32 func_360_800301F4(Actor* actor) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 func_360_8003049C(Actor* actor) {
|
||||
s32 func_360_8003049C(Actor* this) {
|
||||
Scenery360* scenery360;
|
||||
s32 i;
|
||||
f32 sp44;
|
||||
@@ -777,25 +772,24 @@ s32 func_360_8003049C(Actor* actor) {
|
||||
return 0;
|
||||
}
|
||||
if ((gLevelType == LEVELTYPE_SPACE) && (gCurrentLevel != LEVEL_BOLSE)) {
|
||||
return func_360_800301F4(actor);
|
||||
return func_360_800301F4(this);
|
||||
}
|
||||
sp40 = SIN_DEG(actor->obj.rot.y);
|
||||
sp3C = COS_DEG(actor->obj.rot.y);
|
||||
temp_fa0 = actor->fwork[9] * 10.0f + (sp40 * 650.0f);
|
||||
temp_ft4 = actor->fwork[9] * 10.0f + (sp3C * 650.0f);
|
||||
sp40 = SIN_DEG(this->obj.rot.y);
|
||||
sp3C = COS_DEG(this->obj.rot.y);
|
||||
temp_fa0 = this->fwork[9] * 10.0f + (sp40 * 650.0f);
|
||||
temp_ft4 = this->fwork[9] * 10.0f + (sp3C * 650.0f);
|
||||
if (gLevelMode == LEVELMODE_ALL_RANGE) {
|
||||
for (i = 0, scenery360 = gScenery360; i < 200; i++, scenery360++) {
|
||||
if ((scenery360->obj.status == OBJ_ACTIVE) &&
|
||||
(fabsf(scenery360->obj.pos.x - (actor->obj.pos.x + temp_fa0)) < 1200.0f) &&
|
||||
(fabsf(scenery360->obj.pos.z - (actor->obj.pos.z + temp_ft4)) < 1200.0f) &&
|
||||
(actor->obj.pos.y < 650.0f)) {
|
||||
(fabsf(scenery360->obj.pos.x - (this->obj.pos.x + temp_fa0)) < 1200.0f) &&
|
||||
(fabsf(scenery360->obj.pos.z - (this->obj.pos.z + temp_ft4)) < 1200.0f) && (this->obj.pos.y < 650.0f)) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
sp44 = 1200.0f;
|
||||
var_ft5 = 650.0f;
|
||||
if (actor->aiType < AI360_KATT) {
|
||||
if (this->aiType < AI360_KATT) {
|
||||
var_ft5 = 720.0f;
|
||||
}
|
||||
|
||||
@@ -808,9 +802,9 @@ s32 func_360_8003049C(Actor* actor) {
|
||||
sp44 = 1500.0f;
|
||||
var_ft5 = 700.0f;
|
||||
}
|
||||
if ((fabsf(boss->obj.pos.x - (actor->obj.pos.x + temp_fa0)) < sp44) &&
|
||||
(fabsf(boss->obj.pos.z - (actor->obj.pos.z + temp_ft4)) < sp44) &&
|
||||
(fabsf(boss->obj.pos.y - actor->obj.pos.y) < var_ft5)) {
|
||||
if ((fabsf(boss->obj.pos.x - (this->obj.pos.x + temp_fa0)) < sp44) &&
|
||||
(fabsf(boss->obj.pos.z - (this->obj.pos.z + temp_ft4)) < sp44) &&
|
||||
(fabsf(boss->obj.pos.y - this->obj.pos.y) < var_ft5)) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@@ -857,7 +851,7 @@ void ActorAllRange_ApplyDamage(Actor* this) {
|
||||
((this->aiType != AI360_MISSILE) || (this->unk_0D0 != 2))) {
|
||||
this->health -= this->damage;
|
||||
}
|
||||
} else if ((this->aiType <= AI360_PEPPY) && (this->state != 6)) {
|
||||
} else if ((this->aiType <= AI360_PEPPY) && (this->state != STATE360_6)) {
|
||||
if (this->aiType == AI360_FALCO) {
|
||||
gTeamDamage[this->aiType] = this->damage;
|
||||
} else {
|
||||
@@ -1226,42 +1220,42 @@ void ActorAllRange_Update(Actor* this) {
|
||||
ActorAllRange_UpdateEvents(this);
|
||||
return;
|
||||
}
|
||||
if ((this->iwork[17] != 0) && (this->iwork[16] == 0) && (this->aiType >= AI360_WOLF)) {
|
||||
if ((this->iwork[17] != 0) && (this->iwork[16] == STATE360_0) && (this->aiType >= AI360_WOLF)) {
|
||||
switch (RAND_INT(3.9f)) {
|
||||
case 0:
|
||||
case 1:
|
||||
if (gCurrentLevel == LEVEL_VENOM_2) {
|
||||
this->iwork[16] = 10;
|
||||
this->iwork[16] = STATE360_10;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
this->iwork[16] = 8;
|
||||
this->iwork[16] = STATE360_8;
|
||||
break;
|
||||
case 3:
|
||||
this->iwork[16] = 7;
|
||||
this->iwork[16] = STATE360_7;
|
||||
break;
|
||||
}
|
||||
this->iwork[17] = 0;
|
||||
if (this->iwork[18] != 0) {
|
||||
this->iwork[18]--;
|
||||
this->iwork[16] = 0;
|
||||
this->iwork[16] = STATE360_0;
|
||||
}
|
||||
}
|
||||
if ((this->lockOnTimers[0] != 0) && (gCurrentLevel != LEVEL_VENOM_2) && (this->aiType < AI360_10) &&
|
||||
(this->lockOnTimers[0] < 5) && ((gGameFrameCount % 32) == 0)) {
|
||||
this->iwork[16] = 10;
|
||||
if ((this->lockOnTimers[TEAM_ID_FOX] != 0) && (gCurrentLevel != LEVEL_VENOM_2) && (this->aiType < AI360_10) &&
|
||||
(this->lockOnTimers[TEAM_ID_FOX] < 5) && ((gGameFrameCount % 32) == 0)) {
|
||||
this->iwork[16] = STATE360_10;
|
||||
}
|
||||
if ((this->iwork[16] != 0) && (this->state < 7)) {
|
||||
if ((this->iwork[16] != STATE360_0) && (this->state < STATE360_7)) {
|
||||
this->state = this->iwork[16];
|
||||
switch (this->state) {
|
||||
case 7:
|
||||
case 8:
|
||||
case STATE360_7:
|
||||
case STATE360_8:
|
||||
if (this->unk_0F4.x > 180.0f) {
|
||||
this->unk_0F4.x -= 360.0f;
|
||||
}
|
||||
this->unk_046 = 0;
|
||||
break;
|
||||
case 9:
|
||||
case STATE360_9:
|
||||
this->timer_0BC = RAND_INT(20.0f) + 30;
|
||||
if (Rand_ZeroOne() < 0.5f) {
|
||||
this->fwork[19] = this->obj.rot.y + 50.0f;
|
||||
@@ -1275,7 +1269,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
this->fwork[19] += 360.0f;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
case STATE360_10:
|
||||
this->timer_0BC = 35;
|
||||
if (Rand_ZeroOne() < 0.5f) {
|
||||
this->fwork[7] = 360.0f;
|
||||
@@ -1290,7 +1284,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
this->iwork[16] = 0;
|
||||
this->iwork[16] = STATE360_0;
|
||||
spCC = spC8 = spC4 = 0.0f;
|
||||
if (this->iwork[7] != 0) {
|
||||
this->iwork[7]--;
|
||||
@@ -1352,8 +1346,8 @@ void ActorAllRange_Update(Actor* this) {
|
||||
sp104 = 0;
|
||||
this->iwork[5] = 0;
|
||||
if ((this->aiType > AI360_FOX) && (this->aiType <= AI360_PEPPY) && (gTeamShields[this->aiType] <= 0) &&
|
||||
(this->state != 6)) {
|
||||
this->state = 6;
|
||||
(this->state != STATE360_6)) {
|
||||
this->state = STATE360_6;
|
||||
if (this->timer_0C2 < 100) {
|
||||
gTeamShields[this->aiType] = 1;
|
||||
switch (this->aiType) {
|
||||
@@ -1412,20 +1406,20 @@ void ActorAllRange_Update(Actor* this) {
|
||||
case STATE360_0:
|
||||
if (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_START_360) {
|
||||
this->fwork[0] = this->fwork[1] = 40.0f;
|
||||
if (gActors[0].state == 5) {
|
||||
if (gActors[0].state == STATE360_5) {
|
||||
Math_SmoothStepToF(&this->unk_0F4.x, 30.0f, 0.1f, 0.5f, 0.0f);
|
||||
this->fwork[1] = 200.0f;
|
||||
}
|
||||
if (this->timer_0BC == 0) {
|
||||
if (this->aiType == AI360_WOLF) {
|
||||
this->state = 3;
|
||||
this->state = STATE360_3;
|
||||
if (gCurrentLevel == LEVEL_VENOM_2) {
|
||||
this->unk_04E = 200;
|
||||
} else {
|
||||
this->unk_04E = 200;
|
||||
}
|
||||
} else {
|
||||
this->state = 2;
|
||||
this->state = STATE360_2;
|
||||
if (this->aiType == AI360_KATT) {
|
||||
this->fwork[7] = 360.0f;
|
||||
this->fwork[8] = 0.0f;
|
||||
@@ -1441,9 +1435,9 @@ void ActorAllRange_Update(Actor* this) {
|
||||
Math_SmoothStepToF(&this->unk_0F4.x, 15.0f, 0.1f, 1.0f, 0.0f);
|
||||
}
|
||||
if (this->timer_0BC == 0) {
|
||||
this->state = 3;
|
||||
this->state = STATE360_3;
|
||||
if ((gCurrentLevel == LEVEL_BOLSE) && (this->aiIndex > -1)) {
|
||||
this->state = 2;
|
||||
this->state = STATE360_2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1464,7 +1458,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
spF0 = 0.2f;
|
||||
}
|
||||
if (this->aiIndex <= -1) {
|
||||
this->state = 3;
|
||||
this->state = STATE360_3;
|
||||
} else {
|
||||
if (gActors[this->aiIndex].aiType == AI360_MISSILE) {
|
||||
spF0 = 0.8f;
|
||||
@@ -1475,7 +1469,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
if (gCurrentLevel != LEVEL_VENOM_2) {
|
||||
if ((gPlayer[0].somersault && (this->iwork[4] > 10)) ||
|
||||
((gCurrentLevel == LEVEL_BOLSE) && (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_STANDBY))) {
|
||||
this->state = 3;
|
||||
this->state = STATE360_3;
|
||||
this->unk_04E = 300;
|
||||
this->timer_0BC = 160;
|
||||
if (this->aiType == AI360_WOLF) {
|
||||
@@ -1488,7 +1482,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
}
|
||||
}
|
||||
if ((this->aiType >= AI360_WOLF) && (this->aiType != AI360_KATT) &&
|
||||
((gCurrentLevel != LEVEL_VENOM_2) || (this->aiType != AI360_WOLF))) {
|
||||
!((gCurrentLevel == LEVEL_VENOM_2) && (this->aiType == AI360_WOLF))) {
|
||||
spCC = SIN_DEG((this->index * 45) + gGameFrameCount) * 100.0f;
|
||||
spC8 = COS_DEG((this->index * 45) + (gGameFrameCount * 2)) * 100.0f;
|
||||
spC4 = SIN_DEG((this->index * 45) + gGameFrameCount) * 100.0f;
|
||||
@@ -1499,7 +1493,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
this->fwork[6] = gPlayer[0].unk_138 + spC4;
|
||||
this->fwork[1] = gPlayer[0].unk_0D0 + 10.0f;
|
||||
}
|
||||
if ((gActors[0].state == 6) && (this->aiType <= AI360_PEPPY)) {
|
||||
if ((gActors[0].state == STATE360_6) && (this->aiType <= AI360_PEPPY)) {
|
||||
this->fwork[3] = 3.0f;
|
||||
this->fwork[1] = gPlayer[0].unk_0D0 - 5.0f;
|
||||
this->iwork[11] = 2;
|
||||
@@ -1545,7 +1539,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
this->fwork[6] = gBosses[0].obj.pos.z;
|
||||
this->fwork[1] = 40.0f;
|
||||
}
|
||||
if ((this->aiIndex > -1) && (this->aiIndex != AI360_GREAT_FOX) && (gActors[0].state != 6)) {
|
||||
if ((this->aiIndex > -1) && (this->aiIndex != AI360_GREAT_FOX) && (gActors[0].state != STATE360_6)) {
|
||||
if (spE8 < spF8) {
|
||||
if (spEC < spF8) {
|
||||
if (this->aiIndex != AI360_FOX) {
|
||||
@@ -1554,7 +1548,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
this->fwork[1] = gPlayer[0].unk_0D0 - 5.0f;
|
||||
if ((gCurrentLevel == LEVEL_VENOM_2) &&
|
||||
(gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN) && (gPlayer[0].unk_4D8 > 100.0f)) {
|
||||
this->iwork[16] = 8;
|
||||
this->iwork[16] = STATE360_8;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1752,10 +1746,10 @@ void ActorAllRange_Update(Actor* this) {
|
||||
} else {
|
||||
this->iwork[4] = 0;
|
||||
}
|
||||
if ((this->aiIndex >= AI360_FALCO) &&
|
||||
((gActors[this->aiIndex].obj.status == OBJ_DYING) || (gActors[this->aiIndex].state == 6) ||
|
||||
(gActors[this->aiIndex].obj.status == OBJ_FREE))) {
|
||||
this->state = 3;
|
||||
if ((this->aiIndex >= AI360_FALCO) && ((gActors[this->aiIndex].obj.status == OBJ_DYING) ||
|
||||
(gActors[this->aiIndex].state == STATE360_6) ||
|
||||
(gActors[this->aiIndex].obj.status == OBJ_FREE))) {
|
||||
this->state = STATE360_3;
|
||||
if (gCurrentLevel == LEVEL_BOLSE) {
|
||||
func_360_8002FB4C(this);
|
||||
}
|
||||
@@ -1783,7 +1777,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
this->fwork[3] = 1.0f;
|
||||
this->fwork[1] = 38.0f;
|
||||
}
|
||||
if ((gCurrentLevel == LEVEL_SECTOR_Z) && (gActors[0].state == 10)) {
|
||||
if ((gCurrentLevel == LEVEL_SECTOR_Z) && (gActors[0].state == STATE360_10)) {
|
||||
this->fwork[10] = 30.0f;
|
||||
}
|
||||
if ((gLevelType == LEVELTYPE_SPACE) && (gCurrentLevel != LEVEL_BOLSE)) {
|
||||
@@ -1823,7 +1817,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
}
|
||||
if ((this->aiIndex >= AI360_FALCO) && (gActors[this->aiIndex].obj.id == OBJ_ACTOR_ALLRANGE) &&
|
||||
(gActors[this->aiIndex].timer_0C2 == 0) && (gActors[this->aiIndex].obj.status == OBJ_ACTIVE)) {
|
||||
this->state = 2;
|
||||
this->state = STATE360_2;
|
||||
this->iwork[2] = AI360_FOX;
|
||||
}
|
||||
if (this->aiIndex == AI360_FOX) {
|
||||
@@ -1831,7 +1825,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
this->unk_04E--;
|
||||
}
|
||||
if (this->unk_04E == 0) {
|
||||
this->state = 2;
|
||||
this->state = STATE360_2;
|
||||
this->iwork[2] = AI360_FOX;
|
||||
}
|
||||
}
|
||||
@@ -1841,7 +1835,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
Math_SmoothStepToF(&this->unk_0F4.x, 360.0f, 0.1f, 5.0f, 0.0001f);
|
||||
Math_SmoothStepToAngle(&this->obj.rot.z, 0.0f, 0.1f, 3.0f, 0.01f);
|
||||
if (this->unk_0F4.x > 350.0f) {
|
||||
this->state = 3;
|
||||
this->state = STATE360_3;
|
||||
}
|
||||
break;
|
||||
case STATE360_8:
|
||||
@@ -1871,7 +1865,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
break;
|
||||
case 1:
|
||||
if (this->timer_0BC == 0) {
|
||||
this->state = 3;
|
||||
this->state = STATE360_3;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1885,13 +1879,13 @@ void ActorAllRange_Update(Actor* this) {
|
||||
}
|
||||
Math_SmoothStepToAngle(&this->obj.rot.z, spD0, 0.1f, 15.0f, 0.01f);
|
||||
if (this->timer_0BC == 0) {
|
||||
this->state = 3;
|
||||
this->state = STATE360_3;
|
||||
}
|
||||
break;
|
||||
case STATE360_10:
|
||||
sp104 = 1;
|
||||
if (this->timer_0BC == 0) {
|
||||
this->state = 3;
|
||||
this->state = STATE360_3;
|
||||
}
|
||||
if (this->timer_0BC > 20) {
|
||||
Math_SmoothStepToF(&this->fwork[23], 180.0f, 1.0f, 60.0f, 0.0f);
|
||||
@@ -1899,14 +1893,14 @@ void ActorAllRange_Update(Actor* this) {
|
||||
break;
|
||||
}
|
||||
if (sp104 != 0) {
|
||||
s32 var_v0 = 3;
|
||||
s32 var_v0 = 4 - 1;
|
||||
|
||||
spE4 = this->fwork[4] - this->obj.pos.x;
|
||||
spE0 = this->fwork[5] - this->obj.pos.y;
|
||||
spDC = this->fwork[6] - this->obj.pos.z;
|
||||
|
||||
if (gCurrentLevel == LEVEL_VENOM_2) {
|
||||
var_v0 = 1;
|
||||
var_v0 = 2 - 1;
|
||||
}
|
||||
if (!((this->index + gGameFrameCount) & var_v0)) {
|
||||
this->fwork[19] = Math_RadToDeg(Math_Atan2F(spE4, spDC));
|
||||
@@ -1956,7 +1950,7 @@ void ActorAllRange_Update(Actor* this) {
|
||||
}
|
||||
if ((this->fwork[7] > 0.01f) && (this->fwork[7] < 359.9f)) {
|
||||
if ((((gGameFrameCount + 15) % 32) == 0) && (gCurrentLevel != LEVEL_VENOM_2)) {
|
||||
this->lockOnTimers[0] = 0;
|
||||
this->lockOnTimers[TEAM_ID_FOX] = 0;
|
||||
}
|
||||
} else {
|
||||
Math_SmoothStepToAngle(&this->obj.rot.z, spD0, 0.1f, 3.0f, 0.01f);
|
||||
@@ -1977,7 +1971,6 @@ void ActorAllRange_Update(Actor* this) {
|
||||
Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, MTXF_APPLY);
|
||||
spA8.x = 0.0f;
|
||||
spA8.y = 70.0f;
|
||||
|
||||
spA8.z = -70.0f;
|
||||
Matrix_MultVec3fNoTranslate(gCalcMatrix, &spA8, &sp9C);
|
||||
func_effect_80078E50(this->obj.pos.x + sp9C.x, this->obj.pos.y + sp9C.y, this->obj.pos.z + sp9C.z,
|
||||
|
||||
@@ -31,7 +31,7 @@ void func_800A3E00(void) {
|
||||
break;
|
||||
case 2:
|
||||
if ((gControllerPress[0].button & START_BUTTON) || (gControllerPress[1].button & START_BUTTON)) {
|
||||
func_8001D638(0);
|
||||
Audio_PlayPauseSfx(0);
|
||||
D_ctx_80177868 = 3;
|
||||
gDrawMode = DRAW_NONE;
|
||||
Play_Setup();
|
||||
|
||||
@@ -56,7 +56,7 @@ void func_beam_80035E78(PlayerShot* shot) {
|
||||
shot->unk_5C = 1;
|
||||
shot->unk_64 = 30;
|
||||
shot->unk_58 = 150;
|
||||
func_8001CE28(shot->playerNum, shot->sfxSource);
|
||||
Audio_PlayBombExplodeSfx(shot->playerNum, shot->sfxSource);
|
||||
gScreenFlashTimer = 4;
|
||||
if (shot->obj.pos.y < (gGroundHeight + 450.0f)) {
|
||||
gCameraShake = 15;
|
||||
|
||||
+1
-1
@@ -611,7 +611,7 @@ void Background_DrawBackdrop(void) {
|
||||
break;
|
||||
case LEVEL_FORTUNA:
|
||||
sp128 = 1.5f;
|
||||
if ((gCsFrameCount > 400) && (gNextPlanetPath == 0)) {
|
||||
if ((gCsFrameCount > 400) && (gMissionStatus == MISSION_COMPLETE)) {
|
||||
sp128 = 0.75f;
|
||||
}
|
||||
Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, MTXF_APPLY);
|
||||
|
||||
@@ -22,7 +22,7 @@ s32 gTeamShields[6];
|
||||
s32 gSavedTeamShields[6];
|
||||
s32 gPrevPlanetSavedTeamShields[6];
|
||||
s32 gTeamDamage[6];
|
||||
u8 gNextPlanetPath; // next planet path
|
||||
u8 gMissionStatus; // next planet path
|
||||
f32 gGroundHeight;
|
||||
f32 D_ctx_80177950;
|
||||
f32 D_ctx_80177968;
|
||||
@@ -45,11 +45,11 @@ u8 gAqDrawMode;
|
||||
s32 D_ctx_80177AE0;
|
||||
s32 gMainController;
|
||||
s32 D_ctx_80177B40;
|
||||
s32 gMissionNumber; // D_ctx_80177B48 // Arrow pointer?
|
||||
s32 D_ctx_80177B50[7];
|
||||
s32 D_ctx_80177B70[7];
|
||||
PlanetId D_ctx_80177B90[7];
|
||||
s32 D_ctx_80177BB0[7];
|
||||
s32 gMissionNumber;
|
||||
s32 gMissionTeamStatus[7];
|
||||
s32 gMissionHitCount[7];
|
||||
PlanetId gMissionPlanet[7];
|
||||
s32 gMissionMedal[7];
|
||||
#ifdef AVOID_UB
|
||||
s32 gPlanetPathStatus[24];
|
||||
#else
|
||||
@@ -93,7 +93,7 @@ s32 gRadioState;
|
||||
s32 D_ctx_801782A4;
|
||||
s32 D_Timer_801782AC;
|
||||
s32 D_Timer_801782B4;
|
||||
u8 D_play_800D3180[30] = {
|
||||
u8 gLeveLClearStatus[30] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
s32 D_ctx_801782C0;
|
||||
|
||||
@@ -292,11 +292,11 @@ void Cutscene_WarpZoneComplete(Player* player) {
|
||||
player->timer_1F8 = 0;
|
||||
gFadeoutType = 4;
|
||||
if (gCurrentLevel == LEVEL_METEO) {
|
||||
D_play_800D3180[LEVEL_METEO] = Play_CheckMedalStatus(200) + 1;
|
||||
gLeveLClearStatus[LEVEL_METEO] = Play_CheckMedalStatus(200) + 1;
|
||||
} else {
|
||||
D_play_800D3180[LEVEL_SECTOR_X] = Play_CheckMedalStatus(150) + 1;
|
||||
gLeveLClearStatus[LEVEL_SECTOR_X] = Play_CheckMedalStatus(150) + 1;
|
||||
}
|
||||
gNextPlanetPath = 2;
|
||||
gMissionStatus = MISSION_WARP;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -1290,7 +1290,7 @@ void Cutscene_CoComplete2(Player* player) {
|
||||
player->timer_1F8 = 0;
|
||||
gFadeoutType = 4;
|
||||
Audio_FadeOutAll(10);
|
||||
D_play_800D3180[gCurrentLevel] = Play_CheckMedalStatus(150) + 1;
|
||||
gLeveLClearStatus[gCurrentLevel] = Play_CheckMedalStatus(150) + 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1422,7 +1422,7 @@ void Cutscene_LevelComplete(Player* player) {
|
||||
|
||||
if (gCurrentLevel == LEVEL_TITANIA) {
|
||||
Titania_LevelComplete(player);
|
||||
} else if (gNextPlanetPath != 0) {
|
||||
} else if (gMissionStatus != MISSION_COMPLETE) {
|
||||
Macbeth_LevelComplete2(player);
|
||||
} else {
|
||||
Macbeth_LevelComplete1(player);
|
||||
@@ -1610,7 +1610,7 @@ void Cutscene_DropVsItem(Player* player, ObjectId itemId, Item* item) {
|
||||
void Cutscene_KillPlayer(Player* player) {
|
||||
s32 teamId;
|
||||
|
||||
func_8001CA24(player->num);
|
||||
Audio_StopPlayerNoise(player->num);
|
||||
Audio_KillSfxBySourceAndId(player->sfxSource, 0x0900C010);
|
||||
func_play_800A5FA0(player->sfxSource, 0x0903F004, player->num);
|
||||
player->state_1C8 = PLAYERSTATE_1C8_NEXT;
|
||||
|
||||
@@ -1026,11 +1026,11 @@ void Actor_DrawOnRails(Actor* this) {
|
||||
Matrix_MultVec3f(gGfxMatrix, &sp34, &gTeamArrowsViewPos[this->aiType]);
|
||||
}
|
||||
}
|
||||
if ((this->lockOnTimers[0] != 0) && (gReflectY > 0)) {
|
||||
if ((this->lockOnTimers[TEAM_ID_FOX] != 0) && (gReflectY > 0)) {
|
||||
sp34.y += this->info.unk_1C;
|
||||
Matrix_MultVec3f(gGfxMatrix, &sp34, &D_display_80161578[0]);
|
||||
if (D_display_80161578[0].z > -200.0f) {
|
||||
this->lockOnTimers[0] = 0;
|
||||
this->lockOnTimers[TEAM_ID_FOX] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2286,8 +2286,8 @@ void ItemMeteoWarp_Update(ItemMeteoWarp* this) {
|
||||
gPlayer[0].state_1C8 = PLAYERSTATE_1C8_ENTER_WARP_ZONE;
|
||||
gPlayer[0].unk_1D0 = 0;
|
||||
AUDIO_PLAY_SFX(0x1900602A, gDefaultSfxSource, 0);
|
||||
gNextPlanetPath = 2;
|
||||
D_play_800D3180[gCurrentLevel] = 1;
|
||||
gMissionStatus = MISSION_WARP;
|
||||
gLeveLClearStatus[gCurrentLevel] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2642,9 +2642,9 @@ void Actor_Update(Actor* this) {
|
||||
gChargeTimers[i] = 0;
|
||||
}
|
||||
}
|
||||
} else if (this->lockOnTimers[0] != 0) {
|
||||
} else if (this->lockOnTimers[TEAM_ID_FOX] != 0) {
|
||||
if (!(gControllerHold[gMainController].button & A_BUTTON)) {
|
||||
this->lockOnTimers[0]--;
|
||||
this->lockOnTimers[TEAM_ID_FOX]--;
|
||||
}
|
||||
gChargeTimers[0] = 0;
|
||||
}
|
||||
|
||||
+17
-17
@@ -307,11 +307,11 @@ void Actor194_8006B46C(Actor194* this, f32 xTrans, f32 yTrans, f32 zTrans, f32 x
|
||||
|
||||
if (arg7 != 1) {
|
||||
RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar);
|
||||
if ((arg7 == 0) && (this->lockOnTimers[0] != 0)) {
|
||||
if ((arg7 == 0) && (this->lockOnTimers[TEAM_ID_FOX] != 0)) {
|
||||
sp34.y += this->info.unk_1C;
|
||||
Matrix_MultVec3f(gGfxMatrix, &sp34, D_display_80161578);
|
||||
if (D_display_80161578->z > -500.0f) {
|
||||
this->lockOnTimers[0] = 0;
|
||||
this->lockOnTimers[TEAM_ID_FOX] = 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -1265,7 +1265,7 @@ void ActorEvent_ProcessScript(ActorEvent* this) {
|
||||
break;
|
||||
|
||||
case EV_OPC(EVOP_SET_REVERB):
|
||||
Audio_SetBaseSfxReverb(actorScript[this->aiIndex + 1]);
|
||||
Audio_SetEnvSfxReverb(actorScript[this->aiIndex + 1]);
|
||||
this->aiIndex += 2;
|
||||
ActorEvent_ProcessScript(this);
|
||||
break;
|
||||
@@ -2626,7 +2626,7 @@ void ActorEvent_ProcessTriggers(ActorEvent* this) {
|
||||
|
||||
case EVC_PRESS_CRIGHT:
|
||||
if (gControllerPress[gMainController].button & R_CBUTTONS) {
|
||||
func_8001AF40(0);
|
||||
Audio_SetUnkVoiceParam(0);
|
||||
gCallVoiceParam = 0;
|
||||
gCallTimer = 0;
|
||||
ActorEvent_TriggerBranch(this);
|
||||
@@ -2640,79 +2640,79 @@ void ActorEvent_ProcessTriggers(ActorEvent* this) {
|
||||
break;
|
||||
|
||||
case EVC_ME_CLEAR:
|
||||
if (D_play_800D3180[LEVEL_METEO] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_METEO] != 0) {
|
||||
ActorEvent_TriggerBranch(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVC_FO_CLEAR:
|
||||
if (D_play_800D3180[LEVEL_FORTUNA] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_FORTUNA] != 0) {
|
||||
ActorEvent_TriggerBranch(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVC_SX_CLEAR:
|
||||
if (D_play_800D3180[LEVEL_SECTOR_X] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_SECTOR_X] != 0) {
|
||||
ActorEvent_TriggerBranch(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVC_TI_CLEAR:
|
||||
if (D_play_800D3180[LEVEL_TITANIA] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_TITANIA] != 0) {
|
||||
ActorEvent_TriggerBranch(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVC_BO_CLEAR:
|
||||
if (D_play_800D3180[LEVEL_BOLSE] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_BOLSE] != 0) {
|
||||
ActorEvent_TriggerBranch(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVC_SY_CLEAR:
|
||||
if (D_play_800D3180[LEVEL_SECTOR_Y] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_SECTOR_Y] != 0) {
|
||||
ActorEvent_TriggerBranch(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVC_KA_CLEAR:
|
||||
if (D_play_800D3180[LEVEL_KATINA] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_KATINA] != 0) {
|
||||
ActorEvent_TriggerBranch(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVC_SO_CLEAR:
|
||||
if (D_play_800D3180[LEVEL_SOLAR] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_SOLAR] != 0) {
|
||||
ActorEvent_TriggerBranch(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVC_MA_CLEAR:
|
||||
if (D_play_800D3180[LEVEL_MACBETH] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_MACBETH] != 0) {
|
||||
ActorEvent_TriggerBranch(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVC_AQ_CLEAR:
|
||||
if (D_play_800D3180[LEVEL_AQUAS] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_AQUAS] != 0) {
|
||||
ActorEvent_TriggerBranch(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVC_ZO_CLEAR:
|
||||
if (D_play_800D3180[LEVEL_ZONESS] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_ZONESS] != 0) {
|
||||
ActorEvent_TriggerBranch(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVC_SZ_CLEAR:
|
||||
if (D_play_800D3180[LEVEL_SECTOR_Z] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_SECTOR_Z] != 0) {
|
||||
ActorEvent_TriggerBranch(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case EVC_A6_CLEAR:
|
||||
if (D_play_800D3180[LEVEL_AREA_6] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_AREA_6] != 0) {
|
||||
ActorEvent_TriggerBranch(this);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -115,7 +115,7 @@ void Game_SetGameState(void) {
|
||||
gBlurAlpha = 255;
|
||||
gDrawMode = DRAW_NONE;
|
||||
Audio_ClearVoice();
|
||||
Audio_SetBaseSfxReverb(0);
|
||||
Audio_SetEnvSfxReverb(0);
|
||||
}
|
||||
|
||||
bool Game_ChangeScene(void) {
|
||||
@@ -413,7 +413,7 @@ void Game_Update(void) {
|
||||
D_ctx_801778A4 = 3;
|
||||
gBlurAlpha = 255;
|
||||
for (i = 0; i < 30; i++) {
|
||||
D_play_800D3180[i] = 0;
|
||||
gLeveLClearStatus[i] = 0;
|
||||
}
|
||||
gExpertMode = false;
|
||||
gOptionSoundMode = gSaveFile.save.data.soundMode;
|
||||
|
||||
+13
-13
@@ -759,7 +759,7 @@ void func_hud_80086DCC(void) {
|
||||
gLevelClearScreenTimer--;
|
||||
}
|
||||
|
||||
boolTemp = gNextPlanetPath;
|
||||
boolTemp = gMissionStatus;
|
||||
|
||||
if ((gCurrentLevel == LEVEL_TITANIA) || (gCurrentLevel == LEVEL_BOLSE) || (gCurrentLevel == LEVEL_VENOM_1) ||
|
||||
(gCurrentLevel == LEVEL_VENOM_2) || (gCurrentLevel == LEVEL_AREA_6) || (gCurrentLevel == LEVEL_AQUAS) ||
|
||||
@@ -1258,14 +1258,14 @@ void func_hud_800884E4(void) {
|
||||
s32 mask;
|
||||
s32 i;
|
||||
|
||||
D_ctx_80177B70[gMissionNumber] = gHitCount;
|
||||
gMissionHitCount[gMissionNumber] = gHitCount;
|
||||
mask = 0x00FF0000;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (gTeamShields[3 - i] <= 0) {
|
||||
D_ctx_80177B50[gMissionNumber] ^= mask;
|
||||
gMissionTeamStatus[gMissionNumber] ^= mask;
|
||||
} else {
|
||||
D_ctx_80177B50[gMissionNumber] |= mask;
|
||||
gMissionTeamStatus[gMissionNumber] |= mask;
|
||||
}
|
||||
mask >>= 8;
|
||||
}
|
||||
@@ -1289,8 +1289,8 @@ void func_hud_80088564(void) {
|
||||
gSaveFile.save.data.planet[planetId].normalClear = 1;
|
||||
}
|
||||
|
||||
if (D_play_800D3180[gCurrentLevel] == 2) {
|
||||
D_ctx_80177BB0[gMissionNumber] = 1;
|
||||
if (gLeveLClearStatus[gCurrentLevel] == 2) {
|
||||
gMissionMedal[gMissionNumber] = 1;
|
||||
|
||||
if (gExpertMode) {
|
||||
gSaveFile.save.data.planet[planetId].expertMedal = 1;
|
||||
@@ -1456,7 +1456,7 @@ void func_hud_80088970(void) {
|
||||
break;
|
||||
}
|
||||
|
||||
func_8001CA24(gPlayer[0].num);
|
||||
Audio_StopPlayerNoise(gPlayer[0].num);
|
||||
Audio_ClearVoice();
|
||||
|
||||
gRadioState = 0;
|
||||
@@ -1496,7 +1496,7 @@ void func_hud_80088970(void) {
|
||||
if (gFillScreenAlpha == 0) {
|
||||
if (gLevelType == LEVELTYPE_PLANET) {
|
||||
if (D_80161838[1] == 0) {
|
||||
func_8001D520();
|
||||
Audio_PlayDeathSequence();
|
||||
}
|
||||
if (D_80161838[1] == 10) {
|
||||
gLifeCount[gPlayerNum]--;
|
||||
@@ -1509,7 +1509,7 @@ void func_hud_80088970(void) {
|
||||
}
|
||||
} else {
|
||||
if (D_80161838[1] == 0) {
|
||||
func_8001D520();
|
||||
Audio_PlayDeathSequence();
|
||||
}
|
||||
if (D_80161838[1] == 6) {
|
||||
gLifeCount[gPlayerNum]--;
|
||||
@@ -1564,7 +1564,7 @@ void func_hud_80088970(void) {
|
||||
|
||||
gSavedHitCount = D_ctx_80177CA0 = 0;
|
||||
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
gPlayer[0].state_1C8 = PLAYERSTATE_1C8_NEXT;
|
||||
gScreenFlashTimer = 0;
|
||||
gPlayer[0].timer_1F8 = 0;
|
||||
@@ -1576,7 +1576,7 @@ void func_hud_80088970(void) {
|
||||
break;
|
||||
|
||||
case 10:
|
||||
func_8001D638(0);
|
||||
Audio_PlayPauseSfx(0);
|
||||
gDrawMode = DRAW_PLAY;
|
||||
gPlayState = PLAY_UPDATE;
|
||||
break;
|
||||
@@ -2252,7 +2252,7 @@ void func_hud_8008B044(void) {
|
||||
AUDIO_PLAY_SFX(0x49002018, gDefaultSfxSource, 4);
|
||||
|
||||
if (gCallVoiceParam != 0) {
|
||||
func_8001AF40(1);
|
||||
Audio_SetUnkVoiceParam(1);
|
||||
}
|
||||
D_80161794 = 0;
|
||||
D_80161798 = 1;
|
||||
@@ -5861,7 +5861,7 @@ void HUD_AquasComplete(Player* player) {
|
||||
gFillScreenAlphaStep = 16;
|
||||
|
||||
if (gFillScreenAlpha == 255) {
|
||||
D_play_800D3180[LEVEL_AQUAS] = Play_CheckMedalStatus(150) + 1;
|
||||
gLeveLClearStatus[LEVEL_AQUAS] = Play_CheckMedalStatus(150) + 1;
|
||||
player->state_1C8 = PLAYERSTATE_1C8_NEXT;
|
||||
player->timer_1F8 = 0;
|
||||
Audio_FadeOutAll(10);
|
||||
|
||||
+19
-19
@@ -497,7 +497,7 @@ void func_play_800A594C(void) {
|
||||
}
|
||||
if (D_ctx_8017782C == 0) {
|
||||
if (gCurrentLevel == LEVEL_SOLAR) {
|
||||
func_8001D1C8(255, 1);
|
||||
Audio_SetHeatAlarmParams(255, 1);
|
||||
AUDIO_PLAY_SFX(0x4100C023, gDefaultSfxSource, 4);
|
||||
Audio_KillSfxBySourceAndId(gPlayer[0].sfxSource, 0x3140807E);
|
||||
}
|
||||
@@ -2393,7 +2393,7 @@ void func_play_800AB334(void) {
|
||||
break;
|
||||
case LEVEL_VENOM_ANDROSS:
|
||||
AUDIO_SET_SPEC(SFXCHAN_0, AUDIOSPEC_15);
|
||||
Audio_SetBaseSfxReverb(0);
|
||||
Audio_SetEnvSfxReverb(0);
|
||||
D_ctx_8017796C = -1;
|
||||
break;
|
||||
}
|
||||
@@ -2562,7 +2562,7 @@ void Play_Init(void) {
|
||||
Audio_KillSfxById(0x49000014);
|
||||
Memory_FreeAll();
|
||||
D_ctx_80177C78 = D_ctx_80177C8C = gShowBossHealth = gStarWolfMsgTimer = gAllRangeWingRepairTimer =
|
||||
gAllRangeWingRepairSent = 0;
|
||||
gAllRangeSuppliesSent = 0;
|
||||
D_display_800CA220 = 0;
|
||||
gShowLevelClearStatusScreen = 0;
|
||||
if (gCurrentLevel != LEVEL_VERSUS) {
|
||||
@@ -2589,10 +2589,10 @@ void Play_Init(void) {
|
||||
func_play_800A594C();
|
||||
gDropHitCountItem = D_ctx_8017796C = gStartAndrossFightTimer = gSoShieldsEmpty = gAllRangeEventTimer =
|
||||
gAllRangeFrameCount = gBossActive = gGameFrameCount = gCameraShake = D_ctx_801782FC = gBossFrameCount =
|
||||
gCallTimer = gAllRangeSupplyTimer = gNextPlanetPath = 0;
|
||||
gCallTimer = gAllRangeSupplyTimer = gMissionStatus = 0;
|
||||
|
||||
if (gCurrentLevel == LEVEL_SECTOR_X) {
|
||||
gNextPlanetPath = 1;
|
||||
gMissionStatus = MISSION_ACCOMPLISHED;
|
||||
}
|
||||
D_ctx_80177CC0 = -25000.0f;
|
||||
D_ctx_80177950 = 1.0f;
|
||||
@@ -2893,8 +2893,8 @@ void func_play_800ACC7C(Player* player) {
|
||||
}
|
||||
gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1].unk_48 = 30.0f;
|
||||
gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1].unk_60 = 0;
|
||||
func_8001CB80(player->num, 1);
|
||||
func_8001CCDC(player->num, gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1].sfxSource);
|
||||
Audio_InitBombSfx(player->num, 1);
|
||||
Audio_PlayBombFlightSfx(player->num, gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1].sfxSource);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3074,8 +3074,8 @@ bool func_play_800AD1F4(Player* player) {
|
||||
}
|
||||
gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1].unk_48 = 30.0f;
|
||||
gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1].unk_60 = 0;
|
||||
func_8001CB80(player->num, 1);
|
||||
func_8001CCDC(player->num, gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1].sfxSource);
|
||||
Audio_InitBombSfx(player->num, 1);
|
||||
Audio_PlayBombFlightSfx(player->num, gPlayerShots[ARRAY_COUNT(gPlayerShots) - 1].sfxSource);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -4283,7 +4283,7 @@ void func_play_800B0F50(Player* playerx) {
|
||||
player->unk_018 = 1.0f;
|
||||
}
|
||||
if ((D_ctx_8017782C != 0) && (D_ctx_80177CA0 == 0)) {
|
||||
D_play_800D3180[gCurrentLevel] = 0;
|
||||
gLeveLClearStatus[gCurrentLevel] = 0;
|
||||
for (j = 0; j < 10; j++) {
|
||||
D_ctx_80177A10[j] = 0;
|
||||
D_ctx_80177A48[j] = 0.0f;
|
||||
@@ -5107,7 +5107,7 @@ void func_play_800B41EC(Player* player) {
|
||||
if (gCurrentLevel == LEVEL_SOLAR) {
|
||||
Audio_KillSfxById(0x4100C023);
|
||||
}
|
||||
func_8001CA24(player->num);
|
||||
Audio_StopPlayerNoise(player->num);
|
||||
func_play_800A5FA0(player->sfxSource, 0x0900C010, player->num);
|
||||
player->shields = 0;
|
||||
player->unk_1D0 = 0;
|
||||
@@ -5521,7 +5521,7 @@ void Player_Update(Player* player) {
|
||||
gPlayerGlareAlphas[0] = 0;
|
||||
gShowAllRangeCountdown = gRadioState = 0;
|
||||
Audio_ClearVoice();
|
||||
Audio_SetBaseSfxReverb(0);
|
||||
Audio_SetEnvSfxReverb(0);
|
||||
D_ctx_80161A94[0] = gGoldRingCount[0];
|
||||
if (gCurrentLevel == LEVEL_VENOM_ANDROSS) {
|
||||
D_ctx_80177C94 = gGoldRingCount[0];
|
||||
@@ -6205,8 +6205,8 @@ void Play_UpdateLevel(void) {
|
||||
gPlayer[0].unk_1D0 = 0;
|
||||
gSceneSetup = 1;
|
||||
AUDIO_PLAY_SFX(0x1900602A, gDefaultSfxSource, 0);
|
||||
gNextPlanetPath = 2;
|
||||
D_play_800D3180[gCurrentLevel] = 1;
|
||||
gMissionStatus = MISSION_WARP;
|
||||
gLeveLClearStatus[gCurrentLevel] = 1;
|
||||
}
|
||||
break;
|
||||
case LEVEL_CORNERIA:
|
||||
@@ -6268,7 +6268,7 @@ void Play_UpdateLevel(void) {
|
||||
}
|
||||
}
|
||||
shields = MIN(gPlayer[0].shields, 255);
|
||||
func_8001D1C8(shields, heightParam);
|
||||
Audio_SetHeatAlarmParams(shields, heightParam);
|
||||
if (((gGameFrameCount % 8) == 0) && (gPlayer[0].state_1C8 != PLAYERSTATE_1C8_LEVEL_COMPLETE)) {
|
||||
Solar_8019E8B8(RAND_FLOAT_CENTERED(6000.0f), -80.0f,
|
||||
gPlayer[0].unk_138 + (RAND_FLOAT(2000.0f) + -6000.0f),
|
||||
@@ -6448,11 +6448,11 @@ void Play_Main(void) {
|
||||
(gPlayer[0].state_1C8 == PLAYERSTATE_1C8_LEVEL_INTRO) &&
|
||||
gSaveFile.save.data.planet[D_800D2F6C[gCurrentLevel]].normalClear) {
|
||||
Audio_ClearVoice();
|
||||
Audio_SetBaseSfxReverb(0);
|
||||
Audio_SetEnvSfxReverb(0);
|
||||
Play_ClearObjectData();
|
||||
for (i = 0; i < gCamCount; i++) {
|
||||
Audio_KillSfxBySource(gPlayer[i].sfxSource);
|
||||
func_8001CA24(i);
|
||||
Audio_StopPlayerNoise(i);
|
||||
}
|
||||
gPlayState = PLAY_INIT;
|
||||
gDrawMode = gVersusMode = 0;
|
||||
@@ -6465,7 +6465,7 @@ void Play_Main(void) {
|
||||
func_versus_800C1E9C();
|
||||
}
|
||||
if ((gControllerPress[gMainController].button & START_BUTTON) && gPauseEnabled) {
|
||||
func_8001D638(1);
|
||||
Audio_PlayPauseSfx(1);
|
||||
gPlayState = PLAY_PAUSE;
|
||||
D_ctx_80177868 = 4;
|
||||
D_ctx_80178484 = 100000;
|
||||
@@ -6494,7 +6494,7 @@ void Play_Main(void) {
|
||||
}
|
||||
if ((D_ctx_80177868 == 4) && (gControllerPress[gMainController].button & START_BUTTON) &&
|
||||
(gPauseEnabled != 0)) {
|
||||
func_8001D638(0);
|
||||
Audio_PlayPauseSfx(0);
|
||||
gPlayState = PLAY_UPDATE;
|
||||
gDrawMode = DRAW_PLAY;
|
||||
}
|
||||
|
||||
@@ -44,8 +44,8 @@ s32 Save_Write(void) {
|
||||
gSaveFile.save.checksum = Save_Checksum(&gSaveFile.save);
|
||||
gSaveFile.backup = gSaveFile.save;
|
||||
gSaveIOBuffer = gSaveFile;
|
||||
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_WRITE_SAVE, OS_MESG_PRI_NORMAL);
|
||||
osRecvMesg(&gSaveMsgQueue, &sp1C, OS_MESG_BLOCK);
|
||||
osSendMesg(&gSerialThreadMesgQueue, (OSMesg) SI_WRITE_SAVE, OS_MESG_NOBLOCK);
|
||||
MQ_WAIT_FOR_MESG(&gSaveMesgQueue, &sp1C);
|
||||
if (sp1C != (OSMesg) SI_SAVE_SUCCESS) {
|
||||
return -1;
|
||||
}
|
||||
@@ -56,8 +56,8 @@ s32 Save_Read(void) {
|
||||
OSMesg sp24;
|
||||
s32 i;
|
||||
|
||||
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_READ_SAVE, OS_MESG_PRI_NORMAL);
|
||||
osRecvMesg(&gSaveMsgQueue, &sp24, OS_MESG_BLOCK);
|
||||
osSendMesg(&gSerialThreadMesgQueue, (OSMesg) SI_READ_SAVE, OS_MESG_NOBLOCK);
|
||||
MQ_WAIT_FOR_MESG(&gSaveMesgQueue, &sp24);
|
||||
if ((s32) sp24 != SI_SAVE_SUCCESS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ void func_versus_800BC760(void) {
|
||||
|
||||
for (i = 0; i < gCamCount; i++) {
|
||||
Audio_KillSfxBySource(gPlayer[i].sfxSource);
|
||||
func_8001CA24(i);
|
||||
Audio_StopPlayerNoise(i);
|
||||
}
|
||||
|
||||
gGameState = GSTATE_INIT;
|
||||
|
||||
@@ -8,11 +8,11 @@ s32 __osPfsGetStatus(OSMesgQueue* queue, int channel) {
|
||||
u8 pattern;
|
||||
OSContStatus status[4];
|
||||
|
||||
__osPfsRequestData(0);
|
||||
ret = __osSiRawStartDma(1, &__osPfsPifRam);
|
||||
osRecvMesg(queue, &dummy, 1);
|
||||
ret = __osSiRawStartDma(0, &__osPfsPifRam);
|
||||
osRecvMesg(queue, &dummy, 1);
|
||||
__osPfsRequestData(CONT_CMD_REQUEST_STATUS);
|
||||
ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam);
|
||||
osRecvMesg(queue, &dummy, OS_MESG_BLOCK);
|
||||
ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam);
|
||||
osRecvMesg(queue, &dummy, OS_MESG_BLOCK);
|
||||
__osPfsGetInitData(&pattern, status);
|
||||
|
||||
if (status[channel].status & CONT_CARD_ON && status[channel].status & CONT_CARD_PULL) {
|
||||
|
||||
@@ -5,6 +5,8 @@ extern PlanetId sPlanetList[15];
|
||||
extern PlanetId sCurrentPlanetId;
|
||||
extern s32 D_menu_801B8280;
|
||||
extern s32 D_menu_801CD968;
|
||||
extern s32 D_menu_801CD944;
|
||||
extern s32 D_menu_801CD948;
|
||||
|
||||
void Map_801A61B4(LevelId level);
|
||||
void Map_801A6368(void);
|
||||
@@ -48,7 +50,8 @@ void Map_LevelSelect(void) {
|
||||
}
|
||||
|
||||
// Bypass briefing
|
||||
if (gControllerPress[0].button & A_BUTTON) {
|
||||
// if (gControllerPress[0].button & A_BUTTON) {
|
||||
if ((D_menu_801CD944 == 2) && (D_menu_801CD948 > 0)) {
|
||||
Map_801A61B4(gCurrentLevel);
|
||||
D_menu_801B8280 = 0;
|
||||
D_menu_801CD968 = 0;
|
||||
|
||||
@@ -241,9 +241,9 @@ bool Ending_8018DCB4(void) {
|
||||
s32 unk40[10];
|
||||
|
||||
for (i = 0; i < gMissionNumber + 1; i++) {
|
||||
temp2 += ((D_ctx_80177B50[i] & 0x00FF0000) >> 16) & 1;
|
||||
temp2 += ((D_ctx_80177B50[i] & 0x0000FF00) >> 8) & 1;
|
||||
temp2 += (D_ctx_80177B50[i] & 0x000000FF) & 1;
|
||||
temp2 += ((gMissionTeamStatus[i] & 0x00FF0000) >> 16) & 1;
|
||||
temp2 += ((gMissionTeamStatus[i] & 0x0000FF00) >> 8) & 1;
|
||||
temp2 += (gMissionTeamStatus[i] & 0x000000FF) & 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < 10; i += 1) {
|
||||
@@ -502,7 +502,7 @@ void Ending_8018F2A8(u32 arg0, AssetInfo* asset) {
|
||||
void Ending_8018F64C(u32 arg0, AssetInfo* asset) {
|
||||
f32 temp;
|
||||
|
||||
if (D_play_800D3180[8] == 0) {
|
||||
if (gLeveLClearStatus[LEVEL_ZONESS] == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -569,7 +569,7 @@ void Ending_8018F64C(u32 arg0, AssetInfo* asset) {
|
||||
void Ending_8018FC60(u32 arg0, AssetInfo* asset) {
|
||||
f32 temp;
|
||||
|
||||
if (D_play_800D3180[16] == 0) {
|
||||
if (gLeveLClearStatus[LEVEL_KATINA] == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1140,7 +1140,7 @@ void Corneria_8018ACE0(Actor* actor) {
|
||||
Object_SetInfo(&actor->info, actor->obj.id);
|
||||
actor->state = 100;
|
||||
actor->timer_0BC = 10;
|
||||
actor->lockOnTimers[0] = 0;
|
||||
actor->lockOnTimers[TEAM_ID_FOX] = 0;
|
||||
actor->vel.x = actor->vel.y = actor->vel.z = 0.0f;
|
||||
}
|
||||
}
|
||||
@@ -1951,7 +1951,7 @@ void Corneria_8018C19C(Boss* boss) {
|
||||
func_boss_80042EC0(boss);
|
||||
boss->fwork[17] = 10.0f;
|
||||
boss->vel.y *= 1.5f;
|
||||
gNextPlanetPath = 1;
|
||||
gMissionStatus = MISSION_ACCOMPLISHED;
|
||||
if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) ||
|
||||
(gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN)) {
|
||||
func_boss_8004319C(gPlayer, boss->obj.pos.x, boss->obj.pos.y, boss->obj.pos.z);
|
||||
@@ -3168,7 +3168,7 @@ void Corneria_LevelComplete1(Player* player) {
|
||||
player->state_1C8 = PLAYERSTATE_1C8_NEXT;
|
||||
player->timer_1F8 = 0;
|
||||
gFadeoutType = 4;
|
||||
D_play_800D3180[gCurrentLevel] = Play_CheckMedalStatus(150) + 1;
|
||||
gLeveLClearStatus[gCurrentLevel] = Play_CheckMedalStatus(150) + 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -236,7 +236,7 @@ void Training_8019949C(void) {
|
||||
}
|
||||
|
||||
if ((gCallTimer != 0) && (gControllerPress[gMainController].button & R_CBUTTONS)) {
|
||||
func_8001AF40(0);
|
||||
Audio_SetUnkVoiceParam(0);
|
||||
gCallVoiceParam = 0;
|
||||
gCallTimer = 0;
|
||||
// This is ROB 64. Keep up the good work.
|
||||
|
||||
@@ -2350,7 +2350,7 @@ void Venom1_80198414(void) {
|
||||
D_ctx_80177CB4 = gPlayer[0].wings.leftState;
|
||||
D_ctx_80177CBC = gRightWingHealth[0];
|
||||
D_ctx_80177CC4 = gLeftWingHealth[0];
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
Audio_KillSfxBySource(gPlayer[0].sfxSource);
|
||||
}
|
||||
|
||||
|
||||
@@ -395,7 +395,7 @@ void Meteo_80188344(Boss* boss) {
|
||||
boss->timer_054 = 5;
|
||||
boss->swork[0] += 32;
|
||||
|
||||
func_8001D034(boss->sfxSource, 0x3103605B, boss->unk_04A);
|
||||
Audio_SetTransposeAndPlaySfx(boss->sfxSource, 0x3103605B, boss->unk_04A);
|
||||
|
||||
boss->unk_04A++;
|
||||
if (boss->unk_04A >= 8) {
|
||||
@@ -2330,7 +2330,7 @@ void Meteo_LevelComplete(Player* player) {
|
||||
player->state_1C8 = PLAYERSTATE_1C8_NEXT;
|
||||
player->timer_1F8 = 0;
|
||||
gFadeoutType = 4;
|
||||
D_play_800D3180[LEVEL_METEO] = Play_CheckMedalStatus(0xC8) + 1;
|
||||
gLeveLClearStatus[LEVEL_METEO] = Play_CheckMedalStatus(200) + 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -1076,7 +1076,7 @@ void SectorX_80190078(Boss* boss) {
|
||||
gPlayer[0].unk_234 = 1;
|
||||
}
|
||||
Object_Kill(&boss->obj, boss->sfxSource);
|
||||
gNextPlanetPath = boss->swork[6];
|
||||
gMissionStatus = boss->swork[6];
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1759,7 +1759,7 @@ void SectorX_LevelComplete(Player* player) {
|
||||
gFadeoutType = 4;
|
||||
player->timer_1F8 = 0;
|
||||
Play_ClearObjectData();
|
||||
D_play_800D3180[LEVEL_SECTOR_X] = Play_CheckMedalStatus(150) + 1;
|
||||
gLeveLClearStatus[LEVEL_SECTOR_X] = Play_CheckMedalStatus(150) + 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2729,7 +2729,7 @@ void Area6_LevelComplete(Player* player) {
|
||||
gFillScreenAlphaTarget = 255;
|
||||
gFillScreenAlphaStep = 8;
|
||||
if (gFillScreenAlpha == 255) {
|
||||
D_play_800D3180[LEVEL_AREA_6] = Play_CheckMedalStatus(300) + 1;
|
||||
gLeveLClearStatus[LEVEL_AREA_6] = Play_CheckMedalStatus(300) + 1;
|
||||
for (i = TEAM_ID_FALCO; i < TEAM_ID_MAX; i++) {
|
||||
gPrevPlanetTeamShields[i] = gTeamShields[i];
|
||||
gPrevPlanetSavedTeamShields[i] = gSavedTeamShields[i];
|
||||
@@ -2741,7 +2741,7 @@ void Area6_LevelComplete(Player* player) {
|
||||
}
|
||||
}
|
||||
D_ctx_80161A94[0] = gGoldRingCount[0];
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
Audio_KillSfxBySource(player->sfxSource);
|
||||
Play_ClearObjectData();
|
||||
gNextGameState = GSTATE_PLAY;
|
||||
|
||||
@@ -1128,7 +1128,7 @@ void Solar_LevelStart(Player* player) {
|
||||
player->cam.at.z = player->unk_138;
|
||||
|
||||
D_ctx_80177950 = 1.0f;
|
||||
func_8001D1C8(255, 3);
|
||||
Audio_SetHeatAlarmParams(255, 3);
|
||||
AUDIO_PLAY_SFX(0x4100C023, gDefaultSfxSource, 4);
|
||||
gLoadLevelObjects = 1;
|
||||
gFillScreenAlphaTarget = 0;
|
||||
@@ -2876,7 +2876,7 @@ void Solar_LevelComplete(Player* player) {
|
||||
if (gCsFrameCount == 400) {
|
||||
player->unk_1D0++;
|
||||
Play_ClearObjectData();
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
Audio_KillSfxBySource(player->sfxSource);
|
||||
gFillScreenAlpha = 250;
|
||||
player->timer_1F8 = 20;
|
||||
@@ -3016,12 +3016,12 @@ void Solar_LevelComplete(Player* player) {
|
||||
gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 0;
|
||||
gFillScreenAlphaStep = 8;
|
||||
if (gFillScreenAlpha == 255) {
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
Audio_FadeOutAll(10);
|
||||
player->state_1C8 = PLAYERSTATE_1C8_NEXT;
|
||||
player->timer_1F8 = 0;
|
||||
gFadeoutType = 4;
|
||||
D_play_800D3180[LEVEL_SOLAR] = Play_CheckMedalStatus(100) + 1;
|
||||
gLeveLClearStatus[LEVEL_SOLAR] = Play_CheckMedalStatus(100) + 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1007,7 +1007,7 @@ void Zoness_80191680(Actor* actor) {
|
||||
sp54 = Math_RadToDeg(Math_Atan2F(sp64, sp5C));
|
||||
otherActor = &gActors[actor->iwork[0]];
|
||||
if ((actor->state != 0) || (otherActor->obj.status == OBJ_FREE)) {
|
||||
actor->lockOnTimers[0] = 0;
|
||||
actor->lockOnTimers[TEAM_ID_FOX] = 0;
|
||||
actor->info.unk_1C = 0.0f;
|
||||
sp54 += 180.0f;
|
||||
if (sp54 > 360.0f) {
|
||||
@@ -4582,7 +4582,7 @@ void Zoness_LevelComplete(Player* player) {
|
||||
if (gCsFrameCount == 160) {
|
||||
player->unk_1D0++;
|
||||
Play_ClearObjectData();
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
Audio_KillSfxBySource(player->sfxSource);
|
||||
gFillScreenAlpha = 250;
|
||||
player->timer_1F8 = 20;
|
||||
@@ -4672,12 +4672,12 @@ void Zoness_LevelComplete(Player* player) {
|
||||
gFillScreenRed = gFillScreenGreen = gFillScreenBlue = 0;
|
||||
gFillScreenAlphaStep = 8;
|
||||
if (gFillScreenAlpha == 255) {
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
Audio_FadeOutAll(10);
|
||||
player->state_1C8 = PLAYERSTATE_1C8_NEXT;
|
||||
player->timer_1F8 = 0;
|
||||
gFadeoutType = 4;
|
||||
D_play_800D3180[LEVEL_ZONESS] = Play_CheckMedalStatus(250) + 1;
|
||||
gLeveLClearStatus[LEVEL_ZONESS] = Play_CheckMedalStatus(250) + 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -4686,7 +4686,7 @@ void Zoness_LevelComplete(Player* player) {
|
||||
switch (gCsFrameCount) {
|
||||
case 320:
|
||||
if (!gMissedZoSearchlight) {
|
||||
gNextPlanetPath = 1;
|
||||
gMissionStatus = MISSION_ACCOMPLISHED;
|
||||
}
|
||||
gLevelClearScreenTimer = 100;
|
||||
break;
|
||||
|
||||
@@ -88,39 +88,39 @@ s32 D_i4_801A0530;
|
||||
|
||||
f32 D_i4_8019EEC0 = 0.0f;
|
||||
|
||||
void Bolse_8018BD60(Actor* actor) {
|
||||
void Bolse_8018BD60(Actor* this) {
|
||||
s32 i;
|
||||
Actor* actorPtr;
|
||||
Actor* actor;
|
||||
f32 D_i4_8019EEC4[4] = { 8000.0f, -8000.0f, 8000.0f, -8000.0f };
|
||||
f32 D_i4_8019EED4[4] = { 8000.0f, 8000.0f, -8000.0f, -8000.0f };
|
||||
|
||||
if (gAllRangeCheckpoint == 0) {
|
||||
actor->unk_04E++;
|
||||
if (actor->unk_04E >= 4) {
|
||||
actor->unk_04E = 0;
|
||||
this->unk_04E++;
|
||||
if (this->unk_04E >= 4) {
|
||||
this->unk_04E = 0;
|
||||
}
|
||||
for (actorPtr = gActors + 10, i = 10; i < 16; i++, actorPtr++) {
|
||||
if (actorPtr->obj.status == OBJ_FREE) {
|
||||
Actor_Initialize(actorPtr);
|
||||
actorPtr->obj.status = OBJ_ACTIVE;
|
||||
actorPtr->obj.id = OBJ_ACTOR_ALLRANGE;
|
||||
actorPtr->obj.pos.x = D_i4_8019EEC4[actor->unk_04E];
|
||||
actorPtr->obj.pos.y = 1000.0f;
|
||||
actorPtr->obj.pos.z = D_i4_8019EED4[actor->unk_04E];
|
||||
actorPtr->state = 1;
|
||||
actorPtr->aiIndex = -1;
|
||||
actorPtr->health = 24;
|
||||
actorPtr->iwork[11] = 1;
|
||||
actorPtr->itemDrop = DROP_SILVER_RING_50p;
|
||||
actorPtr->aiType = i;
|
||||
Object_SetInfo(&actorPtr->info, actorPtr->obj.id);
|
||||
AUDIO_PLAY_SFX(0x3100000C, actorPtr->sfxSource, 4);
|
||||
for (actor = &gActors[10], i = 10; i < 16; i++, actor++) {
|
||||
if (actor->obj.status == OBJ_FREE) {
|
||||
Actor_Initialize(actor);
|
||||
actor->obj.status = OBJ_ACTIVE;
|
||||
actor->obj.id = OBJ_ACTOR_ALLRANGE;
|
||||
actor->obj.pos.x = D_i4_8019EEC4[this->unk_04E];
|
||||
actor->obj.pos.y = 1000.0f;
|
||||
actor->obj.pos.z = D_i4_8019EED4[this->unk_04E];
|
||||
actor->state = 1;
|
||||
actor->aiIndex = -1;
|
||||
actor->health = 24;
|
||||
actor->iwork[11] = 1;
|
||||
actor->itemDrop = DROP_SILVER_RING_50p;
|
||||
actor->aiType = i;
|
||||
Object_SetInfo(&actor->info, actor->obj.id);
|
||||
AUDIO_PLAY_SFX(0x3100000C, actor->sfxSource, 4);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
func_360_8002F69C(actor);
|
||||
func_360_8002FC00(actor);
|
||||
func_360_8002F69C(this);
|
||||
func_360_8002FC00(this);
|
||||
}
|
||||
|
||||
f32 D_i4_8019EEE4[] = { -200.0f, -100.0f, -0.0f, 100.0f, 200.0f };
|
||||
@@ -431,7 +431,7 @@ void Bolse_UpdateEventHandler(Actor* this) {
|
||||
break;
|
||||
|
||||
case 390:
|
||||
if (D_play_800D3180[LEVEL_FORTUNA] == 0) {
|
||||
if (gLeveLClearStatus[LEVEL_FORTUNA] == 0) {
|
||||
Radio_PlayMessage(gMsg_ID_9285, RCID_FOX);
|
||||
} else {
|
||||
Radio_PlayMessage(gMsg_ID_11241, RCID_FOX);
|
||||
@@ -628,7 +628,7 @@ bool Bolse_8018D278(Actor* actor) {
|
||||
Object_Kill(&actor->obj, actor->sfxSource);
|
||||
|
||||
actor->info.bonus = 0;
|
||||
actor->lockOnTimers[0] = 0;
|
||||
actor->lockOnTimers[TEAM_ID_FOX] = 0;
|
||||
actor->info.unk_1C = 0.0f;
|
||||
|
||||
return true;
|
||||
@@ -743,7 +743,7 @@ void Bolse_8018D7F0(Actor* actor) {
|
||||
Bolse_8018D4F0(actor);
|
||||
Bolse_8018D584(actor);
|
||||
} else {
|
||||
actor->lockOnTimers[0] = 0;
|
||||
actor->lockOnTimers[TEAM_ID_FOX] = 0;
|
||||
actor->info.bonus = 0;
|
||||
actor->info.unk_1C = 0.0f;
|
||||
}
|
||||
@@ -1407,7 +1407,7 @@ void Bolse_LevelComplete(Player* player) {
|
||||
if (player->timer_1F8 == 0) {
|
||||
player->unk_1D0 = 5;
|
||||
player->timer_1F8 = 1000;
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
Audio_KillSfxBySource(player->sfxSource);
|
||||
Play_ClearObjectData();
|
||||
|
||||
@@ -1629,9 +1629,9 @@ void Bolse_LevelComplete(Player* player) {
|
||||
D_ctx_80161A94[0] = gGoldRingCount[0];
|
||||
gNextGameState = GSTATE_PLAY;
|
||||
gNextLevel = LEVEL_VENOM_1;
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
Audio_KillSfxBySource(player->sfxSource);
|
||||
D_play_800D3180[LEVEL_BOLSE] = Play_CheckMedalStatus(150) + 1;
|
||||
gLeveLClearStatus[LEVEL_BOLSE] = Play_CheckMedalStatus(150) + 1;
|
||||
|
||||
for (i = TEAM_ID_FALCO; i < TEAM_ID_MAX; i++) {
|
||||
gPrevPlanetTeamShields[i] = gTeamShields[i];
|
||||
|
||||
@@ -203,7 +203,7 @@ void Fortuna_80187960(Actor* actor) {
|
||||
if ((gStarWolfTeamAlive[0] == 0) && (gStarWolfTeamAlive[1] == 0) && (gStarWolfTeamAlive[2] == 0) &&
|
||||
(gStarWolfTeamAlive[3] == 0)) {
|
||||
Radio_PlayMessage(gMsg_ID_9411, RCID_FOX);
|
||||
gNextPlanetPath = 1;
|
||||
gMissionStatus = MISSION_ACCOMPLISHED;
|
||||
gPlayer[0].timer_1F8 = 50;
|
||||
player->unk_190 = 5.0f;
|
||||
player->unk_194 = 5.0f;
|
||||
@@ -211,7 +211,7 @@ void Fortuna_80187960(Actor* actor) {
|
||||
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 30);
|
||||
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 30);
|
||||
} else {
|
||||
gNextPlanetPath = 0;
|
||||
gMissionStatus = MISSION_COMPLETE;
|
||||
gPlayer[0].timer_1F8 = 30;
|
||||
}
|
||||
}
|
||||
@@ -363,7 +363,7 @@ void Fortuna_80187960(Actor* actor) {
|
||||
|
||||
case 6:
|
||||
actor->iwork[0] += 1;
|
||||
if (gNextPlanetPath == 0) {
|
||||
if (gMissionStatus == MISSION_COMPLETE) {
|
||||
actor1->aiIndex = AI360_FOX;
|
||||
actor1->state = 2;
|
||||
actor2->aiIndex = AI360_FOX;
|
||||
@@ -494,7 +494,7 @@ void Fortuna_80188AD0(Actor* actor) {
|
||||
actor->state = 1;
|
||||
actor->info.hitbox = SEGMENTED_TO_VIRTUAL(D_FO_600FF64);
|
||||
actor->info.unk_1C = 0.0f;
|
||||
actor->lockOnTimers[0] = 0;
|
||||
actor->lockOnTimers[TEAM_ID_FOX] = 0;
|
||||
actor->info.bonus = 0;
|
||||
AUDIO_PLAY_SFX(0x2903B009, actor->sfxSource, 4);
|
||||
}
|
||||
@@ -645,7 +645,7 @@ void Fortuna_LevelComplete(Player* player) {
|
||||
Math_SmoothStepToF(&player->unk_12C, 0.0f, 0.1f, 15.0f, 0.0f);
|
||||
Math_SmoothStepToF(&player->camRoll, 0.0f, 0.1f, 3.0f, 0.0f);
|
||||
Math_SmoothStepToAngle(&player->unk_4D8, 0.0f, 0.1f, 20.0f, 0.0f);
|
||||
if (gNextPlanetPath == 0) {
|
||||
if (gMissionStatus == MISSION_COMPLETE) {
|
||||
if (player->pos.y < 700.0f) {
|
||||
Math_SmoothStepToF(&player->pos.y, 700.0f, 0.1f, 10.0f, 0.0f);
|
||||
}
|
||||
@@ -695,7 +695,7 @@ void Fortuna_LevelComplete(Player* player) {
|
||||
break;
|
||||
|
||||
case 0:
|
||||
if (gNextPlanetPath == 0) {
|
||||
if (gMissionStatus == MISSION_COMPLETE) {
|
||||
Math_SmoothStepToF(&player->unk_0E8, 40.0f, 0.1f, 2.5f, 0.0f);
|
||||
Math_SmoothStepToF(&player->unk_0EC, 60.0f, 0.2f, 5.0f, 0.0f);
|
||||
Math_SmoothStepToF(&player->unk_0E4, 0.0f, 0.1f, 2.5f, 0.0f);
|
||||
@@ -712,7 +712,7 @@ void Fortuna_LevelComplete(Player* player) {
|
||||
}
|
||||
|
||||
if (player->timer_1F8 == 0) {
|
||||
if (gNextPlanetPath != 0) {
|
||||
if (gMissionStatus != MISSION_COMPLETE) {
|
||||
player->timer_1F8 = 150;
|
||||
player->unk_1D0 = -1;
|
||||
player->pos.x = 0.0f;
|
||||
@@ -752,7 +752,7 @@ void Fortuna_LevelComplete(Player* player) {
|
||||
//! FAKE:
|
||||
if (((&dest) && (&dest)) && (&dest)) {}
|
||||
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
Audio_KillSfxBySource(player->sfxSource);
|
||||
player->unk_234 = 0;
|
||||
gFillScreenAlpha = 255;
|
||||
@@ -763,7 +763,7 @@ void Fortuna_LevelComplete(Player* player) {
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (!(gNextPlanetPath) && (player->timer_1F8) > 830) {
|
||||
if (!(gMissionStatus) && (player->timer_1F8) > 830) {
|
||||
gFillScreenAlphaTarget = 0;
|
||||
gFillScreenAlphaStep = 8;
|
||||
}
|
||||
@@ -778,9 +778,9 @@ void Fortuna_LevelComplete(Player* player) {
|
||||
|
||||
gBosses[0].swork[0] = 1;
|
||||
|
||||
if ((func_hud_80090200(&gBosses[0]) == 2) || (gNextPlanetPath != 0)) {
|
||||
if ((func_hud_80090200(&gBosses[0]) == 2) || (gMissionStatus != MISSION_COMPLETE)) {
|
||||
Play_ClearObjectData();
|
||||
if (gNextPlanetPath == 0) {
|
||||
if (gMissionStatus == MISSION_COMPLETE) {
|
||||
player->unk_1D0 = 10;
|
||||
} else {
|
||||
player->unk_1D0 = 20;
|
||||
@@ -803,7 +803,7 @@ void Fortuna_LevelComplete(Player* player) {
|
||||
D_ctx_801784D4 = D_ctx_801784C8 = D_ctx_801784C8 = D_ctx_801784FC = D_ctx_801784C8 = 58.0f;
|
||||
D_ctx_801784D8 = D_ctx_801784CC = D_ctx_801784CC = D_ctx_80178500 = D_ctx_801784CC = 13.0f;
|
||||
|
||||
if (gNextPlanetPath == 0) {
|
||||
if (gMissionStatus == MISSION_COMPLETE) {
|
||||
player->pos.x = 0.0f;
|
||||
player->pos.y = 0.0f;
|
||||
player->unk_0E4 = 0.0f;
|
||||
@@ -829,7 +829,7 @@ void Fortuna_LevelComplete(Player* player) {
|
||||
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM, 100);
|
||||
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 100);
|
||||
Audio_StartPlayerNoise(0);
|
||||
if (gNextPlanetPath == 0) {
|
||||
if (gMissionStatus == MISSION_COMPLETE) {
|
||||
Fortuna_801890EC(actor0, 3);
|
||||
}
|
||||
}
|
||||
@@ -871,7 +871,7 @@ void Fortuna_LevelComplete(Player* player) {
|
||||
}
|
||||
|
||||
if (gCsFrameCount == 200) {
|
||||
if (gNextPlanetPath == 0) {
|
||||
if (gMissionStatus == MISSION_COMPLETE) {
|
||||
AUDIO_PLAY_BGM(SEQ_ID_BAD_END);
|
||||
} else {
|
||||
AUDIO_PLAY_BGM(SEQ_ID_GOOD_END);
|
||||
@@ -919,7 +919,7 @@ void Fortuna_LevelComplete(Player* player) {
|
||||
Radio_PlayMessage(gMsg_ID_20010, RCID_FOX);
|
||||
}
|
||||
|
||||
if (gNextPlanetPath == 0) {
|
||||
if (gMissionStatus == MISSION_COMPLETE) {
|
||||
switch (gCsFrameCount) {
|
||||
case 588:
|
||||
switch (gTeamShields[TEAM_ID_SLIPPY]) {
|
||||
@@ -1101,7 +1101,7 @@ void Fortuna_LevelComplete(Player* player) {
|
||||
for (i = 0; i < 6; i++) {
|
||||
gSavedStarWolfTeamAlive[i] = gStarWolfTeamAlive[i];
|
||||
}
|
||||
D_play_800D3180[LEVEL_FORTUNA] = Play_CheckMedalStatus(50) + 1;
|
||||
gLeveLClearStatus[LEVEL_FORTUNA] = Play_CheckMedalStatus(50) + 1;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1328,7 +1328,7 @@ void Fortuna_LevelComplete(Player* player) {
|
||||
}
|
||||
// clang-format on
|
||||
|
||||
D_play_800D3180[LEVEL_FORTUNA] = Play_CheckMedalStatus(50) + 1;
|
||||
gLeveLClearStatus[LEVEL_FORTUNA] = Play_CheckMedalStatus(50) + 1;
|
||||
Play_ClearObjectData();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1042,7 +1042,7 @@ void Katina_801946C4(Boss* boss) {
|
||||
gPlayer[0].unk_1D0 = 2;
|
||||
gPlayer[0].unk_234 = 1;
|
||||
gCsFrameCount = 200;
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
Audio_KillSfxBySource(&gPlayer[0].sfxSource[0]);
|
||||
gPlayer[0].timer_1F8 = 50;
|
||||
gPlayer[0].unk_0D0 = 0.0f;
|
||||
@@ -1066,7 +1066,7 @@ void Katina_801946C4(Boss* boss) {
|
||||
(gPlayer[0].state_1C8 == PLAYERSTATE_1C8_U_TURN))) {
|
||||
gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
|
||||
gPlayer[0].unk_1D0 = 0;
|
||||
gNextPlanetPath = 1;
|
||||
gMissionStatus = MISSION_ACCOMPLISHED;
|
||||
boss->obj.pos.z = 0.0f;
|
||||
boss->health = -1;
|
||||
boss->fwork[10] = 0.0f;
|
||||
@@ -1367,7 +1367,7 @@ void Katina_80197024(void) {
|
||||
|
||||
Rand_SetSeed(1, 29100, 9786);
|
||||
|
||||
if (gNextPlanetPath != 0) {
|
||||
if (gMissionStatus != MISSION_COMPLETE) {
|
||||
target = 19;
|
||||
} else {
|
||||
target = 2;
|
||||
@@ -1481,7 +1481,7 @@ void Katina_LevelComplete(Player* player) {
|
||||
if (gCsFrameCount == 250) {
|
||||
player->unk_1D0 = 2;
|
||||
Play_ClearObjectData();
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
Audio_KillSfxBySource(&player->sfxSource[0]);
|
||||
player->timer_1F8 = 50;
|
||||
player->unk_0D0 = 0.0f;
|
||||
@@ -1499,7 +1499,7 @@ void Katina_LevelComplete(Player* player) {
|
||||
player->pos.z = 150.0f;
|
||||
player->unk_1D0 = 3;
|
||||
Audio_StartPlayerNoise(0);
|
||||
if (gNextPlanetPath != 0) {
|
||||
if (gMissionStatus != MISSION_COMPLETE) {
|
||||
AUDIO_PLAY_BGM(SEQ_ID_GOOD_END);
|
||||
} else {
|
||||
AUDIO_PLAY_BGM(SEQ_ID_BAD_END);
|
||||
@@ -1553,7 +1553,7 @@ void Katina_LevelComplete(Player* player) {
|
||||
player->state_1C8 = PLAYERSTATE_1C8_NEXT;
|
||||
player->timer_1F8 = 0;
|
||||
gFadeoutType = 4;
|
||||
D_play_800D3180[LEVEL_KATINA] = Play_CheckMedalStatus(150) + 1;
|
||||
gLeveLClearStatus[LEVEL_KATINA] = Play_CheckMedalStatus(150) + 1;
|
||||
}
|
||||
}
|
||||
switch (gCsFrameCount) {
|
||||
@@ -1587,7 +1587,7 @@ void Katina_LevelComplete(Player* player) {
|
||||
break;
|
||||
|
||||
case 570:
|
||||
if (gNextPlanetPath != 0) {
|
||||
if (gMissionStatus != MISSION_COMPLETE) {
|
||||
if (gKaAllyKillCount == 0) {
|
||||
Radio_PlayMessage(gMsg_ID_18100, RCID_BILL);
|
||||
} else {
|
||||
@@ -1599,7 +1599,7 @@ void Katina_LevelComplete(Player* player) {
|
||||
break;
|
||||
|
||||
case 700:
|
||||
if (gNextPlanetPath != 0) {
|
||||
if (gMissionStatus != MISSION_COMPLETE) {
|
||||
if (gKaAllyKillCount == 0) {
|
||||
Radio_PlayMessage(gMsg_ID_18105, RCID_FOX);
|
||||
} else {
|
||||
|
||||
@@ -58,7 +58,7 @@ void SectorZ_80199900(Actor* actor, s32 arg1) {
|
||||
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 1);
|
||||
}
|
||||
|
||||
if ((D_i4_801A0560 == 3) && (D_play_800D3180[LEVEL_ZONESS] != 0)) {
|
||||
if ((D_i4_801A0560 == 3) && (gLeveLClearStatus[LEVEL_ZONESS] != 0)) {
|
||||
D_360_800C9B4C = gAllRangeEventTimer + 110;
|
||||
}
|
||||
}
|
||||
@@ -1209,7 +1209,7 @@ void SectorZ_LevelComplete(Player* player) {
|
||||
|
||||
if ((gCsFrameCount == 210) && gGreatFoxIntact) {
|
||||
gLevelClearScreenTimer = 100;
|
||||
gNextPlanetPath = 1;
|
||||
gMissionStatus = MISSION_ACCOMPLISHED;
|
||||
}
|
||||
|
||||
if ((gCsFrameCount == 230) && (D_i4_801A0564 != 0)) {
|
||||
@@ -1240,7 +1240,7 @@ void SectorZ_LevelComplete(Player* player) {
|
||||
player->unk_1D0 = 10;
|
||||
player->timer_1F8 = 1000;
|
||||
|
||||
func_8001CA24(0U);
|
||||
Audio_StopPlayerNoise(0U);
|
||||
Audio_KillSfxBySource(player->sfxSource);
|
||||
Play_ClearObjectData();
|
||||
|
||||
@@ -1353,7 +1353,7 @@ void SectorZ_LevelComplete(Player* player) {
|
||||
player->state_1C8 = PLAYERSTATE_1C8_NEXT;
|
||||
player->timer_1F8 = 0;
|
||||
gFadeoutType = 4;
|
||||
D_play_800D3180[LEVEL_SECTOR_Z] = Play_CheckMedalStatus(100) + 1;
|
||||
gLeveLClearStatus[LEVEL_SECTOR_Z] = Play_CheckMedalStatus(100) + 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1485,10 +1485,10 @@ void SectorZ_LevelComplete(Player* player) {
|
||||
|
||||
case 1370:
|
||||
if (gGreatFoxIntact) {
|
||||
gNextPlanetPath = 1;
|
||||
gMissionStatus = MISSION_ACCOMPLISHED;
|
||||
} else {
|
||||
AUDIO_PLAY_BGM(SEQ_ID_BAD_END);
|
||||
gNextPlanetPath = 0;
|
||||
gMissionStatus = MISSION_COMPLETE;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -445,19 +445,19 @@ void Macbeth_8019A198(Actor* actor) {
|
||||
if ((actor->iwork[5] == D_MA_801BE2F0[3] - 1) || (actor->iwork[5] == D_i5_801BA1E4 - 1)) {
|
||||
if (D_i5_801BE310 != actor->iwork[5]) {
|
||||
if (actor->vel.z > -6.0f) {
|
||||
func_8001CFA8(-6.0f);
|
||||
Audio_SetSfxSpeedModulation(-6.0f);
|
||||
} else {
|
||||
func_8001CFA8(actor->vel.z);
|
||||
Audio_SetSfxSpeedModulation(actor->vel.z);
|
||||
}
|
||||
func_8001D10C(actor->sfxSource, 0x31078085);
|
||||
Audio_PlaySfxModulated(actor->sfxSource, 0x31078085);
|
||||
D_i5_801BE310 = actor->iwork[5];
|
||||
}
|
||||
D_i5_801BA1E0 = actor->obj.pos.z;
|
||||
if (D_i5_801BE313 != 0) {
|
||||
if (actor->vel.z > -6.0f) {
|
||||
func_8001CFA8(-6.0f);
|
||||
Audio_SetSfxSpeedModulation(-6.0f);
|
||||
} else {
|
||||
func_8001CFA8(actor->vel.z);
|
||||
Audio_SetSfxSpeedModulation(actor->vel.z);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -890,7 +890,7 @@ void Macbeth_8019C778(Actor* actor) {
|
||||
if (gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) {
|
||||
gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
|
||||
gPlayer[0].unk_1D0 = 0;
|
||||
gNextPlanetPath = 0;
|
||||
gMissionStatus = MISSION_COMPLETE;
|
||||
}
|
||||
actor->state++;
|
||||
Audio_KillSfxBySourceAndId(gPlayer[0].sfxSource, 0x1100000A);
|
||||
@@ -3043,7 +3043,7 @@ void Macbeth_801A4B24(Actor* actor) {
|
||||
D_ctx_8017796C = -1;
|
||||
gPlayer[0].state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
|
||||
gPlayer[0].unk_1D0 = 0;
|
||||
gNextPlanetPath = 1;
|
||||
gMissionStatus = MISSION_ACCOMPLISHED;
|
||||
actor->timer_0BC = 5;
|
||||
actor->state = 6;
|
||||
Audio_KillSfxBySourceAndId(gPlayer[0].sfxSource, 0x1100000A);
|
||||
@@ -6363,7 +6363,7 @@ void Macbeth_LevelComplete2(Player* player) {
|
||||
}
|
||||
break;
|
||||
case 1420:
|
||||
if (D_play_800D3180[LEVEL_ZONESS] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_ZONESS] != 0) {
|
||||
Macbeth_801AF44C();
|
||||
}
|
||||
break;
|
||||
@@ -6371,7 +6371,7 @@ void Macbeth_LevelComplete2(Player* player) {
|
||||
D_i5_801BA88C = 170.0f;
|
||||
break;
|
||||
case 1500:
|
||||
if (D_play_800D3180[LEVEL_ZONESS] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_ZONESS] != 0) {
|
||||
Radio_PlayMessage(gMsg_ID_17300, RCID_KATT);
|
||||
}
|
||||
break;
|
||||
@@ -6422,7 +6422,7 @@ void Macbeth_LevelComplete2(Player* player) {
|
||||
case 2160:
|
||||
gProjectFar = 30000.0f;
|
||||
player->unk_240 = 1;
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
AUDIO_PLAY_SFX(0x01008016, player->sfxSource, 0);
|
||||
break;
|
||||
case 2310:
|
||||
@@ -6461,7 +6461,7 @@ void Macbeth_LevelComplete2(Player* player) {
|
||||
gFadeoutType = 4;
|
||||
Play_ClearObjectData();
|
||||
Audio_FadeOutAll(10);
|
||||
D_play_800D3180[LEVEL_MACBETH] = Play_CheckMedalStatus(150) + 1;
|
||||
gLeveLClearStatus[LEVEL_MACBETH] = Play_CheckMedalStatus(150) + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6971,17 +6971,17 @@ void Macbeth_LevelComplete1(Player* player) {
|
||||
}
|
||||
break;
|
||||
case 680:
|
||||
if (D_play_800D3180[LEVEL_ZONESS] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_ZONESS] != 0) {
|
||||
Macbeth_801B3718();
|
||||
}
|
||||
break;
|
||||
case 1027:
|
||||
if (D_play_800D3180[LEVEL_ZONESS] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_ZONESS] != 0) {
|
||||
Radio_PlayMessage(gMsg_ID_17350, RCID_KATT);
|
||||
}
|
||||
break;
|
||||
case 1065:
|
||||
if (D_play_800D3180[LEVEL_ZONESS] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_ZONESS] != 0) {
|
||||
gActors[8].state++;
|
||||
}
|
||||
break;
|
||||
@@ -6995,7 +6995,7 @@ void Macbeth_LevelComplete1(Player* player) {
|
||||
gActors[2].state++;
|
||||
break;
|
||||
case 1158:
|
||||
if (D_play_800D3180[LEVEL_ZONESS] != 0) {
|
||||
if (gLeveLClearStatus[LEVEL_ZONESS] != 0) {
|
||||
Object_Kill(&gActors[8].obj, gActors[8].sfxSource);
|
||||
}
|
||||
/* fallthrough */
|
||||
@@ -7030,7 +7030,7 @@ void Macbeth_LevelComplete1(Player* player) {
|
||||
gFadeoutType = 4;
|
||||
Play_ClearObjectData();
|
||||
Audio_FadeOutAll(10);
|
||||
D_play_800D3180[LEVEL_MACBETH] = Play_CheckMedalStatus(150) + 1;
|
||||
gLeveLClearStatus[LEVEL_MACBETH] = Play_CheckMedalStatus(150) + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -360,7 +360,7 @@ void Titania_80189CC8(Actor* actor) {
|
||||
if (actor->health <= 0) {
|
||||
actor->health = 0;
|
||||
AUDIO_PLAY_SFX(0x2903A008, actor->sfxSource, 4);
|
||||
actor->lockOnTimers[0] = actor->itemDrop = 0;
|
||||
actor->lockOnTimers[TEAM_ID_FOX] = actor->itemDrop = 0;
|
||||
actor->info.unk_1C = 0.0f;
|
||||
Actor_Despawn(actor);
|
||||
actor->info.bonus = 0;
|
||||
@@ -866,7 +866,7 @@ void Titania_8018B268(Actor* actor) {
|
||||
Animation_DrawSkeleton(0, D_TI1_700D700, actor->vwork, Titania_8018AFD4, Titania_8018B1B4, actor,
|
||||
&gIdentityMatrix);
|
||||
func_effect_8007D2C8(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z, 10.0f);
|
||||
actor->lockOnTimers[0] = 0;
|
||||
actor->lockOnTimers[TEAM_ID_FOX] = 0;
|
||||
actor->info.unk_1C = 0.0f;
|
||||
}
|
||||
}
|
||||
@@ -1679,7 +1679,7 @@ void Titania_8018C8A8(Actor* actor) {
|
||||
if (actor->health > 0) {
|
||||
actor->info.unk_1C = actor->fwork[27];
|
||||
} else {
|
||||
actor->lockOnTimers[0] = 0;
|
||||
actor->lockOnTimers[TEAM_ID_FOX] = 0;
|
||||
actor->info.unk_1C = 0.0f;
|
||||
}
|
||||
actor->unk_0D0 = 0;
|
||||
@@ -1882,7 +1882,7 @@ void Titania_8018E5F8(Actor* actor) {
|
||||
if (actor->health <= 0) {
|
||||
BonusText_Display(actor->obj.pos.x, actor->obj.pos.y, actor->obj.pos.z + actor->fwork[27], 2);
|
||||
gHitCount += 2;
|
||||
actor->lockOnTimers[0] = actor->health = actor->itemDrop = 0;
|
||||
actor->lockOnTimers[TEAM_ID_FOX] = actor->health = actor->itemDrop = 0;
|
||||
actor->info.unk_1C = 0.0f;
|
||||
Actor_Despawn(actor);
|
||||
actor->info.bonus = 0;
|
||||
|
||||
@@ -498,7 +498,7 @@ void Titania_LevelComplete(Player* player) {
|
||||
Titania_80188108(&gActors[3], 3);
|
||||
gProjectFar = 30000.0f;
|
||||
player->unk_240 = 1;
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
AUDIO_PLAY_SFX(0x01008016, player->sfxSource, 0);
|
||||
break;
|
||||
}
|
||||
@@ -526,7 +526,7 @@ void Titania_LevelComplete(Player* player) {
|
||||
gFadeoutType = 4;
|
||||
Play_ClearObjectData();
|
||||
Audio_FadeOutAll(10);
|
||||
D_play_800D3180[LEVEL_TITANIA] = Play_CheckMedalStatus(150) + 1;
|
||||
gLeveLClearStatus[LEVEL_TITANIA] = Play_CheckMedalStatus(150) + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -639,7 +639,7 @@ void Andross_80189470(Actor* actor) {
|
||||
if ((gPlayer[0].state_1C8 == PLAYERSTATE_1C8_ACTIVE) && (fabsf(actor->obj.pos.x - gPlayer[0].pos.x) < 500.0f) &&
|
||||
(fabsf(actor->obj.pos.z - gPlayer[0].unk_138) < 500.0f)) {
|
||||
Audio_KillSfxById(0x11403076);
|
||||
Audio_SetBaseSfxReverb(0);
|
||||
Audio_SetEnvSfxReverb(0);
|
||||
gCurrentLevel = LEVEL_VENOM_2;
|
||||
gLevelPhase = 1;
|
||||
gVenomHardClear = 1;
|
||||
@@ -950,7 +950,7 @@ void Andross_80189B70(Boss* boss) {
|
||||
if (gCsFrameCount == 200) {
|
||||
gBossActive = 0;
|
||||
gPlayer[0].unk_0D0 = D_play_80161A54;
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
boss->state = 21;
|
||||
func_effect_8007B344(boss->obj.pos.x, boss->obj.pos.y, boss->obj.pos.z, 60.0f, 5);
|
||||
func_effect_8007A568(boss->obj.pos.x, boss->obj.pos.y, boss->obj.pos.z, 40.0f);
|
||||
@@ -1029,7 +1029,7 @@ void Andross_80189B70(Boss* boss) {
|
||||
Radio_PlayMessage(gMsg_ID_19340, RCID_JAMES);
|
||||
break;
|
||||
case 1000:
|
||||
Audio_SetBaseSfxReverb(0);
|
||||
Audio_SetEnvSfxReverb(0);
|
||||
break;
|
||||
case 1300:
|
||||
Radio_PlayMessage(gMsg_ID_19355, RCID_JAMES);
|
||||
@@ -1558,7 +1558,7 @@ void Andross_8018D0D8(Boss* boss) {
|
||||
}
|
||||
|
||||
void Andross_Boss320_Init(Boss320* this) {
|
||||
Audio_SetBaseSfxReverb(0x18);
|
||||
Audio_SetEnvSfxReverb(24);
|
||||
D_i6_801A7F5C = D_i6_801A7F64 = D_i6_801A7F6C = D_i6_801A7F74 = D_i6_801A7F7C = D_i6_801A8430 = 0.0f;
|
||||
gAndrossUnkAlpha = 0.0f;
|
||||
this->health = 100;
|
||||
@@ -2471,7 +2471,7 @@ void Andross_8018DBF0(Boss* boss) {
|
||||
boss->timer_050 = 30;
|
||||
boss->swork[9] = 20;
|
||||
boss->fwork[9] = 0.0f;
|
||||
func_8001CE28(0, boss->sfxSource);
|
||||
Audio_PlayBombExplodeSfx(0, boss->sfxSource);
|
||||
boss->timer_05C = 50;
|
||||
}
|
||||
break;
|
||||
@@ -3554,7 +3554,7 @@ void Andross_80193C4C(Player* player) {
|
||||
sp68.z = 0.0f;
|
||||
if (gCsFrameCount == 50) {
|
||||
AUDIO_PLAY_SFX(0x11403071, player->sfxSource, 0);
|
||||
Audio_SetBaseSfxReverb(0);
|
||||
Audio_SetEnvSfxReverb(0);
|
||||
}
|
||||
if (gCsFrameCount > 40) {
|
||||
sp90 = 1;
|
||||
@@ -3632,7 +3632,7 @@ void Andross_80193C4C(Player* player) {
|
||||
break;
|
||||
case 340:
|
||||
Audio_KillSfxBySourceAndId(player->sfxSource, 0x11403071);
|
||||
Audio_SetBaseSfxReverb(0);
|
||||
Audio_SetEnvSfxReverb(0);
|
||||
gVenomHardClear = 0;
|
||||
gBlurAlpha = 255;
|
||||
gCurrentLevel = LEVEL_VENOM_2;
|
||||
@@ -3720,7 +3720,7 @@ void Andross_80193C4C(Player* player) {
|
||||
D_i6_801A7F50 = gAmbientG;
|
||||
D_i6_801A7F54 = gAmbientB;
|
||||
D_ctx_801784D4 = -50.0f;
|
||||
gNextPlanetPath = 1;
|
||||
gMissionStatus = MISSION_ACCOMPLISHED;
|
||||
for (i = 0; i < 200; i++) {
|
||||
gScenery360[i].obj.status = OBJ_FREE;
|
||||
}
|
||||
@@ -3946,7 +3946,7 @@ void Andross_80193C4C(Player* player) {
|
||||
if (gFillScreenAlpha == 255) {
|
||||
gNextGameState = GSTATE_ENDING;
|
||||
D_ending_80196D00 = 0;
|
||||
D_play_800D3180[LEVEL_VENOM_ANDROSS] = Play_CheckMedalStatus(200) + 1;
|
||||
gLeveLClearStatus[LEVEL_VENOM_ANDROSS] = Play_CheckMedalStatus(200) + 1;
|
||||
AUDIO_SET_SPEC(SFXCHAN_0, AUDIOSPEC_27);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2116,7 +2116,7 @@ void SectorY_LevelComplete(Player* player) {
|
||||
D_ctx_80177A48[0] = 1.0f;
|
||||
player->unk_1D0++;
|
||||
Play_ClearObjectData();
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
Audio_KillSfxBySource(player->sfxSource);
|
||||
gFillScreenAlpha = 250;
|
||||
player->timer_1F8 = 50;
|
||||
@@ -2221,7 +2221,7 @@ void SectorY_LevelComplete(Player* player) {
|
||||
player->state_1C8 = PLAYERSTATE_1C8_NEXT;
|
||||
player->timer_1F8 = 0;
|
||||
gFadeoutType = 4;
|
||||
D_play_800D3180[LEVEL_SECTOR_Y] = Play_CheckMedalStatus(150) + 1;
|
||||
gLeveLClearStatus[LEVEL_SECTOR_Y] = Play_CheckMedalStatus(150) + 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -2230,7 +2230,7 @@ void SectorY_LevelComplete(Player* player) {
|
||||
switch (gCsFrameCount) {
|
||||
case 520:
|
||||
if (gHitCount >= 100) {
|
||||
gNextPlanetPath = 1;
|
||||
gMissionStatus = MISSION_ACCOMPLISHED;
|
||||
}
|
||||
gLevelClearScreenTimer = 100;
|
||||
break;
|
||||
|
||||
@@ -110,7 +110,7 @@ void Venom2_80196314(Actor* actor) {
|
||||
|
||||
player->state_1C8 = PLAYERSTATE_1C8_LEVEL_COMPLETE;
|
||||
player->unk_1D0 = 0;
|
||||
D_play_800D3180[gCurrentLevel] = 2;
|
||||
gLeveLClearStatus[gCurrentLevel] = 2;
|
||||
D_ctx_80177C94 = gGoldRingCount[0];
|
||||
D_ctx_80177C9C = player->shields + 1;
|
||||
D_play_80161A5C = D_ctx_80177CA4 = gHitCount;
|
||||
@@ -415,10 +415,10 @@ void Venom2_LevelComplete(Player* player) {
|
||||
|
||||
gNextGameState = GSTATE_PLAY;
|
||||
gNextLevel = LEVEL_VENOM_ANDROSS;
|
||||
if (D_play_800D3180[gCurrentLevel] != 0) {
|
||||
if (gLeveLClearStatus[gCurrentLevel] != 0) {
|
||||
gNextLevelPhase = 1;
|
||||
}
|
||||
func_8001CA24(0);
|
||||
Audio_StopPlayerNoise(0);
|
||||
Audio_KillSfxBySource(player->sfxSource);
|
||||
|
||||
for (i = 0; i < 200; i++) {
|
||||
|
||||
@@ -30,12 +30,12 @@ s32 D_menu_801CD840[24];
|
||||
s32 D_menu_801CD8A0[15];
|
||||
s32 D_menu_801CD8E0[7];
|
||||
s32 D_menu_801CD900[15];
|
||||
s32 D_menu_801CD93C;
|
||||
MissionStatus sPrevMissionStatus;
|
||||
s32 D_menu_801CD940;
|
||||
s32 D_menu_801CD944; // mapState
|
||||
s32 D_menu_801CD948;
|
||||
s32 D_menu_801CD94C;
|
||||
s32 D_menu_801CD950;
|
||||
PlanetId sPrevPlanetId;
|
||||
PlanetId sCurrentPlanetId; // sCurrentPlanetId
|
||||
PlanetId sNextPlanetId;
|
||||
s32 D_menu_801CD95C;
|
||||
@@ -1450,19 +1450,19 @@ void Map_8019F164(void) {
|
||||
}
|
||||
}
|
||||
|
||||
D_menu_801CD93C = gNextPlanetPath;
|
||||
sPrevMissionStatus = gMissionStatus;
|
||||
|
||||
sCurrentPlanetId = Map_GetPlanetId(gCurrentLevel);
|
||||
|
||||
D_menu_801CD950 = sCurrentPlanetId;
|
||||
sPrevPlanetId = sCurrentPlanetId;
|
||||
|
||||
D_menu_801CD980 = Map_8019FD1C(gCurrentLevel, 0);
|
||||
|
||||
Map_8019FD1C(gCurrentLevel, 2);
|
||||
|
||||
if (D_play_800D3180[gCurrentLevel] == 2) {
|
||||
if (gLeveLClearStatus[gCurrentLevel] == 2) {
|
||||
D_menu_801CD98C = 1;
|
||||
D_ctx_80177BB0[gMissionNumber] = 1;
|
||||
gMissionMedal[gMissionNumber] = 1;
|
||||
Map_8019FD1C(gCurrentLevel, 1);
|
||||
}
|
||||
|
||||
@@ -1474,16 +1474,16 @@ void Map_8019F164(void) {
|
||||
|
||||
Map_8019FA1C();
|
||||
|
||||
switch (D_menu_801CD93C) {
|
||||
case 0:
|
||||
switch (sPrevMissionStatus) {
|
||||
case MISSION_COMPLETE:
|
||||
sNextPlanetId = sPlanets[sCurrentPlanetId].dest1;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case MISSION_ACCOMPLISHED:
|
||||
sNextPlanetId = sPlanets[sCurrentPlanetId].dest2;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case MISSION_WARP:
|
||||
sNextPlanetId = sPlanets[sCurrentPlanetId].warp;
|
||||
break;
|
||||
}
|
||||
@@ -1502,7 +1502,7 @@ void Map_8019F164(void) {
|
||||
|
||||
D_menu_801CEFD8 = 0;
|
||||
|
||||
if (D_menu_801CD93C != 0) {
|
||||
if (sPrevMissionStatus != MISSION_COMPLETE) {
|
||||
D_menu_801CEFD8 = 1;
|
||||
}
|
||||
|
||||
@@ -1521,7 +1521,7 @@ void Map_8019F42C(void) {
|
||||
D_menu_801CD974 = 1;
|
||||
sCurrentPlanetId = Map_GetPlanetId(gCurrentLevel);
|
||||
|
||||
D_ctx_80177B70[gMissionNumber] = gHitCount;
|
||||
gMissionHitCount[gMissionNumber] = gHitCount;
|
||||
|
||||
Map_8019F910();
|
||||
Map_8019FD1C(gCurrentLevel, 0);
|
||||
@@ -1534,7 +1534,7 @@ void Map_8019F42C(void) {
|
||||
|
||||
if (gMissionNumber != 0) {
|
||||
for (i = 0; i < gMissionNumber; i++) {
|
||||
D_menu_801CD8E0[i] = Map_GetPathId(D_ctx_80177B90[i], D_ctx_80177B90[i + 1]);
|
||||
D_menu_801CD8E0[i] = Map_GetPathId(gMissionPlanet[i], gMissionPlanet[i + 1]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1559,8 +1559,8 @@ void Map_8019F42C(void) {
|
||||
|
||||
void Map_8019F600(void) {
|
||||
s32 i;
|
||||
s32 sp18;
|
||||
s32 temp_t4;
|
||||
s32 path1;
|
||||
s32 path2;
|
||||
|
||||
gTotalHits = 0;
|
||||
gHitCount = 0;
|
||||
@@ -1568,58 +1568,59 @@ void Map_8019F600(void) {
|
||||
gTeamShields[TEAM_ID_FALCO] = 255;
|
||||
gTeamShields[TEAM_ID_SLIPPY] = 255;
|
||||
gTeamShields[TEAM_ID_PEPPY] = 255;
|
||||
gSavedTeamShields[1] = 255;
|
||||
gSavedTeamShields[2] = 255;
|
||||
gSavedTeamShields[3] = 255;
|
||||
gPrevPlanetTeamShields[1] = 255;
|
||||
gPrevPlanetTeamShields[2] = 255;
|
||||
gPrevPlanetTeamShields[3] = 255;
|
||||
D_ctx_80177C58[1] = 255;
|
||||
D_ctx_80177C58[2] = 255;
|
||||
D_ctx_80177C58[3] = 255;
|
||||
gSavedTeamShields[TEAM_ID_FALCO] = 255;
|
||||
gSavedTeamShields[TEAM_ID_SLIPPY] = 255;
|
||||
gSavedTeamShields[TEAM_ID_PEPPY] = 255;
|
||||
gPrevPlanetTeamShields[TEAM_ID_FALCO] = 255;
|
||||
gPrevPlanetTeamShields[TEAM_ID_SLIPPY] = 255;
|
||||
gPrevPlanetTeamShields[TEAM_ID_PEPPY] = 255;
|
||||
D_ctx_80177C58[TEAM_ID_FALCO] = 255;
|
||||
D_ctx_80177C58[TEAM_ID_SLIPPY] = 255;
|
||||
D_ctx_80177C58[TEAM_ID_PEPPY] = 255;
|
||||
|
||||
D_menu_801CD950 = -1;
|
||||
sPrevPlanetId = PLANET_NONE;
|
||||
|
||||
for (i = 0; i < 15; i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(sPlanets); i++) {
|
||||
sPlanets[i].alpha = 0;
|
||||
}
|
||||
|
||||
D_menu_801CD970 = 0;
|
||||
for (i = 0; i < 24; i++) {
|
||||
//! @bug gPlanetPathStatus is 2 shorter than sPaths
|
||||
for (i = 0; i < ARRAY_COUNT(sPaths); i++) {
|
||||
gPlanetPathStatus[i] = 0;
|
||||
gTexturedLines[i].unk_24 = 0.0f;
|
||||
}
|
||||
|
||||
for (i = 0; i < 7; i++) {
|
||||
D_ctx_80177BB0[i] = 0;
|
||||
D_ctx_80177B70[i] = 0;
|
||||
D_ctx_80177B50[i] = 0x00FFFFFF;
|
||||
for (i = 0; i < ARRAY_COUNT(gMissionMedal); i++) {
|
||||
gMissionMedal[i] = 0;
|
||||
gMissionHitCount[i] = 0;
|
||||
gMissionTeamStatus[i] = 0x00FFFFFF;
|
||||
}
|
||||
D_ctx_80177B90[0] = PLANET_CORNERIA;
|
||||
D_ctx_80177B90[1] = PLANET_NONE;
|
||||
D_ctx_80177B90[2] = PLANET_NONE;
|
||||
D_ctx_80177B90[3] = PLANET_NONE;
|
||||
D_ctx_80177B90[4] = PLANET_NONE;
|
||||
D_ctx_80177B90[5] = PLANET_NONE;
|
||||
D_ctx_80177B90[6] = PLANET_VENOM;
|
||||
gMissionPlanet[0] = PLANET_CORNERIA;
|
||||
gMissionPlanet[1] = PLANET_NONE;
|
||||
gMissionPlanet[2] = PLANET_NONE;
|
||||
gMissionPlanet[3] = PLANET_NONE;
|
||||
gMissionPlanet[4] = PLANET_NONE;
|
||||
gMissionPlanet[5] = PLANET_NONE;
|
||||
gMissionPlanet[6] = PLANET_VENOM;
|
||||
|
||||
for (i = 0; i < 24; i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(sPaths); i++) {
|
||||
sPaths[i].alpha = 255;
|
||||
}
|
||||
|
||||
gMissionNumber = 0;
|
||||
gCurrentLevel = 0;
|
||||
gCurrentLevel = LEVEL_CORNERIA;
|
||||
|
||||
sCurrentPlanetId = 9;
|
||||
sCurrentPlanetId = PLANET_CORNERIA;
|
||||
D_menu_801CEA9C = 0.0f;
|
||||
D_menu_801CD9B0 = 0.002f;
|
||||
D_menu_801CD9B4 = 0.01f;
|
||||
D_menu_801CD944 = 0;
|
||||
|
||||
sp18 = Map_GetPathId(sCurrentPlanetId, sPlanets[sCurrentPlanetId].dest1);
|
||||
temp_t4 = Map_GetPathId(sCurrentPlanetId, sPlanets[sCurrentPlanetId].dest2);
|
||||
gPlanetPathStatus[sp18] = 1;
|
||||
gPlanetPathStatus[temp_t4] = 1;
|
||||
path1 = Map_GetPathId(sCurrentPlanetId, sPlanets[sCurrentPlanetId].dest1);
|
||||
path2 = Map_GetPathId(sCurrentPlanetId, sPlanets[sCurrentPlanetId].dest2);
|
||||
gPlanetPathStatus[path1] = 1;
|
||||
gPlanetPathStatus[path2] = 1;
|
||||
}
|
||||
|
||||
void Map_8019F83C(void) {
|
||||
@@ -1648,9 +1649,9 @@ void Map_8019F910(void) {
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (gTeamShields[3 - i] <= 0) {
|
||||
D_ctx_80177B50[gMissionNumber] ^= mask;
|
||||
gMissionTeamStatus[gMissionNumber] ^= mask;
|
||||
} else {
|
||||
D_ctx_80177B50[gMissionNumber] |= mask;
|
||||
gMissionTeamStatus[gMissionNumber] |= mask;
|
||||
}
|
||||
mask >>= 8;
|
||||
}
|
||||
@@ -1690,10 +1691,10 @@ void Map_8019FC04(void) {
|
||||
}
|
||||
|
||||
for (i = 0; i < 7; i++) {
|
||||
if (D_ctx_80177B90[i] == PLANET_KATINA) {
|
||||
if (gMissionPlanet[i] == PLANET_KATINA) {
|
||||
D_menu_801CEB48[1] = false;
|
||||
}
|
||||
if (D_ctx_80177B90[i] == PLANET_SECTOR_Y) {
|
||||
if (gMissionPlanet[i] == PLANET_SECTOR_Y) {
|
||||
D_menu_801CEB48[2] = false;
|
||||
}
|
||||
}
|
||||
@@ -2780,7 +2781,7 @@ void Map_801A281C(void) {
|
||||
|
||||
D_menu_801CEECC = Map_GetPathId(sCurrentPlanetId, sNextPlanetId);
|
||||
|
||||
if (D_menu_801CD93C == 2) {
|
||||
if (sPrevMissionStatus == MISSION_WARP) {
|
||||
gPlanetPathStatus[D_menu_801CEECC] = 5;
|
||||
sPaths[D_menu_801CEECC].unk_14 = 5;
|
||||
} else {
|
||||
@@ -2907,7 +2908,7 @@ void Map_801A2EB8(void) {
|
||||
s32 temp2;
|
||||
|
||||
if (D_menu_801CD9C4 == 30) {
|
||||
if (D_menu_801CD93C == 2) {
|
||||
if (sPrevMissionStatus == MISSION_WARP) {
|
||||
AUDIO_PLAY_SFX(0x0900802A, gDefaultSfxSource, 4);
|
||||
} else {
|
||||
AUDIO_PLAY_SFX(0x09000032, gDefaultSfxSource, 4);
|
||||
@@ -2918,7 +2919,7 @@ void Map_801A2EB8(void) {
|
||||
|
||||
if (D_menu_801CD9C4 == 80) {
|
||||
sCurrentPlanetId = sNextPlanetId;
|
||||
D_ctx_80177B90[gMissionNumber] = sCurrentPlanetId;
|
||||
gMissionPlanet[gMissionNumber] = sCurrentPlanetId;
|
||||
Map_801A6368();
|
||||
}
|
||||
|
||||
@@ -2982,7 +2983,7 @@ void Map_801A2EB8(void) {
|
||||
}
|
||||
|
||||
if ((D_menu_801CEED8 == 5) && (D_menu_801CEEDC == 0.0f)) {
|
||||
if (D_menu_801CD93C != 2) {
|
||||
if (sPrevMissionStatus != MISSION_WARP) {
|
||||
sPaths[D_menu_801CEECC].unk_14 = 2;
|
||||
D_menu_801CEEA0 = 0;
|
||||
D_menu_801CEEA4 = 100;
|
||||
@@ -3482,7 +3483,7 @@ void Map_801A4AE8(void) {
|
||||
if (D_menu_801CF000[D_menu_801CEFDC] == 0) {
|
||||
if (D_menu_801CEFD0 != 0) {
|
||||
if (gLifeCount[gPlayerNum] != 0) {
|
||||
func_8001D520();
|
||||
Audio_PlayDeathSequence();
|
||||
D_menu_801CD9CC = 1;
|
||||
D_menu_801CD9D0 = 0;
|
||||
D_menu_801CD9B8 = 120;
|
||||
@@ -3508,7 +3509,7 @@ void Map_801A4AE8(void) {
|
||||
D_menu_801CD9CC = 0;
|
||||
|
||||
var_a0 = D_menu_801CEFDC;
|
||||
if (D_menu_801CD93C != 0) {
|
||||
if (sPrevMissionStatus != MISSION_COMPLETE) {
|
||||
var_a0 += 2;
|
||||
}
|
||||
|
||||
@@ -3555,7 +3556,7 @@ void Map_801A4D7C(void) {
|
||||
|
||||
if (Map_801A5770() != 0) {
|
||||
D_menu_801CEFE8[D_menu_801CEFDC] = 255.0f;
|
||||
if (D_menu_801CD93C != 0) {
|
||||
if (sPrevMissionStatus != MISSION_COMPLETE) {
|
||||
if (D_menu_801CEFD4 < 0) {
|
||||
D_menu_801CEFDC++;
|
||||
if (D_menu_801CEFDC >= 3) {
|
||||
@@ -3583,18 +3584,19 @@ void Map_801A4D7C(void) {
|
||||
}
|
||||
|
||||
if (gControllerPress[gMainController].button & (B_BUTTON | START_BUTTON)) {
|
||||
func_8001D6DC(0);
|
||||
Audio_PlayMapMenuSfx(0);
|
||||
D_menu_801CEFC4 = 0;
|
||||
D_menu_801CD944 = 3;
|
||||
return;
|
||||
}
|
||||
|
||||
if (gControllerPress[gMainController].button & A_BUTTON) {
|
||||
func_8001D6DC(0);
|
||||
Audio_PlayMapMenuSfx(0);
|
||||
AUDIO_PLAY_SFX(0x49000003, gDefaultSfxSource, 4);
|
||||
D_menu_801CF000[D_menu_801CEFDC] = 10;
|
||||
|
||||
if (((D_menu_801CD93C != 0) && (D_menu_801CEFDC == 2)) || ((D_menu_801CD93C == 0) && (D_menu_801CEFDC == 1))) {
|
||||
if (((sPrevMissionStatus != MISSION_COMPLETE) && (D_menu_801CEFDC == 2)) ||
|
||||
((sPrevMissionStatus == MISSION_COMPLETE) && (D_menu_801CEFDC == 1))) {
|
||||
D_menu_801CEFD0 = 1;
|
||||
D_menu_801CF00C = 10;
|
||||
}
|
||||
@@ -3656,17 +3658,17 @@ void Map_801A4FC4(void) {
|
||||
D_menu_801CEEA8 = 255;
|
||||
D_menu_801CEEAC = 255;
|
||||
|
||||
gTotalHits -= D_ctx_80177B70[gMissionNumber - 1];
|
||||
D_ctx_80177B90[gMissionNumber] = PLANET_NONE;
|
||||
D_ctx_80177B70[gMissionNumber - 1] = 0;
|
||||
D_ctx_80177BB0[gMissionNumber - 1] = 0;
|
||||
D_ctx_80177B50[gMissionNumber - 1] = 0x00FFFFFF;
|
||||
gTotalHits -= gMissionHitCount[gMissionNumber - 1];
|
||||
gMissionPlanet[gMissionNumber] = PLANET_NONE;
|
||||
gMissionHitCount[gMissionNumber - 1] = 0;
|
||||
gMissionMedal[gMissionNumber - 1] = 0;
|
||||
gMissionTeamStatus[gMissionNumber - 1] = 0x00FFFFFF;
|
||||
gHitCount = 0;
|
||||
gMissionNumber--;
|
||||
|
||||
D_menu_801CD83C = Map_801A05B4();
|
||||
|
||||
sCurrentPlanetId = D_menu_801CD950;
|
||||
sCurrentPlanetId = sPrevPlanetId;
|
||||
|
||||
if (sPlanets[sCurrentPlanetId].dest1 != PLANET_NONE) {
|
||||
temp2 = Map_GetPathId(sCurrentPlanetId, sPlanets[sCurrentPlanetId].dest1);
|
||||
@@ -3712,11 +3714,11 @@ void Map_801A53C8(void) {
|
||||
sPaths[D_menu_801CEECC].alpha = 0;
|
||||
sPaths[D_menu_801CEECC].unk_14 = 0;
|
||||
|
||||
sCurrentPlanetId = D_menu_801CD950;
|
||||
sCurrentPlanetId = sPrevPlanetId;
|
||||
|
||||
if (!D_menu_801CEFD8) {
|
||||
sNextPlanetId = sPlanets[sCurrentPlanetId].dest1;
|
||||
} else if (D_menu_801CD93C != 2) {
|
||||
} else if (sPrevMissionStatus != MISSION_WARP) {
|
||||
if (sPlanets[sCurrentPlanetId].dest2 != PLANET_NONE) {
|
||||
sNextPlanetId = sPlanets[sCurrentPlanetId].dest2;
|
||||
} else {
|
||||
@@ -3747,7 +3749,7 @@ void Map_801A53C8(void) {
|
||||
D_menu_801CEEAC = 255;
|
||||
|
||||
sCurrentPlanetId = sNextPlanetId;
|
||||
D_ctx_80177B90[gMissionNumber] = sCurrentPlanetId;
|
||||
gMissionPlanet[gMissionNumber] = sCurrentPlanetId;
|
||||
|
||||
Map_801A6368();
|
||||
|
||||
@@ -3820,7 +3822,7 @@ void Map_801A5834(void) {
|
||||
}
|
||||
|
||||
var_t0 = 1;
|
||||
if (D_menu_801CD93C == 0) {
|
||||
if (sPrevMissionStatus == MISSION_COMPLETE) {
|
||||
var_t0 = 0;
|
||||
}
|
||||
|
||||
@@ -3850,7 +3852,7 @@ void Map_801A5834(void) {
|
||||
z = 24.0f;
|
||||
colorIndex++;
|
||||
|
||||
if (D_menu_801CD93C != 0) {
|
||||
if (sPrevMissionStatus != MISSION_COMPLETE) {
|
||||
mask = 0xFFFFFFFF;
|
||||
if (D_menu_801CF000[colorIndex] != 0) {
|
||||
mask = 0x00000001;
|
||||
@@ -4261,7 +4263,7 @@ void Map_801A659C(void) {
|
||||
Audio_KillSfxById(0x1100004C);
|
||||
Audio_KillSfxById(0x1100204C);
|
||||
|
||||
if (sCurrentPlanetId != 9) {
|
||||
if (sCurrentPlanetId != PLANET_CORNERIA) {
|
||||
AUDIO_PLAY_SFX(0x49000003, gDefaultSfxSource, 4);
|
||||
}
|
||||
|
||||
@@ -4565,7 +4567,7 @@ void Map_801A6EC0(PlanetId planetId) {
|
||||
void Map_801A7230(PlanetId planetId) {
|
||||
switch (sPlanets[planetId].anim) {
|
||||
case PL_ANIM_STATIC:
|
||||
if ((D_menu_801CD944 == 3 || planetId == sCurrentPlanetId || planetId == sNextPlanetId) &&
|
||||
if (((D_menu_801CD944 == 3) || (planetId == sCurrentPlanetId) || (planetId == sNextPlanetId)) &&
|
||||
D_menu_801CD944 != 1 && D_menu_801CD944 != 7) {
|
||||
RCP_SetupDL(&gMasterDisp, 0x35);
|
||||
} else {
|
||||
@@ -4575,7 +4577,7 @@ void Map_801A7230(PlanetId planetId) {
|
||||
break;
|
||||
|
||||
case PL_ANIM_ROTATE_Y:
|
||||
if ((D_menu_801CD944 == 3 || planetId == sCurrentPlanetId || planetId == sNextPlanetId) &&
|
||||
if (((D_menu_801CD944 == 3) || (planetId == sCurrentPlanetId) || (planetId == sNextPlanetId)) &&
|
||||
D_menu_801CD944 != 1 && D_menu_801CD944 != 7) {
|
||||
RCP_SetupDL(&gMasterDisp, 0x17);
|
||||
} else {
|
||||
@@ -5181,7 +5183,7 @@ void Map_801A9224(void) {
|
||||
mask = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
if ((D_menu_801CD944 == 3) || ((sCurrentPlanetId == 0) && (D_menu_801CD944 != 7))) {
|
||||
if ((D_menu_801CD944 == 3) || ((sCurrentPlanetId == PLANET_METEO) && (D_menu_801CD944 != 7))) {
|
||||
RCP_SetupDL(&gMasterDisp, 0x35);
|
||||
} else {
|
||||
RCP_SetupDL(&gMasterDisp, 0x40);
|
||||
@@ -5493,9 +5495,9 @@ void Map_801A9FD4(s32 arg0) {
|
||||
Matrix_SetGfxMtx(&gMasterDisp);
|
||||
|
||||
for (var_fs0 = 0.0f, var_fs1 = -41.5f, i = 0; i < var_s3; i++, var_fs0 += 24.0f + temp, var_fs1 += 13.8f) {
|
||||
if (D_ctx_80177B90[i] != PLANET_NONE) {
|
||||
Map_801AA434(i, 28.0f + var_fs0, 182.0f, D_ctx_80177B90[i]);
|
||||
Map_801AA778(i, var_fs1, -25.4f, D_ctx_80177B90[i]);
|
||||
if (gMissionPlanet[i] != PLANET_NONE) {
|
||||
Map_801AA434(i, 28.0f + var_fs0, 182.0f, gMissionPlanet[i]);
|
||||
Map_801AA778(i, var_fs1, -25.4f, gMissionPlanet[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5511,7 +5513,7 @@ void Map_801AA1CC(s32 arg0) {
|
||||
s32 temp;
|
||||
f32 y = 182.0f;
|
||||
f32 x2 = 16.0f;
|
||||
PlanetId* ptr = &D_ctx_80177B90[0];
|
||||
PlanetId* ptr = &gMissionPlanet[0];
|
||||
|
||||
for (x = 0.0f, i = 0; i < 7; i++, x += 24.0f + x2, ptr++) {
|
||||
RCP_SetupDL(&gMasterDisp, 0x53);
|
||||
@@ -5567,8 +5569,8 @@ void Map_801AA434(s32 arg0, f32 x, f32 y, s32 idx) {
|
||||
Graphics_DisplaySmallText(x + 12.0f - Graphics_GetSmallTextWidth(sPlanetNames[idx]) * 0.5f, y - 8.0f, 1.0f, 1.0f,
|
||||
sPlanetNames[idx]);
|
||||
|
||||
Graphics_DisplaySmallNumber(x + 15.0f - ((func_hud_8008BCBC(D_ctx_80177B70[arg0]) - 1) * 8), y + 24.0f + 1.0f,
|
||||
D_ctx_80177B70[arg0]);
|
||||
Graphics_DisplaySmallNumber(x + 15.0f - ((func_hud_8008BCBC(gMissionHitCount[arg0]) - 1) * 8), y + 24.0f + 1.0f,
|
||||
gMissionHitCount[arg0]);
|
||||
|
||||
if (D_game_80161A34 == 7) {
|
||||
temp = gMissionNumber;
|
||||
@@ -5581,7 +5583,7 @@ void Map_801AA434(s32 arg0, f32 x, f32 y, s32 idx) {
|
||||
mask = 0x00FF0000;
|
||||
x2 = 0.0f;
|
||||
for (i = 0; i < 3; i++, x2 += 9.0f) {
|
||||
if ((D_ctx_80177B50[arg0] & mask)) {
|
||||
if ((gMissionTeamStatus[arg0] & mask)) {
|
||||
RCP_SetupDL(&gMasterDisp, 0x53);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, D_menu_801B6ADC[i], D_menu_801B6AE8[i], D_menu_801B6AF4[i], 255);
|
||||
Graphics_DisplaySmallText((s32) x + x2 - 1.0f, (s32) y + 24.0f + 8.0f + 2.0f, 1.0f, 1.0f,
|
||||
@@ -5753,7 +5755,7 @@ void Map_801AA778(s32 arg0, f32 x, f32 y, PlanetId planetId) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (D_ctx_80177BB0[arg0] != 0) {
|
||||
if (gMissionMedal[arg0] != 0) {
|
||||
Map_801AB17C(x, y, 0.0f);
|
||||
}
|
||||
}
|
||||
@@ -6560,8 +6562,8 @@ void Map_801AD11C(void) {
|
||||
var_t0 = 0;
|
||||
|
||||
if (gControllerPress[gMainController].button & A_BUTTON) {
|
||||
if ((D_game_80161A34 == 7) && (D_menu_801CD93C != 0) && (!D_menu_801CEFD0)) {
|
||||
func_8001D6DC(1);
|
||||
if ((D_game_80161A34 == 7) && (sPrevMissionStatus != MISSION_COMPLETE) && (!D_menu_801CEFD0)) {
|
||||
Audio_PlayMapMenuSfx(1);
|
||||
D_menu_801CEFC4 = 1;
|
||||
D_menu_801CEFD4 = 0;
|
||||
D_menu_801CEFDC = 0;
|
||||
@@ -6581,7 +6583,7 @@ void Map_801AD11C(void) {
|
||||
if (D_menu_801CEFD0) {
|
||||
AUDIO_PLAY_SFX(0x4900100A, gDefaultSfxSource, 4);
|
||||
} else {
|
||||
func_8001D6DC(1);
|
||||
Audio_PlayMapMenuSfx(1);
|
||||
D_menu_801CEFC4 = 1;
|
||||
D_menu_801CEFD4 = 0;
|
||||
D_menu_801CEFDC = 0;
|
||||
@@ -6620,11 +6622,11 @@ void Map_801AD11C(void) {
|
||||
if (var_a1 < var_a2) {
|
||||
var_a0 = var_a2;
|
||||
}
|
||||
func_8001D15C(var_a0);
|
||||
Audio_SetSfxMapModulation(var_a0);
|
||||
}
|
||||
|
||||
if (D_menu_801CF014 == 0 && var_a3 == 1) {
|
||||
func_8001D10C(gDefaultSfxSource, 0x1100204C);
|
||||
Audio_PlaySfxModulated(gDefaultSfxSource, 0x1100204C);
|
||||
D_menu_801CF014 = 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -435,8 +435,8 @@ void Option_Setup(void) {
|
||||
|
||||
if ((D_game_80161A34 == 5) || (D_game_80161A34 == 8)) {
|
||||
if (D_game_80161A34 == 8) {
|
||||
D_ctx_80177B90[gMissionNumber] = PLANET_VENOM;
|
||||
if (D_play_800D3180[LEVEL_VENOM_ANDROSS] == 1) {
|
||||
gMissionPlanet[gMissionNumber] = PLANET_VENOM;
|
||||
if (gLeveLClearStatus[LEVEL_VENOM_ANDROSS] == 1) {
|
||||
gSaveFile.save.data.planet[SAVE_SLOT_VENOM_1].played = 1;
|
||||
if (playedExpertMode) {
|
||||
gSaveFile.save.data.planet[SAVE_SLOT_VENOM_1].expertClear = 1;
|
||||
@@ -444,8 +444,8 @@ void Option_Setup(void) {
|
||||
gSaveFile.save.data.planet[SAVE_SLOT_VENOM_1].normalClear = 1;
|
||||
}
|
||||
Save_Write();
|
||||
} else if (D_play_800D3180[LEVEL_VENOM_ANDROSS] == 2) {
|
||||
D_ctx_80177BB0[gMissionNumber] = 1;
|
||||
} else if (gLeveLClearStatus[LEVEL_VENOM_ANDROSS] == 2) {
|
||||
gMissionMedal[gMissionNumber] = 1;
|
||||
gSaveFile.save.data.planet[SAVE_SLOT_VENOM_2].played = 1;
|
||||
if (playedExpertMode) {
|
||||
gSaveFile.save.data.planet[SAVE_SLOT_VENOM_2].expertClear = 1;
|
||||
@@ -3836,9 +3836,9 @@ s32 Option_8019C8C4(void) {
|
||||
s32 temp[10];
|
||||
|
||||
for (i = 0; i < gMissionNumber + 1; i++) {
|
||||
var_v0 += ((D_ctx_80177B50[i] & 0x00FF0000) >> 16) & 1;
|
||||
var_v0 += ((D_ctx_80177B50[i] & 0x0000FF00) >> 8) & 1;
|
||||
var_v0 += (D_ctx_80177B50[i] & 0x000000FF) & 1;
|
||||
var_v0 += ((gMissionTeamStatus[i] & 0x00FF0000) >> 16) & 1;
|
||||
var_v0 += ((gMissionTeamStatus[i] & 0x0000FF00) >> 8) & 1;
|
||||
var_v0 += (gMissionTeamStatus[i] & 0x000000FF) & 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < 10; i++) {
|
||||
@@ -4155,13 +4155,13 @@ void Option_8019D624(void) {
|
||||
sp10A[10] = 0;
|
||||
|
||||
for (i = 0; i < 7; i++) {
|
||||
sp10A[10] |= (D_ctx_80177BB0[i] << i);
|
||||
sp10A[10] |= (gMissionMedal[i] << i);
|
||||
}
|
||||
|
||||
for (j = 0; j < 7; j++) {
|
||||
var_s0[10][j].unk_C = 0;
|
||||
|
||||
var_t2 = D_ctx_80177B70[j];
|
||||
var_t2 = gMissionHitCount[j];
|
||||
|
||||
if (var_t2 > 255) {
|
||||
var_t2 = var_t2 - 256;
|
||||
@@ -4170,21 +4170,21 @@ void Option_8019D624(void) {
|
||||
|
||||
var_s0[10][j].unk_0 = var_t2;
|
||||
|
||||
var_a0 = D_ctx_80177B90[j];
|
||||
var_a0 = gMissionPlanet[j];
|
||||
|
||||
if (D_ctx_80177B90[j] == PLANET_VENOM) {
|
||||
if (gMissionPlanet[j] == PLANET_VENOM) {
|
||||
var_a0 = SAVE_SLOT_VENOM_1;
|
||||
}
|
||||
|
||||
if (D_ctx_80177B90[j] == PLANET_SOLAR) {
|
||||
if (gMissionPlanet[j] == PLANET_SOLAR) {
|
||||
var_a0 = SAVE_SLOT_SOLAR;
|
||||
}
|
||||
|
||||
var_s0[10][j].unk_8 = var_a0;
|
||||
|
||||
var_s0[10][j].unk_D = ((D_ctx_80177B50[j] & 0x00FF0000) >> 16) & 1;
|
||||
var_s0[10][j].unk_F = ((D_ctx_80177B50[j] & 0x0000FF00) >> 8) & 1;
|
||||
var_s0[10][j].unk_E = (D_ctx_80177B50[j] & 0x000000FF) & 1;
|
||||
var_s0[10][j].unk_D = ((gMissionTeamStatus[j] & 0x00FF0000) >> 16) & 1;
|
||||
var_s0[10][j].unk_F = ((gMissionTeamStatus[j] & 0x0000FF00) >> 8) & 1;
|
||||
var_s0[10][j].unk_E = (gMissionTeamStatus[j] & 0x000000FF) & 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < 10; i++) {
|
||||
|
||||
@@ -1651,7 +1651,7 @@ void Title_8018B5C4(void) {
|
||||
D_menu_801B7BEC = 0;
|
||||
|
||||
Title_8018B058();
|
||||
Audio_SetBaseSfxReverb(0x68);
|
||||
Audio_SetEnvSfxReverb(104);
|
||||
|
||||
D_menu_801B82A8 = 30;
|
||||
|
||||
@@ -1861,7 +1861,7 @@ void Title_8018B5C4(void) {
|
||||
D_menu_801B86AC);
|
||||
|
||||
if (D_menu_801B82B4 > 8) {
|
||||
Audio_SetBaseSfxReverb(0);
|
||||
Audio_SetEnvSfxReverb(0);
|
||||
D_menu_801B82C0 = 0;
|
||||
D_menu_801B82C4 = 5;
|
||||
}
|
||||
|
||||
+6
-6
@@ -230,12 +230,12 @@ void Fault_ThreadEntry(void* arg0) {
|
||||
var_s0 = 0;
|
||||
var_s2 = 0;
|
||||
|
||||
osSetEventMesg(OS_EVENT_CPU_BREAK, &gFaultMgr.msgQueue, (OSMesg) FAULT_MESG_BREAK);
|
||||
osSetEventMesg(OS_EVENT_FAULT, &gFaultMgr.msgQueue, (OSMesg) FAULT_MESG_FAULT);
|
||||
osSetEventMesg(OS_EVENT_CPU_BREAK, &gFaultMgr.mesgQueue, (OSMesg) FAULT_MESG_BREAK);
|
||||
osSetEventMesg(OS_EVENT_FAULT, &gFaultMgr.mesgQueue, (OSMesg) FAULT_MESG_FAULT);
|
||||
|
||||
sp40 = NULL;
|
||||
while (sp40 == NULL) {
|
||||
osRecvMesg(&gFaultMgr.msgQueue, &sp44, OS_MESG_BLOCK);
|
||||
MQ_WAIT_FOR_MESG(&gFaultMgr.mesgQueue, &sp44);
|
||||
sp40 = func_80007CEC();
|
||||
}
|
||||
|
||||
@@ -244,8 +244,8 @@ void Fault_ThreadEntry(void* arg0) {
|
||||
|
||||
#if 1 // Turn this off for instant crash debugger (no button combination needed)
|
||||
while (var_s5 == 0) {
|
||||
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_READ_CONTROLLER, OS_MESG_PRI_NORMAL);
|
||||
osRecvMesg(&gControllerMsgQueue, NULL, OS_MESG_BLOCK);
|
||||
osSendMesg(&gSerialThreadMesgQueue, (OSMesg) SI_READ_CONTROLLER, OS_MESG_NOBLOCK);
|
||||
MQ_WAIT_FOR_MESG(&gControllerMesgQueue, NULL);
|
||||
Controller_UpdateInput();
|
||||
switch (var_s0) {
|
||||
case 0:
|
||||
@@ -332,7 +332,7 @@ void Fault_Init(void) {
|
||||
gFaultMgr.fb = (FrameBuffer*) (PHYS_TO_K0(osMemSize) - sizeof(FrameBuffer));
|
||||
gFaultMgr.width = SCREEN_WIDTH;
|
||||
gFaultMgr.height = SCREEN_HEIGHT;
|
||||
osCreateMesgQueue(&gFaultMgr.msgQueue, &gFaultMgr.msg, 1);
|
||||
osCreateMesgQueue(&gFaultMgr.mesgQueue, &gFaultMgr.msg, 1);
|
||||
osCreateThread(&gFaultMgr.thread, THREAD_ID_FAULT, Fault_ThreadEntry, 0, gFaultMgr.stack + sizeof(gFaultMgr.stack),
|
||||
127);
|
||||
osStartThread(&gFaultMgr.thread);
|
||||
|
||||
@@ -88,33 +88,33 @@ void Controller_ReadData(void) {
|
||||
}
|
||||
} else {
|
||||
osContStartReadData(&gSerialEventQueue);
|
||||
osRecvMesg(&gSerialEventQueue, NULL, OS_MESG_BLOCK);
|
||||
MQ_WAIT_FOR_MESG(&gSerialEventQueue, NULL);
|
||||
osContGetReadData(sNextController);
|
||||
}
|
||||
osSendMesg(&gControllerMsgQueue, (OSMesg) SI_CONT_READ_DONE, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gControllerMesgQueue, (OSMesg) SI_CONT_READ_DONE, OS_MESG_NOBLOCK);
|
||||
}
|
||||
|
||||
void Save_ReadData(void) {
|
||||
if ((gStartNMI == 0) && (Save_ReadEeprom(&gSaveIOBuffer) == 0)) {
|
||||
osSendMesg(&gSaveMsgQueue, (OSMesg) SI_SAVE_SUCCESS, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gSaveMesgQueue, (OSMesg) SI_SAVE_SUCCESS, OS_MESG_NOBLOCK);
|
||||
return;
|
||||
}
|
||||
osSendMesg(&gSaveMsgQueue, (OSMesg) SI_SAVE_FAILED, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gSaveMesgQueue, (OSMesg) SI_SAVE_FAILED, OS_MESG_NOBLOCK);
|
||||
}
|
||||
|
||||
void Save_WriteData(void) {
|
||||
if ((gStartNMI == 0) && (Save_WriteEeprom(&gSaveIOBuffer) == 0)) {
|
||||
osSendMesg(&gSaveMsgQueue, (OSMesg) SI_SAVE_SUCCESS, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gSaveMesgQueue, (OSMesg) SI_SAVE_SUCCESS, OS_MESG_NOBLOCK);
|
||||
return;
|
||||
}
|
||||
osSendMesg(&gSaveMsgQueue, (OSMesg) SI_SAVE_FAILED, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gSaveMesgQueue, (OSMesg) SI_SAVE_FAILED, OS_MESG_NOBLOCK);
|
||||
}
|
||||
|
||||
void Controller_Rumble(void) {
|
||||
s32 i;
|
||||
|
||||
osContStartQuery(&gSerialEventQueue);
|
||||
osRecvMesg(&gSerialEventQueue, NULL, OS_MESG_BLOCK);
|
||||
MQ_WAIT_FOR_MESG(&gSerialEventQueue, NULL);
|
||||
osContGetQuery(sControllerStatus);
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
|
||||
+4
-4
@@ -105,15 +105,15 @@ void Lib_DmaRead(void* src, void* dst, ptrdiff_t size) {
|
||||
osInvalICache(dst, size);
|
||||
osInvalDCache(dst, size);
|
||||
while (size > 0x100) {
|
||||
osPiStartDma(&gDmaIOMsg, 0, 0, (uintptr_t) src, dst, 0x100, &gDmaMsgQueue);
|
||||
osPiStartDma(&gDmaIOMsg, 0, 0, (uintptr_t) src, dst, 0x100, &gDmaMesgQueue);
|
||||
size -= 0x100;
|
||||
src = (void*) ((uintptr_t) src + 0x100);
|
||||
dst = (void*) ((uintptr_t) dst + 0x100);
|
||||
osRecvMesg(&gDmaMsgQueue, NULL, OS_MESG_BLOCK);
|
||||
MQ_WAIT_FOR_MESG(&gDmaMesgQueue, NULL);
|
||||
}
|
||||
if (size != 0) {
|
||||
osPiStartDma(&gDmaIOMsg, 0, 0, (uintptr_t) src, dst, size, &gDmaMsgQueue);
|
||||
osRecvMesg(&gDmaMsgQueue, NULL, OS_MESG_BLOCK);
|
||||
osPiStartDma(&gDmaIOMsg, 0, 0, (uintptr_t) src, dst, size, &gDmaMesgQueue);
|
||||
MQ_WAIT_FOR_MESG(&gDmaMesgQueue, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+61
-60
@@ -12,32 +12,32 @@ u32 gSegments[16]; // 800E1FD0
|
||||
OSMesgQueue gPiMgrCmdQueue; // 800E2010
|
||||
OSMesg sPiMgrCmdBuff[50]; // 800E2028
|
||||
|
||||
OSMesgQueue gDmaMsgQueue;
|
||||
OSMesgQueue gDmaMesgQueue;
|
||||
void* sDmaMsgBuff[1];
|
||||
OSIoMesg gDmaIOMsg;
|
||||
OSMesgQueue gSerialEventQueue;
|
||||
void* sSerialEventBuff[1];
|
||||
OSMesgQueue gMainThreadMsgQueue;
|
||||
OSMesgQueue gMainThreadMesgQueue;
|
||||
void* sMainThreadMsgBuff[32];
|
||||
OSMesgQueue gTaskMsgQueue;
|
||||
OSMesgQueue gTaskMesgQueue;
|
||||
void* sTaskMsgBuff[16];
|
||||
OSMesgQueue gAudioVImsgQueue;
|
||||
OSMesgQueue gAudioVImesgQueue;
|
||||
void* sAudioVImsgBuff[1];
|
||||
OSMesgQueue gAudioTaskMsgQueue;
|
||||
OSMesgQueue gAudioTaskMesgQueue;
|
||||
void* sAudioTaskMsgBuff[1];
|
||||
OSMesgQueue gGfxVImsgQueue;
|
||||
OSMesgQueue gGfxVImesgQueue;
|
||||
void* sGfxVImsgBuff[4];
|
||||
OSMesgQueue gGfxTaskMsgQueue;
|
||||
OSMesgQueue gGfxTaskMesgQueue;
|
||||
void* sGfxTaskMsgBuff[2];
|
||||
OSMesgQueue gSerialThreadMsgQueue;
|
||||
OSMesgQueue gSerialThreadMesgQueue;
|
||||
void* sSerialThreadMsgBuff[8];
|
||||
OSMesgQueue gControllerMsgQueue;
|
||||
OSMesgQueue gControllerMesgQueue;
|
||||
void* sControllerMsgBuff[1];
|
||||
OSMesgQueue gSaveMsgQueue;
|
||||
OSMesgQueue gSaveMesgQueue;
|
||||
void* sSaveMsgBuff[1];
|
||||
OSMesgQueue gTimerTaskMsgQueue;
|
||||
OSMesgQueue gTimerTaskMesgQueue;
|
||||
void* sTimerTaskMsgBuff[16];
|
||||
OSMesgQueue gTimerWaitMsgQueue;
|
||||
OSMesgQueue gTimerWaitMesgQueue;
|
||||
void* sTimerWaitMsgBuff[1];
|
||||
|
||||
GfxPool gGfxPools[2];
|
||||
@@ -107,28 +107,28 @@ void Audio_ThreadEntry(void* arg0) {
|
||||
Audio_InitSounds();
|
||||
task = AudioThread_CreateTask();
|
||||
if (task != NULL) {
|
||||
task->msgQueue = &gAudioTaskMsgQueue;
|
||||
task->mesgQueue = &gAudioTaskMesgQueue;
|
||||
task->msg = (OSMesg) TASK_MESG_1;
|
||||
osWritebackDCacheAll();
|
||||
osSendMesg(&gTaskMsgQueue, task, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gTaskMesgQueue, task, OS_MESG_NOBLOCK);
|
||||
}
|
||||
while (1) {
|
||||
task = AudioThread_CreateTask();
|
||||
if (task != NULL) {
|
||||
task->msgQueue = &gAudioTaskMsgQueue;
|
||||
task->mesgQueue = &gAudioTaskMesgQueue;
|
||||
task->msg = (OSMesg) TASK_MESG_1;
|
||||
osWritebackDCacheAll();
|
||||
}
|
||||
osRecvMesg(&gAudioTaskMsgQueue, NULL, OS_MESG_NOBLOCK);
|
||||
MQ_GET_MESG(&gAudioTaskMesgQueue, NULL);
|
||||
if (task != NULL) {
|
||||
osSendMesg(&gTaskMsgQueue, task, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gTaskMesgQueue, task, OS_MESG_NOBLOCK);
|
||||
}
|
||||
osRecvMesg(&gAudioVImsgQueue, NULL, OS_MESG_BLOCK);
|
||||
MQ_WAIT_FOR_MESG(&gAudioVImesgQueue, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void Graphics_SetTask(void) {
|
||||
gGfxTask->msgQueue = &gGfxTaskMsgQueue;
|
||||
gGfxTask->mesgQueue = &gGfxTaskMesgQueue;
|
||||
gGfxTask->msg = (OSMesg) TASK_MESG_2;
|
||||
gGfxTask->task.t.type = M_GFXTASK;
|
||||
gGfxTask->task.t.flags = 0;
|
||||
@@ -147,7 +147,7 @@ void Graphics_SetTask(void) {
|
||||
gGfxTask->task.t.yield_data_ptr = (u64*) &gOSYieldData;
|
||||
gGfxTask->task.t.yield_data_size = OS_YIELD_DATA_SIZE;
|
||||
osWritebackDCacheAll();
|
||||
osSendMesg(&gTaskMsgQueue, gGfxTask, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gTaskMesgQueue, gGfxTask, OS_MESG_NOBLOCK);
|
||||
}
|
||||
|
||||
void Graphics_InitializeTask(u32 frameCount) {
|
||||
@@ -200,7 +200,7 @@ void SerialInterface_ThreadEntry(void* arg0) {
|
||||
|
||||
Controller_Init();
|
||||
while (1) {
|
||||
osRecvMesg(&gSerialThreadMsgQueue, &sp34, OS_MESG_BLOCK);
|
||||
MQ_WAIT_FOR_MESG(&gSerialThreadMesgQueue, &sp34);
|
||||
|
||||
switch ((s32) sp34) {
|
||||
case SI_READ_CONTROLLER:
|
||||
@@ -223,7 +223,7 @@ void Timer_ThreadEntry(void* arg0) {
|
||||
void* sp24;
|
||||
|
||||
while (1) {
|
||||
osRecvMesg(&gTimerTaskMsgQueue, &sp24, OS_MESG_BLOCK);
|
||||
MQ_WAIT_FOR_MESG(&gTimerTaskMesgQueue, &sp24);
|
||||
Timer_CompleteTask(sp24);
|
||||
}
|
||||
}
|
||||
@@ -234,7 +234,7 @@ void Graphics_ThreadEntry(void* arg0) {
|
||||
u8 validVIsPerFrame;
|
||||
|
||||
Game_Initialize();
|
||||
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_READ_CONTROLLER, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gSerialThreadMesgQueue, (OSMesg) SI_READ_CONTROLLER, OS_MESG_NOBLOCK);
|
||||
Graphics_InitializeTask(gSysFrameCount);
|
||||
{
|
||||
gSPSegment(gUnkDisp1++, 0, 0);
|
||||
@@ -250,10 +250,10 @@ void Graphics_ThreadEntry(void* arg0) {
|
||||
while (1) {
|
||||
gSysFrameCount++;
|
||||
Graphics_InitializeTask(gSysFrameCount);
|
||||
osRecvMesg(&gControllerMsgQueue, NULL, OS_MESG_BLOCK);
|
||||
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_RUMBLE, OS_MESG_PRI_NORMAL);
|
||||
MQ_WAIT_FOR_MESG(&gControllerMesgQueue, NULL);
|
||||
osSendMesg(&gSerialThreadMesgQueue, (OSMesg) SI_RUMBLE, OS_MESG_NOBLOCK);
|
||||
Controller_UpdateInput();
|
||||
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_READ_CONTROLLER, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gSerialThreadMesgQueue, (OSMesg) SI_READ_CONTROLLER, OS_MESG_NOBLOCK);
|
||||
if (gControllerPress[3].button & U_JPAD) {
|
||||
Main_SetVIMode();
|
||||
}
|
||||
@@ -270,7 +270,7 @@ void Graphics_ThreadEntry(void* arg0) {
|
||||
gDPFullSync(gMasterDisp++);
|
||||
gSPEndDisplayList(gMasterDisp++);
|
||||
}
|
||||
osRecvMesg(&gGfxTaskMsgQueue, NULL, OS_MESG_BLOCK);
|
||||
MQ_WAIT_FOR_MESG(&gGfxTaskMesgQueue, NULL);
|
||||
Graphics_SetTask();
|
||||
if (gFillScreen == 0) {
|
||||
osViSwapBuffer(&gFrameBuffers[(gSysFrameCount - 1) % 3]);
|
||||
@@ -278,9 +278,9 @@ void Graphics_ThreadEntry(void* arg0) {
|
||||
func_80007FE4(&gFrameBuffers[(gSysFrameCount - 1) % 3], SCREEN_WIDTH, 16);
|
||||
|
||||
visPerFrame = MIN(gVIsPerFrame, 4);
|
||||
validVIsPerFrame = MAX(visPerFrame, gGfxVImsgQueue.validCount + 1);
|
||||
validVIsPerFrame = MAX(visPerFrame, gGfxVImesgQueue.validCount + 1);
|
||||
for (i = 0; i < validVIsPerFrame; i += 1) { // Can't be ++
|
||||
osRecvMesg(&gGfxVImsgQueue, NULL, OS_MESG_BLOCK);
|
||||
MQ_WAIT_FOR_MESG(&gGfxVImesgQueue, NULL);
|
||||
}
|
||||
|
||||
Audio_Update();
|
||||
@@ -288,38 +288,39 @@ void Graphics_ThreadEntry(void* arg0) {
|
||||
}
|
||||
|
||||
void Main_InitMesgQueues(void) {
|
||||
osCreateMesgQueue(&gDmaMsgQueue, sDmaMsgBuff, ARRAY_COUNT(sDmaMsgBuff));
|
||||
osCreateMesgQueue(&gTaskMsgQueue, sTaskMsgBuff, ARRAY_COUNT(sTaskMsgBuff));
|
||||
osCreateMesgQueue(&gAudioVImsgQueue, sAudioVImsgBuff, ARRAY_COUNT(sAudioVImsgBuff));
|
||||
osCreateMesgQueue(&gAudioTaskMsgQueue, sAudioTaskMsgBuff, ARRAY_COUNT(sAudioTaskMsgBuff));
|
||||
osCreateMesgQueue(&gGfxVImsgQueue, sGfxVImsgBuff, ARRAY_COUNT(sGfxVImsgBuff));
|
||||
osCreateMesgQueue(&gGfxTaskMsgQueue, sGfxTaskMsgBuff, ARRAY_COUNT(sGfxTaskMsgBuff));
|
||||
osCreateMesgQueue(&gDmaMesgQueue, sDmaMsgBuff, ARRAY_COUNT(sDmaMsgBuff));
|
||||
osCreateMesgQueue(&gTaskMesgQueue, sTaskMsgBuff, ARRAY_COUNT(sTaskMsgBuff));
|
||||
osCreateMesgQueue(&gAudioVImesgQueue, sAudioVImsgBuff, ARRAY_COUNT(sAudioVImsgBuff));
|
||||
osCreateMesgQueue(&gAudioTaskMesgQueue, sAudioTaskMsgBuff, ARRAY_COUNT(sAudioTaskMsgBuff));
|
||||
osCreateMesgQueue(&gGfxVImesgQueue, sGfxVImsgBuff, ARRAY_COUNT(sGfxVImsgBuff));
|
||||
osCreateMesgQueue(&gGfxTaskMesgQueue, sGfxTaskMsgBuff, ARRAY_COUNT(sGfxTaskMsgBuff));
|
||||
osCreateMesgQueue(&gSerialEventQueue, sSerialEventBuff, ARRAY_COUNT(sSerialEventBuff));
|
||||
osSetEventMesg(OS_EVENT_SI, &gSerialEventQueue, NULL);
|
||||
osCreateMesgQueue(&gMainThreadMsgQueue, sMainThreadMsgBuff, ARRAY_COUNT(sMainThreadMsgBuff));
|
||||
osViSetEvent(&gMainThreadMsgQueue, (OSMesg) EVENT_MESG_VI, 1);
|
||||
osSetEventMesg(OS_EVENT_SP, &gMainThreadMsgQueue, (OSMesg) EVENT_MESG_SP);
|
||||
osSetEventMesg(OS_EVENT_DP, &gMainThreadMsgQueue, (OSMesg) EVENT_MESG_DP);
|
||||
osSetEventMesg(OS_EVENT_PRENMI, &gMainThreadMsgQueue, (OSMesg) EVENT_MESG_PRENMI);
|
||||
osCreateMesgQueue(&gTimerTaskMsgQueue, sTimerTaskMsgBuff, ARRAY_COUNT(sTimerTaskMsgBuff));
|
||||
osCreateMesgQueue(&gTimerWaitMsgQueue, sTimerWaitMsgBuff, ARRAY_COUNT(sTimerWaitMsgBuff));
|
||||
osCreateMesgQueue(&gSerialThreadMsgQueue, sSerialThreadMsgBuff, ARRAY_COUNT(sSerialThreadMsgBuff));
|
||||
osCreateMesgQueue(&gControllerMsgQueue, sControllerMsgBuff, ARRAY_COUNT(sControllerMsgBuff));
|
||||
osCreateMesgQueue(&gSaveMsgQueue, sSaveMsgBuff, ARRAY_COUNT(sSaveMsgBuff));
|
||||
osCreateMesgQueue(&gMainThreadMesgQueue, sMainThreadMsgBuff, ARRAY_COUNT(sMainThreadMsgBuff));
|
||||
osViSetEvent(&gMainThreadMesgQueue, (OSMesg) EVENT_MESG_VI, 1);
|
||||
osSetEventMesg(OS_EVENT_SP, &gMainThreadMesgQueue, (OSMesg) EVENT_MESG_SP);
|
||||
osSetEventMesg(OS_EVENT_DP, &gMainThreadMesgQueue, (OSMesg) EVENT_MESG_DP);
|
||||
osSetEventMesg(OS_EVENT_PRENMI, &gMainThreadMesgQueue, (OSMesg) EVENT_MESG_PRENMI);
|
||||
osCreateMesgQueue(&gTimerTaskMesgQueue, sTimerTaskMsgBuff, ARRAY_COUNT(sTimerTaskMsgBuff));
|
||||
osCreateMesgQueue(&gTimerWaitMesgQueue, sTimerWaitMsgBuff, ARRAY_COUNT(sTimerWaitMsgBuff));
|
||||
osCreateMesgQueue(&gSerialThreadMesgQueue, sSerialThreadMsgBuff, ARRAY_COUNT(sSerialThreadMsgBuff));
|
||||
osCreateMesgQueue(&gControllerMesgQueue, sControllerMsgBuff, ARRAY_COUNT(sControllerMsgBuff));
|
||||
osCreateMesgQueue(&gSaveMesgQueue, sSaveMsgBuff, ARRAY_COUNT(sSaveMsgBuff));
|
||||
}
|
||||
|
||||
void Main_HandleRDP(void) {
|
||||
SPTask** var_v1 = sGfxTasks;
|
||||
SPTask** task = sGfxTasks;
|
||||
u8 i;
|
||||
|
||||
if ((*var_v1)->msgQueue != NULL) {
|
||||
osSendMesg((*var_v1)->msgQueue, (*var_v1)->msg, OS_MESG_PRI_NORMAL);
|
||||
if ((*task)->mesgQueue != NULL) {
|
||||
osSendMesg((*task)->mesgQueue, (*task)->msg, OS_MESG_NOBLOCK);
|
||||
}
|
||||
(*var_v1)->state = SPTASK_STATE_FINISHED_DP;
|
||||
for (i = 0; i < ARRAY_COUNT(sGfxTasks) - 1; i += 1, var_v1++) {
|
||||
*var_v1 = *(var_v1 + 1);
|
||||
(*task)->state = SPTASK_STATE_FINISHED_DP;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(sGfxTasks) - 1; i += 1, task++) {
|
||||
*task = *(task + 1);
|
||||
}
|
||||
*var_v1 = NULL;
|
||||
*task = NULL;
|
||||
}
|
||||
|
||||
void Main_HandleRSP(void) {
|
||||
@@ -333,8 +334,8 @@ void Main_HandleRSP(void) {
|
||||
} else {
|
||||
task->state = SPTASK_STATE_FINISHED;
|
||||
if (task->task.t.type == M_AUDTASK) {
|
||||
if (task->msgQueue != NULL) {
|
||||
osSendMesg(task->msgQueue, task->msg, OS_MESG_PRI_NORMAL);
|
||||
if (task->mesgQueue != NULL) {
|
||||
osSendMesg(task->mesgQueue, task->msg, OS_MESG_NOBLOCK);
|
||||
}
|
||||
sAudioTasks[0] = NULL;
|
||||
}
|
||||
@@ -361,7 +362,7 @@ void Main_GetNewTasks(void) {
|
||||
|
||||
newAudioTask = sNewAudioTasks;
|
||||
newGfxTask = sNewGfxTasks;
|
||||
while (osRecvMesg(&gTaskMsgQueue, &spTaskMsg, OS_MESG_NOBLOCK) != MSG_QUEUE_EMPTY) {
|
||||
while (MQ_GET_MESG(&gTaskMesgQueue, &spTaskMsg)) {
|
||||
newTask = (SPTask*) spTaskMsg;
|
||||
newTask->state = SPTASK_STATE_NOT_STARTED;
|
||||
|
||||
@@ -421,7 +422,7 @@ void Main_StartNextTask(void) {
|
||||
}
|
||||
|
||||
void Main_ThreadEntry(void* arg0) {
|
||||
OSMesg ogMsg;
|
||||
OSMesg osMesg;
|
||||
u8 mesg;
|
||||
|
||||
osCreateThread(&gAudioThread, THREAD_ID_AUDIO, Audio_ThreadEntry, arg0,
|
||||
@@ -440,13 +441,13 @@ void Main_ThreadEntry(void* arg0) {
|
||||
Main_InitMesgQueues();
|
||||
|
||||
while (true) {
|
||||
osRecvMesg(&gMainThreadMsgQueue, &ogMsg, OS_MESG_BLOCK);
|
||||
mesg = (u32) ogMsg;
|
||||
MQ_WAIT_FOR_MESG(&gMainThreadMesgQueue, &osMesg);
|
||||
mesg = (u32) osMesg;
|
||||
|
||||
switch (mesg) {
|
||||
case EVENT_MESG_VI:
|
||||
osSendMesg(&gAudioVImsgQueue, (OSMesg) EVENT_MESG_VI, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gGfxVImsgQueue, (OSMesg) EVENT_MESG_VI, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gAudioVImesgQueue, (OSMesg) EVENT_MESG_VI, OS_MESG_NOBLOCK);
|
||||
osSendMesg(&gGfxVImesgQueue, (OSMesg) EVENT_MESG_VI, OS_MESG_NOBLOCK);
|
||||
Main_GetNewTasks();
|
||||
break;
|
||||
case EVENT_MESG_SP:
|
||||
|
||||
+3
-3
@@ -23,7 +23,7 @@ s32 Timer_CreateTask(u64 time, TimerAction action, s32* address, s32 value) {
|
||||
task->action = action;
|
||||
task->address = address;
|
||||
task->value = value;
|
||||
return osSetTimer(&task->timer, time, 0, &gTimerTaskMsgQueue, task);
|
||||
return osSetTimer(&task->timer, time, 0, &gTimerTaskMesgQueue, task);
|
||||
}
|
||||
|
||||
void Timer_Increment(s32* address, s32 value) {
|
||||
@@ -45,6 +45,6 @@ void Timer_Wait(u64 time) {
|
||||
OSTimer timer;
|
||||
OSMesg dummy;
|
||||
|
||||
osSetTimer(&timer, time, 0, &gTimerWaitMsgQueue, NULL);
|
||||
osRecvMesg(&gTimerWaitMsgQueue, &dummy, OS_MESG_BLOCK);
|
||||
osSetTimer(&timer, time, 0, &gTimerWaitMesgQueue, NULL);
|
||||
MQ_WAIT_FOR_MESG(&gTimerWaitMesgQueue, &dummy);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user