summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTyler McGavran <tyler.taggerung@gmail.com>2023-12-31 21:04:30 -0500
committerGitHub <noreply@github.com>2023-12-31 19:04:30 -0700
commit2727a5e5ddc3bc439b2d0b7f2e681650b79b2fb5 (patch)
treea51e633d236fa6a4467636a2c618b6130552f5ee /src
parentc2c00db97d97a28ca3e9c7ce19b431d3914fd590 (diff)
Turn loop unrolling back on for code_8006E9C0 (#523)
Signed-off-by: Taggerung <tyler.taggerung@email.com>
Diffstat (limited to 'src')
-rw-r--r--src/code_80005FD0.c2
-rw-r--r--src/code_80005FD0.h1
-rw-r--r--src/code_80057C60.h12
-rw-r--r--src/code_8006E9C0.c245
-rw-r--r--src/code_8006E9C0.h18
5 files changed, 75 insertions, 203 deletions
diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c
index 154af62ff..fe2a0d40f 100644
--- a/src/code_80005FD0.c
+++ b/src/code_80005FD0.c
@@ -30,8 +30,6 @@
#include "ending/podium_ceremony_actors.h"
#include "spawn_players.h"
-extern UnkCommonTextureStruct0 *D_800DC720[];
-
s32 unk_code_80005FD0_pad[24];
Collision D_80162E70;
s16 D_80162EB0; // Possibly a float.
diff --git a/src/code_80005FD0.h b/src/code_80005FD0.h
index 9e925a576..e3a8ffb92 100644
--- a/src/code_80005FD0.h
+++ b/src/code_80005FD0.h
@@ -250,6 +250,7 @@ void func_8001C42C(void);
/* This is where I'd put my static data, if I had any */
+extern UnkCommonTextureStruct0 *D_800DC720[];
// Suspected to be the "width" of each waypoint. See data_0DD0A0_1.s
extern f32 D_800DCA4C[];
extern s16 D_800DCA20[];
diff --git a/src/code_80057C60.h b/src/code_80057C60.h
index 3e684728c..16b1c2701 100644
--- a/src/code_80057C60.h
+++ b/src/code_80057C60.h
@@ -335,6 +335,8 @@ extern Player *D_8018CF28[];
extern s16 D_8018CF50[];
extern s16 gGPCurrentRaceCharacterIdByRank[]; // 8018cf80
extern s16 D_8018CF98[];
+extern f32 D_8018CFCC;
+extern f32 D_8018CFD4;
extern f32 D_8018CFE4;
extern f32 D_8018CFEC;
extern f32 D_8018CFF4;
@@ -342,10 +344,13 @@ extern f32 D_8018CFF4;
extern f32 D_8018D028[8];
extern f32 D_8018D050[8];
extern f32 D_8018D078[8];
+extern f32 D_8018D0A0[];
extern f32 D_8018D0C8[8];
+extern f32 D_8018D0F0[];
extern s32 gMatrixHudCount; // 8018d120
extern s32 D_8018D114;
+extern s32 D_8018D150;
extern s32 D_8018D160;
extern s32 D_8018D168;
extern s32 D_8018D170;
@@ -379,6 +384,13 @@ extern s16 D_8018D2E8;
extern s32 D_8018D314;
extern s32 D_8018D320;
+extern s32 D_8018D380;
+extern s32 D_8018D384;
+extern s32 D_8018D388;
+extern s32 D_8018D3D4;
+extern s32 D_8018D3D8;
+extern s32 D_8018D3DC;
+extern s32 D_8018D3F0;
extern s32 D_8018D3F4;
extern s32 D_8018D3F8;
extern s32 gRaceFrameCounter; // 8018d3fc
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);
diff --git a/src/code_8006E9C0.h b/src/code_8006E9C0.h
index f765a13f1..688127e4f 100644
--- a/src/code_8006E9C0.h
+++ b/src/code_8006E9C0.h
@@ -67,24 +67,6 @@ extern s32 D_80183DA0;
extern s32 D_80183DBC;
extern hud_player playerHUD[]; // 8018CA70 - 8018CC70
-// These are all *technically* hardcoded references to spots in playerHUD, but there's something weird
-// going on match wise in reset_object_variable that means we have to (for now) leave them as separate variables
-extern s8 D_8018CAE0;
-extern s8 D_8018CAE1;
-extern s8 D_8018CAE2;
-extern s8 D_8018CAF1;
-extern s8 D_8018CB64;
-extern s8 D_8018CB65;
-extern s8 D_8018CB66;
-extern s8 D_8018CB75;
-extern s8 D_8018CBE8;
-extern s8 D_8018CBE9;
-extern s8 D_8018CBEA;
-extern s8 D_8018CBF9;
-extern s8 D_8018CC6C;
-extern s8 D_8018CC6D;
-extern s8 D_8018CC6E;
-extern s8 D_8018CC7D;
extern s16 D_8018CF18;
extern s16 D_8018CF20;