diff options
| author | MegaMech <MegaMech@users.noreply.github.com> | 2023-10-06 00:19:09 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-06 00:19:09 -0600 |
| commit | 2b74bbbcefe396564a55357eda094fc8c8baf36a (patch) | |
| tree | 02ff798bcacc50d767e033cb2d13cab819e72eee /src/code_80005FD0.c | |
| parent | 274fc21ffa271492d1fa231c99fc48a11e3bbed1 (diff) | |
Doc setup_game_memory, label syms, add osSyncPrintf support, match funcs (#444)
* Doc setup_game_memory and label syms
* match func_800132F4
* match func label defines
* fix some fake ptrs
* match more code
* Matches
* Add osSyncPrintf support and matches
* Add func equiv to draw_square and add comment to is_debug
Diffstat (limited to 'src/code_80005FD0.c')
| -rw-r--r-- | src/code_80005FD0.c | 1423 |
1 files changed, 489 insertions, 934 deletions
diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c index 96452781b..c37e2282f 100644 --- a/src/code_80005FD0.c +++ b/src/code_80005FD0.c @@ -24,6 +24,7 @@ #include "common_structs.h" #include "main.h" #include "menus.h" +#include <actor_types.h> extern UnkCommonTextureStruct0 *D_800DC720[]; @@ -2588,7 +2589,7 @@ extern f32 D_80162FA0; extern f32 D_80162FA8; extern u16 D_80164430; -void func_8000BA14(s32 arg0, f32 arg1, f32 arg2, s16 arg3) { +void func_8000BA14(u16 arg0, f32 arg1, f32 arg2, s16 arg3) { f32 sp54; f32 sp50; f32 sp4C; @@ -3993,7 +3994,7 @@ void func_8000EF20(void) { } void func_8000F0E0(void) { - D_80164670 = 0; + D_80164670[0] = 0; D_80164678[0] = 0; D_80164672 = 0; D_8016467A = 0; @@ -5465,38 +5466,35 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80011B14.s") #ifdef MIPS_TO_C //generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -extern ? D_80162EB8; -extern s16 D_801630E8; -extern s16 D_801632D0; -extern s16 D_801632E8; -//extern ? D_801634F8; -extern u16 gNearestWaypointByPlayerId; -s16 gCurrentCourseId; /* unable to generate initializer */ - -void func_80011D48(s32 arg0, void *arg1) { - s32 temp_a2; - s32 temp_v0; - void *temp_t3; - void *temp_v1; - - temp_v0 = arg0 * 2; - temp_t3 = (*(&D_801632D0 + temp_v0) * 8) + *(&D_80162EB8 + (gCurrentCourseId * 4)); - D_801632B0 = temp_t3; - temp_a2 = temp_t3->unk4; - if (*(&gNearestWaypointByPlayerId + temp_v0) >= temp_t3->unk2) { - switch (temp_a2) { +//extern ? D_80162EB8; +extern s16 D_801630E8[]; +extern s32 D_801632B0; + +void func_80011D48(s32 playerIndex, Player *player) { + //s32 temp_a2; + //s32 temp_v0; + //s32 temp_t3; + //void *temp_v1; + + // temp_v0 = playerIndex * 2; + // * 8) ? + //temp_t3 = D_801632D0[playerIndex] + D_80162EB8[gCurrentCourseId]; + D_801632B0 = D_801632D0[playerIndex] + D_80162EB8[gCurrentCourseId]; + // temp_a2 = temp_t3; + if (gNearestWaypointByPlayerId[playerIndex] >= D_801632B0) { + switch (D_801632B0) { case 1: - arg1->unkBC = arg1->unkBC & ~0x10; - *(&D_801630E8 + temp_v0) = 0; - *(&D_801632E8 + temp_v0) = 1; - return; + player->unk_0BC &= ~0x10; + D_801630E8[playerIndex] = 0; + D_801632E8[playerIndex] = 1; + break; case 3: case 4: case 5: - temp_v1 = (arg0 * 0x10) + &D_801634F8; - temp_v1->unk4 = temp_v1->unkC; - *(&D_801632E8 + temp_v0) = 1; - return; + //temp_v1 = D_801634F8[playerIndex]; + D_801634F8[playerIndex].unk4 = D_801634F8[playerIndex].unkC; + D_801632E8[playerIndex] = 1; + break; case 2: case 6: case 7: @@ -5504,45 +5502,30 @@ void func_80011D48(s32 arg0, void *arg1) { case 9: case 10: case 11: - *(&D_801632E8 + temp_v0) = 1; + D_801632E8[playerIndex] = 1; /* Duplicate return node #6. Try simplifying control flow for better match */ - return; + break; } - } else { - default: } } #else GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80011D48.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_80011B14(Player *); // extern -void func_80011D48(Player *); // extern -extern s16 D_801632E8; - -void func_80011E38(s32 arg0) { - Player *temp_a1; - u16 temp_v0; +void func_80011E38(s32 playerIndex) { + Player *player = gPlayerOne + playerIndex; - temp_v0 = *(&D_801632E8 + (arg0 * 2)); - temp_a1 = &gPlayerOne[arg0]; - if (temp_v0 != 0) { - if (temp_v0 != 1) { - if (temp_v0 != 2) { - return; - } - func_80011D48(temp_a1); - // Duplicate return node #6. Try simplifying control flow for better match - return; - } - func_80011B14(temp_a1); + switch(D_801632E8[playerIndex]) { + case 0: + break; + case 1: + func_80011B14(playerIndex, player); + break; + case 2: + func_80011D48(playerIndex, player); + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80011E38.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 @@ -5604,7 +5587,7 @@ extern s16 D_80162EB0; extern s32 D_8016359C; f32 func_802AE1C0(f32, f32, f32); -s32 func_8001168C(void *, struct TrackWayPoint *, s32); +s32 func_8001168C(void *, void *, s32); void func_800120C8(void) { @@ -5621,39 +5604,24 @@ void func_800120C8(void) { } temp = (s16 *)D_80163598; - D_8016359C = func_8001168C(temp , waypoint, i - 1); + D_8016359C = func_8001168C(temp, waypoint, i - 1); D_80162EB0 = func_802AE1C0(temp[0], 2000.0f, temp[1]); } -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_8001168C(s32, u16 *, s32); // extern -extern ? d_frappe_snowland_tree; -extern s16 D_80162EB2; -extern s32 D_80163598; -extern s32 D_8016359C; -extern uintptr_t gSegmentTable; - void func_80012190(void) { - u16 *temp_a1; - u16 *phi_v0; - s32 phi_v1; + struct TrackWayPoint *tree; + s32 i = 0; + + tree = (struct TrackWayPoint *) VIRTUAL_TO_PHYSICAL2(gSegmentTable[SEGMENT_NUMBER2(d_frappe_snowland_tree)] + (SEGMENT_OFFSET(d_frappe_snowland_tree))); - temp_a1 = *(&gSegmentTable + ((&d_frappe_snowland_tree >> 0x18) * 4)) + (&d_frappe_snowland_tree & 0xFFFFFF) + 0x80000000; - phi_v0 = temp_a1; - phi_v1 = 0; -loop_1: - phi_v0 += 8; - if (*phi_v0 != 0x8000) { - phi_v1 += 1; - goto loop_1; + for (i = 0; ; i++) { + if ((u16)tree[i].wayPointX == 0x8000) { + break; + } } - D_8016359C = func_8001168C(D_80163598, temp_a1, phi_v1 - 1); - D_80162EB2 = -0x28; + D_8016359C = func_8001168C(D_80163598, tree, i - 1); + D_80162EB2 = -40; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80012190.s") -#endif void func_80012220(VehicleStuff *vehicle) { f32 origXPos; @@ -5791,7 +5759,6 @@ void func_80012780(TrainCarStuff *trainCar, s16 *arg1, u16 arg2) { extern s16 D_80162FCC; //extern s32 D_80163598 extern s32 D_8016359C; -//extern TrainStuff D_801635C4; // This is really Vec2s D_80163598[465] but that does not match. // Likely because this is a shared pointer between courses. @@ -5808,13 +5775,14 @@ void func_800127E0(void) { s32 i; s32 j; - for (i = 0; i < 2; i++) { - // outputs 160 or 392 depending on the train + for (i = 0; i < NUM_TRAINS; i++) { + // outputs 160 or 392 depending on the train. // Wraps the value around to always output a valid waypoint. - waypointOffset = (((i * D_8016359C) / 2) + 160) % D_8016359C; + waypointOffset = (((i * D_8016359C) / NUM_TRAINS) + 160) % D_8016359C; + // 120.0f is about the maximum usable value sTrains[i].someMultiplier = 5.0f; - for (j = 0; j < 5; j++) { + for (j = 0; j < NUM_PASSENGER_CAR_ENTRIES; j++) { waypointOffset += 4; ptr1 = &sTrains[i].passengerCars[j]; ptr2 = &D_80163598[waypointOffset]; @@ -5831,30 +5799,31 @@ void func_800127E0(void) { ptr2 = &D_80163598[waypointOffset]; func_80012780(&sTrains[i].locomotive, ptr2, waypointOffset); - sTrains[i].numCars = 0; + // Only use locomotive unless overwritten below. + sTrains[i].numCars = LOCOMOTIVE_ONLY; } // Spawn all rolling stock in single player mode. switch (gScreenModeSelection) { - case 0: // single player - for (i = 0; i < 2; i++) { + case SCREEN_MODE_1P: // single player + for (i = 0; i < NUM_TRAINS; i++) { sTrains[i].tender.isActive = 1; // Same line required for matching... - for (j = 0; j < 5; j++) { sTrains[i].passengerCars[j].isActive = 1; } + for (j = 0; j < NUM_PASSENGER_CAR_ENTRIES; j++) { sTrains[i].passengerCars[j].isActive = 1; } - sTrains[i].numCars = 6; + sTrains[i].numCars = NUM_TENDERS + NUM_PASSENGER_CAR_ENTRIES; } break; // Spawn locomotive, tender, and one passenger car in versus 2/3 player mode. - case 1: // multiplayer fall-through - case 2: - if (gModeSelection != 0) { - for (i = 0; i < 2; i++) { + case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: // multiplayer fall-through + case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: + if (gModeSelection != GRAND_PRIX) { + for (i = 0; i < NUM_TRAINS; i++) { sTrains[i].tender.isActive = 1; sTrains[i].passengerCars[4].isActive = 1; - sTrains[i].numCars = 2; + sTrains[i].numCars = NUM_TENDERS + NUM_2P_PASSENGER_CARS; } } break; @@ -5880,13 +5849,9 @@ void func_80012A48(TrainCarStuff *trainCar, s16 arg1) { trainCarActor->velocity[2] = trainCar->velocity[2]; } -//#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -s32 func_800755FC(s32, Vec3f, f32); /* extern */ +s32 func_800755FC(s32, Vec3f, f32); s16 func_800DBAC(Vec3f, Vec3s, f32); extern s16 D_80162FCC; -extern Vec3f D_801635A4; -extern Vec3s D_801635BC; void func_80012AC0(void) { @@ -5902,7 +5867,7 @@ void func_80012AC0(void) { D_80162FCC += 1; - for (i = 0; i < 2; i++) { + for (i = 0; i < NUM_TRAINS; i++) { temp_s0 = (u16) sTrains[i].locomotive.wayPointIndex; temp_f20 = sTrains[i].locomotive.position[0]; @@ -5914,16 +5879,15 @@ void func_80012AC0(void) { sTrains[i].locomotive.velocity[2] = sTrains[i].locomotive.position[2] - temp_f22; func_80012A48(&sTrains[i].locomotive, temp_v0); - //temp_v0_2 = (u16) sTrains[i].locomotive.wayPointIndex; + if ((temp_s0 != sTrains[i].locomotive.wayPointIndex) && ((sTrains[i].locomotive.wayPointIndex == 0x00BE) || (sTrains[i].locomotive.wayPointIndex == 0x0140))) { func_800C98B8(sTrains[i].locomotive.position, sTrains[i].locomotive.velocity, 0x1901800E); } else if (random_int(100) == 0) { func_800C98B8(sTrains[i].locomotive.position, sTrains[i].locomotive.velocity, 0x1901800D); - //if ((sTrains && sTrains) && sTrains) {} } - // temp_v0_3 = func_800061DC(&D_801635A4, 2000.0f, sTrains[i].someFlags); + sTrains[i].someFlags = func_800061DC(sTrains[i].locomotive.position, 2000.0f, sTrains[i].someFlags); if ((((s16) D_80162FCC % 5) == 0) && (sTrains[i].someFlags != 0)) { sp90[0] = sTrains[i].locomotive.position[0]; @@ -5944,7 +5908,7 @@ void func_80012AC0(void) { func_80012A48(car, temp_v0); } - for (j = 0; j < 5; j++) { + for (j = 0; j < NUM_PASSENGER_CAR_ENTRIES; j++) { car = &sTrains[i].passengerCars[j]; if (car->isActive == 1) { temp_f20 = car->position[0]; @@ -5959,10 +5923,6 @@ void func_80012AC0(void) { } } -//#else -//GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80012AC0.s") -//#endif - void func_80012DC0(s32 playerId, Player *player) { TrainCarStuff *trainCar; f32 playerPosX; @@ -6028,7 +5988,7 @@ void func_80013054(void) { isCrossingTriggeredByIndex[0] = 0; isCrossingTriggeredByIndex[1] = 0; - for (i = 0; i < 2; i++) { + for (i = 0; i < NUM_TRAINS; i++) { temp_f16 = sTrains[i].locomotive.wayPointIndex / ((f32) D_8016359C); temp_f18 = 0.72017354f; temp_f12 = 0.42299348f; @@ -6045,7 +6005,7 @@ void func_80013054(void) { } } - for (i = 0; i < 2; i++) { + for (i = 0; i < NUM_TRAINS; i++) { if (isCrossingTriggeredByIndex[i] == 1) { D_801637BC[i] += 1; } else { @@ -6079,48 +6039,41 @@ void func_800131DC(s32 playerId) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern s16 D_80162EB2; extern s16 D_801630FC; -extern s32 D_80163598; -extern ? D_801637EC; extern s8 D_8018EDF3; - void func_800132F4(void) { - PaddleWheelBoatStuff *temp_a0; PaddleWheelBoatStuff *var_a1; - s16 var_v1; - void *temp_a2; - - var_a1 = D_801637C0; - var_v1 = 0; - do { - temp_a2 = ((var_v1 & 0xFFFF) * 4) + D_80163598; - temp_a0 = var_a1; - var_a1->position[0] = (f32) temp_a2->unk0; + s32 i; + struct TrackWayPoint *temp_a2; + u16 temp; + for (i = 0; i < 1; i++) { + temp = i * 0xB4; + var_a1 = &D_801637C0[i]; + temp_a2 = &D_80163598[temp]; + var_a1->position[0] = (f32) temp_a2->wayPointX; var_a1->position[1] = (f32) D_80162EB2; - var_a1->wayPointIndex = var_v1; - var_v1 += 0xB4; + // Shouldn't this be wayPointZ? Something doesn't seem right here. + // Unless temp_a2 has been converted to X,Z with no Y. In-that case our + // struct is wrong or the member name is wrong. + var_a1->position[2] = (f32) temp_a2->wayPointY; + var_a1->wayPointIndex = i * 0xB4; var_a1->actorIndex = -1; - var_a1->position[2] = (f32) temp_a2->unk2; + if (D_8018EDF3 >= 3) { var_a1->isActive = 0; } else { var_a1->isActive = 1; } - var_a1 += 0x2C; - temp_a0->velocity[0] = 0.0f; - temp_a0->velocity[1] = 0.0f; - temp_a0->velocity[2] = 0.0f; - temp_a0->someMultiplier = 1.6666666f; - temp_a0->yRotation = 0; - } while (var_a1 != &D_801637EC); + var_a1->velocity[0] = 0.0f; + var_a1->velocity[1] = 0.0f; + var_a1->velocity[2] = 0.0f; + // fakematch + temp_a2 = &D_80163598[temp]; + var_a1->someMultiplier = 1.6666666f; + var_a1->yRotation = 0; + } D_801630FC = 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800132F4.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc @@ -6282,96 +6235,71 @@ void func_80013854(Player *player) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc extern s16 D_801631C8; extern s16 D_8016347A; void func_800139E4(f32 arg0, f32 arg1, s32 arg2, s32 arg3, VehicleStuff *vehicle, struct TrackWayPoint *wayPointList) { - VehicleStuff *var_s0; - f32 *var_s1; - s16 *var_s2; - s16 temp_v0_2; - s16 var_v0; - s32 temp_hi; - s32 var_s3; - s32 var_s4; + VehicleStuff *veh; struct TrackWayPoint *temp_v0; - u16 temp_s7; - - temp_s7 = *gWaypointCountByPathIndex; - var_s3 = 0; - if (arg2 > 0) { - var_s0 = vehicle; - var_s4 = 0; - var_s1 = var_s0->position; - var_s2 = &var_s0->wayPointIndex; - do { - temp_hi = (s32) ((var_s4 / arg2) + arg3) % (s32) temp_s7; - temp_v0 = &wayPointList[temp_hi & 0xFFFF]; - var_s0->position[0] = (f32) temp_v0->wayPointX; - var_s0->position[1] = (f32) temp_v0->wayPointY; - var_s0->actorIndex = -1; - var_s0->wayPointIndex = (s16) temp_hi; - var_s0->unused = 0; - var_s0->velocity[0] = 0.0f; - var_s0->velocity[1] = 0.0f; - var_s0->velocity[2] = 0.0f; - var_s0->someFlags = 0; - var_s0->someFlagsTheSequel = 0; - var_s0->position[2] = (f32) temp_v0->wayPointZ; - if (gModeSelection == TIME_TRIALS) { - var_s0->someType = (s16) (var_s3 % 3); + s32 i; + u16 waypointOffset; + s32 numWaypoints = gWaypointCountByPathIndex[0]; + for (i = 0; i < arg2; i++) { + waypointOffset = (((i * numWaypoints) / arg2) + arg3) % numWaypoints; + veh = &vehicle[i]; + temp_v0 = &wayPointList[waypointOffset]; + veh->position[0] = (f32) temp_v0->wayPointX; + veh->position[1] = (f32) temp_v0->wayPointY; + veh->position[2] = (f32) temp_v0->wayPointZ; + veh->actorIndex = -1; + veh->wayPointIndex = waypointOffset; + veh->unused = 0; + veh->velocity[0] = 0.0f; + veh->velocity[1] = 0.0f; + veh->velocity[2] = 0.0f; + veh->someFlags = 0; + veh->someFlagsTheSequel = 0; + if (gModeSelection == 1) { + veh->someType = (i % 3); } else { - var_s0->someType = random_int(3U); + veh->someType = random_int(3); } - temp_v0_2 = var_s0->someType; - var_s0->someMultiplierTheSequel = (f32) ((f64) (f32) (temp_v0_2 - 1) * 0.6); - if (((gCCSelection > 0) || (gModeSelection == TIME_TRIALS)) && (temp_v0_2 == 2)) { - var_s0->someMultiplier = arg0; + veh->someMultiplierTheSequel = (f32) ((f64) (f32) (veh->someType - 1) * 0.6); + if (((gCCSelection > 0) || (gModeSelection == 1)) && (veh->someType == 2)) { + veh->someMultiplier = arg0; } else { - var_s0->someMultiplier = arg1; + veh->someMultiplier = arg1; } - var_s0->rotation[0] = 0; - var_s0->rotation[2] = 0; + veh->rotation[0] = 0; + veh->rotation[2] = 0; if (D_8016347A == 0) { - var_v0 = func_8000D6D0(var_s1, var_s2, var_s0->someMultiplier, var_s0->someMultiplierTheSequel, 0, 3); + veh->rotation[1] = func_8000D6D0(veh->position, &veh->wayPointIndex, veh->someMultiplier, veh->someMultiplierTheSequel, 0, 3); } else { - var_v0 = func_8000D940(var_s1, var_s2, var_s0->someMultiplier, var_s0->someMultiplierTheSequel, 0); + veh->rotation[1] = func_8000D940(veh->position, &veh->wayPointIndex, veh->someMultiplier, veh->someMultiplierTheSequel, 0); } - var_s0->rotation[1] = var_v0; - var_s3 += 1; - var_s4 += temp_s7; - var_s0 += 0x34; - var_s1 += 0x34; - var_s2 += 0x34; - } while (var_s3 != arg2); - } - D_801631C8 = 0x000A; + } + D_801631C8 = 10; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800139E4.s") -#endif f32 func_80013C74(s16 arg0, s16 arg1) { f32 var_f2; var_f2 = 0.0f; if (arg1 < 0x28A) { - switch (arg0) { /* switch 1; irregular */ - case 0: /* switch 1 */ + switch (arg0) { + case 0: var_f2 = -0.7f; break; - case 1: /* switch 1 */ + case 1: break; - case 2: /* switch 1 */ + case 2: var_f2 = 0.7f; break; - default: /* switch 1 */ + default: break; } } else { - switch (arg0) { /* irregular */ + switch (arg0) { case 0: case 1: var_f2 = -0.5f; @@ -6625,29 +6553,29 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80013F7C.s") f32 func_800145A8(s16 arg0, f32 arg1, s16 arg2) { if (arg2 < 0x28A) { - switch (arg0) { /* switch 1; irregular */ - case 0: /* switch 1 */ + switch (arg0) { + case 0: if (arg1 < 0.0) { arg1 = 0.0f; } break; - case 1: /* switch 1 */ + case 1: if (arg1 < 0.0) { arg1 = -0.8f; } else { arg1 = 0.8f; } break; - case 2: /* switch 1 */ + case 2: if (arg1 >= 0.0) { arg1 = 0.0f; } break; - default: /* switch 1 */ + default: break; } } else { - switch (arg0) { /* irregular */ + switch (arg0) { case 0: case 1: arg1 = 0.5f; @@ -6703,25 +6631,15 @@ loop_4: GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800146B8.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800139E4(f32 arg0, f32 arg1, s32 arg2, f32 arg3, VehicleStuff *arg4, struct TrackWayPoint *arg5); -extern f64 D_800ED1B8; -extern f64 D_800ED1C0; -extern f64 D_800ED1C8; -extern s32 gBoxTruckList; void func_800147E0(void) { - f64 temp_f0 = (gCCSelection * D_800ED1B8) / 216.0; - s32 phi_a2 = NUM_RACE_BOX_TRUCKS; - + f32 a = ((gCCSelection * 90.0) / 216.0f) + 4.583333333333333; + f32 b = ((gCCSelection * 90.0) / 216.0f) + 2.9166666666666665; + s32 numTrucks = NUM_RACE_BOX_TRUCKS; if (gModeSelection == TIME_TRIALS) { - phi_a2 = NUM_TIME_TRIAL_BOX_TRUCKS; + numTrucks = NUM_TIME_TRIAL_BOX_TRUCKS; } - func_800139E4(temp_f0 + D_800ED1C0, temp_f0 + D_800ED1C8, phi_a2, 0, &gBoxTruckList, D_80164550); + func_800139E4(a, b, numTrucks, 0, &gBoxTruckList, &D_80164550[0][0]); } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800147E0.s") -#endif void func_8001487C(void) { s32 loopIndex; @@ -6738,28 +6656,17 @@ void func_8001490C(s32 playerId) { func_800146B8(playerId, NUM_RACE_BOX_TRUCKS, gBoxTruckList); } -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800139E4(f32, f32, ?, ?, ? *, s16 *); // extern -extern f64 D_800ED1D0; -extern f64 D_800ED1D8; -extern f64 D_800ED1E0; -extern VehicleStuff gSchoolBusList; - void func_80014934(void) { - f64 temp_f0; - ? phi_a2; + s32 numBusses; + f32 a = ((gCCSelection * 90.0) / 216.0f) + 4.583333333333333; + f32 b = ((gCCSelection * 90.0) / 216.0f) + 2.9166666666666665; - temp_f0 = (gCCSelection * D_800ED1D0) / 216.0; - phi_a2 = NUM_RACE_SCHOOL_BUSES; + numBusses = NUM_RACE_SCHOOL_BUSES; if (gModeSelection == TIME_TRIALS) { - phi_a2 = NUM_TIME_TRIAL_SCHOOL_BUSES; + numBusses = NUM_TIME_TRIAL_SCHOOL_BUSES; } - func_800139E4(temp_f0 + D_800ED1D8, temp_f0 + D_800ED1E0, phi_a2, 0x4B, &gSchoolBusList, D_80164550); + func_800139E4(a, b, numBusses, 0x4B, &gSchoolBusList, &D_80164550[0][0]); } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80014934.s") -#endif void func_800149D0(void) { s32 loopIndex; @@ -6776,28 +6683,17 @@ void func_80014A60(s32 playerId) { func_800146B8(playerId, NUM_RACE_SCHOOL_BUSES, gSchoolBusList); } -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800139E4(f32, f32, ?, ?, ? *, s16 *); // extern -extern f64 D_800ED1E8; -extern f64 D_800ED1F0; -extern f64 D_800ED1F8; -extern VehicleStuff gTankerTruckList; - void func_80014A88(void) { - f64 temp_f0; - ? phi_a2; + s32 numTrucks; + f32 a = ((gCCSelection * 90.0) / 216.0f) + 4.583333333333333; + f32 b = ((gCCSelection * 90.0) / 216.0f) + 2.9166666666666665; - temp_f0 = (gCCSelection * D_800ED1E8) / 216.0; - phi_a2 = NUM_RACE_TANKER_TRUCKS; + numTrucks = NUM_RACE_TANKER_TRUCKS; if (gModeSelection == TIME_TRIALS) { - phi_a2 = NUM_TIME_TRIAL_TANKER_TRUCKS; + numTrucks = NUM_TIME_TRIAL_TANKER_TRUCKS; } - func_800139E4(temp_f0 + D_800ED1F0, temp_f0 + D_800ED1F8, phi_a2, 0x32, &gTankerTruckList, D_80164550); + func_800139E4(a, b, numTrucks, 50, &gTankerTruckList, &D_80164550[0][0]); } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80014A88.s") -#endif void func_80014B24(void) { s32 loopIndex; @@ -6814,28 +6710,17 @@ void func_80014BB4(s32 playerId) { func_800146B8(playerId, NUM_RACE_TANKER_TRUCKS, gTankerTruckList); } -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800139E4(f32, f32, ?, ?, ? *, s16 *); // extern -extern f64 D_800ED200; -extern f64 D_800ED208; -extern f64 D_800ED210; -extern VehicleStuff gCarList; - void func_80014BDC(void) { - f64 temp_f0; - ? phi_a2; + s32 numCars; + f32 a = ((gCCSelection * 90.0) / 216.0f) + 4.583333333333333; + f32 b = ((gCCSelection * 90.0) / 216.0f) + 2.9166666666666665; - temp_f0 = (gCCSelection * D_800ED200) / 216.0; - phi_a2 = NUM_RACE_CARS; + numCars = NUM_RACE_CARS; if (gModeSelection == TIME_TRIALS) { - phi_a2 = NUM_TIME_TRIAL_CARS; + numCars = NUM_TIME_TRIAL_CARS; } - func_800139E4(temp_f0 + D_800ED208, temp_f0 + D_800ED210, phi_a2, 0x19, &gCarList, D_80164550); + func_800139E4(a, b, numCars, 25, &gCarList, &D_80164550[0][0]); } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80014BDC.s") -#endif void func_80014C78(void) { s32 loopIndex; @@ -6866,7 +6751,7 @@ void func_80014D30(s32 cameraId, s32 pathIndex) { extern s32 D_80163238; extern s16 gNearestWaypointByCameraId; extern s16 D_80164670[]; -//extern s16 D_80164678; + extern s16 D_80164680; extern ? D_801646C0; extern s32 D_801646C8; @@ -6917,7 +6802,6 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80014DE4.s") #ifdef MIPS_TO_C //generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 extern ? D_80164498; -extern s16 D_80164678; f32 func_80014EE4(f32 arg0, s32 arg1) { f32 temp_f0; @@ -7073,7 +6957,7 @@ UNUSED void func_8001530C(void) { } -void func_80015314(s32 playerId, UNUSED s32 arg1, s32 cameraId) { +void func_80015314(s32 playerId, UNUSED f32 arg1, s32 cameraId) { Camera *temp_a0; Player *temp_a1; @@ -7134,69 +7018,46 @@ void func_80015390(Camera *camera, UNUSED Player *player, UNUSED s32 arg2) { camera->rot[2] = 0; } -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(f32, s32, f32, s16); /* extern */ -extern f32 D_80162FA0; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern ? D_80164688; +void func_8000BBD8(u16, f32, s16); /* extern */ +f32 func_802AE1C0(f32,f32,f32); +extern f32 D_80162FA0[]; +extern f32 D_801645F8[]; +extern f32 D_80164618[]; +extern f32 D_80164638[]; +extern f32 D_80164648[]; +extern f32 D_80164688[]; +void func_80015544(s32 playerId, f32 arg1, s32 cameraId, s32 pathIndex) { + Camera* camera; -void func_80015544(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { - s32 sp2C; - s16 *sp28; - f32 *sp24; - f32 *sp20; - f64 sp18; - Camera *temp_v0; - f32 *temp_a0; - f32 *temp_a1; - f32 *var_v1; - f32 temp_f0; f32 temp_f12; - f64 temp_f12_2; - f64 temp_f2; - s16 *temp_v1; - s32 temp_hi; - s32 temp_t7; + f32 temp_f2; + s32 test = gWaypointCountByPathIndex[pathIndex]; + + + D_80164688[cameraId] = arg1; + camera = cameras + cameraId; + gNearestWaypointByCameraId[cameraId] = (gNearestWaypointByPlayerId[playerId] + 10) % test; + + func_8000BBD8(gNearestWaypointByCameraId[cameraId], arg1, pathIndex); + + D_801645F8[cameraId] = D_80162FA0[0]; + D_80164638[cameraId] = D_80162FA0[2]; - temp_t7 = cameraId * 4; - temp_hi = (s32) (gNearestWaypointByPlayerId[playerId] + 0xA) % (s32) gWaypointCountByPathIndex[pathIndex]; - *(&D_80164688 + temp_t7) = arg1; - temp_v1 = &gNearestWaypointByCameraId[cameraId]; - *temp_v1 = (s16) temp_hi; - sp28 = temp_v1; - sp2C = temp_t7; - func_8000BBD8(arg1, temp_hi & 0xFFFF, arg1, pathIndex); - temp_f12 = D_80162FA0.unk0; - temp_f0 = D_80162FA0.unk8; - temp_a0 = temp_t7 + &D_801645F8; - temp_a1 = temp_t7 + &D_80164638; - *temp_a0 = temp_f12; - *temp_a1 = temp_f0; - sp20 = temp_a1; - sp24 = temp_a0; - temp_f2 = (f64) (f32) D_80164550[(s32) pathIndex][*temp_v1].wayPointY; - sp18 = temp_f2; - temp_f12_2 = (f64) func_802AE1C0(temp_f12, (f32) (temp_f2 + 30.0), temp_f0); - if ((temp_f12_2 < (temp_f2 - 20.0)) || (temp_f12_2 >= 3000.0)) { - var_v1 = temp_t7 + &D_80164618; - *var_v1 = (f32) (temp_f2 + 10.0); + temp_f2 = (f32) D_80164550[pathIndex][gNearestWaypointByCameraId[cameraId]].wayPointY; + + temp_f12 = func_802AE1C0(D_80162FA0[0], (f32) (temp_f2 + 30.0), D_80162FA0[2]); + if ((temp_f12 < (temp_f2 - 20.0)) || (temp_f12 >= 3000.0)) { + D_80164618[cameraId] = (f32) (temp_f2 + 10.0); } else { - var_v1 = temp_t7 + &D_80164618; - *var_v1 = (f32) (temp_f12_2 + 10.0); + D_80164618[cameraId] = (f32) (temp_f12 + 10.0); } - *(&D_80164648 + temp_t7) = 0.0f; - temp_v0 = &cameras[cameraId]; - temp_v0->pos[0] = *temp_a0; - temp_v0->pos[1] = *var_v1; - temp_v0->pos[2] = *temp_a1; + D_80164648[cameraId] = 0.0f; + camera->pos[0] = D_801645F8[cameraId]; + camera->pos[1] = D_80164618[cameraId]; + camera->pos[2] = D_80164638[cameraId]; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80015544.s") -#endif + + #ifdef MIPS_TO_C //generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de @@ -7294,63 +7155,28 @@ block_10: GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001577C.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(f32, s32, f32, s16, s16); /* extern */ -extern f32 D_80162FA0; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern ? D_80164688; - void func_80015A9C(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { - s32 sp20; - s16 *sp1C; - Camera *temp_v0; - f32 *temp_a0; - f32 *temp_a1; - f32 *temp_a2_2; - f32 *temp_t0; - f32 temp_f0; - s16 *temp_v1; - s16 temp_a2; - s16 temp_a3; - s32 temp_t3; - s32 temp_t8; + Camera* camera = cameras + cameraId; + + D_80164688[cameraId] = arg1; + gNearestWaypointByCameraId[cameraId] = gNearestWaypointByPlayerId[playerId] + 10; + gNearestWaypointByCameraId[cameraId] = (gNearestWaypointByCameraId[cameraId]) % gWaypointCountByPathIndex[pathIndex]; + + func_8000BBD8(gNearestWaypointByCameraId[cameraId], arg1, pathIndex); + + D_801645F8[cameraId] = D_80162FA0[0]; + D_80164618[cameraId] = (f32) D_80164550[pathIndex][gNearestWaypointByCameraId[cameraId]].wayPointY; + D_80164638[cameraId] = D_80162FA0[2]; - temp_a3 = pathIndex; - temp_t8 = cameraId * 4; - temp_v1 = &gNearestWaypointByCameraId[cameraId]; - *(&D_80164688 + temp_t8) = arg1; - *temp_v1 = gNearestWaypointByPlayerId[playerId] + 0xA; - temp_t3 = (s16) *temp_v1 % (s32) gWaypointCountByPathIndex[temp_a3]; - *temp_v1 = (s16) temp_t3; - temp_a2 = temp_a3; - sp20 = temp_t8; - sp1C = temp_v1; - pathIndex = temp_a3; - func_8000BBD8(arg1, temp_t3 & 0xFFFF, arg1, temp_a2, temp_a3); - temp_a0 = temp_t8 + &D_801645F8; - *temp_a0 = D_80162FA0.unk0; - temp_a1 = temp_t8 + &D_80164618; - temp_a2_2 = temp_t8 + &D_80164638; - *temp_a1 = (f32) D_80164550[pathIndex][*temp_v1].wayPointY; - *temp_a2_2 = D_80162FA0.unk8; - temp_f0 = *(&gPlayers->unk_094 + (playerId * 0xDD8)) / 5.0f; - temp_t0 = temp_t8 + &D_80164648; - *temp_t0 = temp_f0; - if ((f64) temp_f0 < 0.0) { - *temp_t0 = 0.0f; - } - temp_v0 = &cameras[cameraId]; - temp_v0->pos[0] = *temp_a0; - temp_v0->pos[1] = *temp_a1; - temp_v0->pos[2] = *temp_a2_2; + D_80164648[cameraId] = gPlayers[playerId].unk_094 / 5.0f; + if ((f64) D_80164648[cameraId] < 0.0) { + D_80164648[cameraId] = 0.0f; + } + + camera->pos[0] = D_801645F8[cameraId]; + camera->pos[1] = D_80164618[cameraId]; + camera->pos[2] = D_80164638[cameraId]; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80015A9C.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de @@ -7528,60 +7354,28 @@ block_8: GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80015C94.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(f32, s32, f32, s16, s16); /* extern */ -extern f32 D_80162FA0; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern ? D_80164658; -extern ? D_80164688; +extern f32 D_80164658[]; void func_800162CC(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { - s32 sp20; - s16 *sp1C; - Camera *temp_v0; - f32 *temp_a0; - f32 *temp_a1; - f32 temp_f0; - f32 temp_f2; - s16 *temp_t0; - s16 temp_a2; - s16 temp_a3; - s32 temp_t8; - s32 temp_t9; + Camera* camera = cameras + cameraId; - temp_t8 = cameraId * 4; - temp_a3 = pathIndex; - temp_t0 = &gNearestWaypointByCameraId[cameraId]; - *(&D_80164688 + temp_t8) = arg1; - *temp_t0 = (s16) gNearestWaypointByPlayerId[playerId]; - temp_t9 = (s16) *temp_t0 % (s32) gWaypointCountByPathIndex[pathIndex]; - *temp_t0 = (s16) temp_t9; - temp_a2 = temp_a3; - sp1C = temp_t0; - sp20 = temp_t8; - pathIndex = temp_a3; - func_8000BBD8(arg1, temp_t9 & 0xFFFF, arg1, temp_a2, temp_a3); - temp_f0 = D_80162FA0.unk0; - *(&D_801645F8 + temp_t8) = temp_f0; - temp_a0 = temp_t8 + &D_80164618; - temp_a1 = temp_t8 + &D_80164638; - *temp_a0 = (f32) D_80164550[pathIndex][*temp_t0].wayPointY; - *temp_a1 = D_80162FA0.unk8; - temp_f2 = *(&gPlayers->unk_094 + (playerId * 0xDD8)); - *(&D_80164658 + temp_t8) = temp_f2; - temp_v0 = &cameras[cameraId]; - *(&D_80164648 + temp_t8) = temp_f2; - temp_v0->pos[0] = temp_f0; - temp_v0->pos[1] = *temp_a0; - temp_v0->pos[2] = *temp_a1; + D_80164688[cameraId] = arg1; + gNearestWaypointByCameraId[cameraId] = gNearestWaypointByPlayerId[playerId]; + gNearestWaypointByCameraId[cameraId] = (gNearestWaypointByCameraId[cameraId]) % gWaypointCountByPathIndex[pathIndex]; + + func_8000BBD8(gNearestWaypointByCameraId[cameraId], arg1, pathIndex); + + D_801645F8[cameraId] = D_80162FA0[0]; + D_80164618[cameraId] = (f32) D_80164550[pathIndex][gNearestWaypointByCameraId[cameraId]].wayPointY; + D_80164638[cameraId] = D_80162FA0[2]; + + D_80164658[cameraId] = gPlayers[playerId].unk_094; + D_80164648[cameraId] = gPlayers[playerId].unk_094; + + camera->pos[0] = D_801645F8[cameraId]; + camera->pos[1] = D_80164618[cameraId]; + camera->pos[2] = D_80164638[cameraId]; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800162CC.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de @@ -8085,62 +7879,27 @@ void func_80017054(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80017054.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(s32, f32, s16, s16); /* extern */ -extern f32 D_80162FA0; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern ? D_80164658; -extern ? D_80164688; +void func_80017720(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { + Camera* camera = cameras + cameraId; + s32 pad; -void func_80017720(s32 playerId, s32 arg1, s32 cameraId, s16 pathIndex) { - s32 sp1C; - s16 *sp18; - Camera *temp_v0; - f32 *temp_a0; - f32 *temp_a1; - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f2; - s16 *temp_t0; - s16 temp_a2; - s16 temp_a3; - s32 temp_t3; - s32 temp_t8; + D_80164688[cameraId] = D_80163068[playerId]; + gNearestWaypointByCameraId[cameraId] = gNearestWaypointByPlayerId[playerId] + 3; + gNearestWaypointByCameraId[cameraId] = gNearestWaypointByCameraId[cameraId] % gWaypointCountByPathIndex[pathIndex]; - temp_a3 = pathIndex; - temp_f0 = D_80163068[playerId]; - temp_t8 = cameraId * 4; - temp_t0 = &gNearestWaypointByCameraId[cameraId]; - *(&D_80164688 + temp_t8) = temp_f0; - *temp_t0 = gNearestWaypointByPlayerId[playerId] + 3; - temp_t3 = (s16) *temp_t0 % (s32) gWaypointCountByPathIndex[temp_a3]; - *temp_t0 = (s16) temp_t3; - temp_a2 = temp_a3; - sp18 = temp_t0; - sp1C = temp_t8; - pathIndex = temp_a3; - func_8000BBD8(temp_t3 & 0xFFFF, temp_f0, temp_a2, temp_a3); - temp_f0_2 = D_80162FA0.unk0; - *(&D_801645F8 + temp_t8) = temp_f0_2; - temp_a0 = temp_t8 + &D_80164618; - temp_a1 = temp_t8 + &D_80164638; - *temp_a0 = (f32) D_80164550[pathIndex][*temp_t0].wayPointY; - *temp_a1 = D_80162FA0.unk8; - temp_f2 = *(&gPlayers->unk_094 + (playerId * 0xDD8)); - *(&D_80164658 + temp_t8) = temp_f2; - temp_v0 = &cameras[cameraId]; - *(&D_80164648 + temp_t8) = temp_f2; - temp_v0->pos[0] = temp_f0_2; - temp_v0->pos[1] = *temp_a0; - temp_v0->pos[2] = *temp_a1; + func_8000BBD8(gNearestWaypointByCameraId[cameraId], D_80163068[playerId], pathIndex); + + D_801645F8[cameraId] = D_80162FA0[0]; + D_80164618[cameraId] = (f32) D_80164550[pathIndex][gNearestWaypointByCameraId[cameraId]].wayPointY; + D_80164638[cameraId] = D_80162FA0[2]; + + D_80164658[cameraId] = gPlayers[playerId].unk_094; + D_80164648[cameraId] = gPlayers[playerId].unk_094; + + camera->pos[0] = D_801645F8[cameraId]; + camera->pos[1] = D_80164618[cameraId]; + camera->pos[2] = D_80164638[cameraId]; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80017720.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de @@ -8314,64 +8073,27 @@ void func_800178F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800178F4.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(s32, f32, s16, s16); /* extern */ -extern f32 D_80162FA0; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern ? D_80164658; -extern ? D_80164688; +void func_80017F10(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { + Camera* camera = cameras + cameraId; + s32 test = gWaypointCountByPathIndex[pathIndex]; -void func_80017F10(s32 playerId, s32 arg1, s32 cameraId, s16 pathIndex) { - s32 sp1C; - s16 *sp18; - Camera *temp_v0_2; - f32 *temp_a0; - f32 *temp_a1; - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f2; - s16 *temp_t0; - s16 temp_a2; - s16 temp_a3; - s32 temp_t3; - s32 temp_t9; - u16 temp_v0; + D_80164688[cameraId] = D_80163068[playerId]; + gNearestWaypointByCameraId[cameraId] = (gNearestWaypointByPlayerId[playerId] + test) - 2; + gNearestWaypointByCameraId[cameraId] = gNearestWaypointByCameraId[cameraId] % test; - temp_a3 = pathIndex; - temp_v0 = gWaypointCountByPathIndex[pathIndex]; - temp_f0 = D_80163068[playerId]; - temp_t9 = cameraId * 4; - temp_t0 = &gNearestWaypointByCameraId[cameraId]; - *(&D_80164688 + temp_t9) = temp_f0; - *temp_t0 = (gNearestWaypointByPlayerId[playerId] + temp_v0) - 2; - temp_t3 = (s16) *temp_t0 % (s32) temp_v0; - *temp_t0 = (s16) temp_t3; - temp_a2 = temp_a3; - sp18 = temp_t0; - sp1C = temp_t9; - pathIndex = temp_a3; - func_8000BBD8(temp_t3 & 0xFFFF, temp_f0, temp_a2, temp_a3); - temp_f0_2 = D_80162FA0.unk0; - *(&D_801645F8 + temp_t9) = temp_f0_2; - temp_a0 = temp_t9 + &D_80164618; - temp_a1 = temp_t9 + &D_80164638; - *temp_a0 = (f32) D_80164550[pathIndex][*temp_t0].wayPointY; - *temp_a1 = D_80162FA0.unk8; - temp_f2 = *(&gPlayers->unk_094 + (playerId * 0xDD8)); - *(&D_80164658 + temp_t9) = temp_f2; - temp_v0_2 = &cameras[cameraId]; - *(&D_80164648 + temp_t9) = temp_f2; - temp_v0_2->pos[0] = temp_f0_2; - temp_v0_2->pos[1] = *temp_a0; - temp_v0_2->pos[2] = *temp_a1; + func_8000BBD8(gNearestWaypointByCameraId[cameraId], D_80163068[playerId], pathIndex); + + D_801645F8[cameraId] = D_80162FA0[0]; + D_80164618[cameraId] = (f32) D_80164550[pathIndex][gNearestWaypointByCameraId[cameraId]].wayPointY; + D_80164638[cameraId] = D_80162FA0[2]; + + D_80164658[cameraId] = gPlayers[playerId].unk_094; + D_80164648[cameraId] = gPlayers[playerId].unk_094; + + camera->pos[0] = D_801645F8[cameraId]; + camera->pos[1] = D_80164618[cameraId]; + camera->pos[2] = D_80164638[cameraId]; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80017F10.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de @@ -8548,63 +8270,28 @@ void func_800180F0(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800180F0.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BA14(s32, f32, ?, s16); /* extern */ -extern f32 D_80162FA0; extern s32 D_8016448C; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern ? D_80164658; -extern ? D_80164688; -void func_80018718(s32 playerId, s32 arg1, s32 cameraId, s16 pathIndex) { - s32 sp1C; - s16 *sp18; - Camera *temp_v0_2; - f32 *temp_a0; - f32 *temp_a1; - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f2; - s16 *temp_t0; - s16 temp_a3; - s32 temp_hi; - s32 temp_t9; - u16 temp_v0; +void func_80018718(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { + Camera* camera = cameras + cameraId; + s32 test = gWaypointCountByPathIndex[pathIndex]; - temp_a3 = pathIndex; - temp_v0 = gWaypointCountByPathIndex[pathIndex]; - temp_f0 = D_80163068[playerId]; - temp_t9 = cameraId * 4; - temp_hi = (s32) ((gNearestWaypointByPlayerId[playerId] + temp_v0) - 5) % (s32) temp_v0; - *(&D_80164688 + temp_t9) = temp_f0; - temp_t0 = &gNearestWaypointByCameraId[cameraId]; - *temp_t0 = (s16) temp_hi; - sp18 = temp_t0; - sp1C = temp_t9; - pathIndex = temp_a3; - func_8000BA14(temp_hi & 0xFFFF, temp_f0, 0x42700000, temp_a3); - temp_f0_2 = D_80162FA0.unk0; - *(&D_801645F8 + temp_t9) = temp_f0_2; - temp_a0 = temp_t9 + &D_80164618; - temp_a1 = temp_t9 + &D_80164638; - *temp_a0 = (f32) D_80164550[pathIndex][*temp_t0].wayPointY; - *temp_a1 = D_80162FA0.unk8; - temp_f2 = *(&gPlayers->unk_094 + (playerId * 0xDD8)); - *(&D_80164658 + temp_t9) = temp_f2; - *(&D_80164648 + temp_t9) = temp_f2; + D_80164688[cameraId] = D_80163068[playerId]; + gNearestWaypointByCameraId[cameraId] = ((gNearestWaypointByPlayerId[playerId] + test) - 5) % test; + + func_8000BA14(gNearestWaypointByCameraId[cameraId], D_80163068[playerId], 60.0f, pathIndex); + + D_801645F8[cameraId] = D_80162FA0[0]; + D_80164618[cameraId] = (f32) D_80164550[pathIndex][gNearestWaypointByCameraId[cameraId]].wayPointY; + D_80164638[cameraId] = D_80162FA0[2]; + + D_80164658[cameraId] = gPlayers[playerId].unk_094; + D_80164648[cameraId] = gPlayers[playerId].unk_094; D_8016448C = 1; - temp_v0_2 = &cameras[cameraId]; - temp_v0_2->pos[0] = temp_f0_2; - temp_v0_2->pos[1] = *temp_a0; - temp_v0_2->pos[2] = *temp_a1; + camera->pos[0] = D_801645F8[cameraId]; + camera->pos[1] = D_80164618[cameraId]; + camera->pos[2] = D_80164638[cameraId]; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80018718.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de @@ -8833,70 +8520,34 @@ void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800188F4.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(f32, s32, f32, ?, s32); /* extern */ -extern f32 D_80162FA0; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern ? D_80164688; - -void func_80019118(s32 playerId, f32 arg1, s32 cameraId, s32 arg3) { - s32 sp2C; - s16 *sp28; - f32 *sp24; - f32 *sp20; - f64 sp18; - Camera *temp_v0_2; - f32 *temp_a0; - f32 *temp_a1; - f32 *var_v1; - f32 temp_f0; +void func_80019118(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { + Camera* camera = cameras + cameraId; + s32 test = gWaypointCountByPathIndex[0]; f32 temp_f12; - f64 temp_f12_2; - f64 temp_f2; - s16 *temp_v0; - s32 temp_t5; - s32 temp_t6; + f32 temp_f2; - temp_t6 = cameraId * 4; - temp_v0 = &gNearestWaypointByCameraId[cameraId]; - *(&D_80164688 + temp_t6) = arg1; - *temp_v0 = gNearestWaypointByPlayerId[playerId] + 0xC; - temp_t5 = (s16) *temp_v0 % (s32) *gWaypointCountByPathIndex; - *temp_v0 = (s16) temp_t5; - sp2C = temp_t6; - sp28 = temp_v0; - func_8000BBD8(arg1, temp_t5 & 0xFFFF, arg1, 0, temp_t6); - temp_f12 = D_80162FA0.unk0; - temp_f0 = D_80162FA0.unk8; - temp_a0 = temp_t6 + &D_801645F8; - temp_a1 = temp_t6 + &D_80164638; - *temp_a0 = temp_f12; - *temp_a1 = temp_f0; - sp20 = temp_a1; - sp24 = temp_a0; - temp_f2 = (f64) (f32) (*D_80164550)[*temp_v0].wayPointY; - sp18 = temp_f2; - temp_f12_2 = (f64) func_802AE1C0(temp_f12, (f32) (temp_f2 + 30.0), temp_f0); - if ((temp_f12_2 < (temp_f2 - 20.0)) || (temp_f12_2 >= 3000.0)) { - var_v1 = temp_t6 + &D_80164618; - *var_v1 = (f32) (temp_f2 + 10.0); + D_80164688[cameraId] = arg1; + gNearestWaypointByCameraId[cameraId] = gNearestWaypointByPlayerId[playerId] + 12; + gNearestWaypointByCameraId[cameraId] = gNearestWaypointByCameraId[cameraId] % test; + + + func_8000BBD8(gNearestWaypointByCameraId[cameraId], arg1, 0); + D_801645F8[cameraId] = D_80162FA0[0]; + D_80164638[cameraId] = D_80162FA0[2]; + temp_f2 = (f32) D_80164550[0][gNearestWaypointByCameraId[cameraId]].wayPointY; + + temp_f12 = func_802AE1C0(D_80162FA0[0], (f32) (temp_f2 + 30.0), D_80162FA0[2]); + + if ((temp_f12 < (temp_f2 - 20.0)) || (temp_f12 >= 3000.0)) { + D_80164618[cameraId] = (f32) (temp_f2 + 10.0); } else { - var_v1 = temp_t6 + &D_80164618; - *var_v1 = (f32) (temp_f12_2 + 10.0); + D_80164618[cameraId] = (f32) (temp_f12 + 10.0); } - *(&D_80164648 + temp_t6) = 0.0f; - temp_v0_2 = &cameras[cameraId]; - temp_v0_2->pos[0] = *temp_a0; - temp_v0_2->pos[1] = *var_v1; - temp_v0_2->pos[2] = *temp_a1; + D_80164648[cameraId] = 0.0f; + camera->pos[0] = D_801645F8[cameraId]; + camera->pos[1] = D_80164618[cameraId]; + camera->pos[2] = D_80164638[cameraId]; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019118.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de @@ -8990,32 +8641,20 @@ void func_8001968C(void) { D_80164678[0] = 3; } -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern s16 D_80164678; +void func_8001969C(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { + struct TrackWayPoint *waypoint; -void func_8001969C(s32 arg0, s32 arg1, s32 cameraId, s32 arg3) { - s16 *temp_v1; - s32 temp_a1; - struct TrackWayPoint *temp_a0; + gNearestWaypointByCameraId[cameraId] = gWaypointCountByPathIndex[0] - 18; - temp_v1 = &gNearestWaypointByCameraId[cameraId]; - *temp_v1 = *gWaypointCountByPathIndex - 0x12; - temp_a0 = &(*D_80164550)[*temp_v1]; - temp_a1 = cameraId * 4; - *(&D_801645F8 + temp_a1) = (f32) temp_a0->wayPointX; - *(&D_80164618 + temp_a1) = (f32) ((f64) temp_a0->wayPointY + 10.0); - *(&D_80164638 + temp_a1) = (f32) temp_a0->wayPointZ; - *(&D_80164648 + temp_a1) = 0.0f; - *(&D_80164678 + (cameraId * 2)) = 0; + waypoint = &D_80164550[0][gNearestWaypointByCameraId[cameraId]]; + + D_801645F8[cameraId] = waypoint->wayPointX; + // @bug Adding an (f32) cast changes asm, why? + D_80164618[cameraId] = waypoint->wayPointY + 10.0; + D_80164638[cameraId] = waypoint->wayPointZ; + D_80164648[cameraId] = 0.0f; + D_80164678[cameraId] = 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001969C.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de @@ -9055,103 +8694,83 @@ void func_80019760(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019760.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_80015314(?, s32); /* extern */ -void func_80015544(?, s32, u16); /* extern */ -void func_80015A9C(?, s32, s16); /* extern */ -void func_800162CC(?, s32, s16); /* extern */ -void func_80016C3C(?, s32); /* extern */ -void func_80017720(?, s32, s16); /* extern */ -void func_80017F10(?, s32, s16); /* extern */ -void func_80018718(?, s32, s16); /* extern */ -void func_80019118(?, s32, s16); /* extern */ -void func_8001969C(?, s32, s16); /* extern */ -extern ? D_80163DD8; -extern s16 D_80164680; -extern ? D_801646C0; - -void func_80019890(s16 playerId, s32 cameraId) { - Camera *sp28; - s32 sp24; - u16 *sp20; - Camera *temp_t6; - Camera *temp_t9; - s32 temp_t0; - u16 *temp_t4; - u16 temp_s1; - u16 temp_t5; - - temp_t6 = camera1; - sp28 = temp_t6; - temp_t9 = &temp_t6[cameraId]; - sp28 = temp_t9; - temp_t9->playerId = playerId; - temp_t0 = cameraId * 2; - temp_t4 = temp_t0 + &D_80164680; - *(&D_801646C0 + temp_t0) = 0; - sp24 = temp_t0; - sp20 = temp_t4; - temp_t5 = *temp_t4; - temp_s1 = gPathIndexByPlayerId[playerId]; - switch (temp_t5) { - case 0: - func_80015314(0, cameraId); - break; - case 2: - func_80015544(0xBF800000, cameraId, temp_s1); - break; - case 3: - func_80015544(0x3F800000, cameraId, temp_s1); - break; - case 6: - func_80015A9C(0xBF19999A, cameraId, (s16) temp_s1); - break; - case 7: - func_80015A9C(0x3F19999A, cameraId, (s16) temp_s1); - break; - case 4: - func_800162CC(0xBF800000, cameraId, (s16) temp_s1); - break; - case 5: - func_800162CC(0x3F800000, cameraId, (s16) temp_s1); - break; - case 9: - func_80016C3C(0, cameraId); - break; - case 1: - func_80017720(0, cameraId, (s16) temp_s1); - break; - case 14: - func_80017F10(0, cameraId, (s16) temp_s1); - break; - case 8: - func_80018718(0, cameraId, (s16) temp_s1); - break; - case 12: - func_80019118(0xBF800000, cameraId, (s16) temp_s1); - break; - case 13: - func_80019118(0x3F800000, cameraId, (s16) temp_s1); - break; - case 15: - func_8001969C(0xBF800000, cameraId, (s16) temp_s1); - break; - case 16: - func_8001969C(0x3F800000, cameraId, (s16) temp_s1); - break; - default: - func_80015314(0, cameraId); - break; +void func_80016C3C(s32, f32, s32); +void func_80015314(s32, f32, s32); +void func_80017720(s32, f32, s32, s16); +void func_80017F10(s32, f32, s32, s16); +void func_80018718(s32, f32, s32, s16); +void func_80015544(s32, f32, s32, s32); +void func_80019118(s32, f32, s32, s16); +void func_800162CC(s32, f32, s32, s16); +void func_80015A9C(s32, f32, s32, s16); +extern s32 D_80163DD8[]; +extern s16 D_80164680[]; +extern s16 D_801646C0[]; + +void func_80019890(s32 playerId, s32 cameraId) { + s32 pathIndex; + Camera *camera = camera1; + camera += cameraId; + camera->playerId = playerId; + + D_801646C0[cameraId] = 0; + pathIndex = gPathIndexByPlayerId[playerId]; + + switch (D_80164680[cameraId]) { + case 0: + func_80015314(playerId, 0.0f, cameraId); + break; + case 2: + func_80015544(playerId, -1.0f, cameraId, pathIndex); + break; + case 3: + func_80015544(playerId, 1.0f, cameraId, pathIndex); + break; + case 6: + func_80015A9C(playerId, -0.6f, cameraId, (s16) pathIndex); + break; + case 7: + func_80015A9C(playerId, 0.6f, cameraId, (s16) pathIndex); + break; + case 4: + func_800162CC(playerId, -1.0f, cameraId, (s16) pathIndex); + break; + case 5: + func_800162CC(playerId, 1.0f, cameraId, (s16) pathIndex); + break; + case 9: + func_80016C3C(playerId, 0.0f, cameraId); + break; + case 1: + func_80017720(playerId, 0.0f, cameraId, (s16) pathIndex); + break; + case 14: + func_80017F10(playerId, 0.0f, cameraId, (s16) pathIndex); + break; + case 8: + func_80018718(playerId, 0.0f, cameraId, (s16) pathIndex); + break; + case 12: + func_80019118(playerId, -1.0f, cameraId, (s16) pathIndex); + break; + case 13: + func_80019118(playerId, 1.0f, cameraId, (s16) pathIndex); + break; + case 15: + func_8001969C(playerId, -1.0f, cameraId, (s16) pathIndex); + break; + case 16: + func_8001969C(playerId, 1.0f, cameraId, (s16) pathIndex); + break; + default: + func_80015314(playerId, 0.0f, cameraId); + break; } - *(gNearestWaypointByCameraId + sp24) = func_8000BD94(sp28->pos[0], sp28->pos[1], sp28->pos[2], (s32) temp_s1); - if ((s16) *sp20 == 9) { - *(&D_80163DD8 + (cameraId * 4)) = (s32) temp_s1; + gNearestWaypointByCameraId[cameraId] = func_8000BD94(camera->pos[0], camera->pos[1], camera->pos[2], (s32) pathIndex); + if ((s16) D_80164680[cameraId] == 9) { + D_80163DD8[cameraId] = (s32) pathIndex; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019890.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -9221,7 +8840,6 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019B50.s") void func_800C9060(s32, ?, s32, s32); // extern extern ? D_80164608; extern s16 D_80164670; -extern s16 D_80164678; void func_80019C50(s32 arg0) { s32 sp20; @@ -9294,92 +8912,56 @@ void func_80019DE4(void) { #ifdef MIPS_TO_C //generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -extern s16 D_80164670; -extern s16 D_80164678; -extern s16 D_8016467A; -extern s16 D_8016467C; -extern s16 D_8016467E; -extern s16 D_801646CC; +//extern s16 D_80164670; +//extern s16 D_8016467A; +//extern s16 D_8016467C; +//extern s16 D_8016467E; +//extern s16 D_801646CC; void func_80019DF4(void) { - D_80164670 = D_8016467E; - D_80164670 = D_8016467C; - D_80164670 = D_8016467A; - D_80164670 = D_80164678; + // unrolled loop? + D_80164670 = D_80164678[3]; + D_80164670 = D_80164678[2]; + D_80164670 = D_80164678[1]; + D_80164670 = D_80164678[0]; camera1->playerId = *gGPCurrentRacePlayerIdByRank; - D_80164678 = 1; + D_80164678[0] = 1; D_801646CC = 2; } #else GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019DF4.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_80019890(?, ?); // extern -extern s16 D_80164670; -extern s16 D_80164672; -extern s16 D_80164678; -extern s16 D_80164680; extern s16 D_80164682; void func_80019E58(void) { - D_80164680 = 1; + D_80164680[0] = 1; func_80019890(0, 0); - D_80164670 = D_80164678.unk0; - D_80164678.unk0 = 1; + D_80164670[0] = D_80164678[0]; + D_80164678[0] = 1; D_80164682 = 9; func_80019890(0, 1); - D_80164672 = D_80164678.unk2; - D_80164678.unk2 = 0; + D_80164670[1] = D_80164678[1]; + D_80164678[1] = 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019E58.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_80015314(s32, ?, s32); /* extern */ -extern s16 D_80164670; -extern s16 D_80164678; -extern s16 D_80164680; -extern s32 gPlayerWinningIndex; void func_80019ED0(void) { - ? *var_v0; - s16 *var_s0; - s16 *var_s0_2; - s16 *var_s2; - s16 temp_t6; - s32 temp_v0; - s32 var_s1; + s32 i; - var_v0 = &D_80164670; - var_s0 = &D_80164678; - do { - temp_t6 = *var_s0; - var_s0 += 2; - var_v0 += 2; - var_v0->unk-2 = temp_t6; - } while ((u32) var_s0 < (u32) &D_80164680); - temp_v0 = gPlayerWinningIndex; - *gGPCurrentRacePlayerIdByRank = (s16) temp_v0; - var_s2 = &D_80164680; - var_s0_2 = &D_80164678; - var_s1 = 0; - camera1->playerId = (s16) temp_v0; - do { - *var_s2 = 0; - func_80015314(gPlayerWinningIndex, 0, var_s1); - var_s1 += 1; - var_s0_2 += 2; - var_s2 += 2; - var_s0_2->unk-2 = 1; - } while (var_s1 != 4); + for (i = 0; i < 4; i++) { + D_80164670[i] = D_80164678[i]; + } + + gGPCurrentRacePlayerIdByRank[0] = (s16) gPlayerWinningIndex; + + camera1->playerId = (s16) gPlayerWinningIndex; + + for (i = 0; i < 4; i++) { + D_80164680[i] = 0; + func_80015314(gPlayerWinningIndex, 0, i); + D_80164678[i] = 1; + } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019ED0.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -9478,47 +9060,33 @@ void func_8001A124(s32 arg0, s32 arg1) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001A124.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern s16 D_80164680; +extern s16 D_80164680[]; void func_8001A220(s32 arg0, s32 arg1) { - s16 *var_at; - s16 var_t9; - u16 temp_v0; - - temp_v0 = random_int(6U); - switch (temp_v0) { - case 0: - *(&D_80164680 + (arg1 * 2)) = 4; - return; - case 1: - var_at = &D_80164680 + (arg1 * 2); - var_t9 = 5; -block_9: - *var_at = var_t9; - return; - case 2: - *(&D_80164680 + (arg1 * 2)) = 6; - return; - case 3: - *(&D_80164680 + (arg1 * 2)) = 7; - return; - case 4: - *(&D_80164680 + (arg1 * 2)) = 8; - return; - case 5: - *(&D_80164680 + (arg1 * 2)) = 1; - return; - default: - var_at = &D_80164680 + (arg1 * 2); - var_t9 = 8; - goto block_9; + switch (random_int(6)) { + case 0: + D_80164680[arg1] = 4; + break; + case 1: + D_80164680[arg1] = 5; + break; + case 2: + D_80164680[arg1] = 6; + break; + case 3: + D_80164680[arg1] = 7; + break; + case 4: + D_80164680[arg1] = 8; + break; + case 5: + D_80164680[arg1] = 1; + break; + default: + D_80164680[arg1] = 8; + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001A220.s") -#endif s32 func_8001A310(s32 arg0, s32 arg1) { if ((gCurrentCourseId == 2) && (arg1 != 0) && (arg0 >= 0xE7) && (arg0 < 0x1C2)) { @@ -9529,22 +9097,19 @@ s32 func_8001A310(s32 arg0, s32 arg1) { #ifdef MIPS_TO_C //generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_80019890(s32, s32); /* extern */ -s16 func_8001A310(f32, s16, s32, s32); /* extern */ -extern s16 D_80164680; -extern ? D_80164688; +//extern f32 D_80164688[]; void func_8001A348(s32 cameraId, f32 arg1, s32 arg2) { - s32 sp20; - s32 sp1C; - s32 temp_v1; + //s32 sp20; + //s32 sp1C; + //s32 temp_v1; - temp_v1 = cameraId * 2; - sp1C = temp_v1; - sp20 = (s32) *(&cameras->playerId + (cameraId * 0xB8)); - *(&D_80164688 + (cameraId * 4)) = arg1; - *(&D_80164680 + temp_v1) = func_8001A310(arg1, gNearestWaypointByCameraId[cameraId], arg2, cameraId); - func_80019890(sp20, cameraId); + //temp_v1 = cameraId * 2; + //sp1C = temp_v1; + //sp20 = (s32) cameras[1].playerId; // + (cameraId * 0xB8)); + D_80164688[cameraId] = arg1; + D_80164680[cameraId] = func_8001A310(arg1, gNearestWaypointByCameraId[cameraId]); + func_80019890(cameras[0].playerId, cameraId); } #else GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001A348.s") @@ -9853,39 +9418,38 @@ void func_8001AB00(void) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001AB00.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 void func_8001AB74(s32 arg0, s16 *arg1, s32 arg2) { - s32 phi_v0; - - phi_v0 = -1; + s32 value = -1; switch (arg2) { - case 9: - phi_v0 = 0xD; - break; - case 11: - phi_v0 = 0x1B; - break; - case 1: - phi_v0 = 1; - break; - case 8: - phi_v0 = 0x16; - break; - case 10: - phi_v0 = 0x19; - break; - case 12: - phi_v0 = 0x1D; - break; + case 9: + value = 0xD; + break; + case 11: + value = 0x1B; + break; + case 1: + value = 1; + break; + case 8: + value = 0x16; + break; + case 10: + value = 0x19; + break; + case 12: + value = 0x1D; + break; + case 13: + break; + case 14: + break; + case 15: + break; } - if (phi_v0 >= 0) { - *arg1 = phi_v0; + if (value >= 0) { + *arg1 = value; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001AB74.s") -#endif void func_8001ABE0(UNUSED s32 arg0, UNUSED s32 arg1) { @@ -10375,15 +9939,6 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001AC10.s") extern u16 D_80163410[]; // One per player? -typedef struct { - f32 unk0; - f32 unk4; - f32 unk8; - f32 unkC; -} Test; - -extern Test D_801634F8[]; - void func_8001BE78(void) { Player* temp_s1; struct TrackWayPoint* temp_s0; |
