mirror of
https://github.com/n64decomp/mk64
synced 2026-07-28 23:25:37 -04:00
Audio/external matches (#412)
* Match func_800C8920, func_800C8AE4, and.. Introduce struct Unk_800E9F7C and cleanup existing code * Match func_800C40F0, add the likely other pos vars in the unk struct * func_800C8CCC
This commit is contained in:
+73
-123
@@ -1545,25 +1545,17 @@ void func_800C4084(u16 bankMask) {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023
|
||||
extern ? D_801930D0;
|
||||
static u16 D_800EA1C4 = 0;
|
||||
extern u16 D_800EA1C4;
|
||||
extern u8 D_801930D0[];
|
||||
|
||||
void func_800C40F0(s32 arg0) {
|
||||
u16 temp_t1;
|
||||
|
||||
unksp-10.unk10 = arg0;
|
||||
temp_t1 = D_800EA1C4 & ((1 << (arg0 & 0xFF)) ^ 0xFFFF);
|
||||
D_800EA1C4 = temp_t1;
|
||||
if (!(temp_t1 & 0xFFFF)) {
|
||||
D_801930D0.unk12 = 1;
|
||||
D_801930D0.unk10 = 0x7F;
|
||||
void func_800C40F0(u8 arg0) {
|
||||
D_800EA1C4 &= ((1 << (arg0)) ^ (u16) -1);
|
||||
if (!D_800EA1C4) {
|
||||
D_801930D0[18] = 1;
|
||||
D_801930D0[16] = 0x7F;
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/audio/external/func_800C40F0.s")
|
||||
#endif
|
||||
|
||||
|
||||
void play_sound(u32 soundBits, f32 *position, u8 arg2, f32 *arg3, f32 *arg4, u8 *arg5) {
|
||||
u8 bank;
|
||||
@@ -3805,19 +3797,20 @@ void func_800C8770(u8 playerId) {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023
|
||||
? func_800CAC08(); /* extern */
|
||||
static u8 D_800EA168 = 0;
|
||||
|
||||
// Checks the same field for all players before doing something?
|
||||
void func_800C8920(void) {
|
||||
if ((D_800EA168 != 0) && ((gPlayers->unk_0BC & 0x40000000) != 0x40000000) && ((gPlayers->unkE94 & 0x40000000) != 0x40000000) && ((gPlayers->unk1C6C & 0x40000000) != 0x40000000) && ((gPlayers->unk2A44 & 0x40000000) != 0x40000000) && ((gPlayers->unk381C & 0x40000000) != 0x40000000) && ((gPlayers->unk45F4 & 0x40000000) != 0x40000000) && ((gPlayers->unk53CC & 0x40000000) != 0x40000000) && ((gPlayers->unk61A4 & 0x40000000) != 0x40000000)) {
|
||||
func_800CAC08();
|
||||
}
|
||||
if (((u8) D_800EA168 != 0)
|
||||
&& ((gPlayers[0].unk_0BC & 0x40000000) != 0x40000000)
|
||||
&& ((gPlayers[1].unk_0BC & 0x40000000) != 0x40000000)
|
||||
&& ((gPlayers[2].unk_0BC & 0x40000000) != 0x40000000)
|
||||
&& ((gPlayers[3].unk_0BC & 0x40000000) != 0x40000000)
|
||||
&& ((gPlayers[4].unk_0BC & 0x40000000) != 0x40000000)
|
||||
&& ((gPlayers[5].unk_0BC & 0x40000000) != 0x40000000)
|
||||
&& ((gPlayers[6].unk_0BC & 0x40000000) != 0x40000000)
|
||||
&& ((gPlayers[7].unk_0BC & 0x40000000) != 0x40000000)) {
|
||||
func_800CAC08();
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/audio/external/func_800C8920.s")
|
||||
#endif
|
||||
|
||||
void func_800C89E4(void) {
|
||||
if (D_800EA180 != 0) {
|
||||
@@ -3842,68 +3835,50 @@ void func_800C89E4(void) {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c
|
||||
static ? D_800E9F7C; /* unable to generate initializer; const */
|
||||
static u8 D_800EA16C = 0; /* const */
|
||||
static u16 D_800EA184 = 0; /* const */
|
||||
static u8 D_800EA1C0 = 0; /* const */
|
||||
s16 gCurrentCourseId; /* unable to generate initializer */
|
||||
extern struct Unk_800E9F7C D_800E9F7C[];
|
||||
extern u16 D_800EA184;
|
||||
static f64 D_800F38B4 = 0.85;
|
||||
|
||||
void func_800C8AE4(void) {
|
||||
u16 temp_t8;
|
||||
u16 var_v0;
|
||||
u8 temp_v0;
|
||||
|
||||
if (gCurrentCourseId == 8) {
|
||||
var_v0 = D_800EA184;
|
||||
if (var_v0 != 0) {
|
||||
temp_t8 = var_v0 + 1;
|
||||
if (D_800EA16C == 0) {
|
||||
D_800EA184 = temp_t8;
|
||||
var_v0 = temp_t8 & 0xFFFF;
|
||||
if (D_800EA184 != 0) {
|
||||
if ((u8) D_800EA16C == 0) {
|
||||
D_800EA184 += 1;
|
||||
}
|
||||
if (var_v0 == 0x012C) {
|
||||
D_800EA17C = 0.85f;
|
||||
if (D_800EA184 == 0x12C) {
|
||||
D_800EA17C = 0.85;
|
||||
D_800EA184 = 0;
|
||||
}
|
||||
} else {
|
||||
temp_v0 = D_800EA1C0;
|
||||
switch (temp_v0) { /* irregular */
|
||||
switch (D_800EA1C0) { /* irregular */
|
||||
case 0:
|
||||
if (D_800E9F7C.unk14 != 0) {
|
||||
if (D_800E9F7C[0].unk14[0] != 0) {
|
||||
D_800EA17C = 0.0f;
|
||||
D_800EA184 = 1;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if ((D_800E9F7C.unk14 != 0) || (D_800E9F7C.unk50 != 0)) {
|
||||
if ((D_800E9F7C[0].unk14[0] != 0) || (D_800E9F7C[1].unk14[0] != 0)) {
|
||||
D_800EA17C = 0.0f;
|
||||
block_25:
|
||||
D_800EA184 = 1;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if ((D_800E9F7C.unk14 != 0) || (D_800E9F7C.unk50 != 0) || (D_800E9F7C.unk8C != 0)) {
|
||||
if ((D_800E9F7C[0].unk14[0] != 0) || (D_800E9F7C[1].unk14[0] != 0) || (D_800E9F7C[2].unk14[0] != 0)) {
|
||||
D_800EA17C = 0.0f;
|
||||
D_800EA184 = 1;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if ((D_800E9F7C.unk14 != 0) || (D_800E9F7C.unk50 != 0) || (D_800E9F7C.unk8C != 0) || (D_800E9F7C.unkC8 != 0)) {
|
||||
if ((D_800E9F7C[0].unk14[0] != 0) || (D_800E9F7C[1].unk14[0] != 0) || (D_800E9F7C[2].unk14[0] != 0) || (D_800E9F7C[3].unk14[0] != 0)) {
|
||||
D_800EA17C = 0.0f;
|
||||
goto block_25;
|
||||
D_800EA184 = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/audio/external/func_800C8AE4.s")
|
||||
#endif
|
||||
|
||||
extern f32 D_800EA130;
|
||||
|
||||
@@ -3911,70 +3886,47 @@ void func_800C8C7C(u8 arg0) {
|
||||
*(&D_800EA06C[arg0].unk00[2]) = (1.0f - D_800E9F54[arg0]) - (&D_800EA130)[arg0];
|
||||
}
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-14-2023
|
||||
? func_800C5D04(s32); /* extern */
|
||||
? func_800C5E38(s32); /* extern */
|
||||
? func_800C6108(s32); /* extern */
|
||||
? func_800C64A0(s32); /* extern */
|
||||
? func_800C683C(s32); /* extern */
|
||||
? func_800C70A8(s32); /* extern */
|
||||
? func_800C76C0(s32); /* extern */
|
||||
? func_800C847C(s32); /* extern */
|
||||
? func_800C8920(); /* extern */
|
||||
? func_800C8AE4(); /* extern */
|
||||
? func_800C8C7C(s32); /* extern */
|
||||
u8 D_800EA1C0 = 0;
|
||||
extern void func_800C5D04(u8); /* extern */
|
||||
extern void func_800C5E38(u8); /* extern */
|
||||
extern void func_800C6108(u8); /* extern */
|
||||
extern void func_800C64A0(u8); /* extern */
|
||||
extern void func_800C683C(u8); /* extern */
|
||||
extern void func_800C70A8(u8); /* extern */
|
||||
extern void func_800C76C0(u8); /* extern */
|
||||
extern void func_800C847C(u8); /* extern */
|
||||
extern void func_800C8920(); /* extern */
|
||||
extern void func_800C8AE4(); /* extern */
|
||||
|
||||
void func_800C8CCC(void) {
|
||||
s32 temp_t6;
|
||||
s32 temp_t8;
|
||||
s32 temp_t9;
|
||||
s32 var_s0;
|
||||
s32 var_v0;
|
||||
void func_800C8CCC() {
|
||||
u8 i;
|
||||
|
||||
var_v0 = D_800EA1C0 + 1;
|
||||
var_s0 = 0;
|
||||
if (var_v0 > 0) {
|
||||
do {
|
||||
func_800C5D04(var_s0 & 0xFF);
|
||||
func_800C5E38(var_s0 & 0xFF);
|
||||
func_800C6108(var_s0 & 0xFF);
|
||||
func_800C64A0(var_s0 & 0xFF);
|
||||
func_800C6758(var_s0 & 0xFF);
|
||||
func_800C683C(var_s0 & 0xFF);
|
||||
func_800C70A8(var_s0 & 0xFF);
|
||||
func_800C76C0(var_s0 & 0xFF);
|
||||
func_800C847C(var_s0 & 0xFF);
|
||||
func_800C86D8(var_s0 & 0xFF);
|
||||
temp_t6 = (var_s0 + 1) & 0xFF;
|
||||
var_v0 = D_800EA1C0 + 1;
|
||||
var_s0 = temp_t6;
|
||||
} while (temp_t6 < var_v0);
|
||||
var_s0 = 0;
|
||||
for (i = 0; i < D_800EA1C0 + 1; i++) {
|
||||
func_800C5D04(i);
|
||||
func_800C5E38(i);
|
||||
func_800C6108(i);
|
||||
func_800C64A0(i);
|
||||
func_800C6758(i);
|
||||
func_800C683C(i);
|
||||
func_800C70A8(i);
|
||||
func_800C76C0(i);
|
||||
func_800C847C(i);
|
||||
func_800C86D8(i);
|
||||
}
|
||||
if (gModeSelection == 0) {
|
||||
do {
|
||||
func_800C8770(var_s0 & 0xFF);
|
||||
func_800C8C7C(var_s0 & 0xFF);
|
||||
temp_t8 = (var_s0 + 1) & 0xFF;
|
||||
var_s0 = temp_t8;
|
||||
} while (temp_t8 < 8);
|
||||
} else if (var_v0 > 0) {
|
||||
do {
|
||||
func_800C8770(var_s0 & 0xFF);
|
||||
func_800C8C7C(var_s0 & 0xFF);
|
||||
temp_t9 = (var_s0 + 1) & 0xFF;
|
||||
var_s0 = temp_t9;
|
||||
} while (temp_t9 < (D_800EA1C0 + 1));
|
||||
for(i = 0; i < 8; i++) {
|
||||
func_800C8770(i);
|
||||
func_800C8C7C(i);
|
||||
}
|
||||
} else {
|
||||
for(i = 0; i < D_800EA1C0 + 1; i++) {
|
||||
func_800C8770(i);
|
||||
func_800C8C7C(i);
|
||||
}
|
||||
}
|
||||
func_800C8920();
|
||||
func_800C89E4();
|
||||
func_800C8AE4();
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/audio/external/func_800C8CCC.s")
|
||||
#endif
|
||||
|
||||
void play_sound2(s32 soundBits) {
|
||||
|
||||
@@ -4002,8 +3954,6 @@ void func_800C8F44(u8 arg0) {
|
||||
func_800C36C4(0, 0, arg0, 1);
|
||||
}
|
||||
|
||||
extern struct Unk_8018EFD8 D_800E9F7C[];
|
||||
|
||||
void func_800C8F80(u8 arg0, s32 arg1) {
|
||||
u8 temp_v0;
|
||||
u8* temp_v1;
|
||||
@@ -4015,7 +3965,7 @@ void func_800C8F80(u8 arg0, s32 arg1) {
|
||||
case 2:
|
||||
*temp_v1 = 1;
|
||||
case 0:
|
||||
play_sound((u32) arg1, (f32* ) &D_800E9F7C[arg0], arg0, D_800EA1D4, D_800EA1D4, &D_800EA1DC);
|
||||
play_sound((u32) arg1, &D_800E9F7C[arg0], arg0, D_800EA1D4, D_800EA1D4, &D_800EA1DC);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -4032,7 +3982,7 @@ void func_800C9060(u8 arg0, u32 arg1) {
|
||||
case 2:
|
||||
D_800EA0EC[arg0] = 1;
|
||||
case 0:
|
||||
play_sound(arg1, (f32*) &D_800E9F7C[arg0].posX, arg0, D_800EA1D4, D_800EA1D4, (u8*) &D_800E9F7C[arg0].velZ);
|
||||
play_sound(arg1, &D_800E9F7C[arg0], arg0, D_800EA1D4, D_800EA1D4, (u8*) &D_800E9F7C[arg0].unk14[0]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -4259,11 +4209,11 @@ GLOBAL_ASM("asm/non_matchings/audio/external/func_800C94A4.s")
|
||||
#endif
|
||||
|
||||
void func_800C97C4(u8 arg0) {
|
||||
func_800C5578((f32* ) &D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF00);
|
||||
func_800C5578((f32* ) &D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF14);
|
||||
func_800C5578((f32* ) &D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF2E);
|
||||
func_800C5578((f32* ) &D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF36);
|
||||
func_800C5578((f32* ) &D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF3E);
|
||||
func_800C5578(&D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF00);
|
||||
func_800C5578(&D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF14);
|
||||
func_800C5578(&D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF2E);
|
||||
func_800C5578(&D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF36);
|
||||
func_800C5578(&D_800E9F7C[arg0], gPlayers[arg0].characterId + 0x0104FF3E);
|
||||
}
|
||||
|
||||
void func_800C98B8(f32* position, f32* velocity, u32 soundBits) {
|
||||
|
||||
@@ -88,6 +88,15 @@ struct Unk_800EA06C {
|
||||
/* 0x0D */ // u8 compilerPadding0[3];
|
||||
};
|
||||
|
||||
// Similar to Unk_8018EFD8
|
||||
// Should look like 5 f32's, then 4 u8's, then 9 f32's.
|
||||
struct Unk_800E9F7C {
|
||||
Vec3f pos;
|
||||
f32 unk4[2];
|
||||
s8 unk14[4];
|
||||
f32 unk18[9];
|
||||
}; // Size is still 0x3C.
|
||||
|
||||
void func_800C94A4(u8);
|
||||
void func_800CADD0(u8, f32);
|
||||
void func_800C13F0(void);
|
||||
@@ -134,6 +143,7 @@ void func_800C6758(u8);
|
||||
|
||||
void func_800C86D8(u8);
|
||||
void func_800C8770(u8);
|
||||
void func_800C8920(void);
|
||||
void func_800C89E4(void);
|
||||
void func_800C8CCC(void);
|
||||
void play_sound2(s32);
|
||||
@@ -169,6 +179,7 @@ void func_800CA388(u8);
|
||||
void func_800CA414(u16, u16);
|
||||
void func_800CA49C(u8);
|
||||
void func_800CAACC(u8);
|
||||
void func_800CAC08();
|
||||
void func_800CAC60(s32);
|
||||
void func_800CAD40(s32);
|
||||
void func_800CAEC4(u8, f32);
|
||||
|
||||
Reference in New Issue
Block a user