mirror of https://github.com/n64decomp/mk64.git
cleaning camera, kart_dma, menu, math_util (#436)
* cleaning camera.h * cleaning math_utils.h and remove space * cleaning kart_dma * cleaning menu.h
This commit is contained in:
parent
3a4b8c5a34
commit
2f583fdb42
|
|
@ -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
|
||||
|
|
|
|||
38
src/camera.c
38
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 {
|
||||
|
|
|
|||
19
src/camera.h
19
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
|
||||
|
|
|
|||
|
|
@ -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[];
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
#include "common_textures.h"
|
||||
#include "common_structs.h"
|
||||
#include "main.h"
|
||||
|
||||
#include "menus.h"
|
||||
|
||||
extern UnkCommonTextureStruct0 *D_800DC720[];
|
||||
|
||||
|
|
|
|||
|
|
@ -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[];
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include "audio/external.h"
|
||||
#include "courses/all_course_data.h"
|
||||
#include "main.h"
|
||||
#include "menus.h"
|
||||
|
||||
void func_8006E9C0(void) {
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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[] = {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
324
src/kart_dma.h
324
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
|
||||
|
|
|
|||
54
src/menus.c
54
src/menus.c
|
|
@ -3,8 +3,8 @@
|
|||
#include <defines.h>
|
||||
#include <global.h>
|
||||
#include <common_structs.h>
|
||||
#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
|
||||
);
|
||||
}
|
||||
|
|
|
|||
57
src/menus.h
57
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 */
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
#include "render_courses.h"
|
||||
#include "math_util.h"
|
||||
#include "main.h"
|
||||
#include "menus.h"
|
||||
|
||||
|
||||
Vp D_802B8880[] = {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue