diff options
| author | Tyler McGavran <tyler.taggerung@gmail.com> | 2023-12-31 21:04:30 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-31 19:04:30 -0700 |
| commit | 2727a5e5ddc3bc439b2d0b7f2e681650b79b2fb5 (patch) | |
| tree | a51e633d236fa6a4467636a2c618b6130552f5ee /src/code_8006E9C0.c | |
| parent | c2c00db97d97a28ca3e9c7ce19b431d3914fd590 (diff) | |
Turn loop unrolling back on for code_8006E9C0 (#523)
Signed-off-by: Taggerung <tyler.taggerung@email.com>
Diffstat (limited to 'src/code_8006E9C0.c')
| -rw-r--r-- | src/code_8006E9C0.c | 245 |
1 files changed, 62 insertions, 183 deletions
diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index c38ea0347..26bb991f8 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -12,6 +12,7 @@ #include "objects.h" #include "bomb_kart.h" #include "variables.h" +#include "save.h" #include "common_textures.h" #include <sounds.h> #include <functions.h> @@ -45,61 +46,24 @@ void init_object_list(void) { } void reset_object_variable(void) { + s32 thing; + s32 thing2; func_8006EB10(); clear_object_list(); bzero(playerHUD, HUD_PLAYERS_SIZE * sizeof(hud_player)); - D_8018CAE1 = 0; - D_8018CAE2 = 0; - D_8018CAF1 = 0; - D_8018CB65 = 0; - D_8018CB66 = 0; - D_8018CB75 = 0; - D_8018CBE9 = 0; - D_8018CBEA = 0; - D_8018CBF9 = 0; - D_8018CC6D = 0; - D_8018CC6E = 0; - D_8018CC7D = 0; - D_8018CAE0 = 0; - D_8018CB64 = 0; - D_8018CBE8 = 0; - D_8018CC6C = 0; - - /** - playerHUD[PLAYER_ONE].lapCount = 0; - playerHUD[PLAYER_ONE].alsoLapCount = 0; - playerHUD[PLAYER_ONE].unk_81 = 0; - playerHUD[PLAYER_TWO].lapCount = 0; - playerHUD[PLAYER_TWO].alsoLapCount = 0; - playerHUD[PLAYER_TWO].unk_81 = 0; - playerHUD[PLAYER_THREE].lapCount = 0; - playerHUD[PLAYER_THREE].alsoLapCount = 0; - playerHUD[PLAYER_THREE].unk_81 = 0; - playerHUD[PLAYER_FOUR].lapCount = 0; - playerHUD[PLAYER_FOUR].alsoLapCount = 0; - playerHUD[PLAYER_FOUR].unk_81 = 0; - playerHUD[PLAYER_ONE].raceCompleteBool = 0; - playerHUD[PLAYER_TWO].raceCompleteBool = 0; - playerHUD[PLAYER_THREE].raceCompleteBool = 0; - playerHUD[PLAYER_FOUR].raceCompleteBool = 0; - - // This is close but it puts the raceCompletedBool stuff in the wrong place - // Which makes sense, but its still annoying + for (thing = 0; thing < HUD_PLAYERS_SIZE; thing++) { playerHUD[thing].lapCount = 0; playerHUD[thing].alsoLapCount = 0; playerHUD[thing].unk_81 = 0; - // playerHUD[thing].raceCompleteBool = 0; } - // This loop works, but only if we re-enable loop unrolling for this file - for (thing = 0; thing < HUD_PLAYERS_SIZE; thing++) { - playerHUD[thing].raceCompleteBool = 0; + for (thing2 = 0; thing2 < HUD_PLAYERS_SIZE; thing2++) { + playerHUD[thing2].raceCompleteBool = 0; } - **/ } void func_8006EB10(void) { - s32 i = 0; + s32 i; for (i = 0; i < 128; i++) { D_8018C1B0[i] = -1; @@ -117,12 +81,8 @@ void func_8006EB10(void) { D_8018C870[i] = -1; } - for (i = 0; i < 64; i += 4) { - D_8018C970[i + 0] = -1; - D_8018C970[i + 1] = -1; - D_8018C970[i + 2] = -1; - D_8018C970[i + 3] = -1; - } + // Has to be on one line, because IDO hates you :) + for (i = 0; i < D_8018C970_SIZE; i++) { D_8018C970[i] = -1; } D_8018CFA8 = 0; D_8018CF90 = D_8018CFA8; @@ -1135,173 +1095,92 @@ void init_course_object(void) { } } -#ifdef MIPS_TO_C -//generated by m2c commit b52d92c2340f6f4ba1aafb464188bb698752fbb0 on Jul-28-2023 -? init_course_object(); /* extern */ -extern s32 D_80165638; -extern s32 D_80165648; -extern s16 D_801656B0; -extern s16 D_80165708; -extern s16 D_8016579E; -extern s16 D_801657A2; -extern s8 D_80165888; -extern s8 D_80165890; -extern s32 D_80183DA0; -extern s32 D_80183DBC; -extern f32 D_8018CFCC; -extern f32 D_8018CFD4; -extern f32 D_8018CFEC; -extern f32 D_8018CFF4; -extern f32 D_8018D00C; -extern ? D_8018D028; -extern ? D_8018D050; -extern ? D_8018D078; -extern ? D_8018D098; -extern ? D_8018D0A0; -extern ? D_8018D0C8; -extern ? D_8018D0F0; -extern s32 D_8018D150; -extern s32 D_8018D380; -extern s32 D_8018D384; -extern s32 D_8018D388; -extern s32 D_8018D3BC; -extern s32 D_8018D3C0; -extern s32 D_8018D3C4; -extern s32 D_8018D3D4; -extern s32 D_8018D3D8; -extern s32 D_8018D3DC; -extern s32 D_8018D3F0; -extern s32 D_8018D3F4; - void init_hud_one_player(void) { - ? *var_a0; - ? *var_a1; - ? *var_a2; - ? *var_a3; - ? *var_v0; - ? *var_v1; - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f0_3; - f32 var_f0; + s32 someIndex; + f32 something; + // permuter magic + long long why; + s32 one = 1; D_8018D140 = 0; D_8018D150 = 0; D_8018CFCC = 1.0f; find_unused_obj_index(&D_80183DA0); - find_unused_obj_index(D_80183DB8); - find_unused_obj_index(&D_80183DBC); - find_unused_obj_index(gItemWindowObjectByPlayerId); - find_unused_obj_index(gItemWindowObjectByPlayerId + 4); + find_unused_obj_index(&D_80183DB8[0]); + find_unused_obj_index(&D_80183DB8[1]); + find_unused_obj_index(&gItemWindowObjectByPlayerId[0]); + find_unused_obj_index(&gItemWindowObjectByPlayerId[1]); init_object_list_index(); func_8007055C(); func_8007055C(); init_course_object(); - playerHUD->speedometerX = 0x0156; - playerHUD->speedometerY = 0x0106; - D_8018CFEC = (f32) (playerHUD->speedometerX + 0x18); - D_8018CFF4 = (f32) (playerHUD->speedometerY + 6); + playerHUD[0].speedometerX = 0x0156; + playerHUD[0].speedometerY = 0x0106; + D_8018CFEC = playerHUD[0].speedometerX + 0x18; + D_8018CFF4 = playerHUD[0].speedometerY + 6; D_8016579E = 0xDD00; - playerHUD->rankX = 0x0034; - playerHUD->rankY = 0x00C8; - playerHUD->slideRankX = 0; - playerHUD->slideRankY = 0; - playerHUD->timerX = 0x012C; - playerHUD->lap1CompletionTimeX = 0x012C; - playerHUD->lap2CompletionTimeX = 0x012C; - playerHUD->timerY = 0x0011; - playerHUD->lapX = -0x0028; - playerHUD->lapAfterImage1X = -0x0028; - playerHUD->lapAfterImage2X = -0x0028; - playerHUD->lapY = 0x0019; - playerHUD->itemBoxX = 0x00A0; - playerHUD->itemBoxY = -0x0020; - playerHUD->slideItemBoxX = 0; - playerHUD->slideItemBoxY = 0; - playerHUD->stagingPosition = (s16) *gGPCurrentRaceRankByPlayerId; + playerHUD[0].rankX = 0x0034; + playerHUD[0].rankY = 0x00C8; + playerHUD[0].slideRankX = 0; + playerHUD[0].slideRankY = 0; + playerHUD[0].stagingPosition = gGPCurrentRaceRankByPlayerId[0]; + playerHUD[0].timerX = 0x012C; + playerHUD[0].lapCompletionTimeXs[0] = 0x012C; + playerHUD[0].lapCompletionTimeXs[1] = 0x012C; + playerHUD[0].timerY = 0x0011; + playerHUD[0].lapX = -0x0028; + playerHUD[0].lapAfterImage1X = -0x0028; + playerHUD[0].lapAfterImage2X = -0x0028; + playerHUD[0].lapY = 0x0019; + playerHUD[0].itemBoxX = 0x00A0; + playerHUD[0].itemBoxY = -0x0020; + playerHUD[0].slideItemBoxX = 0; + playerHUD[0].slideItemBoxY = 0; + // permuter magic + why = 0x000000A0; init_item_window(gItemWindowObjectByPlayerId[0]); - var_f0 = 35.0f; - var_v0 = &D_8018D078; - var_a3 = &D_8018D0A0; - var_a2 = &D_8018D0F0; - var_a1 = &D_8018D050; - var_a0 = &D_8018D028; - var_v1 = &D_8018D0C8; - do { - var_a1->unk0 = var_f0; - var_a2->unk0 = var_f0; - var_v0 += 0x10; - var_v1->unk4 = 40.0f; - temp_f0 = (f32) ((f64) var_f0 + 32.0); - var_a0->unk4 = -24.0f; - var_a3->unk4 = 0.0f; - var_v0->unk-C = 0.0f; - var_a1->unk4 = temp_f0; - var_a2->unk4 = temp_f0; - var_v1->unk8 = 40.0f; - var_a0->unk8 = -24.0f; - temp_f0_2 = (f32) ((f64) temp_f0 + 32.0); - var_a3->unk8 = 0.0f; - var_v0->unk-8 = 0.0f; - var_v1->unkC = 40.0f; - var_a1->unk8 = temp_f0_2; - var_a2->unk8 = temp_f0_2; - var_a0->unkC = -24.0f; - var_a3->unkC = 0.0f; - temp_f0_3 = (f32) ((f64) temp_f0_2 + 32.0); - var_v0->unk-4 = 0.0f; - var_v1 += 0x10; - var_a0 += 0x10; - var_a1->unkC = temp_f0_3; - var_a2->unkC = temp_f0_3; - var_a1 += 0x10; - var_a2 += 0x10; - var_f0 = (f32) ((f64) temp_f0_3 + 32.0); - var_a3 += 0x10; - var_v1->unk-10 = 40.0f; - var_a0->unk-10 = -24.0f; - var_a3->unk-10 = 0.0f; - var_v0->unk-10 = 0.0f; - } while (var_v0 != &D_8018D098); + for (someIndex = 0, something = 35.0f; someIndex < 8; someIndex++, something+= 32.0) { + D_8018D0C8[someIndex] = 40.0f; + D_8018D028[someIndex] = -24.0f; + D_8018D050[someIndex] = something; + D_8018D0F0[someIndex] = something; + D_8018D0A0[someIndex] = 0.0f; + D_8018D078[someIndex] = 0.0f; + } D_8018CFD4 = 1.0f; - D_8018D3DC = 0x000000FF; - D_8018D3D8 = 0x000000FF; - D_8018D3D4 = 0x000000FF; - D_8018D3E0 = 0x000000A0; + D_8018D3D4 = D_8018D3D8 = D_8018D3DC = 0x000000FF; + D_8018D3E0 = why; D_8018D3E4 = 0x000000FF; D_8018D3E8 = 0x000000FF; D_8018D3EC = 0x000000FF; D_8018D3F0 = 0x000000FF; - D_8018D3F4 = 1; - playerHUD->unk_4C = 0x0078; - playerHUD->unk_4A = 0x00A0; - playerHUD->rankScaling = 0.5f; + D_8018D3F4 = one; + playerHUD[0].unk_4C = 0x0078; + playerHUD[0].unk_4A = 0x00A0; + playerHUD[0].rankScaling = 0.5f; D_801656B0 = 0; D_80165708 = 0x0028; D_8018D00C = 5.0f; D_8018D388 = 4; - D_8018D380 = (s32) 0x00A0; - D_8018D384 = (s32) 0x0078; + D_8018D380 = 0x00A0; + D_8018D384 = 0x0078; D_8018D3C4 = 0x00000032; - D_8018D3BC = (s32) 0x0028; + D_8018D3BC = 0x0028; D_8018D3C0 = 0x00000050; D_801657A2 = 0x0333; switch (gModeSelection) { /* irregular */ case 0: D_8018D158 = 8; - return; + break; case 1: - D_80165638 = (func_800B4F2C(0, 40.0f, &D_8018D3DC, 1, 0x0078, 0x0028) & 0xFFFFF) - 1; + D_80165638 = (func_800B4F2C() & 0xFFFFF) - 1; D_80165648 = func_800B4E24(0) & 0xFFFFF; D_80165888 = 1; D_80165890 = 1; - D_8018D158 = (s32) 1; - return; + D_8018D158 = 1; + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_8006E9C0/init_hud_one_player.s") -#endif void init_hud_two_player_vertical(void) { find_unused_obj_index(&D_80183DA0); |
