mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-22 22:24:16 -04:00
Implement & link m_submenu_ovl - necessary for custom submenus
This commit is contained in:
@@ -973,6 +973,11 @@ m_repay_ovl.c:
|
||||
.rodata: [0x8064B830, 0x8064B870]
|
||||
.data: [0x806CE4E0, 0x806CE550]
|
||||
.bss: [0x813405A8, 0x813405C0]
|
||||
m_submenu_ovl.c:
|
||||
.text: [0x805ED0FC, 0x805EF6CC]
|
||||
.rodata: [0x8064B870, 0x8064B900]
|
||||
.data: [0x806CE550, 0x806CF928]
|
||||
.bss: [0x813405C0, 0x81340FC8]
|
||||
m_timeIn_ovl.c:
|
||||
.text: [0x805FF3C4, 0x80600370]
|
||||
.rodata: [0x8064BA00, 0x8064BA58]
|
||||
|
||||
+177
-81
@@ -11,81 +11,81 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
GRAPH_DOING_ZERO = 0,
|
||||
GRAPH_DOING_CT,
|
||||
GRAPH_DOING_GAME_CT,
|
||||
GRAPH_DOING_GAME_CT_FINISHED,
|
||||
GRAPH_DOING_GAME_MAIN,
|
||||
GRAPH_DOING_GAME_TIME,
|
||||
GRAPH_DOING_GAME_TIME_FINISHED,
|
||||
GRAPH_DOING_GAME_EXEC,
|
||||
GRAPH_DOING_GAME_EXEC_FINISHED,
|
||||
GRAPH_DOING_GAME_BGM,
|
||||
GRAPH_DOING_GAME_BGM_FINISHED,
|
||||
GRAPH_DOING_GAME_MAIN_FINISHED,
|
||||
GRAPH_DOING_TASK_SET,
|
||||
GRAPH_DOING_WAIT_TASK,
|
||||
GRAPH_DOING_WAIT_TASK_FINISHED,
|
||||
GRAPH_DOING_TASK_SET_FINISHED,
|
||||
GRAPH_DOING_AUDIO,
|
||||
GRAPH_DOING_AUDIO_FINISHED,
|
||||
GRAPH_DOING_GAME_18, /* Not sure what this is, relevant code removed */
|
||||
GRAPH_DOING_GAME_DT,
|
||||
GRAPH_DOING_GAME_DT_FINISHED,
|
||||
GRAPH_DOING_DT,
|
||||
GRAPH_DOING_END
|
||||
GRAPH_DOING_ZERO = 0,
|
||||
GRAPH_DOING_CT,
|
||||
GRAPH_DOING_GAME_CT,
|
||||
GRAPH_DOING_GAME_CT_FINISHED,
|
||||
GRAPH_DOING_GAME_MAIN,
|
||||
GRAPH_DOING_GAME_TIME,
|
||||
GRAPH_DOING_GAME_TIME_FINISHED,
|
||||
GRAPH_DOING_GAME_EXEC,
|
||||
GRAPH_DOING_GAME_EXEC_FINISHED,
|
||||
GRAPH_DOING_GAME_BGM,
|
||||
GRAPH_DOING_GAME_BGM_FINISHED,
|
||||
GRAPH_DOING_GAME_MAIN_FINISHED,
|
||||
GRAPH_DOING_TASK_SET,
|
||||
GRAPH_DOING_WAIT_TASK,
|
||||
GRAPH_DOING_WAIT_TASK_FINISHED,
|
||||
GRAPH_DOING_TASK_SET_FINISHED,
|
||||
GRAPH_DOING_AUDIO,
|
||||
GRAPH_DOING_AUDIO_FINISHED,
|
||||
GRAPH_DOING_GAME_18, /* Not sure what this is, relevant code removed */
|
||||
GRAPH_DOING_GAME_DT,
|
||||
GRAPH_DOING_GAME_DT_FINISHED,
|
||||
GRAPH_DOING_DT,
|
||||
GRAPH_DOING_END
|
||||
} GRAPH_DOING_POINT;
|
||||
|
||||
#define GRAPH_MSG_BUF_COUNT 8
|
||||
|
||||
typedef struct graph_s {
|
||||
/* 0x0000 */ Gfx* Gfx_list00; /* polygon opaque */
|
||||
/* 0x0004 */ Gfx* Gfx_list01; /* polygon translucent */
|
||||
/* 0x0008 */ void* DepthBuffer;
|
||||
/* 0x000C */ Gfx* Gfx_list03; /* unused */
|
||||
/* 0x0010 */ Gfx* Gfx_list04; /* overlay */
|
||||
/* 0x0014 */ Gfx* Gfx_list07; /* font */
|
||||
/* 0x0018 */ Gfx* Gfx_list08; /* shadow */
|
||||
/* 0x001C */ Gfx* Gfx_list09; /* light */
|
||||
/* 0x0020 */ Gfx* gfxsave;
|
||||
/* 0x0024 */ u8 _unk24[32];
|
||||
/* 0x0044 */ OSMessage graphReplyMesgBuf[GRAPH_MSG_BUF_COUNT];
|
||||
/* 0x0064 */ OSMessageQueue* schedMesgQueue;
|
||||
/* 0x0068 */ OSMessageQueue graphReplyMesgQueue;
|
||||
/* 0x0088 */ u8 _unused_ossctask00p[0x68]; /* real type = OSScTask */
|
||||
/* 0x00F0 */ u8 _unused_ossctask01p[0x68]; /* real type = OSScTask */
|
||||
/* 0x0158 */ u8 _unused_ossctask02p[0x68]; /* real type = OSScTask */
|
||||
/* 0x01C0 */ Gfx* Gfx_list05; /* work */
|
||||
/* 0x01C4 */ THA_GA work_thaga;
|
||||
/* 0x01D4 */ u8 _unk1D4[0xBC]; /* Maybe related to more OSScTask stuff? */
|
||||
/* 0x0290 */ void* scheduler; /* Actually points to OSSched struct, only used in DnM? */
|
||||
/* 0x0294 */ void* vimode; /* Actually points to OSViMode struct, not used in AC. */
|
||||
/* 0x0298 */ THA_GA line_opaque_thaga;
|
||||
/* 0x02A8 */ THA_GA line_translucent_thaga;
|
||||
/* 0x02B8 */ THA_GA overlay_thaga;
|
||||
/* 0x02C8 */ THA_GA polygon_opaque_thaga;
|
||||
/* 0x02D8 */ THA_GA polygon_translucent_thaga;
|
||||
/* 0x02E8 */ THA_GA font_thaga;
|
||||
/* 0x02F8 */ THA_GA shadow_thaga;
|
||||
/* 0x0308 */ THA_GA light_thaga;
|
||||
/* 0x0318 */ THA_GA bg_opaque_thaga;
|
||||
/* 0x0328 */ THA_GA bg_translucent_thaga;
|
||||
/* 0x0338 */ int frame_counter;
|
||||
/* 0x033C */ u16* frameBuffer;
|
||||
/* 0x0340 */ u16* renderBuffer;
|
||||
/* 0x0344 */ u32 vispecial;
|
||||
/* 0x0348 */ u8 doing_point;
|
||||
/* 0x0349 */ u8 _unk349;
|
||||
/* 0x034A */ u8 need_viupdate;
|
||||
/* 0x034B */ u8 cfb_bank;
|
||||
/* 0x034C */ void (*taskEndCallback)(struct graph_s*, void*);
|
||||
/* 0x0350 */ void* taskEndData;
|
||||
/* 0x0354 */ f32 vixscale;
|
||||
/* 0x0358 */ f32 viyscale;
|
||||
/* 0x035C */ Gfx* last_dl;
|
||||
/* 0x0360 */ Gfx* Gfx_list10; /* new0 (highlight/reflections?) */
|
||||
/* 0x0364 */ Gfx* Gfx_list11; /* new1 (highlight/reflections?) */
|
||||
} GRAPH ATTRIBUTE_ALIGN(8); // one of the missing structs is likely aligned to 8 bytes.
|
||||
/* 0x0000 */ Gfx* Gfx_list00; /* polygon opaque */
|
||||
/* 0x0004 */ Gfx* Gfx_list01; /* polygon translucent */
|
||||
/* 0x0008 */ void* DepthBuffer;
|
||||
/* 0x000C */ Gfx* Gfx_list03; /* unused */
|
||||
/* 0x0010 */ Gfx* Gfx_list04; /* overlay */
|
||||
/* 0x0014 */ Gfx* Gfx_list07; /* font */
|
||||
/* 0x0018 */ Gfx* Gfx_list08; /* shadow */
|
||||
/* 0x001C */ Gfx* Gfx_list09; /* light */
|
||||
/* 0x0020 */ Gfx* gfxsave;
|
||||
/* 0x0024 */ u8 _unk24[32];
|
||||
/* 0x0044 */ OSMessage graphReplyMesgBuf[GRAPH_MSG_BUF_COUNT];
|
||||
/* 0x0064 */ OSMessageQueue* schedMesgQueue;
|
||||
/* 0x0068 */ OSMessageQueue graphReplyMesgQueue;
|
||||
/* 0x0088 */ u8 _unused_ossctask00p[0x68]; /* real type = OSScTask */
|
||||
/* 0x00F0 */ u8 _unused_ossctask01p[0x68]; /* real type = OSScTask */
|
||||
/* 0x0158 */ u8 _unused_ossctask02p[0x68]; /* real type = OSScTask */
|
||||
/* 0x01C0 */ Gfx* Gfx_list05; /* work */
|
||||
/* 0x01C4 */ THA_GA work_thaga;
|
||||
/* 0x01D4 */ u8 _unk1D4[0xBC]; /* Maybe related to more OSScTask stuff? */
|
||||
/* 0x0290 */ void* scheduler; /* Actually points to OSSched struct, only used in DnM? */
|
||||
/* 0x0294 */ void* vimode; /* Actually points to OSViMode struct, not used in AC. */
|
||||
/* 0x0298 */ THA_GA line_opaque_thaga;
|
||||
/* 0x02A8 */ THA_GA line_translucent_thaga;
|
||||
/* 0x02B8 */ THA_GA overlay_thaga;
|
||||
/* 0x02C8 */ THA_GA polygon_opaque_thaga;
|
||||
/* 0x02D8 */ THA_GA polygon_translucent_thaga;
|
||||
/* 0x02E8 */ THA_GA font_thaga;
|
||||
/* 0x02F8 */ THA_GA shadow_thaga;
|
||||
/* 0x0308 */ THA_GA light_thaga;
|
||||
/* 0x0318 */ THA_GA bg_opaque_thaga;
|
||||
/* 0x0328 */ THA_GA bg_translucent_thaga;
|
||||
/* 0x0338 */ int frame_counter;
|
||||
/* 0x033C */ u16* frameBuffer;
|
||||
/* 0x0340 */ u16* renderBuffer;
|
||||
/* 0x0344 */ u32 vispecial;
|
||||
/* 0x0348 */ u8 doing_point;
|
||||
/* 0x0349 */ u8 _unk349;
|
||||
/* 0x034A */ u8 need_viupdate;
|
||||
/* 0x034B */ u8 cfb_bank;
|
||||
/* 0x034C */ void (*taskEndCallback)(struct graph_s*, void*);
|
||||
/* 0x0350 */ void* taskEndData;
|
||||
/* 0x0354 */ f32 vixscale;
|
||||
/* 0x0358 */ f32 viyscale;
|
||||
/* 0x035C */ Gfx* last_dl;
|
||||
/* 0x0360 */ Gfx* Gfx_list10; /* new0 (highlight/reflections?) */
|
||||
/* 0x0364 */ Gfx* Gfx_list11; /* new1 (highlight/reflections?) */
|
||||
} GRAPH ATTRIBUTE_ALIGN(8); // one of the missing structs is likely aligned to 8 bytes.
|
||||
|
||||
extern void graph_proc(void* arg);
|
||||
extern void graph_ct(GRAPH* graph);
|
||||
@@ -95,16 +95,22 @@ extern void graph_dt(GRAPH* graph);
|
||||
|
||||
/* Graph display list macros for style and correctness enforcement */
|
||||
|
||||
#define OPEN_DISP(graph) \
|
||||
{ \
|
||||
GRAPH* __graph = (graph); \
|
||||
int __gfx_opened = 0; \
|
||||
while (0)
|
||||
// clang-format off
|
||||
#define OPEN_DISP(graph) \
|
||||
do {} while (0); \
|
||||
{ \
|
||||
GRAPH* __graph = (graph); \
|
||||
int __gfx_opened = 0; \
|
||||
do {} while (0)
|
||||
// clang-format on
|
||||
|
||||
#define CLOSE_DISP(graph) \
|
||||
(void)__gfx_opened; \
|
||||
} \
|
||||
while (0)
|
||||
// clang-format off
|
||||
#define CLOSE_DISP(graph) \
|
||||
do {} while (0); \
|
||||
(void)__gfx_opened; \
|
||||
} \
|
||||
do {} while (0)
|
||||
// clang-format on
|
||||
|
||||
#define NEXT_DISP(thaga) ((thaga)->thaGfx.head_p++)
|
||||
#define NOW_DISP(thaga) ((thaga)->thaGfx.head_p)
|
||||
@@ -116,7 +122,7 @@ extern void graph_dt(GRAPH* graph);
|
||||
#define NEXT_WORK_DISP NEXT_DISP(&__graph->work_thaga)
|
||||
#define NEXT_FONT_DISP NEXT_DISP(&__graph->font_thaga)
|
||||
#define NEXT_SHADOW_DISP NEXT_DISP(&__graph->shadow_thaga)
|
||||
#define NEXT_LIGHT_DISP NEXT_DISP(&__graph->light_thaga)
|
||||
#define NEXT_LIGHT_DISP NEXT_DISP(&__graph->light_thaga)
|
||||
#define NEXT_BG_OPA_DISP NEXT_DISP(&__graph->bg_opaque_thaga)
|
||||
#define NEXT_BG_XLU_DISP NEXT_DISP(&__graph->bg_translucent_thaga)
|
||||
|
||||
@@ -140,7 +146,97 @@ extern void graph_dt(GRAPH* graph);
|
||||
#define SET_BG_OPA_DISP(p) SET_DISP(&__graph->bg_opaque_thaga, p)
|
||||
#define SET_BG_XLU_DISP(p) SET_DISP(&__graph->bg_translucent_thaga, p)
|
||||
|
||||
#define GRAPH_ALLOC(graph, size) ((void*)((graph)->polygon_opaque_thaga.tha.tail_p = (char*)((int)(graph)->polygon_opaque_thaga.tha.tail_p - (int)(size))))
|
||||
// clang-format off
|
||||
#define OPEN_POLY_OPA_DISP(g) \
|
||||
do {} while (0); \
|
||||
OPEN_DISP(g); \
|
||||
{ \
|
||||
Gfx* __polyOpa = NOW_POLY_OPA_DISP; \
|
||||
s32 __poly_opa_gfx = 0; \
|
||||
do {} while (0)
|
||||
// clang-format on
|
||||
|
||||
// clang-format off
|
||||
#define CLOSE_POLY_OPA_DISP(g) \
|
||||
do {} while (0); \
|
||||
(void)__poly_opa_gfx; \
|
||||
SET_POLY_OPA_DISP(__polyOpa); \
|
||||
} \
|
||||
CLOSE_DISP(g); \
|
||||
do {} while (0)
|
||||
// clang-format on
|
||||
|
||||
#define POLY_OPA_DISP __polyOpa
|
||||
|
||||
// clang-format off
|
||||
#define OPEN_POLY_XLU_DISP(g) \
|
||||
do {} while (0); \
|
||||
OPEN_DISP(g); \
|
||||
{ \
|
||||
Gfx* __polyXlu = NOW_POLY_XLU_DISP; \
|
||||
s32 __poly_xlu_gfx = 0; \
|
||||
do {} while (0)
|
||||
// clang-format on
|
||||
|
||||
// clang-format off
|
||||
#define CLOSE_POLY_XLU_DISP(g) \
|
||||
do {} while (0); \
|
||||
(void)__poly_xlu_gfx; \
|
||||
SET_POLY_XLU_DISP(__polyXlu); \
|
||||
} \
|
||||
CLOSE_DISP(g); \
|
||||
do {} while (0)
|
||||
// clang-format on
|
||||
|
||||
#define POLY_XLU_DISP __polyXlu
|
||||
|
||||
// clang-format off
|
||||
#define OPEN_LIGHT_DISP(g) \
|
||||
do {} while (0); \
|
||||
OPEN_DISP(g); \
|
||||
{ \
|
||||
Gfx* __light = NOW_LIGHT_DISP; \
|
||||
s32 __light_gfx = 0; \
|
||||
do {} while (0)
|
||||
// clang-format on
|
||||
|
||||
// clang-format off
|
||||
#define CLOSE_LIGHT_DISP(g) \
|
||||
do {} while (0); \
|
||||
SET_LIGHT_DISP(__light); \
|
||||
(void)__light_gfx; \
|
||||
} \
|
||||
CLOSE_DISP(g); \
|
||||
do {} while (0)
|
||||
// clang-format on
|
||||
|
||||
#define LIGHT_DISP __light
|
||||
|
||||
// clang-format off
|
||||
#define OPEN_SHADOW_DISP(g) \
|
||||
do {} while (0); \
|
||||
OPEN_DISP(g); \
|
||||
{ \
|
||||
Gfx* __shadow_gfx = NOW_SHADOW_DISP; \
|
||||
s32 __shadow_opened = 0; \
|
||||
do {} while (0)
|
||||
// clang-format on
|
||||
|
||||
// clang-format off
|
||||
#define CLOSE_SHADOW_DISP(g) \
|
||||
do {} while (0); \
|
||||
(void)__shadow_opened; \
|
||||
SET_SHADOW_DISP(__shadow_gfx); \
|
||||
} \
|
||||
CLOSE_DISP(g); \
|
||||
do {} while (0)
|
||||
// clang-format on
|
||||
|
||||
#define SHADOW_DISP __shadow_gfx
|
||||
|
||||
#define GRAPH_ALLOC(graph, size) \
|
||||
((void*)((graph)->polygon_opaque_thaga.tha.tail_p = \
|
||||
(char*)((int)(graph)->polygon_opaque_thaga.tha.tail_p - (int)(size))))
|
||||
#define GRAPH_ALLOC_TYPE(graph, type, num) (GRAPH_ALLOC(graph, sizeof(type) * (num)))
|
||||
|
||||
extern u8 SoftResetEnable;
|
||||
|
||||
+20
-16
@@ -13,24 +13,28 @@ extern "C" {
|
||||
#define mAD_PAGE_NUM 3
|
||||
|
||||
struct address_ovl_s {
|
||||
u8 _00;
|
||||
u8 _01;
|
||||
u8 command;
|
||||
u8 _03;
|
||||
u8 _04;
|
||||
u8 selected_entry;
|
||||
u8 show_museum_address;
|
||||
u8 _07;
|
||||
u8 page_entry_count[mAD_PAGE_NUM];
|
||||
f32 _0C;
|
||||
f32 _10;
|
||||
f32 _14[mAD_PAGE_NUM];
|
||||
f32 _20[mAD_PAGE_NUM];
|
||||
Mail_nm_c player_mail_name[PLAYER_NUM + 1]; // last entry is the museum name
|
||||
Mail_nm_c animal_mail_name[ANIMAL_NUM_MAX];
|
||||
Gfx* display_list; // set to the beginning of the address display list data for drawing over editor etc
|
||||
u8 _00;
|
||||
u8 _01;
|
||||
u8 command;
|
||||
u8 _03;
|
||||
u8 _04;
|
||||
u8 selected_entry;
|
||||
u8 show_museum_address;
|
||||
u8 _07;
|
||||
u8 page_entry_count[mAD_PAGE_NUM];
|
||||
f32 _0C;
|
||||
f32 _10;
|
||||
f32 _14[mAD_PAGE_NUM];
|
||||
f32 _20[mAD_PAGE_NUM];
|
||||
Mail_nm_c player_mail_name[PLAYER_NUM + 1]; // last entry is the museum name
|
||||
Mail_nm_c animal_mail_name[ANIMAL_NUM_MAX];
|
||||
Gfx* display_list; // set to the beginning of the address display list data for drawing over editor etc
|
||||
};
|
||||
|
||||
extern void mAD_address_ovl_construct(Submenu* submenu);
|
||||
extern void mAD_address_ovl_destruct(Submenu* submenu);
|
||||
extern void mAD_address_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef M_CALENDAR_OVL_H
|
||||
#define M_CALENDAR_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern void mCD_calendar_ovl_construct(Submenu* submenu);
|
||||
extern void mCD_calendar_ovl_destruct(Submenu* submenu);
|
||||
extern void mCD_calendar_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef M_CALENDAR_OVL_H_H
|
||||
#define M_CALENDAR_OVL_H_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef M_CPEDIT_OVL_H
|
||||
#define M_CPEDIT_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern void mCE_cpedit_ovl_construct(Submenu* submenu);
|
||||
extern void mCE_cpedit_ovl_destruct(Submenu* submenu);
|
||||
extern void mCE_cpedit_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef M_CPEDIT_OVL_H_H
|
||||
#define M_CPEDIT_OVL_H_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef M_CPMAIL_OVL_H
|
||||
#define M_CPMAIL_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern void mCM_cpmail_ovl_construct(Submenu* submenu);
|
||||
extern void mCM_cpmail_ovl_destruct(Submenu* submenu);
|
||||
extern void mCM_cpmail_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef M_CPMAIL_OVL_H_H
|
||||
#define M_CPMAIL_OVL_H_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -13,6 +13,12 @@ extern int mCO_top_folder(Submenu* submenu);
|
||||
extern int mCO_check_hide_flg(Submenu* submenu, int folder, int idx);
|
||||
extern void mCO_on_hide_flg(Submenu* submenu, int folder, int idx);
|
||||
extern void mCO_clear_hide_flg(Submenu* submenu);
|
||||
extern void mCO_draw_cporiginal(Submenu* submenu, GRAPH* graph, f32 pos_x, f32 pos_y, f32 scale, int idx,
|
||||
int color_flag);
|
||||
|
||||
extern void mCO_cporiginal_ovl_construct(Submenu* submenu);
|
||||
extern void mCO_cporiginal_ovl_destruct(Submenu* submenu);
|
||||
extern void mCO_cporiginal_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef M_CPWARNING_OVL_H
|
||||
#define M_CPWARNING_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern void mCW_cpwarning_ovl_construct(Submenu* submenu);
|
||||
extern void mCW_cpwarning_ovl_destruct(Submenu* submenu);
|
||||
extern void mCW_cpwarning_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef M_CPWARNING_OVL_H_H
|
||||
#define M_CPWARNING_OVL_H_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -10,6 +10,10 @@ extern "C" {
|
||||
|
||||
extern void mDE_maskcat_init(MaskCat_c* mask_cat);
|
||||
|
||||
extern void mDE_design_ovl_construct(Submenu* submenu);
|
||||
extern void mDE_design_ovl_destruct(Submenu* submenu);
|
||||
extern void mDE_design_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
+33
-29
@@ -10,41 +10,45 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
enum {
|
||||
mDI_FIELD_BODY,
|
||||
mDI_FIELD_BODY,
|
||||
|
||||
mDI_FIELD_NUM
|
||||
mDI_FIELD_NUM
|
||||
};
|
||||
|
||||
struct diary_ovl_s {
|
||||
mDi_data_c* data;
|
||||
u8 field;
|
||||
u8 _05;
|
||||
s16 entry_len[mDI_FIELD_NUM];
|
||||
mDi_entry_c* current_entry;
|
||||
int _0C;
|
||||
int _10;
|
||||
int _14;
|
||||
int _18;
|
||||
s16 move_proc;
|
||||
s16 _1E;
|
||||
s16 _20;
|
||||
s16 _22;
|
||||
s16 _24;
|
||||
f32 _28;
|
||||
s16 _2C;
|
||||
s16 _2E;
|
||||
s16 _30;
|
||||
s16 _32;
|
||||
u32 trigger;
|
||||
u32 button;
|
||||
u32 last_button;
|
||||
s16 _40;
|
||||
s16 _42;
|
||||
s16 cursor_idx;
|
||||
s16 _46;
|
||||
s16 _48;
|
||||
mDi_data_c* data;
|
||||
u8 field;
|
||||
u8 _05;
|
||||
s16 entry_len[mDI_FIELD_NUM];
|
||||
mDi_entry_c* current_entry;
|
||||
int _0C;
|
||||
int _10;
|
||||
int _14;
|
||||
int _18;
|
||||
s16 move_proc;
|
||||
s16 _1E;
|
||||
s16 _20;
|
||||
s16 _22;
|
||||
s16 _24;
|
||||
f32 _28;
|
||||
s16 _2C;
|
||||
s16 _2E;
|
||||
s16 _30;
|
||||
s16 _32;
|
||||
u32 trigger;
|
||||
u32 button;
|
||||
u32 last_button;
|
||||
s16 _40;
|
||||
s16 _42;
|
||||
s16 cursor_idx;
|
||||
s16 _46;
|
||||
s16 _48;
|
||||
};
|
||||
|
||||
extern void mDI_diary_ovl_construct(Submenu* submenu);
|
||||
extern void mDI_diary_ovl_destruct(Submenu* submenu);
|
||||
extern void mDI_diary_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#define M_ENDEDITCHK_H
|
||||
|
||||
#include "types.h"
|
||||
#include "m_editEndChk_h.h"
|
||||
#include "m_editEndChk_ovl_h.h"
|
||||
#include "m_submenu_ovl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -11,21 +11,21 @@ extern "C" {
|
||||
|
||||
/* TODO: verify these */
|
||||
enum {
|
||||
mEE_TYPE_BOARD,
|
||||
mEE_TYPE_NOTICE,
|
||||
mEE_TYPE_MSCORE,
|
||||
mEE_TYPE_CPORIGINAL,
|
||||
mEE_TYPE_ORIGINAL_DESIGN,
|
||||
mEE_TYPE_BOARD,
|
||||
mEE_TYPE_NOTICE,
|
||||
mEE_TYPE_MSCORE,
|
||||
mEE_TYPE_CPORIGINAL,
|
||||
mEE_TYPE_ORIGINAL_DESIGN,
|
||||
|
||||
mEE_TYPE_NUM
|
||||
mEE_TYPE_NUM
|
||||
};
|
||||
|
||||
struct end_edit_chk_s {
|
||||
u8 moving_in;
|
||||
u8 selected_answer;
|
||||
u8 question_alpha_step;
|
||||
u8 question_alpha;
|
||||
f32 scale;
|
||||
u8 moving_in;
|
||||
u8 selected_answer;
|
||||
u8 question_alpha_step;
|
||||
u8 question_alpha;
|
||||
f32 scale;
|
||||
};
|
||||
|
||||
extern void mEE_editEndChk_ovl_set_proc(Submenu* submenu);
|
||||
@@ -9,6 +9,11 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
extern void mGB_copy_image(Submenu*, mActor_name_t, mActor_name_t);
|
||||
extern void mGB_draw_gba(Submenu* submenu, GRAPH* graph, f32 pos_x, f32 pos_y, f32 scale, int idx, int color_flag);
|
||||
|
||||
extern void mGB_gba_ovl_construct(Submenu* submenu);
|
||||
extern void mGB_gba_ovl_destruct(Submenu* submenu);
|
||||
extern void mGB_gba_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef M_HANIWA_OVL_H
|
||||
#define M_HANIWA_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern void mHW_haniwa_ovl_construct(Submenu* submenu);
|
||||
extern void mHW_haniwa_ovl_destruct(Submenu* submenu);
|
||||
extern void mHW_haniwa_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef M_HANIWA_OVL_H_H
|
||||
#define M_HANIWA_OVL_H_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -46,6 +46,10 @@ struct inventory_ovl_s {
|
||||
u8 _3E3[0x5EC - 0x3E3];
|
||||
};
|
||||
|
||||
extern void mIV_inventory_ovl_construct(Submenu* submenu);
|
||||
extern void mIV_inventory_ovl_destruct(Submenu* submenu);
|
||||
extern void mIV_inventory_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
+12
-8
@@ -8,17 +8,21 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
enum {
|
||||
mLE_TYPE_PLAYER_NAME,
|
||||
mLE_TYPE_COUNTRY_NAME,
|
||||
mLE_TYPE_EPHRASE,
|
||||
mLE_TYPE_RESET,
|
||||
mLE_TYPE_REQUEST,
|
||||
mLE_TYPE_MYORIGINAL_NAME,
|
||||
mLE_TYPE_ISLAND_NAME,
|
||||
mLE_TYPE_PLAYER_NAME,
|
||||
mLE_TYPE_COUNTRY_NAME,
|
||||
mLE_TYPE_EPHRASE,
|
||||
mLE_TYPE_RESET,
|
||||
mLE_TYPE_REQUEST,
|
||||
mLE_TYPE_MYORIGINAL_NAME,
|
||||
mLE_TYPE_ISLAND_NAME,
|
||||
|
||||
mLE_TYPE_NUM
|
||||
mLE_TYPE_NUM
|
||||
};
|
||||
|
||||
extern void mLE_ledit_ovl_construct(Submenu* submenu);
|
||||
extern void mLE_ledit_ovl_destruct(Submenu* submenu);
|
||||
extern void mLE_ledit_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef M_MAILBOX_OVL_H
|
||||
#define M_MAILBOX_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern void mMB_mailbox_ovl_construct(Submenu* submenu);
|
||||
extern void mMB_mailbox_ovl_destruct(Submenu* submenu);
|
||||
extern void mMB_mailbox_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef M_MAILBOX_OVL_H_H
|
||||
#define M_MAILBOX_OVL_H_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef M_MSCORE_OVL_H
|
||||
#define M_MSCORE_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern void mMS_mscore_ovl_construct(Submenu* submenu);
|
||||
extern void mMS_mscore_ovl_destruct(Submenu* submenu);
|
||||
extern void mMS_mscore_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef M_MSCORE_OVL_H_H
|
||||
#define M_MSCORE_OVL_H_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -12,6 +12,11 @@ extern u8 mNW_get_image_no(Submenu* submenu, int slot_no);
|
||||
extern int mNW_check_hide_flg(Submenu* submenu, int idx);
|
||||
extern void mNW_on_hide_flg(Submenu* submenu, int idx);
|
||||
extern void mNW_clear_hide_flg(Submenu* submenu);
|
||||
extern void mNW_draw_original(Submenu* submenu, GRAPH* graph, f32 pos_x, f32 pos_y, f32 scale, int idx, int color_flag);
|
||||
|
||||
extern void mNW_needlework_ovl_construct(Submenu* submenu);
|
||||
extern void mNW_needlework_ovl_destruct(Submenu* submenu);
|
||||
extern void mNW_needlework_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -13,13 +13,17 @@ extern "C" {
|
||||
#define mPC_LINE_COUNT 2
|
||||
|
||||
struct passwordChk_ovl_s {
|
||||
int selected_line;
|
||||
u8 _04;
|
||||
u8 _05;
|
||||
u8 line0[mPC_STR_SIZE];
|
||||
u8 line1[mPC_STR_SIZE];
|
||||
int selected_line;
|
||||
u8 _04;
|
||||
u8 _05;
|
||||
u8 line0[mPC_STR_SIZE];
|
||||
u8 line1[mPC_STR_SIZE];
|
||||
};
|
||||
|
||||
extern void mPC_passwordChk_ovl_construct(Submenu* submenu);
|
||||
extern void mPC_passwordChk_ovl_destruct(Submenu* submenu);
|
||||
extern void mPC_passwordChk_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -11,19 +11,23 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
enum {
|
||||
mPM_ENTRY_TOWN,
|
||||
mPM_ENTRY_PLAYER,
|
||||
mPM_ENTRY_TOWN,
|
||||
mPM_ENTRY_PLAYER,
|
||||
|
||||
mPM_ENTRY_NUM
|
||||
mPM_ENTRY_NUM
|
||||
};
|
||||
|
||||
struct passwordMake_ovl_s {
|
||||
int selected_idx;
|
||||
u8 lengths[mPM_ENTRY_NUM];
|
||||
u8 town_name[LAND_NAME_SIZE];
|
||||
u8 player_name[PLAYER_NAME_LEN];
|
||||
int selected_idx;
|
||||
u8 lengths[mPM_ENTRY_NUM];
|
||||
u8 town_name[LAND_NAME_SIZE];
|
||||
u8 player_name[PLAYER_NAME_LEN];
|
||||
};
|
||||
|
||||
extern void mPM_passwordMake_ovl_construct(Submenu* submenu);
|
||||
extern void mPM_passwordMake_ovl_destruct(Submenu* submenu);
|
||||
extern void mPM_passwordMake_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
+28
-4
@@ -18,7 +18,7 @@
|
||||
#include "m_board_ovl_h.h"
|
||||
#include "m_diary_ovl_h.h"
|
||||
#include "m_address_ovl_h.h"
|
||||
#include "m_editEndChk_h.h"
|
||||
#include "m_editEndChk_ovl_h.h"
|
||||
#include "m_haniwaPortrait_ovl_h.h"
|
||||
#include "m_timeIn_ovl_h.h"
|
||||
#include "m_repay_ovl_h.h"
|
||||
@@ -43,6 +43,28 @@ enum {
|
||||
mSM_OVL_PROC_NUM
|
||||
};
|
||||
|
||||
#define mSM_OVL_FLAG_NONE (0)
|
||||
#define mSM_OVL_FLAG_0 (1 << 0)
|
||||
#define mSM_OVL_FLAG_USE_ITEM (1 << 1)
|
||||
#define mSM_OVL_FLAG_USE_TAG (1 << 2)
|
||||
#define mSM_OVL_FLAG_USE_HAND (1 << 3)
|
||||
#define mSM_OVL_FLAG_USE_HANIWA_PORTRAIT (1 << 4)
|
||||
|
||||
typedef void (*mSM_OVL_CT_PROC)(Submenu*);
|
||||
typedef void (*mSM_OVL_DT_PROC)(Submenu*);
|
||||
typedef void (*mSM_OVL_SET_PROC)(Submenu*);
|
||||
|
||||
typedef struct submenu_ovl_dlftbl_s {
|
||||
int _00;
|
||||
int _04;
|
||||
u8* seg_start;
|
||||
u8* seg_end;
|
||||
mSM_OVL_CT_PROC ct_proc;
|
||||
mSM_OVL_DT_PROC dt_proc;
|
||||
mSM_OVL_SET_PROC set_proc;
|
||||
int in_ram_flag;
|
||||
} mSM_Ovl_dlftbl_c;
|
||||
|
||||
// TODO: fill this out
|
||||
typedef struct submenu_segment_s {
|
||||
int _00;
|
||||
@@ -50,7 +72,9 @@ typedef struct submenu_segment_s {
|
||||
s16 _06;
|
||||
s16 _08;
|
||||
s16 _0A;
|
||||
u8 _0C[0x54 - 0x0C];
|
||||
u8 _0C[0x30 - 0x0C];
|
||||
int dlftbl_loaded_num;
|
||||
mSM_Ovl_dlftbl_c* dlftbl_loaded_tbl[8];
|
||||
} mSM_Segment_c;
|
||||
|
||||
typedef struct submenu_menu_info_s {
|
||||
@@ -71,7 +95,7 @@ typedef struct submenu_menu_info_s {
|
||||
|
||||
int next_proc_status;
|
||||
s16 move_drt;
|
||||
u16 _36;
|
||||
s16 move_flag;
|
||||
|
||||
int data0;
|
||||
int data1;
|
||||
@@ -181,7 +205,7 @@ struct submenu_overlay_s {
|
||||
|
||||
extern void mSM_menu_ovl_init(Submenu* submenu);
|
||||
extern void mSM_draw_original(Submenu* submenu, GRAPH* graph, f32 pos_x, f32 pos_y, f32 scale, mActor_name_t item,
|
||||
int shadow_flag);
|
||||
int color_flag);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -166,6 +166,9 @@ struct tag_ovl_s {
|
||||
extern int mTG_mark_main(Submenu*, mSM_MenuInfo_c*, int, int);
|
||||
extern int mTG_mark_mainX(Submenu*, mSM_MenuInfo_c*, int, int, int, int);
|
||||
|
||||
extern void mTG_tag_ovl_construct(Submenu* submenu);
|
||||
extern void mTG_tag_ovl_destruct(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -12,10 +12,6 @@
|
||||
#include "m_shop.h"
|
||||
#include "m_scene_table.h"
|
||||
|
||||
#ifdef MUST_MATCH
|
||||
#include "ppcdis.h"
|
||||
#endif
|
||||
|
||||
static u8 l_candidate_num[FG_BLOCK_TOTAL_NUM];
|
||||
|
||||
static s8 l_non_area[mAGrw_CHECK_CANCEL_NUM][4] = {
|
||||
|
||||
+1087
-1367
File diff suppressed because it is too large
Load Diff
+176
-242
@@ -1,19 +1,19 @@
|
||||
#include "m_editEndChk.h"
|
||||
#include "m_editEndChk_ovl.h"
|
||||
|
||||
#include "audio.h"
|
||||
#include "m_font.h"
|
||||
#include "sys_matrix.h"
|
||||
|
||||
typedef struct editEndChk_win_data_s {
|
||||
int answer_num;
|
||||
Gfx* win_model;
|
||||
Gfx* char_model;
|
||||
f32 char_x;
|
||||
f32 char_y;
|
||||
f32 answer_x;
|
||||
f32 answer_y;
|
||||
f32 question_x;
|
||||
f32 question_y;
|
||||
int answer_num;
|
||||
Gfx* win_model;
|
||||
Gfx* char_model;
|
||||
f32 char_x;
|
||||
f32 char_y;
|
||||
f32 answer_x;
|
||||
f32 answer_y;
|
||||
f32 question_x;
|
||||
f32 question_y;
|
||||
} mEE_win_data_c;
|
||||
|
||||
extern Gfx lat_sentaku2_winT_model[];
|
||||
@@ -23,46 +23,11 @@ extern Gfx lat_sentaku_winT_model[];
|
||||
extern Gfx lat_sentaku_c_model[];
|
||||
|
||||
static mEE_win_data_c win_data[] = {
|
||||
{
|
||||
2,
|
||||
lat_sentaku2_winT_model,
|
||||
lat_sentaku2_c_model,
|
||||
-45.0f, 43.0f,
|
||||
65.0f, -74.0f,
|
||||
0.0f, 0.0f
|
||||
},
|
||||
{
|
||||
3,
|
||||
lat_sentaku_winT_model,
|
||||
lat_sentaku_c_model,
|
||||
-81.0f, 58.0f,
|
||||
60.0f, -71.0f,
|
||||
1.0f, -4.0f
|
||||
},
|
||||
{
|
||||
3,
|
||||
lat_sentaku_winT_model,
|
||||
lat_sentaku_c_model,
|
||||
-81.0f, 58.0f,
|
||||
42.0f, -55.0f,
|
||||
1.0f, 15.0f
|
||||
},
|
||||
{
|
||||
3,
|
||||
lat_sentaku_winT_model,
|
||||
lat_sentaku_c_model,
|
||||
-81.0f, 58.0f,
|
||||
60.0f, -71.0f,
|
||||
0.0f, 0.0f
|
||||
},
|
||||
{
|
||||
3,
|
||||
lat_sentaku_winT_model,
|
||||
lat_sentaku_c_model,
|
||||
-81.0f, 58.0f,
|
||||
60.0f, -71.0f,
|
||||
1.0f, -4.0f
|
||||
},
|
||||
{ 2, lat_sentaku2_winT_model, lat_sentaku2_c_model, -45.0f, 43.0f, 65.0f, -74.0f, 0.0f, 0.0f },
|
||||
{ 3, lat_sentaku_winT_model, lat_sentaku_c_model, -81.0f, 58.0f, 60.0f, -71.0f, 1.0f, -4.0f },
|
||||
{ 3, lat_sentaku_winT_model, lat_sentaku_c_model, -81.0f, 58.0f, 42.0f, -55.0f, 1.0f, 15.0f },
|
||||
{ 3, lat_sentaku_winT_model, lat_sentaku_c_model, -81.0f, 58.0f, 60.0f, -71.0f, 0.0f, 0.0f },
|
||||
{ 3, lat_sentaku_winT_model, lat_sentaku_c_model, -81.0f, 58.0f, 60.0f, -71.0f, 1.0f, -4.0f },
|
||||
};
|
||||
|
||||
static u8 mEE_str_table[11] = "Is this OK?";
|
||||
@@ -71,98 +36,86 @@ static u8 mEE_str_data1[7] = "Rewrite";
|
||||
static u8 mEE_str_data2[12] = "Throw it out";
|
||||
|
||||
static void mEE_move_Move(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
|
||||
(*submenu->overlay->move_Move_proc)(submenu, menu_info);
|
||||
(*submenu->overlay->move_Move_proc)(submenu, menu_info);
|
||||
}
|
||||
|
||||
static void mEE_move_Play(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
|
||||
mEE_win_data_c* data = &win_data[menu_info->data0];
|
||||
mEE_Ovl_c* editEndChk_ovl = submenu->overlay->editEndChk_ovl;
|
||||
u32 trigger = submenu->overlay->menu_control.trigger;
|
||||
int max_answer_no = data->answer_num - 1;
|
||||
mEE_win_data_c* data = &win_data[menu_info->data0];
|
||||
mEE_Ovl_c* editEndChk_ovl = submenu->overlay->editEndChk_ovl;
|
||||
u32 trigger = submenu->overlay->menu_control.trigger;
|
||||
int max_answer_no = data->answer_num - 1;
|
||||
|
||||
if ((trigger & BUTTON_B)) {
|
||||
sAdo_SysTrgStart(0x1003);
|
||||
menu_info->proc_status = mSM_OVL_PROC_MOVE;
|
||||
menu_info->move_drt = mSM_MOVE_OUT_BOTTOM;
|
||||
menu_info->next_proc_status = mSM_OVL_PROC_END;
|
||||
menu_info->data1 = 1;
|
||||
}
|
||||
else if ((trigger & (BUTTON_A | BUTTON_START))) {
|
||||
if (editEndChk_ovl->moving_in == FALSE) {
|
||||
editEndChk_ovl->moving_in = TRUE;
|
||||
editEndChk_ovl->scale = 0.0f;
|
||||
}
|
||||
else {
|
||||
menu_info->proc_status = mSM_OVL_PROC_MOVE;
|
||||
menu_info->move_drt = mSM_MOVE_OUT_BOTTOM;
|
||||
menu_info->next_proc_status = mSM_OVL_PROC_END;
|
||||
menu_info->data1 = editEndChk_ovl->selected_answer;
|
||||
}
|
||||
|
||||
if (menu_info->data1 == 2) {
|
||||
sAdo_SysTrgStart(0x1003);
|
||||
}
|
||||
else {
|
||||
sAdo_SysTrgStart(NA_SE_MENU_EXIT);
|
||||
}
|
||||
}
|
||||
else if (editEndChk_ovl->moving_in == TRUE) {
|
||||
if (editEndChk_ovl->scale < 1.0f) {
|
||||
editEndChk_ovl->scale += 0.2f;
|
||||
}
|
||||
else {
|
||||
editEndChk_ovl->scale = 1.0f;
|
||||
|
||||
if ((trigger & BUTTON_CUP)) {
|
||||
if (editEndChk_ovl->selected_answer != 0) {
|
||||
editEndChk_ovl->selected_answer--;
|
||||
sAdo_SysTrgStart(NA_SE_CURSOL);
|
||||
if ((trigger & BUTTON_B)) {
|
||||
sAdo_SysTrgStart(0x1003);
|
||||
menu_info->proc_status = mSM_OVL_PROC_MOVE;
|
||||
menu_info->move_drt = mSM_MOVE_OUT_BOTTOM;
|
||||
menu_info->next_proc_status = mSM_OVL_PROC_END;
|
||||
menu_info->data1 = 1;
|
||||
} else if ((trigger & (BUTTON_A | BUTTON_START))) {
|
||||
if (editEndChk_ovl->moving_in == FALSE) {
|
||||
editEndChk_ovl->moving_in = TRUE;
|
||||
editEndChk_ovl->scale = 0.0f;
|
||||
} else {
|
||||
menu_info->proc_status = mSM_OVL_PROC_MOVE;
|
||||
menu_info->move_drt = mSM_MOVE_OUT_BOTTOM;
|
||||
menu_info->next_proc_status = mSM_OVL_PROC_END;
|
||||
menu_info->data1 = editEndChk_ovl->selected_answer;
|
||||
}
|
||||
}
|
||||
else if ((trigger & BUTTON_CDOWN)) {
|
||||
if (editEndChk_ovl->selected_answer < max_answer_no) {
|
||||
editEndChk_ovl->selected_answer++;
|
||||
sAdo_SysTrgStart(NA_SE_CURSOL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
editEndChk_ovl->question_alpha_step = 0;
|
||||
editEndChk_ovl->question_alpha = 0;
|
||||
}
|
||||
else {
|
||||
int step = (editEndChk_ovl->question_alpha_step + 1) % 30;
|
||||
|
||||
editEndChk_ovl->question_alpha_step = step;
|
||||
if (step < 15) {
|
||||
editEndChk_ovl->question_alpha = ((f32)step * 255.0f) / 15.0f;
|
||||
if (menu_info->data1 == 2) {
|
||||
sAdo_SysTrgStart(0x1003);
|
||||
} else {
|
||||
sAdo_SysTrgStart(NA_SE_MENU_EXIT);
|
||||
}
|
||||
} else if (editEndChk_ovl->moving_in == TRUE) {
|
||||
if (editEndChk_ovl->scale < 1.0f) {
|
||||
editEndChk_ovl->scale += 0.2f;
|
||||
} else {
|
||||
editEndChk_ovl->scale = 1.0f;
|
||||
|
||||
if ((trigger & BUTTON_CUP)) {
|
||||
if (editEndChk_ovl->selected_answer != 0) {
|
||||
editEndChk_ovl->selected_answer--;
|
||||
sAdo_SysTrgStart(NA_SE_CURSOL);
|
||||
}
|
||||
} else if ((trigger & BUTTON_CDOWN)) {
|
||||
if (editEndChk_ovl->selected_answer < max_answer_no) {
|
||||
editEndChk_ovl->selected_answer++;
|
||||
sAdo_SysTrgStart(NA_SE_CURSOL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
editEndChk_ovl->question_alpha_step = 0;
|
||||
editEndChk_ovl->question_alpha = 0;
|
||||
} else {
|
||||
int step = (editEndChk_ovl->question_alpha_step + 1) % 30;
|
||||
|
||||
editEndChk_ovl->question_alpha_step = step;
|
||||
if (step < 15) {
|
||||
editEndChk_ovl->question_alpha = ((f32)step * 255.0f) / 15.0f;
|
||||
} else {
|
||||
editEndChk_ovl->question_alpha = ((f32)(30 - step) * 255.0f) / 15.0f;
|
||||
}
|
||||
}
|
||||
else {
|
||||
editEndChk_ovl->question_alpha = ((f32)(30 - step) * 255.0f) / 15.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void mEE_move_End(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
|
||||
(*submenu->overlay->move_End_proc)(submenu, menu_info);
|
||||
(*submenu->overlay->move_End_proc)(submenu, menu_info);
|
||||
}
|
||||
|
||||
typedef void (*mEE_OVL_MOVE_PROC)(Submenu*, mSM_MenuInfo_c*);
|
||||
|
||||
static void mEE_editEndChk_ovl_move(Submenu* submenu) {
|
||||
static mEE_OVL_MOVE_PROC ovl_move_proc[mSM_OVL_PROC_NUM] = {
|
||||
&mEE_move_Move,
|
||||
&mEE_move_Play,
|
||||
(mEE_OVL_MOVE_PROC)&none_proc1,
|
||||
(mEE_OVL_MOVE_PROC)&none_proc1,
|
||||
mEE_move_End
|
||||
};
|
||||
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
mSM_MenuInfo_c* menu_info = &overlay->menu_info[mSM_OVL_EDITENDCHK];
|
||||
static mEE_OVL_MOVE_PROC ovl_move_proc[mSM_OVL_PROC_NUM] = { &mEE_move_Move, &mEE_move_Play,
|
||||
(mEE_OVL_MOVE_PROC)&none_proc1,
|
||||
(mEE_OVL_MOVE_PROC)&none_proc1, mEE_move_End };
|
||||
|
||||
(*menu_info->pre_move_func)(submenu);
|
||||
(*ovl_move_proc[menu_info->proc_status])(submenu, menu_info);
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
mSM_MenuInfo_c* menu_info = &overlay->menu_info[mSM_OVL_EDITENDCHK];
|
||||
|
||||
(*menu_info->pre_move_func)(submenu);
|
||||
(*ovl_move_proc[menu_info->proc_status])(submenu, menu_info);
|
||||
}
|
||||
|
||||
extern Gfx lat_kakunin_DL_mode[];
|
||||
@@ -170,175 +123,156 @@ extern Gfx lat_kakunin_wakuT_model[];
|
||||
extern Gfx lat_kakunin_c_model[];
|
||||
|
||||
static void mEE_set_question_field(Submenu* submenu, GRAPH* graph, f32 x, f32 y) {
|
||||
Gfx* gfx;
|
||||
Gfx* gfx;
|
||||
|
||||
Matrix_scale(16.0f, 16.0f, 1.0f, 0);
|
||||
Matrix_translate(x, y, 140.0f, 1);
|
||||
Matrix_scale(16.0f, 16.0f, 1.0f, 0);
|
||||
Matrix_translate(x, y, 140.0f, 1);
|
||||
|
||||
OPEN_DISP(graph);
|
||||
gfx = NOW_POLY_OPA_DISP;
|
||||
OPEN_DISP(graph);
|
||||
gfx = NOW_POLY_OPA_DISP;
|
||||
|
||||
gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gfx++, lat_kakunin_DL_mode);
|
||||
gSPDisplayList(gfx++, lat_kakunin_wakuT_model);
|
||||
gDPPipeSync(gfx++);
|
||||
gDPSetPrimColor(gfx++, 0, 255, 0, 0, 255, submenu->overlay->editEndChk_ovl->question_alpha);
|
||||
gSPDisplayList(gfx++, lat_kakunin_c_model);
|
||||
gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gfx++, lat_kakunin_DL_mode);
|
||||
gSPDisplayList(gfx++, lat_kakunin_wakuT_model);
|
||||
gDPPipeSync(gfx++);
|
||||
gDPSetPrimColor(gfx++, 0, 255, 0, 0, 255, submenu->overlay->editEndChk_ovl->question_alpha);
|
||||
gSPDisplayList(gfx++, lat_kakunin_c_model);
|
||||
|
||||
SET_POLY_OPA_DISP(gfx);
|
||||
CLOSE_DISP(graph);
|
||||
SET_POLY_OPA_DISP(gfx);
|
||||
CLOSE_DISP(graph);
|
||||
}
|
||||
|
||||
static void mEE_set_answer_field(Submenu* submenu, GRAPH* graph, mEE_win_data_c* data, f32 x, f32 y) {
|
||||
f32 scale = submenu->overlay->editEndChk_ovl->scale;
|
||||
Gfx* gfx;
|
||||
f32 scale = submenu->overlay->editEndChk_ovl->scale;
|
||||
Gfx* gfx;
|
||||
|
||||
Matrix_scale(16.0f, 16.0f, 1.0f, 0);
|
||||
Matrix_translate(x, y, 140.0f, 1);
|
||||
Matrix_scale(scale, scale, 1.0f, 1);
|
||||
|
||||
OPEN_DISP(graph);
|
||||
gfx = NOW_POLY_OPA_DISP;
|
||||
|
||||
gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gfx++, lat_kakunin_DL_mode);
|
||||
gSPDisplayList(gfx++, data->win_model);
|
||||
|
||||
if (scale == 1.0f) {
|
||||
Matrix_scale(16.0f, 16.0f, 1.0f, 0);
|
||||
Matrix_translate(x, y - ((f32)submenu->overlay->editEndChk_ovl->selected_answer * 16.0f), 140.0f, 1);
|
||||
gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gfx++, data->char_model);
|
||||
}
|
||||
Matrix_translate(x, y, 140.0f, 1);
|
||||
Matrix_scale(scale, scale, 1.0f, 1);
|
||||
|
||||
SET_POLY_OPA_DISP(gfx);
|
||||
CLOSE_DISP(graph);
|
||||
OPEN_DISP(graph);
|
||||
gfx = NOW_POLY_OPA_DISP;
|
||||
|
||||
gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gfx++, lat_kakunin_DL_mode);
|
||||
gSPDisplayList(gfx++, data->win_model);
|
||||
|
||||
if (scale == 1.0f) {
|
||||
Matrix_scale(16.0f, 16.0f, 1.0f, 0);
|
||||
Matrix_translate(x, y - ((f32)submenu->overlay->editEndChk_ovl->selected_answer * 16.0f), 140.0f, 1);
|
||||
gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gfx++, data->char_model);
|
||||
}
|
||||
|
||||
SET_POLY_OPA_DISP(gfx);
|
||||
CLOSE_DISP(graph);
|
||||
}
|
||||
|
||||
static void mEE_set_question_character(Submenu* submenu, GRAPH* graph, GAME* game, f32 x, f32 y) {
|
||||
(*submenu->overlay->set_char_matrix_proc)(graph);
|
||||
mFont_SetLineStrings(
|
||||
game,
|
||||
mEE_str_table, sizeof(mEE_str_table),
|
||||
107.0f + x, 194.0f - y,
|
||||
80, 80, 230, 255,
|
||||
FALSE,
|
||||
TRUE,
|
||||
1.0f, 1.0f,
|
||||
mFont_MODE_POLY
|
||||
);
|
||||
(*submenu->overlay->set_char_matrix_proc)(graph);
|
||||
mFont_SetLineStrings(game, mEE_str_table, sizeof(mEE_str_table), 107.0f + x, 194.0f - y, 80, 80, 230, 255, FALSE,
|
||||
TRUE, 1.0f, 1.0f, mFont_MODE_POLY);
|
||||
}
|
||||
|
||||
typedef struct editEndChk_str_s {
|
||||
u8* str;
|
||||
int len;
|
||||
u8* str;
|
||||
int len;
|
||||
} mEE_str_c;
|
||||
|
||||
static void mEE_set_answer_character(Submenu* submenu, GRAPH* graph, GAME* game, mEE_win_data_c* data, f32 x, f32 y) {
|
||||
static mEE_str_c str_table[] = {
|
||||
{ mEE_str_data0, sizeof(mEE_str_data0) },
|
||||
{ mEE_str_data1, sizeof(mEE_str_data1) },
|
||||
{ mEE_str_data2, sizeof(mEE_str_data2) },
|
||||
};
|
||||
static mEE_str_c str_table[] = {
|
||||
{ mEE_str_data0, sizeof(mEE_str_data0) },
|
||||
{ mEE_str_data1, sizeof(mEE_str_data1) },
|
||||
{ mEE_str_data2, sizeof(mEE_str_data2) },
|
||||
};
|
||||
|
||||
static int col_table[2][3] = {
|
||||
{ 165, 185, 185 },
|
||||
{ 100, 130, 245 }
|
||||
};
|
||||
static int col_table[2][3] = { { 165, 185, 185 }, { 100, 130, 245 } };
|
||||
|
||||
mEE_Ovl_c* editEndChk_ovl = submenu->overlay->editEndChk_ovl;
|
||||
mEE_str_c* str_p = str_table;
|
||||
f32 scale = editEndChk_ovl->scale;
|
||||
int max = data->answer_num;
|
||||
int i;
|
||||
mEE_Ovl_c* editEndChk_ovl = submenu->overlay->editEndChk_ovl;
|
||||
mEE_str_c* str_p = str_table;
|
||||
f32 scale = editEndChk_ovl->scale;
|
||||
int max = data->answer_num;
|
||||
int i;
|
||||
|
||||
(*submenu->overlay->set_char_matrix_proc)(graph);
|
||||
x = (160.0f + x) + (data->char_x * scale);
|
||||
y = (120.0f - y) - (data->char_y * scale);
|
||||
(*submenu->overlay->set_char_matrix_proc)(graph);
|
||||
x = (160.0f + x) + (data->char_x * scale);
|
||||
y = (120.0f - y) - (data->char_y * scale);
|
||||
|
||||
for (i = 0; i < max; i++, str_p++) {
|
||||
int idx = i == editEndChk_ovl->selected_answer ? 1 : 0;
|
||||
int* col = col_table[idx];
|
||||
for (i = 0; i < max; i++, str_p++) {
|
||||
int idx = i == editEndChk_ovl->selected_answer ? 1 : 0;
|
||||
int* col = col_table[idx];
|
||||
|
||||
mFont_SetLineStrings(
|
||||
game,
|
||||
str_p->str, str_p->len,
|
||||
x, y,
|
||||
col[0], col[1], col[2], 255,
|
||||
FALSE,
|
||||
TRUE,
|
||||
scale, scale,
|
||||
mFont_MODE_POLY
|
||||
);
|
||||
mFont_SetLineStrings(game, str_p->str, str_p->len, x, y, col[0], col[1], col[2], 255, FALSE, TRUE, scale, scale,
|
||||
mFont_MODE_POLY);
|
||||
|
||||
y += scale * 16.0f;
|
||||
}
|
||||
y += scale * 16.0f;
|
||||
}
|
||||
}
|
||||
|
||||
static void mEE_set_dl(Submenu* submenu, GAME* game, mSM_MenuInfo_c* menu_info) {
|
||||
mEE_win_data_c* data = &win_data[menu_info->data0];
|
||||
GRAPH* graph = game->graph;
|
||||
f32 x;
|
||||
f32 y;
|
||||
mEE_win_data_c* data = &win_data[menu_info->data0];
|
||||
GRAPH* graph = game->graph;
|
||||
f32 x;
|
||||
f32 y;
|
||||
|
||||
x = menu_info->position[0] + data->question_x;
|
||||
y = menu_info->position[1] + data->question_y;
|
||||
x = menu_info->position[0] + data->question_x;
|
||||
y = menu_info->position[1] + data->question_y;
|
||||
|
||||
mEE_set_question_field(submenu, graph, x, y);
|
||||
mEE_set_question_character(submenu, graph, game, x, y);
|
||||
mEE_set_question_field(submenu, graph, x, y);
|
||||
mEE_set_question_character(submenu, graph, game, x, y);
|
||||
|
||||
if (submenu->overlay->editEndChk_ovl->moving_in == TRUE) {
|
||||
x = menu_info->position[0] + data->answer_x;
|
||||
y = menu_info->position[1] + data->answer_y;
|
||||
if (submenu->overlay->editEndChk_ovl->moving_in == TRUE) {
|
||||
x = menu_info->position[0] + data->answer_x;
|
||||
y = menu_info->position[1] + data->answer_y;
|
||||
|
||||
mEE_set_answer_field(submenu, graph, data, x, y);
|
||||
mEE_set_answer_character(submenu, graph, game, data, x, y);
|
||||
}
|
||||
mEE_set_answer_field(submenu, graph, data, x, y);
|
||||
mEE_set_answer_character(submenu, graph, game, data, x, y);
|
||||
}
|
||||
}
|
||||
|
||||
static void mEE_editEndChk_ovl_draw(Submenu* submenu, GAME* game) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
mSM_MenuInfo_c* menu_info = &overlay->menu_info[mSM_OVL_EDITENDCHK];
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
mSM_MenuInfo_c* menu_info = &overlay->menu_info[mSM_OVL_EDITENDCHK];
|
||||
|
||||
(*menu_info->pre_draw_func)(submenu, game);
|
||||
mEE_set_dl(submenu, game, menu_info);
|
||||
(*menu_info->pre_draw_func)(submenu, game);
|
||||
mEE_set_dl(submenu, game, menu_info);
|
||||
}
|
||||
|
||||
extern void mEE_editEndChk_ovl_set_proc(Submenu* submenu) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
|
||||
overlay->menu_control.menu_move_func = &mEE_editEndChk_ovl_move;
|
||||
overlay->menu_control.menu_draw_func = &mEE_editEndChk_ovl_draw;
|
||||
overlay->menu_control.menu_move_func = &mEE_editEndChk_ovl_move;
|
||||
overlay->menu_control.menu_draw_func = &mEE_editEndChk_ovl_draw;
|
||||
}
|
||||
|
||||
static void mEE_editEndChk_ovl_init(Submenu* submenu) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
mSM_MenuInfo_c* menu_info = &overlay->menu_info[mSM_OVL_EDITENDCHK];
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
mSM_MenuInfo_c* menu_info = &overlay->menu_info[mSM_OVL_EDITENDCHK];
|
||||
|
||||
overlay->menu_control.animation_flag = FALSE;
|
||||
menu_info->proc_status = mSM_OVL_PROC_MOVE;
|
||||
menu_info->move_drt = mSM_MOVE_IN_BOTTOM;
|
||||
menu_info->next_proc_status = mSM_OVL_PROC_PLAY;
|
||||
overlay->menu_control.animation_flag = FALSE;
|
||||
menu_info->proc_status = mSM_OVL_PROC_MOVE;
|
||||
menu_info->move_drt = mSM_MOVE_IN_BOTTOM;
|
||||
menu_info->next_proc_status = mSM_OVL_PROC_PLAY;
|
||||
}
|
||||
|
||||
static mEE_Ovl_c ee_ovl_data;
|
||||
|
||||
extern void mEE_editEndChk_ovl_construct(Submenu* submenu) {
|
||||
if (submenu->overlay->editEndChk_ovl == NULL) {
|
||||
submenu->overlay->editEndChk_ovl = &ee_ovl_data;
|
||||
}
|
||||
if (submenu->overlay->editEndChk_ovl == NULL) {
|
||||
submenu->overlay->editEndChk_ovl = &ee_ovl_data;
|
||||
}
|
||||
|
||||
ee_ovl_data.moving_in = FALSE;
|
||||
ee_ovl_data.selected_answer = 0;
|
||||
ee_ovl_data.question_alpha_step = 0;
|
||||
ee_ovl_data.question_alpha = 0;
|
||||
ee_ovl_data.moving_in = FALSE;
|
||||
ee_ovl_data.selected_answer = 0;
|
||||
ee_ovl_data.question_alpha_step = 0;
|
||||
ee_ovl_data.question_alpha = 0;
|
||||
|
||||
mEE_editEndChk_ovl_init(submenu);
|
||||
mEE_editEndChk_ovl_set_proc(submenu);
|
||||
mEE_editEndChk_ovl_init(submenu);
|
||||
mEE_editEndChk_ovl_set_proc(submenu);
|
||||
}
|
||||
|
||||
extern void mEE_editEndChk_ovl_destruct(Submenu* submenu) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
|
||||
overlay->editEndChk_ovl = NULL;
|
||||
overlay->editEndChk_ovl = NULL;
|
||||
}
|
||||
|
||||
+489
-606
File diff suppressed because it is too large
Load Diff
+2238
-159
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user