mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
Finish & link m_inventory_ovl
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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,
|
||||
|
||||
@@ -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
@@ -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,
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user