summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPrakxo <87568477+Prakxo@users.noreply.github.com>2024-05-18 23:45:24 +0200
committerGitHub <noreply@github.com>2024-05-18 14:45:24 -0700
commit92911830dc9be365989887e1464bf766e471ed96 (patch)
tree192af337872845d4d91bf2d2da283985015a206b /src
parent727b57b899c2d5eee7e08274981fdecedcb80b07 (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.c2
-rw-r--r--src/overlays/gamestates/ovl__00743CD0/_00743CD0.h20
-rw-r--r--src/overlays/gamestates/ovl_cpedit/m_cpedit.c97
-rw-r--r--src/overlays/gamestates/ovl_cpedit/m_cpedit.h24
-rw-r--r--src/overlays/submenu/submenu_ovl/m_submenu_ovl.c6
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;