Files
SpaghettiKart/src/audio/heap.c
T
MegaMech fd7941e841 Split out some unused asm and documented main.c (#242)
* Splitting out unused asm

* Documented main.c
2022-07-11 00:02:41 -07:00

1252 lines
35 KiB
C

#include <ultra64.h>
#include <macros.h>
#include "heap.h"
extern struct SoundAllocPool gNotesAndBuffersPool;
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern u8 D_803B0380;
extern u8 D_803B03C0;
extern ? D_803B0400;
extern ? D_803B0500;
void func_800B8DE0(void) {
? *temp_v1_3;
u8 *temp_v1;
u8 *temp_v1_2;
u8 *phi_v1;
u8 *phi_v1_2;
? *phi_v1_3;
phi_v1 = &D_803B03C0;
do {
if (*phi_v1 != 5) {
*phi_v1 = 0;
}
temp_v1 = phi_v1 + 1;
phi_v1 = temp_v1;
} while (temp_v1 < &D_803B0400);
phi_v1_2 = &D_803B0380;
do {
if (*phi_v1_2 != 5) {
*phi_v1_2 = 0;
}
temp_v1_2 = phi_v1_2 + 1;
phi_v1_2 = temp_v1_2;
} while (temp_v1_2 < &D_803B03C0);
phi_v1_3 = &D_803B0400;
do {
if (phi_v1_3->unk0 != 5) {
phi_v1_3->unk0 = 0;
}
if (phi_v1_3->unk1 != 5) {
phi_v1_3->unk1 = 0;
}
if (phi_v1_3->unk2 != 5) {
phi_v1_3->unk2 = 0;
}
if (phi_v1_3->unk3 != 5) {
phi_v1_3->unk3 = 0;
}
temp_v1_3 = phi_v1_3 + 4;
phi_v1_3 = temp_v1_3;
} while (temp_v1_3 != &D_803B0500);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B8DE0.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BCB48(void *); // extern
? func_800BD6F4(void *); // extern
? func_800BF004(? *, void *); // extern
extern s32 D_803B1508;
extern ? D_803B5FC8;
extern s32 gMaxSimultaneousNotes;
void func_800B8EA8(s32 arg0) {
s32 temp_s2;
s32 temp_v0;
u8 *temp_v0_2;
u8 *temp_v0_3;
void *temp_s0;
s32 phi_s1;
s32 phi_s2;
s32 phi_v0;
temp_v0 = gMaxSimultaneousNotes;
phi_s2 = 0;
phi_v0 = temp_v0;
if (temp_v0 > 0) {
phi_s1 = 0;
do {
temp_s0 = phi_s1 + D_803B1508;
if (arg0 == temp_s0->unkB2) {
if (temp_s0->unk30 >= 2) {
temp_v0_2 = temp_s0->unk44;
*temp_v0_2 = *temp_v0_2 & 0xFF7F;
temp_v0_3 = temp_s0->unk44;
*temp_v0_3 = *temp_v0_3 | 0x40;
}
func_800BCB48(temp_s0);
func_800BD6F4(temp_s0);
func_800BF004(&D_803B5FC8, temp_s0);
phi_v0 = gMaxSimultaneousNotes;
}
temp_s2 = phi_s2 + 1;
phi_s1 += 0xC0;
phi_s2 = temp_s2;
} while (temp_s2 < phi_v0);
}
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B8EA8.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BEF2C(? *); // extern
extern ? D_803B1510;
extern ? D_803B1A30;
void func_800B8F8C(s32 arg0) {
? *temp_s0;
? *phi_s0;
phi_s0 = &D_803B1510;
do {
if (((phi_s0->unk0 >> 0x1F) != 0) && (arg0 == phi_s0->unk4)) {
func_800BEF2C(phi_s0);
}
temp_s0 = phi_s0 + 0x148;
phi_s0 = temp_s0;
} while (temp_s0 != &D_803B1A30);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B8F8C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
u32 soundAlloc(void *arg0, s32 arg1) {
s32 temp_t6;
s8 *temp_a1;
u32 temp_a2;
u32 temp_t1;
s8 *phi_a1;
temp_a2 = arg0->unk4;
temp_t6 = (arg1 + 0xF) & ~0xF;
if ((arg0->unk0 + arg0->unk8) >= (temp_a2 + temp_t6)) {
temp_t1 = temp_a2 + temp_t6;
arg0->unk4 = temp_t1;
phi_a1 = temp_a2;
if (temp_a2 < temp_t1) {
do {
*phi_a1 = 0;
temp_a1 = phi_a1 + 1;
phi_a1 = temp_a1;
} while (temp_a1 < arg0->unk4);
}
arg0->unkC = arg0->unkC + 1;
return temp_a2;
}
return 0;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/soundAlloc.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
void func_800B907C(void *arg0, s32 arg1, s32 arg2) {
s32 temp_t6;
temp_t6 = (arg1 + 0xF) & ~0xF;
arg0->unk0 = temp_t6;
arg0->unk4 = temp_t6;
arg0->unk8 = arg2;
arg0->unkC = 0;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B907C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
void func_800B909C(void *arg0) {
arg0->unk10 = 0;
arg0->unk0 = 0;
arg0->unk8 = arg0->unk4;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B909C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
void func_800B90B0(void *arg0) {
s32 temp_v0;
temp_v0 = arg0->unk4;
arg0->unk10 = 0;
arg0->unk0 = 0;
arg0->unk20 = temp_v0 + arg0->unkC;
arg0->unk1E = -1;
arg0->unk2A = -1;
arg0->unk8 = temp_v0;
arg0->unk14 = temp_v0;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B90B0.s")
#endif
struct struct_800B90E0 {
s32 unk0;
s32 unk4;
s32 unk8;
s32 unkC;
};
UNUSED void func_800B90E0(struct struct_800B90E0 *arg0) {
arg0->unkC = 0;
arg0->unk4 = arg0->unk0;
}
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800B907C(? *, ? *, s32, s32); // extern
extern s32 D_800EA5D0;
extern ? D_803AFBC8;
extern ? D_803AFBD8;
extern ? D_803B71B0;
void func_800B90F0(s32 arg0) {
s32 temp_a2;
temp_a2 = arg0;
arg0 = temp_a2;
func_800B907C(&D_803AFBD8, &D_803B71B0, temp_a2);
func_800B907C(&D_803AFBC8, arg0 + &D_803B71B0, D_800EA5D0 - arg0, arg0);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B90F0.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 soundAlloc(? *, s32); // extern
? func_800B907C(? *, s32, s32); // extern
extern ? D_803AFBC8;
extern ? gNotesAndBuffersPool;
extern ? D_803AFC18;
void func_800B914C(void *arg0) {
D_803AFBC8.unk4 = D_803AFBC8.unk0;
func_800B907C(&gNotesAndBuffersPool, soundAlloc(&D_803AFBC8, arg0->unk0), arg0->unk0);
func_800B907C(&D_803AFC18, soundAlloc(&D_803AFBC8, arg0->unkC), arg0->unkC);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B914C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 soundAlloc(? *, s32); // extern
? func_800B907C(? *, s32, s32); // extern
extern ? D_803AFC18;
extern ? D_803AFC28;
extern ? D_803AFC38;
void func_800B91C8(void *arg0) {
D_803AFC18.unk4 = D_803AFC18.unk0;
func_800B907C(&D_803AFC28, soundAlloc(&D_803AFC18, arg0->unk0), arg0->unk0);
func_800B907C(&D_803AFC38, soundAlloc(&D_803AFC18, arg0->unk4), arg0->unk4);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B91C8.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 soundAlloc(? *, s32); // extern
? func_800B907C(? *, s32, s32); // extern
? func_800B909C(? *); // extern
extern ? D_803AFC28;
extern ? D_803AFC48;
extern ? D_803AFC4C;
extern ? D_803AFE18;
extern ? D_803AFE1C;
extern ? D_803AFFE8;
extern ? D_803AFFEC;
void func_800B9244(void *arg0) {
D_803AFC28.unk4 = D_803AFC28.unk0;
func_800B907C(&D_803AFC4C, soundAlloc(&D_803AFC28, arg0->unk0), arg0->unk0);
func_800B907C(&D_803AFE1C, soundAlloc(&D_803AFC28, arg0->unk4), arg0->unk4);
func_800B907C(&D_803AFFEC, soundAlloc(&D_803AFC28, arg0->unk8), arg0->unk8);
func_800B909C(&D_803AFC48);
func_800B909C(&D_803AFE18);
func_800B909C(&D_803AFFE8);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9244.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 soundAlloc(? *, s32); // extern
? func_800B907C(? *, s32, s32); // extern
? func_800B90B0(? *); // extern
extern ? D_803AFC38;
extern ? D_803AFDDC;
extern ? D_803AFDE0;
extern ? D_803AFFAC;
extern ? D_803AFFB0;
extern ? D_803B017C;
extern ? D_803B0180;
void func_800B9300(void *arg0) {
D_803AFC38.unk4 = D_803AFC38.unk0;
func_800B907C(&D_803AFDE0, soundAlloc(&D_803AFC38, arg0->unk0), arg0->unk0);
func_800B907C(&D_803AFFB0, soundAlloc(&D_803AFC38, arg0->unk4), arg0->unk4);
func_800B907C(&D_803B0180, soundAlloc(&D_803AFC38, arg0->unk8), arg0->unk8);
func_800B90B0(&D_803AFDDC);
func_800B90B0(&D_803AFFAC);
func_800B90B0(&D_803B017C);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9300.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800B8EA8(s16, s32, s16, s32 *); // extern
? func_800B8F8C(s16, s32); // extern
s32 soundAlloc(s32, s32); // extern
extern ? D_803AFC48;
extern ? D_803AFE18;
extern ? D_803AFFE8;
extern ? D_803B0380;
extern ? D_803B03C0;
extern ? D_803B0400;
extern void *D_803B1508;
extern ? D_803B1510;
extern ? D_803B1A30;
extern s32 gMaxSimultaneousNotes;
u32 func_800B93BC(s32 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
? *sp34;
u8 sp33;
s32 *sp28;
void *sp24;
s32 sp20;
? *temp_v0_4;
? *temp_v0_5;
s16 temp_a0;
s16 temp_a2;
s16 temp_v1_5;
s32 *temp_a3;
s32 temp_a0_2;
s32 temp_a1;
s32 temp_a1_2;
s32 temp_a1_3;
s32 temp_a1_4;
s32 temp_v0_6;
s32 temp_v0_9;
s32 temp_v1;
s32 temp_v1_2;
s32 temp_v1_3;
s32 temp_v1_4;
s32 temp_v1_8;
u32 temp_v0;
u32 temp_v0_7;
u32 temp_v0_8;
u8 *temp_v0_2;
u8 *temp_v0_3;
void *temp_v1_6;
void *temp_v1_7;
s32 phi_a3;
u8 phi_t1;
void *phi_v0;
s32 phi_v1;
s32 phi_v1_2;
u8 phi_t2;
void *phi_v0_2;
s32 phi_v1_3;
s32 phi_v1_4;
u8 phi_t1_2;
u8 phi_t2_2;
? *phi_v0_3;
? *phi_v0_4;
? *phi_v0_5;
? *phi_v0_6;
void *phi_v0_7;
s32 phi_v1_5;
s32 phi_v1_6;
void *phi_v0_8;
s32 phi_v1_7;
s32 phi_v1_8;
s32 phi_v0_9;
s16 phi_a2;
s16 phi_ra;
s32 phi_t4;
s32 *phi_a3_2;
void *phi_v1_9;
s32 *phi_a3_3;
void *phi_v1_10;
s32 *phi_a3_4;
u32 phi_v1_11;
s16 phi_a2_2;
s32 *phi_a3_5;
u32 phi_v0_10;
phi_a3 = arg3;
phi_t4 = 1;
loop_1:
phi_ra = arg4;
phi_t4 = 1;
if (phi_a3 == 0) {
temp_a3 = arg0 + 0x194;
if (arg0 == &D_803AFC48) {
sp34 = &D_803B0400;
sp33 = 0;
} else if (arg0 == &D_803AFE18) {
sp33 = 1;
sp34 = &D_803B03C0;
} else if (arg0 == &D_803AFFE8) {
sp33 = 2;
sp34 = &D_803B0380;
}
temp_a2 = temp_a3->unk1E;
phi_a2 = temp_a2;
phi_a2_2 = temp_a2;
phi_a2 = temp_a2;
if (temp_a2 == -1) {
phi_t1 = 0;
} else {
phi_t1 = *(temp_a2 + sp34);
}
temp_a0 = temp_a3->unk2A;
phi_t1_2 = phi_t1;
phi_t1_2 = phi_t1;
if (temp_a0 == -1) {
phi_t2 = 0;
} else {
phi_t2 = *(temp_a0 + sp34);
}
sp20 = sp33;
phi_t2_2 = phi_t2;
if (sp33 == 1) {
if (phi_t1 == 4) {
temp_a1 = gMaxSimultaneousNotes;
phi_v1 = 0;
phi_v1_2 = 0;
if (temp_a1 > 0) {
phi_v0 = D_803B1508;
loop_18:
phi_v1_2 = phi_v1;
if ((phi_v0->unkB2 != temp_a2) || ((phi_v0->unkB0 >> 0x1F) == 0)) {
temp_v1 = phi_v1 + 1;
phi_v0 += 0xC0;
phi_v1 = temp_v1;
phi_v1_2 = temp_v1;
if (temp_v1 < temp_a1) {
goto loop_18;
}
}
}
temp_v0_2 = &D_803B03C0 + temp_a2;
if (phi_v1_2 == temp_a1) {
phi_t1_2 = 3;
if (*temp_v0_2 != 5) {
*temp_v0_2 = 3;
}
}
}
if (phi_t2 == 4) {
temp_a1_2 = gMaxSimultaneousNotes;
phi_v1_3 = 0;
phi_v1_4 = 0;
if (temp_a1_2 > 0) {
phi_v0_2 = D_803B1508;
loop_27:
phi_v1_4 = phi_v1_3;
if ((phi_v0_2->unkB2 != temp_a3->unk2A) || ((phi_v0_2->unkB0 >> 0x1F) == 0)) {
temp_v1_2 = phi_v1_3 + 1;
phi_v0_2 += 0xC0;
phi_v1_3 = temp_v1_2;
phi_v1_4 = temp_v1_2;
if (temp_v1_2 < temp_a1_2) {
goto loop_27;
}
}
}
if (phi_v1_4 == temp_a1_2) {
temp_v0_3 = &D_803B03C0 + temp_a3->unk2A;
phi_t2_2 = 3;
if (*temp_v0_3 != 5) {
*temp_v0_3 = 3;
}
}
}
}
if (phi_t1_2 == 0) {
temp_a3->unk0 = 0;
phi_v0_9 = 0;
goto block_84;
}
if (phi_t2_2 == 0) {
temp_a3->unk0 = 1;
phi_v0_9 = 1;
goto block_84;
}
if ((phi_t1_2 == 3) && (phi_t2_2 == 3)) {
phi_v0_9 = temp_a3->unk0;
goto block_84;
}
if (phi_t1_2 == 3) {
temp_a3->unk0 = 0;
phi_v0_9 = 0;
goto block_84;
}
if (phi_t2_2 == 3) {
temp_a3->unk0 = 1;
phi_v0_9 = 1;
goto block_84;
}
if (sp20 == 0) {
if (phi_t1_2 == 2) {
phi_v0_3 = &D_803B1510;
loop_47:
phi_v0_4 = phi_v0_3;
if (((phi_v0_3->unk0 >> 0x1F) == 0) || (phi_v0_3->unk4 != temp_a3->unk1E)) {
temp_v0_4 = phi_v0_3 + 0x148;
phi_v0_3 = temp_v0_4;
phi_v0_4 = temp_v0_4;
if (temp_v0_4 != &D_803B1A30) {
goto loop_47;
}
}
if (phi_v0_4 == &D_803B1A30) {
temp_a3->unk0 = 0;
phi_v0_9 = 0;
goto block_84;
}
goto block_52;
}
block_52:
if (phi_t2_2 == 2) {
phi_v0_5 = &D_803B1510;
loop_54:
phi_v0_6 = phi_v0_5;
if (((phi_v0_5->unk0 >> 0x1F) == 0) || (phi_v0_5->unk4 != temp_a3->unk2A)) {
temp_v0_5 = phi_v0_5 + 0x148;
phi_v0_5 = temp_v0_5;
phi_v0_6 = temp_v0_5;
if (temp_v0_5 != &D_803B1A30) {
goto loop_54;
}
}
if (phi_v0_6 == &D_803B1A30) {
temp_a3->unk0 = 1;
phi_v0_9 = 1;
goto block_84;
}
goto block_76;
}
goto block_76;
}
if (sp20 == 1) {
if (phi_t1_2 == 2) {
temp_a1_3 = gMaxSimultaneousNotes;
phi_v1_5 = 0;
phi_v1_6 = 0;
if (temp_a1_3 > 0) {
phi_v0_7 = D_803B1508;
loop_63:
phi_v1_6 = phi_v1_5;
if ((phi_v0_7->unkB2 != temp_a3->unk1E) || ((phi_v0_7->unkB0 >> 0x1F) == 0)) {
temp_v1_3 = phi_v1_5 + 1;
phi_v0_7 += 0xC0;
phi_v1_5 = temp_v1_3;
phi_v1_6 = temp_v1_3;
if (temp_v1_3 < temp_a1_3) {
goto loop_63;
}
}
}
phi_a2 = temp_a3->unk1E;
phi_a2_2 = temp_a3->unk1E;
if (phi_v1_6 == temp_a1_3) {
temp_a3->unk0 = 0;
phi_v0_9 = 0;
goto block_84;
}
goto block_68;
}
block_68:
phi_a2 = phi_a2_2;
phi_a2 = phi_a2_2;
if (phi_t2_2 == 2) {
temp_a1_4 = gMaxSimultaneousNotes;
phi_v1_7 = 0;
phi_v1_8 = 0;
if (temp_a1_4 > 0) {
phi_v0_8 = D_803B1508;
loop_71:
phi_v1_8 = phi_v1_7;
if ((phi_v0_8->unkB2 != temp_a3->unk2A) || ((phi_v0_8->unkB0 >> 0x1F) == 0)) {
temp_v1_4 = phi_v1_7 + 1;
phi_v0_8 += 0xC0;
phi_v1_7 = temp_v1_4;
phi_v1_8 = temp_v1_4;
if (temp_v1_4 < temp_a1_4) {
goto loop_71;
}
}
}
if (phi_v1_8 == temp_a1_4) {
temp_a3->unk0 = 1;
phi_v0_9 = 1;
goto block_84;
}
goto block_76;
}
goto block_76;
}
block_76:
temp_v0_6 = temp_a3->unk0;
phi_v0_9 = temp_v0_6;
if (temp_v0_6 == 0) {
if (phi_t1_2 == 1) {
if (phi_t2_2 != 1) {
temp_a3->unk0 = 1;
phi_v0_9 = 1;
goto block_84;
}
goto block_83;
}
goto block_84;
}
if (phi_t2_2 == 1) {
if (phi_t1_2 != 1) {
temp_a3->unk0 = 0;
phi_v0_9 = 0;
goto block_84;
}
block_83:
return 0;
}
block_84:
temp_v1_5 = (temp_a3 + (phi_v0_9 * 0xC))->unk1E;
if (temp_v1_5 != -1) {
*(sp34 + temp_v1_5) = 0;
if (sp20 == 1) {
arg4 = arg4;
sp28 = temp_a3;
func_800B8EA8((temp_a3 + (temp_a3->unk0 * 0xC))->unk1E, sp20, phi_a2, temp_a3);
phi_ra = arg4;
}
}
temp_a0_2 = (arg0 + 0x194)->unk0;
temp_v1_6 = arg0 + 0x198;
phi_a3_2 = arg0 + 0x194;
phi_a3_3 = arg0 + 0x194;
phi_v1_10 = temp_v1_6;
phi_a3_5 = arg0 + 0x194;
phi_a3_4 = arg0 + 0x194;
if (temp_a0_2 != 0) {
temp_v1_7 = arg0 + 0x198;
phi_v1_9 = temp_v1_7;
if (temp_a0_2 != 1) {
return 0;
}
(arg0 + 0x194)->unk2A = phi_ra;
temp_v0_7 = ((temp_v1_7->unk0 + temp_v1_7->unk8) - arg2) - 0x10;
(arg0 + 0x194)->unk20 = temp_v0_7;
(arg0 + 0x194)->unk24 = arg2;
phi_v0_10 = temp_v0_7;
if (temp_v0_7 < temp_v1_7->unk4) {
*(sp34 + (arg0 + 0x194)->unk1E) = 0;
if (sp20 != 0) {
if (sp20 != phi_t4) {
} else {
sp28 = arg0 + 0x194;
sp24 = temp_v1_7;
func_800B8EA8((arg0 + 0x194)->unk1E, sp20);
goto block_106;
}
} else {
sp28 = arg0 + 0x194;
sp24 = temp_v1_7;
func_800B8F8C((arg0 + 0x194)->unk1E, sp20);
block_106:
phi_a3_2 = sp28;
phi_v1_9 = arg0 + 0x198;
}
phi_a3_2->unk1E = -1;
phi_v1_9->unk4 = phi_v1_9->unk0;
phi_a3_4 = phi_a3_2;
phi_v0_10 = phi_a3_2->unk20;
}
phi_v1_11 = phi_v0_10;
goto block_99;
}
(arg0 + 0x194)->unk1E = phi_ra;
(arg0 + 0x194)->unk14 = temp_v1_6->unk0;
(arg0 + 0x194)->unk18 = arg2;
temp_v0_8 = temp_v1_6->unk0 + arg2;
temp_v1_6->unk4 = temp_v0_8;
if ((arg0 + 0x194)->unk20 < temp_v0_8) {
*(sp34 + (arg0 + 0x194)->unk2A) = 0;
if (sp20 != 0) {
if (sp20 != phi_t4) {
} else {
sp28 = arg0 + 0x194;
sp24 = temp_v1_6;
func_800B8EA8((arg0 + 0x194)->unk2A, sp20);
goto block_96;
}
} else {
sp28 = arg0 + 0x194;
sp24 = temp_v1_6;
func_800B8F8C((arg0 + 0x194)->unk2A, sp20);
block_96:
phi_a3_3 = sp28;
phi_v1_10 = arg0 + 0x198;
}
phi_a3_3->unk2A = -1;
phi_a3_3->unk20 = phi_v1_10->unk0 + phi_v1_10->unk8;
phi_a3_5 = phi_a3_3;
}
phi_a3_4 = phi_a3_5;
phi_v1_11 = phi_a3_5->unk14;
block_99:
*phi_a3_4 = *phi_a3_4 ^ 1;
return phi_v1_11;
}
arg4 = arg4;
arg3 = phi_a3;
temp_v0_9 = soundAlloc(arg0 + 4, arg1 * arg2);
(arg0 + (*arg0 * 0xC))->unk14 = temp_v0_9;
if (temp_v0_9 == 0) {
if ((arg3 != 0) && (arg3 != 1)) {
if (arg3 == 2) {
phi_a3 = 0;
goto loop_1;
}
goto block_116;
}
return 0;
}
block_116:
(arg0 + (*arg0 * 0xC))->unk1E = arg4;
(arg0 + (*arg0 * 0xC))->unk18 = arg2;
temp_v1_8 = *arg0;
temp_v0 = (arg0 + (temp_v1_8 * 0xC))->unk14;
*arg0 = temp_v1_8 + 1;
return temp_v0;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B93BC.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800B9AD8(s32, s32, s32); // extern
s32 func_800BA858(s32); // extern
void func_800B9A90(s32 arg0, s32 arg1, s32 arg2) {
if (func_800BA858(arg2) != 0) {
return;
}
func_800B9AD8(arg0, arg1, arg2);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9A90.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
u32 func_800B9A90(s32, ?, s32); // extern
extern u32 D_803AFC48;
extern u32 D_803AFE18;
extern u32 D_803AFFE8;
u32 func_800B9AD8(s32 arg0, s32 arg1, s32 arg2) {
u32 temp_v0;
void *temp_v1;
u32 *phi_a1;
u32 *phi_v1;
u32 phi_v0;
u32 phi_v0_2;
if (arg0 != 0) {
if (arg0 != 1) {
if (arg0 != 2) {
phi_a1 = sp18;
} else {
phi_a1 = &D_803AFFE8;
}
} else {
phi_a1 = &D_803AFE18;
}
} else {
phi_a1 = &D_803AFC48;
}
temp_v1 = phi_a1 + 0x194;
if (arg1 == 0) {
if (arg2 == temp_v1->unk1E) {
temp_v1->unk0 = 1;
return temp_v1->unk14;
}
if (arg2 == temp_v1->unk2A) {
temp_v1->unk0 = 0;
return temp_v1->unk20;
}
return 0;
}
phi_v1 = phi_a1;
phi_v0 = 0;
phi_v0_2 = 0;
if (*phi_a1 != 0) {
loop_14:
if (arg2 == phi_v1->unk1E) {
return phi_v1->unk14;
}
temp_v0 = phi_v0 + 1;
phi_v1 += 0xC;
phi_v0 = temp_v0;
if (temp_v0 >= *phi_a1) {
goto block_17;
}
goto loop_14;
}
block_17:
if (arg1 == 2) {
phi_v0_2 = func_800B9A90(arg0, 0, arg0);
}
return phi_v0_2;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9AD8.s")
#endif
#ifdef MIPS_TO_C
UNUSED void func_800B9BE4(f32 arg0, f32 arg1, void *arg2) {
? sp4C;
f32 sp30;
f32 sp2C;
? sp14;
f32 sp10;
f32 spC;
? *var_a0;
f32 *var_a0_2;
f32 temp_f0;
f32 temp_f10;
f32 temp_f6;
f32 temp_f8;
s16 *var_v1;
void *var_v1_2;
temp_f0 = D_800F2E80;
var_a0 = &sp14;
var_v1 = arg2 + 4;
spC = arg1 * temp_f0;
sp2C = arg0 * temp_f0;
sp10 = arg1 * arg0 * temp_f0;
sp30 = ((arg0 * arg0) + arg1) * temp_f0;
do {
*var_v1 = (s16) (u32) ((var_a0->unk-4 * arg0) + (arg1 * var_a0->unk-8));
temp_f8 = var_a0->unk18;
temp_f10 = var_a0->unk1C * arg0;
var_a0 += 4;
var_v1 += 2;
var_v1->unkE = (s16) (u32) (temp_f10 + (arg1 * temp_f8));
} while ((u32) var_a0 < (u32) &sp2C);
var_v1_2 = arg2;
var_a0_2 = &spC;
do {
var_v1_2->unk0 = (s16) (u32) var_a0_2->unk0;
var_v1_2->unk2 = (s16) (u32) var_a0_2->unk4;
var_v1_2->unk4 = (s16) (u32) var_a0_2->unk8;
temp_f6 = var_a0_2->unkC;
var_a0_2 += 0x10;
var_v1_2->unk6 = (s16) (u32) temp_f6;
var_v1_2 += 8;
} while (var_a0_2 != &sp4C);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9BE4.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern ? D_803AF790;
extern s8 D_803AFBC3;
void func_800B9FB8(void) {
? *temp_v0;
s8 temp_v1;
u16 temp_v1_2;
? *phi_v0;
temp_v1 = D_803AFBC3;
phi_v0 = &D_803AF790;
if (temp_v1 > 0) {
do {
temp_v1_2 = phi_v0->unk8;
temp_v0 = phi_v0 + 0x108;
temp_v0->unk-100 = temp_v1_2 - (temp_v1_2 / 4);
phi_v0 = temp_v0;
} while (temp_v0 < ((temp_v1 * 0x108) + &D_803AF790));
}
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9FB8.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
? func_800B9FB8(); /* extern */
? func_800BA250(); /* extern */
? func_800BEF2C(? *); /* extern */
extern ? D_803B1510;
extern ? D_803B1A30;
extern ? gAudioBufferParameters;
s32 func_800BA00C(void) {
? *temp_s0;
s32 *temp_v1;
s32 temp_a0;
s32 temp_a2;
s32 temp_v0;
s32 temp_v0_4;
s32 temp_v0_5;
s32 temp_v0_6;
u8 temp_t6;
void *temp_v0_2;
void *temp_v0_3;
? *phi_s0;
s32 phi_v1;
s32 phi_a0;
s32 phi_a2;
s32 *phi_v1_2;
s32 phi_v0;
temp_t6 = D_803B0500;
switch (temp_t6) {
case 5:
phi_s0 = &D_803B1510;
do {
func_800BEF2C(phi_s0);
temp_s0 = phi_s0 + 0x148;
phi_s0 = temp_s0;
} while (temp_s0 != &D_803B1A30);
D_803B0504 = 4;
D_803B0500 += -1;
break;
case 4:
temp_v0 = D_803B0504;
if (temp_v0 != 0) {
D_803B0504 = temp_v0 - 1;
func_800B9FB8();
} else {
temp_a2 = gMaxSimultaneousNotes;
phi_v1 = 0;
phi_a0 = 0;
phi_a2 = temp_a2;
if (temp_a2 > 0) {
do {
temp_a0 = phi_a0 + 1;
temp_v0_2 = D_803B1508 + phi_v1;
phi_a0 = temp_a0;
if (((temp_v0_2->unkB0 >> 0x1F) != 0) && (temp_v0_2->unk59 != 0)) {
temp_v0_2->unk68 = gAudioBufferParameters.unk18;
temp_v0_3 = D_803B1508 + phi_v1;
temp_v0_3->unk58 = temp_v0_3->unk58 | 0x10;
phi_a2 = gMaxSimultaneousNotes;
}
phi_v1 += 0xC0;
} while (temp_a0 < phi_a2);
}
D_803B0504 = 0x10;
D_803B0500 += -1;
}
break;
case 3:
temp_v0_4 = D_803B0504;
phi_v1_2 = &D_803B7180;
if (temp_v0_4 != 0) {
D_803B0504 = temp_v0_4 - 1;
func_800B9FB8();
} else {
do {
phi_v0 = 0;
loop_18:
*(*phi_v1_2 + phi_v0) = 0;
(*phi_v1_2 + phi_v0)->unk2 = 0;
(*phi_v1_2 + phi_v0)->unk4 = 0;
temp_v0_5 = phi_v0 + 8;
(*phi_v1_2 + phi_v0)->unk6 = 0;
phi_v0 = temp_v0_5;
if (temp_v0_5 != 0xA00) {
goto loop_18;
}
temp_v1 = phi_v1_2 + 4;
phi_v1_2 = temp_v1;
} while (temp_v1 != &D_803B718C);
D_803B0504 = 4;
D_803B0500 += -1;
}
break;
case 2:
temp_v0_6 = D_803B0504;
if (temp_v0_6 != 0) {
D_803B0504 = temp_v0_6 - 1;
} else {
D_803B0500 += -1;
}
break;
case 1:
func_800BA250();
D_803B0500 = 0;
break;
}
if (D_803B0500 < 3) {
return 0;
}
return 1;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800BA00C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800B8DE0(); // extern
s32 soundAlloc(? *, s32); // extern
? func_800B914C(? *, s16, s16, u16); // extern
? func_800B91C8(? *); // extern
? func_800B9244(? *); // extern
? func_800B9300(? *); // extern
? func_800BB030(s32); // extern
? func_800BD368(); // extern
? func_800BDD34(); // extern
extern ? D_800EA4D8;
extern s16 D_800EA5CC;
extern f32 D_800F2E98;
extern f32 D_800F2E9C;
extern ? D_803AF790;
extern ? D_803AFBB0;
extern u16 D_803AFBC0;
extern u8 D_803AFBC3;
extern s32 D_803AFBC4;
extern s32 D_803AFBD0;
extern ? gNotesAndBuffersPool;
extern ? D_803B0348;
extern ? D_803B0358;
extern ? D_803B0360;
extern ? D_803B0370;
extern u8 D_803B0501;
extern s32 D_803B1508;
extern s32 gSampleDmaNumListItems;
extern ? gAudioBufferParameters;
extern s32 D_803B70AC;
extern s32 gMaxSimultaneousNotes;
extern s16 D_803B70B4;
extern ? D_803B70C8;
extern ? D_803B70D0;
extern f32 D_803B7178;
extern s32 D_803B717C;
void func_800BA250(void) {
? *temp_s0_2;
f32 temp_f0;
s16 temp_a1;
s16 temp_a2;
s16 temp_t0;
s16 temp_t1;
s16 temp_v1;
s32 *temp_s6;
s32 temp_s0;
s32 temp_s1;
s32 temp_s1_2;
s32 temp_s5;
s32 temp_t2;
s32 temp_t6;
s32 temp_t8;
s32 temp_t9;
s32 temp_v0_2;
s32 temp_v0_3;
u16 temp_a3;
u16 temp_t7;
u32 temp_s2;
u8 temp_v1_2;
void *temp_v0;
? *phi_s0;
? *phi_s2;
s32 phi_s5;
? *phi_s2_2;
? *phi_s0_2;
s32 phi_s1;
temp_s6 = (D_803B0501 * 0x28) + &D_800EA4D8;
gSampleDmaNumListItems = 0;
temp_t9 = temp_s6->unk0;
gAudioBufferParameters.unk2 = temp_t9;
gAudioBufferParameters.unk4 = osAiSetFrequency(temp_t9 & 0xFFFF);
temp_a3 = gAudioBufferParameters.unk2;
gAudioBufferParameters.unk6 = ((temp_a3 / D_803B717C) + 0xF) & 0xFFF0;
temp_v1 = gAudioBufferParameters.unk6;
temp_t0 = temp_v1 + 0x10;
gAudioBufferParameters.unkA = temp_v1 - 0x10;
gAudioBufferParameters.unk8 = temp_t0;
gAudioBufferParameters.unkC = (temp_t0 / 0xC0) + 1;
temp_a2 = gAudioBufferParameters.unkC;
gAudioBufferParameters.unkE = (temp_v1 / temp_a2) & 0xFFF8;
temp_t1 = gAudioBufferParameters.unkE;
temp_f0 = temp_a2;
gAudioBufferParameters.unk10 = temp_t1 + 8;
gAudioBufferParameters.unk12 = temp_t1 - 8;
gAudioBufferParameters.unk14 = 32000.0f / temp_a3;
gAudioBufferParameters.unk1C = D_800F2E98 / temp_f0;
gAudioBufferParameters.unk18 = 1.0f / temp_f0;
gMaxSimultaneousNotes = temp_s6->unk5;
D_803AFBC0 = temp_s6->unkC;
D_803B70B4 = ((temp_f0 * D_800F2E9C) / D_800EA5CC) / D_803B7178;
gAudioBufferParameters.unk0 = temp_s6->unk4;
temp_a1 = gAudioBufferParameters.unk0;
gAudioBufferParameters.unk6 = temp_v1 * temp_a1;
gAudioBufferParameters.unk8 = gAudioBufferParameters.unk8 * temp_a1;
gAudioBufferParameters.unkA = gAudioBufferParameters.unkA * temp_a1;
gAudioBufferParameters.unkC = temp_a2 * temp_a1;
D_803B70AC = (gMaxSimultaneousNotes * 0x14 * gAudioBufferParameters.unkC) + (temp_s6->unk6 << 5) + 0x1E0;
temp_s0 = temp_s6->unk10 + temp_s6->unk14 + temp_s6->unk18;
temp_s1 = temp_s6->unk1C + temp_s6->unk20 + temp_s6->unk24;
temp_t2 = temp_s0 + temp_s1;
D_803B0348.unk0 = (D_803AFBD0 - temp_t2) - 0x100;
D_803B0348.unkC = temp_t2;
func_800B914C(&D_803B0348, temp_a1, temp_a2, temp_a3);
D_803B0358.unk0 = temp_s0;
D_803B0358.unk4 = temp_s1;
func_800B91C8(&D_803B0358);
D_803B0360.unk0 = temp_s6->unk10;
D_803B0360.unk4 = temp_s6->unk14;
D_803B0360.unk8 = temp_s6->unk18;
func_800B9244(&D_803B0360);
D_803B0370.unk0 = temp_s6->unk1C;
D_803B0370.unk4 = temp_s6->unk20;
D_803B0370.unk8 = temp_s6->unk24;
func_800B9300(&D_803B0370);
func_800B8DE0();
D_803B1508 = soundAlloc(&gNotesAndBuffersPool, gMaxSimultaneousNotes * 0xC0);
func_800BDD34();
func_800BD368();
D_803AFBC4 = soundAlloc(&gNotesAndBuffersPool, gAudioBufferParameters.unkC * gMaxSimultaneousNotes * 0x10);
phi_s0 = &D_803B70C8;
do {
temp_s0_2 = phi_s0 + 4;
temp_s0_2->unk-4 = soundAlloc(&gNotesAndBuffersPool, D_803B70AC * 8);
phi_s0 = temp_s0_2;
} while (temp_s0_2 != &D_803B70D0);
phi_s2 = &D_803AF790;
do {
temp_s2 = phi_s2 + 0x108;
temp_s2->unk-107 = 0;
phi_s2 = temp_s2;
} while (temp_s2 < &D_803AFBB0);
D_803AFBC3 = temp_s6->unk6;
phi_s5 = 0;
phi_s2_2 = &D_803AF790;
if (D_803AFBC3 > 0) {
do {
temp_v0 = temp_s6->unk8 + (phi_s5 * 4);
temp_t7 = temp_v0->unk1 << 6;
phi_s2_2->unk6 = temp_t7;
phi_s2_2->unk4 = temp_v0->unk0;
phi_s2_2->unk1 = 8;
phi_s2_2->unk8 = temp_v0->unk2;
phi_s2_2->unk18 = soundAlloc(&gNotesAndBuffersPool, (temp_t7 & 0xFFFF) * 2);
temp_v1_2 = phi_s2_2->unk4;
phi_s2_2->unk1C = soundAlloc(&gNotesAndBuffersPool, phi_s2_2->unk6 * 2);
phi_s2_2->unkC = 0;
phi_s2_2->unk10 = 0;
phi_s2_2->unk3 = 0;
phi_s2_2->unk2 = 2;
phi_s2_2->unk14 = phi_s2_2->unk6;
if (temp_v1_2 != 1) {
phi_s2_2->unk0 = 1;
phi_s2_2->unkA = 0x8000 / temp_v1_2;
phi_s2_2->unk20 = soundAlloc(&gNotesAndBuffersPool, 0x20);
phi_s2_2->unk24 = soundAlloc(&gNotesAndBuffersPool, 0x20);
phi_s2_2->unk28 = soundAlloc(&gNotesAndBuffersPool, 0x20);
phi_s2_2->unk2C = soundAlloc(&gNotesAndBuffersPool, 0x20);
phi_s1 = 0;
if (gAudioBufferParameters.unkC > 0) {
phi_s0_2 = phi_s2_2;
do {
temp_v0_2 = soundAlloc(&gNotesAndBuffersPool, 0x300);
temp_t6 = temp_v0_2 + 0x180;
phi_s0_2->unk34 = temp_v0_2;
phi_s0_2->unk38 = temp_t6;
temp_v0_3 = soundAlloc(&gNotesAndBuffersPool, 0x300);
temp_t8 = temp_v0_3 + 0x180;
phi_s0_2->unk98 = temp_v0_3;
phi_s0_2->unk9C = temp_t8;
temp_s1_2 = phi_s1 + 1;
phi_s0_2 += 0x14;
phi_s1 = temp_s1_2;
} while (temp_s1_2 < gAudioBufferParameters.unkC);
}
}
temp_s5 = phi_s5 + 1;
phi_s5 = temp_s5;
phi_s2_2 += 0x108;
} while (temp_s5 < D_803AFBC3);
}
func_800BB030(gMaxSimultaneousNotes);
osWritebackDCacheAll();
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800BA250.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern ? D_803B01B8;
extern s32 D_803B01C4;
s32 func_800BA858(s32 arg0, s32 arg1) {
s32 temp_v0;
s32 temp_v1;
? *phi_a1;
s32 phi_v0;
temp_v1 = D_803B01C4;
phi_v0 = 0;
if (temp_v1 > 0) {
phi_a1 = &D_803B01B8;
loop_2:
temp_v0 = phi_v0 + 1;
phi_v0 = temp_v0;
if ((arg0 == phi_a1->unk18) && (arg1 == phi_a1->unk1A)) {
return phi_a1->unk10;
}
phi_a1 += 0xC;
if (temp_v0 >= temp_v1) {
// Duplicate return node #6. Try simplifying control flow for better match
return 0;
}
goto loop_2;
}
return 0;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800BA858.s")
#endif