diff options
| author | Joshua Peisach <itzswirlz2020@outlook.com> | 2023-09-10 00:27:40 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-09 22:27:40 -0600 |
| commit | b0ca74ff0d78a3ed61d1bc6566cbea388f98a55e (patch) | |
| tree | a0db680bea20d258aab706718c8c5e7887e95d3f /src/audio/external.c | |
| parent | 70207db13b6ba0b6f8c12e4ebc35ed60bbe23372 (diff) | |
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
Diffstat (limited to 'src/audio/external.c')
| -rw-r--r-- | src/audio/external.c | 200 |
1 files changed, 75 insertions, 125 deletions
diff --git a/src/audio/external.c b/src/audio/external.c index b5aae2d95..12bd81950 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -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; - -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; +extern u16 D_800EA1C4; +extern u8 D_801930D0[]; + +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; - -void func_800C8CCC(void) { - s32 temp_t6; - s32 temp_t8; - s32 temp_t9; - s32 var_s0; - s32 var_v0; +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() { + 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) { |
