Implement & link m_hand_ovl

This commit is contained in:
Cuyler36
2024-04-25 18:06:18 -04:00
parent 9c8214e0a3
commit e90f8ea4ef
15 changed files with 1750 additions and 156 deletions
+5
View File
@@ -911,6 +911,11 @@ m_editor_ovl.c:
.rodata: [0x8064B300, 0x8064B368]
.data: [0x806CC9D8, 0x806CD068]
.bss: [0x8133F5C8, 0x8133F600]
m_hand_ovl.c:
.text: [0x805DD104, 0x805DFA00]
.rodata: [0x8064B388, 0x8064B418]
.data: [0x806CD0A0, 0x806CD260]
.bss: [0x8133F608, 0x8133F980]
m_haniwaPortrait_ovl.c:
.text: [0x805DFA00, 0x805DFE48]
.rodata: [0x8064B418, 0x8064B448]
+6
View File
@@ -45,6 +45,8 @@ typedef enum audio_sound_effects {
NA_SE_MONEY2,
NA_SE_COIN,
NA_SE_52 = 0x52,
NA_SE_BIRTH_FTR = 0x57,
NA_SE_CLEAN_UP_FTR = 0x58,
@@ -52,6 +54,8 @@ typedef enum audio_sound_effects {
NA_SE_AMI_HIT = 0x5C,
NA_SE_TOOL_GET,
NA_SE_60 = 0x60,
NA_SE_GASAGOSO = 0x69,
NA_SE_TOILE_CHAIR_STANDUP = 0x72,
@@ -104,6 +108,8 @@ typedef enum audio_sound_effects {
NA_SE_ROTATE = 0x41A,
NA_SE_41C = 0x41C,
NA_SE_SOFT_CHAIR_SIT = 0x41F,
NA_SE_HARD_CHAIR_SIT,
NA_SE_BUBU_CHAIR_SIT,
+9
View File
@@ -111,6 +111,15 @@ typedef struct tex_anim_s {
s16 timer;
} cKF_TextureAnimation_c;
typedef struct anim_info_s {
cKF_Animation_R_c* animation;
f32 speed;
f32 start_frame;
f32 end_frame;
int mode;
f32 counter;
} cKF_AnimInfo_c;
typedef int (*cKF_draw_callback)(GAME*, cKF_SkeletonInfo_R_c*, int, Gfx**, u8*, void*, s_xyz*, xyz_t*);
#define cKF_FRAMERATE 30.0f
+21
View File
@@ -0,0 +1,21 @@
#ifndef M_CPORIGINAL_OVL_H
#define M_CPORIGINAL_OVL_H
#include "types.h"
#include "m_submenu_ovl.h"
#ifdef __cplusplus
extern "C" {
#endif
extern void mCO_swap_image(Submenu* submenu, mActor_name_t item0, mActor_name_t item1);
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);
#ifdef __cplusplus
}
#endif
#endif
+17
View File
@@ -0,0 +1,17 @@
#ifndef M_GBA_OVL_H
#define M_GBA_OVL_H
#include "types.h"
#include "m_submenu_ovl.h"
#ifdef __cplusplus
extern "C" {
#endif
extern void mGB_copy_image(Submenu*, mActor_name_t, mActor_name_t);
#ifdef __cplusplus
}
#endif
#endif
+50 -1
View File
@@ -4,21 +4,70 @@
#include "types.h"
#include "m_hand_ovl_h.h"
#include "m_submenu_ovl.h"
#include "c_keyframe.h"
#ifdef __cplusplus
extern "C" {
#endif
enum {
mHD_ACTION_SASU,
mHD_ACTION_SIDE,
mHD_ACTION_CLOSE,
mHD_ACTION_CLOSE_KEEP,
mHD_ACTION_OPEN,
mHD_ACTION_CLOSE2,
mHD_ACTION_SASU2,
mHD_ACTION_NUM
};
enum {
mHD_MOVE_NONE,
mHD_MOVE_NORMAL,
mHD_MOVE_SWITCH_LEFT,
mHD_MOVE_SWITCH_RIGHT,
mHD_MOVE_NUM
};
typedef void (*mHD_OVL_NOP_HAND_FUNC)(Submenu*);
typedef void (*mHD_OVL_SET_HAND_FUNC)(Submenu*);
typedef struct hand_info_s {
int type;
f32 pos[2];
f32 ofs[2];
s16 move_flag;
s16 wait_timer;
cKF_SkeletonInfo_R_c keyframe;
int keyframe_state;
s_xyz work[29];
s_xyz morph[29];
u8 _1E8[72];
s16 act;
s16 next_act;
mActor_name_t item;
Mail_c mail;
u32 item_cond;
u8 hold_tbl;
u8 hold_idx;
u8 ret_flag;
u8 catch_pg;
s16 haniwa_item_cond;
u32 haniwa_item_price;
} mHD_hand_info_c;
/* sizeof(struct hand_ovl_s) == 0x378 */
struct hand_ovl_s {
u8 _000[0x370 - 0x000]; /* TODO */
mHD_hand_info_c info;
mHD_OVL_NOP_HAND_FUNC nop_hand_func;
mHD_OVL_SET_HAND_FUNC set_hand_func;
};
extern void mHD_hand_ovl_construct(Submenu* submenu);
extern void mHD_hand_ovl_destruct(Submenu* submenu);
#ifdef __cplusplus
}
#endif
+53
View File
@@ -0,0 +1,53 @@
#ifndef M_INVENTORY_OVL_H
#define M_INVENTORY_OVL_H
#include "types.h"
#include "m_inventory_ovl_h.h"
#include "m_submenu_ovl.h"
#include "c_keyframe.h"
#include "libultra/ultratypes.h"
#ifdef __cplusplus
extern "C" {
#endif
#define mIV_PLAYER_JOINT_NUM 27
#define mIV_ITEM_JOINT_NUM 8
/* sizeof (struct inventory_ovl_s) == 0x5EC */
struct inventory_ovl_s {
cKF_SkeletonInfo_R_c player_keyframe0;
cKF_SkeletonInfo_R_c player_keyframe1;
s_xyz player_work[mIV_PLAYER_JOINT_NUM];
s_xyz player_morph[mIV_PLAYER_JOINT_NUM];
cKF_SkeletonInfo_R_c item_keyframe;
s_xyz item_work[mIV_ITEM_JOINT_NUM];
s_xyz item_morph[mIV_ITEM_JOINT_NUM];
MtxF item_mtx;
MtxF food_mtx;
u8 _374[0x3BC - 0x374];
u16 selected_item_bitfield;
u16 selected_mail_bitfield;
u32 disp_money;
int disp_money_change_frames;
xyz_t shovel_pos;
xyz_t release_pos;
u8 shovel_flag;
u8 release_flag;
u8 food_idx;
u8 _3E3[0x5EC - 0x3E3];
};
#ifdef __cplusplus
}
#endif
#endif
+16
View File
@@ -0,0 +1,16 @@
#ifndef M_INVENTORY_OVL_H_H
#define M_INVENTORY_OVL_H_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct inventory_ovl_s mIV_Ovl_c;
#ifdef __cplusplus
}
#endif
#endif
+135
View File
@@ -142,6 +142,10 @@ typedef struct offset_table_s {
#define NPC_NUM 236
#define NPC_ISLANDER_NUM 18
#define TICKET_STACK_MAX 5
#define WISP_STACK_MAX 5
#define PAPER_STACK_MAX 4
#define FTR_NUM 1266
#define PAPER_NUM 256
#define MONEY_NUM 4
@@ -198,6 +202,18 @@ extern int mNT_check_unknown(mActor_name_t item_no);
#define NPC_HOUSE_ID_TO_NPC_ID(house) (house + 0x9000)
#define NPC_ID_TO_NPC_HOUSE_ID(npc) (npc - 0x9000)
#define ITEM_IS_WISP(n) ((n) >= ITM_SPIRIT0 && (n) <= ITM_SPIRIT4)
#define ITEM_IS_PAPER(n) ((n) >= ITM_PAPER_START && (n) <= (ITM_PAPER_END - 1))
#define ITEM_IS_CLOTH(n) ((n) >= ITM_CLOTH_START && (n) < ITM_CLOTH_END)
#define ITEM_IS_RSVCLOTH(n) ((n) >= RSV_CLOTH && (n) <= RSV_CLOTH7)
#define ITEM_IS_RSVNWORG(n) ((n) >= RSV_NW_ORIGINAL0 && (n) <= RSV_NW_ORIGINAL7)
#define ITEM_IS_RSVCPORG(n) ((n) >= RSV_CPORIGINAL_FLD0_00 && (n) <= RSV_CPORIGINAL_FLD7_11)
#define ITEM_IS_RSVGBAORG(n) ((n) >= RSV_GBAORIGINAL0 && (n) <= RSV_GBAORIGINAL7)
#define PAPER2TYPE(n) ((n) % PAPER_UNIQUE_NUM)
#define PAPER2STACK(n) ((n) / PAPER_UNIQUE_NUM)
#define ITEM_IS_FTR(n) \
(ITEM_NAME_GET_TYPE(n) == NAME_TYPE_FTR0 || ITEM_NAME_GET_TYPE(n) == NAME_TYPE_FTR1)
@@ -2778,6 +2794,125 @@ extern int mNT_check_unknown(mActor_name_t item_no);
#define RSV_FE1C 0xFE1C
#define RSV_FE1F 0xFE1F
#define RSV_CLOTH 0xFE20
#define RSV_CLOTH1 0xFE21
#define RSV_CLOTH2 0xFE22
#define RSV_CLOTH3 0xFE23
#define RSV_CLOTH4 0xFE24
#define RSV_CLOTH5 0xFE25
#define RSV_CLOTH6 0xFE26
#define RSV_CLOTH7 0xFE27
#define RSV_NW_ORIGINAL0 0xFE31
#define RSV_NW_ORIGINAL1 0xFE32
#define RSV_NW_ORIGINAL2 0xFE33
#define RSV_NW_ORIGINAL3 0xFE34
#define RSV_NW_ORIGINAL4 0xFE35
#define RSV_NW_ORIGINAL5 0xFE36
#define RSV_NW_ORIGINAL6 0xFE37
#define RSV_NW_ORIGINAL7 0xFE38
#define RSV_CPORIGINAL_FLD0_00 0xFE39
#define RSV_CPORIGINAL_FLD0_01 0xFE3A
#define RSV_CPORIGINAL_FLD0_02 0xFE3B
#define RSV_CPORIGINAL_FLD0_03 0xFE3C
#define RSV_CPORIGINAL_FLD0_04 0xFE3D
#define RSV_CPORIGINAL_FLD0_05 0xFE3E
#define RSV_CPORIGINAL_FLD0_06 0xFE3F
#define RSV_CPORIGINAL_FLD0_07 0xFE40
#define RSV_CPORIGINAL_FLD0_08 0xFE41
#define RSV_CPORIGINAL_FLD0_09 0xFE42
#define RSV_CPORIGINAL_FLD0_10 0xFE43
#define RSV_CPORIGINAL_FLD0_11 0xFE44
#define RSV_CPORIGINAL_FLD1_00 0xFE45
#define RSV_CPORIGINAL_FLD1_01 0xFE46
#define RSV_CPORIGINAL_FLD1_02 0xFE47
#define RSV_CPORIGINAL_FLD1_03 0xFE48
#define RSV_CPORIGINAL_FLD1_04 0xFE49
#define RSV_CPORIGINAL_FLD1_05 0xFE4A
#define RSV_CPORIGINAL_FLD1_06 0xFE4B
#define RSV_CPORIGINAL_FLD1_07 0xFE4C
#define RSV_CPORIGINAL_FLD1_08 0xFE4D
#define RSV_CPORIGINAL_FLD1_09 0xFE4E
#define RSV_CPORIGINAL_FLD1_10 0xFE4F
#define RSV_CPORIGINAL_FLD1_11 0xFE50
#define RSV_CPORIGINAL_FLD2_00 0xFE51
#define RSV_CPORIGINAL_FLD2_01 0xFE52
#define RSV_CPORIGINAL_FLD2_02 0xFE53
#define RSV_CPORIGINAL_FLD2_03 0xFE54
#define RSV_CPORIGINAL_FLD2_04 0xFE55
#define RSV_CPORIGINAL_FLD2_05 0xFE56
#define RSV_CPORIGINAL_FLD2_06 0xFE57
#define RSV_CPORIGINAL_FLD2_07 0xFE58
#define RSV_CPORIGINAL_FLD2_08 0xFE59
#define RSV_CPORIGINAL_FLD2_09 0xFE5A
#define RSV_CPORIGINAL_FLD2_10 0xFE5B
#define RSV_CPORIGINAL_FLD2_11 0xFE5C
#define RSV_CPORIGINAL_FLD3_00 0xFE5D
#define RSV_CPORIGINAL_FLD3_01 0xFE5E
#define RSV_CPORIGINAL_FLD3_02 0xFE5F
#define RSV_CPORIGINAL_FLD3_03 0xFE60
#define RSV_CPORIGINAL_FLD3_04 0xFE61
#define RSV_CPORIGINAL_FLD3_05 0xFE62
#define RSV_CPORIGINAL_FLD3_06 0xFE63
#define RSV_CPORIGINAL_FLD3_07 0xFE64
#define RSV_CPORIGINAL_FLD3_08 0xFE65
#define RSV_CPORIGINAL_FLD3_09 0xFE66
#define RSV_CPORIGINAL_FLD3_10 0xFE67
#define RSV_CPORIGINAL_FLD3_11 0xFE68
#define RSV_CPORIGINAL_FLD4_00 0xFE69
#define RSV_CPORIGINAL_FLD4_01 0xFE6A
#define RSV_CPORIGINAL_FLD4_02 0xFE6B
#define RSV_CPORIGINAL_FLD4_03 0xFE6C
#define RSV_CPORIGINAL_FLD4_04 0xFE6D
#define RSV_CPORIGINAL_FLD4_05 0xFE6E
#define RSV_CPORIGINAL_FLD4_06 0xFE6F
#define RSV_CPORIGINAL_FLD4_07 0xFE70
#define RSV_CPORIGINAL_FLD4_08 0xFE71
#define RSV_CPORIGINAL_FLD4_09 0xFE72
#define RSV_CPORIGINAL_FLD4_10 0xFE73
#define RSV_CPORIGINAL_FLD4_11 0xFE74
#define RSV_CPORIGINAL_FLD5_00 0xFE75
#define RSV_CPORIGINAL_FLD5_01 0xFE76
#define RSV_CPORIGINAL_FLD5_02 0xFE77
#define RSV_CPORIGINAL_FLD5_03 0xFE78
#define RSV_CPORIGINAL_FLD5_04 0xFE79
#define RSV_CPORIGINAL_FLD5_05 0xFE7A
#define RSV_CPORIGINAL_FLD5_06 0xFE7B
#define RSV_CPORIGINAL_FLD5_07 0xFE7C
#define RSV_CPORIGINAL_FLD5_08 0xFE7D
#define RSV_CPORIGINAL_FLD5_09 0xFE7E
#define RSV_CPORIGINAL_FLD5_10 0xFE7F
#define RSV_CPORIGINAL_FLD5_11 0xFE80
#define RSV_CPORIGINAL_FLD6_00 0xFE81
#define RSV_CPORIGINAL_FLD6_01 0xFE82
#define RSV_CPORIGINAL_FLD6_02 0xFE83
#define RSV_CPORIGINAL_FLD6_03 0xFE84
#define RSV_CPORIGINAL_FLD6_04 0xFE85
#define RSV_CPORIGINAL_FLD6_05 0xFE86
#define RSV_CPORIGINAL_FLD6_06 0xFE87
#define RSV_CPORIGINAL_FLD6_07 0xFE88
#define RSV_CPORIGINAL_FLD6_08 0xFE89
#define RSV_CPORIGINAL_FLD6_09 0xFE8A
#define RSV_CPORIGINAL_FLD6_10 0xFE8B
#define RSV_CPORIGINAL_FLD6_11 0xFE8C
#define RSV_CPORIGINAL_FLD7_00 0xFE8D
#define RSV_CPORIGINAL_FLD7_01 0xFE8E
#define RSV_CPORIGINAL_FLD7_02 0xFE8F
#define RSV_CPORIGINAL_FLD7_03 0xFE90
#define RSV_CPORIGINAL_FLD7_04 0xFE91
#define RSV_CPORIGINAL_FLD7_05 0xFE92
#define RSV_CPORIGINAL_FLD7_06 0xFE93
#define RSV_CPORIGINAL_FLD7_07 0xFE94
#define RSV_CPORIGINAL_FLD7_08 0xFE95
#define RSV_CPORIGINAL_FLD7_09 0xFE96
#define RSV_CPORIGINAL_FLD7_10 0xFE97
#define RSV_CPORIGINAL_FLD7_11 0xFE98
#define RSV_GBAORIGINAL0 0xFE99
#define RSV_GBAORIGINAL1 0xFE9A
#define RSV_GBAORIGINAL2 0xFE9B
#define RSV_GBAORIGINAL3 0xFE9C
#define RSV_GBAORIGINAL4 0xFE9D
#define RSV_GBAORIGINAL5 0xFE9E
#define RSV_GBAORIGINAL6 0xFE9F
#define RSV_GBAORIGINAL7 0xFEA0
#define RSV_ISLAND_FTR0 0xFEB3 /* mRmTp_FTRSIZE_1x1 S */
#define RSV_ISLAND_FTR1 0xFEB4 /* mRmTp_FTRSIZE_1x1 E */
#define RSV_ISLAND_FTR2 0xFEB5 /* mRmTp_FTRSIZE_1x1 N */
+3
View File
@@ -9,6 +9,9 @@ extern "C" {
#endif
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);
#ifdef __cplusplus
}
+1
View File
@@ -70,6 +70,7 @@ extern int mPlib_check_player_warp_forEvent(void);
extern int mPlib_check_player_actor_main_index_Furniture_Move(GAME* game);
extern int mPlib_request_main_sitdown_type1(GAME* game, int direct, const xyz_t* pos, int ftr_no);
extern int mPlib_request_main_lie_bed_type1(GAME* game, int direct, const xyz_t* pos, int head_direct, int ftr_no);
extern void mPlib_change_player_cloth(GAME* game, int idx);
extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p();
+158 -145
View File
@@ -18,18 +18,18 @@ extern "C" {
#define mPr_WALLET_MAX 99999
#define mPr_DEPOSIT_MAX 999999999
#define mPr_FLAG_MASK_CAT_SCHEDULED (1 << 0) // Blanca appears when travelling
#define mPr_FLAG_1 (1 << 1) // unused?
#define mPr_FLAG_POSTOFFICE_GIFT0 (1 << 2) // 1,000,000 Bells
#define mPr_FLAG_POSTOFFICE_GIFT1 (1 << 3) // 10,000,000 Bells
#define mPr_FLAG_POSTOFFICE_GIFT2 (1 << 4) // 100,000,000 Bells
#define mPr_FLAG_POSTOFFICE_GIFT3 (1 << 5) // 999,999,999 Bells
#define mPr_FLAG_MASK_CAT_SCHEDULED (1 << 0) // Blanca appears when travelling
#define mPr_FLAG_1 (1 << 1) // unused?
#define mPr_FLAG_POSTOFFICE_GIFT0 (1 << 2) // 1,000,000 Bells
#define mPr_FLAG_POSTOFFICE_GIFT1 (1 << 3) // 10,000,000 Bells
#define mPr_FLAG_POSTOFFICE_GIFT2 (1 << 4) // 100,000,000 Bells
#define mPr_FLAG_POSTOFFICE_GIFT3 (1 << 5) // 999,999,999 Bells
#define mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED (1 << 6) // player is scheduled to receive completion letter & reward
#define mPr_FLAG_MUSEUM_COMP_HANDBILL_RECEIVED (1 << 7) // player has received the completion letter & reward
#define mPr_FLAG_8 (1 << 8) // unused?
#define mPr_FLAG_UPDATE_OUTLOOK_PENDING (1 << 9) // player bought a new coat of roof paint to be repainted
#define mPr_FLAG_BIRTHDAY_ACTIVE (1 << 10) // player's birthday is active and a villager can give them a gift
#define mPr_FLAG_TOTAKEKE_INTRODUCTION (1 << 11) // player has spoken to K.K. Slider before
#define mPr_FLAG_MUSEUM_COMP_HANDBILL_RECEIVED (1 << 7) // player has received the completion letter & reward
#define mPr_FLAG_8 (1 << 8) // unused?
#define mPr_FLAG_UPDATE_OUTLOOK_PENDING (1 << 9) // player bought a new coat of roof paint to be repainted
#define mPr_FLAG_BIRTHDAY_ACTIVE (1 << 10) // player's birthday is active and a villager can give them a gift
#define mPr_FLAG_TOTAKEKE_INTRODUCTION (1 << 11) // player has spoken to K.K. Slider before
#define mPr_MONEY_POWER_MIN -80
@@ -37,42 +37,42 @@ extern "C" {
#define mPr_GOODS_POWER_MAX 50
enum {
mPr_PLAYER_0,
mPr_PLAYER_1,
mPr_PLAYER_2,
mPr_PLAYER_3,
mPr_FOREIGNER,
mPr_PLAYER_0,
mPr_PLAYER_1,
mPr_PLAYER_2,
mPr_PLAYER_3,
mPr_FOREIGNER,
mPr_PLAYER_NUM
mPr_PLAYER_NUM
};
enum {
mPr_ITEM_COND_NORMAL,
mPr_ITEM_COND_PRESENT,
mPr_ITEM_COND_QUEST,
mPr_ITEM_COND_NUM
mPr_ITEM_COND_NORMAL,
mPr_ITEM_COND_PRESENT,
mPr_ITEM_COND_QUEST,
mPr_ITEM_COND_NUM
};
enum {
mPr_SEX_MALE,
mPr_SEX_FEMALE,
mPr_SEX_OTHER,
mPr_SEX_MALE,
mPr_SEX_FEMALE,
mPr_SEX_OTHER,
mPr_SEX_NUM = mPr_SEX_OTHER
mPr_SEX_NUM = mPr_SEX_OTHER
};
enum {
mPr_FACE_TYPE0,
mPr_FACE_TYPE1,
mPr_FACE_TYPE2,
mPr_FACE_TYPE3,
mPr_FACE_TYPE4,
mPr_FACE_TYPE5,
mPr_FACE_TYPE6,
mPr_FACE_TYPE7,
mPr_FACE_TYPE0,
mPr_FACE_TYPE1,
mPr_FACE_TYPE2,
mPr_FACE_TYPE3,
mPr_FACE_TYPE4,
mPr_FACE_TYPE5,
mPr_FACE_TYPE6,
mPr_FACE_TYPE7,
mPr_FACE_TYPE_NUM
mPr_FACE_TYPE_NUM
};
#define mPr_ECARD_NUM 367
@@ -88,175 +88,182 @@ enum {
#define mPr_RADIOCARD_MAX_DAYS 13
#define mPr_GET_ITEM_COND(all_cond, slot_no) (((all_cond) >> (((u32)(slot_no)) << 1)) & mPr_ITEM_COND_NUM)
#define mPr_SET_ITEM_COND(all_cond, slot_no, cond) (((all_cond) & ~((u32)mPr_ITEM_COND_NUM << ((u32)(slot_no) << 1))) | ((u32)(cond) << ((u32)(i) << 1)))
#define mPr_SET_ITEM_COND(all_cond, slot_no, cond) \
(((all_cond) & ~((u32)mPr_ITEM_COND_NUM << ((u32)(slot_no) << 1))) | ((u32)(cond) << ((u32)(slot_no) << 1)))
enum {
mPr_SUNBURN_RANK_MIN,
mPr_SUNBURN_RANK_MIN,
mPr_SUNBURN_RANK0 = mPr_SUNBURN_RANK_MIN,
mPr_SUNBURN_RANK1,
mPr_SUNBURN_RANK2,
mPr_SUNBURN_RANK3,
mPr_SUNBURN_RANK4,
mPr_SUNBURN_RANK5,
mPr_SUNBURN_RANK6,
mPr_SUNBURN_RANK7,
mPr_SUNBURN_RANK8,
mPr_SUNBURN_RANK_MAX = mPr_SUNBURN_RANK8,
mPr_SUNBURN_RANK0 = mPr_SUNBURN_RANK_MIN,
mPr_SUNBURN_RANK1,
mPr_SUNBURN_RANK2,
mPr_SUNBURN_RANK3,
mPr_SUNBURN_RANK4,
mPr_SUNBURN_RANK5,
mPr_SUNBURN_RANK6,
mPr_SUNBURN_RANK7,
mPr_SUNBURN_RANK8,
mPr_SUNBURN_RANK_NUM
mPr_SUNBURN_RANK_MAX = mPr_SUNBURN_RANK8,
mPr_SUNBURN_RANK_NUM
};
enum {
mPr_DESTINY_NORMAL, /* standard fortune state */
mPr_DESTINY_POPULAR, /* good luck with villagers */
mPr_DESTINY_UNPOPULAR, /* bad luck with villagers */
mPr_DESTINY_BAD_LUCK, /* bad luck in general */
mPr_DESTINY_MONEY_LUCK, /* good money luck */
mPr_DESTINY_GOODS_LUCK, /* good goods/item luck */
mPr_DESTINY_NORMAL, /* standard fortune state */
mPr_DESTINY_POPULAR, /* good luck with villagers */
mPr_DESTINY_UNPOPULAR, /* bad luck with villagers */
mPr_DESTINY_BAD_LUCK, /* bad luck in general */
mPr_DESTINY_MONEY_LUCK, /* good money luck */
mPr_DESTINY_GOODS_LUCK, /* good goods/item luck */
mPr_DESTINY_NUM
mPr_DESTINY_NUM
};
/* sizeof(mPr_destiny_c) == 0xA */
typedef struct player_destiny_s {
/* 0x00 */ lbRTC_time_c received_time; /* time fortune was received */
/* 0x08 */ u8 type; /* fortune type */
/* 0x00 */ lbRTC_time_c received_time; /* time fortune was received */
/* 0x08 */ u8 type; /* fortune type */
} mPr_destiny_c;
/* sizeof(mPr_birthday_c) == 4 */
typedef struct player_birthday_s {
/* 0x00 */ u16 year; /* assumed, set in mPr_ClearPrivateBirthday but goes unused elsewhere */
/* 0x02 */ u8 month;
/* 0x03 */ u8 day;
/* 0x00 */ u16 year; /* assumed, set in mPr_ClearPrivateBirthday but goes unused elsewhere */
/* 0x02 */ u8 month;
/* 0x03 */ u8 day;
} mPr_birthday_c;
/* sizeof(mPr_catalog_order_c) == 4 */
typedef struct player_catalog_order_s {
/* 0x00 */ mActor_name_t item; /* ordered item */
/* 0x02 */ u8 shop_level; /* shop 'level' at time of order */
/* 0x00 */ mActor_name_t item; /* ordered item */
/* 0x02 */ u8 shop_level; /* shop 'level' at time of order */
} mPr_catalog_order_c;
/* sizeof(mPr_animal_memory_c) == 0xA */
typedef struct player_animal_memory_s {
/* 0x00 */ mActor_name_t npc_id;
/* 0x02 */ u8 land_name[LAND_NAME_SIZE];
/* 0x00 */ mActor_name_t npc_id;
/* 0x02 */ u8 land_name[LAND_NAME_SIZE];
} mPr_animal_memory_c;
/* sizeof(mPr_map_info_c) == 0xA */
typedef struct player_map_s {
/* 0x00 */ u8 land_name[LAND_NAME_SIZE];
/* 0x08 */ u16 land_id;
/* 0x00 */ u8 land_name[LAND_NAME_SIZE];
/* 0x08 */ u16 land_id;
} mPr_map_info_c;
/* sizeof(mPr_day_day_c) == 6 */
typedef struct player_day_day_s {
/* 0x00 */ lbRTC_ymd_c last_date; /* last date modified */
/* 0x04 */ u8 days; /* number of unique days */
/* 0x00 */ lbRTC_ymd_c last_date; /* last date modified */
/* 0x04 */ u8 days; /* number of unique days */
} mPr_day_day_c;
/* sizeof(mPr_sunburn_c) == 6 */
typedef struct player_sunburn_s {
/* 0x00 */ lbRTC_ymd_c last_changed_date; /* last date that the sunburn rank changed */
/* 0x04 */ s8 rank; /* level of sunburn, 0-8 */
/* 0x05 */ s8 rankdown_days; /* days until sunburn rank decreases */
/* 0x00 */ lbRTC_ymd_c last_changed_date; /* last date that the sunburn rank changed */
/* 0x04 */ s8 rank; /* level of sunburn, 0-8 */
/* 0x05 */ s8 rankdown_days; /* days until sunburn rank decreases */
} mPr_sunburn_c;
/* sizeof(mPr_carde_data_c) == 0x32 */
typedef struct player_ecard_data_s {
/* 0x00 */ lbRTC_ymd_c letter_send_date; /* date the latest eCard letter was sent */
/* 0x04 */ u8 card_letters_sent[mPr_ECARD_LETTER_NUM]; /* bitfield keeping track of which eCard letters have been sent to the player [0, 366] */
/* 0x00 */ lbRTC_ymd_c letter_send_date; /* date the latest eCard letter was sent */
/* 0x04 */ u8 card_letters_sent[mPr_ECARD_LETTER_NUM]; /* bitfield keeping track of which eCard letters have been
sent to the player [0, 366] */
} mPr_carde_data_c;
#define mPr_MOTHER_MAIL_NORMAL_NUM 7
#define mPr_MOTHER_MAIL_MONTHLY_NUM 2
typedef struct private_mother_mail_data_s {
u8 normal[mPr_MOTHER_MAIL_NORMAL_NUM];
u8 monthly[mPr_MOTHER_MAIL_MONTHLY_NUM];
u8 august; // unique byte for month of august
u8 normal[mPr_MOTHER_MAIL_NORMAL_NUM];
u8 monthly[mPr_MOTHER_MAIL_MONTHLY_NUM];
u8 august; // unique byte for month of august
} mPr_mother_mail_data_c;
typedef struct private_mother_mail_info_s {
lbRTC_ymd_c date;
mPr_mother_mail_data_c data;
lbRTC_ymd_c date;
mPr_mother_mail_data_c data;
} mPr_mother_mail_info_c;
typedef struct private_cloth_s {
u16 idx;
mActor_name_t item;
u16 idx;
mActor_name_t item;
} mPr_cloth_c;
struct private_s {
/* 0x0000 */ PersonalID_c player_ID; /* player's id info */
/* 0x0014 */ s8 gender; /* gender/sex of player */
/* 0x0015 */ s8 face; /* face type of player */
/* 0x0016 */ u8 reset_count; /* times player has reset */
/* 0x0017 */ mMsm_record_c museum_record; /* museum items & remail info */
/* 0x0000 */ PersonalID_c player_ID; /* player's id info */
/* 0x0014 */ s8 gender; /* gender/sex of player */
/* 0x0015 */ s8 face; /* face type of player */
/* 0x0016 */ u8 reset_count; /* times player has reset */
/* 0x0017 */ mMsm_record_c museum_record; /* museum items & remail info */
/* must be a struct due to alignment of first member */
/* 0x0068 */ struct {
/* 0x0068 */ mActor_name_t pockets[mPr_POCKETS_SLOT_COUNT]; /* items in inventory */
/* 0x0086 */ u8 lotto_ticket_expiry_month;
/* 0x0087 */ u8 lotto_ticket_mail_storage;
/* 0x0088 */ u32 item_conditions; /* bitfield (15 values), 2 bits per pocket slot */
/* 0x008C */ u32 wallet;
/* 0x0090 */ u32 loan;
} inventory;
/* must be a struct due to alignment of first member */
/* 0x0068 */ struct {
/* 0x0068 */ mActor_name_t pockets[mPr_POCKETS_SLOT_COUNT]; /* items in inventory */
/* 0x0086 */ u8 lotto_ticket_expiry_month;
/* 0x0087 */ u8 lotto_ticket_mail_storage;
/* 0x0088 */ u32 item_conditions; /* bitfield (15 values), 2 bits per pocket slot */
/* 0x008C */ u32 wallet;
/* 0x0090 */ u32 loan;
} inventory;
/* 0x0094 */ mQst_delivery_c deliveries[mPr_DELIVERY_QUEST_NUM]; /* delivery quests */
/* 0x02EC */ mQst_errand_c errands[mPr_ERRAND_QUEST_NUM]; /* errand quests */
/* 0x0094 */ mQst_delivery_c deliveries[mPr_DELIVERY_QUEST_NUM]; /* delivery quests */
/* 0x02EC */ mQst_errand_c errands[mPr_ERRAND_QUEST_NUM]; /* errand quests */
/* 0x04A4 */ mActor_name_t equipment; /* equipped item */
/* 0x04A4 */ mActor_name_t equipment; /* equipped item */
/* 0x04A6 */ Mail_hs_c saved_mail_header; /* saved mail header/footer which is inserted when writing new letters */
/* 0x04E0 */ Mail_c mail[mPr_INVENTORY_MAIL_COUNT]; /* letters in inventory */
/* 0x1084 */ mActor_name_t backgound_texture; /* inventory background shirt item id */
/* 0x1086 */ u8 exists; /* 0/1 if player exists or not */
/* 0x1087 */ u8 hint_count; /* total hints heard from villagers (initial dialog) */
/* 0x04A6 */ Mail_hs_c saved_mail_header; /* saved mail header/footer which is inserted when writing new letters */
/* 0x04E0 */ Mail_c mail[mPr_INVENTORY_MAIL_COUNT]; /* letters in inventory */
/* 0x1084 */ mActor_name_t backgound_texture; /* inventory background shirt item id */
/* 0x1086 */ u8 exists; /* 0/1 if player exists or not */
/* 0x1087 */ u8 hint_count; /* total hints heard from villagers (initial dialog) */
/* 0x1088 */ mPr_cloth_c cloth;
/* 0x1088 */ //u16 cloth_idx; /* index value for texture? */
/* 0x108A */ //mActor_name_t cloth; /* shirt item */
/* 0x1088 */ mPr_cloth_c cloth;
/* 0x1088 */ // u16 cloth_idx; /* index value for texture? */
/* 0x108A */ // mActor_name_t cloth; /* shirt item */
/* 0x108C */ AnmPersonalID_c stored_anm_id; /* foriegn animal personal ID leftover from N64? */
/* 0x108C */ AnmPersonalID_c stored_anm_id; /* foriegn animal personal ID leftover from N64? */
/* 0x109A */ mPr_destiny_c destiny; /* player fortune, seemingly called destiny */
/* 0x10A4 */ mPr_birthday_c birthday; /* player birthday */
/* 0x10A8 */ mPr_catalog_order_c catalog_orders[mPr_CATALOG_ORDER_NUM]; /* items ordered from catalog to be mailed */
/* 0x10BC */ u8 unk_10A8[24]; /* seemingly unused? */
/* 0x10D4 */ u32 aircheck_collect_bitfield[2]; /* TODO: this should be a define like #define mPr_AIRCHECK_BITFIELD_NUM ((MD_COUNT / 32) + 1) */
/* 0x10DC */ Anmremail_c remail; /* scheduled mail received from a foreign villager? */
/* 0x10F4 */ u32 reset_code; /* 0 when not reset, random value after reset */
/* 0x10F8 */ mPr_animal_memory_c animal_memory; /* id and town of last animal to move to another town */
/* 0x1102 */ u8 complete_fish_insect_flags; /* bit0 = completed fish, bit1 = villager acknowledged completed fish, bit2 = completed insect, bit3 = villager acknowledged complete insect */
/* 0x1104 */ lbRTC_year_t celebrated_birthday_year; /* last year a birthday was celebrated by card or visitor */
/* 0x109A */ mPr_destiny_c destiny; /* player fortune, seemingly called destiny */
/* 0x10A4 */ mPr_birthday_c birthday; /* player birthday */
/* 0x10A8 */ mPr_catalog_order_c
catalog_orders[mPr_CATALOG_ORDER_NUM]; /* items ordered from catalog to be mailed */
/* 0x10BC */ u8 unk_10A8[24]; /* seemingly unused? */
/* 0x10D4 */ u32 aircheck_collect_bitfield[2]; /* TODO: this should be a define like #define
mPr_AIRCHECK_BITFIELD_NUM ((MD_COUNT / 32) + 1) */
/* 0x10DC */ Anmremail_c remail; /* scheduled mail received from a foreign villager? */
/* 0x10F4 */ u32 reset_code; /* 0 when not reset, random value after reset */
/* 0x10F8 */ mPr_animal_memory_c animal_memory; /* id and town of last animal to move to another town */
/* 0x1102 */ u8
complete_fish_insect_flags; /* bit0 = completed fish, bit1 = villager acknowledged completed fish, bit2 =
completed insect, bit3 = villager acknowledged complete insect */
/* 0x1104 */ lbRTC_year_t celebrated_birthday_year; /* last year a birthday was celebrated by card or visitor */
/* catalog */
/* 0x1108 */ u32 furniture_collected_bitfield[43];
/* 0x11B4 */ u32 wall_collected_bitfield[3];
/* 0x11C0 */ u32 carpet_collected_bitfield[3];
/* 0x11CC */ u32 paper_collected_bitfield[2];
/* 0x11D4 */ u32 music_collected_bitfield[2];
/* catalog */
/* 0x1108 */ u32 furniture_collected_bitfield[43];
/* 0x11B4 */ u32 wall_collected_bitfield[3];
/* 0x11C0 */ u32 carpet_collected_bitfield[3];
/* 0x11CC */ u32 paper_collected_bitfield[2];
/* 0x11D4 */ u32 music_collected_bitfield[2];
/* 0x11DC */ mPr_map_info_c maps[mPr_FOREIGN_MAP_COUNT]; /* maps 'collected' for foreign towns */
/* 0x11DC */ mPr_map_info_c maps[mPr_FOREIGN_MAP_COUNT]; /* maps 'collected' for foreign towns */
/* 0x122C */ u32 bank_account; /* probably 'deposit' interally */
/* 0x1240 */ mNW_original_design_c my_org[mPr_ORIGINAL_DESIGN_COUNT]; /* Able Sisters' designs */
/* 0x2340 */ u8 my_org_no_table[mPr_ORIGINAL_DESIGN_COUNT]; /* order of designs */
/* 0x2348 */ u32 state_flags; /* TODO: this might be a bitfield/struct, also document bits */
/* 0x234C */ mCD_player_calendar_c calendar; /* player calendar data */
/* 0x23B4 */ u32 soncho_trophy_field0; /* first 28 tortimer event flags */
/* 0x23B8 */ mPr_day_day_c nw_visitor; /* info for how many unique days the player has talked to Sable */
/* 0x23BE */ mPr_day_day_c radiocard; /* radio stamp days */
/* 0x23C4 */ mPr_sunburn_c sunburn; /* sunburn state */
/* 0x23CA */ u8 unused_23CA[14]; /* seemingly unused data */
/* 0x23D8 */ mActor_name_t birthday_present_npc; /* npc id of the 'best friend' villger who will gift the player a present on their birthday (at the door) */
/* 0x23DA */ u8 golden_items_collected; /* bitfield tracking which golden items the player has received */
/* 0x23DC */ u32 soncho_trophy_field1; /* remaining tortimer event flags */
/* 0x23E0 */ mPr_carde_data_c ecard_letter_data; /* info relating to scanned e-Card letters */
/* 0x2412 */ u8 unused_2412[46];
/* 0x122C */ u32 bank_account; /* probably 'deposit' interally */
/* 0x1240 */ mNW_original_design_c my_org[mPr_ORIGINAL_DESIGN_COUNT]; /* Able Sisters' designs */
/* 0x2340 */ u8 my_org_no_table[mPr_ORIGINAL_DESIGN_COUNT]; /* order of designs */
/* 0x2348 */ u32 state_flags; /* TODO: this might be a bitfield/struct, also document bits */
/* 0x234C */ mCD_player_calendar_c calendar; /* player calendar data */
/* 0x23B4 */ u32 soncho_trophy_field0; /* first 28 tortimer event flags */
/* 0x23B8 */ mPr_day_day_c nw_visitor; /* info for how many unique days the player has talked to Sable */
/* 0x23BE */ mPr_day_day_c radiocard; /* radio stamp days */
/* 0x23C4 */ mPr_sunburn_c sunburn; /* sunburn state */
/* 0x23CA */ u8 unused_23CA[14]; /* seemingly unused data */
/* 0x23D8 */ mActor_name_t birthday_present_npc; /* npc id of the 'best friend' villger who will gift the player a
present on their birthday (at the door) */
/* 0x23DA */ u8 golden_items_collected; /* bitfield tracking which golden items the player has received */
/* 0x23DC */ u32 soncho_trophy_field1; /* remaining tortimer event flags */
/* 0x23E0 */ mPr_carde_data_c ecard_letter_data; /* info relating to scanned e-Card letters */
/* 0x2412 */ u8 unused_2412[46];
};
extern void mPr_ClearPlayerName(u8* buf);
@@ -280,16 +287,22 @@ extern int mPr_CheckCmpPrivate(Private_c* priv0, Private_c* priv1);
extern int mPr_GetPrivateIdx(PersonalID_c* pid);
extern int mPr_GetPossessionItemIdx(Private_c* priv, mActor_name_t item);
extern int mPr_GetPossessionItemIdxWithCond(Private_c* priv, mActor_name_t item, u32 cond);
extern int mPr_GetPossessionItemIdxFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond, mActor_name_t cancel_item);
extern int mPr_GetPossessionItemIdxFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond,
mActor_name_t cancel_item);
extern int mPr_GetPossessionItemIdxItem1Category(Private_c* priv, u8 item1_type);
extern int mPr_GetPossessionItemIdxItem1CategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond, mActor_name_t cancel_item);
extern int mPr_GetPossessionItemIdxKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end, u32 cond);
extern int mPr_GetPossessionItemIdxItem1CategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond,
mActor_name_t cancel_item);
extern int mPr_GetPossessionItemIdxKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end,
u32 cond);
extern int mPr_GetPossessionItemSum(Private_c* priv, mActor_name_t item);
extern int mPr_GetPossessionItemSumWithCond(Private_c* priv, mActor_name_t item, u32 cond);
extern int mPr_GetPossessionItemSumFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond, mActor_name_t cancel_item);
extern int mPr_GetPossessionItemSumItemCategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond, mActor_name_t cancel_item);
extern int mPr_GetPossessionItemSumFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond,
mActor_name_t cancel_item);
extern int mPr_GetPossessionItemSumItemCategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond,
mActor_name_t cancel_item);
extern int mPr_GetPossessionItemSumItemCategoryWithCond(Private_c* priv, u8 item1_type, u32 cond);
extern int mPr_GetPossessionItemSumKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end, u32 cond);
extern int mPr_GetPossessionItemSumKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end,
u32 cond);
extern void mPr_SetItemCollectBit(mActor_name_t item);
extern mActor_name_t mPr_DummyPresentToTruePresent();
extern void mPr_SetPossessionItem(Private_c* priv, int idx, mActor_name_t item, u32 cond);
+14 -4
View File
@@ -27,6 +27,7 @@
#include "m_tag_ovl_h.h"
#include "m_catalog_ovl_h.h"
#include "m_hand_ovl_h.h"
#include "m_inventory_ovl_h.h"
#ifdef __cplusplus
extern "C" {
@@ -44,7 +45,12 @@ enum {
// TODO: fill this out
typedef struct submenu_segment_s {
u8 _00[0x54];
int _00;
s16 _04;
s16 _06;
s16 _08;
s16 _0A;
u8 _0C[0x54 - 0x0C];
} mSM_Segment_c;
typedef struct submenu_menu_info_s {
@@ -104,8 +110,10 @@ typedef void (*mSM_MOVE_CHG_BASE_PROC)(mSM_MenuInfo_c*, int);
typedef void (*mSM_SET_CHAR_MATRIX_PROC)(GRAPH*);
typedef void (*mSM_CBUF_COPY_PROC)(GRAPH*, PreRender*, int, int, int);
typedef void (*mSM_SET_DRAWMODE_PROC)(GRAPH*, PreRender*, f32, f32, s16);
typedef void (*mSM_DRAW_ITEM_PROC)(GRAPH*, f32, f32, f32, mActor_name_t, int, int, int);
typedef void (*mSM_DRAW_MAIL_PROC)(GRAPH*, f32, f32, f32, Mail_c*, int, int);
typedef void (*mSM_DRAW_ITEM_PROC)(GRAPH* graph, f32 pos_x, f32 pos_y, f32 scale, mActor_name_t item, int present_flag,
int color_flag, int anim_frame, int shadow_flag, int mark_flag);
typedef void (*mSM_DRAW_MAIL_PROC)(GRAPH* graph, f32 pos_x, f32 pos_y, f32 scale, Mail_c* mail, int color_flag,
int shadow_flag, int mark_flag);
typedef void (*mSM_SETUP_VIEW_PROC)(Submenu*, GRAPH*, int);
typedef void (*mSM_CHANGE_VIEW_PROC)(GRAPH*, f32, f32, f32, f32, s16, int, int);
@@ -135,7 +143,7 @@ struct submenu_overlay_s {
/* 0x97C */ mTG_Ovl_c* tag_ovl;
/* 0x980 */ mHD_Ovl_c* hand_ovl;
/* 0x984 */ mHP_Ovl_c* hanwiaPortrait_ovl;
/* 0x988 */ void* inventory_ovl;
/* 0x988 */ mIV_Ovl_c* inventory_ovl;
/* 0x98C */ mED_Ovl_c* editor_ovl;
/* 0x990 */ mBD_Ovl_c* board_ovl;
/* 0x994 */ mAD_Ovl_c* address_ovl;
@@ -172,6 +180,8 @@ 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);
#ifdef __cplusplus
}
+138 -6
View File
@@ -11,29 +11,161 @@ extern "C" {
#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);
enum {
mTG_TYPE_NONE,
mTG_TYPE_FIELD_DEFAULT,
mTG_TYPE_FIELD_DEFAULT_BURY,
mTG_TYPE_FIELD_LETTER,
mTG_TYPE_FIELD_LETTER_BURY,
mTG_TYPE_FIELD_HUKUBUKURO,
mTG_TYPE_FIELD_HUKUBUKURO_BURY,
mTG_TYPE_FIELD_RELEASE,
mTG_TYPE_CATCH_ITEM,
mTG_TYPE_FIELD_PLANT,
mTG_TYPE_FIELD_PLANT_JOB,
mTG_TYPE_PRESENT_ITEM,
mTG_TYPE_ROOM_DEFAULT,
mTG_TYPE_ROOM_WALL,
mTG_TYPE_ROOM_CARPET,
mTG_TYPE_ROOM_LETTER,
mTG_TYPE_ROOM_HUKUBUKURO,
mTG_TYPE_OTHER_LETTER,
mTG_TYPE_OTHER_HUKUBUKURO,
mTG_TYPE_DEF_RMAIL,
mTG_TYPE_ROOM_RMAIL,
mTG_TYPE_DEF_RMAIL_PRE,
mTG_TYPE_DEF_SMAIL,
mTG_TYPE_ROOM_SMAIL,
mTG_TYPE_DEF_SMAIL_PRE,
mTG_TYPE_DUMP_MAIL,
mTG_TYPE_MONEY_SACK,
mTG_TYPE_QUEST_ITEM,
mTG_TYPE_SELL_ITEM,
mTG_TYPE_GIVE_ITEM,
mTG_TYPE_SEND_MAIL,
mTG_TYPE_FIELD_TICKET,
mTG_TYPE_FIELD_TICKET_BURY,
mTG_TYPE_ROOM_TICKET,
mTG_TYPE_CATCH_TICKET,
mTG_TYPE_PUTIN_ITEM,
mTG_TYPE_SHRINE_ITEM,
mTG_TYPE_HANIWA_ITEM,
mTG_TYPE_HANIWA_PUT_ITEM,
mTG_TYPE_HANIWA_PRICE,
mTG_TYPE_HANIWA_GET_ITEM,
mTG_TYPE_ORDER_ITEM,
mTG_TYPE_CP_DELETE,
mTG_TYPE_CP_DELETE2,
mTG_TYPE_FIELD_MAIL_MARK,
mTG_TYPE_DUMP_MAIL_MARK_CONF,
mTG_TYPE_FIELD_MAIL_MARK2,
mTG_TYPE_CPACK_MAIL_MARK,
mTG_TYPE_SELL_ALL_ITEM,
mTG_TYPE_MUSIC_SELECT,
mTG_TYPE_MUSIC_SELECT_MANY,
mTG_TYPE_FIELD_WISP,
mTG_TYPE_CATCH_WISP,
mTG_TYPE_TAG_HAND_OVER_CURATOR,
mTG_TYPE_TAG_NW_SELECT,
mTG_TYPE_TAG_NW_MY_ROOM,
mTG_TYPE_TAG_NW_OT_ROOM,
mTG_TYPE_TAG_NW_UG_ROOM,
mTG_TYPE_TAG_NW_MR_SEL_STICK,
mTG_TYPE_TAG_NW_OR_SEL_STICK,
mTG_TYPE_TAG_NW_SEL_PUT,
mTG_TYPE_TAG_NW_SEL_STK_PATTERN,
mTG_TYPE_TAG_REMOVE,
mTG_TYPE_TAG_PUT_ALL,
mTG_TYPE_TAG_PUT_CHK,
mTG_TYPE_FIELD_LETTERS,
mTG_TYPE_FIELD_LETTERS_BURY,
mTG_TYPE_ROOM_LETTERS,
mTG_TYPE_OTHER_LETTERS,
mTG_TYPE_CHANGE_ORIGINAL,
mTG_TYPE_TAISOU_CARD,
mTG_TYPE_DUMP_ITEM,
mTG_TYPE_FIELD_SIGN,
mTG_TYPE_FIELD_BALLOON,
mTG_TYPE_TAG_NW_SELECT_CHANGE,
mTG_TYPE_TAG_NW_SELECT_PUT,
mTG_TYPE_76,
mTG_TYPE_TAG_PASSWORD_ITEM,
mTG_TYPE_NUM
};
enum {
mTG_TABLE_ITEM,
mTG_TABLE_MAIL,
mTG_TABLE_MONEY,
mTG_TABLE_PLAYER,
mTG_TABLE_BG,
mTG_TABLE_MBOX,
mTG_TABLE_HANIWA,
mTG_TABLE_COLLECT,
mTG_TABLE_WCHANGE,
mTG_TABLE_CPMAIL,
mTG_TABLE_CPMAIL_WC,
mTG_TABLE_CPMAIL_TI,
mTG_TABLE_CPEDIT,
mTG_TABLE_CPEDIT_END,
mTG_TABLE_CATALOG,
mTG_TABLE_CATALOG_WC,
mTG_TABLE_MUSIC_MAIN,
mTG_TABLE_NEEDLEWORK,
mTG_TABLE_CPORIGINAL,
mTG_TABLE_INVENTORY_WC_ORG,
mTG_TABLE_CPORIGINAL_NW,
mTG_TABLE_CPORIGINAL_WC,
mTG_TABLE_CPORIGINAL_TI,
mTG_TABLE_GBA,
mTG_TABLE_GBA_NW,
mTG_TABLE_CARD,
mTG_TABLE_GBA_NW2,
mTG_TABLE_NUM
};
/* sizeof(mTG_tag_c) == 0xB4 */
typedef struct tag_s {
u8 type;
u8 _01[0x40 - 0x01];
u8 _01;
u8 _02;
u8 _03;
f32 _04[2];
f32 pos[2];
u8 _14[0x38 - 0x14];
int table;
int _3C;
int _40;
u8 _44[0xB4 - 0x44];
} mTG_tag_c;
typedef void (*mTG_INIT_TAG_DATA_ITEM_WIN_PROC)(Submenu*);
typedef void (*mTG_CHG_TAG_FUNC_PROC)(Submenu*, int, int, int, f32, f32);
typedef void (*mTG_SET_HAND_POS_PROC)(Submenu*, f32*, int, int);
typedef void (*mTG_EXCHANGE_PROC)(Submenu*, mSM_MenuInfo_c*);
typedef Mail_c* (*mTG_GET_MAIL_POINTER_PROC)(Submenu*, mHD_Ovl_c*);
typedef int (*mTG_GET_TABLE_IDX_PROC)(mTG_tag_c*);
/* TODO */
struct tag_ovl_s {
/* 0x000 */ int sel_tag_idx;
/* 0x004 */ int ret_tag_idx;
/* 0x008 */ mTG_tag_c tags[mTG_TAG_NUM];
/* 0x2D8 */ void* _2D8;
/* 0x2DC */ void* _2DC;
/* 0x2D8 */ mTG_SET_HAND_POS_PROC set_hand_pos_proc;
/* 0x2DC */ mTG_EXCHANGE_PROC exchange_proc;
/* 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];
/* 0x2E8 */ mTG_GET_MAIL_POINTER_PROC get_mail_pointer_proc;
/* 0x2EC */ mTG_GET_TABLE_IDX_PROC get_table_idx_proc;
/* 0x2F0 */ s16 item_name_wait_time;
/* 0x2F2 */ u8 _2F2[0x3C4 - 0x2F2];
};
extern int mTG_mark_main(Submenu*, mSM_MenuInfo_c*, int, int);
extern int mTG_mark_mainX(Submenu*, mSM_MenuInfo_c*, int, int, int, int);
#ifdef __cplusplus
}
#endif
+1124
View File
File diff suppressed because it is too large Load Diff