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 /src | |
| parent | 727b57b899c2d5eee7e08274981fdecedcb80b07 (diff) | |
m_cpedit OK (#188)
* save_menu OK
* work
* m_cpedit OK
* fix
Diffstat (limited to 'src')
| -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 |
5 files changed, 125 insertions, 24 deletions
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; |
