Match bss for code_800029B0 and clean headers (#406)

* Match bss for code_800029B0 and clean headers

* Fix dvdl and a warning
This commit is contained in:
MegaMech
2023-09-08 13:39:13 -06:00
committed by GitHub
parent b723c1be14
commit 208fecdd28
43 changed files with 283 additions and 552 deletions
+106 -28
View File
@@ -23,33 +23,24 @@
extern u16 D_800DC5A8;
extern s32 D_800DC510;
extern u16 gNumSpawnedShells;
extern s32 D_802BA038;
extern s16 D_802BA048;
extern s16 gCurrentlyLoadedCourseId;
extern f32 gCourseDirection;
extern s8 D_8018EDF3;
extern s8 gCupSelection;
extern s32 gScreenModeSelection;
extern u32 D_8015F730;
extern s32 FreeMemoryResetAnchor;
extern u32 gNextFreeMemoryAddress;
extern s32 D_80150120;
extern f32 D_8015F738, D_8015F748, D_8015F758, D_8015F768, D_8015F778;
extern Vec3f D_802B91C8;
extern struct ActorSpawnData D_06009570[];
extern struct ActorSpawnData D_06014330[];
extern f32 gCourseDirection;
s32 D_800DC5E0 = 32;
@@ -65,7 +56,72 @@ struct UnkStruct_800DC5EC *D_800DC5F0 = &D_8015F480[1];
struct UnkStruct_800DC5EC *D_800DC5F4 = &D_8015F480[2];
struct UnkStruct_800DC5EC *D_800DC5F8 = &D_8015F480[3];
u16 gIsGamePaused = 0;
// Technically a pointer to an array, but declaring it so creates regalloc issues.
mk64_surface_map_ram *gSurfaceMap;
u16 *D_8015F584;
u16 D_8015F588; // Number of entries in gSurfaceMap
u16 D_8015F58A;
u32 D_8015F58C;
Vec3f D_8015F590;
s32 D_8015F59C;
s32 D_8015F5A0;
s32 D_8015F5A4;
s32 code_800029B0_bss_pad[48];
Vtx *vtxBuffer[32];
s16 D_8015F6E8;
s16 D_8015F6EA;
s16 D_8015F6EC; // s16 or u16?
s16 D_8015F6EE;
s16 D_8015F6F0;
s16 D_8015F6F2;
s16 D_8015F6F4;
s16 D_8015F6F6;
u16 D_8015F6F8;
s16 D_8015F6FA;
s16 D_8015F6FC;
/**
* Incremented by one every time the player spawns a new shell actor.
* A cleaning routine runs once twenty-one shells have spawned.
*/
u16 gNumSpawnedShells;
u16 D_8015F700;
u16 D_8015F702;
f32 D_8015F704;
Vec3f D_8015F708;
UNUSED u32 D_8015F718[3]; // Likely held ptrs to segmented data.
u32 gFreeMemorySize;
u32 gNextFreeMemoryAddress;
u32 gHeapEndPtr;
u32 D_8015F730;
u32 gFreeMemoryResetAnchor;
Vec3f D_8015F738;
Vec3f D_8015F748;
Vec3f D_8015F758;
Vec3f D_8015F768;
Vec3f D_8015F778;
f32 gCourseDirection; // Extra mode, flips vertices.
s32 D_8015F788;
s32 D_8015F790[64]; // Unknown data, potentially not used.
u16 D_8015F890;
u16 D_8015F892;
u16 D_8015F894;
// Indexed by Player ID. Track time in seconds since player has last crossed the finish line
f32 gTimePlayerLastTouchedFinishLine[8];
u8 *pAppNmiBuffer = (u8 *) &osAppNmiBuffer;
u8 *gNmiUnknown1;
u8 *gNmiUnknown2;
u8 *gNmiUnknown3;
u8 *gNmiUnknown4;
u8 *gNmiUnknown5;
u8 *gNmiUnknown6;
s32 gIsMirrorMode = 0;
f32 vtxStretchY = 1.0f;
Lights1 D_800DC610[] = {
@@ -76,6 +132,28 @@ static s32 pad_800029B0 = 0x80000000;
s16 gCreditsCourseId = COURSE_LUIGI_RACEWAY;
s16 gPlaceItemBoxes = 1;
Vec3f D_8015F8D0;
s32 D_8015F8DC;
s32 D_8015F8E0;
f32 D_8015F8E4;
f32 D_8015F8E8;
s16 gPlayerPositionLUT[8]; // Player index at each position
u16 gNumPermanentActors;
s32 code_800029B0_bss_pad2[44];
struct Actor gActorList[ACTOR_LIST_SIZE];
// @warning todo: Is this apart of the actor array?
UNUSED u8 D_80162578[sizeof(struct Actor)];
s16 gDebugPathCount;
s16 sIsController1Unplugged;
s32 D_801625EC;
s32 D_801625F0;
s32 D_801625F4;
s32 D_801625F8;
f32 D_801625FC;
void func_800029B0(void) {
switch(D_800DC5A8) {
case 0:
@@ -110,7 +188,7 @@ void setup_race(void) {
if (gCurrentCourseId != gCurrentlyLoadedCourseId) {
D_80150120 = 0;
gCurrentlyLoadedCourseId = gCurrentCourseId;
gNextFreeMemoryAddress = FreeMemoryResetAnchor;
gNextFreeMemoryAddress = gFreeMemoryResetAnchor;
load_course(gCurrentCourseId);
func_80295D88();
D_8015F730 = gNextFreeMemoryAddress;
@@ -166,34 +244,34 @@ void setup_race(void) {
void func_80002DAC(void) {
switch (gCurrentCourseId) {
case COURSE_MARIO_RACEWAY:
vec3f_set(&D_8015F748, -223.0f, 94.0f, -155.0f);
func_800C9D80(&D_8015F748, D_802B91C8, 0x5103700B);
vec3f_set(D_8015F748, -223.0f, 94.0f, -155.0f);
func_800C9D80(D_8015F748, D_802B91C8, 0x5103700B);
break;
case COURSE_ROYAL_RACEWAY:
vec3f_set(&D_8015F748, 177.0f, 87.0f, -393.0f);
func_800C9D80(&D_8015F748, D_802B91C8, 0x5103700B);
vec3f_set(D_8015F748, 177.0f, 87.0f, -393.0f);
func_800C9D80(D_8015F748, D_802B91C8, 0x5103700B);
break;
case COURSE_LUIGI_RACEWAY:
vec3f_set(&D_8015F748, 85.0f, 21.0f, -219.0f);
func_800C9D80(&D_8015F748, D_802B91C8, 0x5103700B);
vec3f_set(D_8015F748, 85.0f, 21.0f, -219.0f);
func_800C9D80(D_8015F748, D_802B91C8, 0x5103700B);
break;
case COURSE_WARIO_STADIUM:
vec3f_set(&D_8015F748, 298.0f, 202.0f, -850.0f);
func_800C9D80(&D_8015F748, D_802B91C8, 0x5103700B);
vec3f_set(&D_8015F758, -1600.0f, 202.0f, -2430.0f);
func_800C9D80(&D_8015F758, D_802B91C8, 0x5103700B);
vec3f_set(&D_8015F768, -2708.0f, 202.0f, 1762.0f);
func_800C9D80(&D_8015F768, D_802B91C8, 0x5103700B);
vec3f_set(&D_8015F778, -775.0f, 202.0f, 1930.0f);
func_800C9D80(&D_8015F778, D_802B91C8, 0x5103700B);
vec3f_set(D_8015F748, 298.0f, 202.0f, -850.0f);
func_800C9D80(D_8015F748, D_802B91C8, 0x5103700B);
vec3f_set(D_8015F758, -1600.0f, 202.0f, -2430.0f);
func_800C9D80(D_8015F758, D_802B91C8, 0x5103700B);
vec3f_set(D_8015F768, -2708.0f, 202.0f, 1762.0f);
func_800C9D80(D_8015F768, D_802B91C8, 0x5103700B);
vec3f_set(D_8015F778, -775.0f, 202.0f, 1930.0f);
func_800C9D80(D_8015F778, D_802B91C8, 0x5103700B);
break;
case COURSE_KOOPA_BEACH:
vec3f_set(&D_8015F738, 153.0f, 0.0f, 2319.0f);
func_800C9D80(&D_8015F738, D_802B91C8, 0x51028001);
vec3f_set(D_8015F738, 153.0f, 0.0f, 2319.0f);
func_800C9D80(D_8015F738, D_802B91C8, 0x51028001);
break;
case COURSE_DK_JUNGLE:
vec3f_set(&D_8015F738, -790.0f, -255.0f, -447.0f);
func_800C9D80(&D_8015F738, D_802B91C8, 0x51028001);
vec3f_set(D_8015F738, -790.0f, -255.0f, -447.0f);
func_800C9D80(D_8015F738, D_802B91C8, 0x51028001);
break;
default:
break;