Finish & link m_inventory_ovl

This commit is contained in:
Cuyler36
2024-05-19 13:17:52 -04:00
committed by Cuyler36
parent ad38b86c8e
commit 5914ad6698
14 changed files with 2069 additions and 218 deletions
+5
View File
@@ -970,6 +970,11 @@ m_hboard_ovl.c:
.text: [0x805E0AC8, 0x805E1398]
.rodata: [0x8064B480, 0x8064B4B8]
.data: [0x806CD3B0, 0x806CD3C8]
m_inventory_ovl.c:
.text: [0x805E1398, 0x805E4DFC]
.rodata: [0x8064B4B8, 0x8064B5C8]
.data: [0x806CD3C8, 0x806CD7B8]
.bss: [0x8133FAE0, 0x813400D0]
m_map_ovl.c:
.text: [0x805E5EFC, 0x805E7A54]
.rodata: [0x8064B628, 0x8064B6B0]
+5
View File
@@ -38,6 +38,9 @@ typedef enum audio_sound_effects {
NA_SE_25 = 0x25,
NA_SE_26 = 0x26,
NA_SE_MENU_PAUSE = 0x30,
NA_SE_31 = 0x31,
NA_SE_DRAWER_SHUT = 0x3A,
NA_SE_ITEM_GET = 0x40,
@@ -78,6 +81,8 @@ typedef enum audio_sound_effects {
NA_SE_ROD_STROKE = 0x109,
NA_SE_ROD_BACK,
NA_SE_EAT = 0x113,
NA_SE_WEAR = 0x11C,
NA_SE_SCOOP1 = 0x11E,
+4 -1
View File
@@ -4,6 +4,9 @@
#include "types.h"
#define SQRT_OF_2_F 1.41421356237309504880f
#define SQRT_OF_3_F 1.73205080756887729353f
#define SQRT_3_OVER_3_F (SQRT_OF_3_F / 3.0f)
#define M_PI 3.14159265358979323846f
@@ -15,4 +18,4 @@ f32 fatan2(f32, f32);
f64 fsqrt(f32);
f32 facos(f32);
#endif
#endif
+11
View File
@@ -9,6 +9,17 @@
extern "C" {
#endif
enum {
mBGM_PAUSE_0,
mBGM_PAUSE_1,
mBGM_PAUSE_2,
mBGM_PAUSE_NOTICE,
mBGM_PAUSE_4,
mBGM_PAUSE_STOP,
mBGM_PAUSE_NUM
};
extern void mBGMPsComp_make_ps_fanfare(u8 bgm_num, u16 stop_type);
extern void mBGMPsComp_make_ps_lost_fanfare(u8 bgm_num, u16 stop_type);
extern void mBGMPsComp_make_ps_wipe(u16 stop_type);
+23 -6
View File
@@ -11,9 +11,10 @@
extern "C" {
#endif
#define mIV_PLAYER_JOINT_NUM 27
#define mIV_PLAYER_JOINT_NUM (mPlayer_JOINT_NUM + 1)
#define mIV_ITEM_JOINT_NUM 8
#define mIV_PLAYER_EFFECT_NUM 20
#define mIV_COLLECT_NUM 40
enum {
mIV_ITEM_SCALE_TYPE_NONE,
@@ -30,11 +31,26 @@ enum {
mIV_PAGE_FISH_COLLECTION,
mIV_PAGE_INVENTORY,
mIV_PAGE_INSECT_COLLECTION,
mIV_PAGE_ORIGINAL_DESIGNS,
mIV_PAGE_NUM
};
enum {
mIV_ANIM_WALK,
mIV_ANIM_CATCH,
mIV_ANIM_CHANGE,
mIV_ANIM_EAT,
mIV_ANIM_NUM
};
enum {
mIV_STRING_LAND_NAME,
mIV_STRING_PLAYER_NAME,
mIV_STRING_NUM
};
typedef struct inventory_effect_s {
int timer;
xyz_t pos;
@@ -46,8 +62,8 @@ typedef mActor_name_t (*mIV_SET_COLLECT_ITEMNO_PROC)(int, int);
/* sizeof (struct inventory_ovl_s) == 0x5EC */
struct inventory_ovl_s {
cKF_SkeletonInfo_R_c player_keyframe0;
cKF_SkeletonInfo_R_c player_keyframe1;
cKF_SkeletonInfo_R_c player_main_keyframe;
cKF_SkeletonInfo_R_c player_com_keyframe;
s_xyz player_work[mIV_PLAYER_JOINT_NUM];
s_xyz player_morph[mIV_PLAYER_JOINT_NUM];
@@ -60,8 +76,8 @@ struct inventory_ovl_s {
u8 _374[0x3BC - 0x374];
u16 selected_item_bitfield;
u16 selected_mail_bitfield;
u16 selectable_item_bitfield;
u16 selectable_mail_bitfield;
u32 disp_money;
int disp_money_change_frames;
@@ -74,6 +90,7 @@ struct inventory_ovl_s {
u8 food_idx;
u8 item_scale_type[mPr_POCKETS_SLOT_COUNT];
u8 page_order[mIV_PAGE_NUM];
u8 next_page_id;
s16 page_move_timer;
s16 remove_timer;
mIV_pl_eff_c pl_eff[mIV_PLAYER_EFFECT_NUM];
+23 -1
View File
@@ -22,6 +22,8 @@ typedef struct player_actor_s PLAYER_ACTOR;
#define mPlayer_FORCE_POSITION_ANGLE_ROTY (1 << 5)
#define mPlayer_FORCE_POSITION_ANGLE_ROTZ (1 << 6)
#define mPlayer_JOINT_NUM 26
enum {
mPlayer_ADDRESSABLE_TRUE,
mPlayer_ADDRESSABLE_FALSE_MOVEMENT,
@@ -364,6 +366,7 @@ enum {
mPlayer_ITEM_KIND_UMBRELLA30,
mPlayer_ITEM_KIND_UMBRELLA31,
mPlayer_ITEM_KIND_ORG_UMBRELLA00,
mPlayer_ITEM_KIND_ORG_UMBRELLA01,
mPlayer_ITEM_KIND_ORG_UMBRELLA02,
mPlayer_ITEM_KIND_ORG_UMBRELLA03,
@@ -371,7 +374,6 @@ enum {
mPlayer_ITEM_KIND_ORG_UMBRELLA05,
mPlayer_ITEM_KIND_ORG_UMBRELLA06,
mPlayer_ITEM_KIND_ORG_UMBRELLA07,
mPlayer_ITEM_KIND_ORG_UMBRELLA08,
mPlayer_ITEM_KIND_ROD,
mPlayer_ITEM_KIND_GOLD_ROD,
@@ -470,6 +472,26 @@ enum {
mPlayer_ITEM_DATA_NUM
};
enum {
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
mPlayer_ITEM_DATA_TYPE_BALLOON_ANIMATION,
mPlayer_ITEM_DATA_TYPE_PINWHEEL_ANIMATION,
mPlayer_ITEM_DATA_TYPE_NUM
};
enum {
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_AXE,
mPlayer_PART_TABLE_PICK_UP,
mPlayer_PART_TABLE_NET,
mPlayer_PART_TABLE_NUM
};
enum {
mPlayer_CREATURE_INSECT,
mPlayer_CREATURE_GYOEI,
+18
View File
@@ -4,6 +4,7 @@
#include "types.h"
#include "m_player.h"
#include "m_private_h.h"
#include "c_keyframe.h"
#ifdef __cplusplus
extern "C" {
@@ -79,6 +80,23 @@ extern int mPlib_Check_StopNet(xyz_t* net_pos);
extern int mPlib_Check_DigScoop(xyz_t* scoop_pos);
extern int mPlib_Check_tree_shaken(const xyz_t* pos);
extern int mPlib_Check_VibUnit_OneFrame(const xyz_t* pos);
extern int mPlib_Get_BasicItemShapeIndex_fromItemKind(int item_kind);
extern u8 mPlib_Get_Item_DataPointerType(int idx);
extern void* mPlib_Get_Item_DataPointer(int idx);
extern int mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(int item_kind);
extern cKF_Animation_R_c* mPlib_Get_Pointer_Animation(int anim_idx);
extern int mPlib_Get_BasicPartTableIndex_fromAnimeIndex(int anim_idx);
extern int mPlib_Get_BasicItemAnimeIndex_fromItemKind(int item_kind);
extern void mPlib_DMA_player_Part_Table(s8* part_table_p, int idx);
extern cKF_Skeleton_R_c* mPlib_get_player_mdl_p(void);
extern u8* mPlib_Get_PlayerEyeTexAnimation_p(int anim_idx);
extern u8* mPlib_Get_PlayerMouthTexAnimation_p(int anim_idx);
extern u8* mPlib_Get_eye_tex_p(int idx);
extern u8* mPlib_Get_mouth_tex_p(int idx);
extern u8* mPlib_get_player_tex_p(GAME* game);
extern u16* mPlib_get_player_pallet_p(GAME* game);
extern u16* mPlib_get_player_face_pallet_p(GAME* game);
extern int mPlib_Check_scoop_after(GAME* game, xyz_t* pos, mActor_name_t* item, ACTOR** hit_actor, int gold_shovel);
extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p();
+8 -1
View File
@@ -103,7 +103,7 @@ enum {
mSM_IV_OPEN_SHRINE,
mSM_IV_OPEN_12,
mSM_IV_OPEN_EXCHANGE,
mSM_IV_OPEN_14,
mSM_IV_OPEN_CPMAIL,
mSM_IV_OPEN_CURATOR,
mSM_IV_OPEN_16,
@@ -118,6 +118,13 @@ enum {
mSM_IV_ITEM_NUM
};
enum {
mSM_HANIWA_OPEN_ENTRUST,
mSM_HANIWA_OPEN_TAKE,
mSM_HANIWA_OPEN_NUM
};
enum {
mSM_BD_OPEN_WRITE,
mSM_BD_OPEN_READ,
+9 -7
View File
@@ -28,6 +28,7 @@
#include "m_catalog_ovl_h.h"
#include "m_hand_ovl_h.h"
#include "m_inventory_ovl_h.h"
#include "m_player.h"
#ifdef __cplusplus
extern "C" {
@@ -65,14 +66,15 @@ typedef struct submenu_ovl_dlftbl_s {
int in_ram_flag;
} mSM_Ovl_dlftbl_c;
// TODO: fill this out
typedef struct submenu_segment_s {
int _00;
s16 _04;
s16 _06;
s16 _08;
s16 _0A;
u8 _0C[0x30 - 0x0C];
s16 player_main_anime_idx;
s16 player_item_anime_idx;
s16 change_player_main_anime_idx;
s16 player_anime_timer;
s16 player_umbrella_bank_idx;
s16 umbrella_ids[2];
s8 player_part_table[mPlayer_JOINT_NUM + 1];
int dlftbl_loaded_num;
mSM_Ovl_dlftbl_c* dlftbl_loaded_tbl[8];
} mSM_Segment_c;
@@ -91,7 +93,7 @@ typedef struct submenu_menu_info_s {
f32 speed[2];
char* _28;
int _2C;
int open_flag;
int next_proc_status;
s16 move_drt;
+1 -1
View File
@@ -2653,7 +2653,7 @@ extern void mBGM_reset() {
}
if (ps_comp->pause_state != 0) {
mBGMPsComp_pause(5);
mBGMPsComp_pause(mBGM_PAUSE_STOP);
}
mBGMDemo_ct(&bgm->demo);
+2 -2
View File
@@ -527,8 +527,8 @@ static void mCL_move_Move(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
static void mCL_move_Play(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
mCL_Ovl_c* catalog_ovl = submenu->overlay->catalog_ovl;
if (menu_info->_2C == FALSE) {
menu_info->_2C = TRUE;
if (menu_info->open_flag == FALSE) {
menu_info->open_flag = TRUE;
submenu->overlay->tag_ovl->chg_tag_func_proc(submenu, 14, 0, 0, 0.0f, 0.0f);
} else if (catalog_ovl->page_timer != 0) {
catalog_ovl->page_timer--;
+6 -4
View File
@@ -310,8 +310,8 @@ static void mHD_drop_item(Submenu* submenu, mTG_tag_c* tag, mActor_name_t* item,
submenu->overlay->tag_ovl->init_tag_data_item_win_proc(submenu);
if (overlay->segment._04 == 1) {
overlay->segment._08 = 0;
if (overlay->segment.player_main_anime_idx == mIV_ANIM_CATCH) {
overlay->segment.change_player_main_anime_idx = mIV_ANIM_WALK;
}
}
@@ -515,7 +515,8 @@ static void mHD_open_end_proc_item_type3(Submenu* submenu, int idx, int table) {
int category = ITEM_NAME_GET_CAT(item);
if (item == RSV_CLOTH || ITEM_IS_CLOTH(item)) {
if (cKF_FrameControl_passCheck_now(&submenu->overlay->inventory_ovl->player_keyframe0.frame_control, 36.0f)) {
if (cKF_FrameControl_passCheck_now(&submenu->overlay->inventory_ovl->player_main_keyframe.frame_control,
36.0f)) {
cloth_p = &Now_Private->cloth;
mHD_drop_item(submenu, tag, &cloth_p->item, NULL);
@@ -768,7 +769,8 @@ static void mHD_sasu2_move(Submenu* submenu) {
int category = ITEM_NAME_GET_CAT(hand_ovl->info.item);
if (hand_ovl->info.item == RSV_CLOTH || ITEM_IS_CLOTH(hand_ovl->info.item)) {
if (cKF_FrameControl_passCheck_now(&submenu->overlay->inventory_ovl->player_keyframe0.frame_control, 36.0f)) {
if (cKF_FrameControl_passCheck_now(&submenu->overlay->inventory_ovl->player_main_keyframe.frame_control,
36.0f)) {
mPr_cloth_c* cloth_p = &Now_Private->cloth;
u16 cloth_idx;
+1952 -193
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -2099,7 +2099,7 @@ static void mSM_set_new_start_data(Submenu* submenu) {
menu->data3 = submenu->param3;
menu->move_flag = FALSE;
if (type == mSM_OVL_INVENTORY && submenu->param0 == mSM_IV_OPEN_14) {
if (type == mSM_OVL_INVENTORY && submenu->param0 == mSM_IV_OPEN_CPMAIL) {
menu->position[0] = -300.0f;
}
@@ -2209,7 +2209,7 @@ static void mSM_return_func(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
}
}
menu_info->_2C = FALSE;
menu_info->open_flag = FALSE;
menu_info->pre_menu_type = mSM_OVL_NONE;
menu_info->next_menu_type = mSM_OVL_NONE;
menu_info->proc_status = mSM_OVL_PROC_MOVE;