Implement & match m_player_common.c_inc

This commit is contained in:
Cuyler36
2024-08-28 22:37:24 -04:00
parent 306edd74fa
commit f7d5f92389
30 changed files with 12514 additions and 3815 deletions
-3
View File
@@ -10286,9 +10286,6 @@ config/rel.yml:
mFM_rail_pal_11:
addrs: [0x80F8C428, 0x80F8C448]
type: pal16
mFM_rail_pal_12:
addrs: [0x80F8C448, 0x80F8C468]
type: pal16
# ac_koinobori
# NPC draw data assets
+12 -1
View File
@@ -8,6 +8,18 @@
extern "C" {
#endif
enum {
EffectBG_EFFECT_SHAKE,
EffectBG_EFFECT_CUT_LEFT,
EffectBG_EFFECT_CUT_RIGHT,
EffectBG_EFFECT_SHAKE_SMALL,
EffectBG_EFFECT_SHAKE_LARGE,
EffectBG_EFFECT_NUM
};
typedef void (*EffectBG_MAKE_EFFECTBG_PROC)(GAME*, s16, s16, xyz_t*);
extern ACTOR_PROFILE Effectbg_Profile;
#ifdef __cplusplus
@@ -15,4 +27,3 @@ extern ACTOR_PROFILE Effectbg_Profile;
#endif
#endif
+8 -1
View File
@@ -8,6 +8,14 @@
extern "C" {
#endif
typedef mActor_name_t (*aHTBL_SEARCH_PICK_UP_ITEM_LAYER2_PROC)(GAME*);
typedef struct htable_clip_s {
aHTBL_SEARCH_PICK_UP_ITEM_LAYER2_PROC search_pick_up_item_layer2_proc;
xyz_t pickup_pos;
s16 pickup_counter;
} aHTBL_Clip_c;
extern ACTOR_PROFILE Htable_Profile;
#ifdef __cplusplus
@@ -15,4 +23,3 @@ extern ACTOR_PROFILE Htable_Profile;
#endif
#endif
+1
View File
@@ -296,6 +296,7 @@ extern u8 aMR_GetAlphaEdge(u16 ftr_name);
extern int aMR_DrawDolphinMode(u16 ftr_name);
extern Gfx* aMR_IconNo2Gfx1(int icon_no);
extern Gfx* aMR_IconNo2Gfx2(int icon_no);
extern int aMR_RadioBgmNow(void);
#ifdef __cplusplus
}
+1 -1
View File
@@ -402,7 +402,7 @@ typedef struct npc_condition_s {
typedef struct npc_uzai_s {
int step;
u8 tool;
u8 counter;
u8 flag;
u8 cross;
} aNPC_uzai_c;
+11 -11
View File
@@ -472,19 +472,19 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz
/**
* Calculates and applies transformation to world coordinates based on animation data.
*
* @param calcx X-coordinate for calculation base.
* @param calcy Y-coordinate for calculation base.
* @param calcz Z-coordinate for calculation base.
* @param base Base position result.
* @param calcp Position calculation parameters.
* @param val Angle value for rotation.
* @param trans Transformation to apply.
* @param calc_pos Calculated position result.
* @param base_pos Base world position.
* @param trans_x X-coordinate for translation.
* @param trans_y Y-coordinate for translation.
* @param trans_z Z-coordinate for translation.
* @param angle_y Angle value for rotation.
* @param scale Scaling factor.
* @param keyframe Skeleton info structure containing animation data.
* @param animation_flag Flags determining which transformations to apply.
* @param trans_flag Flags determining which transformations to apply.
*/
extern void cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(f32 calcx, f32 calcy, f32 calcz, xyz_t* base,
xyz_t* calcp, s16 val, xyz_t* trans,
cKF_SkeletonInfo_R_c* keyframe, int animation_flag);
extern void cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(xyz_t* calc_pos, const xyz_t* base_pos, f32 trans_x,
f32 trans_y, f32 trans_z, s16 angle_y, const xyz_t* scale,
cKF_SkeletonInfo_R_c* keyframe, int trans_flag);
#ifdef __cplusplus
}
+4 -2
View File
@@ -25,6 +25,8 @@
#include "ac_quest_manager_clip.h"
#include "ac_shop_goods_h.h"
#include "ac_shop_design.h"
#include "ac_effectbg.h"
#include "ac_htable.h"
#ifdef __cplusplus
extern "C" {
@@ -38,7 +40,7 @@ typedef struct clip_s {
/* 0x020 */ int arrange_ftr_num;
/* 0x024 */ void* _024;
/* 0x028 */ void* misin_clip;
/* 0x02C */ void* _02C;
/* 0x02C */ aHTBL_Clip_c* htbl_clip;
/* 0x030 */ void* _030;
/* 0x034 */ void* _034;
/* 0x038 */ void* _038;
@@ -72,7 +74,7 @@ typedef struct clip_s {
/* 0x0A8 */ void* _0A8;
/* 0x0AC */ aGYO_Clip_c* gyo_clip;
/* 0x0B0 */ aSG_Clip_c* shop_goods_clip;
/* 0x0B4 */ void* _0B4;
/* 0x0B4 */ EffectBG_MAKE_EFFECTBG_PROC make_effect_bg_proc;
/* 0x0B8 */ aShopUmbrella_Clip_c* shop_umbrella_clip;
/* 0x0BC */ aAR_Clip_c* arrange_room_clip;
/* 0x0C0 */ void* _0C0;
+12
View File
@@ -134,6 +134,13 @@ enum {
mCoBG_AREA_NUM
};
enum {
mCoBG_BLOCK_BGCHECK_MODE_NORMAL,
mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO,
mCoBG_BLOCK_BGCHECK_MODE_NUM
};
/* sizeof(mCoBG_CollisionData_c) == 4*/
typedef struct collision_bg_data_s {
/* 1------- -------- -------- -------- */ u32 shape : 1; /* collision shape */
@@ -331,6 +338,11 @@ extern void mCoBG_BgCheckControll_RemoveDirectedUnitColumn(xyz_t* reverse_pos, A
s16 check_type, int ut_x, int ut_z);
extern xyz_t mCoBG_UniqueWallCheck(ACTOR* actorx, f32 range, f32 y_ofs);
extern xyz_t mCoBG_ScopeWallCheck(ACTOR* actorx, const xyz_t* pos, f32 x, f32 z, f32 range, f32 y_ofs);
extern int mCoBG_ScrollCheck(xyz_t start_pos, xyz_t end_pos, f32 radius);
extern int mCoBG_GetBlockBgCheckMode(void);
extern void mCoBG_GroundCheckOnly(xyz_t* reverse_pos, ACTOR* actor, f32 check_range, f32 offset_y, s16 check_type);
extern f32 mCoBG_Wpos2BgUtCenterHeight_AddColumn(xyz_t pos);
extern f32 mCoBG_UtNum2UtCenterY_Keep(int ut_x, int ut_z);
extern void mCoBG_InitMoveBgData();
extern void mCoBG_InitBlockBgCheckMode();
+2 -2
View File
@@ -245,7 +245,7 @@ typedef struct common_data_s {
/* 0x0285BE */ s8 player_actor_exists;
/* 0x0285BF */ s8 complete_payment_type;
/* 0x0285C0 */ s8 player_decoy_flag;
/* 0x0285C1 */ u8 _285C1;
/* 0x0285C1 */ s8 axe_damage;
/* 0x0285C2 */ u8 make_npc2_actor;
/* 0x0285C4 */ s16 event_id;
/* 0x0285C6 */ u8 event_title_flags;
@@ -308,7 +308,7 @@ typedef struct common_data_s {
/* 0x02DB46 */ mCD_persistent_data_c travel_persistent_data; /* used for checking if travelling back to town */
/* 0x02DBA2 */ s16 island_weather;
/* 0x02DBA4 */ s16 island_weather_intensity;
/* 0x02DBA6 */ s16 _2DBA6;
/* 0x02DBA6 */ s16 sunburn_time;
/* 0x02DBA8 */ u8 memcard_slot;
/* 0X02DBAC */ int my_room_message_control_flags;
/* 0x02DBB0 */ s16 can_look_goki_count;
+7 -4
View File
@@ -25,11 +25,14 @@ extern "C" {
#define mFI_UT_WORLDSIZE_HALF_X_F (mFI_UT_WORLDSIZE_X_F / 2.0f)
#define mFI_UT_WORLDSIZE_HALF_Z_F (mFI_UT_WORLDSIZE_X_F / 2.0f)
#define mFI_BK_WORLDSIZE_X (mFI_UT_WORLDSIZE_X * UT_X_NUM)
#define mFI_BK_WORLDSIZE_Z (mFI_UT_WORLDSIZE_Z * UT_Z_NUM)
#define mFI_BK_WORLDSIZE_BASE (mFI_UNIT_BASE_SIZE * UT_BASE_NUM)
#define mFI_BK_WORLDSIZE_BASE_F ((f32)mFI_BK_WORLDSIZE_BASE)
#define mFI_BK_WORLDSIZE_X_F (mFI_UT_WORLDSIZE_X_F * UT_X_NUM)
#define mFI_BK_WORLDSIZE_Z_F (mFI_UT_WORLDSIZE_Z_F * UT_Z_NUM)
#define mFI_BK_WORLDSIZE_X mFI_BK_WORLDSIZE_BASE
#define mFI_BK_WORLDSIZE_Z mFI_BK_WORLDSIZE_BASE
#define mFI_BK_WORLDSIZE_X_F mFI_BK_WORLDSIZE_BASE_F
#define mFI_BK_WORLDSIZE_Z_F mFI_BK_WORLDSIZE_BASE_F
#define mFI_POS2UT(pos) ((int)((pos) / mFI_UNIT_BASE_SIZE_F))
+279 -27
View File
@@ -212,6 +212,9 @@ extern int mNT_check_unknown(mActor_name_t item_no);
#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 ITEM_IS_MYMANNIQUIN(n) ((n) >= FTR_CLOTH_MANNIQUIN_MY_ORIGINAL0 && (n) <= FTR_CLOTH_MYMANNIQUIN_END)
#define ITEM_IS_MYUMBRELLA(n) ((n) >= FTR_MYUMBRELLA_START && (n) <= FTR_MYUMBRELLA_END)
#define PAPER2TYPE(n) ((n) % PAPER_UNIQUE_NUM)
#define PAPER2STACK(n) ((n) / PAPER_UNIQUE_NUM)
@@ -281,12 +284,232 @@ extern int mNT_check_unknown(mActor_name_t item_no);
((item) == GOLD_TREE_BEES) \
)
// @BUG - they check for money tree variants twice
#define IS_ITEM_COLLIDEABLE_TREE(item) \
(((item) == TREE_S0) || \
((item) == TREE_APPLE_S0) || \
((item) == TREE_ORANGE_S0) || \
((item) == TREE_PEACH_S0) || \
((item) == TREE_PEAR_S0) || \
((item) == TREE_CHERRY_S0) || \
((item) == TREE_1000BELLS_S0) || \
((item) == TREE_10000BELLS_S0) || \
((item) == TREE_30000BELLS_S0) || \
((item) == TREE_1000BELLS_S0) || \
((item) == TREE_10000BELLS_S0) || \
((item) == TREE_30000BELLS_S0) || \
((item) == TREE_100BELLS_S0) || \
((item) == TREE_PALM_S0) || \
((item) == CEDAR_TREE_S0) || \
((item) == GOLD_TREE_S0) || \
((item) == TREE_S1) || \
((item) == TREE_APPLE_S1) || \
((item) == TREE_ORANGE_S1) || \
((item) == TREE_PEACH_S1) || \
((item) == TREE_PEAR_S1) || \
((item) == TREE_CHERRY_S1) || \
((item) == TREE_1000BELLS_S1) || \
((item) == TREE_10000BELLS_S1) || \
((item) == TREE_30000BELLS_S1) || \
((item) == TREE_1000BELLS_S1) || \
((item) == TREE_10000BELLS_S1) || \
((item) == TREE_30000BELLS_S1) || \
((item) == TREE_100BELLS_S1) || \
((item) == TREE_PALM_S1) || \
((item) == CEDAR_TREE_S1) || \
((item) == GOLD_TREE_S1) || \
((item) == TREE_S2) || \
((item) == TREE_APPLE_S2) || \
((item) == TREE_ORANGE_S2) || \
((item) == TREE_PEACH_S2) || \
((item) == TREE_PEAR_S2) || \
((item) == TREE_CHERRY_S2) || \
((item) == TREE_1000BELLS_S2) || \
((item) == TREE_10000BELLS_S2) || \
((item) == TREE_30000BELLS_S2) || \
((item) == TREE_1000BELLS_S2) || \
((item) == TREE_10000BELLS_S2) || \
((item) == TREE_30000BELLS_S2) || \
((item) == TREE_100BELLS_S2) || \
((item) == TREE_PALM_S2) || \
((item) == CEDAR_TREE_S2) || \
((item) == GOLD_TREE_S2) || \
((item) == TREE) || \
((item) == TREE_APPLE_FRUIT) || \
((item) == TREE_ORANGE_FRUIT) || \
((item) == TREE_PEACH_FRUIT) || \
((item) == TREE_PEAR_FRUIT) || \
((item) == TREE_CHERRY_FRUIT) || \
((item) == TREE_1000BELLS) || \
((item) == TREE_10000BELLS) || \
((item) == TREE_30000BELLS) || \
((item) == TREE_100BELLS) || \
((item) == TREE_PALM_FRUIT) || \
((item) == CEDAR_TREE) || \
((item) == GOLD_TREE) || \
((item) == GOLD_TREE_SHOVEL) || \
((item) == TREE_APPLE_NOFRUIT_0) || \
((item) == TREE_ORANGE_NOFRUIT_0) || \
((item) == TREE_PEACH_NOFRUIT_0) || \
((item) == TREE_PEAR_NOFRUIT_0) || \
((item) == TREE_CHERRY_NOFRUIT_0) || \
((item) == TREE_PALM_NOFRUIT_0) || \
((item) == TREE_APPLE_NOFRUIT_1) || \
((item) == TREE_ORANGE_NOFRUIT_1) || \
((item) == TREE_PEACH_NOFRUIT_1) || \
((item) == TREE_PEAR_NOFRUIT_1) || \
((item) == TREE_CHERRY_NOFRUIT_1) || \
((item) == TREE_PALM_NOFRUIT_1) || \
((item) == TREE_APPLE_NOFRUIT_2) || \
((item) == TREE_ORANGE_NOFRUIT_2) || \
((item) == TREE_PEACH_NOFRUIT_2) || \
((item) == TREE_PEAR_NOFRUIT_2) || \
((item) == TREE_CHERRY_NOFRUIT_2) || \
((item) == TREE_PALM_NOFRUIT_2) || \
((item) == TREE_BEES) || \
((item) == TREE_FTR) || \
((item) == TREE_LIGHTS) || \
((item) == TREE_PRESENT) || \
((item) == TREE_BELLS) || \
((item) == CEDAR_TREE_BELLS) || \
((item) == CEDAR_TREE_FTR) || \
((item) == CEDAR_TREE_BEES) || \
((item) == CEDAR_TREE_LIGHTS) || \
((item) == GOLD_TREE_BELLS) || \
((item) == GOLD_TREE_FTR) || \
((item) == GOLD_TREE_BEES) \
)
#define IS_ITEM_XMAS_TREE(item) ((item) == TREE_LIGHTS || (item) == CEDAR_TREE_LIGHTS)
#define IS_ITEM_SMALL_TREE(item) ( \
((item) == TREE_S0) || \
((item) == TREE_APPLE_S0) || \
((item) == TREE_ORANGE_S0) || \
((item) == TREE_PEACH_S0) || \
((item) == TREE_PEAR_S0) || \
((item) == TREE_CHERRY_S0) || \
((item) == TREE_1000BELLS_S0) || \
((item) == TREE_10000BELLS_S0) || \
((item) == TREE_30000BELLS_S0) || \
((item) == TREE_1000BELLS_S0) || \
((item) == TREE_10000BELLS_S0) || \
((item) == TREE_30000BELLS_S0) || \
((item) == TREE_100BELLS_S0) || \
((item) == TREE_PALM_S0) || \
((item) == CEDAR_TREE_S0) || \
((item) == GOLD_TREE_S0) \
)
#define IS_ITEM_MED_TREE(item) ( \
((item) == TREE_S1) || \
((item) == TREE_APPLE_S1) || \
((item) == TREE_ORANGE_S1) || \
((item) == TREE_PEACH_S1) || \
((item) == TREE_PEAR_S1) || \
((item) == TREE_CHERRY_S1) || \
((item) == TREE_1000BELLS_S1) || \
((item) == TREE_10000BELLS_S1) || \
((item) == TREE_30000BELLS_S1) || \
((item) == TREE_1000BELLS_S1) || \
((item) == TREE_10000BELLS_S1) || \
((item) == TREE_30000BELLS_S1) || \
((item) == TREE_100BELLS_S1) || \
((item) == TREE_PALM_S1) || \
((item) == CEDAR_TREE_S1) || \
((item) == GOLD_TREE_S1) \
)
#define IS_ITEM_LARGE_TREE(item) ( \
((item) == TREE_S2) || \
((item) == TREE_APPLE_S2) || \
((item) == TREE_ORANGE_S2) || \
((item) == TREE_PEACH_S2) || \
((item) == TREE_PEAR_S2) || \
((item) == TREE_CHERRY_S2) || \
((item) == TREE_1000BELLS_S2) || \
((item) == TREE_10000BELLS_S2) || \
((item) == TREE_30000BELLS_S2) || \
((item) == TREE_1000BELLS_S2) || \
((item) == TREE_10000BELLS_S2) || \
((item) == TREE_30000BELLS_S2) || \
((item) == TREE_100BELLS_S2) || \
((item) == TREE_PALM_S2) || \
((item) == CEDAR_TREE_S2) || \
((item) == GOLD_TREE_S2) \
)
#define IS_ITEM_FULL_TREE(item) \
(((item) == TREE) || \
((item) == TREE_APPLE_FRUIT) || \
((item) == TREE_ORANGE_FRUIT) || \
((item) == TREE_PEACH_FRUIT) || \
((item) == TREE_PEAR_FRUIT) || \
((item) == TREE_CHERRY_FRUIT) || \
((item) == TREE_1000BELLS) || \
((item) == TREE_10000BELLS) || \
((item) == TREE_30000BELLS) || \
((item) == TREE_100BELLS) || \
((item) == TREE_PALM_FRUIT) || \
((item) == CEDAR_TREE) || \
((item) == GOLD_TREE) || \
((item) == GOLD_TREE_SHOVEL) || \
((item) == TREE_APPLE_NOFRUIT_0) || \
((item) == TREE_ORANGE_NOFRUIT_0 ) || \
((item) == TREE_PEACH_NOFRUIT_0) || \
((item) == TREE_PEAR_NOFRUIT_0) || \
((item) == TREE_CHERRY_NOFRUIT_0) || \
((item) == TREE_PALM_NOFRUIT_0) || \
((item) == TREE_APPLE_NOFRUIT_1) || \
((item) == TREE_ORANGE_NOFRUIT_1 ) || \
((item) == TREE_PEACH_NOFRUIT_1) || \
((item) == TREE_PEAR_NOFRUIT_1) || \
((item) == TREE_CHERRY_NOFRUIT_1) || \
((item) == TREE_PALM_NOFRUIT_1) || \
((item) == TREE_APPLE_NOFRUIT_2) || \
((item) == TREE_ORANGE_NOFRUIT_2 ) || \
((item) == TREE_PEACH_NOFRUIT_2) || \
((item) == TREE_PEAR_NOFRUIT_2) || \
((item) == TREE_CHERRY_NOFRUIT_2) || \
((item) == TREE_PALM_NOFRUIT_2) || \
((item) == TREE_BEES) || \
((item) == TREE_FTR) || \
((item) == TREE_LIGHTS) || \
((item) == TREE_PRESENT) || \
((item) == TREE_BELLS) || \
((item) == CEDAR_TREE_BELLS) || \
((item) == CEDAR_TREE_FTR) || \
((item) == CEDAR_TREE_BEES) || \
((item) == CEDAR_TREE_LIGHTS) || \
((item) == GOLD_TREE_BELLS) || \
((item) == GOLD_TREE_FTR) || \
((item) == GOLD_TREE_BEES) \
)
#define IS_ITEM_SHAKEABLE_TREE(item) (IS_ITEM_MED_TREE(item) || IS_ITEM_LARGE_TREE(item) || IS_ITEM_FULL_TREE(item))
#define IS_ITEM_BEE_TREE(item) ((item) == TREE_BEES || (item) == CEDAR_TREE_BEES || (item) == GOLD_TREE_BEES)
#define IS_ITEM_STONE(item) ((item) >= ROCK_A && (item) <= ROCK_E)
#define IS_ITEM_STONE_TC(item) (((item) >= MONEY_ROCK_A && (item) <= MONEY_ROCK_E) || (item) == MONEY_FLOWER_SEED) /* TC is ten coin */
#define IS_ITEM_ROCK(item) (((item) >= ROCK_A && (item) <= ROCK_E) || ((item) >= MONEY_ROCK_A && (item) <= MONEY_ROCK_E) || (item) == MONEY_FLOWER_SEED)
#define IS_ITEM_GRASS(item) ((item) >= GRASS_A && (item) <= GRASS_C) /* aka IS_ITEM_WEED */
#define IS_ITEM_HANIWA(item) ((item) >= HANIWA_START && (item) <= HANIWA_END)
#define IS_ITEM_DIARY(item) ((item) >= ITM_DIARY_START && (item) <= (ITM_DIARY_END-1))
#define IS_ITEM_AXE(item) ((item) == ITM_AXE || ((item) >= ITM_AXE_USE_1 && (item) <= ITM_AXE_USE_7))
#define IS_ITEM_GOLDEN_TOOL(item) ((item) >= ITM_GOLDEN_NET && (item) <= ITM_GOLDEN_ROD)
#define ITEM_IS_HOLE(item) ((item) >= HOLE_START && (item) <= HOLE_END)
#define ITEM_IS_BURIED_PITFALL_HOLE(item) ((item) >= BURIED_PITFALL_HOLE_START && (item) <= BURIED_PITFALL_HOLE_END)
#define ITEM_IS_BURIED_PITFALL_HOLE_RSV(item) ((item) >= BURIED_PITFALL_HOLE_RSV_START && (item) <= BURIED_PITFALL_HOLE_RSV_END)
#define ITEM_IS_PLAYER_HOUSE(item) ((item) >= HOUSE0 && (item) < (HOUSE3 + 1))
#define ITEM_IS_NPC_HOUSE(item) ((item) >= NPC_HOUSE_START && (item) < NPC_HOUSE_END)
#define ITEM_IS_ISLAND_NPC_HOUSE(item) ((item) >= COTTAGE_NPC && (item) < COTTAGE_NPC_END)
#define ITEM_IS_SIGNBOARD(item) ((item) >= SIGNBOARD_START && (item) <= SIGNBOARD_END)
#define BG_CATEGORY 0
#define ENV_CATEGORY 8
@@ -334,33 +557,60 @@ extern int mNT_check_unknown(mActor_name_t item_no);
#define HOLE23 (HOLE_START + 23)
#define HOLE24 (HOLE_START + 24)
#define HOLE_END HOLE24
#define BURIED_PITFALL_START 0x002A
#define BURIED_PITFALL00 (BURIED_PITFALL_START + 0)
#define BURIED_PITFALL01 (BURIED_PITFALL_START + 1)
#define BURIED_PITFALL02 (BURIED_PITFALL_START + 2)
#define BURIED_PITFALL03 (BURIED_PITFALL_START + 3)
#define BURIED_PITFALL04 (BURIED_PITFALL_START + 4)
#define BURIED_PITFALL05 (BURIED_PITFALL_START + 5)
#define BURIED_PITFALL06 (BURIED_PITFALL_START + 6)
#define BURIED_PITFALL07 (BURIED_PITFALL_START + 7)
#define BURIED_PITFALL08 (BURIED_PITFALL_START + 8)
#define BURIED_PITFALL09 (BURIED_PITFALL_START + 9)
#define BURIED_PITFALL10 (BURIED_PITFALL_START + 10)
#define BURIED_PITFALL11 (BURIED_PITFALL_START + 11)
#define BURIED_PITFALL12 (BURIED_PITFALL_START + 12)
#define BURIED_PITFALL13 (BURIED_PITFALL_START + 13)
#define BURIED_PITFALL14 (BURIED_PITFALL_START + 14)
#define BURIED_PITFALL15 (BURIED_PITFALL_START + 15)
#define BURIED_PITFALL16 (BURIED_PITFALL_START + 16)
#define BURIED_PITFALL17 (BURIED_PITFALL_START + 17)
#define BURIED_PITFALL18 (BURIED_PITFALL_START + 18)
#define BURIED_PITFALL19 (BURIED_PITFALL_START + 19)
#define BURIED_PITFALL20 (BURIED_PITFALL_START + 20)
#define BURIED_PITFALL21 (BURIED_PITFALL_START + 21)
#define BURIED_PITFALL22 (BURIED_PITFALL_START + 22)
#define BURIED_PITFALL23 (BURIED_PITFALL_START + 23)
#define BURIED_PITFALL24 (BURIED_PITFALL_START + 24)
#define BURIED_PITFALL_END BURIED_PITFALL24
#define BURIED_PITFALL_HOLE_START 0x002A
#define BURIED_PITFALL_HOLE00 (BURIED_PITFALL_HOLE_START + 0)
#define BURIED_PITFALL_HOLE01 (BURIED_PITFALL_HOLE_START + 1)
#define BURIED_PITFALL_HOLE02 (BURIED_PITFALL_HOLE_START + 2)
#define BURIED_PITFALL_HOLE03 (BURIED_PITFALL_HOLE_START + 3)
#define BURIED_PITFALL_HOLE04 (BURIED_PITFALL_HOLE_START + 4)
#define BURIED_PITFALL_HOLE05 (BURIED_PITFALL_HOLE_START + 5)
#define BURIED_PITFALL_HOLE06 (BURIED_PITFALL_HOLE_START + 6)
#define BURIED_PITFALL_HOLE07 (BURIED_PITFALL_HOLE_START + 7)
#define BURIED_PITFALL_HOLE08 (BURIED_PITFALL_HOLE_START + 8)
#define BURIED_PITFALL_HOLE09 (BURIED_PITFALL_HOLE_START + 9)
#define BURIED_PITFALL_HOLE10 (BURIED_PITFALL_HOLE_START + 10)
#define BURIED_PITFALL_HOLE11 (BURIED_PITFALL_HOLE_START + 11)
#define BURIED_PITFALL_HOLE12 (BURIED_PITFALL_HOLE_START + 12)
#define BURIED_PITFALL_HOLE13 (BURIED_PITFALL_HOLE_START + 13)
#define BURIED_PITFALL_HOLE14 (BURIED_PITFALL_HOLE_START + 14)
#define BURIED_PITFALL_HOLE15 (BURIED_PITFALL_HOLE_START + 15)
#define BURIED_PITFALL_HOLE16 (BURIED_PITFALL_HOLE_START + 16)
#define BURIED_PITFALL_HOLE17 (BURIED_PITFALL_HOLE_START + 17)
#define BURIED_PITFALL_HOLE18 (BURIED_PITFALL_HOLE_START + 18)
#define BURIED_PITFALL_HOLE19 (BURIED_PITFALL_HOLE_START + 19)
#define BURIED_PITFALL_HOLE20 (BURIED_PITFALL_HOLE_START + 20)
#define BURIED_PITFALL_HOLE21 (BURIED_PITFALL_HOLE_START + 21)
#define BURIED_PITFALL_HOLE22 (BURIED_PITFALL_HOLE_START + 22)
#define BURIED_PITFALL_HOLE23 (BURIED_PITFALL_HOLE_START + 23)
#define BURIED_PITFALL_HOLE24 (BURIED_PITFALL_HOLE_START + 24)
#define BURIED_PITFALL_HOLE_END BURIED_PITFALL_HOLE24
#define BURIED_PITFALL_HOLE_RSV_START 0x0043
#define BURIED_PITFALL_HOLE_RSV00 (BURIED_PITFALL_HOLE_RSV_START + 0)
#define BURIED_PITFALL_HOLE_RSV01 (BURIED_PITFALL_HOLE_RSV_START + 1)
#define BURIED_PITFALL_HOLE_RSV02 (BURIED_PITFALL_HOLE_RSV_START + 2)
#define BURIED_PITFALL_HOLE_RSV03 (BURIED_PITFALL_HOLE_RSV_START + 3)
#define BURIED_PITFALL_HOLE_RSV04 (BURIED_PITFALL_HOLE_RSV_START + 4)
#define BURIED_PITFALL_HOLE_RSV05 (BURIED_PITFALL_HOLE_RSV_START + 5)
#define BURIED_PITFALL_HOLE_RSV06 (BURIED_PITFALL_HOLE_RSV_START + 6)
#define BURIED_PITFALL_HOLE_RSV07 (BURIED_PITFALL_HOLE_RSV_START + 7)
#define BURIED_PITFALL_HOLE_RSV08 (BURIED_PITFALL_HOLE_RSV_START + 8)
#define BURIED_PITFALL_HOLE_RSV09 (BURIED_PITFALL_HOLE_RSV_START + 9)
#define BURIED_PITFALL_HOLE_RSV10 (BURIED_PITFALL_HOLE_RSV_START + 10)
#define BURIED_PITFALL_HOLE_RSV11 (BURIED_PITFALL_HOLE_RSV_START + 11)
#define BURIED_PITFALL_HOLE_RSV12 (BURIED_PITFALL_HOLE_RSV_START + 12)
#define BURIED_PITFALL_HOLE_RSV13 (BURIED_PITFALL_HOLE_RSV_START + 13)
#define BURIED_PITFALL_HOLE_RSV14 (BURIED_PITFALL_HOLE_RSV_START + 14)
#define BURIED_PITFALL_HOLE_RSV15 (BURIED_PITFALL_HOLE_RSV_START + 15)
#define BURIED_PITFALL_HOLE_RSV16 (BURIED_PITFALL_HOLE_RSV_START + 16)
#define BURIED_PITFALL_HOLE_RSV17 (BURIED_PITFALL_HOLE_RSV_START + 17)
#define BURIED_PITFALL_HOLE_RSV18 (BURIED_PITFALL_HOLE_RSV_START + 18)
#define BURIED_PITFALL_HOLE_RSV19 (BURIED_PITFALL_HOLE_RSV_START + 19)
#define BURIED_PITFALL_HOLE_RSV20 (BURIED_PITFALL_HOLE_RSV_START + 20)
#define BURIED_PITFALL_HOLE_RSV21 (BURIED_PITFALL_HOLE_RSV_START + 21)
#define BURIED_PITFALL_HOLE_RSV22 (BURIED_PITFALL_HOLE_RSV_START + 22)
#define BURIED_PITFALL_HOLE_RSV23 (BURIED_PITFALL_HOLE_RSV_START + 23)
#define BURIED_PITFALL_HOLE_RSV24 (BURIED_PITFALL_HOLE_RSV_START + 24)
#define BURIED_PITFALL_HOLE_RSV_END BURIED_PITFALL_HOLE_RSV24
#define SHINE_SPOT 0x005C
#define HOLE_SHINE 0x005D
#define TREE_BEES 0x005E
@@ -569,6 +819,7 @@ extern int mNT_check_unknown(mActor_name_t item_no);
#define SIGNBOARD5_PLR3 (SIGNBOARD4_PLR3 + 1)
#define SIGNBOARD6_PLR3 (SIGNBOARD5_PLR3 + 1)
#define SIGNBOARD7_PLR3 (SIGNBOARD6_PLR3 + 1)
#define SIGNBOARD_END (SIGNBOARD7_PLR3)
#define FTR0_START 0x1000
#define FTR_CLASSIC_WARDROBE 0x1004
@@ -2269,6 +2520,7 @@ extern int mNT_check_unknown(mActor_name_t item_no);
#define BOAT (STRUCTURE_START + 79)
#define COTTAGE_MY (STRUCTURE_START + 80)
#define COTTAGE_NPC (STRUCTURE_START + 81)
#define COTTAGE_NPC_END (COTTAGE_NPC + 1)
#define PORT_SIGN (STRUCTURE_START + 82)
#define STRUCTURE_END (STRUCTURE_START + 83)
+299 -21
View File
@@ -17,6 +17,14 @@ extern "C" {
#define mPlayer_DEBT3 49800 /* Basement */
#define mPlayer_DEBT4 798000 /* Upper floor */
/* These are in frames */
#define mPlayer_SUNBURN_TIME_VILLAGE (15 * mTM_SECONDS_IN_MINUTE * FRAMES_PER_SECOND)
#define mPlayer_SUNBURN_TIME_ISLAND (5 * mTM_SECONDS_IN_MINUTE * FRAMES_PER_SECOND)
#define mPlayer_SUNBURN_MAX_RANK 8
#define mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE 8
typedef struct player_actor_s PLAYER_ACTOR;
#define mPlayer_FORCE_POSITION_ANGLE_NONE 0
@@ -31,6 +39,8 @@ typedef struct player_actor_s PLAYER_ACTOR;
#define mPlayer_WALK_FLAG_SET_POS (1 << 1)
#define mPlayer_WALK_FLAG_RESET_MORPH (1 << 2)
#define mPlayer_NET_CATCH_TABLE_COUNT 8
enum {
mPlayer_JOINT_ROOT,
mPlayer_JOINT_BASE,
@@ -66,7 +76,7 @@ enum {
mPlayer_ADDRESSABLE_TRUE,
mPlayer_ADDRESSABLE_FALSE_MOVEMENT,
mPlayer_ADDRESSABLE_FALSE_TALKING,
mPlayer_ADDRESSABLE_FALSE_USING_TOOL,
mPlayer_ADDRESSABLE_FALSE_READY_NET,
mPlayer_ADDRESSABLE_NUM
};
@@ -215,6 +225,61 @@ enum {
#define mPlayer_MAIN_INDEX_VALID(idx) ((idx) >= 0 && (idx) < mPlayer_INDEX_NUM)
enum {
mPlayer_REQUEST_PRIORITY_0,
mPlayer_REQUEST_PRIORITY_1,
mPlayer_REQUEST_PRIORITY_2,
mPlayer_REQUEST_PRIORITY_3,
mPlayer_REQUEST_PRIORITY_4,
mPlayer_REQUEST_PRIORITY_5,
mPlayer_REQUEST_PRIORITY_6,
mPlayer_REQUEST_PRIORITY_7,
mPlayer_REQUEST_PRIORITY_8,
mPlayer_REQUEST_PRIORITY_9,
mPlayer_REQUEST_PRIORITY_10,
mPlayer_REQUEST_PRIORITY_11,
mPlayer_REQUEST_PRIORITY_12,
mPlayer_REQUEST_PRIORITY_13,
mPlayer_REQUEST_PRIORITY_14,
mPlayer_REQUEST_PRIORITY_15,
mPlayer_REQUEST_PRIORITY_16,
mPlayer_REQUEST_PRIORITY_17,
mPlayer_REQUEST_PRIORITY_18,
mPlayer_REQUEST_PRIORITY_19,
mPlayer_REQUEST_PRIORITY_20,
mPlayer_REQUEST_PRIORITY_21,
mPlayer_REQUEST_PRIORITY_22,
mPlayer_REQUEST_PRIORITY_23,
mPlayer_REQUEST_PRIORITY_24,
mPlayer_REQUEST_PRIORITY_25,
mPlayer_REQUEST_PRIORITY_26,
mPlayer_REQUEST_PRIORITY_27,
mPlayer_REQUEST_PRIORITY_28,
mPlayer_REQUEST_PRIORITY_29,
mPlayer_REQUEST_PRIORITY_30,
mPlayer_REQUEST_PRIORITY_31,
mPlayer_REQUEST_PRIORITY_32,
mPlayer_REQUEST_PRIORITY_33,
mPlayer_REQUEST_PRIORITY_34,
mPlayer_REQUEST_PRIORITY_35,
mPlayer_REQUEST_PRIORITY_36,
mPlayer_REQUEST_PRIORITY_37,
mPlayer_REQUEST_PRIORITY_38,
mPlayer_REQUEST_PRIORITY_39,
mPlayer_REQUEST_PRIORITY_40,
mPlayer_REQUEST_PRIORITY_41,
mPlayer_REQUEST_PRIORITY_42,
mPlayer_REQUEST_PRIORITY_43,
mPlayer_REQUEST_PRIORITY_44,
mPlayer_REQUEST_PRIORITY_45,
mPlayer_REQUEST_PRIORITY_NUM
};
#define mPlayer_REQUEST_PRIORITY_NONE -1
#define mPlayer_REQUEST_PRIORITY_VALID(prio) ((prio) >= 0 && (prio) < mPlayer_REQUEST_PRIORITY_NUM)
enum {
mPlayer_ANIM_WAIT1,
mPlayer_ANIM_WALK1,
@@ -377,6 +442,35 @@ enum {
mPlayer_ANIM_NUM
};
enum {
mPlayer_ITEM_MAIN_NONE,
mPlayer_ITEM_MAIN_AXE_NORMAL,
mPlayer_ITEM_MAIN_NET_NORMAL,
mPlayer_ITEM_MAIN_NET_SWING,
mPlayer_ITEM_MAIN_NET_STOP,
mPlayer_ITEM_MAIN_TUMBLE,
mPlayer_ITEM_MAIN_TUBMLE_GETUP,
mPlayer_ITEM_MAIN_NET_PULL,
mPlayer_ITEM_MAIN_NET_PUTAWAY,
mPlayer_ITEM_MAIN_NET_COMPLETE_COLLECTION,
mPlayer_ITEM_MAIN_UMBRELLA_NORMAL,
mPlayer_ITEM_MAIN_ROD_NORMAL,
mPlayer_ITEM_MAIN_ROD_READY,
mPlayer_ITEM_MAIN_ROD_CAST,
mPlayer_ITEM_MAIN_ROD_AIR,
mPlayer_ITEM_MAIN_ROD_RELAX,
mPlayer_ITEM_MAIN_ROD_COLLECT,
mPlayer_ITEM_MAIN_ROD_VIB,
mPlayer_ITEM_MAIN_ROD_FLY,
mPlayer_ITEM_MAIN_ROD_PUTAWAY,
mPlayer_ITEM_MAIN_SCOOP_NORMAL,
mPlayer_ITEM_MAIN_BALLOON_NORMAL,
mPlayer_ITEM_MAIN_WINDMILL_NORMAL,
mPlayer_ITEM_MAIN_FAN_NORMAL,
mPlayer_ITEM_MAIN_NUM,
};
enum {
mPlayer_ITEM_KIND_AXE,
mPlayer_ITEM_KIND_AXE_USE_1,
@@ -469,6 +563,8 @@ enum {
mPlayer_ITEM_KIND_NUM /* Are there more? */
};
#define mPlayer_ITEM_KIND_NONE -1
#define mPlayer_ITEM_KIND_CHECK(kind, min, max) ((kind) >= (min) && (kind) < ((max) + 1))
#define mPlayer_ITEM_IS_AXE(kind) mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_AXE, mPlayer_ITEM_KIND_GOLD_AXE)
#define mPlayer_ITEM_IS_NET(kind) mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_NET, mPlayer_ITEM_KIND_GOLD_NET)
@@ -483,6 +579,9 @@ enum {
mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_YELLOW_PINWHEEL, mPlayer_ITEM_KIND_FANCY_PINWHEEL)
#define mPlayer_ITEM_IS_FAN(kind) \
mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_BLUEBELL_FAN, mPlayer_ITEM_KIND_LEAF_FAN)
#define mPlayer_ITEM_IS_NOT_TOOL(kind) \
(mPlayer_ITEM_IS_UMBRELLA(kind) || mPlayer_ITEM_IS_BALLOON(kind) || mPlayer_ITEM_IS_WINDMILL(kind) || \
mPlayer_ITEM_IS_FAN(kind))
#define mPlayer_ITEM_KIND_VALID(kind) ((kind) >= 0 && kind < mPlayer_ITEM_KIND_NUM)
@@ -592,6 +691,59 @@ enum {
mPlayer_DRAW_TYPE_NUM
};
enum {
mPlayer_SHADOW_TYPE_NORMAL,
mPlayer_SHADOW_TYPE_WORLD_POS,
mPlayer_SHADOW_TYPE_ANIME_POS,
mPlayer_SHADOW_TYPE_NONE,
mPlayer_SHADOW_TYPE_NUM
};
enum {
mPlayer_STATUS_FOR_BEE_WAIT,
mPlayer_STATUS_FOR_BEE_ATTACK,
mPlayer_STATUS_FOR_BEE_ENTER_BUILDING,
mPlayer_STATUS_FOR_BEE_NUM
};
enum {
mPlayer_NET_CATCH_TYPE_INSECT,
mPlayer_NET_CATCH_TYPE_UNK1,
mPlayer_NET_CATCH_TYPE_NUM
};
enum {
mPlayer_ABLE_ITEM_CAN_USE_ALL,
mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA,
mPlayer_ABLE_ITEM_RESTRICTED,
mPlayer_ABLE_ITEM_NONE,
mPlayer_ABLE_ITEM_NUM
};
enum {
mPlayer_AXE_HIT_NONE,
mPlayer_AXE_HIT_REFLECT,
mPlayer_AXE_HIT_TREE,
mPlayer_AXE_HIT_NUM
};
enum {
mPlayer_AXE_BREAK_FROM_SWING,
mPlayer_AXE_BREAK_FROM_REFLECT,
mPlayer_AXE_BREAK_FROM_NUM
};
#define mPlayer_SETUP_TEXTURE_ANIMATION_NONE (0 << 0)
/* Where is (1 << 0)? */
#define mPlayer_SETUP_TEXTURE_ANIMATION_EYE (1 << 1)
#define mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH (1 << 2)
typedef struct player_request_return_demo_s {
int prev_main_index;
f32 time;
@@ -745,6 +897,10 @@ typedef struct player_request_stung_mosquito_s {
u32 label;
} mPlayer_request_stung_mosquito_c;
typedef struct player_request_notice_mosquito_s {
u32 label;
} mPlayer_request_notice_mosquito_c;
typedef struct player_request_switch_on_lighthouse_s {
s16 angle_y;
xyz_t pos;
@@ -795,7 +951,7 @@ typedef struct player_request_wade_s {
typedef struct player_request_wade_snowball_s {
int dir;
xyz_t pos;
xyz_t snowball_dist;
u32 label;
} mPlayer_request_wade_snowball_c;
@@ -927,7 +1083,7 @@ typedef struct player_request_reflect_scoop_s {
typedef struct player_request_putin_scoop_s {
xyz_t dig_pos;
mActor_name_t item;
int _10;
int get_gold_scoop_flag;
} mPlayer_request_putin_scoop_c;
typedef struct player_request_putaway_scoop_s {
@@ -1039,7 +1195,7 @@ typedef struct player_request_radio_exercise_s {
typedef struct player_request_demo_geton_boat_wade_s {
int dir;
f32 speed; // TODO: check this
f32 border_ofs;
} mPlayer_request_demo_geton_boat_wade_c;
typedef struct player_request_demo_getoff_boat_s {
@@ -1116,6 +1272,7 @@ typedef union {
mPlayer_request_shock_c shock;
mPlayer_request_push_snowball_c push_snowball;
mPlayer_request_stung_mosquito_c stung_mosquito;
mPlayer_request_notice_mosquito_c notice_mosquito;
mPlayer_request_switch_on_lighthouse_c switch_on_lighthouse;
mPlayer_request_demo_geton_boat_c demo_geton_boat;
mPlayer_request_demo_getoff_boat_standup_c demo_getoff_boat_standup;
@@ -1219,6 +1376,7 @@ typedef union {
mPlayer_request_shock_c shock;
mPlayer_request_push_snowball_c push_snowball;
mPlayer_request_stung_mosquito_c stung_mosquito;
mPlayer_request_notice_mosquito_c notice_mosquito;
mPlayer_request_switch_on_lighthouse_c switch_on_lighthouse;
mPlayer_request_demo_geton_boat_c demo_geton_boat;
mPlayer_request_demo_getoff_boat_standup_c demo_getoff_boat_standup;
@@ -1305,6 +1463,10 @@ typedef struct player_main_wait_s {
int radio_exercise_command;
} mPlayer_main_wait_c;
typedef struct player_main_door_s {
u32 label;
} mPlayer_main_door_c;
typedef struct player_main_wade_s {
int dir;
xyz_t start_pos;
@@ -1332,6 +1494,49 @@ typedef struct player_main_pickup_jump_s {
int exchange_flag;
} mPlayer_main_pickup_jump_c;
typedef struct player_main_swing_axe_s {
/* 0x00 */ xyz_t target_pos;
/* 0x0C */ mActor_name_t item;
/* 0x0E */ u16 axe_damage_no;
/* 0x10 */ int tree_ut_x;
/* 0x14 */ int tree_ut_z;
/* 0x18 */ int bee_flag;
/* 0x1C */ s16 bee_angle_y;
/* 0x20 */ int bee_counter;
} mPlayer_main_swing_axe_c;
typedef struct player_main_reflect_axe_s {
xyz_t target_pos;
mActor_name_t item;
u16 axe_damage_no;
ACTOR* reflect_actor_p;
} mPlayer_main_reflect_axe_c;
typedef struct player_main_broken_axe_s {
union {
mPlayer_main_swing_axe_c swing_axe;
mPlayer_main_reflect_axe_c reflect_axe;
} axe;
int break_type; /* mPlayer_AXE_BREAK_FROM_* */
f32 _28;
int _2C;
} mPlayer_main_broken_axe_c;
typedef struct player_main_dig_scoop_s {
xyz_t target_pos;
mActor_name_t item;
} mPlayer_main_dig_scoop_c;
typedef struct player_main_fill_scoop_s {
xyz_t target_pos;
} mPlayer_main_fill_scoop_c;
typedef struct player_main_reflect_scoop_s {
xyz_t target_pos;
mActor_name_t item;
ACTOR* reflect_actor_p;
} mPlayer_main_reflect_scoop_c;
typedef struct player_main_get_scoop_s {
xyz_t target_pos;
mActor_name_t item;
@@ -1349,6 +1554,12 @@ typedef struct player_main_putaway_scoop_s {
int submenu_flag;
} mPlayer_main_putaway_scoop_c;
typedef struct player_main_putin_scoop_s {
xyz_t target_pos;
mActor_name_t item;
int get_gold_scoop_flag; // TODO: check this
} mPlayer_main_putin_scoop_c;
typedef struct player_main_wash_car_s {
int anime_idx;
int change_anime_idx;
@@ -1360,6 +1571,51 @@ typedef struct player_main_wash_car_s {
int effect_flag;
} mPlayer_main_wash_car_c;
typedef struct player_main_swing_net_s {
f32 swing_timer;
} mPlayer_main_swing_net_c;
typedef struct player_main_demo_wade_s {
int dir;
xyz_t start_pos;
xyz_t end_pos;
f32 timer;
} mPlayer_main_demo_wade_c;
typedef struct player_main_shake_tree_s {
xyz_t target_pos;
mActor_name_t item;
int tree_ut_x;
int tree_ut_z;
int bee_flag;
s16 bee_angle_y;
int bee_spawn_timer;
} mPlayer_main_shake_tree_c;
typedef struct player_main_stung_bee_s {
f32 timer;
} mPlayer_main_stung_bee_c;
typedef struct player_main_push_snowball_s {
u32 label;
} mPlayer_main_push_snowball_c;
typedef struct player_main_wade_snowball_s {
int dir;
xyz_t start_pos;
xyz_t end_pos;
f32 timer;
xyz_t snowball_dist;
u32 snowball_label;
} mPlayer_main_wade_snowball_c;
typedef struct player_main_demo_geton_boat_wade_s {
int dir;
xyz_t start_pos;
xyz_t end_pos;
f32 timer;
} mPlayer_main_demo_geton_boat_wade_c;
typedef struct player_main_demo_geton_boat_sitdown_s {
s16 angle_z;
} mPlayer_main_demo_geton_boat_sitdown_c;
@@ -1384,12 +1640,27 @@ typedef union {
mPlayer_main_return_outdoor_c return_outdoor;
mPlayer_main_return_outdoor2_c return_outdoor2;
mPlayer_main_wait_c wait;
mPlayer_main_door_c door;
mPlayer_main_wade_c wade;
mPlayer_main_pickup_c pickup;
mPlayer_main_pickup_jump_c pickup_jump;
mPlayer_main_swing_axe_c swing_axe;
mPlayer_main_reflect_axe_c reflect_axe;
mPlayer_main_broken_axe_c broken_axe;
mPlayer_main_swing_net_c swing_net;
mPlayer_main_dig_scoop_c dig_scoop;
mPlayer_main_fill_scoop_c fill_scoop;
mPlayer_main_reflect_scoop_c reflect_scoop;
mPlayer_main_get_scoop_c get_scoop;
mPlayer_main_putaway_scoop_c putaway_scoop;
mPlayer_main_putin_scoop_c putin_scoop;
mPlayer_main_demo_wade_c demo_wade;
mPlayer_main_wash_car_c wash_car;
mPlayer_main_shake_tree_c shake_tree;
mPlayer_main_stung_bee_c stung_bee;
mPlayer_main_push_snowball_c push_snowball;
mPlayer_main_wade_snowball_c wade_snowball;
mPlayer_main_demo_geton_boat_wade_c demo_geton_boat_wade;
mPlayer_main_demo_geton_boat_sitdown_c demo_geton_boat_sitdown;
mPlayer_main_demo_getoff_boat_standup_c demo_getoff_boat_standup;
mPlayer_main_uki_c uki;
@@ -1412,6 +1683,10 @@ typedef struct controller_data_s {
mActor_name_t equiped_item;
} mPlayer_Controller_Data_c;
typedef struct player_eye_pattern_s {
s16 pattern;
s16 timer;
} mPlayer_eye_pattern_c;
/* sizeof(struct player_actor_s) == 0x13A8 */
struct player_actor_s {
@@ -1425,15 +1700,14 @@ struct player_actor_s {
/* 0x0A88 */ s_xyz item_joint_data[8];
/* 0x0AB8 */ s_xyz item_morph_data[8];
/* 0x0AE8 */ Mtx item_work_mtx[2][4]; /* swapped between frames */
/* 0x0CE8 */ s16 eye_pattern_normal;
/* 0x0CEA */ s16 eye_pattern_normal_timer;
/* 0x0CE8 */ mPlayer_eye_pattern_c eye_pattern_normal;
/* 0x0CEC */ int blink_count;
/* 0x0CF0 */ int eye_tex_idx;
/* 0x0CF4 */ int mouth_tex_idx;
/* 0x0CF8 */ int now_main_index;
/* 0x0CFC */ int prev_main_index;
/* 0x0D00 */ int changed_main_index;
/* 0x0D04 */ int item_main_index;
/* 0x0D04 */ int now_item_main_index;
/* 0x0D08 */ int requested_main_index;
/* 0x0D0C */ int requested_main_index_priority;
/* 0x0D10 */ int requested_main_index_changed;
@@ -1443,8 +1717,12 @@ struct player_actor_s {
/* 0x0DA8 */ u8 _0DA8[0x0DB4 - 0x0DA8]; /* unused */
/* 0x0DB4 */ int animation0_idx;
/* 0x0DB8 */ int animation1_idx;
/* 0x0DBC */ int _0DBC;
/* 0x0DC0 */ int _0DC0[9];
/* 0x0DBC */ int part_table_idx;
/* 0x0DC0 */ int _0DC0;
/* 0x0DC4 */ int item_shape_addr[2];
/* 0x0DCC */ int item_anim_addr[2];
/* 0x0DD4 */ int item_shape_segaddr[2];
/* 0x0DDC */ int item_anim_segaddr[2];
/* 0x0DE4 */ int item_shape_type[2];
/* 0x0DEC */ int item_animation_idx[2];
/* 0x0DF4 */ int item_bank_idx;
@@ -1466,10 +1744,10 @@ struct player_actor_s {
/* 0x0E70 */ u32 item_net_catch_label;
/* 0x0E74 */ s8 item_net_catch_type;
/* 0x0E75 */ s8 item_net_has_catch;
/* 0x0E78 */ u32 item_net_catch_label_request_table[8];
/* 0x0E98 */ s8 item_net_catch_type_request_table[8];
/* 0x0EA0 */ xyz_t item_net_catch_pos_request_table[8];
/* 0x0F00 */ f32 item_net_catch_radius_request_table[8];
/* 0x0E78 */ u32 item_net_catch_label_request_table[mPlayer_NET_CATCH_TABLE_COUNT];
/* 0x0E98 */ s8 item_net_catch_type_request_table[mPlayer_NET_CATCH_TABLE_COUNT];
/* 0x0EA0 */ xyz_t item_net_catch_pos_request_table[mPlayer_NET_CATCH_TABLE_COUNT];
/* 0x0F00 */ f32 item_net_catch_radius_request_table[mPlayer_NET_CATCH_TABLE_COUNT];
/* 0x0F20 */ int item_net_catch_request_use_count;
/* 0x0F24 */ u32 item_net_catch_label_request_force;
/* 0x0F28 */ s8 item_net_catch_type_request_force;
@@ -1477,7 +1755,7 @@ struct player_actor_s {
/* 0x0F30 */ ACTOR* fishing_rod_actor_p;
/* 0x0F34 */ xyz_t item_rod_top_pos;
/* 0x0F40 */ xyz_t item_rod_virtual_top_pos;
/* 0x0F4C */ int update_item_rod_top_pos;
/* 0x0F4C */ int item_rod_top_pos_set;
/* 0x0F50 */ s16 item_rod_angle_z;
/* 0x0F54 */ ClObjTris_c item_axe_tris;
/* 0x0F68 */ ClObjTrisElem_c item_axe_tris_elem_tbl[1];
@@ -1534,18 +1812,18 @@ struct player_actor_s {
/* 0x11F9 */ s8 bgm_volume_mode;
/* 0x11FC */ int crash_snowball_for_wade;
/* 0x1200 */ xyz_t snowball_dist;
/* 0x120C */ int wade_request_flag;
/* 0x120C */ int request_wade_dir;
/* 0x1210 */ u16 cancel_wade_timer;
/* 0x1214 */ int cancel_wade_flag;
/* 0x1218 */ f32 geton_boat_wade;
/* 0x121C */ u16 frame_timer;
/* 0x1214 */ int excute_cancel_wade;
/* 0x1218 */ f32 geton_boat_wade_border_start;
/* 0x121C */ u16 player_frame_counter;
/* 0x121E */ s8 bee_chase_bgm_flag;
/* 0x121F */ s8 status_for_bee;
/* 0x1220 */ void* angle_force_speak_label;
/* 0x1220 */ u32 able_force_speak_label;
/* 0x1224 */ int player_sunburn_rankup;
/* 0x1228 */ int player_sunburn_rankdown;
/* 0x122C */ s8 radio_exercise_command_ring_buffer[8];
/* 0x1234 */ s8 radio_exercise_ring_buffer_cmd_num;
/* 0x122C */ s8 radio_exercise_command_ring_buffer[mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE];
/* 0x1234 */ s8 radio_exercise_ring_buffer_cmd_timer;
/* 0x1238 */ int radio_exercise_command_ring_buffer_index;
/* 0x123C */ int radio_exercise_continue_cmd_idx;
/* 0x1240 */ f32 radio_exercise_cmd_timer;
+8
View File
@@ -106,6 +106,10 @@ extern int mPlib_request_main_demo_getoff_train_type1(GAME* game);
extern int mPlib_check_player_actor_main_index_OutDoorMove2(GAME* game);
extern int mPlib_Check_SetOrderSubmenu(void);
extern void mPlib_Clear_change_data_from_submenu(void);
extern int mPlib_strength_request_main_wade_priority(GAME* game);
extern int mPlib_strength_request_main_demo_wade_priority(GAME* game);
extern int mPlib_strength_request_main_demo_geton_boat_wade_priority(GAME* game);
extern int mPlib_strength_request_main_wade_snowball_priority(GAME* game);
extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p();
@@ -120,6 +124,10 @@ extern void mPlib_request_main_give_type1(GAME* game, mActor_name_t item, int mo
#define GET_PLAYER_ACTOR_NOW() get_player_actor_withoutCheck((GAME_PLAY*)gamePT)
#define GET_PLAYER_ACTOR_GAME(game) get_player_actor_withoutCheck((GAME_PLAY*)(game))
#define GET_PLAYER_ACTOR_ACTOR(play) ((ACTOR*)GET_PLAYER_ACTOR(play))
#define GET_PLAYER_ACTOR_NOW_ACTOR() ((ACTOR*)GET_PLAYER_ACTOR_NOW())
#define GET_PLAYER_ACTOR_GAME_ACTOR(game) ((ACTOR*)GET_PLAYER_ACTOR_GAME(game))
#ifdef __cplusplus
}
#endif
+3 -3
View File
@@ -178,9 +178,9 @@ struct submenu_s {
/* 0x162 */ u8 open_flag; // only set to 0 or 1, checked at least once in aQMgr_actor_move_talk_sub_hand_item_wait
/* 0x163 */ u8 after_mode; /* relates to code which runs after the submenu process */
/* 0x164 */ u8 unk_164; // only set to 0 in mSM_move_LINKWait in AC
/* 0x165 */ u8 disable_start_btn_flag; /* when set to TRUE, the START button input will be ignored */
/* 0x166 */ u8 disable_start_btn_timer; /* timer for when to disable the start button ignore flag */
/* 0x168 */ xyz_t water_pos; /* calculated to the nearest water position to the player for releasing fish */
/* 0x165 */ u8 start_refuse; /* when set to TRUE, the START button input will be ignored */
/* 0x166 */ u8 start_refuse_timer; /* timer for when to disable the start button ignore flag */
/* 0x168 */ xyz_t water_pos; /* calculated to the nearest water position to the player for releasing fish */
/* 0x174 */ Submenu_Item_c*
item_p; /* pointer to a 'Submenu_Item_c' array, seemingly only points to Submenu::items */
/* 0x178 */ s16 item_num; /* number of items in the item array */
+2
View File
@@ -83,6 +83,8 @@ typedef u32 unknown;
#define BUTTON_B 0x4000
#define BUTTON_A 0x8000
#define FRAMES_PER_SECOND 60
#define ARRAY_SIZE(arr, type) (sizeof(arr) / sizeof(type))
#define ARRAY_COUNT(arr) (int)(sizeof(arr) / sizeof(arr[0]))
+2 -1
View File
@@ -16,7 +16,8 @@ static void change_FGUnit(ACTOR* actor, int type) {
if (mSN_ClearSnowman(name) == 0) {
int dug = FALSE;
if ((((*name >= BURIED_PITFALL_START) && (*name <= BURIED_PITFALL_END)) || (*name == SHINE_SPOT))) {
if ((((*name >= BURIED_PITFALL_HOLE_START) && (*name <= BURIED_PITFALL_HOLE_END)) ||
(*name == SHINE_SPOT))) {
dug = TRUE;
}
+2 -1
View File
@@ -34,7 +34,8 @@ static void change_FGUnit(STRUCTURE_ACTOR* buggy, int type) {
if (mSN_ClearSnowman(unit_fg) == FALSE) {
dug = FALSE;
if ((((*unit_fg >= BURIED_PITFALL_START) && (*unit_fg <= BURIED_PITFALL_END)) || (*unit_fg == SHINE_SPOT))) {
if ((((*unit_fg >= BURIED_PITFALL_HOLE_START) && (*unit_fg <= BURIED_PITFALL_HOLE_END)) ||
(*unit_fg == SHINE_SPOT))) {
dug = TRUE;
}
+3 -9
View File
@@ -31,7 +31,8 @@ static void change_FGUnit(STRUCTURE_ACTOR* kamakura, int type) {
if (mSN_ClearSnowman(unit_fg) == FALSE) {
dug = FALSE;
if ((((*unit_fg >= BURIED_PITFALL_START) && (*unit_fg <= BURIED_PITFALL_END)) || (*unit_fg == SHINE_SPOT))) {
if ((((*unit_fg >= BURIED_PITFALL_HOLE_START) && (*unit_fg <= BURIED_PITFALL_HOLE_END)) ||
(*unit_fg == SHINE_SPOT))) {
dug = TRUE;
}
@@ -171,14 +172,7 @@ static void aKKR_wait(STRUCTURE_ACTOR* kamakura, GAME_PLAY* play) {
static void aKKR_setup_action(STRUCTURE_ACTOR* kamakura, int action) {
static aSTR_MOVE_PROC process[] = {
&aKKR_wait,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
&aKKR_wait, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
};
kamakura->action_proc = process[action];
+3 -3
View File
@@ -39,7 +39,7 @@ static void aNRG_take_with(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) {
static void aNRG_decide_house_wait(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) {
int next_think_idx = -1;
if (GET_PLAYER_ACTOR_NOW()->cancel_wade_flag) {
if (GET_PLAYER_ACTOR_NOW()->excute_cancel_wade) {
/* Player is trying to leave the acre, so let them know they can't */
next_think_idx = aNRC_THINK_STOP_WADE;
} else if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) {
@@ -112,7 +112,7 @@ static void aNRG_exit(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) {
intro_demo->rcn_guide_actor_p = NULL;
Actor_delete(&rcn_guide->npc_class.actor_class);
play->submenu.disable_start_btn_flag = FALSE;
play->submenu.start_refuse = FALSE;
}
}
} else {
@@ -177,7 +177,7 @@ static void aNRG_approach_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play)
f32 z;
/* Player cannot open the start menu */
play->submenu.disable_start_btn_flag = TRUE;
play->submenu.start_refuse = TRUE;
/* Make the player stand around waiting */
mPlib_request_main_demo_wait_type1(&play->game, 0, NULL);
+2 -1
View File
@@ -76,7 +76,8 @@ static void aTnt_ChangeFg(ACTOR* actor, int type) {
if (mSN_ClearSnowman(name) == 0) {
int dug = FALSE;
if ((((*name >= BURIED_PITFALL_START) && (*name <= BURIED_PITFALL_END)) || (*name == SHINE_SPOT))) {
if ((((*name >= BURIED_PITFALL_HOLE_START) && (*name <= BURIED_PITFALL_HOLE_END)) ||
(*name == SHINE_SPOT))) {
dug = TRUE;
}
+2 -2
View File
@@ -624,7 +624,7 @@ static int bIT_common_bury_after(mActor_name_t fg_bury_item, mActor_name_t fg_ho
int hole_no = mCoBG_GetHoleNumber(*bury_pos);
if (hole_no != -1) {
*buried_item_p = BURIED_PITFALL_START + hole_no;
*buried_item_p = BURIED_PITFALL_HOLE_START + hole_no;
} else {
*buried_item_p = EMPTY_NO;
}
@@ -2907,7 +2907,7 @@ static int bIT_actor_pit_fall(mActor_name_t pit_fg_item, int ut_x, int ut_z, mAc
mFI_UtNum2CenterWpos(&pos, ut_x, ut_z);
pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(pos, -1.0f);
pitfall_fg_no = pit_fg_item - BURIED_PITFALL_START;
pitfall_fg_no = pit_fg_item - BURIED_PITFALL_HOLE_START;
mFI_SetFG_common(pitfall_fg_no + 0x43, pos, FALSE);
hole_fg_no = pitfall_fg_no + HOLE_START;
bIT_actor_pit_entry(common->pit, 1, hole_fg_no, &pos, fg_item_in_pit);
+14 -14
View File
@@ -893,7 +893,7 @@ extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_Skel
s_xyz* applyjoint;
if ((info1 == NULL) || (info2 == NULL) || (flag == NULL)) {
return 0;
return cKF_STATE_NONE;
}
joint = (F32_IS_ZERO(info1->morph_counter)) ? &info1->current_joint->x : &info1->target_joint->x;
@@ -930,7 +930,7 @@ extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_Skel
if (info1->morph_counter <= 0.0f) {
info1->morph_counter = 0.0f;
}
return 0;
return cKF_STATE_NONE;
}
cKF_SkeletonInfo_R_morphJoint(info1);
info1->morph_counter += 0.5f;
@@ -1210,25 +1210,25 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz
keyframe->fixed_counter = count;
}
extern void cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(f32 calcx, f32 calcy, f32 calcz, xyz_t* base,
xyz_t* calcp, s16 val, xyz_t* trans,
cKF_SkeletonInfo_R_c* keyframe, int animation_flag) {
extern void cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(xyz_t* calc_pos, const xyz_t* base_pos, f32 trans_x,
f32 trans_y, f32 trans_z, s16 angle_y, const xyz_t* scale,
cKF_SkeletonInfo_R_c* keyframe, int trans_flag) {
f32 sin, cos;
f32 j_x, j_z;
s_xyz* cur_joint = keyframe->current_joint;
if (animation_flag & cKF_ANIMATION_TRANS_XZ) {
j_x = cur_joint->x - calcx;
j_z = cur_joint->z - calcz;
if (trans_flag & cKF_ANIMATION_TRANS_XZ) {
j_x = cur_joint->x - trans_x;
j_z = cur_joint->z - trans_z;
sin = sin_s(val);
cos = cos_s(val);
sin = sin_s(angle_y);
cos = cos_s(angle_y);
base->x = calcp->x + trans->x * ((j_x * cos) + (j_z * sin));
base->z = calcp->z + trans->z * ((-j_x * sin) + (j_z * cos));
calc_pos->x = base_pos->x + scale->x * ((j_x * cos) + (j_z * sin));
calc_pos->z = base_pos->z + scale->z * ((-j_x * sin) + (j_z * cos));
}
if (animation_flag & cKF_ANIMATION_TRANS_Y) {
base->y = calcp->y + trans->y * (cur_joint->y - calcy);
if (trans_flag & cKF_ANIMATION_TRANS_Y) {
calc_pos->y = base_pos->y + scale->y * (cur_joint->y - trans_y);
}
}
+449 -496
View File
File diff suppressed because it is too large Load Diff
+2411 -2718
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -738,7 +738,7 @@ static void mISL_toHole(mActor_name_t* fg, u16* deposit, int bx, int bz) {
hole_no = 0;
}
fg[0] = BURIED_PITFALL_START + hole_no;
fg[0] = BURIED_PITFALL_HOLE_START + hole_no;
deposit[0] &= ~(1 << ut_x);
}
+1 -1
View File
@@ -450,7 +450,7 @@ extern void mMsm_DepositItemBlock(mActor_name_t* fg_items, mActor_name_t item, i
int hole_num = mCoBG_BnumUnum2HoleNumber(block_x, block_z, ut_x, ut_z);
if (hole_num != -1) {
*fg_items = BURIED_PITFALL_START + hole_num;
*fg_items = BURIED_PITFALL_HOLE_START + hole_num;
}
}
+1 -1
View File
@@ -315,7 +315,7 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item) {
mActor_name_t dig_item;
dig_item = item;
if ((item >= BURIED_PITFALL_START) && (item <= BURIED_PITFALL_END)) {
if ((item >= BURIED_PITFALL_HOLE_START) && (item <= BURIED_PITFALL_HOLE_END)) {
dig_item = ITM_PITFALL;
}
+13 -7
View File
@@ -7,6 +7,10 @@
#include "sys_matrix.h"
#include "ac_tools.h"
#include "m_rcp.h"
#include "ac_my_room.h"
#include "ac_insect.h"
#include "ac_set_ovl_insect.h"
#include "m_house.h"
/* Common */
#include "../src/m_player_controller.c_inc"
@@ -197,18 +201,18 @@ static int Player_actor_request_main_demo_getoff_boat_standup_all(GAME*, const x
static int Player_actor_request_main_demo_get_golden_item2_all(GAME*, int, int);
static int Player_actor_request_main_demo_get_golden_axe_wait_all(GAME*, int);
static int Player_actor_check_request_main_priority(GAME*, int);
static void* Player_actor_get_door_label(GAME*);
static u32 Player_actor_get_door_label(GAME*);
static int Player_actor_Set_Item_net_catch_request_table(ACTOR*, GAME*, u32, s8, const xyz_t*, f32);
static f32 Player_actor_Get_Item_net_catch_swing_timer(ACTOR*, GAME*);
static u8 Player_actor_Set_Item_net_catch_request_force(ACTOR*, GAME*, u32, s8);
static int Player_actor_Set_Item_net_catch_request_force(ACTOR*, GAME*, u32, s8);
static void Player_actor_Set_force_position_angle(GAME*, const xyz_t*, const s_xyz*, u8);
static u8 Player_actor_Get_force_position_angle(GAME*, xyz_t*, s_xyz*);
static int Player_actor_Get_WadeEndPos(GAME*, xyz_t*);
static int Player_actor_Check_Label_main_push_snowball(GAME*, void*);
static int Player_actor_Check_Label_main_push_snowball(GAME*, u32);
static int Player_actor_SetParam_for_push_snowball(GAME*, const xyz_t*, s16, f32);
static int Player_actor_able_submenu_request_main_index(GAME*);
static int Player_actor_check_able_change_camera_normal_index(ACTOR*);
static int Player_actor_Check_able_force_speak_label(GAME*, ACTOR*);
static int Player_actor_Check_able_force_speak_label(GAME*, u32);
static int Player_actor_check_cancel_request_change_proc_index(int);
static u32 Player_actor_Get_item_net_catch_label(ACTOR*);
static int Player_actor_Change_item_net_catch_label(ACTOR*, u32, s8);
@@ -225,18 +229,20 @@ static int Player_actor_Set_ScrollDemo_forWade_snowball(ACTOR*, int, const xyz_t
static int Player_actor_Check_tree_shaken(ACTOR*, const xyz_t*);
static int Player_actor_Check_tree_shaken_little(ACTOR*, const xyz_t*);
static int Player_actor_Check_tree_shaken_big(ACTOR*, const xyz_t*);
static int Player_actor_Check_Label_main_wade_snowball(GAME*, void*);
static int Player_actor_Check_Label_main_wade_snowball(GAME*, u32);
static int Player_actor_GetSnowballPos_forWadeSnowball(ACTOR*, xyz_t*);
static int Player_actor_CheckCondition_forWadeSnowball(GAME*, const xyz_t*, s16);
static mActor_name_t Player_actor_Get_itemNo_forWindow(ACTOR*);
static int Player_actor_check_cancel_event_without_priority(GAME*);
static int Player_actor_CheckScene_AbleSubmenu(void);
static int Player_actor_Check_stung_mosquito(GAME*, ACTOR*);
static int Player_actor_Check_stung_mosquito(GAME*, u32);
static int Player_actor_request_main_walk_all(GAME*, xyz_t*, f32, int, int);
static int Player_actor_request_main_run_all(GAME*, f32, int, int);
static int Player_actor_request_main_dash_all(GAME*, f32, int, int);
static void Player_actor_Refuse_pickup_demo_ct(ACTOR*);
static void Player_actor_init_value(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
GAME_PLAY* play = (GAME_PLAY*)game;
@@ -255,7 +261,7 @@ static void Player_actor_init_value(ACTOR* actorx, GAME* game) {
actorx->world.position.z, 0, 0, 0, -1, -1, -1, EMPTY_NO, -1, -1, -1);
player->animation0_idx = -1;
player->animation1_idx = -1;
player->_0DBC = -1;
player->part_table_idx = -1;
player->item_shape_type[0] = -1;
player->item_shape_type[1] = -1;
player->item_shape_type[2] = -1;
File diff suppressed because it is too large Load Diff
+420 -484
View File
File diff suppressed because it is too large Load Diff