Audio stuff (#696)

This commit is contained in:
Unnunu 2022-04-18 18:38:47 +03:00 committed by GitHub
parent 41108b78b5
commit d33a2407df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 1070 additions and 1834 deletions

View File

@ -3,19 +3,96 @@
#include "nu/nualsgi.h" #include "nu/nualsgi.h"
#include "audio.h" #include "audio.h"
s32 D_80078170 = 0; u8 nuAuPreNMI = 0;
NUAuPreNMIFunc nuAuPreNMIFunc = NULL; NUAuPreNMIFunc nuAuPreNMIFunc = NULL;
s32 nuAuDmaNext = 0; s32 nuAuDmaNext = 0;
u32 nuAuFrameCounter = 0; u32 nuAuFrameCounter = 0;
u8 nuAuTaskStop = 1; u8 nuAuTaskStop = NU_AU_TASK_RUN;
u8 D_80078181 = 1; u8 D_80078181 = 1;
//bss //bss
//static u16 D_800A0F50; extern Acmd* D_800A3510[3];
extern NUScTask D_800A3520[3];
extern u8* D_800A3628[3];
extern s32 D_800A3634;
extern s32 D_800A3638;
extern OSMesgQueue nuAuDmaMesgQ;
extern OSMesg nuAuDmaMesgBuf[50];
extern OSIoMesg nuAuDmaIOMesgBuf[];
extern NUDMABuffer* D_800A3BD4;
extern NUDMABuffer nuAuDmaBufList[50];
extern u8 D_800B91A0[];
extern u64 rspbootUcodeBuffer[];
extern OSMesgQueue D_800DA444;
extern s32 D_800DAAB8;
extern u64 n_aspMain_text_bin[];
extern u64 n_aspMain_data_bin[];
extern u8 D_801AA000[0x56000];
s32 nuAuDmaCallBack(s32 addr, s32 len, void* state, s32 arg3); s32 nuAuDmaCallBack(s32 addr, s32 len, void* state, u8 arg3);
void func_8004B328(NUScMsg, u32);
void func_80056250(u8*, ALConfig*);
void nuAuMgr(void*);
void snd_load_audio_data(s32 frequency);
INCLUDE_ASM(s32, "25f00_len_940", create_audio_system); void create_audio_system(void) {
u32 i;
u32 freq, freq2;
ALConfig config;
nuAuTaskStop = NU_AU_TASK_RUN;
nuAuPreNMI = 0;
alHeapInit(&nuAuHeap, D_801AA000, 0x56000);
config.unk_00 = 24;
config.unk_04 = 4;
freq = osAiSetFrequency(32000);
freq2 = (D_800DAAB8 * freq + 59) / 60;
config.frequency = freq;
config.unk_0C = 0;
config.heap = &nuAuHeap;
config.dmaNew = nuAuDmaNew;
D_800A3634 = (freq2 / 184 + 1) * 184; // NU_AU_AUDIO_SAMPLES ?
D_800A3638 = D_800A3634 - 184;
for (i = 0; i < ARRAY_COUNT(D_800A3510); i++) {
D_800A3510[i] = alHeapAlloc(config.heap, 1, 0x4000);
}
for (i = 0; i < ARRAY_COUNT(D_800A3520); i++) {
D_800A3520[i].next = NULL;
D_800A3520[i].msg = 0;
D_800A3520[i].list.t.type = M_AUDTASK;
D_800A3520[i].list.t.ucode_boot = rspbootUcodeBuffer;
D_800A3520[i].list.t.ucode_boot_size = 0x100;
D_800A3520[i].list.t.ucode = n_aspMain_text_bin;
D_800A3520[i].list.t.ucode_data = n_aspMain_data_bin;
D_800A3520[i].list.t.ucode_data_size = SP_UCODE_DATA_SIZE;
D_800A3520[i].list.t.dram_stack = NULL;
D_800A3520[i].list.t.dram_stack_size = 0;
D_800A3520[i].list.t.output_buff = NULL;
D_800A3520[i].list.t.output_buff_size = 0;
D_800A3520[i].list.t.yield_data_ptr = NULL;
D_800A3520[i].list.t.yield_data_size = 0;
}
for (i = 0; i < ARRAY_COUNT(D_800A3628); i++) {
D_800A3628[i] = alHeapAlloc(config.heap, 1, D_800A3634 * 4);
}
nuAuDmaBufList[0].node.next = nuAuDmaBufList[0].node.prev = NULL;
for (i = 0; i < ARRAY_COUNT(nuAuDmaBufList) - 1; i++) {
alLink(&nuAuDmaBufList[i+1].node, &nuAuDmaBufList[i].node);
nuAuDmaBufList[i].ptr = alHeapAlloc(config.heap, 1, 0x500);
}
nuAuDmaBufList[i].ptr = alHeapAlloc(config.heap, 1, 0x500);
osCreateMesgQueue(&nuAuDmaMesgQ, nuAuDmaMesgBuf, 50);
nuAuPreNMIFunc = func_8004B328;
func_80056250(D_800B91A0, &config);
snd_load_audio_data(config.frequency);
osCreateThread(&nuAuMgrThread, NU_MAIN_THREAD_ID, nuAuMgr, NULL, &D_800A3510, NU_AU_MGR_THREAD_PRI); //why main thread?
osStartThread(&nuAuMgrThread);
}
void nuAuPreNMIFuncSet(NUAuPreNMIFunc func) { void nuAuPreNMIFuncSet(NUAuPreNMIFunc func) {
OSIntMask mask = osSetIntMask(OS_IM_NONE); OSIntMask mask = osSetIntMask(OS_IM_NONE);
@ -24,102 +101,164 @@ void nuAuPreNMIFuncSet(NUAuPreNMIFunc func) {
osSetIntMask(mask); osSetIntMask(mask);
} }
INCLUDE_ASM(s32, "25f00_len_940", func_8004AE08); void nuAuMgr(void* arg) {
NUScClient auClient;
OSMesgQueue auMesgQ;
OSMesg auMsgBuf[NU_AU_MESG_MAX];
OSMesgQueue auRtnMesgQ;
OSMesg auRtnMesgBuf;
NUScMsg* mesg_type;
s32 cmdList_len;
Acmd* cmdListAfter_ptr;
s32 cmdListIndex;
s32 bufferIndex;
s32 sampleSize;
Acmd* cmdListBuf;
u8* bufferPtr;
s32 samples;
s32 cond;
extern OSMesgQueue* D_800A3640; osCreateMesgQueue(&auMesgQ, auMsgBuf, NU_AU_MESG_MAX);
extern OSIoMesg D_800A3720[]; osCreateMesgQueue(&auRtnMesgQ, &auRtnMesgBuf, 1);
extern NUDMABuffer* D_800A3BD4; nuScAddClient(&auClient, &auMesgQ, NU_SC_RETRACE_MSG | NU_SC_PRENMI_MSG);
// s32 nuAuDmaCallBack(s32 addr, s32 len, void* state, s32 arg3); cmdList_len = 0;
// WIP cmdListIndex = 0;
#ifdef NON_EQUIVALENT bufferIndex = 0;
s32 nuAuDmaCallBack(s32 addr, s32 len, void *state, u8 arg3) { samples = 0;
NUDMABuffer *temp_s1; cmdListBuf = D_800A3510[0];
NUDMABuffer *temp_a1; bufferPtr = D_800A3628[0];
NUDMABuffer *firstFree; while (TRUE) {
OSIoMesg *mesg; osRecvMesg(&auMesgQ, (OSMesg*)&mesg_type, OS_MESG_BLOCK);
char *temp_s2; switch (*mesg_type) {
s32 temp_s0; case NU_SC_RETRACE_MSG:
s32 temp_s3; if (cmdList_len != 0 && nuAuTaskStop == NU_AU_TASK_RUN) {
char *new_var; D_800A3520[cmdListIndex].msgQ = &auRtnMesgQ;
s32 startAddr; D_800A3520[cmdListIndex].list.t.data_ptr = (u64*)cmdListBuf;
D_800A3520[cmdListIndex].list.t.data_size = (cmdListAfter_ptr - cmdListBuf) * sizeof(Acmd);
if (arg3 == 0) { osSendMesg(&D_800DA444, &D_800A3520[cmdListIndex], OS_MESG_BLOCK);
return osVirtualToPhysical(addr); nuAuCleanDMABuffers();
osRecvMesg(&auRtnMesgQ, NULL, 1);
if (++bufferIndex == 3) {
bufferIndex = 0;
} }
if (++cmdListIndex == 3) {
temp_s1 = D_800A3BD4; cmdListIndex = 0;
while (temp_s1 != NULL) {
startAddr = temp_s1->startAddr;
if (addr >= startAddr) {
if ((startAddr + 0x500) >= (addr + len)) {
temp_s1->frameCnt = nuAuFrameCounter;
return osVirtualToPhysical((temp_s1->ptr + addr) - temp_s1->startAddr);
} }
}
if (osAiGetStatus() & AI_STATUS_FIFO_FULL) {
cond = FALSE;
continue;
}
sampleSize = osAiGetLength() >> 2;
if (cmdList_len != 0 && nuAuTaskStop == NU_AU_TASK_RUN) {
osAiSetNextBuffer(bufferPtr, samples * 4);
cmdListBuf = D_800A3510[cmdListIndex];
bufferPtr = D_800A3628[bufferIndex];
}
if (sampleSize < 184 || cond) {
samples = D_800A3634;
cond = FALSE;
} else { } else {
samples = D_800A3638;
cond = TRUE;
}
cmdListAfter_ptr = alAudioFrame(cmdListBuf, &cmdList_len, (s16*)osVirtualToPhysical(bufferPtr), samples);
if (nuAuPreNMIFunc != 0 && nuAuPreNMI != 0) {
nuAuPreNMIFunc(NU_SC_RETRACE_MSG, nuAuPreNMI);
nuAuPreNMI++;
}
break;
case NU_SC_PRENMI_MSG:
if (nuAuPreNMIFunc) {
nuAuPreNMIFunc(NU_SC_PRENMI_MSG, nuAuPreNMI);
}
nuAuPreNMI++;
break; break;
} }
}
temp_s1 = temp_s1->node.next;
} }
firstFree = nuAuDmaState.firstFree; s32 nuAuDmaCallBack(s32 addr, s32 len, void *state, u8 arg3) {
if (firstFree == NULL) { NUDMABuffer* dmaPtr;
NUDMABuffer* freeBuffer;
OSIoMesg* mesg;
s32 delta;
u32 startAddr;
s32 addrEnd, buffEnd;
NUDMABuffer* lastDmaPtr;
if (arg3 == 0) {
return osVirtualToPhysical((void*)addr);
}
lastDmaPtr = NULL;
dmaPtr = D_800A3BD4;
addrEnd = addr + len;
while (dmaPtr != NULL) {
startAddr = dmaPtr->startAddr;
buffEnd = dmaPtr->startAddr + 0x500;
if (addr >= startAddr && buffEnd >= addrEnd) {
dmaPtr->frameCnt = nuAuFrameCounter;
freeBuffer = (NUDMABuffer*)(dmaPtr->ptr + addr - dmaPtr->startAddr);
return osVirtualToPhysical(freeBuffer);
} else if (addr < startAddr) {
break;
}
lastDmaPtr = dmaPtr;
dmaPtr = (NUDMABuffer*)dmaPtr->node.next;
}
dmaPtr = nuAuDmaState.firstFree;
if (dmaPtr == NULL) {
return osVirtualToPhysical(nuAuDmaState.firstUsed); return osVirtualToPhysical(nuAuDmaState.firstUsed);
} }
new_var = firstFree->ptr; nuAuDmaState.firstFree = (NUDMABuffer*)dmaPtr->node.next;
nuAuDmaState.firstFree = firstFree; alUnlink(&dmaPtr->node);
alUnlink(&firstFree->node);
if (temp_s1 != NULL) { if (lastDmaPtr != NULL) {
alLink(&firstFree->node, temp_s1); alLink(&dmaPtr->node, &lastDmaPtr->node);
} else if (nuAuDmaState.firstUsed != NULL){
lastDmaPtr = nuAuDmaState.firstUsed;
nuAuDmaState.firstUsed = dmaPtr;
dmaPtr->node.next = &lastDmaPtr->node;
dmaPtr->node.prev = NULL;
lastDmaPtr->node.prev = &dmaPtr->node;
} else { } else {
temp_a1 = nuAuDmaState.firstUsed; nuAuDmaState.firstUsed = dmaPtr;
if (temp_a1 != NULL) { dmaPtr->node.next = NULL;
nuAuDmaState.firstUsed = firstFree; dmaPtr->node.prev = NULL;
firstFree->node.next = &temp_a1->node;
firstFree->node.prev = NULL;
temp_a1->node.prev = &firstFree->node;
} else {
nuAuDmaState.firstUsed = firstFree;
firstFree->node.next = NULL;
firstFree->node.prev = NULL;
}
} }
temp_s0 = addr & 1; freeBuffer = (NUDMABuffer*)dmaPtr->ptr;
temp_s3 = addr - temp_s0; delta = addr & 1;
temp_s2 = new_var; addr -= delta;
firstFree->startAddr = temp_s3; dmaPtr->startAddr = addr;
mesg = &D_800A3720[nuAuDmaNext]; dmaPtr->frameCnt = nuAuFrameCounter;
nuAuDmaNext++;
firstFree->frameCnt = nuAuFrameCounter; mesg = &nuAuDmaIOMesgBuf[nuAuDmaNext++];
mesg->hdr.pri = 0; mesg->hdr.pri = OS_MESG_PRI_NORMAL;
mesg->hdr.retQueue = &D_800A3640; mesg->hdr.retQueue = &nuAuDmaMesgQ;
mesg->dramAddr = temp_s2; mesg->dramAddr = freeBuffer;
mesg->devAddr = temp_s3; mesg->devAddr = addr;
mesg->size = 0x500; mesg->size = 0x500;
osEPiStartDma(nuPiCartHandle, mesg, 0); osEPiStartDma(nuPiCartHandle, mesg, 0);
return osVirtualToPhysical(temp_s2) + temp_s0; return osVirtualToPhysical(freeBuffer) + delta;
} }
#else
INCLUDE_ASM(s32, "25f00_len_940", nuAuDmaCallBack, s32 addr, s32 len, void* state, s32 arg3);
#endif
ALDMAproc nuAuDmaNew(NUDMAState** state) { ALDMAproc nuAuDmaNew(NUDMAState** state) {
if (!nuAuDmaState.initialized) { if (!nuAuDmaState.initialized) {
nuAuDmaState.firstFree = &nuAuDmaBuf; nuAuDmaState.firstFree = &nuAuDmaBufList[0];
nuAuDmaState.firstUsed = NULL; nuAuDmaState.firstUsed = NULL;
nuAuDmaState.initialized = TRUE; nuAuDmaState.initialized = TRUE;
} }
nuAuDmaNext = 0; nuAuDmaNext = 0;
*state = &nuAuDmaState; *state = &nuAuDmaState;
return nuAuDmaCallBack; return (ALDMAproc)nuAuDmaCallBack;
} }
void nuAuCleanDMABuffers(void) { void nuAuCleanDMABuffers(void) {
@ -133,17 +272,17 @@ void nuAuCleanDMABuffers(void) {
u32* frameCounter; u32* frameCounter;
while (dmaPtr != NULL) { while (dmaPtr != NULL) {
nextPtr = dmaPtr->node.next; nextPtr = (NUDMABuffer*)dmaPtr->node.next;
if (dmaPtr->frameCnt + 1 < nuAuFrameCounter) { if (dmaPtr->frameCnt + 1 < nuAuFrameCounter) {
if (state->firstUsed == dmaPtr) { if (state->firstUsed == dmaPtr) {
state->firstUsed = nextPtr; state->firstUsed = nextPtr;
} }
alUnlink(dmaPtr); alUnlink(&dmaPtr->node);
if (state->firstFree != 0) { if (state->firstFree != 0) {
alLink(dmaPtr, state->firstFree); alLink(&dmaPtr->node, &state->firstFree->node);
} else { } else {
state->firstFree = dmaPtr; state->firstFree = dmaPtr;
dmaPtr->node.next = 0; dmaPtr->node.next = 0;
@ -163,27 +302,27 @@ void nuAuCleanDMABuffers(void) {
// Nop issue // Nop issue
// try again when bss is figured out up until this file // try again when bss is figured out up until this file
#ifdef NON_MATCHING #ifdef NON_MATCHING
void func_8004B328(s16 arg0, s32 arg1) { void func_8004B328(NUScMsg mesg_type, u32 frameCounter) {
s16 temp_a0_2; s16 temp;
s32 temp_s0; s32 temp2;
switch (arg0) { switch (mesg_type) {
case 2: case 2:
D_800A0F50 = func_80056D50(); D_800A0F50 = func_80056D50();
func_80056D34(); func_80056D34();
break; break;
case 1: case 1:
temp_a0_2 = D_800A0F50; temp = D_800A0F50;
temp_s0 = temp_a0_2 - (temp_a0_2 / 20) * arg1; temp2 = temp - (temp / 20) * frameCounter;
if (temp_s0 < 0) { if (temp2 < 0) {
temp_s0 = 0; temp2 = 0;
} }
temp_s0 = (temp_s0 * temp_s0) >> 15; temp2 = (temp2 * temp2) >> 15;
func_80056D44(temp_s0); func_80056D44(temp2);
if (temp_s0 == 0) { if (temp2 == 0) {
nuAuTaskStop = NU_AU_TASK_STOP; nuAuTaskStop = NU_AU_TASK_STOP;
} }
break; break;

View File

@ -83,7 +83,7 @@ void func_8004B440(SoundManager* manager, u8 arg1, u8 arg2, UnkAl19E0* arg3, u8
func_8004BA54(manager, 0); func_8004BA54(manager, 0);
snd_clear_sfx_queue(manager); snd_clear_sfx_queue(manager);
snd_initialize_bgm_fade(&manager->unk_40, 0, 0x7FFF, 0x7FFF); snd_initialize_bgm_fade(&manager->unk_40, 0, 0x7FFF, 0x7FFF);
func_80053A98(manager->unk_BE, manager->unk_40.unk_00.u16, manager->unk_5C); func_80053A98(manager->unk_BE, manager->unk_40.currentVolume.u16, manager->unk_5C);
manager->unk_8C = 0xFF; manager->unk_8C = 0xFF;
manager->unk_64[0] = &D_80078290; manager->unk_64[0] = &D_80078290;

View File

@ -188,7 +188,7 @@ void snd_update_bgm_fade(BGMPlayer* player) {
} }
void func_8004E444(BGMPlayer* arg0) { void func_8004E444(BGMPlayer* arg0) {
u16 mult = (arg0->fadeInfo.currentVolume.u16 * arg0->unk_3C) >> 15; u16 mult = (arg0->fadeInfo.currentVolume.u16 * arg0->fadeInfo.unk_10.u16) >> 15;
s32 i; s32 i;
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
@ -318,7 +318,7 @@ void snd_BGMCmd_E5_MasterVolumeFade(BGMPlayer* player, BGMPlayerTrack* track) {
void snd_BGMCmd_E8_TrackOverridePatch(BGMPlayer* player, BGMPlayerTrack* track) { void snd_BGMCmd_E8_TrackOverridePatch(BGMPlayer* player, BGMPlayerTrack* track) {
track->unk_44 = player->unk_D4.u8[1]; track->unk_44 = player->unk_D4.u8[1];
track->unk_0C = func_80053BE8(player->data, player->unk_D4.u8[0], track->unk_44, &track->unk_10); track->unk_0C = func_80053BE8(player->data, player->unk_D4.u8[0], track->unk_44, track->unk_10);
} }
void snd_BGMCmd_E9_SubTrackVolume(BGMPlayer* arg0, BGMPlayerTrack* track) { void snd_BGMCmd_E9_SubTrackVolume(BGMPlayer* arg0, BGMPlayerTrack* track) {
@ -426,7 +426,7 @@ INCLUDE_ASM(void, "28910_len_5090", snd_BGMCmd_FD, BGMPlayer* player, BGMPlayerT
#endif #endif
void snd_BGMCmd_FE(BGMPlayer* player, BGMPlayerTrack* track) { void snd_BGMCmd_FE(BGMPlayer* player, BGMPlayerTrack* track) {
s32 temp = player->unk_D4.u16 + player->unk_64; s32 temp = player->unk_D4.u16 + (s32)player->unk_64;
track->unk_3E = player->unk_D6.u8[0]; track->unk_3E = player->unk_D6.u8[0];
track->unk_04 = track->bgmReadPos; track->unk_04 = track->bgmReadPos;

View File

@ -1,5 +1,11 @@
#include "audio.h" #include "audio.h"
// data
extern u16 D_80078530[];
extern s32 D_8007854C[2];
extern u8 D_80078580[];
extern f32 D_80078730[];
void func_80052E30(u8 index) { void func_80052E30(u8 index) {
UnkAl48* temp = &D_8009A5C0->unk_1320[index]; UnkAl48* temp = &D_8009A5C0->unk_1320[index];
@ -12,11 +18,11 @@ void snd_load_audio_data(s32 frequency) {
s32* temp_v0_2; s32* temp_v0_2;
ALHeap* alHeap; ALHeap* alHeap;
u32 i; u32 i;
s32 subroutine_arg7[2]; SBNFileEntry fileEntry;
u8 temp6[4]; u8 temp6[4];
UnkAl48* temp5; UnkAl48* temp5;
alHeap = D_80078E54->unk_18; alHeap = D_80078E54->heap;
D_8009A5C0 = alHeapAlloc(alHeap, 1, 0x19E0); D_8009A5C0 = alHeapAlloc(alHeap, 1, 0x19E0);
D_8009A664 = alHeapAlloc(alHeap, 1, sizeof(BGMPlayer)); D_8009A664 = alHeapAlloc(alHeap, 1, sizeof(BGMPlayer));
@ -40,8 +46,8 @@ void snd_load_audio_data(s32 frequency) {
} }
temp4->dataSEF = alHeapAlloc(alHeap, 1, 0x5200); temp4->dataSEF = alHeapAlloc(alHeap, 1, 0x5200);
temp4->defaultInstrument = alHeapAlloc(alHeap, 1, 0x30); temp4->defaultInstrument = alHeapAlloc(alHeap, 1, sizeof(Instrument));
temp4->dataPER = alHeapAlloc(alHeap, 1, 0x360); temp4->dataPER = alHeapAlloc(alHeap, 1, 6 * sizeof(PEREntry));
temp4->dataPRG = alHeapAlloc(alHeap, 1, 0x200); temp4->dataPRG = alHeapAlloc(alHeap, 1, 0x200);
temp4->unk_94 = alHeapAlloc(alHeap, 1, 0x40); temp4->unk_94 = alHeapAlloc(alHeap, 1, 0x40);
temp4->actualFrequency = frequency; temp4->actualFrequency = frequency;
@ -90,26 +96,26 @@ void snd_load_audio_data(s32 frequency) {
temp6[1] = 3; temp6[1] = 3;
temp6[2] = 0xff; temp6[2] = 0xff;
temp6[3] = 0xff; temp6[3] = 0xff;
func_8004E344(D_8009A664, &temp6); func_8004E344(D_8009A664, temp6);
func_8004E158(D_8009A5FC, 2, 2, temp4); func_8004E158(D_8009A5FC, 2, 2, temp4);
temp6[0] = 2; temp6[0] = 2;
temp6[1] = 0xff; temp6[1] = 0xff;
temp6[2] = 0xff; temp6[2] = 0xff;
temp6[3] = 0xff; temp6[3] = 0xff;
func_8004E344(D_8009A5FC, &temp6); func_8004E344(D_8009A5FC, temp6);
func_8004B440(D_8009A640, 4, 1, temp4, 0x10); func_8004B440(D_8009A640, 4, 1, temp4, 0x10);
func_80050B90(D_8009A628, 6, 1, temp4); func_80050B90(D_8009A628, 6, 1, temp4);
func_80052614(temp4); func_80052614(temp4);
snd_load_BK_headers(temp4, alHeap); snd_load_BK_headers(temp4, alHeap);
if (snd_fetch_SBN_file(temp4->mseqFileList->unk_0, 0x20, subroutine_arg7) == 0) { if (snd_fetch_SBN_file(temp4->mseqFileList->unk_0, 0x20, &fileEntry) == 0) {
snd_read_rom(subroutine_arg7[0], temp4->dataSEF, subroutine_arg7[1] & 0xFFFFFF); snd_read_rom(fileEntry.offset, temp4->dataSEF, fileEntry.data & 0xFFFFFF);
} }
snd_load_sfx_groups_from_SEF(D_8009A640); snd_load_sfx_groups_from_SEF(D_8009A640);
if (snd_fetch_SBN_file(temp4->mseqFileList->unk_2, 0x40, subroutine_arg7) == 0) { if (snd_fetch_SBN_file(temp4->mseqFileList[1].unk_0, 0x40, &fileEntry) == 0) {
snd_load_PER(temp4, subroutine_arg7[0]); snd_load_PER(temp4, fileEntry.offset);
} }
if (snd_fetch_SBN_file(temp4->mseqFileList->unk_4, 0x40, subroutine_arg7) == 0) { if (snd_fetch_SBN_file(temp4->mseqFileList[2].unk_0, 0x40, &fileEntry) == 0) {
snd_load_PRG(temp4, subroutine_arg7[0]); snd_load_PRG(temp4, fileEntry.offset);
} }
temp4->instrumentGroups[0] = temp4->instrumentGroup1; temp4->instrumentGroups[0] = temp4->instrumentGroup1;
@ -154,7 +160,7 @@ void snd_reset_instrument(Instrument* instrument) {
void func_80053370(UnkAlC* arg0) { void func_80053370(UnkAlC* arg0) {
arg0->unk_00 = 8208; arg0->unk_00 = 8208;
arg0->unk_02 = 4800; arg0->unk_02 = 4800;
arg0->unk_04 = ~0x80; arg0->unk_04 = 0x7F;
arg0->unk_05 = 64; arg0->unk_05 = 64;
arg0->unk_06 = 0; arg0->unk_06 = 0;
arg0->unk_07 = 0; arg0->unk_07 = 0;
@ -165,7 +171,7 @@ void func_80053370(UnkAlC* arg0) {
void func_800533A8(InstrumentCFG* arg0) { void func_800533A8(InstrumentCFG* arg0) {
arg0->unk_00 = 8208; arg0->unk_00 = 8208;
arg0->unk_02 = ~0x80; arg0->unk_02 = 0x7F;
arg0->unk_03 = 64; arg0->unk_03 = 64;
arg0->unk_04 = 0; arg0->unk_04 = 0;
arg0->unk_05 = 0; arg0->unk_05 = 0;
@ -188,9 +194,9 @@ void snd_update_sequence_players(void) {
func_800511BC(temp_s0); func_800511BC(temp_s0);
} }
if (manager->unk_40.unk_0A != 0) { if (manager->unk_40.fadeTime != 0) {
func_80053A28(&manager->unk_40); func_80053A28(&manager->unk_40);
func_80053A98(manager->unk_BE, manager->unk_40.unk_00.u16, manager->unk_5C); func_80053A98(manager->unk_BE, manager->unk_40.currentVolume.u16, manager->unk_5C);
} }
manager->unkCounter -= manager->unkCounterStep; manager->unkCounter -= manager->unkCounterStep;
@ -218,7 +224,7 @@ void snd_update_sequence_players(void) {
func_8004DFD4(temp_s2); func_8004DFD4(temp_s2);
} }
bgmPlayer2 = D_8009A664; bgmPlayer2 = D_8009A664;
if (bgmPlayer2->unk_46 != 0) { if (bgmPlayer2->fadeInfo.unk_1A != 0) {
func_80053BA8(&bgmPlayer2->fadeInfo); func_80053BA8(&bgmPlayer2->fadeInfo);
if (bgmPlayer2->fadeInfo.fadeTime == 0) { if (bgmPlayer2->fadeInfo.fadeTime == 0) {
func_8004E444(bgmPlayer2); func_8004E444(bgmPlayer2);
@ -352,7 +358,18 @@ void func_800538C4(UnkAl48* arg0, s32 arg1) { // type may be wrong but it seems
func_800576EC(arg1, 0, 0xB8); func_800576EC(arg1, 0, 0xB8);
} }
#ifdef NON_EQUIVALENT
f32 snd_tune_param_to_timescale(s32 arg0) {
if (arg0 >= 0) {
return D_80078730[(u32)arg0 & 0x7F] * D_80078730[128 + (((u32)arg0 >> 7) & 0x1F)];
} else {
arg0 = -arg0;
return D_80078730[160 + ((u32)arg0 & 0x7F)] * D_80078730[288 + (((u32)arg0 >> 7) & 0x7F)];
}
}
#else
INCLUDE_ASM(s32, "2e230_len_2190", snd_tune_param_to_timescale); INCLUDE_ASM(s32, "2e230_len_2190", snd_tune_param_to_timescale);
#endif
void snd_initialize_bgm_fade(Fade* fade, s32 time, s32 startValue, s16 endValue) { void snd_initialize_bgm_fade(Fade* fade, s32 time, s32 startValue, s16 endValue) {
fade->currentVolume.s32 = startValue * 0x10000; fade->currentVolume.s32 = startValue * 0x10000;
@ -375,17 +392,17 @@ void snd_clear_bgm_fade(Fade* fade) {
fade->fpFadeCallback = NULL; fade->fpFadeCallback = NULL;
} }
void func_80053A28(UnkAl1* arg0) { void func_80053A28(Fade* arg0) {
arg0->unk_0A--; arg0->fadeTime--;
if ((arg0->unk_0A << 0x10) != 0) { if ((arg0->fadeTime << 0x10) != 0) {
arg0->unk_00.s32 += arg0->unk_04; arg0->currentVolume.s32 += arg0->fadeStep;
} else { } else {
arg0->unk_00.s32 = arg0->unk_08 << 0x10; arg0->currentVolume.s32 = arg0->endVolume << 0x10;
if (arg0->unk_0C != 0) { if (arg0->fpFadeCallback != 0) {
arg0->unk_0C(); arg0->fpFadeCallback();
arg0->unk_04 = 0; arg0->fadeStep = 0;
arg0->unk_0C = NULL; arg0->fpFadeCallback = NULL;
} }
} }
} }
@ -394,19 +411,19 @@ void func_80053A98(u8 arg0, u16 arg1, s32 arg2) {
func_80056D78(arg0, (u32)(arg1 * arg2) >> 15); func_80056D78(arg0, (u32)(arg1 * arg2) >> 15);
} }
void func_80053AC8(UnkAl1* arg0) { void func_80053AC8(Fade* fade) {
if (arg0->unk_0A == 0) { if (fade->fadeTime == 0) {
arg0->unk_0A = 1; fade->fadeTime = 1;
arg0->unk_04 = 0; fade->fadeStep = 0;
arg0->unk_08 = arg0->unk_00.u16; fade->endVolume = fade->currentVolume.u16;
} }
} }
void func_80053AEC(UnkAl1* arg0, s16 arg1) { void func_80053AEC(Fade* fade, s16 arg1) {
arg0->unk_10.s32 = arg1 << 16; fade->unk_10.s32 = arg1 << 16;
arg0->unk_18 = arg1; fade->unk_18 = arg1;
arg0->unk_1A = 0; fade->unk_1A = 0;
arg0->unk_14 = 0; fade->unk_14 = 0;
} }
void func_80053B04(UnkAl1* arg0, u32 arg1, s16 arg2) { void func_80053B04(UnkAl1* arg0, u32 arg1, s16 arg2) {
@ -426,7 +443,7 @@ void func_80053B04(UnkAl1* arg0, u32 arg1, s16 arg2) {
} }
} }
void func_80053BA8(UnkAl1* arg0) { void func_80053BA8(Fade* arg0) {
arg0->unk_1A--; arg0->unk_1A--;
if (arg0->unk_1A != 0) { if (arg0->unk_1A != 0) {
@ -437,7 +454,23 @@ void func_80053BA8(UnkAl1* arg0) {
} }
} }
INCLUDE_ASM(s32, "2e230_len_2190", func_80053BE8, UnkAl19E0* arg0, s32 arg1, s32 arg2, s32* arg3); Instrument* func_80053BE8(UnkAl19E0* arg0, u32 arg1, u32 arg2, s32** arg3) {
void* temp_v0;
void* phi_v0;
Instrument* temp_a2 = (*arg0->instrumentGroups[(arg1 & 0x70) >> 4])[arg2];
UnkAl4Plus* temp_a0 = temp_a2->unkOffset;
u32 temp_a1 = arg1 % 4;
if (temp_a1 < temp_a0->count) {
arg3[0] = (s32*)(temp_a0->unk_04[temp_a1].unkOffset1 + (s32)temp_a0);
arg3[1] = (s32*)(temp_a0->unk_04[temp_a1].unkOffset2 + (s32)temp_a0);
} else {
arg3[0] = &D_8007854C[0];
arg3[1] = &D_8007854C[1];
}
return temp_a2;
}
void snd_get_sequence_player_and_track(u32 playerIndex, s32** outCurrentTrackData, BGMPlayer** outPlayer) { void snd_get_sequence_player_and_track(u32 playerIndex, s32** outCurrentTrackData, BGMPlayer** outPlayer) {
UnkAl19E0* temp_v1 = D_8009A5C0; UnkAl19E0* temp_v1 = D_8009A5C0;
@ -479,9 +512,108 @@ void snd_get_sequence_player(u32 playerIndex, BGMPlayer** outPlayer) {
} }
} }
INCLUDE_ASM(s32, "2e230_len_2190", snd_load_song_files); s32 snd_load_song_files(u32 arg0, UnkAlTrack* arg1, BGMPlayer* arg2) {
SBNFileEntry fileEntry;
SBNFileEntry fileEntry2;
SBNFileEntry* bkFileEntry;
UnkAl19E0* soundData;
InitSongEntry* songEntry;
s32 i;
u16 bkFileIndex;
s32 bgmFileIndex;
u32 data;
u32 offset;
s32 ret;
BGMPlayer* arg2_copy ;
UnkAlTrack* arg1_copy;
s32 cond;
INCLUDE_ASM(s32, "2e230_len_2190", func_80053E58); soundData = D_8009A5C0;
// needed to match
cond = arg0 < soundData->songListLength;
arg2_copy = arg2;
arg1_copy = arg1;
if (cond) {
songEntry = &soundData->songList[arg0];
ret = snd_fetch_SBN_file(songEntry->bgmFileIndex, 0x10, &fileEntry);
if (ret != 0) {
return ret;
}
if (func_8004DB28(arg2_copy)) {
return 201;
}
snd_read_rom(fileEntry.offset, arg1_copy, fileEntry.data & 0xFFFFFF);
for (i = 0 ; i < 3; i++) {
bkFileIndex = songEntry->bkFileIndex[i];
if (bkFileIndex != 0) {
bkFileEntry = &soundData->sbnFileList[bkFileIndex];
offset = (bkFileEntry->offset & 0xFFFFFF) + soundData->baseRomOffset;
fileEntry2.offset = offset;
data = bkFileEntry->data;
fileEntry2.data = data;
if ((data >> 0x18) == 0x30) {
snd_load_BK(offset, i);
}
}
}
bgmFileIndex = songEntry->bgmFileIndex;
arg2_copy->songID = arg0;
arg2_copy->unk_64 = arg1;
arg2_copy->bgmFileIndex = bgmFileIndex;
return arg1_copy->unk_08;
} else {
return 151;
}
}
s32 func_80053E58(s32 arg0, u8* arg1) {
SBNFileEntry fileEntry;
SBNFileEntry sp18;
SBNFileEntry* bkFileEntry;
UnkAl19E0* soundData;
InitSongEntry* temp_s1;
s32 i;
s32 ret;
u32 data;
u32 offset;
u16 bkFileIndex;
soundData = D_8009A5C0;
temp_s1 = &soundData->songList[arg0];
ret = snd_fetch_SBN_file(temp_s1[0].bgmFileIndex, 0x10, &sp18);
if (ret == 0) {
snd_read_rom(sp18.offset, arg1, sp18.data & 0xFFFFFF);
for (i = 0 ; i < 3; i++) {
bkFileIndex = temp_s1->bkFileIndex[i];
if (bkFileIndex != 0) {
bkFileEntry = &soundData->sbnFileList[bkFileIndex];
offset = (bkFileEntry->offset & 0xFFFFFF) + soundData->baseRomOffset;
fileEntry.offset = offset;
data = bkFileEntry->data;
fileEntry.data = data;
if ((data >> 0x18) == 0x30) {
snd_load_BK(offset, i);
} else {
ret = 102;
}
}
}
}
return ret;
}
BGMPlayer* func_80053F64(s32 arg0) { BGMPlayer* func_80053F64(s32 arg0) {
if (arg0 == 0) { if (arg0 == 0) {
@ -490,7 +622,62 @@ BGMPlayer* func_80053F64(s32 arg0) {
return NULL; return NULL;
} }
INCLUDE_ASM(s32, "2e230_len_2190", func_80053F80); s32 func_80053F80(u32 arg0) {
u32 i;
SBNFileEntry fileEntry;
UnkAl19E0* soundData;
UnkAl834* temp_s2;
s32* trackData;
soundData = D_8009A5C0;
temp_s2 = D_8009A628;
if (arg0 < 16) {
if (temp_s2->unk_24[0].unk_20 == 0 && snd_fetch_SBN_file(soundData->mseqFileList[D_80078580[arg0]].unk_0, 0x40, &fileEntry) == 0) {
snd_read_rom(fileEntry.offset, soundData->currentTrackData[2], fileEntry.data & 0xFFFFFF);
temp_s2->unk_10[0] = soundData->currentTrackData[2];
for (i = 1; i < 4; i++) {
temp_s2->unk_10[i] = NULL;
}
temp_s2->unk_20 = 1;
}
} else if (arg0 == 16 && temp_s2->unk_24[0].unk_20 == 0 && temp_s2->unk_24[1].unk_20 == 0 && temp_s2->unk_24[2].unk_20 == 0) {
temp_s2->unk_20 = 0;
for (i = 0; i < 4; i++) {
temp_s2->unk_10[i] = NULL;
}
trackData = soundData->currentTrackData[3];
if (snd_fetch_SBN_file(soundData->mseqFileList[D_80078580[arg0]].unk_0, 0x40, &fileEntry) == 0) {
snd_read_rom(fileEntry.offset, trackData, fileEntry.data & 0xFFFFFF);
temp_s2->unk_10[0] = trackData;
trackData = (s32*)((u32)trackData + ((fileEntry.data + 0x40) & 0xFFFFFF));
if (snd_fetch_SBN_file(soundData->mseqFileList[D_80078580[arg0 + 1]].unk_0, 0x40, &fileEntry) == 0) {
snd_read_rom(fileEntry.offset, trackData, fileEntry.data & 0xFFFFFF);
temp_s2->unk_10[1] = trackData;
trackData = (s32*)((u32)trackData + ((fileEntry.data + 0x40) & 0xFFFFFF));
if (snd_fetch_SBN_file(soundData->mseqFileList[D_80078580[arg0 + 2]].unk_0, 0x40, &fileEntry) == 0) {
snd_read_rom(fileEntry.offset, trackData, fileEntry.data & 0xFFFFFF);
temp_s2->unk_10[2] = trackData;
trackData = (s32*)((u32)trackData + ((fileEntry.data + 0x40) & 0xFFFFFF));
if (snd_fetch_SBN_file(soundData->mseqFileList[D_80078580[arg0 + 3]].unk_0, 0x40, &fileEntry) == 0) {
snd_read_rom(fileEntry.offset, trackData, fileEntry.data & 0xFFFFFF);
temp_s2->unk_10[3] = trackData;
temp_s2->unk_20 = 4;
if (snd_fetch_SBN_file(soundData->mseqFileList[D_80078580[arg0 + 4]].unk_0, 0x30, &fileEntry) == 0) {
snd_load_BK(fileEntry.offset, 2);
}
}
}
}
}
}
return 0;
}
BGMPlayer* func_80054248(u8 arg0) { BGMPlayer* func_80054248(u8 arg0) {
switch (arg0) { switch (arg0) {
@ -499,19 +686,132 @@ BGMPlayer* func_80054248(u8 arg0) {
case 2: case 2:
return D_8009A5FC; return D_8009A5FC;
case 4: case 4:
return D_8009A640; return D_8009A640; // TODO: why return pointer to SoundManager?
default: default:
return NULL; return NULL;
} }
} }
INCLUDE_ASM(void, "2e230_len_2190", snd_load_INIT, UnkAl19E0* arg0, s32 arg1, ALHeap* arg2); void snd_load_INIT(UnkAl19E0* arg0, s32 romAddr, ALHeap* heap) {
SBNHeader sbnHeader;
INITHeader initHeader;
SBNFileEntry* entry;
s32 tableSize, initBase, size;
s32 tblAddr, shortsAddr;
s32* data;
s32 numEntries;
s32 tblOffset, shortsOffset;
s32* romPtr = &arg0->baseRomOffset;
INCLUDE_ASM(s32, "2e230_len_2190", snd_fetch_SBN_file, u16 arg0, s32 arg1, s32* arg2); snd_read_rom(romAddr, &sbnHeader, sizeof(SBNHeader));
numEntries = sbnHeader.numEntries;
arg0->baseRomOffset = romAddr;
tableSize = numEntries * sizeof(SBNFileEntry);
arg0->fileListLength = sbnHeader.numEntries;
arg0->sbnFileList = alHeapAlloc(heap, 1, tableSize);
snd_read_rom(arg0->baseRomOffset + sbnHeader.tableOffset, arg0->sbnFileList, tableSize);
INCLUDE_ASM(void, "2e230_len_2190", snd_load_PER, UnkAl19E0* arg0, s32* arg1); entry = arg0->sbnFileList;
while (sbnHeader.numEntries--) {
if ((entry->offset & 0xFFFFFF) == 0) {
break;
}
size = entry->data;
entry->data = (size + 0xF) & ~0xF;
entry++;
}
if (sbnHeader.INIToffset != 0) {
initBase = *romPtr + sbnHeader.INIToffset;
snd_read_rom(initBase, &initHeader, sizeof(INITHeader));
tblOffset = initHeader.tblOffset;
size = (initHeader.tblSize + 0xF) & 0xFFF0;
tblAddr = initBase + tblOffset;
arg0->songList = alHeapAlloc(heap, 1, size);
snd_read_rom(tblAddr, arg0->songList, size);
shortsOffset = initHeader.shortsOffset;
size = (initHeader.shortsSize + 0xF) & 0xFFF0;
shortsAddr = initBase + shortsOffset;
arg0->mseqFileList = alHeapAlloc(heap, 1, size);
snd_read_rom(shortsAddr, arg0->mseqFileList, size);
arg0->bkFileListOffset = initBase + initHeader.entriesOffset;
arg0->bkListLength = (initHeader.entriesSize + 0xF) & 0xFFF0;
arg0->songListLength = initHeader.tblSize / sizeof(InitSongEntry) - 1;
}
}
s32 snd_fetch_SBN_file(u32 fileIdx, s32 format, SBNFileEntry* arg2) {
SBNFileEntry fileEntry;
UnkAl19E0* temp = D_8009A5C0;
u32 data;
s32 ret = 0;
if (fileIdx < temp->fileListLength) {
SBNFileEntry* entry = &temp->sbnFileList[fileIdx];
s32 offset = (entry->offset & 0xFFFFFF) + temp->baseRomOffset;
fileEntry.offset = offset;
data = entry->data;
fileEntry.data = data;
if ((data >> 0x18) == format) {
arg2->offset = offset;
arg2->data = fileEntry.data;
} else {
ret = 102;
}
} else {
ret = 101;
}
return ret;
}
void snd_load_PER(UnkAl19E0* arg0, s32 romAddr) {
PERHeader header;
u32 size;
s32 numItemsLeft;
s32 numItems;
void* end;
snd_read_rom(romAddr, &header, sizeof(PERHeader));
size = header.totalSize - sizeof(PERHeader);
snd_read_rom(romAddr + sizeof(PERHeader), arg0->dataPER, size);
numItems = size / sizeof(PEREntry);
numItemsLeft = 6 - numItems;
if (numItemsLeft > 0) {
end = &arg0->dataPER[numItems];
snd_copy_words(&arg0->unk_08, end, sizeof(UnkAlC));
snd_copy_words(end, end + sizeof(UnkAlC), numItemsLeft * sizeof(PEREntry) - sizeof(UnkAlC));
}
}
void snd_load_PRG(UnkAl19E0* arg0, s32 romAddr) {
PERHeader header;
u32 size;
s32 numItemsLeft;
s32 numItems;
s32 dataRomAddr;
void* end;
snd_read_rom(romAddr, &header, sizeof(PERHeader));
dataRomAddr = romAddr + sizeof(PERHeader);
size = header.totalSize - sizeof(PERHeader);
if (size > 0x200) {
size = 0x200;
}
snd_read_rom(dataRomAddr, arg0->dataPRG, size);
numItems = size / sizeof(InstrumentCFG);
numItemsLeft = 0x40 - numItems;
if (numItemsLeft > 0) {
end = &arg0->dataPRG[numItems];
snd_copy_words(&arg0->defaultPRGEntry, end, sizeof(InstrumentCFG));
snd_copy_words(end, end + sizeof(InstrumentCFG), numItemsLeft * sizeof(InstrumentCFG) - sizeof(InstrumentCFG));
}
}
INCLUDE_ASM(void, "2e230_len_2190", snd_load_PRG, UnkAl19E0* arg0, s32* arg1);
INCLUDE_ASM(s32, "2e230_len_2190", snd_load_BGM); INCLUDE_ASM(s32, "2e230_len_2190", snd_load_BGM);
@ -524,35 +824,113 @@ InstrumentGroup* snd_get_BK_instruments(s32 bankGroup, u32 bankIndex) {
switch (bankGroup) { switch (bankGroup) {
case 1: case 1:
ret = temp->instrumentGroup1[bankIndex / 16]; ret = &temp->instrumentGroup1[bankIndex / 16];
break; break;
case 2: case 2:
ret = temp->instrumentGroup2[bankIndex / 16]; ret = &temp->instrumentGroup2[bankIndex / 16];
break; break;
case 4: case 4:
ret = temp->instrumentGroup4[bankIndex / 16]; ret = &temp->instrumentGroup4[bankIndex / 16];
break; break;
case 5: case 5:
ret = temp->instrumentGroup5[bankIndex / 16]; ret = &temp->instrumentGroup5[bankIndex / 16];
break; break;
case 6: case 6:
ret = temp->instrumentGroup6[bankIndex / 16]; ret = &temp->instrumentGroup6[bankIndex / 16];
break; break;
case 3: case 3:
ret = temp->instrumentGroup3[bankIndex / 16]; ret = &temp->instrumentGroup3[bankIndex / 16];
break; break;
} }
return ret; return ret;
} }
INCLUDE_ASM(s32, "2e230_len_2190", snd_load_BK_to_bank, s32 bkFileOffset, SoundBank* bank, s32 bankIndex, s32 arg3);
void snd_swizzle_BK_instruments(s32 bkFileOffset, SoundBank* bank, InstrumentGroup instruments, s32 instrumentCount,
u8 arg4);
// float weirdness
#ifdef NON_EQUIVALENT #ifdef NON_EQUIVALENT
void snd_swizzle_BK_instruments(s32 bkFileOffset, SoundBank* bank, Instruments instruments, u32 instrumentCount, enum BKParseState {
EN_0 = 0,
EN_11 = 11,
EN_21 = 21,
EN_101 = 101,
EN_111 = 111,
EN_201 = 201,
EN_301 = 301,
};
s32 snd_load_BK_to_bank(s32 bkFileOffset, SoundBank* bank, s32 bankIndex, s32 bankGroup) {
ALHeap* heap = D_80078E54->heap;
BKHeader bkHeader;
BKHeader* header = &bkHeader;
u16 s3;
u16 s2;
s32 size;
u8* s4;
InstrumentGroup* group;
u32 i;
s32 a2;
snd_read_rom(bkFileOffset, header, sizeof(BKHeader));
s3 = EN_11;
s2 = TRUE;
do {
switch (s3) {
case EN_11:
if (header->unk_00 == 0x424B /* BK */ && header->unk_04 != 0) {
s3 = EN_21;
} else {
s2 = FALSE;
}
break;
case EN_21:
if (header->unk_0C == 0x4352) { // CR
s3 = EN_101;
} else if (header->unk_0C == 0x4452) { // DR
s3 = EN_201;
} else if (header->unk_0C == 0x5352) { // SR
s3 = EN_301;
} else {
s2 = FALSE;
}
break;
case EN_101:
size = ALIGN16_(header->unk_32) + ALIGN16_(header->unk_36) + ALIGN16_(header->unk_3A) + ALIGN16_(header->unk_3E) + 0x40;
if (bank == NULL) {
bank = alHeapAlloc(heap, 1, size);
}
snd_read_rom(bkFileOffset, bank, size);
group = snd_get_BK_instruments(bankGroup, bankIndex);
a2 = 0;
for (i = 0; i < ARRAY_COUNT(*group); i++) {
if (header->unk_12[i] != 0) {
(*group)[i] = (s32)bank + header->unk_12[i];
a2++;
} else {
(*group)[i] = NULL;
}
}
if (a2 != 0) {
s3 = EN_111;
} else {
s2 = FALSE;
}
break;
case EN_111:
snd_swizzle_BK_instruments(bkFileOffset, bank, *group, 16, 1);
s3 = 0;
break;
default:
s2 = FALSE;
break;
}
} while (s2);
return bank;
}
#else
INCLUDE_ASM(s32, "2e230_len_2190", snd_load_BK_to_bank, s32 bkFileOffset, SoundBank* bank, s32 bankIndex, s32 arg3);
#endif
void snd_swizzle_BK_instruments(s32 bkFileOffset, SoundBank* bank, InstrumentGroup instruments, u32 instrumentCount,
u8 arg4) { u8 arg4) {
SoundBank* sb = bank; SoundBank* sb = bank;
Instrument* defaultInstrument = D_8009A5C0->defaultInstrument; Instrument* defaultInstrument = D_8009A5C0->defaultInstrument;
@ -577,7 +955,7 @@ void snd_swizzle_BK_instruments(s32 bkFileOffset, SoundBank* bank, Instruments i
instrument->unkOffset += (s32)bank; instrument->unkOffset += (s32)bank;
} }
instrument->unk_25 = arg4; instrument->unk_25 = arg4;
instrument->sampleRate = (instrument->sampleRate / freq); instrument->sampleRate = *((s32*)(&instrument->sampleRate)) / freq; // what is happening here?
} else { } else {
instruments[i] = defaultInstrument; instruments[i] = defaultInstrument;
} }
@ -585,22 +963,43 @@ void snd_swizzle_BK_instruments(s32 bkFileOffset, SoundBank* bank, Instruments i
sb->swizzled = 1; sb->swizzled = 1;
} }
} }
#else
INCLUDE_ASM(void, "2e230_len_2190", snd_swizzle_BK_instruments, s32 bkFileOffset, SoundBank* bank,
InstrumentGroup instruments, s32 instrumentCount, u8 arg4);
#endif
INCLUDE_ASM(s32, "2e230_len_2190", func_80054AA0); INCLUDE_ASM(s32, "2e230_len_2190", func_80054AA0);
s32 snd_load_BK(s32 arg0, s32 arg1) { s32 snd_load_BK(s32 bkFileOffset, s32 bankIndex) {
snd_load_BK_to_bank(arg0, D_8009A5C0->banks[arg1], arg1, 1); snd_load_BK_to_bank(bkFileOffset, D_8009A5C0->banks[bankIndex], bankIndex, 1);
return 0; return 0;
} }
INCLUDE_ASM(s32, "2e230_len_2190", func_80054C84); void func_80054C84(s32 bankIndex, s32 bankGroup) {
u32 i;
Instrument* instrument = D_8009A5C0->defaultInstrument;
InstrumentGroup* group = snd_get_BK_instruments(bankGroup, bankIndex);
Instrument** ptr = *group;
if (group != NULL) {
for (i = 0; i < ARRAY_COUNT(*group); i++) {
*ptr++ = instrument;
}
}
}
INCLUDE_ASM(void, "2e230_len_2190", func_80054CE0, s32 arg0, s32 arg1); void func_80054CE0(s32 arg0, s32 arg1) {
s32 temp_s0;
if (arg1 < 9U) {
temp_s0 = D_80078530[arg1];
if (arg0 & 1) {
D_8009A664->unk_48 = temp_s0;
func_80053AC8(&D_8009A664->fadeInfo);
D_8009A5FC->unk_48 = temp_s0;
func_80053AC8(&D_8009A5FC->fadeInfo);
}
if (arg0 & 0x10) {
D_8009A640->unk_5C = temp_s0;
func_80053AC8(&D_8009A640->unk_40);
}
}
}
s32 func_80054D74(s32 arg0, s32 arg1) { s32 func_80054D74(s32 arg0, s32 arg1) {
if (arg0 & 0x10) { if (arg0 & 0x10) {
@ -609,11 +1008,79 @@ s32 func_80054D74(s32 arg0, s32 arg1) {
return 0; return 0;
} }
INCLUDE_ASM(s32, "2e230_len_2190", func_80054DA8); void func_80054DA8(u32 arg0) {
if (arg0 % 2 == 1) {
if (D_8009A5C0->unk_130C == 0) {
D_8009A5C0->unk_130C = 2;
}
} else {
if (D_8009A5C0->unk_130C != 0) {
D_8009A5C0->unk_50 = 1;
D_8009A5C0->unk_130C = 0;
}
}
}
INCLUDE_ASM(void, "2e230_len_2190", snd_read_rom, s32 arg0, s32* arg1, s32 arg2); void snd_read_rom(s32 romAddr, void* buffer, u32 size) {
s32 nchunks = size / 0x2000;
s32 offset = 0;
if (nchunks != 0) {
while (nchunks--) {
nuPiReadRom(romAddr + offset, buffer + offset, 0x2000);
offset += 0x2000;
}
}
size %= 0x2000;
if (size != 0) {
nuPiReadRom(romAddr + offset, buffer + offset, size);
}
}
#ifdef NON_MATCHING
// v0/v1 swap
void snd_memset(s8* dst, s32 size, s8 value) {
s32 count;
s32 intValue;
if (size == 0) {
return;
}
if (size < 1024) {
while (size--) {
*dst++ = value;
}
} else {
count = (u32)dst % 4;
if (count != 0) {
count = 4 - count;
size -= count;
while (count--) {
*dst++ = value;
}
}
count = size >> 2;
intValue = value & 0xFF;
intValue = intValue * 0x01010101;
while (count--) {
*(u32*)dst = intValue;
dst += 4;
}
count = size & 3;
if (count != 0) {
while (count--) {
*dst++ = value;
}
}
}
}
#else
INCLUDE_ASM(s32, "2e230_len_2190", snd_memset); INCLUDE_ASM(s32, "2e230_len_2190", snd_memset);
#endif
void snd_bcopy(s8* src, s8* dest, s32 size) { void snd_bcopy(s8* src, s8* dest, s32 size) {
if (size > 0) { if (size > 0) {
@ -623,18 +1090,18 @@ void snd_bcopy(s8* src, s8* dest, s32 size) {
} }
} }
void snd_copy_words(s32* src, s32* dst, s32 num) { void snd_copy_words(void* src, void* dst, s32 size) {
num /= 4; size /= 4;
if (num > 0) { if (size > 0) {
if (!(((s32) src | (s32) dst) & 3)) { if (!(((s32) src | (s32) dst) & 3)) {
s32* srcIt = src; s32* srcIt = src;
s32* dstIt = dst; s32* dstIt = dst;
num--; size--;
do { do {
*dstIt++ = *srcIt++; *dstIt++ = *srcIt++;
} while (num-- != 0); } while (size-- != 0);
} }
} }
} }

View File

@ -15,7 +15,7 @@ s32 D_80078DF8[] = { 0x05640666, 0x0758086E, 0x09000A00, 0x0B000C00, 0x0D000E00,
s32 D_80078E14[] = { 0x05640666, 0x0758086E, 0x097E0A58, 0x0B640C00, 0x0D000E00, 0x0F001000, 0x00000000, }; s32 D_80078E14[] = { 0x05640666, 0x0758086E, 0x097E0A58, 0x0B640C00, 0x0D000E00, 0x0F001000, 0x00000000, };
s32 D_80078E30[] = { 0x05640666, 0x0758086E, 0x097E0A58, 0x0B640C64, 0x0D6A0E64, 0x0F64106E, 0x00000000, 0x00000000, }; s32 D_80078E30[] = { 0x05640666, 0x0758086E, 0x097E0A58, 0x0B640C64, 0x0D6A0E64, 0x0F64106E, 0x00000000, 0x00000000, };
void func_80055050(void) { void func_80055050(ALHeap* heap) {
D_80078DB4 = 1; D_80078DB4 = 1;
D_80078DB0 = 0; D_80078DB0 = 0;
} }

View File

@ -1,5 +1,6 @@
#include "common.h" #include "common.h"
#include "audio.h" #include "audio.h"
#include "nu/nualsgi.h"
UnkAl0* D_80078E50 = NULL; UnkAl0* D_80078E50 = NULL;
UnkAl0* D_80078E54 = NULL; UnkAl0* D_80078E54 = NULL;
@ -13,7 +14,90 @@ s32 D_80078E60[] = { 0x7FFF7FFC, 0x7FF57FE8, 0x7FD77FC0, 0x7FA57F84, 0x7F5F7F34,
}; };
INCLUDE_ASM(s32, "31650", func_80056250); void func_80056250(UnkAl0* globals, ALConfig* config) {
s32 i;
ALHeap* heap = config->heap;
if (D_80078E50 != NULL) {
return;
}
globals->unk_0C = config->unk_00;
globals->unk_10 = config->unk_04;
globals->unk_00 = 0;
globals->unk_04 = 0;
globals->frequency = config->frequency;
globals->dmaNew = config->dmaNew;
D_80078E50 = globals;
D_80078E54 = globals;
D_80078E58 = 0;
D_80078E5A = 0x7FFF;
D_80078E5C = 1;
D_80078E54->unk_1C = alHeapAlloc(heap, config->unk_00, sizeof(UnkAl7C));
for (i = 0; i < config->unk_00; i++) {
UnkAl7C* al7C = &D_80078E54->unk_1C[i];
al7C->unk_04 = alHeapAlloc(heap, 1, 0x20);
al7C->unk_08 = alHeapAlloc(heap, 1, 0x20);
al7C->dmaProc = ((ALDMAproc (*)(NUDMAState**))(D_80078E54->dmaNew))(&al7C->dmaState);
al7C->unk_2C = 0;
al7C->unk_30 = 1;
al7C->unk_34 = 0;
al7C->unk_38 = alHeapAlloc(heap, 1, 0x20);
al7C->unk_40 = 0;
al7C->unk_44 = 1;
al7C->unk_3C = 1.0f;
al7C->unk_48 = alHeapAlloc(heap, 1, 0x50);
al7C->unk_6C = 1;
al7C->unk_70 = 0;
al7C->unk_4E = 1;
al7C->unk_5C = 1;
al7C->unk_62 = 1;
al7C->unk_50 = 1;
al7C->unk_52 = 1;
al7C->unk_54 = 0;
al7C->unk_56 = 0;
al7C->unk_5A = 1;
al7C->unk_58 = 0;
al7C->unk_60 = 1;
al7C->unk_5E = 0;
al7C->unk_64 = 0;
al7C->unk_68 = 0;
al7C->unk_4C = 64;
al7C->unk_74 = 0;
al7C->unk_00 = 0;
al7C->unk_78 = 0;
al7C->unk_79 = i;
}
D_80078E54->unk_20 = alHeapAlloc(heap, config->unk_04, sizeof(UnkLen18));
for (i = 0; i < config->unk_04; i++) {
UnkLen18* temp = &D_80078E54->unk_20[i];
temp->unk_10 = 0;
temp->unk_14 = 0;
temp->unk_00 = 0x7FFF;
temp->unk_0C = 0;
temp->unk_04 = alHeapAlloc(heap, 1, 0x14);
temp->unk_08 = alHeapAlloc(heap, 1, 0x14);
func_80058E84(temp->unk_04, temp->unk_0C, heap);
func_80058E84(temp->unk_08, temp->unk_0C, heap);
}
D_80078E54->unk_24 = alHeapAlloc(heap, 0x170, 2);
D_80078E54->unk_28 = alHeapAlloc(heap, 0x170, 2);
D_800A3FEC = 0;
D_800A3FEE = 0;
D_800A3FF0 = 4;
D_800A3FE0 = alHeapAlloc(heap, 0x2E0, 2);
D_800A3FE4 = alHeapAlloc(heap, 0x2E0, 2);
for (i = 0; i < 0x2E0; i++) {
D_800A3FE4[i] = D_800A3FE0[i] = 0;
}
D_80078E54->heap = heap;
}
void func_800565A4(void) { void func_800565A4(void) {
if (D_80078E50 != NULL) { if (D_80078E50 != NULL) {
@ -122,7 +206,7 @@ f32 func_80057BB4(u8 arg0) {
u8 func_80057BDC(u8 arg0) { u8 func_80057BDC(u8 arg0) {
UnkAl7C* al7C = &D_80078E54->unk_1C[arg0]; UnkAl7C* al7C = &D_80078E54->unk_1C[arg0];
return al7C->unk_4D; return al7C->unk_4C_s.unk_4D;
} }
s16 func_80057C04(u8 arg0) { s16 func_80057C04(u8 arg0) {
@ -154,8 +238,8 @@ void func_80057DC8(s32 arg0) {
} }
void func_80057E08(u8 arg0) { void func_80057E08(u8 arg0) {
s32* phi_a1 = D_800A3FE0; s32* phi_a1 = (s32*)D_800A3FE0;
s32* phi_v1 = D_800A3FE4; s32* phi_v1 = (s32*)D_800A3FE4;
s32 i; s32 i;
for (i = 0; i < 0x170; i++) { for (i = 0; i < 0x170; i++) {
@ -169,8 +253,8 @@ void func_80057E08(u8 arg0) {
} }
void func_80057E5C(u8 arg0) { void func_80057E5C(u8 arg0) {
s32* phi_a1 = D_800A3FE0; s32* phi_a1 = (s32*)D_800A3FE0;
s32* phi_v1 = D_800A3FE4; s32* phi_v1 = (s32*)D_800A3FE4;
s32 i; s32 i;
for (i = 0; i < 0x170; i++) { for (i = 0; i < 0x170; i++) {
@ -190,8 +274,8 @@ void func_80057EB0(void) {
} }
void func_80057ED0(s16 arg0) { void func_80057ED0(s16 arg0) {
s32* phi_a1 = D_800A3FE0; s32* phi_a1 = (s32*)D_800A3FE0;
s32* phi_v1 = D_800A3FE4; s32* phi_v1 = (s32*)D_800A3FE4;
s32 i; s32 i;
for (i = 0; i < 0x170; i++) { for (i = 0; i < 0x170; i++) {
@ -204,7 +288,23 @@ void func_80057ED0(s16 arg0) {
D_800A3FE8 = 0; D_800A3FE8 = 0;
} }
INCLUDE_ASM(void, "31650", alHeapInit, ALHeap* hp, u8* base, s32 len); void alHeapInit(ALHeap* hp, u8* base, s32 len) {
u32 i;
s32 alignBytes = 0x10 - ((s32)base & 0xF);
if (alignBytes != 0x10) {
hp->base = base + alignBytes;
} else {
hp->base = base;
}
hp->len = len;
hp->count = 0;
hp->cur = hp->base;
for (i = 0; i < (u32)(hp->len) >> 2; i++) {
((u32*)hp->base)[i] = 0;
}
}
void* alHeapAlloc(ALHeap* heap, s32 arg1, s32 size) { void* alHeapAlloc(ALHeap* heap, s32 arg1, s32 size) {
void* ret = NULL; void* ret = NULL;

View File

@ -1,8 +1,11 @@
#ifndef _AUDIO_H_ #ifndef _AUDIO_H_
#define _AUDIO_H_ #define _AUDIO_H_
#include "nu/nusys.h"
#include "nu/nualsgi.h"
#include "common.h" #include "common.h"
#define ALIGN16_(val) (((val) + 0xF) & 0xFFF0)
struct BGMPlayer; struct BGMPlayer;
struct UnkAl19E0; struct UnkAl19E0;
struct UnkAl48; struct UnkAl48;
@ -41,6 +44,10 @@ typedef struct Fade {
/* 0x8 */ s16 endVolume; /* 0x8 */ s16 endVolume;
/* 0xA */ s16 fadeTime; /* 0xA */ s16 fadeTime;
/* 0xC */ UnkFuncAl fpFadeCallback; /* 0xC */ UnkFuncAl fpFadeCallback;
/* 0x10 */ UnkField unk_10;
/* 0x14 */ s32 unk_14;
/* 0x18 */ s16 unk_18;
/* 0x1A */ s16 unk_1A;
} Fade; // size = 0x10 } Fade; // size = 0x10
typedef struct InstrumentCFG { // maybe same as UnkAlC? typedef struct InstrumentCFG { // maybe same as UnkAlC?
@ -57,46 +64,68 @@ typedef struct UnkLen18 {
/* 0x02 */ char unk_02[0x2]; /* 0x02 */ char unk_02[0x2];
/* 0x04 */ s32* unk_04; /* 0x04 */ s32* unk_04;
/* 0x08 */ s32* unk_08; /* 0x08 */ s32* unk_08;
/* 0x0C */ s8 unk_0C; /* 0x0C */ u8 unk_0C;
/* 0x0D */ char unk_0D[0x3]; /* 0x0D */ char unk_0D[0x3];
/* 0x10 */ s32* unk_10; /* 0x10 */ s32* unk_10;
/* 0x14 */ s32* unk_14; /* 0x14 */ s32* unk_14;
} UnkLen18; } UnkLen18;
typedef struct UnkAl7C { typedef struct UnkAl7C {
/* 0x00 */ char unk_00[0x4]; /* 0x00 */ s32 unk_00;
/* 0x04 */ s32* unk_04; /* 0x04 */ s32* unk_04;
/* 0x08 */ s32* unk_08; /* 0x08 */ s32* unk_08;
/* 0x0C */ char unk_0C[0x8]; /* 0x0C */ char unk_0C[0x8];
/* 0x14 */ s32* unk_14; /* 0x14 */ s32* unk_14;
/* 0x18 */ s32* unk_18; /* 0x18 */ s32* unk_18;
/* 0x1C */ char unk_1C[0xC]; /* 0x1C */ s32 unk_1C;
/* 0x20 */ ALDMAproc dmaProc;
/* 0x24 */ NUDMAState* dmaState;
/* 0x28 */ s32 unk_28; /* 0x28 */ s32 unk_28;
/* 0x2C */ s32 unk_2C; /* 0x2C */ s32 unk_2C;
/* 0x30 */ s32 unk_30; /* 0x30 */ s32 unk_30;
/* 0x34 */ s32 unk_34; /* 0x34 */ s32 unk_34;
/* 0x38 */ char unk_38[0x4]; /* 0x38 */ s32* unk_38;
/* 0x3C */ f32 unk_3C; /* 0x3C */ f32 unk_3C;
/* 0x40 */ s32 unk_40; /* 0x40 */ s32 unk_40;
/* 0x44 */ s32 unk_44; /* 0x44 */ s32 unk_44;
/* 0x48 */ char unk_48[0x5]; /* 0x48 */ s32* unk_48;
/* 0x4D */ u8 unk_4D; /* 0x4C */ union {
s16 unk_4C;
struct {
u8 unk_4C;
u8 unk_4D;
} unk_4C_s;
};
/* 0x4E */ s16 unk_4E; /* 0x4E */ s16 unk_4E;
/* 0x50 */ char unk_50[0x4]; /* 0x50 */ s16 unk_50;
/* 0x52 */ s16 unk_52;
/* 0x54 */ s16 unk_54; /* 0x54 */ s16 unk_54;
/* 0x56 */ s16 unk_56; /* 0x56 */ s16 unk_56;
/* 0x58 */ char unk_58[0x14]; /* 0x58 */ s16 unk_58;
/* 0x5A */ s16 unk_5A;
/* 0x5C */ s16 unk_5C;
/* 0x5E */ s16 unk_5E;
/* 0x60 */ s16 unk_60;
/* 0x62 */ s16 unk_62;
/* 0x64 */ s32 unk_64;
/* 0x68 */ s32 unk_68;
/* 0x6C */ s32 unk_6C; /* 0x6C */ s32 unk_6C;
/* 0x70 */ s32 unk_70; /* 0x70 */ s32 unk_70;
/* 0x74 */ char unk_74[0x4]; /* 0x74 */ s16 unk_74;
/* 0x76 */ s16 unk_76;
/* 0x78 */ u8 unk_78; /* 0x78 */ u8 unk_78;
/* 0x79 */ char unk_79[0x3]; /* 0x79 */ u8 unk_79;
/* 0x7A */ u8 unk_7A[2];
} UnkAl7C; } UnkAl7C;
typedef struct UnkAl0 { typedef struct UnkAl0 {
/* 0x00 */ char unk_00[0x14]; /* 0x00 */ s32 unk_00;
/* 0x14 */ s32* unk_14; // pointer to nuAuDmaNew /* 0x04 */ s32 unk_04;
/* 0x18 */ ALHeap* unk_18; /* 0x08 */ s32 frequency;
/* 0x0C */ s32 unk_0C;
/* 0x10 */ s32 unk_10;
/* 0x14 */ void* dmaNew; // pointer to nuAuDmaNew
/* 0x18 */ ALHeap* heap;
/* 0x1C */ UnkAl7C* unk_1C; // pointer to list of UnkAl7C /* 0x1C */ UnkAl7C* unk_1C; // pointer to list of UnkAl7C
/* 0x20 */ UnkLen18* unk_20; // amt unknown /* 0x20 */ UnkLen18* unk_20; // amt unknown
/* 0x24 */ s32* unk_24; /* 0x24 */ s32* unk_24;
@ -113,13 +142,13 @@ typedef struct SoundSFXEntry {
} SoundSFXEntry; // size = 0xA } SoundSFXEntry; // size = 0xA
typedef struct Instrument { typedef struct Instrument {
/* 0x00 */ s32 wavOffset; /* 0x00 */ UNK_PTR wavOffset;
/* 0x04 */ s32 wavLength; /* 0x04 */ s32 wavLength;
/* 0x08 */ s32 loopPredictorOffset; /* 0x08 */ s32 loopPredictorOffset;
/* 0x0C */ s32 loopStart; /* 0x0C */ s32 loopStart;
/* 0x10 */ s32 loopEnd; /* 0x10 */ s32 loopEnd;
/* 0x14 */ s32 loopCount; /* 0x14 */ s32 loopCount;
/* 0x18 */ s32 predictorOffset; /* 0x18 */ UNK_PTR predictorOffset;
/* 0x1C */ s16 unk_1C; /* 0x1C */ s16 unk_1C;
/* 0x1E */ s16 unk_1E; /* 0x1E */ s16 unk_1E;
/* 0x20 */ f32 sampleRate; /* 0x20 */ f32 sampleRate;
@ -131,7 +160,7 @@ typedef struct Instrument {
/* 0x29 */ s8 unk_29; /* 0x29 */ s8 unk_29;
/* 0x2A */ s8 unk_2A; /* 0x2A */ s8 unk_2A;
/* 0x2B */ s8 unk_2B; /* 0x2B */ s8 unk_2B;
/* 0x2C */ s32 unkOffset; /* 0x2C */ UNK_PTR unkOffset;
} Instrument; // size = 0x30; } Instrument; // size = 0x30;
typedef Instrument* InstrumentGroup[16]; typedef Instrument* InstrumentGroup[16];
@ -149,7 +178,7 @@ typedef struct SoundPlayer {
/* 0x18 */ s32 unk_18; /* 0x18 */ s32 unk_18;
/* 0x1C */ Instrument* sfxInstrumentRef; /* 0x1C */ Instrument* sfxInstrumentRef;
/* 0x20 */ Instrument sfxInstrument; /* 0x20 */ Instrument sfxInstrument;
/* 0x50 */ s32 sefReadStart; /* 0x50 */ s8* sefReadStart;
/* 0x54 */ s8 changedTune; /* 0x54 */ s8 changedTune;
/* 0x55 */ u8 changedVolume; /* 0x55 */ u8 changedVolume;
/* 0x56 */ u8 changedPan; /* 0x56 */ u8 changedPan;
@ -214,7 +243,7 @@ typedef struct SoundManager {
/* 0x034 */ s32 unkCounterStep; /* 0x034 */ s32 unkCounterStep;
/* 0x038 */ s32 unkCounterMax; /* 0x038 */ s32 unkCounterMax;
/* 0x03C */ s32 unkCounter; /* 0x03C */ s32 unkCounter;
/* 0x040 */ UnkAl1 unk_40; /* 0x040 */ struct Fade unk_40;
/* 0x05C */ s32 unk_5C; /* 0x05C */ s32 unk_5C;
/* 0x060 */ s32 unk_60; /* 0x060 */ s32 unk_60;
/* 0x064 */ s32* unk_64[8]; /* 0x064 */ s32* unk_64[8];
@ -288,22 +317,77 @@ typedef struct UnkAl48 { // Track?
/* 0x46 */ char unk_46[2]; /* 0x46 */ char unk_46[2];
} UnkAl48; // size = 0x48 } UnkAl48; // size = 0x48
typedef struct SBNHeader {
/* 0x00 */ s32 signature; // 'SBN '
/* 0x04 */ s32 totalSize;
/* 0x08 */ s32 unk_08;
/* 0x0C */ s32 unk_0C;
/* 0x10 */ s32 tableOffset; // = 0x40
/* 0x14 */ s32 numEntries;
/* 0x18 */ s32 unk_18;
/* 0x1C */ s32 unk_1C;
/* 0x20 */ s32 unk_20;
/* 0x24 */ s32 INIToffset;
/* 0x28 */ s32 unk_28;
/* 0x2C */ s32 unk_2C;
/* 0x30 */ s32 unk_30;
/* 0x34 */ s32 unk_34;
/* 0x38 */ s32 unk_38;
/* 0x3C */ s32 unk_3C;
} SBNHeader; // size = 0x40
typedef struct INITHeader {
/* 0x00 */ s32 signature; // 'INIT'
/* 0x04 */ s32 unk_04;
/* 0x08 */ u16 entriesOffset;
/* 0x0A */ u16 entriesSize;
/* 0x0C */ u16 tblOffset;
/* 0x0E */ u16 tblSize;
/* 0x10 */ u16 shortsOffset;
/* 0x12 */ u16 shortsSize;
/* 0x14 */ char unk_14[0xC];
} INITHeader; // size = 0x20
typedef struct PERHeader {
/* 0x00 */ s32 signature; // 'PER ' or 'PRG '
/* 0x04 */ s32 totalSize; // including this header
/* 0x08 */ char unk_08[8];
} PERHeader; // size = 0x10
typedef struct PEREntry {
/* 0x00 */ char unk_00[0x90];
} PEREntry; // size = 0x90;
typedef struct SBNFileEntry { typedef struct SBNFileEntry {
/* 0x0 */ s32 offset; /* 0x0 */ s32 offset;
/* 0x4 */ s8 fmt; /* 0x4 */ u32 data;
/* 0x5 */ char unk_05;
/* 0x6 */ s16 length;
} SBNFileEntry; // size = 0x8 } SBNFileEntry; // size = 0x8
typedef struct BKHeader {
/* 0x00 */ u16 unk_00;
/* 0x02 */ char unk_02[2];
/* 0x04 */ s32 unk_04;
/* 0x08 */ char unk_08[4];
/* 0x0C */ u16 unk_0C;
/* 0x0E */ char unk_0E[2];
/* 0x10 */ char unk_10[2];
/* 0x12 */ u16 unk_12[0x10];
/* 0x32 */ u16 unk_32;
/* 0x34 */ u16 unk_34;
/* 0x36 */ u16 unk_36;
/* 0x38 */ u16 unk_38;
/* 0x3A */ u16 unk_3A;
/* 0x3C */ u16 unk_3C;
/* 0x3E */ u16 unk_3E;
} BKHeader; // size = 0x40
typedef struct InitSongEntry { typedef struct InitSongEntry {
/* 0x0 */ s16 bgmFileIndex; // required BGM file /* 0x0 */ u16 bgmFileIndex; // required BGM file
/* 0x2 */ s16 bkFileIndex[3]; // optional BK files for this track /* 0x2 */ u16 bkFileIndex[3]; // optional BK files for this track
} InitSongEntry; // size = 0x8 } InitSongEntry; // size = 0x8
typedef struct UnkAl19E0Sub { typedef struct UnkAl19E0Sub {
/* 0x0 */ u16 unk_0; /* 0x0 */ u16 unk_0;
/* 0x2 */ u16 unk_2;
/* 0x4 */ u16 unk_4;
} UnkAl19E0Sub; } UnkAl19E0Sub;
typedef struct UnkAl19E0Sub2 { typedef struct UnkAl19E0Sub2 {
@ -343,8 +427,8 @@ typedef struct UnkAl19E0 {
/* 0x0051 */ u8 unk_51; /* 0x0051 */ u8 unk_51;
/* 0x0052 */ u8 unk_52; /* 0x0052 */ u8 unk_52;
/* 0x0053 */ u8 unk_53; /* 0x0053 */ u8 unk_53;
/* 0x0054 */ s32* dataPER; /* 0x0054 */ PEREntry* dataPER;
/* 0x0058 */ s32* dataPRG; /* 0x0058 */ InstrumentCFG* dataPRG;
/* 0x005C */ s32* currentTrackData[4]; /* 0x005C */ s32* currentTrackData[4];
/* 0x006C */ UnkAl19E0Sub3 unk_6C[1]; /* 0x006C */ UnkAl19E0Sub3 unk_6C[1];
/* 0x0074 */ char unk_74[0x8]; /* 0x0074 */ char unk_74[0x8];
@ -369,7 +453,7 @@ typedef struct UnkAl19E0 {
/* 0x12EC */ InstrumentGroup* instrumentGroups[8]; /* 0x12EC */ InstrumentGroup* instrumentGroups[8];
/* 0x130C */ u8 unk_130C; /* 0x130C */ u8 unk_130C;
/* 0x130D */ char unk_130D[3]; /* 0x130D */ char unk_130D[3];
/* 0x1310 */ s32* banks[3]; /* 0x1310 */ SoundBank* banks[3];
/* 0x131C */ char unk_131C[4]; /* 0x131C */ char unk_131C[4];
/* 0x1320 */ UnkAl48 unk_1320[24]; /* 0x1320 */ UnkAl48 unk_1320[24];
} UnkAl19E0; // size = 0x19E0 } UnkAl19E0; // size = 0x19E0
@ -378,9 +462,8 @@ typedef struct BGMPlayerTrack {
/* 0x00 */ u32 bgmReadPos; /* 0x00 */ u32 bgmReadPos;
/* 0x04 */ u32 unk_04; /* 0x04 */ u32 unk_04;
/* 0x08 */ char unk_08[0x4]; /* 0x08 */ char unk_08[0x4];
/* 0x0C */ s32 unk_0C; /* 0x0C */ Instrument* unk_0C;
/* 0x10 */ s32 unk_10; /* 0x10 */ s32* unk_10[2];
/* 0x14 */ char unk_14[0x4];
/* 0x18 */ s32 subTrackVolume; /* 0x18 */ s32 subTrackVolume;
/* 0x1C */ s32 subTrackVolumeFadeDelta; /* 0x1C */ s32 subTrackVolumeFadeDelta;
/* 0x20 */ s32 subTrackVolumeFadeVolume; /* 0x20 */ s32 subTrackVolumeFadeVolume;
@ -437,17 +520,14 @@ typedef struct BGMPlayer {
/* 0x024 */ s32 bgmFileIndex; /* 0x024 */ s32 bgmFileIndex;
/* 0x028 */ s32 songID; /* 0x028 */ s32 songID;
/* 0x02C */ Fade fadeInfo; /* 0x02C */ Fade fadeInfo;
/* 0x03C */ u16 unk_3C;
/* 0x03E */ char unk_3E[0x8];
/* 0x046 */ s16 unk_46;
/* 0x048 */ s32 unk_48; /* 0x048 */ s32 unk_48;
/* 0x04C */ u8 unk_4C[0x1]; // not sure how long this is /* 0x04C */ u8 unk_4C[0x4]; // not sure how long this is
/* 0x04D */ char unk_4D[0xB]; /* 0x04D */ char unk_50[0x8];
/* 0x058 */ s16 unk_58; /* 0x058 */ s16 unk_58;
/* 0x05A */ s16 unk_5A; /* 0x05A */ s16 unk_5A;
/* 0x05C */ s16 unk_5C; /* 0x05C */ s16 unk_5C;
/* 0x05E */ char unk_5E[0x6]; /* 0x05E */ char unk_5E[0x6];
/* 0x064 */ s32 unk_64; /* 0x064 */ struct UnkAlTrack* unk_64;
/* 0x068 */ s32 unk_68; /* 0x068 */ s32 unk_68;
/* 0x06C */ s32 unk_6C; /* 0x06C */ s32 unk_6C;
/* 0x070 */ s32 unk_70; /* 0x070 */ s32 unk_70;
@ -466,7 +546,7 @@ typedef struct BGMPlayer {
/* 0x0D8 */ char unk_D8[0x90]; /* 0x0D8 */ char unk_D8[0x90];
/* 0x168 */ s32 unk_168; /* 0x168 */ s32 unk_168;
/* 0x16C */ char unk_16C[0x98]; /* 0x16C */ char unk_16C[0x98];
/* 0x204 */ s32 unk_204; /* 0x204 */ s32* unk_204;
/* 0x208 */ u16 unk_208; /* 0x208 */ u16 unk_208;
/* 0x20A */ u16 unk_20A; /* 0x20A */ u16 unk_20A;
/* 0x20C */ s16 unk_20C; /* 0x20C */ s16 unk_20C;
@ -516,7 +596,8 @@ typedef struct UnkAl8 {
typedef struct UnkAl1E4 { typedef struct UnkAl1E4 {
/* 0x00 */ char unk_00[0x8]; /* 0x00 */ char unk_00[0x8];
/* 0x08 */ s32 unk_08; /* 0x08 */ s32 unk_08;
/* 0x0C */ char unk_0C[0x18]; /* 0x0C */ char unk_0C[0x14];
/* 0x20 */ s32 unk_20;
/* 0x24 */ u8 unk_24; /* 0x24 */ u8 unk_24;
/* 0x25 */ u8 unk_25; /* 0x25 */ u8 unk_25;
/* 0x26 */ char unk_26[0x2]; /* 0x26 */ char unk_26[0x2];
@ -529,7 +610,7 @@ typedef struct UnkAl834 {
/* 0x004 */ s32 unk_04; /* 0x004 */ s32 unk_04;
/* 0x008 */ s32 unk_08; /* 0x008 */ s32 unk_08;
/* 0x00C */ s32 unk_0C; /* 0x00C */ s32 unk_0C;
/* 0x010 */ char unk_10[0x10]; /* 0x010 */ s32* unk_10[4];
/* 0x020 */ u8 unk_20; /* 0x020 */ u8 unk_20;
/* 0x021 */ u8 unk_21; /* 0x021 */ u8 unk_21;
/* 0x022 */ u8 unk_22; /* 0x022 */ u8 unk_22;
@ -538,6 +619,32 @@ typedef struct UnkAl834 {
/* 0x7B4 */ UnkAl8 unk_7B4[16]; /* 0x7B4 */ UnkAl8 unk_7B4[16];
} UnkAl834; } UnkAl834;
typedef struct ALConfig {
/* 0x00 */ s32 unk_00;
/* 0x04 */ s32 unk_04;
/* 0x08 */ s32 frequency;
/* 0x0C */ u8 unk_0C;
/* 0x10 */ void* dmaNew;
/* 0x14 */ ALHeap* heap;
} ALConfig; // size = 0x18;
typedef struct UnkAl4PlusSub {
/* 0x00 */ u16 unkOffset1;
/* 0x02 */ u16 unkOffset2;
} UnkAl4PlusSub; // size = 0x4;
typedef struct UnkAl4Plus {
/* 0x00 */ u8 count;
/* 0x01 */ char unk_01[3];
/* 0x04 */ struct UnkAl4PlusSub unk_04[1]; // variable size
} UnkAl4Plus;
typedef struct UnkAlTrack {
/* 0x00 */ s32 unk_00;
/* 0x04 */ s32 unk_04;
/* 0x08 */ s32 unk_08;
} UnkAlTrack;
extern u8 D_80078181; extern u8 D_80078181;
extern s32 D_80078190; extern s32 D_80078190;
extern s32 D_800781D0; extern s32 D_800781D0;
@ -555,7 +662,7 @@ extern UnkAl0* D_80078E54;
extern s8 D_80078E58; extern s8 D_80078E58;
extern s16 D_80078E5A; extern s16 D_80078E5A;
extern s8 D_80078E5C; extern s8 D_80078E5C;
extern s32 D_8007F1F8[1]; // points to 80078290 extern s32* D_8007F1F8[1]; // points to 80078290
extern UnkAl19E0* D_8009A5C0; extern UnkAl19E0* D_8009A5C0;
extern BGMPlayer* D_8009A5CC; extern BGMPlayer* D_8009A5CC;
@ -567,8 +674,8 @@ extern BGMPlayer* D_8009A664;
extern u16 D_800A0F50; extern u16 D_800A0F50;
extern s32* D_800A3FE0; extern s16* D_800A3FE0;
extern s32* D_800A3FE4; extern s16* D_800A3FE4;
extern s32 D_800A3FE8; extern s32 D_800A3FE8;
extern s8 D_800A3FEC; extern s8 D_800A3FEC;
extern s16 D_800A3FEE; extern s16 D_800A3FEE;
@ -589,11 +696,15 @@ void func_8004D510(BGMPlayer*);
BGMPlayer* snd_get_player_with_song_name(s32); BGMPlayer* snd_get_player_with_song_name(s32);
s32 func_8004DA0C(UNK_TYPE); s32 func_8004DA0C(UNK_TYPE);
void func_8004DAA8(BGMPlayer*); void func_8004DAA8(BGMPlayer*);
s32 func_8004DB28(BGMPlayer*);
void func_8004DC80(s32);
void func_8004DFD4(UnkAl19E0*); void func_8004DFD4(UnkAl19E0*);
void func_8004E158(BGMPlayer*, s32, s32, UnkAl19E0*); void func_8004E158(BGMPlayer*, s32, s32, UnkAl19E0*);
void func_8004E344(BGMPlayer*, u8*);
void snd_update_bgm_fade(BGMPlayer*); void snd_update_bgm_fade(BGMPlayer*);
void func_8004E444(BGMPlayer*); void func_8004E444(BGMPlayer*);
s16 func_8004E4B8(BGMPlayer*); s16 func_8004E4B8(BGMPlayer*);
void func_8004E880(BGMPlayer*, s32, s32);
void snd_BGMCmd_E0_MasterTempo(BGMPlayer*, BGMPlayerTrack*); void snd_BGMCmd_E0_MasterTempo(BGMPlayer*, BGMPlayerTrack*);
s32 snd_bpm_to_tempo(BGMPlayer*, u32); s32 snd_bpm_to_tempo(BGMPlayer*, u32);
void snd_BGMCmd_E1_MasterVolume(BGMPlayer*, BGMPlayerTrack*); void snd_BGMCmd_E1_MasterVolume(BGMPlayer*, BGMPlayerTrack*);
@ -628,6 +739,7 @@ void func_80050818(BGMPlayer*, s32);
void func_8005087C(BGMPlayer*, s32*, s32); void func_8005087C(BGMPlayer*, s32*, s32);
s32 func_80056068(s32, u8); s32 func_80056068(s32, u8);
s32 func_800506C8(s32, s32); s32 func_800506C8(s32, s32);
void func_80050B90(UnkAl834*, s32, s32, UnkAl19E0*);
s32 func_80050C30(u32); s32 func_80050C30(u32);
void func_80050D50(UnkAl1E4*); void func_80050D50(UnkAl1E4*);
void func_800511BC(UnkAl834*); void func_800511BC(UnkAl834*);
@ -647,16 +759,17 @@ void snd_reset_instrument(Instrument*);
void func_80053370(UnkAlC*); void func_80053370(UnkAlC*);
void func_800533A8(InstrumentCFG*); void func_800533A8(InstrumentCFG*);
void func_80053654(UnkAl19E0*); void func_80053654(UnkAl19E0*);
//void snd_initialize_bgm_fade(Fade*, s32, s32, s16); void snd_initialize_bgm_fade(Fade*, s32, s32, s16);
void snd_clear_bgm_fade(Fade*); void snd_clear_bgm_fade(Fade*);
void func_80053A28(UnkAl1*); void func_80053A28(Fade*);
void func_80053A98(u8, u16, s32); void func_80053A98(u8, u16, s32);
void func_80053AEC(UnkAl1*, s16); void func_80053AEC(Fade*, s16);
void func_80053BA8(UnkAl1*); void func_80053BA8(Fade*);
s32 func_80053BE8(UnkAl19E0*, s32, s32, s32*); Instrument* func_80053BE8(UnkAl19E0*, u32, u32, s32**);
s32 snd_load_BK(s32, s32);
void func_80054CE0(s32, s32); void func_80054CE0(s32, s32);
void func_8005610C(void);
void func_80055050(ALHeap*);
void func_80055110(BGMPlayer*); void func_80055110(BGMPlayer*);
s32 func_80055FF0(s32, s32); s32 func_80055FF0(s32, s32);
s32 func_8005600C(s32, s32); s32 func_8005600C(s32, s32);
@ -664,6 +777,7 @@ s32 func_80056028(s32, u8);
s32 func_80056044(s32, u8); s32 func_80056044(s32, u8);
void func_8005608C(s32*, s32*); void func_8005608C(s32*, s32*);
void func_800560A8(void); void func_800560A8(void);
void func_8005610C(void);
void func_80056144(UnkFuncAl, s32); void func_80056144(UnkFuncAl, s32);
void audio_set_stereo(void); void audio_set_stereo(void);
void audio_set_mono(void); void audio_set_mono(void);
@ -691,12 +805,16 @@ void func_80057E5C(u8);
void func_80057EB0(void); void func_80057EB0(void);
void func_80057ED0(s16); void func_80057ED0(s16);
SoundBank* snd_load_BK_to_bank(s32 bkFileOffset, SoundBank* bank, s32 bankIndex, s32 bankGroup);
void snd_load_INIT(UnkAl19E0*, s32, ALHeap*); void snd_load_INIT(UnkAl19E0*, s32, ALHeap*);
s32 snd_fetch_SBN_file(u16, s32, s32*); s32 snd_fetch_SBN_file(u32, s32, SBNFileEntry*);
void snd_load_PER(UnkAl19E0*, s32*); void snd_load_PER(UnkAl19E0*, s32);
void snd_load_PRG(UnkAl19E0*, s32*); void snd_load_PRG(UnkAl19E0*, s32);
void snd_read_rom(s32, s32*, s32); void snd_read_rom(s32, void*, u32);
void snd_copy_words(void*, void*, s32);
void func_80058E84(s32*, u8, ALHeap*);
void func_8005904C(s32*, u8);
#undef alHeapAlloc #undef alHeapAlloc
void* alHeapAlloc(ALHeap *heap, s32 arg1, s32 size); void* alHeapAlloc(ALHeap *heap, s32 arg1, s32 size);

View File

@ -163,25 +163,24 @@ BSS s32 D_800A0F44;
BSS char D_800A0F48[0x8]; BSS char D_800A0F48[0x8];
BSS u16 D_800A0F50; BSS u16 D_800A0F50;
BSS char D_800A0F54[0x4]; BSS char D_800A0F54[0x4];
BSS s8 D_800A0F58[0x25B8]; BSS s8 nuAuMgrThread[0x25B8];
BSS s32 D_800A3510; BSS s32 D_800A3510[3];
BSS char D_800A3514[0xC]; BSS char D_800A351C[4];
BSS s32 D_800A3520; BSS s32 D_800A3520;
BSS char D_800A3524[0x104]; BSS char D_800A3524[0x104];
BSS s8 D_800A3628[0xC]; BSS s8 D_800A3628[0xC];
BSS s16 nuAuFrameSampleSize; BSS s16 D_800A3634;
BSS s32 D_800A3638; BSS s32 D_800A3638;
BSS char D_800A363C[0x4]; BSS char D_800A363C[0x4];
BSS s32 D_800A3640; BSS s32 nuAuDmaMesgQ;
BSS char D_800A3644[0x14]; BSS char D_800A3644[0x14];
BSS s8 D_800A3658[0xC8]; BSS s8 nuAuDmaMesgBuf[0xC8];
BSS s8 D_800A3720[0x4B0]; BSS s8 nuAuDmaIOMesgBuf[0x4B0];
BSS s32 nuAuDmaState; BSS s32 nuAuDmaState;
BSS s32 D_800A3BD4; BSS s32 D_800A3BD4;
BSS char D_800A3BD8[0x8]; BSS char D_800A3BD8[0x8];
BSS s32 nuAuDmaBuf; BSS s8 nuAuDmaBufList[50 * 0x14];
BSS char D_800A3BE4[0xC]; BSS s8 D_800A3FC8[8];
BSS s8 D_800A3BF0[0x3E0];
BSS s32 D_800A3FD0; BSS s32 D_800A3FD0;
BSS char D_800A3FD4[0xC]; BSS char D_800A3FD4[0xC];
BSS s32 D_800A3FE0; BSS s32 D_800A3FE0;
@ -322,7 +321,7 @@ BSS s8 gZoneCollisionData[0x10];
BSS s8 wMapHitName[0x18]; BSS s8 wMapHitName[0x18];
BSS s8 nuSiMgrMesgQ[0x38]; BSS s8 nuSiMgrMesgQ[0x38];
BSS s8 wMapShapeName[0x18]; BSS s8 wMapShapeName[0x18];
BSS s8 D_800D9248[0x30]; BSS s8 nuAuHeap[0x30];
BSS s8 nuGfxTask[10 * 0x58]; BSS s8 nuGfxTask[10 * 0x58];
BSS s8 D_800D95E8[0x38]; BSS s8 D_800D95E8[0x38];
BSS s8 D_800D9620[0x48]; BSS s8 D_800D9620[0x48];

View File

@ -1,188 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel create_audio_system
/* 25F00 8004AB00 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 25F04 8004AB04 AFB00030 */ sw $s0, 0x30($sp)
/* 25F08 8004AB08 3C10800E */ lui $s0, %hi(D_800D9248)
/* 25F0C 8004AB0C 26109248 */ addiu $s0, $s0, %lo(D_800D9248)
/* 25F10 8004AB10 0200202D */ daddu $a0, $s0, $zero
/* 25F14 8004AB14 3C05801B */ lui $a1, %hi(D_801AA000)
/* 25F18 8004AB18 24A5A000 */ addiu $a1, $a1, %lo(D_801AA000)
/* 25F1C 8004AB1C 3C060005 */ lui $a2, 5
/* 25F20 8004AB20 24020001 */ addiu $v0, $zero, 1
/* 25F24 8004AB24 AFBF003C */ sw $ra, 0x3c($sp)
/* 25F28 8004AB28 AFB20038 */ sw $s2, 0x38($sp)
/* 25F2C 8004AB2C AFB10034 */ sw $s1, 0x34($sp)
/* 25F30 8004AB30 3C018008 */ lui $at, %hi(nuAuTaskStop)
/* 25F34 8004AB34 A0228180 */ sb $v0, %lo(nuAuTaskStop)($at)
/* 25F38 8004AB38 3C018008 */ lui $at, %hi(D_80078170)
/* 25F3C 8004AB3C A0208170 */ sb $zero, %lo(D_80078170)($at)
/* 25F40 8004AB40 0C015FC8 */ jal alHeapInit
/* 25F44 8004AB44 34C66000 */ ori $a2, $a2, 0x6000
/* 25F48 8004AB48 24047D00 */ addiu $a0, $zero, 0x7d00
/* 25F4C 8004AB4C 24020018 */ addiu $v0, $zero, 0x18
/* 25F50 8004AB50 AFA20018 */ sw $v0, 0x18($sp)
/* 25F54 8004AB54 24020004 */ addiu $v0, $zero, 4
/* 25F58 8004AB58 0C018558 */ jal osAiSetFrequency
/* 25F5C 8004AB5C AFA2001C */ sw $v0, 0x1c($sp)
/* 25F60 8004AB60 3C03800E */ lui $v1, %hi(D_800DAAB8)
/* 25F64 8004AB64 8C63AAB8 */ lw $v1, %lo(D_800DAAB8)($v1)
/* 25F68 8004AB68 00620018 */ mult $v1, $v0
/* 25F6C 8004AB6C 00001812 */ mflo $v1
/* 25F70 8004AB70 2464003B */ addiu $a0, $v1, 0x3b
/* 25F74 8004AB74 3C038888 */ lui $v1, 0x8888
/* 25F78 8004AB78 34638889 */ ori $v1, $v1, 0x8889
/* 25F7C 8004AB7C 00830019 */ multu $a0, $v1
/* 25F80 8004AB80 0000882D */ daddu $s1, $zero, $zero
/* 25F84 8004AB84 3C12800A */ lui $s2, %hi(D_800A3510)
/* 25F88 8004AB88 26523510 */ addiu $s2, $s2, %lo(D_800A3510)
/* 25F8C 8004AB8C AFA20020 */ sw $v0, 0x20($sp)
/* 25F90 8004AB90 00001810 */ mfhi $v1
/* 25F94 8004AB94 3C02B216 */ lui $v0, 0xb216
/* 25F98 8004AB98 344242C9 */ ori $v0, $v0, 0x42c9
/* 25F9C 8004AB9C 00031942 */ srl $v1, $v1, 5
/* 25FA0 8004ABA0 00620019 */ multu $v1, $v0
/* 25FA4 8004ABA4 A3A00024 */ sb $zero, 0x24($sp)
/* 25FA8 8004ABA8 AFB0002C */ sw $s0, 0x2c($sp)
/* 25FAC 8004ABAC 3C028005 */ lui $v0, %hi(nuAuDmaNew)
/* 25FB0 8004ABB0 2442B224 */ addiu $v0, $v0, %lo(nuAuDmaNew)
/* 25FB4 8004ABB4 AFA20028 */ sw $v0, 0x28($sp)
/* 25FB8 8004ABB8 00001810 */ mfhi $v1
/* 25FBC 8004ABBC 000319C2 */ srl $v1, $v1, 7
/* 25FC0 8004ABC0 24630001 */ addiu $v1, $v1, 1
/* 25FC4 8004ABC4 00031040 */ sll $v0, $v1, 1
/* 25FC8 8004ABC8 00431021 */ addu $v0, $v0, $v1
/* 25FCC 8004ABCC 000210C0 */ sll $v0, $v0, 3
/* 25FD0 8004ABD0 00431023 */ subu $v0, $v0, $v1
/* 25FD4 8004ABD4 000210C0 */ sll $v0, $v0, 3
/* 25FD8 8004ABD8 3C01800A */ lui $at, %hi(nuAuFrameSampleSize)
/* 25FDC 8004ABDC AC223634 */ sw $v0, %lo(nuAuFrameSampleSize)($at)
/* 25FE0 8004ABE0 2442FF48 */ addiu $v0, $v0, -0xb8
/* 25FE4 8004ABE4 3C01800A */ lui $at, %hi(D_800A3638)
/* 25FE8 8004ABE8 AC223638 */ sw $v0, %lo(D_800A3638)($at)
.L8004ABEC:
/* 25FEC 8004ABEC 24050001 */ addiu $a1, $zero, 1
/* 25FF0 8004ABF0 24064000 */ addiu $a2, $zero, 0x4000
/* 25FF4 8004ABF4 8FA4002C */ lw $a0, 0x2c($sp)
/* 25FF8 8004ABF8 0C015FE4 */ jal alHeapAlloc
/* 25FFC 8004ABFC 02258821 */ addu $s1, $s1, $a1
/* 26000 8004AC00 AE420000 */ sw $v0, ($s2)
/* 26004 8004AC04 2E220003 */ sltiu $v0, $s1, 3
/* 26008 8004AC08 1440FFF8 */ bnez $v0, .L8004ABEC
/* 2600C 8004AC0C 26520004 */ addiu $s2, $s2, 4
/* 26010 8004AC10 0000882D */ daddu $s1, $zero, $zero
/* 26014 8004AC14 24090002 */ addiu $t1, $zero, 2
/* 26018 8004AC18 3C08800E */ lui $t0, %hi(rspbootUcodeBuffer)
/* 2601C 8004AC1C 25089780 */ addiu $t0, $t0, %lo(rspbootUcodeBuffer)
/* 26020 8004AC20 24070100 */ addiu $a3, $zero, 0x100
/* 26024 8004AC24 3C068007 */ lui $a2, %hi(n_aspMain_text_bin)
/* 26028 8004AC28 24C631A0 */ addiu $a2, $a2, %lo(n_aspMain_text_bin)
/* 2602C 8004AC2C 3C058009 */ lui $a1, %hi(n_aspMain_data_bin)
/* 26030 8004AC30 24A57A80 */ addiu $a1, $a1, %lo(n_aspMain_data_bin)
/* 26034 8004AC34 24040800 */ addiu $a0, $zero, 0x800
/* 26038 8004AC38 3C03800A */ lui $v1, %hi(D_800A3520)
/* 2603C 8004AC3C 24633520 */ addiu $v1, $v1, %lo(D_800A3520)
.L8004AC40:
/* 26040 8004AC40 AC600000 */ sw $zero, ($v1)
/* 26044 8004AC44 AC600054 */ sw $zero, 0x54($v1)
/* 26048 8004AC48 AC690010 */ sw $t1, 0x10($v1)
/* 2604C 8004AC4C AC680018 */ sw $t0, 0x18($v1)
/* 26050 8004AC50 AC67001C */ sw $a3, 0x1c($v1)
/* 26054 8004AC54 AC660020 */ sw $a2, 0x20($v1)
/* 26058 8004AC58 AC650028 */ sw $a1, 0x28($v1)
/* 2605C 8004AC5C AC64002C */ sw $a0, 0x2c($v1)
/* 26060 8004AC60 AC600030 */ sw $zero, 0x30($v1)
/* 26064 8004AC64 AC600034 */ sw $zero, 0x34($v1)
/* 26068 8004AC68 AC600038 */ sw $zero, 0x38($v1)
/* 2606C 8004AC6C AC60003C */ sw $zero, 0x3c($v1)
/* 26070 8004AC70 AC600048 */ sw $zero, 0x48($v1)
/* 26074 8004AC74 AC60004C */ sw $zero, 0x4c($v1)
/* 26078 8004AC78 26310001 */ addiu $s1, $s1, 1
/* 2607C 8004AC7C 2E220003 */ sltiu $v0, $s1, 3
/* 26080 8004AC80 1440FFEF */ bnez $v0, .L8004AC40
/* 26084 8004AC84 24630058 */ addiu $v1, $v1, 0x58
/* 26088 8004AC88 0000882D */ daddu $s1, $zero, $zero
/* 2608C 8004AC8C 3C10800A */ lui $s0, %hi(D_800A3628)
/* 26090 8004AC90 26103628 */ addiu $s0, $s0, %lo(D_800A3628)
.L8004AC94:
/* 26094 8004AC94 24050001 */ addiu $a1, $zero, 1
/* 26098 8004AC98 02258821 */ addu $s1, $s1, $a1
/* 2609C 8004AC9C 3C06800A */ lui $a2, %hi(nuAuFrameSampleSize)
/* 260A0 8004ACA0 8CC63634 */ lw $a2, %lo(nuAuFrameSampleSize)($a2)
/* 260A4 8004ACA4 8FA4002C */ lw $a0, 0x2c($sp)
/* 260A8 8004ACA8 0C015FE4 */ jal alHeapAlloc
/* 260AC 8004ACAC 00063080 */ sll $a2, $a2, 2
/* 260B0 8004ACB0 AE020000 */ sw $v0, ($s0)
/* 260B4 8004ACB4 2E220003 */ sltiu $v0, $s1, 3
/* 260B8 8004ACB8 1440FFF6 */ bnez $v0, .L8004AC94
/* 260BC 8004ACBC 26100004 */ addiu $s0, $s0, 4
/* 260C0 8004ACC0 0000882D */ daddu $s1, $zero, $zero
/* 260C4 8004ACC4 3C02800A */ lui $v0, %hi(nuAuDmaBuf)
/* 260C8 8004ACC8 24423BE0 */ addiu $v0, $v0, %lo(nuAuDmaBuf)
/* 260CC 8004ACCC 0040802D */ daddu $s0, $v0, $zero
/* 260D0 8004ACD0 26120014 */ addiu $s2, $s0, 0x14
/* 260D4 8004ACD4 AE000004 */ sw $zero, 4($s0)
/* 260D8 8004ACD8 AE000000 */ sw $zero, ($s0)
.L8004ACDC:
/* 260DC 8004ACDC 0240202D */ daddu $a0, $s2, $zero
/* 260E0 8004ACE0 0C012CFB */ jal alLink
/* 260E4 8004ACE4 0200282D */ daddu $a1, $s0, $zero
/* 260E8 8004ACE8 24050001 */ addiu $a1, $zero, 1
/* 260EC 8004ACEC 24060500 */ addiu $a2, $zero, 0x500
/* 260F0 8004ACF0 26520014 */ addiu $s2, $s2, 0x14
/* 260F4 8004ACF4 8FA4002C */ lw $a0, 0x2c($sp)
/* 260F8 8004ACF8 0C015FE4 */ jal alHeapAlloc
/* 260FC 8004ACFC 02258821 */ addu $s1, $s1, $a1
/* 26100 8004AD00 AE020010 */ sw $v0, 0x10($s0)
/* 26104 8004AD04 2E220031 */ sltiu $v0, $s1, 0x31
/* 26108 8004AD08 1440FFF4 */ bnez $v0, .L8004ACDC
/* 2610C 8004AD0C 26100014 */ addiu $s0, $s0, 0x14
/* 26110 8004AD10 24050001 */ addiu $a1, $zero, 1
/* 26114 8004AD14 8FA4002C */ lw $a0, 0x2c($sp)
/* 26118 8004AD18 0C015FE4 */ jal alHeapAlloc
/* 2611C 8004AD1C 24060500 */ addiu $a2, $zero, 0x500
/* 26120 8004AD20 3C04800A */ lui $a0, %hi(D_800A3640)
/* 26124 8004AD24 24843640 */ addiu $a0, $a0, %lo(D_800A3640)
/* 26128 8004AD28 3C05800A */ lui $a1, %hi(D_800A3658)
/* 2612C 8004AD2C 24A53658 */ addiu $a1, $a1, %lo(D_800A3658)
/* 26130 8004AD30 00111880 */ sll $v1, $s1, 2
/* 26134 8004AD34 00711821 */ addu $v1, $v1, $s1
/* 26138 8004AD38 00031880 */ sll $v1, $v1, 2
/* 2613C 8004AD3C 3C01800A */ lui $at, %hi(D_800A3BF0)
/* 26140 8004AD40 00230821 */ addu $at, $at, $v1
/* 26144 8004AD44 AC223BF0 */ sw $v0, %lo(D_800A3BF0)($at)
/* 26148 8004AD48 0C019560 */ jal osCreateMesgQueue
/* 2614C 8004AD4C 24060032 */ addiu $a2, $zero, 0x32
/* 26150 8004AD50 3C04800C */ lui $a0, %hi(D_800B91A0)
/* 26154 8004AD54 248491A0 */ addiu $a0, $a0, %lo(D_800B91A0)
/* 26158 8004AD58 3C028005 */ lui $v0, %hi(func_8004B328)
/* 2615C 8004AD5C 2442B328 */ addiu $v0, $v0, %lo(func_8004B328)
/* 26160 8004AD60 3C018008 */ lui $at, %hi(nuAuPreNMIFunc)
/* 26164 8004AD64 AC228174 */ sw $v0, %lo(nuAuPreNMIFunc)($at)
/* 26168 8004AD68 0C015894 */ jal func_80056250
/* 2616C 8004AD6C 27A50018 */ addiu $a1, $sp, 0x18
/* 26170 8004AD70 8FA40020 */ lw $a0, 0x20($sp)
/* 26174 8004AD74 0C014B97 */ jal snd_load_audio_data
/* 26178 8004AD78 00000000 */ nop
/* 2617C 8004AD7C 3C10800A */ lui $s0, %hi(D_800A0F58)
/* 26180 8004AD80 26100F58 */ addiu $s0, $s0, %lo(D_800A0F58)
/* 26184 8004AD84 0200202D */ daddu $a0, $s0, $zero
/* 26188 8004AD88 24050003 */ addiu $a1, $zero, 3
/* 2618C 8004AD8C 3C068005 */ lui $a2, %hi(func_8004AE08)
/* 26190 8004AD90 24C6AE08 */ addiu $a2, $a2, %lo(func_8004AE08)
/* 26194 8004AD94 3C02800A */ lui $v0, %hi(D_800A3510)
/* 26198 8004AD98 24423510 */ addiu $v0, $v0, %lo(D_800A3510)
/* 2619C 8004AD9C AFA20010 */ sw $v0, 0x10($sp)
/* 261A0 8004ADA0 24020046 */ addiu $v0, $zero, 0x46
/* 261A4 8004ADA4 0000382D */ daddu $a3, $zero, $zero
/* 261A8 8004ADA8 0C019798 */ jal osCreateThread
/* 261AC 8004ADAC AFA20014 */ sw $v0, 0x14($sp)
/* 261B0 8004ADB0 0C019808 */ jal osStartThread
/* 261B4 8004ADB4 0200202D */ daddu $a0, $s0, $zero
/* 261B8 8004ADB8 8FBF003C */ lw $ra, 0x3c($sp)
/* 261BC 8004ADBC 8FB20038 */ lw $s2, 0x38($sp)
/* 261C0 8004ADC0 8FB10034 */ lw $s1, 0x34($sp)
/* 261C4 8004ADC4 8FB00030 */ lw $s0, 0x30($sp)
/* 261C8 8004ADC8 03E00008 */ jr $ra
/* 261CC 8004ADCC 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -1,173 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8004AE08
/* 26208 8004AE08 27BDFF50 */ addiu $sp, $sp, -0xb0
/* 2620C 8004AE0C AFB00088 */ sw $s0, 0x88($sp)
/* 26210 8004AE10 27B00020 */ addiu $s0, $sp, 0x20
/* 26214 8004AE14 0200202D */ daddu $a0, $s0, $zero
/* 26218 8004AE18 27A50038 */ addiu $a1, $sp, 0x38
/* 2621C 8004AE1C 24060008 */ addiu $a2, $zero, 8
/* 26220 8004AE20 AFBF00AC */ sw $ra, 0xac($sp)
/* 26224 8004AE24 AFBE00A8 */ sw $fp, 0xa8($sp)
/* 26228 8004AE28 AFB700A4 */ sw $s7, 0xa4($sp)
/* 2622C 8004AE2C AFB600A0 */ sw $s6, 0xa0($sp)
/* 26230 8004AE30 AFB5009C */ sw $s5, 0x9c($sp)
/* 26234 8004AE34 AFB40098 */ sw $s4, 0x98($sp)
/* 26238 8004AE38 AFB30094 */ sw $s3, 0x94($sp)
/* 2623C 8004AE3C AFB20090 */ sw $s2, 0x90($sp)
/* 26240 8004AE40 0C019560 */ jal osCreateMesgQueue
/* 26244 8004AE44 AFB1008C */ sw $s1, 0x8c($sp)
/* 26248 8004AE48 27B10058 */ addiu $s1, $sp, 0x58
/* 2624C 8004AE4C 0220202D */ daddu $a0, $s1, $zero
/* 26250 8004AE50 27A50070 */ addiu $a1, $sp, 0x70
/* 26254 8004AE54 0C019560 */ jal osCreateMesgQueue
/* 26258 8004AE58 24060001 */ addiu $a2, $zero, 1
/* 2625C 8004AE5C 27A40010 */ addiu $a0, $sp, 0x10
/* 26260 8004AE60 0200282D */ daddu $a1, $s0, $zero
/* 26264 8004AE64 0C017B8C */ jal nuScAddClient
/* 26268 8004AE68 24060003 */ addiu $a2, $zero, 3
/* 2626C 8004AE6C 0000902D */ daddu $s2, $zero, $zero
/* 26270 8004AE70 0240982D */ daddu $s3, $s2, $zero
/* 26274 8004AE74 0240A82D */ daddu $s5, $s2, $zero
/* 26278 8004AE78 3C14800A */ lui $s4, %hi(D_800A3510)
/* 2627C 8004AE7C 8E943510 */ lw $s4, %lo(D_800A3510)($s4)
/* 26280 8004AE80 3C1E800A */ lui $fp, %hi(D_800A3628)
/* 26284 8004AE84 8FDE3628 */ lw $fp, %lo(D_800A3628)($fp)
/* 26288 8004AE88 3C178008 */ lui $s7, %hi(D_80078170)
/* 2628C 8004AE8C 26F78170 */ addiu $s7, $s7, %lo(D_80078170)
/* 26290 8004AE90 AFB10080 */ sw $s1, 0x80($sp)
/* 26294 8004AE94 3C11800A */ lui $s1, %hi(D_800A3520)
/* 26298 8004AE98 26313520 */ addiu $s1, $s1, %lo(D_800A3520)
/* 2629C 8004AE9C AFA00078 */ sw $zero, 0x78($sp)
.L8004AEA0:
/* 262A0 8004AEA0 27A40020 */ addiu $a0, $sp, 0x20
.L8004AEA4:
/* 262A4 8004AEA4 27A50074 */ addiu $a1, $sp, 0x74
.L8004AEA8:
/* 262A8 8004AEA8 0C0195BC */ jal osRecvMesg
/* 262AC 8004AEAC 24060001 */ addiu $a2, $zero, 1
/* 262B0 8004AEB0 8FA20074 */ lw $v0, 0x74($sp)
/* 262B4 8004AEB4 84430000 */ lh $v1, ($v0)
/* 262B8 8004AEB8 24080001 */ addiu $t0, $zero, 1
/* 262BC 8004AEBC 10680005 */ beq $v1, $t0, .L8004AED4
/* 262C0 8004AEC0 24020002 */ addiu $v0, $zero, 2
/* 262C4 8004AEC4 1062005F */ beq $v1, $v0, .L8004B044
/* 262C8 8004AEC8 27A40020 */ addiu $a0, $sp, 0x20
/* 262CC 8004AECC 08012BAA */ j .L8004AEA8
/* 262D0 8004AED0 27A50074 */ addiu $a1, $sp, 0x74
.L8004AED4:
/* 262D4 8004AED4 8FA20078 */ lw $v0, 0x78($sp)
/* 262D8 8004AED8 10400021 */ beqz $v0, .L8004AF60
/* 262DC 8004AEDC 24080001 */ addiu $t0, $zero, 1
/* 262E0 8004AEE0 3C028008 */ lui $v0, %hi(nuAuTaskStop)
/* 262E4 8004AEE4 90428180 */ lbu $v0, %lo(nuAuTaskStop)($v0)
/* 262E8 8004AEE8 1448001D */ bne $v0, $t0, .L8004AF60
/* 262EC 8004AEEC 0100302D */ daddu $a2, $t0, $zero
/* 262F0 8004AEF0 8FA80080 */ lw $t0, 0x80($sp)
/* 262F4 8004AEF4 3C04800E */ lui $a0, %hi(D_800DA444)
/* 262F8 8004AEF8 2484A444 */ addiu $a0, $a0, %lo(D_800DA444)
/* 262FC 8004AEFC AE340040 */ sw $s4, 0x40($s1)
/* 26300 8004AF00 AE280050 */ sw $t0, 0x50($s1)
/* 26304 8004AF04 8FA8007C */ lw $t0, 0x7c($sp)
/* 26308 8004AF08 0220282D */ daddu $a1, $s1, $zero
/* 2630C 8004AF0C 01141023 */ subu $v0, $t0, $s4
/* 26310 8004AF10 000210C3 */ sra $v0, $v0, 3
/* 26314 8004AF14 000210C0 */ sll $v0, $v0, 3
/* 26318 8004AF18 0C019608 */ jal osSendMesg
/* 2631C 8004AF1C AE220044 */ sw $v0, 0x44($s1)
/* 26320 8004AF20 0C012C9A */ jal nuAuCleanDMABuffers
/* 26324 8004AF24 26730001 */ addiu $s3, $s3, 1
/* 26328 8004AF28 0000282D */ daddu $a1, $zero, $zero
/* 2632C 8004AF2C 8FA40080 */ lw $a0, 0x80($sp)
/* 26330 8004AF30 0C0195BC */ jal osRecvMesg
/* 26334 8004AF34 24060001 */ addiu $a2, $zero, 1
/* 26338 8004AF38 24080003 */ addiu $t0, $zero, 3
/* 2633C 8004AF3C 52680001 */ beql $s3, $t0, .L8004AF44
/* 26340 8004AF40 0000982D */ daddu $s3, $zero, $zero
.L8004AF44:
/* 26344 8004AF44 26520001 */ addiu $s2, $s2, 1
/* 26348 8004AF48 24080003 */ addiu $t0, $zero, 3
/* 2634C 8004AF4C 16480004 */ bne $s2, $t0, .L8004AF60
/* 26350 8004AF50 26310058 */ addiu $s1, $s1, 0x58
/* 26354 8004AF54 3C11800A */ lui $s1, %hi(D_800A3520)
/* 26358 8004AF58 26313520 */ addiu $s1, $s1, %lo(D_800A3520)
/* 2635C 8004AF5C 0000902D */ daddu $s2, $zero, $zero
.L8004AF60:
/* 26360 8004AF60 0C018554 */ jal osAiGetStatus
/* 26364 8004AF64 00000000 */ nop
/* 26368 8004AF68 04410003 */ bgez $v0, .L8004AF78
/* 2636C 8004AF6C 00000000 */ nop
/* 26370 8004AF70 08012BA8 */ j .L8004AEA0
/* 26374 8004AF74 0000B02D */ daddu $s6, $zero, $zero
.L8004AF78:
/* 26378 8004AF78 0C018550 */ jal osAiGetLength
/* 2637C 8004AF7C 00000000 */ nop
/* 26380 8004AF80 8FA30078 */ lw $v1, 0x78($sp)
/* 26384 8004AF84 10600011 */ beqz $v1, .L8004AFCC
/* 26388 8004AF88 00028082 */ srl $s0, $v0, 2
/* 2638C 8004AF8C 3C028008 */ lui $v0, %hi(nuAuTaskStop)
/* 26390 8004AF90 90428180 */ lbu $v0, %lo(nuAuTaskStop)($v0)
/* 26394 8004AF94 24080001 */ addiu $t0, $zero, 1
/* 26398 8004AF98 1448000D */ bne $v0, $t0, .L8004AFD0
/* 2639C 8004AF9C 2A0200B8 */ slti $v0, $s0, 0xb8
/* 263A0 8004AFA0 03C0202D */ daddu $a0, $fp, $zero
/* 263A4 8004AFA4 0C0185A0 */ jal osAiSetNextBuffer
/* 263A8 8004AFA8 00152880 */ sll $a1, $s5, 2
/* 263AC 8004AFAC 00121080 */ sll $v0, $s2, 2
/* 263B0 8004AFB0 3C14800A */ lui $s4, %hi(D_800A3510)
/* 263B4 8004AFB4 0282A021 */ addu $s4, $s4, $v0
/* 263B8 8004AFB8 8E943510 */ lw $s4, %lo(D_800A3510)($s4)
/* 263BC 8004AFBC 00131080 */ sll $v0, $s3, 2
/* 263C0 8004AFC0 3C1E800A */ lui $fp, %hi(D_800A3628)
/* 263C4 8004AFC4 03C2F021 */ addu $fp, $fp, $v0
/* 263C8 8004AFC8 8FDE3628 */ lw $fp, %lo(D_800A3628)($fp)
.L8004AFCC:
/* 263CC 8004AFCC 2A0200B8 */ slti $v0, $s0, 0xb8
.L8004AFD0:
/* 263D0 8004AFD0 14400003 */ bnez $v0, .L8004AFE0
/* 263D4 8004AFD4 00000000 */ nop
/* 263D8 8004AFD8 12C00005 */ beqz $s6, .L8004AFF0
/* 263DC 8004AFDC 24160001 */ addiu $s6, $zero, 1
.L8004AFE0:
/* 263E0 8004AFE0 3C15800A */ lui $s5, %hi(nuAuFrameSampleSize)
/* 263E4 8004AFE4 8EB53634 */ lw $s5, %lo(nuAuFrameSampleSize)($s5)
/* 263E8 8004AFE8 08012BFE */ j .L8004AFF8
/* 263EC 8004AFEC 0000B02D */ daddu $s6, $zero, $zero
.L8004AFF0:
/* 263F0 8004AFF0 3C15800A */ lui $s5, %hi(D_800A3638)
/* 263F4 8004AFF4 8EB53638 */ lw $s5, %lo(D_800A3638)($s5)
.L8004AFF8:
/* 263F8 8004AFF8 0C0187A4 */ jal osVirtualToPhysical
/* 263FC 8004AFFC 03C0202D */ daddu $a0, $fp, $zero
/* 26400 8004B000 0280202D */ daddu $a0, $s4, $zero
/* 26404 8004B004 27A50078 */ addiu $a1, $sp, 0x78
/* 26408 8004B008 0040302D */ daddu $a2, $v0, $zero
/* 2640C 8004B00C 0C015970 */ jal alAudioFrame
/* 26410 8004B010 02A0382D */ daddu $a3, $s5, $zero
/* 26414 8004B014 3C038008 */ lui $v1, %hi(nuAuPreNMIFunc)
/* 26418 8004B018 8C638174 */ lw $v1, %lo(nuAuPreNMIFunc)($v1)
/* 2641C 8004B01C 1060FFA0 */ beqz $v1, .L8004AEA0
/* 26420 8004B020 AFA2007C */ sw $v0, 0x7c($sp)
/* 26424 8004B024 92E20000 */ lbu $v0, ($s7)
/* 26428 8004B028 1040FF9E */ beqz $v0, .L8004AEA4
/* 2642C 8004B02C 27A40020 */ addiu $a0, $sp, 0x20
/* 26430 8004B030 0040282D */ daddu $a1, $v0, $zero
/* 26434 8004B034 0060F809 */ jalr $v1
/* 26438 8004B038 24040001 */ addiu $a0, $zero, 1
/* 2643C 8004B03C 08012C19 */ j .L8004B064
/* 26440 8004B040 00000000 */ nop
.L8004B044:
/* 26444 8004B044 3C028008 */ lui $v0, %hi(nuAuPreNMIFunc)
/* 26448 8004B048 8C428174 */ lw $v0, %lo(nuAuPreNMIFunc)($v0)
/* 2644C 8004B04C 10400005 */ beqz $v0, .L8004B064
/* 26450 8004B050 00000000 */ nop
/* 26454 8004B054 3C058008 */ lui $a1, %hi(D_80078170)
/* 26458 8004B058 90A58170 */ lbu $a1, %lo(D_80078170)($a1)
/* 2645C 8004B05C 0040F809 */ jalr $v0
/* 26460 8004B060 24040002 */ addiu $a0, $zero, 2
.L8004B064:
/* 26464 8004B064 92E20000 */ lbu $v0, ($s7)
/* 26468 8004B068 24420001 */ addiu $v0, $v0, 1
/* 2646C 8004B06C 08012BA8 */ j .L8004AEA0
/* 26470 8004B070 A2E20000 */ sb $v0, ($s7)

View File

@ -1,121 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel nuAuDmaCallBack
/* 26474 8004B074 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 26478 8004B078 AFB3001C */ sw $s3, 0x1c($sp)
/* 2647C 8004B07C 0080982D */ daddu $s3, $a0, $zero
/* 26480 8004B080 30E700FF */ andi $a3, $a3, 0xff
/* 26484 8004B084 AFBF0020 */ sw $ra, 0x20($sp)
/* 26488 8004B088 AFB20018 */ sw $s2, 0x18($sp)
/* 2648C 8004B08C AFB10014 */ sw $s1, 0x14($sp)
/* 26490 8004B090 14E00005 */ bnez $a3, .L8004B0A8
/* 26494 8004B094 AFB00010 */ sw $s0, 0x10($sp)
/* 26498 8004B098 0C0187A4 */ jal osVirtualToPhysical
/* 2649C 8004B09C 00000000 */ nop
/* 264A0 8004B0A0 08012C82 */ j .L8004B208
/* 264A4 8004B0A4 00000000 */ nop
.L8004B0A8:
/* 264A8 8004B0A8 0000802D */ daddu $s0, $zero, $zero
/* 264AC 8004B0AC 3C11800A */ lui $s1, %hi(D_800A3BD4)
/* 264B0 8004B0B0 8E313BD4 */ lw $s1, %lo(D_800A3BD4)($s1)
/* 264B4 8004B0B4 1220000B */ beqz $s1, .L8004B0E4
/* 264B8 8004B0B8 02652821 */ addu $a1, $s3, $a1
.L8004B0BC:
/* 264BC 8004B0BC 8E220008 */ lw $v0, 8($s1)
/* 264C0 8004B0C0 24430500 */ addiu $v1, $v0, 0x500
/* 264C4 8004B0C4 0262102B */ sltu $v0, $s3, $v0
/* 264C8 8004B0C8 14400006 */ bnez $v0, .L8004B0E4
/* 264CC 8004B0CC 0065102A */ slt $v0, $v1, $a1
/* 264D0 8004B0D0 1040001F */ beqz $v0, .L8004B150
/* 264D4 8004B0D4 0220802D */ daddu $s0, $s1, $zero
/* 264D8 8004B0D8 8E310000 */ lw $s1, ($s1)
/* 264DC 8004B0DC 1620FFF7 */ bnez $s1, .L8004B0BC
/* 264E0 8004B0E0 00000000 */ nop
.L8004B0E4:
/* 264E4 8004B0E4 3C12800A */ lui $s2, %hi(nuAuDmaState)
/* 264E8 8004B0E8 26523BD0 */ addiu $s2, $s2, %lo(nuAuDmaState)
/* 264EC 8004B0EC 8E510008 */ lw $s1, 8($s2)
/* 264F0 8004B0F0 16200006 */ bnez $s1, .L8004B10C
/* 264F4 8004B0F4 0220202D */ daddu $a0, $s1, $zero
/* 264F8 8004B0F8 8E440004 */ lw $a0, 4($s2)
/* 264FC 8004B0FC 0C0187A4 */ jal osVirtualToPhysical
/* 26500 8004B100 00000000 */ nop
/* 26504 8004B104 08012C82 */ j .L8004B208
/* 26508 8004B108 00000000 */ nop
.L8004B10C:
/* 2650C 8004B10C 8E220000 */ lw $v0, ($s1)
/* 26510 8004B110 0C012D03 */ jal alUnlink
/* 26514 8004B114 AE420008 */ sw $v0, 8($s2)
/* 26518 8004B118 12000005 */ beqz $s0, .L8004B130
/* 2651C 8004B11C 0220202D */ daddu $a0, $s1, $zero
/* 26520 8004B120 0C012CFB */ jal alLink
/* 26524 8004B124 0200282D */ daddu $a1, $s0, $zero
/* 26528 8004B128 08012C61 */ j .L8004B184
/* 2652C 8004B12C 00000000 */ nop
.L8004B130:
/* 26530 8004B130 8E450004 */ lw $a1, 4($s2)
/* 26534 8004B134 10A00010 */ beqz $a1, .L8004B178
/* 26538 8004B138 00A0802D */ daddu $s0, $a1, $zero
/* 2653C 8004B13C AE510004 */ sw $s1, 4($s2)
/* 26540 8004B140 AE300000 */ sw $s0, ($s1)
/* 26544 8004B144 AE200004 */ sw $zero, 4($s1)
/* 26548 8004B148 08012C61 */ j .L8004B184
/* 2654C 8004B14C AE110004 */ sw $s1, 4($s0)
.L8004B150:
/* 26550 8004B150 8E240010 */ lw $a0, 0x10($s1)
/* 26554 8004B154 8E220008 */ lw $v0, 8($s1)
/* 26558 8004B158 3C038008 */ lui $v1, %hi(nuAuFrameCounter)
/* 2655C 8004B15C 8C63817C */ lw $v1, %lo(nuAuFrameCounter)($v1)
/* 26560 8004B160 00932021 */ addu $a0, $a0, $s3
/* 26564 8004B164 00822023 */ subu $a0, $a0, $v0
/* 26568 8004B168 0C0187A4 */ jal osVirtualToPhysical
/* 2656C 8004B16C AE23000C */ sw $v1, 0xc($s1)
/* 26570 8004B170 08012C82 */ j .L8004B208
/* 26574 8004B174 00000000 */ nop
.L8004B178:
/* 26578 8004B178 AE510004 */ sw $s1, 4($s2)
/* 2657C 8004B17C AE200000 */ sw $zero, ($s1)
/* 26580 8004B180 AE200004 */ sw $zero, 4($s1)
.L8004B184:
/* 26584 8004B184 3C048008 */ lui $a0, %hi(nuAuDmaNext)
/* 26588 8004B188 24848178 */ addiu $a0, $a0, %lo(nuAuDmaNext)
/* 2658C 8004B18C 32700001 */ andi $s0, $s3, 1
/* 26590 8004B190 02709823 */ subu $s3, $s3, $s0
/* 26594 8004B194 3C02800A */ lui $v0, %hi(D_800A3720)
/* 26598 8004B198 24423720 */ addiu $v0, $v0, %lo(D_800A3720)
/* 2659C 8004B19C 8C830000 */ lw $v1, ($a0)
/* 265A0 8004B1A0 8E320010 */ lw $s2, 0x10($s1)
/* 265A4 8004B1A4 0000302D */ daddu $a2, $zero, $zero
/* 265A8 8004B1A8 AE330008 */ sw $s3, 8($s1)
/* 265AC 8004B1AC 00032840 */ sll $a1, $v1, 1
/* 265B0 8004B1B0 00A32821 */ addu $a1, $a1, $v1
/* 265B4 8004B1B4 000528C0 */ sll $a1, $a1, 3
/* 265B8 8004B1B8 00A22821 */ addu $a1, $a1, $v0
/* 265BC 8004B1BC 3C028008 */ lui $v0, %hi(nuAuFrameCounter)
/* 265C0 8004B1C0 8C42817C */ lw $v0, %lo(nuAuFrameCounter)($v0)
/* 265C4 8004B1C4 24630001 */ addiu $v1, $v1, 1
/* 265C8 8004B1C8 AE22000C */ sw $v0, 0xc($s1)
/* 265CC 8004B1CC AC830000 */ sw $v1, ($a0)
/* 265D0 8004B1D0 A0A00002 */ sb $zero, 2($a1)
/* 265D4 8004B1D4 3C04800A */ lui $a0, %hi(nuPiCartHandle)
/* 265D8 8004B1D8 8C84A638 */ lw $a0, %lo(nuPiCartHandle)($a0)
/* 265DC 8004B1DC 3C02800A */ lui $v0, %hi(D_800A3640)
/* 265E0 8004B1E0 24423640 */ addiu $v0, $v0, %lo(D_800A3640)
/* 265E4 8004B1E4 ACA20004 */ sw $v0, 4($a1)
/* 265E8 8004B1E8 24020500 */ addiu $v0, $zero, 0x500
/* 265EC 8004B1EC ACB20008 */ sw $s2, 8($a1)
/* 265F0 8004B1F0 ACB3000C */ sw $s3, 0xc($a1)
/* 265F4 8004B1F4 0C018388 */ jal osEPiStartDma
/* 265F8 8004B1F8 ACA20010 */ sw $v0, 0x10($a1)
/* 265FC 8004B1FC 0C0187A4 */ jal osVirtualToPhysical
/* 26600 8004B200 0240202D */ daddu $a0, $s2, $zero
/* 26604 8004B204 00501021 */ addu $v0, $v0, $s0
.L8004B208:
/* 26608 8004B208 8FBF0020 */ lw $ra, 0x20($sp)
/* 2660C 8004B20C 8FB3001C */ lw $s3, 0x1c($sp)
/* 26610 8004B210 8FB20018 */ lw $s2, 0x18($sp)
/* 26614 8004B214 8FB10014 */ lw $s1, 0x14($sp)
/* 26618 8004B218 8FB00010 */ lw $s0, 0x10($sp)
/* 2661C 8004B21C 03E00008 */ jr $ra
/* 26620 8004B220 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,34 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80053BE8
/* 2EFE8 80053BE8 30A20070 */ andi $v0, $a1, 0x70
/* 2EFEC 80053BEC 00021082 */ srl $v0, $v0, 2
/* 2EFF0 80053BF0 00822021 */ addu $a0, $a0, $v0
/* 2EFF4 80053BF4 8C8212EC */ lw $v0, 0x12ec($a0)
/* 2EFF8 80053BF8 00063080 */ sll $a2, $a2, 2
/* 2EFFC 80053BFC 00C23021 */ addu $a2, $a2, $v0
/* 2F000 80053C00 8CC60000 */ lw $a2, ($a2)
/* 2F004 80053C04 8CC4002C */ lw $a0, 0x2c($a2)
/* 2F008 80053C08 90820000 */ lbu $v0, ($a0)
/* 2F00C 80053C0C 30A50003 */ andi $a1, $a1, 3
/* 2F010 80053C10 00A2102B */ sltu $v0, $a1, $v0
/* 2F014 80053C14 10400009 */ beqz $v0, .L80053C3C
/* 2F018 80053C18 00000000 */ nop
/* 2F01C 80053C1C 00051080 */ sll $v0, $a1, 2
/* 2F020 80053C20 00821021 */ addu $v0, $a0, $v0
/* 2F024 80053C24 94430004 */ lhu $v1, 4($v0)
/* 2F028 80053C28 00641821 */ addu $v1, $v1, $a0
/* 2F02C 80053C2C ACE30000 */ sw $v1, ($a3)
/* 2F030 80053C30 94420006 */ lhu $v0, 6($v0)
/* 2F034 80053C34 08014F13 */ j .L80053C4C
/* 2F038 80053C38 00441021 */ addu $v0, $v0, $a0
.L80053C3C:
/* 2F03C 80053C3C 3C028008 */ lui $v0, %hi(D_8007854C)
/* 2F040 80053C40 2442854C */ addiu $v0, $v0, %lo(D_8007854C)
/* 2F044 80053C44 ACE20000 */ sw $v0, ($a3)
/* 2F048 80053C48 24420004 */ addiu $v0, $v0, 4
.L80053C4C:
/* 2F04C 80053C4C ACE20004 */ sw $v0, 4($a3)
/* 2F050 80053C50 03E00008 */ jr $ra
/* 2F054 80053C54 00C0102D */ daddu $v0, $a2, $zero

View File

@ -1,75 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80053E58
/* 2F258 80053E58 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 2F25C 80053E5C AFB00020 */ sw $s0, 0x20($sp)
/* 2F260 80053E60 00A0802D */ daddu $s0, $a1, $zero
/* 2F264 80053E64 AFB20028 */ sw $s2, 0x28($sp)
/* 2F268 80053E68 3C12800A */ lui $s2, %hi(D_8009A5C0)
/* 2F26C 80053E6C 8E52A5C0 */ lw $s2, %lo(D_8009A5C0)($s2)
/* 2F270 80053E70 24050010 */ addiu $a1, $zero, 0x10
/* 2F274 80053E74 AFBF0038 */ sw $ra, 0x38($sp)
/* 2F278 80053E78 AFB50034 */ sw $s5, 0x34($sp)
/* 2F27C 80053E7C AFB40030 */ sw $s4, 0x30($sp)
/* 2F280 80053E80 AFB3002C */ sw $s3, 0x2c($sp)
/* 2F284 80053E84 AFB10024 */ sw $s1, 0x24($sp)
/* 2F288 80053E88 8E42002C */ lw $v0, 0x2c($s2)
/* 2F28C 80053E8C 000420C0 */ sll $a0, $a0, 3
/* 2F290 80053E90 00448821 */ addu $s1, $v0, $a0
/* 2F294 80053E94 96240000 */ lhu $a0, ($s1)
/* 2F298 80053E98 0C01511F */ jal snd_fetch_SBN_file
/* 2F29C 80053E9C 27A60018 */ addiu $a2, $sp, 0x18
/* 2F2A0 80053EA0 0040982D */ daddu $s3, $v0, $zero
/* 2F2A4 80053EA4 16600026 */ bnez $s3, .L80053F40
/* 2F2A8 80053EA8 0260102D */ daddu $v0, $s3, $zero
/* 2F2AC 80053EAC 3C0200FF */ lui $v0, 0xff
/* 2F2B0 80053EB0 3442FFFF */ ori $v0, $v0, 0xffff
/* 2F2B4 80053EB4 0200282D */ daddu $a1, $s0, $zero
/* 2F2B8 80053EB8 0000802D */ daddu $s0, $zero, $zero
/* 2F2BC 80053EBC 3C1400FF */ lui $s4, 0xff
/* 2F2C0 80053EC0 3694FFFF */ ori $s4, $s4, 0xffff
/* 2F2C4 80053EC4 24150030 */ addiu $s5, $zero, 0x30
/* 2F2C8 80053EC8 8FA6001C */ lw $a2, 0x1c($sp)
/* 2F2CC 80053ECC 8FA40018 */ lw $a0, 0x18($sp)
/* 2F2D0 80053ED0 0C015380 */ jal snd_read_rom
/* 2F2D4 80053ED4 00C23024 */ and $a2, $a2, $v0
.L80053ED8:
/* 2F2D8 80053ED8 96220002 */ lhu $v0, 2($s1)
/* 2F2DC 80053EDC 50400014 */ beql $v0, $zero, .L80053F30
/* 2F2E0 80053EE0 26310002 */ addiu $s1, $s1, 2
/* 2F2E4 80053EE4 8E440020 */ lw $a0, 0x20($s2)
/* 2F2E8 80053EE8 000210C0 */ sll $v0, $v0, 3
/* 2F2EC 80053EEC 00822021 */ addu $a0, $a0, $v0
/* 2F2F0 80053EF0 8C820000 */ lw $v0, ($a0)
/* 2F2F4 80053EF4 8E43001C */ lw $v1, 0x1c($s2)
/* 2F2F8 80053EF8 00541024 */ and $v0, $v0, $s4
/* 2F2FC 80053EFC 00431821 */ addu $v1, $v0, $v1
/* 2F300 80053F00 AFA30010 */ sw $v1, 0x10($sp)
/* 2F304 80053F04 8C820004 */ lw $v0, 4($a0)
/* 2F308 80053F08 AFA20014 */ sw $v0, 0x14($sp)
/* 2F30C 80053F0C 00021602 */ srl $v0, $v0, 0x18
/* 2F310 80053F10 54550006 */ bnel $v0, $s5, .L80053F2C
/* 2F314 80053F14 24130066 */ addiu $s3, $zero, 0x66
/* 2F318 80053F18 0060202D */ daddu $a0, $v1, $zero
/* 2F31C 80053F1C 0C015313 */ jal snd_load_BK
/* 2F320 80053F20 0200282D */ daddu $a1, $s0, $zero
/* 2F324 80053F24 08014FCC */ j .L80053F30
/* 2F328 80053F28 26310002 */ addiu $s1, $s1, 2
.L80053F2C:
/* 2F32C 80053F2C 26310002 */ addiu $s1, $s1, 2
.L80053F30:
/* 2F330 80053F30 26100001 */ addiu $s0, $s0, 1
/* 2F334 80053F34 2A020003 */ slti $v0, $s0, 3
/* 2F338 80053F38 1440FFE7 */ bnez $v0, .L80053ED8
/* 2F33C 80053F3C 0260102D */ daddu $v0, $s3, $zero
.L80053F40:
/* 2F340 80053F40 8FBF0038 */ lw $ra, 0x38($sp)
/* 2F344 80053F44 8FB50034 */ lw $s5, 0x34($sp)
/* 2F348 80053F48 8FB40030 */ lw $s4, 0x30($sp)
/* 2F34C 80053F4C 8FB3002C */ lw $s3, 0x2c($sp)
/* 2F350 80053F50 8FB20028 */ lw $s2, 0x28($sp)
/* 2F354 80053F54 8FB10024 */ lw $s1, 0x24($sp)
/* 2F358 80053F58 8FB00020 */ lw $s0, 0x20($sp)
/* 2F35C 80053F5C 03E00008 */ jr $ra
/* 2F360 80053F60 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -1,186 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80053F80
/* 2F380 80053F80 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 2F384 80053F84 AFB30024 */ sw $s3, 0x24($sp)
/* 2F388 80053F88 3C13800A */ lui $s3, %hi(D_8009A5C0)
/* 2F38C 80053F8C 8E73A5C0 */ lw $s3, %lo(D_8009A5C0)($s3)
/* 2F390 80053F90 AFB5002C */ sw $s5, 0x2c($sp)
/* 2F394 80053F94 0080A82D */ daddu $s5, $a0, $zero
/* 2F398 80053F98 AFB20020 */ sw $s2, 0x20($sp)
/* 2F39C 80053F9C 3C12800A */ lui $s2, %hi(D_8009A628)
/* 2F3A0 80053FA0 8E52A628 */ lw $s2, %lo(D_8009A628)($s2)
/* 2F3A4 80053FA4 2EA20010 */ sltiu $v0, $s5, 0x10
/* 2F3A8 80053FA8 AFBF0030 */ sw $ra, 0x30($sp)
/* 2F3AC 80053FAC AFB40028 */ sw $s4, 0x28($sp)
/* 2F3B0 80053FB0 AFB1001C */ sw $s1, 0x1c($sp)
/* 2F3B4 80053FB4 10400022 */ beqz $v0, .L80054040
/* 2F3B8 80053FB8 AFB00018 */ sw $s0, 0x18($sp)
/* 2F3BC 80053FBC 8E420044 */ lw $v0, 0x44($s2)
/* 2F3C0 80053FC0 14400097 */ bnez $v0, .L80054220
/* 2F3C4 80053FC4 00000000 */ nop
/* 2F3C8 80053FC8 24050040 */ addiu $a1, $zero, 0x40
/* 2F3CC 80053FCC 3C028008 */ lui $v0, %hi(D_80078580)
/* 2F3D0 80053FD0 00551021 */ addu $v0, $v0, $s5
/* 2F3D4 80053FD4 90428580 */ lbu $v0, %lo(D_80078580)($v0)
/* 2F3D8 80053FD8 8E63003C */ lw $v1, 0x3c($s3)
/* 2F3DC 80053FDC 00021040 */ sll $v0, $v0, 1
/* 2F3E0 80053FE0 00431021 */ addu $v0, $v0, $v1
/* 2F3E4 80053FE4 94440000 */ lhu $a0, ($v0)
/* 2F3E8 80053FE8 0C01511F */ jal snd_fetch_SBN_file
/* 2F3EC 80053FEC 27A60010 */ addiu $a2, $sp, 0x10
/* 2F3F0 80053FF0 1440008B */ bnez $v0, .L80054220
/* 2F3F4 80053FF4 3C0200FF */ lui $v0, 0xff
/* 2F3F8 80053FF8 3442FFFF */ ori $v0, $v0, 0xffff
/* 2F3FC 80053FFC 8FA40010 */ lw $a0, 0x10($sp)
/* 2F400 80054000 8FA60014 */ lw $a2, 0x14($sp)
/* 2F404 80054004 8E650064 */ lw $a1, 0x64($s3)
/* 2F408 80054008 0C015380 */ jal snd_read_rom
/* 2F40C 8005400C 00C23024 */ and $a2, $a2, $v0
/* 2F410 80054010 24030001 */ addiu $v1, $zero, 1
/* 2F414 80054014 8E620064 */ lw $v0, 0x64($s3)
/* 2F418 80054018 26440004 */ addiu $a0, $s2, 4
/* 2F41C 8005401C AE420010 */ sw $v0, 0x10($s2)
.L80054020:
/* 2F420 80054020 AC800010 */ sw $zero, 0x10($a0)
/* 2F424 80054024 24630001 */ addiu $v1, $v1, 1
/* 2F428 80054028 2C620004 */ sltiu $v0, $v1, 4
/* 2F42C 8005402C 1440FFFC */ bnez $v0, .L80054020
/* 2F430 80054030 24840004 */ addiu $a0, $a0, 4
/* 2F434 80054034 24020001 */ addiu $v0, $zero, 1
/* 2F438 80054038 08015088 */ j .L80054220
/* 2F43C 8005403C A2420020 */ sb $v0, 0x20($s2)
.L80054040:
/* 2F440 80054040 24020010 */ addiu $v0, $zero, 0x10
/* 2F444 80054044 16A20076 */ bne $s5, $v0, .L80054220
/* 2F448 80054048 00000000 */ nop
/* 2F44C 8005404C 8E420044 */ lw $v0, 0x44($s2)
/* 2F450 80054050 14400073 */ bnez $v0, .L80054220
/* 2F454 80054054 00000000 */ nop
/* 2F458 80054058 8E420228 */ lw $v0, 0x228($s2)
/* 2F45C 8005405C 14400070 */ bnez $v0, .L80054220
/* 2F460 80054060 00000000 */ nop
/* 2F464 80054064 8E42040C */ lw $v0, 0x40c($s2)
/* 2F468 80054068 1440006D */ bnez $v0, .L80054220
/* 2F46C 8005406C 0000182D */ daddu $v1, $zero, $zero
/* 2F470 80054070 A2400020 */ sb $zero, 0x20($s2)
/* 2F474 80054074 0240202D */ daddu $a0, $s2, $zero
.L80054078:
/* 2F478 80054078 AC800010 */ sw $zero, 0x10($a0)
/* 2F47C 8005407C 24630001 */ addiu $v1, $v1, 1
/* 2F480 80054080 2C620004 */ sltiu $v0, $v1, 4
/* 2F484 80054084 1440FFFC */ bnez $v0, .L80054078
/* 2F488 80054088 24840004 */ addiu $a0, $a0, 4
/* 2F48C 8005408C 8E700068 */ lw $s0, 0x68($s3)
/* 2F490 80054090 24050040 */ addiu $a1, $zero, 0x40
/* 2F494 80054094 3C148008 */ lui $s4, %hi(D_80078580)
/* 2F498 80054098 26948580 */ addiu $s4, $s4, %lo(D_80078580)
/* 2F49C 8005409C 3C028008 */ lui $v0, %hi(D_80078580)
/* 2F4A0 800540A0 00551021 */ addu $v0, $v0, $s5
/* 2F4A4 800540A4 90428580 */ lbu $v0, %lo(D_80078580)($v0)
/* 2F4A8 800540A8 8E63003C */ lw $v1, 0x3c($s3)
/* 2F4AC 800540AC 00021040 */ sll $v0, $v0, 1
/* 2F4B0 800540B0 00431021 */ addu $v0, $v0, $v1
/* 2F4B4 800540B4 94440000 */ lhu $a0, ($v0)
/* 2F4B8 800540B8 0C01511F */ jal snd_fetch_SBN_file
/* 2F4BC 800540BC 27A60010 */ addiu $a2, $sp, 0x10
/* 2F4C0 800540C0 14400057 */ bnez $v0, .L80054220
/* 2F4C4 800540C4 3C1100FF */ lui $s1, 0xff
/* 2F4C8 800540C8 3631FFFF */ ori $s1, $s1, 0xffff
/* 2F4CC 800540CC 0200282D */ daddu $a1, $s0, $zero
/* 2F4D0 800540D0 8FA60014 */ lw $a2, 0x14($sp)
/* 2F4D4 800540D4 8FA40010 */ lw $a0, 0x10($sp)
/* 2F4D8 800540D8 0C015380 */ jal snd_read_rom
/* 2F4DC 800540DC 00D13024 */ and $a2, $a2, $s1
/* 2F4E0 800540E0 24050040 */ addiu $a1, $zero, 0x40
/* 2F4E4 800540E4 27A60010 */ addiu $a2, $sp, 0x10
/* 2F4E8 800540E8 02B41021 */ addu $v0, $s5, $s4
/* 2F4EC 800540EC AE500010 */ sw $s0, 0x10($s2)
/* 2F4F0 800540F0 90430001 */ lbu $v1, 1($v0)
/* 2F4F4 800540F4 8E62003C */ lw $v0, 0x3c($s3)
/* 2F4F8 800540F8 00031840 */ sll $v1, $v1, 1
/* 2F4FC 800540FC 00621821 */ addu $v1, $v1, $v0
/* 2F500 80054100 8FA20014 */ lw $v0, 0x14($sp)
/* 2F504 80054104 94640000 */ lhu $a0, ($v1)
/* 2F508 80054108 00451021 */ addu $v0, $v0, $a1
/* 2F50C 8005410C 00511024 */ and $v0, $v0, $s1
/* 2F510 80054110 0C01511F */ jal snd_fetch_SBN_file
/* 2F514 80054114 02028021 */ addu $s0, $s0, $v0
/* 2F518 80054118 14400041 */ bnez $v0, .L80054220
/* 2F51C 8005411C 00000000 */ nop
/* 2F520 80054120 0200282D */ daddu $a1, $s0, $zero
/* 2F524 80054124 8FA60014 */ lw $a2, 0x14($sp)
/* 2F528 80054128 8FA40010 */ lw $a0, 0x10($sp)
/* 2F52C 8005412C 0C015380 */ jal snd_read_rom
/* 2F530 80054130 00D13024 */ and $a2, $a2, $s1
/* 2F534 80054134 24050040 */ addiu $a1, $zero, 0x40
/* 2F538 80054138 27A60010 */ addiu $a2, $sp, 0x10
/* 2F53C 8005413C 02B41021 */ addu $v0, $s5, $s4
/* 2F540 80054140 AE500014 */ sw $s0, 0x14($s2)
/* 2F544 80054144 90430002 */ lbu $v1, 2($v0)
/* 2F548 80054148 8E62003C */ lw $v0, 0x3c($s3)
/* 2F54C 8005414C 00031840 */ sll $v1, $v1, 1
/* 2F550 80054150 00621821 */ addu $v1, $v1, $v0
/* 2F554 80054154 8FA20014 */ lw $v0, 0x14($sp)
/* 2F558 80054158 94640000 */ lhu $a0, ($v1)
/* 2F55C 8005415C 00451021 */ addu $v0, $v0, $a1
/* 2F560 80054160 00511024 */ and $v0, $v0, $s1
/* 2F564 80054164 0C01511F */ jal snd_fetch_SBN_file
/* 2F568 80054168 02028021 */ addu $s0, $s0, $v0
/* 2F56C 8005416C 1440002C */ bnez $v0, .L80054220
/* 2F570 80054170 00000000 */ nop
/* 2F574 80054174 0200282D */ daddu $a1, $s0, $zero
/* 2F578 80054178 8FA60014 */ lw $a2, 0x14($sp)
/* 2F57C 8005417C 8FA40010 */ lw $a0, 0x10($sp)
/* 2F580 80054180 0C015380 */ jal snd_read_rom
/* 2F584 80054184 00D13024 */ and $a2, $a2, $s1
/* 2F588 80054188 24050040 */ addiu $a1, $zero, 0x40
/* 2F58C 8005418C 27A60010 */ addiu $a2, $sp, 0x10
/* 2F590 80054190 02B41021 */ addu $v0, $s5, $s4
/* 2F594 80054194 AE500018 */ sw $s0, 0x18($s2)
/* 2F598 80054198 90430003 */ lbu $v1, 3($v0)
/* 2F59C 8005419C 8E62003C */ lw $v0, 0x3c($s3)
/* 2F5A0 800541A0 00031840 */ sll $v1, $v1, 1
/* 2F5A4 800541A4 00621821 */ addu $v1, $v1, $v0
/* 2F5A8 800541A8 8FA20014 */ lw $v0, 0x14($sp)
/* 2F5AC 800541AC 94640000 */ lhu $a0, ($v1)
/* 2F5B0 800541B0 00451021 */ addu $v0, $v0, $a1
/* 2F5B4 800541B4 00511024 */ and $v0, $v0, $s1
/* 2F5B8 800541B8 0C01511F */ jal snd_fetch_SBN_file
/* 2F5BC 800541BC 02028021 */ addu $s0, $s0, $v0
/* 2F5C0 800541C0 14400017 */ bnez $v0, .L80054220
/* 2F5C4 800541C4 00000000 */ nop
/* 2F5C8 800541C8 0200282D */ daddu $a1, $s0, $zero
/* 2F5CC 800541CC 8FA60014 */ lw $a2, 0x14($sp)
/* 2F5D0 800541D0 8FA40010 */ lw $a0, 0x10($sp)
/* 2F5D4 800541D4 0C015380 */ jal snd_read_rom
/* 2F5D8 800541D8 00D13024 */ and $a2, $a2, $s1
/* 2F5DC 800541DC 24050030 */ addiu $a1, $zero, 0x30
/* 2F5E0 800541E0 24020004 */ addiu $v0, $zero, 4
/* 2F5E4 800541E4 A2420020 */ sb $v0, 0x20($s2)
/* 2F5E8 800541E8 02B41021 */ addu $v0, $s5, $s4
/* 2F5EC 800541EC AE50001C */ sw $s0, 0x1c($s2)
/* 2F5F0 800541F0 90420004 */ lbu $v0, 4($v0)
/* 2F5F4 800541F4 8E63003C */ lw $v1, 0x3c($s3)
/* 2F5F8 800541F8 00021040 */ sll $v0, $v0, 1
/* 2F5FC 800541FC 00431021 */ addu $v0, $v0, $v1
/* 2F600 80054200 94440000 */ lhu $a0, ($v0)
/* 2F604 80054204 0C01511F */ jal snd_fetch_SBN_file
/* 2F608 80054208 27A60010 */ addiu $a2, $sp, 0x10
/* 2F60C 8005420C 14400004 */ bnez $v0, .L80054220
/* 2F610 80054210 00000000 */ nop
/* 2F614 80054214 8FA40010 */ lw $a0, 0x10($sp)
/* 2F618 80054218 0C015313 */ jal snd_load_BK
/* 2F61C 8005421C 24050002 */ addiu $a1, $zero, 2
.L80054220:
/* 2F620 80054220 8FBF0030 */ lw $ra, 0x30($sp)
/* 2F624 80054224 8FB5002C */ lw $s5, 0x2c($sp)
/* 2F628 80054228 8FB40028 */ lw $s4, 0x28($sp)
/* 2F62C 8005422C 8FB30024 */ lw $s3, 0x24($sp)
/* 2F630 80054230 8FB20020 */ lw $s2, 0x20($sp)
/* 2F634 80054234 8FB1001C */ lw $s1, 0x1c($sp)
/* 2F638 80054238 8FB00018 */ lw $s0, 0x18($sp)
/* 2F63C 8005423C 0000102D */ daddu $v0, $zero, $zero
/* 2F640 80054240 03E00008 */ jr $ra
/* 2F644 80054244 27BD0038 */ addiu $sp, $sp, 0x38

View File

@ -1,29 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80054C84
/* 30084 80054C84 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 30088 80054C88 0080182D */ daddu $v1, $a0, $zero
/* 3008C 80054C8C 00A0202D */ daddu $a0, $a1, $zero
/* 30090 80054C90 3C02800A */ lui $v0, %hi(D_8009A5C0)
/* 30094 80054C94 8C42A5C0 */ lw $v0, %lo(D_8009A5C0)($v0)
/* 30098 80054C98 AFBF0014 */ sw $ra, 0x14($sp)
/* 3009C 80054C9C AFB00010 */ sw $s0, 0x10($sp)
/* 300A0 80054CA0 8C500004 */ lw $s0, 4($v0)
/* 300A4 80054CA4 0C0151D1 */ jal snd_get_BK_instruments
/* 300A8 80054CA8 0060282D */ daddu $a1, $v1, $zero
/* 300AC 80054CAC 0040182D */ daddu $v1, $v0, $zero
/* 300B0 80054CB0 10600007 */ beqz $v1, .L80054CD0
/* 300B4 80054CB4 00000000 */ nop
/* 300B8 80054CB8 0000202D */ daddu $a0, $zero, $zero
.L80054CBC:
/* 300BC 80054CBC AC700000 */ sw $s0, ($v1)
/* 300C0 80054CC0 24840001 */ addiu $a0, $a0, 1
/* 300C4 80054CC4 2C820010 */ sltiu $v0, $a0, 0x10
/* 300C8 80054CC8 1440FFFC */ bnez $v0, .L80054CBC
/* 300CC 80054CCC 24630004 */ addiu $v1, $v1, 4
.L80054CD0:
/* 300D0 80054CD0 8FBF0014 */ lw $ra, 0x14($sp)
/* 300D4 80054CD4 8FB00010 */ lw $s0, 0x10($sp)
/* 300D8 80054CD8 03E00008 */ jr $ra
/* 300DC 80054CDC 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,43 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80054CE0
/* 300E0 80054CE0 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 300E4 80054CE4 AFB10014 */ sw $s1, 0x14($sp)
/* 300E8 80054CE8 0080882D */ daddu $s1, $a0, $zero
/* 300EC 80054CEC 2CA20009 */ sltiu $v0, $a1, 9
/* 300F0 80054CF0 AFBF0018 */ sw $ra, 0x18($sp)
/* 300F4 80054CF4 1040001A */ beqz $v0, .L80054D60
/* 300F8 80054CF8 AFB00010 */ sw $s0, 0x10($sp)
/* 300FC 80054CFC 00051040 */ sll $v0, $a1, 1
/* 30100 80054D00 3C108008 */ lui $s0, %hi(D_80078530)
/* 30104 80054D04 02028021 */ addu $s0, $s0, $v0
/* 30108 80054D08 96108530 */ lhu $s0, %lo(D_80078530)($s0)
/* 3010C 80054D0C 32220001 */ andi $v0, $s1, 1
/* 30110 80054D10 1040000C */ beqz $v0, .L80054D44
/* 30114 80054D14 32220010 */ andi $v0, $s1, 0x10
/* 30118 80054D18 3C02800A */ lui $v0, %hi(D_8009A664)
/* 3011C 80054D1C 8C42A664 */ lw $v0, %lo(D_8009A664)($v0)
/* 30120 80054D20 2444002C */ addiu $a0, $v0, 0x2c
/* 30124 80054D24 0C014EB2 */ jal func_80053AC8
/* 30128 80054D28 AC500048 */ sw $s0, 0x48($v0)
/* 3012C 80054D2C 3C02800A */ lui $v0, %hi(D_8009A5FC)
/* 30130 80054D30 8C42A5FC */ lw $v0, %lo(D_8009A5FC)($v0)
/* 30134 80054D34 2444002C */ addiu $a0, $v0, 0x2c
/* 30138 80054D38 0C014EB2 */ jal func_80053AC8
/* 3013C 80054D3C AC500048 */ sw $s0, 0x48($v0)
/* 30140 80054D40 32220010 */ andi $v0, $s1, 0x10
.L80054D44:
/* 30144 80054D44 10400006 */ beqz $v0, .L80054D60
/* 30148 80054D48 00000000 */ nop
/* 3014C 80054D4C 3C02800A */ lui $v0, %hi(D_8009A640)
/* 30150 80054D50 8C42A640 */ lw $v0, %lo(D_8009A640)($v0)
/* 30154 80054D54 24440040 */ addiu $a0, $v0, 0x40
/* 30158 80054D58 0C014EB2 */ jal func_80053AC8
/* 3015C 80054D5C AC50005C */ sw $s0, 0x5c($v0)
.L80054D60:
/* 30160 80054D60 8FBF0018 */ lw $ra, 0x18($sp)
/* 30164 80054D64 8FB10014 */ lw $s1, 0x14($sp)
/* 30168 80054D68 8FB00010 */ lw $s0, 0x10($sp)
/* 3016C 80054D6C 03E00008 */ jr $ra
/* 30170 80054D70 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,28 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80054DA8
/* 301A8 80054DA8 30840001 */ andi $a0, $a0, 1
/* 301AC 80054DAC 24050001 */ addiu $a1, $zero, 1
/* 301B0 80054DB0 14850008 */ bne $a0, $a1, .L80054DD4
/* 301B4 80054DB4 00000000 */ nop
/* 301B8 80054DB8 3C03800A */ lui $v1, %hi(D_8009A5C0)
/* 301BC 80054DBC 8C63A5C0 */ lw $v1, %lo(D_8009A5C0)($v1)
/* 301C0 80054DC0 9062130C */ lbu $v0, 0x130c($v1)
/* 301C4 80054DC4 1440000C */ bnez $v0, .L80054DF8
/* 301C8 80054DC8 24020002 */ addiu $v0, $zero, 2
/* 301CC 80054DCC 03E00008 */ jr $ra
/* 301D0 80054DD0 A062130C */ sb $v0, 0x130c($v1)
.L80054DD4:
/* 301D4 80054DD4 3C04800A */ lui $a0, %hi(D_8009A5C0)
/* 301D8 80054DD8 2484A5C0 */ addiu $a0, $a0, %lo(D_8009A5C0)
/* 301DC 80054DDC 8C830000 */ lw $v1, ($a0)
/* 301E0 80054DE0 9062130C */ lbu $v0, 0x130c($v1)
/* 301E4 80054DE4 10400004 */ beqz $v0, .L80054DF8
/* 301E8 80054DE8 00000000 */ nop
/* 301EC 80054DEC A0650050 */ sb $a1, 0x50($v1)
/* 301F0 80054DF0 8C820000 */ lw $v0, ($a0)
/* 301F4 80054DF4 A040130C */ sb $zero, 0x130c($v0)
.L80054DF8:
/* 301F8 80054DF8 03E00008 */ jr $ra
/* 301FC 80054DFC 00000000 */ nop

View File

@ -1,37 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_fetch_SBN_file
/* 2F87C 8005447C 27BDFFF8 */ addiu $sp, $sp, -8
/* 2F880 80054480 3C07800A */ lui $a3, %hi(D_8009A5C0)
/* 2F884 80054484 8CE7A5C0 */ lw $a3, %lo(D_8009A5C0)($a3)
/* 2F888 80054488 00A0482D */ daddu $t1, $a1, $zero
/* 2F88C 8005448C 8CE20024 */ lw $v0, 0x24($a3)
/* 2F890 80054490 0082102B */ sltu $v0, $a0, $v0
/* 2F894 80054494 10400014 */ beqz $v0, .L800544E8
/* 2F898 80054498 0000402D */ daddu $t0, $zero, $zero
/* 2F89C 8005449C 3C0500FF */ lui $a1, 0xff
/* 2F8A0 800544A0 34A5FFFF */ ori $a1, $a1, 0xffff
/* 2F8A4 800544A4 8CE30020 */ lw $v1, 0x20($a3)
/* 2F8A8 800544A8 000410C0 */ sll $v0, $a0, 3
/* 2F8AC 800544AC 00621821 */ addu $v1, $v1, $v0
/* 2F8B0 800544B0 8C620000 */ lw $v0, ($v1)
/* 2F8B4 800544B4 8CE4001C */ lw $a0, 0x1c($a3)
/* 2F8B8 800544B8 00451024 */ and $v0, $v0, $a1
/* 2F8BC 800544BC 00442021 */ addu $a0, $v0, $a0
/* 2F8C0 800544C0 AFA40000 */ sw $a0, ($sp)
/* 2F8C4 800544C4 8C620004 */ lw $v0, 4($v1)
/* 2F8C8 800544C8 AFA20004 */ sw $v0, 4($sp)
/* 2F8CC 800544CC 00021602 */ srl $v0, $v0, 0x18
/* 2F8D0 800544D0 54490006 */ bnel $v0, $t1, .L800544EC
/* 2F8D4 800544D4 24080066 */ addiu $t0, $zero, 0x66
/* 2F8D8 800544D8 ACC40000 */ sw $a0, ($a2)
/* 2F8DC 800544DC 8FA20004 */ lw $v0, 4($sp)
/* 2F8E0 800544E0 0801513B */ j .L800544EC
/* 2F8E4 800544E4 ACC20004 */ sw $v0, 4($a2)
.L800544E8:
/* 2F8E8 800544E8 24080065 */ addiu $t0, $zero, 0x65
.L800544EC:
/* 2F8EC 800544EC 0100102D */ daddu $v0, $t0, $zero
/* 2F8F0 800544F0 03E00008 */ jr $ra
/* 2F8F4 800544F4 27BD0008 */ addiu $sp, $sp, 8

View File

@ -1,119 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_load_INIT
/* 2F6BC 800542BC 27BDFF70 */ addiu $sp, $sp, -0x90
/* 2F6C0 800542C0 AFB3007C */ sw $s3, 0x7c($sp)
/* 2F6C4 800542C4 0080982D */ daddu $s3, $a0, $zero
/* 2F6C8 800542C8 AFB10074 */ sw $s1, 0x74($sp)
/* 2F6CC 800542CC 00A0882D */ daddu $s1, $a1, $zero
/* 2F6D0 800542D0 AFB40080 */ sw $s4, 0x80($sp)
/* 2F6D4 800542D4 00C0A02D */ daddu $s4, $a2, $zero
/* 2F6D8 800542D8 0220202D */ daddu $a0, $s1, $zero
/* 2F6DC 800542DC 27A50010 */ addiu $a1, $sp, 0x10
/* 2F6E0 800542E0 24060040 */ addiu $a2, $zero, 0x40
/* 2F6E4 800542E4 AFB50084 */ sw $s5, 0x84($sp)
/* 2F6E8 800542E8 2675001C */ addiu $s5, $s3, 0x1c
/* 2F6EC 800542EC AFBF0088 */ sw $ra, 0x88($sp)
/* 2F6F0 800542F0 AFB20078 */ sw $s2, 0x78($sp)
/* 2F6F4 800542F4 0C015380 */ jal snd_read_rom
/* 2F6F8 800542F8 AFB00070 */ sw $s0, 0x70($sp)
/* 2F6FC 800542FC 0280202D */ daddu $a0, $s4, $zero
/* 2F700 80054300 8FB00024 */ lw $s0, 0x24($sp)
/* 2F704 80054304 24050001 */ addiu $a1, $zero, 1
/* 2F708 80054308 AE71001C */ sw $s1, 0x1c($s3)
/* 2F70C 8005430C 8FA20024 */ lw $v0, 0x24($sp)
/* 2F710 80054310 001080C0 */ sll $s0, $s0, 3
/* 2F714 80054314 0200302D */ daddu $a2, $s0, $zero
/* 2F718 80054318 0C015FE4 */ jal alHeapAlloc
/* 2F71C 8005431C AE620024 */ sw $v0, 0x24($s3)
/* 2F720 80054320 0040282D */ daddu $a1, $v0, $zero
/* 2F724 80054324 8E62001C */ lw $v0, 0x1c($s3)
/* 2F728 80054328 AE650020 */ sw $a1, 0x20($s3)
/* 2F72C 8005432C 8FA40020 */ lw $a0, 0x20($sp)
/* 2F730 80054330 0200302D */ daddu $a2, $s0, $zero
/* 2F734 80054334 0C015380 */ jal snd_read_rom
/* 2F738 80054338 00442021 */ addu $a0, $v0, $a0
/* 2F73C 8005433C 8FA20024 */ lw $v0, 0x24($sp)
/* 2F740 80054340 8E650020 */ lw $a1, 0x20($s3)
/* 2F744 80054344 0040182D */ daddu $v1, $v0, $zero
/* 2F748 80054348 2442FFFF */ addiu $v0, $v0, -1
/* 2F74C 8005434C 10600013 */ beqz $v1, .L8005439C
/* 2F750 80054350 AFA20024 */ sw $v0, 0x24($sp)
/* 2F754 80054354 3C0600FF */ lui $a2, 0xff
/* 2F758 80054358 34C6FFFF */ ori $a2, $a2, 0xffff
/* 2F75C 8005435C 2407FFF0 */ addiu $a3, $zero, -0x10
/* 2F760 80054360 24A40004 */ addiu $a0, $a1, 4
.L80054364:
/* 2F764 80054364 8CA20000 */ lw $v0, ($a1)
/* 2F768 80054368 00461024 */ and $v0, $v0, $a2
/* 2F76C 8005436C 1040000B */ beqz $v0, .L8005439C
/* 2F770 80054370 24A50008 */ addiu $a1, $a1, 8
/* 2F774 80054374 8C920000 */ lw $s2, ($a0)
/* 2F778 80054378 2642000F */ addiu $v0, $s2, 0xf
/* 2F77C 8005437C 00471024 */ and $v0, $v0, $a3
/* 2F780 80054380 AC820000 */ sw $v0, ($a0)
/* 2F784 80054384 8FA20024 */ lw $v0, 0x24($sp)
/* 2F788 80054388 24840008 */ addiu $a0, $a0, 8
/* 2F78C 8005438C 0040182D */ daddu $v1, $v0, $zero
/* 2F790 80054390 2442FFFF */ addiu $v0, $v0, -1
/* 2F794 80054394 1460FFF3 */ bnez $v1, .L80054364
/* 2F798 80054398 AFA20024 */ sw $v0, 0x24($sp)
.L8005439C:
/* 2F79C 8005439C 8FA20034 */ lw $v0, 0x34($sp)
/* 2F7A0 800543A0 1040002D */ beqz $v0, .L80054458
/* 2F7A4 800543A4 27A50050 */ addiu $a1, $sp, 0x50
/* 2F7A8 800543A8 8EB10000 */ lw $s1, ($s5)
/* 2F7AC 800543AC 24060020 */ addiu $a2, $zero, 0x20
/* 2F7B0 800543B0 02228821 */ addu $s1, $s1, $v0
/* 2F7B4 800543B4 0C015380 */ jal snd_read_rom
/* 2F7B8 800543B8 0220202D */ daddu $a0, $s1, $zero
/* 2F7BC 800543BC 0280202D */ daddu $a0, $s4, $zero
/* 2F7C0 800543C0 24050001 */ addiu $a1, $zero, 1
/* 2F7C4 800543C4 97A2005E */ lhu $v0, 0x5e($sp)
/* 2F7C8 800543C8 97B0005C */ lhu $s0, 0x5c($sp)
/* 2F7CC 800543CC 2442000F */ addiu $v0, $v0, 0xf
/* 2F7D0 800543D0 3052FFF0 */ andi $s2, $v0, 0xfff0
/* 2F7D4 800543D4 0240302D */ daddu $a2, $s2, $zero
/* 2F7D8 800543D8 0C015FE4 */ jal alHeapAlloc
/* 2F7DC 800543DC 02308021 */ addu $s0, $s1, $s0
/* 2F7E0 800543E0 0200202D */ daddu $a0, $s0, $zero
/* 2F7E4 800543E4 0040282D */ daddu $a1, $v0, $zero
/* 2F7E8 800543E8 0240302D */ daddu $a2, $s2, $zero
/* 2F7EC 800543EC 0C015380 */ jal snd_read_rom
/* 2F7F0 800543F0 AE65002C */ sw $a1, 0x2c($s3)
/* 2F7F4 800543F4 0280202D */ daddu $a0, $s4, $zero
/* 2F7F8 800543F8 24050001 */ addiu $a1, $zero, 1
/* 2F7FC 800543FC 97A20062 */ lhu $v0, 0x62($sp)
/* 2F800 80054400 97B00060 */ lhu $s0, 0x60($sp)
/* 2F804 80054404 2442000F */ addiu $v0, $v0, 0xf
/* 2F808 80054408 3052FFF0 */ andi $s2, $v0, 0xfff0
/* 2F80C 8005440C 0240302D */ daddu $a2, $s2, $zero
/* 2F810 80054410 0C015FE4 */ jal alHeapAlloc
/* 2F814 80054414 02308021 */ addu $s0, $s1, $s0
/* 2F818 80054418 0200202D */ daddu $a0, $s0, $zero
/* 2F81C 8005441C 0040282D */ daddu $a1, $v0, $zero
/* 2F820 80054420 0240302D */ daddu $a2, $s2, $zero
/* 2F824 80054424 0C015380 */ jal snd_read_rom
/* 2F828 80054428 AE65003C */ sw $a1, 0x3c($s3)
/* 2F82C 8005442C 97A20058 */ lhu $v0, 0x58($sp)
/* 2F830 80054430 02228821 */ addu $s1, $s1, $v0
/* 2F834 80054434 AE710034 */ sw $s1, 0x34($s3)
/* 2F838 80054438 97A2005A */ lhu $v0, 0x5a($sp)
/* 2F83C 8005443C 2442000F */ addiu $v0, $v0, 0xf
/* 2F840 80054440 3042FFF0 */ andi $v0, $v0, 0xfff0
/* 2F844 80054444 AE620038 */ sw $v0, 0x38($s3)
/* 2F848 80054448 97A2005E */ lhu $v0, 0x5e($sp)
/* 2F84C 8005444C 000210C2 */ srl $v0, $v0, 3
/* 2F850 80054450 2442FFFF */ addiu $v0, $v0, -1
/* 2F854 80054454 AE620030 */ sw $v0, 0x30($s3)
.L80054458:
/* 2F858 80054458 8FBF0088 */ lw $ra, 0x88($sp)
/* 2F85C 8005445C 8FB50084 */ lw $s5, 0x84($sp)
/* 2F860 80054460 8FB40080 */ lw $s4, 0x80($sp)
/* 2F864 80054464 8FB3007C */ lw $s3, 0x7c($sp)
/* 2F868 80054468 8FB20078 */ lw $s2, 0x78($sp)
/* 2F86C 8005446C 8FB10074 */ lw $s1, 0x74($sp)
/* 2F870 80054470 8FB00070 */ lw $s0, 0x70($sp)
/* 2F874 80054474 03E00008 */ jr $ra
/* 2F878 80054478 27BD0090 */ addiu $sp, $sp, 0x90

View File

@ -1,52 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_load_PER
/* 2F8F8 800544F8 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 2F8FC 800544FC AFB20028 */ sw $s2, 0x28($sp)
/* 2F900 80054500 0080902D */ daddu $s2, $a0, $zero
/* 2F904 80054504 AFB00020 */ sw $s0, 0x20($sp)
/* 2F908 80054508 00A0802D */ daddu $s0, $a1, $zero
/* 2F90C 8005450C 0200202D */ daddu $a0, $s0, $zero
/* 2F910 80054510 27A50010 */ addiu $a1, $sp, 0x10
/* 2F914 80054514 24060010 */ addiu $a2, $zero, 0x10
/* 2F918 80054518 AFBF002C */ sw $ra, 0x2c($sp)
/* 2F91C 8005451C 0C015380 */ jal snd_read_rom
/* 2F920 80054520 AFB10024 */ sw $s1, 0x24($sp)
/* 2F924 80054524 26040010 */ addiu $a0, $s0, 0x10
/* 2F928 80054528 8FB00014 */ lw $s0, 0x14($sp)
/* 2F92C 8005452C 8E450054 */ lw $a1, 0x54($s2)
/* 2F930 80054530 2610FFF0 */ addiu $s0, $s0, -0x10
/* 2F934 80054534 0C015380 */ jal snd_read_rom
/* 2F938 80054538 0200302D */ daddu $a2, $s0, $zero
/* 2F93C 8005453C 3C0238E3 */ lui $v0, 0x38e3
/* 2F940 80054540 34428E39 */ ori $v0, $v0, 0x8e39
/* 2F944 80054544 02020019 */ multu $s0, $v0
/* 2F948 80054548 24020006 */ addiu $v0, $zero, 6
/* 2F94C 8005454C 00003810 */ mfhi $a3
/* 2F950 80054550 00071942 */ srl $v1, $a3, 5
/* 2F954 80054554 00438823 */ subu $s1, $v0, $v1
/* 2F958 80054558 1A200010 */ blez $s1, .L8005459C
/* 2F95C 8005455C 26440008 */ addiu $a0, $s2, 8
/* 2F960 80054560 2406000C */ addiu $a2, $zero, 0xc
/* 2F964 80054564 000310C0 */ sll $v0, $v1, 3
/* 2F968 80054568 00431021 */ addu $v0, $v0, $v1
/* 2F96C 8005456C 8E500054 */ lw $s0, 0x54($s2)
/* 2F970 80054570 00021100 */ sll $v0, $v0, 4
/* 2F974 80054574 02028021 */ addu $s0, $s0, $v0
/* 2F978 80054578 0C0153DD */ jal snd_copy_words
/* 2F97C 8005457C 0200282D */ daddu $a1, $s0, $zero
/* 2F980 80054580 0200202D */ daddu $a0, $s0, $zero
/* 2F984 80054584 2485000C */ addiu $a1, $a0, 0xc
/* 2F988 80054588 001130C0 */ sll $a2, $s1, 3
/* 2F98C 8005458C 00D13021 */ addu $a2, $a2, $s1
/* 2F990 80054590 00063100 */ sll $a2, $a2, 4
/* 2F994 80054594 0C0153DD */ jal snd_copy_words
/* 2F998 80054598 24C6FFF4 */ addiu $a2, $a2, -0xc
.L8005459C:
/* 2F99C 8005459C 8FBF002C */ lw $ra, 0x2c($sp)
/* 2F9A0 800545A0 8FB20028 */ lw $s2, 0x28($sp)
/* 2F9A4 800545A4 8FB10024 */ lw $s1, 0x24($sp)
/* 2F9A8 800545A8 8FB00020 */ lw $s0, 0x20($sp)
/* 2F9AC 800545AC 03E00008 */ jr $ra
/* 2F9B0 800545B0 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -1,48 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_load_PRG
/* 2F9B4 800545B4 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 2F9B8 800545B8 AFB20028 */ sw $s2, 0x28($sp)
/* 2F9BC 800545BC 0080902D */ daddu $s2, $a0, $zero
/* 2F9C0 800545C0 AFB00020 */ sw $s0, 0x20($sp)
/* 2F9C4 800545C4 00A0802D */ daddu $s0, $a1, $zero
/* 2F9C8 800545C8 0200202D */ daddu $a0, $s0, $zero
/* 2F9CC 800545CC 27A50010 */ addiu $a1, $sp, 0x10
/* 2F9D0 800545D0 24060010 */ addiu $a2, $zero, 0x10
/* 2F9D4 800545D4 AFBF002C */ sw $ra, 0x2c($sp)
/* 2F9D8 800545D8 0C015380 */ jal snd_read_rom
/* 2F9DC 800545DC AFB10024 */ sw $s1, 0x24($sp)
/* 2F9E0 800545E0 8FA20014 */ lw $v0, 0x14($sp)
/* 2F9E4 800545E4 2451FFF0 */ addiu $s1, $v0, -0x10
/* 2F9E8 800545E8 2E220201 */ sltiu $v0, $s1, 0x201
/* 2F9EC 800545EC 14400002 */ bnez $v0, .L800545F8
/* 2F9F0 800545F0 26040010 */ addiu $a0, $s0, 0x10
/* 2F9F4 800545F4 24110200 */ addiu $s1, $zero, 0x200
.L800545F8:
/* 2F9F8 800545F8 8E450058 */ lw $a1, 0x58($s2)
/* 2F9FC 800545FC 0C015380 */ jal snd_read_rom
/* 2FA00 80054600 0220302D */ daddu $a2, $s1, $zero
/* 2FA04 80054604 001118C2 */ srl $v1, $s1, 3
/* 2FA08 80054608 24020040 */ addiu $v0, $zero, 0x40
/* 2FA0C 8005460C 00438823 */ subu $s1, $v0, $v1
/* 2FA10 80054610 1A20000C */ blez $s1, .L80054644
/* 2FA14 80054614 26440014 */ addiu $a0, $s2, 0x14
/* 2FA18 80054618 24060008 */ addiu $a2, $zero, 8
/* 2FA1C 8005461C 8E500058 */ lw $s0, 0x58($s2)
/* 2FA20 80054620 000310C0 */ sll $v0, $v1, 3
/* 2FA24 80054624 02028021 */ addu $s0, $s0, $v0
/* 2FA28 80054628 0C0153DD */ jal snd_copy_words
/* 2FA2C 8005462C 0200282D */ daddu $a1, $s0, $zero
/* 2FA30 80054630 0200202D */ daddu $a0, $s0, $zero
/* 2FA34 80054634 24850008 */ addiu $a1, $a0, 8
/* 2FA38 80054638 001130C0 */ sll $a2, $s1, 3
/* 2FA3C 8005463C 0C0153DD */ jal snd_copy_words
/* 2FA40 80054640 24C6FFF8 */ addiu $a2, $a2, -8
.L80054644:
/* 2FA44 80054644 8FBF002C */ lw $ra, 0x2c($sp)
/* 2FA48 80054648 8FB20028 */ lw $s2, 0x28($sp)
/* 2FA4C 8005464C 8FB10024 */ lw $s1, 0x24($sp)
/* 2FA50 80054650 8FB00020 */ lw $s0, 0x20($sp)
/* 2FA54 80054654 03E00008 */ jr $ra
/* 2FA58 80054658 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -1,96 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_load_song_files
/* 2F0F8 80053CF8 27BDFFB8 */ addiu $sp, $sp, -0x48
/* 2F0FC 80053CFC AFB20028 */ sw $s2, 0x28($sp)
/* 2F100 80053D00 3C12800A */ lui $s2, %hi(D_8009A5C0)
/* 2F104 80053D04 8E52A5C0 */ lw $s2, %lo(D_8009A5C0)($s2)
/* 2F108 80053D08 AFB60038 */ sw $s6, 0x38($sp)
/* 2F10C 80053D0C 0080B02D */ daddu $s6, $a0, $zero
/* 2F110 80053D10 AFB3002C */ sw $s3, 0x2c($sp)
/* 2F114 80053D14 00C0982D */ daddu $s3, $a2, $zero
/* 2F118 80053D18 AFBF0044 */ sw $ra, 0x44($sp)
/* 2F11C 80053D1C AFBE0040 */ sw $fp, 0x40($sp)
/* 2F120 80053D20 AFB7003C */ sw $s7, 0x3c($sp)
/* 2F124 80053D24 AFB50034 */ sw $s5, 0x34($sp)
/* 2F128 80053D28 AFB40030 */ sw $s4, 0x30($sp)
/* 2F12C 80053D2C AFB10024 */ sw $s1, 0x24($sp)
/* 2F130 80053D30 AFB00020 */ sw $s0, 0x20($sp)
/* 2F134 80053D34 AFA5004C */ sw $a1, 0x4c($sp)
/* 2F138 80053D38 8E420030 */ lw $v0, 0x30($s2)
/* 2F13C 80053D3C 02C2102B */ sltu $v0, $s6, $v0
/* 2F140 80053D40 10400038 */ beqz $v0, .L80053E24
/* 2F144 80053D44 00A0B82D */ daddu $s7, $a1, $zero
/* 2F148 80053D48 24050010 */ addiu $a1, $zero, 0x10
/* 2F14C 80053D4C 8E43002C */ lw $v1, 0x2c($s2)
/* 2F150 80053D50 001610C0 */ sll $v0, $s6, 3
/* 2F154 80053D54 0062A021 */ addu $s4, $v1, $v0
/* 2F158 80053D58 96840000 */ lhu $a0, ($s4)
/* 2F15C 80053D5C 0C01511F */ jal snd_fetch_SBN_file
/* 2F160 80053D60 03A53021 */ addu $a2, $sp, $a1
/* 2F164 80053D64 14400030 */ bnez $v0, .L80053E28
/* 2F168 80053D68 00000000 */ nop
/* 2F16C 80053D6C 0C0136CA */ jal func_8004DB28
/* 2F170 80053D70 0260202D */ daddu $a0, $s3, $zero
/* 2F174 80053D74 1440002C */ bnez $v0, .L80053E28
/* 2F178 80053D78 240200C9 */ addiu $v0, $zero, 0xc9
/* 2F17C 80053D7C 3C0200FF */ lui $v0, 0xff
/* 2F180 80053D80 3442FFFF */ ori $v0, $v0, 0xffff
/* 2F184 80053D84 02E0282D */ daddu $a1, $s7, $zero
/* 2F188 80053D88 0000802D */ daddu $s0, $zero, $zero
/* 2F18C 80053D8C 3C1500FF */ lui $s5, 0xff
/* 2F190 80053D90 36B5FFFF */ ori $s5, $s5, 0xffff
/* 2F194 80053D94 241E0030 */ addiu $fp, $zero, 0x30
/* 2F198 80053D98 0280882D */ daddu $s1, $s4, $zero
/* 2F19C 80053D9C 8FA60014 */ lw $a2, 0x14($sp)
/* 2F1A0 80053DA0 8FA40010 */ lw $a0, 0x10($sp)
/* 2F1A4 80053DA4 0C015380 */ jal snd_read_rom
/* 2F1A8 80053DA8 00C23024 */ and $a2, $a2, $v0
.L80053DAC:
/* 2F1AC 80053DAC 96220002 */ lhu $v0, 2($s1)
/* 2F1B0 80053DB0 50400012 */ beql $v0, $zero, .L80053DFC
/* 2F1B4 80053DB4 26100001 */ addiu $s0, $s0, 1
/* 2F1B8 80053DB8 8E440020 */ lw $a0, 0x20($s2)
/* 2F1BC 80053DBC 000210C0 */ sll $v0, $v0, 3
/* 2F1C0 80053DC0 00822021 */ addu $a0, $a0, $v0
/* 2F1C4 80053DC4 8C820000 */ lw $v0, ($a0)
/* 2F1C8 80053DC8 8E43001C */ lw $v1, 0x1c($s2)
/* 2F1CC 80053DCC 00551024 */ and $v0, $v0, $s5
/* 2F1D0 80053DD0 00431821 */ addu $v1, $v0, $v1
/* 2F1D4 80053DD4 AFA30018 */ sw $v1, 0x18($sp)
/* 2F1D8 80053DD8 8C820004 */ lw $v0, 4($a0)
/* 2F1DC 80053DDC AFA2001C */ sw $v0, 0x1c($sp)
/* 2F1E0 80053DE0 00021602 */ srl $v0, $v0, 0x18
/* 2F1E4 80053DE4 545E0005 */ bnel $v0, $fp, .L80053DFC
/* 2F1E8 80053DE8 26100001 */ addiu $s0, $s0, 1
/* 2F1EC 80053DEC 0060202D */ daddu $a0, $v1, $zero
/* 2F1F0 80053DF0 0C015313 */ jal snd_load_BK
/* 2F1F4 80053DF4 0200282D */ daddu $a1, $s0, $zero
/* 2F1F8 80053DF8 26100001 */ addiu $s0, $s0, 1
.L80053DFC:
/* 2F1FC 80053DFC 2A020003 */ slti $v0, $s0, 3
/* 2F200 80053E00 1440FFEA */ bnez $v0, .L80053DAC
/* 2F204 80053E04 26310002 */ addiu $s1, $s1, 2
/* 2F208 80053E08 96820000 */ lhu $v0, ($s4)
/* 2F20C 80053E0C AE760028 */ sw $s6, 0x28($s3)
/* 2F210 80053E10 8FA7004C */ lw $a3, 0x4c($sp)
/* 2F214 80053E14 AE670064 */ sw $a3, 0x64($s3)
/* 2F218 80053E18 AE620024 */ sw $v0, 0x24($s3)
/* 2F21C 80053E1C 08014F8A */ j .L80053E28
/* 2F220 80053E20 8EE20008 */ lw $v0, 8($s7)
.L80053E24:
/* 2F224 80053E24 24020097 */ addiu $v0, $zero, 0x97
.L80053E28:
/* 2F228 80053E28 8FBF0044 */ lw $ra, 0x44($sp)
/* 2F22C 80053E2C 8FBE0040 */ lw $fp, 0x40($sp)
/* 2F230 80053E30 8FB7003C */ lw $s7, 0x3c($sp)
/* 2F234 80053E34 8FB60038 */ lw $s6, 0x38($sp)
/* 2F238 80053E38 8FB50034 */ lw $s5, 0x34($sp)
/* 2F23C 80053E3C 8FB40030 */ lw $s4, 0x30($sp)
/* 2F240 80053E40 8FB3002C */ lw $s3, 0x2c($sp)
/* 2F244 80053E44 8FB20028 */ lw $s2, 0x28($sp)
/* 2F248 80053E48 8FB10024 */ lw $s1, 0x24($sp)
/* 2F24C 80053E4C 8FB00020 */ lw $s0, 0x20($sp)
/* 2F250 80053E50 03E00008 */ jr $ra
/* 2F254 80053E54 27BD0048 */ addiu $sp, $sp, 0x48

View File

@ -1,43 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_read_rom
/* 30200 80054E00 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 30204 80054E04 AFB3001C */ sw $s3, 0x1c($sp)
/* 30208 80054E08 0080982D */ daddu $s3, $a0, $zero
/* 3020C 80054E0C AFB40020 */ sw $s4, 0x20($sp)
/* 30210 80054E10 00A0A02D */ daddu $s4, $a1, $zero
/* 30214 80054E14 AFB20018 */ sw $s2, 0x18($sp)
/* 30218 80054E18 00C0902D */ daddu $s2, $a2, $zero
/* 3021C 80054E1C AFB00010 */ sw $s0, 0x10($sp)
/* 30220 80054E20 00128342 */ srl $s0, $s2, 0xd
/* 30224 80054E24 AFB10014 */ sw $s1, 0x14($sp)
/* 30228 80054E28 0000882D */ daddu $s1, $zero, $zero
/* 3022C 80054E2C 1200000A */ beqz $s0, .L80054E58
/* 30230 80054E30 AFBF0024 */ sw $ra, 0x24($sp)
/* 30234 80054E34 2610FFFF */ addiu $s0, $s0, -1
.L80054E38:
/* 30238 80054E38 02712021 */ addu $a0, $s3, $s1
/* 3023C 80054E3C 02912821 */ addu $a1, $s4, $s1
/* 30240 80054E40 0C017D24 */ jal nuPiReadRom
/* 30244 80054E44 24062000 */ addiu $a2, $zero, 0x2000
/* 30248 80054E48 26312000 */ addiu $s1, $s1, 0x2000
/* 3024C 80054E4C 0200102D */ daddu $v0, $s0, $zero
/* 30250 80054E50 1440FFF9 */ bnez $v0, .L80054E38
/* 30254 80054E54 2610FFFF */ addiu $s0, $s0, -1
.L80054E58:
/* 30258 80054E58 32521FFF */ andi $s2, $s2, 0x1fff
/* 3025C 80054E5C 12400004 */ beqz $s2, .L80054E70
/* 30260 80054E60 02712021 */ addu $a0, $s3, $s1
/* 30264 80054E64 02912821 */ addu $a1, $s4, $s1
/* 30268 80054E68 0C017D24 */ jal nuPiReadRom
/* 3026C 80054E6C 0240302D */ daddu $a2, $s2, $zero
.L80054E70:
/* 30270 80054E70 8FBF0024 */ lw $ra, 0x24($sp)
/* 30274 80054E74 8FB40020 */ lw $s4, 0x20($sp)
/* 30278 80054E78 8FB3001C */ lw $s3, 0x1c($sp)
/* 3027C 80054E7C 8FB20018 */ lw $s2, 0x18($sp)
/* 30280 80054E80 8FB10014 */ lw $s1, 0x14($sp)
/* 30284 80054E84 8FB00010 */ lw $s0, 0x10($sp)
/* 30288 80054E88 03E00008 */ jr $ra
/* 3028C 80054E8C 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,54 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_swizzle_BK_instruments
/* 2FDF8 800549F8 00A0582D */ daddu $t3, $a1, $zero
/* 2FDFC 800549FC 3C03800A */ lui $v1, %hi(D_8009A5C0)
/* 2FE00 80054A00 8C63A5C0 */ lw $v1, %lo(D_8009A5C0)($v1)
/* 2FE04 80054A04 93AA0013 */ lbu $t2, 0x13($sp)
/* 2FE08 80054A08 9162000E */ lbu $v0, 0xe($t3)
/* 2FE0C 80054A0C 8C690004 */ lw $t1, 4($v1)
/* 2FE10 80054A10 14400021 */ bnez $v0, .L80054A98
/* 2FE14 80054A14 C4620000 */ lwc1 $f2, ($v1)
/* 2FE18 80054A18 10E0001D */ beqz $a3, .L80054A90
/* 2FE1C 80054A1C 0000402D */ daddu $t0, $zero, $zero
.L80054A20:
/* 2FE20 80054A20 8CC30000 */ lw $v1, ($a2)
/* 2FE24 80054A24 50600016 */ beql $v1, $zero, .L80054A80
/* 2FE28 80054A28 ACC90000 */ sw $t1, ($a2)
/* 2FE2C 80054A2C 8C620000 */ lw $v0, ($v1)
/* 2FE30 80054A30 10400002 */ beqz $v0, .L80054A3C
/* 2FE34 80054A34 00441021 */ addu $v0, $v0, $a0
/* 2FE38 80054A38 AC620000 */ sw $v0, ($v1)
.L80054A3C:
/* 2FE3C 80054A3C 8C620008 */ lw $v0, 8($v1)
/* 2FE40 80054A40 10400002 */ beqz $v0, .L80054A4C
/* 2FE44 80054A44 00451021 */ addu $v0, $v0, $a1
/* 2FE48 80054A48 AC620008 */ sw $v0, 8($v1)
.L80054A4C:
/* 2FE4C 80054A4C 8C620018 */ lw $v0, 0x18($v1)
/* 2FE50 80054A50 10400002 */ beqz $v0, .L80054A5C
/* 2FE54 80054A54 00451021 */ addu $v0, $v0, $a1
/* 2FE58 80054A58 AC620018 */ sw $v0, 0x18($v1)
.L80054A5C:
/* 2FE5C 80054A5C 8C62002C */ lw $v0, 0x2c($v1)
/* 2FE60 80054A60 10400002 */ beqz $v0, .L80054A6C
/* 2FE64 80054A64 00451021 */ addu $v0, $v0, $a1
/* 2FE68 80054A68 AC62002C */ sw $v0, 0x2c($v1)
.L80054A6C:
/* 2FE6C 80054A6C C4600020 */ lwc1 $f0, 0x20($v1)
/* 2FE70 80054A70 46800020 */ cvt.s.w $f0, $f0
/* 2FE74 80054A74 46020003 */ div.s $f0, $f0, $f2
/* 2FE78 80054A78 A06A0025 */ sb $t2, 0x25($v1)
/* 2FE7C 80054A7C E4600020 */ swc1 $f0, 0x20($v1)
.L80054A80:
/* 2FE80 80054A80 25080001 */ addiu $t0, $t0, 1
/* 2FE84 80054A84 0107102B */ sltu $v0, $t0, $a3
/* 2FE88 80054A88 1440FFE5 */ bnez $v0, .L80054A20
/* 2FE8C 80054A8C 24C60004 */ addiu $a2, $a2, 4
.L80054A90:
/* 2FE90 80054A90 24020001 */ addiu $v0, $zero, 1
/* 2FE94 80054A94 A162000E */ sb $v0, 0xe($t3)
.L80054A98:
/* 2FE98 80054A98 03E00008 */ jr $ra
/* 2FE9C 80054A9C 00000000 */ nop

View File

@ -1,36 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel alHeapInit
/* 33320 80057F20 30A3000F */ andi $v1, $a1, 0xf
/* 33324 80057F24 24020010 */ addiu $v0, $zero, 0x10
/* 33328 80057F28 00431823 */ subu $v1, $v0, $v1
/* 3332C 80057F2C 10620003 */ beq $v1, $v0, .L80057F3C
/* 33330 80057F30 00A31021 */ addu $v0, $a1, $v1
/* 33334 80057F34 08015FD0 */ j .L80057F40
/* 33338 80057F38 AC820000 */ sw $v0, ($a0)
.L80057F3C:
/* 3333C 80057F3C AC850000 */ sw $a1, ($a0)
.L80057F40:
/* 33340 80057F40 AC860008 */ sw $a2, 8($a0)
/* 33344 80057F44 00C0102D */ daddu $v0, $a2, $zero
/* 33348 80057F48 0000282D */ daddu $a1, $zero, $zero
/* 3334C 80057F4C 8C830000 */ lw $v1, ($a0)
/* 33350 80057F50 00021082 */ srl $v0, $v0, 2
/* 33354 80057F54 AC80000C */ sw $zero, 0xc($a0)
/* 33358 80057F58 1040000B */ beqz $v0, .L80057F88
/* 3335C 80057F5C AC830004 */ sw $v1, 4($a0)
.L80057F60:
/* 33360 80057F60 8C820000 */ lw $v0, ($a0)
/* 33364 80057F64 00051880 */ sll $v1, $a1, 2
/* 33368 80057F68 00621821 */ addu $v1, $v1, $v0
/* 3336C 80057F6C AC600000 */ sw $zero, ($v1)
/* 33370 80057F70 8C820008 */ lw $v0, 8($a0)
/* 33374 80057F74 24A50001 */ addiu $a1, $a1, 1
/* 33378 80057F78 00021082 */ srl $v0, $v0, 2
/* 3337C 80057F7C 00A2102B */ sltu $v0, $a1, $v0
/* 33380 80057F80 1440FFF7 */ bnez $v0, .L80057F60
/* 33384 80057F84 00000000 */ nop
.L80057F88:
/* 33388 80057F88 03E00008 */ jr $ra
/* 3338C 80057F8C 00000000 */ nop

View File

@ -1,223 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80056250
/* 31650 80056250 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 31654 80056254 AFB50024 */ sw $s5, 0x24($sp)
/* 31658 80056258 00A0A82D */ daddu $s5, $a1, $zero
/* 3165C 8005625C 3C038008 */ lui $v1, %hi(D_80078E50)
/* 31660 80056260 24638E50 */ addiu $v1, $v1, %lo(D_80078E50)
/* 31664 80056264 AFBF002C */ sw $ra, 0x2c($sp)
/* 31668 80056268 AFB60028 */ sw $s6, 0x28($sp)
/* 3166C 8005626C AFB40020 */ sw $s4, 0x20($sp)
/* 31670 80056270 AFB3001C */ sw $s3, 0x1c($sp)
/* 31674 80056274 AFB20018 */ sw $s2, 0x18($sp)
/* 31678 80056278 AFB10014 */ sw $s1, 0x14($sp)
/* 3167C 8005627C AFB00010 */ sw $s0, 0x10($sp)
/* 31680 80056280 8C620000 */ lw $v0, ($v1)
/* 31684 80056284 8EB30014 */ lw $s3, 0x14($s5)
/* 31688 80056288 144000BC */ bnez $v0, .L8005657C
/* 3168C 8005628C 0080382D */ daddu $a3, $a0, $zero
/* 31690 80056290 8EA20000 */ lw $v0, ($s5)
/* 31694 80056294 0260202D */ daddu $a0, $s3, $zero
/* 31698 80056298 ACE2000C */ sw $v0, 0xc($a3)
/* 3169C 8005629C 8EA20004 */ lw $v0, 4($s5)
/* 316A0 800562A0 AC670000 */ sw $a3, ($v1)
/* 316A4 800562A4 ACE00000 */ sw $zero, ($a3)
/* 316A8 800562A8 ACE00004 */ sw $zero, 4($a3)
/* 316AC 800562AC ACE20010 */ sw $v0, 0x10($a3)
/* 316B0 800562B0 8EA20008 */ lw $v0, 8($s5)
/* 316B4 800562B4 3C108008 */ lui $s0, %hi(D_80078E54)
/* 316B8 800562B8 26108E54 */ addiu $s0, $s0, %lo(D_80078E54)
/* 316BC 800562BC AE070000 */ sw $a3, ($s0)
/* 316C0 800562C0 3C018008 */ lui $at, %hi(D_80078E58)
/* 316C4 800562C4 A0208E58 */ sb $zero, %lo(D_80078E58)($at)
/* 316C8 800562C8 ACE20008 */ sw $v0, 8($a3)
/* 316CC 800562CC 8EA30010 */ lw $v1, 0x10($s5)
/* 316D0 800562D0 24027FFF */ addiu $v0, $zero, 0x7fff
/* 316D4 800562D4 3C018008 */ lui $at, %hi(D_80078E5A)
/* 316D8 800562D8 A4228E5A */ sh $v0, %lo(D_80078E5A)($at)
/* 316DC 800562DC ACE30014 */ sw $v1, 0x14($a3)
/* 316E0 800562E0 8EA50000 */ lw $a1, ($s5)
/* 316E4 800562E4 24020001 */ addiu $v0, $zero, 1
/* 316E8 800562E8 3C018008 */ lui $at, %hi(D_80078E5C)
/* 316EC 800562EC A0228E5C */ sb $v0, %lo(D_80078E5C)($at)
/* 316F0 800562F0 0C015FE4 */ jal alHeapAlloc
/* 316F4 800562F4 2406007C */ addiu $a2, $zero, 0x7c
/* 316F8 800562F8 8E030000 */ lw $v1, ($s0)
/* 316FC 800562FC AC62001C */ sw $v0, 0x1c($v1)
/* 31700 80056300 8EA20000 */ lw $v0, ($s5)
/* 31704 80056304 18400043 */ blez $v0, .L80056414
/* 31708 80056308 0000882D */ daddu $s1, $zero, $zero
/* 3170C 8005630C 0200B02D */ daddu $s6, $s0, $zero
/* 31710 80056310 24120001 */ addiu $s2, $zero, 1
/* 31714 80056314 0220A02D */ daddu $s4, $s1, $zero
/* 31718 80056318 0260202D */ daddu $a0, $s3, $zero
.L8005631C:
/* 3171C 8005631C 8EC20000 */ lw $v0, ($s6)
/* 31720 80056320 24050001 */ addiu $a1, $zero, 1
/* 31724 80056324 8C50001C */ lw $s0, 0x1c($v0)
/* 31728 80056328 24060020 */ addiu $a2, $zero, 0x20
/* 3172C 8005632C 0C015FE4 */ jal alHeapAlloc
/* 31730 80056330 02148021 */ addu $s0, $s0, $s4
/* 31734 80056334 0260202D */ daddu $a0, $s3, $zero
/* 31738 80056338 24050001 */ addiu $a1, $zero, 1
/* 3173C 8005633C 24060020 */ addiu $a2, $zero, 0x20
/* 31740 80056340 0C015FE4 */ jal alHeapAlloc
/* 31744 80056344 AE020004 */ sw $v0, 4($s0)
/* 31748 80056348 8EC30000 */ lw $v1, ($s6)
/* 3174C 8005634C 26040024 */ addiu $a0, $s0, 0x24
/* 31750 80056350 AE020008 */ sw $v0, 8($s0)
/* 31754 80056354 8C620014 */ lw $v0, 0x14($v1)
/* 31758 80056358 0040F809 */ jalr $v0
/* 3175C 8005635C 2694007C */ addiu $s4, $s4, 0x7c
/* 31760 80056360 0260202D */ daddu $a0, $s3, $zero
/* 31764 80056364 24050001 */ addiu $a1, $zero, 1
/* 31768 80056368 24060020 */ addiu $a2, $zero, 0x20
/* 3176C 8005636C AE020020 */ sw $v0, 0x20($s0)
/* 31770 80056370 AE00002C */ sw $zero, 0x2c($s0)
/* 31774 80056374 AE120030 */ sw $s2, 0x30($s0)
/* 31778 80056378 0C015FE4 */ jal alHeapAlloc
/* 3177C 8005637C AE000034 */ sw $zero, 0x34($s0)
/* 31780 80056380 0260202D */ daddu $a0, $s3, $zero
/* 31784 80056384 24050001 */ addiu $a1, $zero, 1
/* 31788 80056388 3C013F80 */ lui $at, 0x3f80
/* 3178C 8005638C 44810000 */ mtc1 $at, $f0
/* 31790 80056390 24060050 */ addiu $a2, $zero, 0x50
/* 31794 80056394 AE020038 */ sw $v0, 0x38($s0)
/* 31798 80056398 AE000040 */ sw $zero, 0x40($s0)
/* 3179C 8005639C AE120044 */ sw $s2, 0x44($s0)
/* 317A0 800563A0 0C015FE4 */ jal alHeapAlloc
/* 317A4 800563A4 E600003C */ swc1 $f0, 0x3c($s0)
/* 317A8 800563A8 AE020048 */ sw $v0, 0x48($s0)
/* 317AC 800563AC 24020040 */ addiu $v0, $zero, 0x40
/* 317B0 800563B0 AE12006C */ sw $s2, 0x6c($s0)
/* 317B4 800563B4 AE000070 */ sw $zero, 0x70($s0)
/* 317B8 800563B8 A612004E */ sh $s2, 0x4e($s0)
/* 317BC 800563BC A612005C */ sh $s2, 0x5c($s0)
/* 317C0 800563C0 A6120062 */ sh $s2, 0x62($s0)
/* 317C4 800563C4 A6120050 */ sh $s2, 0x50($s0)
/* 317C8 800563C8 A6120052 */ sh $s2, 0x52($s0)
/* 317CC 800563CC A6000054 */ sh $zero, 0x54($s0)
/* 317D0 800563D0 A6000056 */ sh $zero, 0x56($s0)
/* 317D4 800563D4 A612005A */ sh $s2, 0x5a($s0)
/* 317D8 800563D8 A6000058 */ sh $zero, 0x58($s0)
/* 317DC 800563DC A6120060 */ sh $s2, 0x60($s0)
/* 317E0 800563E0 A600005E */ sh $zero, 0x5e($s0)
/* 317E4 800563E4 AE000064 */ sw $zero, 0x64($s0)
/* 317E8 800563E8 AE000068 */ sw $zero, 0x68($s0)
/* 317EC 800563EC A602004C */ sh $v0, 0x4c($s0)
/* 317F0 800563F0 A6000074 */ sh $zero, 0x74($s0)
/* 317F4 800563F4 AE000000 */ sw $zero, ($s0)
/* 317F8 800563F8 A2000078 */ sb $zero, 0x78($s0)
/* 317FC 800563FC A2110079 */ sb $s1, 0x79($s0)
/* 31800 80056400 8EA20000 */ lw $v0, ($s5)
/* 31804 80056404 26310001 */ addiu $s1, $s1, 1
/* 31808 80056408 0222102A */ slt $v0, $s1, $v0
/* 3180C 8005640C 1440FFC3 */ bnez $v0, .L8005631C
/* 31810 80056410 0260202D */ daddu $a0, $s3, $zero
.L80056414:
/* 31814 80056414 0260202D */ daddu $a0, $s3, $zero
/* 31818 80056418 8EA50004 */ lw $a1, 4($s5)
/* 3181C 8005641C 0C015FE4 */ jal alHeapAlloc
/* 31820 80056420 24060018 */ addiu $a2, $zero, 0x18
/* 31824 80056424 3C038008 */ lui $v1, %hi(D_80078E54)
/* 31828 80056428 8C638E54 */ lw $v1, %lo(D_80078E54)($v1)
/* 3182C 8005642C AC620020 */ sw $v0, 0x20($v1)
/* 31830 80056430 8EA20004 */ lw $v0, 4($s5)
/* 31834 80056434 18400022 */ blez $v0, .L800564C0
/* 31838 80056438 0000882D */ daddu $s1, $zero, $zero
/* 3183C 8005643C 24147FFF */ addiu $s4, $zero, 0x7fff
/* 31840 80056440 0220902D */ daddu $s2, $s1, $zero
.L80056444:
/* 31844 80056444 0260202D */ daddu $a0, $s3, $zero
/* 31848 80056448 24050001 */ addiu $a1, $zero, 1
/* 3184C 8005644C 3C028008 */ lui $v0, %hi(D_80078E54)
/* 31850 80056450 8C428E54 */ lw $v0, %lo(D_80078E54)($v0)
/* 31854 80056454 24060014 */ addiu $a2, $zero, 0x14
/* 31858 80056458 8C500020 */ lw $s0, 0x20($v0)
/* 3185C 8005645C 02258821 */ addu $s1, $s1, $a1
/* 31860 80056460 02128021 */ addu $s0, $s0, $s2
/* 31864 80056464 AE000010 */ sw $zero, 0x10($s0)
/* 31868 80056468 AE000014 */ sw $zero, 0x14($s0)
/* 3186C 8005646C A6140000 */ sh $s4, ($s0)
/* 31870 80056470 0C015FE4 */ jal alHeapAlloc
/* 31874 80056474 A200000C */ sb $zero, 0xc($s0)
/* 31878 80056478 0260202D */ daddu $a0, $s3, $zero
/* 3187C 8005647C 24050001 */ addiu $a1, $zero, 1
/* 31880 80056480 24060014 */ addiu $a2, $zero, 0x14
/* 31884 80056484 0C015FE4 */ jal alHeapAlloc
/* 31888 80056488 AE020004 */ sw $v0, 4($s0)
/* 3188C 8005648C 8E040004 */ lw $a0, 4($s0)
/* 31890 80056490 9205000C */ lbu $a1, 0xc($s0)
/* 31894 80056494 0260302D */ daddu $a2, $s3, $zero
/* 31898 80056498 0C0163A1 */ jal func_80058E84
/* 3189C 8005649C AE020008 */ sw $v0, 8($s0)
/* 318A0 800564A0 8E040008 */ lw $a0, 8($s0)
/* 318A4 800564A4 9205000C */ lbu $a1, 0xc($s0)
/* 318A8 800564A8 0C0163A1 */ jal func_80058E84
/* 318AC 800564AC 0260302D */ daddu $a2, $s3, $zero
/* 318B0 800564B0 8EA20004 */ lw $v0, 4($s5)
/* 318B4 800564B4 0222102A */ slt $v0, $s1, $v0
/* 318B8 800564B8 1440FFE2 */ bnez $v0, .L80056444
/* 318BC 800564BC 26520018 */ addiu $s2, $s2, 0x18
.L800564C0:
/* 318C0 800564C0 0260202D */ daddu $a0, $s3, $zero
/* 318C4 800564C4 24050170 */ addiu $a1, $zero, 0x170
/* 318C8 800564C8 0C015FE4 */ jal alHeapAlloc
/* 318CC 800564CC 24060002 */ addiu $a2, $zero, 2
/* 318D0 800564D0 0260202D */ daddu $a0, $s3, $zero
/* 318D4 800564D4 24050170 */ addiu $a1, $zero, 0x170
/* 318D8 800564D8 24060002 */ addiu $a2, $zero, 2
/* 318DC 800564DC 3C108008 */ lui $s0, %hi(D_80078E54)
/* 318E0 800564E0 26108E54 */ addiu $s0, $s0, %lo(D_80078E54)
/* 318E4 800564E4 8E030000 */ lw $v1, ($s0)
/* 318E8 800564E8 0000882D */ daddu $s1, $zero, $zero
/* 318EC 800564EC 0C015FE4 */ jal alHeapAlloc
/* 318F0 800564F0 AC620024 */ sw $v0, 0x24($v1)
/* 318F4 800564F4 0260202D */ daddu $a0, $s3, $zero
/* 318F8 800564F8 240502E0 */ addiu $a1, $zero, 0x2e0
/* 318FC 800564FC 24060002 */ addiu $a2, $zero, 2
/* 31900 80056500 3C01800A */ lui $at, %hi(D_800A3FEC)
/* 31904 80056504 A0203FEC */ sb $zero, %lo(D_800A3FEC)($at)
/* 31908 80056508 3C01800A */ lui $at, %hi(D_800A3FEE)
/* 3190C 8005650C A4203FEE */ sh $zero, %lo(D_800A3FEE)($at)
/* 31910 80056510 8E070000 */ lw $a3, ($s0)
/* 31914 80056514 24030004 */ addiu $v1, $zero, 4
/* 31918 80056518 3C01800A */ lui $at, %hi(D_800A3FF0)
/* 3191C 8005651C AC233FF0 */ sw $v1, %lo(D_800A3FF0)($at)
/* 31920 80056520 0C015FE4 */ jal alHeapAlloc
/* 31924 80056524 ACE20028 */ sw $v0, 0x28($a3)
/* 31928 80056528 0260202D */ daddu $a0, $s3, $zero
/* 3192C 8005652C 240502E0 */ addiu $a1, $zero, 0x2e0
/* 31930 80056530 24060002 */ addiu $a2, $zero, 2
/* 31934 80056534 3C10800A */ lui $s0, %hi(D_800A3FE0)
/* 31938 80056538 26103FE0 */ addiu $s0, $s0, %lo(D_800A3FE0)
/* 3193C 8005653C 0C015FE4 */ jal alHeapAlloc
/* 31940 80056540 AE020000 */ sw $v0, ($s0)
/* 31944 80056544 8E100000 */ lw $s0, ($s0)
/* 31948 80056548 0040182D */ daddu $v1, $v0, $zero
/* 3194C 8005654C 3C01800A */ lui $at, %hi(D_800A3FE4)
/* 31950 80056550 AC233FE4 */ sw $v1, %lo(D_800A3FE4)($at)
.L80056554:
/* 31954 80056554 A6000000 */ sh $zero, ($s0)
/* 31958 80056558 A4600000 */ sh $zero, ($v1)
/* 3195C 8005655C 24630002 */ addiu $v1, $v1, 2
/* 31960 80056560 26310001 */ addiu $s1, $s1, 1
/* 31964 80056564 2A2202E0 */ slti $v0, $s1, 0x2e0
/* 31968 80056568 1440FFFA */ bnez $v0, .L80056554
/* 3196C 8005656C 26100002 */ addiu $s0, $s0, 2
/* 31970 80056570 3C028008 */ lui $v0, %hi(D_80078E54)
/* 31974 80056574 8C428E54 */ lw $v0, %lo(D_80078E54)($v0)
/* 31978 80056578 AC530018 */ sw $s3, 0x18($v0)
.L8005657C:
/* 3197C 8005657C 8FBF002C */ lw $ra, 0x2c($sp)
/* 31980 80056580 8FB60028 */ lw $s6, 0x28($sp)
/* 31984 80056584 8FB50024 */ lw $s5, 0x24($sp)
/* 31988 80056588 8FB40020 */ lw $s4, 0x20($sp)
/* 3198C 8005658C 8FB3001C */ lw $s3, 0x1c($sp)
/* 31990 80056590 8FB20018 */ lw $s2, 0x18($sp)
/* 31994 80056594 8FB10014 */ lw $s1, 0x14($sp)
/* 31998 80056598 8FB00010 */ lw $s0, 0x10($sp)
/* 3199C 8005659C 03E00008 */ jr $ra
/* 319A0 800565A0 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -490,7 +490,7 @@ func_8004A73C = 0x8004A73C; // type:func rom:0x25B3C
func_8004A784 = 0x8004A784; // type:func rom:0x25B84 func_8004A784 = 0x8004A784; // type:func rom:0x25B84
create_audio_system = 0x8004AB00; // type:func rom:0x25F00 create_audio_system = 0x8004AB00; // type:func rom:0x25F00
nuAuPreNMIFuncSet = 0x8004ADD0; // type:func rom:0x261D0 nuAuPreNMIFuncSet = 0x8004ADD0; // type:func rom:0x261D0
func_8004AE08 = 0x8004AE08; // type:func rom:0x26208 nuAuMgr = 0x8004AE08; // type:func rom:0x26208
nuAuDmaCallBack = 0x8004B074; // type:func rom:0x26474 nuAuDmaCallBack = 0x8004B074; // type:func rom:0x26474
nuAuDmaNew = 0x8004B224; // type:func rom:0x26624 nuAuDmaNew = 0x8004B224; // type:func rom:0x26624
nuAuCleanDMABuffers = 0x8004B268; // type:func rom:0x26668 nuAuCleanDMABuffers = 0x8004B268; // type:func rom:0x26668
@ -1397,7 +1397,7 @@ D_80077A50 = 0x80077A50; // type:data rom:0x52E50
D_80077AE0 = 0x80077AE0; // type:data rom:0x52EE0 D_80077AE0 = 0x80077AE0; // type:data rom:0x52EE0
versionString = 0x80077BD0; // type:data rom:0x52FD0 versionString = 0x80077BD0; // type:data rom:0x52FD0
SCRIPT_NpcDefeat = 0x80077E38; // rom:0x53238 SCRIPT_NpcDefeat = 0x80077E38; // rom:0x53238
D_80078170 = 0x80078170; // type:data rom:0x53570 nuAuPreNMI = 0x80078170; // type:data rom:0x53570
nuAuPreNMIFunc = 0x80078174; // rom:0x53574 nuAuPreNMIFunc = 0x80078174; // rom:0x53574
nuAuDmaNext = 0x80078178; // rom:0x53578 nuAuDmaNext = 0x80078178; // rom:0x53578
nuAuFrameCounter = 0x8007817C; // rom:0x5357C nuAuFrameCounter = 0x8007817C; // rom:0x5357C
@ -1841,7 +1841,7 @@ D_800A0F44 = 0x800A0F44; // type:data rom:0x7C344
D_800A0F48 = 0x800A0F48; // type:data rom:0x7C348 D_800A0F48 = 0x800A0F48; // type:data rom:0x7C348
D_800A0F50 = 0x800A0F50; // type:data rom:0x7C350 D_800A0F50 = 0x800A0F50; // type:data rom:0x7C350
D_800A0F54 = 0x800A0F54; // type:data rom:0x7C354 D_800A0F54 = 0x800A0F54; // type:data rom:0x7C354
D_800A0F58 = 0x800A0F58; // type:data rom:0x7C358 nuAuMgrThread = 0x800A0F58; // type:data rom:0x7C358
phys_init_integrator_for_current_state = 0x800E2F60; // type:func rom:0x7C410 phys_init_integrator_for_current_state = 0x800E2F60; // type:func rom:0x7C410
gravity_use_fall_parms = 0x800E306C; // type:func rom:0x7C51C gravity_use_fall_parms = 0x800E306C; // type:func rom:0x7C51C
phys_update_falling = 0x800E3100; // type:func rom:0x7C5B0 phys_update_falling = 0x800E3100; // type:func rom:0x7C5B0
@ -1877,13 +1877,13 @@ phys_save_ground_pos = 0x800E54E0; // type:func rom:0x7E990
func_800E5520 = 0x800E5520; // type:func rom:0x7E9D0 func_800E5520 = 0x800E5520; // type:func rom:0x7E9D0
phys_adjust_cam_on_landing = 0x800E5530; // type:func rom:0x7E9E0 phys_adjust_cam_on_landing = 0x800E5530; // type:func rom:0x7E9E0
D_800A3628 = 0x800A3628; // type:data rom:0x7EA28 D_800A3628 = 0x800A3628; // type:data rom:0x7EA28
nuAuFrameSampleSize = 0x800A3634; // type:data rom:0x7EA34 D_800A3634 = 0x800A3634; // type:data rom:0x7EA34
D_800A3638 = 0x800A3638; // type:data rom:0x7EA38 D_800A3638 = 0x800A3638; // type:data rom:0x7EA38
D_800A363C = 0x800A363C; // type:data rom:0x7EA3C D_800A363C = 0x800A363C; // type:data rom:0x7EA3C
D_800A3640 = 0x800A3640; // type:data rom:0x7EA40 nuAuDmaMesgQ = 0x800A3640; // type:data rom:0x7EA40
D_800A3644 = 0x800A3644; // type:data rom:0x7EA44 D_800A3644 = 0x800A3644; // type:data rom:0x7EA44
D_800A3658 = 0x800A3658; // type:data rom:0x7EA58 nuAuDmaMesgBuf = 0x800A3658; // type:data rom:0x7EA58
D_800A3720 = 0x800A3720; // type:data rom:0x7EB20 nuAuDmaIOMesgBuf = 0x800A3720; // type:data rom:0x7EB20
phys_clear_spin_history = 0x800E58F0; // type:func rom:0x7EDA0 phys_clear_spin_history = 0x800E58F0; // type:func rom:0x7EDA0
phys_get_spin_history = 0x800E5938; // type:func rom:0x7EDE8 phys_get_spin_history = 0x800E5938; // type:func rom:0x7EDE8
phys_reset_spin_history = 0x800E59A0; // type:func rom:0x7EE50 phys_reset_spin_history = 0x800E59A0; // type:func rom:0x7EE50
@ -1891,9 +1891,7 @@ phys_update_action_state = 0x800E5A2C; // type:func rom:0x7EEDC
nuAuDmaState = 0x800A3BD0; // rom:0x7EFD0 nuAuDmaState = 0x800A3BD0; // rom:0x7EFD0
D_800A3BD4 = 0x800A3BD4; // type:data rom:0x7EFD4 D_800A3BD4 = 0x800A3BD4; // type:data rom:0x7EFD4
D_800A3BD8 = 0x800A3BD8; // type:data rom:0x7EFD8 D_800A3BD8 = 0x800A3BD8; // type:data rom:0x7EFD8
nuAuDmaBuf = 0x800A3BE0; // rom:0x7EFE0 nuAuDmaBufList = 0x800A3BE0; // rom:0x7EFE0
D_800A3BE4 = 0x800A3BE4; // type:data rom:0x7EFE4
D_800A3BF0 = 0x800A3BF0; // type:data rom:0x7EFF0
phys_peach_update = 0x800E5C78; // type:func rom:0x7F128 phys_peach_update = 0x800E5C78; // type:func rom:0x7F128
set_action_state = 0x800E5DA4; // type:func rom:0x7F254 set_action_state = 0x800E5DA4; // type:func rom:0x7F254
D_800A3FD0 = 0x800A3FD0; // type:data rom:0x7F3D0 D_800A3FD0 = 0x800A3FD0; // type:data rom:0x7F3D0
@ -2569,7 +2567,7 @@ gZoneCollisionData = 0x800D91D0; // type:data rom:0xB45D0
wMapHitName = 0x800D91E0; // type:data rom:0xB45E0 wMapHitName = 0x800D91E0; // type:data rom:0xB45E0
nuSiMgrMesgQ = 0x800D91F8; // type:data rom:0xB45F8 nuSiMgrMesgQ = 0x800D91F8; // type:data rom:0xB45F8
wMapShapeName = 0x800D9230; // type:data rom:0xB4630 wMapShapeName = 0x800D9230; // type:data rom:0xB4630
D_800D9248 = 0x800D9248; // type:data rom:0xB4648 struct:ALHeap nuAuHeap = 0x800D9248; // type:data rom:0xB4648 struct:ALHeap
nuGfxTask = 0x800D9278; // type:data rom:0xB4678 nuGfxTask = 0x800D9278; // type:data rom:0xB4678
animator_make_mirrorZ = 0x8011DFD0; // type:func rom:0xB46D0 animator_make_mirrorZ = 0x8011DFD0; // type:func rom:0xB46D0
animator_make_mirrorY = 0x8011E014; // type:func rom:0xB4714 animator_make_mirrorY = 0x8011E014; // type:func rom:0xB4714