summaryrefslogtreecommitdiff
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
parent727b57b899c2d5eee7e08274981fdecedcb80b07 (diff)
m_cpedit OK (#188)
* save_menu OK * work * m_cpedit OK * fix
-rw-r--r--include/6B3DC0.h2
-rw-r--r--include/tables/dmatables/dmadata_table_jp.h4
-rw-r--r--include/tables/gamestate_table.h2
-rw-r--r--linker_scripts/jp/symbol_addrs_overlays.txt6
-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
-rw-r--r--yamls/jp/overlays.yaml12
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: