diff options
| author | Prakxo <87568477+Prakxo@users.noreply.github.com> | 2024-05-18 23:45:24 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-18 14:45:24 -0700 |
| commit | 92911830dc9be365989887e1464bf766e471ed96 (patch) | |
| tree | 192af337872845d4d91bf2d2da283985015a206b | |
| parent | 727b57b899c2d5eee7e08274981fdecedcb80b07 (diff) | |
m_cpedit OK (#188)
* save_menu OK
* work
* m_cpedit OK
* fix
| -rw-r--r-- | include/6B3DC0.h | 2 | ||||
| -rw-r--r-- | include/tables/dmatables/dmadata_table_jp.h | 4 | ||||
| -rw-r--r-- | include/tables/gamestate_table.h | 2 | ||||
| -rw-r--r-- | linker_scripts/jp/symbol_addrs_overlays.txt | 6 | ||||
| -rw-r--r-- | src/code/m_game_dlftbls.c | 2 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl__00743CD0/_00743CD0.h | 20 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_cpedit/m_cpedit.c | 97 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_cpedit/m_cpedit.h | 24 | ||||
| -rw-r--r-- | src/overlays/submenu/submenu_ovl/m_submenu_ovl.c | 6 | ||||
| -rw-r--r-- | yamls/jp/overlays.yaml | 12 |
10 files changed, 138 insertions, 37 deletions
diff --git a/include/6B3DC0.h b/include/6B3DC0.h index b9f1d91..d191522 100644 --- a/include/6B3DC0.h +++ b/include/6B3DC0.h @@ -66,7 +66,7 @@ void func_80091074_jp(struct GraphicsContext* gfxCtx); // void func_800921D0_jp(); // void func_80092440_jp(); // void func_80092468_jp(); -// void func_800924CC_jp(); +void func_800924CC_jp(void*,void*,void*); // void func_80092538_jp(); s32 mFont_UnintToString(char*, u32, s32, s32, s32); diff --git a/include/tables/dmatables/dmadata_table_jp.h b/include/tables/dmatables/dmadata_table_jp.h index 5519a9d..463d52b 100644 --- a/include/tables/dmatables/dmadata_table_jp.h +++ b/include/tables/dmatables/dmadata_table_jp.h @@ -20,8 +20,8 @@ DEFINE_DMA_ENTRY(ovl_play, "ovl_play") DEFINE_DMA_ENTRY(ovl_play_reloc, "ovl_play_reloc") DEFINE_DMA_ENTRY(ovl_second_game, "ovl_second_game") DEFINE_DMA_ENTRY(ovl_second_game_reloc, "ovl_second_game_reloc") -DEFINE_DMA_ENTRY(ovl__00743CD0, "ovl__00743CD0") -DEFINE_DMA_ENTRY(ovl__00743CD0_reloc, "ovl__00743CD0_reloc") +DEFINE_DMA_ENTRY(ovl_cpedit, "ovl_cpedit") +DEFINE_DMA_ENTRY(ovl_cpedit_reloc, "ovl_cpedit_reloc") DEFINE_DMA_ENTRY(ovl_trademark, "ovl_trademark") DEFINE_DMA_ENTRY(ovl_trademark_reloc, "ovl_trademark_reloc") DEFINE_DMA_ENTRY(ovl_player_select, "ovl_player_select") diff --git a/include/tables/gamestate_table.h b/include/tables/gamestate_table.h index 6b9754d..d3a173e 100644 --- a/include/tables/gamestate_table.h +++ b/include/tables/gamestate_table.h @@ -2,7 +2,7 @@ /* 0x01 */ DEFINE_GAMESTATE(Select, GAMESTATE_MAP_SELECT, select) /* 0x02 */ DEFINE_GAMESTATE(Play, GAMESTATE_PLAY, play) /* 0x03 */ DEFINE_GAMESTATE(SecondGame, GAMESTATE_SECOND_GAME, second_game) -/* 0x04 */ DEFINE_GAMESTATE(_00743CD0, GAMESTATE_00743CD0, _00743CD0) +/* 0x04 */ DEFINE_GAMESTATE(CPEdit, GAMESTATE_CPEDIT, cpedit) /* 0x05 */ DEFINE_GAMESTATE(Trademark, GAMESTATE_TRADEMARK, trademark) /* 0x06 */ DEFINE_GAMESTATE(PlayerSelect, GAMESTATE_PLAYER_SELECT, player_select) /* 0x07 */ DEFINE_GAMESTATE(SaveMenu, GAMESTATE_SAVE_MENU, save_menu) diff --git a/linker_scripts/jp/symbol_addrs_overlays.txt b/linker_scripts/jp/symbol_addrs_overlays.txt index 261e94f..40622b3 100644 --- a/linker_scripts/jp/symbol_addrs_overlays.txt +++ b/linker_scripts/jp/symbol_addrs_overlays.txt @@ -232,11 +232,11 @@ S_se_endcheck_timeout = 0x80804562; // type:s16 func_80804790_jp = 0x80804790; // type:func second_game_cleanup = 0x80804860; // type:func second_game_init = 0x8080486C; // type:func -func_808048F0_jp = 0x808048F0; // type:func +cpedit_main = 0x808048F0; // type:func func_80804930_jp = 0x80804930; // type:func func_80804ADC_jp = 0x80804ADC; // type:func -_00743CD0_cleanup = 0x80804B34; // type:func -_00743CD0_init = 0x80804B6C; // type:func +cpedit_cleanup = 0x80804B34; // type:func +cpedit_init = 0x80804B6C; // type:func func_80804C40_jp = 0x80804C40; // type:func func_80804CC0_jp = 0x80804CC0; // type:func func_80804D18_jp = 0x80804D18; // type:func diff --git a/src/code/m_game_dlftbls.c b/src/code/m_game_dlftbls.c index 45b17cc..9e5fcc5 100644 --- a/src/code/m_game_dlftbls.c +++ b/src/code/m_game_dlftbls.c @@ -4,7 +4,7 @@ #include "overlays/gamestates/ovl_first_game/first_game.h" #include "overlays/gamestates/ovl_play/m_play.h" #include "overlays/gamestates/ovl_second_game/second_game.h" -#include "overlays/gamestates/ovl__00743CD0/_00743CD0.h" +#include "overlays/gamestates/ovl_cpedit/m_cpedit.h" #include "overlays/gamestates/ovl_trademark/m_trademark.h" #include "overlays/gamestates/ovl_player_select/player_select.h" #include "overlays/gamestates/ovl_save_menu/save_menu.h" diff --git a/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h b/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h deleted file mode 100644 index 7e48657..0000000 --- a/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef _00743CD0_H -#define _00743CD0_H - -#include "ultra64.h" -#include "game.h" -#include "m_view.h" -#include "unknown_structs.h" -#include "unk.h" - -typedef struct Game__00743CD0 { - /* 0x0000 */ Game state; - /* 0x00E0 */ View view; - /* 0x0208 */ UNK_TYPE1 unk_0208[0x2FC-0x208]; - /* 0x02FC */ ObjectExchangeBank unk_02FC; -} Game__00743CD0; // size = 0x1B20 - -void _00743CD0_init(Game *thisx); -void _00743CD0_cleanup(Game *thisx); - -#endif diff --git a/src/overlays/gamestates/ovl_cpedit/m_cpedit.c b/src/overlays/gamestates/ovl_cpedit/m_cpedit.c new file mode 100644 index 0000000..7b8fa00 --- /dev/null +++ b/src/overlays/gamestates/ovl_cpedit/m_cpedit.c @@ -0,0 +1,97 @@ +#include "m_cpedit.h" +#include "gfx.h" +#include "overlays/gamestates/ovl_trademark/m_trademark.h" +#include "code_variables.h" +#include "macros.h" +#include "sys_matrix.h" +#include "6B3DC0.h" +#include "m_rcp.h" + +// madeup name +void cpedit_main(Game* game) { + Game_CPEdit* edit = (Game_CPEdit*)game; + GraphicsContext* graph; + edit->unk208(edit); + + graph = edit->state.gfxCtx; + + game_debug_draw_last(&edit->state, graph); + game_draw_last(graph); +} + +void func_80804930_jp(Game_CPEdit* edit) { + UNUSED s32 pad[2]; + Submenu* submenu; + GraphicsContext* graph = edit->state.gfxCtx; + void* segment = edit->bank.status[0].segment; + + mCon_main(&edit->state); + submenu = &edit->submenu; + mSM_submenu_move(submenu); + + if (submenu->moveProcIndex == MSM_MOVE_PROC_END) { + STOP_GAMESTATE((Game*)edit); + SET_NEXT_GAMESTATE((Game*)edit, trademark_init, sizeof(Game_Trademark)); + } + + gSegments[4] = OS_K0_TO_PHYSICAL(segment); + + OPEN_DISPS(graph); + + gSPSegment(POLY_OPA_DISP++, G_MWO_SEGMENT_0, NULL); + gSPSegment(POLY_XLU_DISP++, G_MWO_SEGMENT_0, NULL); + + gSPSegment(OVERLAY_DISP++, G_MWO_SEGMENT_0, NULL); + gSPSegment(FONT_DISP++, G_MWO_SEGMENT_0, NULL); + gSPSegment(SHADOW_DISP++, G_MWO_SEGMENT_0, NULL); + + gSPSegment(POLY_OPA_DISP++, G_MWO_SEGMENT_4, segment); + gSPSegment(POLY_XLU_DISP++, G_MWO_SEGMENT_4, segment); + + gSPSegment(OVERLAY_DISP++, G_MWO_SEGMENT_4, segment); + gSPSegment(FONT_DISP++, G_MWO_SEGMENT_4, segment); + gSPSegment(SHADOW_DISP++, G_MWO_SEGMENT_4, segment); + + DisplayList_initialize(graph, 0, 0, 0, NULL); + + gDPPipeSync(POLY_OPA_DISP++); + + CLOSE_DISPS(graph); + + showView(&edit->view, 15); + mSM_submenu_draw(submenu, (struct Game_Play*)edit); +} + +void func_80804ADC_jp(Game_CPEdit* edit) { + edit->unk208 = func_80804930_jp; + edit->submenu.moveProcIndex = MSM_MOVE_PROC_PREWAIT; + edit->submenu.programId = SUBMENU_PROGRAM_19; + edit->submenu.unk_00 = 4; + func_800924CC_jp(NULL, NULL, NULL); + SetGameFrame(2); +} + +// madeup name +void cpedit_cleanup(Game* game) { + Game_CPEdit* edit = (Game_CPEdit*)game; + edit->submenu.unk_00 = 0; + + mSM_submenu_dt(&edit->submenu); + mSM_submenu_ovlptr_cleanup(&edit->submenu); +} +// madeup name +void cpedit_init(Game* game) { + Game_CPEdit* edit = (Game_CPEdit*)game; + + edit->state.main = cpedit_main; + edit->state.destroy = cpedit_cleanup; + initView(&edit->view, edit->state.gfxCtx); + edit->view.flag = 8; + edit->unk208 = func_80804ADC_jp; + SetGameFrame(1); + mSM_submenu_ovlptr_init((struct Game_Play*)edit); + mSc_data_bank_ct((struct Game_Play*)edit, &edit->bank); + mSc_decide_exchange_bank(&edit->bank); + mSM_submenu_ct(&edit->submenu); + new_Matrix(&edit->state); +} diff --git a/src/overlays/gamestates/ovl_cpedit/m_cpedit.h b/src/overlays/gamestates/ovl_cpedit/m_cpedit.h new file mode 100644 index 0000000..70ecd3c --- /dev/null +++ b/src/overlays/gamestates/ovl_cpedit/m_cpedit.h @@ -0,0 +1,24 @@ +#ifndef M_CPEDIT_H +#define M_CPEDIT_H + +#include "ultra64.h" +#include "game.h" +#include "m_view.h" +#include "m_submenu.h" +#include "m_scene.h" + +typedef struct Game_CPEdit Game_CPEdit; +typedef void (*Game_CPEdit_unk208)(Game_CPEdit* edit); + +struct Game_CPEdit { + /* 0x000 */ Game state; + /* 0x0E0 */ View view; + /* 0x208 */ Game_CPEdit_unk208 unk208; + /* 0x20C */ Submenu submenu; + /* 0x2FC */ ObjectExchangeBank bank; +}; // size = 0x1B20 + +void cpedit_init(Game *thisx); +void cpedit_cleanup(Game *thisx); + +#endif diff --git a/src/overlays/submenu/submenu_ovl/m_submenu_ovl.c b/src/overlays/submenu/submenu_ovl/m_submenu_ovl.c index dbe727c..ea83bac 100644 --- a/src/overlays/submenu/submenu_ovl/m_submenu_ovl.c +++ b/src/overlays/submenu/submenu_ovl/m_submenu_ovl.c @@ -13,7 +13,7 @@ // gamestates #include "overlays/gamestates/ovl_play/m_play.h" -#include "overlays/gamestates/ovl__00743CD0/_00743CD0.h" +#include "overlays/gamestates/ovl_cpedit/m_cpedit.h" // submenus #include "overlays/submenu/inventory_ovl/m_inventory_ovl.h" @@ -621,7 +621,7 @@ void mSM_setup_view(Submenu* submenu, GraphicsContext* gfxCtx, s32 arg1) { if (submenu->unk_00 != 4) { view = &((Game_Play*)gamePT)->view; } else { - view = &((Game__00743CD0*)gamePT)->view; + view = &((Game_CPEdit*)gamePT)->view; } gDPPipeSync(__polyOpa++); @@ -1514,7 +1514,7 @@ label: if (submenu->unk_00 != 4) { var_v1 = &((Game_Play*)gamePT)->objectExchangeBank; } else { - var_v1 = &((Game__00743CD0*)gamePT)->unk_02FC; + var_v1 = &((Game_CPEdit*)gamePT)->bank; } ovl_base.unk_10000.unk_00 = var_v1->unk1818; diff --git a/yamls/jp/overlays.yaml b/yamls/jp/overlays.yaml index a3fd58b..858b789 100644 --- a/yamls/jp/overlays.yaml +++ b/yamls/jp/overlays.yaml @@ -75,7 +75,7 @@ subsegments: - [0x743CA0, data, overlays/gamestates/ovl_second_game/ovl_second_game_reloc] - - name: ovl__00743CD0 + - name: ovl_cpedit type: code start: 0x743CD0 vram: 0x808048F0 @@ -83,21 +83,21 @@ compress: True bss_size: 0x0 subsegments: - - [0x743CD0, asm, overlays/gamestates/ovl__00743CD0/ovl__00743CD0] - - name: ovl__00743CD0_reloc + - [0x743CD0, c, overlays/gamestates/ovl_cpedit/m_cpedit] + - name: ovl_cpedit_reloc type: code start: 0x743FE0 vram: 0x80804C00 - follows_vram: ovl__00743CD0 + follows_vram: compress: True subsegments: - - [0x743FE0, data, overlays/gamestates/ovl__00743CD0/ovl__00743CD0_reloc] + - [0x743FE0, data, overlays/gamestates/ovl_cpedit/ovl_cpedit_reloc] - name: ovl_trademark type: code start: 0x744020 vram: 0x80804C40 - follows_vram: ovl__00743CD0_reloc + follows_vram: ovl_cpedit_reloc compress: True bss_size: 0x20170 subsegments: |
