diff --git a/include/variables.h b/include/variables.h index 4504387b2..65889646a 100644 --- a/include/variables.h +++ b/include/variables.h @@ -6,21 +6,11 @@ #include "common_structs.h" extern s8 gCharacterIdByGPOverallRank[8]; // D_8018D9D0 -extern s8 gCharacterGridSelections[4]; // D_8018EDE4 -extern s8 gCharacterSelections[4]; // D_800E86A8 -extern s8 gControllerPakMenuSelection; // D_8018EDF0 -extern s8 gControllerPakSelectedTableRow; // D_800E86C0 extern f32 gCourseCompletionPercentByPlayerId[8]; // D_801644D0 extern f32 gCourseCompletionPercentByRank[8]; // D_80162FD8 -extern s8 gCourseRecordsMenuSelection; // D_8018EDF8 -extern const s16 gCupCourseOrder[NUM_CUPS][NUM_COURSES_PER_CUP]; // D_800F2BB4 -extern s8 gCupCourseSelection; // D_8018EE0B extern char *gCupNames[]; // D_800E7500 -extern s8 gCupSelection; // D_8018EE09 extern s16 gCurrentCourseId; // D_800DC5A0 -extern s8 gDebugMenuSelection; // D_8018EDEF - extern s8 gGPPointsByCharacterId[8]; // D_8018D9C8 extern s16 gGPCurrentRacePlayerIdByRank[8]; // D_80164360 @@ -31,22 +21,15 @@ extern s32 gIsMirrorMode; // D_800DC604 extern f32 gLapCompletionPercentByPlayerId[8]; // D_801644A8 extern s32 gLapCountByPlayerId[8]; // D_80164390 -extern s32 gMenuTimingCounter; // D_8018EE00 extern s32 gMenuSelection; // D_800E86A0 -// Indicates the ID of the next title screen demo that will be played -extern s8 gNextDemoId; // D_800E86BC - // Maps course IDs (as defined in the COURSES enum) to an index in a given cup's track order extern const u8 gPerCupIndexByCourseId[]; // D_800EFD50 extern s32 gPlayerIsThrottleActive[]; // D_801653E0 extern s32 gGPCurrentRaceRankByPlayerId[]; // D_801643B8 -extern u8 gSoundMode; // D_8018EDF2 extern char *gSoundModeNames[NUM_SOUND_MODES]; // D_800E7710 -extern s8 gTimeTrialDataCourseIndex; // D_8018EDF7 - extern struct_8018CA70_entry D_8018CA70[]; extern Mtx D_80183D60[]; @@ -120,6 +103,4 @@ extern s8 D_801658FE; extern s32 gMatrixHudCount; extern s32 D_8018D900[]; -extern s8 D_8018EDEC; - #endif diff --git a/src/camera.c b/src/camera.c index f3dd6cdf4..eba818797 100644 --- a/src/camera.c +++ b/src/camera.c @@ -310,16 +310,16 @@ void func_8001CCEC(Player *player, Camera *camera, Vec3f arg2, f32 *arg3, f32 *a move_f32_towards(&D_80164A38[index], 20.0f, 0.1f); move_f32_towards(&D_80164A48[index], 1.5f, 0.1f); D_80164A78[index] += 0.1; - if (D_80164A78[index] >= 1) + if (D_80164A78[index] >= 1) D_80164A78[index] = 1; - + } else { move_f32_towards(&D_80164A38[index], 0, 0.1f); move_f32_towards(&D_80164A48[index], 0, 0.1f); D_80164A78[index] -= 0.1; - if (D_800DDB30[gActiveScreenMode] >= D_80164A78[index]) + if (D_800DDB30[gActiveScreenMode] >= D_80164A78[index]) D_80164A78[index] = D_800DDB30[gActiveScreenMode]; - + } if ((player->unk_0CA & 0x100) == 0x100) { switch(gActiveScreenMode) { @@ -364,7 +364,7 @@ void func_8001CCEC(Player *player, Camera *camera, Vec3f arg2, f32 *arg3, f32 *a arg2[0] += (x - camera->lookAt[0]) * D_80164A78[index]; arg2[2] += ((z - camera->lookAt[2]) * D_80164A78[index]); - + if ((((player->unk_094 / 18) * 216) <= 5.0f) && ((player->unk_0BC & 2) == 2)) { arg2[1] += ((y - camera->lookAt[1]) * 0.02); } else { @@ -383,7 +383,7 @@ void func_8001CCEC(Player *player, Camera *camera, Vec3f arg2, f32 *arg3, f32 *a *arg3 = camera->pos[0] + ((x - camera->pos[0]) * D_80164A78[index]); *arg5 = camera->pos[2] + ((z - camera->pos[2]) * D_80164A78[index]); - + if ((((player->unk_094 / 18) * 216) <= 5.0f) && ((player->unk_0BC & 2) == 2)) { *arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.01)); } else { @@ -541,19 +541,19 @@ void func_8001D944(Player *player, Camera *camera, Vec3f arg2, f32 *arg3, f32 *a move_f32_towards(&D_80164A38[index], 20.0f, 0.1f); move_f32_towards(&D_80164A48[index], 1.5f, 0.1f); D_80164A78[index] += 0.1; - if (D_80164A78[index] >= 1) + if (D_80164A78[index] >= 1) D_80164A78[index] = 1; - + } else { move_f32_towards(&D_80164A38[index], 0, 0.1f); move_f32_towards(&D_80164A48[index], 0, 0.1f); D_80164A78[index] -= 0.1; - if (D_800DDB30[gActiveScreenMode] >= D_80164A78[index]) + if (D_800DDB30[gActiveScreenMode] >= D_80164A78[index]) D_80164A78[index] = D_800DDB30[gActiveScreenMode]; - + } if ((player->unk_0CA & 0x100) == 0x100) { - + move_f32_towards(&D_80164A90[index], 15, 0.02f); move_f32_towards(&D_80164AA0[index], 20, 0.02f); } else { @@ -581,7 +581,7 @@ void func_8001D944(Player *player, Camera *camera, Vec3f arg2, f32 *arg3, f32 *a arg2[0] += (x - camera->lookAt[0]) * D_80164A78[index]; arg2[2] += ((z - camera->lookAt[2]) * D_80164A78[index]); - + if ((((player->unk_094 / 18) * 216) <= 5.0f) && ((player->unk_0BC & 2) == 2)) { arg2[1] += ((y - camera->lookAt[1]) * 0.02); } else { @@ -600,7 +600,7 @@ void func_8001D944(Player *player, Camera *camera, Vec3f arg2, f32 *arg3, f32 *a *arg3 = camera->pos[0] + ((x - camera->pos[0]) * D_80164A78[index]); *arg5 = camera->pos[2] + ((z - camera->pos[2]) * D_80164A78[index]); - + if ((((player->unk_094 / 18) * 216) <= 5.0f) && ((player->unk_0BC & 2) == 2)) { *arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.01)); } else { @@ -733,9 +733,9 @@ void func_8001E45C(Camera *camera, Player *player, s8 arg2) { var_a3 = (player->unk_078 / 2) + 0xA5; } } - if (((player->unk_0BC & 0x80) == 0x80) || ((player->unk_0BC & 0x40) == 0x40) || - ((player->unk_0BC & 0x4000) == 0x4000) || ((player->unk_0BC & 0x80000) == 0x80000) || - ((player->unk_0BC & 0x800000) == 0x800000) || (((player->unk_0BC & 0x20) == 0x20) && (player->unk_078 != 0)) || + if (((player->unk_0BC & 0x80) == 0x80) || ((player->unk_0BC & 0x40) == 0x40) || + ((player->unk_0BC & 0x4000) == 0x4000) || ((player->unk_0BC & 0x80000) == 0x80000) || + ((player->unk_0BC & 0x800000) == 0x800000) || (((player->unk_0BC & 0x20) == 0x20) && (player->unk_078 != 0)) || (player->unk_110.unk3C[0] <= 0.0f) || (player->unk_110.unk3C[1] <= 0.0f) || ((player->unk_0BC & 0x20000) == 0x20000)) { func_8001CCEC(player, camera, sp64, &sp84, &sp80, &sp7C, &sp58, (s32) camera->unk_2C, (s32) arg2); } else { @@ -862,9 +862,9 @@ void func_8001EA0C(Camera *camera, Player *player, s8 arg2) { var_a3 = (player->unk_078 / 2) + 0xA5; } } - if (((player->unk_0BC & 0x80) == 0x80) || ((player->unk_0BC & 0x40) == 0x40) || - ((player->unk_0BC & 0x4000) == 0x4000) || ((player->unk_0BC & 0x80000) == 0x80000) || - ((player->unk_0BC & 0x800000) == 0x800000) || (((player->unk_0BC & 0x20) == 0x20) && (player->unk_078 != 0)) || + if (((player->unk_0BC & 0x80) == 0x80) || ((player->unk_0BC & 0x40) == 0x40) || + ((player->unk_0BC & 0x4000) == 0x4000) || ((player->unk_0BC & 0x80000) == 0x80000) || + ((player->unk_0BC & 0x800000) == 0x800000) || (((player->unk_0BC & 0x20) == 0x20) && (player->unk_078 != 0)) || (player->unk_110.unk3C[0] <= 0.0f) || (player->unk_110.unk3C[1] <= 0.0f) || ((player->unk_0BC & 0x20000) == 0x20000)) { func_8001D944(player, camera, sp64, &sp84, &sp80, &sp7C, &sp58, (s32) camera->unk_2C, (s32) arg2); } else { diff --git a/src/camera.h b/src/camera.h index 7b6e250c7..651148825 100644 --- a/src/camera.h +++ b/src/camera.h @@ -68,9 +68,19 @@ void func_8001E0C4(Camera*, Player*, s8); void func_8001E45C(Camera*, Player*, s8); void func_8001E8E8(Camera*, Player*, s8); void func_8001EA0C(Camera*, Player*, s8); -void func_8001F87C(s32); void func_8001EE98(Player*, Camera*, s8); void func_8001F394(Player*, f32*); +void func_8001F87C(s32); + +extern f32 D_800DDB30[]; + +extern Camera cameras[]; +extern Camera *camera1; +extern Camera *camera2; +extern Camera *camera3; +extern Camera *camera4; + +// end of camera.c variables extern s8 D_80164A89; @@ -81,12 +91,5 @@ extern f32 D_80164A30; extern f32 D_80164A90[]; extern f32 D_80164AA0[]; -extern f32 D_800DDB30[]; - -extern Camera cameras[]; -extern Camera *camera1; -extern Camera *camera2; -extern Camera *camera3; -extern Camera *camera4; #endif diff --git a/src/code_800029B0.c b/src/code_800029B0.c index 76a10557b..cbc1e1cf4 100644 --- a/src/code_800029B0.c +++ b/src/code_800029B0.c @@ -21,6 +21,7 @@ #include "render_courses.h" #include "main.h" #include "courses/all_course_data.h" +#include "menus.h" extern u16 D_800DC5A8; @@ -29,12 +30,6 @@ extern s16 D_802BA048; extern s16 gCurrentlyLoadedCourseId; -extern s8 D_8018EDF3; - -extern s8 gCupSelection; - -extern Vec3f D_802B91C8; - extern struct ActorSpawnData d_course_moo_moo_farm_tree_spawn[]; diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c index 7d2375b65..96452781b 100644 --- a/src/code_80005FD0.c +++ b/src/code_80005FD0.c @@ -23,7 +23,7 @@ #include "common_textures.h" #include "common_structs.h" #include "main.h" - +#include "menus.h" extern UnkCommonTextureStruct0 *D_800DC720[]; diff --git a/src/code_80005FD0.h b/src/code_80005FD0.h index 15f8453d3..d0ea147e4 100644 --- a/src/code_80005FD0.h +++ b/src/code_80005FD0.h @@ -152,8 +152,6 @@ void func_8001C42C(void); /* This is where I'd put my static data, if I had any */ // 0 or 1, only 1 when when in extra (mirror) mode extern s16 D_8016347A; -// Might belong in menus.h? -extern s8 D_8018EDF3; // Suspected to be the "width" of each wayPoint. See data_0DD0A0_1.s extern f32 D_800DCA4C[]; diff --git a/src/code_80057C60.c b/src/code_80057C60.c index ed282f32e..f134a5885 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -23,6 +23,7 @@ #include "audio/external.h" #include "objects.h" #include "bomb_kart.h" +#include "menus.h" // WARNING: this macro is undef'd at the end of this file diff --git a/src/code_80057C60.h b/src/code_80057C60.h index 52371bbe4..e290df449 100644 --- a/src/code_80057C60.h +++ b/src/code_80057C60.h @@ -228,7 +228,6 @@ void func_8006E940(Player*, s8, s8); extern s8 D_801657B2; extern s8 D_801657C8; extern s32 D_8018D22C; -extern s8 D_8018EDF3; extern s8 D_80165898; extern Gfx D_0D0076F8[]; extern s8 D_801657E4; diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index db7e35990..a2de012b2 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -14,6 +14,7 @@ #include "audio/external.h" #include "courses/all_course_data.h" #include "main.h" +#include "menus.h" void func_8006E9C0(void) { diff --git a/src/code_8006E9C0.h b/src/code_8006E9C0.h index 1cb7365f1..e6083801c 100644 --- a/src/code_8006E9C0.h +++ b/src/code_8006E9C0.h @@ -34,7 +34,6 @@ extern s16 D_80165730; extern s16 D_80165740; extern s16 D_80165748; extern s32 D_80183D5C; -extern s8 D_8018EDF3; extern u8 *D_8018D1E0; extern intptr_t D_8018D9B0; diff --git a/src/code_80071F00.c b/src/code_80071F00.c index 9e8c4bf5c..308652749 100644 --- a/src/code_80071F00.c +++ b/src/code_80071F00.c @@ -27,6 +27,7 @@ #include "code_80091750.h" #include "podium_ceremony_actors.h" #include "courses/all_course_data.h" +#include "menus.h" // TODO: unused? f32 D_800E43B0[] = { diff --git a/src/code_80071F00.h b/src/code_80071F00.h index 0bd3d2104..b835617e7 100644 --- a/src/code_80071F00.h +++ b/src/code_80071F00.h @@ -371,8 +371,6 @@ void func_80086D80(void); s32 osPiStartDma(OSIoMesg *mb, s32 priority, s32 direction, uintptr_t devAddr, void *vAddr, size_t nbytes, OSMesgQueue *mq); s32 osRecvMesg(OSMesgQueue*, OSMesg*, s32); -extern s8 D_8018EDF3; - // from other_textures.s extern u8 D_0F0D0E50[]; // gTextureGhosts diff --git a/src/code_80091750.h b/src/code_80091750.h index 8b24d687c..0fc935208 100644 --- a/src/code_80091750.h +++ b/src/code_80091750.h @@ -348,7 +348,6 @@ extern s32 D_800DDB24; extern s16 D_80164478[]; extern u8 *D_8018D9BC; -extern s8 D_800E86D0[]; extern s32 D_80165754; extern intptr_t D_8018D9B0; extern s8 D_8018D9D8; @@ -370,15 +369,6 @@ extern s32 D_8018E850[]; extern s32 D_8018E854; extern s32 D_8018E858[]; extern s32 D_8018E85C; -extern s32 D_8018EDC0; -extern f32 D_8018EDC4; -extern f32 D_8018EDC8; -extern f32 D_8018EDCC; -extern f32 D_8018EDD0; -extern f32 D_8018EDD4; -extern f32 D_8018EDD8; -extern f32 D_8018EDDC; -extern s8 D_8018EE08; extern s32 D_8018E7B8[]; extern s32 D_8018E7E0; diff --git a/src/code_800AF9B0.h b/src/code_800AF9B0.h index 1e801e680..e42d0fe63 100644 --- a/src/code_800AF9B0.h +++ b/src/code_800AF9B0.h @@ -12,6 +12,5 @@ void func_800B0004(void); extern s16 gCurrentCourseId; // D_800DC5A0 extern s32 gIsMirrorMode; // D_800DC5F4 -extern s32 D_800E86A4; #endif /* CODE_800AF9B0_H */ diff --git a/src/code_800B45E0.h b/src/code_800B45E0.h index 9ec6ebe32..c920fc789 100644 --- a/src/code_800B45E0.h +++ b/src/code_800B45E0.h @@ -92,7 +92,6 @@ extern u32* D_800DC714; extern u16 gCompanyCode; extern u32 gGameCode; // osPfs gamecode extern s8 gControllerPak1State; // Current state of Controller Pak 1 -extern struct_8018EE10_entry D_8018EE10[]; extern struct_8018EE10_entry *D_8018D9C0; extern s8 sControllerPak2State; // Current state of the Controller Pak 2 @@ -111,12 +110,6 @@ extern s32 gControllerPak1MaxWriteableFiles; extern s8 D_8018EDE5; extern s8 D_8018EDE6; extern s8 D_8018EDE7; -extern u8 gSoundMode; // D_8018EDF2 -extern s8 gTimeTrialDataCourseIndex; // D_8018EDF7 -extern s8 gCourseRecordsMenuSelection; // D_8018EDF8 -extern s32 gMenuTimingCounter; // D_8018EE00 -extern s8 gCupSelection; // D_8018EE09 -extern s8 gCupCourseSelection; // D_8018EE0B #endif /* CODE_800B045E0_H */ diff --git a/src/ending/code_80281780.c b/src/ending/code_80281780.c index b569b4c73..2b3dfe219 100644 --- a/src/ending/code_80281780.c +++ b/src/ending/code_80281780.c @@ -17,6 +17,7 @@ #include "code_80281C40.h" #include "code_800029B0.h" #include "main.h" +#include "menus.h" u8 defaultCharacterIds[] = { 1, 2, 3, 4, 5, 6, 7, 0 diff --git a/src/ending/code_80281780.h b/src/ending/code_80281780.h index 0d511a922..1b60d225c 100644 --- a/src/ending/code_80281780.h +++ b/src/ending/code_80281780.h @@ -34,11 +34,8 @@ extern s32 D_00825800; extern s32 D_00831DC0; extern s32 D_00835BA0; -extern s8 gCharacterSelections[]; - extern u8 defaultCharacterIds[]; extern s8 gGPOverallRanks[8]; -extern s8 D_8018EDF3; extern u8 *_data_821D10SegmentRomStart; extern u8 *_data_825800SegmentRomStart; diff --git a/src/kart_dma.c b/src/kart_dma.c index ed26ebc8d..f8cc54993 100644 --- a/src/kart_dma.c +++ b/src/kart_dma.c @@ -1684,9 +1684,9 @@ u8 *gKartPalettes[] = { /** * @brief Place DMA mio0 compressed character textures in a buffer. * Later, this data becomes decompressed. - * + * * The player struct tracks the texture indices to load. - * + * * @param player * @param arg1 Appears to be character index; 0-7. * @param arg2 Rom buffer index appears to always be 0-3. Sometimes subtracted by 2. @@ -1730,7 +1730,7 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) { osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]); osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, (uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], &D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId], &gDmaMesgQueue); } - } else if (((temp & 0x400) == 0x400) || ((temp & 0x01000000) == 0x01000000) || + } else if (((temp & 0x400) == 0x400) || ((temp & 0x01000000) == 0x01000000) || ((temp & 0x02000000) == 0x02000000) || ((temp & 0x10000) == 0x10000)) { osInvalDCache(&D_802DFB80[arg4][arg3][arg1], 0x780); diff --git a/src/kart_dma.h b/src/kart_dma.h index 1cb8b0c91..05ef39da9 100644 --- a/src/kart_dma.h +++ b/src/kart_dma.h @@ -16,7 +16,165 @@ void func_80027C74(Player*, s32, void*, u16); extern u16 D_800DDEB0[]; -extern u8 _kart_texturesSegmentRomStart[]; +extern u8 *gKartMarioGroup0[]; +extern u8 *gKartMarioGroup1[]; +extern u8 *gKartMarioGroup2[]; +extern u8 *gKartMarioGroup3[]; +extern u8 *gKartMarioGroup4[]; +extern u8 *gKartMarioGroup5[]; +extern u8 *gKartMarioGroup6[]; +extern u8 *gKartMarioGroup7[]; +extern u8 *gKartMarioGroup8[]; + +extern u8 *gKartMarioGroup9[]; +extern u8 *gKartMarioGroup10[]; +extern u8 *gKartMarioGroup11[]; +extern u8 *gKartMarioGroup12[]; +extern u8 *gKartMarioGroup13[]; +extern u8 *gKartMarioGroup14[]; +extern u8 *gKartMarioGroup15[]; +extern u8 *gKartMarioGroup16[]; +extern u8 *gKartMarioGroup17[]; + +extern u8 *gKartToadGroup0[]; +extern u8 *gKartToadGroup1[]; +extern u8 *gKartToadGroup2[]; +extern u8 *gKartToadGroup3[]; +extern u8 *gKartToadGroup4[]; +extern u8 *gKartToadGroup5[]; +extern u8 *gKartToadGroup6[]; +extern u8 *gKartToadGroup7[]; +extern u8 *gKartToadGroup8[]; + +extern u8 *gKartToadGroup9[]; +extern u8 *gKartToadGroup10[]; +extern u8 *gKartToadGroup11[]; +extern u8 *gKartToadGroup12[]; +extern u8 *gKartToadGroup13[]; +extern u8 *gKartToadGroup14[]; +extern u8 *gKartToadGroup15[]; +extern u8 *gKartToadGroup16[]; +extern u8 *gKartToadGroup17[]; + +extern u8 *gKartLuigiGroup0[]; +extern u8 *gKartLuigiGroup1[]; +extern u8 *gKartLuigiGroup2[]; +extern u8 *gKartLuigiGroup3[]; +extern u8 *gKartLuigiGroup4[]; +extern u8 *gKartLuigiGroup5[]; +extern u8 *gKartLuigiGroup6[]; +extern u8 *gKartLuigiGroup7[]; +extern u8 *gKartLuigiGroup8[]; + +extern u8 *gKartLuigiGroup9[]; +extern u8 *gKartLuigiGroup10[]; +extern u8 *gKartLuigiGroup11[]; +extern u8 *gKartLuigiGroup12[]; +extern u8 *gKartLuigiGroup13[]; +extern u8 *gKartLuigiGroup14[]; +extern u8 *gKartLuigiGroup15[]; +extern u8 *gKartLuigiGroup16[]; +extern u8 *gKartLuigiGroup17[]; + +extern u8 *gKartYoshiGroup0[]; +extern u8 *gKartYoshiGroup1[]; +extern u8 *gKartYoshiGroup2[]; +extern u8 *gKartYoshiGroup3[]; +extern u8 *gKartYoshiGroup4[]; +extern u8 *gKartYoshiGroup5[]; +extern u8 *gKartYoshiGroup6[]; +extern u8 *gKartYoshiGroup7[]; +extern u8 *gKartYoshiGroup8[]; + +extern u8 *gKartYoshiGroup9[]; +extern u8 *gKartYoshiGroup10[]; +extern u8 *gKartYoshiGroup11[]; +extern u8 *gKartYoshiGroup12[]; +extern u8 *gKartYoshiGroup13[]; +extern u8 *gKartYoshiGroup14[]; +extern u8 *gKartYoshiGroup15[]; +extern u8 *gKartYoshiGroup16[]; +extern u8 *gKartYoshiGroup17[]; + +extern u8 *gKartDKGroup0[]; +extern u8 *gKartDKGroup1[]; +extern u8 *gKartDKGroup2[]; +extern u8 *gKartDKGroup3[]; +extern u8 *gKartDKGroup4[]; +extern u8 *gKartDKGroup5[]; +extern u8 *gKartDKGroup6[]; +extern u8 *gKartDKGroup7[]; +extern u8 *gKartDKGroup8[]; + +extern u8 *gKartDKGroup9[]; +extern u8 *gKartDKGroup10[]; +extern u8 *gKartDKGroup11[]; +extern u8 *gKartDKGroup12[]; +extern u8 *gKartDKGroup13[]; +extern u8 *gKartDKGroup14[]; +extern u8 *gKartDKGroup15[]; +extern u8 *gKartDKGroup16[]; +extern u8 *gKartDKGroup17[]; + +extern u8 *gKartBowserGroup0[]; +extern u8 *gKartBowserGroup1[]; +extern u8 *gKartBowserGroup2[]; +extern u8 *gKartBowserGroup3[]; +extern u8 *gKartBowserGroup4[]; +extern u8 *gKartBowserGroup5[]; +extern u8 *gKartBowserGroup6[]; +extern u8 *gKartBowserGroup7[]; +extern u8 *gKartBowserGroup8[]; + +extern u8 *gKartBowserGroup9[]; +extern u8 *gKartBowserGroup10[]; +extern u8 *gKartBowserGroup11[]; +extern u8 *gKartBowserGroup12[]; +extern u8 *gKartBowserGroup13[]; +extern u8 *gKartBowserGroup14[]; +extern u8 *gKartBowserGroup15[]; +extern u8 *gKartBowserGroup16[]; +extern u8 *gKartBowserGroup17[]; + +extern u8 *gKartPeachGroup0[]; +extern u8 *gKartPeachGroup1[]; +extern u8 *gKartPeachGroup2[]; +extern u8 *gKartPeachGroup3[]; +extern u8 *gKartPeachGroup4[]; +extern u8 *gKartPeachGroup5[]; +extern u8 *gKartPeachGroup6[]; +extern u8 *gKartPeachGroup7[]; +extern u8 *gKartPeachGroup8[]; + +extern u8 *gKartPeachGroup9[]; +extern u8 *gKartPeachGroup10[]; +extern u8 *gKartPeachGroup11[]; +extern u8 *gKartPeachGroup12[]; +extern u8 *gKartPeachGroup13[]; +extern u8 *gKartPeachGroup14[]; +extern u8 *gKartPeachGroup15[]; +extern u8 *gKartPeachGroup16[]; +extern u8 *gKartPeachGroup17[]; + +extern u8 *gKartWarioGroup0[]; +extern u8 *gKartWarioGroup1[]; +extern u8 *gKartWarioGroup2[]; +extern u8 *gKartWarioGroup3[]; +extern u8 *gKartWarioGroup4[]; +extern u8 *gKartWarioGroup5[]; +extern u8 *gKartWarioGroup6[]; +extern u8 *gKartWarioGroup7[]; +extern u8 *gKartWarioGroup8[]; + +extern u8 *gKartWarioGroup9[]; +extern u8 *gKartWarioGroup10[]; +extern u8 *gKartWarioGroup11[]; +extern u8 *gKartWarioGroup12[]; +extern u8 *gKartWarioGroup13[]; +extern u8 *gKartWarioGroup14[]; +extern u8 *gKartWarioGroup15[]; +extern u8 *gKartWarioGroup16[]; +extern u8 *gKartWarioGroup17[]; extern u8 **gKartMarioTable0[]; extern u8 **gKartLuigiTable0[]; @@ -47,7 +205,6 @@ extern u8 gKartYoshiPalette[]; extern u8 gKartDKPalette[]; extern u8 gKartPeachPalette[]; extern u8 gKartWarioPalette[]; -extern u8 *gKartPalettes[]; extern u8 *gKartMarioTumble[]; extern u8 *gKartLuigiTumble[]; @@ -57,167 +214,12 @@ extern u8 *gKartYoshiTumble[]; extern u8 *gKartDKTumble[]; extern u8 *gKartPeachTumble[]; extern u8 *gKartWarioTumble[]; + extern u8 **gKartTextureTumbles[]; -extern u8 *gKartMarioGroup8[]; -extern u8 *gKartMarioGroup7[]; -extern u8 *gKartMarioGroup6[]; -extern u8 *gKartMarioGroup5[]; -extern u8 *gKartMarioGroup4[]; -extern u8 *gKartMarioGroup3[]; -extern u8 *gKartMarioGroup2[]; -extern u8 *gKartMarioGroup1[]; -extern u8 *gKartMarioGroup0[]; +extern u8 *gKartPalettes[]; -extern u8 *gKartLuigiGroup8[]; -extern u8 *gKartLuigiGroup7[]; -extern u8 *gKartLuigiGroup6[]; -extern u8 *gKartLuigiGroup5[]; -extern u8 *gKartLuigiGroup4[]; -extern u8 *gKartLuigiGroup3[]; -extern u8 *gKartLuigiGroup2[]; -extern u8 *gKartLuigiGroup1[]; -extern u8 *gKartLuigiGroup0[]; - -extern u8 *gKartYoshiGroup8[]; -extern u8 *gKartYoshiGroup7[]; -extern u8 *gKartYoshiGroup6[]; -extern u8 *gKartYoshiGroup5[]; -extern u8 *gKartYoshiGroup4[]; -extern u8 *gKartYoshiGroup3[]; -extern u8 *gKartYoshiGroup2[]; -extern u8 *gKartYoshiGroup1[]; -extern u8 *gKartYoshiGroup0[]; - -extern u8 *gKartToadGroup8[]; -extern u8 *gKartToadGroup7[]; -extern u8 *gKartToadGroup6[]; -extern u8 *gKartToadGroup5[]; -extern u8 *gKartToadGroup4[]; -extern u8 *gKartToadGroup3[]; -extern u8 *gKartToadGroup2[]; -extern u8 *gKartToadGroup1[]; -extern u8 *gKartToadGroup0[]; - -extern u8 *gKartDKGroup8[]; -extern u8 *gKartDKGroup7[]; -extern u8 *gKartDKGroup6[]; -extern u8 *gKartDKGroup5[]; -extern u8 *gKartDKGroup4[]; -extern u8 *gKartDKGroup3[]; -extern u8 *gKartDKGroup2[]; -extern u8 *gKartDKGroup1[]; -extern u8 *gKartDKGroup0[]; - -extern u8 *gKartWarioGroup8[]; -extern u8 *gKartWarioGroup7[]; -extern u8 *gKartWarioGroup6[]; -extern u8 *gKartWarioGroup5[]; -extern u8 *gKartWarioGroup4[]; -extern u8 *gKartWarioGroup3[]; -extern u8 *gKartWarioGroup2[]; -extern u8 *gKartWarioGroup1[]; -extern u8 *gKartWarioGroup0[]; - -extern u8 *gKartPeachGroup8[]; -extern u8 *gKartPeachGroup7[]; -extern u8 *gKartPeachGroup6[]; -extern u8 *gKartPeachGroup5[]; -extern u8 *gKartPeachGroup4[]; -extern u8 *gKartPeachGroup3[]; -extern u8 *gKartPeachGroup2[]; -extern u8 *gKartPeachGroup1[]; -extern u8 *gKartPeachGroup0[]; - -extern u8 *gKartBowserGroup8[]; -extern u8 *gKartBowserGroup7[]; -extern u8 *gKartBowserGroup6[]; -extern u8 *gKartBowserGroup5[]; -extern u8 *gKartBowserGroup4[]; -extern u8 *gKartBowserGroup3[]; -extern u8 *gKartBowserGroup2[]; -extern u8 *gKartBowserGroup1[]; -extern u8 *gKartBowserGroup0[]; - -extern u8 *gKartMarioGroup17[]; -extern u8 *gKartMarioGroup16[]; -extern u8 *gKartMarioGroup15[]; -extern u8 *gKartMarioGroup14[]; -extern u8 *gKartMarioGroup13[]; -extern u8 *gKartMarioGroup12[]; -extern u8 *gKartMarioGroup11[]; -extern u8 *gKartMarioGroup10[]; -extern u8 *gKartMarioGroup9[]; - -extern u8 *gKartLuigiGroup17[]; -extern u8 *gKartLuigiGroup16[]; -extern u8 *gKartLuigiGroup15[]; -extern u8 *gKartLuigiGroup14[]; -extern u8 *gKartLuigiGroup13[]; -extern u8 *gKartLuigiGroup12[]; -extern u8 *gKartLuigiGroup11[]; -extern u8 *gKartLuigiGroup10[]; -extern u8 *gKartLuigiGroup9[]; - -extern u8 *gKartYoshiGroup17[]; -extern u8 *gKartYoshiGroup16[]; -extern u8 *gKartYoshiGroup15[]; -extern u8 *gKartYoshiGroup14[]; -extern u8 *gKartYoshiGroup13[]; -extern u8 *gKartYoshiGroup12[]; -extern u8 *gKartYoshiGroup11[]; -extern u8 *gKartYoshiGroup10[]; -extern u8 *gKartYoshiGroup9[]; - -extern u8 *gKartToadGroup17[]; -extern u8 *gKartToadGroup16[]; -extern u8 *gKartToadGroup15[]; -extern u8 *gKartToadGroup14[]; -extern u8 *gKartToadGroup13[]; -extern u8 *gKartToadGroup12[]; -extern u8 *gKartToadGroup11[]; -extern u8 *gKartToadGroup10[]; -extern u8 *gKartToadGroup9[]; - -extern u8 *gKartDKGroup17[]; -extern u8 *gKartDKGroup16[]; -extern u8 *gKartDKGroup15[]; -extern u8 *gKartDKGroup14[]; -extern u8 *gKartDKGroup13[]; -extern u8 *gKartDKGroup12[]; -extern u8 *gKartDKGroup11[]; -extern u8 *gKartDKGroup10[]; -extern u8 *gKartDKGroup9[]; - -extern u8 *gKartWarioGroup17[]; -extern u8 *gKartWarioGroup16[]; -extern u8 *gKartWarioGroup15[]; -extern u8 *gKartWarioGroup14[]; -extern u8 *gKartWarioGroup13[]; -extern u8 *gKartWarioGroup12[]; -extern u8 *gKartWarioGroup11[]; -extern u8 *gKartWarioGroup10[]; -extern u8 *gKartWarioGroup9[]; - -extern u8 *gKartPeachGroup17[]; -extern u8 *gKartPeachGroup16[]; -extern u8 *gKartPeachGroup15[]; -extern u8 *gKartPeachGroup14[]; -extern u8 *gKartPeachGroup13[]; -extern u8 *gKartPeachGroup12[]; -extern u8 *gKartPeachGroup11[]; -extern u8 *gKartPeachGroup10[]; -extern u8 *gKartPeachGroup9[]; - -extern u8 *gKartBowserGroup17[]; -extern u8 *gKartBowserGroup16[]; -extern u8 *gKartBowserGroup15[]; -extern u8 *gKartBowserGroup14[]; -extern u8 *gKartBowserGroup13[]; -extern u8 *gKartBowserGroup12[]; -extern u8 *gKartBowserGroup11[]; -extern u8 *gKartBowserGroup10[]; -extern u8 *gKartBowserGroup9[]; +// end of kart_dma.h variables extern u8 gKartMarioPalette[]; extern u8 gKartLuigiPalette[]; @@ -2804,4 +2806,6 @@ extern u8 gKartDK318[]; extern u8 gKartDK319[]; extern u8 gKartDK320[]; +extern u8 _kart_texturesSegmentRomStart[]; + #endif diff --git a/src/menus.c b/src/menus.c index 4a8ec3f34..0b9c223e2 100644 --- a/src/menus.c +++ b/src/menus.c @@ -3,8 +3,8 @@ #include #include #include -#include "menus.h" +#include "menus.h" #include "main.h" #include "code_800029B0.h" #include "actors.h" @@ -118,7 +118,7 @@ const s32 gGameModeFromNumPlayersAndRowSelection[5][3] = { }; // map from character grid position id to character id -const s8 D_800F2BAC[] = { +const s8 D_800F2BAC[] = { MARIO, LUIGI, PEACH, @@ -126,7 +126,7 @@ const s8 D_800F2BAC[] = { YOSHI, DK, WARIO, - BOWSER, + BOWSER, }; const s16 gCupCourseOrder[5][4] = { @@ -144,12 +144,6 @@ const s16 gCupCourseOrder[5][4] = { const s8 D_800F2BDC[8] = {1, 0, 0, 0, 0, 1, 3, 4}; -// needs to be a union (or array...?) to go into rodata as a const -// terrible for endianness... Best guess as to what this is for.. -union GameModePack { - u8 modes[4]; - s32 word; -}; const union GameModePack D_800F2BE4 = { {0, 1, 2, 3} }; /**************************/ @@ -233,7 +227,7 @@ void options_menu_act(struct Controller *controller, u16 arg1) { s32 sp2C; // cursorWasMoved or communicateStoredAction UNUSED u32 pad; - btnAndStick = (controller->buttonPressed | controller->stickPressed); + btnAndStick = (controller->buttonPressed | controller->stickPressed); if (!gEnableDebugMode && (btnAndStick & START_BUTTON)) { btnAndStick |= A_BUTTON; @@ -247,7 +241,7 @@ void options_menu_act(struct Controller *controller, u16 arg1) { case 0x16: case 0x17: case 0x18: - { + { sp2C = FALSE; if ((btnAndStick & D_JPAD) && (D_8018EDEC < 0x18)) { D_8018EDEC += 1; @@ -364,7 +358,7 @@ void options_menu_act(struct Controller *controller, u16 arg1) { play_sound2(SOUND_MENU_FILE_NOT_FOUND); return; } - case 0x18: + case 0x18: { D_8018EDEC = 0x1E; play_sound2(SOUND_MENU_SELECT); @@ -377,8 +371,8 @@ void options_menu_act(struct Controller *controller, u16 arg1) { return; } } - } - // maybe else return?; + } + // maybe else return?; break; } case 0x1E: @@ -484,7 +478,7 @@ void options_menu_act(struct Controller *controller, u16 arg1) { sp38->unk24 += 4.0; } sp38->unk8 = -1; - } + } } if (btnAndStick & B_BUTTON) { D_8018EDEC = sp38->unk20 + 0x28; @@ -498,7 +492,7 @@ void options_menu_act(struct Controller *controller, u16 arg1) { sp38->unk4 = 0; } play_sound2(SOUND_MENU_SELECT); - } + } break; } case 0x2A: @@ -684,7 +678,7 @@ void course_data_menu_act(struct Controller *controller, UNUSED u16 arg1) { CourseTimeTrialRecords *sp24; s32 res; - btnAndStick = (controller->buttonPressed | controller->stickPressed); + btnAndStick = (controller->buttonPressed | controller->stickPressed); if (!gEnableDebugMode && (btnAndStick & START_BUTTON)) { btnAndStick |= A_BUTTON; @@ -733,7 +727,7 @@ void course_data_menu_act(struct Controller *controller, UNUSED u16 arg1) { if (gCourseRecordsMenuSelection == 1 && sp24->unknownBytes[0] == 0) { gCourseRecordsMenuSelection += 1; } - + if (gCourseRecordsMenuSelection == 2 && func_800B639C(gTimeTrialDataCourseIndex) < 0) { if (sp24->unknownBytes[0] == 0) { gCourseRecordsMenuSelection = 0; @@ -748,7 +742,7 @@ void course_data_menu_act(struct Controller *controller, UNUSED u16 arg1) { sp28->unk8 = 1; } } - + if (btnAndStick & B_BUTTON) { func_8009E208(); play_sound2(SOUND_MENU_GO_BACK); @@ -767,7 +761,7 @@ void course_data_menu_act(struct Controller *controller, UNUSED u16 arg1) { } break; } - case 0x0C: + case 0x0C: { sp28 = find_8018D9E0_entry_dupe(0xE9); if ((btnAndStick & U_JPAD) && (D_8018EDF9 > 0)) { @@ -778,7 +772,7 @@ void course_data_menu_act(struct Controller *controller, UNUSED u16 arg1) { } sp28->unk8 = -1; } - + if ((btnAndStick & D_JPAD) && (D_8018EDF9 <= 0)) { D_8018EDF9 += 1; play_sound2(SOUND_MENU_CURSOR_MOVE); @@ -787,7 +781,7 @@ void course_data_menu_act(struct Controller *controller, UNUSED u16 arg1) { } sp28->unk8 = 1; } - + if (btnAndStick & B_BUTTON) { D_8018EDEC = 0xB; play_sound2(SOUND_MENU_GO_BACK); @@ -864,7 +858,7 @@ void logo_intro_menu_act(struct Controller *arg0, UNUSED u16 arg1) { if ((func_800B4520() == 0) && (anyInput)) { // Audio related func_800CA388(0x3C); - + func_8009E1E4(); } } @@ -874,7 +868,7 @@ void controller_pak_menu_act(struct Controller* controller, UNUSED u16 arg1) { OSPfsState* osPfsState; s32 selectedTableRow; UNUSED s8 pad; - + buttonAndStickPress = controller->buttonPressed | controller->stickPressed; if (func_800B4520() == 0) { switch (gControllerPakMenuSelection) { @@ -983,8 +977,8 @@ void controller_pak_menu_act(struct Controller* controller, UNUSED u16 arg1) { selectedTableRow = D_800E86C4[gControllerPakSelectedTableRow + 2] - 1; osPfsState = &pfsState[selectedTableRow]; - switch (osPfsDeleteFile(&gControllerPak1FileHandle, osPfsState->company_code, osPfsState->game_code, (u8 *)&osPfsState->game_name, (u8 *)&osPfsState->ext_name)) { - default: + switch (osPfsDeleteFile(&gControllerPak1FileHandle, osPfsState->company_code, osPfsState->game_code, (u8 *)&osPfsState->game_name, (u8 *)&osPfsState->ext_name)) { + default: gControllerPakMenuSelection = CONTROLLER_PAK_MENU_ERASE_ERROR_NOT_ERASED; return; case 0: @@ -1208,7 +1202,7 @@ void splash_menu_act(struct Controller *controller, u16 arg1) { if (controller->button & Z_TRIG) { if (btnAndStick & A_BUTTON) { - gDebugGotoScene = DEBUG_GOTO_ENDING_SEQUENCE; + gDebugGotoScene = DEBUG_GOTO_ENDING_SEQUENCE; } else { gDebugGotoScene = DEBUG_GOTO_CREDITS_SEQUENCE_CC_EXTRA; } @@ -1356,7 +1350,7 @@ void main_menu_act(struct Controller *controller, u16 arg1) { } else if (btnAndStick & A_BUTTON) { // L800B2E3C switch(gGameModeFromNumPlayersAndRowSelection[D_8018EDF3][D_800E86AC[D_8018EDF3 - 1]]) { - case 0: + case 0: gMainMenuSelectionDepth = GAME_MODE_CC_OR_TIME_TRIALS_OPTIONS_SELECTION; play_sound2(SOUND_MENU_GP); break; @@ -1527,7 +1521,7 @@ void player_select_menu_act(struct Controller *controller, u16 arg1) { if (!func_800B4520()) { switch (D_8018EDEE) { - case 1: + case 1: { if (gCharacterGridSelections[arg1] == 0) { if (btnAndStick & B_BUTTON) { @@ -1550,7 +1544,7 @@ void player_select_menu_act(struct Controller *controller, u16 arg1) { if ((btnAndStick & A_BUTTON) && !D_8018EDE8[arg1]) { D_8018EDE8[arg1] = TRUE; func_800C90F4( - arg1, + arg1, (((uintptr_t)D_800F2BAC[gCharacterGridSelections[arg1] - 1]) << 4) + 0x2900800EU ); } diff --git a/src/menus.h b/src/menus.h index 79293f7fc..9b3bf569a 100644 --- a/src/menus.h +++ b/src/menus.h @@ -11,6 +11,13 @@ enum MenuOptionsCursorPositions { MENU_OPTIONS_CSRPOS_SOUNDMODE = 0x16 }; +// needs to be a union (or array...?) to go into rodata as a const +// terrible for endianness... Best guess as to what this is for.. +union GameModePack { + u8 modes[4]; + s32 word; +}; + /* functions */ void update_menus(void); void options_menu_act(struct Controller *, u16); @@ -28,23 +35,8 @@ void func_800B3F74(s32); void func_800B44AC(void); void func_800B44BC(void); s32 func_800B4520(void); -void func_800B4560(s32, s32); /* data */ -extern s32 gMenuSelection; -extern s32 D_800E86A4; -extern s8 gCharacterSelections[4]; -extern s8 D_800E86AC[4]; -extern s8 D_800E86B0[4][3]; -extern s8 gNextDemoId; -extern s8 gControllerPakSelectedTableRow; -extern s8 D_800E86C4[12]; -extern s8 D_800E86D0[16]; - -extern const s8 D_800F2B60[5][3]; -extern const s32 gGameModeFromNumPlayersAndRowSelection[5][3]; -extern const s16 gCupCourseOrder[5][4]; - extern s32 D_8018EDC0; extern f32 D_8018EDC4; extern f32 D_8018EDC8; @@ -54,8 +46,9 @@ extern f32 D_8018EDD4; extern f32 D_8018EDD8; extern f32 D_8018EDDC; extern s32 D_8018EDE0; -extern s8 gCharacterGridSelections[4]; -extern s8 D_8018EDE8[4]; + +extern s8 gCharacterGridSelections[]; +extern s8 D_8018EDE8[]; extern s8 D_8018EDEC; extern s8 gMainMenuSelectionDepth; extern s8 D_8018EDEE; @@ -74,10 +67,38 @@ extern s8 gDebugGotoScene; extern s8 D_8018EDFB; extern s8 D_8018EDFC; extern s32 gMenuTimingCounter; +extern s32 gMenuDelayTimer; extern s8 D_8018EE08; extern s8 gCupSelection; +extern s8 D_8018EE0A; extern s8 gCupCourseSelection; extern s8 D_8018EE0C; -extern struct_8018EE10_entry D_8018EE10[2]; +extern struct_8018EE10_entry D_8018EE10[]; + +extern s32 gMenuSelection; +extern s32 D_800E86A4; +extern s8 gCharacterSelections[]; + +extern s8 D_800E86AC[]; +extern s8 D_800E86B0[4][3]; +extern s8 gNextDemoId; +extern s8 gControllerPakSelectedTableRow; +extern s8 D_800E86C4[]; +extern s8 D_800E86D0[]; +extern s8 unref_800E86E0[]; +extern u32 sVIGammaOffDitherOn; + +extern const s8 D_800F2B50[5]; +extern const s8 D_800F2B58[5]; +extern const s8 D_800F2B60[5][3]; +extern const s32 gGameModeFromNumPlayersAndRowSelection[5][3]; +extern const s8 D_800F2BAC[8]; +extern const s16 gCupCourseOrder[NUM_CUPS][NUM_COURSES_PER_CUP]; + +extern const s8 D_800F2BDC[8]; + +extern const union GameModePack D_800F2BE4; + +// end of menus.c variables #endif /* MENUS_H */ diff --git a/src/racing/actors.h b/src/racing/actors.h index 4096d1af0..9591ec27b 100644 --- a/src/racing/actors.h +++ b/src/racing/actors.h @@ -122,7 +122,6 @@ extern u16 D_802BA260; // Box Truck sub-type? extern u16 gNearestWaypointByPlayerId[]; -extern Camera *camera1; extern s16 gCurrentCourseId; extern u16 isCrossingTriggeredByIndex[]; extern Lights1 D_800DC610[]; @@ -247,6 +246,4 @@ extern s8 D_802B8864[]; extern u16 D_800DC5BC; -extern Vec3f D_802B91C8; - #endif // ACTORS_H diff --git a/src/racing/math_util.c b/src/racing/math_util.c index 8da704551..75c3a6b19 100644 --- a/src/racing/math_util.c +++ b/src/racing/math_util.c @@ -72,7 +72,7 @@ f32 func_802B51E8(Vec3f arg0, Vec3f arg1) { temp_f14 = arg1[2] - arg0[2]; return (temp_f2 * temp_f2) + (temp_f12 * temp_f12) + temp_f14 + temp_f14; } -//u32 atan2s(f32, f32); // might be s32 + u32 get_angle_between_points(Vec3f arg0, Vec3f arg1) { f32 temp_v1; f32 temp_v2; @@ -87,7 +87,7 @@ u32 func_802B5258(Vec3f arg0, Vec3s arg1) { f32 temp_v2; temp_v1 = arg1[0] - arg0[0]; temp_v2 = arg1[2] - arg0[2]; - + return atan2s(temp_v1, temp_v2); } @@ -161,7 +161,7 @@ void mtxf_identity(Mat4 mtx) { for (k = 0; k < 4; k++) { mtx[i][k] = (i == k) ? 1.0f : 0.0f; } - } + } } void func_802B5450(Mat4 arg0, Mat4 arg1, Vec3f arg2) { @@ -606,11 +606,11 @@ void func_802B6540(Mat3 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4) { mtx2[0][0] = cossValue; mtx2[2][1] = 0; mtx2[1][2] = 0; - + mtx2[1][1] = 1; mtx2[2][0] = sinValue; mtx2[0][2] = -sinValue; - + mtx2[2][2] = cossValue; mtx2[1][0] = 0; mtx2[0][1] = 0; @@ -622,7 +622,7 @@ void func_802B6540(Mat3 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4) { matrix[i][j] = (i == j) ? 1.0f : 0.0f; } } - + } else if (arg2 == -1) { for (i = 0; i < 3; i++) { @@ -630,16 +630,16 @@ void func_802B6540(Mat3 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4) { matrix[i][j] = (i == j) ? 1.0f : 0.0f; } } - + matrix[1][1] = -1; - + } else { a = (f32) -(360.0 - ((f64) (func_802B7CE8(arg2) * 180.0f) / 3.141592653589793)); b = -arg3 / sqrtf((arg1 * arg1) + (arg3 * arg3)); c = 0; d = arg1 / sqrtf((arg1 * arg1) + (arg3 * arg3)); func_802B6A84(matrix, a, b, c, d); - + } arg0[0][0] = (mtx2[0][0] * matrix[0][0]) + (mtx2[0][1] * matrix[1][0]) + (mtx2[0][2] * matrix[2][0]); arg0[1][0] = (mtx2[1][0] * matrix[0][0]) + (mtx2[1][1] * matrix[1][0]) + (mtx2[1][2] * matrix[2][0]); @@ -665,7 +665,7 @@ UNUSED void func_802B68F8(Mat3 matrix, f32 arg1, f32 arg2, f32 arg3) { if (arg2 == 1) { for (i = 0; i < 3; i++) { - for (j = 0; j < 3; j++) { + for (j = 0; j < 3; j++) { matrix[i][j] = (i == j) ? 1.0f : 0.0f; } } @@ -840,7 +840,7 @@ void mtxf_to_mtx(Mtx *dest, Mat4 src) { /** * Comment from sm64 unverified. mk64 verison is modified - * + * * Helper function for atan2s. Does a look up of the arctangent of y/x assuming * the resulting angle is in range [0, 0x2000] (1/8 of a circle). */ diff --git a/src/racing/math_util.h b/src/racing/math_util.h index 67f4dfcfe..cfb972042 100644 --- a/src/racing/math_util.h +++ b/src/racing/math_util.h @@ -16,9 +16,6 @@ // Here to appease the pragma gods double fabs(double x); -void func_802B6A84(Mat3, s16, f32, f32, f32); -void func_802B4FF0(void); -void func_802B5794(Mat4, Vec3f, Vec3f); s32 render_set_position(Mat4, s32); f32 func_802B51E8(Vec3f, Vec3f); u32 get_angle_between_points(Vec3f, Vec3f); @@ -27,14 +24,13 @@ void vec3f_set(Vec3f, f32, f32, f32); void vec3s_set(Vec3s, s16, s16, s16); void *vec3f_copy(Vec3f, Vec3f); void vec3s_copy(Vec3s, Vec3s); -void *sm64_vec3f_set(Vec3f, f32, f32, f32); void func_802B5350(Mat4, Mat4); void func_802B5398(s32*, s32*, s32); void mtxf_identity(Mat4); void func_802B5450(Mat4, Mat4, Vec3f); -void func_802B54EC(Mat4, Mat4, Vec3f); void mtxf_translate(Mat4, Vec3f); void func_802B5564(Mat4, u16*, f32, f32, f32, f32, f32); +void func_802B5794(Mat4, Vec3f, Vec3f); void func_802B59DC(Mat4, s16); void func_802B5A44(Mat4, s16); void func_802B5AAC(Mat4, s16); @@ -43,14 +39,11 @@ void func_802B5D30(s16, s16, s32); void func_802B5D64(uintptr_t, s16, s16, s32); void func_802B5F00(Mat4, f32); void func_802B5F74(Mat4, Vec3f, Vec3s); -void func_802B60B4(Mat4, Vec3s, Vec3s); -void func_802B6214(Mat4, Vec3s, Vec3s); -void func_802B6374(Vec3f); void func_802B63B8(Vec3f, Mat3); void func_802B6434(Vec3f, Mat4); -void func_802B64B0(s32, s32, s32, s32); void func_802B64C4(Vec3f, s16); void func_802B6540(Mat3, f32, f32, f32, s16); +void func_802B6A84(Mat3, s16, f32, f32, f32); void func_802B6BC0(Mat4, s16, f32, f32, f32); void func_802B6D58(Mat4, Vec3f, Vec3f); void func_802B71CC(Mat4, Mat4, Mat4); @@ -58,14 +51,9 @@ void mtxf_to_mtx(Mtx*, Mat4); u16 atan2_lookup(f32, f32); u16 atan2s(f32, f32); f32 func_802B79B8(f32, f32); -f32 func_802B79F0(f32, f32); -u16 func_802B7B50(f32, f32); -void func_802B7C18(f32); s16 func_802B7C40(f32); -void func_802B7C6C(f32); s16 func_802B7CA8(f32); f32 func_802B7CE8(f32); -s16 func_802B7D28(f32); u16 random_u16(void); u16 random_int(u16); s16 func_802B7F34(f32, f32, f32, f32); @@ -74,7 +62,11 @@ f32 sins(u16); f32 coss(u16); s32 is_visible_between_angle(u16, u16, u16); f32 is_within_render_distance(Vec3f, Vec3f, u16, f32, f32, f32); -void func_802B8414(uintptr_t, Mat4, s16, s16, s32); + +extern s32 D_802B91C0[]; +extern Vec3f D_802B91C8; + +// end of math_util.c variables extern u16 gRandomSeed16; diff --git a/src/racing/race_logic.c b/src/racing/race_logic.c index 581b6769e..301461005 100644 --- a/src/racing/race_logic.c +++ b/src/racing/race_logic.c @@ -21,12 +21,12 @@ #include "math_util_2.h" #include "code_8008C1D0.h" #include "math.h" +#include "menus.h" #pragma intrinsic (sqrtf) extern s16 gPlayerBalloonCount[]; extern s16 D_8016348C; -extern s8 gCupCourseSelection; extern s32 gLapCountByPlayerId[]; extern u16 D_802BA048; @@ -34,9 +34,7 @@ extern u16 D_802BA048; extern u16 D_800DC5B4; extern u16 D_800DC5B0; extern u16 D_800DC5B8; -extern s32 gMenuSelection; -extern s8 D_8018EE08; extern s32 D_8018D2AC; extern s16 gCurrentCourseId; extern u32 D_800DC5AC; diff --git a/src/racing/skybox_and_splitscreen.c b/src/racing/skybox_and_splitscreen.c index e7523ac17..32d50f904 100644 --- a/src/racing/skybox_and_splitscreen.c +++ b/src/racing/skybox_and_splitscreen.c @@ -18,6 +18,7 @@ #include "render_courses.h" #include "math_util.h" #include "main.h" +#include "menus.h" Vp D_802B8880[] = { diff --git a/src/racing/skybox_and_splitscreen.h b/src/racing/skybox_and_splitscreen.h index 499d03ca4..0c4dedf22 100644 --- a/src/racing/skybox_and_splitscreen.h +++ b/src/racing/skybox_and_splitscreen.h @@ -59,8 +59,6 @@ extern struct UnkStruct_800DC5EC *D_800DC5F8; extern u16 D_800DC5B0; extern u16 gIsInQuitToMenuTransition; extern u16 gQuitToMenuTransitionCounter; -extern s32 gMenuSelection; -extern s32 D_800E86A4; extern s32 D_800DC5D0; extern s32 D_800DC5D4; diff --git a/src/spawn_players.c b/src/spawn_players.c index f111d9b08..0de730e72 100644 --- a/src/spawn_players.c +++ b/src/spawn_players.c @@ -18,6 +18,7 @@ #include "code_80005FD0.h" #include "podium_ceremony_actors.h" #include "main.h" +#include "menus.h" // arg4 is height? Or something like that? void spawn_player(Player *player, s8 playerIndex, f32 startingRow, f32 startingColumn, f32 arg4, f32 arg5, u16 characterId, s16 playerType) {