mirror of
https://github.com/n64decomp/mk64
synced 2026-09-03 01:43:54 -04:00
the big code_80091750.c rename (#684)
* some rename
* type menu
* continue rename and place const
* Renames and doc
* more
* buffer vars
* clang format
* continue rename
* some rename and get it compile (but don't match for obscure reason)
* get it match again and fix some warning
* fix all warning
* Match 6 functions
* continue rename
* load img renames and first step or label menu items
* MenuItem struct names and some rename
* rename around
* rename code_80091750 to menu_item
* clean up a little
* Update menu_item.h
* document waypoint and more
* Revert "document waypoint and more"
This reverts commit 5e6eb4fbcc.
* apply review
* Update menu_item.c
* fix some review
* rename func_8009E620 to clear_menus
* do a rename
* apply review
* finish rename normally
* more small rename
* few fix of name
* few more fix
* minor fix
* Update menus.c
* last rename normally
* Update render_menus.s
* Update menu_items.c
* Renames seg2 textures.c
* MENU_ITEMtype --> MENU_ITEM_TYPE
* remove a useless parameter
* func_80099110 --> clear_menu_textures
---------
Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
Co-authored-by: AloXado320 <david.albujar.s.30@gmail.com>
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
#include "audio/port_eu.h"
|
||||
#include "code_800029B0.h"
|
||||
#include "code_80005FD0.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
|
||||
s8 D_8018EF10;
|
||||
UnkStruct8018EF18 D_8018EF18[16];
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ typedef struct {
|
||||
|
||||
/*
|
||||
* In render_player, spawn_players, and staff_ghosts D_802BFB80 is the arraySize8 entry
|
||||
* But in code_80091750 its the arraySize4 entry
|
||||
* But in menu_item its the arraySize4 entry
|
||||
* The only way to unify those 2 things is to use a union
|
||||
*/
|
||||
typedef union {
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@
|
||||
#include <defines.h>
|
||||
#include "collision.h"
|
||||
#include "memory.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "skybox_and_splitscreen.h"
|
||||
#include "code_8006E9C0.h"
|
||||
#include "spawn_players.h"
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
#include <common_structs.h>
|
||||
#include "main.h"
|
||||
#include "menus.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "audio/external.h"
|
||||
#include "ending/podium_ceremony_actors.h"
|
||||
#include "spawn_players.h"
|
||||
|
||||
+1
-1
@@ -521,7 +521,7 @@ extern s32 D_8018D1D4;
|
||||
// extern s32 D_8018D1D8; -> objects.h
|
||||
|
||||
extern s32 D_8018D1DC;
|
||||
extern u8* D_8018D1E0;
|
||||
extern u8* gGameLogoAddress;
|
||||
extern f32 D_8018D1E8;
|
||||
extern s32 D_8018D1EC;
|
||||
// extern s32 D_8018D1F0; -> objects.h
|
||||
|
||||
@@ -77,7 +77,7 @@ s32 D_8018D1D0;
|
||||
s32 D_8018D1D4;
|
||||
s32 D_8018D1D8;
|
||||
s32 D_8018D1DC;
|
||||
u8* D_8018D1E0;
|
||||
u8* gGameLogoAddress;
|
||||
UNUSED s32 D_8018D1E4;
|
||||
f32 D_8018D1E8;
|
||||
s32 D_8018D1EC;
|
||||
|
||||
+10
-6
@@ -22,7 +22,7 @@
|
||||
#include "menus.h"
|
||||
#include "data/other_textures.h"
|
||||
#include "render_objects.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "src/data/some_data.h"
|
||||
#include "effects.h"
|
||||
|
||||
@@ -111,7 +111,10 @@ void clear_object_list() {
|
||||
objectListSize = -1;
|
||||
}
|
||||
|
||||
u8* func_8006ED94(u8* devAddr, u8* baseAddress, u32 size, u32 offset) {
|
||||
/**
|
||||
* Dma's mario kart 64 logo and course outline textures.
|
||||
*/
|
||||
u8* dma_copy_base_misc_textures(u8* devAddr, u8* baseAddress, u32 size, u32 offset) {
|
||||
u8** tempAddress;
|
||||
u8* address;
|
||||
address = baseAddress + offset;
|
||||
@@ -126,8 +129,9 @@ u8* func_8006ED94(u8* devAddr, u8* baseAddress, u32 size, u32 offset) {
|
||||
return baseAddress;
|
||||
}
|
||||
|
||||
void func_8006EE44(void) {
|
||||
D_8018D1E0 = func_8006ED94((u8*) &gTextureLogoMarioKart64, (u8*) D_8018D9B0, 0x79E1, 0x20000);
|
||||
void load_mario_kart_64_logo(void) {
|
||||
gGameLogoAddress =
|
||||
dma_copy_base_misc_textures((u8*) &gTextureLogoMarioKart64, (u8*) gMenuTextureBuffer, 0x79E1, 0x20000);
|
||||
}
|
||||
|
||||
// Some kind of initalization for the Item Window part of the HUD
|
||||
@@ -161,10 +165,10 @@ void func_8006EF60(void) {
|
||||
s16 huh;
|
||||
u8* wut;
|
||||
|
||||
wut = D_8018D9B4 + 0xFFFF0000;
|
||||
wut = gMenuCompressedBuffer + 0xFFFF0000;
|
||||
// clang-format off
|
||||
// God forgive me for my sins...
|
||||
huh = 0x14; if (0) {} for (i = 0; i < huh; i++) { D_8018D248[i] = func_8006ED94(gCourseOutlineTextures[i], wut, D_800E5520[i], D_800E5520[i]); wut += D_800E5520[i]; }
|
||||
huh = 0x14; if (0) {} for (i = 0; i < huh; i++) { D_8018D248[i] = dma_copy_base_misc_textures(gCourseOutlineTextures[i], wut, D_800E5520[i], D_800E5520[i]); wut += D_800E5520[i]; }
|
||||
// clang-format on
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -8,8 +8,8 @@ void init_hud(void);
|
||||
void reset_object_variable(void);
|
||||
void func_8006EB10(void);
|
||||
void clear_object_list(void);
|
||||
u8* func_8006ED94(u8*, u8*, u32, u32);
|
||||
void func_8006EE44(void);
|
||||
u8* dma_copy_base_misc_textures(u8*, u8*, u32, u32);
|
||||
void load_mario_kart_64_logo(void);
|
||||
void init_item_window(s32);
|
||||
void func_8006EEE8(s32);
|
||||
void func_8006EF60(void);
|
||||
|
||||
@@ -1,616 +0,0 @@
|
||||
#ifndef CODE_80091750_H
|
||||
#define CODE_80091750_H
|
||||
|
||||
#include <common_structs.h>
|
||||
#include "textures.h"
|
||||
#include "main.h"
|
||||
|
||||
extern u32 _course_mario_raceway_dl_mio0SegmentRomStart[];
|
||||
|
||||
/* File specific types */
|
||||
|
||||
/*
|
||||
Known `types` for `struct_8018D9E0_entry`
|
||||
0x53: "Mushroom Cup" box on the cup selection screen
|
||||
0x54: "Flower Cup" box on the cup selection screen
|
||||
0x55: "Star Cup" box on the cup selection screen
|
||||
0x56: "Special Cup" box on the cup selection screen
|
||||
0x5E: A box of static over the course images as the cup selection screen loads in.
|
||||
It is near unnoticeable though as in practice it doesn't last long enough to be seen.
|
||||
Try locking the word at `8018DC80` to see something like 0x20 just before confirming character selection to make
|
||||
it last longer See `func_80096CD8` for the actual drawing of the static
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 type; // id maybe?
|
||||
/* 0x04 */ s32 cursor; // sound mode, maybe some other stuff
|
||||
/* 0x08 */ s32 unk8; // This is used but I can't tell what for
|
||||
/* 0x0C */ s32 column;
|
||||
/* 0x10 */ s32 row;
|
||||
/* 0x14 */ u8 priority; // priority/depth/z-level. Higher values are drawn on top of lower values
|
||||
// If equal, later entries in D_8018D9E0 are on top
|
||||
/* 0x15 */ u8 visible; // active? If 1 its displayed, if 0 its not
|
||||
// These seem to be generic space available for use by the struct, no 1 purpose for any given member
|
||||
/* 0x16 */ s16 unk16; // Potentially unused
|
||||
/* 0x18 */ s32 D_8018DEE0_index; // Index in D_8018DEE0, an array of some other struct type
|
||||
/* 0x1C */ s32 unk1C; // Multi use. Sometimes cup selection, sometimes course index.
|
||||
/* 0x20 */ s32 unk20; // Multi use, hard to tell what for though. Sometimes a random number, sometimes GP points
|
||||
/* 0x24 */ f32 unk24; // Multi use, x scaling for some things, rotation multiplier for the question box in some
|
||||
// menus, probably some other things
|
||||
} struct_8018D9E0_entry; // size = 0x28
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ MkAnimation* textureSequence;
|
||||
/* 0x04 */ s32 sequenceIndex; // Index in textureSequence that the animation is currently on
|
||||
/* 0x08 */ s32 frameCountDown; // Frames left for the given animation part
|
||||
/* 0x0C */ u32 visible; // visbile if 0x80000000, otherwise invisbile AND paused
|
||||
/* 0x10 */ s32 D_8018E118_index; // Don't know what D_8018E118 tracks
|
||||
/* 0x14 */ s32 unk14; // Flip flops between 0 and 1, use unknown
|
||||
} struct_8018DEE0_entry; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ MkTexture* texture;
|
||||
/* 0x4 */ s32 unk_4;
|
||||
} struct_8018E060_entry; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ MkTexture* mk64Texture;
|
||||
/* 0x4 */ s16 unk4;
|
||||
/* 0x6 */ s16 unk6;
|
||||
} struct_8018E0E8_entry; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u64* textureData; // This should be interpreted as a segmented address
|
||||
/**
|
||||
* Its hard to tell what exactly what this is meant to be,
|
||||
* but it appears to be used as some sort of offset/index from the address stored in D_8018D9B0.
|
||||
* This value is (roughly) the sum of (width * height) of the
|
||||
* textures in all the previous entries in D_8018E118
|
||||
*/
|
||||
/* 0x04 */ s32 offset;
|
||||
} struct_8018E118_entry; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ MkTexture* textures;
|
||||
/* 0x04 */ Gfx* displayList;
|
||||
} struct_8018E768_entry; // size = 0x08
|
||||
|
||||
struct UnkStruct_8018E7E8 {
|
||||
/* 0x0 */ s16 x;
|
||||
/* 0x2 */ s16 y;
|
||||
/* 0x4 */ s16 unk1;
|
||||
/* 0x6 */ s16 unk2;
|
||||
}; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 column;
|
||||
/* 0x02 */ s16 row;
|
||||
/* 0x04 */ s16 pad0;
|
||||
/* 0x06 */ s16 pad1;
|
||||
} Unk_D_800E70A0; // size = 0x08
|
||||
|
||||
/* Function Prototypes */
|
||||
|
||||
f64 exponent_by_squaring(f64, s32);
|
||||
f64 func_800917B0(f64, f64);
|
||||
f64 func_8009186C(f64);
|
||||
f64 func_8009195C(f64);
|
||||
f64 func_80091A6C(f64, s32);
|
||||
f64 func_80091AC0(f64, s32*);
|
||||
void swap_values(s32*, s32*);
|
||||
s32 func_80091D74(void);
|
||||
void func_80091EE4(void);
|
||||
void func_80091FA4(void);
|
||||
void func_80092148(void);
|
||||
void func_800921B4(void);
|
||||
void text_rainbow_effect(s32, s32, s32);
|
||||
void set_text_color_rainbow_if_selected(s32, s32, s32);
|
||||
void func_80092258(void);
|
||||
void func_80092290(s32, s32*, s32*);
|
||||
void func_80092500(void);
|
||||
void func_80092564(void);
|
||||
void func_800925A0(void);
|
||||
void func_800925CC(void);
|
||||
void func_80092604(void);
|
||||
void func_80092630(void);
|
||||
void func_8009265C(void);
|
||||
void func_80092688(void);
|
||||
void func_80092C80(void);
|
||||
s32 char_to_glyph_index(char*);
|
||||
s32 func_80092DF8(char*);
|
||||
s32 func_80092E1C(char*);
|
||||
s32 func_80092EE4(char*);
|
||||
s32 get_string_width(char*);
|
||||
void set_text_color(s32);
|
||||
void func_800930E4(s32, s32, char*);
|
||||
void print_text0(s32, s32, char*, s32, f32, f32, s32);
|
||||
void func_80093324(s32, s32, char*, s32, f32, f32);
|
||||
void func_80093358(s32, s32, char*, s32, f32, f32);
|
||||
void print_text1(s32, s32, char*, s32, f32, f32, s32);
|
||||
void func_800936B8(s32, s32, char*, s32, f32, f32);
|
||||
void draw_text(s32, s32, char*, s32, f32, f32);
|
||||
void func_80093720(s32, s32, char*, s32, f32, f32);
|
||||
void func_80093754(s32, s32, char*, s32, f32, f32);
|
||||
void print_text2(s32, s32, char*, s32, f32, f32, s32);
|
||||
void func_800939C8(s32, s32, char*, s32, f32, f32);
|
||||
void text_draw(s32, s32, char*, s32, f32, f32);
|
||||
void func_80093A30(s32);
|
||||
void func_80093A5C(u32);
|
||||
void func_80093B70(u32);
|
||||
void func_80093C1C(s32);
|
||||
void func_80093C88(void);
|
||||
void func_80093C90(void);
|
||||
void func_80093C98(s32);
|
||||
void func_80093E20(void);
|
||||
void func_80093E40(void);
|
||||
void func_80093E60(void);
|
||||
void func_80093F10(void);
|
||||
void func_800940EC(s32);
|
||||
void func_800942D0(void);
|
||||
void func_80094660(struct GfxPool*, s32);
|
||||
void func_800947B4(struct GfxPool*, s32);
|
||||
void func_80094A64(struct GfxPool*);
|
||||
void func_80094C60(void);
|
||||
void func_80095574(void);
|
||||
Gfx* draw_flash_select_case(Gfx*, s32, s32, s32, s32, s32);
|
||||
Gfx* draw_flash_select_case_slow(Gfx*, s32, s32, s32, s32);
|
||||
Gfx* draw_flash_select_case_fast(Gfx*, s32, s32, s32, s32);
|
||||
Gfx* func_800959F8(Gfx*, Vtx*);
|
||||
Gfx* func_80095BD0(Gfx*, u8*, f32, f32, u32, u32, f32, f32);
|
||||
Gfx* func_80095E10(Gfx*, s8, s32, s32, s32, s32, s32, s32, s32, s32, u8*, u32, u32);
|
||||
Gfx* func_800963F0(Gfx*, s8, s32, s32, f32, f32, s32, s32, s32, s32, s32, s32, u8*, u32, u32);
|
||||
Gfx* func_80096CD8(Gfx*, s32, s32, u32, u32);
|
||||
Gfx* func_80097274(Gfx* displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8,
|
||||
s32 arg9, u16* argA, u32 argB, u32 argC, s32 argD);
|
||||
Gfx* func_80097A14(Gfx*, s8, s32, s32, s32, s32, s32, s32, u8*, u32, u32);
|
||||
Gfx* func_80097AE4(Gfx*, s8, s32, s32, u8*, s32);
|
||||
Gfx* func_80097E58(Gfx* displayListHead, s8 fmt, u32 arg2, u32 arg3, u32 arg4, u32 arg5, s32 arg6, s32 arg7,
|
||||
u8* someTexture, u32 arg9, u32 argA, s32 width);
|
||||
Gfx* func_80098558(Gfx*, u32, u32, u32, u32, u32, u32, s32, s32);
|
||||
Gfx* func_800987D0(Gfx*, u32, u32, u32, u32, s32, s32, u8*, u32, s32);
|
||||
Gfx* draw_box_fill(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32);
|
||||
Gfx* draw_box(Gfx*, s32, s32, s32, s32, u32, u32, u32, u32);
|
||||
Gfx* func_80098FC8(Gfx*, s32, s32, s32, s32);
|
||||
void dma_copy_base_729a30(u64*, size_t, void*);
|
||||
void dma_copy_base_7fa3c0(u64*, size_t, void*);
|
||||
void func_80099110(void);
|
||||
void func_80099184(MkTexture*);
|
||||
void* segmented_to_virtual_dupe(const void*);
|
||||
void* segmented_to_virtual_dupe_2(const void*);
|
||||
void func_8009969C(MkTexture*);
|
||||
void func_800996BC(MkTexture*, s32);
|
||||
void func_80099958(MkTexture*, s32, s32);
|
||||
void func_80099E54(void);
|
||||
void func_80099E60(MkTexture*, s32, s32);
|
||||
void func_80099EC4(void);
|
||||
void func_80099A70(void);
|
||||
void func_80099A94(MkTexture*, s32);
|
||||
void func_80099AEC(void);
|
||||
void func_8009A238(MkTexture*, s32);
|
||||
void func_8009A2F0(struct_8018E0E8_entry*);
|
||||
void func_8009A344(void);
|
||||
s32 func_8009A374(MkAnimation*);
|
||||
s32 func_8009A478(MkAnimation*, s32);
|
||||
void func_8009A594(s32, s32, MkAnimation*);
|
||||
void func_8009A640(s32, s32, s32, MkAnimation*);
|
||||
void func_8009A6D4(void);
|
||||
void func_8009A76C(s32, s32, s32, s32);
|
||||
void func_8009A7EC(s32, s32, s32, s32, s32);
|
||||
MkTexture* func_8009A878(struct_8018DEE0_entry*);
|
||||
MkTexture* func_8009A944(struct_8018DEE0_entry*, s32);
|
||||
void func_8009A9FC(s32, s32, u32, s32);
|
||||
void func_8009AB7C(s32);
|
||||
void func_8009AD78(s32, s32);
|
||||
void func_8009B0A4(s32, u32);
|
||||
void func_8009B538(s32, s32, s32, s32, s32);
|
||||
u16* func_8009B8C4(u64*);
|
||||
void func_8009B938(void);
|
||||
void func_8009B954(MkTexture*);
|
||||
void func_8009B998(void);
|
||||
Gfx* func_8009B9D0(Gfx*, MkTexture*);
|
||||
Gfx* func_8009BA74(Gfx*, MkTexture*, s32, s32);
|
||||
Gfx* func_8009BC9C(Gfx*, MkTexture*, s32, s32, s32, s32);
|
||||
Gfx* print_letter(Gfx*, MkTexture*, f32, f32, s32, f32, f32);
|
||||
Gfx* func_8009C204(Gfx*, MkTexture*, s32, s32, s32);
|
||||
Gfx* func_8009C434(Gfx*, struct_8018DEE0_entry*, s32, s32, s32);
|
||||
Gfx* func_8009C708(Gfx*, struct_8018DEE0_entry*, s32, s32, s32, s32);
|
||||
void func_8009C918(void);
|
||||
void func_8009CA2C(void);
|
||||
void func_8009CA6C(s32);
|
||||
void func_8009CBE4(s32, s32, s32);
|
||||
void func_8009CDDC(s32, s32);
|
||||
void func_8009CDFC(s32, s32);
|
||||
void func_8009CE1C(void);
|
||||
void func_8009CE64(s32);
|
||||
void func_8009D77C(s32, s32, s32);
|
||||
void func_8009D958(s32, s32);
|
||||
void func_8009D978(s32, s32);
|
||||
void func_8009D998(s32);
|
||||
void func_8009DAA8(void);
|
||||
void func_8009DB8C(void);
|
||||
void func_8009DEF8(u32, u32);
|
||||
void func_8009DF4C(s32);
|
||||
void func_8009DF6C(s32);
|
||||
void func_8009DF8C(u32, u32);
|
||||
void func_8009DFE0(s32);
|
||||
void func_8009E000(s32);
|
||||
void func_8009E020(s32, s32);
|
||||
void func_8009E088(s32, s32);
|
||||
void func_8009E0F0(s32);
|
||||
void func_8009E1C0(void);
|
||||
void func_8009E1E4(void);
|
||||
void func_8009E208(void);
|
||||
void func_8009E230(void);
|
||||
void func_8009E258(void);
|
||||
void func_8009E280(void);
|
||||
void func_8009E2A8(s32);
|
||||
void func_8009E2F0(s32);
|
||||
void func_8009E5BC(void);
|
||||
void func_8009E5FC(s32);
|
||||
void func_8009E620(void);
|
||||
void add_8018D9E0_entry(s32, s32, s32, s8);
|
||||
void func_8009F5E0(struct_8018D9E0_entry*);
|
||||
void func_800A08D8(u8, s32, s32);
|
||||
s32 func_800A095C(char*, s32, s32, s32);
|
||||
void func_800A09E0(struct_8018D9E0_entry*);
|
||||
void func_800A0AD0(struct_8018D9E0_entry*);
|
||||
void func_800A0B80(struct_8018D9E0_entry*);
|
||||
void func_800A0DFC(void);
|
||||
void func_800A0EB8(struct_8018D9E0_entry*, s32);
|
||||
void func_800A0FA4(struct_8018D9E0_entry*, s32);
|
||||
void func_800A10CC(struct_8018D9E0_entry*);
|
||||
void func_800A11D0(struct_8018D9E0_entry*, s32, s32);
|
||||
void func_800A12BC(struct_8018D9E0_entry*, MkTexture*);
|
||||
void func_800A1350(struct_8018D9E0_entry*);
|
||||
void func_800A143C(struct_8018D9E0_entry*, s32);
|
||||
void func_800A1500(struct_8018D9E0_entry*);
|
||||
void func_800A15EC(struct_8018D9E0_entry*);
|
||||
void func_800A1780(struct_8018D9E0_entry*);
|
||||
void func_800A1924(struct_8018D9E0_entry*);
|
||||
void func_800A1A20(struct_8018D9E0_entry*);
|
||||
void func_800A1BE0(struct_8018D9E0_entry*);
|
||||
void func_800A1DE0(struct_8018D9E0_entry*);
|
||||
void func_800A1F30(struct_8018D9E0_entry*);
|
||||
void func_800A1FB0(struct_8018D9E0_entry*);
|
||||
void func_800A2D1C(struct_8018D9E0_entry*);
|
||||
void func_800A2EB8(struct_8018D9E0_entry*);
|
||||
void func_800A32B4(s32, s32, s32, s32);
|
||||
void func_800A34A8(struct_8018D9E0_entry*);
|
||||
void func_800A3A10(s8*);
|
||||
void func_800A3ADC(struct_8018D9E0_entry*, s32, s32, s32, s32, s8*);
|
||||
void func_800A3C84(struct_8018D9E0_entry*);
|
||||
void func_800A3E60(struct_8018D9E0_entry*);
|
||||
void func_800A4550(s32, s32, s32);
|
||||
void func_800A474C(s32, s32, s32);
|
||||
void func_800A4A24(struct_8018D9E0_entry*);
|
||||
void render_pause_menu(struct_8018D9E0_entry*);
|
||||
void render_pause_menu_time_trials(struct_8018D9E0_entry*);
|
||||
void render_pause_menu_versus(struct_8018D9E0_entry*);
|
||||
void render_pause_grand_prix(struct_8018D9E0_entry*);
|
||||
void render_pause_battle(struct_8018D9E0_entry*);
|
||||
void func_800A54EC(void);
|
||||
void func_800A5738(struct_8018D9E0_entry*);
|
||||
void func_800A6034(struct_8018D9E0_entry*);
|
||||
void func_800A6154(struct_8018D9E0_entry*);
|
||||
void func_800A638C(struct_8018D9E0_entry*);
|
||||
void func_800A66A8(struct_8018D9E0_entry*, Unk_D_800E70A0*);
|
||||
void func_800A69C8(struct_8018D9E0_entry*);
|
||||
void func_800A6BEC(struct_8018D9E0_entry*);
|
||||
void func_800A6CC0(struct_8018D9E0_entry*);
|
||||
void func_800A6D94(s32, s32, u8*);
|
||||
void func_800A6E94(s32, s32, u8*);
|
||||
void func_800A70E8(struct_8018D9E0_entry*);
|
||||
void func_800A7258(struct_8018D9E0_entry*);
|
||||
void func_800A72FC(struct_8018D9E0_entry*);
|
||||
void func_800A7448(struct_8018D9E0_entry*);
|
||||
void func_800A75A0(struct_8018D9E0_entry*);
|
||||
void func_800A761C(struct_8018D9E0_entry*);
|
||||
void func_800A7790(struct_8018D9E0_entry*);
|
||||
void convert_number_to_ascii(s32, char*);
|
||||
void write_dashes(char*);
|
||||
void get_time_record_minutes(s32, char*);
|
||||
void get_time_record_seconds(s32, char*);
|
||||
void get_time_record_centiseconds(s32, char*);
|
||||
void func_800A79F4(s32, char*);
|
||||
void func_800A7A4C(s32);
|
||||
void func_800A8230(void);
|
||||
void func_800A8250(void);
|
||||
void func_800A8270(s32, struct_8018D9E0_entry*);
|
||||
void func_800A8564(struct_8018D9E0_entry*);
|
||||
void func_800A86E8(struct_8018D9E0_entry*);
|
||||
void func_800A874C(struct_8018D9E0_entry*);
|
||||
void func_800A890C(s32, struct_8018D9E0_entry*);
|
||||
void func_800A8A98(struct_8018D9E0_entry*);
|
||||
void func_800A8CA4(struct_8018D9E0_entry*);
|
||||
void func_800A8E14(struct_8018D9E0_entry*);
|
||||
void func_800A8EC0(struct_8018D9E0_entry*);
|
||||
void func_800A8F48(struct_8018D9E0_entry*);
|
||||
void func_800A90D4(s32, struct_8018D9E0_entry*);
|
||||
void func_800A91D8(struct_8018D9E0_entry*, s32, s32);
|
||||
void func_800A9208(struct_8018D9E0_entry*, s32);
|
||||
void func_800A9278(struct_8018D9E0_entry*, s32);
|
||||
void func_800A92E8(struct_8018D9E0_entry*, s32);
|
||||
void func_800A939C(struct_8018D9E0_entry*, s32);
|
||||
void func_800A940C(struct_8018D9E0_entry*, s32);
|
||||
void func_800A94C8(struct_8018D9E0_entry*, s32, s32);
|
||||
void func_800A954C(struct_8018D9E0_entry*);
|
||||
void func_800A9710(struct_8018D9E0_entry*);
|
||||
void func_800A97BC(struct_8018D9E0_entry*);
|
||||
void func_800A9A98(struct_8018D9E0_entry*);
|
||||
void func_800A9B9C(struct_8018D9E0_entry*);
|
||||
void func_800A9C40(struct_8018D9E0_entry*);
|
||||
void func_800A9D5C(struct_8018D9E0_entry*);
|
||||
void func_800A9E58(struct_8018D9E0_entry*);
|
||||
void func_800AA280(struct_8018D9E0_entry*);
|
||||
void func_800AA2EC(struct_8018D9E0_entry*);
|
||||
void func_800AA5C8(struct_8018D9E0_entry*, s8);
|
||||
void func_800AA69C(struct_8018D9E0_entry*);
|
||||
void func_800AAA9C(struct_8018D9E0_entry*);
|
||||
void func_800AAB90(struct_8018D9E0_entry*);
|
||||
void func_800AAC18(struct_8018D9E0_entry*);
|
||||
void func_800AADD4(struct_8018D9E0_entry*);
|
||||
void func_800AAE18(struct_8018D9E0_entry*);
|
||||
struct_8018D9E0_entry* func_800AAE68(void);
|
||||
struct_8018D9E0_entry* func_800AAEB4(s32);
|
||||
struct_8018D9E0_entry* find_8018D9E0_entry_dupe(s32);
|
||||
struct_8018D9E0_entry* find_8018D9E0_entry(s32);
|
||||
s32 func_800AAF70(s32);
|
||||
void func_800AAF94(struct_8018D9E0_entry*, s32);
|
||||
s32 func_800AAFCC(s32);
|
||||
void func_800AB020(struct_8018D9E0_entry*);
|
||||
void func_800AB098(struct_8018D9E0_entry*);
|
||||
void func_800AB164(struct_8018D9E0_entry*);
|
||||
void func_800AB260(struct_8018D9E0_entry*);
|
||||
void func_800AB290(struct_8018D9E0_entry*);
|
||||
void func_800AB314(struct_8018D9E0_entry*);
|
||||
void func_800AB904(struct_8018D9E0_entry*);
|
||||
void func_800AB9B0(struct_8018D9E0_entry*);
|
||||
void func_800ABAE8(struct_8018D9E0_entry*);
|
||||
void func_800ABB24(struct_8018D9E0_entry*);
|
||||
void func_800ABBCC(struct_8018D9E0_entry*);
|
||||
void func_800ABC38(struct_8018D9E0_entry*);
|
||||
void func_800ABCF4(struct_8018D9E0_entry*);
|
||||
void func_800ABEAC(struct_8018D9E0_entry*);
|
||||
void func_800ABF68(struct_8018D9E0_entry*);
|
||||
void func_800AC128(struct_8018D9E0_entry*);
|
||||
void func_800AC300(struct_8018D9E0_entry*);
|
||||
void func_800AC324(struct_8018D9E0_entry*);
|
||||
void func_800AC458(struct_8018D9E0_entry*);
|
||||
void func_800AC978(struct_8018D9E0_entry*);
|
||||
void func_800ACA14(struct_8018D9E0_entry*);
|
||||
void func_800ACC50(struct_8018D9E0_entry*);
|
||||
void func_800ACF40(struct_8018D9E0_entry*);
|
||||
void func_800AD1A4(struct_8018D9E0_entry*);
|
||||
void func_800AD2E8(struct_8018D9E0_entry*);
|
||||
void func_800ADF48(struct_8018D9E0_entry*);
|
||||
void func_800AE218(struct_8018D9E0_entry*);
|
||||
void func_800AEC54(struct_8018D9E0_entry*);
|
||||
void func_800AEDBC(struct_8018D9E0_entry*);
|
||||
void func_800AEE90(struct_8018D9E0_entry*);
|
||||
void func_800AEEBC(struct_8018D9E0_entry*);
|
||||
void func_800AEEE8(struct_8018D9E0_entry*);
|
||||
void func_800AEF14(struct_8018D9E0_entry*);
|
||||
void func_800AEF74(struct_8018D9E0_entry*);
|
||||
void func_800AF004(struct_8018D9E0_entry*);
|
||||
void func_800AF1AC(struct_8018D9E0_entry*);
|
||||
void func_800AF270(struct_8018D9E0_entry*);
|
||||
void func_800AF480(struct_8018D9E0_entry*);
|
||||
void func_800AF4DC(struct_8018D9E0_entry*);
|
||||
void func_800AF740(struct_8018D9E0_entry*);
|
||||
|
||||
// This really, really shouldn't be in this header file, but I don't know where else to put it
|
||||
void rmonPrintf(const char*, ...);
|
||||
void tkmk00decode(u8*, u8*, u8*, s32);
|
||||
|
||||
/* File specific defines */
|
||||
|
||||
#define D_8018D9E0_SIZE 0x20
|
||||
#define D_8018DEE0_SIZE 0x10
|
||||
#define D_8018E060_SIZE 0x10
|
||||
#define D_8018E0E8_SIZE 0x05
|
||||
#define D_8018E118_SIZE 0xC8
|
||||
#define D_8018E768_SIZE 0x08
|
||||
#define D_8018E7E8_SIZE 0x05
|
||||
#define D_8018E810_SIZE 0x05
|
||||
|
||||
/* This is where I'd put my static data, if I had any */
|
||||
|
||||
extern s32 D_800DDB24;
|
||||
extern s16 D_80164478[];
|
||||
|
||||
extern u16* D_8018D9B0;
|
||||
extern u8* D_8018D9B4;
|
||||
extern u8* D_8018D9B8;
|
||||
extern u8* D_8018D9BC;
|
||||
extern void* D_8018D9C0;
|
||||
extern s8 gGPPointsByCharacterId[8];
|
||||
extern s8 gCharacterIdByGPOverallRank[];
|
||||
extern s8 D_8018D9D8;
|
||||
extern s8 D_8018D9D9;
|
||||
extern struct_8018D9E0_entry D_8018D9E0[D_8018D9E0_SIZE];
|
||||
extern struct_8018DEE0_entry D_8018DEE0[D_8018DEE0_SIZE];
|
||||
extern struct_8018E060_entry D_8018E060[D_8018E060_SIZE];
|
||||
extern struct_8018E0E8_entry D_8018E0E8[D_8018E0E8_SIZE];
|
||||
extern s32 gD_8018E118TotalSize;
|
||||
extern struct_8018E118_entry D_8018E118[D_8018E118_SIZE];
|
||||
extern s32 gNumD_8018E118Entries;
|
||||
extern Gfx* D_8018E75C;
|
||||
extern s32 gNumD_8018E768Entries;
|
||||
extern struct_8018E768_entry D_8018E768[D_8018E768_SIZE];
|
||||
extern s32 gCycleFlashMenu;
|
||||
extern s8 D_8018E7AC[];
|
||||
extern u32 D_8018E7B8[];
|
||||
extern u32 D_8018E7D0[];
|
||||
extern s32 D_8018E7E0;
|
||||
extern struct UnkStruct_8018E7E8 D_8018E7E8[D_8018E7E8_SIZE];
|
||||
extern struct UnkStruct_8018E7E8 D_8018E810[D_8018E810_SIZE];
|
||||
extern s8 gTextColor;
|
||||
extern u8 D_8018ED90;
|
||||
extern u8 D_8018ED91;
|
||||
extern s8 D_8018E838[];
|
||||
extern s32 D_8018E840[];
|
||||
extern s32 D_8018E850[];
|
||||
extern s32 D_8018E854;
|
||||
extern s32 D_8018E858[];
|
||||
extern s32 D_8018E85C;
|
||||
|
||||
extern u8 _textures_0aSegmentRomStart[];
|
||||
extern u8 _textures_0bSegmentRomStart[];
|
||||
|
||||
extern Unk_D_800E70A0 D_800E70A0[];
|
||||
extern Unk_D_800E70A0 D_800E70E8[];
|
||||
extern Unk_D_800E70A0 D_800E7108[][4];
|
||||
extern Unk_D_800E70A0 D_800E7148[];
|
||||
extern Unk_D_800E70A0 D_800E7168[];
|
||||
extern Unk_D_800E70A0 D_800E7188[];
|
||||
extern Unk_D_800E70A0 D_800E7208[][2];
|
||||
extern Unk_D_800E70A0 D_800E7248[];
|
||||
extern Unk_D_800E70A0 D_800E7258[];
|
||||
extern Unk_D_800E70A0 D_800E7268[];
|
||||
extern Unk_D_800E70A0 D_800E7278[];
|
||||
extern Unk_D_800E70A0 D_800E72F8;
|
||||
extern Unk_D_800E70A0 D_800E7300[];
|
||||
extern Unk_D_800E70A0 D_800E7360[];
|
||||
extern Unk_D_800E70A0 D_800E7380[];
|
||||
extern Unk_D_800E70A0 D_800E7390[];
|
||||
extern Unk_D_800E70A0 D_800E73C0[];
|
||||
extern Unk_D_800E70A0 D_800E73D0[];
|
||||
extern Unk_D_800E70A0 D_800E73E0[];
|
||||
extern Unk_D_800E70A0 D_800E7410[];
|
||||
extern Unk_D_800E70A0 D_800E7420[];
|
||||
extern Unk_D_800E70A0 D_800E7430[];
|
||||
extern Unk_D_800E70A0 D_800E7458[];
|
||||
extern Unk_D_800E70A0 D_800E7480[];
|
||||
extern RGBA16 D_800E74A8[];
|
||||
extern RGBA16 D_800E74D0[];
|
||||
extern RGBA16 D_800E74E8[];
|
||||
extern const s16 gGlyphDisplayWidth[];
|
||||
extern char* gCupNames[];
|
||||
extern char* gCourseNamesDup2[];
|
||||
// Maps course IDs (as defined in the COURSES enum) to an index in a given cup's track order
|
||||
extern const s8 gPerCupIndexByCourseId[]; // D_800EFD50
|
||||
extern const s8 D_800EFD64[];
|
||||
extern s8 gCupSelectionByCourseId[];
|
||||
extern char* D_800E7678[];
|
||||
extern char* gDebugCharacterNames[];
|
||||
extern char* D_800E76A8[];
|
||||
extern char* D_800E76CC[];
|
||||
extern char* D_800E76DC[];
|
||||
extern char* gDebugScreenModeNames[];
|
||||
extern char* gDebugSoundModeNames[];
|
||||
extern char* gSoundModeNames[]; // D_800E7710
|
||||
extern char* D_800E7720[];
|
||||
extern char* D_800E7728[];
|
||||
extern char* D_800E7730;
|
||||
extern char* D_800E7734[];
|
||||
extern char* D_800E7744[];
|
||||
extern char* gTextPauseButton[];
|
||||
extern char* D_800E7778[];
|
||||
extern char D_800E7780[];
|
||||
extern char* D_800E77A0[];
|
||||
extern char* D_800E77A8[];
|
||||
extern char D_800E77B4[];
|
||||
extern char D_800E77D8[];
|
||||
extern char* sCourseLengths[];
|
||||
extern char* D_800E7834[];
|
||||
extern char* D_800E7840[];
|
||||
extern char* D_800E7848[];
|
||||
extern char* D_800E7860[];
|
||||
extern char* D_800E7868[];
|
||||
extern char* D_800E7878[];
|
||||
extern char* D_800E7884[];
|
||||
extern char* D_800E7890[];
|
||||
extern char* D_800E78D0[];
|
||||
extern char* D_800E7900[];
|
||||
extern char* D_800E7918[];
|
||||
extern char* D_800E7920[];
|
||||
extern char* D_800E7928[];
|
||||
extern char* D_800E7930[];
|
||||
extern char* D_800E7938[];
|
||||
extern char* D_800E7940[];
|
||||
extern char* D_800E7980[];
|
||||
extern char* D_800E798C[];
|
||||
extern char* D_800E7A34[];
|
||||
extern char* D_800E7A3C[];
|
||||
extern char* D_800E7A44;
|
||||
extern char* D_800E7A48[];
|
||||
extern char* D_800E7A54[];
|
||||
extern char* D_800E7A60[];
|
||||
extern char* D_800E7A6C[];
|
||||
extern char* D_800E7A74[];
|
||||
extern char* D_800E7A80[];
|
||||
extern char* D_800E7A88[];
|
||||
extern char* D_800E7A98;
|
||||
extern char* D_800E7A9C[];
|
||||
extern char* D_800E7AA4[];
|
||||
extern const s8 gGPPointRewards[];
|
||||
extern const s8 D_800F0B1C[];
|
||||
extern const s8 D_800F0B28[];
|
||||
extern const s8 D_800F0B50[];
|
||||
extern const s8 D_800F0B54[];
|
||||
extern RGBA16 D_800E7AC8[];
|
||||
extern RGBA16 D_800E7AE8[];
|
||||
extern MkTexture* D_800E7AF8[];
|
||||
extern MkTexture* D_800E7D0C[];
|
||||
extern MkAnimation* D_800E7D34[];
|
||||
extern MkTexture* D_800E7D4C[];
|
||||
extern MkTexture* D_800E7D54[];
|
||||
extern MkTexture* D_800E7D74[];
|
||||
extern MkTexture* D_800E7DC4[];
|
||||
extern MkAnimation* D_800E7E14[];
|
||||
extern MkAnimation* D_800E7E20[];
|
||||
extern MkAnimation* D_800E7E34[];
|
||||
extern MkTexture* gGlyphTextureLUT[];
|
||||
extern MkTexture* D_800E7FF0[];
|
||||
extern MkTexture* D_800E80A0[];
|
||||
extern MkTexture* D_800E8114[];
|
||||
extern MkTexture* D_800E8174[];
|
||||
extern MkTexture* D_800E817C[];
|
||||
extern MkTexture* D_800E81E4[];
|
||||
extern MkTexture* D_800E822C[];
|
||||
extern MkTexture* D_800E8234[];
|
||||
extern MkTexture* D_800E824C[];
|
||||
extern MkTexture* D_800E8254[];
|
||||
extern MkTexture* D_800E8274[];
|
||||
extern MkTexture* D_800E8294[];
|
||||
extern MkTexture* D_800E82B4[];
|
||||
extern MkTexture* D_800E82C4[];
|
||||
extern MkTexture* D_800E82F4[];
|
||||
extern MkAnimation* D_800E8320[];
|
||||
extern MkAnimation* D_800E8340[];
|
||||
extern MkAnimation* D_800E8360[];
|
||||
extern MkAnimation* gCharacterCelebrateAnimation[];
|
||||
extern MkAnimation* D_800E83A0[];
|
||||
extern MkAnimation* gCharacterDeselectAnimation[];
|
||||
extern MkAnimation* gCharacterSingleBlinkAnimation[];
|
||||
extern MkAnimation* gCharacterDoubleBlinkAnimation[];
|
||||
extern MkAnimation* gCharacterDefeatAnimation[];
|
||||
extern s32 D_800E8440[];
|
||||
extern s32 D_800E8460[];
|
||||
extern s32 D_800E8480[];
|
||||
extern s32 D_800E84A0[];
|
||||
extern Vtx* D_800E84C0[];
|
||||
extern Gfx* D_800E84CC[];
|
||||
extern Gfx* D_800E84EC[];
|
||||
extern Gfx* D_800E850C[];
|
||||
extern s8 D_800E852C;
|
||||
extern f32 D_800E8530;
|
||||
extern f32 D_800E8534;
|
||||
extern Unk_D_800E70A0 D_800E8538[];
|
||||
extern Unk_D_800E70A0 D_800E8540[];
|
||||
extern Unk_D_800E70A0 D_800E85C0[];
|
||||
extern Unk_D_800E70A0 D_800E8600[];
|
||||
|
||||
extern s32 gControllerPak1NumPagesFree;
|
||||
extern s32 gControllerPak1FileNote;
|
||||
extern s32 gControllerPak2FileNote;
|
||||
|
||||
extern f32 D_8018ED98;
|
||||
extern f32 D_8018ED9C;
|
||||
extern f32 D_8018EDA0;
|
||||
|
||||
extern f32 D_8018EDA4;
|
||||
extern f32 D_8018EDA8;
|
||||
extern f32 D_8018EDAC;
|
||||
|
||||
#endif
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
|
||||
#include "code_800AF9B0.h"
|
||||
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "memory.h"
|
||||
#include "main.h"
|
||||
#include "math_util.h"
|
||||
|
||||
+2546
-2546
File diff suppressed because it is too large
Load Diff
@@ -22,7 +22,7 @@
|
||||
#include <code_80086E70.h>
|
||||
#include <effects.h>
|
||||
#include <code_80091440.h>
|
||||
#include <code_80091750.h>
|
||||
#include <menu_items.h>
|
||||
#include <code_800AF9B0.h>
|
||||
#include <save.h>
|
||||
#include <code_80280000.h>
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
#include "effects.h"
|
||||
#include "audio/external.h"
|
||||
#include "spawn_players.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include <course.h>
|
||||
|
||||
s32 D_8018D900[8];
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include "audio/external.h"
|
||||
#include <sounds.h>
|
||||
#include "podium_ceremony_actors.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "code_80057C60.h"
|
||||
#include "defines.h"
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include "code_80280000.h"
|
||||
#include "code_80281780.h"
|
||||
#include "skybox_and_splitscreen.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "code_8006E9C0.h"
|
||||
#include "code_800029B0.h"
|
||||
#include "ceremony_and_credits.h"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#include "collision.h"
|
||||
#include "code_80281C40.h"
|
||||
#include "code_800029B0.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "main.h"
|
||||
#include "menus.h"
|
||||
#include "render_courses.h"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "skybox_and_splitscreen.h"
|
||||
#include "render_objects.h"
|
||||
#include "code_80057C60.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "podium_ceremony_actors.h"
|
||||
#include "ceremony_and_credits.h"
|
||||
#include "podium_ceremony_actors.h"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "credits.h"
|
||||
#include "defines.h"
|
||||
|
||||
struct_802850C0_entry D_802850C0[] = {
|
||||
CreditsRenderInfo gCreditsTextRenderInfo[] = {
|
||||
{ 0.80f, -200, 38, 160, 30, SLIDE_RIGHT, TEXT_BLUE_GREEN_RED_CYCLE_1, 0 },
|
||||
{ 0.90f, 520, 200, 160, 200, SLIDE_LEFT, TEXT_BLUE, 0 },
|
||||
{ 0.80f, -200, 38, 160, 30, SLIDE_RIGHT, TEXT_BLUE_GREEN_RED_CYCLE_1, 0 },
|
||||
@@ -67,7 +67,7 @@ struct_802850C0_entry D_802850C0[] = {
|
||||
{ 0.90f, 520, 130, 160, 130, SLIDE_LEFT, TEXT_YELLOW, 0 },
|
||||
};
|
||||
|
||||
char* D_802854B0[] = {
|
||||
char* gCreditsText[] = {
|
||||
// English Credits
|
||||
"executive producer", "hiroshi yamauchi", "producer", "shigeru miyamoto", "director", "hideki konno",
|
||||
"assistant director", "yasuyuki oyagi", "programmer", "masato kimura", "kenji yamamoto", "yasuhiro kawaguchi",
|
||||
|
||||
@@ -19,9 +19,9 @@ typedef struct {
|
||||
/* 0x0C */ s8 slideDirection; // 0 for slide right, 1 for slide left. May have other uses/effects
|
||||
/* 0x0D */ s8 textColor;
|
||||
/* 0x0E */ s16 padding; // Always seems to be 0, never read (that I can see)
|
||||
} struct_802850C0_entry; // size = 0x10
|
||||
} CreditsRenderInfo; // size = 0x10
|
||||
|
||||
extern struct_802850C0_entry D_802850C0[]; // D_802850C0
|
||||
extern char* D_802854B0[];
|
||||
extern CreditsRenderInfo gCreditsTextRenderInfo[]; // gCreditsTextRenderInfo
|
||||
extern char* gCreditsText[];
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@
|
||||
#include "code_800029B0.h"
|
||||
#include "code_80280000.h"
|
||||
#include "podium_ceremony_actors.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "code_80057C60.h"
|
||||
#include "profiler.h"
|
||||
#include "player_controller.h"
|
||||
|
||||
+2958
-2888
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,853 @@
|
||||
#ifndef CODE_80091750_H
|
||||
#define CODE_80091750_H
|
||||
|
||||
#include <common_structs.h>
|
||||
#include "textures.h"
|
||||
#include "main.h"
|
||||
|
||||
extern u32 _course_mario_raceway_dl_mio0SegmentRomStart[];
|
||||
|
||||
/* File specific types */
|
||||
|
||||
/*
|
||||
Known `types` for `MenuItem`
|
||||
0x53: "Mushroom Cup" box on the cup selection screen
|
||||
0x54: "Flower Cup" box on the cup selection screen
|
||||
0x55: "Star Cup" box on the cup selection screen
|
||||
0x56: "Special Cup" box on the cup selection screen
|
||||
0x5E: A box of static over the course images as the cup selection screen loads in.
|
||||
It is near unnoticeable though as in practice it doesn't last long enough to be seen.
|
||||
Try locking the word at `8018DC80` to see something like 0x20 just before confirming character selection to make
|
||||
it last longer See `func_80096CD8` for the actual drawing of the static
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 type; // id maybe?
|
||||
/* 0x04 */ s32 state; // sound mode, maybe some other stuff
|
||||
/* 0x08 */ s32 subState; // This is used but I can't tell what for
|
||||
/* 0x0C */ s32 column;
|
||||
/* 0x10 */ s32 row;
|
||||
/* 0x14 */ u8 priority; // priority/depth/z-level. Higher values are drawn on top of lower values
|
||||
// If equal, later entries in gMenuItems are on top
|
||||
/* 0x15 */ bool8 visible; // active? If 1 its displayed, if 0 its not
|
||||
// These seem to be generic space available for use by the struct, no 1 purpose for any given member
|
||||
/* 0x16 */ s16 unused; // Unused
|
||||
/* 0x18 */ s32 D_8018DEE0_index; // Index in D_8018DEE0, an array of some other struct type
|
||||
/* 0x1C */ s32 param1; // Multi use. Sometimes cup selection, sometimes course index.
|
||||
/* 0x20 */ s32 param2; // Multi use, hard to tell what for though. Sometimes a random number, sometimes GP points
|
||||
/* 0x24 */ f32 paramf; // Multi use, x scaling for some things, rotation multiplier for the question box in some
|
||||
// menus, probably some other things
|
||||
} MenuItem; // size = 0x28
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ MkAnimation* textureSequence;
|
||||
/* 0x04 */ s32 sequenceIndex; // Index in textureSequence that the animation is currently on
|
||||
/* 0x08 */ s32 frameCountDown; // Frames left for the given animation part
|
||||
/* 0x0C */ u32 visible; // visbile if 0x80000000, otherwise invisbile AND paused
|
||||
/* 0x10 */ s32 menuTextureIndex; // Don't know what sMenuTextureMap tracks
|
||||
/* 0x14 */ s32 unk14; // Flip flops between 0 and 1, use unknown
|
||||
} struct_8018DEE0_entry; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ MenuTexture* texture;
|
||||
/* 0x4 */ s32 texNum;
|
||||
} struct_8018E060_entry; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ MenuTexture* mk64Texture;
|
||||
/* 0x4 */ s16 unk4;
|
||||
/* 0x6 */ s16 unk6;
|
||||
} struct_8018E0E8_entry; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u64* textureData; // This should be interpreted as a segmented address
|
||||
/**
|
||||
* Its hard to tell what exactly what this is meant to be,
|
||||
* but it appears to be used as some sort of offset/index from the address stored in gMenuTextureBuffer.
|
||||
* This value is (roughly) the sum of (width * height) of the
|
||||
* textures in all the previous entries in sMenuTextureMap
|
||||
*/
|
||||
/* 0x04 */ s32 offset;
|
||||
} TextureMap; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ MenuTexture* textures;
|
||||
/* 0x04 */ Gfx* displayList;
|
||||
} struct_8018E768_entry; // size = 0x08
|
||||
|
||||
struct UnkStruct_8018E7E8 {
|
||||
/* 0x0 */ s16 x;
|
||||
/* 0x2 */ s16 y;
|
||||
/* 0x4 */ s16 unk1;
|
||||
/* 0x6 */ s16 unk2;
|
||||
}; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 column;
|
||||
/* 0x02 */ s16 row;
|
||||
/* 0x04 */ s16 pad0;
|
||||
/* 0x06 */ s16 pad1;
|
||||
} Unk_D_800E70A0; // size = 0x08
|
||||
|
||||
enum MENU_ITEM_PRIORITY {
|
||||
MENU_ITEM_PRIORITY_0,
|
||||
MENU_ITEM_PRIORITY_1,
|
||||
MENU_ITEM_PRIORITY_2,
|
||||
MENU_ITEM_PRIORITY_3,
|
||||
MENU_ITEM_PRIORITY_4,
|
||||
MENU_ITEM_PRIORITY_5,
|
||||
MENU_ITEM_PRIORITY_6,
|
||||
MENU_ITEM_PRIORITY_7,
|
||||
MENU_ITEM_PRIORITY_8,
|
||||
MENU_ITEM_PRIORITY_9,
|
||||
MENU_ITEM_PRIORITY_A,
|
||||
MENU_ITEM_PRIORITY_B,
|
||||
MENU_ITEM_PRIORITY_C,
|
||||
MENU_ITEM_PRIORITY_D,
|
||||
MENU_ITEM_PRIORITY_E,
|
||||
MENU_ITEM_PRIORITY_F,
|
||||
MENU_ITEM_PRIORITY_MAX // 0x10
|
||||
};
|
||||
|
||||
enum CenterText { LEFT_TEXT = 1, CENTER_TEXT_MODE_1, RIGHT_TEXT, CENTER_TEXT_MODE_2 };
|
||||
|
||||
enum MENU_ITEM_TYPE {
|
||||
MENU_ITEM_UI_NONE,
|
||||
MENU_ITEM_UI_START_BACKGROUND,
|
||||
MENU_ITEM_UI_LOGO_AND_COPYRIGHT,
|
||||
MENU_ITEM_UI_PUSH_START_BUTTON,
|
||||
MENU_ITEM_UI_NO_CONTROLLER,
|
||||
MENU_ITEM_UI_START_RECORD_TIME,
|
||||
MENU_ITEM_UI_GAME_SELECT = 0xA,
|
||||
MENU_ITEM_UI_1P_GAME,
|
||||
MENU_ITEM_UI_2P_GAME,
|
||||
MENU_ITEM_UI_3P_GAME,
|
||||
MENU_ITEM_UI_4P_GAME,
|
||||
MENU_ITEM_UI_OK,
|
||||
MAIN_MENU_OPTION_GFX,
|
||||
MAIN_MENU_DATA_GFX,
|
||||
MAIN_MENU_50CC,
|
||||
MAIN_MENU_100CC,
|
||||
MAIN_MENU_150CC,
|
||||
MAIN_MENU_EXTRA_CC,
|
||||
MENU_ITEM_TYPE_016,
|
||||
MENU_ITEM_TYPE_017,
|
||||
MAIN_MENU_TIME_TRIALS_BEGIN,
|
||||
MAIN_MENU_TIME_TRIALS_DATA,
|
||||
MENU_ITEM_TYPE_01B = 0x1B,
|
||||
MAIN_MENU_BACKGROUND = 0x23,
|
||||
CHARACTER_SELECT_BACKGROUND,
|
||||
COURSE_SELECT_BACKGROUND,
|
||||
CHARACTER_SELECT_MENU_PLAYER_SELECT_BANNER = 0x2A,
|
||||
CHARACTER_SELECT_MENU_MARIO,
|
||||
CHARACTER_SELECT_MENU_LUIGI,
|
||||
CHARACTER_SELECT_MENU_TOAD,
|
||||
CHARACTER_SELECT_MENU_PEACH,
|
||||
CHARACTER_SELECT_MENU_YOSHI,
|
||||
CHARACTER_SELECT_MENU_DK,
|
||||
CHARACTER_SELECT_MENU_WARIO,
|
||||
CHARACTER_SELECT_MENU_BOWSER,
|
||||
CHARACTER_SELECT_MENU_OK,
|
||||
CHARACTER_SELECT_MENU_1P_CURSOR,
|
||||
CHARACTER_SELECT_MENU_2P_CURSOR,
|
||||
CHARACTER_SELECT_MENU_3P_CURSOR,
|
||||
CHARACTER_SELECT_MENU_4P_CURSOR,
|
||||
MENU_ITEM_TYPE_043 = 0x43,
|
||||
MENU_ITEM_TYPE_044,
|
||||
MENU_ITEM_TYPE_045,
|
||||
MENU_ITEM_TYPE_046,
|
||||
MENU_ITEM_TYPE_047,
|
||||
MENU_ITEM_TYPE_048,
|
||||
MENU_ITEM_TYPE_049,
|
||||
MENU_ITEM_TYPE_050 = 0x50,
|
||||
COURSE_SELECT_MAP_SELECT = 0x52,
|
||||
COURSE_SELECT_MUSHROOM_CUP,
|
||||
COURSE_SELECT_FLOWER_CUP,
|
||||
COURSE_SELECT_STAR_CUP,
|
||||
COURSE_SELECT_SPECIAL_CUP,
|
||||
MENU_ITEM_TYPE_058 = 0x58,
|
||||
COURSE_SELECT_COURSE_NAMES,
|
||||
MENU_ITEM_TYPE_05A,
|
||||
MENU_ITEM_TYPE_05B,
|
||||
COURSE_SELECT_BATTLE_NAMES,
|
||||
COURSE_SELECT_OK,
|
||||
MENU_ITEM_TYPE_05E,
|
||||
MENU_ITEM_TYPE_05F,
|
||||
MENU_ITEM_TYPE_060,
|
||||
MENU_ITEM_TYPE_061,
|
||||
MENU_ITEM_TYPE_062,
|
||||
MENU_ITEM_TYPE_064 = 0x64,
|
||||
MENU_ITEM_TYPE_065,
|
||||
MENU_ITEM_TYPE_066,
|
||||
MENU_ITEM_TYPE_067,
|
||||
MENU_ITEM_TYPE_068,
|
||||
MENU_ITEM_TYPE_069,
|
||||
MENU_ITEM_TYPE_06E = 0x6E,
|
||||
MENU_ITEM_TYPE_078 = 0x78,
|
||||
MENU_ITEM_TYPE_079,
|
||||
MENU_ITEM_TYPE_07A,
|
||||
MENU_ITEM_TYPE_07B,
|
||||
MENU_ITEM_TYPE_07C,
|
||||
MENU_ITEM_TYPE_07D,
|
||||
MENU_ITEM_TYPE_07E,
|
||||
MENU_ITEM_TYPE_07F,
|
||||
MENU_ITEM_TYPE_080,
|
||||
MENU_ITEM_TYPE_081,
|
||||
MENU_ITEM_TYPE_082,
|
||||
MENU_ITEM_TYPE_083,
|
||||
MENU_ITEM_TYPE_084,
|
||||
MENU_ITEM_TYPE_085,
|
||||
MENU_ITEM_TYPE_086,
|
||||
MENU_ITEM_TYPE_087,
|
||||
MENU_ITEM_TYPE_088,
|
||||
MENU_ITEM_TYPE_089,
|
||||
MENU_ITEM_TYPE_08A,
|
||||
MENU_ITEM_TYPE_08B,
|
||||
MENU_ITEM_TYPE_08C,
|
||||
MENU_ITEM_TYPE_08D,
|
||||
MENU_ITEM_TYPE_096 = 0x96,
|
||||
MENU_ITEM_TYPE_097,
|
||||
MENU_ITEM_TYPE_098,
|
||||
MENU_ITEM_TYPE_0A0 = 0xA0,
|
||||
MENU_ITEM_TYPE_0A1,
|
||||
MENU_ITEM_TYPE_0AA = 0xAA,
|
||||
MENU_ITEM_TYPE_0AB,
|
||||
MENU_ITEM_TYPE_0AC,
|
||||
MENU_ITEM_TYPE_0AF = 0XAF,
|
||||
MENU_ITEM_TYPE_0B0,
|
||||
MENU_ITEM_TYPE_0B1,
|
||||
MENU_ITEM_TYPE_0B2,
|
||||
MENU_ITEM_TYPE_0B3,
|
||||
MENU_ITEM_TYPE_0B4,
|
||||
MENU_ITEM_TYPE_0B9 = 0xB9,
|
||||
MENU_ITEM_TYPE_0BA,
|
||||
MENU_ITEM_TYPE_0BB,
|
||||
MENU_ITEM_ANNOUNCE_GHOST,
|
||||
MENU_ITEM_END_COURSE_OPTION,
|
||||
MENU_ITEM_TYPE_0BE,
|
||||
MENU_ITEM_PAUSE = 0xC7,
|
||||
MENU_ITEM_TYPE_0D2 = 0xD2,
|
||||
MENU_ITEM_TYPE_0D3,
|
||||
MENU_ITEM_TYPE_0D4,
|
||||
MENU_ITEM_TYPE_0D5,
|
||||
MENU_ITEM_TYPE_0D6,
|
||||
MENU_ITEM_TYPE_0D7,
|
||||
MENU_ITEM_TYPE_0D8,
|
||||
MENU_ITEM_TYPE_0D9,
|
||||
MENU_ITEM_TYPE_0DA,
|
||||
MENU_ITEM_DATA_COURSE_IMAGE = 0xE6,
|
||||
MENU_ITEM_DATA_COURSE_INFO,
|
||||
MENU_ITEM_DATA_COURSE_SELECTABLE,
|
||||
MENU_ITEM_TYPE_0E9,
|
||||
MENU_ITEM_TYPE_0EA,
|
||||
MENU_ITEM_TYPE_0F0 = 0xF0,
|
||||
MENU_ITEM_TYPE_0F1,
|
||||
MENU_ITEM_UI_LOGO_INTRO = 0xFA,
|
||||
START_MENU_FLAG,
|
||||
MENU_ITEM_TYPE_10E = 0x10E,
|
||||
MENU_ITEM_TYPE_12B = 0X12B,
|
||||
MENU_ITEM_TYPE_12C,
|
||||
MENU_ITEM_TYPE_12D,
|
||||
MENU_ITEM_TYPE_12E,
|
||||
MENU_ITEM_TYPE_12F,
|
||||
MENU_ITEM_TYPE_130,
|
||||
MENU_ITEM_TYPE_190 = 0x190,
|
||||
MENU_ITEM_TYPE_191,
|
||||
MENU_ITEM_TYPE_192,
|
||||
MENU_ITEM_TYPE_193,
|
||||
MENU_ITEM_TYPE_194,
|
||||
MENU_ITEM_TYPE_195,
|
||||
MENU_ITEM_TYPE_196,
|
||||
MENU_ITEM_TYPE_197,
|
||||
MENU_ITEM_TYPE_198,
|
||||
MENU_ITEM_TYPE_199,
|
||||
MENU_ITEM_TYPE_19A,
|
||||
MENU_ITEM_TYPE_19B,
|
||||
MENU_ITEM_TYPE_19C,
|
||||
MENU_ITEM_TYPE_19D,
|
||||
MENU_ITEM_TYPE_19E,
|
||||
MENU_ITEM_TYPE_19F,
|
||||
MENU_ITEM_TYPE_1A0,
|
||||
MENU_ITEM_TYPE_1A1,
|
||||
MENU_ITEM_TYPE_1A2,
|
||||
MENU_ITEM_TYPE_1A3,
|
||||
MENU_ITEM_TYPE_1A4,
|
||||
MENU_ITEM_TYPE_1A5,
|
||||
MENU_ITEM_TYPE_1A6,
|
||||
MENU_ITEM_TYPE_1A7,
|
||||
MENU_ITEM_TYPE_1A8,
|
||||
MENU_ITEM_TYPE_1A9,
|
||||
MENU_ITEM_TYPE_1AA,
|
||||
MENU_ITEM_TYPE_1AB,
|
||||
MENU_ITEM_TYPE_1AC,
|
||||
MENU_ITEM_TYPE_1AD,
|
||||
MENU_ITEM_TYPE_1AE,
|
||||
MENU_ITEM_TYPE_1AF,
|
||||
MENU_ITEM_TYPE_1B0,
|
||||
MENU_ITEM_TYPE_1B1,
|
||||
MENU_ITEM_TYPE_1B2,
|
||||
MENU_ITEM_TYPE_1B3,
|
||||
MENU_ITEM_TYPE_1B4,
|
||||
MENU_ITEM_TYPE_1B5,
|
||||
MENU_ITEM_TYPE_1B6,
|
||||
MENU_ITEM_TYPE_1B7,
|
||||
MENU_ITEM_TYPE_1B8,
|
||||
MENU_ITEM_TYPE_1B9,
|
||||
MENU_ITEM_TYPE_1BA,
|
||||
MENU_ITEM_TYPE_1BB,
|
||||
MENU_ITEM_TYPE_1BC,
|
||||
MENU_ITEM_TYPE_1BD,
|
||||
MENU_ITEM_TYPE_1BE,
|
||||
MENU_ITEM_TYPE_1BF,
|
||||
MENU_ITEM_TYPE_1C0,
|
||||
MENU_ITEM_TYPE_1C1,
|
||||
MENU_ITEM_TYPE_1C2,
|
||||
MENU_ITEM_TYPE_1C3,
|
||||
MENU_ITEM_TYPE_1C4,
|
||||
MENU_ITEM_TYPE_1C5,
|
||||
MENU_ITEM_TYPE_1C6,
|
||||
MENU_ITEM_TYPE_1C7,
|
||||
MENU_ITEM_TYPE_1C8,
|
||||
MENU_ITEM_TYPE_1C9,
|
||||
MENU_ITEM_TYPE_1CA,
|
||||
MENU_ITEM_TYPE_1CB,
|
||||
MENU_ITEM_TYPE_1CC,
|
||||
MENU_ITEM_TYPE_1CD,
|
||||
MENU_ITEM_TYPE_1CE
|
||||
};
|
||||
|
||||
enum LoadImgCompType {
|
||||
LOAD_MENU_IMG_MIO0_ONCE = -1,
|
||||
LOAD_MENU_IMG_TKMK00_ONCE,
|
||||
// Force load image even if the data is loaded before
|
||||
LOAD_MENU_IMG_FORCE = LOAD_MENU_IMG_TKMK00_ONCE, // 0
|
||||
LOAD_MENU_IMG_MIO0_FORCE,
|
||||
LOAD_MENU_IMG_TKMK00_FORCE
|
||||
};
|
||||
|
||||
enum TEXT_MENU_ID { CONTINUE_GAME, RETRY, COURSE_CHANGE, DRIVER_CHANGE, QUIT_TEXT_MENU, REPLAY, SAVE_GHOST };
|
||||
|
||||
/* Function Prototypes */
|
||||
|
||||
f64 exponent_by_squaring(f64, s32);
|
||||
f64 func_800917B0(f64, f64);
|
||||
f64 func_8009186C(f64);
|
||||
f64 func_8009195C(f64);
|
||||
f64 func_80091A6C(f64, s32);
|
||||
f64 func_80091AC0(f64, s32*);
|
||||
void swap_values(s32*, s32*);
|
||||
s32 func_80091D74(void);
|
||||
void func_80091EE4(void);
|
||||
void func_80091FA4(void);
|
||||
void func_80092148(void);
|
||||
void func_800921B4(void);
|
||||
void text_rainbow_effect(s32, s32, s32);
|
||||
void set_text_color_rainbow_if_selected(s32, s32, s32);
|
||||
void func_80092258(void);
|
||||
void func_80092290(s32, s32*, s32*);
|
||||
void func_80092500(void);
|
||||
void func_80092564(void);
|
||||
void func_800925A0(void);
|
||||
void func_800925CC(void);
|
||||
void func_80092604(void);
|
||||
void func_80092630(void);
|
||||
void func_8009265C(void);
|
||||
void func_80092688(void);
|
||||
void func_80092C80(void);
|
||||
s32 char_to_glyph_index(char*);
|
||||
s32 func_80092DF8(char*);
|
||||
s32 func_80092E1C(char*);
|
||||
s32 func_80092EE4(char*);
|
||||
s32 get_string_width(char*);
|
||||
void set_text_color(s32);
|
||||
void func_800930E4(s32, s32, char*);
|
||||
void print_text0(s32, s32, char*, s32, f32, f32, s32);
|
||||
void print_text_mode_1(s32, s32, char*, s32, f32, f32);
|
||||
void print_text_mode_2(s32, s32, char*, s32, f32, f32);
|
||||
void print_text1(s32, s32, char*, s32, f32, f32, s32);
|
||||
void print_text1_left(s32, s32, char*, s32, f32, f32);
|
||||
void print_text1_center_mode_1(s32, s32, char*, s32, f32, f32);
|
||||
void print_text1_right(s32, s32, char*, s32, f32, f32);
|
||||
void print_text1_center_mode_2(s32, s32, char*, s32, f32, f32);
|
||||
void print_text2(s32, s32, char*, s32, f32, f32, s32);
|
||||
void func_800939C8(s32, s32, char*, s32, f32, f32);
|
||||
void text_draw(s32, s32, char*, s32, f32, f32);
|
||||
void func_80093A30(s32);
|
||||
void func_80093A5C(u32);
|
||||
void func_80093B70(u32);
|
||||
void func_80093C1C(s32);
|
||||
void func_80093C88(void);
|
||||
void func_80093C90(void);
|
||||
void func_80093C98(s32);
|
||||
void func_80093E20(void);
|
||||
void func_80093E40(void);
|
||||
void func_80093E60(void);
|
||||
void func_80093F10(void);
|
||||
void func_800940EC(s32);
|
||||
void func_800942D0(void);
|
||||
void func_80094660(struct GfxPool*, s32);
|
||||
void render_checkered_flag(struct GfxPool*, s32);
|
||||
void func_80094A64(struct GfxPool*);
|
||||
void setup_menus(void);
|
||||
void func_80095574(void);
|
||||
Gfx* draw_flash_select_case(Gfx*, s32, s32, s32, s32, s32);
|
||||
Gfx* draw_flash_select_case_slow(Gfx*, s32, s32, s32, s32);
|
||||
Gfx* draw_flash_select_case_fast(Gfx*, s32, s32, s32, s32);
|
||||
Gfx* func_800959F8(Gfx*, Vtx*);
|
||||
Gfx* func_80095BD0(Gfx*, u8*, f32, f32, u32, u32, f32, f32);
|
||||
Gfx* func_80095E10(Gfx*, s8, s32, s32, s32, s32, s32, s32, s32, s32, u8*, u32, u32);
|
||||
Gfx* func_800963F0(Gfx*, s8, s32, s32, f32, f32, s32, s32, s32, s32, s32, s32, u8*, u32, u32);
|
||||
Gfx* func_80096CD8(Gfx*, s32, s32, u32, u32);
|
||||
Gfx* func_80097274(Gfx* displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8,
|
||||
s32 arg9, u16* argA, u32 argB, u32 argC, s32 argD);
|
||||
Gfx* func_80097A14(Gfx*, s8, s32, s32, s32, s32, s32, s32, u8*, u32, u32);
|
||||
Gfx* func_80097AE4(Gfx*, s8, s32, s32, u8*, s32);
|
||||
Gfx* func_80097E58(Gfx* displayListHead, s8 fmt, u32 arg2, u32 arg3, u32 arg4, u32 arg5, s32 arg6, s32 arg7,
|
||||
u8* someTexture, u32 arg9, u32 argA, s32 width);
|
||||
Gfx* func_80098558(Gfx*, u32, u32, u32, u32, u32, u32, s32, s32);
|
||||
Gfx* func_800987D0(Gfx*, u32, u32, u32, u32, s32, s32, u8*, u32, s32);
|
||||
Gfx* draw_box_fill(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32);
|
||||
Gfx* draw_box(Gfx*, s32, s32, s32, s32, u32, u32, u32, u32);
|
||||
Gfx* func_80098FC8(Gfx*, s32, s32, s32, s32);
|
||||
void dma_copy_base_729a30(u64*, size_t, void*);
|
||||
void dma_copy_base_7fa3c0(u64*, size_t, void*);
|
||||
void clear_menu_textures(void);
|
||||
void load_menu_img(MenuTexture*);
|
||||
void* segmented_to_virtual_dupe(const void*);
|
||||
void* segmented_to_virtual_dupe_2(const void*);
|
||||
void load_menu_img_mio0_forced(MenuTexture*);
|
||||
void load_menu_img_comp_type(MenuTexture*, s32);
|
||||
void func_80099958(MenuTexture*, s32, s32);
|
||||
void func_80099E54(void);
|
||||
void func_80099E60(MenuTexture*, s32, s32);
|
||||
void func_80099EC4(void);
|
||||
void func_80099A70(void);
|
||||
void func_80099A94(MenuTexture*, s32);
|
||||
void func_80099AEC(void);
|
||||
void func_8009A238(MenuTexture*, s32);
|
||||
void func_8009A2F0(struct_8018E0E8_entry*);
|
||||
void func_8009A344(void);
|
||||
s32 animate_character_select_menu(MkAnimation*);
|
||||
s32 func_8009A478(MkAnimation*, s32);
|
||||
void func_8009A594(s32, s32, MkAnimation*);
|
||||
void func_8009A640(s32, s32, s32, MkAnimation*);
|
||||
void func_8009A6D4(void);
|
||||
void func_8009A76C(s32, s32, s32, s32);
|
||||
void func_8009A7EC(s32, s32, s32, s32, s32);
|
||||
MenuTexture* func_8009A878(struct_8018DEE0_entry*);
|
||||
MenuTexture* func_8009A944(struct_8018DEE0_entry*, s32);
|
||||
void func_8009A9FC(s32, s32, u32, s32);
|
||||
void func_8009AB7C(s32);
|
||||
void func_8009AD78(s32, s32);
|
||||
void convert_img_to_greyscale(s32, u32);
|
||||
void adjust_img_colour(s32, s32, s32, s32, s32);
|
||||
u16* func_8009B8C4(u64*);
|
||||
void func_8009B938(void);
|
||||
void func_8009B954(MenuTexture*);
|
||||
void func_8009B998(void);
|
||||
Gfx* func_8009B9D0(Gfx*, MenuTexture*);
|
||||
Gfx* render_menu_textures(Gfx*, MenuTexture*, s32, s32);
|
||||
Gfx* func_8009BC9C(Gfx*, MenuTexture*, s32, s32, s32, s32);
|
||||
Gfx* print_letter(Gfx*, MenuTexture*, f32, f32, s32, f32, f32);
|
||||
Gfx* func_8009C204(Gfx*, MenuTexture*, s32, s32, s32);
|
||||
Gfx* func_8009C434(Gfx*, struct_8018DEE0_entry*, s32, s32, s32);
|
||||
Gfx* func_8009C708(Gfx*, struct_8018DEE0_entry*, s32, s32, s32, s32);
|
||||
void func_8009C918(void);
|
||||
void func_8009CA2C(void);
|
||||
void func_8009CA6C(s32);
|
||||
void func_8009CBE4(s32, s32, s32);
|
||||
void func_8009CDDC(s32, s32);
|
||||
void func_8009CDFC(s32, s32);
|
||||
void func_8009CE1C(void);
|
||||
void func_8009CE64(s32);
|
||||
void func_8009D77C(s32, s32, s32);
|
||||
void func_8009D958(s32, s32);
|
||||
void func_8009D978(s32, s32);
|
||||
void func_8009D998(s32);
|
||||
void func_8009DAA8(void);
|
||||
void func_8009DB8C(void);
|
||||
void func_8009DEF8(u32, u32);
|
||||
void func_8009DF4C(s32);
|
||||
void func_8009DF6C(s32);
|
||||
void func_8009DF8C(u32, u32);
|
||||
void func_8009DFE0(s32);
|
||||
void func_8009E000(s32);
|
||||
void func_8009E020(s32, s32);
|
||||
void func_8009E088(s32, s32);
|
||||
void func_8009E0F0(s32);
|
||||
void func_8009E1C0(void);
|
||||
void func_8009E1E4(void);
|
||||
void func_8009E208(void);
|
||||
void func_8009E230(void);
|
||||
void func_8009E258(void);
|
||||
void func_8009E280(void);
|
||||
void func_8009E2A8(s32);
|
||||
void func_8009E2F0(s32);
|
||||
void func_8009E5BC(void);
|
||||
void func_8009E5FC(s32);
|
||||
void clear_menus(void);
|
||||
void add_menu_item(s32, s32, s32, s8);
|
||||
void render_menus(MenuItem*);
|
||||
void func_800A08D8(u8, s32, s32);
|
||||
s32 func_800A095C(char*, s32, s32, s32);
|
||||
void func_800A09E0(MenuItem*);
|
||||
void func_800A0AD0(MenuItem*);
|
||||
void func_800A0B80(MenuItem*);
|
||||
void func_800A0DFC(void);
|
||||
void func_800A0EB8(MenuItem*, s32);
|
||||
void func_800A0FA4(MenuItem*, s32);
|
||||
void func_800A10CC(MenuItem*);
|
||||
void render_cursor_player(MenuItem*, s32, s32);
|
||||
void func_800A12BC(MenuItem*, MenuTexture*);
|
||||
void func_800A1350(MenuItem*);
|
||||
void func_800A143C(MenuItem*, s32);
|
||||
void func_800A1500(MenuItem*);
|
||||
void func_800A15EC(MenuItem*);
|
||||
void func_800A1780(MenuItem*);
|
||||
void render_menu_item_data_course_image(MenuItem*);
|
||||
void render_menu_item_data_course_info(MenuItem*);
|
||||
void menu_item_data_course_selectable(MenuItem*);
|
||||
void func_800A1DE0(MenuItem*);
|
||||
void func_800A1F30(MenuItem*);
|
||||
void func_800A1FB0(MenuItem*);
|
||||
void func_800A2D1C(MenuItem*);
|
||||
void func_800A2EB8(MenuItem*);
|
||||
void func_800A32B4(s32, s32, s32, s32);
|
||||
void func_800A34A8(MenuItem*);
|
||||
void func_800A3A10(s8*);
|
||||
void func_800A3ADC(MenuItem*, s32, s32, s32, s32, s8*);
|
||||
void time_trials_finish_text_render(MenuItem*);
|
||||
void func_800A3E60(MenuItem*);
|
||||
void render_lap_time(s32, s32, s32);
|
||||
void render_lap_times(s32, s32, s32);
|
||||
void render_menu_item_announce_ghost(MenuItem*);
|
||||
void render_pause_menu(MenuItem*);
|
||||
void render_pause_menu_time_trials(MenuItem*);
|
||||
void render_pause_menu_versus(MenuItem*);
|
||||
void render_pause_grand_prix(MenuItem*);
|
||||
void render_pause_battle(MenuItem*);
|
||||
void func_800A54EC(void);
|
||||
void render_menu_item_end_course_option(MenuItem*);
|
||||
void func_800A6034(MenuItem*);
|
||||
void func_800A6154(MenuItem*);
|
||||
void func_800A638C(MenuItem*);
|
||||
void func_800A66A8(MenuItem*, Unk_D_800E70A0*);
|
||||
void func_800A69C8(MenuItem*);
|
||||
void func_800A6BEC(MenuItem*);
|
||||
void func_800A6CC0(MenuItem*);
|
||||
void func_800A6D94(s32, s32, u8*);
|
||||
void func_800A6E94(s32, s32, u8*);
|
||||
void func_800A70E8(MenuItem*);
|
||||
void func_800A7258(MenuItem*);
|
||||
void func_800A72FC(MenuItem*);
|
||||
void func_800A7448(MenuItem*);
|
||||
void func_800A75A0(MenuItem*);
|
||||
void func_800A761C(MenuItem*);
|
||||
void menu_item_credits_render(MenuItem*);
|
||||
void convert_number_to_ascii(s32, char*);
|
||||
void write_dashes(char*);
|
||||
void get_time_record_minutes(s32, char*);
|
||||
void get_time_record_seconds(s32, char*);
|
||||
void get_time_record_centiseconds(s32, char*);
|
||||
void func_800A79F4(s32, char*);
|
||||
void handle_menus_with_pri_arg(s32);
|
||||
void handle_menus_default(void);
|
||||
void handle_menus_special(void);
|
||||
void func_800A8270(s32, MenuItem*);
|
||||
void func_800A8564(MenuItem*);
|
||||
void func_800A86E8(MenuItem*);
|
||||
void func_800A874C(MenuItem*);
|
||||
void func_800A890C(s32, MenuItem*);
|
||||
void func_800A8A98(MenuItem*);
|
||||
void func_800A8CA4(MenuItem*);
|
||||
void render_battle_introduction(MenuItem*);
|
||||
void func_800A8EC0(MenuItem*);
|
||||
void func_800A8F48(MenuItem*);
|
||||
void func_800A90D4(s32, MenuItem*);
|
||||
void func_800A91D8(MenuItem*, s32, s32);
|
||||
void func_800A9208(MenuItem*, s32);
|
||||
void func_800A9278(MenuItem*, s32);
|
||||
void func_800A92E8(MenuItem*, s32);
|
||||
void func_800A939C(MenuItem*, s32);
|
||||
void func_800A940C(MenuItem*, s32);
|
||||
void func_800A94C8(MenuItem*, s32, s32);
|
||||
void func_800A954C(MenuItem*);
|
||||
void func_800A9710(MenuItem*);
|
||||
void func_800A97BC(MenuItem*);
|
||||
void update_ok_menu_item(MenuItem*);
|
||||
void func_800A9B9C(MenuItem*);
|
||||
void func_800A9C40(MenuItem*);
|
||||
void func_800A9D5C(MenuItem*);
|
||||
void func_800A9E58(MenuItem*);
|
||||
void func_800AA280(MenuItem*);
|
||||
void func_800AA2EC(MenuItem*);
|
||||
void func_800AA5C8(MenuItem*, s8);
|
||||
void func_800AA69C(MenuItem*);
|
||||
void func_800AAA9C(MenuItem*);
|
||||
void func_800AAB90(MenuItem*);
|
||||
void func_800AAC18(MenuItem*);
|
||||
void update_cursor(MenuItem*);
|
||||
void func_800AAE18(MenuItem*);
|
||||
MenuItem* get_menu_item_player_count(void);
|
||||
MenuItem* get_menu_item_character(s32);
|
||||
MenuItem* find_menu_items_dupe(s32);
|
||||
MenuItem* find_menu_items(s32);
|
||||
s32 get_character_menu_state(s32);
|
||||
void hover_cursor_over_character_portrait(MenuItem*, s32);
|
||||
s32 func_800AAFCC(s32);
|
||||
void func_800AB020(MenuItem*);
|
||||
void func_800AB098(MenuItem*);
|
||||
void func_800AB164(MenuItem*);
|
||||
void func_800AB260(MenuItem*);
|
||||
void func_800AB290(MenuItem*);
|
||||
void func_800AB314(MenuItem*);
|
||||
void func_800AB904(MenuItem*);
|
||||
void func_800AB9B0(MenuItem*);
|
||||
void func_800ABAE8(MenuItem*);
|
||||
void func_800ABB24(MenuItem*);
|
||||
void func_800ABBCC(MenuItem*);
|
||||
void func_800ABC38(MenuItem*);
|
||||
void func_800ABCF4(MenuItem*);
|
||||
void func_800ABEAC(MenuItem*);
|
||||
void func_800ABF68(MenuItem*);
|
||||
void func_800AC128(MenuItem*);
|
||||
void func_800AC300(MenuItem*);
|
||||
void func_800AC324(MenuItem*);
|
||||
void func_800AC458(MenuItem*);
|
||||
void func_800AC978(MenuItem*);
|
||||
void func_800ACA14(MenuItem*);
|
||||
void func_800ACC50(MenuItem*);
|
||||
void func_800ACF40(MenuItem*);
|
||||
void func_800AD1A4(MenuItem*);
|
||||
void func_800AD2E8(MenuItem*);
|
||||
void func_800ADF48(MenuItem*);
|
||||
void func_800AE218(MenuItem*);
|
||||
void func_800AEC54(MenuItem*);
|
||||
void func_800AEDBC(MenuItem*);
|
||||
void func_800AEE90(MenuItem*);
|
||||
void func_800AEEBC(MenuItem*);
|
||||
void func_800AEEE8(MenuItem*);
|
||||
void func_800AEF14(MenuItem*);
|
||||
void func_800AEF74(MenuItem*);
|
||||
void func_800AF004(MenuItem*);
|
||||
void func_800AF1AC(MenuItem*);
|
||||
void func_800AF270(MenuItem*);
|
||||
void func_800AF480(MenuItem*);
|
||||
void func_800AF4DC(MenuItem*);
|
||||
void func_800AF740(MenuItem*);
|
||||
|
||||
// This really, really shouldn't be in this header file, but I don't know where else to put it
|
||||
void rmonPrintf(const char*, ...);
|
||||
void tkmk00decode(u8*, u8*, u8*, s32);
|
||||
|
||||
/* File specific defines */
|
||||
|
||||
#define MENU_ITEMS_MAX 0x20
|
||||
#define D_8018DEE0_SIZE 0x10
|
||||
#define D_8018E060_SIZE 0x10
|
||||
#define D_8018E0E8_SIZE 0x05
|
||||
#define TEXTURE_MAP_MAX 0xC8
|
||||
#define D_8018E768_SIZE 0x08
|
||||
#define D_8018E7E8_SIZE 0x05
|
||||
#define D_8018E810_SIZE 0x05
|
||||
|
||||
/* This is where I'd put my static data, if I had any */
|
||||
|
||||
extern s32 D_800DDB24;
|
||||
extern s16 D_80164478[];
|
||||
|
||||
extern u16* gMenuTextureBuffer;
|
||||
extern u8* gMenuCompressedBuffer;
|
||||
extern u8* sTKMK00_LowResBuffer;
|
||||
extern u8* sGPPointsCopy;
|
||||
extern void* gSomeDLBuffer;
|
||||
extern s8 gGPPointsByCharacterId[8];
|
||||
extern s8 gCharacterIdByGPOverallRank[];
|
||||
extern s8 D_8018D9D8;
|
||||
extern s8 D_8018D9D9;
|
||||
extern MenuItem gMenuItems[MENU_ITEMS_MAX];
|
||||
extern struct_8018DEE0_entry D_8018DEE0[D_8018DEE0_SIZE];
|
||||
extern struct_8018E060_entry D_8018E060[D_8018E060_SIZE];
|
||||
extern struct_8018E0E8_entry D_8018E0E8[D_8018E0E8_SIZE];
|
||||
extern s32 sMenuTextureBufferIndex;
|
||||
extern TextureMap sMenuTextureMap[TEXTURE_MAP_MAX];
|
||||
extern s32 sMenuTextureEntries;
|
||||
extern Gfx* sGfxPtr;
|
||||
extern s32 gNumD_8018E768Entries;
|
||||
extern struct_8018E768_entry D_8018E768[D_8018E768_SIZE];
|
||||
extern s32 gCycleFlashMenu;
|
||||
extern s8 D_8018E7AC[];
|
||||
extern u32 D_8018E7B8[];
|
||||
extern u32 D_8018E7D0[];
|
||||
extern s32 D_8018E7E0;
|
||||
extern struct UnkStruct_8018E7E8 D_8018E7E8[D_8018E7E8_SIZE];
|
||||
extern struct UnkStruct_8018E7E8 D_8018E810[D_8018E810_SIZE];
|
||||
extern s8 gTextColor;
|
||||
extern u8 D_8018ED90;
|
||||
extern u8 D_8018ED91;
|
||||
extern s8 D_8018E838[];
|
||||
extern s32 D_8018E840[];
|
||||
extern s32 D_8018E850[];
|
||||
extern s32 D_8018E854;
|
||||
extern s32 D_8018E858[];
|
||||
extern s32 D_8018E85C;
|
||||
|
||||
extern u8 _textures_0aSegmentRomStart[];
|
||||
extern u8 _textures_0bSegmentRomStart[];
|
||||
|
||||
extern Unk_D_800E70A0 D_800E70A0[];
|
||||
extern Unk_D_800E70A0 D_800E70E8[];
|
||||
extern Unk_D_800E70A0 D_800E7108[][4];
|
||||
extern Unk_D_800E70A0 D_800E7148[];
|
||||
extern Unk_D_800E70A0 D_800E7168[];
|
||||
extern Unk_D_800E70A0 D_800E7188[];
|
||||
extern Unk_D_800E70A0 D_800E7208[][2];
|
||||
extern Unk_D_800E70A0 D_800E7248[];
|
||||
extern Unk_D_800E70A0 D_800E7258[];
|
||||
extern Unk_D_800E70A0 D_800E7268[];
|
||||
extern Unk_D_800E70A0 D_800E7278[];
|
||||
extern Unk_D_800E70A0 D_800E72F8;
|
||||
extern Unk_D_800E70A0 D_800E7300[];
|
||||
extern Unk_D_800E70A0 D_800E7360[];
|
||||
extern Unk_D_800E70A0 D_800E7380[];
|
||||
extern Unk_D_800E70A0 D_800E7390[];
|
||||
extern Unk_D_800E70A0 D_800E73C0[];
|
||||
extern Unk_D_800E70A0 D_800E73D0[];
|
||||
extern Unk_D_800E70A0 D_800E73E0[];
|
||||
extern Unk_D_800E70A0 D_800E7410[];
|
||||
extern Unk_D_800E70A0 D_800E7420[];
|
||||
extern Unk_D_800E70A0 D_800E7430[];
|
||||
extern Unk_D_800E70A0 D_800E7458[];
|
||||
extern Unk_D_800E70A0 D_800E7480[];
|
||||
extern RGBA16 D_800E74A8[];
|
||||
extern RGBA16 D_800E74D0[];
|
||||
extern RGBA16 D_800E74E8[];
|
||||
extern const s16 gGlyphDisplayWidth[];
|
||||
extern char* gCupNames[];
|
||||
extern char* gCourseNamesDup2[];
|
||||
// Maps course IDs (as defined in the COURSES enum) to an index in a given cup's track order
|
||||
extern const s8 gPerCupIndexByCourseId[]; // D_800EFD50
|
||||
extern const s8 D_800EFD64[];
|
||||
extern s8 gCupSelectionByCourseId[];
|
||||
extern char* gCupText[];
|
||||
extern char* gDebugCharacterNames[];
|
||||
extern char* D_800E76A8[];
|
||||
extern char* D_800E76CC[];
|
||||
extern char* D_800E76DC[];
|
||||
extern char* gDebugScreenModeNames[];
|
||||
extern char* gDebugSoundModeNames[];
|
||||
extern char* gSoundModeNames[]; // D_800E7710
|
||||
extern char* gWinLoseText[];
|
||||
extern char* gBestTimeText[];
|
||||
extern char* gLapTimeText;
|
||||
extern char* gPrefixTimeText[];
|
||||
extern char* D_800E7744[];
|
||||
extern char* gTextPauseButton[];
|
||||
extern char* D_800E7778[];
|
||||
extern char gTextMenuAnnounceGhost[];
|
||||
extern char* D_800E77A0[];
|
||||
extern char* gTextBattleIntroduction[];
|
||||
extern char gTextMenuData[];
|
||||
extern char D_800E77D8[];
|
||||
extern char* sCourseLengths[];
|
||||
extern char* gTextMenuOption[];
|
||||
extern char* D_800E7840[];
|
||||
extern char* gEraseBestGhostText[];
|
||||
extern char* D_800E7860[];
|
||||
extern char* gTextOptionMenu[];
|
||||
extern char* D_800E7878[];
|
||||
extern char* D_800E7884[];
|
||||
extern char* D_800E7890[];
|
||||
extern char* D_800E78D0[];
|
||||
extern char* D_800E7900[];
|
||||
extern char* D_800E7918[];
|
||||
extern char* D_800E7920[];
|
||||
extern char* D_800E7928[];
|
||||
extern char* D_800E7930[];
|
||||
extern char* D_800E7938[];
|
||||
extern char* D_800E7940[];
|
||||
extern char* D_800E7980[];
|
||||
extern char* D_800E798C[];
|
||||
extern char* D_800E7A34[];
|
||||
extern char* D_800E7A3C[];
|
||||
extern char* D_800E7A44;
|
||||
extern char* D_800E7A48[];
|
||||
extern char* D_800E7A54[];
|
||||
extern char* D_800E7A60[];
|
||||
extern char* D_800E7A6C[];
|
||||
extern char* D_800E7A74[];
|
||||
extern char* D_800E7A80[];
|
||||
extern char* D_800E7A88[];
|
||||
extern char* D_800E7A98;
|
||||
extern char* D_800E7A9C[];
|
||||
extern char* gPlaceText[];
|
||||
extern const s8 gGPPointRewards[];
|
||||
extern const s8 D_800F0B1C[];
|
||||
extern const s8 D_800F0B28[];
|
||||
extern const s8 D_800F0B50[];
|
||||
extern const s8 D_800F0B54[];
|
||||
extern RGBA16 D_800E7AC8[];
|
||||
extern RGBA16 D_800E7AE8[];
|
||||
extern MenuTexture* D_800E7AF8[];
|
||||
extern MenuTexture* D_800E7D0C[];
|
||||
extern MkAnimation* D_800E7D34[];
|
||||
extern MenuTexture* gMenuTexturesBackground[];
|
||||
extern MenuTexture* D_800E7D54[];
|
||||
extern MenuTexture* D_800E7D74[];
|
||||
extern MenuTexture* D_800E7DC4[];
|
||||
extern MkAnimation* D_800E7E14[];
|
||||
extern MkAnimation* D_800E7E20[];
|
||||
extern MkAnimation* D_800E7E34[];
|
||||
extern MenuTexture* gGlyphTextureLUT[];
|
||||
extern MenuTexture* D_800E7FF0[];
|
||||
extern MenuTexture* D_800E80A0[];
|
||||
extern MenuTexture* D_800E8114[];
|
||||
extern MenuTexture* D_800E8174[];
|
||||
extern MenuTexture* D_800E817C[];
|
||||
extern MenuTexture* D_800E81E4[];
|
||||
extern MenuTexture* D_800E822C[];
|
||||
extern MenuTexture* D_800E8234[];
|
||||
extern MenuTexture* D_800E8254[];
|
||||
extern MenuTexture* D_800E8274[];
|
||||
extern MenuTexture* D_800E8294[];
|
||||
extern MenuTexture* gMenuTexturesBorderPlayer[];
|
||||
extern MenuTexture* gMenuTexturesTrackSelection[];
|
||||
extern MenuTexture* D_800E82F4[];
|
||||
extern MkAnimation* D_800E8320[];
|
||||
extern MkAnimation* D_800E8340[];
|
||||
extern MkAnimation* D_800E8360[];
|
||||
extern MkAnimation* gCharacterCelebrateAnimation[];
|
||||
extern MkAnimation* D_800E83A0[];
|
||||
extern MkAnimation* gCharacterDeselectAnimation[];
|
||||
extern MkAnimation* gCharacterSingleBlinkAnimation[];
|
||||
extern MkAnimation* gCharacterDoubleBlinkAnimation[];
|
||||
extern MkAnimation* gCharacterDefeatAnimation[];
|
||||
extern s32 D_800E8440[];
|
||||
extern s32 D_800E8460[];
|
||||
extern s32 D_800E8480[];
|
||||
extern s32 D_800E84A0[];
|
||||
extern Vtx* D_800E84C0[];
|
||||
extern Gfx* D_800E84CC[];
|
||||
extern Gfx* D_800E84EC[];
|
||||
extern Gfx* D_800E850C[];
|
||||
extern s8 D_800E852C;
|
||||
extern f32 sIntroModelMotionSpeed;
|
||||
extern f32 sIntroModelSpeed;
|
||||
extern Unk_D_800E70A0 D_800E8538[];
|
||||
extern Unk_D_800E70A0 D_800E8540[];
|
||||
extern Unk_D_800E70A0 D_800E85C0[];
|
||||
extern Unk_D_800E70A0 D_800E8600[];
|
||||
|
||||
extern s32 gControllerPak1NumPagesFree;
|
||||
extern s32 gControllerPak1FileNote;
|
||||
extern s32 gControllerPak2FileNote;
|
||||
|
||||
extern f32 D_8018ED98;
|
||||
extern f32 D_8018ED9C;
|
||||
extern f32 D_8018EDA0;
|
||||
|
||||
extern f32 D_8018EDA4;
|
||||
extern f32 D_8018EDA8;
|
||||
extern f32 D_8018EDAC;
|
||||
|
||||
#endif
|
||||
+79
-79
@@ -12,7 +12,7 @@
|
||||
#include "audio/external.h"
|
||||
#include "code_800029B0.h"
|
||||
#include "code_80005FD0.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "code_800AF9B0.h"
|
||||
#include "save.h"
|
||||
#include "staff_ghosts.h"
|
||||
@@ -94,7 +94,7 @@ s8 gControllerPakVisibleTableRows[12] = { 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 0 };
|
||||
|
||||
s8 gControllerPakScrollDirection = CONTROLLER_PAK_SCROLL_DIR_NONE; // 1 is down, 2 is up
|
||||
s8 unref_D_800E86D4[12] = { 0 };
|
||||
s8 unref_800E86E0[4] = { 0, 0, 0, 1 };
|
||||
s8 unref_D_800E86E0[4] = { 0, 0, 0, 1 };
|
||||
|
||||
u32 sVIGammaOffDitherOn = (OS_VI_GAMMA_OFF | OS_VI_DITHER_FILTER_ON);
|
||||
|
||||
@@ -183,7 +183,7 @@ void update_menus(void) {
|
||||
func_800CA330(0x19);
|
||||
// deliberate (?) fallthru
|
||||
case MAIN_MENU:
|
||||
case PLAYER_SELECT_MENU:
|
||||
case CHARACTER_SELECT_MENU:
|
||||
play_sound2(SOUND_MENU_OK_CLICKED);
|
||||
break;
|
||||
}
|
||||
@@ -224,7 +224,7 @@ void update_menus(void) {
|
||||
main_menu_act(&gControllers[controllerIdx], controllerIdx);
|
||||
break;
|
||||
case PLAYER_SELECT_MENU_FROM_QUIT:
|
||||
case PLAYER_SELECT_MENU:
|
||||
case CHARACTER_SELECT_MENU:
|
||||
player_select_menu_act(&gControllers[controllerIdx], controllerIdx);
|
||||
break;
|
||||
case COURSE_SELECT_MENU_FROM_QUIT:
|
||||
@@ -241,7 +241,7 @@ void update_menus(void) {
|
||||
*/
|
||||
void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
u16 btnAndStick; // sp3E
|
||||
struct_8018D9E0_entry* sp38;
|
||||
MenuItem* sp38;
|
||||
s32 res;
|
||||
struct_8018EE10_entry* sp30;
|
||||
bool tempVar; // cursorWasMoved or communicateStoredAction
|
||||
@@ -254,8 +254,8 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
}
|
||||
|
||||
if (!is_screen_being_faded()) {
|
||||
sp38 = find_8018D9E0_entry_dupe(0xF0);
|
||||
sp30 = (struct_8018EE10_entry*) D_8018D9C0;
|
||||
sp38 = find_menu_items_dupe(0xF0);
|
||||
sp30 = (struct_8018EE10_entry*) gSomeDLBuffer;
|
||||
switch (gSubMenuSelection) {
|
||||
case SUB_MENU_OPTION_RETURN_GAME_SELECT:
|
||||
case SUB_MENU_OPTION_SOUND_MODE:
|
||||
@@ -265,35 +265,35 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
if ((btnAndStick & D_JPAD) && (gSubMenuSelection < SUB_MENU_OPTION_MAX)) {
|
||||
gSubMenuSelection += 1;
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp38->unk24 < 4.2) {
|
||||
sp38->unk24 += 4.0;
|
||||
if (sp38->paramf < 4.2) {
|
||||
sp38->paramf += 4.0;
|
||||
}
|
||||
sp38->unk8 = 1;
|
||||
sp38->subState = 1;
|
||||
tempVar = true;
|
||||
}
|
||||
if ((btnAndStick & U_JPAD) && (gSubMenuSelection > SUB_MENU_OPTION_MIN)) {
|
||||
gSubMenuSelection -= 1;
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp38->unk24 < 4.2) {
|
||||
sp38->unk24 += 4.0;
|
||||
if (sp38->paramf < 4.2) {
|
||||
sp38->paramf += 4.0;
|
||||
}
|
||||
tempVar = true;
|
||||
sp38->unk8 = -1;
|
||||
sp38->subState = -1;
|
||||
}
|
||||
if (tempVar && gSoundMode != sp38->cursor) {
|
||||
if (tempVar && gSoundMode != sp38->state) {
|
||||
gSaveData.main.saveInfo.soundMode = gSoundMode;
|
||||
write_save_data_grand_prix_points_and_sound_mode();
|
||||
update_save_data_backup();
|
||||
sp38->cursor = gSoundMode;
|
||||
sp38->state = gSoundMode;
|
||||
}
|
||||
if (btnAndStick & B_BUTTON) {
|
||||
func_8009E280();
|
||||
play_sound2(SOUND_MENU_GO_BACK);
|
||||
if (gSoundMode != sp38->cursor) {
|
||||
if (gSoundMode != sp38->state) {
|
||||
gSaveData.main.saveInfo.soundMode = gSoundMode;
|
||||
write_save_data_grand_prix_points_and_sound_mode();
|
||||
update_save_data_backup();
|
||||
sp38->cursor = gSoundMode;
|
||||
sp38->state = gSoundMode;
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -333,7 +333,7 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
switch (tempVar) {
|
||||
case PFS_INVALID_DATA:
|
||||
gSubMenuSelection = SUB_MENU_COPY_PAK_CREATE_GAME_DATA_INIT;
|
||||
sp38->cursor = 0;
|
||||
sp38->state = 0;
|
||||
play_sound2(SOUND_MENU_SELECT);
|
||||
break;
|
||||
case PFS_NO_ERROR:
|
||||
@@ -404,18 +404,18 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
if ((btnAndStick & D_JPAD) && (gSubMenuSelection < SUB_MENU_ERASE_MAX)) {
|
||||
gSubMenuSelection += 1;
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp38->unk24 < 4.2) {
|
||||
sp38->unk24 += 4.0;
|
||||
if (sp38->paramf < 4.2) {
|
||||
sp38->paramf += 4.0;
|
||||
}
|
||||
sp38->unk8 = 1;
|
||||
sp38->subState = 1;
|
||||
}
|
||||
if ((btnAndStick & U_JPAD) && (gSubMenuSelection > SUB_MENU_ERASE_MIN)) {
|
||||
gSubMenuSelection -= 1;
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp38->unk24 < 4.2) {
|
||||
sp38->unk24 += 4.0;
|
||||
if (sp38->paramf < 4.2) {
|
||||
sp38->paramf += 4.0;
|
||||
}
|
||||
sp38->unk8 = -1;
|
||||
sp38->subState = -1;
|
||||
}
|
||||
if (btnAndStick & B_BUTTON) {
|
||||
gSubMenuSelection = SUB_MENU_OPTION_ERASE_ALL_DATA;
|
||||
@@ -451,19 +451,19 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
(sp30[PLAYER_TWO].ghostDataSaved)) {
|
||||
gSubMenuSelection += 1;
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp38->unk24 < 4.2) {
|
||||
sp38->unk24 += 4.0;
|
||||
if (sp38->paramf < 4.2) {
|
||||
sp38->paramf += 4.0;
|
||||
}
|
||||
sp38->unk8 = 1;
|
||||
sp38->subState = 1;
|
||||
}
|
||||
if ((btnAndStick & U_JPAD) && (gSubMenuSelection > SUB_MENU_COPY_PAK_FROM_GHOST_MIN) &&
|
||||
sp30[PLAYER_ONE].ghostDataSaved) {
|
||||
gSubMenuSelection -= 1;
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp38->unk24 < 4.2) {
|
||||
sp38->unk24 += 4.0;
|
||||
if (sp38->paramf < 4.2) {
|
||||
sp38->paramf += 4.0;
|
||||
}
|
||||
sp38->unk8 = -1;
|
||||
sp38->subState = -1;
|
||||
}
|
||||
if (btnAndStick & B_BUTTON) {
|
||||
gSubMenuSelection = SUB_MENU_OPTION_COPY_CONTROLLER_PAK;
|
||||
@@ -471,8 +471,8 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
return;
|
||||
}
|
||||
if (btnAndStick & A_BUTTON) {
|
||||
sp38->unk20 = gSubMenuSelection - SUB_MENU_COPY_PAK_FROM_GHOST_MIN;
|
||||
if (sp30[sp38->unk20].courseIndex == D_8018EE10[PLAYER_TWO].courseIndex &&
|
||||
sp38->param2 = gSubMenuSelection - SUB_MENU_COPY_PAK_FROM_GHOST_MIN;
|
||||
if (sp30[sp38->param2].courseIndex == D_8018EE10[PLAYER_TWO].courseIndex &&
|
||||
D_8018EE10[PLAYER_TWO].ghostDataSaved) {
|
||||
gSubMenuSelection = SUB_MENU_COPY_PAK_TO_GHOST2_2P;
|
||||
} else {
|
||||
@@ -485,36 +485,36 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
case SUB_MENU_COPY_PAK_TO_GHOST1_2P:
|
||||
case SUB_MENU_COPY_PAK_TO_GHOST2_2P: {
|
||||
// bit of a fake match, but if it works it works?
|
||||
if ((sp30[sp38->unk20].courseIndex !=
|
||||
if ((sp30[sp38->param2].courseIndex !=
|
||||
((0, (D_8018EE10 + (gSubMenuSelection - SUB_MENU_COPY_PAK_TO_GHOST_MIN))->courseIndex))) ||
|
||||
((D_8018EE10 + (gSubMenuSelection - SUB_MENU_COPY_PAK_TO_GHOST_MIN))->ghostDataSaved == 0)) {
|
||||
if ((btnAndStick & D_JPAD) && (gSubMenuSelection < SUB_MENU_COPY_PAK_TO_GHOST_MAX)) {
|
||||
gSubMenuSelection += 1;
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp38->unk24 < 4.2) {
|
||||
sp38->unk24 += 4.0;
|
||||
if (sp38->paramf < 4.2) {
|
||||
sp38->paramf += 4.0;
|
||||
}
|
||||
sp38->unk8 = 1;
|
||||
sp38->subState = 1;
|
||||
}
|
||||
if ((btnAndStick & U_JPAD) && (gSubMenuSelection > SUB_MENU_COPY_PAK_TO_GHOST_MIN)) {
|
||||
gSubMenuSelection -= 1;
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp38->unk24 < 4.2) {
|
||||
sp38->unk24 += 4.0;
|
||||
if (sp38->paramf < 4.2) {
|
||||
sp38->paramf += 4.0;
|
||||
}
|
||||
sp38->unk8 = -1;
|
||||
sp38->subState = -1;
|
||||
}
|
||||
}
|
||||
if (btnAndStick & B_BUTTON) {
|
||||
gSubMenuSelection = sp38->unk20 + SUB_MENU_COPY_PAK_FROM_GHOST_MIN;
|
||||
gSubMenuSelection = sp38->param2 + SUB_MENU_COPY_PAK_FROM_GHOST_MIN;
|
||||
play_sound2(SOUND_MENU_GO_BACK);
|
||||
} else if (btnAndStick & A_BUTTON) {
|
||||
sp38->unk1C = gSubMenuSelection - SUB_MENU_COPY_PAK_TO_GHOST_MIN;
|
||||
if (D_8018EE10[(sp38->unk1C)].ghostDataSaved) {
|
||||
sp38->param1 = gSubMenuSelection - SUB_MENU_COPY_PAK_TO_GHOST_MIN;
|
||||
if (D_8018EE10[(sp38->param1)].ghostDataSaved) {
|
||||
gSubMenuSelection = SUB_MENU_COPY_PAK_PROMPT_QUIT;
|
||||
} else {
|
||||
gSubMenuSelection = SUB_MENU_COPY_PAK_START;
|
||||
sp38->cursor = 0;
|
||||
sp38->state = 0;
|
||||
}
|
||||
play_sound2(SOUND_MENU_SELECT);
|
||||
}
|
||||
@@ -541,21 +541,21 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
if ((btnAndStick & R_JPAD) && gSubMenuSelection < SUB_MENU_COPY_PAK_PROMPT_MAX) {
|
||||
gSubMenuSelection += 1;
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp38->unk24 < 4.2) {
|
||||
sp38->unk24 += 4.0;
|
||||
if (sp38->paramf < 4.2) {
|
||||
sp38->paramf += 4.0;
|
||||
}
|
||||
sp38->unk8 = 1;
|
||||
sp38->subState = 1;
|
||||
}
|
||||
if ((btnAndStick & L_JPAD) && gSubMenuSelection > SUB_MENU_COPY_PAK_PROMPT_MIN) {
|
||||
gSubMenuSelection -= 1;
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp38->unk24 < 4.2) {
|
||||
sp38->unk24 += 4.0;
|
||||
if (sp38->paramf < 4.2) {
|
||||
sp38->paramf += 4.0;
|
||||
}
|
||||
sp38->unk8 = -1;
|
||||
sp38->subState = -1;
|
||||
}
|
||||
if (btnAndStick & B_BUTTON) {
|
||||
gSubMenuSelection = sp38->unk1C + SUB_MENU_COPY_PAK_TO_GHOST_MIN;
|
||||
gSubMenuSelection = sp38->param1 + SUB_MENU_COPY_PAK_TO_GHOST_MIN;
|
||||
play_sound2(SOUND_MENU_GO_BACK);
|
||||
return;
|
||||
}
|
||||
@@ -566,7 +566,7 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
} else {
|
||||
gSubMenuSelection = SUB_MENU_COPY_PAK_START;
|
||||
play_sound2(SOUND_MENU_SELECT);
|
||||
sp38->cursor = 0;
|
||||
sp38->state = 0;
|
||||
}
|
||||
}
|
||||
// return?
|
||||
@@ -574,9 +574,9 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
}
|
||||
case SUB_MENU_COPY_PAK_START: {
|
||||
if (controllerIdx == PLAYER_ONE) {
|
||||
sp38->cursor += 1;
|
||||
sp38->state += 1;
|
||||
}
|
||||
if (sp38->cursor >= 3) {
|
||||
if (sp38->state >= 3) {
|
||||
gSubMenuSelection = SUB_MENU_COPY_PAK_COPYING;
|
||||
}
|
||||
break;
|
||||
@@ -584,7 +584,7 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
case SUB_MENU_COPY_PAK_COPYING: {
|
||||
res = controller_pak_2_status();
|
||||
if (res == PFS_NO_ERROR) {
|
||||
res = func_800B65F4(sp38->unk20, sp38->unk1C);
|
||||
res = func_800B65F4(sp38->param2, sp38->param1);
|
||||
}
|
||||
if (res != 0) {
|
||||
gSubMenuSelection = SUB_MENU_COPY_PAK_UNABLE_READ_FROM_2P;
|
||||
@@ -594,7 +594,7 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
res = osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, (u8*) gGameName,
|
||||
(u8*) gExtCode, &gControllerPak1FileNote);
|
||||
if (res == PFS_NO_ERROR) {
|
||||
res = func_800B6178(sp38->unk1C);
|
||||
res = func_800B6178(sp38->param1);
|
||||
}
|
||||
if (res != 0) {
|
||||
gSubMenuSelection = SUB_MENU_COPY_PAK_UNABLE_COPY_FROM_1P;
|
||||
@@ -602,15 +602,15 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
return;
|
||||
}
|
||||
gSubMenuSelection = SUB_MENU_COPY_PAK_COMPLETED;
|
||||
D_8018EE10[sp38->unk1C].courseIndex = (sp30 + sp38->unk20)->courseIndex;
|
||||
func_800B6088(sp38->unk1C);
|
||||
D_8018EE10[sp38->param1].courseIndex = (sp30 + sp38->param2)->courseIndex;
|
||||
func_800B6088(sp38->param1);
|
||||
break;
|
||||
}
|
||||
case SUB_MENU_COPY_PAK_CREATE_GAME_DATA_INIT: {
|
||||
if (controllerIdx == PLAYER_ONE) {
|
||||
sp38->cursor += 1;
|
||||
sp38->state += 1;
|
||||
}
|
||||
if (sp38->cursor >= 3) {
|
||||
if (sp38->state >= 3) {
|
||||
gSubMenuSelection = SUB_MENU_COPY_PAK_CREATE_GAME_DATA_DONE;
|
||||
}
|
||||
break;
|
||||
@@ -700,7 +700,7 @@ void data_menu_act(struct Controller* controller, UNUSED u16 controllerIdx) {
|
||||
*/
|
||||
void course_data_menu_act(struct Controller* controller, UNUSED u16 controllerIdx) {
|
||||
u16 btnAndStick; // sp2E
|
||||
struct_8018D9E0_entry* sp28;
|
||||
MenuItem* sp28;
|
||||
CourseTimeTrialRecords* sp24;
|
||||
s32 res;
|
||||
|
||||
@@ -723,7 +723,7 @@ void course_data_menu_act(struct Controller* controller, UNUSED u16 controllerId
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
}
|
||||
|
||||
sp28 = find_8018D9E0_entry_dupe(0xE8);
|
||||
sp28 = find_menu_items_dupe(0xE8);
|
||||
sp24 = &gSaveData.allCourseTimeTrialRecords.cupRecords[gTimeTrialDataCourseIndex / 4]
|
||||
.courseRecords[gTimeTrialDataCourseIndex % 4];
|
||||
if (gCourseRecordsMenuSelection == COURSE_RECORDS_MENU_ERASE_GHOST &&
|
||||
@@ -741,10 +741,10 @@ void course_data_menu_act(struct Controller* controller, UNUSED u16 controllerId
|
||||
gCourseRecordsMenuSelection -= 1;
|
||||
}
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp28->unk24 < 4.2) {
|
||||
sp28->unk24 += 4.0;
|
||||
if (sp28->paramf < 4.2) {
|
||||
sp28->paramf += 4.0;
|
||||
}
|
||||
sp28->unk8 = -1;
|
||||
sp28->subState = -1;
|
||||
}
|
||||
|
||||
if ((btnAndStick & D_JPAD) && (gCourseRecordsMenuSelection < COURSE_RECORDS_MENU_MAX)) {
|
||||
@@ -763,10 +763,10 @@ void course_data_menu_act(struct Controller* controller, UNUSED u16 controllerId
|
||||
}
|
||||
} else {
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp28->unk24 < 4.2) {
|
||||
sp28->unk24 += 4.0;
|
||||
if (sp28->paramf < 4.2) {
|
||||
sp28->paramf += 4.0;
|
||||
}
|
||||
sp28->unk8 = 1;
|
||||
sp28->subState = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -774,8 +774,8 @@ void course_data_menu_act(struct Controller* controller, UNUSED u16 controllerId
|
||||
func_8009E208();
|
||||
play_sound2(SOUND_MENU_GO_BACK);
|
||||
} else if (btnAndStick & A_BUTTON) {
|
||||
if (sp28->unk24 < 4.2) {
|
||||
sp28->unk24 += 4.0;
|
||||
if (sp28->paramf < 4.2) {
|
||||
sp28->paramf += 4.0;
|
||||
}
|
||||
if (gCourseRecordsMenuSelection == COURSE_RECORDS_MENU_RETURN_MENU) {
|
||||
func_8009E208();
|
||||
@@ -789,23 +789,23 @@ void course_data_menu_act(struct Controller* controller, UNUSED u16 controllerId
|
||||
break;
|
||||
}
|
||||
case SUB_MENU_DATA_ERASE_CONFIRM: {
|
||||
sp28 = find_8018D9E0_entry_dupe(0xE9);
|
||||
sp28 = find_menu_items_dupe(0xE9);
|
||||
if ((btnAndStick & U_JPAD) && (gCourseRecordsSubMenuSelection > COURSE_RECORDS_SUB_MENU_MIN)) {
|
||||
gCourseRecordsSubMenuSelection -= 1;
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp28->unk24 < 4.2) {
|
||||
sp28->unk24 += 4.0;
|
||||
if (sp28->paramf < 4.2) {
|
||||
sp28->paramf += 4.0;
|
||||
}
|
||||
sp28->unk8 = -1;
|
||||
sp28->subState = -1;
|
||||
}
|
||||
|
||||
if ((btnAndStick & D_JPAD) && (gCourseRecordsSubMenuSelection < COURSE_RECORDS_SUB_MENU_MAX)) {
|
||||
gCourseRecordsSubMenuSelection += 1;
|
||||
play_sound2(SOUND_MENU_CURSOR_MOVE);
|
||||
if (sp28->unk24 < 4.2) {
|
||||
sp28->unk24 += 4.0;
|
||||
if (sp28->paramf < 4.2) {
|
||||
sp28->paramf += 4.0;
|
||||
}
|
||||
sp28->unk8 = 1;
|
||||
sp28->subState = 1;
|
||||
}
|
||||
|
||||
if (btnAndStick & B_BUTTON) {
|
||||
@@ -1418,7 +1418,7 @@ void main_menu_act(struct Controller* controller, u16 controllerIdx) {
|
||||
// L800B3068
|
||||
if (btnAndStick & D_JPAD) {
|
||||
cursorMoved = false;
|
||||
if (func_800B555C()) {
|
||||
if (has_unlocked_extra_mode()) {
|
||||
if (subMode <
|
||||
sGameModePlayerColumnExtra[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]) {
|
||||
cursorMoved = true;
|
||||
@@ -1940,7 +1940,7 @@ void load_menu_states(s32 menuSelection) {
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
case PLAYER_SELECT_MENU: {
|
||||
case CHARACTER_SELECT_MENU: {
|
||||
switch (gMenuFadeType) {
|
||||
case MENU_FADE_TYPE_MAIN: {
|
||||
gPlayerSelectMenuSelection = PLAYER_SELECT_MENU_MAIN;
|
||||
@@ -2051,7 +2051,7 @@ bool is_screen_being_faded(void) {
|
||||
*/
|
||||
UNUSED void debug_print_ghost_kart_character_id(s32 arg0, s32 arg1) {
|
||||
struct_8018EE10_entry* pak1 = D_8018EE10;
|
||||
struct_8018EE10_entry* pak2 = (struct_8018EE10_entry*) D_8018D9C0;
|
||||
struct_8018EE10_entry* pak2 = (struct_8018EE10_entry*) gSomeDLBuffer;
|
||||
|
||||
rmonPrintf("ghost_kart=%d,", D_80162DE0);
|
||||
rmonPrintf("pak1_ghost_kart=%d,", (pak1 + arg0)->characterId);
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include "memory.h"
|
||||
#include "waypoints.h"
|
||||
#include "code_80005FD0.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "collision.h"
|
||||
#include "actors.h"
|
||||
#include "actors_extended.h"
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include "code_800029B0.h"
|
||||
#include "code_80057C60.h"
|
||||
#include "update_objects.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "code_80005FD0.h"
|
||||
#include "spawn_players.h"
|
||||
#include "audio/external.h"
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include <assets/common_data.h>
|
||||
#include "render_player.h"
|
||||
#include "code_80057C60.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "actors.h"
|
||||
#include "render_courses.h"
|
||||
#include "math_util.h"
|
||||
@@ -140,7 +140,7 @@ void func_802A38B4(void) {
|
||||
gMenuSelection = MAIN_MENU;
|
||||
break;
|
||||
case PLAYER_SELECT_MENU_FROM_QUIT:
|
||||
gMenuSelection = PLAYER_SELECT_MENU;
|
||||
gMenuSelection = CHARACTER_SELECT_MENU;
|
||||
break;
|
||||
case COURSE_SELECT_MENU_FROM_QUIT:
|
||||
gMenuSelection = COURSE_SELECT_MENU;
|
||||
|
||||
+47
-46
@@ -25,7 +25,7 @@
|
||||
#include "code_8006E9C0.h"
|
||||
#include "render_objects.h"
|
||||
#include "update_objects.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "collision.h"
|
||||
#include "main.h"
|
||||
#include "menus.h"
|
||||
@@ -1525,7 +1525,7 @@ void func_8004B72C(s32 primRed, s32 primGreen, s32 primBlue, s32 envRed, s32 env
|
||||
PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
|
||||
}
|
||||
|
||||
void func_8004B7DC(s32 x, s32 y, s32 width, s32 height, s32 arg4, s32 arg5, s32 arg6) {
|
||||
void render_texture_rectangle(s32 x, s32 y, s32 width, s32 height, s32 s, s32 w, s32 mode) {
|
||||
|
||||
s32 xh = (((x + width) - 1) << 2);
|
||||
s32 yh = (((y + height) - 1) << 2);
|
||||
@@ -1535,18 +1535,18 @@ void func_8004B7DC(s32 x, s32 y, s32 width, s32 height, s32 arg4, s32 arg5, s32
|
||||
s32 xh2 = (((x + width)) << 2);
|
||||
s32 yh2 = ((y + height) << 2);
|
||||
|
||||
if (arg6 == 0) {
|
||||
//! @todo Update to F3DEX. Uses OLD definition for gspTextureRectangle.
|
||||
gSPTextureRectangle(gDisplayListHead++, xl, yl, xh, yh, G_TX_RENDERTILE, arg4 << 5, (arg5 << 5), 4 << 10,
|
||||
1 << 10);
|
||||
// If no cycle mode is set, render texture rectangle in copy mode
|
||||
if (mode == 0) {
|
||||
gSPTextureRectangle(gDisplayListHead++, xl, yl, xh, yh, G_TX_RENDERTILE, s << 5, (w << 5), 4 << 10, 1 << 10);
|
||||
return;
|
||||
}
|
||||
gSPTextureRectangle(gDisplayListHead++, xl, yl, xh2, yh2, G_TX_RENDERTILE, arg4 << 5, (arg5 << 5), 1 << 10,
|
||||
1 << 10);
|
||||
// Render texture rectangle in default cycle mode (1 cycle or 2 cycle)
|
||||
gSPTextureRectangle(gDisplayListHead++, xl, yl, xh2, yh2, G_TX_RENDERTILE, s << 5, (w << 5), 1 << 10, 1 << 10);
|
||||
}
|
||||
|
||||
void func_8004B950(s32 x, s32 y, s32 width, s32 height, s32 arg4) {
|
||||
func_8004B7DC(x, y, width, height, 0, 0, arg4);
|
||||
void render_texture_rectangle_wrap(s32 x, s32 y, s32 width, s32 height, s32 mode) {
|
||||
// (0, 0) means texture coordinates will be rendered from the top left corner
|
||||
render_texture_rectangle(x, y, width, height, 0, 0, mode);
|
||||
}
|
||||
|
||||
void func_8004B97C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
|
||||
@@ -1569,7 +1569,7 @@ void func_8004B97C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
|
||||
var_v0 = -arg1;
|
||||
var_a1 = 0;
|
||||
}
|
||||
func_8004B7DC(sp2C, var_a1, arg2 - var_v1, arg3 - var_v0, var_v1, var_v0, arg4);
|
||||
render_texture_rectangle(sp2C, var_a1, arg2 - var_v1, arg3 - var_v0, var_v1, var_v0, arg4);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1593,7 +1593,7 @@ void func_8004BA08(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
|
||||
phi_v0 = -arg1;
|
||||
phi_a1 = 0;
|
||||
}
|
||||
func_8004B7DC(sp2C, phi_a1, arg2 - phi_v1, arg3 - phi_v0, phi_v1 + arg2, phi_v0, arg4);
|
||||
render_texture_rectangle(sp2C, phi_a1, arg2 - phi_v1, arg3 - phi_v0, phi_v1 + arg2, phi_v0, arg4);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1623,7 +1623,7 @@ void func_8004BA98(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s
|
||||
sp30 = 0;
|
||||
phi_a3 = arg3 + arg1;
|
||||
}
|
||||
func_8004B7DC(sp34, sp30, sp2C, phi_a3, phi_v0, phi_v1, arg6);
|
||||
render_texture_rectangle(sp34, sp30, sp2C, phi_a3, phi_v0, phi_v1, arg6);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1678,7 +1678,7 @@ UNUSED void func_8004BD14(s32 x, s32 y, u32 width, u32 height, s32 alpha, u8* te
|
||||
gDPLoadMultiTile(gDisplayListHead++, texture2, 256, G_TX_RENDERTILE + 1, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, height,
|
||||
0, 0, width - 1, height - 1, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP,
|
||||
G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
func_8004B950(x, y, width, height, 2);
|
||||
render_texture_rectangle_wrap(x, y, width, height, 2);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008120);
|
||||
}
|
||||
|
||||
@@ -1766,54 +1766,54 @@ void func_8004C628(s32 arg0, s32 arg1, u32 arg2, u32 arg3, u8* texture) {
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
// https://decomp.me/scratch/TqXqn
|
||||
// There's a weird fakematch concerning `athing`, don't know that to make of. Can't quite get it over the finish line
|
||||
// There's a weird fakematch concerning `xPos`, don't know that to make of. Can't quite get it over the finish line
|
||||
// though
|
||||
void func_8004C6FC(s16 arg0, s16 arg1, u8* texture, u32 width, u32 arg4) {
|
||||
s32 temp_v0_3;
|
||||
s32 var_s3;
|
||||
s32 var_s4;
|
||||
s32 athing;
|
||||
s32 temp_t3;
|
||||
u32 temp_t8;
|
||||
s32 heigth;
|
||||
s32 var_s6;
|
||||
void render_texture_tile_rgba32_block(s16 x, s16 y, u8* texture, u32 width, u32 height) {
|
||||
s32 texSizeLess;
|
||||
s32 i;
|
||||
s32 yPos;
|
||||
s32 xPos;
|
||||
s32 texBlockCount;
|
||||
u32 texSize;
|
||||
s32 heightDiv;
|
||||
s32 realCount;
|
||||
u8* textureCopy;
|
||||
|
||||
athing = arg0 - (width / 2);
|
||||
var_s4 = arg1 - (arg4 / 2);
|
||||
xPos = x - (width / 2);
|
||||
yPos = y - (height / 2);
|
||||
textureCopy = texture;
|
||||
gSPDisplayList(gDisplayListHead++, D_0D007EF8);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
|
||||
temp_t8 = width * arg4 * 4;
|
||||
temp_t3 = temp_t8 / 4096;
|
||||
if (temp_t8 % 4096) {
|
||||
temp_t3++;
|
||||
texSize = width * height * 4;
|
||||
texBlockCount = texSize / 4096;
|
||||
if (texSize % 4096) {
|
||||
texBlockCount++;
|
||||
}
|
||||
heigth = arg4 / temp_t3;
|
||||
var_s6 = temp_t3;
|
||||
for (var_s3 = 0; var_s3 < var_s6; var_s3++) {
|
||||
load_texture_tile_rgba32_nomirror(textureCopy, width, heigth);
|
||||
func_8004B950(athing, var_s4, width, heigth, 1);
|
||||
temp_v0_3 = temp_t8 - (width * heigth * 4);
|
||||
textureCopy += (width * heigth * 4);
|
||||
if (temp_v0_3 < 0) {
|
||||
heigth = temp_t8 / width;
|
||||
heightDiv = height / texBlockCount;
|
||||
realCount = texBlockCount;
|
||||
for (i = 0; i < realCount; i++) {
|
||||
load_texture_tile_rgba32_nomirror(textureCopy, width, heightDiv);
|
||||
render_texture_rectangle_wrap(xPos, yPos, width, heightDiv, 1);
|
||||
texSizeLess = texSize - (width * heightDiv * 4);
|
||||
textureCopy += (width * heightDiv * 4);
|
||||
if (texSizeLess < 0) {
|
||||
heightDiv = texSize / width;
|
||||
} else {
|
||||
temp_t8 = temp_v0_3;
|
||||
texSize = texSizeLess;
|
||||
}
|
||||
// Weird fakematch that is a HUGE improvement
|
||||
athing += var_s4 * 0;
|
||||
var_s4 += heigth;
|
||||
xPos += yPos * 0;
|
||||
yPos += heightDiv;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D007EB8);
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/render_objects/func_8004C6FC.s")
|
||||
GLOBAL_ASM("asm/non_matchings/render_objects/render_texture_tile_rgba32_block.s")
|
||||
#endif
|
||||
|
||||
void func_8004C8D4(s16 arg0, s16 arg1) {
|
||||
func_8004C6FC(arg0, arg1, D_8018D1E0, 0x100, 0x80);
|
||||
void render_game_logo(s16 x, s16 y) {
|
||||
render_texture_tile_rgba32_block(x, y, gGameLogoAddress, 256, 128);
|
||||
}
|
||||
|
||||
UNUSED void func_8004C91C(s32 arg0, s32 arg1, u8* texture, s32 arg3, s32 arg4, s32 arg5) {
|
||||
@@ -4691,7 +4691,8 @@ UNUSED void func_800573DC(void) {
|
||||
}
|
||||
|
||||
void func_800573E4(s32 x, s32 y, s8 str) {
|
||||
func_8004B7DC(x, y, 8, 8, (((str % 16) * 8) << 16) >> 16, (((unsigned short) (str / 16)) << 19) >> 16, 0);
|
||||
render_texture_rectangle(x, y, 8, 8, (((str % 16) * 8) << 16) >> 16, (((unsigned short) (str / 16)) << 19) >> 16,
|
||||
0);
|
||||
}
|
||||
|
||||
void debug_wrap_text(s32* x, s32* y) {
|
||||
|
||||
@@ -203,7 +203,7 @@ void func_8004B5A8(s32, s32, s32, s32);
|
||||
void func_8004B614(s32, s32, s32, s32, s32, s32, s32);
|
||||
void func_8004B6C4(s32, s32, s32);
|
||||
void func_8004B72C(s32, s32, s32, s32, s32, s32, s32);
|
||||
void func_8004B950(s32, s32, s32, s32, s32);
|
||||
void render_texture_rectangle_wrap(s32, s32, s32, s32, s32);
|
||||
void func_8004BB34(void);
|
||||
void func_8004BB3C(s32, s32, s32, s32, f32);
|
||||
void func_8004BD14(s32, s32, u32, u32, s32, u8*, u8*);
|
||||
@@ -218,7 +218,7 @@ void draw_hud_2d_texture(s32, s32, u32, u32, u8*);
|
||||
void func_8004C450(s32, s32, u32, u32, u8*);
|
||||
void func_8004C53C(s32, s32, u32, u32, u8*);
|
||||
void func_8004C628(s32, s32, u32, u32, u8*);
|
||||
void func_8004C8D4(s16, s16);
|
||||
void render_game_logo(s16, s16);
|
||||
void func_8004C91C(s32, s32, u8*, s32, s32, s32);
|
||||
void func_8004C9D8(s32, s32, s32, u8*, s32, s32, s32, s32);
|
||||
void func_8004CA58(s32, s32, f32, u8*, s32, s32);
|
||||
|
||||
+13
-13
@@ -4,7 +4,7 @@
|
||||
|
||||
#include "save.h"
|
||||
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "menus.h"
|
||||
#include "save_data.h"
|
||||
#include "staff_ghosts.h"
|
||||
@@ -427,21 +427,21 @@ u8 func_800B5508(s32 cup, s32 ccGrandPrixPoints, s32 points_scored) {
|
||||
|
||||
// Check if all 4 cups have gold cups scored
|
||||
// for a given CC mode
|
||||
s32 func_800B5530(s32 cc_mode) {
|
||||
bool is_cc_mode_complete(s32 cc_mode) {
|
||||
if (gSaveData.main.saveInfo.grandPrixPoints[cc_mode] == 0xFF) {
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if the 150CC mode has all 4 gold cups
|
||||
s32 func_800B555C(void) {
|
||||
return func_800B5530(CC_150);
|
||||
s32 has_unlocked_extra_mode(void) {
|
||||
return is_cc_mode_complete(CC_150);
|
||||
}
|
||||
|
||||
// Check if the Extra mode has all 4 gold cups
|
||||
s32 func_800B557C(void) {
|
||||
return func_800B5530(CC_EXTRA);
|
||||
s32 has_completed_extra_mode(void) {
|
||||
return is_cc_mode_complete(CC_EXTRA);
|
||||
}
|
||||
|
||||
void func_800B559C(s32 arg0) {
|
||||
@@ -913,7 +913,7 @@ s32 func_800B65F4(s32 arg0, s32 arg1) {
|
||||
writeStatus = osPfsReadWriteFile(&gControllerPak2FileHandle, gControllerPak2FileNote, 0U, (arg0 * 0x3C00) + 0x100,
|
||||
0x00003C00, (u8*) D_800DC714);
|
||||
if (writeStatus == 0) {
|
||||
temp_s3 = &((struct_8018EE10_entry*) D_8018D9C0)[arg0];
|
||||
temp_s3 = &((struct_8018EE10_entry*) gSomeDLBuffer)[arg0];
|
||||
for (i = 0; i < 0x3C; i++) {
|
||||
if (temp_s3->unk_07[i] != func_800B60E8(i)) {
|
||||
temp_s3->ghostDataSaved = 0;
|
||||
@@ -944,14 +944,14 @@ void func_800B6798(void) {
|
||||
s32 temp_s0;
|
||||
u8* tmp;
|
||||
|
||||
tmp = (u8*) D_8018D9C0;
|
||||
tmp = (u8*) gSomeDLBuffer;
|
||||
|
||||
osPfsReadWriteFile(&gControllerPak2FileHandle, gControllerPak2FileNote, PFS_READ, 0,
|
||||
0x100 /* 2*sizeof(struct_8018EE10_entry) ? */, tmp);
|
||||
|
||||
for (temp_s0 = 0; temp_s0 < 2; ++temp_s0) {
|
||||
// if (D_8018D9C0[temp_s0]->checksum != func_800B68F4(temp_s0)) {
|
||||
// D_8018D9C0[temp_s0]->ghostDataSaved = 0;
|
||||
// if (gSomeDLBuffer[temp_s0]->checksum != func_800B68F4(temp_s0)) {
|
||||
// gSomeDLBuffer[temp_s0]->ghostDataSaved = 0;
|
||||
// }
|
||||
if (((struct_8018EE10_entry*) (tmp + (temp_s0 << 7)))->checksum != func_800B68F4(temp_s0)) {
|
||||
((struct_8018EE10_entry*) (tmp + (temp_s0 << 7)))->ghostDataSaved = 0;
|
||||
@@ -976,7 +976,7 @@ u8 func_800B68F4(s32 arg0) {
|
||||
s32 i;
|
||||
checksum = 0;
|
||||
for (i = 0; i < 0x43; i++) {
|
||||
u8* addr = &((u8*) D_8018D9C0)[arg0];
|
||||
u8* addr = &((u8*) gSomeDLBuffer)[arg0];
|
||||
checksum += addr[i] * multiplier + i;
|
||||
}
|
||||
return checksum;
|
||||
|
||||
+3
-3
@@ -55,9 +55,9 @@ void func_800B5404(s32, s32);
|
||||
u8 func_800B54C0(s32, s32);
|
||||
u8 func_800B54EC(s32, s32);
|
||||
u8 func_800B5508(s32, s32, s32);
|
||||
s32 func_800B5530(s32);
|
||||
s32 func_800B555C(void);
|
||||
s32 func_800B557C(void);
|
||||
s32 is_cc_mode_complete(s32);
|
||||
s32 has_unlocked_extra_mode(void);
|
||||
s32 has_completed_extra_mode(void);
|
||||
void func_800B559C(s32);
|
||||
s32 func_800B578C(s32);
|
||||
s32 func_800B5888(s32);
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@
|
||||
#include "main.h"
|
||||
#include "menus.h"
|
||||
#include "render_player.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "effects.h"
|
||||
#include "decode.h"
|
||||
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@
|
||||
#include "save.h"
|
||||
#include "staff_ghosts.h"
|
||||
#include "code_8006E9C0.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "code_80057C60.h"
|
||||
#include "kart_dma.h"
|
||||
|
||||
|
||||
+629
-630
File diff suppressed because it is too large
Load Diff
@@ -26,7 +26,7 @@
|
||||
#include "collision.h"
|
||||
#include "effects.h"
|
||||
#include "code_80091440.h"
|
||||
#include "code_80091750.h"
|
||||
#include "menu_items.h"
|
||||
#include "podium_ceremony_actors.h"
|
||||
#include "courses/all_course_data.h"
|
||||
#include <assets/ceremony_data.h>
|
||||
|
||||
Reference in New Issue
Block a user