From 208fecdd28bdc3424d6ebf09f1eab23f271467b6 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Fri, 8 Sep 2023 13:39:13 -0600 Subject: [PATCH] Match bss for code_800029B0 and clean headers (#406) * Match bss for code_800029B0 and clean headers * Fix dvdl and a warning --- asm/bss_800029B0.s | 271 ----------------------------------- include/actor_types.h | 1 + include/variables.h | 7 - mk64.ld | 34 +++-- src/actors.c | 1 + src/actors.h | 25 ---- src/actors_extended.c | 1 + src/actors_extended.h | 16 --- src/camera.c | 1 + src/code_800029B0.c | 134 +++++++++++++---- src/code_800029B0.h | 83 +++++++++++ src/code_80005FD0.c | 5 +- src/code_8001F980.c | 5 +- src/code_8001F980.h | 2 - src/code_80057C60.c | 4 +- src/code_80057C60.h | 1 - src/code_8008C1D0.c | 11 +- src/code_8008C1D0.h | 1 - src/code_80091440.c | 11 +- src/code_80091440.h | 1 - src/code_80091750.c | 10 +- src/code_80091750.h | 2 - src/code_80280000.c | 9 +- src/code_80281780.c | 3 +- src/code_80281780.h | 16 --- src/collision.c | 33 +---- src/collision.h | 4 - src/main.c | 2 +- src/main.h | 40 +++--- src/memory.c | 1 + src/memory.h | 3 - src/menus.c | 5 +- src/player_controller.c | 3 +- src/podium_ceremony_actors.c | 2 +- src/podium_ceremony_actors.h | 2 +- src/race_logic.c | 43 +----- src/race_logic.h | 2 - src/render_courses.c | 1 + src/render_courses.h | 26 ---- src/skybox_and_splitscreen.c | 1 + src/skybox_and_splitscreen.h | 5 - src/spawn_players.c | 3 +- src/staff_ghosts.c | 4 +- 43 files changed, 283 insertions(+), 552 deletions(-) delete mode 100644 asm/bss_800029B0.s diff --git a/asm/bss_800029B0.s b/asm/bss_800029B0.s deleted file mode 100644 index e122f3b3c..000000000 --- a/asm/bss_800029B0.s +++ /dev/null @@ -1,271 +0,0 @@ -.include "macros.inc" -.section .bss - -#glabel D_8015F480 -#.skip 44 - -#glabel D_8015F4AC -#.skip 2 - -#glabel D_8015F4AE -#.skip 2 - -#glabel D_8015F4B0 -#.skip 2 - -#glabel D_8015F4B2 -#.skip 14 - -#glabel D_8015F4C0 # 2p wrapper -#.skip 44 - -#glabel D_8015F4EC -#.skip 2 - -#glabel D_8015F4EE -#.skip 2 - -#glabel D_8015F4F0 -#.skip 2 - -#glabel D_8015F4F2 -#.skip 14 - -#glabel D_8015F500 #3p wrapper -#.skip 44 - -#glabel D_8015F52C -#.skip 2 - -#glabel D_8015F52E -#.skip 2 - -#glabel D_8015F530 -#.skip 2 - -#glabel D_8015F532 -#.skip 14 - -#glabel D_8015F540 #4p wrapper -#.skip 44 - -#glabel D_8015F56C -#.skip 2 - -#glabel D_8015F56E -#.skip 2 - -#glabel D_8015F570 -#.skip 2 - -#glabel D_8015F572 # end of player wrapper -#.skip 14 - -glabel gSurfaceMap -.skip 4 - -glabel D_8015F584 -.skip 4 - -glabel D_8015F588 -.skip 2 - -glabel D_8015F58A -.skip 2 - -glabel D_8015F58C -.skip 4 - -glabel D_8015F590 -.skip 12 - -glabel D_8015F59C -.skip 4 - -glabel D_8015F5A0 -.skip 4 - -glabel D_8015F5A4 -.skip 196 - -glabel vtxBuffer -.skip 128 - -glabel D_8015F6E8 -.skip 2 - -glabel D_8015F6EA -.skip 2 - -glabel D_8015F6EC -.skip 2 - -glabel D_8015F6EE -.skip 2 - -glabel D_8015F6F0 -.skip 2 - -glabel D_8015F6F2 -.skip 2 - -glabel D_8015F6F4 -.skip 2 - -glabel D_8015F6F6 -.skip 2 - -glabel D_8015F6F8 -.skip 2 - -glabel D_8015F6FA -.skip 2 - -glabel D_8015F6FC -.skip 2 - -glabel gNumSpawnedShells -.skip 2 - -glabel D_8015F700 -.skip 2 - -glabel D_8015F702 -.skip 2 - -glabel D_8015F704 -.skip 4 - -glabel D_8015F708 -.skip 16 - -glabel D_8015F718 -.skip 12 - -glabel gFreeMemorySize -.skip 4 - -glabel gNextFreeMemoryAddress # 0x8015F728 ptr -.skip 4 - -glabel gHeapEndPtr # 0x8015F72C -.skip 4 - -glabel D_8015F730 -.word 0x00000000 - -glabel FreeMemoryResetAnchor -.word 0x00000000 - -glabel D_8015F738 -.skip 16 - -glabel D_8015F748 -.skip 16 - -glabel D_8015F758 -.skip 16 - -glabel D_8015F768 -.skip 16 - -glabel D_8015F778 -.skip 12 - -glabel gCourseDirection -.skip 4 - -glabel D_8015F788 -.skip 8 - -glabel D_8015F790 -.skip 256 - -glabel D_8015F890 -.skip 2 - -glabel D_8015F892 -.skip 2 - -glabel D_8015F894 -.skip 4 - -glabel gTimePlayerLastTouchedFinishLine -.skip 32 - -glabel gNmiUnknown1 -.skip 4 - -glabel gNmiUnknown2 -.skip 4 - -glabel gNmiUnknown3 -.skip 4 - -glabel gNmiUnknown4 -.skip 4 - -glabel gNmiUnknown5 -.skip 4 - -glabel gNmiUnknown6 -.skip 4 - -glabel D_8015F8D0 -.skip 8 - -glabel D_8015F8D8 -.skip 4 - -glabel D_8015F8DC -.skip 4 - -glabel D_8015F8E0 -.skip 4 - -glabel D_8015F8E4 -.skip 4 - -glabel D_8015F8E8 -.skip 8 - -glabel gPlayerPositionLUT -.skip 2 - -glabel D_8015F8F2 -.skip 2 - -glabel D_8015F8F4 -.skip 2 - -glabel D_8015F8F6 -.skip 10 - -glabel gNumPermanentActors -.skip 184 - -glabel gActorList -.skip 11200 - -glabel D_80162578 -.skip 112 - -glabel gDebugPathCount -.skip 2 - -glabel sIsController1Unplugged -.skip 2 - -glabel D_801625EC -.skip 4 - -glabel D_801625F0 -.skip 4 - -glabel D_801625F4 -.skip 4 - -glabel D_801625F8 -.skip 4 - -glabel D_801625FC diff --git a/include/actor_types.h b/include/actor_types.h index 3244c36c2..cb1e2d533 100644 --- a/include/actor_types.h +++ b/include/actor_types.h @@ -105,6 +105,7 @@ struct Actor { /* 0x30 */ Collision unk30; }; // size = 0x70 +// Duplicate declare for simplicity when externing actors & packed files. extern struct Actor gActorList[ACTOR_LIST_SIZE]; // D_8015F9B8 /* diff --git a/include/variables.h b/include/variables.h index b29d4b9f5..66d68c089 100644 --- a/include/variables.h +++ b/include/variables.h @@ -59,8 +59,6 @@ extern OSMesgQueue gSIEventMesgQueue; // D_8014F0B8 extern u8 gSoundMode; // D_8018EDF2 extern char *gSoundModeNames[NUM_SOUND_MODES]; // D_800E7710 -// Indexed by Player ID. Track time in seconds since player has last crossed the finish line -extern f32 gTimePlayerLastTouchedFinishLine[8]; // D_8015F898 extern s8 gTimeTrialDataCourseIndex; // D_8018EDF7 extern Player gPlayers[8]; @@ -82,9 +80,6 @@ extern struct_D_8018CE10 D_8018CE10[]; //extern struct GfxPool *gGfxPool; // D_8014EF40 -extern mk64_surface_map_ram *gSurfaceMap; // This is techinally a pointer to an array, but declaring it as such create regalloc issues elsewhere -extern u16 D_8015F588; // Number of entires in gSurfaceMap - extern Vec3f D_80165070[]; extern Vp D_802B8880[]; @@ -98,8 +93,6 @@ extern u16 gIsGamePaused; extern u16 D_80150112; -extern u16 D_8015F890; - extern u16 D_80162DD8; extern s32 D_80162DE0; extern s32 D_80162DE4; diff --git a/mk64.ld b/mk64.ld index 484cd1a7b..0eeb99682 100644 --- a/mk64.ld +++ b/mk64.ld @@ -266,11 +266,11 @@ SECTIONS BUILD_DIR/src/audio/load.o(.data); BUILD_DIR/src/audio/playback.o(.data); BUILD_DIR/src/audio/effects.o(.data); -#if DEBUG - BUILD_DIR/src/debug/crash_screen_enhancement.o(.data); - BUILD_DIR/src/debug/debug.o(.data); - BUILD_DIR/src/os/sprintf.o(.data); -#endif + #if DEBUG + BUILD_DIR/src/debug/crash_screen_enhancement.o(.data); + BUILD_DIR/src/debug/debug.o(.data); + BUILD_DIR/src/os/sprintf.o(.data); + #endif BUILD_DIR/data/data_0DD0A0_2_1_1.o(.data); BUILD_DIR/src/audio/port_eu.o(.data); BUILD_DIR/data/data_0DD0A0_2_1_2.o(.data); @@ -314,11 +314,11 @@ SECTIONS BUILD_DIR/src/audio/seqplayer.o(.rodata); BUILD_DIR/src/audio/external.o(.rodata); BUILD_DIR/src/audio/port_eu.o(.rodata); -#if DEBUG - BUILD_DIR/src/debug/crash_screen_enhancement.o(.rodata); - BUILD_DIR/src/debug/debug.o(.rodata); - BUILD_DIR/src/os/sprintf.o(.rodata); -#endif + #if DEBUG + BUILD_DIR/src/debug/crash_screen_enhancement.o(.rodata); + BUILD_DIR/src/debug/debug.o(.rodata); + BUILD_DIR/src/os/sprintf.o(.rodata); + #endif BUILD_DIR/src/os/guRotateF.o(.rodata); BUILD_DIR/src/os/guPerspectiveF.o(.rodata); BUILD_DIR/asm/os/__osException.o(.rodata); @@ -336,8 +336,6 @@ SECTIONS BEGIN_NOLOAD(main) { BUILD_DIR/src/main.o(.bss); BUILD_DIR/src/code_800029B0.o(.bss); - BUILD_DIR/asm/bss_800029B0.o(.bss); - BUILD_DIR/src/profiler.o(.bss); BUILD_DIR/src/crash_screen.o(.bss); BUILD_DIR/src/code_80004740.o(.bss); @@ -350,11 +348,11 @@ SECTIONS BUILD_DIR/asm/bss_8001C4D0_1.o(.bss); BUILD_DIR/src/code_800AF9B0.o(.bss); BUILD_DIR/src/menus.o(.bss); -#if DEBUG - BUILD_DIR/src/debug/crash_screen_enhancement.o(.bss); - BUILD_DIR/src/debug/debug.o(.bss); - BUILD_DIR/src/os/sprintf.o(.bss); -#endif + #if DEBUG + BUILD_DIR/src/debug/crash_screen_enhancement.o(.bss); + BUILD_DIR/src/debug/debug.o(.bss); + BUILD_DIR/src/os/sprintf.o(.bss); + #endif BUILD_DIR/asm/bss_main_audio.o(.bss); BUILD_DIR/src/audio/port_eu.o(.bss); BUILD_DIR/asm/bss_main_audio2.o(.bss); @@ -415,8 +413,8 @@ SECTIONS BUILD_DIR/src/framebuffers.o(.bss*); BUILD_DIR/src/audio/synthesis.o(.bss*); BUILD_DIR/asm/bss_audio.o(.bss*); - . = ALIGN(0x8); BUILD_DIR/asm/bss_sptask_audio.o(.bss); + . = ALIGN(0x8); } END_NOLOAD(code_8028DF00) diff --git a/src/actors.c b/src/actors.c index 5571e3763..0a9044e73 100644 --- a/src/actors.c +++ b/src/actors.c @@ -2,6 +2,7 @@ #include #include #include "types.h" +#include "code_800029B0.h" #include #include #include diff --git a/src/actors.h b/src/actors.h index ad3e72873..eec3b7120 100644 --- a/src/actors.h +++ b/src/actors.h @@ -125,16 +125,9 @@ extern s8 D_802BA060[512]; // tlut 256 extern u16 D_802BA260; extern s32 gPlayerCountSelection1; -extern struct Actor gActorList[]; extern Player gPlayers[]; extern u16 gNumActors; -extern u16 gNumPermanentActors; -/** - * Incremented by one every time the player spawns a new shell actor. - * A cleaning routine runs once twenty-one shells have spawned. - */ -extern u16 gNumSpawnedShells; extern u16 D_802BA260; // Box Truck sub-type? extern Player *gPlayerOne; @@ -145,7 +138,6 @@ extern s32 gActiveScreenMode; extern u16 gNearestWaypointByPlayerId[]; extern Camera *camera1; -extern struct Actor gActorList[]; extern Gfx *gDisplayListHead; extern s32 gModeSelection; extern s16 gCurrentCourseId; @@ -154,13 +146,6 @@ extern u16 D_801637B8[]; extern Lights1 D_800DC610[]; extern u16 D_80150112; -extern u16 D_8015F700; -extern u16 D_8015F702; -extern f32 D_8015F704; -extern Vec3f D_8015F708; -extern f32 D_8015F8E4; - -extern f32 gCourseDirection; extern uintptr_t gSegmentTable[]; extern s16 gPlaceItemBoxes; @@ -256,16 +241,8 @@ extern Gfx toads_turnpike_dl_11[]; extern Mat4 D_801502C0; -extern s16 D_8015F6EC; -extern s16 D_8015F6EE; - extern s32 gGamestate; extern s32 gGamestate; -extern s32 D_8015F8DC; -extern s32 D_8015F8E0; -extern s32 D_801625EC; -extern s32 D_801625F0; -extern s32 D_801625F4; extern s32 D_80162DF8; extern Gfx d_course_mario_raceway_dl_piranha_plant[]; @@ -398,6 +375,4 @@ extern s8 D_802B8864[]; extern u16 D_800DC5BC; -extern Vec3f D_8015F8D0; - #endif // ACTORS_H diff --git a/src/actors_extended.c b/src/actors_extended.c index 19694ed95..ea768ce78 100644 --- a/src/actors_extended.c +++ b/src/actors_extended.c @@ -2,6 +2,7 @@ #include #include #include +#include "code_800029B0.h" #include "math_util.h" #include "memory.h" #include "waypoints.h" diff --git a/src/actors_extended.h b/src/actors_extended.h index 04f9557e2..569639bff 100644 --- a/src/actors_extended.h +++ b/src/actors_extended.h @@ -44,22 +44,6 @@ extern f32 D_802B9F68; extern s16 gPlayerBalloonCount[]; -extern struct Actor gActorList[]; -extern Player gPlayers[]; -extern Player *gPlayerOne; -extern Player *gPlayerTwo; -extern Player *gPlayerThree; -extern struct Controller gControllers[]; -extern struct Controller *gControllerOne; -extern struct Controller *gControllerSix; -extern struct Controller *gControllerSeven; -extern struct Controller *gControllerEight; - extern u16 gDemoMode; -extern s16 D_8015F6E8; -extern s16 D_8015F6EA; -extern s16 D_8015F6F0; -extern s16 D_8015F6F2; -extern s16 gPlayerPositionLUT[]; #endif // ACTORS_EXTENDED_H diff --git a/src/camera.c b/src/camera.c index a04fbca92..36e1d2ade 100644 --- a/src/camera.c +++ b/src/camera.c @@ -2,6 +2,7 @@ #include #include #include +#include "code_800029B0.h" #include "camera.h" #include "math_util.h" #include "memory.h" diff --git a/src/code_800029B0.c b/src/code_800029B0.c index 8578db235..c62675ad2 100644 --- a/src/code_800029B0.c +++ b/src/code_800029B0.c @@ -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; diff --git a/src/code_800029B0.h b/src/code_800029B0.h index f0b0528e8..eb8e9e940 100644 --- a/src/code_800029B0.h +++ b/src/code_800029B0.h @@ -1,6 +1,10 @@ #ifndef CODE_800029B0_H #define CODE_800029B0_H +#include +#include +#include + /* Function Prototypes */ void func_800029B0(void); @@ -14,4 +18,83 @@ extern struct UnkStruct_800DC5EC *D_800DC5F0; extern struct UnkStruct_800DC5EC *D_800DC5F4; extern struct UnkStruct_800DC5EC *D_800DC5F8; +extern mk64_surface_map_ram *gSurfaceMap; +extern u16 *D_8015F584; +extern u16 D_8015F588; +extern u16 D_8015F58A; +extern u32 D_8015F58C; + +extern Vec3f D_8015F590; +extern s32 D_8015F59C; +extern s32 D_8015F5A0; +extern s32 D_8015F5A4; + +extern Vtx *vtxBuffer[]; +extern s16 D_8015F6E8; +extern s16 D_8015F6EA; +extern s16 D_8015F6EC; +extern s16 D_8015F6EE; + +extern s16 D_8015F6F0; +extern s16 D_8015F6F2; +extern s16 D_8015F6F4; +extern s16 D_8015F6F6; +extern u16 D_8015F6F8; +extern s16 D_8015F6FA; +extern s16 D_8015F6FC; +extern u16 gNumSpawnedShells; + +extern u16 D_8015F700; +extern u16 D_8015F702; +extern f32 D_8015F704; +extern Vec3f D_8015F708; +extern UNUSED u32 D_8015F718[3]; +extern u32 gFreeMemorySize; +extern u32 gNextFreeMemoryAddress; +extern u32 gHeapEndPtr; + +extern u32 D_8015F730; +extern u32 gFreeMemoryResetAnchor; +extern Vec3f D_8015F738; +extern Vec3f D_8015F748; +extern Vec3f D_8015F758; +extern Vec3f D_8015F768; +extern Vec3f D_8015F778; + +extern f32 gCourseDirection; +extern s32 D_8015F788; + +extern s32 D_8015F790[]; +extern u16 D_8015F890; +extern u16 D_8015F892; +extern u16 D_8015F894; +extern f32 gTimePlayerLastTouchedFinishLine[]; + +extern u8 *pAppNmiBuffer; +extern u8 *gNmiUnknown1; +extern u8 *gNmiUnknown2; +extern u8 *gNmiUnknown3; +extern u8 *gNmiUnknown4; +extern u8 *gNmiUnknown5; +extern u8 *gNmiUnknown6; + +extern Vec3f D_8015F8D0; +extern s32 D_8015F8DC; + +extern s32 D_8015F8E0; +extern f32 D_8015F8E4; +extern f32 D_8015F8E8; +extern s16 gPlayerPositionLUT[]; // Player index at each position +extern u16 gNumPermanentActors; +extern struct Actor gActorList[]; + +extern UNUSED u8 D_80162578[]; +extern s16 gDebugPathCount; +extern s16 sIsController1Unplugged; +extern s32 D_801625EC; +extern s32 D_801625F0; +extern s32 D_801625F4; +extern s32 D_801625F8; +extern f32 D_801625FC; + #endif diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c index 098a997a8..09cca1626 100644 --- a/src/code_80005FD0.c +++ b/src/code_80005FD0.c @@ -2,6 +2,7 @@ #include #include #include "math_util.h" +#include "code_800029B0.h" #include "memory.h" #include "waypoints.h" #include "camera.h" @@ -1749,10 +1750,6 @@ extern f32 D_0D009418; extern f32 D_0D009568; extern f32 D_0D0096B8; extern f32 D_0D009808; -extern s16 D_8015F6E8; -extern s16 D_8015F6EA; -extern s16 D_8015F6F0; -extern s16 D_8015F6F2; extern f32 D_80162FA0; extern s16 D_80162FD0; extern s16 D_80162FF8; diff --git a/src/code_8001F980.c b/src/code_8001F980.c index 8850be251..195c53305 100644 --- a/src/code_8001F980.c +++ b/src/code_8001F980.c @@ -2,8 +2,9 @@ #include #include #include -#include "types.h" -#include "variables.h" +#include +#include +#include "code_800029B0.h" #include "math_util.h" #include "math_util_2.h" #include "main.h" diff --git a/src/code_8001F980.h b/src/code_8001F980.h index b8ef49f21..924c45a81 100644 --- a/src/code_8001F980.h +++ b/src/code_8001F980.h @@ -71,8 +71,6 @@ extern struct_D_802F1F80 *D_80164B04; extern u8 *D_80164B08; extern u8 *D_80164B0C; -extern u16 D_8015F894; - extern s32 D_80164A28; extern s16 D_80164AAE[]; extern s16 D_80164AB0[]; diff --git a/src/code_80057C60.c b/src/code_80057C60.c index 798f93755..c7d66732a 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -1,7 +1,8 @@ #include #include #include -#include +#include "main.h" +#include "code_800029B0.h" #include "memory.h" #include #include @@ -2326,7 +2327,6 @@ extern s16 gCurrentCourseId; extern s32 gModeSelection; extern Player* gPlayerOne; extern s32 gScreenModeSelection; -extern f32 gTimePlayerLastTouchedFinishLine[8]; void func_8005CB60(s32 playerId, s32 arg1) { diff --git a/src/code_80057C60.h b/src/code_80057C60.h index 4cd9d2069..fc8db3625 100644 --- a/src/code_80057C60.h +++ b/src/code_80057C60.h @@ -232,7 +232,6 @@ extern s32 gGamestate; extern u16 gDemoMode; extern s8 D_8018EDF3; extern s8 D_80165898; -extern u16 D_8015F894; extern Gfx D_0D0076F8[]; extern s8 D_801657E4; extern s8 D_801657E6; diff --git a/src/code_8008C1D0.c b/src/code_8008C1D0.c index f3fea63ae..f21c00aa8 100644 --- a/src/code_8008C1D0.c +++ b/src/code_8008C1D0.c @@ -1,9 +1,12 @@ #include #include -#include "types.h" +#include +#include +#include +#include +#include +#include "code_800029B0.h" #include "math_util.h" -#include "functions.h" -#include "variables.h" #include "kart_attributes.h" #include "waypoints.h" #include "code_80005FD0.h" @@ -13,8 +16,6 @@ #include "code_80057C60.h" #include "code_8008C1D0.h" #include "audio/external.h" -#include -#include UNUSED void func_unnamed(void) { diff --git a/src/code_8008C1D0.h b/src/code_8008C1D0.h index ab7fd8395..6a95409be 100644 --- a/src/code_8008C1D0.h +++ b/src/code_8008C1D0.h @@ -136,7 +136,6 @@ extern f32 D_800E37B0[]; extern f32 D_800E3790[]; extern f32 D_800E37D0[]; extern f32 D_800E37F0[]; -extern u16 D_8015F6F8; extern s16 D_80165190[4][8]; extern f32 D_80165280[]; extern s32 D_80165420[]; diff --git a/src/code_80091440.c b/src/code_80091440.c index c6bd58478..150aa5185 100644 --- a/src/code_80091440.c +++ b/src/code_80091440.c @@ -1,9 +1,10 @@ -#include "variables.h" +#include +#include +#include "main.h" +#include "code_800029B0.h" #include "code_80091440.h" #include "camera.h" #include "math_util.h" -#include "main.h" -#include #include "collision.h" void func_80091440(s8 arg0) { @@ -20,9 +21,7 @@ void func_800914A0(void) { } } -extern u32 D_8015F718[3]; - -void func_800914E0(void) { +UNUSED void func_800914E0(void) { UNUSED Vec3f sp64 = {0.0f, -20.0f, 150.0f}; UNUSED Vec3f sp58 = {0.0f, -6.0f, 4.0f}; uintptr_t segment = SEGMENT_NUMBER2(D_8015F718[0]); diff --git a/src/code_80091440.h b/src/code_80091440.h index 9f7ab32ec..ced30ef22 100644 --- a/src/code_80091440.h +++ b/src/code_80091440.h @@ -4,4 +4,3 @@ void func_80091440(s8); void func_800914A0(void); void func_800914E0(void); -extern u16 D_8015F6F8; diff --git a/src/code_80091750.c b/src/code_80091750.c index 82678c33e..54ba7c50a 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -3,7 +3,9 @@ #include #include #include - +#include +#include +#include "code_800029B0.h" #include "code_80091750.h" #include "code_80005FD0.h" #include "menus.h" @@ -12,8 +14,6 @@ #include "credits.h" #include "data_segment2.h" #include "code_800AF9B0.h" -#include "variables.h" -#include #include "code_80281780.h" #include "memory.h" #include "audio/external.h" @@ -1485,10 +1485,10 @@ void func_80091B78(void) { } } if (gMenuSelection == LOGO_INTRO_MENU) { - gNextFreeMemoryAddress = FreeMemoryResetAnchor; + gNextFreeMemoryAddress = gFreeMemoryResetAnchor; set_segment_base_addr(6, decompress_segments((u8 *) &_data_825800SegmentRomStart, (u8 *) &_course_mario_raceway_dl_mio0SegmentRomStart)); } - gNextFreeMemoryAddress = FreeMemoryResetAnchor; + gNextFreeMemoryAddress = gFreeMemoryResetAnchor; // Hypothetically, this should be a ptr... But only hypothetically. D_8018D9B0 = (intptr_t) get_next_available_memory_addr(0x000900B0); D_8018D9B4 = (uintptr_t *) get_next_available_memory_addr(0x0000CE00); diff --git a/src/code_80091750.h b/src/code_80091750.h index 02c4f8f76..1ee9ac692 100644 --- a/src/code_80091750.h +++ b/src/code_80091750.h @@ -341,8 +341,6 @@ extern s32 D_800DDB24; extern s16 D_80164478[]; extern u8 *D_8018D9BC; -extern s16 D_8015F892; - extern s8 D_800E86D0[]; extern s32 D_80165754; extern intptr_t D_8018D9B0; diff --git a/src/code_80280000.c b/src/code_80280000.c index 709488417..940339b10 100644 --- a/src/code_80280000.c +++ b/src/code_80280000.c @@ -4,9 +4,10 @@ #include #include -#include "main.h" -#include "variables.h" -#include "types.h" +#include +#include +#include +#include #include "camera.h" #include "memory.h" #include "math_util.h" @@ -134,7 +135,7 @@ void load_credits(void) { D_800DC5EC->screenStartY = 120; gScreenModeSelection = SCREEN_MODE_1P; gActiveScreenMode = SCREEN_MODE_1P; - gNextFreeMemoryAddress = FreeMemoryResetAnchor; + gNextFreeMemoryAddress = gFreeMemoryResetAnchor; load_course(gCurrentCourseId); D_8015F730 = gNextFreeMemoryAddress; set_segment_base_addr(0xB, (void *) decompress_segments((u8 *)&_data_821D10SegmentRomStart, (u8 *)&_data_825800SegmentRomStart)); diff --git a/src/code_80281780.c b/src/code_80281780.c index e0105aae1..e933c91cd 100644 --- a/src/code_80281780.c +++ b/src/code_80281780.c @@ -14,6 +14,7 @@ #include "code_80005FD0.h" #include "collision.h" #include "code_80281C40.h" +#include u8 defaultCharacterIds[] = { 1, 2, 3, 4, 5, 6, 7, 0 @@ -101,7 +102,7 @@ void load_ceremony_cutscene(void) { D_800DC5EC->screenStartX = 160; D_800DC5EC->screenStartY = 120; gScreenModeSelection = SCREEN_MODE_1P; - gNextFreeMemoryAddress = (s32) FreeMemoryResetAnchor; + gNextFreeMemoryAddress = (s32) gFreeMemoryResetAnchor; gActiveScreenMode = SCREEN_MODE_1P; gModeSelection = GRAND_PRIX; load_course(gCurrentCourseId); diff --git a/src/code_80281780.h b/src/code_80281780.h index 572a966f2..09f1b7530 100644 --- a/src/code_80281780.h +++ b/src/code_80281780.h @@ -31,29 +31,13 @@ extern s32 D_80287554; extern f32 D_801647A4; extern f32 D_80150130[]; -extern s32 FreeMemoryResetAnchor; - -extern s32 D_8015F730; - -extern f32 D_8015F8E4; -extern s16 D_8015F6EA; -extern s16 D_8015F6EE; -extern s16 D_8015F6F2; -extern s16 D_8015F6E8; -extern s16 D_8015F6EC; // s16 or u16? -extern s16 D_8015F6F0; -extern s32 D_8015F59C; extern s32 D_8015F5A0; -extern s32 D_8015F58C; extern s32 D_00821D10; extern s32 D_00825800; extern s32 D_00831DC0; extern s32 D_00835BA0; -extern s32 D_801625F8; -extern f32 D_801625FC; - extern struct Controller *gControllerOne; extern s8 gCharacterSelections[]; extern u16 gEnableDebugMode; diff --git a/src/collision.c b/src/collision.c index 1c8a4055f..921f003f1 100644 --- a/src/collision.c +++ b/src/collision.c @@ -9,6 +9,7 @@ #include "collision.h" #include "math_util.h" #include "variables.h" +#include "code_800029B0.h" #pragma intrinsic (sqrtf) @@ -1109,12 +1110,6 @@ s32 is_colliding_with_wall1(Collision *arg, f32 boundingBoxSize, f32 x1, f32 y1, return 1; } -extern u16 *D_8015F584; -extern s16 D_8015F6E8; -extern s16 D_8015F6EA; -extern s16 D_8015F6F0; -extern s16 D_8015F6F2; - u16 func_802AD950(Collision *collision, f32 boundingBoxSize, f32 x1, f32 y1, f32 z1, f32 x2, f32 y2, f32 z2) { s32 temp_v0_4; s32 temp_v1; @@ -1339,12 +1334,6 @@ u16 func_802ADDC8(Collision* collision, f32 boundingBoxSize, f32 posX, f32 posY, extern u8 D_8014F1110; -extern u16 *D_8015F584; -extern s16 D_8015F6E8; -extern s16 D_8015F6EA; -extern s16 D_8015F6F0; -extern s16 D_8015F6F2; - f32 func_802AE1C0(f32 posX, f32 posY, f32 posZ) { f32 temp_f0; s16 temp_f4; @@ -1405,18 +1394,6 @@ f32 func_802AE1C0(f32 posX, f32 posY, f32 posZ) { return phi_f20; } -extern s16 D_8015F6EC; - -extern s32 D_8015F59C; -extern s32 D_8015F5A0; -extern s32 D_8015F5A4; -extern s16 D_8015F6E8; -extern s16 D_8015F6EA; -extern s16 D_8015F6F0; -extern s16 D_8015F6F2; -extern s16 D_8015F6FA; -extern s16 D_8015F6FC; - void func_802AE434(Vtx *vtx1, Vtx *vtx2, Vtx *vtx3, s8 surfaceType, u16 sectionId) { mk64_surface_map_ram *tile = &gSurfaceMap[D_8015F588]; s16 x2; @@ -1839,12 +1816,6 @@ s32 is_triangle_intersecting_bounding_box(s16 minX, s16 maxX, s16 minZ, s16 maxZ return 0; } -extern u16 D_8015F58A; -extern s16 D_8015F6E8; -extern s16 D_8015F6EA; -extern s16 D_8015F6F0; -extern s16 D_8015F6F2; - /** * Appears to initialize some variables and struct members after * course displaylists have been parsed. @@ -1924,8 +1895,6 @@ void set_vertex_data_with_default_section_id(Gfx *gfx, s8 surfaceType) { find_and_set_vertex_data(gfx, surfaceType, 0xFF); } -extern s16 D_8015F6FA; -extern s16 D_8015F6FC; extern u32 D_8015F58C; /** diff --git a/src/collision.h b/src/collision.h index 26b362e94..37a8b8a75 100644 --- a/src/collision.h +++ b/src/collision.h @@ -31,8 +31,4 @@ void set_vertex_colours(u32, u32, s32, s8, u8, u8, u8); void find_vtx_and_set_colours(uintptr_t, s8, u8, u8, u8); void subtract_scaled_vector(Vec3f, f32, Vec3f); -extern Vtx *vtxBuffer[]; -extern s16 D_8015F6EE; -extern f32 D_8015F8E4; - #endif diff --git a/src/main.c b/src/main.c index 4e7c55588..b68c1b151 100644 --- a/src/main.c +++ b/src/main.c @@ -521,7 +521,7 @@ void setup_game_memory(void) { set_segment_base_addr(0xD, (void *) sp38); gNextFreeMemoryAddress += sp40; - FreeMemoryResetAnchor = gNextFreeMemoryAddress; + gFreeMemoryResetAnchor = gNextFreeMemoryAddress; } /** diff --git a/src/main.h b/src/main.h index e26ec7f9e..cf47c4d19 100644 --- a/src/main.h +++ b/src/main.h @@ -68,11 +68,34 @@ void thread4_audio(void*); extern struct GfxPool *gGfxPool; extern Gfx *gDisplayListHead; -extern struct Controller gControllers[8]; +extern struct Controller gControllers[]; extern struct Controller *gControllerOne; +extern struct Controller *gControllerTwo; +extern struct Controller *gControllerThree; +extern struct Controller *gControllerFour; +extern struct Controller *gControllerFive; +extern struct Controller *gControllerSix; +extern struct Controller *gControllerSeven; +extern struct Controller *gControllerEight; extern s32 D_800DC568; extern s32 D_800DC56C[]; + +extern Player gPlayers[]; +extern Player *gPlayerOne; +extern Player *gPlayerTwo; +extern Player *gPlayerThree; +extern Player *gPlayerFour; +extern Player *gPlayerFive; +extern Player *gPlayerSix; +extern Player *gPlayerSeven; +extern Player *gPlayerEight; + +extern Player *gPlayerOneCopy; +extern Player *gPlayerTwoCopy; +extern UNUSED Player *gPlayerThreeCopy; +extern UNUSED Player *gPlayerFourCopy; + extern u16 D_80152308; extern u16 *gPhysicalFramebuffers[]; @@ -82,21 +105,12 @@ extern OSMesgQueue gDmaMesgQueue; extern s32 gGamestateNext; extern s32 gActiveScreenMode; extern f32 gVBlankTimer; -extern u8 *pAppNmiBuffer; -extern u8 *gNmiUnknown1; -extern u8 *gNmiUnknown2; -extern u8 *gNmiUnknown3; -extern u8 *gNmiUnknown4; -extern u8 *gNmiUnknown5; -extern u8 *gNmiUnknown6; extern s32 gScreenModeSelection; extern OSContStatus gControllerStatuses[]; extern struct Controller *gControllerFive; extern u8 gControllerBits; -extern s16 sIsController1Unplugged; - extern u64 rspbootTextStart[], rspbootTextEnd[]; extern u64 gspF3DEXTextStart[], gspF3DEXTextEnd[]; extern u64 gspF3DLXTextStart[], gspF3DLXTextEnd[]; @@ -106,14 +120,11 @@ extern u64 gspF3DLXDataStart[]; extern u64 gGfxSPTaskOutputBuffer[]; extern u32 gGfxSPTaskOutputBufferSize; -extern u32 gNextFreeMemoryAddress; -extern s32 FreeMemoryResetAnchor; extern u8 _data_segment2SegmentRomStart[]; extern u8 _data_segment2SegmentRomEnd[]; extern u8 _common_texturesSegmentRomStart[]; extern u8 _common_texturesSegmentRomEnd[]; extern u8 _data_802BA370SegmentRomStart[]; -extern u32 gHeapEndPtr; extern u32 *D_801978D0; // Segment? Keeps track of segmented addresses? extern s16 gCurrentlyLoadedCourseId; @@ -123,9 +134,6 @@ extern s16 D_80164AF0; extern u16 gIsGamePaused; // 1 if the game is paused and 0 if the game is not paused extern u16 gIsInQuitToMenuTransition; - -extern s32 D_8015F788; -extern s16 gDebugPathCount; extern struct UnkStruct_800DC5EC *D_800DC5EC; extern u16 D_800DC5B0; diff --git a/src/memory.c b/src/memory.c index f98f4d297..5ca604110 100644 --- a/src/memory.c +++ b/src/memory.c @@ -6,6 +6,7 @@ #include #include #include "main.h" +#include "code_800029B0.h" #include "memory.h" #include "math_util.h" diff --git a/src/memory.h b/src/memory.h index 0cbd3bd84..3c471c973 100644 --- a/src/memory.h +++ b/src/memory.h @@ -93,9 +93,6 @@ u8 *load_course(s32); // main.c extern struct D_80150158 gD_80150158[]; extern s32 D_801502A0; -extern u32 gFreeMemorySize; -extern u32 gNextFreeMemoryAddress; -extern u32 gHeapEndPtr; extern u8 _other_texturesSegmentRomStart[]; diff --git a/src/menus.c b/src/menus.c index b9482d4ba..1475988c5 100644 --- a/src/menus.c +++ b/src/menus.c @@ -3,22 +3,21 @@ #include #include #include - #include "menus.h" +#include "main.h" +#include "code_800029B0.h" #include "actors.h" #include "audio/external.h" #include "code_80005FD0.h" #include "code_80091750.h" #include "code_800AF9B0.h" #include "code_800B45E0.h" -#include "main.h" #include "staff_ghosts.h" #include "save_data.h" #include /** Externs to be put into headers **/ -extern s16 D_8015F892; // bss unknown extern u32 D_800DC5AC; // data? from this file or another (main.c?)? extern void rmonPrintf(const char *, ...); // not in a libultra header? diff --git a/src/player_controller.c b/src/player_controller.c index e4902ca7a..3cf3b2a3a 100644 --- a/src/player_controller.c +++ b/src/player_controller.c @@ -2,7 +2,8 @@ #include #include #include -#include "variables.h" +#include +#include "code_800029B0.h" #include "kart_attributes.h" #include "memory.h" #include "math_util.h" diff --git a/src/podium_ceremony_actors.c b/src/podium_ceremony_actors.c index f7866e73c..56df5d88a 100644 --- a/src/podium_ceremony_actors.c +++ b/src/podium_ceremony_actors.c @@ -476,7 +476,7 @@ void podium_ceremony_loop(void) { } func_80281D00(); func_80281540(); -#if VARIABLE_WATCH_DEBUG_LIST +#if DVDL display_dvdl(); #endif gDPFullSync(gDisplayListHead++); diff --git a/src/podium_ceremony_actors.h b/src/podium_ceremony_actors.h index 0c6199d0b..28f060c01 100644 --- a/src/podium_ceremony_actors.h +++ b/src/podium_ceremony_actors.h @@ -7,7 +7,7 @@ enum ActorType { Initial, Balloon, FireworkCone, - FireworkBurst, + FireworkBurst }; // unk diff --git a/src/race_logic.c b/src/race_logic.c index 2d4fd7ded..4f94805a6 100644 --- a/src/race_logic.c +++ b/src/race_logic.c @@ -8,6 +8,7 @@ #include "camera.h" #include "waypoints.h" #include "staff_ghosts.h" +#include "main.h" #include "code_800029B0.h" #include "code_80057C60.h" #include "code_80071F00.h" @@ -23,33 +24,6 @@ #pragma intrinsic (sqrtf) -extern Player *gPlayerTwo; -extern Player *gPlayerThree; -extern Player *gPlayerFour; -extern Player *gPlayerOneCopy; -extern Player *gPlayerTwoCopy; - -extern struct Controller gControllers[]; -extern struct Controller *gControllerOne; -extern struct Controller *gControllerThree; -extern struct Controller *gControllerFour; -extern struct Controller *gControllerFive; -extern struct Controller *gControllerSix; -extern struct Controller *gControllerSeven; - -extern struct UnkStruct_800DC5EC D_8015F480[]; -extern struct UnkStruct_800DC5EC *D_800DC5EC; -extern struct UnkStruct_800DC5EC *D_800DC5F0; -extern struct UnkStruct_800DC5EC *D_800DC5F4; -extern struct UnkStruct_800DC5EC *D_800DC5F8; - -extern u8 *gNmiUnknown1; -extern u8 *gNmiUnknown2; -extern u8 *gNmiUnknown3; -extern u8 *gNmiUnknown4; -extern u8 *gNmiUnknown5; -extern u8 *gNmiUnknown6; - extern s16 gPlayerBalloonCount[]; extern s16 D_8016348C; extern s8 gCupCourseSelection; @@ -81,19 +55,14 @@ extern s32 gScreenModeSelection; extern s32 D_8018D2AC; extern s32 gActiveScreenMode; extern s16 gCurrentCourseId; -extern u16 D_8015F890; extern u32 D_800DC5AC; extern u16 gEnableDebugMode; extern s32 gPlayerWinningIndex; extern u16 gIsInQuitToMenuTransition, gQuitToMenuTransitionCounter; extern s32 D_802B91E0; -extern s16 D_8015F8F2[]; -extern f32 D_8015F8D8; extern f32 D_80150148; -extern u16 D_8015F894; - u16 D_802BA030; u16 D_802BA032; @@ -563,8 +532,8 @@ void start_race(void) { f32 func_8028EE8C(s32 arg0) { f32 temp_v0 = gPlayers[arg0].pos[2]; f32 temp_v1 = gPlayers[arg0].rotZ; - f32 temp_f14 = D_8015F8D8 - temp_v0; - f32 temp_f16 = temp_v1 - D_8015F8D8; + f32 temp_f14 = D_8015F8D0[2] - temp_v0; + f32 temp_f16 = temp_v1 - D_8015F8D0[2]; return gCourseTimer - ((0.01666666f * temp_f14) / (temp_f14 + temp_f16)); } @@ -631,7 +600,7 @@ void func_8028EF28(void) { *(gNmiUnknown1 + i) = 99; } D_800DC510 = 5; - i = D_8015F8F2[0]; + i = gPlayerPositionLUT[1]; gPlayers[i].statusEffects |= 0x200000; gPlayers[i].unk_000 |= PLAYER_CPU; func_800CA118((u8)i); @@ -645,7 +614,7 @@ void func_8028EF28(void) { } if (currentPosition == 1) { D_800DC510 = 5; - i = D_8015F8F2[1]; + i = gPlayerPositionLUT[2]; *(gNmiUnknown2 + i * 3 + 2) += 1; if (*(gNmiUnknown2 + i * 3 + 2) > 99) { *(gNmiUnknown2 + i * 3 + 2) = 99; @@ -664,7 +633,7 @@ void func_8028EF28(void) { } if (currentPosition == 2) { D_800DC510 = 5; - i = D_8015F8F2[2]; + i = gPlayerPositionLUT[3]; gPlayers[i].statusEffects |= 0x200000; gPlayers[i].unk_000 |= PLAYER_CPU; func_800CA118((u8)i); diff --git a/src/race_logic.h b/src/race_logic.h index a0acb3c64..0c6ab6eb7 100644 --- a/src/race_logic.h +++ b/src/race_logic.h @@ -37,10 +37,8 @@ void func_802903B0(void); void func_802909F0(void); void func_80290B14(void); -extern f32 gTimePlayerLastTouchedFinishLine[]; extern f32 gLapCompletionPercentByPlayerId[]; extern s32 gGPCurrentRaceRankByPlayerId[]; // D_801643B8 (position for each player) -extern s16 gPlayerPositionLUT[]; // D_8015F8F0 (player index at each position) extern u16 D_80162DD6; #endif diff --git a/src/render_courses.c b/src/render_courses.c index abbe96e8a..90a326720 100644 --- a/src/render_courses.c +++ b/src/render_courses.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include "main.h" diff --git a/src/render_courses.h b/src/render_courses.h index 617d9a5f9..f58dec6bb 100644 --- a/src/render_courses.h +++ b/src/render_courses.h @@ -38,7 +38,6 @@ void func_802969F8(void); extern Gfx *gDisplayListHead; extern s16 gCurrentCourseId; -extern u32 gNextFreeMemoryAddress; extern s32 gActiveScreenMode; extern u16 sRenderedFramebuffer; @@ -47,19 +46,14 @@ extern uintptr_t gSegmentTable[]; extern Player gPlayers[]; extern s32 D_8015F59C; -extern s32 D_8015F5A0; extern s32 D_800DC5DC; extern s32 D_800DC5E0; extern s32 D_802B87C4; extern s32 D_802B87C8; extern s32 D_802B87CC; -extern s32 D_8015F5A4; extern s32 gScreenModeSelection; extern Gfx mario_raceway_dls[]; -extern s32 D_801625EC; -extern s32 D_801625F0; -extern s32 D_801625F4; extern Gfx choco_mountain_dls[]; extern s32 D_802B87BC; extern Gfx bowsers_castle_dls[]; @@ -70,9 +64,6 @@ extern u8 frappe_snowland_dls[]; extern Gfx d_course_koopa_troopa_beach_dl_list1[]; extern Gfx royal_raceway_dls[]; extern Gfx luigi_raceway_dls[]; -extern s32 D_801625EC; -extern s32 D_801625F0; -extern s32 D_801625F4; extern Gfx D_06013FF8[]; extern Gfx D_06014060[]; @@ -110,21 +101,7 @@ extern Gfx D_06022E00[]; extern Gfx D_06023930[]; extern Gfx D_sherbet_land_06000000[]; extern u16 D_800DC518; -extern u16 D_8015F58A; -extern u16 D_8015F700; -extern u16 D_8015F702; -extern f32 D_8015F8E8; -extern f32 D_8015F8E4; - -extern s16 D_8015F6EA; -extern s16 D_8015F6F2; -extern s16 D_8015F6EE; -extern u16 D_8015F588; -extern s16 D_8015F6F4; -extern s16 D_8015F6F6; -extern s16 D_8015F6F4; -extern s16 D_8015F6F6; extern Gfx D_060072D0[]; extern Gfx D_060079A0[]; extern Gfx D_060093D8[]; @@ -142,13 +119,10 @@ extern Gfx D_06018240[]; extern Gfx D_06018FD8[]; extern Gfx D_06023070[]; extern Gfx D_06023B68[]; -extern Vec3f D_8015F590; extern u16 D_800DC5BC; /* unable to generate initializer */ extern s32 gGamestate; extern s32 gModeSelection; extern u16 gNumActors; -extern s32 D_8015F58C; -extern mk64_surface_map_ram *gSurfaceMap; extern s32 gCCSelection; #endif diff --git a/src/skybox_and_splitscreen.c b/src/skybox_and_splitscreen.c index 205d5e66e..91baf858b 100644 --- a/src/skybox_and_splitscreen.c +++ b/src/skybox_and_splitscreen.c @@ -2,6 +2,7 @@ #include #include #include +#include "code_800029B0.h" #include #include #include diff --git a/src/skybox_and_splitscreen.h b/src/skybox_and_splitscreen.h index 683b97bea..d7d6d1be8 100644 --- a/src/skybox_and_splitscreen.h +++ b/src/skybox_and_splitscreen.h @@ -71,9 +71,6 @@ extern u16 sRenderingFramebuffer; extern s32 D_800DC5D0; extern s32 D_800DC5D4; extern s32 D_800DC5D8; -extern s32 D_801625EC; -extern s32 D_801625F0; -extern s32 D_801625F4; extern u16 D_800DC5BC; extern struct GfxPool *gGfxPool; extern f32 D_80150130[]; @@ -85,9 +82,7 @@ extern f32 D_80150150; extern u16 D_800DC5C8; extern u16 D_800DC5B8; -extern s32 D_8015F788; extern struct UnkStruct_800DC5EC D_8015F480[]; -extern s32 D_8015F790[]; extern struct Controller gControllers[]; extern Player gPlayers[]; diff --git a/src/spawn_players.c b/src/spawn_players.c index 20f56bb7f..21cc01ef4 100644 --- a/src/spawn_players.c +++ b/src/spawn_players.c @@ -1,5 +1,6 @@ -#include "global.h" +#include #include +#include "code_800029B0.h" #include "kart_attributes.h" #include "memory.h" #include "waypoints.h" diff --git a/src/staff_ghosts.c b/src/staff_ghosts.c index 8f621141a..6d67e9336 100644 --- a/src/staff_ghosts.c +++ b/src/staff_ghosts.c @@ -3,11 +3,12 @@ #include #include #include +#include +#include "code_800029B0.h" #include "framebuffers.h" #include "code_800B45E0.h" #include "staff_ghosts.h" #include "code_80091750.h" -#include "functions.h" extern s32 mio0encode(s32 input, s32, s32); extern s32 func_80040174(void *, s32, s32); @@ -62,7 +63,6 @@ extern u8 _kart_texturesSegmentRomStart; extern s16 gCurrentCourseId; extern s32 gModeSelection; extern s32 gActiveScreenMode; -extern u16 D_8015F890; extern s32 gLapCountByPlayerId[]; extern s32 D_8018CA78;