diff --git a/include/6BFE60.h b/include/6BFE60.h index 328c3fc3..917d6220 100644 --- a/include/6BFE60.h +++ b/include/6BFE60.h @@ -4,6 +4,8 @@ #include "ultra64.h" #include "unk.h" +struct struct_func_8085CE18_jp_arg4; + typedef struct mMl { /* 0x00 */ UNK_TYPE1 unk_00[0xA4]; } mMl; // size = 0xA4 @@ -30,7 +32,7 @@ void mMl_clear_mail(mMl* arg0); // void mMl_set_mail_name_npcinfo(); // void mMl_get_npcinfo_from_mail_name(); // void mMl_hunt_for_send_address(); -// void func_8009C89C_jp(); +UNK_TYPE mMl_check_send_mail(struct struct_func_8085CE18_jp_arg4* arg0); // void func_8009C8C0_jp(); #endif diff --git a/include/6E0F50.h b/include/6E0F50.h index 1b06680b..bd456a5f 100644 --- a/include/6E0F50.h +++ b/include/6E0F50.h @@ -3,6 +3,7 @@ #include "ultra64.h" +struct GraphicsContext; struct Game_Play; // void func_800BD2B0_jp(); @@ -34,7 +35,7 @@ Gfx* func_800BD7C0_jp(Gfx* gfx); // void func_800BD9FC_jp(); // void func_800BDA20_jp(); // void two_tex_scroll(); -void DisplayList_initialize(GraphicsContext* gfxCtx, u8 arg1, u8 arg2, u8 arg3, struct Game_Play* game_play); +void DisplayList_initialize(struct GraphicsContext* gfxCtx, u8 arg1, u8 arg2, u8 arg3, struct Game_Play* game_play); void fade_rgba8888_draw(Gfx** gfx, s32 arg1); // void func_800BE030_jp(); // void fade_black_draw(); @@ -44,7 +45,7 @@ Gfx *func_800BE12C_jp(Gfx *gfx, s32 arg1, s32 arg2, s32 arg3, s32 arg4); // void func_800BE184_jp(); // void func_800BE1D4_jp(); // void func_800BE27C_jp(); -// void func_800BE320_jp(); +Gfx* func_800BE320_jp(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32, s32); // void func_800BE4F8_jp(); #endif diff --git a/include/6E9650.h b/include/6E9650.h index 3683dfca..4cf3823a 100644 --- a/include/6E9650.h +++ b/include/6E9650.h @@ -4,7 +4,7 @@ #include "ultra64.h" struct Game_Play; -struct Game_Play_unk_0110; +struct Game_Play_unk_0110_unk_0000; // void func_800C59B0_jp(); // void func_800C5A08_jp(); @@ -19,14 +19,14 @@ struct Game_Play_unk_0110; // void func_800C5E10_jp(); // void func_800C5EA0_jp(); // void func_800C5F0C_jp(); -void mSc_dmacopy_data_bank(struct Game_Play_unk_0110* arg0); -s32 mSc_bank_regist_check(struct Game_Play_unk_0110* arg0, s16 arg1); -void func_800C6144_jp(struct Game_Play_unk_0110* arg0, s16 arg1); +void mSc_dmacopy_data_bank(struct Game_Play_unk_0110_unk_0000* arg0); +s32 mSc_bank_regist_check(struct Game_Play_unk_0110_unk_0000* arg0, s16 arg1); +void func_800C6144_jp(struct Game_Play_unk_0110_unk_0000* arg0, s16 arg1); void mSc_regist_initial_exchange_bank(struct Game_Play* game_play); // void func_800C62C4_jp(); -void mSc_dmacopy_all_exchange_bank(struct Game_Play_unk_0110* arg0); -void mSc_data_bank_ct(struct Game_Play* game_play, struct Game_Play_unk_0110* arg1); -void mSc_decide_exchange_bank(struct Game_Play_unk_0110* arg0); +void mSc_dmacopy_all_exchange_bank(struct Game_Play_unk_0110_unk_0000* arg0); +void mSc_data_bank_ct(struct Game_Play* game_play, struct Game_Play_unk_0110_unk_0000* arg1); +void mSc_decide_exchange_bank(struct Game_Play_unk_0110_unk_0000* arg0); // void func_800C6690_jp(); void Scene_ct(struct Game_Play* game_play, void* arg1); // void func_800C6960_jp(); diff --git a/include/PreRender.h b/include/PreRender.h index a6810873..48d9c39e 100644 --- a/include/PreRender.h +++ b/include/PreRender.h @@ -2,18 +2,23 @@ #define PRE_RENDER_H #include "ultra64.h" +#include "unk.h" typedef struct ListAlloc { /* 0x0 */ struct ListAlloc* prev; /* 0x4 */ struct ListAlloc* next; } ListAlloc; // size = 0x8 -typedef struct { - /* 0x00 */ char unk00[0x10]; +typedef struct PreRender { + /* 0x00 */ u16 unk_00; + /* 0x02 */ u16 unk_02; + /* 0x04 */ u16 unk_04; + /* 0x04 */ u16 unk_06; + /* 0x08 */ UNK_TYPE1 unk_08[0x8]; /* 0x10 */ UNK_PTR unk_10; /* 0x14 */ UNK_PTR unk_14; /* 0x18 */ UNK_PTR unk_18; - /* 0x1C */ char unk1C[0x34]; + /* 0x1C */ UNK_TYPE1 unk_1C[0x34]; } PreRender; // size = 0x50 // void wallpaper_draw1(); @@ -29,7 +34,7 @@ void PreRender_cleanup(PreRender* render); // void PreRender_TransBuffer1(); // void PreRender_TransBuffer2(); // void PreRender_ShowCoveredge(); -// void PreRender_CopyRGBC(); +void PreRender_CopyRGBC(PreRender* render, Gfx** gfxP, s32 arg2, s32 arg3); // void PreRender_saveZBuffer(); void PreRender_saveFrameBuffer(PreRender* render, Gfx** gfx); void PreRender_saveCVG(PreRender* render, Gfx** gfx); diff --git a/include/m_common_data.h b/include/m_common_data.h index 20ffd95d..9e74dda3 100644 --- a/include/m_common_data.h +++ b/include/m_common_data.h @@ -16,7 +16,7 @@ struct Actor; struct ActorOverlay; struct struct_801161E8_jp; -struct Game_Play_unk_0110; +struct Game_Play_unk_0110_unk_0000; struct CommonData_unk_1004C_unk_14_arg0; struct Game_Play; struct struct_809AEFA4; @@ -39,9 +39,9 @@ typedef UNK_RET (*CommonData_unk_1004C_unk_D0)(void); typedef UNK_RET (*CommonData_unk_1004C_unk_E4)(void); -typedef UNK_RET (*CommonData_unk_1004C_unk_EC)(struct Game_Play_unk_0110*, s16, s16); -typedef UNK_RET (*CommonData_unk_1004C_unk_F0)(struct Game_Play_unk_0110*, struct Actor*); -typedef s32 (*CommonData_unk_1004C_unk_F4)(struct Game_Play_unk_0110*, struct Actor*); +typedef UNK_RET (*CommonData_unk_1004C_unk_EC)(struct Game_Play_unk_0110_unk_0000*, s16, s16); +typedef UNK_RET (*CommonData_unk_1004C_unk_F0)(struct Game_Play_unk_0110_unk_0000*, struct Actor*); +typedef s32 (*CommonData_unk_1004C_unk_F4)(struct Game_Play_unk_0110_unk_0000*, struct Actor*); typedef UNK_RET (*CommonData_unk_1004C_unk_118)(struct Actor*); diff --git a/include/m_submenu.h b/include/m_submenu.h index 622a95f8..fcf3fe6f 100644 --- a/include/m_submenu.h +++ b/include/m_submenu.h @@ -9,7 +9,8 @@ #include "unk.h" struct Game_Play; -struct mSM; +struct Submenu; +struct struct_8085E9B0; typedef enum mSMMoveProcIndex { /* 0 */ MSM_MOVE_PROC_WAIT, @@ -40,13 +41,38 @@ typedef enum InventoryItemList { /* 16 */ INVENTORY_ITEM_LIST_MAX } InventoryItemList; -typedef void (*mSM_unk_30)(struct mSM*); -typedef void (*mSM_unk_34)(struct mSM*, struct Game_Play*); +typedef enum SubmenuProgramId { + /* 0 */ SUBMENU_PROGRAM_0, // inventory, NONE? DEFAULT? + /* 1 */ SUBMENU_PROGRAM_1, // inventory + /* 2 */ SUBMENU_PROGRAM_2, + /* 3 */ SUBMENU_PROGRAM_3, + /* 4 */ SUBMENU_PROGRAM_LEDIT, + /* 5 */ SUBMENU_PROGRAM_MAP, + /* 6 */ SUBMENU_PROGRAM_6, + /* 7 */ SUBMENU_PROGRAM_7, + /* 8 */ SUBMENU_PROGRAM_8, + /* 9 */ SUBMENU_PROGRAM_9, + /* 10 */ SUBMENU_PROGRAM_10, + /* 11 */ SUBMENU_PROGRAM_11, + /* 12 */ SUBMENU_PROGRAM_BOARD, + /* 13 */ SUBMENU_PROGRAM_13, + /* 14 */ SUBMENU_PROGRAM_14, + /* 15 */ SUBMENU_PROGRAM_15, + /* 16 */ SUBMENU_PROGRAM_16, + /* 17 */ SUBMENU_PROGRAM_17, + /* 18 */ SUBMENU_PROGRAM_18, + /* 19 */ SUBMENU_PROGRAM_19, + /* 20 */ SUBMENU_PROGRAM_CATALOG, + /* 21 */ SUBMENU_PROGRAM_MAX, +} SubmenuProgramId; -typedef struct mSM { +typedef void (*SubmenuMoveFunc)(struct Submenu*); +typedef void (*SubmenuDrawFunc)(struct Submenu*, struct Game_Play*); + +typedef struct Submenu { /* 0x00 */ s32 unk_00; - /* 0x04 */ s32 unk_04; - /* 0x08 */ UNK_TYPE1 unk_08[0x4]; + /* 0x04 */ SubmenuProgramId programId; + /* 0x08 */ SubmenuProgramId unk_08; /* 0x0C */ mSMMoveProcIndex moveProcIndex; /* 0x10 */ s32 unk_10; /* 0x14 */ s32 unk_14; @@ -55,9 +81,9 @@ typedef struct mSM { /* 0x20 */ s32 unk_20; /* 0x24 */ void* linkedAllocStart; /* 0x28 */ void* linkedAllocEnd; - /* 0x2C */ UNK_TYPE1 unk_2C[0x4]; - /* 0x30 */ mSM_unk_30 play; // name based on mSM_move_Play, consider renaming - /* 0x34 */ mSM_unk_34 draw; + /* 0x2C */ struct struct_8085E9B0* unk_2C; + /* 0x30 */ SubmenuMoveFunc move; + /* 0x34 */ SubmenuDrawFunc draw; /* 0x38 */ mMl mail; /* 0xDC */ u8 unk_DC; /* 0xDD */ u8 unk_DD; @@ -67,26 +93,26 @@ typedef struct mSM { /* 0xE2 */ u8 unk_E2; /* 0xE3 */ u8 unk_E3; /* 0xE4 */ Vec3f unk_E4; -} mSM; // size = 0xF0 +} Submenu; // size = 0xF0 s32 SubmenuArea_IsPlayer(void); -void* mSM_ovlptr_dllcnv(void* vram, mSM* submenu); +void* mSM_ovlptr_dllcnv(void* vram, Submenu* submenu); void mSM_submenu_ovlptr_init(struct Game_Play* game_play); -void mSM_submenu_ovlptr_cleanup(mSM* submenu); +void mSM_submenu_ovlptr_cleanup(Submenu* submenu); -void load_player(mSM* submenu); -void mSM_submenu_ct(mSM* submenu); -void mSM_submenu_dt(mSM* arg0); +void load_player(Submenu* submenu); +void mSM_submenu_ct(Submenu* submenu); +void mSM_submenu_dt(Submenu* submenu); -void mSM_open_submenu(mSM* submenu, s32 arg1, s32 arg2, s32 arg3); -void mSM_open_submenu_new(mSM* submenu, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -void mSM_open_submenu_new2(mSM* submenu, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5); +void mSM_open_submenu(Submenu* submenu, SubmenuProgramId programId, s32 arg2, s32 arg3); +void mSM_open_submenu_new(Submenu* submenu, SubmenuProgramId programId, s32 arg2, s32 arg3, s32 arg4); +void mSM_open_submenu_new2(Submenu* submenu, SubmenuProgramId programId, s32 arg2, s32 arg3, s32 arg4, s32 arg5); void mSM_submenu_ctrl(struct Game_Play* game_play); -void mSM_submenu_move(mSM* submenu); -void mSM_submenu_draw(mSM* submenu, struct Game_Play* game_play); +void mSM_submenu_move(Submenu* submenu); +void mSM_submenu_draw(Submenu* submenu, struct Game_Play* game_play); u32 mSM_check_open_inventory_itemlist(InventoryItemList itemlist, s32 arg1) ; diff --git a/include/m_view.h b/include/m_view.h index c3afa874..177232c2 100644 --- a/include/m_view.h +++ b/include/m_view.h @@ -2,19 +2,27 @@ #define M_VIEW_H #include "ultra64.h" +#include "z64math.h" +#include "unk.h" struct Game_Play; struct GraphicsContext; typedef struct Game_Play1938 { - /* 0x000 */ char unk000[0x28]; + /* 0x000 */ UNK_TYPE1 unk_000[0x8]; + /* 0x008 */ s32 unk_008; + /* 0x00C */ s32 unk_00C; + /* 0x010 */ s32 unk_010; + /* 0x018 */ s32 unk_014; + /* 0x01C */ UNK_TYPE1 unk_018[0x10]; /* 0x028 */ Vec3f unk_028; - /* 0x034 */ char unk034[0x2C]; + /* 0x034 */ UNK_TYPE1 unk_034[0x1C]; + /* 0x050 */ Vp vp; /* 0x060 */ Mtx unk_060; /* 0x0A0 */ Mtx unk_0A0; - /* 0x0E0 */ char unk0E0[0x40]; + /* 0x0E0 */ UNK_TYPE1 unk_0E0[0x40]; /* 0x120 */ s32 unk_120; - /* 0x124 */ char unk124[0x4]; + /* 0x124 */ UNK_TYPE1 unk_124[0x4]; } Game_Play1938; // size = 0x128 typedef struct ScissorViewArg1 { diff --git a/include/segment_symbols.h b/include/segment_symbols.h index 2574a904..15eac21a 100644 --- a/include/segment_symbols.h +++ b/include/segment_symbols.h @@ -66,17 +66,32 @@ DECLARE_SEGMENT(code); DECLARE_SEGMENT(submenu_ovl); DECLARE_SEGMENT(player_actor); +DECLARE_SEGMENT(tag_ovl); +DECLARE_SEGMENT(hand_ovl); +DECLARE_SEGMENT(haniwaPortrait_ovl); +DECLARE_SEGMENT(inventory_ovl); +DECLARE_SEGMENT(ovl__00789B60); +DECLARE_SEGMENT(ovl__0078A560); +DECLARE_SEGMENT(ovl__0078AE30); +DECLARE_SEGMENT(ledit_ovl); +DECLARE_SEGMENT(ovl__0078CB80); +DECLARE_SEGMENT(board_ovl); DECLARE_SEGMENT(ovl__00792700); +DECLARE_SEGMENT(ovl__00794380); +DECLARE_SEGMENT(map_ovl); +DECLARE_SEGMENT(ovl__00797A50); +DECLARE_SEGMENT(ovl__00799580); DECLARE_SEGMENT(ovl__0079A290); +DECLARE_SEGMENT(ovl__0079B120); +DECLARE_SEGMENT(ovl__0079C020); +DECLARE_SEGMENT(ovl__0079DA50); DECLARE_SEGMENT(ovl__0079E430); DECLARE_SEGMENT(ovl__0079F810); -DECLARE_SEGMENT(ovl__00777AE0); -DECLARE_SEGMENT(ovl__007829E0); -DECLARE_SEGMENT(ovl__00785700); -DECLARE_SEGMENT(ovl__007908A0); -DECLARE_SEGMENT(ovl__0078CB80); -DECLARE_SEGMENT(ovl__00799580); -DECLARE_SEGMENT(ovl__007A28F0); +DECLARE_SEGMENT(ovl__007A10E0); +DECLARE_SEGMENT(catalog_ovl); + + +DECLARE_SEGMENT(segment_00A58000); #endif diff --git a/include/sys_matrix.h b/include/sys_matrix.h index 2791bf0b..21b0e6dc 100644 --- a/include/sys_matrix.h +++ b/include/sys_matrix.h @@ -50,4 +50,6 @@ void suMtxMakeSRT(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, s16 rotX, s16 ro void suMtxMakeSRT_ZXY(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, s16 rotX, s16 rotY, s16 rotZ, f32 translateX, f32 translateY, f32 translateZ); +extern Mtx Mtx_clear; + #endif diff --git a/include/tables/dmatables/dmadata_table_jp.h b/include/tables/dmatables/dmadata_table_jp.h index 3dd018a7..eef8c1e7 100644 --- a/include/tables/dmatables/dmadata_table_jp.h +++ b/include/tables/dmatables/dmadata_table_jp.h @@ -34,32 +34,32 @@ DEFINE_DMA_ENTRY(ovl_prenmi, "ovl_prenmi") DEFINE_DMA_ENTRY(ovl_prenmi_reloc, "ovl_prenmi_reloc") DEFINE_DMA_ENTRY(submenu_ovl, "submenu_ovl") DEFINE_DMA_ENTRY(ovl_submenu_reloc, "ovl_submenu_reloc") -DEFINE_DMA_ENTRY(ovl__00777AE0, "ovl__00777AE0") -DEFINE_DMA_ENTRY(ovl__00777AE0_reloc, "ovl__00777AE0_reloc") -DEFINE_DMA_ENTRY(ovl__007829E0, "ovl__007829E0") -DEFINE_DMA_ENTRY(ovl__007829E0_reloc, "ovl__007829E0_reloc") -DEFINE_DMA_ENTRY(ovl__00784FC0, "ovl__00784FC0") -DEFINE_DMA_ENTRY(ovl__00784FC0_reloc, "ovl__00784FC0_reloc") -DEFINE_DMA_ENTRY(ovl__00785700, "ovl__00785700") -DEFINE_DMA_ENTRY(ovl__00785700_reloc, "ovl__00785700_reloc") +DEFINE_DMA_ENTRY(tag_ovl, "tag_ovl") +DEFINE_DMA_ENTRY(tag_ovl_reloc, "tag_ovl_reloc") +DEFINE_DMA_ENTRY(hand_ovl, "hand_ovl") +DEFINE_DMA_ENTRY(hand_ovl_reloc, "hand_ovl_reloc") +DEFINE_DMA_ENTRY(haniwaPortrait_ovl, "haniwaPortrait_ovl") +DEFINE_DMA_ENTRY(haniwaPortrait_ovl_reloc, "haniwaPortrait_ovl_reloc") +DEFINE_DMA_ENTRY(inventory_ovl, "inventory_ovl") +DEFINE_DMA_ENTRY(inventory_ovl_reloc, "inventory_ovl_reloc") DEFINE_DMA_ENTRY(ovl__00789B60, "ovl__00789B60") DEFINE_DMA_ENTRY(ovl__00789B60_reloc, "ovl__00789B60_reloc") DEFINE_DMA_ENTRY(ovl__0078A560, "ovl__0078A560") DEFINE_DMA_ENTRY(ovl__0078A560_reloc, "ovl__0078A560_reloc") DEFINE_DMA_ENTRY(ovl__0078AE30, "ovl__0078AE30") DEFINE_DMA_ENTRY(ovl__0078AE30_reloc, "ovl__0078AE30_reloc") -DEFINE_DMA_ENTRY(ovl__0078BFB0, "ovl__0078BFB0") -DEFINE_DMA_ENTRY(ovl__0078BFB0_reloc, "ovl__0078BFB0_reloc") +DEFINE_DMA_ENTRY(ledit_ovl, "ledit_ovl") +DEFINE_DMA_ENTRY(ledit_ovl_reloc, "ledit_ovl_reloc") DEFINE_DMA_ENTRY(ovl__0078CB80, "ovl__0078CB80") DEFINE_DMA_ENTRY(ovl__0078CB80_reloc, "ovl__0078CB80_reloc") -DEFINE_DMA_ENTRY(ovl__007908A0, "ovl__007908A0") -DEFINE_DMA_ENTRY(ovl__007908A0_reloc, "ovl__007908A0_reloc") +DEFINE_DMA_ENTRY(board_ovl, "board_ovl") +DEFINE_DMA_ENTRY(board_ovl_reloc, "board_ovl_reloc") DEFINE_DMA_ENTRY(ovl__00792700, "ovl__00792700") DEFINE_DMA_ENTRY(ovl__00792700_reloc, "ovl__00792700_reloc") DEFINE_DMA_ENTRY(ovl__00794380, "ovl__00794380") DEFINE_DMA_ENTRY(ovl__00794380_reloc, "ovl__00794380_reloc") -DEFINE_DMA_ENTRY(ovl__00795350, "ovl__00795350") -DEFINE_DMA_ENTRY(ovl__00795350_reloc, "ovl__00795350_reloc") +DEFINE_DMA_ENTRY(map_ovl, "map_ovl") +DEFINE_DMA_ENTRY(map_ovl_reloc, "map_ovl_reloc") DEFINE_DMA_ENTRY(ovl__00797A50, "ovl__00797A50") DEFINE_DMA_ENTRY(ovl__00797A50_reloc, "ovl__00797A50_reloc") DEFINE_DMA_ENTRY(ovl__00799580, "ovl__00799580") @@ -78,8 +78,8 @@ DEFINE_DMA_ENTRY(ovl__0079F810, "ovl__0079F810") DEFINE_DMA_ENTRY(ovl__0079F810_reloc, "ovl__0079F810_reloc") DEFINE_DMA_ENTRY(ovl__007A10E0, "ovl__007A10E0") DEFINE_DMA_ENTRY(ovl__007A10E0_reloc, "ovl__007A10E0_reloc") -DEFINE_DMA_ENTRY(ovl__007A28F0, "ovl__007A28F0") -DEFINE_DMA_ENTRY(ovl__007A28F0_reloc, "ovl__007A28F0_reloc") +DEFINE_DMA_ENTRY(catalog_ovl, "catalog_ovl") +DEFINE_DMA_ENTRY(catalog_ovl_reloc, "catalog_ovl_reloc") DEFINE_DMA_ENTRY(player_actor, "player_actor") DEFINE_DMA_ENTRY(player_actor_reloc, "player_actor_reloc") DEFINE_DMA_ENTRY(ovl__007DE050, "ovl__007DE050") diff --git a/include/unknown_structs.h b/include/unknown_structs.h index 3249db91..1e18d21c 100644 --- a/include/unknown_structs.h +++ b/include/unknown_structs.h @@ -24,14 +24,22 @@ typedef struct CommonData_unk_1004C_unk_14_arg0 { /* 0x04 */ UNK_TYPE1 unk_04[0x60]; } CommonData_unk_1004C_unk_14_arg0; // size >= 0x64, maybe less, guessed from stack usage -typedef struct Game_Play_unk_0110 { +typedef struct Game_Play_unk_0110_unk_0000 { /* 0x00 */ s16 unk_00; /* 0x02 */ UNK_TYPE1 unk_02[0x2]; /* 0x04 */ void* segment; /* 0x08 */ UNK_TYPE1 unk_08[0x48]; /* 0x50 */ s16 unk_50; /* 0x52 */ UNK_TYPE1 unk_52[0x2]; -} Game_Play_unk_0110; // size = 0x54 +} Game_Play_unk_0110_unk_0000; // size = 0x54 + +typedef struct Game_Play_unk_0110 { + /* 0x0000 */ Game_Play_unk_0110_unk_0000 unk_0000[UNK_SIZE]; + /* 0x0054 */ UNK_TYPE1 unk_0054[0x17A8]; + /* 0x17FC */ s32 unk_17FC; + /* 0x1800 */ UNK_TYPE1 unk_1800[0x18]; + /* 0x1818 */ void* unk_1818; +} Game_Play_unk_0110; // size >= 0x181C typedef struct struct_809AEFA4 { /* 0x00 */ UNK_PTR unk_0; diff --git a/lib/ultralib/include/PR/gbi.h b/lib/ultralib/include/PR/gbi.h index 659118a0..e3881e99 100644 --- a/lib/ultralib/include/PR/gbi.h +++ b/lib/ultralib/include/PR/gbi.h @@ -4147,7 +4147,7 @@ _DW({ \ G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0); \ gDPLoadSync(pkt); \ gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 15); \ - gDPPipeSync(pkt) \ + gDPPipeSync(pkt); \ }) #else /* **** WORKAROUND hardware 1 load_tlut bug ****** */ diff --git a/linker_scripts/jp/symbol_addrs_code.txt b/linker_scripts/jp/symbol_addrs_code.txt index 2c5a5607..c00e0379 100644 --- a/linker_scripts/jp/symbol_addrs_code.txt +++ b/linker_scripts/jp/symbol_addrs_code.txt @@ -1883,7 +1883,7 @@ func_8009C6EC_jp = 0x8009C6EC; // type:func mMl_set_mail_name_npcinfo = 0x8009C70C; // type:func mMl_get_npcinfo_from_mail_name = 0x8009C780; // type:func mMl_hunt_for_send_address = 0x8009C80C; // type:func -func_8009C89C_jp = 0x8009C89C; // type:func +mMl_check_send_mail = 0x8009C89C; // type:func func_8009C8C0_jp = 0x8009C8C0; // type:func func_8009C900_jp = 0x8009C900; // type:func func_8009C9F0_jp = 0x8009C9F0; // type:func diff --git a/linker_scripts/jp/symbol_addrs_overlays.txt b/linker_scripts/jp/symbol_addrs_overlays.txt index a7077a7c..3d8edeb6 100644 --- a/linker_scripts/jp/symbol_addrs_overlays.txt +++ b/linker_scripts/jp/symbol_addrs_overlays.txt @@ -810,42 +810,41 @@ RO_FLT_8085BA70_jp = 0x8085BA70; // type:f32 // .text -func_8085BAC0_jp = 0x8085BAC0; // type:func -func_8085BCD8_jp = 0x8085BCD8; // type:func -func_8085BD08_jp = 0x8085BD08; // type:func -func_8085C20C_jp = 0x8085C20C; // type:func -func_8085C7A4_jp = 0x8085C7A4; // type:func -func_8085C7B8_jp = 0x8085C7B8; // type:func -func_8085CE18_jp = 0x8085CE18; // type:func +mSM_setup_view = 0x8085BAC0; // type:func +mSM_set_char_matrix = 0x8085BCD8; // type:func +mSM_cbuf_copy = 0x8085BD08; // type:func +mSM_set_drawMode = 0x8085C20C; // type:func +mSM_get_groupNo = 0x8085C7A4; // type:func +mSM_draw_item = 0x8085C7B8; // type:func +mSM_draw_mail = 0x8085CE18; // type:func func_8085D094_jp = 0x8085D094; // type:func -func_8085D128_jp = 0x8085D128; // type:func -func_8085D244_jp = 0x8085D244; // type:func -func_8085D2EC_jp = 0x8085D2EC; // type:func -func_8085D358_jp = 0x8085D358; // type:func -func_8085D398_jp = 0x8085D398; // type:func +mSM_ovl_prog_seg = 0x8085D128; // type:func +mSM_set_other_seg = 0x8085D244; // type:func +mSM_set_before_menu_proc = 0x8085D2EC; // type:func +mSM_set_new_seg = 0x8085D358; // type:func +mSM_set_new_start_data = 0x8085D398; // type:func func_8085D43C_jp = 0x8085D43C; // type:func -func_8085D4D4_jp = 0x8085D4D4; // type:func -func_8085D500_jp = 0x8085D500; // type:func -func_8085D5D4_jp = 0x8085D5D4; // type:func -func_8085D638_jp = 0x8085D638; // type:func -func_8085D674_jp = 0x8085D674; // type:func -func_8085D718_jp = 0x8085D718; // type:func -func_8085D860_jp = 0x8085D860; // type:func -func_8085D92C_jp = 0x8085D92C; // type:func -func_8085DA08_jp = 0x8085DA08; // type:func -func_8085DA28_jp = 0x8085DA28; // type:func -func_8085DA9C_jp = 0x8085DA9C; // type:func +mSM_move_chg_base = 0x8085D4D4; // type:func +mSM_make_trigger_data = 0x8085D500; // type:func +mSM_save_before_func = 0x8085D5D4; // type:func +mSM_set_proc = 0x8085D638; // type:func +mSM_tex_move = 0x8085D674; // type:func +mSM_return_func = 0x8085D718; // type:func +mSM_move_menu = 0x8085D860; // type:func +mSM_move_Move = 0x8085D92C; // type:func +mSM_ovl_move_End = 0x8085DA08; // type:func +mSM_menu_ovl_move = 0x8085DA28; // type:func +mSM_menu_ovl_draw = 0x8085DA9C; // type:func mSM_menu_ovl_init = 0x8085DAEC; // type:func // .data -D_8085DCD0_jp = 0x8085DCD0; // -D_8085DCE0_jp = 0x8085DCE0; // -D_8085DCE8_jp = 0x8085DCE8; // -D_8085DCF8_jp = 0x8085DCF8; // -D_8085DD00_jp = 0x8085DD00; // -D_8085DD08_jp = 0x8085DD08; // -D_8085DD10_jp = 0x8085DD10; // +viewport_data_621 = 0x8085DCD0; // +light_data_622 = 0x8085DCE0; // size:0x18 type:Lights1 +unknown_tex_data_761 = 0x8085DCF8; // +haniwa_tex_data_759 = 0x8085DD00; // +fossil_tex_data_760 = 0x8085DD08; // +present_tex_data_762 = 0x8085DD10; // D_8085DD38_jp = 0x8085DD38; // D_8085DD40_jp = 0x8085DD40; // D_8085DD48_jp = 0x8085DD48; // @@ -863,17 +862,16 @@ D_8085E028_jp = 0x8085E028; // D_8085E328_jp = 0x8085E328; // D_8085E428_jp = 0x8085E428; // D_8085E448_jp = 0x8085E448; // -D_8085E460_jp = 0x8085E460; // -D_8085E4A0_jp = 0x8085E4A0; // -D_8085E4D0_jp = 0x8085E4D0; // -D_8085E4E8_jp = 0x8085E4E8; // -D_8085E770_jp = 0x8085E770; // -D_8085E790_jp = 0x8085E790; // -D_8085E7B0_jp = 0x8085E7B0; // -D_8085E7D0_jp = 0x8085E7D0; // type:u8 -D_FLT_8085E7E8_jp = 0x8085E7E8; // type:f32 -D_8085E938_jp = 0x8085E938; // -D_8085E948_jp = 0x8085E948; // +item_tex_data_table_779 = 0x8085E460; // +letter_tex_data_table_837 = 0x8085E4A0; // +mSM_program_dlftbl = 0x8085E4D0; // size:0x2A0 +tag_program_dlftbl = 0x8085E770; // size:0x20 +hand_program_dlftbl = 0x8085E790; // size:0x20 +haniwa_program_dlftbl = 0x8085E7B0; // size:0x20 +flg_table_916 = 0x8085E7D0; // type:u8 +data_table_935 = 0x8085E7E8; // type:f32 +add_trigger_954 = 0x8085E938; // +move_data_1027 = 0x8085E948; // type:f32 // .rodata @@ -886,23 +884,7 @@ RO_FLT_8085E9A4_jp = 0x8085E9A4; // type:f32 // .bss -B_8085E9B0_jp = 0x8085E9B0; // -B_80860000_jp = 0x80860000; // type:s16 -B_80860002_jp = 0x80860002; // type:s16 -B_80860004_jp = 0x80860004; // type:s16 -B_80860006_jp = 0x80860006; // type:s16 -B_80860008_jp = 0x80860008; // type:s16 -B_8086000A_jp = 0x8086000A; // type:s16 -B_8086000C_jp = 0x8086000C; // type:s16 -B_8086000E_jp = 0x8086000E; // type:s16 -B_8086E9B0_jp = 0x8086E9B0; // -B_8086F020_jp = 0x8086F020; // -B_8086F024_jp = 0x8086F024; // -B_8086F028_jp = 0x8086F028; // -B_8086F02C_jp = 0x8086F02C; // -B_8086F030_jp = 0x8086F030; // -B_8086F034_jp = 0x8086F034; // -B_8086F046_jp = 0x8086F046; // type:s16 +ovl_base = 0x8085E9B0; // size:0x10730 D_8086F0E0_jp = 0x8086F0E0; // // .text @@ -1041,8 +1023,8 @@ func_808782A4_jp = 0x808782A4; // type:func func_808783F0_jp = 0x808783F0; // type:func func_80878508_jp = 0x80878508; // type:func func_80878648_jp = 0x80878648; // type:func -func_808787A0_jp = 0x808787A0; // type:func -func_80878904_jp = 0x80878904; // type:func +mTG_tag_ovl_construct = 0x808787A0; // type:func +mTG_tag_ovl_destruct = 0x80878904; // type:func // .data @@ -1266,8 +1248,8 @@ func_8087BD3C_jp = 0x8087BD3C; // type:func func_8087BEFC_jp = 0x8087BEFC; // type:func func_8087C2F8_jp = 0x8087C2F8; // type:func func_8087C328_jp = 0x8087C328; // type:func -func_8087C360_jp = 0x8087C360; // type:func -func_8087C574_jp = 0x8087C574; // type:func +mHD_hand_ovl_construct = 0x8087C360; // type:func +mHD_hand_ovl_destruct = 0x8087C574; // type:func // .data @@ -1309,8 +1291,8 @@ func_8087CC10_jp = 0x8087CC10; // type:func func_8087CCC4_jp = 0x8087CCC4; // type:func func_8087CD10_jp = 0x8087CD10; // type:func func_8087D03C_jp = 0x8087D03C; // type:func -func_8087D180_jp = 0x8087D180; // type:func -func_8087D274_jp = 0x8087D274; // type:func +mHP_haniwaPortrait_ovl_construct = 0x8087D180; // type:func +mHP_haniwaPortrait_ovl_destruct = 0x8087D274; // type:func // .data @@ -1366,10 +1348,10 @@ func_8088068C_jp = 0x8088068C; // type:func func_808808A0_jp = 0x808808A0; // type:func func_80880AE4_jp = 0x80880AE4; // type:func func_80880BB0_jp = 0x80880BB0; // type:func -func_80880C04_jp = 0x80880C04; // type:func +mIV_inventory_ovl_set_proc = 0x80880C04; // type:func func_80880C84_jp = 0x80880C84; // type:func -func_80881030_jp = 0x80881030; // type:func -func_80881144_jp = 0x80881144; // type:func +mIV_inventory_ovl_construct = 0x80881030; // type:func +mIV_inventory_ovl_destruct = 0x80881144; // type:func // .data @@ -1521,10 +1503,10 @@ func_80884484_jp = 0x80884484; // type:func func_808844B4_jp = 0x808844B4; // type:func func_80884514_jp = 0x80884514; // type:func func_80884AAC_jp = 0x80884AAC; // type:func -func_80884B00_jp = 0x80884B00; // type:func +mLE_ledit_ovl_set_proc = 0x80884B00; // type:func func_80884B30_jp = 0x80884B30; // type:func -func_80884C84_jp = 0x80884C84; // type:func -func_80884D00_jp = 0x80884D00; // type:func +mLE_ledit_ovl_construct = 0x80884C84; // type:func +mLE_ledit_ovl_destruct = 0x80884D00; // type:func // .data @@ -1679,11 +1661,11 @@ func_80889CD8_jp = 0x80889CD8; // type:func func_80889FB0_jp = 0x80889FB0; // type:func func_8088A15C_jp = 0x8088A15C; // type:func func_8088A230_jp = 0x8088A230; // type:func -func_8088A2A0_jp = 0x8088A2A0; // type:func +mBD_board_ovl_set_proc = 0x8088A2A0; // type:func func_8088A2D0_jp = 0x8088A2D0; // type:func func_8088A604_jp = 0x8088A604; // type:func -func_8088A6E8_jp = 0x8088A6E8; // type:func -func_8088A77C_jp = 0x8088A77C; // type:func +mBD_board_ovl_construct = 0x8088A6E8; // type:func +mBD_board_ovl_destruct = 0x8088A77C; // type:func // .data @@ -1837,10 +1819,10 @@ func_8088F49C_jp = 0x8088F49C; // type:func func_8088F73C_jp = 0x8088F73C; // type:func func_8088F8BC_jp = 0x8088F8BC; // type:func func_8088FAEC_jp = 0x8088FAEC; // type:func -func_8088FB40_jp = 0x8088FB40; // type:func +mMP_map_ovl_set_proc = 0x8088FB40; // type:func func_8088FB70_jp = 0x8088FB70; // type:func -func_8088FBF0_jp = 0x8088FBF0; // type:func -func_8088FCBC_jp = 0x8088FCBC; // type:func +mMP_map_ovl_construct = 0x8088FBF0; // type:func +mMP_map_ovl_destruct = 0x8088FCBC; // type:func // .data @@ -2370,11 +2352,11 @@ func_808A835C_jp = 0x808A835C; // type:func func_808A8DFC_jp = 0x808A8DFC; // type:func func_808A917C_jp = 0x808A917C; // type:func func_808A9298_jp = 0x808A9298; // type:func -func_808A92EC_jp = 0x808A92EC; // type:func +mCL_catalog_ovl_set_proc = 0x808A92EC; // type:func func_808A931C_jp = 0x808A931C; // type:func func_808A93A8_jp = 0x808A93A8; // type:func -func_808A96AC_jp = 0x808A96AC; // type:func -func_808A97C0_jp = 0x808A97C0; // type:func +mCL_catalog_ovl_construct = 0x808A96AC; // type:func +mCL_catalog_ovl_destruct = 0x808A97C0; // type:func // .data diff --git a/linker_scripts/jp/undefined_syms.ld b/linker_scripts/jp/undefined_syms.ld index 202a5884..85882976 100644 --- a/linker_scripts/jp/undefined_syms.ld +++ b/linker_scripts/jp/undefined_syms.ld @@ -237,13 +237,502 @@ D_6003538 = 0x06003538; D_6000000 = 0x06000000; -// ovl__00777AE0 +// submenu_ovl + +D_0C00A620 = 0x0C00A620; +D_0C00A6E0 = 0x0C00A6E0; +D_0C00B720 = 0x0C00B720; +D_0C00B740 = 0x0C00B740; +D_0C00DD40 = 0x0C00DD40; +D_0C00DD80 = 0x0C00DD80; +D_0C00EC60 = 0x0C00EC60; +D_0C00F0E0 = 0x0C00F0E0; +D_0C00EC60 = 0x0C00EC60; +D_0C00F2E0 = 0x0C00F2E0; +D_0C00ECA0 = 0x0C00ECA0; +D_0C00F4E0 = 0x0C00F4E0; +D_0C00ECA0 = 0x0C00ECA0; +D_0C00F6E0 = 0x0C00F6E0; +D_0C00EC20 = 0x0C00EC20; +D_0C00ECE0 = 0x0C00ECE0; +D_0C00EC20 = 0x0C00EC20; +D_0C00EEE0 = 0x0C00EEE0; +D_0C010FA0 = 0x0C010FA0; +D_0C010FC0 = 0x0C010FC0; +D_0C012400 = 0x0C012400; +D_0C012420 = 0x0C012420; +D_0C012620 = 0x0C012620; +D_0C0126A0 = 0x0C0126A0; +D_0C012640 = 0x0C012640; +D_0C0128A0 = 0x0C0128A0; +D_0C012660 = 0x0C012660; +D_0C012AA0 = 0x0C012AA0; +D_0C012680 = 0x0C012680; +D_0C012CA0 = 0x0C012CA0; +D_0C00B2E0 = 0x0C00B2E0; +D_0C00B300 = 0x0C00B300; +D_0C010780 = 0x0C010780; +D_0C0109A0 = 0x0C0109A0; +D_0C010780 = 0x0C010780; +D_0C010BA0 = 0x0C010BA0; +D_0C010780 = 0x0C010780; +D_0C010DA0 = 0x0C010DA0; +D_0C010780 = 0x0C010780; +D_0C0107A0 = 0x0C0107A0; +D_0C00F940 = 0x0C00F940; +D_0C00FF60 = 0x0C00FF60; +D_0C00F8E0 = 0x0C00F8E0; +D_0C00F960 = 0x0C00F960; +D_0C00F900 = 0x0C00F900; +D_0C00FB60 = 0x0C00FB60; +D_0C00F920 = 0x0C00F920; +D_0C00FD60 = 0x0C00FD60; +D_0C00A680 = 0x0C00A680; +D_0C00ACE0 = 0x0C00ACE0; +D_0C004EA0 = 0x0C004EA0; +D_0C005860 = 0x0C005860; +D_0C004EE0 = 0x0C004EE0; +D_0C005A60 = 0x0C005A60; +D_0C004F20 = 0x0C004F20; +D_0C005C60 = 0x0C005C60; +D_0C004F60 = 0x0C004F60; +D_0C005E60 = 0x0C005E60; +D_0C005020 = 0x0C005020; +D_0C006460 = 0x0C006460; +D_0C005160 = 0x0C005160; +D_0C006E60 = 0x0C006E60; +D_0C0051A0 = 0x0C0051A0; +D_0C007060 = 0x0C007060; +D_0C0051E0 = 0x0C0051E0; +D_0C007260 = 0x0C007260; +D_0C005120 = 0x0C005120; +D_0C006C60 = 0x0C006C60; +D_0C004E60 = 0x0C004E60; +D_0C005660 = 0x0C005660; +D_0C005220 = 0x0C005220; +D_0C007460 = 0x0C007460; +D_0C004FA0 = 0x0C004FA0; +D_0C006060 = 0x0C006060; +D_0C004FE0 = 0x0C004FE0; +D_0C006260 = 0x0C006260; +D_0C005060 = 0x0C005060; +D_0C006660 = 0x0C006660; +D_0C0050A0 = 0x0C0050A0; +D_0C006860 = 0x0C006860; +D_0C0050E0 = 0x0C0050E0; +D_0C006A60 = 0x0C006A60; +D_0C0052E0 = 0x0C0052E0; +D_0C007A60 = 0x0C007A60; +D_0C005320 = 0x0C005320; +D_0C007C60 = 0x0C007C60; +D_0C005360 = 0x0C005360; +D_0C007E60 = 0x0C007E60; +D_0C0053E0 = 0x0C0053E0; +D_0C008260 = 0x0C008260; +D_0C0053A0 = 0x0C0053A0; +D_0C008060 = 0x0C008060; +D_0C005420 = 0x0C005420; +D_0C008460 = 0x0C008460; +D_0C005460 = 0x0C005460; +D_0C008660 = 0x0C008660; +D_0C0054A0 = 0x0C0054A0; +D_0C008860 = 0x0C008860; +D_0C0055A0 = 0x0C0055A0; +D_0C009060 = 0x0C009060; +D_0C0055E0 = 0x0C0055E0; +D_0C009260 = 0x0C009260; +D_0C005260 = 0x0C005260; +D_0C007660 = 0x0C007660; +D_0C0052A0 = 0x0C0052A0; +D_0C007860 = 0x0C007860; +D_0C005560 = 0x0C005560; +D_0C008E60 = 0x0C008E60; +D_0C005520 = 0x0C005520; +D_0C008C60 = 0x0C008C60; +D_0C0054E0 = 0x0C0054E0; +D_0C008A60 = 0x0C008A60; +D_0C005620 = 0x0C005620; +D_0C009460 = 0x0C009460; +D_0C009720 = 0x0C009720; +D_0C009740 = 0x0C009740; +D_0C00EC60 = 0x0C00EC60; +D_0C00F0E0 = 0x0C00F0E0; +D_0C009720 = 0x0C009720; +D_0C009740 = 0x0C009740; +D_0C010780 = 0x0C010780; +D_0C0109A0 = 0x0C0109A0; +D_0C00C800 = 0x0C00C800; +D_0C00C940 = 0x0C00C940; +D_0C00C900 = 0x0C00C900; +D_0C00D940 = 0x0C00D940; +D_0C00C8E0 = 0x0C00C8E0; +D_0C00D740 = 0x0C00D740; +D_0C00C8A0 = 0x0C00C8A0; +D_0C00D340 = 0x0C00D340; +D_0C00C880 = 0x0C00C880; +D_0C00D140 = 0x0C00D140; +D_0C00C840 = 0x0C00C840; +D_0C00CD40 = 0x0C00CD40; +D_0C00C820 = 0x0C00C820; +D_0C00CB40 = 0x0C00CB40; +D_0C00C920 = 0x0C00C920; +D_0C00DB40 = 0x0C00DB40; +D_0C00C860 = 0x0C00C860; +D_0C00CF40 = 0x0C00CF40; +D_0C00C8C0 = 0x0C00C8C0; +D_0C00D540 = 0x0C00D540; +D_0C010780 = 0x0C010780; +D_0C0109A0 = 0x0C0109A0; +D_0C00B940 = 0x0C00B940; +D_0C00B9C0 = 0x0C00B9C0; +D_0C00B9A0 = 0x0C00B9A0; +D_0C00C1C0 = 0x0C00C1C0; +D_0C00B9A0 = 0x0C00B9A0; +D_0C00BFC0 = 0x0C00BFC0; +D_0C00DD60 = 0x0C00DD60; +D_0C00DF80 = 0x0C00DF80; +D_0C00C3C0 = 0x0C00C3C0; +D_0C00C400 = 0x0C00C400; +D_0C00C3C0 = 0x0C00C3C0; +D_0C00C400 = 0x0C00C400; +D_0C0111C0 = 0x0C0111C0; +D_0C0112C0 = 0x0C0112C0; +D_0C0111E0 = 0x0C0111E0; +D_0C0114C0 = 0x0C0114C0; +D_0C011200 = 0x0C011200; +D_0C0116C0 = 0x0C0116C0; +D_0C011240 = 0x0C011240; +D_0C011AC0 = 0x0C011AC0; +D_0C011260 = 0x0C011260; +D_0C011CC0 = 0x0C011CC0; +D_0C0112A0 = 0x0C0112A0; +D_0C0120C0 = 0x0C0120C0; +D_0C011220 = 0x0C011220; +D_0C0118C0 = 0x0C0118C0; +D_0C011280 = 0x0C011280; +D_0C011EC0 = 0x0C011EC0; +D_0C010FA0 = 0x0C010FA0; +D_0C010FC0 = 0x0C010FC0; +D_0C010FA0 = 0x0C010FA0; +D_0C010FC0 = 0x0C010FC0; +D_0C00A6A0 = 0x0C00A6A0; +D_0C00AEE0 = 0x0C00AEE0; +D_0C00A6C0 = 0x0C00A6C0; +D_0C00B0E0 = 0x0C00B0E0; +D_0C00E180 = 0x0C00E180; +D_0C00E220 = 0x0C00E220; +D_0C00E200 = 0x0C00E200; +D_0C00EA20 = 0x0C00EA20; +D_0C00E1E0 = 0x0C00E1E0; +D_0C00E820 = 0x0C00E820; +D_0C00E1C0 = 0x0C00E1C0; +D_0C00E620 = 0x0C00E620; +D_0C00E1A0 = 0x0C00E1A0; +D_0C00E420 = 0x0C00E420; +D_0C00B500 = 0x0C00B500; +D_0C00B520 = 0x0C00B520; +D_0C009940 = 0x0C009940; +D_0C009960 = 0x0C009960; +D_0C00A640 = 0x0C00A640; +D_0C00A8E0 = 0x0C00A8E0; +D_0C00A660 = 0x0C00A660; +D_0C00AAE0 = 0x0C00AAE0; +D_0C00A660 = 0x0C00A660; +D_0C00AAE0 = 0x0C00AAE0; +D_0C00A660 = 0x0C00A660; +D_0C00AAE0 = 0x0C00AAE0; +D_0C00A660 = 0x0C00A660; +D_0C00AAE0 = 0x0C00AAE0; +D_0C00A660 = 0x0C00A660; +D_0C00AAE0 = 0x0C00AAE0; +D_0C00A660 = 0x0C00A660; +D_0C00AAE0 = 0x0C00AAE0; +D_0C00A660 = 0x0C00A660; +D_0C00AAE0 = 0x0C00AAE0; +D_0C00A660 = 0x0C00A660; +D_0C00AAE0 = 0x0C00AAE0; +D_0C00A660 = 0x0C00A660; +D_0C00AAE0 = 0x0C00AAE0; +D_0C00C3E0 = 0x0C00C3E0; +D_0C00C600 = 0x0C00C600; +D_0C009C00 = 0x0C009C00; +D_0C00A420 = 0x0C00A420; +D_0C009C00 = 0x0C009C00; +D_0C00A220 = 0x0C00A220; +D_0C009C00 = 0x0C009C00; +D_0C009C20 = 0x0C009C20; +D_0C009C00 = 0x0C009C00; +D_0C00A020 = 0x0C00A020; +D_0C009C00 = 0x0C009C00; +D_0C009E20 = 0x0C009E20; +D_0C009C00 = 0x0C009C00; +D_0C00A420 = 0x0C00A420; +D_0C009C00 = 0x0C009C00; +D_0C00A420 = 0x0C00A420; +D_0C009C00 = 0x0C009C00; +D_0C00A420 = 0x0C00A420; +D_0C009B60 = 0x0C009B60; +D_0C00A420 = 0x0C00A420; +D_0C009B60 = 0x0C009B60; +D_0C00A220 = 0x0C00A220; +D_0C009B60 = 0x0C009B60; +D_0C009C20 = 0x0C009C20; +D_0C009B60 = 0x0C009B60; +D_0C00A020 = 0x0C00A020; +D_0C009B60 = 0x0C009B60; +D_0C009E20 = 0x0C009E20; +D_0C009B60 = 0x0C009B60; +D_0C00A420 = 0x0C00A420; +D_0C009B60 = 0x0C009B60; +D_0C00A420 = 0x0C00A420; +D_0C009B60 = 0x0C009B60; +D_0C00A420 = 0x0C00A420; +D_0C009B80 = 0x0C009B80; +D_0C00A420 = 0x0C00A420; +D_0C009B80 = 0x0C009B80; +D_0C00A220 = 0x0C00A220; +D_0C009B80 = 0x0C009B80; +D_0C009C20 = 0x0C009C20; +D_0C009B80 = 0x0C009B80; +D_0C00A020 = 0x0C00A020; +D_0C009B80 = 0x0C009B80; +D_0C009E20 = 0x0C009E20; +D_0C009B80 = 0x0C009B80; +D_0C00A420 = 0x0C00A420; +D_0C009B80 = 0x0C009B80; +D_0C00A420 = 0x0C00A420; +D_0C009B80 = 0x0C009B80; +D_0C00A420 = 0x0C00A420; +D_0C009BA0 = 0x0C009BA0; +D_0C00A420 = 0x0C00A420; +D_0C009BA0 = 0x0C009BA0; +D_0C00A220 = 0x0C00A220; +D_0C009BA0 = 0x0C009BA0; +D_0C009C20 = 0x0C009C20; +D_0C009BA0 = 0x0C009BA0; +D_0C00A020 = 0x0C00A020; +D_0C009BA0 = 0x0C009BA0; +D_0C009E20 = 0x0C009E20; +D_0C009BA0 = 0x0C009BA0; +D_0C00A420 = 0x0C00A420; +D_0C009BA0 = 0x0C009BA0; +D_0C00A420 = 0x0C00A420; +D_0C009BA0 = 0x0C009BA0; +D_0C00A420 = 0x0C00A420; +D_0C009BC0 = 0x0C009BC0; +D_0C00A420 = 0x0C00A420; +D_0C009BC0 = 0x0C009BC0; +D_0C00A220 = 0x0C00A220; +D_0C009BC0 = 0x0C009BC0; +D_0C009C20 = 0x0C009C20; +D_0C009BC0 = 0x0C009BC0; +D_0C00A020 = 0x0C00A020; +D_0C009BC0 = 0x0C009BC0; +D_0C009E20 = 0x0C009E20; +D_0C009BC0 = 0x0C009BC0; +D_0C00A420 = 0x0C00A420; +D_0C009BC0 = 0x0C009BC0; +D_0C00A420 = 0x0C00A420; +D_0C009BC0 = 0x0C009BC0; +D_0C00A420 = 0x0C00A420; +D_0C009BE0 = 0x0C009BE0; +D_0C00A420 = 0x0C00A420; +D_0C009BE0 = 0x0C009BE0; +D_0C00A220 = 0x0C00A220; +D_0C009BE0 = 0x0C009BE0; +D_0C009C20 = 0x0C009C20; +D_0C009BE0 = 0x0C009BE0; +D_0C00A020 = 0x0C00A020; +D_0C009BE0 = 0x0C009BE0; +D_0C009E20 = 0x0C009E20; +D_0C009BE0 = 0x0C009BE0; +D_0C00A420 = 0x0C00A420; +D_0C009BE0 = 0x0C009BE0; +D_0C00A420 = 0x0C00A420; +D_0C009BE0 = 0x0C009BE0; +D_0C00A420 = 0x0C00A420; +D_0C009660 = 0x0C009660; +D_0C00A420 = 0x0C00A420; +D_0C009660 = 0x0C009660; +D_0C00A220 = 0x0C00A220; +D_0C009660 = 0x0C009660; +D_0C009C20 = 0x0C009C20; +D_0C009660 = 0x0C009660; +D_0C00A020 = 0x0C00A020; +D_0C009660 = 0x0C009660; +D_0C009E20 = 0x0C009E20; +D_0C009660 = 0x0C009660; +D_0C00A420 = 0x0C00A420; +D_0C009660 = 0x0C009660; +D_0C00A420 = 0x0C00A420; +D_0C009660 = 0x0C009660; +D_0C00A420 = 0x0C00A420; +D_0C009680 = 0x0C009680; +D_0C00A420 = 0x0C00A420; +D_0C009680 = 0x0C009680; +D_0C00A220 = 0x0C00A220; +D_0C009680 = 0x0C009680; +D_0C009C20 = 0x0C009C20; +D_0C009680 = 0x0C009680; +D_0C00A020 = 0x0C00A020; +D_0C009680 = 0x0C009680; +D_0C009E20 = 0x0C009E20; +D_0C009680 = 0x0C009680; +D_0C00A420 = 0x0C00A420; +D_0C009680 = 0x0C009680; +D_0C00A420 = 0x0C00A420; +D_0C009680 = 0x0C009680; +D_0C00A420 = 0x0C00A420; +D_0C0096A0 = 0x0C0096A0; +D_0C00A420 = 0x0C00A420; +D_0C0096A0 = 0x0C0096A0; +D_0C00A220 = 0x0C00A220; +D_0C0096A0 = 0x0C0096A0; +D_0C009C20 = 0x0C009C20; +D_0C0096A0 = 0x0C0096A0; +D_0C00A020 = 0x0C00A020; +D_0C0096A0 = 0x0C0096A0; +D_0C009E20 = 0x0C009E20; +D_0C0096A0 = 0x0C0096A0; +D_0C00A420 = 0x0C00A420; +D_0C0096A0 = 0x0C0096A0; +D_0C00A420 = 0x0C00A420; +D_0C0096A0 = 0x0C0096A0; +D_0C00A420 = 0x0C00A420; +D_0C0096C0 = 0x0C0096C0; +D_0C00A420 = 0x0C00A420; +D_0C0096C0 = 0x0C0096C0; +D_0C00A220 = 0x0C00A220; +D_0C0096C0 = 0x0C0096C0; +D_0C009C20 = 0x0C009C20; +D_0C0096C0 = 0x0C0096C0; +D_0C00A020 = 0x0C00A020; +D_0C0096C0 = 0x0C0096C0; +D_0C009E20 = 0x0C009E20; +D_0C0096C0 = 0x0C0096C0; +D_0C00A420 = 0x0C00A420; +D_0C0096C0 = 0x0C0096C0; +D_0C00A420 = 0x0C00A420; +D_0C0096C0 = 0x0C0096C0; +D_0C00A420 = 0x0C00A420; +D_0C0096E0 = 0x0C0096E0; +D_0C00A420 = 0x0C00A420; +D_0C0096E0 = 0x0C0096E0; +D_0C00A220 = 0x0C00A220; +D_0C0096E0 = 0x0C0096E0; +D_0C009C20 = 0x0C009C20; +D_0C0096E0 = 0x0C0096E0; +D_0C00A020 = 0x0C00A020; +D_0C0096E0 = 0x0C0096E0; +D_0C009E20 = 0x0C009E20; +D_0C0096E0 = 0x0C0096E0; +D_0C00A420 = 0x0C00A420; +D_0C0096E0 = 0x0C0096E0; +D_0C00A420 = 0x0C00A420; +D_0C0096E0 = 0x0C0096E0; +D_0C00A420 = 0x0C00A420; +D_0C009700 = 0x0C009700; +D_0C00A420 = 0x0C00A420; +D_0C009700 = 0x0C009700; +D_0C00A220 = 0x0C00A220; +D_0C009700 = 0x0C009700; +D_0C009C20 = 0x0C009C20; +D_0C009700 = 0x0C009700; +D_0C00A020 = 0x0C00A020; +D_0C009700 = 0x0C009700; +D_0C009E20 = 0x0C009E20; +D_0C009700 = 0x0C009700; +D_0C00A420 = 0x0C00A420; +D_0C009700 = 0x0C009700; +D_0C00A420 = 0x0C00A420; +D_0C009700 = 0x0C009700; +D_0C00A420 = 0x0C00A420; +D_0C000660 = 0x0C000660; +D_0C000E60 = 0x0C000E60; +D_0C0006A0 = 0x0C0006A0; +D_0C001060 = 0x0C001060; +D_0C0006E0 = 0x0C0006E0; +D_0C001260 = 0x0C001260; +D_0C000720 = 0x0C000720; +D_0C001460 = 0x0C001460; +D_0C0007A0 = 0x0C0007A0; +D_0C001860 = 0x0C001860; +D_0C0007E0 = 0x0C0007E0; +D_0C001A60 = 0x0C001A60; +D_0C000820 = 0x0C000820; +D_0C001C60 = 0x0C001C60; +D_0C000760 = 0x0C000760; +D_0C001660 = 0x0C001660; +D_0C000BE0 = 0x0C000BE0; +D_0C003A60 = 0x0C003A60; +D_0C0008A0 = 0x0C0008A0; +D_0C002060 = 0x0C002060; +D_0C000860 = 0x0C000860; +D_0C001E60 = 0x0C001E60; +D_0C0008E0 = 0x0C0008E0; +D_0C002260 = 0x0C002260; +D_0C000920 = 0x0C000920; +D_0C002460 = 0x0C002460; +D_0C000B20 = 0x0C000B20; +D_0C003460 = 0x0C003460; +D_0C000B60 = 0x0C000B60; +D_0C003660 = 0x0C003660; +D_0C000960 = 0x0C000960; +D_0C002660 = 0x0C002660; +D_0C0009A0 = 0x0C0009A0; +D_0C002860 = 0x0C002860; +D_0C000A20 = 0x0C000A20; +D_0C002C60 = 0x0C002C60; +D_0C0009E0 = 0x0C0009E0; +D_0C002A60 = 0x0C002A60; +D_0C000C60 = 0x0C000C60; +D_0C003E60 = 0x0C003E60; +D_0C000D20 = 0x0C000D20; +D_0C004460 = 0x0C004460; +D_0C000D60 = 0x0C000D60; +D_0C004660 = 0x0C004660; +D_0C000CE0 = 0x0C000CE0; +D_0C004260 = 0x0C004260; +D_0C000CA0 = 0x0C000CA0; +D_0C004060 = 0x0C004060; +D_0C000A60 = 0x0C000A60; +D_0C002E60 = 0x0C002E60; +D_0C000AA0 = 0x0C000AA0; +D_0C003060 = 0x0C003060; +D_0C000AE0 = 0x0C000AE0; +D_0C003260 = 0x0C003260; +D_0C000C20 = 0x0C000C20; +D_0C003C60 = 0x0C003C60; +D_0C000BA0 = 0x0C000BA0; +D_0C003860 = 0x0C003860; +D_0C000DA0 = 0x0C000DA0; +D_0C004860 = 0x0C004860; +D_0C000DE0 = 0x0C000DE0; +D_0C004A60 = 0x0C004A60; +D_0C000E20 = 0x0C000E20; +D_0C004C60 = 0x0C004C60; +D_0C010160 = 0x0C010160; +D_0C010180 = 0x0C010180; +D_0C010160 = 0x0C010160; +D_0C010380 = 0x0C010380; +D_0C010160 = 0x0C010160; +D_0C010580 = 0x0C010580; +D_0C000000 = 0x0C000000; +D_0C000020 = 0x0C000020; +D_0C00B960 = 0x0C00B960; +D_0C00BBC0 = 0x0C00BBC0; +D_0C000220 = 0x0C000220; +D_0C000240 = 0x0C000240; +D_0C000440 = 0x0C000440; +D_0C000460 = 0x0C000460; + +// tag_ovl D_C000200 = 0x0C000200; D_C004630 = 0x0C004630; D_C004660 = 0x0C004660; -// ovl__007829E0 +// hand_ovl D_C001AC0 = 0x0C001AC0; D_C001AE0 = 0x0C001AE0; @@ -252,14 +741,14 @@ D_C003510 = 0x0C003510; D_C012300 = 0x0C012300; D_C012330 = 0x0C012330; -// ovl__00784FC0 +// haniwaPortrait_ovl D_60018AC = 0x060018AC; D_60019B8 = 0x060019B8; D_60019D0 = 0x060019D0; D_60019F0 = 0x060019F0; -// ovl__00785700 +// inventory_ovl D_4005540 = 0x04005540; D_6000000 = 0x06000000; @@ -301,7 +790,7 @@ D_C000200 = 0x0C000200; D_C001C70 = 0x0C001C70; D_C001D08 = 0x0C001D08; -// ovl__0078BFB0 +// ledit_ovl D_6000000 = 0x06000000; D_6001628 = 0x06001628; @@ -334,7 +823,7 @@ D_C0017F8 = 0x0C0017F8; D_C016E90 = 0x0C016E90; D_C016FD0 = 0x0C016FD0; -// ovl__007908A0 +// board_ovl D_C000000 = 0x0C000000; D_C000040 = 0x0C000040; @@ -355,7 +844,7 @@ D_C0012C8 = 0x0C0012C8; D_C001360 = 0x0C001360; D_C012300 = 0x0C012300; -// ovl__00795350 +// map_ovl D_6000000 = 0x06000000; D_6000C00 = 0x06000C00; @@ -454,7 +943,7 @@ D_C007258 = 0x0C007258; D_C007410 = 0x0C007410; D_C0074A8 = 0x0C0074A8; -// ovl__007A28F0 +// catalog_ovl D_C000000 = 0x0C000000; D_C000240 = 0x0C000240; diff --git a/src/code/m_actor.c b/src/code/m_actor.c index 7398d4ba..9ef1551b 100644 --- a/src/code/m_actor.c +++ b/src/code/m_actor.c @@ -103,11 +103,11 @@ s32 Actor_data_bank_dma_end_check(Actor* actor, Game_Play* game_play) { switch (ACTOR_FGNAME_GET_F000(actor->fgName)) { case FGNAME_F000_D: case FGNAME_F000_E: - var_v1 = common_data.unk_1004C->unk_F4(game_play->unk_0110, actor); + var_v1 = common_data.unk_1004C->unk_F4(game_play->unk_0110.unk_0000, actor); break; default: - var_v1 = game_play->unk_0110[actor->unk_026].unk_00 > 0; + var_v1 = game_play->unk_0110.unk_0000[actor->unk_026].unk_00 > 0; break; } @@ -147,14 +147,14 @@ void Actor_delete(Actor* actor) { void Actor_ct(Actor* actor, Game_Play* game_play) { s32 pad[2] UNUSED; - Game_Play_unk_0110* temp; + Game_Play_unk_0110_unk_0000* temp; Npc* npc; CommonData_unk_1004C_unk_14_arg0 sp34; Game_Play_unk_0110* temp_a0; - temp_a0 = game_play->unk_0110; + temp_a0 = &game_play->unk_0110; - temp = temp_a0; + temp = temp_a0->unk_0000; temp += actor->unk_026; temp->unk_50++; @@ -162,8 +162,8 @@ void Actor_ct(Actor* actor, Game_Play* game_play) { npc = (Npc*)actor; common_data.unk_1004C->unk_14(&sp34, npc->actor.fgName); - npc->unk_708 = mSc_bank_regist_check(temp_a0, sp34.unk_02); - temp_a0[npc->unk_708].unk_50++; + npc->unk_708 = mSc_bank_regist_check(temp_a0->unk_0000, sp34.unk_02); + temp_a0->unk_0000[npc->unk_708].unk_50++; } actor->world = actor->home; @@ -193,7 +193,7 @@ void Actor_ct(Actor* actor, Game_Play* game_play) { Shape_Info_init(actor, 0.0f, NULL, 0.0f, 0.0f); if (Actor_data_bank_dma_end_check(actor, game_play) == 1) { - gSegments[6] = (uintptr_t)OS_K0_TO_PHYSICAL(temp_a0[actor->unk_026].segment); + gSegments[6] = (uintptr_t)OS_K0_TO_PHYSICAL(temp_a0->unk_0000[actor->unk_026].segment); actor->ct(actor, game_play); actor->ct = NULL; } @@ -201,7 +201,7 @@ void Actor_ct(Actor* actor, Game_Play* game_play) { #ifdef NON_MATCHING void Actor_dt(Actor* actor, Game_Play* game_play) { - Game_Play_unk_0110* temp_v0_6; + Game_Play_unk_0110_unk_0000* temp_v0_6; s32 new_var; if (actor->save != NULL) { @@ -222,7 +222,7 @@ void Actor_dt(Actor* actor, Game_Play* game_play) { actor->parent->child = NULL; } - temp_v0_6 = game_play->unk_0110; + temp_v0_6 = game_play->unk_0110.unk_0000; if (0) {} switch ((actor->fgName & 0xF000) >> 0xC) { @@ -232,7 +232,7 @@ void Actor_dt(Actor* actor, Game_Play* game_play) { break; default: - new_var = game_play->unk_190C; + new_var = game_play->unk_0110.unk_17FC; if (actor->unk_026 >= new_var) { temp_v0_6 = &temp_v0_6[(void)0, actor->unk_026]; @@ -272,7 +272,7 @@ void Actor_draw(Game_Play* game_play, Actor* actor) { Matrix_scale(actor->scale.x, actor->scale.y, actor->scale.z, MTXMODE_APPLY); { - void* segment = game_play->unk_0110[(void)0, actor->unk_026].segment; + void* segment = game_play->unk_0110.unk_0000[(void)0, actor->unk_026].segment; gSegments[6] = (uintptr_t)OS_PHYSICAL_TO_K0(segment); @@ -452,7 +452,7 @@ void Actor_info_call_actor(Game_Play* game_play, ActorInfo* actorInfo) { if (actor->ct != NULL) { if (Actor_data_bank_dma_end_check(actor, game_play) == 1) { - gSegments[6] = (uintptr_t)OS_K0_TO_PHYSICAL(game_play->unk_0110[actor->unk_026].segment); + gSegments[6] = (uintptr_t)OS_K0_TO_PHYSICAL(game_play->unk_0110.unk_0000[actor->unk_026].segment); game_play->state.unk_9D = 0x98; actor->ct(actor, game_play); @@ -488,7 +488,7 @@ void Actor_info_call_actor(Game_Play* game_play, ActorInfo* actorInfo) { actor->flags &= ~ACTOR_FLAG_1000000; if ((actor->flags & (ACTOR_FLAG_40 | ACTOR_FLAG_10)) || (actor->part == ACTOR_PART_NPC)) { - gSegments[6] = (uintptr_t)OS_K0_TO_PHYSICAL(game_play->unk_0110[actor->unk_026].segment); + gSegments[6] = (uintptr_t)OS_K0_TO_PHYSICAL(game_play->unk_0110.unk_0000[actor->unk_026].segment); game_play->state.unk_9D = 0xA1; actor->update(actor, game_play); game_play->state.unk_9D = 0xA2; @@ -692,8 +692,8 @@ s32 func_80057A8C_jp(s32* arg0, ActorProfile* profile UNUSED, ActorOverlay* over sp90 = sp24.unk_02; } - *arg0 = mSc_bank_regist_check(game_play->unk_0110, sp92); - temp_v0 = mSc_bank_regist_check(game_play->unk_0110, sp90); + *arg0 = mSc_bank_regist_check(game_play->unk_0110.unk_0000, sp92); + temp_v0 = mSc_bank_regist_check(game_play->unk_0110.unk_0000, sp90); if ((*arg0 < 0) || (temp_v0 < 0)) { if (*arg0 >= 0) { @@ -702,7 +702,7 @@ s32 func_80057A8C_jp(s32* arg0, ActorProfile* profile UNUSED, ActorOverlay* over if (temp_v0 >= 0) { sp90 = 0; } - common_data.unk_1004C->unk_EC(game_play->unk_0110, sp92, sp90); + common_data.unk_1004C->unk_EC(game_play->unk_0110.unk_0000, sp92, sp90); actor_free_check(overlayEntry, fgName); ret = 0; } @@ -713,10 +713,10 @@ s32 func_80057B70_jp(s32* arg0, ActorProfile* profile, ActorOverlay* overlayEntr s32 pad UNUSED; s32 ret = 1; - *arg0 = mSc_bank_regist_check(game_play->unk_0110, profile->objectId); + *arg0 = mSc_bank_regist_check(game_play->unk_0110.unk_0000, profile->objectId); if (*arg0 == -1) { - func_800C6144_jp(game_play->unk_0110, profile->objectId); + func_800C6144_jp(game_play->unk_0110.unk_0000, profile->objectId); actor_free_check(overlayEntry, fgName); ret = 0; } diff --git a/src/code/m_submenu.c b/src/code/m_submenu.c index a09cfb19..b40490c0 100644 --- a/src/code/m_submenu.c +++ b/src/code/m_submenu.c @@ -60,7 +60,7 @@ s32 SubmenuArea_IsPlayer(void) { #ifdef NON_MATCHING // regalloc void mSM_load_player_anime(Game_Play* game_play) { - Game_Play_unk_0110* var_s4; + Game_Play_unk_0110_unk_0000* var_s4; s32 var_s0; s32 var_s3; Player* temp_v0; @@ -71,7 +71,7 @@ void mSM_load_player_anime(Game_Play* game_play) { return; } - var_s4 = game_play->unk_0110; + var_s4 = game_play->unk_0110.unk_0000; var_s4 += mSc_bank_regist_check(var_s4, 9); for (var_s3 = 0; var_s3 < 2; var_s3++, var_s4++) { @@ -101,7 +101,7 @@ void mSM_load_player_anime(Game_Play* game_play); #pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_submenu/mSM_load_player_anime.s") #endif -void SubmenuArea_DoLink(SubmenuArea* area, mSM* submenu, SubmenuAreaIndex index) { +void SubmenuArea_DoLink(SubmenuArea* area, Submenu* submenu, SubmenuAreaIndex index) { area->allocatedRamAddr = D_8010DCE0_jp; if (index == SUBMENU_AREA_INDEX_PLAYER) { @@ -129,7 +129,7 @@ void SubmenuArea_DoLink(SubmenuArea* area, mSM* submenu, SubmenuAreaIndex index) (void*)((uintptr_t)area->allocatedRamAddr + ALIGN64((uintptr_t)area->vramEnd - (uintptr_t)area->vramStart)); } -void SubmenuArea_DoUnlink(SubmenuArea* area, mSM* submenu) { +void SubmenuArea_DoUnlink(SubmenuArea* area, Submenu* submenu) { if (area->allocatedRamAddr == NULL) { return; } @@ -142,7 +142,7 @@ void SubmenuArea_DoUnlink(SubmenuArea* area, mSM* submenu) { SubmenuArea_visit = NULL; } -s32 mSM_ovlptr_dllcnv_sub(void* vram, SubmenuArea* area, mSM* submenu) { +s32 mSM_ovlptr_dllcnv_sub(void* vram, SubmenuArea* area, Submenu* submenu) { SubmenuAreaIndex index; s32 len = SUBMENU_AREA_INDEX_MAX; @@ -156,7 +156,7 @@ s32 mSM_ovlptr_dllcnv_sub(void* vram, SubmenuArea* area, mSM* submenu) { return 0; } -void* mSM_ovlptr_dllcnv(void* vram, mSM* submenu) { +void* mSM_ovlptr_dllcnv(void* vram, Submenu* submenu) { SubmenuArea* area = SubmenuArea_visit; if (area == NULL) { @@ -248,7 +248,7 @@ void mSM_submenu_ovlptr_init(Game_Play* game_play) { size_t temp8 = ALIGN64(SEGMENT_VRAM_SIZE(ovl__0079E430)); size_t temp9 = ALIGN64(SEGMENT_VRAM_SIZE(ovl__0079F810)); size_t submenuOvlSize = ALIGN64(SEGMENT_VRAM_SIZE(submenu_ovl)); - size_t temp_a0 = ALIGN64(SEGMENT_VRAM_SIZE(ovl__00777AE0)); + size_t temp_a0 = ALIGN64(SEGMENT_VRAM_SIZE(tag_ovl)); size_t var_t0 = temp6 + temp7; size_t temp10; size_t temp1; @@ -262,12 +262,12 @@ void mSM_submenu_ovlptr_init(Game_Play* game_play) { var_t0 = MAX(temp8 + temp9, var_t0); - temp10 = ALIGN64(SEGMENT_VRAM_SIZE(ovl__007829E0)); - temp1 = ALIGN64(SEGMENT_VRAM_SIZE(ovl__00785700)); - temp2 = ALIGN64(SEGMENT_VRAM_SIZE(ovl__007908A0)); + temp10 = ALIGN64(SEGMENT_VRAM_SIZE(hand_ovl)); + temp1 = ALIGN64(SEGMENT_VRAM_SIZE(inventory_ovl)); + temp2 = ALIGN64(SEGMENT_VRAM_SIZE(board_ovl)); temp3 = ALIGN64(SEGMENT_VRAM_SIZE(ovl__0078CB80)); temp4 = ALIGN64(SEGMENT_VRAM_SIZE(ovl__00799580)); - temp5 = ALIGN64(SEGMENT_VRAM_SIZE(ovl__007A28F0)); + temp5 = ALIGN64(SEGMENT_VRAM_SIZE(catalog_ovl)); var_a3 = submenuOvlSize + temp1 + temp_a0 + temp10 + temp2 + temp3 + temp4 + var_t0; var_a3 = MAX(submenuOvlSize + temp_a0 + temp10 + temp5 + 0x4000, var_a3); @@ -294,7 +294,7 @@ dummy_label_255895: fault_AddressConverterAddClient(&B_80144680_jp, func_800C497C_jp, NULL); } -void mSM_submenu_ovlptr_cleanup(mSM* submenu) { +void mSM_submenu_ovlptr_cleanup(Submenu* submenu) { fault_RemoveClient(&B_80144670_jp); fault_AddressConverterRemoveClient(&B_80144680_jp); if (SubmenuArea_visit != NULL) { @@ -307,7 +307,7 @@ void mSM_submenu_ovlptr_cleanup(mSM* submenu) { D_8010DCE4_jp = 0; } -void load_player(mSM* submenu) { +void load_player(Submenu* submenu) { SubmenuArea* playerActorOvl = &SubmenuArea_dlftbl[SUBMENU_AREA_INDEX_PLAYER]; if (SubmenuArea_visit == playerActorOvl) { @@ -321,8 +321,8 @@ void load_player(mSM* submenu) { SubmenuArea_DoLink(playerActorOvl, submenu, SUBMENU_AREA_INDEX_PLAYER); } -void mSM_submenu_ct(mSM* submenu) { - bzero(submenu, sizeof(mSM)); +void mSM_submenu_ct(Submenu* submenu) { + bzero(submenu, sizeof(Submenu)); submenu->moveProcIndex = MSM_MOVE_PROC_WAIT; submenu->unk_20 = 0; @@ -332,23 +332,23 @@ void mSM_submenu_ct(mSM* submenu) { common_data.unk_104AD = 0; } - submenu->play = (void*)none_proc1; + submenu->move = (void*)none_proc1; submenu->draw = (void*)none_proc1; } -void mSM_submenu_dt(UNUSED mSM* submenu) { +void mSM_submenu_dt(UNUSED Submenu* submenu) { } -void mSM_open_submenu(mSM* submenu, s32 arg1, s32 arg2, s32 arg3) { - mSM_open_submenu_new2(submenu, arg1, arg2, arg3, 0, 0); +void mSM_open_submenu(Submenu* submenu, SubmenuProgramId programId, s32 arg2, s32 arg3) { + mSM_open_submenu_new2(submenu, programId, arg2, arg3, 0, 0); } -void mSM_open_submenu_new(mSM* submenu, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { - mSM_open_submenu_new2(submenu, arg1, arg2, arg3, arg4, 0); +void mSM_open_submenu_new(Submenu* submenu, SubmenuProgramId programId, s32 arg2, s32 arg3, s32 arg4) { + mSM_open_submenu_new2(submenu, programId, arg2, arg3, arg4, 0); } -void mSM_open_submenu_new2(mSM* submenu, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) { - submenu->unk_04 = arg1; +void mSM_open_submenu_new2(Submenu* submenu, SubmenuProgramId programId, s32 arg2, s32 arg3, s32 arg4, s32 arg5) { + submenu->programId = programId; submenu->unk_10 = arg2; submenu->unk_14 = arg3; submenu->unk_18 = arg4; @@ -373,7 +373,7 @@ void mSM_Reset_player_btn_type2(Game_Play* game_play) { } void mSM_submenu_ctrl(Game_Play* game_play) { - mSM* submenu = &game_play->submenu; + Submenu* submenu = &game_play->submenu; if ((game_play->submenu.moveProcIndex != MSM_MOVE_PROC_WAIT) || (game_play->unk_1EE0 != 0) || (game_play->unk_1EE3 != 0)) { @@ -422,14 +422,14 @@ void mSM_submenu_ctrl(Game_Play* game_play) { } } - if (submenu->unk_04 != 0) { + if (submenu->programId != SUBMENU_PROGRAM_0) { submenu->moveProcIndex = MSM_MOVE_PROC_PREWAIT; submenu->unk_00 = 1; SetGameFrame(2); } } -void mSM_move_Wait(mSM* submenu) { +void mSM_move_Wait(Submenu* submenu) { if (submenu->unk_20 != 0) { submenu->unk_20--; } @@ -439,13 +439,13 @@ void mSM_move_Wait(mSM* submenu) { } } -void mSM_move_PREWait(mSM* submenu) { +void mSM_move_PREWait(Submenu* submenu) { if (submenu->unk_00 > 2) { submenu->moveProcIndex = MSM_MOVE_PROC_LINKWAIT; } } -void mSM_move_LINKWait(mSM* submenu) { +void mSM_move_LINKWait(Submenu* submenu) { SubmenuArea* submenuOvl = &SubmenuArea_dlftbl[SUBMENU_AREA_INDEX_SUBMENU]; if (SubmenuArea_visit == submenuOvl) { @@ -457,7 +457,7 @@ void mSM_move_LINKWait(mSM* submenu) { } SubmenuArea_DoLink(submenuOvl, submenu, SUBMENU_AREA_INDEX_SUBMENU); - submenu->play = mSM_ovlptr_dllcnv(mSM_menu_ovl_init, submenu); + submenu->move = mSM_ovlptr_dllcnv(mSM_menu_ovl_init, submenu); submenu->draw = (void*)none_proc1; submenu->moveProcIndex = MSM_MOVE_PROC_PLAY; submenu->unk_DC = 1; @@ -469,7 +469,8 @@ void mSM_move_LINKWait(mSM* submenu) { xyz_t_move(&submenu->unk_E4, &ZeroVec); if (submenu->unk_00 != 4) { - if (((submenu->unk_04 == 4) && (submenu->unk_10 == 0)) || (common_data.now_private->gender == 0)) { + if (((submenu->programId == SUBMENU_PROGRAM_LEDIT) && (submenu->unk_10 == 0)) || + (common_data.now_private->gender == 0)) { sAdo_SpecChange(5); } else { sAdo_SpecChange(6); @@ -478,22 +479,22 @@ void mSM_move_LINKWait(mSM* submenu) { } } -void mSM_move_Play(mSM* submenu) { - submenu->play(submenu); +void mSM_move_Play(Submenu* submenu) { + submenu->move(submenu); } #ifdef NON_MATCHING // likely branch instead of normal branch -void mSM_move_End(mSM* submenu) { +void mSM_move_End(Submenu* submenu) { UNUSED s32 pad; Game_Play* sp28; UNK_TYPE sp24; UNUSED s32 sp20[1]; sp28 = (Game_Play*)gamePT; - submenu->play(submenu); + submenu->move(submenu); submenu->moveProcIndex = MSM_MOVE_PROC_WAIT; - submenu->unk_04 = 0; + submenu->programId = SUBMENU_PROGRAM_0; submenu->unk_20 = 2; submenu->unk_DC = 0; @@ -505,7 +506,7 @@ void mSM_move_End(mSM* submenu) { sp24 = mMsg_Get_base_window_p(); submenu->unk_00 = 0; - mSc_dmacopy_all_exchange_bank(sp28->unk_0110); + mSc_dmacopy_all_exchange_bank(sp28->unk_0110.unk_0000); SubmenuArea_DoUnlink(SubmenuArea_dlftbl, submenu); load_player(submenu); mSM_load_player_anime(sp28); @@ -522,11 +523,11 @@ void mSM_move_End(mSM* submenu) { mMsg_sound_spec_change_voice(sp24); } #else -void mSM_move_End(mSM* submenu); +void mSM_move_End(Submenu* submenu); #pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_submenu/mSM_move_End.s") #endif -typedef void (*MoveProcFunc)(mSM*); +typedef void (*MoveProcFunc)(Submenu*); MoveProcFunc move_proc_616[MSM_MOVE_PROC_MAX] = { mSM_move_Wait, // MSM_MOVE_PROC_WAIT @@ -536,11 +537,11 @@ MoveProcFunc move_proc_616[MSM_MOVE_PROC_MAX] = { mSM_move_End, // MSM_MOVE_PROC_END }; -void mSM_submenu_move(mSM* submenu) { +void mSM_submenu_move(Submenu* submenu) { move_proc_616[submenu->moveProcIndex](submenu); } -void mSM_submenu_draw(mSM* submenu, struct Game_Play* game_play) { +void mSM_submenu_draw(Submenu* submenu, struct Game_Play* game_play) { SubmenuArea* submenuOvl = &SubmenuArea_dlftbl[SUBMENU_AREA_INDEX_SUBMENU]; if ((submenu->unk_00 >= 3) && (submenu->moveProcIndex == 3) && (submenuOvl == SubmenuArea_visit)) { diff --git a/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h b/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h index 6aa683eb..ffa7c037 100644 --- a/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h +++ b/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h @@ -3,11 +3,16 @@ #include "ultra64.h" #include "game.h" +#include "m_view.h" +#include "unknown_structs.h" #include "unk.h" typedef struct Game__00743CD0 { - /* 0x00 */ Game state; - /* 0xE0 */ UNK_TYPE1 unk_00[0x1B20-0xE0]; + /* 0x0000 */ Game state; + /* 0x00E0 */ Game_Play1938 unk_00E0; + /* 0x0208 */ UNK_TYPE1 unk_0208[0x2FC-0x208]; + /* 0x02FC */ Game_Play_unk_0110 unk_02FC; + /* 0x1B18 */ UNK_TYPE1 unk_1B18[0x1B20-0x1B18]; } Game__00743CD0; // size = 0x1B20 void _00743CD0_init(Game *thisx); diff --git a/src/overlays/gamestates/ovl_play/m_play.c b/src/overlays/gamestates/ovl_play/m_play.c index e5180998..0c824c0d 100644 --- a/src/overlays/gamestates/ovl_play/m_play.c +++ b/src/overlays/gamestates/ovl_play/m_play.c @@ -456,7 +456,7 @@ void Game_play_move_fbdemo_not_move(Game_Play* game_play) { game_play->state.unk_9C = 4; mDemo_stock_clear(); game_play->state.unk_9C = 5; - mSc_dmacopy_data_bank(game_play->unk_0110); + mSc_dmacopy_data_bank(game_play->unk_0110.unk_0000); game_play->state.unk_9C = 6; mSM_submenu_move(&game_play->submenu); if ((game_play->submenu.moveProcIndex == MSM_MOVE_PROC_WAIT) && (REGADDR(IREG, 0x48) == 0)) { @@ -478,13 +478,13 @@ void Game_play_move_fbdemo_not_move(Game_Play* game_play) { } void Game_play_move(Game_Play* game_play) { - Game_Play_unk_0110* p = game_play->unk_0110; + Game_Play_unk_0110* p = &game_play->unk_0110; s32 var_v1; game_play->state.unk_9D = 0x8D; game_play->state.unk_9C = 1; Game_play_Reset_destiny(); - gSegments[4] = (uintptr_t)OS_K0_TO_PHYSICAL(p->segment); + gSegments[4] = (uintptr_t)OS_K0_TO_PHYSICAL(p->unk_0000[0].segment); gSegments[2] = (uintptr_t)OS_K0_TO_PHYSICAL(game_play->unk_010C); game_play->state.unk_9C = 2; @@ -536,7 +536,7 @@ void Game_play_move(Game_Play* game_play) { } void func_80803810_jp(Game_Play* game_play, GraphicsContext* gfxCtx) { - void* temp_v0 = game_play->unk_0110[0].segment; + void* temp_v0 = game_play->unk_0110.unk_0000[0].segment; gSegments[4] = (uintptr_t)OS_K0_TO_PHYSICAL(temp_v0); gSegments[2] = (uintptr_t)OS_K0_TO_PHYSICAL(game_play->unk_010C); @@ -826,12 +826,12 @@ void Gameplay_Scene_Init(Game_Play* game_play) { game_play->unk_1EA6 = 0; game_play->unk_1EA7 = 0; game_play->unk_1EB8 = 0; - mSc_data_bank_ct(game_play, game_play->unk_0110); + mSc_data_bank_ct(game_play, game_play->unk_0110.unk_0000); Global_light_ct(&game_play->glight); Door_info_ct(&game_play->unk_1E10); common_data_clear(); Scene_ct(game_play, game_play->unk_010C); - mSc_decide_exchange_bank(game_play->unk_0110); + mSc_decide_exchange_bank(game_play->unk_0110.unk_0000); func_808041A4_jp(game_play); } diff --git a/src/overlays/gamestates/ovl_play/m_play.h b/src/overlays/gamestates/ovl_play/m_play.h index cb518356..d530d9a8 100644 --- a/src/overlays/gamestates/ovl_play/m_play.h +++ b/src/overlays/gamestates/ovl_play/m_play.h @@ -66,17 +66,15 @@ typedef struct Game_Play { /* 0x00E6 */ UNK_TYPE1 unk_00E6[0x2]; /* 0x00E8 */ UNK_TYPE1 unk_00E8[0x24]; /* 0x010C */ void* unk_010C; - /* 0x0110 */ Game_Play_unk_0110 unk_0110[UNK_SIZE]; - /* 0x0164 */ UNK_TYPE1 unk_0164[0x17A8]; - /* 0x190C */ s32 unk_190C; - /* 0x1910 */ UNK_TYPE1 unk_1910[0x28]; + /* 0x0110 */ Game_Play_unk_0110 unk_0110; + /* 0x192C */ UNK_TYPE1 unk_192C[0xC]; /* 0x1938 */ Game_Play1938 unk_1938; /* 0x1A60 */ UNK_TYPE1 unk_1A60[0x138]; /* 0x1B98 */ Kankyo kankyo; /* 0x1C60 */ Global_light glight; /* 0x1C70 */ Pause pause; /* 0x1C78 */ ActorInfo actorInfo; - /* 0x1CBC */ mSM submenu; + /* 0x1CBC */ Submenu submenu; /* 0x1DAC */ s8 unk_1DAC; /* 0x1DAD */ UNK_TYPE1 unk_1DAD[0x3]; /* 0x1DB0 */ UNK_TYPE1 unk_1DB0[0x10]; diff --git a/src/overlays/submenu/board_ovl/m_board_ovl.h b/src/overlays/submenu/board_ovl/m_board_ovl.h new file mode 100644 index 00000000..43e12706 --- /dev/null +++ b/src/overlays/submenu/board_ovl/m_board_ovl.h @@ -0,0 +1,13 @@ +#ifndef M_BOARD_OVL_H +#define M_BOARD_OVL_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void mBD_board_ovl_construct(struct Submenu* submenu); +void mBD_board_ovl_destruct(struct Submenu* submenu); +void mBD_board_ovl_set_proc(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/catalog_ovl/m_catalog_ovl.h b/src/overlays/submenu/catalog_ovl/m_catalog_ovl.h new file mode 100644 index 00000000..e1099d30 --- /dev/null +++ b/src/overlays/submenu/catalog_ovl/m_catalog_ovl.h @@ -0,0 +1,13 @@ +#ifndef M_CATALOG_OVL_H +#define M_CATALOG_OVL_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void mCL_catalog_ovl_construct(struct Submenu* submenu); +void mCL_catalog_ovl_destruct(struct Submenu* submenu); +void mCL_catalog_ovl_set_proc(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/hand_ovl/m_hand_ovl.h b/src/overlays/submenu/hand_ovl/m_hand_ovl.h new file mode 100644 index 00000000..c608fd2f --- /dev/null +++ b/src/overlays/submenu/hand_ovl/m_hand_ovl.h @@ -0,0 +1,12 @@ +#ifndef M_HAND_OVL_H +#define M_HAND_OVL_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void mHD_hand_ovl_construct(struct Submenu* submenu); +void mHD_hand_ovl_destruct(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/haniwaPortrait_ovl/m_haniwaPortrait_ovl.h b/src/overlays/submenu/haniwaPortrait_ovl/m_haniwaPortrait_ovl.h new file mode 100644 index 00000000..86fb5ccb --- /dev/null +++ b/src/overlays/submenu/haniwaPortrait_ovl/m_haniwaPortrait_ovl.h @@ -0,0 +1,12 @@ +#ifndef haniwaPortrait_ovl_H +#define haniwaPortrait_ovl_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void mHP_haniwaPortrait_ovl_construct(struct Submenu* submenu); +void mHP_haniwaPortrait_ovl_destruct(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/inventory_ovl/m_inventory_ovl.h b/src/overlays/submenu/inventory_ovl/m_inventory_ovl.h new file mode 100644 index 00000000..056ac872 --- /dev/null +++ b/src/overlays/submenu/inventory_ovl/m_inventory_ovl.h @@ -0,0 +1,13 @@ +#ifndef M_INVENTORY_OVL_H +#define M_INVENTORY_OVL_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void mIV_inventory_ovl_construct(struct Submenu* submenu); +void mIV_inventory_ovl_destruct(struct Submenu* submenu); +void mIV_inventory_ovl_set_proc(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ledit_ovl/m_ledit_ovl.h b/src/overlays/submenu/ledit_ovl/m_ledit_ovl.h new file mode 100644 index 00000000..6a80e62d --- /dev/null +++ b/src/overlays/submenu/ledit_ovl/m_ledit_ovl.h @@ -0,0 +1,13 @@ +#ifndef M_LEDIT_OVL_H +#define M_LEDIT_OVL_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void mLE_ledit_ovl_construct(struct Submenu* submenu); +void mLE_ledit_ovl_destruct(struct Submenu* submenu); +void mLE_ledit_ovl_set_proc(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/map_ovl/m_map_ovl.h b/src/overlays/submenu/map_ovl/m_map_ovl.h new file mode 100644 index 00000000..2b854204 --- /dev/null +++ b/src/overlays/submenu/map_ovl/m_map_ovl.h @@ -0,0 +1,13 @@ +#ifndef M_MAP_OVL_H +#define M_MAP_OVL_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void mMP_map_ovl_construct(struct Submenu* submenu); +void mMP_map_ovl_destruct(struct Submenu* submenu); +void mMP_map_ovl_set_proc(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__00789B60/ovl__00789B60.h b/src/overlays/submenu/ovl__00789B60/ovl__00789B60.h new file mode 100644 index 00000000..8fb891ce --- /dev/null +++ b/src/overlays/submenu/ovl__00789B60/ovl__00789B60.h @@ -0,0 +1,13 @@ +#ifndef OVL__00789B60_H +#define OVL__00789B60_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_80882778_jp(struct Submenu* submenu); +void func_80882818_jp(struct Submenu* submenu); +void func_808826B8_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__0078A560/ovl__0078A560.h b/src/overlays/submenu/ovl__0078A560/ovl__0078A560.h new file mode 100644 index 00000000..829af1d0 --- /dev/null +++ b/src/overlays/submenu/ovl__0078A560/ovl__0078A560.h @@ -0,0 +1,13 @@ +#ifndef OVL__0078A560_H +#define OVL__0078A560_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_8088306C_jp(struct Submenu* submenu); +void func_808830E8_jp(struct Submenu* submenu); +void func_80882FAC_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__0078AE30/ovl__0078AE30.h b/src/overlays/submenu/ovl__0078AE30/ovl__0078AE30.h new file mode 100644 index 00000000..b9018fa9 --- /dev/null +++ b/src/overlays/submenu/ovl__0078AE30/ovl__0078AE30.h @@ -0,0 +1,13 @@ +#ifndef OVL__0078AE30_H +#define OVL__0078AE30_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_80884120_jp(struct Submenu* submenu); +void func_808841A8_jp(struct Submenu* submenu); +void func_80883F5C_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__0078CB80/ovl__0078CB80.h b/src/overlays/submenu/ovl__0078CB80/ovl__0078CB80.h new file mode 100644 index 00000000..292a9a93 --- /dev/null +++ b/src/overlays/submenu/ovl__0078CB80/ovl__0078CB80.h @@ -0,0 +1,13 @@ +#ifndef OVL__0078CB80_H +#define OVL__0078CB80_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_808883F8_jp(struct Submenu* submenu); +void func_808884E4_jp(struct Submenu* submenu); +void func_80888354_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__00792700/ovl__00792700.h b/src/overlays/submenu/ovl__00792700/ovl__00792700.h new file mode 100644 index 00000000..92a5134f --- /dev/null +++ b/src/overlays/submenu/ovl__00792700/ovl__00792700.h @@ -0,0 +1,13 @@ +#ifndef OVL__00792700_H +#define OVL__00792700_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_8088C4A0_jp(struct Submenu* submenu); +void func_8088C548_jp(struct Submenu* submenu); +void func_8088C344_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__00794380/ovl__00794380.h b/src/overlays/submenu/ovl__00794380/ovl__00794380.h new file mode 100644 index 00000000..195e4384 --- /dev/null +++ b/src/overlays/submenu/ovl__00794380/ovl__00794380.h @@ -0,0 +1,13 @@ +#ifndef OVL__00794380_H +#define OVL__00794380_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_8088D924_jp(struct Submenu* submenu); +void func_8088D9D4_jp(struct Submenu* submenu); +void func_8088D81C_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__00797A50/ovl__00797A50.h b/src/overlays/submenu/ovl__00797A50/ovl__00797A50.h new file mode 100644 index 00000000..324a216e --- /dev/null +++ b/src/overlays/submenu/ovl__00797A50/ovl__00797A50.h @@ -0,0 +1,13 @@ +#ifndef OVL__00797A50_H +#define OVL__00797A50_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_80895B04_jp(struct Submenu* submenu); +void func_80895B9C_jp(struct Submenu* submenu); +void func_80895A30_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__00799580/ovl__00799580.h b/src/overlays/submenu/ovl__00799580/ovl__00799580.h new file mode 100644 index 00000000..1d7fc9ff --- /dev/null +++ b/src/overlays/submenu/ovl__00799580/ovl__00799580.h @@ -0,0 +1,13 @@ +#ifndef OVL__00799580_H +#define OVL__00799580_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_80896898_jp(struct Submenu* submenu); +void func_80896938_jp(struct Submenu* submenu); +void func_80896830_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__0079A290/ovl__0079A290.h b/src/overlays/submenu/ovl__0079A290/ovl__0079A290.h new file mode 100644 index 00000000..80224dc8 --- /dev/null +++ b/src/overlays/submenu/ovl__0079A290/ovl__0079A290.h @@ -0,0 +1,13 @@ +#ifndef OVL__0079A290_H +#define OVL__0079A290_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_8089730C_jp(struct Submenu* submenu); +void func_80897394_jp(struct Submenu* submenu); +void func_8089728C_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__0079B120/ovl__0079B120.h b/src/overlays/submenu/ovl__0079B120/ovl__0079B120.h new file mode 100644 index 00000000..5ba21733 --- /dev/null +++ b/src/overlays/submenu/ovl__0079B120/ovl__0079B120.h @@ -0,0 +1,13 @@ +#ifndef OVL__0079B120_H +#define OVL__0079B120_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_80898688_jp(struct Submenu* submenu); +void func_80898710_jp(struct Submenu* submenu); +void func_80898520_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__0079C020/ovl__0079C020.h b/src/overlays/submenu/ovl__0079C020/ovl__0079C020.h new file mode 100644 index 00000000..85a06864 --- /dev/null +++ b/src/overlays/submenu/ovl__0079C020/ovl__0079C020.h @@ -0,0 +1,13 @@ +#ifndef OVL__0079C020_H +#define OVL__0079C020_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_80899E34_jp(struct Submenu* submenu); +void func_80899F00_jp(struct Submenu* submenu); +void func_80899D84_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__0079DA50/ovl__0079DA50.h b/src/overlays/submenu/ovl__0079DA50/ovl__0079DA50.h new file mode 100644 index 00000000..7fd23e22 --- /dev/null +++ b/src/overlays/submenu/ovl__0079DA50/ovl__0079DA50.h @@ -0,0 +1,13 @@ +#ifndef OVL__0079DA50_H +#define OVL__0079DA50_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_8089AB8C_jp(struct Submenu* submenu); +void func_8089AC14_jp(struct Submenu* submenu); +void func_8089AAE4_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__0079E430/ovl__0079E430.h b/src/overlays/submenu/ovl__0079E430/ovl__0079E430.h new file mode 100644 index 00000000..8ea0699c --- /dev/null +++ b/src/overlays/submenu/ovl__0079E430/ovl__0079E430.h @@ -0,0 +1,13 @@ +#ifndef OVL__0079E430_H +#define OVL__0079E430_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_8089BE68_jp(struct Submenu* submenu); +void func_8089BF10_jp(struct Submenu* submenu); +void func_8089BCE0_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__0079F810/ovl__0079F810.h b/src/overlays/submenu/ovl__0079F810/ovl__0079F810.h new file mode 100644 index 00000000..6fe47aba --- /dev/null +++ b/src/overlays/submenu/ovl__0079F810/ovl__0079F810.h @@ -0,0 +1,13 @@ +#ifndef OVL__0079F810_H +#define OVL__0079F810_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_808A40F0_jp(struct Submenu* submenu); +void func_808A4188_jp(struct Submenu* submenu); +void func_808A4058_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/ovl__007A10E0/ovl__007A10E0.h b/src/overlays/submenu/ovl__007A10E0/ovl__007A10E0.h new file mode 100644 index 00000000..da0ce20d --- /dev/null +++ b/src/overlays/submenu/ovl__007A10E0/ovl__007A10E0.h @@ -0,0 +1,13 @@ +#ifndef OVL__007A10E0_H +#define OVL__007A10E0_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void func_808A5D7C_jp(struct Submenu* submenu); +void func_808A5E14_jp(struct Submenu* submenu); +void func_808A5C28_jp(struct Submenu* submenu); + +#endif diff --git a/src/overlays/submenu/submenu_ovl/m_submenu_ovl.c b/src/overlays/submenu/submenu_ovl/m_submenu_ovl.c new file mode 100644 index 00000000..81f5bafc --- /dev/null +++ b/src/overlays/submenu/submenu_ovl/m_submenu_ovl.c @@ -0,0 +1,1573 @@ +#include "m_submenu_ovl.h" +#include "m_submenu.h" +#include "m_lib.h" +#include "game.h" +#include "ovlmgr.h" +#include "PreRender.h" +#include "sys_matrix.h" +#include "z_std_dma.h" +#include "6BFE60.h" +#include "6E0F50.h" +#include "macros.h" +#include "segment_symbols.h" + +// gamestates +#include "overlays/gamestates/ovl_play/m_play.h" +#include "overlays/gamestates/ovl__00743CD0/_00743CD0.h" + +// submenus +#include "overlays/submenu/inventory_ovl/m_inventory_ovl.h" +#include "overlays/submenu/ovl__0078A560/ovl__0078A560.h" +#include "overlays/submenu/ovl__0078AE30/ovl__0078AE30.h" +#include "overlays/submenu/ledit_ovl/m_ledit_ovl.h" +#include "overlays/submenu/map_ovl/m_map_ovl.h" +#include "overlays/submenu/ovl__00797A50/ovl__00797A50.h" +#include "overlays/submenu/ovl__0079B120/ovl__0079B120.h" +#include "overlays/submenu/ovl__0079C020/ovl__0079C020.h" +#include "overlays/submenu/ovl__0079DA50/ovl__0079DA50.h" +#include "overlays/submenu/ovl__0078CB80/ovl__0078CB80.h" +#include "overlays/submenu/ovl__00789B60/ovl__00789B60.h" +#include "overlays/submenu/board_ovl/m_board_ovl.h" +#include "overlays/submenu/ovl__00792700/ovl__00792700.h" +#include "overlays/submenu/ovl__00794380/ovl__00794380.h" +#include "overlays/submenu/ovl__00799580/ovl__00799580.h" +#include "overlays/submenu/ovl__0079A290/ovl__0079A290.h" +#include "overlays/submenu/ovl__0079E430/ovl__0079E430.h" +#include "overlays/submenu/ovl__0079F810/ovl__0079F810.h" +#include "overlays/submenu/ovl__007A10E0/ovl__007A10E0.h" +#include "overlays/submenu/catalog_ovl/m_catalog_ovl.h" +#include "overlays/submenu/tag_ovl/m_tag_ovl.h" +#include "overlays/submenu/hand_ovl/m_hand_ovl.h" +#include "overlays/submenu/haniwaPortrait_ovl/m_haniwaPortrait_ovl.h" + +extern Gfx D_C012370[]; // inv_item_model + +extern u8 D_0C00A620[]; // inv_mwin_unknown_pal +extern u8 D_0C00A6E0[]; // inv_mwin_unknown_tex +extern u8 D_0C00B720[]; // inv_mwin_haniwa_pal +extern u8 D_0C00B740[]; // inv_mwin_haniwa_tex +extern u8 D_0C00DD40[]; // inv_mwin_kaseki2_pal +extern u8 D_0C00DD80[]; // inv_mwin_kaseki2_tex +extern u8 D_0C00EC60[]; // inv_mwin_mtegami_pal +extern u8 D_0C00F0E0[]; // inv_mwin_mtegami_tex +extern u8 D_0C00F2E0[]; // inv_mwin_pmtegami_tex +extern u8 D_0C00ECA0[]; // inv_mwin_otegami_pal +extern u8 D_0C00F4E0[]; // inv_mwin_otegami_tex +extern u8 D_0C00F6E0[]; // inv_mwin_potegami_tex +extern u8 D_0C00EC20[]; // inv_mwin_mtegami2_pal +extern u8 D_0C00ECE0[]; // inv_mwin_mtegami2_tex +extern u8 D_0C00EEE0[]; // inv_mwin_pmtegami2_tex +extern u8 D_0C010FA0[]; // inv_mwin_pbox2_pal +extern u8 D_0C010FC0[]; // inv_mwin_pbox_tex +extern u8 D_0C012400[]; // inv_mwin_pbox2_pal +extern u8 D_0C012420[]; // inv_mwin_pbox_tex +extern u8 D_0C012620[]; // inv_mwin_pbox1_tex_rgb_ci4_pal +extern u8 D_0C0126A0[]; // inv_mwin_pbox1_tex_rgb_ci4 +extern u8 D_0C012640[]; // inv_mwin_pbox1_tex_rgb_ci4_pal +extern u8 D_0C0128A0[]; // inv_mwin_pbox1_tex_rgb_ci4 +extern u8 D_0C012660[]; // inv_mwin_pbox2_tex_rgb_ci4_pal +extern u8 D_0C012AA0[]; // inv_mwin_pbox2_tex_rgb_ci4 +extern u8 D_0C012680[]; // inv_mwin_pbox5_tex_rgb_ci4_pal +extern u8 D_0C012CA0[]; // inv_mwin_pbox5_tex_rgb_ci4 +extern u8 D_0C00B2E0[]; +extern u8 D_0C00B300[]; +extern u8 D_0C010780[]; +extern u8 D_0C0109A0[]; +extern u8 D_0C010BA0[]; +extern u8 D_0C010DA0[]; +extern u8 D_0C0107A0[]; +extern u8 D_0C00F940[]; +extern u8 D_0C00FF60[]; +extern u8 D_0C00F8E0[]; +extern u8 D_0C00F960[]; +extern u8 D_0C00F900[]; +extern u8 D_0C00FB60[]; +extern u8 D_0C00F920[]; +extern u8 D_0C00FD60[]; +extern u8 D_0C00A680[]; +extern u8 D_0C00ACE0[]; +extern u8 D_0C004EA0[]; +extern u8 D_0C005860[]; +extern u8 D_0C004EE0[]; +extern u8 D_0C005A60[]; +extern u8 D_0C004F20[]; +extern u8 D_0C005C60[]; +extern u8 D_0C004F60[]; +extern u8 D_0C005E60[]; +extern u8 D_0C005020[]; +extern u8 D_0C006460[]; +extern u8 D_0C005160[]; +extern u8 D_0C006E60[]; +extern u8 D_0C0051A0[]; +extern u8 D_0C007060[]; +extern u8 D_0C0051E0[]; +extern u8 D_0C007260[]; +extern u8 D_0C005120[]; +extern u8 D_0C006C60[]; +extern u8 D_0C004E60[]; +extern u8 D_0C005660[]; +extern u8 D_0C005220[]; +extern u8 D_0C007460[]; +extern u8 D_0C004FA0[]; +extern u8 D_0C006060[]; +extern u8 D_0C004FE0[]; +extern u8 D_0C006260[]; +extern u8 D_0C005060[]; +extern u8 D_0C006660[]; +extern u8 D_0C0050A0[]; +extern u8 D_0C006860[]; +extern u8 D_0C0050E0[]; +extern u8 D_0C006A60[]; +extern u8 D_0C0052E0[]; +extern u8 D_0C007A60[]; +extern u8 D_0C005320[]; +extern u8 D_0C007C60[]; +extern u8 D_0C005360[]; +extern u8 D_0C007E60[]; +extern u8 D_0C0053E0[]; +extern u8 D_0C008260[]; +extern u8 D_0C0053A0[]; +extern u8 D_0C008060[]; +extern u8 D_0C005420[]; +extern u8 D_0C008460[]; +extern u8 D_0C005460[]; +extern u8 D_0C008660[]; +extern u8 D_0C0054A0[]; +extern u8 D_0C008860[]; +extern u8 D_0C0055A0[]; +extern u8 D_0C009060[]; +extern u8 D_0C0055E0[]; +extern u8 D_0C009260[]; +extern u8 D_0C005260[]; +extern u8 D_0C007660[]; +extern u8 D_0C0052A0[]; +extern u8 D_0C007860[]; +extern u8 D_0C005560[]; +extern u8 D_0C008E60[]; +extern u8 D_0C005520[]; +extern u8 D_0C008C60[]; +extern u8 D_0C0054E0[]; +extern u8 D_0C008A60[]; +extern u8 D_0C005620[]; +extern u8 D_0C009460[]; +extern u8 D_0C009720[]; +extern u8 D_0C009740[]; +extern u8 D_0C00C800[]; +extern u8 D_0C00C940[]; +extern u8 D_0C00C900[]; +extern u8 D_0C00D940[]; +extern u8 D_0C00C8E0[]; +extern u8 D_0C00D740[]; +extern u8 D_0C00C8A0[]; +extern u8 D_0C00D340[]; +extern u8 D_0C00C880[]; +extern u8 D_0C00D140[]; +extern u8 D_0C00C840[]; +extern u8 D_0C00CD40[]; +extern u8 D_0C00C820[]; +extern u8 D_0C00CB40[]; +extern u8 D_0C00C920[]; +extern u8 D_0C00DB40[]; +extern u8 D_0C00C860[]; +extern u8 D_0C00CF40[]; +extern u8 D_0C00C8C0[]; +extern u8 D_0C00D540[]; +extern u8 D_0C00B940[]; +extern u8 D_0C00B9C0[]; +extern u8 D_0C00B9A0[]; +extern u8 D_0C00C1C0[]; +extern u8 D_0C00BFC0[]; +extern u8 D_0C00DD60[]; +extern u8 D_0C00DF80[]; +extern u8 D_0C00C3C0[]; +extern u8 D_0C00C400[]; +extern u8 D_0C0111C0[]; +extern u8 D_0C0112C0[]; +extern u8 D_0C0111E0[]; +extern u8 D_0C0114C0[]; +extern u8 D_0C011200[]; +extern u8 D_0C0116C0[]; +extern u8 D_0C011240[]; +extern u8 D_0C011AC0[]; +extern u8 D_0C011260[]; +extern u8 D_0C011CC0[]; +extern u8 D_0C0112A0[]; +extern u8 D_0C0120C0[]; +extern u8 D_0C011220[]; +extern u8 D_0C0118C0[]; +extern u8 D_0C011280[]; +extern u8 D_0C011EC0[]; +extern u8 D_0C00A6A0[]; +extern u8 D_0C00AEE0[]; +extern u8 D_0C00A6C0[]; +extern u8 D_0C00B0E0[]; +extern u8 D_0C00E180[]; +extern u8 D_0C00E220[]; +extern u8 D_0C00E200[]; +extern u8 D_0C00EA20[]; +extern u8 D_0C00E1E0[]; +extern u8 D_0C00E820[]; +extern u8 D_0C00E1C0[]; +extern u8 D_0C00E620[]; +extern u8 D_0C00E1A0[]; +extern u8 D_0C00E420[]; +extern u8 D_0C00B500[]; +extern u8 D_0C00B520[]; +extern u8 D_0C009940[]; +extern u8 D_0C009960[]; +extern u8 D_0C00A640[]; +extern u8 D_0C00A8E0[]; +extern u8 D_0C00A660[]; +extern u8 D_0C00AAE0[]; +extern u8 D_0C00C3E0[]; +extern u8 D_0C00C600[]; +extern u8 D_0C009C00[]; +extern u8 D_0C00A420[]; +extern u8 D_0C00A220[]; +extern u8 D_0C009C20[]; +extern u8 D_0C00A020[]; +extern u8 D_0C009E20[]; +extern u8 D_0C009B60[]; +extern u8 D_0C009B80[]; +extern u8 D_0C009BA0[]; +extern u8 D_0C009BC0[]; +extern u8 D_0C009BE0[]; +extern u8 D_0C009660[]; +extern u8 D_0C009680[]; +extern u8 D_0C0096A0[]; +extern u8 D_0C0096C0[]; +extern u8 D_0C0096E0[]; +extern u8 D_0C009700[]; +extern u8 D_0C000660[]; +extern u8 D_0C000E60[]; +extern u8 D_0C0006A0[]; +extern u8 D_0C001060[]; +extern u8 D_0C0006E0[]; +extern u8 D_0C001260[]; +extern u8 D_0C000720[]; +extern u8 D_0C001460[]; +extern u8 D_0C0007A0[]; +extern u8 D_0C001860[]; +extern u8 D_0C0007E0[]; +extern u8 D_0C001A60[]; +extern u8 D_0C000820[]; +extern u8 D_0C001C60[]; +extern u8 D_0C000760[]; +extern u8 D_0C001660[]; +extern u8 D_0C000BE0[]; +extern u8 D_0C003A60[]; +extern u8 D_0C0008A0[]; +extern u8 D_0C002060[]; +extern u8 D_0C000860[]; +extern u8 D_0C001E60[]; +extern u8 D_0C0008E0[]; +extern u8 D_0C002260[]; +extern u8 D_0C000920[]; +extern u8 D_0C002460[]; +extern u8 D_0C000B20[]; +extern u8 D_0C003460[]; +extern u8 D_0C000B60[]; +extern u8 D_0C003660[]; +extern u8 D_0C000960[]; +extern u8 D_0C002660[]; +extern u8 D_0C0009A0[]; +extern u8 D_0C002860[]; +extern u8 D_0C000A20[]; +extern u8 D_0C002C60[]; +extern u8 D_0C0009E0[]; +extern u8 D_0C002A60[]; +extern u8 D_0C000C60[]; +extern u8 D_0C003E60[]; +extern u8 D_0C000D20[]; +extern u8 D_0C004460[]; +extern u8 D_0C000D60[]; +extern u8 D_0C004660[]; +extern u8 D_0C000CE0[]; +extern u8 D_0C004260[]; +extern u8 D_0C000CA0[]; +extern u8 D_0C004060[]; +extern u8 D_0C000A60[]; +extern u8 D_0C002E60[]; +extern u8 D_0C000AA0[]; +extern u8 D_0C003060[]; +extern u8 D_0C000AE0[]; +extern u8 D_0C003260[]; +extern u8 D_0C000C20[]; +extern u8 D_0C003C60[]; +extern u8 D_0C000BA0[]; +extern u8 D_0C003860[]; +extern u8 D_0C000DA0[]; +extern u8 D_0C004860[]; +extern u8 D_0C000DE0[]; +extern u8 D_0C004A60[]; +extern u8 D_0C000E20[]; +extern u8 D_0C004C60[]; +extern u8 D_0C010160[]; +extern u8 D_0C010180[]; +extern u8 D_0C010380[]; +extern u8 D_0C010580[]; +extern u8 D_0C000000[]; +extern u8 D_0C000020[]; +extern u8 D_0C00B960[]; +extern u8 D_0C00BBC0[]; +extern u8 D_0C000220[]; +extern u8 D_0C000240[]; +extern u8 D_0C000440[]; +extern u8 D_0C000460[]; + +struct_8085E9B0 ovl_base; + +typedef struct struct_8085DCF8 { + /* 0x0 */ TexturePtr pal; + /* 0x4 */ TexturePtr tex; +} struct_8085DCF8; // size = 0x8 + +Vp viewport_data_621 = { { { 0, 0, 0x1FF, 0 }, { 0, 0, 0x1FF, 0 } } }; + +Lights1 light_data_622 = gdSPDefLights1(0x69, 0x5A, 0x5A, 0xFF, 0xFF, 0xF5, 0, 0x3C, 0x3C); + +struct_8085DCF8 unknown_tex_data_761[] = { + { D_0C00A620, D_0C00A6E0 }, +}; + +struct_8085DCF8 haniwa_tex_data_759[] = { + { D_0C00B720, D_0C00B740 }, +}; + +struct_8085DCF8 fossil_tex_data_760[] = { + { D_0C00DD40, D_0C00DD80 }, +}; + +struct_8085DCF8 present_tex_data_762[] = { + { D_0C010FA0, D_0C010FC0 }, { D_0C012400, D_0C012420 }, { D_0C012620, D_0C0126A0 }, + { D_0C012640, D_0C0128A0 }, { D_0C012660, D_0C012AA0 }, +}; + +// part of present_tex_data_762? +struct_8085DCF8 D_8085DD38_jp[] = { + { D_0C012680, D_0C012CA0 }, +}; + +struct_8085DCF8 D_8085DD40_jp[] = { + { D_0C00B2E0, D_0C00B300 }, +}; + +struct_8085DCF8 D_8085DD48_jp[] = { + { D_0C010780, D_0C0109A0 }, + { D_0C010780, D_0C010BA0 }, + { D_0C010780, D_0C010DA0 }, + { D_0C010780, D_0C0107A0 }, +}; + +struct_8085DCF8 D_8085DD68_jp[] = { + { D_0C00F940, D_0C00FF60 }, + { D_0C00F8E0, D_0C00F960 }, + { D_0C00F900, D_0C00FB60 }, + { D_0C00F920, D_0C00FD60 }, +}; + +struct_8085DCF8 D_8085DD88_jp[] = { + { D_0C00A680, D_0C00ACE0 }, +}; + +struct_8085DCF8 D_8085DD90_jp[] = { + { D_0C004EA0, D_0C005860 }, { D_0C004EE0, D_0C005A60 }, { D_0C004F20, D_0C005C60 }, { D_0C004F60, D_0C005E60 }, + { D_0C005020, D_0C006460 }, { D_0C005160, D_0C006E60 }, { D_0C0051A0, D_0C007060 }, { D_0C0051E0, D_0C007260 }, + { D_0C005120, D_0C006C60 }, { D_0C004E60, D_0C005660 }, { D_0C005220, D_0C007460 }, { D_0C004FA0, D_0C006060 }, + { D_0C004FE0, D_0C006260 }, { D_0C005060, D_0C006660 }, { D_0C0050A0, D_0C006860 }, { D_0C0050E0, D_0C006A60 }, + { D_0C0052E0, D_0C007A60 }, { D_0C005320, D_0C007C60 }, { D_0C005360, D_0C007E60 }, { D_0C0053E0, D_0C008260 }, + { D_0C0053A0, D_0C008060 }, { D_0C005420, D_0C008460 }, { D_0C005460, D_0C008660 }, { D_0C0054A0, D_0C008860 }, + { D_0C0055A0, D_0C009060 }, { D_0C0055E0, D_0C009260 }, { D_0C005260, D_0C007660 }, { D_0C0052A0, D_0C007860 }, + { D_0C005560, D_0C008E60 }, { D_0C005520, D_0C008C60 }, { D_0C0054E0, D_0C008A60 }, { D_0C005620, D_0C009460 }, +}; + +struct_8085DCF8 D_8085DE90_jp[] = { + { D_0C009720, D_0C009740 }, +}; + +struct_8085DCF8 D_8085DE98_jp[] = { + { D_0C00EC60, D_0C00F0E0 }, { D_0C009720, D_0C009740 }, { D_0C010780, D_0C0109A0 }, { D_0C00C800, D_0C00C940 }, + { D_0C00C900, D_0C00D940 }, { D_0C00C8E0, D_0C00D740 }, { D_0C00C8A0, D_0C00D340 }, { D_0C00C880, D_0C00D140 }, + { D_0C00C840, D_0C00CD40 }, { D_0C00C820, D_0C00CB40 }, { D_0C00C920, D_0C00DB40 }, { D_0C00C860, D_0C00CF40 }, + { D_0C00C8C0, D_0C00D540 }, { D_0C010780, D_0C0109A0 }, { D_0C00B940, D_0C00B9C0 }, { D_0C00B9A0, D_0C00C1C0 }, + { D_0C00B9A0, D_0C00BFC0 }, { D_0C00DD60, D_0C00DF80 }, { D_0C00C3C0, D_0C00C400 }, { D_0C00C3C0, D_0C00C400 }, + { D_0C0111C0, D_0C0112C0 }, { D_0C0111E0, D_0C0114C0 }, { D_0C011200, D_0C0116C0 }, { D_0C011240, D_0C011AC0 }, + { D_0C011260, D_0C011CC0 }, { D_0C0112A0, D_0C0120C0 }, { D_0C011220, D_0C0118C0 }, { D_0C011280, D_0C011EC0 }, + { D_0C010FA0, D_0C010FC0 }, { D_0C010FA0, D_0C010FC0 }, +}; + +struct_8085DCF8 D_8085DF88_jp[] = { + { D_0C00A6A0, D_0C00AEE0 }, +}; + +struct_8085DCF8 D_8085DF90_jp[] = { + { D_0C00A6C0, D_0C00B0E0 }, +}; + +struct_8085DCF8 D_8085DF98_jp[] = { + { D_0C00E180, D_0C00E220 }, { D_0C00E200, D_0C00EA20 }, { D_0C00E1E0, D_0C00E820 }, { D_0C00E1C0, D_0C00E620 }, + { D_0C00E1A0, D_0C00E420 }, { D_0C00B500, D_0C00B520 }, { D_0C009940, D_0C009960 }, +}; + +struct_8085DCF8 D_8085DFD0_jp[] = { + { D_0C00A640, D_0C00A8E0 }, { D_0C00A660, D_0C00AAE0 }, { D_0C00A660, D_0C00AAE0 }, { D_0C00A660, D_0C00AAE0 }, + { D_0C00A660, D_0C00AAE0 }, { D_0C00A660, D_0C00AAE0 }, { D_0C00A660, D_0C00AAE0 }, { D_0C00A660, D_0C00AAE0 }, + { D_0C00A660, D_0C00AAE0 }, { D_0C00A660, D_0C00AAE0 }, +}; + +struct_8085DCF8 D_8085E020_jp[] = { + { D_0C00C3E0, D_0C00C600 }, +}; + +struct_8085DCF8 D_8085E028_jp[] = { + { D_0C009C00, D_0C00A420 }, { D_0C009C00, D_0C00A220 }, { D_0C009C00, D_0C009C20 }, { D_0C009C00, D_0C00A020 }, + { D_0C009C00, D_0C009E20 }, { D_0C009C00, D_0C00A420 }, { D_0C009C00, D_0C00A420 }, { D_0C009C00, D_0C00A420 }, + { D_0C009B60, D_0C00A420 }, { D_0C009B60, D_0C00A220 }, { D_0C009B60, D_0C009C20 }, { D_0C009B60, D_0C00A020 }, + { D_0C009B60, D_0C009E20 }, { D_0C009B60, D_0C00A420 }, { D_0C009B60, D_0C00A420 }, { D_0C009B60, D_0C00A420 }, + { D_0C009B80, D_0C00A420 }, { D_0C009B80, D_0C00A220 }, { D_0C009B80, D_0C009C20 }, { D_0C009B80, D_0C00A020 }, + { D_0C009B80, D_0C009E20 }, { D_0C009B80, D_0C00A420 }, { D_0C009B80, D_0C00A420 }, { D_0C009B80, D_0C00A420 }, + { D_0C009BA0, D_0C00A420 }, { D_0C009BA0, D_0C00A220 }, { D_0C009BA0, D_0C009C20 }, { D_0C009BA0, D_0C00A020 }, + { D_0C009BA0, D_0C009E20 }, { D_0C009BA0, D_0C00A420 }, { D_0C009BA0, D_0C00A420 }, { D_0C009BA0, D_0C00A420 }, + { D_0C009BC0, D_0C00A420 }, { D_0C009BC0, D_0C00A220 }, { D_0C009BC0, D_0C009C20 }, { D_0C009BC0, D_0C00A020 }, + { D_0C009BC0, D_0C009E20 }, { D_0C009BC0, D_0C00A420 }, { D_0C009BC0, D_0C00A420 }, { D_0C009BC0, D_0C00A420 }, + { D_0C009BE0, D_0C00A420 }, { D_0C009BE0, D_0C00A220 }, { D_0C009BE0, D_0C009C20 }, { D_0C009BE0, D_0C00A020 }, + { D_0C009BE0, D_0C009E20 }, { D_0C009BE0, D_0C00A420 }, { D_0C009BE0, D_0C00A420 }, { D_0C009BE0, D_0C00A420 }, + { D_0C009660, D_0C00A420 }, { D_0C009660, D_0C00A220 }, { D_0C009660, D_0C009C20 }, { D_0C009660, D_0C00A020 }, + { D_0C009660, D_0C009E20 }, { D_0C009660, D_0C00A420 }, { D_0C009660, D_0C00A420 }, { D_0C009660, D_0C00A420 }, + { D_0C009680, D_0C00A420 }, { D_0C009680, D_0C00A220 }, { D_0C009680, D_0C009C20 }, { D_0C009680, D_0C00A020 }, + { D_0C009680, D_0C009E20 }, { D_0C009680, D_0C00A420 }, { D_0C009680, D_0C00A420 }, { D_0C009680, D_0C00A420 }, + { D_0C0096A0, D_0C00A420 }, { D_0C0096A0, D_0C00A220 }, { D_0C0096A0, D_0C009C20 }, { D_0C0096A0, D_0C00A020 }, + { D_0C0096A0, D_0C009E20 }, { D_0C0096A0, D_0C00A420 }, { D_0C0096A0, D_0C00A420 }, { D_0C0096A0, D_0C00A420 }, + { D_0C0096C0, D_0C00A420 }, { D_0C0096C0, D_0C00A220 }, { D_0C0096C0, D_0C009C20 }, { D_0C0096C0, D_0C00A020 }, + { D_0C0096C0, D_0C009E20 }, { D_0C0096C0, D_0C00A420 }, { D_0C0096C0, D_0C00A420 }, { D_0C0096C0, D_0C00A420 }, + { D_0C0096E0, D_0C00A420 }, { D_0C0096E0, D_0C00A220 }, { D_0C0096E0, D_0C009C20 }, { D_0C0096E0, D_0C00A020 }, + { D_0C0096E0, D_0C009E20 }, { D_0C0096E0, D_0C00A420 }, { D_0C0096E0, D_0C00A420 }, { D_0C0096E0, D_0C00A420 }, + { D_0C009700, D_0C00A420 }, { D_0C009700, D_0C00A220 }, { D_0C009700, D_0C009C20 }, { D_0C009700, D_0C00A020 }, + { D_0C009700, D_0C009E20 }, { D_0C009700, D_0C00A420 }, { D_0C009700, D_0C00A420 }, { D_0C009700, D_0C00A420 }, +}; + +struct_8085DCF8 D_8085E328_jp[] = { + { D_0C000660, D_0C000E60 }, { D_0C0006A0, D_0C001060 }, { D_0C0006E0, D_0C001260 }, { D_0C000720, D_0C001460 }, + { D_0C0007A0, D_0C001860 }, { D_0C0007E0, D_0C001A60 }, { D_0C000820, D_0C001C60 }, { D_0C000760, D_0C001660 }, + { D_0C000BE0, D_0C003A60 }, { D_0C0008A0, D_0C002060 }, { D_0C000860, D_0C001E60 }, { D_0C0008E0, D_0C002260 }, + { D_0C000920, D_0C002460 }, { D_0C000B20, D_0C003460 }, { D_0C000B60, D_0C003660 }, { D_0C000960, D_0C002660 }, + { D_0C0009A0, D_0C002860 }, { D_0C000A20, D_0C002C60 }, { D_0C0009E0, D_0C002A60 }, { D_0C000C60, D_0C003E60 }, + { D_0C000D20, D_0C004460 }, { D_0C000D60, D_0C004660 }, { D_0C000CE0, D_0C004260 }, { D_0C000CA0, D_0C004060 }, + { D_0C000A60, D_0C002E60 }, { D_0C000AA0, D_0C003060 }, { D_0C000AE0, D_0C003260 }, { D_0C000C20, D_0C003C60 }, + { D_0C000BA0, D_0C003860 }, { D_0C000DA0, D_0C004860 }, { D_0C000DE0, D_0C004A60 }, { D_0C000E20, D_0C004C60 }, +}; + +struct_8085DCF8 D_8085E428_jp[] = { + { D_0C010160, D_0C010180 }, + { D_0C010160, D_0C010380 }, + { D_0C010160, D_0C010580 }, + { D_0C000000, D_0C000020 }, +}; + +struct_8085DCF8 D_8085E448_jp[] = { + { D_0C00B960, D_0C00BBC0 }, + { D_0C000220, D_0C000240 }, + { D_0C000440, D_0C000460 }, +}; + +struct_8085DCF8* item_tex_data_table_779[] = { + D_8085DD40_jp, D_8085DD48_jp, D_8085DD68_jp, D_8085DD90_jp, D_8085DE90_jp, D_8085DE98_jp, + D_8085DF88_jp, D_8085DF90_jp, D_8085DF98_jp, D_8085DFD0_jp, D_8085E020_jp, D_8085E448_jp, + D_8085E028_jp, D_8085E328_jp, D_8085E448_jp, D_8085E428_jp, +}; + +struct_8085DCF8 letter_tex_data_table_837[] = { + { D_0C00EC60, D_0C00F0E0 }, { D_0C00EC60, D_0C00F2E0 }, { D_0C00ECA0, D_0C00F4E0 }, + { D_0C00ECA0, D_0C00F6E0 }, { D_0C00EC20, D_0C00ECE0 }, { D_0C00EC20, D_0C00EEE0 }, +}; + +#define SUBMENU_PROGRAM(name, construct, destruct, set_proc) \ + { \ + SEGMENT_ROM_START(name), SEGMENT_ROM_END(name), SEGMENT_VRAM_START(name), SEGMENT_VRAM_END(name), construct, \ + destruct, set_proc, false \ + } + +SubmenuProgramOverlay mSM_program_dlftbl[SUBMENU_PROGRAM_MAX] = { + // SUBMENU_PROGRAM_0 + SUBMENU_PROGRAM(inventory_ovl, mIV_inventory_ovl_construct, mIV_inventory_ovl_destruct, mIV_inventory_ovl_set_proc), + // SUBMENU_PROGRAM_1 + SUBMENU_PROGRAM(inventory_ovl, mIV_inventory_ovl_construct, mIV_inventory_ovl_destruct, mIV_inventory_ovl_set_proc), + // SUBMENU_PROGRAM_2 + SUBMENU_PROGRAM(ovl__0078A560, func_8088306C_jp, func_808830E8_jp, func_80882FAC_jp), + // SUBMENU_PROGRAM_3 + SUBMENU_PROGRAM(ovl__0078AE30, func_80884120_jp, func_808841A8_jp, func_80883F5C_jp), + // SUBMENU_PROGRAM_LEDIT + SUBMENU_PROGRAM(ledit_ovl, mLE_ledit_ovl_construct, mLE_ledit_ovl_destruct, mLE_ledit_ovl_set_proc), + // SUBMENU_PROGRAM_MAP + SUBMENU_PROGRAM(map_ovl, mMP_map_ovl_construct, mMP_map_ovl_destruct, mMP_map_ovl_set_proc), + // SUBMENU_PROGRAM_6 + SUBMENU_PROGRAM(ovl__00797A50, func_80895B04_jp, func_80895B9C_jp, func_80895A30_jp), + // SUBMENU_PROGRAM_7 + SUBMENU_PROGRAM(ovl__0079B120, func_80898688_jp, func_80898710_jp, func_80898520_jp), + // SUBMENU_PROGRAM_8 + SUBMENU_PROGRAM(ovl__0079C020, func_80899E34_jp, func_80899F00_jp, func_80899D84_jp), + // SUBMENU_PROGRAM_9 + SUBMENU_PROGRAM(ovl__0079DA50, func_8089AB8C_jp, func_8089AC14_jp, func_8089AAE4_jp), + // SUBMENU_PROGRAM_10 + SUBMENU_PROGRAM(ovl__0078CB80, func_808883F8_jp, func_808884E4_jp, func_80888354_jp), + // SUBMENU_PROGRAM_11 + SUBMENU_PROGRAM(ovl__00789B60, func_80882778_jp, func_80882818_jp, func_808826B8_jp), + // SUBMENU_PROGRAM_BOARD + SUBMENU_PROGRAM(board_ovl, mBD_board_ovl_construct, mBD_board_ovl_destruct, mBD_board_ovl_set_proc), + // SUBMENU_PROGRAM_13 + SUBMENU_PROGRAM(ovl__00792700, func_8088C4A0_jp, func_8088C548_jp, func_8088C344_jp), + // SUBMENU_PROGRAM_14 + SUBMENU_PROGRAM(ovl__00794380, func_8088D924_jp, func_8088D9D4_jp, func_8088D81C_jp), + // SUBMENU_PROGRAM_15 + SUBMENU_PROGRAM(ovl__00799580, func_80896898_jp, func_80896938_jp, func_80896830_jp), + // SUBMENU_PROGRAM_16 + SUBMENU_PROGRAM(ovl__0079A290, func_8089730C_jp, func_80897394_jp, func_8089728C_jp), + // SUBMENU_PROGRAM_17 + SUBMENU_PROGRAM(ovl__0079E430, func_8089BE68_jp, func_8089BF10_jp, func_8089BCE0_jp), + // SUBMENU_PROGRAM_18 + SUBMENU_PROGRAM(ovl__0079F810, func_808A40F0_jp, func_808A4188_jp, func_808A4058_jp), + // SUBMENU_PROGRAM_19 + SUBMENU_PROGRAM(ovl__007A10E0, func_808A5D7C_jp, func_808A5E14_jp, func_808A5C28_jp), + // SUBMENU_PROGRAM_CATALOG + SUBMENU_PROGRAM(catalog_ovl, mCL_catalog_ovl_construct, mCL_catalog_ovl_destruct, mCL_catalog_ovl_set_proc), +}; + +SubmenuProgramOverlay tag_program_dlftbl[] = { + SUBMENU_PROGRAM(tag_ovl, mTG_tag_ovl_construct, mTG_tag_ovl_destruct, mTG_tag_ovl_destruct), +}; + +SubmenuProgramOverlay hand_program_dlftbl[] = { + SUBMENU_PROGRAM(hand_ovl, mHD_hand_ovl_construct, mHD_hand_ovl_destruct, mHD_hand_ovl_destruct), +}; + +SubmenuProgramOverlay haniwa_program_dlftbl[] = { + SUBMENU_PROGRAM(haniwaPortrait_ovl, mHP_haniwaPortrait_ovl_construct, mHP_haniwaPortrait_ovl_destruct, + mHP_haniwaPortrait_ovl_destruct), +}; + +#define PROGRAM_FLAG_2 (1 << 1) +#define PROGRAM_FLAG_TAG (1 << 2) +#define PROGRAM_FLAG_HAND (1 << 3) +#define PROGRAM_FLAG_HANIWA (1 << 4) + +u8 flg_table_916[SUBMENU_PROGRAM_MAX] = { + 0, // SUBMENU_PROGRAM_0 + PROGRAM_FLAG_2 | PROGRAM_FLAG_TAG | PROGRAM_FLAG_HAND, // SUBMENU_PROGRAM_1 + PROGRAM_FLAG_HANIWA, // SUBMENU_PROGRAM_2 + 0, // SUBMENU_PROGRAM_3 + 0, // SUBMENU_PROGRAM_LEDIT + 0, // SUBMENU_PROGRAM_MAP + 0, // SUBMENU_PROGRAM_6 + 0, // SUBMENU_PROGRAM_7 + 0, // SUBMENU_PROGRAM_8 + 0, // SUBMENU_PROGRAM_9 + 0, // SUBMENU_PROGRAM_10 + PROGRAM_FLAG_2 | PROGRAM_FLAG_TAG | PROGRAM_FLAG_HAND, // SUBMENU_PROGRAM_11 + 0, // SUBMENU_PROGRAM_BOARD + 0, // SUBMENU_PROGRAM_13 + PROGRAM_FLAG_2 | PROGRAM_FLAG_TAG | PROGRAM_FLAG_HAND | PROGRAM_FLAG_HANIWA, // SUBMENU_PROGRAM_14 + 0, // SUBMENU_PROGRAM_15 + 0, // SUBMENU_PROGRAM_16 + PROGRAM_FLAG_2 | PROGRAM_FLAG_TAG | PROGRAM_FLAG_HAND, // SUBMENU_PROGRAM_17 + 0, // SUBMENU_PROGRAM_18 + PROGRAM_FLAG_TAG | PROGRAM_FLAG_HAND, // SUBMENU_PROGRAM_19 + PROGRAM_FLAG_TAG | PROGRAM_FLAG_HAND, // SUBMENU_PROGRAM_CATALOG +}; + +f32 data_table_935[SUBMENU_PROGRAM_MAX][4] = { + { 0.0f, 0.0f, 0.0f, 0.0f }, // SUBMENU_PROGRAM_0 + { 300.0f, 0.0f, 75.0f, 0.0f }, // SUBMENU_PROGRAM_1 + { 0.0f, 300.0f, 0.0f, 75.0f }, // SUBMENU_PROGRAM_2 + { 0.0f, 300.0f, 0.0f, 75.0f }, // SUBMENU_PROGRAM_3 + { 0.0f, 300.0f, 0.0f, 75.0f }, // SUBMENU_PROGRAM_LEDIT + { 0.0f, 300.0f, 0.0f, 75.0f }, // SUBMENU_PROGRAM_MAP + { 0.0f, 300.0f, 0.0f, 75.0f }, // SUBMENU_PROGRAM_6 + { 0.0f, 300.0f, 0.0f, 75.0f }, // SUBMENU_PROGRAM_7 + { 0.0f, 300.0f, 0.0f, 75.0f }, // SUBMENU_PROGRAM_8 + { 0.0f, 300.0f, 0.0f, 75.0f }, // SUBMENU_PROGRAM_9 + { 0.0f, -300.0f, 0.0f, 75.0f }, // SUBMENU_PROGRAM_10 + { -300.0f, 0.0f, 75.0f, 0.0f }, // SUBMENU_PROGRAM_11 + { 0.0f, 300.0f, 0.0f, 75.0f }, // SUBMENU_PROGRAM_BOARD + { 0.0f, 0.0f, 0.0f, 0.0f }, // SUBMENU_PROGRAM_13 + { -300.0f, 0.0f, 75.0f, 0.0f }, // SUBMENU_PROGRAM_14 + { 0.0f, -300.0f, 0.0f, 75.0f }, // SUBMENU_PROGRAM_15 + { 0.0f, 0.0f, 0.0f, 0.0f }, // SUBMENU_PROGRAM_16 + { 300.0f, 0.0f, 75.0f, 0.0f }, // SUBMENU_PROGRAM_17 + { 0.0f, 0.0f, 0.0f, 0.0f }, // SUBMENU_PROGRAM_18 + { 0.0f, 300.0f, 0.0f, 75.0f }, // SUBMENU_PROGRAM_19 + { 300.0f, 0.0f, 75.0f, 0.0f }, // SUBMENU_PROGRAM_CATALOG +}; + +s32 add_trigger_954[] = { R_CBUTTONS, U_CBUTTONS, L_CBUTTONS, D_CBUTTONS }; + +f32 move_data_1027[2][4] = { { 2.0f, 0.0f, 300.0f, 1.0f }, { 0.5f, 120.0f, 0.0f, -1.0f } }; + +void mSM_setup_view(Submenu* submenu, GraphicsContext* gfxCtx, s32 arg1) { + Mtx* mtx; + UNUSED s32 pad; + Gfx* gfx; + + if (arg1 != 0) { + mtx = GRAPH_ALLOC(gfxCtx, sizeof(Mtx)); + guOrtho(mtx, SCREEN_WIDTH * -8, SCREEN_WIDTH * 8, SCREEN_HEIGHT * -8, SCREEN_HEIGHT * 8, 1.0f, 2000.0f, 1.0f); + submenu->unk_2C->unk_1072C = mtx; + } else { + mtx = submenu->unk_2C->unk_1072C; + } + + OPEN_DISPS(gfxCtx); + + gfx = POLY_OPA_DISP; + if (arg1 == 0) { + Game_Play1938* var_a0; + + if (submenu->unk_00 != 4) { + var_a0 = &((Game_Play*)gamePT)->unk_1938; + } else { + var_a0 = &((Game__00743CD0*)gamePT)->unk_00E0; + } + + gDPPipeSync(gfx++); + gDPSetScissor(gfx++, G_SC_NON_INTERLACE, var_a0->unk_010, var_a0->unk_008, var_a0->unk_014, var_a0->unk_00C); + gSPViewport(gfx++, &var_a0->vp); + gDPSetColorImage(gfx++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, gfxCtx->unk_2E4); + gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + } + + //! FAKE + if (1) {} + if (1) {} + if (1) {} + + gSPMatrix(gfx++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + POLY_OPA_DISP = gfx; + + CLOSE_DISPS(gfxCtx); +} + +void mSM_set_char_matrix(GraphicsContext* gfxCtx) { + Gfx* gfx; + + OPEN_DISPS(gfxCtx); + + gfx = POLY_OPA_DISP; + gSPMatrix(gfx++, &Mtx_clear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + POLY_OPA_DISP = gfx; + + CLOSE_DISPS(gfxCtx); +} + +#ifdef NON_EQUIVALENT +void mSM_cbuf_copy(GraphicsContext* gfxCtx, PreRender* render, s32 arg2, s32 arg3, s32 arg4) { + s32 spCC; + void* sp9C; + void* sp98; + Gfx* sp8C; + // Gfx* temp_v0_11; + // Gfx* temp_v0_12; + // Gfx* temp_v0_13; + // Gfx* temp_v0_14; + // Gfx* temp_v0_15; + // Gfx* temp_v0_16; + // Gfx* temp_v0_17; + // Gfx* temp_v0_6; + // Gfx* temp_v0_8; + // Gfx* temp_v0_9; + s32 temp_a2; + s32 temp_v0_7; + s32 var_a1; + s32 var_a2; + s32 var_a3; + s32 var_t1; + s32 var_t2; + s32 var_t3; + s32 var_v1; + u16 temp_a0; + u16 temp_v0; + u16 var_ra; + s32 var_t0; + u16 var_t4; + u16 var_t5; + + if (arg2 >= 0x13F) { + return; + } + + temp_v0 = render->unk_04; + if (-(s32)temp_v0 >= arg2) { + return; + } + + temp_a0 = render->unk_06; + if (1) {} + if (1) {} + if (1) {} + if (1) {} + if (-(s32)temp_a0 >= arg3) { + return; + } + + if ((arg3 >= 0xEF)) { + return; + } + + if (arg2 < 0) { + var_t5 = temp_v0 + arg2; + var_t3 = -arg2; + arg2 = 0; + } else { + var_t3 = 0; + if ((temp_v0 + arg2) >= 0x140) { + var_t5 = 0x140 - arg2; + } else { + var_t5 = temp_v0; + } + } + + var_t4 = 0x140; + if (arg3 < 0) { + var_t0 = temp_a0 + arg3; + var_v1 = -arg3; + arg3 = 0; + } else { + var_v1 = 0; + if ((temp_a0 + arg3) >= 0xF0) { + var_t0 = 0xEF - arg3; + } else { + var_t0 = temp_a0; + } + } + + OPEN_DISPS(gfxCtx); + + var_ra = temp_a0; + if (arg4 == 0) { + spCC = 0x140; + var_t4 = temp_v0; + sp9C = gfxCtx->unk_2E4; + var_a1 = arg2; + var_t1 = arg3; + var_t2 = var_v1; + var_a2 = var_t3; + sp98 = render->unk_14; + } else { + spCC = (s32)temp_v0; + var_ra = 0xF0; + var_a1 = var_t3; + var_t1 = var_v1; + sp9C = render->unk_14; + var_t2 = arg3; + var_a2 = arg2; + sp98 = gfxCtx->unk_2E4; + } + + var_a3 = 0x1000 / (s32)(((var_t5 + 3) & ~3) * 2); + if (arg4 != 0) { + sp8C = POLY_OPA_DISP; + render->unk_00 = 0x140; + render->unk_02 = 0xF0; + render->unk_10 = gfxCtx->unk_2E4; + PreRender_CopyRGBC(render, &sp8C, arg2 - var_t3, arg3 - var_v1); + POLY_OPA_DISP = sp8C; + } else { + gDPPipeSync(POLY_OPA_DISP++); + gSPClearGeometryMode(POLY_OPA_DISP++, G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | + 0x0040F9FA); + + gDPSetOtherMode(POLY_OPA_DISP++, + G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_COPY | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PRIM | G_RM_NOOP | G_RM_NOOP2); + + // temp_v0_5 = gfxCtx->polyOpa.p; + // gfxCtx->polyOpa.p = temp_v0_5 + 8; + // temp_v0_5->words.w0 = ((var_t4 - 1) & 0xFFF) | 0xFF100000; + // temp_v0_5->words.w1 = (u32) sp98; + gDPSetColorImage(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, var_t4, sp98); + + // temp_v0_6 = gfxCtx->polyOpa.p; + // gfxCtx->polyOpa.p = temp_v0_6 + 8; + // temp_v0_6->words.w0 = 0xED000000; + // temp_v0_6->words.w1 = (((s32) ((f32) var_t4 * 4.0f) & 0xFFF) << 0xC) | ((s32) ((f32) var_ra * 4.0f) & 0xFFF); + gDPSetScissorFrac(POLY_OPA_DISP++, G_SC_NON_INTERLACE, 0, 0, (s32)var_t4 * 4.0f, (s32)var_ra * 4.0f); + + while ((s32)var_t0 > 0) { + if ((s32)var_t0 < var_a3) { + var_a3 = (s32)var_t0; + } + var_t0 -= var_a3; + + temp_v0_7 = ((var_t5 + var_a1) - 1); + +#if 0 + temp_v0_8 = gfxCtx->polyOpa.p; + gfxCtx->polyOpa.p = temp_v0_8 + 8; + temp_v0_8->words.w0 = ((spCC - 1) & 0xFFF) | 0xFD100000; + temp_v0_8->words.w1 = (u32) sp9C; + // gDPSetTextureImage(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, 0x12345678); + + temp_v0_9 = gfxCtx->polyOpa.p; + gfxCtx->polyOpa.p = temp_v0_9 + 8; + temp_v0_9->words.w1 = 0x07000000; + temp_v0_9->words.w0 = ((((s32) (((temp_v0_7 - var_a1) * 2) + 9) >> 3) & 0x1FF) << 9) | 0xF5100000; + + //temp_v0_10 = gfxCtx->polyOpa.p; + //gfxCtx->polyOpa.p = temp_v0_10 + 8; + //temp_v0_10->words.w1 = 0x00000000; + //temp_v0_10->words.w0 = 0xE6000000; + gDPLoadSync(POLY_OPA_DISP++); + + temp_v0_11 = gfxCtx->polyOpa.p; + gfxCtx->polyOpa.p = temp_v0_11 + 8; + temp_a2 = var_t1 + var_a3; + temp_v0_11->words.w0 = (((var_a1 * 4) & 0xFFF) << 0xC) | 0xF4000000 | ((var_t1 * 4) & 0xFFF); + temp_v0_11->words.w1 = (((temp_v0_7 * 4) & 0xFFF) << 0xC) | 0x07000000 | (((temp_a2 - 1) * 4) & 0xFFF); + + temp_v0_12 = gfxCtx->polyOpa.p; + gfxCtx->polyOpa.p = temp_v0_12 + 8; + temp_v0_12->words.w1 = 0x00000000; + temp_v0_12->words.w0 = 0xE7000000; + + temp_v0_13 = gfxCtx->polyOpa.p; + gfxCtx->polyOpa.p = temp_v0_13 + 8; + temp_v0_13->words.w1 = 0x00000000; + temp_v0_13->words.w0 = ((((s32) (((temp_v0_7 - var_a1) * 2) + 9) >> 3) & 0x1FF) << 9) | 0xF5100000; + + temp_v0_14 = gfxCtx->polyOpa.p; + gfxCtx->polyOpa.p = temp_v0_14 + 8; + temp_v0_14->words.w1 = (((temp_v0_7 * 4) & 0xFFF) << 0xC) | (((temp_a2 - 1) * 4) & 0xFFF); + temp_v0_14->words.w0 = (((var_a1 * 4) & 0xFFF) << 0xC) | 0xF2000000 | ((var_t1 * 4) & 0xFFF); +#endif + gDPLoadTextureTile(POLY_OPA_DISP++, sp9C, G_IM_FMT_RGBA, G_IM_SIZ_16b, spCC, 0, var_a1, var_t1, temp_v0_7, + temp_a2 - 1, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + +#if 0 + temp_v0_15 = gfxCtx->polyOpa.p; + gfxCtx->polyOpa.p = temp_v0_15 + 8; + temp_v0_15->words.w0 = ((((((var_a2 + var_t5) - 1) * 4) & 0xFFF) << 0xC) | 0xE4000000) | (((var_t2 + var_a3 - 1) * 4) & 0xFFF); + temp_v0_15->words.w1 = (((var_a2 * 4) & 0xFFF) << 0xC) | ((var_t2 * 4) & 0xFFF); + + temp_v0_16 = gfxCtx->polyOpa.p; + gfxCtx->polyOpa.p = temp_v0_16 + 8; + temp_v0_16->words.w0 = 0xE1000000; + temp_v0_16->words.w1 = (var_a1 << 0x15) | ((var_t1 << 5) & 0xFFFF); + + temp_v0_17 = gfxCtx->polyOpa.p; + gfxCtx->polyOpa.p = temp_v0_17 + 8; + temp_v0_17->words.w0 = 0xF1000000; + temp_v0_17->words.w1 = 0x10000400; +#endif + gSPTextureRectangle(POLY_OPA_DISP++, (var_a2 * 4), (var_t2 * 4), (((var_a2 + var_t5) - 1) * 4), + ((var_t2 + var_a3 - 1) * 4), G_TX_RENDERTILE, (var_a1 << 0x5), (var_t1 << 5), 0x1000, + 0x0400); + + var_t1 = temp_a2; + + var_t2 = var_t2 + var_a3; + } + } + + CLOSE_DISPS(gfxCtx); +} +#else +void mSM_cbuf_copy(GraphicsContext* gfxCtx, PreRender* render, s32 arg2, s32 arg3, s32 arg4); +#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/submenu/submenu_ovl/m_submenu_ovl/mSM_cbuf_copy.s") +#endif + +void mSM_set_drawMode(GraphicsContext* gfxCtx, struct_func_8085C20C_jp_arg1* arg1, f32 arg2, f32 xAt, s16 angle) { + s32 temp_a3 = arg1->unk_04; + s32 temp_t1 = arg1->unk_06; + f32 temp_fv1; + f32 temp_fa0; + + OPEN_DISPS(gfxCtx); + + gSPSegment(POLY_OPA_DISP++, 0x00, NULL); + + gDPPipeSync(POLY_OPA_DISP++); + gSPClearGeometryMode(POLY_OPA_DISP++, G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | + 0x0040F9FA); + gSPTexture(POLY_OPA_DISP++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF); + gDPSetCombineMode(POLY_OPA_DISP++, G_CC_SHADE, G_CC_SHADE); + gDPSetOtherMode(POLY_OPA_DISP++, + G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_FILL | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_NOOP | G_RM_NOOP2); + gSPLoadGeometryMode(POLY_OPA_DISP++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH); + + temp_fv1 = temp_a3; + temp_fa0 = temp_t1; + + gDPSetScissorFrac(POLY_OPA_DISP++, G_SC_NON_INTERLACE, 0, 0, temp_fv1 * 4.0f, temp_fa0 * 4.0f); + + gSPClipRatio(POLY_OPA_DISP++, FRUSTRATIO_1); + + gDPSetColorImage(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, temp_a3, arg1->unk_20); + + gDPSetFillColor(POLY_OPA_DISP++, (GPACK_RGBA5551(255, 255, 240, 0) << 16) | GPACK_RGBA5551(255, 255, 240, 0)); + + gDPFillRectangle(POLY_OPA_DISP++, 0, 0, temp_a3 - 1, temp_t1 - 1); + + gDPPipeSync(POLY_OPA_DISP++); + + gDPSetColorImage(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, temp_a3, arg1->unk_14); + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetDepthImage(POLY_OPA_DISP++, arg1->unk_20); + + { + Vp* vp = GRAPH_ALLOC(gfxCtx, sizeof(Vp)); + Mtx* sp84 = GRAPH_ALLOC(gfxCtx, sizeof(Mtx)); + Mtx* sp54 = GRAPH_ALLOC(gfxCtx, sizeof(Mtx)); + u16 sp7E; + + if (vp == NULL) { + vp = &viewport_data_621; + } else { + vp->vp.vtrans[2] = 0x1FF; + vp->vp.vtrans[3] = 0; + vp->vp.vscale[0] = vp->vp.vtrans[0] = temp_a3 * 2; + vp->vp.vscale[1] = vp->vp.vtrans[1] = temp_t1 * 2; + vp->vp.vscale[2] = vp->vp.vtrans[2]; + vp->vp.vscale[3] = vp->vp.vtrans[3]; + } + + gSPViewport(POLY_OPA_DISP++, vp); + + if (temp_a3 - 1 != 0x7F) { + guPerspective(sp84, &sp7E, 35.0f, temp_fv1 / temp_fa0, 1.0f, 2000.0f, 1.0f); + } else { + guPerspective(sp84, &sp7E, 20.0f, temp_fv1 / temp_fa0, 100.0f, 800.0f, 1.0f); + } + + gSPPerspNormalize(POLY_OPA_DISP++, sp7E); + gSPMatrix(POLY_OPA_DISP++, sp84, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + + { + f32 yEye; + f32 zEye; + + if (angle == 0x4000) { + angle = 0x4000 + 0x100; + } else if (angle == -0x4000) { + angle = -0x4000 + 0x100; + } + + yEye = sin_s(angle) * arg2 + xAt; + zEye = cos_s(angle) * arg2; + if ((angle < -0x4000) || (angle >= 0x4000)) { + guLookAt(sp54, 0.0f, yEye, zEye, 0.0f, xAt, 0.0f, 0.0f, -1.0f, 0.0f); + } else { + guLookAt(sp54, 0.0f, yEye, zEye, 0.0f, xAt, 0.0f, 0.0f, 1.0f, 0.0f); + } + } + + gSPMatrix(POLY_OPA_DISP++, sp54, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + gSPSetLights1(POLY_OPA_DISP++, light_data_622); + } + + POLY_OPA_DISP = gfx_set_fog_nosync(POLY_OPA_DISP++, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D0, 0x500); + + CLOSE_DISPS(gfxCtx); +} + +u8 mSM_get_groupNo(u16 arg0) { + return arg0; +} + +#ifdef NON_EQUIVALENT +// float messed up +// maybe equivalent, but hard to tell +void mSM_draw_item(GraphicsContext* gfxCtx, f32 arg1, f32 arg2, f32 arg3, u16 arg4, s32 arg5, s32 arg6, s32 arg7, + s32 arg8) { + struct_8085DCF8* var_a1; // spAC + s32 pad; + s32 var_a2; + s32 var_a3; + s32 var_v1; + s32 temp_v0; + void* var_a2_2; + s32 temp; + + Gfx* gfx; + + var_a2 = -1; + var_a3 = 0; + if (arg3 < 0.05f) { + return; + } + + if (arg5 != 0) { + if (arg7 >= 6) { + var_a1 = &D_8085DD38_jp; + if (arg7 >= 0xC) { + var_a3 = 1; + } + } else { + var_a1 = &present_tex_data_762[arg7]; + } + } else if (((s32)arg4 >= 0x15B0) && ((s32)arg4 < 0x17AC)) { + var_a1 = haniwa_tex_data_759; + } else if (((s32)arg4 >= 0x1E3C) && ((s32)arg4 < 0x1EA0)) { + var_a1 = fossil_tex_data_760; + } else if (((s32)(arg4 & 0xF000) >> 0xC) == 1) { + var_a1 = unknown_tex_data_761; + } else { + temp_v0 = mSM_get_groupNo(arg4); + + var_a2 = (s32)(arg4 & 0xF00) >> 8; + if (var_a2 == 0xE) { + // var_a1 = *(item_tex_data_table_779 + (var_a2 * 4)) + (arg7 * 8); + var_a1 = &item_tex_data_table_779[var_a2][arg7]; + } else if ((var_a2 == 0) || (var_a2 == 4) || (var_a2 == 6) || (var_a2 == 7) || (var_a2 == 0xA) || + (var_a2 == 0xB)) { + // var_a1 = *(item_tex_data_table_779 + (var_a2 * 4)); + var_a1 = &item_tex_data_table_779[var_a2][0]; + } else if (var_a2 == 2) { + if (((s32)arg4 >= 0x2204) && ((s32)arg4 < 0x2224)) { + var_a1 = &D_8085DD88_jp; + } else { + var_a1 = &D_8085DD68_jp[temp_v0]; + } + } else { + // var_a1 = *(item_tex_data_table_779 + (var_a2 * 4)) + (temp_v0 * 8); + var_a1 = &item_tex_data_table_779[var_a2][temp_v0]; + } + } + + if (((var_a2 == 3) || (var_a2 == 0xD)) && (arg7 != 0)) { + var_a2_2 = (uintptr_t)var_a1->pal + 0x20; + } else { + var_a2_2 = var_a1->pal; + } + + OPEN_DISPS(gfxCtx); + + gfx = POLY_OPA_DISP; + + gDPPipeSync(gfx++); + gDPSetAlphaCompare(gfx++, G_AC_THRESHOLD); + + if (arg6 != 0) { + if (var_a3 != 0) { + var_v1 = (s32)((arg7 * -0xFF) + 0x17E8) / 13; + } else { + var_v1 = 0xFF; + } + + gDPSetPrimColor(gfx++, 0, 0xFF, 255, 255, 255, var_v1); + } else { + var_v1 = 0xFF; + + gDPSetPrimColor(gfx++, 0, 0x64, 115, 160, 255, var_v1); + } + + if (arg8 != 0) { + gDPSetBlendColor(gfx++, 255, 255, 255, 40); + } else if (var_v1 == 0xFF) { + gDPSetBlendColor(gfx++, 255, 255, 255, 254); + gDPSetCombineLERP(gfx++, TEXEL0, PRIMITIVE, PRIM_LOD_FRAC, PRIMITIVE, 0, 0, 0, TEXEL0, TEXEL0, PRIMITIVE, + PRIM_LOD_FRAC, PRIMITIVE, 0, 0, 0, TEXEL0); + } else { + gDPSetBlendColor(gfx++, 255, 255, 255, 40); + gDPSetCombineLERP(gfx++, TEXEL0, PRIMITIVE, PRIM_LOD_FRAC, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, TEXEL0, + PRIMITIVE, PRIM_LOD_FRAC, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); + } + + gDPPipeSync(gfx++); + gDPSetTexturePersp(gfx++, G_TP_NONE); + gDPLoadTLUT_pal16(gfx++, 15, Lib_SegmentedToVirtual(var_a2_2)); + if (arg3) {} + gDPLoadTextureBlock_4b(gfx++, Lib_SegmentedToVirtual(var_a1->tex), G_IM_FMT_CI, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + + { + s32 ar1; + s32 ar2; + s32 ar3; + s32 ar4; + s32 ar5; + s32 ar6; + s32 ar7; + s32 ar8; + s32 ar9; + + temp = (arg1 * 0.975f); + + ar1 = (s32)(((temp + 160.0f) - 12.0f * arg3) * 4.0f); + ar2 = (s32)(((120.0f - arg2) - 12.0f * arg3) * 4.0f); + ar3 = (s32)((24.0f * arg3 + ((temp + 160.0f) - 12.0f * arg3)) * 4.0f); + ar4 = (s32)((24.0f * arg3 + ((120.0f - arg2) - 12.0f * arg3)) * 4.0f); + ar5 = 0; + ar6 = 0; + ar7 = 0; + ar8 = (s32)((1.0f / arg3) * 1365.3334f); + ar9 = (s32)((1.0f / arg3) * 1365.3334f); + + gfx = func_800BE320_jp(gfx, ar1, ar2, ar3, ar4, ar5, ar6, ar7, ar8, ar9); + } + + gDPPipeSync(gfx++); + gDPSetAlphaCompare(gfx++, G_AC_NONE); + gDPSetBlendColor(gfx++, 255, 255, 255, 8); + gDPSetTexturePersp(gfx++, G_TP_PERSP); + + POLY_OPA_DISP = gfx; + + CLOSE_DISPS(gfxCtx); +} +#else +void mSM_draw_item(GraphicsContext* gfxCtx, f32 arg1, f32 arg2, f32 arg3, u16 arg4, s32 arg5, s32 arg6, s32 arg7, + s32 arg8); +#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/submenu/submenu_ovl/m_submenu_ovl/mSM_draw_item.s") +#endif + +#ifdef NON_MATCHING +// stack issues +void mSM_draw_mail(GraphicsContext* arg0, f32 arg1, f32 arg2, f32 arg3, struct_func_8085CE18_jp_arg4* arg4, s32 arg5, + s32 arg6) { + struct_8085DCF8* temp_a1; + s32 var_t0; + UNUSED s32 pad; + Gfx* gfx; + + if (mMl_check_send_mail(arg4) != 0) { + var_t0 = 2; + } else if ((arg4->unk_26 == 4) || (arg4->unk_26 == 2)) { + var_t0 = 4; + } else { + var_t0 = 0; + } + + if (arg4->unk_24 != 0) { + var_t0 += 1; + } + + Matrix_scale(16.0f, 16.0f, 1.0f, MTXMODE_NEW); + Matrix_translate(arg1, arg2, 140.0f, MTXMODE_APPLY); + Matrix_scale(arg3, arg3, 1.0f, MTXMODE_APPLY); + + OPEN_DISPS(arg0); + + gfx = POLY_OPA_DISP; + + gDPPipeSync(gfx++); + gSPMatrix(gfx++, _Matrix_to_Mtx_new(arg0), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + temp_a1 = &letter_tex_data_table_837[var_t0]; + + gSPSegment(gfx++, 0x09, Lib_SegmentedToVirtual(temp_a1->pal)); + gSPSegment(gfx++, 0x0A, Lib_SegmentedToVirtual(temp_a1->tex)); + gDPSetAlphaCompare(gfx++, G_AC_THRESHOLD); + gDPSetBlendColor(gfx++, 255, 255, 255, 40); + + if (arg5 != 0) { + gDPSetPrimColor(gfx++, 0, 0xFF, 255, 255, 255, 255); + } else { + gDPSetPrimColor(gfx++, 0, 0x82, 255, 110, 105, 255); + } + + if (arg6 == 0) { + gDPSetCombineLERP(gfx++, TEXEL0, PRIMITIVE, PRIM_LOD_FRAC, PRIMITIVE, 0, 0, 0, TEXEL0, TEXEL0, PRIMITIVE, + PRIM_LOD_FRAC, PRIMITIVE, 0, 0, 0, TEXEL0); + } + + gSPDisplayList(gfx++, D_C012370); + gDPPipeSync(gfx++); + gDPSetAlphaCompare(gfx++, G_AC_NONE); + gDPSetBlendColor(gfx++, 255, 255, 255, 8); + + POLY_OPA_DISP = gfx; + + CLOSE_DISPS(arg0); +} +#else +void mSM_draw_mail(GraphicsContext* arg0, f32 arg1, f32 arg2, f32 arg3, struct_func_8085CE18_jp_arg4* arg4, s32 arg5, + s32 arg6); +#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/submenu/submenu_ovl/m_submenu_ovl/mSM_draw_mail.s") +#endif + +void func_8085D094_jp(Submenu* submenu) { + struct_8085E9B0_unk_10000* sp2C = &submenu->unk_2C->unk_10000; + void* vram; + s32 romStart; + + if (sp2C->unk_04) { + return; + } + + //! FAKE: needs s32 instead of unsigned type + romStart = SEGMENT_ROM_START(segment_00A58000); + + vram = sp2C->unk_00; + sp2C->unk_08 = vram; + + DmaMgr_RequestSyncDebug(vram, romStart, SEGMENT_ROM_SIZE(segment_00A58000), "../m_submenu_ovl.c", 0x7C0); + sp2C->unk_00 = (void*)ALIGN16(SEGMENT_ROM_SIZE(segment_00A58000) + (uintptr_t)vram); + + sp2C->unk_04 = 1; +} + +void mSM_ovl_prog_seg(Submenu* submenu, SubmenuProgramOverlay* programOvl) { + struct_8085E9B0_unk_10000* temp = &submenu->unk_2C->unk_10000; + UNUSED s32 pad; + void* allocatedVram; + SubmenuProgramOverlayFunc construct; + + if (programOvl->unk_1C == true) { + SubmenuProgramOverlayFunc new_var = programOvl->construct; + + new_var(submenu); + return; + } + + allocatedVram = submenu->linkedAllocEnd; + ovlmgr_Load(programOvl->vromStart, programOvl->vromEnd, programOvl->vramStart, programOvl->vramEnd, allocatedVram); + submenu->linkedAllocEnd = + (void*)((uintptr_t)allocatedVram + ALIGN64((uintptr_t)programOvl->vramEnd - (uintptr_t)programOvl->vramStart)); + + construct = (void*)((uintptr_t)allocatedVram + (uintptr_t)programOvl->construct - (uintptr_t)programOvl->vramStart); + construct(submenu); + programOvl->construct = construct; + + //! FAKE +dummy_label_595693: + programOvl->destruct = + (void*)((uintptr_t)allocatedVram + (uintptr_t)programOvl->destruct - (uintptr_t)programOvl->vramStart); + programOvl->set_proc = + (void*)((uintptr_t)allocatedVram + (uintptr_t)programOvl->set_proc - (uintptr_t)programOvl->vramStart); + + programOvl->unk_1C = true; + temp->unk_68[temp->unk_64] = programOvl; + temp->unk_64++; + + //! FAKE + if (construct) {} +} + +void mSM_set_other_seg(Submenu* submenu) { + SubmenuProgramId temp = submenu->unk_08; + u32 flag = flg_table_916[temp]; + + if (flag & PROGRAM_FLAG_2) { + func_8085D094_jp(submenu); + } + if (flag & PROGRAM_FLAG_TAG) { + mSM_ovl_prog_seg(submenu, tag_program_dlftbl); + } + if (flag & PROGRAM_FLAG_HAND) { + mSM_ovl_prog_seg(submenu, hand_program_dlftbl); + } + if (flag & PROGRAM_FLAG_HANIWA) { + mSM_ovl_prog_seg(submenu, haniwa_program_dlftbl); + } +} + +void mSM_set_before_menu_proc(Submenu* submenu) { + SubmenuProgramId programId = submenu->programId; + struct_8085E9B0_unk_10088* temp; + + mSM_program_dlftbl[programId].set_proc(submenu); + submenu->unk_08 = programId; + + //! FAKE + if (((!programId) && (!programId)) && (!programId)) {} + + temp = &submenu->unk_2C->unk_10088[programId]; + + temp->unk_14 = NULL; +} + +void mSM_set_new_seg(Submenu* submenu) { + SubmenuProgramId programId = submenu->programId; + + mSM_ovl_prog_seg(submenu, &mSM_program_dlftbl[programId]); + submenu->unk_08 = programId; +} + +void mSM_set_new_start_data(Submenu* submenu) { + SubmenuProgramId programId = submenu->programId; + struct_8085E9B0_unk_10088* temp_v1 = &submenu->unk_2C->unk_10088[programId]; + f32* temp_a1 = data_table_935[programId]; + + temp_v1->unk_00 = programId; + temp_v1->unk_18 = temp_a1[0]; + temp_v1->unk_1C = temp_a1[1]; + temp_v1->unk_20 = temp_a1[2]; + temp_v1->unk_24 = temp_a1[3]; + temp_v1->unk_38 = submenu->unk_10; + temp_v1->unk_3C = submenu->unk_14; + temp_v1->unk_40 = submenu->unk_18; + temp_v1->unk_44 = submenu->unk_1C; + + if ((programId == SUBMENU_PROGRAM_1) && (submenu->unk_10 == 0xE)) { + temp_v1->unk_18 = -300.0f; + } +} + +void func_8085D43C_jp(Submenu* submenu, void** arg1, struct_func_8085D43C_jp_arg2* arg2) { + void* temp_a0 = submenu->unk_2C->unk_10000.unk_00; + size_t size; + + *arg1 = temp_a0; + size = arg2->vromEnd - arg2->vromStart; + DmaMgr_RequestSyncDebug(temp_a0, arg2->vromStart, size, "../m_submenu_ovl.c", 2307); + submenu->unk_2C->unk_10000.unk_00 = (void*)ALIGN16((uintptr_t)size + (uintptr_t)temp_a0); +} + +void mSM_move_chg_base(struct_mSM_move_chg_base_arg0* arg0, u32 arg1) { + arg0->unk_04 = 0; + arg0->unk_34 = arg1; + if (arg1 & 1) { + arg0->unk_30 = 1; + } else { + arg0->unk_30 = 4; + } +} + +void mSM_make_trigger_data(Submenu* submenu) { + s32 var_a0 = (getButton() & 0xF) | getTrigger(); + struct_8085E9B0_unk_10670* temp_v1 = &submenu->unk_2C->unk_10670; + + if (gamePT->controller.moveR > 0.5f) { + u16 temp = gamePT->controller.moveAngle + 0x2000; + + var_a0 |= add_trigger_954[temp >> 0xE]; + } + + if (var_a0 == temp_v1->unk_20) { + if (temp_v1->unk_24 > 0) { + temp_v1->unk_24--; + var_a0 = 0; + } else { + temp_v1->unk_24 = 1; + } + } else { + temp_v1->unk_20 = var_a0; + temp_v1->unk_24 = 0xC; + } + + temp_v1->unk_1C = var_a0; +} + +#ifdef NON_MATCHING +// regalloc +void mSM_save_before_func(Submenu* submenu) { + struct_8085E9B0_unk_10088* new_var2; + SubmenuProgramId temp_a2; + struct_8085E9B0* temp_v0; + struct_8085E9B0_unk_10088* temp_v1; + + temp_v0 = submenu->unk_2C; + temp_v1 = &temp_v0->unk_10088[submenu->programId]; + + temp_a2 = submenu->unk_08; + temp_v1->unk_08 = temp_a2; + temp_v1->unk_0C = temp_v0->unk_10670.unk_00; + temp_v1->unk_10 = temp_v0->unk_10670.unk_04; + + if (submenu->programId) {} + new_var2 = &temp_v0->unk_10088[temp_v1->unk_08]; + + new_var2->unk_14 = submenu->programId; +} +#else +void mSM_save_before_func(Submenu* submenu); +#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/submenu/submenu_ovl/m_submenu_ovl/mSM_save_before_func.s") +#endif + +void mSM_set_proc(Submenu* submenu) { + mSM_save_before_func(submenu); + mSM_set_new_start_data(submenu); + mSM_set_new_seg(submenu); + mSM_set_other_seg(submenu); +} + +void mSM_tex_move(Submenu* submenu) { + struct_8085E9B0_unk_10670* temp_v0 = &submenu->unk_2C->unk_10670; + + temp_v0->unk_28 += 0.707f; + temp_v0->unk_2C += 0.707f; + + while (temp_v0->unk_28 >= 1024.0f) { + temp_v0->unk_28 -= 1024.0f; + } + + while (temp_v0->unk_2C >= 1024.0f) { + temp_v0->unk_2C -= 1024.0f; + } +} + +#ifdef NON_EQUIVALENT +void mSM_return_func(Submenu* submenu, struct_mSM_return_func_arg1* arg1) { + struct_8085E9B0_unk_10088* temp_v0; + struct_8085E9B0* temp_v1; + struct_8085E9B0_unk_10088* othertemp; + s32 temp_a2; + + temp_a2 = arg1->unk_14; + temp_v1 = submenu->unk_2C; + temp_v0 = temp_v1->unk_10088; + + if (temp_a2 != 0) { + if (((!temp_a2) && (!temp_a2)) && (!temp_a2)) {} + + othertemp = temp_v0; + + temp_v0 += temp_a2; + + temp_v0->unk_08 = arg1->unk_08; + temp_v0->unk_0C = arg1->unk_0C; + temp_v0->unk_10 = arg1->unk_10; + if (!arg1->unk_14) {} + + othertemp[temp_v0->unk_08].unk_14 = arg1->unk_14; + + arg1->unk_2C = 0; + } else { + struct_8085E9B0* temp_v1_2; + struct_8085E9B0_unk_10000* temp; + + temp_v1_2 = submenu->unk_2C; + temp = &temp_v1_2->unk_10000; + submenu->programId = arg1->unk_08; + if (submenu->programId == SUBMENU_PROGRAM_0) { + while (temp_v1_2->unk_10000.unk_64 != 0) { + temp->unk_64--; + temp->unk_68[temp->unk_64]->destruct(submenu); + } + + submenu->moveProcIndex = MSM_MOVE_PROC_END; + submenu->move = (void*)none_proc1; + submenu->unk_08 = arg1->unk_08; + submenu->unk_2C->unk_10670.unk_00 = (void*)none_proc1; + submenu->unk_2C->unk_10670.unk_04 = (void*)none_proc1; + } else { + mSM_set_before_menu_proc(submenu); + } + arg1->unk_2C = 0; + } + + arg1->unk_08 = SUBMENU_PROGRAM_0; + arg1->unk_14 = 0; + arg1->unk_04 = 0; + arg1->unk_30 = 0; +} +#else +void mSM_return_func(Submenu* submenu, struct_mSM_return_func_arg1* arg1); +#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/submenu/submenu_ovl/m_submenu_ovl/mSM_return_func.s") +#endif + +s32 mSM_move_menu(f32* arg0, f32* arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5) { + if (((*arg0 - arg3) * arg5) >= 0.0f) { + *arg1 *= arg2; + if (*arg1 < 1.0f) { + *arg1 = 1.0f; + } else if (*arg1 > 75.0f) { + *arg1 = 75.0f; + } + } + + *arg0 += *arg1 * arg5; + if (((*arg0 - arg4) * arg5) > 0.0f) { + *arg0 = arg4; + return 1; + } + + return 0; +} + +void mSM_move_Move(UNUSED Submenu* submenu, struct_mSM_move_Move_arg1* arg1) { + f32 var_fv0; + s32 temp_t0 = arg1->unk_34; + f32* temp_v0 = move_data_1027[temp_t0 & 1]; + s32 index; + s32 new_var; + + if (temp_t0 & 2) { + var_fv0 = -1.0f; + } else { + var_fv0 = 1.0f; + } + + index = temp_t0 >> 2; + + if (mSM_move_menu(&arg1->unk_18[index], &arg1->unk_20[index], temp_v0[0], temp_v0[1] * var_fv0, + temp_v0[2] * var_fv0, temp_v0[3] * var_fv0) == 1) { + arg1->unk_04 = arg1->unk_30; + } + + // truncate + new_var = arg1->unk_18[index]; + arg1->unk_18[index] = new_var; +} + +/** + * Original name: mSM_move_End + */ +void mSM_ovl_move_End(Submenu* submenu, struct_mSM_return_func_arg1* arg1) { + mSM_return_func(submenu, arg1); +} + +void mSM_menu_ovl_move(Submenu* submenu) { + struct_8085E9B0_unk_10670* sp24 = &submenu->unk_2C->unk_10670; + + mSM_make_trigger_data(submenu); + if (submenu->programId != submenu->unk_08) { + mSM_set_proc(submenu); + } + mSM_tex_move(submenu); + sp24->unk_00(submenu); +} + +void mSM_menu_ovl_draw(Submenu* submenu, Game_Play* game_play) { + mSM_setup_view(submenu, game_play->state.gfxCtx, 1); + submenu->unk_2C->unk_10670.unk_04(submenu, game_play); +} + +void mSM_menu_ovl_init(Submenu* submenu) { + Game_Play_unk_0110* var_v1; + void* func = none_proc1; + u16 temp = 0x2000; + + submenu->unk_2C = &ovl_base; + bzero(&ovl_base, sizeof(struct_8085E9B0)); + +//! FAKE +label: + if (submenu->unk_00 != 4) { + var_v1 = &((Game_Play*)gamePT)->unk_0110; + } else { + var_v1 = &((Game__00743CD0*)gamePT)->unk_02FC; + } + + ovl_base.unk_10000.unk_00 = var_v1->unk_1818; + submenu->unk_08 = SUBMENU_PROGRAM_0; + ovl_base.unk_10670.unk_00 = func; + ovl_base.unk_10670.unk_04 = func; + ovl_base.unk_10670.unk_08 = func; + ovl_base.unk_10670.unk_0C = func; + ovl_base.unk_10670.unk_10 = func; + ovl_base.unk_10670.unk_14 = func; + ovl_base.unk_10670.unk_26 = temp; + + submenu->unk_2C->returnFunc = mSM_return_func; + submenu->unk_2C->moveMove = mSM_move_Move; + submenu->unk_2C->moveEnd = mSM_ovl_move_End; + submenu->unk_2C->moveChgBase = mSM_move_chg_base; + submenu->unk_2C->setCharMatrix = mSM_set_char_matrix; + submenu->unk_2C->cbufCopy = mSM_cbuf_copy; + submenu->unk_2C->setDrawMode = mSM_set_drawMode; + submenu->unk_2C->drawItem = mSM_draw_item; + submenu->unk_2C->drawMail = mSM_draw_mail; + submenu->unk_2C->setupView = mSM_setup_view; + submenu->unk_2C->unk_106CC = func_8085D43C_jp; + + mSM_set_proc(submenu); + submenu->move = mSM_menu_ovl_move; + submenu->draw = mSM_menu_ovl_draw; + mSM_menu_ovl_move(submenu); +} diff --git a/src/overlays/submenu/submenu_ovl/m_submenu_ovl.h b/src/overlays/submenu/submenu_ovl/m_submenu_ovl.h index 63364e9f..e02a5290 100644 --- a/src/overlays/submenu/submenu_ovl/m_submenu_ovl.h +++ b/src/overlays/submenu/submenu_ovl/m_submenu_ovl.h @@ -1,8 +1,162 @@ #ifndef M_SUBMENU_OVL #define M_SUBMENU_OVL -struct mSM; +#include "ultra64.h" +#include "other_types.h" +#include "unk.h" -void mSM_menu_ovl_init(struct mSM* arg0); +struct GraphicsContext; +struct Game_Play; +struct Submenu; +struct PreRender; + +// TODO: Consider merging this two typedefs into one +typedef void (*SubmenuProgramOverlayFunc)(struct Submenu*); + +typedef void (*struct_8085E9B0_unk_10670_unk_00)(struct Submenu*); +typedef void (*struct_8085E9B0_unk_10670_unk_04)(struct Submenu*, struct Game_Play*); + +typedef struct SubmenuProgramOverlay { + /* 0x00 */ RomOffset vromStart; + /* 0x00 */ RomOffset vromEnd; + /* 0x08 */ void* vramStart; + /* 0x0C */ void* vramEnd; + /* 0x10 */ SubmenuProgramOverlayFunc construct; // name based on original function names + /* 0x14 */ SubmenuProgramOverlayFunc destruct; // name based on original function names + /* 0x18 */ SubmenuProgramOverlayFunc set_proc; // name based on original function names + /* 0x1C */ s32 unk_1C; +} SubmenuProgramOverlay; // size = 0x20 + +typedef struct struct_mSM_return_func_arg1 { + /* 0x00 */ UNK_TYPE1 unk_00[0x4]; + /* 0x04 */ UNK_TYPE unk_04; + /* 0x08 */ UNK_TYPE unk_08; + /* 0x0C */ struct_8085E9B0_unk_10670_unk_00 unk_0C; + /* 0x10 */ struct_8085E9B0_unk_10670_unk_04 unk_10; + /* 0x14 */ UNK_TYPE unk_14; + /* 0x18 */ UNK_TYPE1 unk_18[0x14]; + /* 0x2C */ UNK_TYPE unk_2C; + /* 0x30 */ UNK_TYPE unk_30; +} struct_mSM_return_func_arg1; // size >= 0x34 + +typedef struct struct_func_8085C20C_jp_arg1 { + /* 0x00 */ UNK_TYPE1 unk_00[0x4]; + /* 0x04 */ u16 unk_04; + /* 0x06 */ u16 unk_06; + /* 0x08 */ UNK_TYPE1 unk_08[0xC]; + /* 0x14 */ TexturePtr unk_14; + /* 0x18 */ UNK_TYPE1 unk_18[0x8]; + /* 0x20 */ TexturePtr unk_20; +} struct_func_8085C20C_jp_arg1; // size >= 0x24 + +typedef struct struct_func_8085CE18_jp_arg4 { + /* 0x00 */ UNK_TYPE1 unk_00[0x24]; + /* 0x24 */ u16 unk_24; + /* 0x26 */ u8 unk_26; +} struct_func_8085CE18_jp_arg4; // size >= 0x28 + +typedef struct struct_mSM_move_Move_arg1 { + /* 0x00 */ UNK_TYPE1 unk_00[0x4]; + /* 0x04 */ s32 unk_04; + /* 0x08 */ UNK_TYPE1 unk_08[0x10]; + /* 0x18 */ f32 unk_18[2]; + /* 0x20 */ f32 unk_20[2]; + /* 0x28 */ UNK_TYPE1 unk_28[0x8]; + /* 0x30 */ UNK_TYPE4 unk_30; + /* 0x34 */ UNK_TYPE4 unk_34; +} struct_mSM_move_Move_arg1; // size >= 0x38 + +typedef struct struct_mSM_move_chg_base_arg0 { + /* 0x00 */ UNK_TYPE1 unk_00[0x4]; + /* 0x04 */ UNK_TYPE4 unk_04; + /* 0x08 */ UNK_TYPE1 unk_08[0x28]; + /* 0x04 */ UNK_TYPE4 unk_30; + /* 0x04 */ u32 unk_34; +} struct_mSM_move_chg_base_arg0; + +typedef struct struct_func_8085D43C_jp_arg2 { + /* 0x0 */ RomOffset vromStart; + /* 0x4 */ RomOffset vromEnd; +} struct_func_8085D43C_jp_arg2; // size = 0x8 + +typedef struct struct_8085E9B0_unk_10000 { + /* 0x10000 */ void* unk_00; + /* 0x10004 */ s32 unk_04; + /* 0x10008 */ void* unk_08; + /* 0x1000C */ UNK_TYPE1 unk_0C[0x58]; + /* 0x10064 */ UNK_TYPE4 unk_64; + /* 0x10068 */ SubmenuProgramOverlay* unk_68[UNK_SIZE]; +} struct_8085E9B0_unk_10000; // size >= 0x6C + +typedef struct struct_8085E9B0_unk_10088 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ UNK_TYPE1 unk_04[0x4]; + /* 0x08 */ UNK_TYPE4 unk_08; + /* 0x0C */ struct_8085E9B0_unk_10670_unk_00 unk_0C; + /* 0x10 */ struct_8085E9B0_unk_10670_unk_04 unk_10; + /* 0x14 */ UNK_TYPE4 unk_14; + /* 0x18 */ f32 unk_18; + /* 0x1C */ f32 unk_1C; + /* 0x20 */ f32 unk_20; + /* 0x24 */ f32 unk_24; + /* 0x28 */ UNK_TYPE1 unk_28[0x10]; + /* 0x38 */ UNK_TYPE4 unk_38; + /* 0x3C */ UNK_TYPE4 unk_3C; + /* 0x40 */ UNK_TYPE4 unk_40; + /* 0x44 */ UNK_TYPE4 unk_44; +} struct_8085E9B0_unk_10088; // size = 0x48 + +typedef struct struct_8085E9B0_unk_10670 { + /* 0x00 */ struct_8085E9B0_unk_10670_unk_00 unk_00; + /* 0x04 */ struct_8085E9B0_unk_10670_unk_04 unk_04; + /* 0x08 */ UNK_FUN_PTR unk_08; + /* 0x0C */ UNK_FUN_PTR unk_0C; + /* 0x10 */ UNK_FUN_PTR unk_10; + /* 0x14 */ UNK_FUN_PTR unk_14; + /* 0x18 */ UNK_TYPE1 unk_18[0x4]; + /* 0x1C */ UNK_TYPE4 unk_1C; + /* 0x20 */ UNK_TYPE4 unk_20; + /* 0x24 */ s16 unk_24; + /* 0x26 */ u16 unk_26; + /* 0x28 */ f32 unk_28; + /* 0x2C */ f32 unk_2C; +} struct_8085E9B0_unk_10670; // size >= 0x30 + +typedef void (*struct_8085E9B0_unk_106A4)(struct Submenu*, struct_mSM_return_func_arg1*); +typedef void (*struct_8085E9B0_unk_106A8)(struct Submenu*, struct_mSM_move_Move_arg1*); +typedef void (*struct_8085E9B0_unk_106AC)(struct Submenu*, struct_mSM_return_func_arg1*); +typedef void (*struct_8085E9B0_unk_106B0)(struct_mSM_move_chg_base_arg0*, u32); +typedef void (*struct_8085E9B0_unk_106B4)(struct GraphicsContext*); +typedef void (*struct_8085E9B0_unk_106B8)(struct GraphicsContext*, struct PreRender*, s32, s32, s32); +typedef void (*struct_8085E9B0_unk_106BC)(struct GraphicsContext*, struct struct_func_8085C20C_jp_arg1*, f32, f32, s16); +typedef void (*struct_8085E9B0_unk_106C0)(struct GraphicsContext*, f32, f32, f32, u16, s32, s32, s32, s32); +typedef void (*struct_8085E9B0_unk_106C4)(struct GraphicsContext*, f32, f32, f32, struct_func_8085CE18_jp_arg4*, s32, s32); +typedef void (*struct_8085E9B0_unk_106C8)(struct Submenu*, struct GraphicsContext*, s32); +typedef void (*struct_8085E9B0_unk_106CC)(struct Submenu*, void**, struct_func_8085D43C_jp_arg2*); + +typedef struct struct_8085E9B0 { + /* 0x00000 */ UNK_TYPE1 unk_00000[0x10000]; + /* 0x10000 */ struct_8085E9B0_unk_10000 unk_10000; + /* 0x1006C */ UNK_TYPE1 unk_1006C[0x1C]; + /* 0x10088 */ struct_8085E9B0_unk_10088 unk_10088[UNK_SIZE]; + /* 0x100D0 */ UNK_TYPE1 unk_100D0[0x5A0]; + /* 0x10670 */ struct_8085E9B0_unk_10670 unk_10670; + /* 0x106A0 */ UNK_TYPE1 unk_106A0[0x4]; + /* 0x106A4 */ struct_8085E9B0_unk_106A4 returnFunc; + /* 0x106A8 */ struct_8085E9B0_unk_106A8 moveMove; + /* 0x106AC */ struct_8085E9B0_unk_106AC moveEnd; + /* 0x106B0 */ struct_8085E9B0_unk_106B0 moveChgBase; + /* 0x106B4 */ struct_8085E9B0_unk_106B4 setCharMatrix; + /* 0x106B8 */ struct_8085E9B0_unk_106B8 cbufCopy; + /* 0x106BC */ struct_8085E9B0_unk_106BC setDrawMode; + /* 0x106C0 */ struct_8085E9B0_unk_106C0 drawItem; + /* 0x106C4 */ struct_8085E9B0_unk_106C4 drawMail; + /* 0x106C8 */ struct_8085E9B0_unk_106C8 setupView; + /* 0x106CC */ struct_8085E9B0_unk_106CC unk_106CC; + /* 0x106D0 */ UNK_TYPE1 unk_106D0[0x5C]; + /* 0x1072C */ Mtx* unk_1072C; +} struct_8085E9B0; // size = 0x10730 + +void mSM_menu_ovl_init(struct Submenu* submenu); #endif diff --git a/src/overlays/submenu/tag_ovl/m_tag_ovl.h b/src/overlays/submenu/tag_ovl/m_tag_ovl.h new file mode 100644 index 00000000..7c6ce539 --- /dev/null +++ b/src/overlays/submenu/tag_ovl/m_tag_ovl.h @@ -0,0 +1,12 @@ +#ifndef tag_ovl_H +#define tag_ovl_H + +#include "ultra64.h" +#include "unk.h" + +struct Submenu; + +void mTG_tag_ovl_construct(struct Submenu* submenu); +void mTG_tag_ovl_destruct(struct Submenu* submenu); + +#endif diff --git a/yamls/jp/overlays.yaml b/yamls/jp/overlays.yaml index c6f0c717..3828e173 100644 --- a/yamls/jp/overlays.yaml +++ b/yamls/jp/overlays.yaml @@ -201,10 +201,10 @@ compress: True bss_size: 0x10730 subsegments: - - [0x7749C0, asm, overlays/submenu/submenu_ovl/m_submenu_ovl] - - [0x776BD0, data, overlays/submenu/submenu_ovl/m_submenu_ovl] - - [0x777870, rodata, overlays/submenu/submenu_ovl/m_submenu_ovl] - - { start: 0x7778B0, type: bss, vram: 0x8085E9B0, name: overlays/submenu/submenu_ovl/m_submenu_ovl } + - [0x7749C0, c, overlays/submenu/submenu_ovl/m_submenu_ovl] + - [0x776BD0, .data, overlays/submenu/submenu_ovl/m_submenu_ovl] + - [0x777870, .rodata, overlays/submenu/submenu_ovl/m_submenu_ovl] + - { start: 0x7778B0, type: .bss, vram: 0x8085E9B0, name: overlays/submenu/submenu_ovl/m_submenu_ovl } - name: ovl_submenu_reloc type: code start: 0x7778B0 @@ -212,9 +212,9 @@ follows_vram: submenu_ovl compress: True subsegments: - - [0x7778B0, data, overlays/submenu/submenu_ovl/m_submenu_ovlreloc] + - [0x7778B0, data, overlays/submenu/submenu_ovl/m_submenu_ovl_reloc] - - name: ovl__00777AE0 + - name: tag_ovl type: code start: 0x777AE0 vram: 0x8086F310 @@ -222,93 +222,93 @@ compress: True bss_size: 0x120 subsegments: - - [0x777AE0, asm, overlays/other_ovl/ovl__00777AE0/ovl__00777AE0] - - [0x7810F0, data, overlays/other_ovl/ovl__00777AE0/ovl__00777AE0] - - [0x781CC0, rodata, overlays/other_ovl/ovl__00777AE0/ovl__00777AE0] - - { start: 0x781D60, type: bss, vram: 0x80879590, name: overlays/other_ovl/ovl__00777AE0/ovl__00777AE0 } - - name: ovl__00777AE0_reloc + - [0x777AE0, asm, overlays/submenu/tag_ovl/m_tag_ovl] + - [0x7810F0, data, overlays/submenu/tag_ovl/m_tag_ovl] + - [0x781CC0, rodata, overlays/submenu/tag_ovl/m_tag_ovl] + - { start: 0x781D60, type: bss, vram: 0x80879590, name: overlays/submenu/tag_ovl/m_tag_ovl } + - name: tag_ovl_reloc type: code start: 0x781D60 vram: 0x808796B0 - follows_vram: ovl__00777AE0 + follows_vram: tag_ovl compress: True subsegments: - - [0x781D60, data, overlays/other_ovl/ovl__00777AE0/ovl__00777AE0_reloc] + - [0x781D60, data, overlays/submenu/tag_ovl/m_tag_ovl_reloc] - - name: ovl__007829E0 + - name: hand_ovl type: code start: 0x7829E0 vram: 0x8087A330 - follows_vram: ovl__00777AE0_reloc + follows_vram: tag_ovl_reloc compress: True bss_size: 0x300 subsegments: - - [0x7829E0, asm, overlays/other_ovl/ovl__007829E0/ovl__007829E0] - - [0x784C80, data, overlays/other_ovl/ovl__007829E0/ovl__007829E0] - - [0x784D90, rodata, overlays/other_ovl/ovl__007829E0/ovl__007829E0] - - { start: 0x784DE0, type: bss, vram: 0x8087C730, name: overlays/other_ovl/ovl__007829E0/ovl__007829E0 } - - name: ovl__007829E0_reloc + - [0x7829E0, asm, overlays/submenu/hand_ovl/m_hand_ovl] + - [0x784C80, data, overlays/submenu/hand_ovl/m_hand_ovl] + - [0x784D90, rodata, overlays/submenu/hand_ovl/m_hand_ovl] + - { start: 0x784DE0, type: bss, vram: 0x8087C730, name: overlays/submenu/hand_ovl/m_hand_ovl } + - name: hand_ovl_reloc type: code start: 0x784DE0 vram: 0x8087CA30 - follows_vram: ovl__007829E0 + follows_vram: hand_ovl compress: True subsegments: - - [0x784DE0, data, overlays/other_ovl/ovl__007829E0/ovl__007829E0_reloc] + - [0x784DE0, data, overlays/submenu/hand_ovl/m_hand_ovl_reloc] - - name: ovl__00784FC0 + - name: haniwaPortrait_ovl type: code start: 0x784FC0 vram: 0x8087CC10 - follows_vram: ovl__007829E0_reloc + follows_vram: hand_ovl_reloc compress: True bss_size: 0x130 subsegments: - - [0x784FC0, asm, overlays/other_ovl/ovl__00784FC0/ovl__00784FC0] - - [0x785670, data, overlays/other_ovl/ovl__00784FC0/ovl__00784FC0] - - [0x785680, rodata, overlays/other_ovl/ovl__00784FC0/ovl__00784FC0] - - { start: 0x785690, type: bss, vram: 0x8087D2E0, name: overlays/other_ovl/ovl__00784FC0/ovl__00784FC0 } - - name: ovl__00784FC0_reloc + - [0x784FC0, asm, overlays/submenu/haniwaPortrait_ovl/m_haniwaPortrait_ovl] + - [0x785670, data, overlays/submenu/haniwaPortrait_ovl/m_haniwaPortrait_ovl] + - [0x785680, rodata, overlays/submenu/haniwaPortrait_ovl/m_haniwaPortrait_ovl] + - { start: 0x785690, type: bss, vram: 0x8087D2E0, name: overlays/submenu/haniwaPortrait_ovl/m_haniwaPortrait_ovl } + - name: haniwaPortrait_ovl_reloc type: code start: 0x785690 vram: 0x8087D410 - follows_vram: ovl__00784FC0 + follows_vram: haniwaPortrait_ovl compress: True subsegments: - - [0x785690, data, overlays/other_ovl/ovl__00784FC0/ovl__00784FC0_reloc] + - [0x785690, data, overlays/submenu/haniwaPortrait_ovl/m_haniwaPortrait_ovl_reloc] - - name: ovl__00785700 + - name: inventory_ovl type: code start: 0x785700 vram: 0x8087D480 - follows_vram: ovl__00784FC0_reloc + follows_vram: haniwaPortrait_ovl_reloc compress: True bss_size: 0x5E0 subsegments: - - [0x785700, asm, overlays/other_ovl/ovl__00785700/ovl__00785700] - - [0x789430, data, overlays/other_ovl/ovl__00785700/ovl__00785700] - - [0x789820, rodata, overlays/other_ovl/ovl__00785700/ovl__00785700] - - { start: 0x7898C0, type: bss, vram: 0x80881640, name: overlays/other_ovl/ovl__00785700/ovl__00785700 } - - name: ovl__00785700_reloc + - [0x785700, asm, overlays/submenu/inventory_ovl/m_inventory_ovl] + - [0x789430, data, overlays/submenu/inventory_ovl/m_inventory_ovl] + - [0x789820, rodata, overlays/submenu/inventory_ovl/m_inventory_ovl] + - { start: 0x7898C0, type: bss, vram: 0x80881640, name: overlays/other_ovl/inventory_ovl/m_inventory_ovl } + - name: inventory_ovl_reloc type: code start: 0x7898C0 vram: 0x80881C20 - follows_vram: ovl__00785700 + follows_vram: inventory_ovl compress: True subsegments: - - [0x7898C0, data, overlays/other_ovl/ovl__00785700/ovl__00785700_reloc] + - [0x7898C0, data, overlays/submenu/inventory_ovl/m_inventory_ovl_reloc] - name: ovl__00789B60 type: code start: 0x789B60 vram: 0x80881EC0 - follows_vram: ovl__00785700_reloc + follows_vram: inventory_ovl_reloc compress: True bss_size: 0x10 subsegments: - - [0x789B60, asm, overlays/other_ovl/ovl__00789B60/ovl__00789B60] - - [0x78A4D0, data, overlays/other_ovl/ovl__00789B60/ovl__00789B60] - - { start: 0x78A4F0, type: bss, vram: 0x80882850, name: overlays/other_ovl/ovl__00789B60/ovl__00789B60 } + - [0x789B60, asm, overlays/submenu/ovl__00789B60/ovl__00789B60] + - [0x78A4D0, data, overlays/submenu/ovl__00789B60/ovl__00789B60] + - { start: 0x78A4F0, type: bss, vram: 0x80882850, name: overlays/submenu/ovl__00789B60/ovl__00789B60 } - name: ovl__00789B60_reloc type: code start: 0x78A4F0 @@ -316,7 +316,7 @@ follows_vram: ovl__00789B60 compress: True subsegments: - - [0x78A4F0, data, overlays/other_ovl/ovl__00789B60/ovl__00789B60_reloc] + - [0x78A4F0, data, overlays/submenu/ovl__00789B60/ovl__00789B60_reloc] - name: ovl__0078A560 type: code @@ -326,9 +326,9 @@ compress: True bss_size: 0x0 subsegments: - - [0x78A560, asm, overlays/other_ovl/ovl__0078A560/ovl__0078A560] - - [0x78AD90, data, overlays/other_ovl/ovl__0078A560/ovl__0078A560] - - [0x78ADB0, rodata, overlays/other_ovl/ovl__0078A560/ovl__0078A560] + - [0x78A560, asm, overlays/submenu/ovl__0078A560/ovl__0078A560] + - [0x78AD90, data, overlays/submenu/ovl__0078A560/ovl__0078A560] + - [0x78ADB0, rodata, overlays/submenu/ovl__0078A560/ovl__0078A560] - name: ovl__0078A560_reloc type: code start: 0x78ADC0 @@ -336,7 +336,7 @@ follows_vram: ovl__0078A560 compress: True subsegments: - - [0x78ADC0, data, overlays/other_ovl/ovl__0078A560/ovl__0078A560_reloc] + - [0x78ADC0, data, overlays/submenu/ovl__0078A560/ovl__0078A560_reloc] - name: ovl__0078AE30 type: code @@ -346,9 +346,9 @@ compress: True bss_size: 0x20 subsegments: - - [0x78AE30, asm, overlays/other_ovl/ovl__0078AE30/ovl__0078AE30] - - [0x78BE50, data, overlays/other_ovl/ovl__0078AE30/ovl__0078AE30] - - { start: 0x78BEE0, type: bss, vram: 0x80884250, name: overlays/other_ovl/ovl__0078AE30/ovl__0078AE30 } + - [0x78AE30, asm, overlays/submenu/ovl__0078AE30/ovl__0078AE30] + - [0x78BE50, data, overlays/submenu/ovl__0078AE30/ovl__0078AE30] + - { start: 0x78BEE0, type: bss, vram: 0x80884250, name: overlays/submenu/ovl__0078AE30/ovl__0078AE30 } - name: ovl__0078AE30_reloc type: code start: 0x78BEE0 @@ -356,9 +356,9 @@ follows_vram: ovl__0078AE30 compress: True subsegments: - - [0x78BEE0, data, overlays/other_ovl/ovl__0078AE30/ovl__0078AE30_reloc] + - [0x78BEE0, data, overlays/submenu/ovl__0078AE30/ovl__0078AE30_reloc] - - name: ovl__0078BFB0 + - name: ledit_ovl type: code start: 0x78BFB0 vram: 0x80884340 @@ -366,31 +366,31 @@ compress: True bss_size: 0x230 subsegments: - - [0x78BFB0, asm, overlays/other_ovl/ovl__0078BFB0/ovl__0078BFB0] - - [0x78C990, data, overlays/other_ovl/ovl__0078BFB0/ovl__0078BFB0] - - [0x78CAB0, rodata, overlays/other_ovl/ovl__0078BFB0/ovl__0078BFB0] - - { start: 0x78CAD0, type: bss, vram: 0x80884E60, name: overlays/other_ovl/ovl__0078BFB0/ovl__0078BFB0 } - - name: ovl__0078BFB0_reloc + - [0x78BFB0, asm, overlays/submenu/ledit_ovl/m_ledit_ovl] + - [0x78C990, data, overlays/submenu/ledit_ovl/m_ledit_ovl] + - [0x78CAB0, rodata, overlays/submenu/ledit_ovl/m_ledit_ovl] + - { start: 0x78CAD0, type: bss, vram: 0x80884E60, name: overlays/submenu/ledit_ovl/m_ledit_ovl } + - name: ledit_ovl_reloc type: code start: 0x78CAD0 vram: 0x80885090 - follows_vram: ovl__0078BFB0 + follows_vram: ledit_ovl compress: True subsegments: - - [0x78CAD0, data, overlays/other_ovl/ovl__0078BFB0/ovl__0078BFB0_reloc] + - [0x78CAD0, data, overlays/submenu/ledit_ovl/m_ledit_ovl_reloc] - name: ovl__0078CB80 type: code start: 0x78CB80 vram: 0x80885140 - follows_vram: ovl__0078BFB0_reloc + follows_vram: ledit_ovl_reloc compress: True bss_size: 0x30 subsegments: - - [0x78CB80, asm, overlays/other_ovl/ovl__0078CB80/ovl__0078CB80] - - [0x78FF40, data, overlays/other_ovl/ovl__0078CB80/ovl__0078CB80] - - [0x7904E0, rodata, overlays/other_ovl/ovl__0078CB80/ovl__0078CB80] - - { start: 0x790530, type: bss, vram: 0x80888AF0, name: overlays/other_ovl/ovl__0078CB80/ovl__0078CB80 } + - [0x78CB80, asm, overlays/submenu/ovl__0078CB80/ovl__0078CB80] + - [0x78FF40, data, overlays/submenu/ovl__0078CB80/ovl__0078CB80] + - [0x7904E0, rodata, overlays/submenu/ovl__0078CB80/ovl__0078CB80] + - { start: 0x790530, type: bss, vram: 0x80888AF0, name: overlays/submenu/ovl__0078CB80/ovl__0078CB80 } - name: ovl__0078CB80_reloc type: code start: 0x790530 @@ -398,9 +398,9 @@ follows_vram: ovl__0078CB80 compress: True subsegments: - - [0x790530, data, overlays/other_ovl/ovl__0078CB80/ovl__0078CB80_reloc] + - [0x790530, data, overlays/submenu/ovl__0078CB80/ovl__0078CB80_reloc] - - name: ovl__007908A0 + - name: board_ovl type: code start: 0x7908A0 vram: 0x80888E90 @@ -408,31 +408,31 @@ compress: True bss_size: 0xC0 subsegments: - - [0x7908A0, asm, overlays/other_ovl/ovl__007908A0/ovl__007908A0] - - [0x7921B0, data, overlays/other_ovl/ovl__007908A0/ovl__007908A0] - - [0x7925E0, rodata, overlays/other_ovl/ovl__007908A0/ovl__007908A0] - - { start: 0x792610, type: bss, vram: 0x8088AC00, name: overlays/other_ovl/ovl__007908A0/ovl__007908A0 } - - name: ovl__007908A0_reloc + - [0x7908A0, asm, overlays/submenu/board_ovl/m_board_ovl] + - [0x7921B0, data, overlays/submenu/board_ovl/m_board_ovl] + - [0x7925E0, rodata, overlays/submenu/board_ovl/m_board_ovl] + - { start: 0x792610, type: bss, vram: 0x8088AC00, name: overlays/submenu/board_ovl/m_board_ovl } + - name: board_ovl_reloc type: code start: 0x792610 vram: 0x8088ACC0 - follows_vram: ovl__007908A0 + follows_vram: board_ovl compress: True subsegments: - - [0x792610, data, overlays/other_ovl/ovl__007908A0/ovl__007908A0_reloc] + - [0x792610, data, overlays/submenu/board_ovl/m_board_ovl_reloc] - name: ovl__00792700 type: code start: 0x792700 vram: 0x8088ADB0 - follows_vram: ovl__007908A0_reloc + follows_vram: board_ovl_reloc compress: True bss_size: 0x1A0 subsegments: - - [0x792700, asm, overlays/other_ovl/ovl__00792700/ovl__00792700] - - [0x793EB0, data, overlays/other_ovl/ovl__00792700/ovl__00792700] - - [0x794230, rodata, overlays/other_ovl/ovl__00792700/ovl__00792700] - - { start: 0x794240, type: bss, vram: 0x8088C8F0, name: overlays/other_ovl/ovl__00792700/ovl__00792700 } + - [0x792700, asm, overlays/submenu/ovl__00792700/ovl__00792700] + - [0x793EB0, data, overlays/submenu/ovl__00792700/ovl__00792700] + - [0x794230, rodata, overlays/submenu/ovl__00792700/ovl__00792700] + - { start: 0x794240, type: bss, vram: 0x8088C8F0, name: overlays/submenu/ovl__00792700/ovl__00792700 } - name: ovl__00792700_reloc type: code start: 0x794240 @@ -440,7 +440,7 @@ follows_vram: ovl__00792700 compress: True subsegments: - - [0x794240, data, overlays/other_ovl/ovl__00792700/ovl__00792700_reloc] + - [0x794240, data, overlays/submenu/ovl__00792700/ovl__00792700_reloc] - name: ovl__00794380 type: code @@ -450,9 +450,9 @@ compress: True bss_size: 0x30 subsegments: - - [0x794380, asm, overlays/other_ovl/ovl__00794380/ovl__00794380] - - [0x7951A0, data, overlays/other_ovl/ovl__00794380/ovl__00794380] - - { start: 0x795290, type: bss, vram: 0x8088DAE0, name: overlays/other_ovl/ovl__00794380/ovl__00794380 } + - [0x794380, asm, overlays/submenu/ovl__00794380/ovl__00794380] + - [0x7951A0, data, overlays/submenu/ovl__00794380/ovl__00794380] + - { start: 0x795290, type: bss, vram: 0x8088DAE0, name: overlays/submenu/ovl__00794380/ovl__00794380 } - name: ovl__00794380_reloc type: code start: 0x795290 @@ -460,9 +460,9 @@ follows_vram: ovl__00794380 compress: True subsegments: - - [0x795290, data, overlays/other_ovl/ovl__00794380/ovl__00794380_reloc] + - [0x795290, data, overlays/submenu/ovl__00794380/ovl__00794380_reloc] - - name: ovl__00795350 + - name: map_ovl type: code start: 0x795350 vram: 0x8088DBD0 @@ -470,31 +470,31 @@ compress: True bss_size: 0x3F80 subsegments: - - [0x795350, asm, overlays/other_ovl/ovl__00795350/ovl__00795350] - - [0x797460, data, overlays/other_ovl/ovl__00795350/ovl__00795350] - - [0x797840, rodata, overlays/other_ovl/ovl__00795350/ovl__00795350] - - { start: 0x797870, type: bss, vram: 0x808900F0, name: overlays/other_ovl/ovl__00795350/ovl__00795350 } - - name: ovl__00795350_reloc + - [0x795350, asm, overlays/submenu/map_ovl/m_map_ovl] + - [0x797460, data, overlays/submenu/map_ovl/m_map_ovl] + - [0x797840, rodata, overlays/submenu/map_ovl/m_map_ovl] + - { start: 0x797870, type: bss, vram: 0x808900F0, name: overlays/submenu/map_ovl/m_map_ovl } + - name: map_ovl_reloc type: code start: 0x797870 vram: 0x80894070 - follows_vram: ovl__00795350 + follows_vram: map_ovl compress: True subsegments: - - [0x797870, data, overlays/other_ovl/ovl__00795350/ovl__00795350_reloc] + - [0x797870, data, overlays/submenu/map_ovl/m_map_ovl_reloc] - name: ovl__00797A50 type: code start: 0x797A50 vram: 0x80894250 - follows_vram: ovl__00795350_reloc + follows_vram: map_ovl_reloc compress: True bss_size: 0x80 subsegments: - - [0x797A50, asm, overlays/other_ovl/ovl__00797A50/ovl__00797A50] - - [0x7993C0, data, overlays/other_ovl/ovl__00797A50/ovl__00797A50] - - [0x799430, rodata, overlays/other_ovl/ovl__00797A50/ovl__00797A50] - - { start: 0x799450, type: bss, vram: 0x80895C50, name: overlays/other_ovl/ovl__00797A50/ovl__00797A50 } + - [0x797A50, asm, overlays/submenu/ovl__00797A50/ovl__00797A50] + - [0x7993C0, data, overlays/submenu/ovl__00797A50/ovl__00797A50] + - [0x799430, rodata, overlays/submenu/ovl__00797A50/ovl__00797A50] + - { start: 0x799450, type: bss, vram: 0x80895C50, name: overlays/submenu/ovl__00797A50/ovl__00797A50 } - name: ovl__00797A50_reloc type: code start: 0x799450 @@ -502,7 +502,7 @@ follows_vram: ovl__00797A50 compress: True subsegments: - - [0x799450, data, overlays/other_ovl/ovl__00797A50/ovl__00797A50_reloc] + - [0x799450, data, overlays/submenu/ovl__00797A50/ovl__00797A50_reloc] - name: ovl__00799580 type: code @@ -512,10 +512,10 @@ compress: True bss_size: 0x10 subsegments: - - [0x799580, asm, overlays/other_ovl/ovl__00799580/ovl__00799580] - - [0x79A0D0, data, overlays/other_ovl/ovl__00799580/ovl__00799580] - - [0x79A1D0, rodata, overlays/other_ovl/ovl__00799580/ovl__00799580] - - { start: 0x79A1E0, type: bss, vram: 0x80896A60, name: overlays/other_ovl/ovl__00799580/ovl__00799580 } + - [0x799580, asm, overlays/submenu/ovl__00799580/ovl__00799580] + - [0x79A0D0, data, overlays/submenu/ovl__00799580/ovl__00799580] + - [0x79A1D0, rodata, overlays/submenu/ovl__00799580/ovl__00799580] + - { start: 0x79A1E0, type: bss, vram: 0x80896A60, name: overlays/submenu/ovl__00799580/ovl__00799580 } - name: ovl__00799580_reloc type: code start: 0x79A1E0 @@ -523,7 +523,7 @@ follows_vram: ovl__00799580 compress: True subsegments: - - [0x79A1E0, data, overlays/other_ovl/ovl__00799580/ovl__00799580_reloc] + - [0x79A1E0, data, overlays/submenu/ovl__00799580/ovl__00799580_reloc] - name: ovl__0079A290 type: code @@ -533,9 +533,9 @@ compress: True bss_size: 0x10 subsegments: - - [0x79A290, asm, overlays/other_ovl/ovl__0079A290/ovl__0079A290] - - [0x79AB20, data, overlays/other_ovl/ovl__0079A290/ovl__0079A290] - - { start: 0x79AFD0, type: bss, vram: 0x80897860, name: overlays/other_ovl/ovl__0079A290/ovl__0079A290 } + - [0x79A290, asm, overlays/submenu/ovl__0079A290/ovl__0079A290] + - [0x79AB20, data, overlays/submenu/ovl__0079A290/ovl__0079A290] + - { start: 0x79AFD0, type: bss, vram: 0x80897860, name: overlays/submenu/ovl__0079A290/ovl__0079A290 } - name: ovl__0079A290_reloc type: code start: 0x79AFD0 @@ -543,7 +543,7 @@ follows_vram: ovl__0079A290 compress: True subsegments: - - [0x79AFD0, data, overlays/other_ovl/ovl__0079A290/ovl__0079A290_reloc] + - [0x79AFD0, data, overlays/submenu/ovl__0079A290/ovl__0079A290_reloc] - name: ovl__0079B120 type: code @@ -553,10 +553,10 @@ compress: True bss_size: 0x30 subsegments: - - [0x79B120, asm, overlays/other_ovl/ovl__0079B120/ovl__0079B120] - - [0x79BE90, data, overlays/other_ovl/ovl__0079B120/ovl__0079B120] - - [0x79BF00, rodata, overlays/other_ovl/ovl__0079B120/ovl__0079B120] - - { start: 0x79BF10, type: bss, vram: 0x808987B0, name: overlays/other_ovl/ovl__0079B120/ovl__0079B120 } + - [0x79B120, asm, overlays/submenu/ovl__0079B120/ovl__0079B120] + - [0x79BE90, data, overlays/submenu/ovl__0079B120/ovl__0079B120] + - [0x79BF00, rodata, overlays/submenu/ovl__0079B120/ovl__0079B120] + - { start: 0x79BF10, type: bss, vram: 0x808987B0, name: overlays/submenu/ovl__0079B120/ovl__0079B120 } - name: ovl__0079B120_reloc type: code start: 0x79BF10 @@ -564,7 +564,7 @@ follows_vram: ovl__0079B120 compress: True subsegments: - - [0x79BF10, data, overlays/other_ovl/ovl__0079B120/ovl__0079B120_reloc] + - [0x79BF10, data, overlays/submenu/ovl__0079B120/ovl__0079B120_reloc] - name: ovl__0079C020 type: code @@ -574,10 +574,10 @@ compress: True bss_size: 0x30 subsegments: - - [0x79C020, asm, overlays/other_ovl/ovl__0079C020/ovl__0079C020] - - [0x79D670, data, overlays/other_ovl/ovl__0079C020/ovl__0079C020] - - [0x79D890, rodata, overlays/other_ovl/ovl__0079C020/ovl__0079C020] - - { start: 0x79D8B0, type: bss, vram: 0x8089A180, name: overlays/other_ovl/ovl__0079C020/ovl__0079C020 } + - [0x79C020, asm, overlays/submenu/ovl__0079C020/ovl__0079C020] + - [0x79D670, data, overlays/submenu/ovl__0079C020/ovl__0079C020] + - [0x79D890, rodata, overlays/submenu/ovl__0079C020/ovl__0079C020] + - { start: 0x79D8B0, type: bss, vram: 0x8089A180, name: overlays/submenu/ovl__0079C020/ovl__0079C020 } - name: ovl__0079C020_reloc type: code start: 0x79D8B0 @@ -585,7 +585,7 @@ follows_vram: ovl__0079C020 compress: True subsegments: - - [0x79D8B0, data, overlays/other_ovl/ovl__0079C020/ovl__0079C020_reloc] + - [0x79D8B0, data, overlays/submenu/ovl__0079C020/ovl__0079C020_reloc] - name: ovl__0079DA50 type: code @@ -595,9 +595,9 @@ compress: True bss_size: 0x10 subsegments: - - [0x79DA50, asm, overlays/other_ovl/ovl__0079DA50/ovl__0079DA50] - - [0x79E330, data, overlays/other_ovl/ovl__0079DA50/ovl__0079DA50] - - { start: 0x79E370, type: bss, vram: 0x8089AC70, name: overlays/other_ovl/ovl__0079DA50/ovl__0079DA50 } + - [0x79DA50, asm, overlays/submenu/ovl__0079DA50/ovl__0079DA50] + - [0x79E330, data, overlays/submenu/ovl__0079DA50/ovl__0079DA50] + - { start: 0x79E370, type: bss, vram: 0x8089AC70, name: overlays/submenu/ovl__0079DA50/ovl__0079DA50 } - name: ovl__0079DA50_reloc type: code start: 0x79E370 @@ -605,7 +605,7 @@ follows_vram: ovl__0079DA50 compress: True subsegments: - - [0x79E370, data, overlays/other_ovl/ovl__0079DA50/ovl__0079DA50_reloc] + - [0x79E370, data, overlays/submenu/ovl__0079DA50/ovl__0079DA50_reloc] - name: ovl__0079E430 type: code @@ -615,10 +615,10 @@ compress: True bss_size: 0x6D80 subsegments: - - [0x79E430, asm, overlays/other_ovl/ovl__0079E430/ovl__0079E430] - - [0x79F6A0, data, overlays/other_ovl/ovl__0079E430/ovl__0079E430] - - [0x79F760, rodata, overlays/other_ovl/ovl__0079E430/ovl__0079E430] - - { start: 0x79F770, type: bss, vram: 0x8089C080, name: overlays/other_ovl/ovl__0079E430/ovl__0079E430 } + - [0x79E430, asm, overlays/submenu/ovl__0079E430/ovl__0079E430] + - [0x79F6A0, data, overlays/submenu/ovl__0079E430/ovl__0079E430] + - [0x79F760, rodata, overlays/submenu/ovl__0079E430/ovl__0079E430] + - { start: 0x79F770, type: bss, vram: 0x8089C080, name: overlays/submenu/ovl__0079E430/ovl__0079E430 } - name: ovl__0079E430_reloc type: code start: 0x79F770 @@ -626,7 +626,7 @@ follows_vram: ovl__0079E430 compress: True subsegments: - - [0x79F770, data, overlays/other_ovl/ovl__0079E430/ovl__0079E430_reloc] + - [0x79F770, data, overlays/submenu/ovl__0079E430/ovl__0079E430_reloc] - name: ovl__0079F810 type: code @@ -636,10 +636,10 @@ compress: True bss_size: 0x10 subsegments: - - [0x79F810, asm, overlays/other_ovl/ovl__0079F810/ovl__0079F810] - - [0x7A0B10, data, overlays/other_ovl/ovl__0079F810/ovl__0079F810] - - [0x7A0F30, rodata, overlays/other_ovl/ovl__0079F810/ovl__0079F810] - - { start: 0x7A0F40, type: bss, vram: 0x808A45D0, name: overlays/other_ovl/ovl__0079F810/ovl__0079F810 } + - [0x79F810, asm, overlays/submenu/ovl__0079F810/ovl__0079F810] + - [0x7A0B10, data, overlays/submenu/ovl__0079F810/ovl__0079F810] + - [0x7A0F30, rodata, overlays/submenu/ovl__0079F810/ovl__0079F810] + - { start: 0x7A0F40, type: bss, vram: 0x808A45D0, name: overlays/submenu/ovl__0079F810/ovl__0079F810 } - name: ovl__0079F810_reloc type: code start: 0x7A0F40 @@ -647,7 +647,7 @@ follows_vram: ovl__0079F810 compress: True subsegments: - - [0x7A0F40, data, overlays/other_ovl/ovl__0079F810/ovl__0079F810_reloc] + - [0x7A0F40, data, overlays/submenu/ovl__0079F810/ovl__0079F810_reloc] - name: ovl__007A10E0 type: code @@ -657,9 +657,9 @@ compress: True bss_size: 0x170 subsegments: - - [0x7A10E0, asm, overlays/other_ovl/ovl__007A10E0/ovl__007A10E0] - - [0x7A2790, data, overlays/other_ovl/ovl__007A10E0/ovl__007A10E0] - - { start: 0x7A2820, type: bss, vram: 0x808A5EC0, name: overlays/other_ovl/ovl__007A10E0/ovl__007A10E0 } + - [0x7A10E0, asm, overlays/submenu/ovl__007A10E0/ovl__007A10E0] + - [0x7A2790, data, overlays/submenu/ovl__007A10E0/ovl__007A10E0] + - { start: 0x7A2820, type: bss, vram: 0x808A5EC0, name: overlays/submenu/ovl__007A10E0/ovl__007A10E0 } - name: ovl__007A10E0_reloc type: code start: 0x7A2820 @@ -667,9 +667,9 @@ follows_vram: ovl__007A10E0 compress: True subsegments: - - [0x7A2820, data, overlays/other_ovl/ovl__007A10E0/ovl__007A10E0_reloc] + - [0x7A2820, data, overlays/submenu/ovl__007A10E0/ovl__007A10E0_reloc] - - name: ovl__007A28F0 + - name: catalog_ovl type: code start: 0x7A28F0 vram: 0x808A6100 @@ -677,24 +677,24 @@ compress: True bss_size: 0x3120 subsegments: - - [0x7A28F0, asm, overlays/other_ovl/ovl__007A28F0/ovl__007A28F0] - - [0x7A5FD0, data, overlays/other_ovl/ovl__007A28F0/ovl__007A28F0] - - [0x7AC190, rodata, overlays/other_ovl/ovl__007A28F0/ovl__007A28F0] - - { start: 0x7AC200, type: bss, vram: 0x808AFA10, name: overlays/other_ovl/ovl__007A28F0/ovl__007A28F0 } - - name: ovl__007A28F0_reloc + - [0x7A28F0, asm, overlays/submenu/catalog_ovl/m_catalog_ovl] + - [0x7A5FD0, data, overlays/submenu/catalog_ovl/m_catalog_ovl] + - [0x7AC190, rodata, overlays/submenu/catalog_ovl/m_catalog_ovl] + - { start: 0x7AC200, type: bss, vram: 0x808AFA10, name: overlays/submenu/catalog_ovl/m_catalog_ovl } + - name: catalog_ovl_reloc type: code start: 0x7AC200 vram: 0x808B2B30 - follows_vram: ovl__007A28F0 + follows_vram: catalog_ovl compress: True subsegments: - - [0x7AC200, data, overlays/other_ovl/ovl__007A28F0/ovl__007A28F0_reloc] + - [0x7AC200, data, overlays/submenu/catalog_ovl/m_catalog_ovl_reloc] - name: player_actor type: code start: 0x7AC420 vram: 0x808B2D50 - follows_vram: ovl__007A28F0_reloc + follows_vram: catalog_ovl_reloc compress: True bss_size: 0x0 subsegments: