#include #include #include #include "variables.h" #include "kart_attributes.h" #include "code_80027D00.h" #include "code_8008C1D0.h" // func_80027D00 s32 get_player_index_for_player(Player *player) { s32 index; if (player == gPlayerOne) { index = 0; } if (player == gPlayerTwo) { index = 1; } if (player == gPlayerThree) { index = 2; } if (player == gPlayerFour) { index = 3; } if (player == gPlayerFive) { index = 4; } if (player == gPlayerSix) { index = 5; } if (player == gPlayerSeven) { index = 6; } if (player == gPlayerEight) { index = 7; } return index; } #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_800C94A4(s32, s8, u16 *); // extern ? func_800C9A88(s32, s8, u16 *); // extern extern s32 D_8018D168; void func_80027DA8(u16 *arg0, s8 arg1) { u16 *temp_a2; u16 temp_v0; u16 temp_v0_2; temp_a2 = arg0; if (D_8015F890 != 1) { temp_v0 = *arg0; if ((temp_v0 & 0x10) != 0x10) { if ((D_8018D168 == 1) && ((temp_v0 & 0x4000) == 0x4000) && ((temp_v0 & 0x100) != 0x100)) { arg0 = temp_a2; func_800C94A4(arg1 & 0xFF, arg1, temp_a2); *arg0 = *arg0 | 0x10; return; } if ((temp_v0 & 0x2000) == 0) { arg0 = temp_a2; func_800C9A88(arg1 & 0xFF, arg1, temp_a2); *arg0 = *arg0 | 0x10; return; } // Duplicate return node #14. Try simplifying control flow for better match return; } // Duplicate return node #14. Try simplifying control flow for better match return; } temp_v0_2 = *temp_a2; if ((temp_v0_2 & 0x10) != 0x10) { if ((D_8018D168 == 1) && (temp_a2 == gPlayerOne)) { arg0 = temp_a2; func_800C94A4(arg1 & 0xFF, arg1, temp_a2); *arg0 = *arg0 | 0x10; return; } if ((temp_v0_2 & 0x2000) == 0) { arg0 = temp_a2; func_800C9A88(arg1 & 0xFF, arg1, temp_a2); *arg0 = *arg0 | 0x10; } // Duplicate return node #14. Try simplifying control flow for better match } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80027DA8.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 ? func_800C8F80(s32, ?, s8); /* extern */ ? func_800C9018(s32, ?, s8); /* extern */ ? func_800CA288(s32, ?, s8); /* extern */ ? func_800CA2B8(s32, s8); /* extern */ ? func_800CA2E4(s32, ?, s8); /* extern */ ? func_800CA30C(s32, s8); /* extern */ extern ? D_80164438; extern ? D_80165300; u16 gCurrentCourseId; /* unable to generate initializer */ void func_80027EDC(u16 *arg0, s8 arg1) { s16 *sp1C; s16 *temp_v0_10; s16 *temp_v0_12; s16 *temp_v0_13; s16 *temp_v0_15; s16 *temp_v0_16; s16 *temp_v0_17; s16 *temp_v0_18; s16 *temp_v0_20; s16 *temp_v0_21; s16 *temp_v0_23; s16 *temp_v0_24; s16 *temp_v0_25; s16 *temp_v0_27; s16 *temp_v0_28; s16 *temp_v0_30; s16 *temp_v0_31; s16 *temp_v0_33; s16 *temp_v0_34; s16 *temp_v0_36; s16 *temp_v0_37; s16 *temp_v0_39; s16 *temp_v0_3; s16 *temp_v0_40; s16 *temp_v0_41; s16 *temp_v0_42; s16 *temp_v0_44; s16 *temp_v0_45; s16 *temp_v0_47; s16 *temp_v0_48; s16 *temp_v0_4; s16 *temp_v0_6; s16 *temp_v0_7; s16 *temp_v0_9; s16 temp_a0; s16 temp_v0_11; s16 temp_v0_14; s16 temp_v0_19; s16 temp_v0_22; s16 temp_v0_26; s16 temp_v0_29; s16 temp_v0_2; s16 temp_v0_32; s16 temp_v0_35; s16 temp_v0_38; s16 temp_v0_43; s16 temp_v0_46; s16 temp_v0_5; s16 temp_v0_8; s32 temp_a0_2; s32 temp_t2; s32 temp_t6; s32 temp_v1; s32 temp_v1_10; s32 temp_v1_11; s32 temp_v1_12; s32 temp_v1_13; s32 temp_v1_14; s32 temp_v1_2; s32 temp_v1_3; s32 temp_v1_4; s32 temp_v1_5; s32 temp_v1_6; s32 temp_v1_7; s32 temp_v1_8; s32 temp_v1_9; s8 temp_a2; u16 temp_t5; u16 temp_t9; u16 temp_v0; s16 phi_a0; s8 phi_a2; s16 *phi_v0; temp_v0 = *arg0; temp_a2 = arg1; phi_a2 = temp_a2; if (((temp_v0 & 0x4000) == 0x4000) && ((temp_v0 & 0x100) != 0x100)) { temp_t9 = gCurrentCourseId; switch (temp_t9) { /* switch 1 */ case 0: /* switch 1 */ temp_v1 = temp_a2 * 2; temp_v0_2 = *(&D_80164438 + temp_v1); if ((temp_v0_2 >= 0x19B) && (temp_v0_2 < 0x1B9)) { temp_v0_3 = temp_v1 + &D_80165300; if (*temp_v0_3 != 1) { sp1C = temp_v0_3; func_800CA288(temp_a2 & 0xFF, 0x55, temp_a2); } *(temp_v1 + &D_80165300) = 1; return; } temp_v0_4 = temp_v1 + &D_80165300; if (*temp_v0_4 != 0) { sp1C = temp_v0_4; func_800CA2B8(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_4; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; case 1: /* switch 1 */ temp_v1_2 = temp_a2 * 2; temp_v0_5 = *(&D_80164438 + temp_v1_2); if ((temp_v0_5 >= 0xA0) && (temp_v0_5 < 0xB4)) { temp_v0_6 = temp_v1_2 + &D_80165300; if (*temp_v0_6 != 1) { sp1C = temp_v0_6; func_800CA288(temp_a2 & 0xFF, 0x55, temp_a2); } *(temp_v1_2 + &D_80165300) = 1; return; } temp_v0_7 = temp_v1_2 + &D_80165300; if (*temp_v0_7 != 0) { sp1C = temp_v0_7; func_800CA2B8(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_7; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; case 2: /* switch 1 */ temp_v1_3 = temp_a2 * 2; temp_v0_8 = *(&D_80164438 + temp_v1_3); if ((temp_v0_8 >= 0x29) && (temp_v0_8 < 0x1D2)) { temp_v0_9 = temp_v1_3 + &D_80165300; if (*temp_v0_9 != 1) { sp1C = temp_v0_9; func_800CA288(temp_a2 & 0xFF, 0x41, temp_a2); } *(temp_v1_3 + &D_80165300) = 1; return; } temp_v0_10 = temp_v1_3 + &D_80165300; if (*temp_v0_10 != 0) { sp1C = temp_v0_10; func_800CA2B8(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_10; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; case 3: /* switch 1 */ temp_v1_4 = temp_a2 * 2; temp_v0_11 = *(&D_80164438 + temp_v1_4); if ((temp_v0_11 >= 0x180) && (temp_v0_11 < 0x1E1)) { temp_v0_12 = temp_v1_4 + &D_80165300; if (*temp_v0_12 != 1) { sp1C = temp_v0_12; func_800CA288(temp_a2 & 0xFF, 0x41, temp_a2); } *(temp_v1_4 + &D_80165300) = 1; return; } temp_v0_13 = temp_v1_4 + &D_80165300; if (*temp_v0_13 != 0) { sp1C = temp_v0_13; func_800CA2B8(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_13; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; case 8: /* switch 1 */ temp_v1_5 = temp_a2 * 2; temp_v0_14 = *(&D_80164438 + temp_v1_5); if ((temp_v0_14 >= 0x145) && (temp_v0_14 < 0x18B)) { temp_v0_15 = temp_v1_5 + &D_80165300; if (*temp_v0_15 != 1) { sp1C = temp_v0_15; func_800CA288(temp_a2 & 0xFF, 0x55, temp_a2); } *(temp_v1_5 + &D_80165300) = 1; return; } temp_v0_16 = temp_v1_5 + &D_80165300; if (*temp_v0_16 != 0) { sp1C = temp_v0_16; func_800CA2B8(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_16; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; case 10: /* switch 1 */ if ((temp_v0 & 0x800) != 0x800) { temp_t6 = temp_a2 * 2; temp_v0_17 = temp_t6 + &D_80165300; if (*temp_v0_17 != 1) { sp1C = temp_v0_17; func_800CA288(temp_a2 & 0xFF, 0x1E, temp_a2); } *(temp_t6 + &D_80165300) = 1; return; } temp_v0_18 = (temp_a2 * 2) + &D_80165300; if (*temp_v0_18 != 0) { sp1C = temp_v0_18; func_800CA2B8(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_18; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; case 12: /* switch 1 */ temp_v1_6 = temp_a2 * 2; temp_v0_19 = *(&D_80164438 + temp_v1_6); if ((temp_v0_19 >= 0x11C) && (temp_v0_19 < 0x209)) { temp_v0_20 = temp_v1_6 + &D_80165300; if (*temp_v0_20 != 1) { sp1C = temp_v0_20; func_800CA288(temp_a2 & 0xFF, 0x55, temp_a2); } *(temp_v1_6 + &D_80165300) = 1; return; } temp_v0_21 = temp_v1_6 + &D_80165300; if (*temp_v0_21 != 0) { sp1C = temp_v0_21; func_800CA2B8(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_21; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; case 18: /* switch 1 */ temp_v1_7 = temp_a2 * 2; temp_v0_22 = *(&D_80164438 + temp_v1_7); if (((temp_v0_22 >= 0) && (temp_v0_22 < 0x65)) || ((temp_v0_22 >= 0x14A) && (temp_v0_22 < 0x21F))) { temp_v0_25 = temp_v1_7 + &D_80165300; if (*temp_v0_25 != 2) { sp1C = temp_v0_25; func_800C8F80(temp_a2 & 0xFF, 0x170802D, temp_a2); } *(temp_v1_7 + &D_80165300) = 2; return; } if ((temp_v0_22 >= 0x288) && (temp_v0_22 < 0x305)) { temp_v0_23 = temp_v1_7 + &D_80165300; if (*temp_v0_23 != 1) { sp1C = temp_v0_23; func_800CA288(temp_a2 & 0xFF, 0x55, temp_a2); } *(temp_v1_7 + &D_80165300) = 1; return; } temp_v0_24 = temp_v1_7 + &D_80165300; temp_a0 = *temp_v0_24; phi_a0 = temp_a0; if (temp_a0 != 0) { if (temp_a0 == 1) { temp_a0_2 = temp_a2 & 0xFF; sp1C = temp_v0_24; arg1 = temp_a2; func_800CA2B8(temp_a0_2, temp_a2); phi_a0 = *temp_v0_24; phi_a2 = arg1; } if (phi_a0 == 2) { sp1C = temp_v1_7 + &D_80165300; func_800C9018(phi_a2 & 0xFF, 0x170802D, phi_a2); } phi_v0 = temp_v1_7 + &D_80165300; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; } } else { temp_t5 = gCurrentCourseId; switch (temp_t5) { /* switch 2 */ case 0: /* switch 2 */ temp_v1_8 = temp_a2 * 2; temp_v0_26 = *(&D_80164438 + temp_v1_8); if ((temp_v0_26 >= 0x19B) && (temp_v0_26 < 0x1B9)) { temp_v0_27 = temp_v1_8 + &D_80165300; if (*temp_v0_27 != 1) { sp1C = temp_v0_27; func_800CA2E4(temp_a2 & 0xFF, 0x55, temp_a2); } *(temp_v1_8 + &D_80165300) = 1; return; } temp_v0_28 = temp_v1_8 + &D_80165300; if (*temp_v0_28 != 0) { sp1C = temp_v0_28; func_800CA30C(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_28; block_127: *phi_v0 = 0; } default: /* switch 2 */ default: /* switch 1 */ return; case 1: /* switch 2 */ temp_v1_9 = temp_a2 * 2; temp_v0_29 = *(&D_80164438 + temp_v1_9); if ((temp_v0_29 >= 0xA0) && (temp_v0_29 < 0xB4)) { temp_v0_30 = temp_v1_9 + &D_80165300; if (*temp_v0_30 != 1) { sp1C = temp_v0_30; func_800CA2E4(temp_a2 & 0xFF, 0x55, temp_a2); } *(temp_v1_9 + &D_80165300) = 1; return; } temp_v0_31 = temp_v1_9 + &D_80165300; if (*temp_v0_31 != 0) { sp1C = temp_v0_31; func_800CA30C(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_31; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; case 2: /* switch 2 */ temp_v1_10 = temp_a2 * 2; temp_v0_32 = *(&D_80164438 + temp_v1_10); if ((temp_v0_32 >= 0x29) && (temp_v0_32 < 0x1D2)) { temp_v0_33 = temp_v1_10 + &D_80165300; if (*temp_v0_33 != 1) { sp1C = temp_v0_33; func_800CA2E4(temp_a2 & 0xFF, 0x41, temp_a2); } *(temp_v1_10 + &D_80165300) = 1; return; } temp_v0_34 = temp_v1_10 + &D_80165300; if (*temp_v0_34 != 0) { sp1C = temp_v0_34; func_800CA30C(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_34; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; case 3: /* switch 2 */ temp_v1_11 = temp_a2 * 2; temp_v0_35 = *(&D_80164438 + temp_v1_11); if ((temp_v0_35 >= 0x180) && (temp_v0_35 < 0x1E1)) { temp_v0_36 = temp_v1_11 + &D_80165300; if (*temp_v0_36 != 1) { sp1C = temp_v0_36; func_800CA2E4(temp_a2 & 0xFF, 0x41, temp_a2); } *(temp_v1_11 + &D_80165300) = 1; return; } temp_v0_37 = temp_v1_11 + &D_80165300; if (*temp_v0_37 != 0) { sp1C = temp_v0_37; func_800CA30C(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_37; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; case 8: /* switch 2 */ temp_v1_12 = temp_a2 * 2; temp_v0_38 = *(&D_80164438 + temp_v1_12); if ((temp_v0_38 >= 0x145) && (temp_v0_38 < 0x18B)) { temp_v0_39 = temp_v1_12 + &D_80165300; if (*temp_v0_39 != 1) { sp1C = temp_v0_39; func_800CA2E4(temp_a2 & 0xFF, 0x55, temp_a2); } *(temp_v1_12 + &D_80165300) = 1; return; } temp_v0_40 = temp_v1_12 + &D_80165300; if (*temp_v0_40 != 0) { sp1C = temp_v0_40; func_800CA30C(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_40; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; case 10: /* switch 2 */ if ((temp_v0 & 0x800) != 0x800) { temp_t2 = temp_a2 * 2; temp_v0_41 = temp_t2 + &D_80165300; if (*temp_v0_41 != 1) { sp1C = temp_v0_41; func_800CA2E4(temp_a2 & 0xFF, 0x1E, temp_a2); } *(temp_t2 + &D_80165300) = 1; return; } temp_v0_42 = (temp_a2 * 2) + &D_80165300; if (*temp_v0_42 != 0) { sp1C = temp_v0_42; func_800CA30C(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_42; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; case 12: /* switch 2 */ temp_v1_13 = temp_a2 * 2; temp_v0_43 = *(&D_80164438 + temp_v1_13); if ((temp_v0_43 >= 0x11C) && (temp_v0_43 < 0x209)) { temp_v0_44 = temp_v1_13 + &D_80165300; if (*temp_v0_44 != 1) { sp1C = temp_v0_44; func_800CA2E4(temp_a2 & 0xFF, 0x55, temp_a2); } *(temp_v1_13 + &D_80165300) = 1; return; } temp_v0_45 = temp_v1_13 + &D_80165300; if (*temp_v0_45 != 0) { sp1C = temp_v0_45; func_800CA30C(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_45; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; case 18: /* switch 2 */ temp_v1_14 = temp_a2 * 2; temp_v0_46 = *(&D_80164438 + temp_v1_14); if ((temp_v0_46 >= 0x288) && (temp_v0_46 < 0x305)) { temp_v0_47 = temp_v1_14 + &D_80165300; if (*temp_v0_47 != 1) { sp1C = temp_v0_47; func_800CA2E4(temp_a2 & 0xFF, 0x55, temp_a2); } *(temp_v1_14 + &D_80165300) = 1; return; } temp_v0_48 = temp_v1_14 + &D_80165300; if (*temp_v0_48 != 0) { sp1C = temp_v0_48; func_800CA30C(temp_a2 & 0xFF, temp_a2); phi_v0 = temp_v0_48; goto block_127; } /* Duplicate return node #128. Try simplifying control flow for better match */ return; } } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80027EDC.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? control_cpu_movement(Player *, s32, s8, s8); // extern u16 func_8001FB0C(s32, f32, f32, ?); // extern ? func_8002D028(s8); // extern ? func_8002E594(Player *, s32, s8, s8); // extern ? func_8002F730(Player *, s32, s8, s8); // extern extern ? D_801633F8; void func_80028864(Player *arg0, s32 arg1, s8 arg2, s8 arg3) { u16 sp1E; Player *temp_a0; Player *temp_a0_2; Player *temp_a0_3; Player *temp_a0_4; s16 temp_v0_7; s32 temp_t4; s32 temp_v0_2; u16 temp_v0; u16 temp_v0_3; u16 temp_v0_4; u16 temp_v0_5; u16 temp_v0_6; Player *phi_a0; temp_v0 = arg0->unk_000; phi_a0 = arg0; if ((temp_v0 & PLAYER_START_SEQUENCE) == 0) { temp_v0_2 = gActiveScreenMode; if (temp_v0_2 != 0) { if ((temp_v0_2 != 1) && (temp_v0_2 != 2)) { if (temp_v0_2 != 3) { } else { temp_v0_3 = func_8001FB0C(camera1, D_8016557C, 0.0f); temp_a0 = arg0; sp1E = temp_v0_3; phi_a0 = temp_a0; if (temp_v0_3 == 1) { } else { arg0 = temp_a0; temp_v0_4 = func_8001FB0C(temp_a0, (bitwise f32) camera2, D_8016557C, 0); temp_a0_2 = arg0; sp1E = temp_v0_4; phi_a0 = temp_a0_2; if (temp_v0_4 == 1) { } else { arg0 = temp_a0_2; temp_v0_5 = func_8001FB0C(temp_a0_2, (bitwise f32) camera3, D_8016557C, 0); temp_a0_3 = arg0; sp1E = temp_v0_5; phi_a0 = temp_a0_3; if (temp_v0_5 == 1) { } else { arg0 = temp_a0_3; sp1E = func_8001FB0C(temp_a0_3, (bitwise f32) camera4, D_8016557C, 0); phi_a0 = arg0; } } } goto block_17; } } else { temp_v0_6 = func_8001FB0C(camera1, D_8016557C, 0.0f); temp_a0_4 = arg0; sp1E = temp_v0_6; phi_a0 = temp_a0_4; if (temp_v0_6 == 1) { } else { arg0 = temp_a0_4; sp1E = func_8001FB0C(temp_a0_4, (bitwise f32) camera2, D_8016557C, 0); phi_a0 = arg0; } goto block_17; } } else { sp1E = func_8001FB0C(camera1, D_8016557C, 0.0f); phi_a0 = arg0; block_17: } if ((sp1E == 1) || ((phi_a0->unk_000 & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) || (gModeSelection == BATTLE) || (temp_v0_7 = phi_a0->unk_0CA, ((temp_v0_7 & 2) != 0)) || ((temp_v0_7 & 8) != 0) || (*(&D_801633F8 + (arg2 * 2)) == 1)) { temp_t4 = phi_a0->unk_0BC & ~0x1000; phi_a0->unk_0BC = temp_t4; if (((temp_t4 & 0x80) == 0x80) || ((temp_t4 & 0x40) == 0x40) || ((temp_t4 & 0x400) == 0x400) || ((temp_t4 & 0x4000) == 0x4000) || ((temp_t4 & 0x80000) == 0x80000) || ((temp_t4 & 0x800000) == 0x800000) || ((temp_t4 & 0x1000000) == 0x1000000) || ((temp_t4 & 0x2000000) == 0x2000000) || ((temp_t4 & 0x20000) == 0x20000) || ((phi_a0->unk_044 & 0x800) != 0)) { func_8002E594(phi_a0, arg1, arg3, arg2); return; } func_8002D268(phi_a0, arg1, arg3, arg2); return; } control_cpu_movement(phi_a0, arg1, arg3, arg2); return; } if ((temp_v0 & 0x200) == 0x200) { func_8002D028(arg2); func_8002F730(arg0, arg1, arg3, arg2); return; } if ((temp_v0 & 0x80) != 0) { func_8002D268(arg0, arg1, arg3, arg2); return; } if ((temp_v0 & 0x4000) != 0x4000) { arg0->unk_09C = 50.0f; } arg0->unk_0BC &= -9; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80028864.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_8002E594(s8, s8); // extern void func_80028C44(Player *arg0, s32 arg1, s8 arg2, s8 arg3) { s32 temp_t9; if ((arg0->unk_000 & 0x2000) == 0) { temp_t9 = arg0->unk_0BC & ~0x1000; arg0->unk_0BC = temp_t9; if (((temp_t9 & 0x80) == 0x80) || ((temp_t9 & 0x40) == 0x40) || ((temp_t9 & 0x400) == 0x400) || ((temp_t9 & 0x4000) == 0x4000) || ((temp_t9 & 0x80000) == 0x80000) || ((temp_t9 & 0x800000) == 0x800000) || ((temp_t9 & 0x1000000) == 0x1000000) || ((temp_t9 & 0x2000000) == 0x2000000) || ((temp_t9 & 0x20000) == 0x20000) || ((arg0->unk_044 & 0x800) != 0)) { func_8002E594(arg3, arg2); return; } func_8002D268(arg0, arg1, arg3, arg2); return; } arg0->unk_0BC &= -9; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80028C44.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_8002E594(s8, s8); // extern extern s32 D_800DC510; void func_80028D3C(Player *arg0, s32 arg1, s8 arg2, s8 arg3) { s16 temp_v0; s32 temp_t3; s32 temp_v0_2; if ((((arg0->unk_000 & 0x2000) == 0) && (D_800DC510 != 5)) || (temp_v0 = arg0->unk_0CA, ((temp_v0 & 2) != 0)) || ((temp_v0 & 8) != 0) || (temp_v0_2 = arg0->unk_0BC, ((temp_v0_2 & 0x4F010CC0) != 0))) { temp_t3 = arg0->unk_0BC & ~0x1000; arg0->unk_0BC = temp_t3; if (((temp_t3 & 0x80) == 0x80) || ((temp_t3 & 0x40) == 0x40) || ((temp_t3 & 0x400) == 0x400) || ((temp_t3 & 0x4000) == 0x4000) || ((temp_t3 & 0x80000) == 0x80000) || ((temp_t3 & 0x800000) == 0x800000) || ((temp_t3 & 0x1000000) == 0x1000000) || ((temp_t3 & 0x2000000) == 0x2000000) || ((temp_t3 & 0x20000) == 0x20000) || ((arg0->unk_044 & 0x800) != 0)) { func_8002E594(arg3, arg2); return; } func_8002D268(arg0, arg1, arg3, arg2); return; } arg0->unk_0BC = temp_v0_2 & ~8; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80028D3C.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_80027DA8(s8); // extern ? func_80028864(void *, s32, s8, s8); // extern ? func_80028C44(void *, s32, s8, s8); // extern ? func_80028D3C(void *, s32, s8, s8); // extern ? func_80038C6C(s8, s8); // extern void func_80028E70(void *arg0, s32 arg1, s8 arg2, s8 arg3) { s32 temp_v0_2; u16 temp_v0; temp_v0 = arg0->unk0; if ((temp_v0 & 0x8000) == 0x8000) { if (D_800DC50C == ENDING_SEQUENCE) { if ((temp_v0 & 0x2000) == 0) { func_80038C6C(arg3, arg2); return; } arg0->unkBC = arg0->unkBC & ~8; return; } func_80027DA8(arg2); temp_v0_2 = gModeSelection; if ((temp_v0_2 != TIME_TRIALS) && (temp_v0_2 != VERSUS)) { if (temp_v0_2 != BATTLE) { func_80028864(arg0, arg1, arg2, arg3); // Duplicate return node #12. Try simplifying control flow for better match return; } func_80028D3C(arg0, arg1, arg2, arg3); return; } func_80028C44(arg0, arg1, arg2, arg3); } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80028E70.s") #endif void func_80028F70(void) { D_80164AF0 = 0; func_80028E70(gPlayerOneCopy, camera1, 0, 0); func_80028E70(gPlayerTwo, camera1, 1, 0); func_80028E70(gPlayerThree, camera1, 2, 0); func_80028E70(gPlayerFour, camera1, 3, 0); func_80028E70(gPlayerFive, camera1, 4, 0); func_80028E70(gPlayerSix, camera1, 5, 0); func_80028E70(gPlayerSeven, camera1, 6, 0); func_80028E70(gPlayerEight, camera1, 7, 0); } void func_80029060(void) { D_80164AF0 = 0; func_80028E70(gPlayerOneCopy, camera1, 0, 0); func_80028E70(gPlayerTwo, camera1, 1, 0); func_80028E70(gPlayerThree, camera1, 2, 0); func_80028E70(gPlayerFour, camera1, 3, 0); func_80028E70(gPlayerFive, camera1, 4, 0); func_80028E70(gPlayerSix, camera1, 5, 0); func_80028E70(gPlayerSeven, camera1, 6, 0); func_80028E70(gPlayerEight, camera1, 7, 0); } void func_80029150(void) { } void func_80029158(void) { D_80164AF0 = 0; func_80028E70(gPlayerOneCopy, camera1, 0, 0); func_80028E70(gPlayerTwo, camera1, 1, 0); func_80028E70(gPlayerThree, camera1, 2, 0); func_80028E70(gPlayerFour, camera1, 3, 0); } void func_800291E8(void) { } void func_800291F0(void) { } void func_800291F8(void) { } void func_80029200(Player *player, s8 arg1) { if ((s32) player->unk_0C4 < -0x71B) { player->unk_24C[arg1] = 0; } if (((s32) player->unk_0C4 < -0x4F9) && ((s32) player->unk_0C4 >= -0x71B)) { player->unk_24C[arg1] = 1; } if ((player->unk_0C4 < -0x221) && (player->unk_0C4 >= -0x4F9)) { player->unk_24C[arg1] = 2; } if ((player->unk_0C4 < -0x16B) && (player->unk_0C4 >= -0x221)) { player->unk_24C[arg1] = 3; } if ((player->unk_0C4 < 0x16C) && (player->unk_0C4 >= -0x16B)) { player->unk_24C[arg1] = 4; } if ((player->unk_0C4 >= 0x16C) && (player->unk_0C4 < 0x222)) { player->unk_24C[arg1] = 5; } if ((player->unk_0C4 >= 0x222) && (player->unk_0C4 < 0x4FA)) { player->unk_24C[arg1] = 6; } if ((player->unk_0C4 >= 0x4FA) && (player->unk_0C4 < 0x71C)) { player->unk_24C[arg1] = 7; } if (player->unk_0C4 >= 0x71C) { player->unk_24C[arg1] = 8; } } #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? move_s16_towards(void *, s16, ?, void *); // extern ? func_80029200(Player *, s8); // extern s16 func_802B7830(f32, f32); // extern s32 func_802B7C40(f32, s32); // extern f32 sins(s32); // extern f32 coss(s32); // extern extern ? D_800DDBD4; extern f64 D_800ED788; extern f64 D_800ED790; void func_8002934C(Player *player, s32 arg1, s8 arg2, s8 arg3) { f32 sp50; f32 sp28; void *sp24; s32 sp20; f32 temp_f0; f32 temp_f2; f32 temp_f4; f32 temp_f6; s16 *temp_a1; s16 *temp_v0_3; s16 temp_t8; s16 temp_v1_6; s32 temp_a0; s32 temp_a0_3; s32 temp_a2; s32 temp_a2_2; s32 temp_t3; s32 temp_t6; s32 temp_t6_3; s32 temp_t7; s32 temp_t7_2; s32 temp_t9; s32 temp_t9_2; s32 temp_v0_2; s32 temp_v1; s32 temp_v1_2; s32 temp_v1_3; s32 temp_v1_4; s32 temp_v1_5; s32 temp_v1_7; u16 temp_a0_2; u16 temp_t6_2; u16 temp_v0; void *temp_a3; void *phi_a3; s32 phi_v1; f32 phi_f2; f32 phi_f0; s32 phi_a0; s32 phi_t1; s32 phi_v0; s32 phi_a2; s32 phi_v1_2; s32 phi_t2; s32 phi_a1; s32 phi_v0_2; s32 phi_t0; s16 phi_v1_3; s32 phi_a2_2; s32 phi_v0_3; temp_t7 = arg2 * 2; temp_a3 = player + temp_t7; temp_a3->unk48 = func_802B7830(player->posX - arg1->unk0, player->posZ - arg1->unk8); player->unk_244[arg2] = ((player->unk_02E + temp_a3->unk48 + player->unk_0C0) & 0xFFFF) / 0x80; temp_f6 = player->unk_224; temp_v1 = player->unk_0BC; temp_f4 = D_800DDBD4[player->characterId] * 18.0f; temp_f0 = player->unk_230 - player->unk_23C; temp_f2 = temp_f4 * temp_f6; phi_a3 = temp_a3; phi_f2 = temp_f2; if ((temp_v1 & 8) != 8) { if ((temp_v1 & 0x40000000) == 0x40000000) { sp24 = temp_a3; sp50 = temp_f2; temp_a3->unkCC = func_802B7C40(temp_f0 / temp_f2) * D_800ED788; } else { sp24 = temp_a3; sp50 = temp_f2; temp_a3->unkCC = func_802B7C40(temp_f0 / temp_f2) * 2; } phi_a3 = player + temp_t7; phi_f2 = temp_f4 * temp_f6; } phi_v1 = player->unk_0BC; if ((player->unk_0BC & 0x4000000) == 0x4000000) { phi_a3->unkCC = player->unk_D9C; phi_v1 = player->unk_0BC; } if ((phi_v1 & 8) != 8) { sp24 = phi_a3; phi_a3->unkD4 = func_802B7C40((player->unk_1F8 - player->unk_1FC) / phi_f2, 0x4000000) * D_800ED790; } else { temp_v0 = phi_a3->unk244; if ((temp_v0 >= 0) && (temp_v0 < 0x101)) { phi_f0 = player->rotY - player->pos[1]; } else { phi_f0 = player->pos[1] - player->rotY; } sp24 = phi_a3; phi_a3->unkD4 = func_802B7C40(phi_f0 / phi_f2, 0x4000000) * 0.5; } if ((player->unk_0BC & 0x4000000) == 0x4000000) { phi_a3->unkD4 = player->unk_D9C; } sp24 = phi_a3; func_80029200(player, arg2); temp_a0 = (player->unk_02E + phi_a3->unk48 + player->unk_0C0) & 0xFFFF; sp20 = temp_a0; sp28 = sins(temp_a0); move_s16_towards(phi_a3 + 0x50, (coss(temp_a0) * phi_a3->unkCC) + (phi_a3->unkD4 * sp28), 0x3F000000, phi_a3); temp_a0_2 = phi_a3->unk244; temp_t3 = arg2 * 4; temp_v1_2 = 4 << temp_t3; temp_t8 = player->unk_002 & ~temp_v1_2; player->unk_002 = temp_t8; phi_a0 = temp_a0_2; if (temp_a0_2 >= 0x101) { player->unk_002 = temp_t8 | temp_v1_2; phi_a0 = (0x201 - temp_a0_2) & 0xFFFF; } temp_v1_3 = player->unk_0BC; if (((temp_v1_3 & 0x80) != 0x80) && (phi_t1 = 0x80000, ((temp_v1_3 & 0x40) != 0x40)) && (temp_v0_2 = temp_v1_3 & 0x80000, phi_v0 = temp_v0_2, phi_a2 = 0x800000, phi_v0 = temp_v0_2, (temp_v0_2 != 0x80000)) && (phi_t2 = 0x20000, ((temp_v1_3 & 0x800000) != 0x800000)) && ((temp_v1_3 & 0x20000) != 0x20000) && ((player->unk_044 & 0x800) == 0)) { phi_a1 = 0x666; if (phi_a0 < 0x51) { phi_a1 = 0x208; goto block_28; } phi_t0 = 0xF; } else { phi_v0 = temp_v1_3 & 0x80000; phi_a1 = 0x666; block_28: phi_t1 = 0x80000; phi_a2 = 0x800000; phi_t2 = 0x20000; phi_t0 = 0; } if ((phi_t1 == phi_v0) || (phi_a2 == (temp_v1_3 & phi_a2)) || ((player->unk_044 & 0x800) != 0)) { phi_a3->unk50 = 0; } phi_v1_2 = player->unk_0BC; if (((player->unk_0BC & 8) == 8) && ((player->unk_0CA & 2) == 2)) { phi_a3->unk50 = 0; phi_v1_2 = player->unk_0BC; } temp_t9 = (player->unk_02E + phi_a3->unk48 + player->unk_0C0) & 0xFFFF; if (((phi_v1_2 & 0x80) == 0x80) || ((phi_v1_2 & 0x40) == 0x40) || (phi_t1 == (phi_v1_2 & phi_t1)) || (phi_a2 == (phi_v1_2 & phi_a2)) || (phi_t2 == (phi_v1_2 & phi_t2)) || ((player->unk_044 & 0x800) != 0)) { if (temp_t9 >= 0x7FF9) { temp_t6 = ((-temp_t9 & 0xFFFF) / phi_a1) & 0xFFFF; phi_v0_2 = temp_t6; if (temp_t6 == 0) { phi_v0_2 = 1; } } else { phi_v0_2 = (temp_t9 / phi_a1) & 0xFFFF; } } else { phi_v0_3 = temp_t9; if (temp_t9 >= 0x7FF9) { phi_v0_3 = -temp_t9 & 0xFFFF; } phi_v0_2 = (phi_v0_3 / phi_a1) & 0xFFFF; } temp_t6_2 = phi_v0_2 + phi_t0; phi_a3->unk244 = temp_t6_2; if ((temp_t6_2 & 0xFFFF) >= 0x23) { phi_a3->unk244 = 0x22; } temp_v1_4 = player->unk_0BC; if ((((temp_v1_4 & 0x80) != 0) || ((temp_v1_4 & 0x40) != 0) || ((temp_v1_4 & phi_t1) != 0) || ((temp_v1_4 & phi_a2) != 0) || ((temp_v1_4 & phi_t2) != 0) || ((player->unk_044 & 0x800) != 0)) && (phi_a3->unk244 >= 0x14)) { phi_a3->unk244 = 0; } if (phi_a3->unk24C >= 9) { phi_a3->unk24C = 4; } temp_v1_5 = player->unk_0BC; if ((phi_t1 == (temp_v1_5 & phi_t1)) || (phi_a2 == (temp_v1_5 & phi_a2)) || ((player->unk_044 & 0x800) != 0)) { phi_a3->unk24C = 4; } if (((player->unk_0BC & 0x400) == 0x400) || ((player->unk_0BC & 0x1000000) == 0x1000000) || ((player->unk_0BC & 0x2000000) == 0x2000000) || ((player->unk_0BC << 0xF) < 0) || ((player->unk_0BC & 0x80) != 0) || ((player->unk_0BC & 0x40) != 0)) { temp_a2_2 = 1 << temp_t3; player->unk_002 = player->unk_002 | temp_a2_2; temp_t9_2 = arg3 * 2; temp_v0_3 = (arg2 * 0x10) + temp_t9_2 + D_80165190; *temp_v0_3 = 1; temp_v1_7 = player->unk_0BC; phi_a2_2 = temp_a2_2; if (((temp_v1_7 & 0x80) != 0) || ((temp_v1_7 & 0x40) != 0)) { if ((phi_a3->unk244 == *(D_801650D0 + ((arg2 * 0x10) + temp_t9_2))) && (phi_a3->unk24C == *(D_80165110 + ((arg2 * 0x10) + temp_t9_2)))) { player->unk_002 = player->unk_002 & ~temp_a2_2; *temp_v0_3 = 1; } } else if ((player->unk_0A8 >> 8) == (*(D_80165150 + ((arg2 * 0x10) + temp_t9_2)) >> 8)) { player->unk_002 = player->unk_002 & ~temp_a2_2; } phi_v1_3 = *(D_801650D0 + ((arg2 * 0x10) + temp_t9_2)); } else { temp_a2 = 1 << temp_t3; player->unk_002 = player->unk_002 | temp_a2; temp_t6_3 = arg3 * 2; temp_t7_2 = arg2 * 0x10; temp_a1 = temp_t7_2 + temp_t6_3 + D_801650D0; temp_v1_6 = *temp_a1; phi_v1_3 = temp_v1_6; phi_a2_2 = temp_a2; if ((phi_a3->unk244 == temp_v1_6) && (phi_a3->unk24C == *(D_80165110 + (temp_t7_2 + temp_t6_3))) && (*(D_80165190 + (temp_t7_2 + temp_t6_3)) == 0)) { player->unk_002 = player->unk_002 & ~temp_a2; phi_v1_3 = *temp_a1; } } temp_a0_3 = phi_v1_3 - phi_a3->unk244; if ((temp_a0_3 >= 0x14) || (temp_a0_3 < -0x13)) { player->unk_002 = player->unk_002 | phi_a2_2; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002934C.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 792017ad9d422c2467bd42686f383a5c41f41c75 s32 func_802ABD10(u16); /* extern */ ? func_802AFA34(Player *, kartBoundingBoxCorner *, f32, f32, f32); /* extern */ ? func_802B63B8(f32, f32 *, f32 *, f32 *); /* extern */ ? func_802B6540(f32, f32 *, ?, ?, ?, s32); /* extern */ s32 func_802B7C40(f32); /* extern */ ? move_f32_towards(f32 *, f32, ?); /* extern */ ? move_s16_towards(s16 *, s16, ?); /* extern */ static f32 D_800DDBD4[8] = { 0.75f, 0.75f, 0.75f, 0.75f, 0.75f, 0.75f, 0.75f, 0.75f }; void func_80029B4C(Player *player, f32 arg1, f32 arg2, f32 arg3) { f32 sp94; f32 sp90; f32 sp8C; f32 sp88; f32 sp84; f32 sp80; f32 sp5C; f32 sp54; f32 sp50; f32 sp48; f32 sp40; f64 sp38; f32 sp34; f64 sp28; f32 *temp_a0; f32 *temp_a0_2; f32 *temp_a0_3; f32 *temp_a0_4; f32 temp_f0_2; f32 temp_f12; f32 temp_f14; f32 temp_f2; f32 temp_f2_3; f64 temp_f0; f64 temp_f2_2; s16 temp_t5; s32 temp_t2; s32 temp_v0; s32 temp_v0_2; s32 temp_v0_3; s32 temp_v1; f32 phi_f12; s32 phi_v0; s16 phi_a1; s32 phi_v1; if ((player->unk_0BC & 0x40000000) == 0x40000000) { phi_f12 = (f32) ((f64) (D_800DDBD4[player->characterId] / 2.0f) * ((f64) player->unk_224 * 1.5) * 18.0); } else { phi_f12 = (D_800DDBD4[player->characterId] / 2.0f) * 18.0f; } sp48 = phi_f12; func_802B6540(phi_f12, &sp5C, 0, 0x3F800000, 0, player->unk_02E + player->unk_0C0); temp_f0 = (f64) sp48; temp_a0 = &sp8C; temp_f2 = sp48 - 2.0f; sp8C = (f32) (temp_f0 - 3.6); sp38 = temp_f0; sp94 = temp_f2; sp40 = temp_f2; sp90 = -player->boundingBoxSize; func_802B63B8(sp48, temp_a0, &sp5C); sp80 = player->boundingBoxCorners[0].cornerX; sp84 = player->boundingBoxCorners[0].cornerY; sp88 = player->boundingBoxCorners[0].cornerZ; player->boundingBoxCorners[0].cornerX = sp8C + player->pos[0]; player->boundingBoxCorners[0].cornerY = sp90 + player->pos[1]; player->boundingBoxCorners[0].cornerZ = sp94 + player->pos[2]; func_802AFA34(player, player->boundingBoxCorners, sp80, sp84, sp88); temp_f14 = -sp48; temp_f2_2 = (f64) temp_f14; temp_a0_2 = &sp8C; sp8C = (f32) (temp_f2_2 + 3.6); sp34 = temp_f14; sp28 = temp_f2_2; sp94 = sp40; sp90 = -player->boundingBoxSize; func_802B63B8(sp48, (bitwise f32 *) temp_f14, temp_a0_2, &sp5C); sp80 = player->boundingBoxCorners[1].cornerX; sp84 = player->boundingBoxCorners[1].cornerY; sp88 = player->boundingBoxCorners[1].cornerZ; player->boundingBoxCorners[1].cornerX = sp8C + player->pos[0]; player->boundingBoxCorners[1].cornerY = sp90 + player->pos[1]; player->boundingBoxCorners[1].cornerZ = sp94 + player->pos[2]; func_802AFA34(player, &player->boundingBoxCorners[1], sp80, sp84, sp88); temp_a0_3 = &sp8C; temp_f12 = sp34 + 4.0f; sp8C = (f32) (sp38 - 2.6); sp94 = temp_f12; sp40 = temp_f12; sp90 = -player->boundingBoxSize; func_802B63B8(temp_f12, temp_a0_3, &sp5C); sp80 = player->boundingBoxCorners[2].cornerX; sp84 = player->boundingBoxCorners[2].cornerY; sp88 = player->boundingBoxCorners[2].cornerZ; player->boundingBoxCorners[2].cornerX = sp8C + player->pos[0]; player->boundingBoxCorners[2].cornerY = sp90 + player->pos[1]; player->boundingBoxCorners[2].cornerZ = sp94 + player->pos[2]; func_802AFA34(player, &player->boundingBoxCorners[2], sp80, sp84, sp88); temp_a0_4 = &sp8C; sp8C = (f32) (sp28 + 2.6); sp94 = sp40; sp90 = -player->boundingBoxSize; func_802B63B8((bitwise f32) temp_a0_4, &sp5C); sp80 = player->boundingBoxCorners[3].cornerX; sp84 = player->boundingBoxCorners[3].cornerY; sp88 = player->boundingBoxCorners[3].cornerZ; player->boundingBoxCorners[3].cornerX = sp8C + player->pos[0]; player->boundingBoxCorners[3].cornerY = sp90 + player->pos[1]; player->boundingBoxCorners[3].cornerZ = sp94 + player->pos[2]; func_802AFA34(player, &player->boundingBoxCorners[3], sp80, sp84, sp88); if ((player->unk_0BC & 8) == 0) { move_f32_towards(&player->unk_230, (player->boundingBoxCorners[0].cornerGroundY + player->boundingBoxCorners[2].cornerGroundY) / 2.0f, 0.5f); move_f32_towards(&player->unk_23C, (player->boundingBoxCorners[1].cornerGroundY + player->boundingBoxCorners[3].cornerGroundY) / 2.0f, 0.5f); move_f32_towards(&player->unk_1FC, (player->boundingBoxCorners[0].cornerGroundY + player->boundingBoxCorners[1].cornerGroundY) / 2.0f, 0.5f); move_f32_towards(&player->unk_1F8, (player->boundingBoxCorners[2].cornerGroundY + player->boundingBoxCorners[3].cornerGroundY) / 2.0f, 0.5f); } temp_f2_3 = ((D_800DDBD4[player->characterId] * 18.0f) + 1.0f) * player->unk_224; sp50 = temp_f2_3; player->unk_206 = (s16) -func_802B7C40((player->unk_23C - player->unk_230) / temp_f2_3); if (((player->unk_0CA & 2) == 2) || (temp_t2 = player->unk_0BC & 8, phi_v0 = temp_t2, (temp_t2 != 0))) { player->unk_206 = 0; phi_v0 = player->unk_0BC & 8; } if (phi_v0 != 8) { move_s16_towards(&player->unk_0C4, func_802B7C40((player->unk_1F8 - player->unk_1FC) / temp_f2_3), 0x3F000000); } else { temp_f0_2 = player->rotY - arg2; sp54 = temp_f0_2; temp_v0 = func_802B7C40(temp_f0_2 / temp_f2_3); phi_a1 = (s16) (temp_v0 * 0xA); if (temp_f0_2 >= 0.0f) { phi_a1 = (s16) (temp_v0 / 4); } move_s16_towards(&player->unk_0C4, phi_a1, 0x3F000000); } if (((player->unk_0BC & 8) == 8) && ((player->unk_0CA & 2) == 2)) { player->unk_0C4 = (s16) (s32) player->unk_D9C; } temp_t5 = func_802ABD10((u16) player->unk_11A) & 0xFF; temp_v1 = temp_t5 & 0xFFFF; player->unkF8 = temp_t5; phi_v1 = temp_v1; if (temp_v1 == 0xFE) { temp_v0_2 = player->unk_0BC; phi_v1 = temp_v1; if ((temp_v0_2 & 0x100000) != 0x100000) { phi_v1 = temp_v1; if ((temp_v0_2 & 8) != 8) { player->unk_00C |= 0x800000; phi_v1 = temp_t5 & 0xFFFF; } } } if (phi_v1 == 0xFC) { temp_v0_3 = player->unk_0BC; if (((temp_v0_3 & 4) != 4) && ((temp_v0_3 & 8) != 8)) { player->unk_00C |= 0x8000; } } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80029B4C.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 792017ad9d422c2467bd42686f383a5c41f41c75 s32 func_802ABD10(u16); /* extern */ s32 func_802ABD7C(u16); /* extern */ f32 func_802ABE30(f32, f32, f32, u16); /* extern */ s32 func_802B7C40(f32); /* extern */ ? move_s16_towards(s16 *, s16, ?); /* extern */ static f32 D_800DDBD4[8] = { 0.75f, 0.75f, 0.75f, 0.75f, 0.75f, 0.75f, 0.75f, 0.75f }; void func_8002A194(Player *player, f32 arg1, f32 arg2, f32 arg3) { s16 sp3A; f32 sp30; s32 sp28; f32 temp_f0; f32 temp_f0_2; f32 temp_f12; f32 temp_f12_2; f32 temp_f12_3; f32 temp_f12_4; f32 temp_f14; f32 temp_f20; f32 temp_f2; s16 temp_v1; s32 temp_t0; s32 temp_t7; s32 temp_t8; s32 temp_t9; s32 temp_v0; s32 temp_v0_2; s32 temp_v0_3; u16 temp_v1_2; f32 phi_f20; s16 phi_a1; temp_v1 = -(s32) player->unk_02E - player->unk_0C0; if ((player->unk_0BC & 0x40000000) == 0x40000000) { phi_f20 = (f32) (((f64) ((D_800DDBD4[player->characterId] * 18.0f) / 2.0f) * ((f64) player->unk_224 * 1.5)) - 1.0); } else { phi_f20 = (((D_800DDBD4[player->characterId] * 18.0f) / 2.0f) * player->unk_224) - 1.0f; } temp_t7 = (temp_v1 + 0x2000) & 0xFFFF; sp28 = temp_t7; sp3A = temp_v1; player->boundingBoxCorners[0].cornerZ = (coss((u16) temp_t7) * phi_f20) + arg3; temp_f12 = (sins((u16) sp28) * phi_f20) + arg1; player->boundingBoxCorners[0].cornerX = temp_f12; player->boundingBoxCorners[0].cornerGroundY = func_802ABE30(temp_f12, arg2, player->boundingBoxCorners[0].cornerZ, (u16) player->unk_11A); temp_t8 = (sp3A - 0x2000) & 0xFFFF; sp28 = temp_t8; player->boundingBoxCorners[1].cornerZ = (coss((u16) temp_t8) * phi_f20) + arg3; temp_f12_2 = (sins((u16) sp28) * phi_f20) + arg1; player->boundingBoxCorners[1].cornerX = temp_f12_2; player->boundingBoxCorners[1].cornerGroundY = func_802ABE30(temp_f12_2, arg2, player->boundingBoxCorners[1].cornerZ, (u16) player->unk_11A); temp_t9 = (sp3A + 0x6000) & 0xFFFF; sp28 = temp_t9; player->boundingBoxCorners[2].cornerZ = (coss((u16) temp_t9) * phi_f20) + arg3; temp_f12_3 = (sins((u16) sp28) * phi_f20) + arg1; player->boundingBoxCorners[2].cornerX = temp_f12_3; player->boundingBoxCorners[2].cornerGroundY = func_802ABE30(temp_f12_3, arg2, player->boundingBoxCorners[2].cornerZ, (u16) player->unk_11A); temp_t0 = (sp3A - 0x6000) & 0xFFFF; sp28 = temp_t0; player->boundingBoxCorners[3].cornerZ = (coss((u16) temp_t0) * phi_f20) + arg3; player->boundingBoxCorners[3].cornerX = (sins((u16) sp28) * phi_f20) + arg1; player->boundingBoxCorners[3].cornerGroundY = func_802ABE30(player->boundingBoxCorners[2].cornerX, arg2, player->boundingBoxCorners[2].cornerZ, (u16) player->unk_11A); if ((player->unk_0BC & 8) != 8) { temp_f0 = player->boundingBoxCorners[0].cornerGroundY; temp_f2 = player->boundingBoxCorners[2].cornerGroundY; temp_f12_4 = player->boundingBoxCorners[1].cornerGroundY; temp_f14 = player->boundingBoxCorners[3].cornerGroundY; player->unk_230 = (temp_f0 + temp_f2) / 2.0f; player->unk_23C = (temp_f12_4 + temp_f14) / 2.0f; player->unk_1FC = (temp_f0 + temp_f12_4) / 2.0f; player->unk_1F8 = (temp_f2 + temp_f14) / 2.0f; } temp_v1_2 = func_802ABD10((u16) player->unk_11A) & 0xFF; player->unkF8 = temp_v1_2; player->boundingBoxCorners[3].surfaceType = (u8) temp_v1_2; player->boundingBoxCorners[2].surfaceType = (u8) temp_v1_2; player->boundingBoxCorners[1].surfaceType = (u8) temp_v1_2; player->boundingBoxCorners[0].surfaceType = (u8) temp_v1_2; temp_f20 = (D_800DDBD4[player->characterId] * 18.0f) + 1.0f; player->unk_206 = (s16) -func_802B7C40((player->unk_23C - player->unk_230) / temp_f20); if ((player->unk_0BC & 8) != 8) { move_s16_towards(&player->unk_0C4, func_802B7C40((player->unk_1F8 - player->unk_1FC) / temp_f20), 0x3F000000); } else { temp_f0_2 = player->rotY - arg2; sp30 = temp_f0_2; temp_v0 = func_802B7C40(temp_f0_2 / temp_f20); phi_a1 = (s16) (temp_v0 * 0xA); if (temp_f0_2 >= 0.0f) { phi_a1 = (s16) (temp_v0 * 2); } move_s16_towards(&player->unk_0C4, phi_a1, 0x3F000000); } if (func_802ABD7C((u16) player->unk_11A) != 0) { player->boundingBoxCorners[3].unk_14 |= 1; } else { player->boundingBoxCorners[3].unk_14 &= -2; } if (player->unkF8 == 0xFE) { temp_v0_2 = player->unk_0BC; if (((temp_v0_2 & 0x100000) != 0x100000) && ((temp_v0_2 & 8) != 8)) { player->unk_00C |= 0x800000; } } if (player->unkF8 == 0xFC) { temp_v0_3 = player->unk_0BC; if (((temp_v0_3 & 4) != 4) && ((temp_v0_3 & 8) != 8)) { player->unk_00C |= 0x8000; } } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002A194.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_8002A5F4(void *arg0, f32 arg1, void *arg2, f32 arg3, f32 arg4) { f32 temp_f0; f32 temp_f12; f32 temp_f14; f32 temp_f16; f32 temp_f18; f32 temp_f20; f32 temp_f20_2; f32 temp_f2; temp_f0 = arg2->unk0; temp_f2 = arg2->unk4; temp_f12 = arg2->unk8; temp_f14 = -arg0->unk0; temp_f16 = -arg0->unk4; temp_f18 = -arg0->unk8; if (arg1 < -arg4) { temp_f20 = (temp_f14 * temp_f0) + (temp_f16 * temp_f2) + (temp_f18 * temp_f12); arg2->unk0 = (temp_f0 - (temp_f20 * temp_f14)) - (temp_f20 * temp_f14 * arg3); arg2->unk4 = (temp_f2 - (temp_f20 * temp_f16)) - (temp_f20 * temp_f16 * arg3); arg2->unk8 = (temp_f12 - (temp_f20 * temp_f18)) - (temp_f20 * temp_f18 * arg3); return; } temp_f20_2 = (temp_f14 * temp_f0) + (temp_f16 * temp_f2) + (temp_f18 * temp_f12); arg2->unk0 = temp_f0 - (temp_f20_2 * temp_f14); arg2->unk4 = temp_f2 - (temp_f20_2 * temp_f16); arg2->unk8 = temp_f12 - (temp_f20_2 * temp_f18); } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002A5F4.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_800C9060(u8, ?); // extern ? func_800C90F4(?, s32, void *); // extern void func_8002A704(void *arg0, u8 arg1) { s32 temp_a1; u16 temp_v0; void *temp_a2; void *phi_a2; temp_v0 = arg0->unk0; temp_a2 = arg0; arg0->unkBC = arg0->unkBC | 0x2000; arg0->unkC = arg0->unkC & 0xFDFFFFFF; phi_a2 = temp_a2; if (((temp_v0 & 0x4000) == 0x4000) && ((temp_v0 & 0x100) != 0x100)) { temp_a1 = (temp_a2->unk254 * 0x10) + 0x29008001; arg0 = temp_a2; func_800C90F4(0, temp_a1, temp_a2); func_800C9060(arg1, 0x1900A40B); phi_a2 = arg0; } phi_a2->unkDC = 0x50; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002A704.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_800C9250(s32, s8, s32); // extern void func_8002A79C(void *arg0, s8 arg1) { s32 temp_v0; s32 temp_v1; u16 temp_v0_2; temp_v0 = arg0->unkBC; temp_v1 = temp_v0 & 0x100; if ((temp_v1 != 0x100) && ((temp_v0 & 0x10) != 0x10) && (arg0->unk22A >= 2)) { arg0->unkBC = temp_v0 | 0x100; arg0->unk23A = 0; arg0->unk22A = 0; arg0->unk228 = 0; if (D_8015F890 != 1) { temp_v0_2 = arg0->unk0; if (((temp_v0_2 & 0x4000) != 0) && ((temp_v0_2 & 0x100) == 0)) { func_800C9250(arg1 & 0xFF, arg1, 0x100); return; } // Duplicate return node #12. Try simplifying control flow for better match return; } if (arg0 == gPlayerOne) { func_800C9250(arg1 & 0xFF, arg1, 0x100); return; } // Duplicate return node #12. Try simplifying control flow for better match return; } if (temp_v1 == 0x100) { arg0->unk23A = arg0->unk23A + 1; if (arg0->unk23A >= 0x1F) { arg0->unk23A = 0; arg0->unkBC = arg0->unkBC & ~0x100; arg0->unk22A = 0; arg0->unk228 = 0; } } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002A79C.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_800C9060(s32, ?, s8); // extern void func_8002A8A4(void *arg0, s8 arg1) { s16 temp_v0; s16 temp_v0_2; s16 temp_v0_3; s16 temp_v0_4; s16 temp_v1; s16 temp_v1_2; if ((arg0->unkC0 / 0xB6) > 0) { if ((arg0->unk7C >> 0x10) < -9) { temp_v0 = arg0->unk228; if (temp_v0 < 0x65) { arg0->unk228 = temp_v0 + 1; } if ((arg0->unk228 == 0x64) && ((arg0->unk0 & 0x4000) != 0)) { func_800C9060(arg1 & 0xFF, 0x1900851E, arg1); return; } // Duplicate return node #30. Try simplifying control flow for better match return; } temp_v0_2 = arg0->unk228; if ((temp_v0_2 >= 0x12) && (temp_v0_2 < 0x64)) { temp_v1 = arg0->unk22A; if (temp_v1 < 3) { arg0->unk22A = temp_v1 + 1; } } if ((arg0->unk228 >= 0xA) && (arg0->unk228 < 0x64)) { arg0->unk228 = 0xA; return; } arg0->unk228 = 0; goto block_29; } if ((arg0->unk7C >> 0x10) >= 0xA) { temp_v0_3 = arg0->unk228; if (temp_v0_3 < 0x65) { arg0->unk228 = temp_v0_3 + 1; } if ((arg0->unk228 == 0x64) && ((arg0->unk0 & 0x4000) != 0)) { func_800C9060(arg1 & 0xFF, 0x1900851E, arg1); return; } // Duplicate return node #30. Try simplifying control flow for better match return; } temp_v0_4 = arg0->unk228; if ((temp_v0_4 >= 0x12) && (temp_v0_4 < 0x64)) { temp_v1_2 = arg0->unk22A; if (temp_v1_2 < 3) { arg0->unk22A = temp_v1_2 + 1; } } if ((arg0->unk228 >= 0xA) && (arg0->unk228 < 0x64)) { arg0->unk228 = 0xA; return; } arg0->unk228 = 0; block_29: arg0->unk22A = 0; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002A8A4.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_80036C5C(); // extern extern ? gkartHopJerkTable; extern ? gKartHopInitialVelocityTable; /** * Function: func_8002AA50 * Parameters: * Player *player - A pointer to a Player * Some sort of hop initalization function, only runs when the hop button is * first pressed. * Initializes several Player struct members, most importantly kartHopVelocity. * This marks the beginning of a hop. * Refer to gKartHopInitialVelocityTable in kart_attributes.inc.c for possible * starting values of kartHopVelocity (by default, 0.93f for all characterIds) * Sets kartHopAcceleration (kartHopAccleration) to 0.0f * Refer to gKartHopJerkTable in kart_attributes.inc.c for possible starting * values of kartHopJerk (by default, 0.03f for all characterIds) * Sets unk_100 to 500.0f * Sets unk_DAC to 3.0f * Sets the second bit of unk_0BC. * This is probably some sort of flag, something like "is hopping" or "is in the air" * Calls func_80036C5C * No idea what that function does **/ void func_8002AA50(Player *player) { player->kartHopAcceleration = 0.0f; player->kartHopJerk = gkartHopJerkTable[player->characterId]; player->unk_0BC |= 2; player->kartHopVelocity = gKartHopInitialVelocityTable[player->characterId]; player->unk_DAC = 3.0f; player->unk_100 = 500.0f; func_80036C5C(player); } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002AA50.s") #endif /** * Function: func_8002AAC0 * Parameters: * Player *player - A pointer to a Player * First kartHopJerk is subtracted from kartHopAcceleration * Then kartHopAcceleration is added to kartHopVelocity. * If kartHopVelocity is less than or equal to zero, all three * values (kartHop{Jerk,Acceleration,Velocity}) are set to 0.0f, * thereby ending the rising portion of the hop. * kartHopVelocity is restricted to values in [-INF, 15.0f] * kartHopAcceleration is restricted to values in [-9.0f, 9.0f] **/ void func_8002AAC0(Player *player) { player->kartHopAcceleration -= player->kartHopJerk; if (player->kartHopAcceleration >= 9.0f) { player->kartHopAcceleration = 9.0f; } if (player->kartHopAcceleration <= -9.0f) { player->kartHopAcceleration = -9.0f; } player->kartHopVelocity += player->kartHopAcceleration; if (player->kartHopVelocity >= 15.0f) { player->kartHopVelocity = 15.0f; } if (player->kartHopVelocity <= 0.0f) { player->kartHopJerk = 0.0f; player->kartHopAcceleration = 0.0f; player->kartHopVelocity = 0.0f; } } void func_8002AB70(Player *player) { f64 pad; if (((player->unk_0BC & 8) != 8) && (player->unk_08C > 0.0f)) { if (((player->unk_0C4 / 182) < -1) && ((player->unk_0C4 / 182) >= -0x14) && (((player->unk_094 / 18.0f) * 216.0f) >= 20.0f)) { move_f32_towards(&player->unk_100, 500.0f, 1.0f); move_f32_towards(&player->unk_DAC, 3.0f, 0.05f); } else { move_f32_towards(&player->unk_100, gKartGravityTable[player->characterId], 0.1f); move_f32_towards(&player->unk_DAC, 1.0f, 0.07f); } } else { if (player->unk_110.unk44 >= 50.0f) { player->unk_DAC = 2.0f; } move_f32_towards(&player->unk_100, gKartGravityTable[player->characterId], 0.02f); if ((player->unk_0BC & 2) == 2) { move_f32_towards(&player->unk_DAC, 1.0f, 0.07f); } else { move_f32_towards(&player->unk_DAC, 1.0f, 0.07f); } } if ((player->unk_0BC & 0x100000) == 0x100000) { move_f32_towards(&player->unk_DAC, 20.0f, 1.0f); player->unk_100 = D_800ED7B8; } if ((player->unk_0BC & 4) == 4) { move_f32_towards(&player->unk_DAC, 25.0f, 1.0f); player->unk_100 = 1800.0f; } if ((player->unk_0BC & 0x400) == 0x400) { player->unk_100 = D_800ED7BC; } if (player->unk_0BC & 0x80000) { player->unk_100 = D_800ED7C0; } if ((player->unk_044 & 0x800) != 0) { player->unk_100 = D_800ED7C4; } if ((player->unk_0BC & 0x800000) == 0x800000) { player->unk_100 = 300.0f; } if ((player->unk_0BC & 0x01000000) == 0x01000000) { player->unk_100 = D_800ED7C8; } if ((player->unk_0BC & 0x02000000) == 0x02000000) { player->unk_100 = 800.0f; } } UNUSED void func_8002AE20(void) { } UNUSED void func_8002AE28(void) { } UNUSED void func_8002AE30(void) { } #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 u16 func_802B7830(f32, f32, s16, void *); // extern f32 sins(s32, void *); // extern f32 coss(s32); // extern void func_8002AE38(void *arg0, s8 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5) { s16 sp2E; f32 sp28; f32 sp24; u16 sp1A; f32 temp_f16; f32 temp_f2; s16 temp_a0; s16 temp_a0_2; s16 temp_v0_2; s16 temp_v0_3; s32 temp_lo; s32 temp_t2; s32 temp_t9; s32 temp_v0; void *temp_a2; void *temp_a2_2; s32 phi_v1; s32 phi_v0; s32 phi_v0_2; s16 phi_t7; void *phi_a2; s32 phi_v0_3; temp_a2 = arg0; temp_a0 = arg0->unk2E; arg0 = temp_a2; sp28 = (sins(-temp_a0 & 0xFFFF, temp_a2) * arg0->unk94) + arg2; temp_a2_2 = arg0; temp_f2 = temp_a2_2->unk94; temp_v0 = temp_a2_2->unkBC; temp_f16 = (coss(-arg0->unk2E & 0xFFFF) * temp_f2) + arg3; phi_a2 = temp_a2_2; if (((temp_v0 & 0x800) != 0x800) && ((temp_v0 & 0x10) != 0x10) && ((temp_a2_2->unk44 & 0x4000) == 0) && ((((temp_f2 / 18.0f) * 216.0f) <= 8.0f) || ((temp_t2 = temp_a2_2->unk7C >> 0x10, ((temp_t2 < 5) != 0)) && (temp_t2 >= -4)))) { if ((temp_v0 & 0x20) == 0x20) { temp_v0_2 = temp_a2_2->unkC0; phi_t7 = temp_v0_2 - (temp_v0_2 / 0xA); goto block_33; } temp_a0_2 = temp_a2_2->unkC0; temp_a2_2->unkC0 = temp_a2_2->unk78 * 9; temp_a2_2->unkC0 = temp_a0_2 + ((temp_a2_2->unkC0 - temp_a0_2) / 0xF); return; } temp_v0_3 = temp_a2_2->unkC0; if ((D_801652C0[arg1] & 8) != 0) { phi_v1 = 2; } else { phi_v1 = 0; } if ((temp_a2_2->unk9C >= 200.0f) && (phi_v1 == 2) && ((temp_lo = temp_v0_3 / 0xB6, ((temp_lo < 0x10) == 0)) || (temp_lo < -0xF))) { sp2E = temp_v0_3; arg0 = temp_a2_2; sp24 = temp_f16; sp1A = func_802B7830(arg2 - arg4, arg3 - arg5, temp_v0_3, temp_a2_2); arg0->unkC0 = sp1A - func_802B7830(arg2 - sp28, arg3 - temp_f16); } else { sp2E = temp_v0_3; arg0 = temp_a2_2; sp24 = temp_f16; sp1A = func_802B7830(arg2 - arg4, arg3 - arg5, temp_v0_3, temp_a2_2); arg0->unkC0 = (sp1A - func_802B7830(arg2 - sp28, arg3 - temp_f16)) * 2; } phi_a2 = arg0; if (((arg0->unkBC & 0x10) != 0x10) && (((temp_t9 = arg0->unk7C >> 0x10, (temp_t9 > 0)) && (arg0->unkC0 < 0)) || ((temp_t9 < 0) && (arg0->unkC0 > 0)))) { phi_v0 = arg0->unkC0; if (arg0->unkC0 > 0) { arg0->unkC0 = arg0->unk78 * 0x14; phi_v0 = arg0->unkC0; } phi_v0_2 = phi_v0; if (phi_v0 < 0) { arg0->unkC0 = arg0->unk78 * 0x14; phi_v0_2 = arg0->unkC0; } arg0->unkC0 = temp_v0_3 + ((phi_v0_2 - temp_v0_3) / 0xC); return; } if (arg0->unkC0 >= 0x1C71) { arg0->unkC0 = 0x1C70; } phi_v0_3 = arg0->unkC0; if (arg0->unkC0 < -0x1C70) { arg0->unkC0 = -0x1C70; phi_v0_3 = arg0->unkC0; } phi_t7 = temp_v0_3 + ((phi_v0_3 - temp_v0_3) / 0xC); block_33: phi_a2->unkC0 = phi_t7; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002AE38.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 90e635335cb052c4324a3aa7478e4761db19dfaf ? func_8002A704(Player *, s8); /* extern */ void func_8002B308(Player *player, s8 arg1, s8 arg2) { s32 temp_v0; s32 phi_v0; s32 phi_v0_2; s32 phi_v0_3; s32 phi_v0_4; s32 phi_v0_5; s32 phi_v0_6; s32 phi_v0_7; s32 phi_v0_8; s32 phi_v0_9; s32 phi_v0_10; s32 phi_v0_11; s32 phi_v0_12; s32 phi_v0_13; s32 phi_v0_14; s32 phi_v0_15; s32 phi_v0_16; s32 phi_v0_17; temp_v0 = player->unk_00C; phi_v0 = temp_v0; if ((temp_v0 & 2) == 2) { func_8008EAE0(player, arg1); phi_v0 = player->unk_00C; } phi_v0_2 = phi_v0; if ((phi_v0 & 4) == 4) { func_8008C528(player, arg1); phi_v0_2 = player->unk_00C; } phi_v0_3 = phi_v0_2; if ((phi_v0_2 & 1) == 1) { func_8008CDC0(player, arg1); phi_v0_3 = player->unk_00C; } phi_v0_4 = phi_v0_3; if ((phi_v0_3 & 0x200) == 0x200) { func_8008D3C4(player, arg1); phi_v0_4 = player->unk_00C; } phi_v0_5 = phi_v0_4; if ((phi_v0_4 & 0x02000000) == 0x02000000) { func_8002A704(player, arg1); phi_v0_5 = player->unk_00C; } phi_v0_6 = phi_v0_5; if ((phi_v0_5 & 0x1000) == 0x1000) { func_8008D570(player, arg1); phi_v0_6 = player->unk_00C; } phi_v0_7 = phi_v0_6; if ((phi_v0_6 & 0x20000) == 0x20000) { func_8008D7B0(player, arg1); phi_v0_7 = player->unk_00C; } phi_v0_8 = phi_v0_7; if ((phi_v0_7 & 0x100) == 0x100) { func_8008DABC(player, arg1); phi_v0_8 = player->unk_00C; } phi_v0_9 = phi_v0_8; if ((phi_v0_8 & 0x4000) == 0x4000) { func_8008DF98(player, arg1); phi_v0_9 = player->unk_00C; } phi_v0_10 = phi_v0_9; if ((phi_v0_9 & 0x200000) == 0x200000) { func_8008C73C(player, arg1); phi_v0_10 = player->unk_00C; } phi_v0_11 = phi_v0_10; if ((phi_v0_10 & 0x400000) == 0x400000) { func_8008E6C0(player, arg1); phi_v0_11 = player->unk_00C; } phi_v0_12 = phi_v0_11; if ((phi_v0_11 & 0x01000000) == 0x01000000) { func_8008EAE0(player, arg1); phi_v0_12 = player->unk_00C; } phi_v0_13 = phi_v0_12; if ((phi_v0_12 & 0x800000) == 0x800000) { func_8008EC88(player, arg1); phi_v0_13 = player->unk_00C; } phi_v0_14 = phi_v0_13; if ((phi_v0_13 & 0x8000) == 0x8000) { func_8008EEE4(player, arg1); phi_v0_14 = player->unk_00C; } phi_v0_15 = phi_v0_14; if ((phi_v0_14 & 0x2000) == 0x2000) { func_8008F778(player, arg1); phi_v0_15 = player->unk_00C; } phi_v0_16 = phi_v0_15; if ((phi_v0_15 & 0x800) == 0x800) { func_8008FA38(player, arg1); phi_v0_16 = player->unk_00C; } phi_v0_17 = phi_v0_16; if ((phi_v0_16 & 0x80) != 0) { func_8008D0FC(player, arg1); phi_v0_17 = player->unk_00C; } if (phi_v0_17 & 0x80000) { func_8008E6C0(player, arg1); } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002B308.s") #endif void func_8002B5C0(Player *player, s8 arg1, s8 arg2) { if (((player->unk_0CA & 8) != 0) || ((player->unk_0CA & 2) != 0)) { player->unk_00C &= 0xFE1D0478; } if ((player->unk_0BC & 0x400) == 0x400) { player->unk_00C &= 0xFF5D457E; } if (((player->unk_0BC & 0x80) == 0x80) || ((player->unk_0BC & 0x40) == 0x40)) { player->unk_00C &= 0xFF5F457E; } if ((player->unk_0BC & 0x800) == 0x800) { player->unk_00C &= 0xFF5D457E; } if ((player->unk_044 & 0x4000) != 0) { player->unk_00C &= 0xFF5D457E; } if ((player->unk_0BC & 0x80000) == 0x80000) { player->unk_00C &= 0xFE1D4478; } if ((player->unk_0BC & 0x800000) == 0x800000) { player->unk_00C &= 0xFE1D0478; } if ((player->unk_0BC & 0x04000000) == 0x04000000) { player->unk_00C &= 0xFE1D0578; } if ((player->unk_0BC & 0x01000000) == 0x01000000) { player->unk_00C &= 0xFE1D4478; } if ((player->unk_0BC & 0x02000000) == 0x02000000) { player->unk_00C &= 0xFE1D4478; } if ((player->unk_0BC & 0x100000) == 0x100000) { player->unk_00C &= 0xFE1D0478; } if ((player->unk_0BC & 4) == 4) { player->unk_00C &= 0xFE1D0478; } if ((player->unk_0BC & 0x10000) == 0x10000) { player->unk_00C &= 0xFE1D0478; } if ((player->unk_0BC & 0x200) == 0x200) { player->unk_00C &= 0xFE9D8478; } if ((player->unk_0BC & 0x80000000) == 0x80000000) { player->unk_00C &= 0xFE9D8678; } if ((player->unk_0BC & 0x4000) == 0x4000) { player->unk_00C &= 0xFF5D45FF; } if ((player->unk_0BC & 0x20000) == 0x20000) { player->unk_00C &= 0xFE1D0478; } } void func_8002B830(Player *player, s8 arg1, s8 arg2) { if (player->unk_00C != 0) { func_8002B5C0(player, arg1, arg2); } if (player->unk_00C != 0) { func_8002B308(player, arg1, arg2); } if ((player->unk_044 & 0x400) != 0) { func_800911B4(player, arg1); } } #ifdef MIPS_TO_C //generated by mips_to_c commit 90e635335cb052c4324a3aa7478e4761db19dfaf extern ? D_801653C0; UNUSED void func_8002B8A4(Player *player_one, Player *player_two) { s32 spC; Player *temp_a1; Player *temp_a2; Player *temp_a3; Player *temp_t0; Player *temp_t1; Player *temp_t2; Player *temp_t3; Player *temp_v0; s32 phi_v1; s32 phi_v1_2; temp_v0 = gPlayerOne; if (player_one == temp_v0) { spC = 0; } temp_a1 = gPlayerTwo; phi_v1 = spC; if (player_one == temp_a1) { phi_v1 = 1; } temp_a2 = gPlayerThree; if (player_one == temp_a2) { phi_v1 = 2; } temp_a3 = gPlayerFour; if (player_one == temp_a3) { phi_v1 = 3; } temp_t0 = gPlayerFive; if (player_one == temp_t0) { phi_v1 = 4; } temp_t1 = gPlayerSix; if (player_one == temp_t1) { phi_v1 = 5; } temp_t2 = gPlayerSeven; if (player_one == temp_t2) { phi_v1 = 6; } temp_t3 = gPlayerEight; if (player_one == temp_t3) { phi_v1 = 7; } *(&D_801653C0 + (phi_v1 * 4)) = player_two; phi_v1_2 = phi_v1; if (player_two == temp_v0) { phi_v1_2 = 0; } if (player_two == temp_a1) { phi_v1_2 = 1; } if (player_two == temp_a2) { phi_v1_2 = 2; } if (player_two == temp_a3) { phi_v1_2 = 3; } if (player_two == temp_t0) { phi_v1_2 = 4; } if (player_two == temp_t1) { phi_v1_2 = 5; } if (player_two == temp_t2) { phi_v1_2 = 6; } if (player_two == temp_t3) { phi_v1_2 = 7; } *(&D_801653C0 + (phi_v1_2 * 4)) = player_one; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002B8A4.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_8008C73C(void *, s8); // extern s32 func_802B5224(void *, void *); // extern extern f64 D_800ED7D0; void func_8002B9CC(void *arg0, s8 arg1, ? arg2) { f32 (*temp_v0_3)[3]; f32 temp_f0; f32 temp_f0_2; f32 temp_f14; f32 temp_f14_2; f32 temp_f2; s32 temp_v0_2; s32 temp_v0_4; struct_D_8018CE10 *temp_v0; if ((arg0->unk46 & 2) == 2) { temp_v0 = &D_8018CE10[arg1]; temp_f0 = temp_v0->unk_04; temp_f14 = temp_v0->unk_0C; if ((sqrtf((temp_f0 * temp_f0) + (0.0f * 0.0f) + (temp_f14 * temp_f14)) >= 6.5) && (temp_v0_2 = arg0->unkBC, arg0->unk8C = arg0->unk8C / 4.0f, arg0->unk9C = arg0->unk9C / 4.0f, ((temp_v0_2 & 0x80) == 0)) && ((temp_v0_2 & 0x40) == 0)) { func_8008C73C(arg0, arg1); return; } // Duplicate return node #10. Try simplifying control flow for better match return; } temp_v0_3 = &D_80165070[arg1]; temp_f0_2 = temp_v0_3->unk0 - arg0->unk34; temp_f2 = temp_v0_3->unk4 - arg0->unk38; temp_f14_2 = temp_v0_3->unk8 - arg0->unk3C; if (D_800ED7D0 <= sqrtf((temp_f0_2 * temp_f0_2) + (temp_f2 * temp_f2) + (temp_f14_2 * temp_f14_2))) { temp_v0_4 = arg0->unkBC; arg0->unk8C = arg0->unk8C / 4.0f; arg0->unk9C = arg0->unk9C / 4.0f; if (((temp_v0_4 & 0x80) == 0) && ((temp_v0_4 & 0x40) == 0)) { func_8008C73C(arg0, arg1); } } arg0->unk234 = (-func_802B5224(arg0 + 0x14, arg0 + 0x20) - (arg0->unk2E - arg0->unkC0)) / 0xB6; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002B9CC.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 func_802B5224(f32 *, f32 *); // extern ? func_802B63B8(f32 *, f32 *); // extern extern ? D_800E3C98; void func_8002BB9C(void *arg0, f32 *arg1, f32 *arg2, ? arg3) { f32 sp64; f32 sp60; f32 sp5C; f32 sp58; f32 sp54; f32 sp50; f32 sp4C; ? sp30; f32 *temp_a0; f32 *temp_a0_2; s16 temp_a1; s32 temp_lo; s32 temp_lo_2; s32 temp_t9; u16 temp_v0; s32 phi_v0; s32 phi_v0_2; sp30.unk0 = D_800E3C98.unk0; sp30.unk4 = D_800E3C98.unk4; sp30.unk8 = D_800E3C98.unk8; sp30.unkC = D_800E3C98.unkC; sp30.unk10 = D_800E3C98.unk10; temp_v0 = arg0->unk256; if ((temp_v0 > 0) && (temp_v0 < 3) && ((arg0->unk46 & 0x20) != 0) && ((func_802B6540(&sp64, 0.0f, 1.0f, 0.0f, 0), sp5C = 0.0f, temp_a0 = &sp58, sp58 = *arg1, sp60 = *arg2, func_802B63B8(temp_a0, &sp64), temp_a0_2 = &sp4C, sp4C = arg0->unk20, sp50 = 0.0f, sp54 = arg0->unk28, func_802B63B8(temp_a0_2, &sp64), temp_a1 = arg0->unk2E, temp_lo = ((temp_a1 - -func_802B5224(&sp58, &sp4C)) + 0x10000) / 0xB6, ((temp_lo < 0x97) == 0)) || (temp_lo < -0x96))) { temp_t9 = arg0->unk7C >> 0x10; temp_lo_2 = temp_t9 / 6; phi_v0 = temp_lo_2; if (temp_lo_2 < 0) { phi_v0 = temp_lo_2 * -1; } phi_v0_2 = phi_v0; if (phi_v0 >= 8) { phi_v0_2 = 8; } if (temp_t9 < 0) { arg0->unk2E = temp_a1 - (sp + (phi_v0_2 * 2))->unk30; return; } arg0->unk2E = temp_a1 + (sp + (phi_v0_2 * 2))->unk30; // Duplicate return node #12. Try simplifying control flow for better match } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002BB9C.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 extern ? D_800E3CAC; extern ? D_800E3CC8; void func_8002BD58(void *arg0) { ? sp2C; ? spC; s16 temp_t5; s16 temp_v0; s32 phi_v0; sp2C.unk0 = D_800E3CAC.unk0; sp2C.unk4 = D_800E3CAC.unk4; sp2C.unk8 = D_800E3CAC.unk8; sp2C.unkC = D_800E3CAC.unkC; sp2C.unk10 = D_800E3CAC.unk10; sp2C.unk14 = D_800E3CAC.unk14; sp2C.unk18 = D_800E3CAC.unk18; spC.unk0 = D_800E3CC8.unk0; spC.unk4 = D_800E3CC8.unk4; spC.unk8 = D_800E3CC8.unk8; spC.unkC = D_800E3CC8.unkC; spC.unk10 = D_800E3CC8.unk10; spC.unk14 = D_800E3CC8.unk14; spC.unk18 = D_800E3CC8.unk18; spC.unk1C = D_800E3CC8.unk1C; temp_v0 = arg0->unk234; if (temp_v0 >= 0) { if ((temp_v0 >= 5) && (temp_v0 < 0x1E)) { arg0->unk7C = *(&sp2C + ((temp_v0 / 6) * 4)); } if ((temp_v0 >= 0x1E) && (temp_v0 < 0x50)) { arg0->unk7C = *(&spC + (((temp_v0 - 0x1E) / 0xC) * 4)); } if (((temp_v0 < 0x50) || (temp_v0 >= 0x5B)) && (temp_v0 >= 0x5B) && (temp_v0 < 0xA1)) { arg0->unk7C = sp10; return; } // Duplicate return node #23. Try simplifying control flow for better match return; } temp_t5 = temp_v0 * -1; if ((temp_v0 < -4) && (temp_v0 >= -0x1E)) { arg0->unk7C = *(&sp2C + ((temp_t5 / 6) * 4)) * -1; } phi_v0 = arg0->unk234; if ((arg0->unk234 < -0x1E) && (arg0->unk234 >= -0x50)) { arg0->unk7C = *(&spC + (((temp_t5 - 0x1E) / 0xC) * 4)) * -1; phi_v0 = arg0->unk234; } if (((phi_v0 >= -0x50) || (phi_v0 < -0x5A)) && (phi_v0 < -0x5A) && (phi_v0 >= -0xA0)) { arg0->unk7C = sp10 * -1; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002BD58.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 func_8001FD78(void *, s32, s32, s32); // extern ? func_800C9060(u8, ?, s32); // extern ? func_800C90F4(u8, s32, s32); // extern void func_8002BF4C(void *arg0, u8 arg1) { s32 sp30; s32 temp_a2; s32 temp_s1; s32 temp_t2; s32 temp_v0_2; u16 temp_v0; Player *phi_s0; s32 phi_v0; s32 phi_s1; s32 phi_a2; s32 phi_a2_2; phi_a2_2 = 0; if (((arg0->unk94 / 18.0f) * 216.0f) < 50.0f) { arg0->unkE2 = 0; arg0->unkBC = arg0->unkBC & 0xFFDFFFFF; return; } phi_s0 = gPlayerOne; phi_s1 = 0; if ((arg0->unkBC & 0x200000) == 0x200000) { arg0->unkE2 = arg0->unkE2 - 1; if (arg0->unkE2 <= 0) { arg0->unkBC = arg0->unkBC & 0xFFDFFFFF; return; } // Duplicate return node #18. Try simplifying control flow for better match return; } loop_6: if ((arg0 != phi_s0) && (temp_v0 = phi_s0->unk_000, ((temp_v0 & 0x100) == 0)) && ((temp_v0 & 0x8000) != 0) && (temp_v0_2 = func_8001FD78(arg0, phi_s0->posX, phi_s0->posY, phi_s0->posZ), temp_a2 = temp_v0_2, phi_a2 = temp_a2, phi_a2_2 = temp_a2, (temp_v0_2 == 1))) { arg0->unkE2 = arg0->unkE2 + 1; if (arg0->unkE2 >= 0x3D) { temp_t2 = arg0->unk0 & 0x100; arg0->unkBC = arg0->unkBC | 0x200000; phi_v0 = temp_t2; if (temp_t2 != 0x100) { sp30 = temp_a2; func_800C90F4(arg1, (arg0->unk254 * 0x10) + 0x29008001, temp_a2); phi_v0 = arg0->unk0 & 0x100; } phi_a2 = temp_a2; if (phi_v0 != 0x100) { sp30 = temp_a2; func_800C9060(arg1, 0x19008011, temp_a2); phi_a2 = temp_a2; } } } else { temp_s1 = phi_s1 + 0xDD8; phi_s0 += 0xDD8; phi_s1 = temp_s1; phi_a2 = phi_a2_2; if (temp_s1 != 0x6EC0) { goto loop_6; } } if (phi_a2 == 0) { arg0->unkE2 = 0; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002BF4C.s") #endif void func_8002C11C(Player *player) { if ((player->unk_0BC & 0x10) == 0x10) { player->unk_204 += 1; if (player->unk_204 >= 0x65) { player->unk_204 = 0x64; } } else { player->unk_204 -= 1; if (player->unk_204 < 0) { player->unk_204 = 0; } } } #ifdef MIPS_TO_C //generated by mips_to_c commit 90e635335cb052c4324a3aa7478e4761db19dfaf s32 func_802ABDF4(u16, s8, Player *); /* extern */ extern ? D_80164438; extern ? D_801645B0; extern ? D_80165310; extern ? D_80165320; extern ? D_80165330; s16 gCurrentCourseId; /* unable to generate initializer */ void func_8002C17C(Player *player, s8 arg1) { s16 *sp1C; s16 *temp_v1; s16 *temp_v1_2; s16 *temp_v1_3; s16 *temp_v1_4; s16 *temp_v1_5; s16 *temp_v1_6; s16 temp_v0; s32 temp_a0_2; s32 temp_a3; s32 temp_v0_2; s32 temp_v0_3; s32 temp_v0_4; s32 temp_v0_5; s32 temp_v0_6; s32 temp_v0_7; s32 temp_v0_8; s32 temp_v0_9; u16 temp_a0; temp_v0 = gCurrentCourseId; switch (temp_v0) { /* irregular */ case 4: temp_v0_2 = arg1 * 2; temp_v1 = temp_v0_2 + &D_80165330; if ((player->unk_124 >= 600.0f) && (*temp_v1 == 0)) { *temp_v1 = 1; *(&D_80165320 + temp_v0_2) = *(&D_80164438 + temp_v0_2); *(&D_80165310 + temp_v0_2) = *(&D_801645B0 + temp_v0_2); return; } temp_v0_3 = arg1 * 2; temp_v1_2 = temp_v0_3 + &D_80165330; if (*temp_v1_2 == 0) { *(&D_80165320 + temp_v0_3) = *(&D_80164438 + temp_v0_3); *(&D_80165310 + temp_v0_3) = *(&D_801645B0 + temp_v0_3); return; } if ((player->unk_0BC & 8) == 0) { sp1C = temp_v1_2; if (func_802ABDF4((u16) player->unk_11A, arg1, player) == 0) { *temp_v1_2 = 0; return; } } return; case 5: temp_a0 = player->unkF8; temp_v0_4 = arg1 * 2; if (temp_a0 == 0xB) { temp_v1_3 = temp_v0_4 + &D_80165330; if (*temp_v1_3 == 0) { *temp_v1_3 = 1; *(&D_80165320 + temp_v0_4) = *(&D_80164438 + temp_v0_4); *(&D_80165310 + temp_v0_4) = *(&D_801645B0 + temp_v0_4); return; } } temp_v0_5 = arg1 * 2; if (temp_a0 != 0xB) { *(&D_80165330 + temp_v0_5) = 0; *(&D_80165320 + temp_v0_5) = *(&D_80164438 + temp_v0_5); *(&D_80165310 + temp_v0_5) = *(&D_801645B0 + temp_v0_5); return; } break; case 7: temp_a0_2 = player->unk_0BC; temp_v0_6 = arg1 * 2; temp_a3 = temp_a0_2 & 0x100000; if (temp_a3 != 0) { temp_v1_4 = temp_v0_6 + &D_80165330; if (*temp_v1_4 == 0) { *temp_v1_4 = 1; *(&D_80165320 + temp_v0_6) = *(&D_80164438 + temp_v0_6); *(&D_80165310 + temp_v0_6) = *(&D_801645B0 + temp_v0_6); return; } } if (temp_a3 == 0) { temp_v0_7 = arg1 * 2; if ((temp_a0_2 & 8) == 0) { *(&D_80165330 + temp_v0_7) = 0; *(&D_80165320 + temp_v0_7) = *(&D_80164438 + temp_v0_7); *(&D_80165310 + temp_v0_7) = *(&D_801645B0 + temp_v0_7); return; } } break; case 13: temp_v0_8 = arg1 * 2; temp_v1_5 = temp_v0_8 + &D_80165330; if ((player->unk_124 >= 600.0f) && (*temp_v1_5 == 0)) { *temp_v1_5 = 1; *(&D_80165320 + temp_v0_8) = *(&D_80164438 + temp_v0_8); *(&D_80165310 + temp_v0_8) = *(&D_801645B0 + temp_v0_8); return; } temp_v0_9 = arg1 * 2; temp_v1_6 = temp_v0_9 + &D_80165330; if (*temp_v1_6 == 0) { *(&D_80165320 + temp_v0_9) = *(&D_80164438 + temp_v0_9); *(&D_80165310 + temp_v0_9) = *(&D_801645B0 + temp_v0_9); return; } if (((player->unk_0BC & 8) == 0) && ((player->unk_0CA & 1) == 0)) { *temp_v1_6 = 0; return; } break; default: *(&D_80165330 + (arg1 * 2)) = 0; break; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002C17C.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_8002C17C(void *, s8); // extern ? func_80090778(void *); // extern ? func_80090868(void *); // extern ? func_800C9060(u8, ?, f32 *); // extern f32 func_802AAB4C(); // extern s32 func_802ABDF4(u16); // extern void func_8002C4F8(void *arg0, s8 arg1) { f32 *sp24; f32 *temp_a2; f32 temp_f0; s16 temp_v0; s16 temp_v0_2; s16 temp_v0_3; u16 temp_t1; u16 temp_t5; u16 temp_v1; f32 *phi_a2; temp_f0 = func_802AAB4C(); temp_a2 = &D_801652A0[arg1]; *temp_a2 = temp_f0; phi_a2 = temp_a2; if (arg0->unk18 <= temp_f0) { arg0->unkDE = arg0->unkDE | 2; } else { arg0->unkDE = arg0->unkDE & 0xFFFD; } if (arg0->unk70 < (*temp_a2 - arg0->unk18)) { temp_t5 = arg0->unkDE | 1; arg0->unkDE = temp_t5; arg0->unkDE = temp_t5 & 0xFFFD; } else { arg0->unkDE = arg0->unkDE & 0xFFFE; } if (arg0->unk70 < (*temp_a2 - arg0->unk18)) { temp_v1 = arg0->unkDE; temp_t1 = temp_v1 | 8; if ((temp_v1 & 4) != 4) { arg0->unkDE = temp_t1; arg0->unkDE = temp_t1 | 4; temp_v0 = gCurrentCourseId; if ((temp_v0 != 6) && (temp_v0 != 0x10) && (temp_v0 != 0xD) && ((arg0->unk0 & 0x4000) == 0x4000)) { if ((temp_v0 == 2) || (temp_v0 == 0x13)) { sp24 = temp_a2; func_800C9060(arg1, 0x1900801C, temp_a2); } else { sp24 = temp_a2; func_800C9060(arg1, 0x19008008, temp_a2); } phi_a2 = sp24; } } } temp_v0_2 = gCurrentCourseId; if ((temp_v0_2 == 6) || (temp_v0_2 == 0x10) || (temp_v0_2 == 0xD)) { arg0->unkDE = arg0->unkDE & 0xFFF3; } if ((arg0->unk70 < (*phi_a2 - arg0->unk18)) && (arg0->unk124 >= 600.0f)) { arg0->unkCA = arg0->unkCA | 1; } if (arg0->unk124 >= 600.0f) { arg0->unkCA = arg0->unkCA | 0x100; } else if ((arg0->unkBC & 8) != 8) { arg0->unkCA = arg0->unkCA & 0xFEFF; } if (((arg0->unk0 & 0x1000) != 0) && ((func_802ABDF4(arg0->unk11A) != 0) || ((arg0->unkCA & 1) != 0))) { temp_v0_3 = arg0->unkCA; if (((temp_v0_3 & 2) == 0) && ((temp_v0_3 & 8) == 0) && ((arg0->unkBC & 0x1000) == 0)) { func_80090778(arg0); func_80090868(arg0); } } if (((arg0->unk0 & 0x1000) != 0) && (arg0->unkF8 == 0xFD) && ((arg0->unkBC & 8) == 0)) { func_80090778(arg0); func_80090868(arg0); } func_8002C17C(arg0, arg1); } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002C4F8.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_8001CA24(void *, ?); // extern ? func_8002B9CC(s8, s8); // extern ? func_8008D554(void *); // extern void func_8002C7E4(void *arg0, s8 arg1, s8 arg2) { s16 temp_v1_3; s32 temp_v0; s32 temp_v0_2; u16 temp_t3; u16 temp_t6; u16 temp_v1; u16 temp_v1_2; u16 phi_v1; temp_v1 = arg0->unk46; phi_v1 = temp_v1; if ((temp_v1 & 1) != 1) { temp_v0 = arg0->unkBC; if ((temp_v0 & 0x8000) == 0x8000) { if ((temp_v0 & 0x2000) != 0x2000) { func_8002B9CC(arg1, arg2); phi_v1 = arg0->unk46; } temp_t6 = phi_v1 | 1; arg0->unk46 = temp_t6; arg0->unk44 = arg0->unk44 & 0xFFFE; arg0->unk46 = temp_t6 | 8; if ((arg0->unk0 & 0x4000) == 0x4000) { func_8001CA24(arg0, 0x40333333); } temp_v1_2 = arg0->unk46; if ((temp_v1_2 & 2) == 2) { temp_t3 = temp_v1_2 | 4; if ((temp_v1_2 & 4) != 4) { arg0->unk46 = temp_t3; arg0->unk46 = temp_t3 | 0x40; if ((arg0->unkBC & 0x2000) != 0) { func_8008D554(arg0); } } } } } temp_v0_2 = arg0->unkBC; if ((temp_v0_2 & 0x8000) == 0x8000) { arg0->unkBC = temp_v0_2 & 0xFFFF7FFF; arg0->unk10C = 1; arg0->unk44 = arg0->unk44 & 0xFFFE; return; } temp_v1_3 = arg0->unk10C; arg0->unk46 = arg0->unk46 & 0xFFFE; arg0->unkBC = temp_v0_2 & 0xFFFF7FFF; if (temp_v1_3 > 0) { arg0->unk10C = temp_v1_3 + 1; } if (arg0->unk10C >= 0xA) { arg0->unk10C = 0; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002C7E4.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_8001CA24(u16 *, ?); // extern ? func_80031F48(u16 *, ?); // extern ? func_8008D554(u16 *); // extern ? func_8008F494(u16 *, s8, u16 *); // extern ? func_800CAEC4(u8, f32); // extern extern f64 D_800ED7D8; void func_8002C954(u16 *arg0, s8 arg1, void *arg2) { f32 (*temp_v0_3)[3]; f32 temp_f0; f32 temp_f0_2; f32 temp_f0_4; f32 temp_f14; f32 temp_f14_2; f32 temp_f2; f64 temp_f0_3; f64 temp_f2_2; s16 temp_v0_2; s32 temp_v0; s32 temp_v1; u16 *temp_a0; u16 *temp_a3; u16 temp_t1; u16 *phi_a3; u16 *phi_a3_2; u16 *phi_a3_3; f32 phi_f14; u16 *phi_a3_4; temp_v0 = arg0->unkBC; temp_v1 = temp_v0 & 0x10000; temp_a3 = arg0; temp_f0 = arg0->unk18 - arg0->unk74; phi_a3 = temp_a3; if ((((temp_v1 != 0x10000) && ((temp_v0 & 0x100000) == 0x100000)) || (((temp_f0 >= 20.0f) || (temp_f0 < -1.0f)) && (temp_v1 == 0) && ((temp_v0 & 8) != 0)) || ((temp_a3->unk114 == 0) && (temp_v1 == 0))) && ((temp_v0_2 = temp_a3->unkCA, temp_a0 = temp_a3, ((temp_v0_2 & 2) == 0)) || ((temp_v0_2 & 8) == 0))) { arg0 = temp_a3; func_8008F494(temp_a0, arg1, temp_a3); phi_a3 = arg0; } phi_a3_2 = phi_a3; if ((phi_a3->unk46 & 0x20) != 0x20) { if ((phi_a3->unk11C < -1.0f) || (phi_a3->unk120 < -1.0f)) { phi_a3->unk256 = 1; } phi_a3->unk46 = phi_a3->unk46 | 0x20; } if (((phi_a3->unk0 & 0x4000) == 0x4000) && (((phi_a3->unk94 / 18.0f) * 216.0f) > 30.0f)) { arg0 = phi_a3; func_8001CA24(phi_a3, 0x40400000); phi_a3_2 = arg0; } temp_t1 = phi_a3_2->unk256 + 1; phi_a3_2->unk46 = phi_a3_2->unk46 | 0x10; phi_a3_2->unk256 = temp_t1; phi_a3_3 = phi_a3_2; if ((temp_t1 & 0xFFFF) >= 0xA) { phi_a3_2->unk256 = 0; } if ((phi_a3_2->unkC4 >= 0) && (((phi_a3_2->unk94 / 18.0f) * 216.0f) > 5.0f)) { arg0 = phi_a3_2; func_80031F48(phi_a3_2, 0x41900000); phi_a3_3 = arg0; } phi_a3_4 = phi_a3_3; if ((*phi_a3_3 & 0x4000) == 0x4000) { temp_v0_3 = &D_80165070[arg1]; temp_f0_2 = temp_v0_3->unk0 - arg2->unk0; temp_f14 = temp_v0_3->unk4 - arg2->unk4; arg0 = phi_a3_3; temp_f2 = temp_v0_3->unk8 - arg2->unk8; temp_f14_2 = sqrtf((temp_f0_2 * temp_f0_2) + (temp_f14 * temp_f14) + (temp_f2 * temp_f2)) / 3.0f; phi_f14 = temp_f14_2; phi_a3_4 = arg0; if (temp_f14_2 >= 1.0) { phi_f14 = 1.0f; } temp_f2_2 = D_800ED7D8; temp_f0_3 = phi_f14; if ((temp_f0_3 <= temp_f2_2) && (((arg0->unk94 / 18.0f) * 216.0f) >= 40.0f) && ((arg0->unk0 & 0x100) == 0)) { arg0 = arg0; func_800CAEC4(arg1, 0.6f); goto block_37; } if ((arg0->unk0 & 0x100) == 0) { if ((temp_f0_3 <= temp_f2_2) && (temp_f0_4 = (arg0->unk94 / 18.0f) * 216.0f, (temp_f0_4 < 40.0f)) && (temp_f0_4 >= 10.0f)) { arg0 = arg0; func_800CAEC4(arg1, 0.3f); } else { arg0 = arg0; func_800CAEC4(arg1, phi_f14); } block_37: phi_a3_4 = arg0; } } if ((phi_a3_4->unkBC & 0x2000) != 0) { arg0 = phi_a3_4; func_8008D554(phi_a3_4); arg0->unk8C = arg0->unk8C / 2.0f; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002C954.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_80031F48(void *, ?); // extern ? func_8008C62C(void *, s8); // extern ? func_8008C9EC(void *, s8); // extern ? func_8008CEB0(void *, s8); // extern ? func_8008D170(void *, s8); // extern ? func_8008D4B4(void *); // extern ? func_8008D698(void *, s8); // extern ? func_8008D8B4(void *, s8); // extern ? func_8008DC08(void *, s8); // extern ? func_8008E118(void *, s8); // extern ? func_8008E4A4(void *, s8); // extern ? func_8008E8D8(void *, s8); // extern ? func_8008EDC0(void *); // extern ? func_8008F008(void *); // extern ? func_8008F1B8(void *, s8); // extern ? func_8008F3F4(void *, s8); // extern ? func_8008F650(void *, s8); // extern ? func_8008F8DC(void *, s8); // extern ? func_8008FC64(void *, s8); // extern ? func_8008FCDC(void *, s8); // extern ? func_80090970(void *, s8, s8); // extern ? func_80091298(void *, s8); // extern extern s32 D_800DC510; void func_8002CD48(void *arg0, s8 arg1, s8 arg2) { s16 temp_v0; s32 phi_v0; s32 phi_v0_2; s32 phi_v0_3; s32 phi_v0_4; s32 phi_v0_5; s32 phi_v0_6; s32 phi_v0_7; s32 phi_v0_8; s32 phi_v0_9; s32 phi_v0_10; s32 phi_v0_11; s32 phi_v0_12; s32 phi_v0_13; s32 phi_v0_14; temp_v0 = arg0->unkCA; if (((temp_v0 & 2) == 2) || ((temp_v0 & 8) == 8)) { func_80090970(arg0, arg1, arg2); } if ((arg0->unkBC & 0x800) == 0x800) { func_8008CEB0(arg0, arg1); } if ((arg0->unk44 & 0x4000) != 0) { func_8008D170(arg0, arg1); } if ((arg0->unkBC & 0x2000) == 0x2000) { func_8008D4B4(arg0); } phi_v0 = arg0->unkBC; if ((arg0->unkBC & 0x100000) == 0x100000) { func_8008EDC0(arg0); phi_v0 = arg0->unkBC; } phi_v0_2 = phi_v0; if ((phi_v0 & 4) == 4) { func_8008F008(arg0); phi_v0_2 = arg0->unkBC; } phi_v0_3 = phi_v0_2; if ((phi_v0_2 & 0x4000000) == 0x4000000) { func_8008DC08(arg0, arg1); phi_v0_3 = arg0->unkBC; } phi_v0_4 = phi_v0_3; if ((phi_v0_3 & 0x40000000) == 0x40000000) { func_8008E118(arg0, arg1); phi_v0_4 = arg0->unkBC; } phi_v0_5 = phi_v0_4; if ((phi_v0_4 & 0x10000) == 0x10000) { func_8008F3F4(arg0, arg1); phi_v0_5 = arg0->unkBC; } phi_v0_6 = phi_v0_5; if ((phi_v0_5 & 0x200) == 0x200) { func_8008F650(arg0, arg1); phi_v0_6 = arg0->unkBC; } phi_v0_7 = phi_v0_6; if ((phi_v0_6 & 0x80000000) == 0x80000000) { func_8008F8DC(arg0, arg1); phi_v0_7 = arg0->unkBC; } phi_v0_8 = phi_v0_7; if (((phi_v0_7 & 0x20000000) == 0x20000000) && (arg0->unk228 >= 0x64)) { func_80031F48(arg0, 0x40800000); phi_v0_8 = arg0->unkBC; } phi_v0_9 = phi_v0_8; if (((phi_v0_8 & 0x80) == 0x80) || ((phi_v0_8 & 0x40) == 0x40)) { func_8008C9EC(arg0, arg1); phi_v0_9 = arg0->unkBC; } phi_v0_10 = phi_v0_9; if ((phi_v0_9 & 0x400) == 0x400) { func_8008C62C(arg0, arg1); phi_v0_10 = arg0->unkBC; } phi_v0_11 = phi_v0_10; if ((phi_v0_10 & 0x1000000) == 0x1000000) { func_8008E4A4(arg0, arg1); phi_v0_11 = arg0->unkBC; } phi_v0_12 = phi_v0_11; if ((phi_v0_11 & 0x2000000) == 0x2000000) { func_8008E8D8(arg0, arg1); phi_v0_12 = arg0->unkBC; } phi_v0_13 = phi_v0_12; if ((phi_v0_12 & 0x4000) == 0x4000) { func_8008F1B8(arg0, arg1); phi_v0_13 = arg0->unkBC; } phi_v0_14 = phi_v0_13; if ((phi_v0_13 & 0x80000) == 0x80000) { func_8008D698(arg0, arg1); phi_v0_14 = arg0->unkBC; } if ((phi_v0_14 & 0x800000) == 0x800000) { func_8008D8B4(arg0, arg1); func_80031F48(arg0, 0x41200000); } if (D_800DC510 != 5) { if (arg0->unkC & 0x4000000) { func_8008FC64(arg0, arg1); } if ((arg0->unkC * 0x10) < 0) { func_8008FCDC(arg0, arg1); } } if ((arg0->unk44 & 0x800) != 0) { func_80091298(arg0, arg1); } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002CD48.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_800224F0(void *, ?, ?); // extern ? func_8003680C(f32, void *, s16, s32, s32); // extern s32 func_802B5224(s32, f32 *, s32, s32); // extern void func_8002D028(void *arg0, s8 arg1) { f32 sp54; f32 sp50; f32 sp4C; s16 sp46; s32 sp34; s16 *sp2C; f32 *temp_a1; f32 temp_f0; f32 temp_f0_2; f32 temp_f2; s16 *temp_v0_2; s16 temp_v0; s16 temp_v1; s16 temp_v1_2; s32 temp_a3; s32 temp_f18; s32 temp_f8; s32 temp_t1; s32 phi_a2; s32 phi_a2_2; temp_a3 = arg1 * 2; temp_v0 = D_80165270[arg1]; temp_a1 = &sp4C; sp34 = temp_a3; sp4C = D_80165210[temp_v0]; sp50 = 0.0f; sp54 = D_80165230[temp_v0]; temp_f0 = 8.0f * 182.0f; temp_v1 = -func_802B5224(arg0 + 0x14, temp_a1, arg1 << 0x18, temp_a3) - arg0->unk2E; temp_f8 = temp_f0; temp_f18 = -8.0f * 182.0f; phi_a2 = temp_v1; if (temp_f8 < temp_v1) { phi_a2 = temp_f8; } phi_a2_2 = phi_a2; if (phi_a2 < temp_f18) { phi_a2_2 = temp_f18; } temp_v0_2 = &D_80165020[arg1]; sp2C = temp_v0_2; temp_t1 = (*temp_v0_2 + ((phi_a2_2 * 0x35) / temp_f0)) / 2; sp46 = temp_t1; func_8003680C(182.0f, arg0, temp_t1, phi_a2_2, temp_a3); *temp_v0_2 = temp_t1; temp_f0_2 = sp54 - arg0->unk1C; temp_f2 = sp4C - arg0->unk14; if (sqrtf((temp_f0_2 * temp_f0_2) + (temp_f2 * temp_f2)) <= 8.0f) { func_800224F0(arg0 + 0x2E, -0x8000, 0x16C); temp_v1_2 = arg0->unk2E; if ((temp_v1_2 < -0x7F41) || (temp_v1_2 >= 0x7F42)) { arg0->unk0 = arg0->unk0 & 0xFDFF; } arg0->unk8C = 0.0f; arg0->unk94 = 0.0f; arg0->unk104 = 0.0f; arg0->unk240 = 0; arg0->unk7C = 0; arg0->unk34 = 0.0f; arg0->unk38 = 0.0f; arg0->unk3C = 0.0f; arg0->unkC0 = 0; arg0->unk78 = 0; return; } arg0->unk8C = 1200.0f; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002D028.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_80027EDC(Player *, s8); // extern ? func_80029B4C(Player *, f32, f32, f32); // extern ? func_8002A194(Player *, f32, f32, f32); // extern ? func_8002A79C(Player *, s8); // extern ? func_8002AAC0(f32, f64, Player *); // extern ? func_8002AB70(Player *); // extern ? func_8002AE38(Player *, s8, f32, f32, f32, f32); // extern ? func_8002B830(Player *, s8, s8); // extern ? func_8002BB9C(Player *, f32 *, f32 *, s8, s32, f32 *); // extern ? func_8002BF4C(Player *, s8); // extern ? func_8002C11C(Player *); // extern ? func_8002C4F8(Player *, s8); // extern ? func_8002C7E4(f32, f32, Player *, s8, s8); // extern ? func_8002C954(Player *, s8, f32 *); // extern ? func_8002CD48(Player *, s8, s8); // extern ? func_8002FCA8(Player *, s8); // extern f32 func_80030150(Player *, s8); // extern ? func_80037BB4(Player *, f32 *); // extern ? func_8003F46C(Player *, ? *, f32 *, f32 *, f32 *, f32 *, f32 *, f32 *); // extern ? func_8003F734(Player *, ? *, f32 *, f32 *, f32 *, f32 *, f32 *); // extern ? func_8003FBAC(Player *, ? *, f32 *, f32 *, f32 *, f32 *, f32 *); // extern ? func_8008F494(Player *, s8); // extern ? func_8008F5A4(Player *, s8); // extern ? func_800C9060(u8, ?); // extern ? func_800CADD0(u8, f32); // extern s32 func_802ABDB8(u16); // extern f32 func_802ABE30(f32, f32, f32, u16); // extern ? func_802AD950(s16 *, f32, f32, f32, f32, f32, f32, f32); // extern ? func_802B63B8(f32 *, f32 *); // extern f32 sins(s32); // extern f32 coss(f32, f32, s32, s32); // extern extern ? D_800E3CE8; extern ? D_800E3CF4; extern ? D_800E3D00; extern ? D_800E3D0C; extern s32 D_800E3D18; extern f64 D_800ED7E0; extern f64 D_800ED7E8; extern f32 D_800ED7F0; extern f64 D_800ED7F8; extern f64 D_800ED800; extern f64 D_800ED808; extern f64 D_800ED810; extern f64 D_800ED818; extern f64 D_800ED820; extern f64 D_800ED828; extern f64 D_800ED830; extern f32 D_800ED838; extern f64 D_800ED840; extern ? gKartTopSpeedTable; void func_8002D268(Player *player, s32 arg1, s8 arg2, s8 arg3) { f32 sp18C; f32 sp184; f32 sp180; f32 sp17C; f32 sp178; f32 sp16C; f32 sp160; ? sp104; f32 spFC; f32 spF8; f32 spF4; f32 spF0; f32 spE8; f32 spB4; f32 spB0; f32 spAC; f32 spA8; f32 spA0; f32 sp9C; f32 sp98; ? sp8C; s32 sp7C; f32 sp60; f32 *sp58; struct_D_8018CE10 *sp54; ? *temp_t7; f32 (*temp_v0_18)[3]; f32 *temp_a1; f32 *temp_v0_19; f32 temp_f0; f32 temp_f0_2; f32 temp_f0_7; f32 temp_f0_8; f32 temp_f0_9; f32 temp_f12; f32 temp_f12_2; f32 temp_f12_3; f32 temp_f12_6; f32 temp_f12_7; f32 temp_f14; f32 temp_f14_2; f32 temp_f14_3; f32 temp_f2_2; f32 temp_f2_3; f32 temp_f2_7; f32 temp_f2_8; f32 temp_f2_9; f32 temp_f4; f64 temp_f0_3; f64 temp_f0_4; f64 temp_f0_5; f64 temp_f0_6; f64 temp_f12_4; f64 temp_f12_5; f64 temp_f14_4; f64 temp_f14_5; f64 temp_f14_6; f64 temp_f16; f64 temp_f16_2; f64 temp_f16_3; f64 temp_f18; f64 temp_f2; f64 temp_f2_4; f64 temp_f2_5; f64 temp_f2_6; f64 temp_f8; s16 temp_t6_2; s16 temp_v0_11; s16 temp_v0_13; s16 temp_v0_15; s16 temp_v0_4; s16 temp_v0_5; s16 temp_v0_6; s16 temp_v0_7; s16 temp_v0_9; s32 *temp_t6; s32 temp_f6; s32 temp_t4; s32 temp_t4_2; s32 temp_t5; s32 temp_v0_16; s32 temp_v0_2; s32 temp_v0_3; s32 temp_v1; s32 temp_v1_2; s32 temp_v1_3; struct_D_8018CE10 *temp_t9; u16 temp_v0; u16 temp_v0_10; u16 temp_v0_12; u16 temp_v0_14; u16 temp_v0_17; u16 temp_v0_8; s32 *phi_t6; ? *phi_t7; s32 phi_v0; f32 phi_f12; f32 phi_f14; f64 phi_f14_2; f64 phi_f16; s32 phi_v1; s32 phi_v1_2; sp184.unk0 = D_800E3CE8.unk0; sp184.unk4 = D_800E3CE8.unk4; sp184.unk8 = D_800E3CE8.unk8; sp178.unk0 = D_800E3CF4.unk0; sp178.unk4 = D_800E3CF4.unk4; sp178.unk8 = D_800E3CF4.unk8; sp16C.unk0 = D_800E3D00.unk0; sp16C.unk4 = D_800E3D00.unk4; sp16C.unk8 = D_800E3D00.unk8; sp160.unk0 = D_800E3D0C.unk0; sp160.unk4 = D_800E3D0C.unk4; sp160.unk8 = D_800E3D0C.unk8; phi_t6 = &D_800E3D18; phi_t7 = &sp104; do { temp_t6 = phi_t6 + 0xC; temp_t7 = phi_t7 + 0xC; temp_t7->unk-C = *phi_t6; temp_t7->unk-8 = temp_t6->unk-8; temp_t7->unk-4 = temp_t6->unk-4; phi_t6 = temp_t6; phi_t7 = temp_t7; } while (temp_t6 != (&D_800E3D18 + 0x54)); temp_t7->unk0 = temp_t6->unk0; temp_t7->unk4 = temp_t6->unk4; sp7C = 0; func_80027EDC(player, arg3); func_8002C11C(player); if ((player->unk_000 & 0x4000) == 0x4000) { func_8002A79C(player, arg3); } func_8002B830(player, arg3, arg2); temp_v0 = player->unk_000; if (((temp_v0 & 0x4000) == 0x4000) && ((temp_v0 & 0x100) != 0x100)) { func_8002BF4C(player, arg3); } func_8002CD48(player, arg3, arg2); if (((player->unk_0BC & 0x20000000) == 0x20000000) && (player->unk_228 >= 0x64)) { sp7C = 2; } func_80037BB4(player, &sp160); func_8002AB70(player); func_8002FCA8(player, arg3); if ((player->unk_044 & 1) != 0) { player->unk_064 *= -1.0f; player->unk_06C *= -1.0f; } if ((player->unk_1D4 == 1) && (player->unk_1EC == 1)) { temp_f0 = player->unk_100; temp_f12 = player->unk_064 + sp16C; temp_f2 = D_800ED7E0; spB4 = ((-player->unk_140 * temp_f0) * temp_f2) + (-1.0f * temp_f12); spB0 = -player->unk_144 * temp_f0; temp_f14 = player->unk_06C + sp174; spAC = ((-player->unk_148 * temp_f0) * temp_f2) + (-1.0f * temp_f14); phi_f12 = temp_f12; phi_f14 = temp_f14; } else { temp_f6 = ((player->unk_094 / 18.0f) * 216.0f) / 10.0f; phi_v0 = temp_f6; if (temp_f6 >= 0xA) { phi_v0 = 0xA; } temp_f0_2 = player->unk_100; temp_f12_2 = player->unk_064 + sp16C; temp_f2_2 = (sp + (phi_v0 * 4))->unk104; spB4 = (temp_f2_2 * (-player->unk_140 * temp_f0_2)) + (-1.0f * temp_f12_2); spB0 = -player->unk_144 * temp_f0_2; temp_f14_2 = player->unk_06C + sp174; spAC = (temp_f2_2 * (-player->unk_148 * temp_f0_2)) + (-1.0f * temp_f14_2); phi_f12 = temp_f12_2; phi_f14 = temp_f14_2; } temp_v0_2 = player->unk_0BC; temp_v1 = temp_v0_2 & 8; if ((temp_v1 != 8) && ((temp_v0_2 & 0x20) == 0x20)) { spB4 = phi_f12 * 0.0f; spAC = phi_f14 * 0.0f; spB0 = (player->unk_100 * -1.0f) / 4.0f; } if (temp_v1 == 8) { spB4 = phi_f12 * 0.0f; spB0 = player->unk_100 * -1.0f; spAC = phi_f14 * 0.0f; } sp60 = coss(phi_f12, phi_f14, (player->unk_02E + player->unk_0C0) & 0xFFFF, 1); temp_a1 = player->unk_174; temp_f2_3 = (sins((player->unk_02E + player->unk_0C0) & 0xFFFF) * -(player->rotX - player->posX)) + ((player->rotZ - player->posZ) * sp60); if (D_800ED7E8 < temp_f2_3) { player->unk_044 |= 8; } else { player->unk_044 &= 0xFFF7; } if ((player->unk_08C <= 0.0f) && (temp_v0_3 = player->unk_0BC, ((temp_v0_3 & 1) == 1)) && ((temp_v0_3 & 0x20) != 0x20)) { sp180 = temp_f2_3 * D_800ED7F0; } else { sp180 = 0.0f; } sp17C = 0.0f; sp58 = temp_a1; func_802B63B8(&sp178, temp_a1); temp_f14_3 = spAC; temp_f12_3 = temp_f14_3 + sp180; spB4 += sp178; spAC = temp_f12_3; func_8002C7E4(temp_f12_3, temp_f14_3, player, arg3, arg2); sp18C = func_80030150(player, arg3); func_802B63B8(&sp184, temp_a1); sp98 = player->unk_034; sp9C = player->unk_038; spA0 = player->unk_03C; if (((player->unk_10C < 3) && (player->unk_256 < 3)) || ((player->unk_0BC & 0x2000) == 0x2000)) { temp_t4 = player->unk_07C >> 0x10; if ((temp_t4 >= 0x28) || (temp_t4 < -0x27)) { temp_f0_5 = sp98; temp_f14_6 = D_800ED7F8; temp_f12_5 = sp7C; temp_f16_3 = D_800ED800; temp_f18 = D_800ED808; temp_f2_6 = spA0; sp98 = temp_f0_5 + ((((sp184 + spB4 + sp160) - (temp_f0_5 * (temp_f14_6 * player->unk_0FC))) / temp_f16_3) / ((player->unk_20C * temp_f18) + 1.0 + temp_f12_5)); spA0 = temp_f2_6 + ((((sp18C + spAC + sp168) - (temp_f2_6 * (temp_f14_6 * player->unk_0FC))) / temp_f16_3) / ((player->unk_20C * temp_f18) + 1.0 + temp_f12_5)); phi_f14_2 = temp_f14_6; phi_f16 = temp_f16_3; } else { temp_f0_4 = sp98; temp_f14_5 = D_800ED810; temp_f12_4 = sp7C + 1; temp_f16_2 = D_800ED818; temp_f2_5 = spA0; sp98 = temp_f0_4 + ((((sp184 + spB4 + sp160) - (temp_f0_4 * (temp_f14_5 * player->unk_0FC))) / temp_f16_2) / temp_f12_4); spA0 = temp_f2_5 + ((((sp18C + spAC + sp168) - (temp_f2_5 * (temp_f14_5 * player->unk_0FC))) / temp_f16_2) / temp_f12_4); phi_f14_2 = temp_f14_5; phi_f16 = temp_f16_2; } } else { temp_f0_3 = sp98; temp_f14_4 = D_800ED820; temp_f16 = D_800ED828; temp_f2_4 = spA0; sp98 = temp_f0_3 + ((((sp184 + spB4 + sp160) - (temp_f0_3 * (temp_f14_4 * player->unk_0FC))) / temp_f16) / 30.0); spA0 = temp_f2_4 + ((((sp18C + spAC + sp168) - (temp_f2_4 * (temp_f14_4 * player->unk_0FC))) / temp_f16) / 30.0); phi_f14_2 = temp_f14_4; phi_f16 = temp_f16; } temp_f0_6 = sp9C; sp9C = temp_f0_6 + ((((sp188 + spB0 + sp164) - (temp_f0_6 * (phi_f14_2 * player->unk_0FC))) / phi_f16) / player->unk_DAC); temp_v0_4 = player->unk_0CA; if (((temp_v0_4 & 2) == 2) || ((temp_v0_4 & 8) == 8) || ((player->unk_0BC & 0x4000000) == 0x4000000) || ((temp_v0_4 & 1) != 0)) { sp98 = 0.0f; sp9C = 0.0f; spA0 = 0.0f; } temp_v0_5 = player->unk_044; if ((temp_v0_5 & 0x10) == 0x10) { player->unk_044 = temp_v0_5 & 0xFFEF; } temp_f0_7 = player->pos[0]; spF0 = temp_f0_7; temp_f2_7 = player->pos[2]; temp_f12_6 = player->pos[1]; spE8 = temp_f2_7; player->rotX = temp_f0_7; player->rotZ = temp_f2_7; player->rotY = temp_f12_6; temp_t9 = &D_8018CE10[arg3]; sp54 = temp_t9; spFC = temp_t9->unk_04 + (temp_f0_7 + player->unk_034); spF8 = player->unk_038 + temp_f12_6; spF4 = temp_t9->unk_0C + (spE8 + player->unk_03C); temp_v0_6 = player->unk_0CA; if (((temp_v0_6 & 2) != 2) && ((temp_v0_6 & 8) != 8) && ((player->unk_0BC & 0x4000000) != 0x4000000) && ((temp_v0_6 & 1) == 0)) { func_8002AAC0(temp_f12_6, phi_f14_2, player); temp_f4 = spF8 + player->unk_0EC; temp_f8 = temp_f4; spF8 = temp_f4; spF8 = temp_f8 - D_800ED830; } func_802AD950(&player->unk_110, player->boundingBoxSize, spFC, spF8, spF4, player->rotX, player->rotY, player->rotZ); player->unk_058 = 0.0f; player->unk_060 = 0.0f; player->unk_05C = 1.0f; if ((player->unk_044 & 1) != 1) { func_802B6540(sp58, player->unk_058, player->unk_05C, player->unk_060, player->unk_02E); } else { func_802B6540(sp58, player->unk_058, player->unk_05C, player->unk_060, player->unk_02E + 0x8000); } player->unk_0BC |= 8; player->unk_0C2 += 1; spA8 = player->unk_124; if (spA8 <= 0.0f) { temp_v0_7 = player->unk_0C2; temp_t4_2 = player->unk_0BC & ~2; temp_t5 = temp_t4_2 & ~8; player->unk_0BC = temp_t4_2; player->unk_0BC = temp_t5; if (temp_v0_7 >= 0x23) { if (temp_v0_7 >= 0x32) { player->unk_0C2 = 0x32; } temp_v0_8 = player->unk_000; temp_v1_2 = temp_v0_8 & 0x4000; player->unk_DCC = 0; player->unk_0B6 = player->unk_0B6 | 0x100; player->unk_DC0 = 3.0f; phi_v1 = temp_v1_2; if ((temp_v1_2 == 0x4000) && ((player->unk_0BC & 0x100000) == 0x100000) && ((temp_v0_8 & 0x100) != 0x100)) { func_800C9060(arg3, 0x1900A60A); phi_v1 = player->unk_000 & 0x4000; } else if ((temp_v1_2 == 0x4000) && ((temp_v0_8 & 0x100) != 0x100)) { func_800CADD0(arg3, player->unk_0C2 / 35.0f); phi_v1 = player->unk_000 & 0x4000; } if (phi_v1 == 0x4000) { player->unk_044 |= 0x100; } } temp_v0_9 = player->unk_0C2; if ((temp_v0_9 < 0x23) && (temp_v0_9 >= 0x1C) && (((player->unk_094 / 18.0f) * 216.0f) >= 20.0f)) { temp_v0_10 = player->unk_000; temp_v1_3 = temp_v0_10 & 0x4000; player->unk_DCC = 0; player->unk_DC0 = D_800ED838; phi_v1_2 = temp_v1_3; if ((temp_v1_3 == 0x4000) && ((temp_v0_10 & 0x100) != 0x100)) { func_800CADD0(arg3, player->unk_0C2 / 35.0f); phi_v1_2 = player->unk_000 & 0x4000; } if (phi_v1_2 == 0x4000) { player->unk_044 |= 0x100; } } temp_v0_11 = player->unk_0C2; if ((temp_v0_11 < 0x1C) && (temp_v0_11 >= 4) && (((player->unk_094 / 18.0f) * 216.0f) >= 20.0f)) { temp_v0_12 = player->unk_000; player->unk_DCC = 0; player->unk_DC0 = 1.5f; if (((temp_v0_12 & 0x4000) == 0x4000) && ((temp_v0_12 & 0x100) != 0x100)) { temp_v0_13 = player->unk_0C2; if ((temp_v0_13 < 0xB) && (temp_v0_13 >= 4) && (gCurrentCourseId == 2)) { func_800CADD0(arg3, temp_v0_13 / 14.0f); } else { func_800CADD0(arg3, temp_v0_13 / 25.0f); } } } player->unk_0C2 = 0; player->unk_0EC = player->unk_0C2; } spA8 = player->unk_124; if (spA8 <= 0.0f) { func_8003F46C(player, &sp8C, &sp98, &sp178, &spA8, &spFC, &spF8, &spF4); } spA8 = player->unk_11C; if (spA8 < 0.0f) { func_8003F734(player, &sp8C, &sp98, &spA8, &spFC, &spF8, &spF4); func_8002C954(player, arg3, &sp98); } spA8 = player->unk_120; if (spA8 < 0.0f) { func_8003FBAC(player, &sp8C, &sp98, &spA8, &spFC, &spF8, &spF4); func_8002C954(player, arg3, &sp98); } spA8 = player->unk_11C; if (spA8 >= 0.0f) { spA8 = player->unk_120; if (spA8 >= 0.0f) { temp_v0_14 = player->unk_256; player->unk_046 = player->unk_046 & 0xFFDF; if (temp_v0_14 != 0) { temp_t6_2 = temp_v0_14 + 1; player->unk_256 = temp_t6_2; if ((temp_t6_2 & 0xFFFF) >= 0xA) { player->unk_256 = 0; } } } } if (((player->unk_0BC & 8) == 0) && (func_802ABDB8(player->unk_11A) != 0) && ((player->unk_0BC & 0x10000) != 0x10000)) { temp_v0_15 = player->unk_0CA; if (((temp_v0_15 & 2) == 0) || ((temp_v0_15 & 8) == 0)) { func_8008F494(player, arg3); } } else if (((player->unk_0BC & 8) == 0) && (func_802ABDB8(player->unk_11A) == 0) && (player->unk_0BC & 0x10000)) { func_8008F5A4(player, arg3); } player->unk_074 = func_802ABE30(spFC, spF8, spF4, player->unk_11A); if (((player->unk_000 & 0x4000) == 0x4000) && ((temp_v0_16 = gActiveScreenMode, (temp_v0_16 == 0)) || (temp_v0_16 == 2) || (temp_v0_16 == 1))) { func_80029B4C(player, spFC, spF8, spF4); } else { func_8002A194(player, spFC, spF8, spF4); } func_8002AE38(player, arg3, spF0, spE8, spFC, spF4); player->unk_22C = player->unk_094; player->unk_094 = sqrtf((spA0 * spA0) + (sp98 * sp98)); if ((player->unk_08C <= 0.0f) && (player->unk_094 <= D_800ED840) && (sp54->unk_04 == 0.0f) && (sp54->unk_0C == 0.0f)) { sp98 += sp98 * -1.0f; spA0 += spA0 * -1.0f; } else { player->posX = spFC; player->posZ = spF4; } temp_v0_17 = player->unk_000; player->pos[1] = spF8; if (((temp_v0_17 & 0x4000) != 0) && ((temp_v0_17 & 0x1000) == 0)) { func_8002BB9C(player, &spFC, &spF4, arg2, arg3, &sp98); } player->unk_064 = sp178; player->unk_06C = sp180; player->unk_034 = sp98; player->unk_038 = sp9C; player->unk_03C = spA0; temp_v0_18 = &D_80165070[arg3]; temp_v0_18->unk0 = sp98; temp_v0_18->unk4 = sp9C; temp_v0_18->unk8 = spA0; if ((player->unk_000 & 0x4000) == 0x4000) { temp_f2_8 = player->unk_094; temp_v0_19 = (player->characterId * 4) + &gKartTopSpeedTable; temp_f12_7 = *temp_v0_19; if (temp_f12_7 < temp_f2_8) { temp_f0_8 = temp_f12_7 / temp_f2_8; player->unk_034 *= temp_f0_8; player->unk_038 *= temp_f0_8; player->unk_03C *= temp_f0_8; player->unk_094 = *temp_v0_19; } } if ((player->unk_044 & 1) == 1) { temp_f2_9 = player->unk_094; if (temp_f2_9 > 1.0f) { temp_f0_9 = 1.0f / temp_f2_9; player->unk_094 = 1.0f; player->unk_034 *= temp_f0_9; player->unk_038 *= temp_f0_9; player->unk_03C *= temp_f0_9; } } if (player->unk_124 >= 500.0f) { player->unk_078 = player->unk_078 / 2; } func_8002C4F8(player, arg3); } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002D268.s") #endif void func_8002E4C4(Player *player) { s32 player_index; player_index = get_player_index_for_player(player); player->kartHopJerk = 0.0f; player->kartHopAcceleration = 0.0f; player->kartHopVelocity = 0.0f; player->pos[1] = func_802AE1C0(player->pos[0], D_80164510[player_index] + 10.0f, player->pos[2]) + player->boundingBoxSize; if (((player->pos[1] - D_80164510[player_index]) > 1200.0f) || ((player->pos[1] - D_80164510[player_index]) < -1200.0f)) { player->pos[1] = player->rotY; } player->unk_038 = 0.0f; } #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_80029B4C(void *, f32, f32, f32); // extern ? func_8002A194(void *, f32, f32, f32); // extern ? func_8002AAC0(f64, f64, void *); // extern ? func_8002AB70(void *); // extern ? func_8002AE38(void *, s8, f32, f32, f32, f32); // extern ? func_8002B830(s8, s8); // extern ? func_8002C4F8(void *, s8); // extern ? func_8002C7E4(void *, s8, s8); // extern ? func_8002C954(void *, s8, f32 *); // extern ? func_8002CD48(void *, s8, s8); // extern ? func_8002FCA8(void *, s8); // extern f32 func_80030150(void *, s8); // extern ? func_80031F48(void *, ?); // extern ? func_8003F46C(void *, ? *, f32 *, f32 *, f32 *, f32 *, f32 *, f32 *); // extern ? func_8003F734(void *, ? *, f32 *, f32 *, f32 *, f32 *, f32 *); // extern ? func_8003FBAC(void *, ? *, f32 *, f32 *, f32 *, f32 *, f32 *); // extern ? func_8008F494(void *, s8); // extern ? func_8008F5A4(void *, s8); // extern ? func_800CADD0(u8, f32); // extern s32 func_802ABDB8(u16); // extern f32 func_802ABE30(f32, f32, f32, u16); // extern ? func_802AD950(void *, s32, f32, f32, f32, f32, f32, f32); // extern ? func_802B63B8(f32 *, f32 *); // extern extern ? D_800E3D74; extern ? D_800E3D80; extern ? D_800E3D8C; extern f64 D_800ED848; extern f64 D_800ED850; extern f64 D_800ED858; extern f64 D_800ED860; extern f64 D_800ED868; extern f64 D_800ED870; extern f64 D_800ED878; extern f32 D_800ED880; extern f32 D_800ED884; extern f64 D_800ED888; extern f64 D_800ED890; extern ? gKartTopSpeedTable; void func_8002E594(void *arg0, ? arg1, s8 arg2, s8 arg3) { f32 spF4; f32 spEC; f32 spE0; f32 spD4; f32 spD0; f32 spCC; f32 spC8; f32 spBC; f32 spB4; f32 sp80; f32 sp7C; f32 sp78; f32 sp74; f32 sp5C; f32 sp58; f32 sp54; ? sp48; s16 sp46; f32 *sp40; f32 *temp_a0; f32 *temp_a0_2; f32 *temp_v0_15; f32 temp_f0; f32 temp_f0_5; f32 temp_f0_6; f32 temp_f12_3; f32 temp_f18; f32 temp_f2_4; f32 temp_f2_5; f32 temp_f4; f32 temp_f6; f64 temp_f0_2; f64 temp_f0_3; f64 temp_f0_4; f64 temp_f12; f64 temp_f12_2; f64 temp_f14; f64 temp_f14_2; f64 temp_f16; f64 temp_f2; f64 temp_f2_2; f64 temp_f2_3; s16 temp_v0_10; s16 temp_v0_12; s16 temp_v0_4; s16 temp_v0_6; s16 temp_v0_8; s32 temp_t1; s32 temp_t5; s32 temp_v0; s32 temp_v0_13; s32 temp_v0_14; s32 temp_v0_2; s32 temp_v0_3; s32 temp_v0_7; s32 temp_v0_9; s32 temp_v1_4; struct_D_8018CE10 *temp_v0_5; u16 temp_t8; u16 temp_v0_11; u16 temp_v1; u16 temp_v1_2; u16 temp_v1_3; f64 phi_f14; f64 phi_f12; s32 phi_v0; s32 phi_v0_2; s32 phi_v0_3; s32 phi_v0_4; f32 phi_f0; f32 phi_f0_2; f32 phi_f0_3; f32 phi_f0_4; f32 phi_f0_5; spEC.unk0 = D_800E3D74.unk0; spEC.unk4 = D_800E3D74.unk4; spEC.unk8 = D_800E3D74.unk8; spE0.unk0 = D_800E3D80.unk0; spE0.unk4 = D_800E3D80.unk4; spE0.unk8 = D_800E3D80.unk8; spD4.unk0 = D_800E3D8C.unk0; spD4.unk4 = D_800E3D8C.unk4; spD4.unk8 = D_800E3D8C.unk8; func_8002B830(arg3, arg2); temp_v0 = arg0->unkBC; if (((temp_v0 & 0x80) == 0x80) || ((temp_v0 & 0x40) == 0x40) || ((temp_v0 & 0x4000) == 0x4000) || ((temp_v0 & 0x80000) == 0x80000) || ((temp_v0 & 0x800000) == 0x800000) || ((temp_v0 & 0x20000) == 0x20000) || ((arg0->unk44 & 0x800) != 0)) { sp46 = 1; } else { sp46 = 0; } func_8002CD48(arg0, arg3, arg2); func_8002AB70(arg0); func_8002FCA8(arg0, arg3); temp_v0_2 = arg0->unkBC; if (((temp_v0_2 & 0x80) == 0x80) || ((temp_v0_2 & 0x40) == 0x40) || ((temp_v0_2 & 0x20000) == 0x20000)) { temp_f2 = D_800ED848; temp_f0 = arg0->unk100; sp80 = ((-arg0->unk140 * temp_f0) * temp_f2) + (-1.0f * arg0->unk64); sp7C = -arg0->unk144 * temp_f0; sp78 = ((-arg0->unk148 * temp_f0) * temp_f2) + (-1.0f * arg0->unk6C); } else { sp80 = arg0->unk64 * -1.0f; sp7C = arg0->unk100 * -1.0f; sp78 = arg0->unk6C * -1.0f; } func_8002C7E4(arg0, arg3, arg2); if (sp46 == 1) { temp_a0 = arg0 + 0x174; sp40 = temp_a0; func_802B6540(temp_a0, arg0->unk58, arg0->unk5C, arg0->unk60, arg0->unk2E); func_802B6540(arg0 + 0x150, arg0->unk58, arg0->unk5C, arg0->unk60, arg0->unkAE); } else { temp_a0_2 = arg0 + 0x174; sp40 = temp_a0_2; func_802B6540(temp_a0_2, arg0->unk58, arg0->unk5C, arg0->unk60, arg0->unk2E); } spF4 = func_80030150(arg0, arg3); if (sp46 == 1) { func_802B63B8(&spEC, arg0 + 0x150); } else { func_802B63B8(&spEC, sp40); } sp54 = arg0->unk34; sp58 = arg0->unk38; sp5C = arg0->unk3C; if ((arg0->unk10C < 3) && (arg0->unk256 < 3) && (temp_v0_3 = arg0->unkBC, ((temp_v0_3 & 0x400) != 0x400)) && ((temp_v0_3 & 0x1000000) != 0x1000000) && ((temp_v0_3 & 0x2000000) != 0x2000000)) { temp_f0_2 = sp54; temp_f12 = D_800ED850; temp_f14 = D_800ED858; temp_f2_2 = sp5C; sp54 = temp_f0_2 + ((((spEC + sp80 + spD4) - (temp_f0_2 * (temp_f14 * arg0->unkFC))) / temp_f12) / ((arg0->unk20C * 5.0f) + 1.0f)); sp5C = temp_f2_2 + ((((spF4 + sp78 + spDC) - (temp_f2_2 * (temp_f14 * arg0->unkFC))) / temp_f12) / ((arg0->unk20C * 5.0f) + 1.0f)); phi_f14 = temp_f14; phi_f12 = temp_f12; } else { temp_f0_3 = sp54; temp_f12_2 = D_800ED860; temp_f14_2 = D_800ED868; temp_f16 = D_800ED870; temp_f2_3 = sp5C; sp54 = temp_f0_3 + ((((spEC + sp80 + spD4) - (temp_f0_3 * (temp_f14_2 * arg0->unkFC))) / temp_f12_2) * temp_f16); sp5C = temp_f2_3 + ((((spF4 + sp78 + spDC) - (temp_f2_3 * (temp_f14_2 * arg0->unkFC))) / temp_f12_2) * temp_f16); phi_f14 = D_800ED878; phi_f12 = temp_f12_2; } temp_f0_4 = sp58; sp58 = temp_f0_4 + ((((spF0 + sp7C + spD8) - (temp_f0_4 * (phi_f14 * arg0->unkFC))) / phi_f12) / arg0->unkDAC); temp_v0_4 = arg0->unkCA; if (((temp_v0_4 & 2) == 2) || ((temp_v0_4 & 8) == 8)) { sp58 = 0.0f; sp54 = 0.0f; sp5C = 0.0f; } temp_f0_5 = arg0->unk14; spBC = temp_f0_5; temp_f2_4 = arg0->unk18; temp_f18 = arg0->unk1C; arg0->unk20 = temp_f0_5; arg0->unk24 = temp_f2_4; arg0->unk28 = temp_f18; temp_v0_5 = &D_8018CE10[arg3]; spD0 = temp_v0_5->unk_04 + (temp_f0_5 + arg0->unk34); spCC = arg0->unk38 + temp_f2_4; spB4 = temp_f18; temp_f6 = temp_v0_5->unk_0C + (temp_f18 + arg0->unk3C); spC8 = temp_f6; func_8002AAC0(phi_f12, phi_f14, arg0); temp_f4 = spCC + arg0->unkEC; spCC = temp_f4; func_802AD950(arg0 + 0x110, arg0->unk70, spD0, temp_f4, temp_f6, arg0->unk20, arg0->unk24, arg0->unk28); arg0->unkBC = arg0->unkBC | 8; arg0->unkC2 = arg0->unkC2 + 1; arg0->unk58 = 0.0f; arg0->unk60 = 0.0f; arg0->unk5C = 1.0f; sp74 = arg0->unk124; phi_f0 = 0.0f; phi_f0_2 = 0.0f; phi_f0_3 = 0.0f; phi_f0_4 = 0.0f; phi_f0 = 0.0f; phi_f0_5 = 0.0f; phi_f0 = 0.0f; if (sp74 <= 0.0f) { temp_t1 = arg0->unkBC & ~2; temp_t5 = temp_t1 & ~8; arg0->unkBC = temp_t1; arg0->unkBC = temp_t5; if (((temp_t5 & 0x400) != 0x400) && ((temp_t5 & 0x1000000) != 0x1000000) && ((temp_t5 & 0x2000000) != 0x2000000)) { temp_v0_6 = arg0->unkC2; if (temp_v0_6 >= 0x1C) { if (temp_v0_6 >= 0x32) { arg0->unkC2 = 0x32; } temp_v1 = arg0->unk0; temp_v0_7 = temp_v1 & 0x4000; arg0->unkDCC = 0; arg0->unkB6 = arg0->unkB6 | 0x100; arg0->unkDC0 = 3.0f; phi_v0 = temp_v0_7; if ((temp_v0_7 == 0x4000) && ((temp_v1 & 0x100) != 0x100)) { func_800CADD0(arg3, arg0->unkC2 / 50.0f); phi_v0 = arg0->unk0 & 0x4000; } phi_f0_5 = 0.0f; if (phi_v0 == 0x4000) { arg0->unk44 = arg0->unk44 | 0x100; } } temp_v0_8 = arg0->unkC2; phi_f0 = phi_f0_5; phi_f0 = phi_f0_5; if ((temp_v0_8 < 0x1C) && (temp_v0_8 >= 0xA) && (((arg0->unk94 / 18.0f) * 216.0f) >= 20.0f)) { temp_v1_2 = arg0->unk0; temp_v0_9 = temp_v1_2 & 0x4000; arg0->unkDCC = 0; arg0->unkDC0 = 2.0f; phi_v0_2 = temp_v0_9; if ((temp_v0_9 == 0x4000) && ((temp_v1_2 & 0x100) != 0x100)) { func_800CADD0(arg3, arg0->unkC2 / 50.0f); phi_v0_2 = arg0->unk0 & 0x4000; } if (phi_v0_2 == 0x4000) { arg0->unk44 = arg0->unk44 | 0x100; } } goto block_63; } temp_v0_10 = arg0->unkC2; if (temp_v0_10 >= 0xA) { if (temp_v0_10 >= 0x32) { arg0->unkC2 = 0x32; } temp_v1_3 = arg0->unk0; phi_v0_3 = arg0->unkC2; if (((temp_v1_3 & 0x4000) == 0x4000) && ((temp_v1_3 & 0x100) != 0x100)) { func_800CADD0(arg3, arg0->unkC2 / 20.0f); phi_v0_3 = arg0->unkC2; } phi_v0_4 = phi_v0_3; phi_f0 = 0.0f; if (phi_v0_3 >= 0x28) { arg0->unkC2 = 0x14; phi_v0_4 = arg0->unkC2; } if ((arg0->unkBC & 0x400) == 0x400) { arg0->unkC2 = phi_v0_4 / 6.5; arg0->unkF4 = 0.0f; arg0->unkF0 = D_800ED880; } else { arg0->unkC2 = phi_v0_4 / 7.5; arg0->unkF4 = 0.0f; arg0->unkF0 = D_800ED884; if ((arg0->unk0 & 0x4000) == 0x4000) { arg0->unk44 = arg0->unk44 | 0x100; } } } else { block_63: arg0->unkC2 = 0; } arg0->unkEC = arg0->unkC2; } sp74 = arg0->unk124; phi_f0_2 = phi_f0; if (sp74 <= phi_f0) { func_8003F46C(arg0, &sp48, &sp54, &spE0, &sp74, &spD0, &spCC, &spC8); } sp74 = arg0->unk11C; phi_f0_3 = phi_f0_2; if (sp74 < phi_f0_2) { func_8003F734(arg0, &sp48, &sp54, &sp74, &spD0, &spCC, &spC8); func_8002C954(arg0, arg3, &sp54); func_80031F48(arg0, 0x40C00000); } sp74 = arg0->unk120; phi_f0_4 = phi_f0_3; if (sp74 < phi_f0_3) { func_8003FBAC(arg0, &sp48, &sp54, &sp74, &spD0, &spCC, &spC8); func_8002C954(arg0, arg3, &sp54); func_80031F48(arg0, 0x40C00000); } sp74 = arg0->unk11C; if (phi_f0_4 <= sp74) { sp74 = arg0->unk120; if (phi_f0_4 <= sp74) { temp_v0_11 = arg0->unk256; arg0->unk46 = arg0->unk46 & 0xFFDF; if (temp_v0_11 != 0) { temp_t8 = temp_v0_11 + 1; arg0->unk256 = temp_t8; if ((temp_t8 & 0xFFFF) >= 0xA) { arg0->unk256 = 0; } } } } if ((func_802ABDB8(arg0->unk11A) != 0) && ((arg0->unkBC & 0x10000) != 0x10000) && (((arg0->unk94 / 18.0f) * 216.0f) >= 20.0f)) { temp_v0_12 = arg0->unkCA; if (((temp_v0_12 & 2) == 0) || ((temp_v0_12 & 8) == 0)) { func_8008F494(arg0, arg3); } } else if (((arg0->unkBC & 8) == 0) && (func_802ABDB8(arg0->unk11A) == 0) && (arg0->unkBC & 0x10000)) { func_8008F5A4(arg0, arg3); } arg0->unk74 = func_802ABE30(spD0, spCC, spC8, arg0->unk11A); if (((arg0->unk0 & 0x4000) == 0x4000) && ((temp_v0_13 = gActiveScreenMode, (temp_v0_13 == 0)) || (temp_v0_13 == 2) || (temp_v0_13 == 1))) { func_80029B4C(arg0, spD0, spCC, spC8); } else { func_8002A194(arg0, spD0, spCC, spC8); } func_8002AE38(arg0, arg3, spBC, spB4, spD0, spC8); arg0->unk22C = arg0->unk94; temp_v0_14 = arg0->unkBC; arg0->unk94 = sqrtf((sp5C * sp5C) + (sp54 * sp54)); temp_v1_4 = temp_v0_14 & 0x400; if (((temp_v1_4 != 0x400) && (arg0->unk8C <= 0.0f) && (arg0->unk94 < D_800ED888)) || ((temp_v1_4 != 0x400) && (arg0->unk8C <= 0.0f) && (arg0->unk94 < D_800ED890) && ((temp_v0_14 & 1) == 1))) { sp54 += sp54 * -1.0f; sp5C += sp5C * -1.0f; } else { arg0->unk14 = spD0; arg0->unk1C = spC8; } arg0->unk18 = spCC; arg0->unk64 = spE0; arg0->unk6C = spE8; arg0->unk34 = sp54; arg0->unk38 = sp58; arg0->unk3C = sp5C; if ((arg0->unk0 & 0x4000) == 0x4000) { temp_f2_5 = arg0->unk94; temp_v0_15 = (arg0->unk254 * 4) + &gKartTopSpeedTable; temp_f12_3 = *temp_v0_15; if (temp_f12_3 < temp_f2_5) { temp_f0_6 = temp_f12_3 / temp_f2_5; arg0->unk34 = arg0->unk34 * temp_f0_6; arg0->unk38 = arg0->unk38 * temp_f0_6; arg0->unk3C = arg0->unk3C * temp_f0_6; arg0->unk94 = *temp_v0_15; } } func_8002C4F8(arg0, arg3); } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002E594.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_8002B830(s8, s8); // extern ? func_8002CD48(void *, s8, s8); // extern f32 func_80030150(void *, s8); // extern ? func_802B63B8(f32 *, f32 *); // extern extern ? D_800E3D98; extern ? D_800E3DA4; extern ? D_800E3DB0; extern ? D_800E3DBC; extern f64 D_800ED898; extern f64 D_800ED8A0; extern ? gKartTopSpeedTable; void control_cpu_movement(void *arg0, ? arg1, s8 arg2, s8 arg3) { f32 spFC; f32 spF4; ? spE8; f32 spDC; f32 spD0; f32 spCC; f32 spC4; f32 sp84; f32 sp7C; f32 sp70; f32 sp6C; f32 sp68; f32 sp40; f32 *sp3C; f32 (*temp_v0)[3]; f32 *temp_a1; f32 *temp_v1; f32 temp_f0_2; f32 temp_f12; f32 temp_f12_2; f32 temp_f14; f32 temp_f2_2; f32 temp_f8; f32 temp_f8_2; f64 temp_f0; f64 temp_f16; f64 temp_f18; f64 temp_f2; s32 temp_t1; spF4.unk0 = D_800E3D98.unk0; spF4.unk4 = D_800E3D98.unk4; spF4.unk8 = D_800E3D98.unk8; spE8.unk0 = D_800E3DA4.unk0; spE8.unk8 = D_800E3DA4.unk8; spE8.unk4 = D_800E3DA4.unk4; spDC.unk0 = D_800E3DB0.unk0; spDC.unk4 = D_800E3DB0.unk4; spDC.unk8 = D_800E3DB0.unk8; spD0.unk0 = D_800E3DBC.unk0; spD0.unk4 = D_800E3DBC.unk4; spD0.unk8 = D_800E3DBC.unk8; arg0->unkBC = arg0->unkBC | 0x1000; arg0->unk44 = arg0->unk44 | 0x10; sp40 = D_80164510[arg3]; arg0->unk204 = 0; arg0->unkBC = arg0->unkBC & ~0x10; func_8002B830(arg3, arg2); func_8002CD48(arg0, arg3, arg2); sp84 = spDC + (0.0f * arg0->unk64); sp7C = spE4 + (0.0f * arg0->unk6C); arg0->unk10C = 0; arg0->unk256 = 0; arg0->unkBC = arg0->unkBC & 0xFFFF7FFF; temp_a1 = arg0 + 0x174; spFC = func_80030150(arg0, arg3); sp3C = temp_a1; func_802B63B8(&spF4, temp_a1); sp6C = 0.0f; sp68 = arg0->unk34; sp70 = arg0->unk3C; temp_f0 = sp68; temp_f16 = D_800ED898; temp_f18 = D_800ED8A0; temp_f2 = sp70; temp_f8 = temp_f0 + (((spF4 + sp84 + spD0) - (temp_f0 * (temp_f16 * arg0->unkFC))) / temp_f18); sp68 = temp_f8; temp_f8_2 = temp_f2 + (((spFC + sp7C + spD8) - (temp_f2 * (temp_f16 * arg0->unkFC))) / temp_f18); sp70 = temp_f8_2; temp_f12 = arg0->unk14; temp_f14 = arg0->unk1C; arg0->unk20 = temp_f12; arg0->unk28 = temp_f14; arg0->unk24 = sp40; spCC = arg0->unk34 + temp_f12; spC4 = arg0->unk3C + temp_f14; arg0->unkC0 = 0; arg0->unkF0 = 0.0f; arg0->unkF4 = 0.0f; arg0->unkEC = 0.0f; func_802B6540(sp3C, arg0->unk58, arg0->unk5C, arg0->unk60, arg0->unk2E); arg0->unkC2 = 0; temp_t1 = arg0->unkBC & ~2; arg0->unkBC = temp_t1; arg0->unkBC = temp_t1 & ~8; arg0->unkC4 = 0; arg0->unk206 = 0; arg0->unk22C = arg0->unk94; arg0->unk94 = sqrtf((sp70 * sp70) + (temp_f8 * temp_f8)); arg0->unk14 = spCC; arg0->unk1C = spC4; arg0->unk64 = 0.0f; arg0->unk6C = 0.0f; arg0->unk18 = sp40; temp_v0 = &D_80165070[arg3]; arg0->unk34 = sp68; arg0->unk38 = sp6C; arg0->unk3C = sp70; temp_v0->unk0 = sp68; temp_v0->unk4 = sp6C; temp_v0->unk8 = temp_f8_2; temp_f2_2 = arg0->unk94; temp_v1 = (arg0->unk254 * 4) + &gKartTopSpeedTable; temp_f12_2 = *temp_v1; if (temp_f12_2 < temp_f2_2) { temp_f0_2 = temp_f12_2 / temp_f2_2; arg0->unk34 = arg0->unk34 * temp_f0_2; arg0->unk38 = arg0->unk38 * temp_f0_2; arg0->unk3C = arg0->unk3C * temp_f0_2; arg0->unk94 = *temp_v1; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/control_cpu_movement.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_80029B4C(void *, f32, f32, f32); // extern ? func_8002A194(void *, f32, f32, f32); // extern ? func_8002AAC0(f64, f32, void *); // extern ? func_8002AE38(void *, s8, f32, f32, f32, f32); // extern f32 func_80030150(void *, s8); // extern ? func_80037BB4(? *); // extern ? func_8003F46C(void *, ? *, f32 *, f32 *, f32 *, f32 *, f32 *, f32 *); // extern f32 func_802ABE30(f32, f32, f32, u16); // extern ? func_802AD950(void *, s32, f32, f32, f32, f32, f32, f32); // extern ? func_802B63B8(f32 *, f32 *); // extern extern ? D_800E3DC8; extern ? D_800E3DD4; extern ? D_800E3DE0; extern ? D_800E3DEC; extern f64 D_800ED8A8; extern f64 D_800ED8B0; extern f32 D_800ED8B8; extern f64 D_800ED8C0; extern f64 D_800ED8C8; extern f64 D_800ED8D0; extern ? gKartTopSpeedTable; void func_8002F730(void *arg0, ? arg1, ? arg2, s8 arg3) { f32 spFC; f32 spF4; f32 spE8; ? spDC; ? spD0; f32 spCC; f32 spC8; f32 spC4; f32 spC0; f32 spBC; f32 spB8; f32 sp84; f32 sp7C; f32 sp78; f32 sp70; f32 sp6C; f32 sp68; ? sp5C; f32 *sp4C; f32 sp44; f32 sp34; f32 (*temp_v0_2)[3]; f32 *temp_a1; f32 *temp_v0_3; f32 temp_f0_2; f32 temp_f10; f32 temp_f10_2; f32 temp_f12_2; f32 temp_f14; f32 temp_f2_2; f32 temp_f2_3; f32 temp_f6; f32 temp_f6_2; f32 temp_f6_3; f32 temp_f8; f64 temp_f0; f64 temp_f12; f64 temp_f16; f64 temp_f18; f64 temp_f2; s32 temp_v0; spF4.unk0 = D_800E3DC8.unk0; spF4.unk4 = D_800E3DC8.unk4; spF4.unk8 = D_800E3DC8.unk8; spE8.unk0 = D_800E3DD4.unk0; spE8.unk4 = D_800E3DD4.unk4; spE8.unk8 = D_800E3DD4.unk8; spDC.unk0 = D_800E3DE0.unk0; spDC.unk4 = D_800E3DE0.unk4; spDC.unk8 = D_800E3DE0.unk8; spD0.unk0 = D_800E3DEC.unk0; spD0.unk4 = D_800E3DEC.unk4; spD0.unk8 = D_800E3DEC.unk8; func_80037BB4(&spD0); temp_f6 = arg0->unk64 * 0.0f; sp84 = temp_f6; temp_f10 = arg0->unk6C * 0.0f; sp7C = temp_f10; temp_a1 = arg0 + 0x174; spFC = func_80030150(arg0, arg3); sp4C = temp_a1; func_802B63B8(&spF4, temp_a1); temp_f16 = D_800ED8A8; sp68 = arg0->unk34; sp6C = arg0->unk38; temp_f0 = sp68; sp70 = arg0->unk3C; temp_f18 = D_800ED8B0; temp_f2 = sp70; sp68 = temp_f0 + (((spF4 + temp_f6) - (temp_f0 * temp_f16)) / temp_f18); temp_f12 = sp6C; sp70 = temp_f2 + (((spFC + temp_f10) - (temp_f2 * temp_f16)) / temp_f18); sp6C = temp_f12 + (((spF8 + D_800ED8B8) - (temp_f12 * temp_f16)) / temp_f18); temp_f14 = arg0->unk14; spC0 = temp_f14; temp_f6_2 = arg0->unk18; sp44 = temp_f6_2; spBC = sp44; sp34 = arg0->unk1C; spB8 = sp34; arg0->unk20 = temp_f14; arg0->unk24 = temp_f6_2; arg0->unk28 = sp34; spCC = arg0->unk34 + temp_f14; temp_f10_2 = arg0->unk38 + sp44; spC8 = temp_f10_2; temp_f8 = arg0->unk3C + spB8; spC4 = temp_f8; func_8002AAC0(temp_f12, temp_f14, arg0); temp_f6_3 = temp_f10_2 + arg0->unkEC; spC8 = temp_f6_3; func_802AD950(arg0 + 0x110, arg0->unk70, spCC, temp_f6_3, temp_f8, arg0->unk20, arg0->unk24, arg0->unk28); arg0->unk58 = 0.0f; arg0->unk60 = 0.0f; arg0->unk5C = 1.0f; func_802B6540(sp4C, 0.0f, 1.0f, 0.0f, arg0->unk2E); arg0->unkBC = arg0->unkBC & ~8; sp78 = arg0->unk124; if (sp78 <= 0.0f) { func_8003F46C(arg0, &sp5C, &sp68, &spE8, &sp78, &spCC, &spC8, &spC4); } arg0->unk74 = func_802ABE30(spCC, spC8, spC4, arg0->unk11A); if (((arg0->unk0 & 0x4000) == 0x4000) && ((temp_v0 = gActiveScreenMode, (temp_v0 == 0)) || (temp_v0 == 2) || (temp_v0 == 1))) { func_80029B4C(arg0, spCC, spC8, spC4); } else { func_8002A194(arg0, spCC, spC8, spC4); } func_8002AE38(arg0, arg3, spC0, spB8, spCC, spC4); arg0->unk22C = arg0->unk94; temp_f2_2 = arg0->unk8C; arg0->unk94 = sqrtf((sp70 * sp70) + ((sp68 * sp68) + (sp6C * sp6C))); if (((temp_f2_2 <= 0.0f) && (arg0->unk94 < D_800ED8C0)) || ((temp_f2_2 <= 0.0f) && (arg0->unk94 < D_800ED8C8) && ((arg0->unkBC & 1) == 1))) { sp68 += sp68 * -1.0f; sp70 += sp70 * -1.0f; } else { arg0->unk14 = spCC; arg0->unk1C = spC4; } arg0->unk18 = spC8 - D_800ED8D0; arg0->unk64 = spE8; arg0->unk6C = spF0; arg0->unk34 = sp68; arg0->unk38 = sp6C; arg0->unk3C = sp70; temp_v0_2 = &D_80165070[arg3]; temp_v0_2->unk0 = sp68; temp_v0_2->unk4 = sp6C; temp_v0_2->unk8 = sp70; if ((arg0->unk0 & 0x4000) == 0x4000) { temp_f2_3 = arg0->unk94; temp_v0_3 = (arg0->unk254 * 4) + &gKartTopSpeedTable; temp_f12_2 = *temp_v0_3; if (temp_f12_2 < temp_f2_3) { temp_f0_2 = temp_f12_2 / temp_f2_3; arg0->unk34 = arg0->unk34 * temp_f0_2; arg0->unk38 = arg0->unk38 * temp_f0_2; arg0->unk3C = arg0->unk3C * temp_f0_2; arg0->unk94 = *temp_v0_3; } } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002F730.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 792017ad9d422c2467bd42686f383a5c41f41c75 void func_8002FCA8(Player *player, s8 arg1) { f32 temp_f2; s32 temp_lo; s32 temp_v0; u8 temp_v1; u8 temp_v1_2; u8 temp_v1_3; u8 temp_v1_4; s32 phi_v1; f32 phi_f12; f32 phi_f0; f32 phi_f0_2; f32 phi_f0_3; f32 phi_f0_4; f32 phi_f0_5; temp_v0 = player->unk_0BC; phi_f0_2 = 0.0f; phi_f0_5 = 0.0f; if ((temp_v0 & 0x200) != 0x200) { temp_v1 = player->boundingBoxCorners[3].surfaceType; if ((s32) temp_v1 < 0xF) { phi_f0_5 = 0.0f + D_800E2A90[player->characterId][temp_v1]; } temp_v1_2 = player->boundingBoxCorners[2].surfaceType; phi_f0_4 = phi_f0_5; if ((s32) temp_v1_2 < 0xF) { phi_f0_4 = phi_f0_5 + D_800E2A90[player->characterId][temp_v1_2]; } temp_v1_3 = player->boundingBoxCorners[1].surfaceType; phi_f0_3 = phi_f0_4; if ((s32) temp_v1_3 < 0xF) { phi_f0_3 = phi_f0_4 + D_800E2AB0[player->characterId][temp_v1_3]; } temp_v1_4 = player->boundingBoxCorners[0].surfaceType; phi_f0_2 = phi_f0_3; if ((s32) temp_v1_4 < 0xF) { phi_f0_2 = phi_f0_3 + D_800E2AB0[player->characterId][temp_v1_4]; } } phi_v1 = 0; phi_f0 = phi_f0_2; if ((D_801652C0[arg1] & 4) != 0) { phi_v1 = 2; } if ((player->unk_09C >= 200.0f) && (phi_v1 == 2) && ((temp_lo = (s32) player->unk_0C0 / 182, ((temp_lo < 0x10) == 0)) || (temp_lo < -0xF))) { phi_f0 = (f32) ((f64) phi_f0_2 + 1.0); } if (((temp_v0 & 0x200000) == 0x200000) && ((player->unk_000 & 0x4000) != 0x4000)) { phi_f0 = -3.0f; } temp_f2 = player->unk_088; if (temp_f2 >= 0.0f) { phi_f12 = temp_f2 * phi_f0; } else { phi_f12 = -temp_f2 * phi_f0; } player->unk_208 = temp_f2 - phi_f12; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002FCA8.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 792017ad9d422c2467bd42686f383a5c41f41c75 void func_8002FE84(Player *player, f32 arg1) { f32 temp_f0; f32 temp_f0_2; f32 temp_f0_3; s32 temp_lo; s32 temp_lo_2; s32 temp_v0; u8 temp_v0_2; u8 temp_v0_3; f32 phi_f0; f64 phi_f18; f32 phi_f0_2; f32 phi_f0_3; temp_v0 = player->unk_0BC; if ((temp_v0 & 0x4000) == 0x4000) { temp_f0 = player->unk_09C; player->unk_098 = (f32) ((f64) ((temp_f0 * temp_f0) / 25.0f) * 1.1); return; } if ((temp_v0 & 8) == 8) { temp_f0_2 = player->unk_09C; player->unk_098 = (f32) ((f64) ((temp_f0_2 * temp_f0_2) / 25.0f) * 1.1); return; } player->unk_098 = arg1; temp_lo = (s32) player->unk_0C4 / 182; if (((s32) (s16) temp_lo >= 0x12) || ((s32) (s16) temp_lo < -0x11)) { phi_f0 = (f32) ((f64) 0.0f + (((f64) (s16) temp_lo * 0.0125) / 1.2)); } else { phi_f0 = (f32) ((f64) 0.0f + (((f64) (s16) temp_lo * 0.025) / 1.2)); } temp_v0_2 = player->boundingBoxCorners[3].surfaceType; player->unk_098 = (1.0f - phi_f0) * arg1; phi_f0_3 = phi_f0; if (temp_v0_2 == 8) { phi_f0_3 = (f32) ((f64) phi_f0 + ((f64) D_800E2E90[player->characterId][temp_v0_2] * 0.7)); } temp_v0_3 = player->boundingBoxCorners[2].surfaceType; phi_f0_2 = phi_f0_3; if (temp_v0_3 == 8) { phi_f0_2 = (f32) ((f64) phi_f0_3 + ((f64) D_800E2E90[player->characterId][temp_v0_3] * 0.7)); } temp_lo_2 = (s32) player->unk_0C0 / 182; if (temp_lo_2 < 0) { phi_f18 = (f64) phi_f0_2 + ((f64) -temp_lo_2 * 0.004); } else { phi_f18 = (f64) phi_f0_2 + ((f64) temp_lo_2 * 0.004); } player->unk_098 = (f32) ((f64) arg1 * (1.0 + ((f64) (f32) phi_f18 * 0.7))); if ((player->unk_0BC & 0x20) == 0x20) { temp_f0_3 = player->unk_09C + 180.0f; player->unk_098 = (temp_f0_3 * temp_f0_3) / 25.0f; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8002FE84.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 792017ad9d422c2467bd42686f383a5c41f41c75 ? func_8002FE84(f32, Player *, f32); /* extern */ ? move_f32_towards(f32 *, f32, f32, Player *); /* extern */ f32 func_80030150(Player *player, s8 arg1) { f32 sp24; f32 sp1C; Player *temp_a0_2; Player *temp_a0_3; Player *temp_a3; f32 *temp_a0; f32 temp_f0; f32 temp_f0_2; f32 temp_f0_3; f32 temp_f12; f32 temp_f2; f32 temp_f2_2; f32 temp_f2_3; f32 temp_f4; f64 temp_f18; s16 temp_v0_6; s32 temp_a1; s32 temp_a1_2; s32 temp_a1_3; s32 temp_a2; s32 temp_lo; s32 temp_lo_2; s32 temp_lo_3; s32 temp_t0; s32 temp_t5; u16 temp_v0_5; u16 temp_v1; u8 temp_v0; u8 temp_v0_2; u8 temp_v0_3; u8 temp_v0_4; s32 phi_v0; f32 phi_f0; Player *phi_a3; f32 phi_f0_2; s32 phi_v0_2; Player *phi_a3_2; f32 phi_f14; Player *phi_a3_3; f32 phi_f0_3; f32 phi_f2; f32 phi_f0_4; f64 phi_f4; f32 phi_f0_5; f32 phi_f0_6; f32 phi_f0_7; f32 phi_f0_8; f32 phi_f0_9; f64 phi_f4_2; f32 phi_f0_10; f32 phi_f0_11; f32 phi_f0_12; f64 phi_f6; temp_a3 = player; temp_f2 = (player->unk_094 / 18.0f) * 216.0f; phi_a3 = temp_a3; phi_f0_2 = 0.0f; phi_f14 = 0.0f; phi_f0_6 = 0.0f; phi_f0_12 = 0.0f; if (temp_f2 >= 8.0f) { temp_a1 = player->unk_0BC; temp_t0 = temp_a1 & 0x200; temp_a2 = temp_a1 & 8; if (temp_t0 != 0x200) { temp_v0 = player->boundingBoxCorners[3].surfaceType; if ((s32) temp_v0 >= 0xF) { } else { phi_f0_12 = 0.0f + D_800E2E90[temp_a3->characterId][temp_v0]; } temp_v0_2 = temp_a3->boundingBoxCorners[2].surfaceType; phi_f0_10 = phi_f0_12; if ((s32) temp_v0_2 < 0xF) { phi_f0_10 = phi_f0_12 + *(*(D_800E2E90 + (temp_a3->characterId * 4)) + (temp_v0_2 * 4)); } temp_v0_3 = temp_a3->boundingBoxCorners[1].surfaceType; phi_f0_8 = phi_f0_10; if ((s32) temp_v0_3 < 0xF) { phi_f0_8 = phi_f0_10 + D_800E2EB0[temp_a3->characterId][temp_v0_3]; } temp_v0_4 = temp_a3->boundingBoxCorners[0].surfaceType; phi_f0_6 = phi_f0_8; if ((s32) temp_v0_4 < 0xF) { phi_f0_6 = phi_f0_8 + *(*(D_800E2E90 + (temp_a3->characterId * 4)) + (temp_v0_4 * 4)); } } phi_f0_5 = phi_f0_6; if ((temp_a2 != 8) && ((temp_a3->unk_0CA & 2) != 2)) { temp_lo = (s32) temp_a3->unk_0C4 / 182; if (temp_f2 >= 20.0f) { if (((s32) (s16) temp_lo >= 0x12) || ((s32) (s16) temp_lo < -0x11)) { phi_f0_11 = (f32) ((f64) phi_f0_6 - (((f64) (s16) temp_lo * 0.0126) / 3.0)); } else { phi_f6 = (f64) phi_f0_6 - (((f64) (s16) temp_lo * 0.026) / 3.0); goto block_20; } } else { temp_f0 = (f32) ((f64) phi_f0_6 + -0.2); phi_f0_11 = temp_f0; if ((temp_a1 & 0x40000000) == 0x40000000) { phi_f6 = (f64) temp_f0 + -0.55; block_20: phi_f0_11 = (f32) phi_f6; } } if (((temp_a1 & 0x10) == 0x10) || ((s32) temp_a3->unk_204 > 0)) { temp_lo_2 = (s32) temp_a3->unk_0C0 / 182; phi_v0 = temp_lo_2; if (temp_lo_2 < 0) { phi_f0_9 = (f32) ((f64) phi_f0_11 + ((f64) -temp_lo_2 * 0.004)); } else { phi_f0_9 = (f32) ((f64) phi_f0_11 + ((f64) temp_lo_2 * 0.004)); } } else { temp_v1 = temp_a3->characterId; temp_lo_3 = (s32) temp_a3->unk_0C0 / 182; phi_v0 = temp_lo_3; if (temp_lo_3 < 0) { phi_f0_9 = (f32) ((f64) phi_f0_11 + ((f64) -temp_lo_3 * (0.01 + (f64) gKartTurnSpeedReductionTable0[temp_v1]))); } else { phi_f0_9 = (f32) ((f64) phi_f0_11 + ((f64) temp_lo_3 * (0.01 + (f64) gKartTurnSpeedReductionTable0[temp_v1]))); } } phi_f0_7 = phi_f0_9; if (((temp_a1 & 0x20000000) == 0x20000000) && ((s32) temp_a3->unk_228 < 0xA)) { if (phi_v0 < 0) { phi_f4_2 = (f64) phi_f0_9 + ((f64) -phi_v0 * 0.008); } else { phi_f4_2 = (f64) phi_f0_9 + ((f64) phi_v0 * 0.008); } phi_f0_7 = (f32) phi_f4_2; } phi_f0_5 = phi_f0_7; if (temp_t0 == 0x200) { phi_f0_5 = (f32) ((f64) phi_f0_7 + -0.25); } } temp_v0_5 = temp_a3->unk_0DE; phi_f0_4 = phi_f0_5; if ((temp_v0_5 & 1) == 1) { phi_f4 = (f64) phi_f0_5 + 0.3; goto block_44; } if ((temp_v0_5 & 2) == 2) { phi_f0_4 = (f32) ((f64) phi_f0_5 + 0.15); } temp_f2_2 = D_801652A0[arg1]; phi_f0 = phi_f0_4; if (((f64) (temp_f2_2 - temp_a3->boundingBoxCorners[2].cornerGroundY) >= 3.5) || ((f64) (temp_f2_2 - temp_a3->boundingBoxCorners[3].cornerGroundY) >= 3.5)) { phi_f4 = (f64) phi_f0_4 + 0.05; block_44: phi_f0 = (f32) phi_f4; } if (temp_a2 != 0) { temp_f18 = (f64) temp_a3->unk_08C * 0.04; sp24 = phi_f0; player = temp_a3; move_f32_towards(&temp_a3->unk_0A0, (f32) temp_f18, 0.15f, temp_a3); phi_a3 = player; phi_f0_2 = phi_f0; } else { player = temp_a3; sp24 = phi_f0; move_f32_towards(&temp_a3->unk_0A0, 0.0f, 0.1f, temp_a3); phi_a3 = player; phi_f0_2 = phi_f0; } } else { temp_a3->unk_0A0 = 0.0f; temp_a3->unk_0E8 = 0.0f; if (((s32) temp_a3->unk_0C4 / 182) < 0) { temp_f0_2 = (f32) ((f64) 0.0f + -0.85); phi_f0_2 = temp_f0_2; if ((temp_a3->unk_0BC * 2) < 0) { phi_f0_2 = (f32) ((f64) temp_f0_2 + -0.55); } } } temp_t5 = phi_a3->unk_000 & 0x4000; phi_v0_2 = temp_t5; phi_a3_2 = phi_a3; phi_f14 = 0.0f; if (temp_t5 != 0x4000) { if ((phi_a3->unk_0BC & 0x200000) == 0x200000) { player = phi_a3; sp24 = phi_f0_2; move_f32_towards(phi_a3 + 0xE8, 380.0f, 0.5f, phi_a3); phi_v0_2 = player->unk_000 & 0x4000; phi_a3_2 = player; } else { player = phi_a3; sp24 = phi_f0_2; move_f32_towards(phi_a3 + 0xE8, 0.0f, 0.1f, phi_a3); phi_v0_2 = player->unk_000 & 0x4000; phi_a3_2 = player; } } phi_a3_3 = phi_a3_2; phi_f0_3 = phi_f0_2; if (phi_v0_2 == 0x4000) { temp_a1_2 = phi_a3_2->unk_0BC; temp_a0 = phi_a3_2 + 0xE8; if (((temp_a1_2 & 0x100) == 0x100) && ((temp_a1_2 & 0x10) != 0x10)) { player = phi_a3_2; sp24 = phi_f0_2; move_f32_towards(temp_a0, 580.0f, 0.2f, phi_a3_2); } else { player = phi_a3_2; sp24 = phi_f0_2; move_f32_towards(temp_a0, phi_f14, 0.01f, phi_a3_2); } if ((player->unk_0BC & 0x200000) == 0x200000) { player = player; sp24 = sp24; move_f32_towards(player + 0xE4, 580.0f, 0.01f, player); } else { player = player; sp24 = sp24; move_f32_towards(player + 0xE4, 0.0f, 0.01f, player); } phi_a3_3 = player; phi_f0_3 = sp24; } player = phi_a3_3; move_f32_towards(&phi_a3_3->unk_104, phi_f0_3, (f32) ((f64) gKartTurnSpeedReductionTable1[phi_a3_3->characterId] + 0.05), phi_a3_3); temp_f0_3 = player->unk_08C; temp_f12 = player->boostPower; temp_f2_3 = (temp_f0_3 + player->unk_0E8 + temp_f12 + player->unk_0E4) - player->unk_0A0; phi_f2 = temp_f2_3; if (temp_f2_3 < 0.0f) { phi_f2 = 0.0f; } temp_v0_6 = player->unk_0CA; if (((temp_v0_6 & 2) == 2) || ((temp_v0_6 & 8) == 8) || ((player->unk_000 & 0x2000) == 0x2000)) { return (1.0f - player->unk_104) * phi_f2; } temp_a1_3 = player->unk_0BC; if (((temp_a1_3 & 0x80) == 0x80) || ((temp_a1_3 & 0x40) == 0x40) || ((temp_a1_3 & 0x01000000) == 0x01000000) || ((temp_a1_3 & 0x02000000) == 0x02000000)) { return (1.0f - player->unk_104) * phi_f2; } if (((temp_a1_3 & 0x2000) == 0x2000) || ((temp_a1_3 & 0x100000) == 0x100000) || (temp_a0_2 = player, ((temp_a1_3 & 4) == 4))) { temp_f4 = temp_f12 + temp_f0_3; temp_a0_3 = player; player = player; func_8002FE84(temp_f12, temp_a0_3, temp_f4); return player->boostPower + player->unk_08C; } player = player; sp1C = phi_f2; func_8002FE84(temp_f12, temp_a0_2, phi_f2); return (1.0f - player->unk_104) * phi_f2; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80030150.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 extern f32 D_800ED9B8; extern f32 D_800ED9BC; extern f32 D_800ED9C0; extern f32 D_800ED9C4; extern f32 D_800ED9C8; extern f32 D_800ED9CC; extern f32 D_800ED9D0; extern f32 D_800ED9D4; void func_80030A34(void *arg0) { s16 temp_v0; s16 temp_v0_3; u16 temp_v0_2; void *phi_a1; f32 phi_f0; f32 phi_f2; f32 phi_f12; temp_v0 = arg0->unkCA; phi_a1 = arg0; if (((temp_v0 & 2) != 2) && ((temp_v0 & 8) != 8)) { if ((((arg0->unk94 / 18.0f) * 216.0f) >= 8.0f) && (arg0->unkDC0 < 1.0f)) { temp_v0_2 = arg0->unkF8; if (temp_v0_2 != 1) { if ((temp_v0_2 != 0xE) && (temp_v0_2 != 0x10)) { phi_f0 = D_800ED9C8; phi_f2 = D_800ED9CC; phi_f12 = 0.0f; } else { phi_f0 = D_800ED9C0; phi_f2 = D_800ED9C4; phi_f12 = 0.0f; } } else { arg0 = arg0; phi_a1 = arg0; if (random_int(0xA) != 8) { phi_f0 = D_800ED9B8; phi_f2 = D_800ED9BC; phi_f12 = 0.0f; } else { arg0->unk7A = 0; arg0->unk108 = 0.0f; goto block_16; } } } else { arg0 = arg0; phi_a1 = arg0; if (random_int(0xA) != 8) { phi_f0 = D_800ED9D0; phi_f2 = D_800ED9D4; phi_f12 = 0.0f; } else { arg0->unk7A = 0; arg0->unk108 = 0.0f; block_16: phi_a1 = arg0; phi_f0 = 0.0f; phi_f2 = 0.0f; phi_f12 = 0.0f; } } phi_a1->unk7A = phi_a1->unk7A + 1; temp_v0_3 = phi_a1->unk7A; phi_a1->unk108 = (temp_v0_3 * phi_f0) - (0.5 * phi_f2 * (temp_v0_3 * temp_v0_3)); if ((temp_v0_3 != 0) && (phi_a1->unk108 < phi_f12)) { phi_a1->unk7A = 0; } if (phi_a1->unk108 <= phi_f12) { phi_a1->unk108 = phi_f12; } } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80030A34.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 // This is likely the function responsible for detecting triple-tap "A" // for "fast" acceleration void func_80030C34(s32 arg0) { s32 sp4; s32 *temp_a0; s32 *temp_a1; s32 *temp_a1_2; s32 *temp_a3; s32 *temp_v0; s32 *temp_v0_2; s32 *temp_v0_3; s32 temp_a2; s32 temp_a2_2; s32 temp_t5; s32 phi_v0; s32 phi_a2; if (arg0 == gPlayerOne) { sp4 = 0; } phi_v0 = sp4; if (arg0 == gPlayerTwo) { phi_v0 = 1; } if (arg0 == gPlayerThree) { phi_v0 = 2; } if (arg0 == gPlayerFour) { phi_v0 = 3; } if (arg0 == gPlayerFive) { phi_v0 = 4; } if (arg0 == gPlayerSix) { phi_v0 = 5; } if (arg0 == gPlayerSeven) { phi_v0 = 6; } if (arg0 == gPlayerEight) { phi_v0 = 7; } temp_a0 = &D_80165460[phi_v0]; temp_v0 = &D_80165480[phi_v0]; if (*temp_a0 == 0) { temp_v0_2 = &gPlayerIsThrottleActive[phi_v0]; if (*temp_v0_2 == 1) { temp_a1 = &D_80165420[phi_v0]; temp_a2 = *temp_a1; if ((temp_a2 < 2) || (temp_a2 >= 9)) { D_80165440[phi_v0] = 0; } *temp_a1 = 0; D_80165400[phi_v0] = 0; } temp_a1_2 = &D_80165420[phi_v0]; *temp_v0_2 = 0; temp_a3 = &D_80165440[phi_v0]; temp_a2_2 = *temp_a1_2 + 1; *temp_a1_2 = temp_a2_2; phi_a2 = temp_a2_2; if (temp_a2_2 >= 9) { *temp_a1_2 = 9; phi_a2 = 9; } if ((phi_a2 >= 2) && (phi_a2 < 9)) { temp_v0_3 = &D_80165400[phi_v0]; if (*temp_v0_3 == 0) { *temp_a3 = *temp_a3 + 1; } *temp_v0_3 = 1; } if (*temp_a3 == 5) { *temp_a0 = 1; D_80165480[phi_v0] = 0x78; *temp_a3 = 0; *temp_a1_2 = 0; return; } // Duplicate return node #33. Try simplifying control flow for better match return; } temp_t5 = *temp_v0 - 1; *temp_v0 = temp_t5; if (temp_t5 <= 0) { *temp_a0 = 0; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80030C34.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 // This is likely the function responsible for detecting triple-tap "A" // for "fast" acceleration void func_80030E00(s32 arg0) { s32 sp4; s32 *temp_a0; s32 *temp_a1; s32 *temp_a1_2; s32 *temp_a3; s32 *temp_v0; s32 *temp_v0_2; s32 *temp_v0_3; s32 temp_a2; s32 temp_a2_2; s32 temp_t5; s32 phi_v0; s32 phi_a2; if (arg0 == gPlayerOne) { sp4 = 0; } phi_v0 = sp4; if (arg0 == gPlayerTwo) { phi_v0 = 1; } if (arg0 == gPlayerThree) { phi_v0 = 2; } if (arg0 == gPlayerFour) { phi_v0 = 3; } if (arg0 == gPlayerFive) { phi_v0 = 4; } if (arg0 == gPlayerSix) { phi_v0 = 5; } if (arg0 == gPlayerSeven) { phi_v0 = 6; } if (arg0 == gPlayerEight) { phi_v0 = 7; } temp_a0 = &D_80165460[phi_v0]; temp_v0 = &D_80165480[phi_v0]; if (*temp_a0 == 0) { temp_v0_2 = &gPlayerIsThrottleActive[phi_v0]; temp_a1 = &D_80165420[phi_v0]; if (*temp_v0_2 == 0) { temp_a2 = *temp_a1; if ((temp_a2 < 2) || (temp_a2 >= 9)) { D_80165440[phi_v0] = 0; } *temp_a1 = 0; D_80165400[phi_v0] = 0; } temp_a1_2 = &D_80165420[phi_v0]; *temp_v0_2 = 1; temp_a3 = &D_80165440[phi_v0]; temp_a2_2 = *temp_a1_2 + 1; *temp_a1_2 = temp_a2_2; phi_a2 = temp_a2_2; if (temp_a2_2 >= 9) { *temp_a1_2 = 9; phi_a2 = 9; } if ((phi_a2 >= 2) && (phi_a2 < 9)) { temp_v0_3 = &D_80165400[phi_v0]; if (*temp_v0_3 == 0) { *temp_a3 = *temp_a3 + 1; } *temp_v0_3 = 1; } if (*temp_a3 == 5) { *temp_a0 = 1; D_80165480[phi_v0] = 0x78; *temp_a3 = 0; *temp_a1_2 = 0; return; } // Duplicate return node #33. Try simplifying control flow for better match return; } temp_t5 = *temp_v0 - 1; *temp_v0 = temp_t5; if (temp_t5 <= 0) { *temp_a0 = 0; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80030E00.s") #endif /* D_80165460 appears to track on a per-player index whether they're doing regular or "fast" accleration "fast" acceleration is triggered by triple tapping "A" instead of just pressing-and-holding gKartAccelerationTables may actually be something more like gKartJerkTables, with player->unk_09C being player accleration gKartTable800E36B0 is some sort of per-character multiplier to the jerk that is only used when triple-tap "A" is used player->unk_214 is possibly the max-acceleration allowed No speculation on what player->unk_0C4 could be */ void func_80030FC8(Player *player) { f64 some_multiplier; s32 player_index; player_index = get_player_index_for_player(player); if (D_80165460[player_index] == 0) { if ((0.0 <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800ED9D8))) { some_multiplier = D_800ED9E0; player->unk_09C += gKartAccelerationTables[player->characterId][0] + (some_multiplier * (player->unk_0C4 / 182)); } some_multiplier = D_800ED9E8; if (((player->unk_214 * D_800ED9F0) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800ED9F8))) { player->unk_09C += gKartAccelerationTables[player->characterId][1] + (some_multiplier * (player->unk_0C4 / 182)); } if (((player->unk_214 * D_800EDA00) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDA08))) { player->unk_09C += gKartAccelerationTables[player->characterId][2] + (some_multiplier * (player->unk_0C4 / 182)); } if (((player->unk_214 * D_800EDA10) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDA18))) { player->unk_09C += gKartAccelerationTables[player->characterId][3] + (some_multiplier * (player->unk_0C4 / 182)); } if (((player->unk_214 * D_800EDA20) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * 0.5 ))) { player->unk_09C += gKartAccelerationTables[player->characterId][4] + (some_multiplier * (player->unk_0C4 / 182)); } if (((player->unk_214 * 0.5) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDA28))) { player->unk_09C += gKartAccelerationTables[player->characterId][5] + (some_multiplier * (player->unk_0C4 / 182)); } if (((player->unk_214 * D_800EDA30) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDA38))) { player->unk_09C += gKartAccelerationTables[player->characterId][6] + (some_multiplier * (player->unk_0C4 / 182)); } if (((player->unk_214 * D_800EDA40) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDA48))) { player->unk_09C += gKartAccelerationTables[player->characterId][7] + (some_multiplier * (player->unk_0C4 / 182)); } if (((player->unk_214 * D_800EDA50) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDA58))) { player->unk_09C += gKartAccelerationTables[player->characterId][8] + (some_multiplier * (player->unk_0C4 / 182)); } if (((player->unk_214 * D_800EDA60) <= player->unk_09C) && (player->unk_09C <= (player->unk_214 * 1.0 ))) { player->unk_09C += gKartAccelerationTables[player->characterId][9] + (some_multiplier * (player->unk_0C4 / 182)); } } else { if ((0.0 <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDA68))) { some_multiplier = D_800EDA70; player->unk_09C += (gKartAccelerationTables[player->characterId][0] + (some_multiplier * (player->unk_0C4 / 182))) * gKartTable800E36B0[player->characterId]; } some_multiplier = D_800EDA78; if (((player->unk_214 * D_800EDA80) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDA88))) { player->unk_09C += (gKartAccelerationTables[player->characterId][1] + (some_multiplier * (player->unk_0C4 / 182))) * gKartTable800E36B0[player->characterId]; } if (((player->unk_214 * D_800EDA90) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDA98))) { player->unk_09C += (gKartAccelerationTables[player->characterId][2] + (some_multiplier * (player->unk_0C4 / 182))) * gKartTable800E36B0[player->characterId]; } if (((player->unk_214 * D_800EDAA0) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDAA8))) { player->unk_09C += (gKartAccelerationTables[player->characterId][3] + (some_multiplier * (player->unk_0C4 / 182))) * gKartTable800E36B0[player->characterId]; } if (((player->unk_214 * D_800EDAB0) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * 0.5 ))) { player->unk_09C += (gKartAccelerationTables[player->characterId][4] + (some_multiplier * (player->unk_0C4 / 182))) * gKartTable800E36B0[player->characterId]; } if (((player->unk_214 * 0.5) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDAB8))) { player->unk_09C += (gKartAccelerationTables[player->characterId][5] + (some_multiplier * (player->unk_0C4 / 182))) * gKartTable800E36B0[player->characterId]; } if (((player->unk_214 * D_800EDAC0) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDAC8))) { player->unk_09C += (gKartAccelerationTables[player->characterId][6] + (some_multiplier * (player->unk_0C4 / 182))) * gKartTable800E36B0[player->characterId]; } if (((player->unk_214 * D_800EDAD0) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDAD8))) { player->unk_09C += (gKartAccelerationTables[player->characterId][7] + (some_multiplier * (player->unk_0C4 / 182))) * gKartTable800E36B0[player->characterId]; } if (((player->unk_214 * D_800EDAE0) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDAE8))) { player->unk_09C += (gKartAccelerationTables[player->characterId][8] + (some_multiplier * (player->unk_0C4 / 182))) * gKartTable800E36B0[player->characterId]; // Only here to satisfy the compiler gods, may they bless us with byte-for-byte matches if (1) { } if (1) { } if (1) { } if (1) { } if (1) { } } if (((player->unk_214 * D_800EDAF0) <= player->unk_09C) && (player->unk_09C <= (player->unk_214 * 1.0 ))) { player->unk_09C += (gKartAccelerationTables[player->characterId][9] + (some_multiplier * (player->unk_0C4 / 182))) * gKartTable800E36B0[player->characterId]; } } if (player->unk_09C < 0.0f) { player->unk_09C = 0.0f; } if (player->unk_214 <= player->unk_09C) { player->unk_09C = player->unk_214; } if (((player->unk_0BC & 8) == 0) || ((player->unk_0BC * 2) < 0)) { player->unk_08C = (player->unk_09C * player->unk_09C) / 25.0f; } player->unk_044 |= 0x20; if ((player->unk_00C * 8) < 0) { func_8008F104(player, player_index); player->unk_00C &= 0xEFFFFFFF; } } void func_80031F48(Player *player, f32 arg1) { s32 player_index; player_index = get_player_index_for_player(player); player->unk_09C -= arg1; if (player->unk_09C <= 0.0f) { player->unk_09C = 0.0f; } if (player->unk_094 < D_800EDAF8) { player->unk_08C = 0.0f; } if (player->unk_214 <= player->unk_09C) { player->unk_09C = player->unk_214; } if ((player->unk_0BC & 8) != 8) { player->unk_08C = (player->unk_09C * player->unk_09C) / 25.0f; } player->unk_044 &= 0xFFDF; if ((player->unk_00C * 8) < 0) { func_8008F104(player, player_index); player->unk_00C &= 0xEFFFFFFF; } } #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_80032050(s32 arg0) { s32 sp4; s32 *temp_a0; s32 *temp_a1; s32 *temp_a1_2; s32 *temp_a3; s32 *temp_v0; s32 *temp_v0_2; s32 *temp_v0_3; s32 temp_a2; s32 temp_a2_2; s32 temp_t5; s32 phi_v0; s32 phi_a2; if (arg0 == gPlayerOne) { sp4 = 0; } phi_v0 = sp4; if (arg0 == gPlayerTwo) { phi_v0 = 1; } if (arg0 == gPlayerThree) { phi_v0 = 2; } if (arg0 == gPlayerFour) { phi_v0 = 3; } if (arg0 == gPlayerFive) { phi_v0 = 4; } if (arg0 == gPlayerSix) { phi_v0 = 5; } if (arg0 == gPlayerSeven) { phi_v0 = 6; } if (arg0 == gPlayerEight) { phi_v0 = 7; } temp_a0 = &D_80165520[phi_v0]; temp_v0 = &D_80165540[phi_v0]; if (*temp_a0 == 0) { temp_v0_2 = &D_801654A0[phi_v0]; if (*temp_v0_2 == 1) { temp_a1 = &D_801654E0[phi_v0]; temp_a2 = *temp_a1; if ((temp_a2 < 2) || (temp_a2 >= 9)) { D_80165500[phi_v0] = 0; } *temp_a1 = 0; D_801654C0[phi_v0] = 0; } temp_a1_2 = &D_801654E0[phi_v0]; *temp_v0_2 = 0; temp_a3 = &D_80165500[phi_v0]; temp_a2_2 = *temp_a1_2 + 1; *temp_a1_2 = temp_a2_2; phi_a2 = temp_a2_2; if (temp_a2_2 >= 9) { *temp_a1_2 = 9; phi_a2 = 9; } if ((phi_a2 >= 2) && (phi_a2 < 9)) { temp_v0_3 = &D_801654C0[phi_v0]; if (*temp_v0_3 == 0) { *temp_a3 = *temp_a3 + 1; } *temp_v0_3 = 1; } if (*temp_a3 == 5) { *temp_a0 = 1; D_80165540[phi_v0] = 0x78; *temp_a3 = 0; *temp_a1_2 = 0; return; } // Duplicate return node #33. Try simplifying control flow for better match return; } temp_t5 = *temp_v0 - 1; *temp_v0 = temp_t5; if (temp_t5 <= 0) { *temp_a0 = 0; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80032050.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_8003221C(s32 arg0) { s32 sp4; s32 *temp_a0; s32 *temp_a1; s32 *temp_a1_2; s32 *temp_a3; s32 *temp_v0; s32 *temp_v0_2; s32 *temp_v0_3; s32 temp_a2; s32 temp_a2_2; s32 temp_t5; s32 phi_v0; s32 phi_a2; if (arg0 == gPlayerOne) { sp4 = 0; } phi_v0 = sp4; if (arg0 == gPlayerTwo) { phi_v0 = 1; } if (arg0 == gPlayerThree) { phi_v0 = 2; } if (arg0 == gPlayerFour) { phi_v0 = 3; } if (arg0 == gPlayerFive) { phi_v0 = 4; } if (arg0 == gPlayerSix) { phi_v0 = 5; } if (arg0 == gPlayerSeven) { phi_v0 = 6; } if (arg0 == gPlayerEight) { phi_v0 = 7; } temp_a0 = &D_80165520[phi_v0]; temp_v0 = &D_80165540[phi_v0]; if (*temp_a0 == 0) { temp_v0_2 = &D_801654A0[phi_v0]; temp_a1 = &D_801654E0[phi_v0]; if (*temp_v0_2 == 0) { temp_a2 = *temp_a1; if ((temp_a2 < 2) || (temp_a2 >= 9)) { D_80165500[phi_v0] = 0; } *temp_a1 = 0; D_801654C0[phi_v0] = 0; } temp_a1_2 = &D_801654E0[phi_v0]; *temp_v0_2 = 1; temp_a3 = &D_80165500[phi_v0]; temp_a2_2 = *temp_a1_2 + 1; *temp_a1_2 = temp_a2_2; phi_a2 = temp_a2_2; if (temp_a2_2 >= 9) { *temp_a1_2 = 9; phi_a2 = 9; } if ((phi_a2 >= 2) && (phi_a2 < 9)) { temp_v0_3 = &D_801654C0[phi_v0]; if (*temp_v0_3 == 0) { *temp_a3 = *temp_a3 + 1; } *temp_v0_3 = 1; } if (*temp_a3 == 5) { *temp_a0 = 1; D_80165540[phi_v0] = 0x78; *temp_a3 = 0; *temp_a1_2 = 0; return; } // Duplicate return node #33. Try simplifying control flow for better match return; } temp_t5 = *temp_v0 - 1; *temp_v0 = temp_t5; if (temp_t5 <= 0) { *temp_a0 = 0; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8003221C.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 792017ad9d422c2467bd42686f383a5c41f41c75 ? func_80031F48(f32, f32, f32); /* extern */ void func_800323E4(Player *player) { s32 sp24; f32 sp1C; f32 temp_f0; s32 temp_t5; u8 temp_v0; u8 temp_v0_2; s32 phi_v1; f32 phi_f2; f32 phi_f12; f32 phi_f2_2; phi_f2_2 = 0.0f; if (player == gPlayerOne) { sp24 = 0; } phi_v1 = sp24; if (player == gPlayerTwo) { phi_v1 = 1; } if (player == gPlayerThree) { phi_v1 = 2; } if (player == gPlayerFour) { phi_v1 = 3; } if (player == gPlayerFive) { phi_v1 = 4; } if (player == gPlayerSix) { phi_v1 = 5; } if (player == gPlayerSeven) { phi_v1 = 6; } if (player == gPlayerEight) { phi_v1 = 7; } temp_t5 = player->unk_0BC | 1; player->unk_0BC = temp_t5; if ((temp_t5 & 0x20) == 0x20) { func_80031F48(0.0f, 1.0f); player->unk_20C = 0.0f; return; } temp_v0 = player->boundingBoxCorners[3].surfaceType; if ((s32) temp_v0 < 0xF) { phi_f2_2 = 0.0f + D_800E3210[player->characterId][temp_v0]; } temp_v0_2 = player->boundingBoxCorners[2].surfaceType; phi_f2 = phi_f2_2; if ((s32) temp_v0_2 < 0xF) { phi_f2 = phi_f2_2 + D_800E3210[player->characterId][temp_v0_2]; } if ((player->unk_22C - player->unk_094) <= 0.0f) { player->unk_20C = 0.0f; } else { player->unk_20C = (f32) ((f64) player->unk_20C + 0.02); if (player->unk_20C >= 2.0f) { player->unk_20C = 2.0f; } } phi_f12 = 2.0f; if (D_80165520[phi_v1] == 1) { if (player->unk_20C >= 2.0f) { func_80031F48(2.0f, (1.0f - phi_f2) * 5.0f); return; } func_80031F48(2.0f, (1.0f - phi_f2) * 3.0f); return; } if (((player->unk_094 / 18.0f) * 216.0f) <= 20.0f) { sp1C = phi_f2; func_80031F48(2.0f, (1.0f - phi_f2) * 4.0f); phi_f12 = 2.0f; } temp_f0 = 1.0f - phi_f2; if (phi_f12 <= player->unk_20C) { func_80031F48(phi_f12, (bitwise f32) player, (f32) ((f64) temp_f0 * 2.5)); return; } func_80031F48(phi_f12, (bitwise f32) player, (f32) ((f64) temp_f0 * 1.2)); } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_800323E4.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 get_player_index_for_player(); // extern extern f64 D_800EDB10; extern f64 D_800EDB18; extern f64 D_800EDB20; extern f64 D_800EDB28; extern f64 D_800EDB30; extern f64 D_800EDB38; extern f64 D_800EDB40; extern f64 D_800EDB48; extern f64 D_800EDB50; extern f64 D_800EDB58; extern f64 D_800EDB60; extern f64 D_800EDB68; extern f64 D_800EDB70; extern f64 D_800EDB78; extern f64 D_800EDB80; extern f64 D_800EDB88; extern f32 D_800EDB90; extern s16 D_801656F0; extern ? gKartAccelerationTables; extern s32 gRaceFrameCounter; void func_80032700(void *arg0) { f32 temp_f0_2; f64 temp_f0; f64 temp_f2; s32 temp_t6; s32 temp_v0; f64 phi_f0; f64 phi_f2; f64 phi_f0_2; f64 phi_f2_2; f64 phi_f0_3; f64 phi_f2_3; f64 phi_f0_4; f64 phi_f2_4; f64 phi_f0_5; f64 phi_f2_5; f64 phi_f0_6; f64 phi_f2_6; f64 phi_f0_7; f64 phi_f2_7; f64 phi_f0_8; f64 phi_f2_8; f64 phi_f0_9; s32 phi_v0; temp_f0 = arg0->unk9C; phi_f0 = temp_f0; if ((temp_f0 >= 0.0) && (temp_f0 < (arg0->unk214 * D_800EDB10))) { arg0->unk9C = temp_f0 + (**(&gKartAccelerationTables + (arg0->unk254 * 4)) * 3.0); phi_f0 = arg0->unk9C; } temp_f2 = arg0->unk214; phi_f2 = temp_f2; phi_f0_2 = phi_f0; if (((temp_f2 * D_800EDB18) <= phi_f0) && (phi_f0 < (temp_f2 * D_800EDB20))) { arg0->unk9C = phi_f0 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk4 * 3.0); phi_f2 = arg0->unk214; phi_f0_2 = arg0->unk9C; } phi_f2_2 = phi_f2; phi_f0_3 = phi_f0_2; if (((phi_f2 * D_800EDB28) <= phi_f0_2) && (phi_f0_2 < (phi_f2 * D_800EDB30))) { arg0->unk9C = phi_f0_2 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk8 * 3.0); phi_f2_2 = arg0->unk214; phi_f0_3 = arg0->unk9C; } phi_f2_3 = phi_f2_2; phi_f0_4 = phi_f0_3; if (((phi_f2_2 * D_800EDB38) <= phi_f0_3) && (phi_f0_3 < (phi_f2_2 * D_800EDB40))) { arg0->unk9C = phi_f0_3 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unkC * 3.0); phi_f2_3 = arg0->unk214; phi_f0_4 = arg0->unk9C; } phi_f2_4 = phi_f2_3; phi_f0_5 = phi_f0_4; if (((phi_f2_3 * D_800EDB48) <= phi_f0_4) && (phi_f0_4 < (phi_f2_3 * 0.5))) { arg0->unk9C = phi_f0_4 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk10 * 3.0); phi_f2_4 = arg0->unk214; phi_f0_5 = arg0->unk9C; } phi_f2_5 = phi_f2_4; phi_f0_6 = phi_f0_5; if (((phi_f2_4 * 0.5) <= phi_f0_5) && (phi_f0_5 < (phi_f2_4 * D_800EDB50))) { arg0->unk9C = phi_f0_5 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk14 * 3.0); phi_f2_5 = arg0->unk214; phi_f0_6 = arg0->unk9C; } phi_f2_6 = phi_f2_5; phi_f0_7 = phi_f0_6; if (((phi_f2_5 * D_800EDB58) <= phi_f0_6) && (phi_f0_6 < (phi_f2_5 * D_800EDB60))) { arg0->unk9C = phi_f0_6 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk18 * 2.5); phi_f2_6 = arg0->unk214; phi_f0_7 = arg0->unk9C; } phi_f2_7 = phi_f2_6; phi_f0_8 = phi_f0_7; if (((phi_f2_6 * D_800EDB68) <= phi_f0_7) && (phi_f0_7 < (phi_f2_6 * D_800EDB70))) { arg0->unk9C = phi_f0_7 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk1C * 2.5); phi_f2_7 = arg0->unk214; phi_f0_8 = arg0->unk9C; } phi_f2_8 = phi_f2_7; phi_f0_9 = phi_f0_8; if (((phi_f2_7 * D_800EDB78) <= phi_f0_8) && (phi_f0_8 < (phi_f2_7 * D_800EDB80))) { arg0->unk9C = phi_f0_8 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk20 * 2.5); phi_f2_8 = arg0->unk214; phi_f0_9 = arg0->unk9C; } if (((phi_f2_8 * D_800EDB88) <= phi_f0_9) && (phi_f0_9 <= phi_f2_8)) { arg0->unk9C = phi_f0_9 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk24 * 2.5); } if (D_801656F0 == 1) { phi_v0 = 8; if (gModeSelection == TIME_TRIALS) { phi_v0 = 0x14; } if (((gRaceFrameCounter - D_801652E0[get_player_index_for_player()]) < phi_v0) && ((arg0->unk44 & 0x20) != 0x20)) { arg0->unkC = arg0->unkC | 0x2000000; } else if ((arg0->unk214 * D_800EDB90) <= arg0->unk9C) { temp_v0 = arg0->unkC; temp_t6 = temp_v0 | 0x10000000; if ((temp_v0 & 0x2000000) != 0x2000000) { arg0->unkC = temp_t6; arg0->unkC = temp_t6 & 0xFDFFFFFF; } } } temp_f0_2 = arg0->unk9C; arg0->unk44 = arg0->unk44 | 0x20; arg0->unk98 = (temp_f0_2 * temp_f0_2) / 25.0f; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80032700.s") #endif void func_80032CB0(Player *player, f32 arg1) { player->unk_09C -= arg1; if (player->unk_09C <= 0.0f) { player->unk_09C = 0.0f; } if (player->unk_094 < D_800EDB98) { player->unk_08C = 0.0f; } if (player->unk_214 <= player->unk_09C) { player->unk_09C = player->unk_214; } if ((f64) player->unk_09C <= (player->unk_214 * D_800EDBA0)) { player->unk_00C &= 0xEFFFFFFF; } player->unk_00C &= 0xFDFFFFFF; player->unk_044 &= 0xFFDF; player->unk_098 = (player->unk_09C * player->unk_09C) / 25.0f; } void func_80032D94(Player *player) { f64 some_multiplier; s32 player_index; player_index = get_player_index_for_player(player); if ((0.0 <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDBA8))) { some_multiplier = D_800EDBB0; player->unk_09C += gKartAccelerationTables[player->characterId][0] * some_multiplier; } some_multiplier = D_800EDBB8; if (((player->unk_214 * D_800EDBC0) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDBC8))) { player->unk_09C += gKartAccelerationTables[player->characterId][1] * some_multiplier; } if (((player->unk_214 * D_800EDBD0) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDBD8))) { player->unk_09C += gKartAccelerationTables[player->characterId][2] * some_multiplier; } if (((player->unk_214 * D_800EDBE0) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDBE8))) { player->unk_09C += gKartAccelerationTables[player->characterId][3] * some_multiplier; if (1) { } if (1) { } if (1) { } if (1) { } if (1) { } } if (((player->unk_214 * D_800EDBF0) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * 0.5 ))) { player->unk_09C += gKartAccelerationTables[player->characterId][4] * some_multiplier; if (1) { } if (1) { } if (1) { } if (1) { } if (1) { } } if (((player->unk_214 * 0.5) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDBF8))) { player->unk_09C += gKartAccelerationTables[player->characterId][5] * some_multiplier; } if (((player->unk_214 * D_800EDC00) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDC08))) { player->unk_09C += gKartAccelerationTables[player->characterId][6] * some_multiplier; } if (((player->unk_214 * D_800EDC10) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDC18))) { some_multiplier = D_800EDC20; player->unk_09C += gKartAccelerationTables[player->characterId][7] * some_multiplier; } some_multiplier = D_800EDC28; if (((player->unk_214 * D_800EDC30) <= player->unk_09C) && (player->unk_09C < (player->unk_214 * D_800EDC38))) { player->unk_09C += gKartAccelerationTables[player->characterId][8] * some_multiplier; } if (((player->unk_214 * D_800EDC40) <= player->unk_09C) && (player->unk_09C <= (player->unk_214 * 1.0 ))) { player->unk_09C += gKartAccelerationTables[player->characterId][9] * some_multiplier; } if (player->unk_09C < 0.0f) { player->unk_09C = 0.0f; } player->unk_098 = (player->unk_09C * player->unk_09C) / 25.0f; } void func_80033280(Player *player, f32 arg1) { player->unk_09C -= arg1; if (player->unk_09C <= 0.0f) { player->unk_09C = 0.0f; } if (player->unk_214 <= player->unk_09C) { player->unk_09C = player->unk_214; } player->unk_098 = (player->unk_09C * player->unk_09C) / 25.0f; } #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 extern f64 D_800EDC48; extern f64 D_800EDC50; extern f64 D_800EDC58; extern f64 D_800EDC60; extern f64 D_800EDC68; extern f64 D_800EDC70; extern f64 D_800EDC78; extern f64 D_800EDC80; extern f64 D_800EDC88; extern f64 D_800EDC90; extern f64 D_800EDC98; extern f64 D_800EDCA0; extern f64 D_800EDCA8; extern f64 D_800EDCB0; extern f64 D_800EDCB8; extern f64 D_800EDCC0; extern f64 D_800EDCC8; extern f64 D_800EDCD0; extern f64 D_800EDCD8; extern f64 D_800EDCE0; extern ? gKartAccelerationTables; void func_800332E8(void *arg0, s32 arg1) { f32 *temp_v0; f64 temp_f0; f64 temp_f12; f64 temp_f12_2; f64 temp_f2; f64 phi_f0; f64 phi_f2; f64 phi_f0_2; f64 phi_f2_2; f64 phi_f0_3; f64 phi_f2_3; f64 phi_f0_4; f64 phi_f2_4; f64 phi_f0_5; f64 phi_f2_5; f64 phi_f0_6; f64 phi_f2_6; f64 phi_f0_7; f64 phi_f2_7; f64 phi_f0_8; f64 phi_f2_8; f64 phi_f0_9; temp_v0 = &D_80165280[arg1]; temp_f0 = *temp_v0; phi_f0 = temp_f0; if ((temp_f0 >= 0.0) && (temp_f0 < (arg0->unk214 * D_800EDC48))) { *temp_v0 = temp_f0 + (**(&gKartAccelerationTables + (arg0->unk254 * 4)) * D_800EDC50); phi_f0 = *temp_v0; } temp_f12 = D_800EDC58; temp_f2 = arg0->unk214; phi_f2 = temp_f2; phi_f0_2 = phi_f0; if (((temp_f2 * D_800EDC60) <= phi_f0) && (phi_f0 < (temp_f2 * D_800EDC68))) { *temp_v0 = phi_f0 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk4 * temp_f12); phi_f2 = arg0->unk214; phi_f0_2 = *temp_v0; } phi_f2_2 = phi_f2; phi_f0_3 = phi_f0_2; if (((phi_f2 * D_800EDC70) <= phi_f0_2) && (phi_f0_2 < (phi_f2 * D_800EDC78))) { *temp_v0 = phi_f0_2 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk8 * temp_f12); phi_f2_2 = arg0->unk214; phi_f0_3 = *temp_v0; } phi_f2_3 = phi_f2_2; phi_f0_4 = phi_f0_3; if (((phi_f2_2 * D_800EDC80) <= phi_f0_3) && (phi_f0_3 < (phi_f2_2 * D_800EDC88))) { *temp_v0 = phi_f0_3 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unkC * temp_f12); phi_f2_3 = arg0->unk214; phi_f0_4 = *temp_v0; } phi_f2_4 = phi_f2_3; phi_f0_5 = phi_f0_4; if (((phi_f2_3 * D_800EDC90) <= phi_f0_4) && (phi_f0_4 < (phi_f2_3 * 0.5))) { *temp_v0 = phi_f0_4 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk10 * temp_f12); phi_f2_4 = arg0->unk214; phi_f0_5 = *temp_v0; } phi_f2_5 = phi_f2_4; phi_f0_6 = phi_f0_5; if (((phi_f2_4 * 0.5) <= phi_f0_5) && (phi_f0_5 < (phi_f2_4 * D_800EDC98))) { *temp_v0 = phi_f0_5 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk14 * temp_f12); phi_f2_5 = arg0->unk214; phi_f0_6 = *temp_v0; } phi_f2_6 = phi_f2_5; phi_f0_7 = phi_f0_6; if (((phi_f2_5 * D_800EDCA0) <= phi_f0_6) && (phi_f0_6 < (phi_f2_5 * D_800EDCA8))) { *temp_v0 = phi_f0_6 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk18 * temp_f12); phi_f2_6 = arg0->unk214; phi_f0_7 = *temp_v0; } phi_f2_7 = phi_f2_6; phi_f0_8 = phi_f0_7; if (((phi_f2_6 * D_800EDCB0) <= phi_f0_7) && (phi_f0_7 < (phi_f2_6 * D_800EDCB8))) { *temp_v0 = phi_f0_7 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk1C * D_800EDCC0); phi_f2_7 = arg0->unk214; phi_f0_8 = *temp_v0; } temp_f12_2 = D_800EDCC8; phi_f2_8 = phi_f2_7; phi_f0_9 = phi_f0_8; if (((phi_f2_7 * D_800EDCD0) <= phi_f0_8) && (phi_f0_8 < (phi_f2_7 * D_800EDCD8))) { *temp_v0 = phi_f0_8 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk20 * temp_f12_2); phi_f2_8 = arg0->unk214; phi_f0_9 = *temp_v0; } if (((phi_f2_8 * D_800EDCE0) <= phi_f0_9) && (phi_f0_9 <= phi_f2_8)) { *temp_v0 = phi_f0_9 + ((*(&gKartAccelerationTables + (arg0->unk254 * 4)))->unk24 * temp_f12_2); } arg0->unk44 = arg0->unk44 | 0x20; if (*temp_v0 < 0.0f) { *temp_v0 = 0.0f; } arg0->unk98 = (*temp_v0 * *temp_v0) / 25.0f; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_800332E8.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 90e635335cb052c4324a3aa7478e4761db19dfaf void func_800337CC(Player *player, f32 arg1, s32 arg2) { f32 *temp_v0; f32 temp_f2; f32 phi_f0; player->unk_044 &= 0xFFDF; temp_v0 = &D_80165280[arg2]; *temp_v0 -= arg1; if (*temp_v0 <= 0.0f) { *temp_v0 = 0.0f; } temp_f2 = player->unk_214; phi_f0 = *temp_v0; if (temp_f2 <= *temp_v0) { *temp_v0 = temp_f2; phi_f0 = *temp_v0; } player->unk_098 = (phi_f0 * phi_f0) / 25.0f; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_800337CC.s") #endif void func_80033850(Player *arg0, f32 arg1) { arg0->unk_090 += arg1; if (arg0->unk_090 >= 0.0f) { arg0->unk_090 = 0.0f; } } #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_80033884(void *arg0, s32 *arg1, s32 *arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6) { s32 temp_at; s32 temp_v0; s32 temp_v0_3; u32 temp_t8; u32 temp_v0_2; u32 temp_v1; s32 phi_v1; s32 phi_v1_2; temp_v0 = *arg1; if ((temp_v0 >= arg4) || (-arg4 >= temp_v0)) { temp_v1 = arg0->unk200; temp_t8 = temp_v1 - 0x800; temp_at = temp_t8 < 0xF0000000; temp_v0_2 = temp_v1; arg0->unk200 = temp_t8; phi_v1 = temp_t8; if (temp_at == 0) { arg0->unk200 = temp_v0_2; phi_v1 = temp_v0_2; } phi_v1_2 = phi_v1; if (arg5 >= phi_v1) { arg0->unk200 = arg5; phi_v1_2 = arg5; } temp_v0_3 = *arg2; if (arg3 < temp_v0_3) { *arg2 = temp_v0_3 - phi_v1_2; } else { *arg2 = temp_v0_3 + phi_v1_2; } if (arg0->unk90 < arg6) { arg0->unk90 = -arg6; } } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80033884.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_80033850(s32); // extern void func_80033A40(void *arg0, s32 *arg1, s32 *arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6) { s32 temp_at; s32 temp_v0; s32 temp_v1_2; u32 temp_t8; u32 temp_v0_2; u32 temp_v1; s32 phi_v0; s32 phi_v0_2; temp_v0 = *arg1; if ((temp_v0 >= arg4) || (-arg4 >= temp_v0)) { temp_v0_2 = arg0->unk200; temp_t8 = temp_v0_2 - 0x800; temp_at = temp_t8 < 0xF0000000; temp_v1 = temp_v0_2; arg0->unk200 = temp_t8; phi_v0 = temp_t8; if (temp_at == 0) { arg0->unk200 = temp_v1; phi_v0 = temp_v1; } phi_v0_2 = phi_v0; if (arg5 >= phi_v0) { arg0->unk200 = arg5; phi_v0_2 = arg5; } temp_v1_2 = *arg2; if (arg3 < temp_v1_2) { *arg2 = temp_v1_2 - phi_v0_2; } else { *arg2 = temp_v1_2 + phi_v0_2; } func_80033850(arg6); } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80033A40.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 792017ad9d422c2467bd42686f383a5c41f41c75 ? func_8002A8A4(f32, f32, Player *, s8); /* extern */ ? func_8002BD58(Player *, s32); /* extern */ ? func_80033884(Player *, s32 *, s32 *, s32, s32, s32, s32); /* extern */ ? func_80033A40(Player *, s32 *, s32 *, s32, s32, s32, f32); /* extern */ ? func_80036CB4(Player *); /* extern */ s32 func_80038534(struct Controller *); /* extern */ static s32 D_800E3DF8[0x9C] = { 0, 0x3F000000, 0x3F000000, 0x3F000000, 0x3F000000, 0x3F000000, 0x3F000000, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F000000, 0x3F000000, 0x3F000000, 0x3F000000, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F19999A, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F333333, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, 0x3F4CCCCD, }; /* const */ void func_80033AE0(Player *player, struct Controller *arg1, s8 arg2) { s32 sp2E4; s32 sp2E0; s32 sp2D0; s32 sp2CC; s32 sp2C8; f32 sp2C4; f32 sp2C0; f32 sp2BC; ? sp44; s32 sp40; s32 sp3C; s32 sp38; ? *temp_t6; f32 temp_f0; f32 temp_f0_2; f32 temp_f0_3; f32 temp_f0_4; f32 temp_f0_5; f32 temp_f0_6; f32 temp_f0_7; s16 temp_v1_3; s16 temp_v1_6; s32 *temp_t7; s32 *temp_v0; s32 *temp_v0_2; s32 temp_f6; s32 temp_f8; s32 temp_lo; s32 temp_lo_10; s32 temp_lo_11; s32 temp_lo_12; s32 temp_lo_13; s32 temp_lo_14; s32 temp_lo_15; s32 temp_lo_16; s32 temp_lo_17; s32 temp_lo_2; s32 temp_lo_3; s32 temp_lo_4; s32 temp_lo_5; s32 temp_lo_6; s32 temp_lo_7; s32 temp_lo_8; s32 temp_lo_9; s32 temp_t2; s32 temp_t3; s32 temp_t3_2; s32 temp_t4; s32 temp_t5; s32 temp_t5_2; s32 temp_t7_2; s32 temp_t9; s32 temp_v0_10; s32 temp_v0_3; s32 temp_v0_7; s32 temp_v1; s32 temp_v1_2; s32 temp_v1_4; s32 temp_v1_5; s32 temp_v1_7; s32 temp_v1_8; u16 temp_v0_6; u16 temp_v1_9; u8 temp_v0_4; u8 temp_v0_5; u8 temp_v0_8; u8 temp_v0_9; s32 *phi_t7; ? *phi_t6; s32 phi_t1; s32 phi_a0; f32 phi_f2; s32 phi_s1; s32 phi_t0; s32 phi_v1; f32 phi_f2_2; f32 phi_f2_3; f32 phi_f12; f32 phi_f0; f32 phi_f0_2; s16 phi_s1_2; f32 phi_f0_3; f32 phi_f0_4; s16 phi_s1_3; s16 phi_t4; f32 phi_f2_4; s32 phi_t0_2; s32 phi_t0_3; s32 phi_v1_2; s32 phi_v1_3; f32 phi_f0_5; f32 phi_f2_5; f32 phi_f12_2; sp2C0 = 0.0f; phi_t7 = D_800E3DF8; phi_t6 = &sp44; do { temp_t7 = phi_t7 + 0xC; temp_t6 = phi_t6 + 0xC; temp_t6->unk-C = (s32) *phi_t7; temp_t6->unk-8 = (s32) temp_t7->unk-8; temp_t6->unk-4 = (s32) temp_t7->unk-4; phi_t7 = temp_t7; phi_t6 = temp_t6; } while (temp_t7 != (D_800E3DF8 + 0x270)); temp_v1 = player->unk_0BC; if ((((temp_v1 & 2) != 2) && (((temp_lo = (s32) player->unk_0C0 / 182, ((temp_lo < 7) != 0)) && (temp_lo >= -6)) || ((arg1->button & 0x10) != 0x10))) || (((player->unk_094 / 18.0f) * 216.0f) <= 20.0f) || ((temp_v1 & 0x8000) == 0x8000)) { sp2BC = 0.0f; func_80036CB4(player); } temp_lo_2 = (s32) player->unk_0C0 / 182; if (temp_lo_2 < -5) { player->unk_044 |= 4; player->unk_044 &= 0xFFFD; temp_v0 = &D_801652C0[arg2]; *temp_v0 += 1; phi_s1 = arg2 * 4; } else if (temp_lo_2 >= 6) { player->unk_044 |= 2; player->unk_044 &= 0xFFFB; temp_v0_2 = &D_801652C0[arg2]; *temp_v0_2 += 1; phi_s1 = arg2 * 4; } else { player->unk_044 &= 0xFFF9; D_801652C0[arg2] = 0; phi_s1 = arg2 * 4; } temp_v1_2 = player->unk_0BC; if (((temp_v1_2 & 2) == 2) || ((temp_v1_2 & 0x10) == 0x10)) { player->unk_044 &= 0xFFF9; } sp2BC = 0.0f; sp2E4 = player->unk_07C; temp_v0_3 = func_80038534(arg1); temp_v1_3 = player->unk_044; phi_t1 = temp_v0_3; phi_f2_4 = 0.0f; if (((temp_v1_3 & 1) == 1) || ((temp_v1_3 & 8) == 8)) { phi_t1 = -temp_v0_3; } temp_t3 = (phi_t1 << 0x10) & 0xFFFF0000; player->unk_07C = temp_t3; temp_t5 = sp2E4 - temp_t3; sp2D0 = temp_t5; temp_t9 = temp_t5 >> 0x10; sp2D0 = temp_t9; player->unk_0FA = (s16) temp_t9; if (((sp2D0 >= 0x5A) || (sp2D0 < -0x59)) && ((player->unk_044 & 0x4000) == 0)) { temp_v1_4 = player->unk_0BC; if (((temp_v1_4 & 0x10) == 0) && (gCCSelection == 2) && (gModeSelection != 3) && ((temp_v1_4 & 8) == 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 40.0f) && (player->unk_204 == 0)) { player->unk_00C |= 0x80; } } temp_v0_4 = player->boundingBoxCorners[3].surfaceType; temp_v1_5 = player->unk_0BC; if ((s32) temp_v0_4 < 0xF) { phi_f2_4 = 0.0f + D_800E3610[player->characterId][temp_v0_4]; } temp_v0_5 = player->boundingBoxCorners[2].surfaceType; phi_f2 = phi_f2_4; if ((s32) temp_v0_5 < 0xF) { phi_f2 = phi_f2_4 + D_800E3610[player->characterId][temp_v0_5]; } if ((temp_v1_5 & 0x20) == 0x20) { phi_t0_2 = 0xA; phi_v1_2 = 0xA; } else { phi_a0 = 0; phi_t0_2 = 8; if (((temp_v1_5 & 0x10) == 0x10) && ((temp_v1_5 & 2) != 2)) { phi_a0 = 3; } phi_v1_2 = 8; if (((player->unk_094 / 18.0f) * 216.0f) >= 15.0f) { temp_v1_6 = player->unk_044; if ((temp_v1_6 & 2) == 2) { if ((sp2D0 < 0x24) && (sp2D0 >= 0)) { temp_f8 = (s32) ((gKartTable800E3650[player->characterId] + 1.0f) * ((f32) (phi_a0 + 0xF) * (1.0f + phi_f2))); sp2C8 = temp_f8; sp2CC = temp_f8; } else { temp_f0 = 1.0f + phi_f2; sp2C8 = (s32) ((f32) (phi_a0 + 5) * temp_f0); sp2CC = (s32) ((f32) (phi_a0 + 9) * temp_f0); } } else if ((temp_v1_6 & 4) == 4) { if ((sp2D0 >= -0x23) && (sp2D0 <= 0)) { temp_f6 = (s32) ((gKartTable800E3650[player->characterId] + 1.0f) * ((f32) (phi_a0 + 0xF) * (1.0f + phi_f2))); sp2C8 = temp_f6; sp2CC = temp_f6; } else { temp_f0_2 = 1.0f + phi_f2; sp2C8 = (s32) ((f32) (phi_a0 + 5) * temp_f0_2); sp2CC = (s32) ((f32) (phi_a0 + 9) * temp_f0_2); } } else { temp_f0_3 = 1.0f + phi_f2; sp2C8 = (s32) ((f32) (phi_a0 + 3) * temp_f0_3); sp2CC = (s32) ((f32) (phi_a0 + 6) * temp_f0_3); } phi_t0_2 = sp2CC; phi_v1_2 = sp2C8; } else { sp2C8 = 8; sp2CC = 8; } } temp_v0_6 = player->unk_0DE; phi_t0_3 = phi_t0_2; phi_v1_3 = phi_v1_2; if ((temp_v0_6 & 1) == 1) { phi_t0 = (s32) ((f64) phi_t0_2 * 1.5); phi_v1 = (s32) ((f64) phi_v1_2 * 1.5); } else { if ((temp_v0_6 & 2) == 2) { phi_t0_3 = (s32) ((f64) phi_t0_2 * 1.2); phi_v1_3 = (s32) ((f64) phi_v1_2 * 1.2); } temp_f0_4 = *(D_801652A0 + phi_s1); phi_t0 = phi_t0_3; phi_v1 = phi_v1_3; if (((f64) (temp_f0_4 - player->boundingBoxCorners[2].cornerGroundY) >= 3.5) || ((f64) (temp_f0_4 - player->boundingBoxCorners[3].cornerGroundY) >= 3.5)) { phi_t0 = (s32) ((f64) phi_t0_3 * 1.05); phi_v1 = (s32) ((f64) phi_v1_3 * 1.05); } } sp2E0 = phi_t1; sp2CC = phi_t0; sp2C8 = phi_v1; func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x5A, 0x78000 / phi_v1, 0x1C2); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x59, 0x76000 / sp2C8, 0x1B8); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x58, 0x74000 / sp2C8, 0x1AE); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x57, 0x72000 / sp2C8, 0x1A4); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x56, 0x70000 / sp2C8, 0x19A); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x55, 0x58000 / sp2C8, 0x190); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x54, 0x56000 / sp2C8, 0x18B); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x53, 0x50000 / sp2C8, 0x186); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x52, 0x4F000 / sp2C8, 0x186); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x51, 0x4E000 / sp2C8, 0x17C); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x50, 0x4D000 / sp2C8, 0x172); temp_lo_3 = 0x4C000 / sp2C8; sp40 = temp_lo_3; func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x4F, temp_lo_3, 0x168); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x4E, sp40, 0x168); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x4D, 0x4B000 / sp2C8, 0x15E); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x4C, 0x4A000 / sp2C8, 0x154); temp_lo_4 = 0x49000 / sp2C8; sp40 = temp_lo_4; func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x4B, temp_lo_4, 0x14A); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x4A, sp40, 0x14A); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x49, sp40, 0x14A); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x48, 0x48000 / sp2C8, 0x140); temp_lo_5 = 0x47000 / sp2C8; sp40 = temp_lo_5; func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x47, temp_lo_5, 0x13B); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x46, sp40, 0x13B); temp_lo_6 = 0x46000 / sp2C8; sp40 = temp_lo_6; func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x45, temp_lo_6, 0x131); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x44, sp40, 0x131); temp_lo_7 = 0x45000 / sp2C8; sp3C = temp_lo_7; func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x43, temp_lo_7, 0x118); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x42, sp40, 0x10E); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x41, sp3C, 0x10E); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x40, 0x44000 / sp2C8, 0x104); temp_lo_8 = 0x43000 / sp2C8; sp40 = temp_lo_8; func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x3F, temp_lo_8, 0xFA); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x3E, sp40, 0xFA); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x3D, sp40, 0xFA); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x3C, 0x3D000 / sp2C8, 0xF5); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x3B, 0x3C000 / sp2C8, 0xF5); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x3A, 0x3B000 / sp2C8, 0xF5); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x39, 0x3A000 / sp2C8, 0xF5); temp_lo_9 = 0x38000 / sp2C8; sp40 = temp_lo_9; func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x38, temp_lo_9, 0xF5); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x37, sp40, 0xE6); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x36, sp40, 0xE6); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x35, sp40, 0xE6); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x34, sp40, 0xE6); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x33, sp40, 0xE6); temp_lo_10 = 0x32000 / sp2C8; sp40 = temp_lo_10; func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x32, temp_lo_10, 0xDC); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x31, sp40, 0xDC); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x30, sp40, 0xDC); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x2F, sp40, 0xDC); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x2E, sp40, 0xDC); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x2D, 0x30000 / sp2C8, 0x6E); temp_lo_11 = 0x2E000 / sp2C8; sp40 = temp_lo_11; func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x2C, temp_lo_11, 0x6E); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x2B, sp40, 0x6E); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x2A, sp40, 0x6E); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x29, sp40, 0x6E); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x28, sp40, 0x6E); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x27, 0x2C000 / sp2C8, 0x6E); temp_lo_12 = 0x28000 / sp2C8; sp40 = temp_lo_12; func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x26, temp_lo_12, 0x6E); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x25, sp40, 0x6E); temp_lo_13 = 0x24000 / sp2C8; sp40 = temp_lo_13; func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x24, temp_lo_13, 0x6E); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x23, sp40, 0x6E); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x22, 0x22000 / sp2C8, 0x6E); temp_lo_14 = 0x20000 / sp2C8; sp40 = temp_lo_14; func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x20, temp_lo_14, 0x64); func_80033884(player, &sp2D0, &sp2E4, player->unk_07C, 0x1F, sp40, 0x64); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x1E, 0x1F000 / sp2CC, 0.9f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x1D, 0x1E000 / sp2CC, 0.9f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x1C, 0x1D000 / sp2CC, 0.9f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x1B, 0x1C000 / sp2CC, 0.9f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x1A, 0x1B000 / sp2CC, 0.9f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x19, 0x1A000 / sp2CC, 1.0f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x18, 0x19000 / sp2CC, 1.0f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x17, 0x18000 / sp2CC, 1.0f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x16, 0x17000 / sp2CC, 1.0f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x15, 0x16000 / sp2CC, 1.0f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x14, 0x15000 / sp2CC, 1.05f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x13, 0x14000 / sp2CC, 1.05f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x12, 0x13000 / sp2CC, 1.05f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x11, 0x12000 / sp2CC, 1.05f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0x10, 0x11000 / sp2CC, 1.05f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0xF, 0x10000 / sp2CC, 1.2f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0xE, 0xF000 / sp2CC, 1.2f); temp_lo_15 = 0xE000 / sp2CC; sp40 = temp_lo_15; func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0xD, temp_lo_15, 1.2f); temp_lo_16 = 0xD000 / sp2CC; sp3C = temp_lo_16; func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0xC, temp_lo_16, 1.2f); temp_lo_17 = 0xC000 / sp2CC; sp38 = temp_lo_17; func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0xB, temp_lo_17, 1.2f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0xA, sp40, 1.6f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 9, sp3C, 1.6f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 8, sp38, 1.6f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 7, 0xB000 / sp2CC, 1.6f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 6, 0xA000 / sp2CC, 1.6f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 5, 0x9000 / sp2CC, 1.9f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 4, 0x8000 / sp2CC, 1.9f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 3, 0x7000 / sp2CC, 1.9f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 2, 0x6000 / sp2CC, 1.9f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 1, 0x5000 / sp2CC, 1.9f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0, 0 / sp2CC, 1.9f); temp_v1_7 = player->unk_0BC; temp_v0_7 = temp_v1_7 & 0x10; if (temp_v0_7 == 0x10) { phi_f2_2 = (f32) ((s32) (sp2E4 >> 0x10) / 8); phi_f0_5 = (player->unk_094 / 18.0f) * 216.0f; } else { temp_f0_5 = (player->unk_094 / 18.0f) * 216.0f; phi_f0_5 = temp_f0_5; if (temp_f0_5 <= 25.0f) { phi_f2_2 = (f32) ((s32) (sp2E4 >> 0x10) / 12); } else { phi_f2_2 = (f32) (sp2E4 >> 0x10) / (8.0f + (player->unk_09C / 50.0f)); } } phi_f2_5 = phi_f2_2; if (phi_f2_2 < 0.0f) { phi_f2_5 = -phi_f2_2; } if ((temp_v1_7 & 0x20) == 0x20) { phi_f2_3 = (sp + ((s16) (s32) phi_f0_5 * 4))->unk6C * 1.5f * phi_f2_5; } else if (temp_v0_7 == 0x10) { phi_f2_3 = (sp + ((s16) (s32) phi_f0_5 * 4))->unk44 * phi_f2_5; } else { phi_f2_3 = (sp + ((s16) (s32) phi_f0_5 * 4))->unk44 * 1.5f * phi_f2_5; } player->unk_07C = sp2E4; if (player->unk_10C != 0) { sp2C4 = phi_f2_3; func_8002BD58(player, 0x10); } temp_v0_8 = player->boundingBoxCorners[3].surfaceType; player->unk_0BC &= 0xDFFFFFFF; if ((s32) temp_v0_8 >= 0xF) { phi_f12_2 = sp2C0; } else { phi_f12_2 = 0.0f + D_800E3410[player->characterId][temp_v0_8]; } temp_v0_9 = player->boundingBoxCorners[2].surfaceType; phi_f12 = phi_f12_2; if ((s32) temp_v0_9 < 0xF) { phi_f12 = phi_f12_2 + D_800E3410[player->characterId][temp_v0_9]; } temp_v1_8 = player->unk_0BC; temp_v0_10 = temp_v1_8 & 2; if ((temp_v0_10 != 2) && ((temp_v1_8 & 0x10) != 0x10)) { if ((temp_v1_8 & 0x20) == 0x20) { player->unk_078 = (s16) (s32) ((f32) (((s32) player->unk_07C >> 0x10) * 5) * phi_f2_3); } else { if ((temp_v1_8 & 1) != 1) { temp_v1_9 = player->characterId; temp_t3_2 = (s32) player->unk_07C >> 0x10; if ((temp_t3_2 >= 0x2D) || (temp_t3_2 < -0x2C)) { player->unk_078 = (s16) (s32) (((f64) gKartHandlingTable[temp_v1_9] + 0.15) * (f64) ((f32) temp_t3_2 * (phi_f2_3 + (phi_f2_3 * phi_f12)))); } else { player->unk_078 = (s16) (s32) (gKartHandlingTable[temp_v1_9] * ((f32) temp_t3_2 * (phi_f2_3 + (phi_f2_3 * phi_f12)))); } } else { temp_f0_6 = (player->unk_094 / 18.0f) * 216.0f; phi_f0 = temp_f0_6; if ((temp_f0_6 >= 0.0f) && (temp_f0_6 < 8.0f)) { player->unk_078 = (s16) (s32) ((f32) ((s32) player->unk_07C >> 0x10) * (phi_f2_3 + (phi_f2_3 * phi_f12))); phi_f0 = (player->unk_094 / 18.0f) * 216.0f; } phi_f0_2 = phi_f0; if ((phi_f0 >= 8.0f) && (phi_f0 < 65.0f)) { player->unk_078 = (s16) (s32) ((f64) ((s32) player->unk_07C >> 0x10) * ((f64) phi_f2_3 + 1.5 + (f64) (phi_f2_3 * phi_f12))); phi_f0_2 = (player->unk_094 / 18.0f) * 216.0f; } if (phi_f0_2 >= 65.0f) { player->unk_078 = (s16) (s32) ((f64) ((s32) player->unk_07C >> 0x10) * ((f64) phi_f2_3 + 1.6 + (f64) (phi_f2_3 * phi_f12))); } } player->unk_228 = 0; if ((s32) player->unk_22A < 2) { player->unk_22A = 0; } } } else if (((temp_v1_8 & 8) != 8) && (temp_v0_10 != 2)) { if (((s32) player->unk_0C0 / 182) > 0) { temp_t5_2 = (s32) player->unk_07C >> 0x10; phi_s1_2 = (s16) (((s32) ((temp_t5_2 * 0xD) + 0x2B1) / 106) + 0x28); if (temp_t5_2 < -0x27) { temp_t2 = temp_v1_8 | 0x20000000; player->unk_0BC = temp_t2; if (temp_t5_2 < -0x31) { player->unk_0BC = temp_t2 | 0x20000000; } } sp2C4 = phi_f2_3; sp2C0 = phi_f12; func_8002A8A4(phi_f12, 0.0f, player, arg2); } else { temp_t7_2 = (s32) player->unk_07C >> 0x10; phi_s1_2 = (s16) (((s32) ((temp_t7_2 * 0xD) + 0x2B1) / 106) - 0x35); if (temp_t7_2 >= 0x28) { temp_t4 = temp_v1_8 | 0x20000000; player->unk_0BC = temp_t4; if (temp_t7_2 < -0x31) { player->unk_0BC = temp_t4 | 0x20000000; } } sp2C4 = phi_f2_3; sp2C0 = phi_f12; func_8002A8A4(phi_f12, 0.0f, player, arg2); } temp_f0_7 = (player->unk_094 / 18.0f) * 216.0f; phi_f0_3 = temp_f0_7; if ((temp_f0_7 >= 0.0f) && (temp_f0_7 < 8.0f)) { player->unk_078 = (s16) (s32) ((f32) phi_s1_2 * (sp2C4 + 2.0f + (sp2C4 * sp2C0))); phi_f0_3 = (player->unk_094 / 18.0f) * 216.0f; } phi_f0_4 = phi_f0_3; if ((phi_f0_3 >= 8.0f) && (phi_f0_3 < 65.0f)) { player->unk_078 = (s16) (s32) ((f32) phi_s1_2 * (sp2C4 + 3.0f + (sp2C4 * sp2C0))); phi_f0_4 = (player->unk_094 / 18.0f) * 216.0f; } if (phi_f0_4 >= 65.0f) { player->unk_078 = (s16) (s32) ((f64) phi_s1_2 * ((f64) sp2C4 + 3.5 + (f64) (sp2C4 * sp2C0))); } if ((player->unk_0BC & 0x20000000) == 0x20000000) { player->unk_078 = (s16) (s32) ((f64) player->unk_078 * 0.9); } else { phi_t4 = (s16) (s32) ((f64) player->unk_078 * 0.65); goto block_125; } } else { phi_s1_3 = (s16) ((s32) player->unk_07C >> 0x10); if (sp2E0 == 0) { phi_s1_3 = 0; } if (((player->unk_094 / 18.0f) * 216.0f) <= 5.0f) { player->unk_078 = (s16) (s32) ((f32) phi_s1_3 * (phi_f2_3 + 6.0f)); } else { phi_t4 = (s16) (s32) ((f32) phi_s1_3 * (phi_f2_3 + 1.5f)); block_125: player->unk_078 = phi_t4; } } if (gModeSelection == 3) { player->unk_078 = (s16) (s32) ((f64) player->unk_078 * 1.7); } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80033AE0.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? move_s32_towards(f32, s32 *, s16, ?, void *); // extern ? func_80036CB4(f32, void *, s32); // extern extern s32 D_800E4068; extern ? D_800E4308; extern f64 D_800EDD88; void func_8003680C(void *arg0, s16 arg1) { s32 sp304; ? sp44; ? sp24; ? *temp_t1; s16 temp_v1_2; s32 *temp_a0; s32 *temp_t6; s32 temp_t4; s32 temp_t8; s32 temp_v0; s32 temp_v0_2; s32 temp_v0_3; s32 temp_v1; void *temp_a3; s32 *phi_t6; ? *phi_t1; f32 phi_f0; f32 phi_f0_2; s16 phi_v0; s16 phi_v0_2; f32 phi_f0_3; temp_a3 = arg0; sp304 = 0; phi_t6 = &D_800E4068; phi_t1 = &sp44; do { temp_t6 = phi_t6 + 0xC; temp_t1 = phi_t1 + 0xC; temp_t1->unk-C = *phi_t6; temp_t1->unk-8 = temp_t6->unk-8; temp_t1->unk-4 = temp_t6->unk-4; phi_t6 = temp_t6; phi_t1 = temp_t1; } while (temp_t6 != (&D_800E4068 + 0x2A0)); sp24.unk0 = D_800E4308.unk0; sp24.unk4 = D_800E4308.unk4; sp24.unkC = D_800E4308.unkC; sp24.unk8 = D_800E4308.unk8; sp24.unk10 = D_800E4308.unk10; sp24.unk14 = D_800E4308.unk14; sp24.unk1C = D_800E4308.unk1C; sp24.unk18 = D_800E4308.unk18; temp_v0 = temp_a3->unkBC; if (((temp_v0 & 0x80) == 0) && ((temp_v0 & 0x40) == 0) && ((temp_v0 & 0x400) == 0) && ((temp_v0 << 0xF) >= 0) && ((temp_v0 << 0xE) >= 0) && ((temp_v0 << 7) >= 0) && ((temp_v0 << 6) >= 0) && ((temp_v0 << 5) >= 0)) { temp_t8 = temp_v0 & 0xDFFFFFFF; if (!(((temp_a3->unk94 / 18.0f) * 216.0f) >= 110.0f)) { temp_a3->unkBC = temp_t8; temp_a3->unk228 = 0; if ((temp_t8 & 0x80) == 0) { temp_a0 = &sp304; if ((temp_t8 & 0x40) == 0) { sp304 = temp_a3->unk7C >> 0x10; arg0 = temp_a3; move_s32_towards(216.0f, temp_a0, arg1, 0x3EB33333, temp_a3); temp_t4 = sp304 << 0x10; sp304 = temp_t4; temp_v0_2 = arg0->unkBC; temp_v1 = temp_v0_2 & 0x10; if (temp_v1 == 0x10) { phi_f0 = (temp_t4 >> 0x10) / 5; } else { phi_f0 = (sp304 >> 0x10) / (8.0f + (arg0->unk9C / 50.0f)); } phi_f0_3 = phi_f0; if (phi_f0 < 0.0f) { phi_f0_3 = -phi_f0; } if (temp_v1 == 0x10) { phi_f0_2 = *(&sp44 + (((arg0->unk94 / 18.0f) * 216.0f) * 4)) * phi_f0_3; } else { phi_f0_2 = (sp + (arg0->unk254 * 4))->unk24 * *(&sp44 + (((arg0->unk94 / 18.0f) * 216.0f) * 4)) * phi_f0_3; } arg0->unk7C = sp304; if (((temp_v0_2 & 2) != 2) && (temp_v1 != 0x10)) { if ((temp_v0_2 & 1) != 1) { arg0->unk78 = (sp304 >> 0x10) * phi_f0_2; } else { arg0->unk78 = (arg0->unk7C >> 0x10) * (phi_f0_2 + 1.5); } } else if ((temp_v0_2 & 8) != 8) { if ((arg0->unkC0 / 0xB6) > 0) { phi_v0 = arg0->unk7C >> 0x10; } else { phi_v0 = arg0->unk7C >> 0x10; } arg0->unk78 = phi_v0 * (phi_f0_2 + 3.0); arg0->unk78 = arg0->unk78 * D_800EDD88; } else { phi_v0_2 = arg0->unk7C >> 0x10; if (arg1 == 0) { phi_v0_2 = 0; } arg0->unk78 = phi_v0_2 * phi_f0_2; } temp_v0_3 = arg0->unkBC; if ((((temp_v0_3 & 2) != 2) && (temp_v1_2 = arg0->unkC0, ((temp_v1_2 < 0x3D) != 0)) && (temp_v1_2 >= -0x3C)) || (((arg0->unk94 / 18.0f) * 216.0f) <= 20.0f) || ((temp_v0_3 & 0x8000) == 0x8000)) { func_80036CB4(216.0f, arg0, 2); } } } } } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8003680C.s") #endif void func_80036C5C(Player *arg0) { if (((arg0->unk_094 / 18.0f) * 216.0f) > 20.0f) { arg0->unk_204 = 0; arg0->unk_0BC |= 0x10; arg0->unk_0B6 |= 0x800; } } #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_80036CB4(void *arg0) { s32 temp_lo; s32 temp_v0; s32 temp_v0_2; s32 temp_v1; s32 phi_v0; s32 phi_v1; s32 phi_v0_2; temp_v0 = arg0->unkBC; temp_v1 = temp_v0 & 0x10; phi_v1 = temp_v1; phi_v0_2 = temp_v0; if ((temp_v1 == 0x10) && ((arg0->unk0 & 0x4000) == 0x4000)) { temp_lo = arg0->unkC0 / 0xB6; phi_v0 = temp_lo; if (temp_lo > 0) { arg0->unk7C = (((((arg0->unk7C >> 0x10) * 0xD) + 0x2B1) / 0x6A) + 0x28) << 0x10; phi_v0 = arg0->unkC0 / 0xB6; } if (phi_v0 < 0) { arg0->unk7C = (((((arg0->unk7C >> 0x10) * 0xD) + 0x2B1) / 0x6A) - 0x35) << 0x10; } temp_v0_2 = arg0->unkBC & ~0x10; arg0->unkBC = temp_v0_2; phi_v1 = temp_v0_2 & 0x10; phi_v0_2 = temp_v0_2; } if ((phi_v1 == 0x10) && ((arg0->unk0 & 0x4000) != 0x4000)) { arg0->unkBC = phi_v0_2 & ~0x10; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80036CB4.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_802B63B8(f32, f32, void *, void *, void *); // extern extern f64 D_800EDD90; extern f64 D_800EDD98; extern f64 D_800EDDA0; extern f64 D_800EDDA8; extern f64 D_800EDDB0; extern f64 D_800EDDB8; extern f64 D_800EDDC0; void func_80036DB4(void *arg0, void *arg1, void *arg2) { f32 sp20; f32 temp_f0; f32 temp_f0_2; f32 temp_f0_3; f32 temp_f12; f32 temp_f12_2; f32 temp_f12_3; f32 temp_f14; f32 temp_f14_2; f32 temp_f14_3; f32 temp_f14_4; f32 temp_f14_5; f32 temp_f2; f32 temp_f2_2; f32 temp_f2_3; f32 temp_f2_4; f32 temp_f2_5; s16 temp_v0; s32 temp_a0; s32 temp_t0; s32 temp_t6; s32 phi_v0; f32 phi_f18; f32 phi_f12; f32 phi_f14; f32 phi_f0; f32 phi_f2; f64 phi_f10; temp_t0 = arg0->unkBC; if (((temp_t0 & 0x1000) == 0x1000) || ((temp_t0 & 0x20) == 0x20)) { arg1->unk0 = 0.0f; arg1->unk4 = 0.0f; arg1->unk8 = 0.0f; func_802B63B8((bitwise f32) arg1, (bitwise f32) (arg0 + 0x174), arg0); } else { temp_a0 = temp_t0 & 0x10; if ((temp_a0 == 0x10) && ((temp_t0 & 2) != 2)) { temp_f12 = arg0->unk94; temp_f0 = arg0->unk208; temp_f14 = -arg0->unk20C; temp_f2 = -(temp_f12 / 18.0f) * 216.0f; sp20 = arg0->unk84 * 3.0f; phi_f12 = temp_f12; phi_f14 = temp_f14; phi_f18 = temp_f0 + (temp_f2 * 3.0f) + (temp_f14 * 10.0f); phi_f0 = temp_f0; phi_f2 = temp_f2; } else if (((temp_t0 & 0x800) == 0) && ((arg0->unk44 & 0x4000) == 0)) { temp_v0 = arg0->unkFA; phi_v0 = temp_v0; if (temp_v0 > 0) { phi_v0 = temp_v0 * -1; } temp_t6 = arg0->unk7C >> 0x10; if ((temp_t6 < 0x15) && (temp_t6 >= -0x14)) { if (phi_v0 < 0x14) { temp_f14_2 = -arg0->unk20C; temp_f2_2 = -(arg0->unk94 / 18.0f) * 216.0f; phi_f14 = temp_f14_2; phi_f10 = (arg0->unk208 + (temp_f2_2 / 3.0f)) + (-arg0->unk9C * D_800EDD90) + (temp_f14_2 * 50.0f); phi_f2 = temp_f2_2; goto block_16; } temp_f12_2 = arg0->unk94; temp_f0_2 = arg0->unk208; temp_f14_3 = -arg0->unk20C; temp_f2_3 = -(temp_f12_2 / 18.0f) * 216.0f; phi_f12 = temp_f12_2; phi_f14 = temp_f14_3; phi_f18 = (temp_f0_2 + (temp_f2_3 / 3.0f)) + ((temp_t6 * D_800EDD98) + (-arg0->unk9C * D_800EDDA0)) + (temp_f14_3 * 50.0f); phi_f0 = temp_f0_2; phi_f2 = temp_f2_3; } else { temp_f14_4 = -arg0->unk20C; temp_f2_4 = -(arg0->unk94 / 18.0f) * 216.0f; phi_f14 = temp_f14_4; phi_f10 = (arg0->unk208 + (temp_f2_4 / 3.0f)) + ((temp_t6 * D_800EDDA8) + (-arg0->unk9C * D_800EDDB0)) + (temp_f14_4 * 50.0f); phi_f2 = temp_f2_4; block_16: phi_f12 = arg0->unk94; phi_f18 = phi_f10; phi_f0 = arg0->unk208; } sp20 = arg0->unk84; } else { temp_f12_3 = arg0->unk94; temp_f0_3 = arg0->unk208; temp_f14_5 = -arg0->unk20C; temp_f2_5 = -(temp_f12_3 / 18.0f) * 216.0f; sp20 = arg0->unk84; phi_f12 = temp_f12_3; phi_f14 = temp_f14_5; phi_f18 = temp_f0_3 + (temp_f2_5 * 1.5) + (((arg0->unk7C >> 0x10) * D_800EDDB8) + (-arg0->unk9C * D_800EDDC0)) + (temp_f14_5 * 50.0f); phi_f0 = temp_f0_3; phi_f2 = temp_f2_5; } if ((temp_t0 & 0x200) == 0x200) { if ((temp_a0 == 0x10) && ((temp_t0 & 2) != 2)) { sp20 = arg0->unk84 * 3.0f; phi_f18 = phi_f0 + (phi_f2 * 3.0f) + (phi_f14 * 10.0f); } else { sp20 = arg0->unk84; phi_f18 = phi_f0 + (phi_f2 / 3.0f); } } arg1->unk4 = 0.0f; arg1->unk0 = (arg0->unk90 + phi_f18) * phi_f12; arg1->unk8 = arg0->unk94 * sp20; func_802B63B8(phi_f12, phi_f14, arg1, arg0 + 0x174, arg0); } arg2->unk0 = arg1->unk0; arg2->unk4 = arg1->unk4; arg2->unk8 = arg1->unk8; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80036DB4.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_802B63B8(f32, f32, void *, void *, void *); // extern extern f64 D_800EDDC8; extern f64 D_800EDDD0; extern f64 D_800EDDD8; extern f64 D_800EDDE0; extern f64 D_800EDDE8; extern f64 D_800EDDF0; extern f64 D_800EDDF8; void func_800371F4(void *arg0, void *arg1, void *arg2) { f32 sp20; f32 temp_f0; f32 temp_f0_2; f32 temp_f12; f32 temp_f12_2; f32 temp_f14; f32 temp_f14_2; f32 temp_f14_3; f32 temp_f14_4; f32 temp_f14_5; f32 temp_f2; f32 temp_f2_2; f32 temp_f2_3; f32 temp_f2_4; f32 temp_f2_5; s16 temp_v0; s32 temp_a0; s32 temp_t0; s32 temp_t6; s32 phi_v0; f32 phi_f18; f32 phi_f12; f32 phi_f14; f32 phi_f0; f32 phi_f2; temp_t0 = arg0->unkBC; if (((temp_t0 & 0x1000) == 0x1000) || ((temp_t0 & 0x20) == 0x20)) { arg1->unk0 = 0.0f; arg1->unk4 = 0.0f; arg1->unk8 = 0.0f; func_802B63B8((bitwise f32) arg1, (bitwise f32) (arg0 + 0x174), arg0); } else { temp_a0 = temp_t0 & 0x10; if ((temp_a0 == 0x10) && ((temp_t0 & 2) != 2)) { temp_f12 = arg0->unk94; temp_f0 = arg0->unk208; temp_f2 = -(temp_f12 / 18.0f) * 216.0f; temp_f14 = -arg0->unk20C * 50.0f; sp20 = arg0->unk84 * 3.0f; phi_f12 = temp_f12; phi_f14 = temp_f14; phi_f18 = temp_f0 + (temp_f2 * 3.0f) + temp_f14; phi_f0 = temp_f0; phi_f2 = temp_f2; } else if (((temp_t0 & 0x800) == 0) && ((arg0->unk44 & 0x4000) == 0)) { temp_v0 = arg0->unkFA; phi_v0 = temp_v0; if (temp_v0 > 0) { phi_v0 = temp_v0 * -1; } temp_t6 = arg0->unk7C >> 0x10; if ((temp_t6 < 0x15) && (temp_t6 >= -0x14)) { if (phi_v0 < 0x14) { temp_f2_2 = -(arg0->unk94 / 18.0f) * 216.0f; temp_f14_2 = -arg0->unk20C * 50.0f; phi_f14 = temp_f14_2; phi_f18 = (arg0->unk208 + (temp_f2_2 / 3.0f)) + (-arg0->unk9C * D_800EDDC8) + temp_f14_2; phi_f2 = temp_f2_2; } else { temp_f2_3 = -(arg0->unk94 / 18.0f) * 216.0f; temp_f14_3 = -arg0->unk20C * 50.0f; phi_f14 = temp_f14_3; phi_f18 = ((arg0->unk208 + (temp_f2_3 / 3.0f)) - ((temp_t6 * D_800EDDD0) + (arg0->unk9C * D_800EDDD8))) + temp_f14_3; phi_f2 = temp_f2_3; } } else { temp_f2_4 = -(arg0->unk94 / 18.0f) * 216.0f; temp_f14_4 = -arg0->unk20C * 50.0f; phi_f14 = temp_f14_4; phi_f18 = ((arg0->unk208 + (temp_f2_4 / 3.0f)) - ((temp_t6 * D_800EDDE0) + (arg0->unk9C * D_800EDDE8))) + temp_f14_4; phi_f2 = temp_f2_4; } sp20 = arg0->unk84; phi_f12 = arg0->unk94; phi_f0 = arg0->unk208; } else { temp_f12_2 = arg0->unk94; temp_f0_2 = arg0->unk208; temp_f2_5 = -(temp_f12_2 / 18.0f) * 216.0f; temp_f14_5 = -arg0->unk20C * 50.0f; sp20 = arg0->unk84; phi_f12 = temp_f12_2; phi_f14 = temp_f14_5; phi_f18 = ((temp_f0_2 + (temp_f2_5 * 1.5)) - (((arg0->unk7C >> 0x10) * D_800EDDF0) + (arg0->unk9C * D_800EDDF8))) + temp_f14_5; phi_f0 = temp_f0_2; phi_f2 = temp_f2_5; } if ((temp_t0 & 0x200) == 0x200) { if ((temp_a0 == 0x10) && ((temp_t0 & 2) != 2)) { sp20 = arg0->unk84 * 3.0f; phi_f18 = phi_f0 + (phi_f2 * 3.0f) + phi_f14; } else { sp20 = arg0->unk84; phi_f18 = phi_f0 + (phi_f2 / 3.0f); } } arg1->unk4 = 0.0f; arg1->unk0 = -(arg0->unk90 + phi_f18) * phi_f12; arg1->unk8 = arg0->unk94 * sp20; func_802B63B8(phi_f12, phi_f14, arg1, arg0 + 0x174, arg0); } arg2->unk0 = arg1->unk0; arg2->unk4 = arg1->unk4; arg2->unk8 = arg1->unk8; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_800371F4.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_802B63B8(f32, void *, void *, void *, void *); // extern void func_80037614(void *arg0, void *arg1, void *arg2) { s32 temp_v0; void *temp_a0; void *temp_a3; f32 phi_f2; f32 phi_f12; temp_v0 = arg0->unkBC; temp_a3 = arg1; if (((temp_v0 & 0x1000) == 0x1000) || ((temp_v0 & 0x20) == 0x20)) { temp_a3->unk0 = 0.0f; temp_a3->unk4 = 0.0f; temp_a3->unk8 = 0.0f; arg1 = temp_a3; func_802B63B8(0.0f, temp_a3, arg0 + 0x174, temp_a3); } else { if (((temp_v0 & 0x10) == 0x10) && ((temp_v0 & 2) != 2)) { phi_f2 = (-(arg0->unk94 / 18.0f) * 216.0f * 2.0f) + -80.0f; phi_f12 = -80.0f; } else { phi_f2 = ((-(arg0->unk94 / 18.0f) * 216.0f) / 2.0f) + -20.0f; phi_f12 = -40.0f; } temp_a0 = temp_a3; temp_a3->unk4 = NULL; temp_a3->unk0 = (phi_f2 + 28.0f) * arg0->unk94; temp_a3->unk8 = arg0->unk94 * phi_f12; arg1 = temp_a3; func_802B63B8(phi_f12, NULL, temp_a0, arg0 + 0x174, temp_a3); } *arg2 = arg1->unk0; arg2->unk4 = arg1->unk4; arg2->unk8 = arg1->unk8; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80037614.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_802B63B8(f32, void *, void *, void *, void *); // extern void func_8003777C(void *arg0, void *arg1, void *arg2) { s32 temp_v0; void *temp_a0; void *temp_a3; f32 phi_f2; f32 phi_f12; temp_v0 = arg0->unkBC; temp_a3 = arg1; if (((temp_v0 & 0x1000) == 0x1000) || ((temp_v0 & 0x20) == 0x20)) { temp_a3->unk0 = 0.0f; temp_a3->unk4 = 0.0f; temp_a3->unk8 = 0.0f; arg1 = temp_a3; func_802B63B8(0.0f, temp_a3, arg0 + 0x174, temp_a3); } else { if (((temp_v0 & 0x10) == 0x10) && ((temp_v0 & 2) != 2)) { phi_f2 = (-(arg0->unk94 / 18.0f) * 216.0f * 2.0f) + -80.0f; phi_f12 = -80.0f; } else { phi_f2 = ((-(arg0->unk94 / 18.0f) * 216.0f) / 2.0f) + -20.0f; phi_f12 = -40.0f; } temp_a0 = temp_a3; temp_a3->unk4 = NULL; temp_a3->unk0 = -(phi_f2 + 28.0f) * arg0->unk94; temp_a3->unk8 = arg0->unk94 * phi_f12; arg1 = temp_a3; func_802B63B8(phi_f12, NULL, temp_a0, arg0 + 0x174, temp_a3); } *arg2 = arg1->unk0; arg2->unk4 = arg1->unk4; arg2->unk8 = arg1->unk8; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_8003777C.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_802B63B8(f32, void *, void *, void *, void *); // extern void func_800378E8(void *arg0, void *arg1, void *arg2) { s32 temp_v0; f32 phi_f2; f32 phi_f12; temp_v0 = arg0->unkBC; if ((temp_v0 & 0x20) == 0x20) { arg1->unk0 = 0.0f; arg1->unk4 = 0.0f; arg1->unk8 = 0.0f; func_802B63B8(0.0f, arg1, arg0 + 0x174, arg0); } else { if ((temp_v0 & 0x10) == 0x10) { phi_f2 = arg0->unk208 + (-(arg0->unk94 / 18.0f) * 216.0f * 5.0f) + (-arg0->unk20C * 10.0f); phi_f12 = -100.0f; } else { phi_f2 = arg0->unk208 + ((-(arg0->unk94 / 18.0f) * 216.0f) / 40.0f) + (-arg0->unk20C * 50.0f); phi_f12 = arg0->unk84; } arg1->unk4 = 0.0f; arg1->unk0 = (arg0->unk90 + phi_f2) * arg0->unk94; arg1->unk8 = arg0->unk94 * phi_f12; func_802B63B8(phi_f12, (bitwise void *) 0.0f, arg1, arg0 + 0x174, arg0); } arg2->unk0 = arg1->unk0; arg2->unk4 = arg1->unk4; arg2->unk8 = arg1->unk8; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_800378E8.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_802B63B8(f32, void *, void *, void *, void *); // extern void func_80037A4C(void *arg0, void *arg1, void *arg2) { s32 temp_v0; f32 phi_f2; f32 phi_f12; temp_v0 = arg0->unkBC; if ((temp_v0 & 0x20) == 0x20) { arg1->unk0 = 0.0f; arg1->unk4 = 0.0f; arg1->unk8 = 0.0f; func_802B63B8(0.0f, arg1, arg0 + 0x174, arg0); } else { if ((temp_v0 & 0x10) == 0x10) { phi_f2 = arg0->unk208 + (-(arg0->unk94 / 18.0f) * 216.0f * 5.0f) + (-arg0->unk20C * 50.0f); phi_f12 = -100.0f; } else { phi_f2 = arg0->unk208 + ((-(arg0->unk94 / 18.0f) * 216.0f) / 40.0f) + (-arg0->unk20C * 50.0f); phi_f12 = arg0->unk84; } arg1->unk4 = 0.0f; arg1->unk0 = -(arg0->unk90 + phi_f2) * arg0->unk94; arg1->unk8 = arg0->unk94 * phi_f12; func_802B63B8(phi_f12, (bitwise void *) 0.0f, arg1, arg0 + 0x174, arg0); } arg2->unk0 = arg1->unk0; arg2->unk4 = arg1->unk4; arg2->unk8 = arg1->unk8; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80037A4C.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_80036DB4(? *, void *); // extern ? func_800371F4(? *, void *); // extern ? func_80037614(? *, void *); // extern ? func_8003777C(? *, void *); // extern ? func_800378E8(? *, void *); // extern ? func_80037A4C(? *, void *); // extern void func_80037BB4(void *arg0, void *arg1) { ? sp20; s16 temp_v0; temp_v0 = arg0->unk78; if (temp_v0 == 0) { arg1->unk0 = 0.0f; arg1->unk4 = 0.0f; arg1->unk8 = 0.0f; return; } if (temp_v0 < 0) { if (((arg0->unkBC & 0x20000000) != 0x20000000) || (arg0->unk228 >= 0x64)) { arg0->unk2E = arg0->unk2E + temp_v0; } if ((arg0->unk0 & 0x1000) == 0) { if (gModeSelection == BATTLE) { func_800378E8(&sp20, arg1); return; } func_80036DB4(&sp20, arg1); return; } func_80037614(&sp20, arg1); return; } if (((arg0->unkBC & 0x20000000) != 0x20000000) || (arg0->unk228 >= 0x64)) { arg0->unk2E = arg0->unk2E + temp_v0; } if ((arg0->unk0 & 0x1000) == 0) { if (gModeSelection == BATTLE) { func_80037A4C(&sp20, arg1); return; } func_800371F4(&sp20, arg1); return; } func_8003777C(&sp20, arg1); } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80037BB4.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 90e635335cb052c4324a3aa7478e4761db19dfaf ? func_8002AA50(Player *, s32, s32); /* extern */ ? func_80030C34(Player *); /* extern */ ? func_80030E00(Player *); /* extern */ ? func_80030FC8(Player *, s32, s32); /* extern */ ? func_80031F48(Player *, ?, s32, s32); /* extern */ ? func_80032050(Player *); /* extern */ ? func_8003221C(Player *); /* extern */ ? func_800323E4(Player *); /* extern */ ? func_800332E8(Player *, s8); /* extern */ ? func_800337CC(Player *, ?, s8); /* extern */ ? func_80033AE0(Player *, struct Controller *, s8); /* extern */ s32 func_800388B0(struct Controller *); /* extern */ ? func_800C9060(u8, ?); /* extern */ void func_80037CFC(Player *arg0, struct Controller *arg1, u8 arg2) { s16 temp_v0_5; s32 temp_t0; s32 temp_t4; s32 temp_v0; s32 temp_v0_3; s32 temp_v0_4; s32 temp_v1; u16 temp_v0_2; u16 temp_v1_2; u16 temp_v1_3; s32 phi_v0; s32 phi_v1; s32 phi_v0_2; s32 phi_a2; s32 phi_a3; temp_v0 = arg0->unk_0BC; temp_v1 = temp_v0 & 0x80; phi_v1 = temp_v1; phi_v0_2 = temp_v0; if ((temp_v1 != 0x80) && ((temp_v0 & 0x40) != 0x40) && ((temp_v0 & 0x400) != 0x400) && ((temp_v0 & 0x4000) != 0x4000) && ((temp_v0 & 0x01000000) != 0x01000000) && ((temp_v0 & 0x02000000) != 0x02000000) && ((temp_v0 & 0x10000) != 0x10000) && ((temp_v0 & 0x20000) != 0x20000)) { if (((temp_v0 & 0x04000000) != 0x04000000) && ((temp_v0 & 8) != 8) && ((temp_v0 & 2) != 2) && ((temp_v0 & 0x10) != 0x10) && ((arg1->buttonPressed & 0x10) != 0)) { func_8002AA50(arg0, 0x01000000, 0x02000000); temp_v0_2 = arg0->unk_000; if (((temp_v0_2 & 0x4000) == 0x4000) && ((temp_v0_2 & 0x100) != 0x100)) { func_800C9060(arg2, 0x19008000); } } temp_v0_3 = arg0->unk_0BC; if ((temp_v0_3 & 8) != 8) { func_80033AE0(arg0, arg1, (s8) arg2); } else if (((temp_v0_3 & 2) == 2) && (arg0->unk_124 <= 5.0f)) { func_80033AE0(arg0, arg1, (s8) arg2); } temp_t4 = arg0->unk_0BC & ~1; arg0->unk_0BC = temp_t4; phi_v0 = temp_t4; if (((temp_t4 << 0xB) >= 0) && ((temp_t4 & 4) == 0)) { if (((arg0->unk_094 / 18.0f) * 216.0f) <= 12.0f) { temp_v1_2 = arg1->button; if ((temp_v1_2 & 0x8000) != 0) { temp_t0 = temp_t4 | 0x20; if ((temp_v1_2 & 0x4000) != 0) { arg0->unk_0BC = temp_t0; phi_v0 = temp_t0; if ((temp_t0 & 0x20) != 0x20) { arg0->unk_09C += 100.0f; phi_v0 = temp_t0; } } } } if (((phi_v0 & 0x20) == 0x20) && ((temp_v1_3 = arg1->button, ((temp_v1_3 & 0x4000) == 0)) || ((temp_v1_3 & 0x8000) == 0))) { arg0->unk_0BC = phi_v0 & ~0x20; } } if ((arg0->unk_044 & 1) != 1) { if ((arg1->button & 0x8000) != 0) { func_80030FC8(arg0); func_80030E00(arg0); } else { if (gModeSelection == 3) { func_80031F48(arg0, 0x40000000); } else { func_80031F48(arg0, 0x3F800000); } func_80030C34(arg0); } if ((arg1->button & 0x4000) != 0) { func_800323E4(arg0); func_8003221C(arg0); } else { arg0->unk_20C = 0.0f; func_80032050(arg0); } } temp_v0_4 = arg0->unk_0BC; if (((temp_v0_4 << 0xB) >= 0) && ((temp_v0_4 & 4) == 0)) { if ((func_800388B0(arg1) < -0x31) && (((arg0->unk_094 / 18.0f) * 216.0f) <= 5.0f) && ((arg1->button & 0x4000) != 0)) { arg0->unk_09C = 140.0f; arg0->unk_044 |= 1; arg0->unk_20C = 0.0f; arg0->unk_08C = (140.0f * 140.0f) / 25.0f; } if ((func_800388B0(arg1) >= -0x1D) || ((arg1->button & 0x4000) == 0)) { temp_v0_5 = arg0->unk_044; if ((temp_v0_5 & 1) == 1) { arg0->unk_044 = temp_v0_5 & 0xFFFE; arg0->unk_09C = 0.0f; } } } } else { phi_a2 = 0x01000000; phi_a3 = 0x02000000; if ((temp_v0 & 0x4000) == 0x4000) { if ((arg1->button & 0x8000) != 0) { func_80030FC8(arg0, 0x01000000, 0x02000000); } else { func_80031F48(arg0, 0x40A00000, 0x01000000, 0x02000000); } phi_v1 = arg0->unk_0BC & 0x80; phi_v0_2 = arg0->unk_0BC; phi_a2 = 0x01000000; phi_a3 = 0x02000000; } if ((phi_v1 == 0x80) || ((phi_v0_2 & 0x40) == 0x40) || (phi_a2 == (phi_v0_2 & phi_a2)) || (phi_a3 == (phi_v0_2 & phi_a3))) { if ((arg1->button & 0x8000) != 0) { func_80030E00(arg0); func_800332E8(arg0, (s8) arg2); return; } func_80030C34(arg0); func_800337CC(arg0, 0x40A00000, (s8) arg2); } } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80037CFC.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 90e635335cb052c4324a3aa7478e4761db19dfaf ? func_80032700(s8); /* extern */ ? func_80032CB0(?, s8); /* extern */ ? func_80032D94(s8); /* extern */ ? func_80033280(?, s8); /* extern */ ? func_80037CFC(s8); /* extern */ extern s8 D_80164A89; extern s16 D_801656F0; extern s32 D_8018D168; extern s32 gRaceFrameCounter; void func_800381AC(Player *arg0, struct Controller *arg1, s8 arg2) { s16 temp_v0_2; s32 *temp_v0_3; u16 temp_v0; temp_v0 = arg0->unk_000; if (((temp_v0 & 0x8000) == 0x8000) && ((temp_v0 & 0x4000) == 0x4000) && ((temp_v0 & 0x1000) != 0x1000)) { if ((temp_v0 & 0x2000) != 0x2000) { temp_v0_2 = arg0->unk_0CA; if (((temp_v0_2 & 2) == 2) || ((temp_v0_2 & 8) == 8)) { if ((arg1->button & 0x8000) != 0) { func_80032D94(arg2); } else { func_80033280(0x40A00000, arg2); } } else { func_80037CFC(arg2); } D_80164A89 = 1; return; } if (D_8018D168 == 1) { if (D_801656F0 == 1) { temp_v0_3 = &D_801652E0[arg2]; if (*temp_v0_3 == 0) { *temp_v0_3 = gRaceFrameCounter; } } if ((arg1->button & 0x8000) != 0) { func_80032700(arg2); return; } func_80032CB0(0x40A00000, arg2); } } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_800381AC.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 90e635335cb052c4324a3aa7478e4761db19dfaf ? func_800381AC(Player *, s32, ?); /* extern */ extern s32 gControllerEight; extern s32 gControllerFour; extern s32 gControllerOne; extern s32 gControllerSeven; extern s32 gControllerSix; extern s32 gControllerThree; extern s32 gControllerTwo; void func_800382DC(void) { Player *temp_a0; Player *temp_a0_2; Player *temp_a0_3; Player *temp_a0_4; Player *temp_a0_5; s32 temp_v0; s32 temp_v0_2; u16 temp_v0_3; u16 temp_v0_4; u16 temp_v0_5; u16 temp_v0_6; temp_v0 = gActiveScreenMode; switch (temp_v0) { /* irregular */ case 0: temp_v0_2 = gModeSelection; switch (temp_v0_2) { /* switch 1; irregular */ case 0: /* switch 1 */ func_800381AC(gPlayerOne, gControllerOne, 0); return; case 1: /* switch 1 */ if (D_8015F890 != 1) { func_800381AC(gPlayerOne, gControllerOne, 0); temp_a0 = gPlayerTwo; temp_v0_3 = temp_a0->unk_000; if (((temp_v0_3 & 0x100) == 0x100) && ((temp_v0_3 & 0x800) != 0x800)) { func_800381AC(temp_a0, gControllerSix, 1); } temp_a0_2 = gPlayerThree; temp_v0_4 = temp_a0_2->unk_000; if (((temp_v0_4 & 0x100) == 0x100) && ((temp_v0_4 & 0x800) != 0x800)) { func_800381AC(temp_a0_2, gControllerSeven, 2); return; } } else { temp_a0_3 = gPlayerOne; if ((temp_a0_3->unk_000 & 0x800) != 0x800) { func_800381AC(temp_a0_3, gControllerEight, 0); } temp_a0_4 = gPlayerTwo; temp_v0_5 = temp_a0_4->unk_000; if (((temp_v0_5 & 0x100) == 0x100) && ((temp_v0_5 & 0x800) != 0x800)) { func_800381AC(temp_a0_4, gControllerSix, 1); } temp_a0_5 = gPlayerThree; temp_v0_6 = temp_a0_5->unk_000; if (((temp_v0_6 & 0x100) == 0x100) && ((temp_v0_6 & 0x800) != 0x800)) { func_800381AC(temp_a0_5, gControllerSeven, 2); return; } return; } break; } break; case 1: case 2: func_800381AC(gPlayerOne, gControllerOne, 0); func_800381AC(gPlayerTwo, gControllerTwo, 1); return; case 3: func_800381AC(gPlayerOne, gControllerOne, 0); func_800381AC(gPlayerTwo, gControllerTwo, 1); func_800381AC(gPlayerThree, gControllerThree, 2); if (gPlayerCountSelection1 == 4) { func_800381AC(gPlayerFour, gControllerFour, 3); } break; } } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_800382DC.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s16 func_80038534(void *arg0) { s16 temp_a2; s16 temp_v0; s32 phi_a3; s32 phi_t0; s32 phi_t0_2; s32 phi_v1; s32 phi_v1_2; s32 phi_a1; s32 phi_a1_2; s16 phi_v1_3; s32 phi_t0_3; s16 phi_a3_2; s32 phi_a1_3; s16 phi_v1_4; s16 phi_a3_3; s32 phi_a1_4; s16 phi_v1_5; s16 phi_a3_4; s32 phi_t0_4; temp_v0 = arg0->unk0; temp_a2 = arg0->unk2; phi_a3 = temp_v0; phi_t0_3 = temp_a2; if (temp_v0 >= 0xD) { phi_a3 = 0xC; phi_t0_3 = (temp_a2 * 0xC) / temp_v0; } phi_t0 = phi_t0_3; phi_a3_4 = phi_a3; if (phi_a3 < -0xC) { phi_t0 = (phi_t0_3 * 0xC) / -phi_a3; phi_a3_4 = -0xC; } phi_t0_2 = phi_t0; phi_a3_3 = phi_a3_4; if (phi_t0 >= 0xD) { phi_t0_2 = 0xC; phi_a3_3 = (phi_a3_4 * 0xC) / phi_t0; } phi_a3_2 = phi_a3_3; phi_t0_4 = phi_t0_2; if (phi_t0_2 < -0xC) { phi_a3_2 = (phi_a3_3 * 0xC) / -phi_t0_2; phi_t0_4 = -0xC; } if ((temp_v0 >= -0xC) && (temp_v0 < 0xD) && (temp_a2 >= -0xC) && (temp_a2 < 0xD)) { phi_v1 = 0; phi_a1_4 = 0; } else { phi_v1 = temp_v0 - phi_a3_2; phi_a1_4 = temp_a2 - phi_t0_4; } phi_v1_2 = phi_v1; phi_a1_3 = phi_a1_4; if (phi_v1 >= 0x36) { phi_v1_2 = 0x35; phi_a1_3 = (phi_a1_4 * 0x35) / phi_v1; } phi_a1 = phi_a1_3; phi_v1_5 = phi_v1_2; if (phi_v1_2 < -0x35) { phi_a1 = (phi_a1_3 * 0x35) / -phi_v1_2; phi_v1_5 = -0x35; } phi_a1_2 = phi_a1; phi_v1_4 = phi_v1_5; if (phi_a1 >= 0x36) { phi_a1_2 = 0x35; phi_v1_4 = (phi_v1_5 * 0x35) / phi_a1; } phi_v1_3 = phi_v1_4; if (phi_a1_2 < -0x35) { phi_v1_3 = (phi_v1_4 * 0x35) / -phi_a1_2; } return phi_v1_3; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80038534.s") #endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 s32 func_800388B0(void *arg0) { s16 temp_a2; s16 temp_v1; s32 phi_a3; s32 phi_t0; s32 phi_t0_2; s32 phi_v0; s32 phi_v0_2; s32 phi_a1; s32 phi_a1_2; s32 phi_a1_3; s32 phi_t0_3; s16 phi_a3_2; s32 phi_a1_4; s16 phi_a3_3; s32 phi_a1_5; s16 phi_a3_4; s32 phi_t0_4; temp_v1 = arg0->unk0; temp_a2 = arg0->unk2; phi_a3 = temp_v1; phi_t0_3 = temp_a2; if (temp_v1 >= 0xD) { phi_a3 = 0xC; phi_t0_3 = (temp_a2 * 0xC) / temp_v1; } phi_t0 = phi_t0_3; phi_a3_4 = phi_a3; if (phi_a3 < -0xC) { phi_t0 = (phi_t0_3 * 0xC) / -phi_a3; phi_a3_4 = -0xC; } phi_t0_2 = phi_t0; phi_a3_3 = phi_a3_4; if (phi_t0 >= 0xD) { phi_t0_2 = 0xC; phi_a3_3 = (phi_a3_4 * 0xC) / phi_t0; } phi_a3_2 = phi_a3_3; phi_t0_4 = phi_t0_2; if (phi_t0_2 < -0xC) { phi_a3_2 = (phi_a3_3 * 0xC) / -phi_t0_2; phi_t0_4 = -0xC; } if ((temp_v1 >= -0xC) && (temp_v1 < 0xD) && (temp_a2 >= -0xC) && (temp_a2 < 0xD)) { phi_v0 = 0; phi_a1_5 = 0; } else { phi_v0 = temp_v1 - phi_a3_2; phi_a1_5 = temp_a2 - phi_t0_4; } phi_v0_2 = phi_v0; phi_a1_4 = phi_a1_5; if (phi_v0 >= 0x36) { phi_v0_2 = 0x35; phi_a1_4 = (phi_a1_5 * 0x35) / phi_v0; } phi_a1 = phi_a1_4; if (phi_v0_2 < -0x35) { phi_a1 = (phi_a1_4 * 0x35) / -phi_v0_2; } phi_a1_2 = phi_a1; if (phi_a1 >= 0x36) { phi_a1_2 = 0x35; } phi_a1_3 = phi_a1_2; if (phi_a1_2 < -0x35) { phi_a1_3 = -0x35; } return phi_a1_3; } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_800388B0.s") #endif void func_80038BE4(Player *player, s16 arg1) { player->unk_09C += (f32) arg1; if (player->unk_09C < 0.0f) { player->unk_09C = 0.0f; } if (player->unk_09C >= 250.0f) { player->unk_09C = 250.0f; } player->unk_044 |= 0x20; player->unk_08C = (player->unk_09C * player->unk_09C) / 25.0f; } #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_80029B4C(void *, f32, f32, f32); // extern ? func_8002AAC0(f64, f64, void *); // extern ? func_8002AB70(void *); // extern ? func_8002AE38(void *, s8, f32, f32, f32, f32); // extern ? func_8002B830(s8, s8); // extern ? func_8002C4F8(void *, s8); // extern ? func_8002C954(void *, s8, f32 *); // extern ? func_8002CD48(void *, s8, s8); // extern ? func_8003F46C(void *, ? *, f32 *, f32 *, f32 *, f32 *, f32 *, f32 *); // extern ? func_8003F734(void *, ? *, f32 *, f32 *, f32 *, f32 *, f32 *); // extern ? func_8003FBAC(void *, ? *, f32 *, f32 *, f32 *, f32 *, f32 *); // extern f32 func_802ABE30(f32, f32, f32, u16); // extern ? func_802AD950(void *, s32, f32, f32, f32, f32, f32, f32); // extern ? func_802B63B8(f32 *, f32 *); // extern extern ? D_800E4328; extern ? D_800E4334; extern ? D_800E4340; extern ? D_800E434C; extern f64 D_800EDE00; extern f64 D_800EDE08; extern f64 D_800EDE10; extern ? gKartTopSpeedTable; void func_80038C6C(void *arg0, ? arg1, s8 arg2, s8 arg3) { f32 sp11C; f32 sp114; f32 sp110; f32 sp10C; f32 sp108; f32 spFC; f32 spF8; f32 spF4; f32 spF0; f32 spEC; f32 spE8; f32 spE4; f32 spE0; f32 spD8; f32 spA4; f32 spA0; f32 sp9C; f32 sp98; f32 sp90; f32 sp8C; f32 sp88; ? sp7C; f32 *sp50; f32 (*temp_v0_2)[3]; f32 *temp_a0; f32 *temp_a1; f32 *temp_v0_3; f32 temp_f0_2; f32 temp_f0_3; f32 temp_f0_4; f32 temp_f10; f32 temp_f10_2; f32 temp_f10_3; f32 temp_f12_2; f32 temp_f16_2; f32 temp_f2_2; f32 temp_f2_3; f32 temp_f2_4; f32 temp_f4; f32 temp_f6; f32 temp_f8; f32 temp_f8_2; f64 temp_f0; f64 temp_f12; f64 temp_f14; f64 temp_f16; f64 temp_f2; f64 temp_f4_2; s16 temp_v0; s32 temp_t6; sp114.unk0 = D_800E4328.unk0; sp114.unk4 = D_800E4328.unk4; sp114.unk8 = D_800E4328.unk8; sp108.unk0 = D_800E4334.unk0; sp108.unk4 = D_800E4334.unk4; sp108.unk8 = D_800E4334.unk8; spFC.unk0 = D_800E4340.unk0; spFC.unk4 = D_800E4340.unk4; spFC.unk8 = D_800E4340.unk8; spF0.unk0 = D_800E434C.unk0; spF0.unk4 = D_800E434C.unk4; spF0.unk8 = D_800E434C.unk8; arg0->unk84 = -10.0f; arg0->unk88 = 28.0f; arg0->unk214 = 250.0f; func_8002B830(arg3, arg2); func_8002CD48(arg0, arg3, arg2); arg0->unk2E = arg0->unk2E + arg0->unk78; spF0 = 0.0f; spF4 = 0.0f; spF8 = 0.0f; func_8002AB70(arg0); temp_a1 = arg0 + 0x174; temp_a0 = &sp108; temp_f8 = (spFC + arg0->unk64) * 0.0f; spA4 = temp_f8; spA0 = arg0->unk100 * -1.0f; sp110 = 0.0f; sp10C = 0.0f; sp108 = 0.0f; sp50 = temp_a1; temp_f6 = (sp104 + arg0->unk6C) * 0.0f; sp9C = temp_f6; func_802B63B8(temp_a0, temp_a1); temp_f10 = temp_f6 + sp110; spA4 = temp_f8 + sp108; sp9C = temp_f10; sp11C = arg0->unk8C; func_802B63B8(&sp114, temp_a1); temp_f14 = D_800EDE00; sp88 = arg0->unk34; temp_f8_2 = arg0->unk38; sp8C = temp_f8_2; temp_f0 = sp88; sp90 = arg0->unk3C; temp_f16 = D_800EDE08; temp_f2 = sp90; sp88 = temp_f0 + ((((sp114 + spA4 + spF0) - (temp_f0 * (temp_f14 * arg0->unkFC))) / temp_f16) / 1.0); temp_f12 = temp_f8_2; sp90 = temp_f2 + ((((sp11C + temp_f10 + spF8) - (temp_f2 * (temp_f14 * arg0->unkFC))) / temp_f16) / 1.0); sp8C = temp_f12 + ((((sp118 + spA0 + spF4) - (temp_f12 * (temp_f14 * arg0->unkFC))) / temp_f16) / 1.0); temp_v0 = arg0->unk44; if ((temp_v0 & 0x10) == 0x10) { arg0->unk44 = temp_v0 & 0xFFEF; } temp_f0_2 = arg0->unk14; spE0 = temp_f0_2; temp_f2_2 = arg0->unk18; temp_f16_2 = arg0->unk1C; arg0->unk20 = temp_f0_2; arg0->unk24 = temp_f2_2; arg0->unk28 = temp_f16_2; spEC = arg0->unk34 + temp_f0_2; spE8 = arg0->unk38 + temp_f2_2; spD8 = temp_f16_2; temp_f4 = arg0->unk3C + temp_f16_2; spE4 = temp_f4; func_8002AAC0(temp_f12, temp_f14, arg0); temp_f10_2 = spE8 + arg0->unkEC; temp_f4_2 = temp_f10_2; spE8 = temp_f10_2; temp_f10_3 = temp_f4_2 - D_800EDE10; spE8 = temp_f10_3; func_802AD950(arg0 + 0x110, arg0->unk70, spEC, temp_f10_3, temp_f4, arg0->unk20, arg0->unk24, arg0->unk28); arg0->unk58 = 0.0f; arg0->unk60 = 0.0f; arg0->unk5C = 1.0f; func_802B6540(sp50, 0.0f, 1.0f, 0.0f, arg0->unk2E); arg0->unkBC = arg0->unkBC | 8; arg0->unkC2 = arg0->unkC2 + 1; sp98 = arg0->unk124; if (sp98 <= 0.0f) { arg0->unkC2 = 0; temp_t6 = arg0->unkBC & ~2; arg0->unkBC = temp_t6; arg0->unkBC = temp_t6 & ~8; arg0->unkEC = arg0->unkC2; } sp98 = arg0->unk124; if (sp98 <= 0.0f) { func_8003F46C(arg0, &sp7C, &sp88, &sp108, &sp98, &spEC, &spE8, &spE4); } sp98 = arg0->unk11C; if (sp98 < 0.0f) { func_8003F734(arg0, &sp7C, &sp88, &sp98, &spEC, &spE8, &spE4); func_8002C954(arg0, arg3, &sp88); } sp98 = arg0->unk120; if (sp98 < 0.0f) { func_8003FBAC(arg0, &sp7C, &sp88, &sp98, &spEC, &spE8, &spE4); func_8002C954(arg0, arg3, &sp88); } sp98 = arg0->unk11C; if (sp98 >= 0.0f) { sp98 = arg0->unk120; if (sp98 >= 0.0f) { arg0->unk46 = arg0->unk46 & 0xFFDF; } } arg0->unk74 = func_802ABE30(spEC, spE8, spE4, arg0->unk11A); func_80029B4C(arg0, spEC, spE8, spE4); func_8002AE38(arg0, arg3, spE0, spD8, spEC, spE4); arg0->unk22C = arg0->unk94; arg0->unk94 = sqrtf((sp90 * sp90) + (sp88 * sp88)); arg0->unk14 = spEC; arg0->unk1C = spE4; arg0->unk18 = spE8; arg0->unk64 = sp108; arg0->unk6C = sp110; arg0->unk34 = sp88; arg0->unk38 = sp8C; arg0->unk3C = sp90; temp_v0_2 = &D_80165070[arg3]; temp_v0_2->unk0 = sp88; temp_v0_2->unk4 = sp8C; temp_v0_2->unk8 = sp90; if ((arg0->unk0 & 0x4000) == 0x4000) { temp_f2_3 = arg0->unk94; temp_v0_3 = (arg0->unk254 * 4) + &gKartTopSpeedTable; temp_f12_2 = *temp_v0_3; if (temp_f12_2 < temp_f2_3) { temp_f0_3 = temp_f12_2 / temp_f2_3; arg0->unk34 = arg0->unk34 * temp_f0_3; arg0->unk38 = arg0->unk38 * temp_f0_3; arg0->unk3C = arg0->unk3C * temp_f0_3; arg0->unk94 = *temp_v0_3; } } if ((arg0->unk44 & 1) == 1) { temp_f2_4 = arg0->unk94; if (temp_f2_4 > 1.0f) { temp_f0_4 = 1.0f / temp_f2_4; arg0->unk94 = 1.0f; arg0->unk34 = arg0->unk34 * temp_f0_4; arg0->unk38 = arg0->unk38 * temp_f0_4; arg0->unk3C = arg0->unk3C * temp_f0_4; } } if (arg0->unk124 >= 500.0f) { arg0->unk78 = arg0->unk78 / 2; } func_8002C4F8(arg0, arg3); } #else GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80038C6C.s") #endif