diff options
| -rw-r--r-- | include/code_variables.h | 12 | ||||
| -rw-r--r-- | include/game.h | 34 | ||||
| -rw-r--r-- | include/tables/dmatables/dmadata_table_jp.h | 36 | ||||
| -rw-r--r-- | include/tables/gamestate_table.h | 10 | ||||
| -rw-r--r-- | linker_scripts/jp/symbol_addrs_code.txt | 13 | ||||
| -rw-r--r-- | linker_scripts/jp/symbol_addrs_overlays.txt | 36 | ||||
| -rw-r--r-- | src/code/m_game_dlftbls.c | 48 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl__00743CD0/_00743CD0.h | 16 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_famicom_emu/famicom_emu.h | 1 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_first_game/first_game.h | 16 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_play/m_play.h | 1 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_player_select/player_select.h | 16 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_prenmi/m_prenmi.h | 16 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_save_menu/save_menu.h | 16 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_second_game/second_game.h | 16 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_select/m_select.h | 16 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_trademark/m_trademark.h | 16 | ||||
| -rw-r--r-- | yamls/jp/code.yaml | 3 | ||||
| -rw-r--r-- | yamls/jp/overlays.yaml | 144 |
19 files changed, 337 insertions, 129 deletions
diff --git a/include/code_variables.h b/include/code_variables.h index d038f7e..86bdacd 100644 --- a/include/code_variables.h +++ b/include/code_variables.h @@ -467,17 +467,7 @@ // extern UNK_TYPE D_80106D8C_jp; // extern UNK_TYPE D_80106DA0_jp; // extern UNK_TYPE D_80106E10_jp; -// extern UNK_TYPE game_dlftbls; -// extern UNK_TYPE D_80106E50_jp; -// extern UNK_TYPE D_80106E80_jp; -// extern UNK_TYPE D_80106EB0_jp; -// extern UNK_TYPE D_80106EE0_jp; -// extern UNK_TYPE D_80106F10_jp; -// extern UNK_TYPE D_80106F40_jp; -// extern UNK_TYPE D_80106F70_jp; -// extern UNK_TYPE D_80106FA0_jp; -// extern UNK_TYPE D_80106FD0_jp; -// extern UNK_TYPE D_80107000_jp; + // extern UNK_TYPE D_80107010_jp; // extern UNK_TYPE D_80107020_jp; // extern UNK_TYPE D_801071A4_jp; diff --git a/include/game.h b/include/game.h index 999d56d..9bc727e 100644 --- a/include/game.h +++ b/include/game.h @@ -3,6 +3,7 @@ #include "ultra64.h" #include "TwoHeadArena.h" +#include "other_types.h" #include "gamealloc.h" #include "libu64/pad.h" #include "unk.h" @@ -12,8 +13,35 @@ struct GraphicsContext; struct struct_80145020_jp; +#define DEFINE_GAMESTATE_INTERNAL(typeName, enumName) enumName, +#define DEFINE_GAMESTATE(typeName, enumName, name) DEFINE_GAMESTATE_INTERNAL(typeName, enumName) + +typedef enum GameStateId { +#include "tables/gamestate_table.h" + /* 0x0A */ GAMESTATE_ID_MAX +} GameStateId; + +#undef DEFINE_GAMESTATE +#undef DEFINE_GAMESTATE_INTERNAL + + typedef void (*GameStateFunc)(struct GameState* gameState); +typedef struct { + /* 0x00 */ void* loadedRamAddr; + /* 0x04 */ RomOffset vromStart; + /* 0x08 */ RomOffset vromEnd; + /* 0x0C */ void* vramStart; + /* 0x10 */ void* vramEnd; + /* 0x14 */ UNK_PTR unk_14; + /* 0x18 */ GameStateFunc init; // initializes and executes the given context + /* 0x1C */ GameStateFunc destroy; // deconstructs the context, and sets the next context to load + /* 0x20 */ UNK_PTR unk_20; + /* 0x24 */ UNK_PTR unk_24; + /* 0x28 */ UNK_TYPE unk_28; + /* 0x2C */ size_t instanceSize; +} GameStateOverlay; // size = 0x30 + typedef struct GameState { /* 0x00 */ struct GraphicsContext* gfxCtx; /* 0x04 */ GameStateFunc main; @@ -64,6 +92,12 @@ extern f32 game_GameFrame_2F; extern f32 game_GameFrame__1F; +// m_game_dlftbls + +extern GameStateOverlay game_dlftbls[GAMESTATE_ID_MAX]; +extern GameStateId game_dlftbls_num; + + #define CONTROLLER1(gameState) (&(gameState)->input[0]) #define CONTROLLER2(gameState) (&(gameState)->input[1]) #define CONTROLLER3(gameState) (&(gameState)->input[2]) diff --git a/include/tables/dmatables/dmadata_table_jp.h b/include/tables/dmatables/dmadata_table_jp.h index d52578b..bfaa5e4 100644 --- a/include/tables/dmatables/dmadata_table_jp.h +++ b/include/tables/dmatables/dmadata_table_jp.h @@ -12,26 +12,26 @@ DEFINE_DMA_ENTRY(segment_027130, "segment_027130") DEFINE_DMA_ENTRY(segment_0E4D10, "segment_0E4D10") DEFINE_DMA_ENTRY(segment_13D9A0, "segment_13D9A0") DEFINE_DMA_ENTRY(code, "code") -DEFINE_DMA_ENTRY(ovl__0073F4D0, "ovl__0073F4D0") -DEFINE_DMA_ENTRY(ovl__0073F4D0_reloc, "ovl__0073F4D0_reloc") -DEFINE_DMA_ENTRY(ovl__00741EA0, "ovl__00741EA0") -DEFINE_DMA_ENTRY(ovl__00741EA0_reloc, "ovl__00741EA0_reloc") -DEFINE_DMA_ENTRY(ovl__00741FB0, "ovl__00741FB0") -DEFINE_DMA_ENTRY(ovl__00741FB0_reloc, "ovl__00741FB0_reloc") -DEFINE_DMA_ENTRY(ovl__00743B70, "ovl__00743B70") -DEFINE_DMA_ENTRY(ovl__00743B70_reloc, "ovl__00743B70_reloc") +DEFINE_DMA_ENTRY(ovl_select, "ovl_select") +DEFINE_DMA_ENTRY(ovl_select_reloc, "ovl_select_reloc") +DEFINE_DMA_ENTRY(ovl_first_game, "ovl_first_game") +DEFINE_DMA_ENTRY(ovl_first_game_reloc, "ovl_first_game_reloc") +DEFINE_DMA_ENTRY(ovl_play, "ovl_play") +DEFINE_DMA_ENTRY(ovl_play_reloc, "ovl_play_reloc") +DEFINE_DMA_ENTRY(ovl_second_game, "ovl_second_game") +DEFINE_DMA_ENTRY(ovl_second_game_reloc, "ovl_second_game_reloc") DEFINE_DMA_ENTRY(ovl__00743CD0, "ovl__00743CD0") DEFINE_DMA_ENTRY(ovl__00743CD0_reloc, "ovl__00743CD0_reloc") -DEFINE_DMA_ENTRY(ovl__00744020, "ovl__00744020") -DEFINE_DMA_ENTRY(ovl__00744020_reloc, "ovl__00744020_reloc") -DEFINE_DMA_ENTRY(ovl__00747AA0, "ovl__00747AA0") -DEFINE_DMA_ENTRY(ovl__00747AA0_reloc, "ovl__00747AA0_reloc") -DEFINE_DMA_ENTRY(ovl__007486E0, "ovl__007486E0") -DEFINE_DMA_ENTRY(ovl__007486E0_reloc, "ovl__007486E0_reloc") -DEFINE_DMA_ENTRY(ovl__007492E0, "ovl__007492E0") -DEFINE_DMA_ENTRY(ovl__007492E0_reloc, "ovl__007492E0_reloc") -DEFINE_DMA_ENTRY(ovl__007745B0, "ovl__007745B0") -DEFINE_DMA_ENTRY(ovl__007745B0_reloc, "ovl__007745B0_reloc") +DEFINE_DMA_ENTRY(ovl_trademark, "ovl_trademark") +DEFINE_DMA_ENTRY(ovl_trademark_reloc, "ovl_trademark_reloc") +DEFINE_DMA_ENTRY(ovl_player_select, "ovl_player_select") +DEFINE_DMA_ENTRY(ovl_player_select_reloc, "ovl_player_select_reloc") +DEFINE_DMA_ENTRY(ovl_save_menu, "ovl_save_menu") +DEFINE_DMA_ENTRY(ovl_save_menu_reloc, "ovl_save_menu_reloc") +DEFINE_DMA_ENTRY(ovl_famicom_emu, "ovl_famicom_emu") +DEFINE_DMA_ENTRY(ovl_famicom_emu_reloc, "ovl_famicom_emu_reloc") +DEFINE_DMA_ENTRY(ovl_prenmi, "ovl_prenmi") +DEFINE_DMA_ENTRY(ovl_prenmi_reloc, "ovl_prenmi_reloc") DEFINE_DMA_ENTRY(ovl_submenu, "ovl_submenu") DEFINE_DMA_ENTRY(ovl_submenu_reloc, "ovl_submenu_reloc") DEFINE_DMA_ENTRY(ovl__00777AE0, "ovl__00777AE0") diff --git a/include/tables/gamestate_table.h b/include/tables/gamestate_table.h new file mode 100644 index 0000000..1358bae --- /dev/null +++ b/include/tables/gamestate_table.h @@ -0,0 +1,10 @@ +/* 0x00 */ DEFINE_GAMESTATE(FirstGame, GAMESTATE_FIRST_GAME, first_game) +/* 0x01 */ DEFINE_GAMESTATE(MapSelect, GAMESTATE_MAP_SELECT, select) +/* 0x02 */ DEFINE_GAMESTATE(Play, GAMESTATE_PLAY, play) +/* 0x03 */ DEFINE_GAMESTATE(SecondGame, GAMESTATE_SECOND_GAME, second_game) +/* 0x04 */ DEFINE_GAMESTATE(_00743CD0, GAMESTATE_00743CD0, _00743CD0) +/* 0x05 */ DEFINE_GAMESTATE(Trademark, GAMESTATE_TRADEMARK, trademark) +/* 0x06 */ DEFINE_GAMESTATE(PlayerSelect, GAMESTATE_PLAYER_SELECT, player_select) +/* 0x07 */ DEFINE_GAMESTATE(SaveMenu, GAMESTATE_SAVE_MENU, save_menu) +/* 0x08 */ DEFINE_GAMESTATE(FamicomEmu, GAMESTATE_FAMICOM_EMU, famicom_emu) +/* 0x09 */ DEFINE_GAMESTATE(Prenmi, GAMESTATE_PRENMI, prenmi) diff --git a/linker_scripts/jp/symbol_addrs_code.txt b/linker_scripts/jp/symbol_addrs_code.txt index 74fd08e..6d9bee3 100644 --- a/linker_scripts/jp/symbol_addrs_code.txt +++ b/linker_scripts/jp/symbol_addrs_code.txt @@ -4642,17 +4642,10 @@ D_80106D78_jp = 0x80106D78; // D_80106D8C_jp = 0x80106D8C; // D_80106DA0_jp = 0x80106DA0; // D_80106E10_jp = 0x80106E10; // + game_dlftbls = 0x80106E20; // type:GameStateOverlay size:0x1E0 -D_80106E50_jp = 0x80106E50; // -D_80106E80_jp = 0x80106E80; // -D_80106EB0_jp = 0x80106EB0; // -D_80106EE0_jp = 0x80106EE0; // -D_80106F10_jp = 0x80106F10; // -D_80106F40_jp = 0x80106F40; // -D_80106F70_jp = 0x80106F70; // -D_80106FA0_jp = 0x80106FA0; // -D_80106FD0_jp = 0x80106FD0; // -D_80107000_jp = 0x80107000; // +game_dlftbls_num = 0x80107000; // size:0x4 + D_80107010_jp = 0x80107010; // D_80107020_jp = 0x80107020; // D_801071A4_jp = 0x801071A4; // diff --git a/linker_scripts/jp/symbol_addrs_overlays.txt b/linker_scripts/jp/symbol_addrs_overlays.txt index ec88207..6287ea3 100644 --- a/linker_scripts/jp/symbol_addrs_overlays.txt +++ b/linker_scripts/jp/symbol_addrs_overlays.txt @@ -51,8 +51,8 @@ func_80801658_jp = 0x80801658; // type:func func_80801840_jp = 0x80801840; // type:func func_80801928_jp = 0x80801928; // type:func func_808019E4_jp = 0x808019E4; // type:func -func_80801A28_jp = 0x80801A28; // type:func -func_80801A34_jp = 0x80801A34; // type:func +select_cleanup = 0x80801A28; // type:func +select_init = 0x80801A34; // type:func // .data @@ -178,8 +178,8 @@ jtbl_80802550_jp = 0x80802550; // type:jtbl // .text func_808029D0_jp = 0x808029D0; // type:func -func_80802A20_jp = 0x80802A20; // type:func -func_80802A2C_jp = 0x80802A2C; // type:func +first_game_cleanup = 0x80802A20; // type:func +first_game_init = 0x80802A2C; // type:func func_80802A60_jp = 0x80802A60; // type:func func_80802AE0_jp = 0x80802AE0; // type:func func_80802B40_jp = 0x80802B40; // type:func @@ -197,7 +197,7 @@ func_80802E74_jp = 0x80802E74; // type:func func_808030D0_jp = 0x808030D0; // type:func func_80803124_jp = 0x80803124; // type:func func_80803174_jp = 0x80803174; // type:func -func_80803210_jp = 0x80803210; // type:func +play_cleanup = 0x80803210; // type:func play_init = 0x808032F8; // type:func func_80803544_jp = 0x80803544; // type:func func_8080367C_jp = 0x8080367C; // type:func @@ -241,13 +241,13 @@ B_80804562_jp = 0x80804562; // type:s16 // .text func_80804790_jp = 0x80804790; // type:func -func_80804860_jp = 0x80804860; // type:func -func_8080486C_jp = 0x8080486C; // type:func +second_game_cleanup = 0x80804860; // type:func +second_game_init = 0x8080486C; // type:func func_808048F0_jp = 0x808048F0; // type:func func_80804930_jp = 0x80804930; // type:func func_80804ADC_jp = 0x80804ADC; // type:func -func_80804B34_jp = 0x80804B34; // type:func -func_80804B6C_jp = 0x80804B6C; // type:func +_00743CD0_cleanup = 0x80804B34; // type:func +_00743CD0_init = 0x80804B6C; // type:func func_80804C40_jp = 0x80804C40; // type:func func_80804CC0_jp = 0x80804CC0; // type:func func_80804D18_jp = 0x80804D18; // type:func @@ -261,8 +261,8 @@ func_808055F4_jp = 0x808055F4; // type:func func_80805658_jp = 0x80805658; // type:func func_808057D0_jp = 0x808057D0; // type:func func_80805888_jp = 0x80805888; // type:func -func_8080590C_jp = 0x8080590C; // type:func -func_80805968_jp = 0x80805968; // type:func +trademark_cleanup = 0x8080590C; // type:func +trademark_init = 0x80805968; // type:func // .data @@ -326,8 +326,8 @@ func_80828C98_jp = 0x80828C98; // type:func func_80828E48_jp = 0x80828E48; // type:func func_80828F14_jp = 0x80828F14; // type:func func_80828FC4_jp = 0x80828FC4; // type:func -func_80829008_jp = 0x80829008; // type:func -func_80829014_jp = 0x80829014; // type:func +player_select_cleanup = 0x80829008; // type:func +player_select_init = 0x80829014; // type:func // .data @@ -366,8 +366,8 @@ func_80829A80_jp = 0x80829A80; // type:func func_80829B60_jp = 0x80829B60; // type:func func_80829CC8_jp = 0x80829CC8; // type:func func_80829D70_jp = 0x80829D70; // type:func -func_80829DB4_jp = 0x80829DB4; // type:func -func_80829DC0_jp = 0x80829DC0; // type:func +save_menu_cleanup = 0x80829DB4; // type:func +save_menu_init = 0x80829DC0; // type:func // .data @@ -466,7 +466,7 @@ func_8082D98C_jp = 0x8082D98C; // type:func func_8082DA58_jp = 0x8082DA58; // type:func func_8082DA64_jp = 0x8082DA64; // type:func famicom_emu_init = 0x8082DF6C; // type:func -func_8082E470_jp = 0x8082E470; // type:func +famicom_emu_cleanup = 0x8082E470; // type:func func_8082E4E0_jp = 0x8082E4E0; // type:func func_8082E590_jp = 0x8082E590; // type:func func_8082EA20_jp = 0x8082EA20; // type:func @@ -801,8 +801,8 @@ B_80855800_jp = 0x80855800; // func_8085B6B0_jp = 0x8085B6B0; // type:func func_8085B718_jp = 0x8085B718; // type:func func_8085B9D4_jp = 0x8085B9D4; // type:func -func_8085BA1C_jp = 0x8085BA1C; // type:func -func_8085BA28_jp = 0x8085BA28; // type:func +prenmi_cleanup = 0x8085BA1C; // type:func +prenmi_init = 0x8085BA28; // type:func // .rodata diff --git a/src/code/m_game_dlftbls.c b/src/code/m_game_dlftbls.c new file mode 100644 index 0000000..21e59ec --- /dev/null +++ b/src/code/m_game_dlftbls.c @@ -0,0 +1,48 @@ +#include "game.h" +#include "segment_symbols.h" +#include "overlays/gamestates/ovl_select/m_select.h" +#include "overlays/gamestates/ovl_first_game/first_game.h" +#include "overlays/gamestates/ovl_play/m_play.h" +#include "overlays/gamestates/ovl_second_game/second_game.h" +#include "overlays/gamestates/ovl__00743CD0/_00743CD0.h" +#include "overlays/gamestates/ovl_trademark/m_trademark.h" +#include "overlays/gamestates/ovl_player_select/player_select.h" +#include "overlays/gamestates/ovl_save_menu/save_menu.h" +#include "overlays/gamestates/ovl_famicom_emu/famicom_emu.h" +#include "overlays/gamestates/ovl_prenmi/m_prenmi.h" + +// Linker symbol declarations (used in the table below) +#define DEFINE_GAMESTATE(_typeName, _enumName, segmentName) DECLARE_SEGMENT(ovl_##segmentName); +#define DEFINE_GAMESTATE_INTERNAL(_typeName, _enumName) + +#include "tables/gamestate_table.h" + +#undef DEFINE_GAMESTATE +#undef DEFINE_GAMESTATE_INTERNAL + +// Gamestate Overlay Table definition +#define DEFINE_GAMESTATE_INTERNAL(typeName, _enumName) \ + { NULL, 0, 0, NULL, NULL, NULL, typeName##_Init, typeName##_Destroy, NULL, NULL, 0, sizeof(typeName##State) }, + +#define DEFINE_GAMESTATE(typeName, _enumName, segmentName) \ + { NULL, \ + SEGMENT_ROM_START(ovl_##segmentName), \ + SEGMENT_ROM_END(ovl_##segmentName), \ + SEGMENT_VRAM_START(ovl_##segmentName), \ + SEGMENT_VRAM_END(ovl_##segmentName), \ + NULL, \ + segmentName##_init, \ + segmentName##_cleanup, \ + NULL, \ + NULL, \ + 0, \ + sizeof(typeName##State) }, + +GameStateOverlay game_dlftbls[GAMESTATE_ID_MAX] = { +#include "tables/gamestate_table.h" +}; + +#undef DEFINE_GAMESTATE +#undef DEFINE_GAMESTATE_INTERNAL + +GameStateId game_dlftbls_num = GAMESTATE_ID_MAX; diff --git a/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h b/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h new file mode 100644 index 0000000..d91180b --- /dev/null +++ b/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h @@ -0,0 +1,16 @@ +#ifndef _00743CD0_H +#define _00743CD0_H + +#include "ultra64.h" +#include "game.h" +#include "unk.h" + +typedef struct _00743CD0State { + /* 0x00 */ GameState state; + /* 0xA4 */ UNK_TYPE1 unk_00[0x1B20-0xA4]; +} _00743CD0State; // size = 0x1B20 + +void _00743CD0_init(GameState *thisx); +void _00743CD0_cleanup(GameState *thisx); + +#endif diff --git a/src/overlays/gamestates/ovl_famicom_emu/famicom_emu.h b/src/overlays/gamestates/ovl_famicom_emu/famicom_emu.h index a8c22d3..60d71a0 100644 --- a/src/overlays/gamestates/ovl_famicom_emu/famicom_emu.h +++ b/src/overlays/gamestates/ovl_famicom_emu/famicom_emu.h @@ -11,5 +11,6 @@ typedef struct FamicomEmuState { } FamicomEmuState; // size = 0xE0 void famicom_emu_init(GameState *thisx); +void famicom_emu_cleanup(GameState *thisx); #endif diff --git a/src/overlays/gamestates/ovl_first_game/first_game.h b/src/overlays/gamestates/ovl_first_game/first_game.h new file mode 100644 index 0000000..35c7228 --- /dev/null +++ b/src/overlays/gamestates/ovl_first_game/first_game.h @@ -0,0 +1,16 @@ +#ifndef FIRST_GAME_H +#define FIRST_GAME_H + +#include "ultra64.h" +#include "game.h" +#include "unk.h" + +typedef struct FirstGameState { + /* 0x00 */ GameState state; + /* 0xA4 */ UNK_TYPE1 unk_00[0x3C]; +} FirstGameState; // size = 0xE0 + +void first_game_init(GameState *thisx); +void first_game_cleanup(GameState *thisx); + +#endif diff --git a/src/overlays/gamestates/ovl_play/m_play.h b/src/overlays/gamestates/ovl_play/m_play.h index fb8872d..d832411 100644 --- a/src/overlays/gamestates/ovl_play/m_play.h +++ b/src/overlays/gamestates/ovl_play/m_play.h @@ -11,5 +11,6 @@ typedef struct PlayState { } PlayState; // size = 0x2410 void play_init(GameState *thisx); +void play_cleanup(GameState *thisx); #endif diff --git a/src/overlays/gamestates/ovl_player_select/player_select.h b/src/overlays/gamestates/ovl_player_select/player_select.h new file mode 100644 index 0000000..0ae08b3 --- /dev/null +++ b/src/overlays/gamestates/ovl_player_select/player_select.h @@ -0,0 +1,16 @@ +#ifndef PLAYER_SELECT_H +#define PLAYER_SELECT_H + +#include "ultra64.h" +#include "game.h" +#include "unk.h" + +typedef struct PlayerSelectState { + /* 0x00 */ GameState state; + /* 0xA4 */ UNK_TYPE1 unk_00[0x288-0xA4]; +} PlayerSelectState; // size = 0x288 + +void player_select_init(GameState *thisx); +void player_select_cleanup(GameState *thisx); + +#endif diff --git a/src/overlays/gamestates/ovl_prenmi/m_prenmi.h b/src/overlays/gamestates/ovl_prenmi/m_prenmi.h new file mode 100644 index 0000000..a55cfc4 --- /dev/null +++ b/src/overlays/gamestates/ovl_prenmi/m_prenmi.h @@ -0,0 +1,16 @@ +#ifndef PRENMI_H +#define PRENMI_H + +#include "ultra64.h" +#include "game.h" +#include "unk.h" + +typedef struct PrenmiState { + /* 0x00 */ GameState state; + /* 0xA4 */ UNK_TYPE1 unk_00[0xE8-0xA4]; +} PrenmiState; // size = 0xE8 + +void prenmi_init(GameState *thisx); +void prenmi_cleanup(GameState *thisx); + +#endif diff --git a/src/overlays/gamestates/ovl_save_menu/save_menu.h b/src/overlays/gamestates/ovl_save_menu/save_menu.h new file mode 100644 index 0000000..57ef8f9 --- /dev/null +++ b/src/overlays/gamestates/ovl_save_menu/save_menu.h @@ -0,0 +1,16 @@ +#ifndef SAVE_MENU_H +#define SAVE_MENU_H + +#include "ultra64.h" +#include "game.h" +#include "unk.h" + +typedef struct SaveMenuState { + /* 0x00 */ GameState state; + /* 0xA4 */ UNK_TYPE1 unk_00[0x230-0xA4]; +} SaveMenuState; // size = 0x230 + +void save_menu_init(GameState *thisx); +void save_menu_cleanup(GameState *thisx); + +#endif diff --git a/src/overlays/gamestates/ovl_second_game/second_game.h b/src/overlays/gamestates/ovl_second_game/second_game.h new file mode 100644 index 0000000..b3f7689 --- /dev/null +++ b/src/overlays/gamestates/ovl_second_game/second_game.h @@ -0,0 +1,16 @@ +#ifndef SECOND_GAME_H +#define SECOND_GAME_H + +#include "ultra64.h" +#include "game.h" +#include "unk.h" + +typedef struct SecondGameState { + /* 0x00 */ GameState state; + /* 0xA4 */ UNK_TYPE1 unk_00[0xE0-0xA4]; +} SecondGameState; // size = 0xE0 + +void second_game_init(GameState *thisx); +void second_game_cleanup(GameState *thisx); + +#endif diff --git a/src/overlays/gamestates/ovl_select/m_select.h b/src/overlays/gamestates/ovl_select/m_select.h new file mode 100644 index 0000000..94dc534 --- /dev/null +++ b/src/overlays/gamestates/ovl_select/m_select.h @@ -0,0 +1,16 @@ +#ifndef SELECT_H +#define SELECT_H + +#include "ultra64.h" +#include "game.h" +#include "unk.h" + +typedef struct MapSelectState { + /* 0x00 */ GameState state; + /* 0xA4 */ UNK_TYPE1 unk_00[0x240-0xA4]; +} MapSelectState; // size = 0x240 + +void select_init(GameState *thisx); +void select_cleanup(GameState *thisx); + +#endif diff --git a/src/overlays/gamestates/ovl_trademark/m_trademark.h b/src/overlays/gamestates/ovl_trademark/m_trademark.h new file mode 100644 index 0000000..38abf24 --- /dev/null +++ b/src/overlays/gamestates/ovl_trademark/m_trademark.h @@ -0,0 +1,16 @@ +#ifndef TRADEMARK_H +#define TRADEMARK_H + +#include "ultra64.h" +#include "game.h" +#include "unk.h" + +typedef struct TrademarkState { + /* 0x00 */ GameState state; + /* 0xA4 */ UNK_TYPE1 unk_00[0x25A78-0xA4]; +} TrademarkState; // size = 0x25A78 + +void trademark_init(GameState *thisx); +void trademark_cleanup(GameState *thisx); + +#endif diff --git a/yamls/jp/code.yaml b/yamls/jp/code.yaml index 91d97ad..e5f3f68 100644 --- a/yamls/jp/code.yaml +++ b/yamls/jp/code.yaml @@ -132,6 +132,9 @@ - [0x7248D0, data, code/7248D0] - [0x724930, .data, code/m_actor_dlftbls] - [0x726260, data, code/m_actor_shadow] + - [0x7262C0, data, code/7262C0] + - [0x72AAC0, .data, code/m_game_dlftbls] + - [0x72ACB0, data, code/72ACB0] - [0x72B7A0, data, code/m_lib] - [0x72B7D0, data, code/72B7D0] - [0x732C30, .data, code/game] diff --git a/yamls/jp/overlays.yaml b/yamls/jp/overlays.yaml index 6e81fe2..6fc9c6a 100644 --- a/yamls/jp/overlays.yaml +++ b/yamls/jp/overlays.yaml @@ -1,88 +1,88 @@ - - name: ovl__0073F4D0 + - name: ovl_select type: code start: 0x73F4D0 vram: 0x80800000 compress: True bss_size: 0x0 subsegments: - - [0x73F4D0, asm, overlays/other_ovl/ovl__0073F4D0/ovl__0073F4D0] - - [0x741030, data, overlays/other_ovl/ovl__0073F4D0/ovl__0073F4D0] - - [0x741310, rodata, overlays/other_ovl/ovl__0073F4D0/ovl__0073F4D0] - - name: ovl__0073F4D0_reloc + - [0x73F4D0, asm, overlays/gamestates/ovl_select/m_select] + - [0x741030, data, overlays/gamestates/ovl_select/m_select] + - [0x741310, rodata, overlays/gamestates/ovl_select/m_select] + - name: ovl_select_reloc type: code start: 0x741A40 vram: 0x80802570 - follows_vram: ovl__0073F4D0 + follows_vram: ovl_select compress: True subsegments: - - [0x741A40, data, overlays/other_ovl/ovl__0073F4D0/ovl__0073F4D0_reloc] + - [0x741A40, data, overlays/gamestates/ovl_select/ovl_select_reloc] - - name: ovl__00741EA0 + - name: ovl_first_game type: code start: 0x741EA0 vram: 0x808029D0 - follows_vram: ovl__0073F4D0_reloc + follows_vram: ovl_select_reloc compress: True bss_size: 0x0 subsegments: - - [0x741EA0, asm, overlays/other_ovl/ovl__00741EA0/ovl__00741EA0] - - name: ovl__00741EA0_reloc + - [0x741EA0, asm, overlays/gamestates/ovl_first_game/first_game] + - name: ovl_first_game_reloc type: code start: 0x741F80 vram: 0x80802AB0 - follows_vram: ovl__00741EA0 + follows_vram: ovl_first_game compress: True subsegments: - - [0x741F80, data, overlays/other_ovl/ovl__00741EA0/ovl__00741EA0_reloc] + - [0x741F80, data, overlays/gamestates/ovl_first_game/ovl_first_game_reloc] - - name: ovl__00741FB0 + - name: ovl_play type: code start: 0x741FB0 vram: 0x80802AE0 - follows_vram: ovl__00741EA0_reloc + follows_vram: ovl_first_game_reloc compress: True bss_size: 0xF0 subsegments: - - [0x741FB0, asm, overlays/other_ovl/ovl__00741FB0/ovl__00741FB0] - - [0x7437F0, data, overlays/other_ovl/ovl__00741FB0/ovl__00741FB0] - - [0x743890, rodata, overlays/other_ovl/ovl__00741FB0/ovl__00741FB0] - - { start: 0x743950, type: bss, vram: 0x80804480, name: overlays/other_ovl/ovl__00741FB0/ovl__00741FB0 } - - name: ovl__00741FB0_reloc + - [0x741FB0, asm, overlays/gamestates/ovl_play/m_play] + - [0x7437F0, data, overlays/gamestates/ovl_play/m_play] + - [0x743890, rodata, overlays/gamestates/ovl_play/m_play] + - { start: 0x743950, type: bss, vram: 0x80804480, name: overlays/gamestates/ovl_play/m_play } + - name: ovl_play_reloc type: code start: 0x743950 vram: 0x80804570 - follows_vram: ovl__00741FB0 + follows_vram: ovl_play compress: True subsegments: - - [0x743950, data, overlays/other_ovl/ovl__00741FB0/ovl__00741FB0_reloc] + - [0x743950, data, overlays/gamestates/ovl_play/ovl_play_reloc] - - name: ovl__00743B70 + - name: ovl_second_game type: code start: 0x743B70 vram: 0x80804790 - follows_vram: ovl__00741FB0_reloc + follows_vram: ovl_play_reloc compress: True bss_size: 0x0 subsegments: - - [0x743B70, asm, overlays/other_ovl/ovl__00743B70/ovl__00743B70] - - name: ovl__00743B70_reloc + - [0x743B70, asm, overlays/gamestates/ovl_second_game/second_game] + - name: ovl_second_game_reloc type: code start: 0x743CA0 vram: 0x808048C0 - follows_vram: ovl__00743B70 + follows_vram: ovl_second_game compress: True subsegments: - - [0x743CA0, data, overlays/other_ovl/ovl__00743B70/ovl__00743B70_reloc] + - [0x743CA0, data, overlays/gamestates/ovl_second_game/ovl_second_game_reloc] - name: ovl__00743CD0 type: code start: 0x743CD0 vram: 0x808048F0 - follows_vram: ovl__00743B70_reloc + follows_vram: ovl_second_game_reloc compress: True bss_size: 0x0 subsegments: - - [0x743CD0, asm, overlays/other_ovl/ovl__00743CD0/ovl__00743CD0] + - [0x743CD0, asm, overlays/gamestates/ovl__00743CD0/ovl__00743CD0] - name: ovl__00743CD0_reloc type: code start: 0x743FE0 @@ -90,9 +90,9 @@ follows_vram: ovl__00743CD0 compress: True subsegments: - - [0x743FE0, data, overlays/other_ovl/ovl__00743CD0/ovl__00743CD0_reloc] + - [0x743FE0, data, overlays/gamestates/ovl__00743CD0/ovl__00743CD0_reloc] - - name: ovl__00744020 + - name: ovl_trademark type: code start: 0x744020 vram: 0x80804C40 @@ -100,104 +100,104 @@ compress: True bss_size: 0x20170 subsegments: - - [0x744020, asm, overlays/other_ovl/ovl__00744020/ovl__00744020] - - [0x744F00, data, overlays/other_ovl/ovl__00744020/ovl__00744020] - - [0x747910, rodata, overlays/other_ovl/ovl__00744020/ovl__00744020] - - { start: 0x747940, type: bss, vram: 0x80808560, name: overlays/other_ovl/ovl__00744020/ovl__00744020 } - - name: ovl__00744020_reloc + - [0x744020, asm, overlays/gamestates/ovl_trademark/m_trademark] + - [0x744F00, data, overlays/gamestates/ovl_trademark/m_trademark] + - [0x747910, rodata, overlays/gamestates/ovl_trademark/m_trademark] + - { start: 0x747940, type: bss, vram: 0x80808560, name: overlays/gamestates/ovl_trademark/m_trademark } + - name: ovl_trademark_reloc type: code start: 0x747940 vram: 0x808286D0 - follows_vram: ovl__00744020 + follows_vram: ovl_trademark compress: True subsegments: - - [0x747940, data, overlays/other_ovl/ovl__00744020/ovl__00744020_reloc] + - [0x747940, data, overlays/gamestates/ovl_trademark/ovl_trademark_reloc] - - name: ovl__00747AA0 + - name: ovl_player_select type: code start: 0x747AA0 vram: 0x80828830 - follows_vram: ovl__00744020_reloc + follows_vram: ovl_trademark_reloc compress: True bss_size: 0x0 subsegments: - - [0x747AA0, asm, overlays/other_ovl/ovl__00747AA0/ovl__00747AA0] - - [0x748570, data, overlays/other_ovl/ovl__00747AA0/ovl__00747AA0] - - [0x7485E0, rodata, overlays/other_ovl/ovl__00747AA0/ovl__00747AA0] - - name: ovl__00747AA0_reloc + - [0x747AA0, asm, overlays/gamestates/ovl_player_select/player_select] + - [0x748570, data, overlays/gamestates/ovl_player_select/player_select] + - [0x7485E0, rodata, overlays/gamestates/ovl_player_select/player_select] + - name: ovl_player_select_reloc type: code start: 0x7485F0 vram: 0x80829380 - follows_vram: ovl__00747AA0 + follows_vram: ovl_player_select compress: True subsegments: - - [0x7485F0, data, overlays/other_ovl/ovl__00747AA0/ovl__00747AA0_reloc] + - [0x7485F0, data, overlays/gamestates/ovl_player_select/ovl_player_select_reloc] - - name: ovl__007486E0 + - name: ovl_save_menu type: code start: 0x7486E0 vram: 0x80829470 - follows_vram: ovl__00747AA0_reloc + follows_vram: ovl_player_select_reloc compress: True bss_size: 0x0 subsegments: - - [0x7486E0, asm, overlays/other_ovl/ovl__007486E0/ovl__007486E0] - - [0x7490E0, data, overlays/other_ovl/ovl__007486E0/ovl__007486E0] - - [0x7491E0, rodata, overlays/other_ovl/ovl__007486E0/ovl__007486E0] - - name: ovl__007486E0_reloc + - [0x7486E0, asm, overlays/gamestates/ovl_save_menu/save_menu] + - [0x7490E0, data, overlays/gamestates/ovl_save_menu/save_menu] + - [0x7491E0, rodata, overlays/gamestates/ovl_save_menu/save_menu] + - name: ovl_save_menu_reloc type: code start: 0x749200 vram: 0x80829F90 - follows_vram: ovl__007486E0 + follows_vram: ovl_save_menu compress: True subsegments: - - [0x749200, data, overlays/other_ovl/ovl__007486E0/ovl__007486E0_reloc] + - [0x749200, data, overlays/gamestates/ovl_save_menu/ovl_save_menu_reloc] - - name: ovl__007492E0 + - name: ovl_famicom_emu type: code start: 0x7492E0 vram: 0x8082A070 - follows_vram: ovl__007486E0_reloc + follows_vram: ovl_save_menu_reloc compress: True bss_size: 0x6370 subsegments: - - [0x7492E0, asm, overlays/other_ovl/ovl__007492E0/ovl__007492E0] - - [0x755010, data, overlays/other_ovl/ovl__007492E0/ovl__007492E0] - - [0x771500, rodata, overlays/other_ovl/ovl__007492E0/ovl__007492E0] - - { start: 0x771900, type: bss, vram: 0x80852690, name: overlays/other_ovl/ovl__007492E0/ovl__007492E0 } - - name: ovl__007492E0_reloc + - [0x7492E0, asm, overlays/gamestates/ovl_famicom_emu/famicom_emu] + - [0x755010, data, overlays/gamestates/ovl_famicom_emu/famicom_emu] + - [0x771500, rodata, overlays/gamestates/ovl_famicom_emu/famicom_emu] + - { start: 0x771900, type: bss, vram: 0x80852690, name: overlays/gamestates/ovl_famicom_emu/famicom_emu } + - name: ovl_famicom_emu_reloc type: code start: 0x771900 vram: 0x80858A00 - follows_vram: ovl__007492E0 + follows_vram: ovl_famicom_emu compress: True subsegments: - - [0x771900, data, overlays/other_ovl/ovl__007492E0/ovl__007492E0_reloc] + - [0x771900, data, overlays/gamestates/ovl_famicom_emu/ovl_famicom_emu_reloc] - - name: ovl__007745B0 + - name: ovl_prenmi type: code start: 0x7745B0 vram: 0x8085B6B0 - follows_vram: ovl__007492E0_reloc + follows_vram: ovl_famicom_emu_reloc compress: True bss_size: 0x0 subsegments: - - [0x7745B0, asm, overlays/other_ovl/ovl__007745B0/ovl__007745B0] - - [0x774970, rodata, overlays/other_ovl/ovl__007745B0/ovl__007745B0] - - name: ovl__007745B0_reloc + - [0x7745B0, asm, overlays/gamestates/ovl_prenmi/m_prenmi] + - [0x774970, rodata, overlays/gamestates/ovl_prenmi/m_prenmi] + - name: ovl_prenmi_reloc type: code start: 0x774980 vram: 0x8085BA80 - follows_vram: ovl__007745B0 + follows_vram: ovl_prenmi compress: True subsegments: - - [0x774980, data, overlays/other_ovl/ovl__007745B0/ovl__007745B0_reloc] + - [0x774980, data, overlays/gamestates/ovl_prenmi/ovl_prenmi_reloc] - name: ovl_submenu type: code start: 0x7749C0 vram: 0x8085BAC0 - follows_vram: ovl__007745B0_reloc + follows_vram: ovl_prenmi_reloc compress: True bss_size: 0x10730 subsegments: |
