Give names to a lot of object spawn locations (#486)

Signed-off-by: Taggerung <tyler.taggerung@email.com>
This commit is contained in:
Tyler McGavran
2023-11-07 19:02:21 -05:00
committed by GitHub
parent 893380da09
commit b6abd829d2
13 changed files with 439 additions and 1620 deletions
+159 -406
View File
@@ -4,7 +4,9 @@
#include <defines.h>
#include "code_800029B0.h"
#include "code_80057C60.h"
#include "code_8006E9C0.h"
#include "code_80086E70.h"
#include "code_80071F00.h"
#include "objects.h"
#include "bomb_kart.h"
@@ -476,13 +478,8 @@ extern bool8 D_80165818;
extern s8 D_80165820;
extern s8 D_80165828;
struct UnkStr80165832 {
s8 unk0;
s8 unk1;
};
extern struct UnkStr80165832 D_80165800;
extern struct UnkStr80165832 D_80165832;
extern s8 D_80165800[2];
extern s8 D_80165832[2];
void func_8006F824(s32 arg0) {
D_80165808 = D_801657E4;
@@ -490,8 +487,8 @@ void func_8006F824(s32 arg0) {
D_80165820 = D_801657F0;
D_80165818 = D_801657E8;
D_80165828 = D_801657F8;
D_80165832.unk0 = D_80165800.unk0;
D_80165832.unk1 = D_80165800.unk1;
D_80165832[0] = D_80165800[0];
D_80165832[1] = D_80165800[1];
if ((arg0 != 0) && (gIsGamePaused == 0)) {
play_sound2(SOUND_ACTION_PING);
}
@@ -994,347 +991,146 @@ void func_80070714(void) {
D_80165748 = 0xA;
}
#ifdef MIPS_TO_C
//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-09-2023
extern ? *D_80165758;
extern ? D_80183EB0;
extern ? D_80183EC8;
extern ? D_80183EDC;
extern ? D_80183F34;
extern ? D_80183F3C;
extern ? D_80183F50;
extern ? D_8018C278;
extern ? D_8018C404;
extern ? D_8018C5F0;
extern ? D_8018C6B0;
extern s32 D_8018CF10;
extern s8 D_8018D198;
extern s8 D_8018D1A8;
extern ? D_8018D1B3;
extern s8 D_8018D1B8;
extern ? D_8018D1C4;
s16 gCurrentCourseId; /* unable to generate initializer */
static ? D_800E5728; /* unable to generate initializer */
static ? D_800E5854; /* unable to generate initializer */
static ? D_800E5894; /* unable to generate initializer */
static ? D_800E58EC; /* unable to generate initializer */
static ? D_800E5E14; /* unable to generate initializer */
static ? D_800E5E8C; /* unable to generate initializer */
static ? D_800E5EE6; /* unable to generate initializer */
static ? D_800E5EE8; /* unable to generate initializer */
static ? D_800E5F80; /* unable to generate initializer */
static ? D_800E5FD0; /* unable to generate initializer */
static ? D_800E6360; /* unable to generate initializer */
static ? D_800E641A; /* unable to generate initializer */
void func_80070780(void) {
Objects *sp4C;
? *sp48;
? *sp44;
? *var_s1_2;
? *var_s1_4;
? *var_s2_6;
? *var_v1;
? *var_v1_2;
? *var_v1_3;
Objects *temp_v0;
Objects *temp_v0_2;
Objects *temp_v0_3;
Objects *temp_v0_4;
Objects *temp_v0_5;
Objects *temp_v0_6;
Objects *temp_v0_7;
Objects *temp_v0_8;
Objects *temp_v0_9;
f32 temp_f0;
f32 temp_f0_2;
f32 temp_f0_3;
f32 temp_f0_4;
f32 temp_f0_5;
f32 temp_f18;
f32 temp_f4;
f32 temp_f4_2;
f32 temp_f6;
f64 temp_f8;
s16 *temp_v1;
s16 temp_f10;
s16 temp_f6_2;
s16 temp_f8_2;
s16 temp_t1;
s16 temp_t4;
s16 temp_t5;
s16 temp_t5_2;
s32 *var_s0;
s32 *var_s0_10;
s32 *var_s0_2;
s32 *var_s0_3;
s32 *var_s0_4;
s32 *var_s0_8;
s32 *var_s0_9;
s32 *var_s1;
s32 *var_s1_10;
s32 *var_s1_11;
s32 *var_s1_12;
s32 *var_s1_13;
s32 *var_s1_14;
s32 *var_s1_3;
s32 *var_s1_5;
s32 *var_s1_6;
s32 *var_s1_7;
s32 *var_s1_8;
s32 *var_s1_9;
s32 *var_s2_2;
s32 *var_s2_3;
s32 *var_s2_4;
s32 *var_s2_5;
s32 *var_s2_7;
s32 temp_s0;
s32 temp_s0_10;
s32 temp_s0_2;
s32 temp_s0_3;
s32 temp_s0_4;
s32 temp_s0_5;
s32 temp_s0_6;
s32 temp_s0_7;
s32 temp_s0_8;
s32 temp_s0_9;
s32 temp_t9;
s32 var_s2;
s32 var_s3;
s32 var_s3_2;
s32 var_s3_3;
s32 var_s3_4;
s32 var_s3_5;
s8 *var_s0_5;
s8 *var_s0_6;
s8 *var_s0_7;
switch ((u16) gCurrentCourseId) {
switch (gCurrentCourseId) {
case 0:
if (gGamestate != 9) {
if (gModeSelection == 0) {
func_80070714();
}
var_s0 = D_8018C630;
var_s3 = 0;
if (D_80165738 > 0) {
do {
find_unused_obj_index(var_s0);
func_800723A4(*var_s0, 0);
var_s3 += 1;
var_s0 += 4;
} while (var_s3 < D_80165738);
return;
for (var_s3 = 0; var_s3 < D_80165738; var_s3++) {
find_unused_obj_index(&D_8018C630[var_s3]);
func_800723A4(D_8018C630[var_s3], 0);
}
} else {
default:
return;
}
break;
case 2:
D_80165750 = 0x000B;
D_80165758 = &D_800E5894;
gNumActiveThwomps = NUM_THWOMPS_100CC_EXTRA;
gThowmpSpawnList = gThwompSpawns100CCExtra;
switch (gCCSelection) { /* switch 1; irregular */
case 1: /* switch 1 */
case 3: /* switch 1 */
break;
case 0: /* switch 1 */
D_80165750 = 8;
D_80165758 = &D_800E5854;
gNumActiveThwomps = NUM_THWOMPS_50CC;
gThowmpSpawnList = gThomwpSpawns50CC;
break;
case 2: /* switch 1 */
D_80165750 = 0x000C;
D_80165758 = &D_800E58EC;
gNumActiveThwomps = NUM_THWOMPS_150CC;
gThowmpSpawnList = gThomwpSpawns150CC;
break;
}
var_s1 = D_80183EA0;
var_s3_2 = 0;
if (D_80165750 > 0) {
var_s2 = 0;
do {
temp_s0 = *var_s1;
func_800723A4(temp_s0, 0);
temp_v1 = D_80165758 + var_s2;
var_s3_2 += 1;
temp_f6 = (f32) temp_v1->unk0;
temp_v0 = &gObjectList[temp_s0];
var_s2 += 8;
var_s1 += 4;
temp_v0->unk_010[0] = temp_f6 * D_8018D01C;
temp_v0->unk_010[2] = (f32) temp_v1->unk2;
temp_v0->unk_0D5 = (u8) temp_v1->unk4;
temp_v0->unk_0A0 = temp_v1->unk6;
} while (var_s3_2 < D_80165750);
var_s3_2 = 0;
for (var_s3 = 0; var_s3 < gNumActiveThwomps; var_s3++) {
temp_s0 = D_80183EA0[var_s3];
func_800723A4(temp_s0, 0);
gObjectList[temp_s0].unk_010[0] = gThowmpSpawnList[var_s3].startX * D_8018D01C;
gObjectList[temp_s0].unk_010[2] = gThowmpSpawnList[var_s3].startZ;
gObjectList[temp_s0].unk_0D5 = gThowmpSpawnList[var_s3].unk_4;
gObjectList[temp_s0].unk_0A0 = gThowmpSpawnList[var_s3].unk_6;
}
temp_s0_2 = *D_80183F28;
func_800723A4(temp_s0_2, 0);
var_s1_2 = &D_800E5728;
temp_v0_2 = &gObjectList[temp_s0_2];
var_s2_2 = D_8018BFA8;
temp_v0_2->pos[1] = 80.0f;
temp_v0_2->pos[0] = (f32) ((f64) D_8018D01C * -68.0);
temp_v0_2->pos[2] = -1840.0f;
do {
temp_s0_3 = *var_s2_2;
func_800723A4(temp_s0_3, 0);
temp_t9 = var_s3_2 & 1;
temp_v0_3 = &gObjectList[temp_s0_3];
var_s3_2 += 1;
var_s2_2 += 4;
temp_v0_3->pos[1] = (f32) var_s1_2->unk2;
temp_v0_3->pos[0] = (f32) var_s1_2->unk0 * D_8018D01C;
temp_v0_3->unk_0BE[1] = 0;
temp_v0_3->pos[2] = (f32) var_s1_2->unk4;
if (temp_t9 != 0) {
temp_v0_3->unk_0BE[1] = 0x8000;
// Handle the big statue's fire breath
temp_s0 = D_80183F28[0];
func_800723A4(temp_s0, 0);
gObjectList[temp_s0].pos[0] = -68.0 * D_8018D01C;
gObjectList[temp_s0].pos[1] = 80.0f;
gObjectList[temp_s0].pos[2] = -1840.0f;
// Handle the smaller statues' fire breath
for (var_s3 = 0; var_s3 < NUM_FIRE_BREATHS; var_s3++) {
temp_s0 = D_8018BFA8[var_s3];
func_800723A4(temp_s0, 0);
gObjectList[temp_s0].pos[0] = gFireBreathsSpawns[var_s3][0] * D_8018D01C;
gObjectList[temp_s0].pos[1] = gFireBreathsSpawns[var_s3][1];
gObjectList[temp_s0].pos[2] = gFireBreathsSpawns[var_s3][2];
gObjectList[temp_s0].unk_0BE[1] = 0;
if (var_s3 % 2U) {
gObjectList[temp_s0].unk_0BE[1] += 0x8000;
}
var_s1_2 += 6;
} while (var_s3_2 < 4);
var_s0_2 = D_8018C030;
do {
delete_object(var_s0_2);
var_s0_2 += 4;
} while (var_s0_2 != D_8018C0B0);
return;
}
for (var_s3 = 0; var_s3 < 32; var_s3++) {
delete_object(&D_8018C030[var_s3]);
}
break;
case 3:
if (gGamestate != 9) {
temp_s0_4 = D_80183EA0->unk0;
init_texture_object(temp_s0_4, d_course_banshee_boardwalk_bat_tlut, *d_course_banshee_boardwalk_bat, 0x20U, (u16) 0x00000040);
temp_v0_4 = &gObjectList[temp_s0_4];
temp_v0_4->unk_0B2[0] = 0;
temp_v0_4->unk_0B2[1] = 0;
temp_v0_4->unk_0B2[2] = 0x8000;
func_800723A4(D_80183EA0->unk4, 0);
func_800723A4(D_80183EA0->unk8, 0);
return;
temp_s0 = D_80183EA0[0];
init_texture_object(temp_s0, d_course_banshee_boardwalk_bat_tlut, *d_course_banshee_boardwalk_bat, 0x20U, (u16) 0x00000040);
gObjectList[temp_s0].unk_0B2[0] = 0;
gObjectList[temp_s0].unk_0B2[1] = 0;
gObjectList[temp_s0].unk_0B2[2] = 0x8000;
func_800723A4(D_80183EA0[1], 0);
func_800723A4(D_80183EA0[2], 0);
}
break;
case 4:
var_s1_3 = D_80183EA0;
do {
func_800723A4(*var_s1_3, 0);
var_s1_3 += 4;
} while ((u32) var_s1_3 < (u32) &D_80183EB0);
var_s2_3 = D_80183F28;
for (var_s3 = 0; var_s3 < 4; var_s3++) {
func_800723A4(D_80183EA0[var_s3], 0);
}
if (gGamestate != 9) {
var_v1 = &D_800E5E8C;
var_s1_4 = &D_800E5E14;
do {
temp_s0_5 = *var_s2_3;
sp44 = var_v1;
func_800723A4(temp_s0_5, 0);
temp_f0 = (f32) var_s1_4->unk0 * D_8018D01C;
temp_v0_5 = &gObjectList[temp_s0_5];
temp_v0_5->unk_010[0] = temp_f0;
temp_v0_5->pos[0] = temp_f0;
temp_f10 = var_s1_4->unk4;
temp_t1 = var_s1_4->unk6;
temp_t5 = var_v1->unk4;
temp_f0_2 = (f32) ((f64) var_s1_4->unk2 + 6.0);
temp_f4 = (f32) var_v1->unk0 * D_8018D01C;
var_v1 += 6;
var_s2_3 += 4;
temp_v0_5->unk_044 = temp_f0_2;
temp_v0_5->pos[1] = temp_f0_2;
var_s1_4 += 8;
temp_f0_3 = (f32) temp_f10;
temp_v0_5->unk_0D5 = (u8) temp_t1;
temp_v0_5->unk_09E = temp_t5;
temp_v0_5->unk_010[2] = temp_f0_3;
temp_v0_5->pos[2] = temp_f0_3;
temp_v0_5->unk_09C = (s16) (s32) temp_f4;
} while (var_v1 != &D_800E5EE6);
return;
for (var_s3 = 0; var_s3 < NUM_HEDGEHOGS; var_s3++) {
temp_s0 = D_80183F28[var_s3];
func_800723A4(temp_s0, 0);
gObjectList[temp_s0].pos[0] = gObjectList[temp_s0].unk_010[0] = gHedgehogSpawns[var_s3].pos[0] * D_8018D01C;
gObjectList[temp_s0].pos[1] = gObjectList[temp_s0].unk_044 = gHedgehogSpawns[var_s3].pos[1] + 6.0;
gObjectList[temp_s0].pos[2] = gObjectList[temp_s0].unk_010[2] = gHedgehogSpawns[var_s3].pos[2];
gObjectList[temp_s0].unk_0D5 = gHedgehogSpawns[var_s3].unk_06;
gObjectList[temp_s0].unk_09C = gHedgehogPatrolPoints[var_s3][0] * D_8018D01C;
gObjectList[temp_s0].unk_09E = gHedgehogPatrolPoints[var_s3][2];
}
}
break;
case 5:
var_s1_5 = D_8018C1B0;
do {
find_unused_obj_index(var_s1_5);
var_s1_5 += 4;
} while ((u32) var_s1_5 < (u32) &D_8018C278);
var_s1_6 = D_80183EA0;
for (var_s3 = 0; var_s3 < NUM_SNOWFLAKES; var_s3++) {
find_unused_obj_index(&D_8018C1B0[var_s3]);
}
if (gGamestate != 9) {
var_v1_2 = &D_800E5EE8;
var_s2_4 = D_80183F28;
do {
temp_s0_6 = *var_s2_4;
sp44 = var_v1_2;
func_800723A4(temp_s0_6, 0);
temp_v0_6 = &gObjectList[temp_s0_6];
temp_s0_7 = *var_s1_6;
temp_v0_6->unk_010[0] = (f32) var_v1_2->unk0 * D_8018D01C;
temp_v0_6->unk_010[2] = (f32) var_v1_2->unk4;
temp_v0_6->unk_010[1] = (f32) ((f64) var_v1_2->unk2 + 5.0 + 3.0);
func_800723A4(temp_s0_7, 0);
temp_t4 = var_v1_2->unk4;
temp_v0_7 = &gObjectList[temp_s0_7];
temp_f8 = (f64) var_v1_2->unk2;
temp_f4_2 = (f32) var_v1_2->unk0 * D_8018D01C;
temp_t5_2 = var_v1_2->unk6;
var_v1_2 += 8;
var_s1_6 += 4;
var_s2_4 += 4;
temp_v0_7->unk_0D5 = (u8) temp_t5_2;
temp_v0_7->unk_010[0] = temp_f4_2;
temp_v0_7->unk_010[1] = (f32) (temp_f8 + 3.0);
temp_v0_7->unk_010[2] = (f32) temp_t4;
} while (var_v1_2 != &D_800E5F80);
return;
for (var_s3 = 0; var_s3 < NUM_SNOWMEN; var_s3++) {
temp_s0 = D_80183F28[var_s3];
func_800723A4(temp_s0, 0);
gObjectList[temp_s0].unk_010[0] = gSnowmanSpawns[var_s3].pos[0] * D_8018D01C;
gObjectList[temp_s0].unk_010[1] = gSnowmanSpawns[var_s3].pos[1] + 5.0 + 3.0;
gObjectList[temp_s0].unk_010[2] = gSnowmanSpawns[var_s3].pos[2];
temp_s0 = D_80183EA0[var_s3];
func_800723A4(temp_s0, 0);
gObjectList[temp_s0].unk_010[0] = gSnowmanSpawns[var_s3].pos[0] * D_8018D01C;
gObjectList[temp_s0].unk_010[1] = gSnowmanSpawns[var_s3].pos[1] + 3.0;
gObjectList[temp_s0].unk_010[2] = gSnowmanSpawns[var_s3].pos[2];
gObjectList[temp_s0].unk_0D5 = gSnowmanSpawns[var_s3].unk_6;
}
}
break;
case 6:
var_s1_7 = D_80183EA0;
if (gGamestate != 9) {
var_v1_3 = &D_800E5F80;
do {
temp_s0_8 = *var_s1_7;
sp48 = var_v1_3;
func_800723A4(temp_s0_8, 0);
temp_f6_2 = var_v1_3->unk4;
temp_v0_8 = &gObjectList[temp_s0_8];
temp_f8_2 = var_v1_3->unk6;
temp_f18 = (f32) var_v1_3->unk2;
temp_f0_4 = (f32) var_v1_3->unk0 * D_8018D01C;
var_v1_3 += 8;
var_s1_7 += 4;
temp_v0_8->unk_010[0] = temp_f0_4;
temp_v0_8->pos[0] = temp_f0_4;
temp_f0_5 = (f32) temp_f6_2;
temp_v0_8->unk_01C[0] = temp_f18 * D_8018D01C;
temp_v0_8->unk_010[2] = temp_f0_5;
temp_v0_8->pos[2] = temp_f0_5;
temp_v0_8->unk_01C[2] = (f32) temp_f8_2;
} while (var_v1_3 != &D_800E5FD0);
}
var_s2_5 = D_80183F28;
do {
temp_s0_9 = *var_s2_5;
func_800723A4(temp_s0_9, 0);
var_s2_5 += 4;
if ((u32) var_s2_5 < (u32) &D_80183F3C) {
gObjectList[temp_s0_9].unk_0D5 = 0;
} else {
gObjectList[temp_s0_9].unk_0D5 = 1;
for (var_s3 = 0; var_s3 < NUM_CRABS; var_s3++) {
temp_s0 = D_80183EA0[var_s3];
func_800723A4(temp_s0, 0);
gObjectList[temp_s0].pos[0] = gObjectList[temp_s0].unk_010[0] = gCrabSpawns[var_s3].startX * D_8018D01C;
gObjectList[temp_s0].unk_01C[0] = gCrabSpawns[var_s3].patrolX * D_8018D01C;
gObjectList[temp_s0].pos[2] = gObjectList[temp_s0].unk_010[2] = gCrabSpawns[var_s3].startZ;
gObjectList[temp_s0].unk_01C[2] = gCrabSpawns[var_s3].patrolZ;
}
} while (var_s2_5 != &D_80183F50);
return;
}
for (var_s3 = 0; var_s3 < NUM_SEAGULLS; var_s3++) {
temp_s0 = D_80183F28[var_s3];
func_800723A4(temp_s0, 0);
if (var_s3 < (NUM_SEAGULLS / 2)) {
gObjectList[temp_s0].unk_0D5 = 0;
} else {
gObjectList[temp_s0].unk_0D5 = 1;
}
}
break;
case 7:
if (gGamestate != 9) {
if (gModeSelection == 0) {
func_80070714();
}
var_s0_3 = D_8018C630;
var_s3_3 = 0;
if (D_80165738 > 0) {
do {
find_unused_obj_index(var_s0_3);
func_800723A4(*var_s0_3, 0);
var_s3_3 += 1;
var_s0_3 += 4;
} while (var_s3_3 < D_80165738);
return;
for (var_s3 = 0; var_s3 < D_80165738; var_s3++) {
find_unused_obj_index(&D_8018C630[var_s3]);
func_800723A4(D_8018C630[var_s3], 0);
}
}
break;
@@ -1344,29 +1140,22 @@ void func_80070780(void) {
func_80070714();
}
D_80165898 = 0;
func_800723A4(D_80183EA0->unk0, 0);
var_s0_4 = D_8018C630;
var_s3_4 = 0;
if (D_80165738 > 0) {
do {
find_unused_obj_index(var_s0_4);
func_800723A4(*var_s0_4, 0);
var_s3_4 += 1;
var_s0_4 += 4;
} while (var_s3_4 < D_80165738);
return;
func_800723A4(D_80183EA0[0], 0);
for (var_s3 = 0; var_s3 < D_80165738; var_s3++) {
find_unused_obj_index(&D_8018C630[var_s3]);
func_800723A4(D_8018C630[var_s3], 0);
}
}
break;
case 9:
if (gGamestate != 9) {
var_s1_8 = D_80183EA0;
if ((gPlayerCount == 1) || ((gPlayerCount == 2) && (gModeSelection == (s32) 2))) {
switch (gCCSelection) { /* switch 2; irregular */
case 0: /* switch 2 */
D_8018D1C8 = 4;
D_8018D1D0 = 6;
goto block_75;
D_8018D1D8 = 6;
break;
case 1: /* switch 2 */
D_8018D1C8 = 5;
D_8018D1D0 = 8;
@@ -1375,7 +1164,7 @@ void func_80070780(void) {
case 2: /* switch 2 */
D_8018D1C8 = 5;
D_8018D1D0 = 8;
D_8018D1D8 = 0x0000000A;
D_8018D1D8 = 10;
break;
case 3: /* switch 2 */
D_8018D1C8 = 5;
@@ -1386,111 +1175,75 @@ void func_80070780(void) {
} else {
D_8018D1C8 = 4;
D_8018D1D0 = 6;
block_75:
D_8018D1D8 = 6;
}
var_s0_5 = &D_8018D198;
do {
*var_s0_5 = 0;
find_unused_obj_index(var_s1_8);
var_s0_5 += 1;
var_s1_8 += 4;
} while ((u32) var_s0_5 < (u32) &D_8018D1A0);
var_s0_6 = &D_8018D1A8;
var_s1_9 = D_80183EA0;
do {
*var_s0_6 = 0;
find_unused_obj_index(var_s1_9);
var_s0_6 += 1;
var_s1_9 += 4;
} while ((u32) var_s0_6 < (u32) &D_8018D1B3);
var_s0_7 = &D_8018D1B8;
var_s1_10 = D_80183EA0;
do {
*var_s0_7 = 0;
find_unused_obj_index(var_s1_10);
var_s0_7 += 1;
var_s1_10 += 4;
} while ((u32) var_s0_7 < (u32) &D_8018D1C4);
var_s2_6 = &D_800E6360;
var_s1_11 = D_8018C1B0;
do {
find_unused_obj_index(var_s1_11);
temp_s0_10 = *var_s1_11;
func_800723A4(temp_s0_10, 0);
temp_v0_9 = &gObjectList[temp_s0_10];
sp4C = temp_v0_9;
temp_v0_9->pos[2] = (f32) var_s2_6->unk4;
temp_v0_9->pos[0] = (f32) var_s2_6->unk0 * D_8018D01C;
func_800887C0(temp_s0_10);
var_s2_6 += 6;
var_s1_11 += 4;
temp_v0_9->sizeScaling = 0.7f;
} while ((u32) var_s2_6 < (u32) &D_800E641A);
var_s0_8 = D_8018C3F0;
do {
find_unused_obj_index(var_s0_8);
var_s0_8 += 4;
} while (var_s0_8 != &D_8018C5F0);
return;
for (var_s3 = 0; var_s3 < NUM_GROUP1_MOLES; var_s3++) {
D_8018D198[var_s3] = 0;
find_unused_obj_index(&D_80183EA0[var_s3]);
}
for (var_s3 = 0; var_s3 < NUM_GROUP2_MOLES; var_s3++) {
D_8018D1A8[var_s3] = 0;
find_unused_obj_index(&D_80183EA0[var_s3]);
}
for (var_s3 = 0; var_s3 < NUM_GROUP3_MOLES; var_s3++) {
D_8018D1B8[var_s3] = 0;
find_unused_obj_index(&D_80183EA0[var_s3]);
}
for (var_s3 = 0; var_s3 < NUM_MAX_MOLES; var_s3++) {
find_unused_obj_index(&D_8018C1B0[var_s3]);
temp_s0 = D_8018C1B0[var_s3];
func_800723A4(temp_s0, 0);
gObjectList[temp_s0].pos[0] = gMoleSpawns[var_s3][0] * D_8018D01C;
gObjectList[temp_s0].pos[2] = gMoleSpawns[var_s3][2];
func_800887C0(temp_s0);
gObjectList[temp_s0].sizeScaling = 0.7f;
}
for (var_s3 = 0; var_s3 < D_8018C3F0_SIZE; var_s3++) {
find_unused_obj_index(&D_8018C3F0[var_s3]);
}
}
break;
case 11:
if (gGamestate != 9) {
find_unused_obj_index(&D_8018CF10);
func_800723A4(D_8018CF10, 0);
var_s1_12 = D_8018C1B0;
do {
find_unused_obj_index(var_s1_12);
var_s1_12 += 4;
} while ((u32) var_s1_12 < (u32) &D_8018C278);
var_s0_9 = D_8018C3F0;
do {
find_unused_obj_index(var_s0_9);
var_s0_9 += 4;
} while ((u32) var_s0_9 < (u32) &D_8018C404);
var_s0_10 = D_8018C630;
do {
find_unused_obj_index(var_s0_10);
var_s0_10 += 4;
} while (var_s0_10 != &D_8018C6B0);
return;
for (var_s3 = 0; var_s3 < 50; var_s3++) {
find_unused_obj_index(&D_8018C1B0[var_s3]);
}
for (var_s3 = 0; var_s3 < 5; var_s3++) {
find_unused_obj_index(&D_8018C3F0[var_s3]);
}
for (var_s3 = 0; var_s3 < 32; var_s3++) {
find_unused_obj_index(&D_8018C630[var_s3]);
}
}
break;
case 12:
var_s1_13 = D_80183EA0;
do {
func_800723A4(*var_s1_13, 0);
var_s1_13 += 4;
} while (var_s1_13 != &D_80183EDC);
return;
for (var_s3 = 0; var_s3 < NUM_PENGUINS; var_s3++) {
func_800723A4(D_80183EA0[var_s3], 0);
}
break;
case 13:
var_s1_14 = D_80183EA0;
if (gGamestate != 9) {
do {
func_800723A4(*var_s1_14, 0);
var_s1_14 += 4;
} while ((u32) var_s1_14 < (u32) &D_80183EC8);
var_s2_7 = D_80183F28;
do {
func_800723A4(*var_s2_7, 0);
var_s2_7 += 4;
} while (var_s2_7 != &D_80183F34);
return;
for (var_s3 = 0; var_s3 < NUM_NEON_SIGNS; var_s3++) {
func_800723A4(D_80183EA0[var_s3], 0);
}
for (var_s3 = 0; var_s3 < NUM_CHAIN_CHOMPS; var_s3++) {
func_800723A4(D_80183F28[var_s3], 0);
}
}
break;
case 18:
var_s3_5 = 0;
do {
func_800770F0(var_s3_5);
var_s3_5 += 1;
} while (var_s3_5 != 8);
for (var_s3 = 0; var_s3 < NUM_TORCHES; var_s3++) {
func_800770F0(var_s3);
// wtf?
if (D_8018CF10){}
}
break;
default:
break;
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_80070780.s")
#endif
#ifdef MIPS_TO_C
//generated by m2c commit b52d92c2340f6f4ba1aafb464188bb698752fbb0 on Jul-28-2023
+1 -1
View File
@@ -22,7 +22,7 @@ void func_800703E0(s32, s32, StarSpawn*);
void func_800704A0(StarSpawn*);
void func_8007055C(void);
void func_80070714(void);
void func_80070780();
void func_80070780(void);
void init_hud_one_player(void);
void init_hud_two_player_vertical(void);
void init_hud_three_four_player(void);
+62 -83
View File
@@ -2274,7 +2274,6 @@ void func_80076F2C(void) {
}
}
extern s16 D_800E6788[1]; // todo: fix this extern
void func_80076FEC(s32 objectIndex, s32 flameIndex) {
func_800723A4(objectIndex, 3);
@@ -2285,9 +2284,9 @@ void func_80076FEC(s32 objectIndex, s32 flameIndex) {
// Mixing arr + offset and array access... Why?
// todo: ifdef this to proper array access.
gObjectList[objectIndex].unk_010[0] = (f32)(intptr_t)(*(&D_800E6788 + flameIndex * 3)[0]) * D_8018D01C;
gObjectList[objectIndex].unk_010[1] = (f32)(intptr_t)(*(&D_800E6788 + flameIndex * 3)[1]);
gObjectList[objectIndex].unk_010[2] = (f32)(intptr_t)(*(&D_800E6788 + flameIndex * 3)[2]);
gObjectList[objectIndex].unk_010[0] = (f32)(intptr_t)(*(&gTorchSpawns + flameIndex * 3)[0]) * D_8018D01C;
gObjectList[objectIndex].unk_010[1] = (f32)(intptr_t)(*(&gTorchSpawns + flameIndex * 3)[1]);
gObjectList[objectIndex].unk_010[2] = (f32)(intptr_t)(*(&gTorchSpawns + flameIndex * 3)[2]);
gObjectList[objectIndex].unk_034 = 0;
gObjectList[objectIndex].type = 255;
gObjectList[objectIndex].unk_0A2 = 255;
@@ -5827,7 +5826,7 @@ s32 func_8007F75C(s32 playerId) {
var_s6 = 0;
if ((waypoint >= 0xAA) && (waypoint < 0xB5)) {
temp_s7 = random_int(0x0032U) + 0x32;
for (someIndex = 0; someIndex < D_80165750; someIndex++) {
for (someIndex = 0; someIndex < gNumActiveThwomps; someIndex++) {
objectIndex = D_80183EA0[someIndex];
if (gObjectList[objectIndex].unk_0D5 == 3) {
var_s6 = 1;
@@ -5835,7 +5834,7 @@ s32 func_8007F75C(s32 playerId) {
}
}
} else if ((waypoint >= 0xD7) && (waypoint < 0xE2)) {
for (someIndex = 0; someIndex < D_80165750; someIndex++) {
for (someIndex = 0; someIndex < gNumActiveThwomps; someIndex++) {
objectIndex = D_80183EA0[someIndex];
if (gObjectList[objectIndex].unk_0D5 == 3) {
var_s6 = 1;
@@ -5856,7 +5855,7 @@ void func_8007F8D8(void) {
player = gPlayerOne;
var_s4 = 1;
for (someIndex = 0; someIndex < D_80165750; someIndex++){
for (someIndex = 0; someIndex < gNumActiveThwomps; someIndex++){
objectIndex = D_80183EA0[someIndex];
object = &gObjectList[objectIndex];
if (object->unk_0D5 == 3) {
@@ -6498,13 +6497,13 @@ void func_80081210(void) {
D_80165834[0] += 0x100;
D_80165834[1] += 0x200;
for (var_s4 = 0; var_s4 < D_80165750; var_s4++) {
for (var_s4 = 0; var_s4 < gNumActiveThwomps; var_s4++) {
objectIndex = D_80183EA0[var_s4];
func_800722CC(objectIndex, 0x00000010);
func_8008A4CC(objectIndex);
}
func_8007F8D8();
for (var_s4 = 0; var_s4 < D_80165750; var_s4++) {
for (var_s4 = 0; var_s4 < gNumActiveThwomps; var_s4++) {
objectIndex = D_80183EA0[var_s4];
if (gObjectList[objectIndex].state != 0) {
switch (gObjectList[objectIndex].unk_0D5) {
@@ -6533,7 +6532,7 @@ void func_80081210(void) {
for (var_s4 = 0; var_s4 < NUM_PLAYERS; var_s4++, player++) {
player->boundingBoxCorners[0].unk_14 &= ~3;
player->unk_046 &= ~0x0006;
for (var_s2_3 = 0; var_s2_3 < D_80165750; var_s2_3++) {
for (var_s2_3 = 0; var_s2_3 < gNumActiveThwomps; var_s2_3++) {
objectIndex = D_80183EA0[var_s2_3];
if (!(player->effects & 0x80000000)) {
func_80080B28(objectIndex, var_s4);
@@ -6547,7 +6546,7 @@ void func_80081210(void) {
}
}
func_8007542C(3);
for (var_s4 = 0; var_s4 < D_80165750; var_s4++) {
for (var_s4 = 0; var_s4 < gNumActiveThwomps; var_s4++) {
objectIndex = D_80183EA0[var_s4];
if (func_80072320(objectIndex, 0x00000020) == 0) continue;
@@ -6680,32 +6679,22 @@ void func_80081A88(s32 objectIndex) {
func_8008BF18(objectIndex);
}
#ifdef MIPS_TO_C
//generated by m2c commit b52d92c2340f6f4ba1aafb464188bb698752fbb0 on Jul-25-2023
extern ? D_8018D198;
extern ? D_8018D1A8;
extern ? D_8018D1B8;
void func_80081AFC(s32 objectIndex, s32 arg1) {
? *sp2C;
s16 temp_v1;
s32 temp_v0;
s8 *sp2C;
Objects *temp_s0;
temp_s0 = &gObjectList[objectIndex];
temp_v1 = temp_s0->state;
switch (temp_v1) { /* irregular */
switch (temp_s0->state) { /* irregular */
case 0x1:
func_80081848(objectIndex);
break;
case 0x2:
temp_v0 = temp_s0->unk_04C;
if (temp_v0 == 0) {
if (temp_s0->unk_04C == 0) {
func_80086EAC(objectIndex, 2, 1);
func_80072488(objectIndex);
set_object_flag_unk_054_true(objectIndex, 0x00000200);
} else {
temp_s0->unk_04C = temp_v0 - 1;
temp_s0->unk_04C--;
}
break;
case 0x3:
@@ -6733,26 +6722,26 @@ void func_80081AFC(s32 objectIndex, s32 arg1) {
func_80072428(objectIndex);
switch (arg1) { /* switch 1; irregular */
case 1: /* switch 1 */
sp2C = &D_8018D198;
sp2C = D_8018D198;
break;
case 2: /* switch 1 */
sp2C = &D_8018D1A8;
sp2C = D_8018D1A8;
break;
case 3: /* switch 1 */
sp2C = &D_8018D1B8;
sp2C = D_8018D1B8;
break;
}
*(sp2C + temp_s0->type) = 0;
sp2C[temp_s0->type] = 0;
}
break;
case 0:
default:
break;
}
if (temp_s0->state >= 2) {
func_80073514(objectIndex);
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80081AFC.s")
#endif
void func_80081D34(s32 objectIndex) {
Player *var_s1;
@@ -6800,72 +6789,63 @@ void func_80081D34(s32 objectIndex) {
}
}
#ifdef MIPS_TO_C
//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc
extern f32 D_8018D01C;
extern s8 D_8018D198;
extern s8 D_8018D1A8;
extern s8 D_8018D1B8;
static ? D_800E6360; /* unable to generate initializer */
#ifdef NON_MATCHING
/**
* Nonmatching due to regalloc stuff
* The use of the `offset` variable is really really weird
* The intent of the function appears to be choose a random mole from a given
* group of moles (decided by arg1)
* `offset` then would then be offsetting the indexing into gMoleSpawns
* so that we choose the appropriate spawn location for that mole
* But as its written, `offset` is triple what it ought to be.
* So there' something kind of fucky happening
**/
void func_80081FF4(s32 objectIndex, s32 arg1) {
s32 sp2C;
s16 sp28;
? *sp20;
Objects *sp18;
? *var_a2;
s32 stackPadding0;
s32 stackPadding1;
s32 moleCount;
s16 var_v1;
s16 offset;
s32 var_a0;
s8 *temp_v0;
Objects *temp_a3;
void *temp_v0_2;
s8 *var_a2;
func_800723A4(objectIndex, 0);
temp_a3 = &gObjectList[objectIndex];
temp_a3->unk_04C = random_int(0x001EU) + 5;
gObjectList[objectIndex].unk_04C = random_int(0x001EU) + 5;
switch (arg1) { /* irregular */
case 1:
var_a2 = &D_8018D198;
sp28 = 0;
sp2C = 8;
block_7:
sp20 = var_a2;
var_a2 = D_8018D198;
moleCount = NUM_GROUP1_MOLES;
offset = 0;
break;
case 2:
var_a2 = &D_8018D1A8;
sp28 = 0x0018;
sp2C = 0x0000000B;
goto block_7;
var_a2 = D_8018D1A8;
moleCount = NUM_GROUP2_MOLES;
offset = 24;
// offset = NUM_GROUP1_MOLES;
break;
case 3:
var_a2 = &D_8018D1B8;
sp28 = 0x0039;
sp2C = 0x0000000C;
goto block_7;
var_a2 = D_8018D1B8;
moleCount = NUM_GROUP3_MOLES;
offset = 57;
// offset = NUM_GROUP1_MOLES + NUM_GROUP2_MOLES;
break;
}
sp18 = temp_a3;
var_v1 = random_int(sp2C & 0xFFFF);
var_a0 = 0;
if (sp2C > 0) {
loop_9:
temp_v0 = var_v1 + sp20;
var_a0 += 1;
if (*temp_v0 != 0) {
var_v1 += 1;
if (var_v1 == sp2C) {
var_v1 = random_int(moleCount);
for (var_a0 = 0; var_a0 < moleCount; var_a0++) {
if (var_a2[var_v1] != 0) {
var_v1++;
if (var_v1 == moleCount) {
var_v1 = 0;
}
if (var_a0 != sp2C) {
goto loop_9;
}
} else {
*temp_v0 = 1;
temp_a3->type = var_v1;
var_a2[var_v1] = 1;
gObjectList[objectIndex].type = var_v1;
break;
}
}
temp_v0_2 = (sp28 * 2) + (var_v1 * 6) + &D_800E6360;
temp_a3->unk_010[0] = (f32) temp_v0_2->unk0 * D_8018D01C;
temp_a3->unk_010[1] = (f32) ((f64) temp_v0_2->unk2 - 9.0);
temp_a3->unk_010[2] = (f32) temp_v0_2->unk4;
gObjectList[objectIndex].unk_010[0] = gMoleSpawns[var_v1][offset + 0] * D_8018D01C;
gObjectList[objectIndex].unk_010[1] = gMoleSpawns[var_v1][offset + 1] - 9.0;
gObjectList[objectIndex].unk_010[2] = gMoleSpawns[var_v1][offset + 2];
}
#else
GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80081FF4.s")
@@ -8238,7 +8218,6 @@ void func_80085F74(s32 objectIndex) {
* But then it get popped back into v0 when its supposed to be popped into t0.
* I really, really don't get why that's happening and the permuter hasn't found anything
**/
extern Vec3f D_800E6734[]; /* unable to generate initializer */
void func_80086074(s32 objectIndex, s32 arg1) {
func_8008B7D4(objectIndex, D_800E6734[arg1][0] * D_8018D01C, D_800E6734[arg1][1], D_800E6734[arg1][2]);
+1 -9
View File
@@ -5,8 +5,6 @@
#include "common_structs.h"
#include "camera.h"
#define NUM_YV_FLAG_POLES 4
// This struct is used by a lot of different objects
// Stars, clouds, exahust smoke (I think?)
typedef struct {
@@ -14,11 +12,6 @@ typedef struct {
u16 id;
} StarSpawn;
typedef struct {
Vec3s pos;
u16 rot;
} YVFlagPoleSpawn;
void func_80077D5C(s32);
s32 find_unused_obj_index(s32*);
void delete_object(s32*);
@@ -153,6 +146,7 @@ void func_80076538(s32);
void func_8007661C(void);
void func_8007675C(s32, Vec3s, s32);
s32 func_80076828(Vec3s, s32);
void func_80076884(s32);
void func_80076958(s32);
void func_800769D8(s32);
void func_80076AEC(s32);
@@ -380,8 +374,6 @@ extern u8 *D_8018C028;
// I think the entires in this array are way over-sized
extern u8 D_80183FA8[4][0x2000];
extern YVFlagPoleSpawn D_800E5DF4[NUM_YV_FLAG_POLES];
// Something related to the rotation(?) of ice in Sherbet Land
extern u16 D_801657A2;
+6 -6
View File
@@ -4452,20 +4452,20 @@ void func_80053870(s32 cameraId) {
if (cameraId == 0) {
var_s0 = D_80183EA0;
var_s2 = 0;
if (D_80165750 > 0) {
if (gNumActiveThwomps > 0) {
do {
temp_s1 = *var_s0;
set_object_flag_unk_054_false(temp_s1, 0x00070000);
func_800722CC(temp_s1, 0x00000110);
var_s2 += 1;
var_s0 += 4;
} while (var_s2 < D_80165750);
} while (var_s2 < gNumActiveThwomps);
sp94 = temp_s1;
}
}
func_800534A4(sp94);
var_s0_2 = D_80183EA0;
if (D_80165750 > 0) {
if (gNumActiveThwomps > 0) {
do {
temp_s1_2 = *var_s0_2;
temp_v0 = gObjectList[temp_s1_2].unk_0DF;
@@ -4474,10 +4474,10 @@ void func_80053870(s32 cameraId) {
if ((temp_v0_2 >= (s16) (temp_v0 - 1)) && ((s16) (temp_v0 + 1) >= temp_v0_2) && (func_8008A140(temp_s1_2, sp84, 0x8000U) != 0)) {
func_800536C8(temp_s1_2);
}
var_v1 = &D_80183EA0[D_80165750];
var_v1 = &D_80183EA0[gNumActiveThwomps];
} else {
func_800536C8(temp_s1_2);
var_v1 = &D_80183EA0[D_80165750];
var_v1 = &D_80183EA0[gNumActiveThwomps];
}
var_s0_2 += 4;
} while ((u32) var_s0_2 < (u32) var_v1);
@@ -4872,7 +4872,7 @@ void func_80054E10(s32 objectIndex) {
void func_80054EB8(UNUSED s32 unused) {
s32 someIndex;
for (someIndex = 0; someIndex < NUM_MOLES; someIndex++) {
for (someIndex = 0; someIndex < NUM_MAX_MOLES; someIndex++) {
func_80054E10(D_8018C1B0[someIndex]);
}
}
+7 -5
View File
@@ -1382,11 +1382,13 @@ void main_menu_act(struct Controller *controller, u16 arg1) {
case GAME_MODE_CC_OR_TIME_TRIALS_OPTIONS_SELECTION:
case TIME_TRIALS_DATA_SELECTION_FROM_BACK_OUT:
{
if (1);
if ((arg1 == 0) && (++gMenuTimingCounter == 100 || gMenuTimingCounter % 300 == 0)) {
// L800B2FAC
if (gGameModeFromNumPlayersAndRowSelection[gPlayerCount][D_800E86AC[gPlayerCount - 1]] == 0 || gGameModeFromNumPlayersAndRowSelection[gPlayerCount][D_800E86AC[gPlayerCount - 1]] == 2) {
play_sound2(SOUND_MENU_SELECT_LEVEL);
if (arg1 == 0){
gMenuTimingCounter++;
if ((gMenuTimingCounter == 100 || gMenuTimingCounter % 300 == 0)) {
// L800B2FAC
if (gGameModeFromNumPlayersAndRowSelection[gPlayerCount][D_800E86AC[gPlayerCount - 1]] == 0 || gGameModeFromNumPlayersAndRowSelection[gPlayerCount][D_800E86AC[gPlayerCount - 1]] == 2) {
play_sound2(SOUND_MENU_SELECT_LEVEL);
}
}
}
// L800B3000