mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-08-05 00:59:18 -04:00
Implement & link m_catalog_ovl
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
#ifndef M_CATALOG_OVL_H
|
||||
#define M_CATALOG_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
#include "m_catalog_ovl_h.h"
|
||||
#include "m_submenu_ovl.h"
|
||||
#include "ac_furniture.h"
|
||||
#include "m_item_name.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define mCL_MENU_ITEM_MAX 742
|
||||
#define mCL_MENU_PAGE_SIZE 7
|
||||
#define mCL_ITEM_DATA_NUM 2
|
||||
|
||||
enum {
|
||||
mCL_MENU_FTR,
|
||||
mCL_MENU_WALL,
|
||||
mCL_MENU_CARPET,
|
||||
mCL_MENU_CLOTH,
|
||||
mCL_MENU_UMBRELLA,
|
||||
mCL_MENU_PAPER,
|
||||
mCL_MENU_HANIWA,
|
||||
mCL_MENU_FOSSIL,
|
||||
mCL_MENU_MUSIC,
|
||||
|
||||
mCL_MENU_NUM
|
||||
};
|
||||
|
||||
typedef struct catalog_item_s {
|
||||
FTR_ACTOR ftr_actor;
|
||||
u8* seg0;
|
||||
u8* seg1;
|
||||
u8 segment_data[0x4820];
|
||||
aFTR_PROFILE* profile;
|
||||
int seg_ofs;
|
||||
s16 gfx_type;
|
||||
s16 timer;
|
||||
u32 price;
|
||||
f32 scale;
|
||||
f32 pos_y;
|
||||
mActor_name_t item_no;
|
||||
u16 _509A;
|
||||
u16 _509C;
|
||||
} mCL_Item_c;
|
||||
|
||||
typedef struct catalog_menu_s {
|
||||
s16 item_count;
|
||||
s16 top_idx;
|
||||
s16 y_idx;
|
||||
u8 completed_flag;
|
||||
mActor_name_t item_list[mCL_MENU_ITEM_MAX];
|
||||
u8 item_name[mCL_MENU_PAGE_SIZE][mIN_ITEM_NAME_LEN];
|
||||
} mCL_Menu_c;
|
||||
|
||||
struct catalog_ovl_s {
|
||||
u8 item_data_idx;
|
||||
u8 page_no;
|
||||
s16 page_timer;
|
||||
int _0004;
|
||||
mCL_Item_c item_data[mCL_ITEM_DATA_NUM];
|
||||
mCL_Menu_c menu_data[mCL_MENU_NUM];
|
||||
u8 _D9AC[72];
|
||||
u8 page_order[mCL_MENU_NUM];
|
||||
u8 change_flag;
|
||||
u8 counter;
|
||||
u8 alpha;
|
||||
};
|
||||
|
||||
extern void mCL_catalog_ovl_set_proc(Submenu* submenu);
|
||||
extern void mCL_catalog_ovl_construct(Submenu* submenu);
|
||||
extern void mCL_catalog_ovl_destruct(Submenu* submenu);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifndef M_CATALOG_OVL_H_H
|
||||
#define M_CATALOG_OVL_H_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct catalog_ovl_s mCL_Ovl_c;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,26 @@
|
||||
#ifndef M_HAND_OVL_H
|
||||
#define M_HAND_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
#include "m_hand_ovl_h.h"
|
||||
#include "m_submenu_ovl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef void (*mHD_OVL_NOP_HAND_FUNC)(Submenu*);
|
||||
typedef void (*mHD_OVL_SET_HAND_FUNC)(Submenu*);
|
||||
|
||||
/* sizeof(struct hand_ovl_s) == 0x378 */
|
||||
struct hand_ovl_s {
|
||||
u8 _000[0x370 - 0x000]; /* TODO */
|
||||
mHD_OVL_NOP_HAND_FUNC nop_hand_func;
|
||||
mHD_OVL_SET_HAND_FUNC set_hand_func;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifndef M_HAND_OVL_H_H
|
||||
#define M_HAND_OVL_H_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct hand_ovl_s mHD_Ovl_c;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+101
-94
@@ -25,69 +25,76 @@
|
||||
#include "m_notice_ovl_h.h"
|
||||
#include "m_birthday_ovl_h.h"
|
||||
#include "m_tag_ovl_h.h"
|
||||
#include "m_catalog_ovl_h.h"
|
||||
#include "m_hand_ovl_h.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum {
|
||||
mSM_OVL_PROC_MOVE,
|
||||
mSM_OVL_PROC_PLAY,
|
||||
mSM_OVL_PROC_WAIT,
|
||||
mSM_OVL_PROC_OBEY,
|
||||
mSM_OVL_PROC_END,
|
||||
mSM_OVL_PROC_MOVE,
|
||||
mSM_OVL_PROC_PLAY,
|
||||
mSM_OVL_PROC_WAIT,
|
||||
mSM_OVL_PROC_OBEY,
|
||||
mSM_OVL_PROC_END,
|
||||
|
||||
mSM_OVL_PROC_NUM
|
||||
mSM_OVL_PROC_NUM
|
||||
};
|
||||
|
||||
// TODO: fill this out
|
||||
typedef struct submenu_segment_s {
|
||||
u8 _00[0x54];
|
||||
u8 _00[0x54];
|
||||
} mSM_Segment_c;
|
||||
|
||||
typedef struct submenu_menu_info_s {
|
||||
int menu_type;
|
||||
int proc_status;
|
||||
|
||||
int pre_menu_type;
|
||||
SUBMENU_PROC pre_move_func;
|
||||
SUBMENU_GAME_PROC pre_draw_func;
|
||||
int menu_type;
|
||||
int proc_status;
|
||||
|
||||
int next_menu_type;
|
||||
int pre_menu_type;
|
||||
SUBMENU_PROC pre_move_func;
|
||||
SUBMENU_GAME_PROC pre_draw_func;
|
||||
|
||||
f32 position[2];
|
||||
f32 speed[2];
|
||||
int next_menu_type;
|
||||
|
||||
char* _28;
|
||||
int _2C;
|
||||
f32 position[2];
|
||||
f32 speed[2];
|
||||
|
||||
int next_proc_status;
|
||||
s16 move_drt;
|
||||
u16 _36;
|
||||
char* _28;
|
||||
int _2C;
|
||||
|
||||
int data0;
|
||||
int data1;
|
||||
void* data2;
|
||||
int data3;
|
||||
int next_proc_status;
|
||||
s16 move_drt;
|
||||
u16 _36;
|
||||
|
||||
int data0;
|
||||
int data1;
|
||||
void* data2;
|
||||
int data3;
|
||||
} mSM_MenuInfo_c;
|
||||
|
||||
typedef void (*mSM_HAND_MOVE_FUNC)(Submenu*);
|
||||
typedef void (*mSM_HAND_DRAW_FUNC)(Submenu*, GAME*);
|
||||
typedef void (*mSM_TAG_MOVE_FUNC)(Submenu*, mSM_MenuInfo_c*);
|
||||
typedef void (*mSM_TAG_DRAW_FUNC)(Submenu*, GAME*, int);
|
||||
|
||||
typedef struct submenu_control_s {
|
||||
SUBMENU_PROC menu_move_func;
|
||||
SUBMENU_GAME_PROC menu_draw_func;
|
||||
SUBMENU_PROC menu_move_func;
|
||||
SUBMENU_GAME_PROC menu_draw_func;
|
||||
|
||||
void* hand_move_func;
|
||||
void* hand_draw_func;
|
||||
mSM_HAND_MOVE_FUNC hand_move_func;
|
||||
mSM_HAND_DRAW_FUNC hand_draw_func;
|
||||
|
||||
void* tag_move_func;
|
||||
void* tag_draw_func;
|
||||
mSM_TAG_MOVE_FUNC tag_move_func;
|
||||
mSM_TAG_DRAW_FUNC tag_draw_func;
|
||||
|
||||
int stick_release;
|
||||
u32 trigger;
|
||||
u32 last_trigger;
|
||||
s16 repeat_timer;
|
||||
s16 texture_movement_angle;
|
||||
f32 texture_pos[2];
|
||||
int animation_flag;
|
||||
int stick_release;
|
||||
u32 trigger;
|
||||
u32 last_trigger;
|
||||
s16 repeat_timer;
|
||||
s16 texture_movement_angle;
|
||||
f32 texture_pos[2];
|
||||
int animation_flag;
|
||||
} mSM_Control_c;
|
||||
|
||||
typedef void (*mSM_RETURN_FUNC_PROC)(Submenu*, mSM_MenuInfo_c*);
|
||||
@@ -106,62 +113,62 @@ typedef void (*mSM_MOVE_PROC)(Submenu*, mSM_MenuInfo_c*);
|
||||
|
||||
/* sizeof(struct submenu_overlay_s) == 0xA04 */
|
||||
struct submenu_overlay_s {
|
||||
/* TODO: finish */
|
||||
/* 0x000 */ mSM_Segment_c segment;
|
||||
/* 0x054 */ mSM_MenuInfo_c menu_info[mSM_OVL_NUM];
|
||||
/* 0x90C */ mSM_Control_c menu_control;
|
||||
/* 0x940 */ mSM_RETURN_FUNC_PROC return_func_proc;
|
||||
/* 0x944 */ mSM_MOVE_MOVE_PROC move_Move_proc;
|
||||
/* 0x948 */ mSM_MOVE_END_PROC move_End_proc;
|
||||
/* 0x94C */ mSM_MOVE_CHG_BASE_PROC move_chg_base_proc;
|
||||
/* 0x950 */ mSM_SET_CHAR_MATRIX_PROC set_char_matrix_proc;
|
||||
/* 0x954 */ mSM_CBUF_COPY_PROC cbuf_copy_proc;
|
||||
/* 0x958 */ mSM_SET_DRAWMODE_PROC set_drawMode_proc;
|
||||
/* 0x95C */ mSM_DRAW_ITEM_PROC draw_item_proc;
|
||||
/* 0x960 */ mSM_DRAW_MAIL_PROC draw_mail_proc;
|
||||
/* 0x964 */ mSM_SETUP_VIEW_PROC setup_view_proc;
|
||||
/* 0x968 */ void* unused_func_968;
|
||||
/* 0x96C */ mSM_CHANGE_VIEW_PROC change_view_proc;
|
||||
/* 0x970 */ void* _970;
|
||||
/* 0x974 */ void* _974;
|
||||
/* 0x978 */ void* _978;
|
||||
/* 0x97C */ mTG_Ovl_c* tag_ovl;
|
||||
/* 0x980 */ void* _980;
|
||||
/* 0x984 */ mHP_Ovl_c* hanwiaPortrait_ovl;
|
||||
/* 0x988 */ void* inventory_ovl;
|
||||
/* 0x98C */ mED_Ovl_c* editor_ovl;
|
||||
/* 0x990 */ mBD_Ovl_c* board_ovl;
|
||||
/* 0x994 */ mAD_Ovl_c* address_ovl;
|
||||
/* 0x998 */ void* _998;
|
||||
/* 0x99C */ void* _99C;
|
||||
/* 0x9A0 */ mTI_Ovl_c* timeIn_ovl;
|
||||
/* 0x9A4 */ mEE_Ovl_c* editEndChk_ovl;
|
||||
/* 0x9A8 */ mWR_Ovl_c* warning_ovl;
|
||||
/* 0x9AC */ mRP_Ovl_c* repay_ovl;
|
||||
/* 0x9B0 */ void* _9B0;
|
||||
/* 0x9B4 */ mMP_Overlay_c* map_ovl;
|
||||
/* 0x9B8 */ mNT_Ovl_c* notice_ovl;
|
||||
/* 0x9BC */ mBR_Ovl_c* birthday_ovl;
|
||||
/* 0x9C0 */ void* _9C0;
|
||||
/* 0x9C4 */ void* _9C4;
|
||||
/* 0x9C8 */ void* _9C8;
|
||||
/* 0x9CC */ void* _9CC;
|
||||
/* 0x9D0 */ mMU_Overlay_c* music_ovl;
|
||||
/* 0x9D4 */ mBN_Overlay_c* bank_ovl;
|
||||
/* 0x9D8 */ void* _9D8;
|
||||
/* 0x9DC */ void* _9DC;
|
||||
/* 0x9E0 */ void* _9E0;
|
||||
/* 0x9E4 */ void* _9E4;
|
||||
/* 0x9E8 */ mDI_Ovl_c* diary_ovl;
|
||||
/* 0x9EC */ void* _9EC;
|
||||
/* 0x9F0 */ mPM_Ovl_c* passwordMake_ovl;
|
||||
/* 0x9F4 */ mPC_Ovl_c* passwordChk_ovl;
|
||||
/* 0x9F8 */ u8 hboard_exists;
|
||||
/* 0x9F9 */ u8 le_exists;
|
||||
/* 0x9FA */ u8 _9FA;
|
||||
/* 0x9FB */ u8 _9FB;
|
||||
/* 0x9FC */ int _9FC;
|
||||
/* 0xA00 */ Mtx* projection_matrix;
|
||||
/* TODO: finish */
|
||||
/* 0x000 */ mSM_Segment_c segment;
|
||||
/* 0x054 */ mSM_MenuInfo_c menu_info[mSM_OVL_NUM];
|
||||
/* 0x90C */ mSM_Control_c menu_control;
|
||||
/* 0x940 */ mSM_RETURN_FUNC_PROC return_func_proc;
|
||||
/* 0x944 */ mSM_MOVE_MOVE_PROC move_Move_proc;
|
||||
/* 0x948 */ mSM_MOVE_END_PROC move_End_proc;
|
||||
/* 0x94C */ mSM_MOVE_CHG_BASE_PROC move_chg_base_proc;
|
||||
/* 0x950 */ mSM_SET_CHAR_MATRIX_PROC set_char_matrix_proc;
|
||||
/* 0x954 */ mSM_CBUF_COPY_PROC cbuf_copy_proc;
|
||||
/* 0x958 */ mSM_SET_DRAWMODE_PROC set_drawMode_proc;
|
||||
/* 0x95C */ mSM_DRAW_ITEM_PROC draw_item_proc;
|
||||
/* 0x960 */ mSM_DRAW_MAIL_PROC draw_mail_proc;
|
||||
/* 0x964 */ mSM_SETUP_VIEW_PROC setup_view_proc;
|
||||
/* 0x968 */ void* unused_func_968;
|
||||
/* 0x96C */ mSM_CHANGE_VIEW_PROC change_view_proc;
|
||||
/* 0x970 */ void* _970;
|
||||
/* 0x974 */ void* _974;
|
||||
/* 0x978 */ void* _978;
|
||||
/* 0x97C */ mTG_Ovl_c* tag_ovl;
|
||||
/* 0x980 */ mHD_Ovl_c* hand_ovl;
|
||||
/* 0x984 */ mHP_Ovl_c* hanwiaPortrait_ovl;
|
||||
/* 0x988 */ void* inventory_ovl;
|
||||
/* 0x98C */ mED_Ovl_c* editor_ovl;
|
||||
/* 0x990 */ mBD_Ovl_c* board_ovl;
|
||||
/* 0x994 */ mAD_Ovl_c* address_ovl;
|
||||
/* 0x998 */ void* _998;
|
||||
/* 0x99C */ void* _99C;
|
||||
/* 0x9A0 */ mTI_Ovl_c* timeIn_ovl;
|
||||
/* 0x9A4 */ mEE_Ovl_c* editEndChk_ovl;
|
||||
/* 0x9A8 */ mWR_Ovl_c* warning_ovl;
|
||||
/* 0x9AC */ mRP_Ovl_c* repay_ovl;
|
||||
/* 0x9B0 */ void* _9B0;
|
||||
/* 0x9B4 */ mMP_Overlay_c* map_ovl;
|
||||
/* 0x9B8 */ mNT_Ovl_c* notice_ovl;
|
||||
/* 0x9BC */ mBR_Ovl_c* birthday_ovl;
|
||||
/* 0x9C0 */ void* _9C0;
|
||||
/* 0x9C4 */ void* _9C4;
|
||||
/* 0x9C8 */ void* _9C8;
|
||||
/* 0x9CC */ mCL_Ovl_c* catalog_ovl;
|
||||
/* 0x9D0 */ mMU_Overlay_c* music_ovl;
|
||||
/* 0x9D4 */ mBN_Overlay_c* bank_ovl;
|
||||
/* 0x9D8 */ void* _9D8;
|
||||
/* 0x9DC */ void* _9DC;
|
||||
/* 0x9E0 */ void* _9E0;
|
||||
/* 0x9E4 */ void* _9E4;
|
||||
/* 0x9E8 */ mDI_Ovl_c* diary_ovl;
|
||||
/* 0x9EC */ void* _9EC;
|
||||
/* 0x9F0 */ mPM_Ovl_c* passwordMake_ovl;
|
||||
/* 0x9F4 */ mPC_Ovl_c* passwordChk_ovl;
|
||||
/* 0x9F8 */ u8 hboard_exists;
|
||||
/* 0x9F9 */ u8 le_exists;
|
||||
/* 0x9FA */ u8 _9FA;
|
||||
/* 0x9FB */ u8 _9FB;
|
||||
/* 0x9FC */ int _9FC;
|
||||
/* 0xA00 */ Mtx* projection_matrix;
|
||||
};
|
||||
|
||||
extern void mSM_menu_ovl_init(Submenu* submenu);
|
||||
|
||||
+19
-3
@@ -9,13 +9,29 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define mTG_TAG_NUM 4
|
||||
|
||||
typedef void (*mTG_INIT_TAG_DATA_ITEM_WIN_PROC)(Submenu*);
|
||||
typedef void (*mTG_CHG_TAG_FUNC_PROC)(Submenu*, int, int, int, f32, f32);
|
||||
|
||||
/* sizeof(mTG_tag_c) == 0xB4 */
|
||||
typedef struct tag_s {
|
||||
u8 type;
|
||||
u8 _01[0x40 - 0x01];
|
||||
int _40;
|
||||
u8 _44[0xB4 - 0x44];
|
||||
} mTG_tag_c;
|
||||
|
||||
/* TODO */
|
||||
struct tag_ovl_s {
|
||||
/* 0x000 */ u8 _000[0x2E0 - 0x000];
|
||||
/* 0x2E0 */ mTG_INIT_TAG_DATA_ITEM_WIN_PROC init_tag_data_item_win_proc;
|
||||
/* 0x2E4 */ u8 _2E4[0x3C4 - 0x2E4];
|
||||
/* 0x000 */ int sel_tag_idx;
|
||||
/* 0x004 */ int ret_tag_idx;
|
||||
/* 0x008 */ mTG_tag_c tags[mTG_TAG_NUM];
|
||||
/* 0x2D8 */ void* _2D8;
|
||||
/* 0x2DC */ void* _2DC;
|
||||
/* 0x2E0 */ mTG_INIT_TAG_DATA_ITEM_WIN_PROC init_tag_data_item_win_proc;
|
||||
/* 0x2E4 */ mTG_CHG_TAG_FUNC_PROC chg_tag_func_proc;
|
||||
/* 0x2E8 */ u8 _2E8[0x3C4 - 0x2E8];
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
Reference in New Issue
Block a user