mirror of
https://github.com/n64decomp/mk64
synced 2026-07-28 15:17:01 -04:00
Turn loop unrolling back on for code_8006E9C0 (#523)
Signed-off-by: Taggerung <tyler.taggerung@email.com>
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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[];
|
||||
|
||||
@@ -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
|
||||
|
||||
+61
-182
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user