Merge pull request #322 from Cuyler36:ac_my_room

Implement & link ac_my_room
This commit is contained in:
Cuyler36
2024-04-14 15:35:57 -04:00
committed by GitHub
49 changed files with 15628 additions and 1619 deletions
+86 -87
View File
@@ -21,7 +21,7 @@ extern "C" {
#define NESTAG_GID "GID"
#define NESTAG_GNM "GNM"
#define NESTAG_CPN "CPN"
#define NESTAG_OFS "OFS" /* Offset into the shared highscore data to read/write at */
#define NESTAG_OFS "OFS" /* Offset into the shared highscore data to read/write at */
#define NESTAG_HSC "HSC"
#define NESTAG_GNO "GNO"
#define NESTAG_BBR "BBR"
@@ -47,122 +47,122 @@ typedef void* (*MALLOC_ALIGN_FUNC)(size_t size, u32 align);
typedef void (*MALLOC_FREE_FUNC)(void* ptr);
typedef int (*MALLOC_GETMEMBLOCKSIZE_FUNC)(void* ptr);
typedef int (*MALLOC_GETTOTALFREESIZE_FUNC)();
typedef struct malloc_s {
MALLOC_ALIGN_FUNC malloc_align;
MALLOC_FREE_FUNC free;
MALLOC_GETMEMBLOCKSIZE_FUNC getmemblocksize;
MALLOC_GETTOTALFREESIZE_FUNC gettotalfreesize;
MALLOC_ALIGN_FUNC malloc_align;
MALLOC_FREE_FUNC free;
MALLOC_GETMEMBLOCKSIZE_FUNC getmemblocksize;
MALLOC_GETTOTALFREESIZE_FUNC gettotalfreesize;
} Famicom_MallocInfo;
enum filer_demo_mode {
FILER_DEMO_MODE_NORMAL,
FILER_DEMO_MODE_AUTO,
FILER_DEMO_MODE_NORMAL,
FILER_DEMO_MODE_AUTO,
FILER_DEMO_MODE_NUM
FILER_DEMO_MODE_NUM
};
#define FAMICOM_SAVE_DATA_NAME_LEN 8
#define FAMICOM_MORI_NAME_LEN 16
typedef struct FamicomSaveDataHeader {
u8 name[FAMICOM_SAVE_DATA_NAME_LEN];
u8 _08;
u8 _09;
u8 headerSize;
u8 checksum;
u16 size;
u8 no_save;
u8 _temp[FAMICOM_SAVE_HEADER_SIZE - 0x000F];
u8 name[FAMICOM_SAVE_DATA_NAME_LEN];
u8 _08;
u8 _09;
u8 headerSize;
u8 checksum;
u16 size;
u8 no_save;
u8 _temp[FAMICOM_SAVE_HEADER_SIZE - 0x000F];
} FamicomSaveDataHeader;
enum {
MEMCARD_COMMENT_TYPE_NONE,
MEMCARD_COMMENT_TYPE_DEFAULT,
MEMCARD_COMMENT_TYPE_COPY_ROM, // converts rom's comment but converts "] ROM" to "] SAVE"
MEMCARD_COMMENT_TYPE_COPY_EMBEDDED // uses the embedded and unique 'save' comment
MEMCARD_COMMENT_TYPE_NONE,
MEMCARD_COMMENT_TYPE_DEFAULT,
MEMCARD_COMMENT_TYPE_COPY_ROM, // converts rom's comment but converts "] ROM" to "] SAVE"
MEMCARD_COMMENT_TYPE_COPY_EMBEDDED // uses the embedded and unique 'save' comment
};
enum {
MEMCARD_BANNER_TYPE_NONE,
MEMCARD_BANNER_TYPE_DEFAULT,
MEMCARD_BANNER_TYPE_COPY_ROM, // copies the NES rom save's banner
MEMCARD_BANNER_TYPE_COPY_EMBEDDED // uses the embedded and unique 'save' banner
MEMCARD_BANNER_TYPE_NONE,
MEMCARD_BANNER_TYPE_DEFAULT,
MEMCARD_BANNER_TYPE_COPY_ROM, // copies the NES rom save's banner
MEMCARD_BANNER_TYPE_COPY_EMBEDDED // uses the embedded and unique 'save' banner
};
enum {
MEMCARD_ICON_TYPE_NONE,
MEMCARD_ICON_TYPE_DEFAULT,
MEMCARD_ICON_TYPE_COPY_ROM, // copies the NES rom save's icon
MEMCARD_ICON_TYPE_COPY_EMBEDDED // uses the embedded and unique 'save' icon
MEMCARD_ICON_TYPE_NONE,
MEMCARD_ICON_TYPE_DEFAULT,
MEMCARD_ICON_TYPE_COPY_ROM, // copies the NES rom save's icon
MEMCARD_ICON_TYPE_COPY_EMBEDDED // uses the embedded and unique 'save' icon
};
enum {
FAMICOM_RESULT_OK,
FAMICOM_RESULT_NOSPACE,
FAMICOM_RESULT_NOENTRY,
FAMICOM_RESULT_BROKEN,
FAMICOM_RESULT_WRONGDEVICE,
FAMICOM_RESULT_WRONGENCODING,
FAMICOM_RESULT_NOCARD,
FAMICOM_RESULT_NOFILE
FAMICOM_RESULT_OK,
FAMICOM_RESULT_NOSPACE,
FAMICOM_RESULT_NOENTRY,
FAMICOM_RESULT_BROKEN,
FAMICOM_RESULT_WRONGDEVICE,
FAMICOM_RESULT_WRONGENCODING,
FAMICOM_RESULT_NOCARD,
FAMICOM_RESULT_NOFILE
};
typedef struct MemcardGameHeader_t {
u8 _00;
u8 _01;
u8 mori_name[16];
u16 nesrom_size;
u16 nestags_size;
u16 icon_format;
u16 icon_flags;
u16 comment_img_size; /* Size of comment + banner + icon */
struct {
u8 has_comment_img:1;
u8 comment_type:2;
u8 banner_type:2;
u8 icon_type:2;
u8 no_copy_flag:1;
} flags0;
struct {
u8 no_move_flag:1;
u8 banner_fmt:2;
u8 reserved:5;
} flags1;
u16 pad;
u8 _00;
u8 _01;
u8 mori_name[FAMICOM_MORI_NAME_LEN];
u16 nesrom_size;
u16 nestags_size;
u16 icon_format;
u16 icon_flags;
u16 comment_img_size; /* Size of comment + banner + icon */
struct {
u8 has_comment_img : 1;
u8 comment_type : 2;
u8 banner_type : 2;
u8 icon_type : 2;
u8 no_copy_flag : 1;
} flags0;
struct {
u8 no_move_flag : 1;
u8 banner_fmt : 2;
u8 reserved : 5;
} flags1;
u16 pad;
} MemcardGameHeader_t;
/* sizeof (FamicomCommon) == 0xB8 */
typedef struct FamicomCommon {
/* 0x00 */ ksNesCommonWorkObj* wp;
/* 0x04 */ ksNesStateObj* sp;
/* 0x08 */ u8* nesromp;
/* 0x0C */ u8* chrramp;
/* 0x10 */ u8* bbramp;
/* 0x14 */ u8* noise_bufp;
/* 0x18 */ u8* chr_to_i8_bufp;
/* 0x1C */ u8* result_bufp;
/* 0x20 */ u8* highscore_flagsp;
/* 0x24 */ u8* nesinfo_tagsp;
/* 0x28 */ int _28;
/* 0x2C */ u8 nesrom_memcard; // TRUE: rom is loaded from memcard, FALSE: rom is loaded internally
/* 0x2D */ u8 rom_no;
/* 0x2E */ s8 save_pl_no;
/* 0x2F */ u8 mura_save_name[33];
/* 0x50 */ u8 famicom_save_name[33];
/* 0x74 */ FamicomSaveDataHeader* save_data_header;
/* 0x78 */ u8* internal_save_datap;
/* 0x7C */ size_t save_data_total_size;
/* 0x80 */ size_t save_data_single_size;
/* 0x84 */ int _84;
/* 0x88 */ u8* save_data_name;
/* 0x8C */ u8 _8C;
/* 0x8D */ u8 low_res_mode;
/* 0x8E */ MemcardGameHeader_t memcard_game_header;
/* 0xB0 */ u8* memcard_save_comment;
/* 0xB4 */ size_t unused_save_data_start_ofs;
/* 0x00 */ ksNesCommonWorkObj* wp;
/* 0x04 */ ksNesStateObj* sp;
/* 0x08 */ u8* nesromp;
/* 0x0C */ u8* chrramp;
/* 0x10 */ u8* bbramp;
/* 0x14 */ u8* noise_bufp;
/* 0x18 */ u8* chr_to_i8_bufp;
/* 0x1C */ u8* result_bufp;
/* 0x20 */ u8* highscore_flagsp;
/* 0x24 */ u8* nesinfo_tagsp;
/* 0x28 */ int _28;
/* 0x2C */ u8 nesrom_memcard; // TRUE: rom is loaded from memcard, FALSE: rom is loaded internally
/* 0x2D */ u8 rom_no;
/* 0x2E */ s8 save_pl_no;
/* 0x2F */ u8 mura_save_name[33];
/* 0x50 */ u8 famicom_save_name[33];
/* 0x74 */ FamicomSaveDataHeader* save_data_header;
/* 0x78 */ u8* internal_save_datap;
/* 0x7C */ size_t save_data_total_size;
/* 0x80 */ size_t save_data_single_size;
/* 0x84 */ int _84;
/* 0x88 */ u8* save_data_name;
/* 0x8C */ u8 _8C;
/* 0x8D */ u8 low_res_mode;
/* 0x8E */ MemcardGameHeader_t memcard_game_header;
/* 0xB0 */ u8* memcard_save_comment;
/* 0xB4 */ size_t unused_save_data_start_ofs;
} FamicomCommon;
extern Famicom_MallocInfo* my_malloc_current;
extern u8 save_game_image;
extern u8** nesrom_filename_ptrs;
@@ -213,7 +213,6 @@ extern u8* nesinfo_get_moriName();
extern void nesinfo_init();
extern void highscore_setup_flags(u8* flags);
#ifdef __cplusplus
}
#endif
+1
View File
@@ -13,6 +13,7 @@ extern "C" {
#define SQRT2 (1.4142135623730950488016887242097)
#define F_SQRT2 ((f32)SQRT2)
#define F_SQRT2_DIV2 (0.707106f)
#define SQRTF(f) (__frsqrte(f))
+73 -10
View File
@@ -12,6 +12,11 @@ extern "C" {
typedef struct furniture_actor_s FTR_ACTOR;
#define aFTR_KEEP_ITEM_COUNT (mCoBG_LAYER_NUM - 1)
#define aFTR_CHECK_INTERACTION(inter, type) (((inter) >> (type)) & 1)
#define aFTR_EDGE_COL_NUM 4
enum {
aFTR_STATE_STOP,
aFTR_STATE_WAIT_PUSH,
@@ -61,8 +66,9 @@ enum {
};
enum {
aFTR_INTERACTION_NONE = 0,
aFTR_INTERACTION_STORAGE_DRAWERS = 1, // dressers
aFTR_INTERACTION_STORAGE_WARDROBE, // double doors
aFTR_INTERACTION_STORAGE_WARDROBE = 2, // double doors
aFTR_INTERACTION_STORAGE_CLOSET = 4, // single door
aFTR_INTERACTION_MUSIC_DISK = 8,
aFTR_INTERACTION_NO_COLLISION = 0x10,
@@ -78,19 +84,76 @@ enum {
aFTR_INTERACTION_FAMICOM_ITEM = 0x2000,
aFTR_INTERACTION_RADIO_AEROBICS = 0x4000,
aFTR_INTERACTION_TOGGLE = 0x8000,
aFTR_INTERACTION_NUM = 15,
};
enum {
aFTR_INTERACTION_TYPE_DRAWERS,
aFTR_INTERACTION_TYPE_WARDROBE,
aFTR_INTERACTION_TYPE_CLOSET,
aFTR_INTERACTION_TYPE_MUSIC_DISK,
aFTR_INTERACTION_TYPE_NO_COLLISION,
aFTR_INTERACTION_TYPE_HANIWA,
aFTR_INTERACTION_TYPE_FISH,
aFTR_INTERACTION_TYPE_INSECT,
aFTR_INTERACTION_TYPE_MANNEKIN,
aFTR_INTERACTION_TYPE_UMBRELLA,
aFTR_INTERACTION_TYPE_FOSSIL,
aFTR_INTERACTION_TYPE_FAMICOM,
aFTR_INTERACTION_TYPE_START_DISABLED,
aFTR_INTERACTION_TYPE_FAMICOM_ITEM,
aFTR_INTERACTION_TYPE_RADIO_AEROBICS,
aFTR_INTERACTION_TYPE_TOGGLE,
aFTR_INTERACTION_NUM,
};
#define aFTR_IS_STORAGE(profile) \
(aFTR_CHECK_INTERACTION((profile)->interaction_type, aFTR_INTERACTION_TYPE_DRAWERS) || \
aFTR_CHECK_INTERACTION((profile)->interaction_type, aFTR_INTERACTION_TYPE_WARDROBE) || \
aFTR_CHECK_INTERACTION((profile)->interaction_type, aFTR_INTERACTION_TYPE_CLOSET) || \
aFTR_CHECK_INTERACTION((profile)->interaction_type, aFTR_INTERACTION_TYPE_MUSIC_DISK))
enum {
aFTR_CONTACT_ACTION_NONE = 0,
aFTR_CONTACT_ACTION_CHAIR_UNIDIRECTIONAL = 1, // only can sit from the front
aFTR_CONTACT_ACTION_CHAIR_MULTIDIRECTIONAL = 2, // can sit from any direction
aFTR_CONTACT_ACTION_CHAIR_SOFA = 4, // cam sit anywhere from the front
aFTR_CONTACT_ACTION_BED_SINGLE = 8, // single bed (can't roll)
aFTR_CONTACT_ACTION_BED_DOUBLE = 0x10, // double bed (can roll)
aFTR_CONTACT_ACTION_BED_DOUBLE = 0x10, // double bed (can roll)
aFTR_CONTACT_ACTION_NUM
};
enum {
aFTR_CONTACT_ACTION_TYPE_CHAIR1,
aFTR_CONTACT_ACTION_TYPE_CHAIR4,
aFTR_CONTACT_ACTION_TYPE_SOFA,
aFTR_CONTACT_ACTION_TYPE_BED_SINGLE,
aFTR_CONTACT_ACTION_TYPE_BED_DOUBLE,
aFTR_CONTACT_ACTION_TYPE_NUM
};
#define aFTR_CHK_CONTACT_ACTION(cnt, action) (((cnt) >> (aFTR_CONTACT_ACTION_TYPE_##action)) & 1)
#define aFTR_CHK_CHAIR(cnt) \
(aFTR_CHK_CONTACT_ACTION(cnt, CHAIR1) || aFTR_CHK_CONTACT_ACTION(cnt, CHAIR4) || aFTR_CHK_CONTACT_ACTION(cnt, SOFA))
#define aFTR_CHK_BED(cnt) (aFTR_CHK_CONTACT_ACTION(cnt, BED_SINGLE) || aFTR_CHK_CONTACT_ACTION(cnt, BED_DOUBLE))
enum {
aFTR_SET_TYPE_NORMAL, /* Can't be placed on top and is not a table (layer0) */
aFTR_SET_TYPE_SURFACE, /* Is a surface (layer0) */
aFTR_SET_TYPE_ON_SURFACE, /* Can be placed on a surface (layer0/layer1) */
aFTR_SET_TYPE_NUM
};
enum {
aFTR_KANKYO_MAP_NONE,
aFTR_KANKYO_MAP_OPA,
aFTR_KANKYO_MAP_XLU,
aFTR_KANKYO_MAP_NUM
};
typedef void (*aFTR_FTR_CT_PROC)(FTR_ACTOR*, u8*);
typedef void (*aFTR_FTR_MOVE_PROC)(FTR_ACTOR*, ACTOR*, GAME*, u8*);
typedef void (*aFTR_FTR_DRAW_PROC)(FTR_ACTOR*, ACTOR*, GAME*, u8*);
@@ -151,15 +214,15 @@ struct furniture_actor_s {
xyz_t position;
xyz_t last_position;
xyz_t target_position;
int target_distance; /* distance to target position */
f32 player_distance; /* distance to the player */
f32 angle_y; /* current Y angle */
f32 angle_y_target; /* goal Y angle */
int target_direction; /* direction to target position */
f32 player_distance; /* distance to the player */
f32 angle_y; /* current Y angle */
f32 angle_y_target; /* goal Y angle */
s16 state;
u8 shape_type; /* current size & shape (rotation) */
u8 original_shape_type; /* original size & shape (rotation) */
xyz_t base_position;
aFTR_collision_c edge_collision[4]; /* collision for each edge */
aFTR_collision_c edge_collision[aFTR_EDGE_COL_NUM]; /* collision for each edge */
s16 collision_direction;
int move_bg_idx;
mCoBG_bg_regist_c bg_register;
@@ -184,9 +247,9 @@ struct furniture_actor_s {
f32 dynamic_work_f[2]; /* reserved for any use by each unique furniture actor */
s16 layer; /* layer the furniture actor resides on */
s16 _83E;
s16 open_music_disk; /* set when a music player is interacted with */
s16 demo_status; /* set when a music player is interacted with */
s16 dust_timer;
mActor_name_t items[mCoBG_LAYER_NUM - 1]; /* used for holding items (music players & wardrobes) */
mActor_name_t items[aFTR_KEEP_ITEM_COUNT]; /* used for holding items (music players & wardrobes) */
int _84C;
u16* pal_p; /* used for furniture actors with dynamic palettes such as the structure model items */
int _854;
+56 -21
View File
@@ -10,6 +10,15 @@
extern "C" {
#endif
#define aMR_MAX_UNIT 8
#define aMR_HANIWA_ON_TABLE_NUM 14
#define aMR_GOKI_MAX 3
#define aMR_FIT_FTR_MAX 4
#define aMR_RSV_FTR_NUM 3
#define aMR_NO_FTR_ID 200
#define aMR_NO_FTR_ID2 201
typedef struct my_room_actor_s MY_ROOM_ACTOR;
enum {
@@ -29,15 +38,32 @@ enum {
aMR_CONTACT_DIR_NUM
};
enum {
aMR_FRIEND_ALL,
aMR_FRIEND_ON,
aMR_FRIEND_OFF,
aMR_FRIEND_NUM
};
enum {
aMR_DIRECT_UP,
aMR_DIRECT_LEFT,
aMR_DIRECT_DOWN,
aMR_DIRECT_RIGHT,
aMR_DIRECT_NUM
};
typedef struct my_room_contact_s {
int contact_flag;
int ftr_no;
int ftrID;
int direction;
int contact_side;
f32 contact_percent;
f32* normal_p;
f32 contact_edge0[2];
f32 contact_edge1[2];
f32 contact_edge_start[2];
f32 contact_edge_end[2];
int contact_direction;
} aMR_contact_info_c;
@@ -48,18 +74,18 @@ typedef struct my_room_clock_info_s {
int frame; /* 0-119 */
} aMR_clock_info_c;
typedef int (*aMR_JUDGE_BREED_NEW_FTR_PROC)(GAME_PLAY* play, u16 ftr_no, int* ut_x, int* ut_z, u16* rotation,
typedef int (*aMR_JUDGE_BREED_NEW_FTR_PROC)(GAME* game, u16 ftr_no, int* ut_x, int* ut_z, u16* rotation,
int* square_offset, int* layer);
typedef mActor_name_t (*aMR_SEARCH_PICKUP_FURNITURE_PROC)(GAME_PLAY* play);
typedef void (*aMR_FURNITURE2ITEMBAG_PROC)(GAME_PLAY* play);
typedef mActor_name_t (*aMR_SEARCH_PICKUP_FURNITURE_PROC)(GAME* game);
typedef void (*aMR_FURNITURE2ITEMBAG_PROC)(GAME* game);
typedef int (*aMR_JUDGE_PLAYER_ACTION_PROC)(xyz_t* wpos0, xyz_t* wpos1, int ftr_actor_idx);
typedef void (*aMR_PLAYER_MOVE_FURNITURE_PROC)(int ftr_actor_idx, xyz_t* wpos);
typedef int (*aMR_FTR_ID_2_WPOS_PROC)(xyz_t* wpos, int ftr_id);
typedef int (*aMR_UNIT_NUM_2_FTR_ITEMNO_FTRID_PROC)(mActor_name_t* ftr_item_no, int* ftr_id, int ut_x, int ut_z,
s16 layer);
int layer);
typedef void (*aMR_FTR_ID_2_EXTINGUISH_FURNITURE_PROC)(int ftr_id);
typedef void (*aMR_REDMA_FTR_BANK_PROC)();
typedef int (*aMR_RESERVE_FURNITURE_PROC)(GAME_PLAY* play, u16 ftr_no, int judge_res, int ut_x, int ut_z, u16 rotation,
typedef void (*aMR_REDMA_FTR_BANK_PROC)(void);
typedef int (*aMR_RESERVE_FURNITURE_PROC)(GAME* game, u16 ftr_no, int judge_res, int ut_x, int ut_z, u16 rotation,
int square_offset, int layer);
typedef int (*aMR_COUNT_FRIEND_FURNITURE_PROC)(FTR_ACTOR* ftr_actor, u8 switch_on);
typedef int (*aMR_JUDGE_PLACE_2ND_LAYER_PROC)(int ut_x, int ut_z);
@@ -75,13 +101,13 @@ typedef int (*aMR_PICKUP_FTR_LAYER_PROC)(void);
typedef void (*aMR_LEAF_PICKUPED_PROC)(void);
typedef void (*aMR_FAMICOM_EMU_COMMON_MOVE_PROC)(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, int rom_no,
int agb_rom_no);
typedef u32 (*aMR_FTR_NO_2_BANK_ADDRESS_PROC)(u16 ftr_no);
typedef u8* (*aMR_FTR_NO_2_BANK_ADDRESS_PROC)(u16 ftr_no);
typedef void (*aMR_CALL_SIT_DOWN_ONGEN_POS_SE_PROC)(const xyz_t* pos);
typedef void (*aMR_SOUND_MELODY_PROC)(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, int idx);
typedef int (*aMR_CHECK_DANNA_KILL_PROC)(xyz_t* pos);
typedef struct my_room_clip_s {
MY_ROOM_ACTOR* my_room_actor_p;
ACTOR* my_room_actor_p;
aMR_JUDGE_BREED_NEW_FTR_PROC judge_breed_new_ftr_proc;
aMR_SEARCH_PICKUP_FURNITURE_PROC search_pickup_ftr_proc;
aMR_FURNITURE2ITEMBAG_PROC ftr2itemBag_proc;
@@ -118,12 +144,12 @@ typedef struct room_leaf_s {
typedef struct room_pickup_s {
int pickup_flag;
int ftr_no;
int ftrID;
xyz_t leaf_pos;
int picking_up_flag;
s16 layer;
u16 dust_effect_timer;
u16 icon;
s16 dust_effect_timer;
s16 icon;
} aMR_pickup_info_c;
typedef struct room_rsv_ftr_s {
@@ -162,7 +188,7 @@ typedef struct emu_info_s {
int _10;
int card_famicom_count;
int memory_game_select;
char** famicom_names_p;
char* famicom_names_p;
s16 save_msg_timer;
s16 external_rom;
} aMR_emu_info_c;
@@ -178,6 +204,12 @@ typedef struct room_fit_ftr_s {
xyz_t ut_pos;
} aMR_fit_ftr_c;
typedef struct room_parent_ftr_s {
int ftrID;
s16 angle_y;
aMR_fit_ftr_c fit_ftr_table[aMR_FIT_FTR_MAX];
} aMR_parent_ftr_c;
struct my_room_actor_s {
ACTOR actor_class;
s16 state;
@@ -215,7 +247,7 @@ struct my_room_actor_s {
s16 keep_pull_flag;
xyz_t pull_target_pos0;
xyz_t pull_target_pos1;
int haniwa_on_table[14];
int haniwa_on_table[aMR_HANIWA_ON_TABLE_NUM];
aMR_bgm_info_c bgm_info;
aMR_room_info_c room_info;
aMR_emu_info_c emu_info;
@@ -236,9 +268,7 @@ struct my_room_actor_s {
int _4F4;
int room_msg_flag;
int haniwa_step_idx;
int parent_ftrID;
s16 parent_angleY;
aMR_fit_ftr_c fit_ftr_table[4];
aMR_parent_ftr_c parent_ftr;
u32 music_box[2];
int scene;
int _5A4;
@@ -257,10 +287,15 @@ extern int aMR_GetFurnitureUnit(mActor_name_t ftr);
extern mActor_name_t aMR_FurnitureFg_to_FurnitureFgWithDirect(mActor_name_t ftr, int direct);
extern void aMR_SameFurnitureSwitchOFF(u16 ftr_name);
extern aMR_contact_info_c* aMR_GetContactInfoLayer1(void);
extern FTR_ACTOR* aMR_GetParentFactor();
extern s16 aMR_GetParentAngleOffset(FTR_ACTOR* ftr_actor, MY_ROOM_ACTOR* my_room_actor);
extern FTR_ACTOR* aMR_GetParentFactor(FTR_ACTOR* ftr_actor, ACTOR* my_room_actorx);
extern s16 aMR_GetParentAngleOffset(FTR_ACTOR* ftr_actor, ACTOR* my_room_actorx);
extern void aMR_SetSurprise(ACTOR* my_room_actor, s16 rot);
extern void aMR_RadioCommonMove(FTR_ACTOR* ftr_actor, ACTOR* my_room_actorx);
extern void aMR_SaveWaltzTempo2(void);
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);
#ifdef __cplusplus
}
+1 -1
View File
@@ -3,6 +3,7 @@
#include "types.h"
#include "m_actor.h"
#include "ac_shop_goods_h.h"
#ifdef __cplusplus
extern "C" {
@@ -15,4 +16,3 @@ extern ACTOR_PROFILE Shop_Goods_Profile;
#endif
#endif
+29
View File
@@ -0,0 +1,29 @@
#ifndef AC_SHOP_GOODS_H_H
#define AC_SHOP_GOODS_H_H
#include "types.h"
#include "m_actor_type.h"
#include "game_h.h"
#include "m_lib.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef void (*aSG_SINGLE_DRAW_PROC)(GAME*, mActor_name_t, xyz_t*, f32, s16, int);
typedef int (*aSG_PLAYER_DROP_ENTRY_PROC)(GAME*, mActor_name_t, int, int, int, int);
typedef s16 (*aSG_SINGLE_GET_ANGLE_Y_PROC)(int, int, int);
typedef void (*aSG_SINGLE_SET_ANGLE_Y_PROC)(int, int, int, s16);
typedef struct shop_goods_clip_s {
aSG_SINGLE_DRAW_PROC single_draw_proc;
aSG_PLAYER_DROP_ENTRY_PROC player_drop_entry_proc;
aSG_SINGLE_GET_ANGLE_Y_PROC single_get_angle_y_proc;
aSG_SINGLE_SET_ANGLE_Y_PROC single_set_angle_y_proc;
} aSG_Clip_c;
#ifdef __cplusplus
}
#endif
#endif
+19 -19
View File
@@ -26,18 +26,18 @@ enum {
VOICE_STATUS_NUM
};
extern void sAdo_Calc_MicPosition_forTrig(f32* fcalc, u16* scalc, xyz_t* pos);
extern void sAdo_Calc_MicPosition_forLevel(f32* fcalc, u16* scalc, xyz_t* pos);
extern void sAdo_Calc_MicPosition_forTrig(f32* fcalc, u16* scalc, const xyz_t* pos);
extern void sAdo_Calc_MicPosition_forLevel(f32* fcalc, u16* scalc, const xyz_t* pos);
extern void sAdo_GameFrame();
extern void sAdo_BgmStart(u8 id);
extern void sAdo_BgmStop(u16 id);
extern void sAdo_SysTrgStart(u16 id);
extern void sAdo_PlyWalkSe(int walk, xyz_t* pos);
extern void sAdo_PlyWalkSeRoom(int walk, xyz_t* pos);
extern void sAdo_NpcWalkSe(int walk, xyz_t* pos);
extern void sAdo_NpcWalkSeRoom(int walk, xyz_t* pos);
extern void sAdo_PlyWalkSe(int walk, const xyz_t* pos);
extern void sAdo_PlyWalkSeRoom(int walk, const xyz_t* pos);
extern void sAdo_NpcWalkSe(int walk, const xyz_t* pos);
extern void sAdo_NpcWalkSeRoom(int walk, const xyz_t* pos);
extern void sAdo_PlayerStatusLevel(f32 speed, int p);
@@ -52,32 +52,32 @@ extern u8 sAdo_MessageSpeedGet();
extern void sAdo_SysLevStop(u8 id);
extern void sAdo_SysLevStart(u8 id);
extern void sAdo_OngenPos(u32 p1, u8 p2, xyz_t* pos);
extern void sAdo_OngenTrgStart(u16 id, xyz_t* pos);
extern void sAdo_OngenPos(u32 p1, u8 p2, const xyz_t* pos);
extern void sAdo_OngenTrgStart(u16 id, const xyz_t* pos);
extern void sAdo_SetOutMode(u8 mode);
extern void sAdo_SetVoiceMode(u8 mode);
extern void sAdo_FloorTrgStart(u16 id, xyz_t* pos);
extern void sAdo_FloorTrgStart(u8 id, const xyz_t* pos);
extern void sAdo_RhythmStart(u32 id, s8 type, s8 wait);
extern void sAdo_RhythmStop(u32 id);
extern void sAdo_RhythmAllStop();
extern void sAdo_FurnitureInst(int track_id, s8 cb, s32 cl, xyz_t* pos);
extern void sAdo_FurnitureInst(u32 id, u8 inst, u8* melody, const xyz_t* pos);
extern void sAdo_Pause(u8 mode);
extern f32 sAdo_GetRhythmAnimCounter(u32 id);
extern s8 sAdo_GetRhythmDelay(u32 id);
extern f32 sAdo_GetRhythmInfo(u32 id);
extern void sAdo_SetRhythmInfo(f32 p);
extern void sAdo_GetRhythmInfo(TempoBeat_c* rhythm);
extern void sAdo_SetRhythmInfo(TempoBeat_c* rhythm);
extern int sAdo_InstCountGet();
extern void sAdo_RhythmPos(u32 id, u8 haniwa_id, xyz_t* pos);
extern void sAdo_RhythmPos(u32 id, u8 haniwa_id, const xyz_t* pos);
extern void sAdo_SpecChange(int spec);
extern void sAdo_MDPlayerPos(xyz_t* pos, u16 s1, u16 s2, int p);
extern void sAdo_MDPlayerPos(const xyz_t* pos, u16 s1, u16 s2, int p);
extern void sAdo_BGMVolume(f32 f, u16 volume);
extern void sAdo_BgmCrossfadeStart(u8 b);
@@ -98,7 +98,7 @@ extern void sAdos_GetStaffRollInfo(void* p);
extern void sAdos_TTKK_ARM(u8 mode);
extern void sAdo_OngenTrgStartSpeed(f32 speed, u16 s1, xyz_t* pos);
extern void sAdo_OngenTrgStartSpeed(f32 speed, u16 s1, const xyz_t* pos);
extern void sAdo_TrgSeEcho(u8 b);
extern void sAdo_LevSeEcho(u8 b);
@@ -115,16 +115,16 @@ extern u16 sAdo_Get_WalkLabel(int type);
extern int sAdo_Get_KokeruLabel(int type);
extern void sAdo_SceneMode(u8 mode);
extern u8 sAdo_RoomIncectPos(u32 f, u16 u, xyz_t* pos);
extern u8 sAdo_RoomIncectPos(u32 f, u16 u, const xyz_t* pos);
extern void sAdo_FurnitureInstPos(u32 f, xyz_t* pos);
extern void sAdo_FurnitureInstPos(u32 id, const xyz_t* pos);
extern void sAdo_Set_ongenpos_refuse_fg(int state);
extern int sAdo_GameframeEnd_Check();
extern int sAdo_GetSoundFrameCounter();
extern int sAdo_CheckOnPlussBridge(xyz_t* pos, u32 atr);
extern void sAdo_RegistPlussBridge(xyz_t* pos);
extern int sAdo_CheckOnPlussBridge(const xyz_t* pos, u32 atr);
extern void sAdo_RegistPlussBridge(const xyz_t* pos);
extern void sAdo_DeletePlussBridge();
extern void sAdo_kazagurumaLevel(f32 level);
+26 -5
View File
@@ -15,12 +15,12 @@ extern "C" {
#define MONO(id) (id | 0x1000)
#define SE_FLAG_15(id) (id | 0x8000)
//TODO: Make the rest of Sound Effects with parameters
// TODO: Make the rest of Sound Effects with parameters
#define SE_REGISTER MONO(0x50)
typedef enum audio_sound_effects{
typedef enum audio_sound_effects {
NA_SE_START,
NA_SE_CURSOL,
NA_SE_CURSOL,
NA_SE_MENU_EXIT,
NA_SE_ZOOMUP = 4,
@@ -35,6 +35,8 @@ typedef enum audio_sound_effects{
NA_SE_LIGHT_ON,
NA_SE_LIGHT_OFF,
NA_SE_DRAWER_SHUT = 0x3A,
NA_SE_ITEM_GET = 0x40,
NA_SE_ITEM_HORIDASHI = 0x47,
@@ -43,6 +45,9 @@ typedef enum audio_sound_effects{
NA_SE_MONEY2,
NA_SE_COIN,
NA_SE_BIRTH_FTR = 0x57,
NA_SE_CLEAN_UP_FTR = 0x58,
NA_SE_TOOL_FURI = 0x5A, // swing?
NA_SE_AMI_HIT = 0x5C,
NA_SE_TOOL_GET,
@@ -55,6 +60,9 @@ typedef enum audio_sound_effects{
NA_SE_TOOL_BROKEN2,
NA_SE_TOOL_BROKEN3,
NA_SE_STONECOIN_ROLL = 0x7D,
NA_SE_STONECOIN_DRAG = 0x7E,
NA_SE_ROD_STROKE = 0x109,
NA_SE_ROD_BACK,
@@ -79,7 +87,9 @@ typedef enum audio_sound_effects{
NA_SE_ZASSOU_NUKU = 0x15F,
NA_SE_HACHI_SASARERU,
NA_SE_166 = 0x166,
NA_SE_UCHIWA = 0x167,
NA_SE_LAWNMOWER = 0x177,
NA_SE_SCOOP_SHIGEMI = 0x401,
@@ -92,6 +102,8 @@ typedef enum audio_sound_effects{
NA_SE_BED_NEGAERI,
NA_SE_BED_OUT,
NA_SE_ROTATE = 0x41A,
NA_SE_SOFT_CHAIR_SIT = 0x41F,
NA_SE_HARD_CHAIR_SIT,
NA_SE_BUBU_CHAIR_SIT,
@@ -99,6 +111,10 @@ typedef enum audio_sound_effects{
NA_SE_HARD_CHAIR_STANDUP,
NA_SE_BUBU_CHAIR_STANDUP = 0x429,
NA_SE_FTR_DOOR_OPEN = 0x42C,
NA_SE_FTR_DOOR_CLOSE = 0x42D,
NA_SE_DRAWER_OPEN = 0x42E,
NA_SE_DRAWER_CLOSE = 0x42F,
NA_SE_DAI_UE_KAKUNOU = 0x430,
NA_SE_UMBRELLA_ROTATE = 0x432,
@@ -109,14 +125,19 @@ typedef enum audio_sound_effects{
NA_SE_KARABURI = 0x43A,
NA_SE_ROD_STROKE_SMALL = 0x445,
NA_SE_SCOOP_TREE_HIT = 0x448,
NA_SE_SCOOP_ITEM_HIT,
NA_SE_AXE_BALL_HIT,
NA_SE_COIN_GASAGOSO = 0x465,
}AudioSE;
} AudioSE;
typedef enum bgm_e {
BGM_AEROBICS = 27,
BGM_MD0 = 128,
} BGM_e;
#ifdef __cplusplus
}
+3 -4
View File
@@ -424,9 +424,8 @@ extern void cKF_SkeletonInfo_R_T_combine_play(int* arg1, int* arg2, int* arg3, c
* @param angley Y angle for base model rotation.
* @param anglez Z angle for base model rotation.
*/
extern void cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(f32 transx, f32 transy, f32 transz,
cKF_SkeletonInfo_R_c* keyframe, s16 anglex, s16 angley,
s16 anglez);
extern void cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(cKF_SkeletonInfo_R_c* keyframe, f32 transx, f32 transy,
f32 transz, s16 anglex, s16 angley, s16 anglez);
/**
* Adjusts the base position and correction for a skeleton info structure based on animation flags.
@@ -482,4 +481,4 @@ extern void cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(f32 calcx, f32 cal
}
#endif
#endif
#endif
+3 -3
View File
@@ -11,7 +11,7 @@ extern "C" {
/* sizeof(struct game_famicom_emu_s) == 0xE0 */
typedef struct game_famicom_emu_s {
/* 0x00 */ GAME game;
/* 0x00 */ GAME game;
} GAME_FAMICOM_EMU;
extern Famicom_MallocInfo my_malloc_func;
@@ -19,8 +19,8 @@ extern Famicom_MallocInfo my_malloc_func;
extern void famicom_emu_main(GAME* game);
extern void famicom_emu_init(GAME* game);
extern void famicom_emu_cleanup(GAME* game);
extern int famicom_gba_getImage(u32 rom_id, int* ptr);
extern void famicom_gba_removeImage(void* );
extern void* famicom_gba_getImage(u32 rom_id, size_t* size);
extern void famicom_gba_removeImage(void*);
#ifdef __cplusplus
}
+1 -1
View File
@@ -29,7 +29,7 @@ extern void Na_OngenPos(u32, u8, u16, f32);
extern void Na_OngenTrgStart(u16, u16, f32);
extern void Na_SetOutMode(u8);
extern void Na_SetVoiceMode(u8);
extern void Na_FloorTrgStart(u16, u16, f32);
extern void Na_FloorTrgStart(u8, u16, f32);
extern void Na_Pause(u8);
extern void Na_RhythmPos(u32, u8, u16, f32);
extern void Na_SpecChange(int);
+2 -4
View File
@@ -8,13 +8,11 @@ extern "C" {
#endif
extern void Na_Inst(u16, u8*);
extern void Na_FurnitureInst(int,s8,s32,u16,f32);
extern void Na_FurnitureInst(u32, u8, u8*, u16, f32);
extern int Na_InstCountGet();
#ifdef __cplusplus
}
#endif
#endif
#endif
+3 -2
View File
@@ -2,6 +2,7 @@
#define RHYTHM_H
#include "types.h"
#include "audio.h"
#ifdef __cplusplus
extern "C" {
@@ -12,8 +13,8 @@ extern void Na_RhythmStop(u32);
extern void Na_RhythmAllStop();
extern f32 Na_GetRhythmAnimCounter(u32);
extern s8 Na_GetRhythmDelay(u32);
extern f32 Na_GetRhythmInfo(u32);
extern void Na_SetRhythmInfo(f32);
extern void Na_GetRhythmInfo(TempoBeat_c* rhythm);
extern void Na_SetRhythmInfo(TempoBeat_c* rhythm);
#ifdef __cplusplus
}
+8 -8
View File
@@ -12,12 +12,12 @@ extern "C" {
#endif
typedef struct {
u16 mFileID; // _00
u16 mHash; // _02
u32 mFlag; // _04
u32 mDataOffset; // _08
u32 mSize; // _0C
void* mData; // _10
u16 mFileID; // _00
u16 mHash; // _02
u32 mFlag; // _04
u32 mDataOffset; // _08
u32 mSize; // _0C
void* mData; // _10
} CSDIFileEntry;
extern void* JC_JFWSystem_getSystemConsole();
@@ -116,8 +116,8 @@ extern void* JC_JUTFader_new(int ul_x, int ul_y, int br_x, int br_y, u32* color)
extern void JC_JUTFader_delete(void* fader);
extern void JC_JFWDisplay_changeToDoubleXfb(void* manager);
extern u32 JC__JKRGetResource(char* resourceName);
extern int JC__JKRGetMemBlockSize(int, u32);
extern void* JC__JKRGetResource(const char* resourceName);
extern u32 JC__JKRGetMemBlockSize(int, void*);
extern void JC__JKRRemoveResource(void* res);
-7
View File
@@ -1187,16 +1187,9 @@ extern void Actor_get_overlay_area(ACTOR_DLFTBL* dlftbl, int unused, size_t allo
extern void Actor_init_actor_class(ACTOR* actor, ACTOR_PROFILE* profile, ACTOR_DLFTBL* dlftbl, GAME_PLAY* play,
int bank_idx, f32 x, f32 y, f32 z, s16 rot_x, s16 rot_y, s16 rot_z, s8 block_x,
s8 block_z, s16 move_actor_list_idx, mActor_name_t name_id, s16 arg);
#ifndef MUST_MATCH
extern ACTOR* Actor_info_make_actor(Actor_info* actor_info, GAME* game, s16 profile_no, f32 x, f32 y, f32 z, s16 rot_x,
s16 rot_y, s16 rot_z, s8 block_x, s8 block_z, s16 move_actor_list_idx,
mActor_name_t name_id, s16 arg, s8 npc_info_idx, int data_bank_idx);
#else
extern asm ACTOR* Actor_info_make_actor(Actor_info* actor_info, GAME* game, s16 profile_no, f32 x, f32 y, f32 z,
s16 rot_x, s16 rot_y, s16 rot_z, s8 block_x, s8 block_z,
s16 move_actor_list_idx, mActor_name_t name_id, s16 arg, s8 npc_info_idx,
int data_bank_idx);
#endif
extern ACTOR* Actor_info_make_child_actor(Actor_info* actor_info, ACTOR* parent_actor, GAME* game, s16 profile, f32 x,
f32 y, f32 z, s16 rot_x, s16 rot_y, s16 rot_z, s16 move_actor_list_idx,
mActor_name_t name_id, s16 arg, int data_bank_idx);
+69 -61
View File
@@ -15,94 +15,94 @@ typedef struct choice_s mChoice_c;
typedef struct choice_data_s mChoice_Data_c;
enum choice {
mChoice_CHOICE0,
mChoice_CHOICE1,
mChoice_CHOICE2,
mChoice_CHOICE3,
mChoice_CHOICE4,
mChoice_CHOICE5,
mChoice_CHOICE0,
mChoice_CHOICE1,
mChoice_CHOICE2,
mChoice_CHOICE3,
mChoice_CHOICE4,
mChoice_CHOICE5,
mChoice_CHOICE_NUM
mChoice_CHOICE_NUM
};
enum {
mChoice_AUTOMOVE_STOPPED,
mChoice_AUTOMOVE_INCREMENT_WAIT,
mChoice_AUTOMOVE_INCREMENT,
mChoice_AUTOMOVE_DECREMENT_WAIT,
mChoice_AUTOMOVE_DECREMENT,
mChoice_AUTOMOVE_STOPPED,
mChoice_AUTOMOVE_INCREMENT_WAIT,
mChoice_AUTOMOVE_INCREMENT,
mChoice_AUTOMOVE_DECREMENT_WAIT,
mChoice_AUTOMOVE_DECREMENT,
mChoice_AUTOMOVE_NUM
mChoice_AUTOMOVE_NUM
};
enum {
mChoice_MAIN_HIDE,
mChoice_MAIN_APPEAR,
mChoice_MAIN_NORMAL,
mChoice_MAIN_DISAPPEAR,
mChoice_MAIN_HIDE,
mChoice_MAIN_APPEAR,
mChoice_MAIN_NORMAL,
mChoice_MAIN_DISAPPEAR,
mChoice_MAIN_INDEX_NUM
mChoice_MAIN_INDEX_NUM
};
struct choice_data_s {
u8 strings[mChoice_CHOICE_NUM][mChoice_CHOICE_STRING_LEN];
int string_lens[mChoice_CHOICE_NUM];
u8 determination_string[mChoice_CHOICE_STRING_LEN];
int determination_len;
int choice_num;
int selected_choice_idx;
u8 strings[mChoice_CHOICE_NUM][mChoice_CHOICE_STRING_LEN];
int string_lens[mChoice_CHOICE_NUM];
u8 determination_string[mChoice_CHOICE_STRING_LEN];
int determination_len;
int choice_num;
int selected_choice_idx;
};
struct choice_s {
/* Current XY position (centered) */
/* 0x00 */ f32 center_x;
/* 0x04 */ f32 center_y;
/* Current XY position (centered) */
/* 0x00 */ f32 center_x;
/* 0x04 */ f32 center_y;
/* Initial XY position */
/* 0x08 */ f32 center_x_begin;
/* 0x0C */ f32 center_y_begin;
/* Initial XY position */
/* 0x08 */ f32 center_x_begin;
/* 0x0C */ f32 center_y_begin;
/* Target XY position */
/* 0x10 */ f32 center_x_target;
/* 0x14 */ f32 center_y_target;
/* Target XY position */
/* 0x10 */ f32 center_x_target;
/* 0x14 */ f32 center_y_target;
/* Text settings */
/* 0x18 */ rgba_t text_color;
/* 0x1C */ f32 text_scale_x;
/* 0x20 */ f32 text_scale_y;
/* 0x24 */ f32 text_x;
/* 0x28 */ f32 text_y;
/* Text settings */
/* 0x18 */ rgba_t text_color;
/* 0x1C */ f32 text_scale_x;
/* 0x20 */ f32 text_scale_y;
/* 0x24 */ f32 text_x;
/* 0x28 */ f32 text_y;
/* Window scaling XY */
/* 0x2C */ f32 scale_x;
/* 0x30 */ f32 scale_y;
/* Window scaling XY */
/* 0x2C */ f32 scale_x;
/* 0x30 */ f32 scale_y;
/* Text related data */
/* 0x34 */ mChoice_Data_c data;
/* Text related data */
/* 0x34 */ mChoice_Data_c data;
/* 0xC8 */ int selected_choice_idx;
/* 0xCC */ rgba_t selected_choice_text_color;
/* 0xD0 */ rgba_t background_color;
/* 0xC8 */ int selected_choice_idx;
/* 0xCC */ rgba_t selected_choice_text_color;
/* 0xD4 */ f32 _D4;
/* 0xD8 */ f32 _D8;
/* 0xD0 */ rgba_t background_color;
/* 0xDC */ f32 scale; // total choice window scaling percentage
/* 0xD4 */ f32 _D4;
/* 0xD8 */ f32 _D8;
/* 0xE0 */ int main_index;
/* 0xE4 */ int requested_main_index;
/* 0xDC */ f32 scale; // total choice window scaling percentage
/* 0xE8 */ int window_visible_flag;
/* 0xEC */ int font_visible_flag;
/* 0xE0 */ int main_index;
/* 0xE4 */ int requested_main_index;
/* 0xF0 */ int choice_automove_type;
/* 0xF4 */ f32 choice_automove_timer;
/* 0xE8 */ int window_visible_flag;
/* 0xEC */ int font_visible_flag;
/* 0xF8 */ f32 timer;
/* 0xF0 */ int choice_automove_type;
/* 0xF4 */ f32 choice_automove_timer;
/* 0xFC */ u8 no_b_flag; // can't press B to select last option
/* 0xFD */ u8 no_close_flag; // pressing B won't auto-cancel the choice selection?
/* 0xF8 */ f32 timer;
/* 0xFC */ u8 no_b_flag; // can't press B to select last option
/* 0xFD */ u8 no_close_flag; // pressing B won't auto-cancel the choice selection?
};
extern void mChoice_Main(mChoice_c* choice, GAME* game);
@@ -114,13 +114,21 @@ extern mChoice_c* mChoice_Get_base_window_p();
extern void mChoice_Change_request_main_index(mChoice_c* choice, int request_main_index);
extern int mChoice_check_main_index(mChoice_c* choice);
extern int mChoice_check_main_normal(mChoice_c* choice);
extern void mChoice_Set_choice_data( mChoice_c* choice, u8* str0, int str0_len, u8* str1, int str1_len, u8* str2, int str2_len, u8* str3, int str3_len, u8* str4, int str4_len, u8* str5, int str5_len);
extern void mChoice_Set_choice_data(mChoice_c* choice, u8* str0, int str0_len, u8* str1, int str1_len, u8* str2,
int str2_len, u8* str3, int str3_len, u8* str4, int str4_len, u8* str5,
int str5_len);
extern int mChoice_Get_ChoseNum(mChoice_c* choice);
extern void mChoice_Clear_ChoseNum(mChoice_c* choice);
extern void mChoice_Load_ChoseStringFromRom(mChoice_c* choice, u8* str, int str_no, ACTOR* actor);
extern void mChoice_no_b_set(mChoice_c* choice);
extern void mChoice_no_b_close_set(mChoice_c* choice);
/* Macros */
#define mChoice_GET_CHOSENUM() mChoice_Get_ChoseNum(mChoice_Get_base_window_p())
#define mChoice_CLEAR_CHOSENUM() mChoice_Clear_ChoseNum(mChoice_Get_base_window_p())
#define mChoice_NO_B_SET() mChoice_no_b_set(mChoice_Get_base_window_p())
#define mChoice_NO_B_CLOSE_SET() mChoice_no_b_close_set(mChoice_Get_base_window_p())
#ifdef __cplusplus
}
#endif
+2 -1
View File
@@ -23,6 +23,7 @@
#include "ac_shop_umbrella.h"
#include "ac_handOverItem.h"
#include "ac_quest_manager_clip.h"
#include "ac_shop_goods_h.h"
#ifdef __cplusplus
extern "C" {
@@ -63,7 +64,7 @@ typedef struct clip_s {
/* 0x0A4 */ mDemo_Clip_c* demo_clip2; /* can be multiple clip classes */
/* 0x0A8 */ void* _0A8;
/* 0x0AC */ aGYO_Clip_c* gyo_clip;
/* 0x0B0 */ void* _0B0;
/* 0x0B0 */ aSG_Clip_c* shop_goods_clip;
/* 0x0B4 */ void* _0B4;
/* 0x0B8 */ aShopUmbrella_Clip_c* shop_umbrella_clip;
/* 0x0BC */ aAR_Clip_c* arrange_room_clip;
+9
View File
@@ -277,6 +277,15 @@ extern int mCoBG_GetHoleNumber_ClData(mCoBG_Collision_u* col);
extern void mCoBG_GetBgNorm_FromWpos(xyz_t* norm, xyz_t wpos);
extern int mCoBG_GetWaterFlow(xyz_t* water_flow, u32 attr);
extern void mCoBG_SetAttribute(xyz_t pos, u32 attr);
extern int mCoBG_GetPointInfoFrontLine(f32* line, f32* check_pos, f32* norm);
extern int mCoBG_GetCrossCircleAndLine2Dvector(f32* cross0_xz, f32* cross1_xz, f32* point_xz, f32* vec_xz,
f32* center_xz, f32 radius);
extern f32 mCoBG_GetVectorProductin2D(f32* vec0_xz, f32* vec1_xz);
extern int mCoBG_GetCrossLineAndPerpendicular(f32* cross_xz, f32* start_xz, f32* end_xz, f32* point_xz);
extern int mCoBG_RangeCheckLinePoint(f32* start_xz, f32* end_xz, f32* point_xz);
extern int mCoBG_GetDistPointAndLine2D_Norm(f32* dist, f32* start_xz, f32* end_xz, f32* norm, f32* point_xz);
extern f32 mCoBG_Get2VectorAngleF(f32* v0, f32* v1, u8 type);
extern int mCoBG_CheckUtFlat(const xyz_t* pos);
extern void mCoBG_InitMoveBgData();
extern void mCoBG_InitBlockBgCheckMode();
+5 -3
View File
@@ -256,7 +256,7 @@ typedef struct common_data_s {
/* 0x0287FA */ u8 _287FA[0x28838 - 0x0287FA];
/* 0x028838 */ s8 player_bee_swell_flag;
/* 0x028839 */ s8 player_bee_chase_flag;
/* 0x02883A */ u8 goki_shocked_flag;
/* 0x02883A */ s8 goki_shocked_flag;
/* 0x02883B */ u8 time_changed_flag;
/* 0x02883C */ u8 unable_to_wade_flag;
/* 0x02883D */ u8 _02883D;
@@ -310,11 +310,11 @@ typedef struct common_data_s {
/* 0x02DBA4 */ s16 island_weather_intensity;
/* 0x02DBA6 */ s16 _2DBA6;
/* 0x02DBA8 */ u8 memcard_slot;
/* 0X02DBAC */ int famicom_2DBAC;
/* 0X02DBAC */ int my_room_message_control_flags;
/* 0x02DBB0 */ s16 can_look_goki_count;
/* 0x02DBB4 */ f32 rainbow_opacity; /* current opacity of rainbow (0.0f - 1.0f) */
/* 0x02DBB8 */ u32 event_flags[mEv_EVENT_TYPE_NUM];
/* 0x02DBD4 */ xyz_t* pluss_bridge_pos; /* position of extra bridge */
/* 0x02DBD4 */ const xyz_t* pluss_bridge_pos; /* position of extra bridge */
/* 0x02DBD8 */ lbRTC_time_c auto_nwrite_time; /* cached notice time used for fishing tourney results? */
/* 0x02DBE0 */ u8 rhythym_updated;
/* 0x02DBE1 */ u8 _2dbe1;
@@ -341,6 +341,8 @@ extern common_data_t common_data;
#define Player_Palette_Get(idx) (Common_Get(now_private->my_org[idx].palette))
#define Player_Design_Get(idx) (Common_GetPointer(now_private->my_org[idx].design))
#define Now_Private (Common_Get(now_private))
#define Able_Sisters_Palette_Get(idx) (Save_Get(needlework.original_design[idx].palette))
#define Able_Sisters_Design_Get(idx) (Save_GetPointer(needlework.original_design[idx].design))
#define Able_Sisters_Cloth_Palette_Get(idx) (Able_Sisters_Palette_Get(idx))
+106 -109
View File
@@ -15,8 +15,8 @@ extern "C" {
#define mFI_UNIT_BASE_SIZE 40
#define mFI_UNIT_BASE_SIZE_F ((f32)mFI_UNIT_BASE_SIZE)
#define mFI_UT_WORLDSIZE_X 40
#define mFI_UT_WORLDSIZE_Z 40
#define mFI_UT_WORLDSIZE_X mFI_UNIT_BASE_SIZE
#define mFI_UT_WORLDSIZE_Z mFI_UNIT_BASE_SIZE
#define mFI_UT_WORLDSIZE_X_F ((f32)mFI_UT_WORLDSIZE_X)
#define mFI_UT_WORLDSIZE_Z_F ((f32)mFI_UT_WORLDSIZE_Z)
@@ -30,6 +30,8 @@ extern "C" {
#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_POS2UT(pos) ((int)((pos) / mFI_UNIT_BASE_SIZE_F))
#define mFI_ROW_TO_CHARSTR(row) ((row) + 'A')
#define mFI_COL_TO_CHARSTR(col) ((col) + '0')
@@ -39,24 +41,24 @@ extern "C" {
#define mFI_MAX_SHELLS_PER_BLOCK 4
enum field_type {
mFI_FIELDTYPE_FG,
mFI_FIELDTYPE_1,
mFI_FIELDTYPE_2,
mFI_FIELDTYPE_ROOM,
mFI_FIELDTYPE_NPC_ROOM,
mFI_FIELDTYPE_DEMO,
mFI_FIELDTYPE_PLAYER_ROOM,
mFI_FIELDTYPE_FG,
mFI_FIELDTYPE_1,
mFI_FIELDTYPE_2,
mFI_FIELDTYPE_ROOM,
mFI_FIELDTYPE_NPC_ROOM,
mFI_FIELDTYPE_DEMO,
mFI_FIELDTYPE_PLAYER_ROOM,
mFI_FIELDTYPE_NUM
mFI_FIELDTYPE_NUM
};
enum field_type2 {
mFI_FIELDTYPE2_FG,
mFI_FIELDTYPE2_PLAYER_ROOM,
mFI_FIELDTYPE2_NPC_ROOM,
mFI_FIELDTYPE2_ROOM,
mFI_FIELDTYPE2_FG,
mFI_FIELDTYPE2_PLAYER_ROOM,
mFI_FIELDTYPE2_NPC_ROOM,
mFI_FIELDTYPE2_ROOM,
mFI_FIELDTYPE2_NUM
mFI_FIELDTYPE2_NUM
};
#define mFI_TO_FIELD_ID(type, index) (((type) << 12) | (index))
@@ -64,134 +66,126 @@ enum field_type2 {
#define mFI_TYPE(type) ((type) << 12)
enum field_room {
/* TODO: others */
mFI_FIELD_FG = mFI_TO_FIELD_ID(mFI_FIELDTYPE_FG, 0),
/* TODO: others */
mFI_FIELD_FG = mFI_TO_FIELD_ID(mFI_FIELDTYPE_FG, 0),
mFI_FIELD_ROOM0 = mFI_TO_FIELD_ID(mFI_FIELDTYPE_ROOM, 0),
mFI_FIELD_ROOM_SHOP0, /* 0x3001 */
mFI_FIELD_ROOM_BROKER_SHOP, /* 0x3002 */
mFI_FIELD_ROOM_POST_OFFICE, /* 0x3003 */
mFI_FIELD_ROOM_POLICE_BOX, /* 0x3004 */
mFI_FIELD_ROOM_BUGGY, /* 0x3005 */
mFI_FIELD_ROOM_SHOP1, /* 0x3006 */
mFI_FIELD_ROOM_SHOP2, /* 0x3007 */
mFI_FIELD_ROOM_SHOP3_1, /* 0x3008 */
mFI_FIELD_ROOM_SHOP3_2, /* 0x3009 */
mFI_FIELD_ROOM_KAMAKURA, /* 0x300A */
mFI_FIELD_ROOM_MUSEUM_ENTRANCE, /* 0x300B */
mFI_FIELD_ROOM_MUSEUM_PAINTING, /* 0x300C */
mFI_FIELD_ROOM_MUSEUM_FOSSIL, /* 0x300D */
mFI_FIELD_ROOM_MUSEUM_INSECT, /* 0x300E */
mFI_FIELD_ROOM_MUSEUM_FISH, /* 0x300F */
mFI_FIELD_ROOM_NEEDLEWORK, /* 0x3010 */
mFI_FIELD_ROOM_LIGHTHOUSE, /* 0x3011 */
mFI_FIELD_ROOM_TENT, /* 0x3012 */
mFI_FIELD_ROOM0 = mFI_TO_FIELD_ID(mFI_FIELDTYPE_ROOM, 0),
mFI_FIELD_ROOM_SHOP0, /* 0x3001 */
mFI_FIELD_ROOM_BROKER_SHOP, /* 0x3002 */
mFI_FIELD_ROOM_POST_OFFICE, /* 0x3003 */
mFI_FIELD_ROOM_POLICE_BOX, /* 0x3004 */
mFI_FIELD_ROOM_BUGGY, /* 0x3005 */
mFI_FIELD_ROOM_SHOP1, /* 0x3006 */
mFI_FIELD_ROOM_SHOP2, /* 0x3007 */
mFI_FIELD_ROOM_SHOP3_1, /* 0x3008 */
mFI_FIELD_ROOM_SHOP3_2, /* 0x3009 */
mFI_FIELD_ROOM_KAMAKURA, /* 0x300A */
mFI_FIELD_ROOM_MUSEUM_ENTRANCE, /* 0x300B */
mFI_FIELD_ROOM_MUSEUM_PAINTING, /* 0x300C */
mFI_FIELD_ROOM_MUSEUM_FOSSIL, /* 0x300D */
mFI_FIELD_ROOM_MUSEUM_INSECT, /* 0x300E */
mFI_FIELD_ROOM_MUSEUM_FISH, /* 0x300F */
mFI_FIELD_ROOM_NEEDLEWORK, /* 0x3010 */
mFI_FIELD_ROOM_LIGHTHOUSE, /* 0x3011 */
mFI_FIELD_ROOM_TENT, /* 0x3012 */
mFI_FIELD_NPCROOM0 = mFI_TO_FIELD_ID(mFI_FIELDTYPE_NPC_ROOM, 0),
mFI_FIELD_NPCROOM_FIELD_TOOL_INSIDE,
mFI_FIELD_NPCROOM0 = mFI_TO_FIELD_ID(mFI_FIELDTYPE_NPC_ROOM, 0),
mFI_FIELD_NPCROOM_FIELD_TOOL_INSIDE,
mFI_FIELD_DEMO_STARTDEMO = mFI_TO_FIELD_ID(mFI_FIELDTYPE_DEMO, 0),
mFI_FIELD_DEMO_STARTDEMO2,
mFI_FIELD_DEMO_PLAYERSELECT,
mFI_FIELD_DEMO_STARTDEMO3,
mFI_FIELD_DEMO_STARTDEMO = mFI_TO_FIELD_ID(mFI_FIELDTYPE_DEMO, 0),
mFI_FIELD_DEMO_STARTDEMO2,
mFI_FIELD_DEMO_PLAYERSELECT,
mFI_FIELD_DEMO_STARTDEMO3,
mFI_FIELD_PLAYER0_ROOM = mFI_TO_FIELD_ID(mFI_FIELDTYPE_PLAYER_ROOM, 0),
mFI_FIELD_PLAYER1_ROOM,
mFI_FIELD_PLAYER2_ROOM,
mFI_FIELD_PLAYER3_ROOM,
mFI_FIELD_PLAYER0_ROOM = mFI_TO_FIELD_ID(mFI_FIELDTYPE_PLAYER_ROOM, 0),
mFI_FIELD_PLAYER1_ROOM,
mFI_FIELD_PLAYER2_ROOM,
mFI_FIELD_PLAYER3_ROOM,
/* TODO: others */
/* TODO: others */
};
#define mFI_GET_PLAYER_ROOM_NO(field_id) (((field_id)-mFI_FIELD_PLAYER0_ROOM) & 3)
#define mFI_IS_PLAYER_ROOM(field_id) \
((field_id) == mFI_FIELD_PLAYER0_ROOM || (field_id) == mFI_FIELD_PLAYER1_ROOM || \
(field_id) == mFI_FIELD_PLAYER2_ROOM || (field_id) == mFI_FIELD_PLAYER3_ROOM)
#define mFI_GET_PLAYER_ROOM_NO(field_id) (((field_id) - mFI_FIELD_PLAYER0_ROOM) & 3)
#define mFI_IS_PLAYER_ROOM(field_id) \
((field_id) == mFI_FIELD_PLAYER0_ROOM || (field_id) == mFI_FIELD_PLAYER1_ROOM || \
(field_id) == mFI_FIELD_PLAYER2_ROOM || (field_id) == mFI_FIELD_PLAYER3_ROOM)
/* "wade" between acres (acre transition) */
enum player_wade_state {
mFI_WADE_NONE,
mFI_WADE_START,
mFI_WADE_INPROGRESS,
mFI_WADE_END,
mFI_WADE_ERROR,
mFI_WADE_NONE,
mFI_WADE_START,
mFI_WADE_INPROGRESS,
mFI_WADE_END,
mFI_WADE_ERROR,
mFI_WADE_NUM
mFI_WADE_NUM
};
enum {
mFI_DEPOSIT_ON,
mFI_DEPOSIT_OFF,
mFI_DEPOSIT_GET,
mFI_DEPOSIT_ON,
mFI_DEPOSIT_OFF,
mFI_DEPOSIT_GET,
mFI_DEPOSIT_NUM
mFI_DEPOSIT_NUM
};
enum {
mFI_MOVEDIR_NONE,
mFI_MOVEDIR_RIGHT,
mFI_MOVEDIR_LEFT,
mFI_MOVEDIR_UP,
mFI_MOVEDIR_DOWN,
mFI_MOVEDIR_NONE,
mFI_MOVEDIR_RIGHT,
mFI_MOVEDIR_LEFT,
mFI_MOVEDIR_UP,
mFI_MOVEDIR_DOWN,
mFI_MOVEDIR_NUM
mFI_MOVEDIR_NUM
};
/* Not sure about these other than the island one */
enum { mFI_CLIMATE_0, mFI_CLIMATE_ISLAND, mFI_CLIMATE_2, mFI_CLIMATE_3, mFI_CLIMATE_4, mFI_CLIMATE_5, mFI_CLIMATE_NUM };
enum {
mFI_CLIMATE_0,
mFI_CLIMATE_ISLAND,
mFI_CLIMATE_2,
mFI_CLIMATE_3,
mFI_CLIMATE_4,
mFI_CLIMATE_5,
mFI_CLIMATE_NUM
mFI_DIGSTATUS_MISS,
mFI_DIGSTATUS_CANCEL,
mFI_DIGSTATUS_FILLIN,
mFI_DIGSTATUS_DIG,
mFI_DIGSTATUS_PUT_ITEM,
mFI_DIGSTATUS_GET_ITEM,
mFI_DIGSTATUS_NUM
};
enum {
mFI_DIGSTATUS_MISS,
mFI_DIGSTATUS_CANCEL,
mFI_DIGSTATUS_FILLIN,
mFI_DIGSTATUS_DIG,
mFI_DIGSTATUS_PUT_ITEM,
mFI_DIGSTATUS_GET_ITEM,
mFI_DIGSTATUS_NUM
};
mFI_SET_STRUCTURE_SET,
mFI_SET_STRUCTURE_REMOVE,
enum {
mFI_SET_STRUCTURE_SET,
mFI_SET_STRUCTURE_REMOVE,
mFI_SET_STRUCTURE_NUM
mFI_SET_STRUCTURE_NUM
};
/* sizeof(mFI_unit_c) == 0x14 */
typedef struct location_info_s {
/* 0x00 */ int block_x;
/* 0x04 */ int block_z;
/* 0x08 */ int unit_x;
/* 0x0C */ int unit_z;
/* 0x10 */ mActor_name_t* block_data;
/* 0x00 */ int block_x;
/* 0x04 */ int block_z;
/* 0x08 */ int unit_x;
/* 0x0C */ int unit_z;
/* 0x10 */ mActor_name_t* block_data;
} mFI_unit_c;
typedef struct block_table_s {
s8 block_x;
s8 block_z;
s8 block_x;
s8 block_z;
f32 pos_x;
f32 pos_z;
f32 pos_x;
f32 pos_z;
mActor_name_t* items;
mActor_name_t* items;
} mFI_block_tbl_c;
typedef struct visible_block_item_info_s {
int count;
mFI_block_tbl_c block_info_tbl[mFM_VISIBLE_BLOCK_NUM];
int count;
mFI_block_tbl_c block_info_tbl[mFM_VISIBLE_BLOCK_NUM];
} mFI_item_table_c;
enum {
mFI_SOUND_SOURCE_POND = 3, // TODO: might not be correct name
mFI_SOUND_SOURCE_POND = 3, // TODO: might not be correct name
};
extern void mFI_ClearFieldData();
@@ -269,7 +263,7 @@ extern int mFI_GetItemTable(mFI_item_table_c* item_table, xyz_t wpos, char* file
extern int mFI_FGisUpDate();
extern void mFI_SetFGUpData();
extern void mFI_BornItemON();
//extern MATCH_FORCESTRIP void mFI_BornItemOFF();
// extern MATCH_FORCESTRIP void mFI_BornItemOFF();
extern int mFI_ItemisBorn();
extern int mFI_ActorisBorn();
extern void mFI_SetBearActor(GAME_PLAY* play, xyz_t wpos, int set_flag);
@@ -288,9 +282,10 @@ extern void mFI_SetMoveActorBitData(int bx, int bz, u16 move_actor_bit_data);
extern void mFI_SetMoveActorBitData_ON(s16 move_actor_idx, int bx, int bz);
extern void mFI_SetMoveActorBitData_OFF(s16 move_actor_idx, int bx, int bz);
extern void mFI_MyMoveActorBitData_ON(ACTOR* actor);
//extern MATCH_FORCESTRIP void mFI_MyMoveActorBitData_OFF(ACTOR* actor);
// extern MATCH_FORCESTRIP void mFI_MyMoveActorBitData_OFF(ACTOR* actor);
extern int mFI_GetMoveActorListIdx(mFM_move_actor_c* move_actor_list, int list_size, mActor_name_t actor_name);
extern int mFI_RegistMoveActorList(mActor_name_t actor_name, int bx, int bz, int ut_x, int ut_z, int npc_info_idx, s16 arg);
extern int mFI_RegistMoveActorList(mActor_name_t actor_name, int bx, int bz, int ut_x, int ut_z, int npc_info_idx,
s16 arg);
extern int mFI_UnregistMoveActorList(mActor_name_t actor_name, int bx, int bz);
extern int mFI_AddMoveActorList(mActor_name_t actor_name, int bx, int bz, int ut_x, int ut_z, s16 arg);
extern mFM_move_actor_c* mFI_MoveActorListDma(int bx, int bz);
@@ -302,12 +297,12 @@ extern int mFI_GetNextBlockNum(int* bx, int* bz);
extern u16* mFI_GetDepositP(int bx, int bz);
extern void mFI_ClearDeposit(int bx, int bz);
extern int mFI_GetLineDeposit(u16* deposit, int ut_x);
//extern MATCH_FORCESTRIP void mFI_BlockDepositON(u16* deposit_p, int ut_x, int ut_z);
// extern MATCH_FORCESTRIP void mFI_BlockDepositON(u16* deposit_p, int ut_x, int ut_z);
extern void mFI_BlockDepositOFF(u16* deposit_p, int ut_x, int ut_z);
extern int mFI_GetBlockDeposit(u16* deposit_p, int ut_x, int ut_z);
//extern MATCH_FORCESTRIP void mFI_BkUtNum2DepositON(int bx, int bz, int ut_x, int ut_z);
// extern MATCH_FORCESTRIP void mFI_BkUtNum2DepositON(int bx, int bz, int ut_x, int ut_z);
extern void mFI_BkUtNum2DepositOFF(int bx, int bz, int ut_x, int ut_z);
//extern MATCH_FORCESTRIP int mFI_BkUtNum2DepositGet(int bx, int bz, int ut_x, int ut_z);
// extern MATCH_FORCESTRIP int mFI_BkUtNum2DepositGet(int bx, int bz, int ut_x, int ut_z);
extern void mFI_UtNum2DepositON(int ut_x, int ut_z);
extern void mFI_UtNum2DepositOFF(int ut_x, int ut_z);
extern int mFI_UtNum2DepositGet(int ut_x, int ut_z);
@@ -320,12 +315,14 @@ extern int mFI_GetDigStatus(mActor_name_t* item, xyz_t wpos, int golden_shovel);
extern void mFI_ClearHoleBlock(int bx, int bz);
extern void mFI_ClearBeecomb(int bx, int bz);
extern int mFI_SetFGStructure_common(mActor_name_t structure_name, int bx, int bz, int ut_x, int ut_z, int set_type);
extern int mFI_CheckStructureArea(int ut_x, int ut_z, mActor_name_t structure_name, int structure_ut_x, int structure_ut_z);
extern int mFI_CheckStructureArea(int ut_x, int ut_z, mActor_name_t structure_name, int structure_ut_x,
int structure_ut_z);
extern mActor_name_t mFI_GetOtherFruit();
extern int mFI_CheckFGNpcOn(mActor_name_t item);
extern int mFI_CheckLapPolice(int bx, int bz, int ut_x, int ut_z);
extern int mFI_GetWaveUtinBlock(int* ut_x, int* ut_z, int bx, int bz);
extern int mFI_ClearBlockItemRandom_common(mActor_name_t item, int clear_num, mActor_name_t* fg_p, u16* deposit_p, int delete_buried);
extern int mFI_ClearBlockItemRandom_common(mActor_name_t item, int clear_num, mActor_name_t* fg_p, u16* deposit_p,
int delete_buried);
extern void mFI_SetFirstSetShell();
extern void mFI_FieldMove(xyz_t player_pos);
extern void mFI_PrintNowBGNum(gfxprint_t* gfxprint);
+105 -103
View File
@@ -19,169 +19,171 @@ extern "C" {
#define mHm_LAYER_NUM 4
enum {
mHm_ROOM_MAIN,
mHm_ROOM_UPPER,
mHm_ROOM_BASEMENT,
mHm_ROOM_MAIN,
mHm_ROOM_UPPER,
mHm_ROOM_BASEMENT,
mHm_ROOM_NUM
mHm_ROOM_NUM
};
enum {
mHm_ROOMTYPE_SMALL,
mHm_ROOMTYPE_MEDIUM,
mHm_ROOMTYPE_LARGE,
mHm_ROOMTYPE_COTTAGE,
mHm_ROOMTYPE_SMALL,
mHm_ROOMTYPE_MEDIUM,
mHm_ROOMTYPE_LARGE,
mHm_ROOMTYPE_COTTAGE,
mHm_ROOMTYPE_NUM
mHm_ROOMTYPE_NUM
};
enum {
mHm_HOMESIZE_SMALL, /* initial size */
mHm_HOMESIZE_MEDIUM, /* paid off first debt */
mHm_HOMESIZE_LARGE, /* paid off second debt (excluding basement) */
mHm_HOMESIZE_UPPER, /* paid off third debt & basement */
mHm_HOMESIZE_STATUE, /* paid off final debt */
mHm_HOMESIZE_SMALL, /* initial size */
mHm_HOMESIZE_MEDIUM, /* paid off first debt */
mHm_HOMESIZE_LARGE, /* paid off second debt (excluding basement) */
mHm_HOMESIZE_UPPER, /* paid off third debt & basement */
mHm_HOMESIZE_STATUE, /* paid off final debt */
mHm_HOMESIZE_NUM
mHm_HOMESIZE_NUM
};
enum {
mHm_HANIWA_TRADE_0,
mHm_HANIWA_TRADE_1,
mHm_HANIWA_TRADE_2,
mHm_HANIWA_TRADE_3,
mHm_HANIWA_TRADE_NUM
mHm_HANIWA_TRADE_0,
mHm_HANIWA_TRADE_1,
mHm_HANIWA_TRADE_2,
mHm_HANIWA_TRADE_3,
mHm_HANIWA_TRADE_NUM
};
enum {
mHm_OUTLOOK_PAL_0,
mHm_OUTLOOK_PAL_1,
mHm_OUTLOOK_PAL_2,
mHm_OUTLOOK_PAL_3,
mHm_OUTLOOK_PAL_4,
mHm_OUTLOOK_PAL_5,
mHm_OUTLOOK_PAL_6,
mHm_OUTLOOK_PAL_7,
mHm_OUTLOOK_PAL_8,
mHm_OUTLOOK_PAL_9,
mHm_OUTLOOK_PAL_10,
mHm_OUTLOOK_PAL_11,
mHm_OUTLOOK_PAL_0,
mHm_OUTLOOK_PAL_1,
mHm_OUTLOOK_PAL_2,
mHm_OUTLOOK_PAL_3,
mHm_OUTLOOK_PAL_4,
mHm_OUTLOOK_PAL_5,
mHm_OUTLOOK_PAL_6,
mHm_OUTLOOK_PAL_7,
mHm_OUTLOOK_PAL_8,
mHm_OUTLOOK_PAL_9,
mHm_OUTLOOK_PAL_10,
mHm_OUTLOOK_PAL_11,
mHm_OUTLOOK_PAL_NUM
mHm_OUTLOOK_PAL_NUM
};
/* sizeof(mHm_rmsz_c) == 6 */
typedef struct home_size_info_s {
/* 0x00 */ struct {
/* 0x00 */ u8 day;
/* 0x01 */ u8 month;
/* 0x02 */ u16 year;
} upgrade_order_date; /* date you ordered an upgrade, seems to be a struct */
/* 0x00 */ struct {
/* 0x00 */ u8 day;
/* 0x01 */ u8 month;
/* 0x02 */ u16 year;
} upgrade_order_date; /* date you ordered an upgrade, seems to be a struct */
/* 0x04 */ u8 size:3; /* current house size */
/* 0x04 */ u8 next_size:3; /* next house size when upgrade is ordered */
/* 0x04 */ u8 statue_rank:2; /* statue ranking, 0 = gold, 1 = silver, 2 = bronze, 3 = jade */
/* 0x05 */ u8 renew:1; /* refresh house size & 'outlook' palette */
/* 0x05 */ u8 statue_ordered:1; /* set when statue is ordered from Nook */
/* 0x05 */ u8 basement_ordered:1; /* set when basement has been ordered */
/* 0x05 */ u8 pad:5; /* unused? */
/* 0x04 */ u8 size : 3; /* current house size */
/* 0x04 */ u8 next_size : 3; /* next house size when upgrade is ordered */
/* 0x04 */ u8 statue_rank : 2; /* statue ranking, 0 = gold, 1 = silver, 2 = bronze, 3 = jade */
/* 0x05 */ u8 renew : 1; /* refresh house size & 'outlook' palette */
/* 0x05 */ u8 statue_ordered : 1; /* set when statue is ordered from Nook */
/* 0x05 */ u8 basement_ordered : 1; /* set when basement has been ordered */
/* 0x05 */ u8 pad : 5; /* unused? */
} mHm_rmsz_c;
/* sizeof(Haniwa_Item_c) == 8 */
typedef struct home_haniwa_item_s {
/* 0x00 */ mActor_name_t item; /* held item */
/* 0x02 */ s16 exchange_type; /* type of exchange (sale, free, trade) */
/* 0x04 */ u32 extra_data; /* trade related data */
/* 0x00 */ mActor_name_t item; /* held item */
/* 0x02 */ s16 exchange_type; /* type of exchange (sale, free, trade) */
/* 0x04 */ u32 extra_data; /* trade related data */
} Haniwa_Item_c;
/* sizeof(Haniwa_c) == 0xA4 */
typedef struct home_haniwa_s {
/* 0x00 */ Haniwa_Item_c items[HANIWA_ITEM_HOLD_NUM]; /* held items */
/* 0x20 */ u8 message[HANIWA_MESSAGE_LEN]; /* message for visitors */
/* 0xA0 */ u32 bells; /* held bells from selling items */
/* 0x00 */ Haniwa_Item_c items[HANIWA_ITEM_HOLD_NUM]; /* held items */
/* 0x20 */ u8 message[HANIWA_MESSAGE_LEN]; /* message for visitors */
/* 0xA0 */ u32 bells; /* held bells from selling items */
} Haniwa_c;
/* sizeof(mHm_wf_c) == 2 */
typedef struct home_wall_floor_s {
/* 0x00 */ u8 flooring_idx;
/* 0x01 */ u8 wallpaper_idx;
/* 0x00 */ u8 flooring_idx;
/* 0x01 */ u8 wallpaper_idx;
} mHm_wf_c;
/* sizeof(mHm_goki_c) == 0xA */
typedef struct home_goki_s {
/* 0x00 */ lbRTC_time_c time; /* last time updated */
/* 0x08 */ u8 num; /* number of cockroaches in the house */
/* 0x09 */ u8 pad; /* unused outside of being initalized to 0 */
/* 0x00 */ lbRTC_time_c time; /* last time updated */
/* 0x08 */ u8 num; /* number of cockroaches in the house */
/* 0x09 */ u8 pad; /* unused outside of being initalized to 0 */
} mHm_goki_c;
/* sizeof(mHm_lyr_c) == 0x228 */
typedef struct home_layer_s {
/* 0x000 */ mActor_name_t items[UT_Z_NUM][UT_X_NUM]; /* Furniture item actors */
/* 0x200 */ u64 ftr_switch; /* Bitfield for controlling which furniture items are active, max of 64 */
/* 0x208 */ u32 unk_208[8]; /* Only referenced in mISL_gc_to_agb_layer */
/* 0x000 */ mActor_name_t items[UT_Z_NUM][UT_X_NUM]; /* Furniture item actors */
/* 0x200 */ u64 ftr_switch; /* Bitfield for controlling which furniture items are active, max of 64 */
/* 0x208 */ u32 haniwa_step[8]; /* Only referenced in mISL_gc_to_agb_layer */
} mHm_lyr_c;
typedef struct floor_bit_info_s {
u8 wall_original:1; /* is wallpaper a pattern (original)? */
u8 floor_original:1; /* is flooring a pattern (original)? */
u8 bit_2_7:6; /* unused? */
u8 wall_original : 1; /* is wallpaper a pattern (original)? */
u8 floor_original : 1; /* is flooring a pattern (original)? */
u8 bit_2_7 : 6; /* unused? */
} mHm_fllot_bit_c;
/* sizeof(mHm_flr_c) == 0x8A8 */
typedef struct home_floor_s {
/* 0x000 */ mHm_lyr_c layer_main;
/* 0x228 */ mHm_lyr_c layer_secondary; /* Also storage layer 0 */
/* 0x450 */ mHm_lyr_c layer_storage1;
/* 0x678 */ mHm_lyr_c layer_storage2;
/* 0x8A0 */ mHm_wf_c wall_floor;
/* 0x8A2 */ TempoBeat_c tempo_beat;
/* 0x8A4 */ mHm_fllot_bit_c floor_bit_info;
/* 0x000 */ mHm_lyr_c layer_main;
/* 0x228 */ mHm_lyr_c layer_secondary; /* Also storage layer 0 */
/* 0x450 */ mHm_lyr_c layer_storage1;
/* 0x678 */ mHm_lyr_c layer_storage2;
/* 0x8A0 */ mHm_wf_c wall_floor;
/* 0x8A2 */ TempoBeat_c tempo_beat;
/* 0x8A4 */ mHm_fllot_bit_c floor_bit_info;
} mHm_flr_c;
/* sizeof(mHm_flg_c) == 1 */
typedef struct home_flags_s {
u8 house_updated:1; /* signals HRA to re-score house */
u8 has_saved:1; /* whether or not the player has saved at this house before */
u8 hra_member:1; /* whether or not the house has been setup for HRA membership */
u8 has_basement:1; /* set when the basement is built */
u8 hra_reward0:1; /* earned 70k HRA points reward */
u8 hra_reward1:1; /* earned 100k HRA points reward */
u8 bit_6:1; /* unused */
u8 bit_7:1; /* unused */
u8 house_updated : 1; /* signals HRA to re-score house */
u8 has_saved : 1; /* whether or not the player has saved at this house before */
u8 hra_member : 1; /* whether or not the house has been setup for HRA membership */
u8 has_basement : 1; /* set when the basement is built */
u8 hra_reward0 : 1; /* earned 70k HRA points reward */
u8 hra_reward1 : 1; /* earned 100k HRA points reward */
u8 bit_6 : 1; /* unused */
u8 bit_7 : 1; /* unused */
} mHm_flg_c;
/* sizeof(mHm_hs_c) == 0x26B0 */
typedef struct home_s {
/* 0x0000 */ PersonalID_c ownerID; /* owner player's ID */
/* 0x0014 */ u8 unk_14[6];
/* 0x001A */ TempoBeat_c haniwa_tempo; /* unsure about this */
/* 0x001C */ lbRTC_ymd_c hra_mark_time; /* last HRA judge date */
/* 0x0020 */ u32 hra_mark_info; /* bitfield of HRA info pulled when HRA mails letter */
/* 0x0024 */ mHm_flg_c flags;
/* 0x0026 */ mHm_rmsz_c size_info; /* home size info */
/* 0x002C */ u8 outlook_pal; /* current house palette */
/* 0x002D */ u8 ordered_outlook_pal; /* house palette ordered at Nook's via upgrade */
/* 0x002E */ u8 next_outlook_pal; /* next house palette set via all other means (villager, Wisp, paint @ Nook's, ...) */
/* 0x002F */ u8 door_original; /* player design shown on door, apparently called 'original', maybe 'original design'? */
/* 0x0030 */ u8 unk_30[8]; /* unused? */
/* 0x0038 */ mHm_flr_c floors[mHm_ROOM_NUM]; /* house floors, might be a union idk */
/* 0x1A30 */ Mail_c mailbox[HOME_MAILBOX_SIZE]; /* mailbox */
/* 0x25D4 */ Haniwa_c haniwa; /* gyroid info */
/* 0x2678 */ mHm_goki_c goki; /* cockroach info */
/* 0x2684 */ u32 music_box[2]; /* bitfield of inserted music */
/* 0x268C */ u8 unk_286C[36]; /* unused? */
/* 0x0000 */ PersonalID_c ownerID; /* owner player's ID */
/* 0x0014 */ u8 unk_14[6];
/* 0x001A */ TempoBeat_c haniwa_tempo; /* unsure about this */
/* 0x001C */ lbRTC_ymd_c hra_mark_time; /* last HRA judge date */
/* 0x0020 */ u32 hra_mark_info; /* bitfield of HRA info pulled when HRA mails letter */
/* 0x0024 */ mHm_flg_c flags;
/* 0x0026 */ mHm_rmsz_c size_info; /* home size info */
/* 0x002C */ u8 outlook_pal; /* current house palette */
/* 0x002D */ u8 ordered_outlook_pal; /* house palette ordered at Nook's via upgrade */
/* 0x002E */ u8
next_outlook_pal; /* next house palette set via all other means (villager, Wisp, paint @ Nook's, ...) */
/* 0x002F */ u8
door_original; /* player design shown on door, apparently called 'original', maybe 'original design'? */
/* 0x0030 */ u8 unk_30[8]; /* unused? */
/* 0x0038 */ mHm_flr_c floors[mHm_ROOM_NUM]; /* house floors, might be a union idk */
/* 0x1A30 */ Mail_c mailbox[HOME_MAILBOX_SIZE]; /* mailbox */
/* 0x25D4 */ Haniwa_c haniwa; /* gyroid info */
/* 0x2678 */ mHm_goki_c goki; /* cockroach info */
/* 0x2684 */ u32 music_box[2]; /* bitfield of inserted music */
/* 0x268C */ u8 unk_286C[36]; /* unused? */
} mHm_hs_c;
/* sizeof(mHm_cottage_c) == 0x8C8 */
typedef struct home_cottage_s {
/* 0x000 */ mHm_wf_c unused_wall_floor; /* Has wallpaper & flooring bounds checks in sChk_CheckSaveData_Cattage */
/* 0x002 */ u8 unk_2[2]; /* struct/array that is two bytes long, maybe another wall floor? */
/* 0x004 */ u8 unk_4; /* direct copy in agb_to_gc_cottage, GBA only? */
/* 0x005 */ u8 unk_5; /* direct copy in agb_to_gc_cottage, GBA only? */
/* 0x008 */ mHm_flr_c room; /* Cottage room */
/* 0x8B0 */ mHm_goki_c goki; /* Cottage cockroaches */
/* 0x8BC */ u32 music_box[2]; /* Cottage music storage... separate from main home? */
/* 0x000 */ mHm_wf_c unused_wall_floor; /* Has wallpaper & flooring bounds checks in sChk_CheckSaveData_Cattage */
/* 0x002 */ u8 unk_2[2]; /* struct/array that is two bytes long, maybe another wall floor? */
/* 0x004 */ u8 unk_4; /* direct copy in agb_to_gc_cottage, GBA only? */
/* 0x005 */ u8 unk_5; /* direct copy in agb_to_gc_cottage, GBA only? */
/* 0x008 */ mHm_flr_c room; /* Cottage room */
/* 0x8B0 */ mHm_goki_c goki; /* Cottage cockroaches */
/* 0x8BC */ u32 music_box[2]; /* Cottage music storage... separate from main home? */
} mHm_cottage_c;
#ifdef __cplusplus
+186 -160
View File
@@ -21,86 +21,86 @@ extern "C" {
#define mMsg_BUTTON_TURN_TIME 60.0f
enum {
mMsg_INDEX_HIDE,
mMsg_INDEX_APPEAR,
mMsg_INDEX_NORMAL,
mMsg_INDEX_CURSOL,
mMsg_INDEX_DISAPPEAR,
mMsg_INDEX_APPEAR_WAIT,
mMsg_INDEX_WAIT,
mMsg_INDEX_DISAPPEAR_WAIT,
mMsg_INDEX_HIDE,
mMsg_INDEX_APPEAR,
mMsg_INDEX_NORMAL,
mMsg_INDEX_CURSOL,
mMsg_INDEX_DISAPPEAR,
mMsg_INDEX_APPEAR_WAIT,
mMsg_INDEX_WAIT,
mMsg_INDEX_DISAPPEAR_WAIT,
mMsg_INDEX_NUM
mMsg_INDEX_NUM
};
enum {
mMsg_FREE_STR0,
mMsg_FREE_STR1,
mMsg_FREE_STR2,
mMsg_FREE_STR3,
mMsg_FREE_STR4,
mMsg_FREE_STR5,
mMsg_FREE_STR6,
mMsg_FREE_STR7,
mMsg_FREE_STR8,
mMsg_FREE_STR9,
mMsg_FREE_STR10,
mMsg_FREE_STR11,
mMsg_FREE_STR12,
mMsg_FREE_STR13,
mMsg_FREE_STR14,
mMsg_FREE_STR15,
mMsg_FREE_STR16,
mMsg_FREE_STR17,
mMsg_FREE_STR18,
mMsg_FREE_STR19,
mMsg_FREE_STR0,
mMsg_FREE_STR1,
mMsg_FREE_STR2,
mMsg_FREE_STR3,
mMsg_FREE_STR4,
mMsg_FREE_STR5,
mMsg_FREE_STR6,
mMsg_FREE_STR7,
mMsg_FREE_STR8,
mMsg_FREE_STR9,
mMsg_FREE_STR10,
mMsg_FREE_STR11,
mMsg_FREE_STR12,
mMsg_FREE_STR13,
mMsg_FREE_STR14,
mMsg_FREE_STR15,
mMsg_FREE_STR16,
mMsg_FREE_STR17,
mMsg_FREE_STR18,
mMsg_FREE_STR19,
mMsg_FREE_STR_NUM
mMsg_FREE_STR_NUM
};
enum {
mMsg_ITEM_STR0,
mMsg_ITEM_STR1,
mMsg_ITEM_STR2,
mMsg_ITEM_STR3,
mMsg_ITEM_STR4,
mMsg_ITEM_STR0,
mMsg_ITEM_STR1,
mMsg_ITEM_STR2,
mMsg_ITEM_STR3,
mMsg_ITEM_STR4,
mMsg_ITEM_STR_NUM
mMsg_ITEM_STR_NUM
};
enum {
mMsg_MAIL_STR0,
mMsg_MAIL_STR0,
mMsg_MAIL_STR_NUM
mMsg_MAIL_STR_NUM
};
enum {
mMsg_RESULT_VOID,
mMsg_RESULT_FALSE,
mMsg_RESULT_TRUE,
mMsg_RESULT_VOID,
mMsg_RESULT_FALSE,
mMsg_RESULT_TRUE,
mMsg_RESULT_NUM
mMsg_RESULT_NUM
};
#define mMsg_STATUS_FLAG_SOUND_CUT (1 << 0) // 0x000001
#define mMsg_STATUS_FLAG_SOUND_CUT (1 << 0) // 0x000001
#define mMsg_STATUS_FLAG_NO_SE_PAGE_OKURI (1 << 1) // 0x000002
#define mMsg_STATUS_FLAG_NO_ZOOMUP (1 << 2) // 0x000004
#define mMsg_STATUS_FLAG_LAST_DELAY (1 << 3) // 0x000008
#define mMsg_STATUS_FLAG_SPEC_VOICE (1 << 4) // 0x000010
#define mMsg_STATUS_FLAG_VOICE_ENTRY (1 << 5) // 0x000020
#define mMsg_STATUS_FLAG_IDLING_REQ (1 << 6) // 0x000040
#define mMsg_STATUS_FLAG_IDLING_NOW (1 << 7) // 0x000080
#define mMsg_STATUS_FLAG_FAST_TEXT (1 << 8) // 0x000100
#define mMsg_STATUS_FLAG_NOT_PAUSE_FRAME (1 << 9) // 0x000200
#define mMsg_STATUS_FLAG_UTTER (1 << 10) // 0x000400
#define mMsg_STATUS_FLAG_NO_ZOOMDOWN (1 << 11) /* When set, mMsg_sound_ZOOMDOWN_[SHORT, LONG]() sfx will not play */
#define mMsg_STATUS_FLAG_VOICE_CLICK (1 << 12) // 0x001000
#define mMsg_STATUS_FLAG_VOICE_SILENT (1 << 13) // 0x002000
#define mMsg_STATUS_FLAG_CURSOL_JUST (1 << 14) /* Sets cursor justification */
#define mMsg_STATUS_FLAG_CUT_ARTICLE (1 << 15) // 0x008000
#define mMsg_STATUS_FLAG_CAPITALIZE (1 << 16) // 0x010000
#define mMsg_STATUS_FLAG_USE_AM (1 << 17) /* 'AM' when set, 'PM' when not set */
#define mMsg_STATUS_FLAG_18 (1 << 18) // 0x040000
#define mMsg_STATUS_FLAG_NO_ZOOMUP (1 << 2) // 0x000004
#define mMsg_STATUS_FLAG_LAST_DELAY (1 << 3) // 0x000008
#define mMsg_STATUS_FLAG_SPEC_VOICE (1 << 4) // 0x000010
#define mMsg_STATUS_FLAG_VOICE_ENTRY (1 << 5) // 0x000020
#define mMsg_STATUS_FLAG_IDLING_REQ (1 << 6) // 0x000040
#define mMsg_STATUS_FLAG_IDLING_NOW (1 << 7) // 0x000080
#define mMsg_STATUS_FLAG_FAST_TEXT (1 << 8) // 0x000100
#define mMsg_STATUS_FLAG_NOT_PAUSE_FRAME (1 << 9) // 0x000200
#define mMsg_STATUS_FLAG_UTTER (1 << 10) // 0x000400
#define mMsg_STATUS_FLAG_NO_ZOOMDOWN (1 << 11) /* When set, mMsg_sound_ZOOMDOWN_[SHORT, LONG]() sfx will not play */
#define mMsg_STATUS_FLAG_VOICE_CLICK (1 << 12) // 0x001000
#define mMsg_STATUS_FLAG_VOICE_SILENT (1 << 13) // 0x002000
#define mMsg_STATUS_FLAG_CURSOL_JUST (1 << 14) /* Sets cursor justification */
#define mMsg_STATUS_FLAG_CUT_ARTICLE (1 << 15) // 0x008000
#define mMsg_STATUS_FLAG_CAPITALIZE (1 << 16) // 0x010000
#define mMsg_STATUS_FLAG_USE_AM (1 << 17) /* 'AM' when set, 'PM' when not set */
#define mMsg_STATUS_FLAG_18 (1 << 18) // 0x040000
typedef struct message_window_s mMsg_Window_c;
typedef struct message_data_s mMsg_Data_c;
@@ -108,160 +108,160 @@ typedef struct message_data_s mMsg_Data_c;
/* These are hinted at due to the 8-byte alignment forced onto these structs */
typedef struct {
int saved_main_index;
int saved_main_index;
} mMsg_MainAppearWait_Data_c;
typedef struct {
int saved_main_index;
int saved_main_index;
} mMsg_MainDisappearWait_Data_c;
typedef struct {
int last_main_index;
int last_main_index;
} mMsg_MainWait_Data_c;
typedef union {
mMsg_MainAppearWait_Data_c main_appear_wait;
mMsg_MainDisappearWait_Data_c main_disappear_wait;
mMsg_MainWait_Data_c main_wait;
u64 align;
mMsg_MainAppearWait_Data_c main_appear_wait;
mMsg_MainDisappearWait_Data_c main_disappear_wait;
mMsg_MainWait_Data_c main_wait;
u64 align;
} mMsg_Main_Data_c;
typedef struct {
ACTOR* speaker_actor;
int msg_no;
int name_shown_flag;
rgba_t window_color;
ACTOR* speaker_actor;
int msg_no;
int name_shown_flag;
rgba_t window_color;
} mMsg_Request_MainAppear_Data_c;
typedef struct {
int last_main_index;
u32 setup_flag;
int last_main_index;
u32 setup_flag;
} mMsg_Request_MainAppearWait_Data_c;
typedef struct {
int wait_flag;
int wait_flag;
} mMsg_Request_MainCursor_Data_c;
typedef struct {
int last_main_index;
int last_main_index;
} mMsg_Request_MainDisappearWait_Data_c;
typedef struct {
int wait_flag;
int wait_flag;
} mMsg_Request_MainNormal_Data_c;
typedef struct {
int last_main_index;
int last_main_index;
} mMsg_Request_MainWait_Data_c;
typedef union {
mMsg_Request_MainAppear_Data_c request_main_appear;
mMsg_Request_MainAppearWait_Data_c request_main_appear_wait;
mMsg_Request_MainCursor_Data_c request_main_cursor;
mMsg_Request_MainDisappearWait_Data_c request_main_disappear_wait;
mMsg_Request_MainNormal_Data_c request_main_normal;
mMsg_Request_MainWait_Data_c request_main_wait;
u64 align;
mMsg_Request_MainAppear_Data_c request_main_appear;
mMsg_Request_MainAppearWait_Data_c request_main_appear_wait;
mMsg_Request_MainCursor_Data_c request_main_cursor;
mMsg_Request_MainDisappearWait_Data_c request_main_disappear_wait;
mMsg_Request_MainNormal_Data_c request_main_normal;
mMsg_Request_MainWait_Data_c request_main_wait;
u64 align;
} mMsg_Request_Data_c;
typedef union {
u8 data[mMsg_MSG_BUF_SIZE] ATTRIBUTE_ALIGN(32);
u64 align;
u8 data[mMsg_MSG_BUF_SIZE] ATTRIBUTE_ALIGN(32);
u64 align;
} mMsg_MsgBuf_c;
struct message_data_s {
int data_loaded;
int msg_no;
int msg_len;
int cut;
int data_loaded;
int msg_no;
int msg_len;
int cut;
mMsg_MsgBuf_c text_buf;
mMsg_MsgBuf_c text_buf;
};
struct message_window_s {
/* 0x000 */ int data_loaded;
/* 0x004 */ int msg_no;
/* 0x008 */ int _008;
/* 0x00C */ mMsg_Data_c* msg_data;
/* 0x010 */ f32 center_x;
/* 0x014 */ f32 center_y;
/* 0x018 */ f32 width;
/* 0x01C */ f32 height;
/* 0x020 */ ACTOR* client_actor_p;
/* 0x024 */ int show_actor_name;
/* 0x028 */ int client_name_len;
/* 0x02C */ f32 nameplate_x;
/* 0x030 */ f32 nameplate_y;
/* 0x000 */ int data_loaded;
/* 0x004 */ int msg_no;
/* 0x008 */ int _008;
/* 0x00C */ mMsg_Data_c* msg_data;
/* 0x010 */ f32 center_x;
/* 0x014 */ f32 center_y;
/* 0x018 */ f32 width;
/* 0x01C */ f32 height;
/* 0x034 */ int show_continue_button;
/* 0x020 */ ACTOR* client_actor_p;
/* 0x024 */ int show_actor_name;
/* 0x028 */ int client_name_len;
/* 0x02C */ f32 nameplate_x;
/* 0x030 */ f32 nameplate_y;
/* 0x038 */ u8 free_str[mMsg_FREE_STR_NUM][mMsg_FREE_STRING_LEN];
/* 0x178 */ int free_str_article[mMsg_FREE_STR_NUM];
/* 0x034 */ int show_continue_button;
/* 0x1C8 */ u8 item_str[mMsg_ITEM_STR_NUM][mIN_ITEM_NAME_LEN];
/* 0x218 */ int item_str_article[mMsg_ITEM_STR_NUM];
/* 0x038 */ u8 free_str[mMsg_FREE_STR_NUM][mMsg_FREE_STRING_LEN];
/* 0x178 */ int free_str_article[mMsg_FREE_STR_NUM];
/* 0x22C */ u8 mail_str[mMsg_MAIL_STR_NUM][mMsg_MAIL_STRING_LEN];
/* 0x1C8 */ u8 item_str[mMsg_ITEM_STR_NUM][mIN_ITEM_NAME_LEN];
/* 0x218 */ int item_str_article[mMsg_ITEM_STR_NUM];
/* 0x2B0 */ rgba_t name_text_color;
/* 0x2B4 */ rgba_t name_background_color;
/* 0x22C */ u8 mail_str[mMsg_MAIL_STR_NUM][mMsg_MAIL_STRING_LEN];
/* 0x2B8 */ rgba_t window_background_color;
/* 0x2BC */ rgba_t font_color[mMsg_MAX_LINE];
/* 0x2B0 */ rgba_t name_text_color;
/* 0x2B4 */ rgba_t name_background_color;
/* 0x2CC */ rgba_t continue_button_color;
/* 0x2B8 */ rgba_t window_background_color;
/* 0x2BC */ rgba_t font_color[mMsg_MAX_LINE];
/* 0x2D0 */ f32 font_scale_x;
/* 0x2D4 */ f32 font_scale_y;
/* 0x2CC */ rgba_t continue_button_color;
/* 0x2D8 */ int _2D8;
/* 0x2DC */ int _2DC;
/* 0x2D0 */ f32 font_scale_x;
/* 0x2D4 */ f32 font_scale_y;
/* 0x2E0 */ int text_lines;
/* 0x2E4 */ int now_display_line;
/* 0x2D8 */ int _2D8;
/* 0x2DC */ int _2DC;
/* 0x2E8 */ mChoice_c choice_window;
/* 0x2E0 */ int text_lines;
/* 0x2E4 */ int now_display_line;
/* 0x3E8 */ int _3E8;
/* 0x2E8 */ mChoice_c choice_window;
/* 0x3EC */ u16 end_timer;
/* 0x3EE */ s16 animal_voice_idx;
/* 0x3F0 */ int voice_sfx_idx;
/* 0x3F4 */ u8 voice_idx;
/* 0x3F5 */ u8 voice2_idx;
/* 0x3F6 */ u8 voice3_idx;
/* 0x3F7 */ s8 hide_choice_window_timer;
/* 0x3F8 */ u8 force_voice_enable_flag;
/* 0x3FC */ int spec;
/* 0x400 */ u8 free_str_color_idx[4];
/* 0x408 */ u8 _404[8]; // unused?
/* 0x40C */ u32 status_flags;
/* 0x3E8 */ int _3E8;
/* 0x410 */ f32 timer;
/* 0x414 */ f32 cursor_timer;
/* 0x418 */ f32 continue_button_timer;
/* 0x3EC */ u16 end_timer;
/* 0x3EE */ s16 animal_voice_idx;
/* 0x3F0 */ int voice_sfx_idx;
/* 0x3F4 */ u8 voice_idx;
/* 0x3F5 */ u8 voice2_idx;
/* 0x3F6 */ u8 voice3_idx;
/* 0x3F7 */ s8 hide_choice_window_timer;
/* 0x3F8 */ u8 force_voice_enable_flag;
/* 0x3FC */ int spec;
/* 0x400 */ u8 free_str_color_idx[4];
/* 0x408 */ u8 _404[8]; // unused?
/* 0x40C */ u32 status_flags;
/* 0x41C */ int start_text_cursor_idx;
/* 0x420 */ int end_text_cursor_idx;
/* 0x424 */ f32 window_scale;
/* 0x428 */ f32 text_scale;
/* 0x410 */ f32 timer;
/* 0x414 */ f32 cursor_timer;
/* 0x418 */ f32 continue_button_timer;
/* 0x42C */ int requested_main_index;
/* 0x430 */ int requested_priority;
/* 0x41C */ int start_text_cursor_idx;
/* 0x420 */ int end_text_cursor_idx;
/* 0x424 */ f32 window_scale;
/* 0x428 */ f32 text_scale;
/* 0x434 */ int main_index;
/* 0x438 */ int draw_flag;
/* 0x43C */ int cancel_flag;
/* 0x440 */ int cancelable_flag;
/* 0x444 */ int continue_msg_no;
/* 0x448 */ int continue_cancel_flag;
/* 0x44C */ int force_next;
/* 0x450 */ int lock_continue;
/* 0x454 */ u8 now_utter;
/* 0x42C */ int requested_main_index;
/* 0x430 */ int requested_priority;
/* 0x458 */ mMsg_Main_Data_c main_data;
/* 0x460 */ mMsg_Request_Data_c request_data;
/* 0x434 */ int main_index;
/* 0x438 */ int draw_flag;
/* 0x43C */ int cancel_flag;
/* 0x440 */ int cancelable_flag;
/* 0x444 */ int continue_msg_no;
/* 0x448 */ int continue_cancel_flag;
/* 0x44C */ int force_next;
/* 0x450 */ int lock_continue;
/* 0x454 */ u8 now_utter;
/* 0x458 */ mMsg_Main_Data_c main_data;
/* 0x460 */ mMsg_Request_Data_c request_data;
};
extern void mMsg_aram_init();
@@ -279,7 +279,8 @@ extern int mMsg_Check_not_series_main_wait(mMsg_Window_c* msg_p);
extern int mMsg_Check_main_hide(mMsg_Window_c* msg_p);
extern int mMsg_request_main_forceoff();
extern int mMsg_request_main_disappear(mMsg_Window_c* msg_p);
extern int mMsg_request_main_appear(mMsg_Window_c* msg_p, ACTOR* client_actor_p, int show_name, rgba_t* window_color, int msg_no, int request_priority);
extern int mMsg_request_main_appear(mMsg_Window_c* msg_p, ACTOR* client_actor_p, int show_name, rgba_t* window_color,
int msg_no, int request_priority);
extern int mMsg_request_main_disappear_wait_type1(mMsg_Window_c* msg_p);
extern int mMsg_request_main_disappear_wait_type2(mMsg_Window_c* msg_p);
extern int mMsg_request_main_appear_wait_type2(mMsg_Window_c* msg_p, int clear_flag);
@@ -323,13 +324,15 @@ extern int mMsg_CopyDay(u8* data, int start_idx, int len);
extern int mMsg_CopyHour(u8* data, int start_idx, int len);
extern int mMsg_CopyMin(u8* data, int start_idx, int len);
extern int mMsg_CopySec(u8* data, int start_idx, int len);
extern int mMsg_CopyFree(mMsg_Window_c* msg_p, int str_no, u8* data, int start_idx, int len, int article, u32 capitalize);
extern int mMsg_CopyFree(mMsg_Window_c* msg_p, int str_no, u8* data, int start_idx, int len, int article,
u32 capitalize);
extern int mMsg_CopyDetermination(mMsg_Window_c* msg_p, u8* data, int start_idx, int len);
extern int mMsg_CopyCountryName(u8 *data, int start_idx, int len, u32 capitalize);
extern int mMsg_CopyCountryName(u8* data, int start_idx, int len, u32 capitalize);
extern int mMsg_CopyIslandName(u8* data, int start_idx, int len, u32 capitalize);
extern int mMsg_CopyAmPm(mMsg_Window_c* msg_p, u8* data, int start_idx, int len);
extern int mMsg_CopyRamdomNumber2(u8* data, int start_idx, int len);
extern int mMsg_CopyItem(mMsg_Window_c* msg_p, int str_no, u8* data, int start_idx, int len, int article, u32 capitalize);
extern int mMsg_CopyItem(mMsg_Window_c* msg_p, int str_no, u8* data, int start_idx, int len, int article,
u32 capitalize);
extern int mMsg_CopyMail(mMsg_Window_c* msg_p, int str_no, u8* data, int start_idx, int len, u32 capitalize);
extern int mMsg_sound_voice_get(int code);
extern int mMsg_sound_voice_get_for_editor(int code);
@@ -339,6 +342,29 @@ extern void mMsg_sound_set_voice_click(mMsg_Window_c* msg_p);
extern void mMsg_sound_set_voice_silent(mMsg_Window_c* msg_p, int update_mode);
extern void mMsg_sound_unset_voice_silent(mMsg_Window_c* msg_p, int update_mode);
/* Macros */
#define mMsg_SET_CONTINUE_MSG_NUM(msg_no) mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), (msg_no))
#define mMsg_SET_LOCKCONTINUE() mMsg_Set_LockContinue(mMsg_Get_base_window_p())
#define mMsg_UNSET_LOCKCONTINUE() mMsg_Unset_LockContinue(mMsg_Get_base_window_p())
#define mMsg_SET_FORCENEXT() mMsg_Set_ForceNext(mMsg_Get_base_window_p())
#define mMsg_SET_CANCELNORMALCONTINUE() mMsg_Set_CancelNormalContinue(mMsg_Get_base_window_p())
#define mMsg_SET_ITEM_STR_ART(str_no, str, str_len, item_no) \
mMsg_Set_item_str_art(mMsg_Get_base_window_p(), str_no, str, str_len, mIN_get_item_article(item_no))
#define mMsg_SET_FREE_STR(str_no, str, str_len) mMsg_Set_free_str(mMsg_Get_base_window_p(), str_no, str, str_len)
#define mMsg_SET_FREE_STR_CL(str_no, str, str_len, cl) \
mMsg_Set_free_str_cl(mMsg_Get_base_window_p(), str_no, str, str_len, cl)
#define mMsg_SET_FREE_STR_CL_ART(str_no, str, str_len, cl, item_no) \
mMsg_Set_free_str_cl_art(mMsg_Get_base_window_p(), str_no, str, str_len, cl, mIN_get_item_article(item_no))
#define mMsg_GET_MSG_NUM() mMsg_Get_msg_num(mMsg_Get_base_window_p())
#define mMsg_CHECK_MAINNORMALCONTINUE() mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p())
#define mMsg_CHECK_MAINDISAPPEAR() mMsg_Check_MainDisappear(mMsg_Get_base_window_p())
#define mMsg_CHECK_MAINHIDE() mMsg_Check_MainHide(mMsg_Get_base_window_p())
#define mMsg_REQUEST_MAIN_DISAPPEAR() mMsg_request_main_disappear(mMsg_Get_base_window_p())
#ifdef __cplusplus
}
#endif
+2 -1
View File
@@ -1100,7 +1100,7 @@ extern int mNT_check_unknown(mActor_name_t item_no);
#define FTR_CLOTH_MANNIQUIN254_WEST 0x1BA7
#define FTR_CLOTH_END FTR_CLOTH_MANNIQUIN254_WEST
#define FTR_CLOTH_MANNIQUIN_MY_ORIGINAL0 0x1BA8
#define FTR_CLOTH_MYMANNIQUIN_END 0x1BC7
#define FTR_INSECT_START 0x1BC8
#define FTR_INSECT00 FTR_INSECT_START
@@ -2253,6 +2253,7 @@ extern int mNT_check_unknown(mActor_name_t item_no);
#define ETC_START 0x8000
#define ETC_AIRPLANE ETC_START
#define ETC_BALL (ETC_START + 1)
#define ETC_MY_ROOM (ETC_START + 2)
#define ETC_MBG (ETC_START + 3)
#define ETC_BOXTRICK (ETC_START + 4)
#define ETC_BOXMANAGER (ETC_START + 5)
+287 -269
View File
@@ -5,6 +5,7 @@
#include "m_actor.h"
#include "m_lib.h"
#include "c_keyframe.h"
#include "libultra/ultratypes.h"
#ifdef __cplusplus
extern "C" {
@@ -22,314 +23,331 @@ typedef struct player_actor_s PLAYER_ACTOR;
#define mPlayer_FORCE_POSITION_ANGLE_ROTZ (1 << 6)
enum {
mPlayer_ADDRESSABLE_TRUE,
mPlayer_ADDRESSABLE_FALSE_MOVEMENT,
mPlayer_ADDRESSABLE_FALSE_TALKING,
mPlayer_ADDRESSABLE_FALSE_USING_TOOL,
mPlayer_ADDRESSABLE_TRUE,
mPlayer_ADDRESSABLE_FALSE_MOVEMENT,
mPlayer_ADDRESSABLE_FALSE_TALKING,
mPlayer_ADDRESSABLE_FALSE_USING_TOOL,
mPlayer_ADDRESSABLE_NUM
mPlayer_ADDRESSABLE_NUM
};
enum {
mPlayer_INDEX_DMA,
mPlayer_INDEX_INTRO,
mPlayer_INDEX_REFUSE,
mPlayer_INDEX_REFUSE_PICKUP,
mPlayer_INDEX_RETURN_DEMO,
mPlayer_INDEX_RETURN_OUTDOOR,
mPlayer_INDEX_RETURN_OUTDOOR2,
mPlayer_INDEX_WAIT,
mPlayer_INDEX_WALK,
mPlayer_INDEX_RUN,
mPlayer_INDEX_DASH,
mPlayer_INDEX_TUMBLE,
mPlayer_INDEX_TUMBLE_GETUP,
mPlayer_INDEX_TURN_DASH,
mPlayer_INDEX_FALL,
mPlayer_INDEX_WADE,
mPlayer_INDEX_DOOR,
mPlayer_INDEX_OUTDOOR,
mPlayer_INDEX_INVADE,
mPlayer_INDEX_HOLD,
mPlayer_INDEX_PUSH,
mPlayer_INDEX_PULL,
mPlayer_INDEX_ROTATE_FURNITURE,
mPlayer_INDEX_OPEN_FURNITURE,
mPlayer_INDEX_WAIT_OPEN_FURNITURE,
mPlayer_INDEX_CLOSE_FURNITURE,
mPlayer_INDEX_LIE_BED,
mPlayer_INDEX_WAIT_BED,
mPlayer_INDEX_ROLL_BED,
mPlayer_INDEX_STANDUP_BED,
mPlayer_INDEX_PICKUP,
mPlayer_INDEX_PICKUP_JUMP,
mPlayer_INDEX_PICKUP_FURNITURE,
mPlayer_INDEX_PICKUP_EXCHANGE,
mPlayer_INDEX_SITDOWN,
mPlayer_INDEX_SITDOWN_WAIT,
mPlayer_INDEX_STANDUP,
mPlayer_INDEX_SWING_AXE,
mPlayer_INDEX_AIR_AXE,
mPlayer_INDEX_REFLECT_AXE,
mPlayer_INDEX_BROKEN_AXE,
mPlayer_INDEX_SLIP_NET,
mPlayer_INDEX_READY_NET,
mPlayer_INDEX_READY_WALK_NET,
mPlayer_INDEX_SWING_NET,
mPlayer_INDEX_PULL_NET,
mPlayer_INDEX_STOP_NET,
mPlayer_INDEX_NOTICE_NET,
mPlayer_INDEX_PUTAWAY_NET,
mPlayer_INDEX_READY_ROD,
mPlayer_INDEX_CAST_ROD,
mPlayer_INDEX_AIR_ROD,
mPlayer_INDEX_RELAX_ROD,
mPlayer_INDEX_COLLECT_ROD,
mPlayer_INDEX_VIB_ROD,
mPlayer_INDEX_FLY_ROD,
mPlayer_INDEX_NOTICE_ROD,
mPlayer_INDEX_PUTAWAY_ROD,
mPlayer_INDEX_DIG_SCOOP,
mPlayer_INDEX_FILL_SCOOP,
mPlayer_INDEX_REFLECT_SCOOP,
mPlayer_INDEX_AIR_SCOOP,
mPlayer_INDEX_GET_SCOOP,
mPlayer_INDEX_PUTAWAY_SCOOP,
mPlayer_INDEX_PUTIN_SCOOP,
mPlayer_INDEX_TALK,
mPlayer_INDEX_RECIEVE_WAIT,
mPlayer_INDEX_RECIEVE_STRETCH,
mPlayer_INDEX_RECIEVE,
mPlayer_INDEX_RECIEVE_PUTAWAY,
mPlayer_INDEX_GIVE,
mPlayer_INDEX_GIVE_WAIT,
mPlayer_INDEX_TAKEOUT_ITEM,
mPlayer_INDEX_PUTIN_ITEM,
mPlayer_INDEX_DEMO_WAIT,
mPlayer_INDEX_DEMO_WALK,
mPlayer_INDEX_DEMO_GETON_TRAIN,
mPlayer_INDEX_DEMO_GETON_TRAIN_WAIT,
mPlayer_INDEX_DEMO_GETOFF_TRAIN,
mPlayer_INDEX_DEMO_STANDING_TRAIN,
mPlayer_INDEX_DEMO_WADE,
mPlayer_INDEX_HIDE,
mPlayer_INDEX_GROUNDHOG,
mPlayer_INDEX_RELEASE_CREATURE,
mPlayer_INDEX_WASH_CAR,
mPlayer_INDEX_TIRED,
mPlayer_INDEX_ROTATE_OCTAGON,
mPlayer_INDEX_THROW_MONEY,
mPlayer_INDEX_PRAY,
mPlayer_INDEX_SHAKE_TREE,
mPlayer_INDEX_MAIL_JUMP,
mPlayer_INDEX_MAIL_LAND,
mPlayer_INDEX_READY_PITFALL,
mPlayer_INDEX_FALL_PITFALL,
mPlayer_INDEX_STRUGGLE_PITFALL,
mPlayer_INDEX_CLIMBUP_PITFALL,
mPlayer_INDEX_STUNG_BEE,
mPlayer_INDEX_NOTICE_BEE,
mPlayer_INDEX_REMOVE_GRASS,
mPlayer_INDEX_SHOCK,
mPlayer_INDEX_KNOCK_DOOR,
mPlayer_INDEX_CHANGE_CLOTH,
mPlayer_INDEX_PUSH_SNOWBALL,
mPlayer_INDEX_ROTATE_UMBRELLA,
mPlayer_INDEX_WADE_SNOWBALL,
mPlayer_INDEX_COMPLETE_PAYMENT,
mPlayer_INDEX_FAIL_EMU,
mPlayer_INDEX_STUNG_MOSQUITO,
mPlayer_INDEX_NOTICE_MOSQUITO,
mPlayer_INDEX_SWING_FAN,
mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE,
mPlayer_INDEX_RADIO_EXERCISE,
mPlayer_INDEX_DEMO_GETON_BOAT,
mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN,
mPlayer_INDEX_DEMO_GETON_BOAT_WAIT,
mPlayer_INDEX_DEMO_GETON_BOAT_WADE,
mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP,
mPlayer_INDEX_DEMO_GETOFF_BOAT,
mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM,
mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM2,
mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT
mPlayer_INDEX_DMA,
mPlayer_INDEX_INTRO,
mPlayer_INDEX_REFUSE,
mPlayer_INDEX_REFUSE_PICKUP,
mPlayer_INDEX_RETURN_DEMO,
mPlayer_INDEX_RETURN_OUTDOOR,
mPlayer_INDEX_RETURN_OUTDOOR2,
mPlayer_INDEX_WAIT,
mPlayer_INDEX_WALK,
mPlayer_INDEX_RUN,
mPlayer_INDEX_DASH,
mPlayer_INDEX_TUMBLE,
mPlayer_INDEX_TUMBLE_GETUP,
mPlayer_INDEX_TURN_DASH,
mPlayer_INDEX_FALL,
mPlayer_INDEX_WADE,
mPlayer_INDEX_DOOR,
mPlayer_INDEX_OUTDOOR,
mPlayer_INDEX_INVADE,
mPlayer_INDEX_HOLD,
mPlayer_INDEX_PUSH,
mPlayer_INDEX_PULL,
mPlayer_INDEX_ROTATE_FURNITURE,
mPlayer_INDEX_OPEN_FURNITURE,
mPlayer_INDEX_WAIT_OPEN_FURNITURE,
mPlayer_INDEX_CLOSE_FURNITURE,
mPlayer_INDEX_LIE_BED,
mPlayer_INDEX_WAIT_BED,
mPlayer_INDEX_ROLL_BED,
mPlayer_INDEX_STANDUP_BED,
mPlayer_INDEX_PICKUP,
mPlayer_INDEX_PICKUP_JUMP,
mPlayer_INDEX_PICKUP_FURNITURE,
mPlayer_INDEX_PICKUP_EXCHANGE,
mPlayer_INDEX_SITDOWN,
mPlayer_INDEX_SITDOWN_WAIT,
mPlayer_INDEX_STANDUP,
mPlayer_INDEX_SWING_AXE,
mPlayer_INDEX_AIR_AXE,
mPlayer_INDEX_REFLECT_AXE,
mPlayer_INDEX_BROKEN_AXE,
mPlayer_INDEX_SLIP_NET,
mPlayer_INDEX_READY_NET,
mPlayer_INDEX_READY_WALK_NET,
mPlayer_INDEX_SWING_NET,
mPlayer_INDEX_PULL_NET,
mPlayer_INDEX_STOP_NET,
mPlayer_INDEX_NOTICE_NET,
mPlayer_INDEX_PUTAWAY_NET,
mPlayer_INDEX_READY_ROD,
mPlayer_INDEX_CAST_ROD,
mPlayer_INDEX_AIR_ROD,
mPlayer_INDEX_RELAX_ROD,
mPlayer_INDEX_COLLECT_ROD,
mPlayer_INDEX_VIB_ROD,
mPlayer_INDEX_FLY_ROD,
mPlayer_INDEX_NOTICE_ROD,
mPlayer_INDEX_PUTAWAY_ROD,
mPlayer_INDEX_DIG_SCOOP,
mPlayer_INDEX_FILL_SCOOP,
mPlayer_INDEX_REFLECT_SCOOP,
mPlayer_INDEX_AIR_SCOOP,
mPlayer_INDEX_GET_SCOOP,
mPlayer_INDEX_PUTAWAY_SCOOP,
mPlayer_INDEX_PUTIN_SCOOP,
mPlayer_INDEX_TALK,
mPlayer_INDEX_RECIEVE_WAIT,
mPlayer_INDEX_RECIEVE_STRETCH,
mPlayer_INDEX_RECIEVE,
mPlayer_INDEX_RECIEVE_PUTAWAY,
mPlayer_INDEX_GIVE,
mPlayer_INDEX_GIVE_WAIT,
mPlayer_INDEX_TAKEOUT_ITEM,
mPlayer_INDEX_PUTIN_ITEM,
mPlayer_INDEX_DEMO_WAIT,
mPlayer_INDEX_DEMO_WALK,
mPlayer_INDEX_DEMO_GETON_TRAIN,
mPlayer_INDEX_DEMO_GETON_TRAIN_WAIT,
mPlayer_INDEX_DEMO_GETOFF_TRAIN,
mPlayer_INDEX_DEMO_STANDING_TRAIN,
mPlayer_INDEX_DEMO_WADE,
mPlayer_INDEX_HIDE,
mPlayer_INDEX_GROUNDHOG,
mPlayer_INDEX_RELEASE_CREATURE,
mPlayer_INDEX_WASH_CAR,
mPlayer_INDEX_TIRED,
mPlayer_INDEX_ROTATE_OCTAGON,
mPlayer_INDEX_THROW_MONEY,
mPlayer_INDEX_PRAY,
mPlayer_INDEX_SHAKE_TREE,
mPlayer_INDEX_MAIL_JUMP,
mPlayer_INDEX_MAIL_LAND,
mPlayer_INDEX_READY_PITFALL,
mPlayer_INDEX_FALL_PITFALL,
mPlayer_INDEX_STRUGGLE_PITFALL,
mPlayer_INDEX_CLIMBUP_PITFALL,
mPlayer_INDEX_STUNG_BEE,
mPlayer_INDEX_NOTICE_BEE,
mPlayer_INDEX_REMOVE_GRASS,
mPlayer_INDEX_SHOCK,
mPlayer_INDEX_KNOCK_DOOR,
mPlayer_INDEX_CHANGE_CLOTH,
mPlayer_INDEX_PUSH_SNOWBALL,
mPlayer_INDEX_ROTATE_UMBRELLA,
mPlayer_INDEX_WADE_SNOWBALL,
mPlayer_INDEX_COMPLETE_PAYMENT,
mPlayer_INDEX_FAIL_EMU,
mPlayer_INDEX_STUNG_MOSQUITO,
mPlayer_INDEX_NOTICE_MOSQUITO,
mPlayer_INDEX_SWING_FAN,
mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE,
mPlayer_INDEX_RADIO_EXERCISE,
mPlayer_INDEX_DEMO_GETON_BOAT,
mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN,
mPlayer_INDEX_DEMO_GETON_BOAT_WAIT,
mPlayer_INDEX_DEMO_GETON_BOAT_WADE,
mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP,
mPlayer_INDEX_DEMO_GETOFF_BOAT,
mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM,
mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM2,
mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT
};
enum {
mPlayer_CREATURE_INSECT,
mPlayer_CREATURE_GYOEI,
mPlayer_CREATURE_BALLOON,
mPlayer_CREATURE_INSECT,
mPlayer_CREATURE_GYOEI,
mPlayer_CREATURE_BALLOON,
mPlayer_CREATURE_NUM
mPlayer_CREATURE_NUM
};
enum {
mPlayer_BED_ACTION_NONE,
mPlayer_BED_ACTION_ROLL,
mPlayer_BED_ACTION_OUT,
mPlayer_BED_ACTION_NUM
};
typedef struct player_request_give_from_submenu_s {
xyz_t unused; // assumed based on size
mActor_name_t item;
int mode_after; // player mode after the action finishes
int present_flag; // set if the item is wrapped as presnet
int counter_flag; // set when the item slides across a counter
xyz_t unused; // assumed based on size
mActor_name_t item;
int mode_after; // player mode after the action finishes
int present_flag; // set if the item is wrapped as presnet
int counter_flag; // set when the item slides across a counter
} mPlayer_request_give_from_submenu_c;
typedef struct player_request_putin_scoop_from_submenu_s {
xyz_t wpos;
mActor_name_t item;
int got_gold_scoop;
xyz_t wpos;
mActor_name_t item;
int got_gold_scoop;
} mPlayer_request_putin_scoop_from_submenu_data_c;
typedef struct {
int type;
int got_gold_scoop;
s16 angle_y;
s16 item;
int type;
int got_gold_scoop;
s16 angle_y;
s16 item;
} mPlayer_request_release_creature_gyoei_from_submenu_c;
typedef struct {
int type;
int got_gold_scoop;
xyz_t wpos;
int insect_type;
int type;
int got_gold_scoop;
xyz_t wpos;
int insect_type;
} mPlayer_request_release_creature_insect_from_submenu_c;
typedef struct {
int type;
int got_gold_scoop;
int balloon_shape_type;
int type;
int got_gold_scoop;
int balloon_shape_type;
} mPlayer_request_release_creature_balloon_from_submenu_c;
typedef struct {
int _0;
ACTOR* speak_actor;
int _0;
ACTOR* speak_actor;
} mPlayer_request_demo_wait_from_submenu_c;
typedef struct {
int direct;
s16 angle;
xyz_t wpos;
int ftr_name;
int direct;
s16 angle;
xyz_t wpos;
int ftr_name;
} mPlayer_request_lie_bed_c;
typedef union {
mPlayer_request_give_from_submenu_c give_from_submenu;
mPlayer_request_putin_scoop_from_submenu_data_c putin_scoop_from_submenu;
mPlayer_request_release_creature_gyoei_from_submenu_c release_creature_gyoei_from_submenu;
mPlayer_request_release_creature_insect_from_submenu_c release_creature_insect_from_submenu;
mPlayer_request_release_creature_balloon_from_submenu_c release_creature_balloon_from_submenu;
mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu;
mPlayer_request_lie_bed_c lie_bed;
/* TODO: others */
u8 force_size[72]; // TEMP
mPlayer_request_give_from_submenu_c give_from_submenu;
mPlayer_request_putin_scoop_from_submenu_data_c putin_scoop_from_submenu;
mPlayer_request_release_creature_gyoei_from_submenu_c release_creature_gyoei_from_submenu;
mPlayer_request_release_creature_insect_from_submenu_c release_creature_insect_from_submenu;
mPlayer_request_release_creature_balloon_from_submenu_c release_creature_balloon_from_submenu;
mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu;
mPlayer_request_lie_bed_c lie_bed;
/* TODO: others */
u8 force_size[72]; // TEMP
} mPlayer_request_main_data;
typedef struct {
int requested_main_index;
int requested_index_pending;
mPlayer_request_main_data request_main_data;
int requested_main_index;
int requested_index_pending;
mPlayer_request_main_data request_main_data;
} mPlayer_change_data_from_submenu_c;
/* sizeof(struct player_actor_s) == 0x13A8 */
struct player_actor_s {
/* 0x0000 */ ACTOR actor_class;
/* 0x0174 */ cKF_SkeletonInfo_R_c keyframe0;
/* 0x01E4 */ cKF_SkeletonInfo_R_c keyframe1;
/* 0x0252 */ s_xyz joint_data[27];
/* 0x02F4 */ s_xyz morph_data[27];
/* 0x0398 */ Mtx work_mtx[2][13]; /* swapped between frames */
/* 0x0A18 */ cKF_SkeletonInfo_R_c item_keyframe; /* for item animations */
/* 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;
/* 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;
/* 0x0D08 */ int requested_main_index;
/* 0x0D0C */ int requested_main_index_priority;
/* 0x0D10 */ int requested_main_index_changed;
/* 0x0D14 */ int settled_requested_main_index_priority;
/* 0x0D18 */ u8 main_index_data[72]; // TODO: Union of many types...
/* 0x0D60 */ u8 requested_main_index_data[72]; // TODO: Union of many types...
/* 0x0DA8 */ u8 _0DA8[0x1270 - 0x0DA8]; /* TODO: finish */
/* 0x1270 */ int (*request_main_invade_all_proc)(GAME*, int);
/* 0x1274 */ int (*request_main_refuse_all_proc)(GAME*, int);
/* 0x1278 */ int (*request_main_return_demo_all_proc)(GAME*, int, f32, int);
/* 0x127C */ int (*request_main_wait_all_proc)(GAME*, f32, int, int);
/* 0x1280 */ int (*request_main_talk_all_proc)(GAME*, ACTOR*, int, f32, int, int);
/* 0x1284 */ int (*request_main_hold_all_proc)(GAME*, int, int, const xyz_t*, f32, int, int);
/* 0x1288 */ int (*request_main_recieve_wait_all_proc)(GAME*, ACTOR*, int, int, mActor_name_t, int, int);
/* 0x128C */ int (*request_main_give_all_proc)(GAME*, ACTOR*, int, int, mActor_name_t, int, int, int, int);
/* 0x1290 */ int (*request_main_sitdown_all_proc)(GAME*, int, const xyz_t*, int, int);
/* 0x1294 */ int (*request_main_close_furniture_all_proc)(GAME*, int);
/* 0x1298 */ int (*request_main_lie_bed_all_proc)(GAME*, int, const xyz_t*, int, int, int);
/* 0x129C */ int (*request_main_hide_all_proc)(GAME*, int);
/* 0x12A0 */ int (*request_main_groundhog_proc)(GAME*, int);
/* 0x12A4 */ int (*request_main_door_all_proc)(GAME*, const xyz_t*, s16, int, void*, int);
/* 0x12A8 */ int (*request_main_outdoor_all_proc)(GAME*, int, int, int);
/* 0x12AC */ int (*request_main_wash_car_all_proc)(GAME*, const xyz_t*, const xyz_t*, s16, ACTOR*, int);
/* 0x12B0 */ int (*request_main_rotate_octagon_all_proc)(GAME*, ACTOR*, int, int, const xyz_t*, s16, int);
/* 0x12B4 */ int (*request_main_throw_money_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12B8 */ int (*request_main_pray_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12BC */ int (*request_main_mail_jump_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12C0 */ int (*request_main_demo_wait_all_proc)(GAME*, int, void*, int);
/* 0x12C4 */ int (*request_main_demo_walk_all_proc)(GAME*, f32, f32, f32, int, int);
/* 0x12C8 */ int (*request_main_demo_geton_train_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12CC */ int (*request_main_demo_getoff_train_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12D0 */ int (*request_main_demo_standing_train_all_proc)(GAME*, int);
/* 0x12D4 */ int (*request_main_stung_bee_all_proc)(GAME*, int);
/* 0x12D8 */ int (*request_main_shock_all_proc)(GAME*, f32, s16, s8, int, int);
/* 0x12DC */ int (*request_main_change_cloth_forNPC_proc)(GAME*, mActor_name_t, int);
/* 0x12E0 */ int (*request_main_push_snowball_all_proc)(GAME*, void*, int, int);
/* 0x12E4 */ int (*request_main_stung_mosquito_all_proc)(GAME*, int, int);
/* 0x12E8 */ int (*request_main_switch_on_lighthouse_all_proc)(GAME*, const xyz_t*, int, int);
/* 0x12EC */ int (*request_main_demo_geton_boat_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12F0 */ int (*request_main_demo_getoff_boat_standup_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12F4 */ int (*request_main_demo_get_golden_item2_all_proc)(GAME*, int, int);
/* 0x12F8 */ int (*request_main_demo_get_golden_axe_wait_all_proc)(GAME*, int);
/* 0x12FC */ int (*check_request_main_priority_proc)(GAME*, int);
/* 0x1300 */ void* (*get_door_label_proc)(GAME*);
/* 0x1304 */ int (*Set_Item_net_catch_request_table_proc)(ACTOR*, GAME*, u32, s8, const xyz_t*, f32);
/* 0x1308 */ f32 (*Get_Item_net_catch_swing_timer_proc)(ACTOR*, GAME*);
/* 0x130C */ u8 (*Set_Item_net_catch_request_force_proc)(ACTOR*, GAME*, u32, s8);
/* 0x1310 */ void (*Set_force_position_angle_proc)(GAME*, const xyz_t*, const s_xyz*, u8);
/* 0x1314 */ u8 (*Get_force_position_angle_proc)(GAME*, xyz_t*, s_xyz*);
/* 0x1318 */ int (*Get_WadeEndPos_proc)(GAME*, xyz_t*);
/* 0x131C */ int (*Check_Label_main_push_snowball_proc)(GAME*, void*);
/* 0x1320 */ int (*SetParam_for_push_snowball_proc)(GAME*, const xyz_t*, s16, f32);
/* 0x1324 */ int (*able_submenu_request_main_index_proc)(GAME*);
/* 0x1328 */ int (*check_able_change_camera_normal_index_proc)(ACTOR*);
/* 0x132C */ int (*Check_able_force_speak_label_proc)(GAME*, ACTOR*);
/* 0x1330 */ int (*check_cancel_request_change_proc_index_proc)(int);
/* 0x1334 */ u32 (*Get_item_net_catch_label_proc)(ACTOR*);
/* 0x1338 */ int (*Change_item_net_catch_label_proc)(ACTOR*, u32, s8);
/* 0x133C */ int (*Check_StopNet_proc)(ACTOR*, xyz_t*);
/* 0x1340 */ int (*Check_HitAxe_proc)(ACTOR*, xyz_t*);
/* 0x1344 */ int (*Check_VibUnit_OneFrame_proc)(ACTOR*, const xyz_t*);
/* 0x1348 */ int (*Check_HitScoop_proc)(ACTOR*, xyz_t*);
/* 0x134C */ int (*Check_DigScoop_proc)(ACTOR*, xyz_t*);
/* 0x1350 */ int (*check_request_change_item_proc)(GAME*);
/* 0x1354 */ int (*Check_RotateOctagon_proc)(GAME*);
/* 0x1358 */ int (*Check_end_stung_bee_proc)(ACTOR*);
/* 0x135C */ int (*Get_status_for_bee_proc)(ACTOR*);
/* 0x1360 */ int (*Set_ScrollDemo_forWade_snowball_proc)(ACTOR*, int, const xyz_t*);
/* 0x1364 */ int (*Check_tree_shaken_proc)(ACTOR*, const xyz_t*);
/* 0x1368 */ int (*Check_tree_shaken_little_proc)(ACTOR*, const xyz_t*);
/* 0x136C */ int (*Check_tree_shaken_big_proc)(ACTOR*, const xyz_t*);
/* 0x1370 */ int (*Check_Label_main_wade_snowball_proc)(GAME*, void*);
/* 0x1374 */ int (*GetSnowballPos_forWadeSnowball_proc)(ACTOR*, xyz_t*);
/* 0x1378 */ int (*CheckCondition_forWadeSnowball_proc)(GAME*, const xyz_t*, s16);
/* 0x137C */ mActor_name_t (*Get_itemNo_forWindow_proc)(ACTOR*);
/* 0x1380 */ int (*check_cancel_event_without_priority_proc)(GAME*);
/* 0x1384 */ int (*CheckScene_AbleSubmenu_proc)();
/* 0x1388 */ int (*Check_stung_mosquito_proc)(GAME*, ACTOR*);
/* 0x138C */ int a_btn_pressed;
/* 0x1390 */ int a_btn_triggers_submenu;
/* 0x1394 */ mActor_name_t item_in_front; /* item directly in front of the player */
/* 0x1398 */ xyz_t foward_ut_pos; /* wpos of unit in front of player */
/* 0x13A4 */ s8 update_scene_bg_mode;
/* 0x0000 */ ACTOR actor_class;
/* 0x0174 */ cKF_SkeletonInfo_R_c keyframe0;
/* 0x01E4 */ cKF_SkeletonInfo_R_c keyframe1;
/* 0x0252 */ s_xyz joint_data[27];
/* 0x02F4 */ s_xyz morph_data[27];
/* 0x0398 */ Mtx work_mtx[2][13]; /* swapped between frames */
/* 0x0A18 */ cKF_SkeletonInfo_R_c item_keyframe; /* for item animations */
/* 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;
/* 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;
/* 0x0D08 */ int requested_main_index;
/* 0x0D0C */ int requested_main_index_priority;
/* 0x0D10 */ int requested_main_index_changed;
/* 0x0D14 */ int settled_requested_main_index_priority;
/* 0x0D18 */ u8 main_index_data[72]; // TODO: Union of many types...
/* 0x0D60 */ u8 requested_main_index_data[72]; // TODO: Union of many types...
/* 0x0DA8 */ u8 _0DA8[0x1010 - 0x0DA8]; /* TODO: finish */
/* 0x1010 */ ClObjPipe_c col_pipe;
/* 0x102C */ xyz_t head_pos;
/* 0x1038 */ xyz_t feel_pos;
/* 0x1044 */ xyz_t right_hand_pos;
/* 0x1050 */ xyz_t right_hand_move;
/* 0x105C */ xyz_t left_hand_pos;
/* 0x1068 */ MtxF right_hand_mtx;
/* 0x10A8 */ MtxF left_hand_mtx;
/* 0x10E8 */ u8 _10E8[0x1270 - 0x10E8];
/* 0x1270 */ int (*request_main_invade_all_proc)(GAME*, int);
/* 0x1274 */ int (*request_main_refuse_all_proc)(GAME*, int);
/* 0x1278 */ int (*request_main_return_demo_all_proc)(GAME*, int, f32, int);
/* 0x127C */ int (*request_main_wait_all_proc)(GAME*, f32, int, int);
/* 0x1280 */ int (*request_main_talk_all_proc)(GAME*, ACTOR*, int, f32, int, int);
/* 0x1284 */ int (*request_main_hold_all_proc)(GAME*, int, int, const xyz_t*, f32, int, int);
/* 0x1288 */ int (*request_main_recieve_wait_all_proc)(GAME*, ACTOR*, int, int, mActor_name_t, int, int);
/* 0x128C */ int (*request_main_give_all_proc)(GAME*, ACTOR*, int, int, mActor_name_t, int, int, int, int);
/* 0x1290 */ int (*request_main_sitdown_all_proc)(GAME*, int, const xyz_t*, int, int);
/* 0x1294 */ int (*request_main_close_furniture_all_proc)(GAME*, int);
/* 0x1298 */ int (*request_main_lie_bed_all_proc)(GAME*, int, const xyz_t*, int, int, int);
/* 0x129C */ int (*request_main_hide_all_proc)(GAME*, int);
/* 0x12A0 */ int (*request_main_groundhog_proc)(GAME*, int);
/* 0x12A4 */ int (*request_main_door_all_proc)(GAME*, const xyz_t*, s16, int, void*, int);
/* 0x12A8 */ int (*request_main_outdoor_all_proc)(GAME*, int, int, int);
/* 0x12AC */ int (*request_main_wash_car_all_proc)(GAME*, const xyz_t*, const xyz_t*, s16, ACTOR*, int);
/* 0x12B0 */ int (*request_main_rotate_octagon_all_proc)(GAME*, ACTOR*, int, int, const xyz_t*, s16, int);
/* 0x12B4 */ int (*request_main_throw_money_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12B8 */ int (*request_main_pray_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12BC */ int (*request_main_mail_jump_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12C0 */ int (*request_main_demo_wait_all_proc)(GAME*, int, void*, int);
/* 0x12C4 */ int (*request_main_demo_walk_all_proc)(GAME*, f32, f32, f32, int, int);
/* 0x12C8 */ int (*request_main_demo_geton_train_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12CC */ int (*request_main_demo_getoff_train_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12D0 */ int (*request_main_demo_standing_train_all_proc)(GAME*, int);
/* 0x12D4 */ int (*request_main_stung_bee_all_proc)(GAME*, int);
/* 0x12D8 */ int (*request_main_shock_all_proc)(GAME*, f32, s16, s8, int, int);
/* 0x12DC */ int (*request_main_change_cloth_forNPC_proc)(GAME*, mActor_name_t, int);
/* 0x12E0 */ int (*request_main_push_snowball_all_proc)(GAME*, void*, int, int);
/* 0x12E4 */ int (*request_main_stung_mosquito_all_proc)(GAME*, int, int);
/* 0x12E8 */ int (*request_main_switch_on_lighthouse_all_proc)(GAME*, const xyz_t*, int, int);
/* 0x12EC */ int (*request_main_demo_geton_boat_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12F0 */ int (*request_main_demo_getoff_boat_standup_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12F4 */ int (*request_main_demo_get_golden_item2_all_proc)(GAME*, int, int);
/* 0x12F8 */ int (*request_main_demo_get_golden_axe_wait_all_proc)(GAME*, int);
/* 0x12FC */ int (*check_request_main_priority_proc)(GAME*, int);
/* 0x1300 */ void* (*get_door_label_proc)(GAME*);
/* 0x1304 */ int (*Set_Item_net_catch_request_table_proc)(ACTOR*, GAME*, u32, s8, const xyz_t*, f32);
/* 0x1308 */ f32 (*Get_Item_net_catch_swing_timer_proc)(ACTOR*, GAME*);
/* 0x130C */ u8 (*Set_Item_net_catch_request_force_proc)(ACTOR*, GAME*, u32, s8);
/* 0x1310 */ void (*Set_force_position_angle_proc)(GAME*, const xyz_t*, const s_xyz*, u8);
/* 0x1314 */ u8 (*Get_force_position_angle_proc)(GAME*, xyz_t*, s_xyz*);
/* 0x1318 */ int (*Get_WadeEndPos_proc)(GAME*, xyz_t*);
/* 0x131C */ int (*Check_Label_main_push_snowball_proc)(GAME*, void*);
/* 0x1320 */ int (*SetParam_for_push_snowball_proc)(GAME*, const xyz_t*, s16, f32);
/* 0x1324 */ int (*able_submenu_request_main_index_proc)(GAME*);
/* 0x1328 */ int (*check_able_change_camera_normal_index_proc)(ACTOR*);
/* 0x132C */ int (*Check_able_force_speak_label_proc)(GAME*, ACTOR*);
/* 0x1330 */ int (*check_cancel_request_change_proc_index_proc)(int);
/* 0x1334 */ u32 (*Get_item_net_catch_label_proc)(ACTOR*);
/* 0x1338 */ int (*Change_item_net_catch_label_proc)(ACTOR*, u32, s8);
/* 0x133C */ int (*Check_StopNet_proc)(ACTOR*, xyz_t*);
/* 0x1340 */ int (*Check_HitAxe_proc)(ACTOR*, xyz_t*);
/* 0x1344 */ int (*Check_VibUnit_OneFrame_proc)(ACTOR*, const xyz_t*);
/* 0x1348 */ int (*Check_HitScoop_proc)(ACTOR*, xyz_t*);
/* 0x134C */ int (*Check_DigScoop_proc)(ACTOR*, xyz_t*);
/* 0x1350 */ int (*check_request_change_item_proc)(GAME*);
/* 0x1354 */ int (*Check_RotateOctagon_proc)(GAME*);
/* 0x1358 */ int (*Check_end_stung_bee_proc)(ACTOR*);
/* 0x135C */ int (*Get_status_for_bee_proc)(ACTOR*);
/* 0x1360 */ int (*Set_ScrollDemo_forWade_snowball_proc)(ACTOR*, int, const xyz_t*);
/* 0x1364 */ int (*Check_tree_shaken_proc)(ACTOR*, const xyz_t*);
/* 0x1368 */ int (*Check_tree_shaken_little_proc)(ACTOR*, const xyz_t*);
/* 0x136C */ int (*Check_tree_shaken_big_proc)(ACTOR*, const xyz_t*);
/* 0x1370 */ int (*Check_Label_main_wade_snowball_proc)(GAME*, void*);
/* 0x1374 */ int (*GetSnowballPos_forWadeSnowball_proc)(ACTOR*, xyz_t*);
/* 0x1378 */ int (*CheckCondition_forWadeSnowball_proc)(GAME*, const xyz_t*, s16);
/* 0x137C */ mActor_name_t (*Get_itemNo_forWindow_proc)(ACTOR*);
/* 0x1380 */ int (*check_cancel_event_without_priority_proc)(GAME*);
/* 0x1384 */ int (*CheckScene_AbleSubmenu_proc)();
/* 0x1388 */ int (*Check_stung_mosquito_proc)(GAME*, ACTOR*);
/* 0x138C */ int a_btn_pressed;
/* 0x1390 */ int a_btn_triggers_submenu;
/* 0x1394 */ mActor_name_t item_in_front; /* item directly in front of the player */
/* 0x1398 */ xyz_t foward_ut_pos; /* wpos of unit in front of player */
/* 0x13A4 */ s8 update_scene_bg_mode;
};
void Player_actor_ct(ACTOR*, GAME*);
+8 -1
View File
@@ -17,7 +17,7 @@ extern void mPlib_Clear_controller_data_for_title_demo();
extern void mPlib_request_main_invade_type1(GAME_PLAY* play);
extern mActor_name_t mPlib_Get_itemNo_forWindow();
extern int mPlib_check_able_change_camera_normal_index();
extern void mPlib_request_main_refuse_type1(GAME_PLAY* play);
extern void mPlib_request_main_refuse_type1(GAME* game);
extern void mPlib_request_main_wait_type3(GAME* game);
extern void mPlib_Set_able_force_speak_label(ACTOR* actor);
extern int mPlib_request_main_demo_walk_type1(GAME* game, f32 goal_x, f32 goal_z, f32 speed, int flag);
@@ -63,6 +63,13 @@ extern void mPlib_Set_change_color_request();
extern int mPlib_check_player_open_umbrella(GAME_PLAY* play);
extern int mPlib_Check_UKI_COMEBACK_STATUS();
extern int mPlib_check_player_actor_main_index_OutDoorMove(GAME_PLAY* play);
extern int mPlib_request_main_close_furniture_type1(GAME* game);
extern int mPlib_request_main_shock_type1(GAME* game, f32 time, s16 angle_y, int axe_swing);
extern int mPlib_request_main_hold_type1(GAME* game, int ftr_no, int player_direct, const xyz_t* player_pos);
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 mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p();
+1 -1
View File
@@ -212,7 +212,7 @@ extern void Scene_ct(GAME_PLAY* play, Scene_Word_u* scene_data);
extern void Door_info_ct(Door_info_c* door_info);
extern int goto_other_scene(GAME_PLAY* play, Door_data_c* door_data, int update_player_mode);
extern int goto_next_scene(GAME_PLAY* play, int next_idx, int update_player_mode);
extern int goto_emu_game(GAME_PLAY* play, u8 famicom_rom_id);
extern int goto_emu_game(GAME* game, s16 famicom_rom_id);
extern void return_emu_game(GAME* game);
#ifdef __cplusplus
+76 -73
View File
@@ -2,24 +2,24 @@
#define M_SCENE_TABLE_H
#include "types.h"
//#include "m_scene.h"
// #include "m_scene.h"
#ifdef __cplusplus
extern "C" {
#endif
enum field_draw_type {
FIELD_DRAW_TYPE_OUTDOORS,
FIELD_DRAW_TYPE_INDOORS,
FIELD_DRAW_TYPE_TRAIN,
FIELD_DRAW_TYPE_PLAYER_SELECT,
FIELD_DRAW_TYPE_OUTDOORS,
FIELD_DRAW_TYPE_INDOORS,
FIELD_DRAW_TYPE_TRAIN,
FIELD_DRAW_TYPE_PLAYER_SELECT,
FIELD_DRAW_TYPE_NUM
FIELD_DRAW_TYPE_NUM
};
typedef struct scene_status_s {
u8 unk0[0x13];
u8 unk13;
u8 unk0[0x13];
u8 unk13;
} Scene_data_status_c;
/*
@@ -28,76 +28,79 @@ typedef struct scene_status_s {
*/
enum scene_table {
SCENE_TEST1,
SCENE_TEST2,
SCENE_TEST3,
SCENE_WATER_TEST,
SCENE_FOOTPRINT_TEST,
SCENE_NPC_TEST,
SCENE_NPC_HOUSE, /* npc house interior */
SCENE_FG, /* outdoors/FG */
SCENE_RANDOM_NPC_TEST,
SCENE_SHOP0, /* nook's cranny */
SCENE_BG_TEST_NO_RIVER,
SCENE_BG_TEST_RIVER,
SCENE_BROKER_SHOP, /* crazy redd's tent */
SCENE_FIELD_TOOL_INSIDE,
SCENE_POST_OFFICE, /* post office */
SCENE_START_DEMO, /* after player select */
SCENE_START_DEMO2, /* */
SCENE_POLICE_BOX,
SCENE_BUGGY,
SCENE_PLAYERSELECT,
SCENE_MY_ROOM_S,
SCENE_MY_ROOM_M,
SCENE_MY_ROOM_L,
SCENE_CONVENI, /* nook 'n' go */
SCENE_SUPER, /* nookway */
SCENE_DEPART, /* nookington's 1st floor */
SCENE_TEST5,
SCENE_PLAYERSELECT_2,
SCENE_PLAYERSELECT_3,
SCENE_DEPART_2, /* nookington's 2nd floor */
SCENE_EVENT_ANNOUNCEMENT,
SCENE_KAMAKURA,
SCENE_FIELD_TOOL,
SCENE_TITLE_DEMO, /* title screen demo */
SCENE_PLAYERSELECT_SAVE,
SCENE_MUSEUM_ENTRANCE,
SCENE_MUSEUM_ROOM_PAINTING,
SCENE_MUSEUM_ROOM_FOSSIL,
SCENE_MUSEUM_ROOM_INSECT,
SCENE_MUSEUM_ROOM_FISH,
SCENE_MY_ROOM_LL1,
SCENE_MY_ROOM_LL2,
SCENE_MY_ROOM_BASEMENT_S,
SCENE_MY_ROOM_BASEMENT_M,
SCENE_MY_ROOM_BASEMENT_L,
SCENE_MY_ROOM_BASEMENT_LL1,
SCENE_NEEDLEWORK, /* able sister's */
SCENE_COTTAGE_MY,
SCENE_COTTAGE_NPC,
SCENE_START_DEMO3,
SCENE_LIGHTHOUSE,
SCENE_TENT,
SCENE_TEST1,
SCENE_TEST2,
SCENE_TEST3,
SCENE_WATER_TEST,
SCENE_FOOTPRINT_TEST,
SCENE_NPC_TEST,
SCENE_NPC_HOUSE, /* npc house interior */
SCENE_FG, /* outdoors/FG */
SCENE_RANDOM_NPC_TEST,
SCENE_SHOP0, /* nook's cranny */
SCENE_BG_TEST_NO_RIVER,
SCENE_BG_TEST_RIVER,
SCENE_BROKER_SHOP, /* crazy redd's tent */
SCENE_FIELD_TOOL_INSIDE,
SCENE_POST_OFFICE, /* post office */
SCENE_START_DEMO, /* after player select */
SCENE_START_DEMO2, /* */
SCENE_POLICE_BOX,
SCENE_BUGGY,
SCENE_PLAYERSELECT,
SCENE_MY_ROOM_S,
SCENE_MY_ROOM_M,
SCENE_MY_ROOM_L,
SCENE_CONVENI, /* nook 'n' go */
SCENE_SUPER, /* nookway */
SCENE_DEPART, /* nookington's 1st floor */
SCENE_TEST5,
SCENE_PLAYERSELECT_2,
SCENE_PLAYERSELECT_3,
SCENE_DEPART_2, /* nookington's 2nd floor */
SCENE_EVENT_ANNOUNCEMENT,
SCENE_KAMAKURA,
SCENE_FIELD_TOOL,
SCENE_TITLE_DEMO, /* title screen demo */
SCENE_PLAYERSELECT_SAVE,
SCENE_MUSEUM_ENTRANCE,
SCENE_MUSEUM_ROOM_PAINTING,
SCENE_MUSEUM_ROOM_FOSSIL,
SCENE_MUSEUM_ROOM_INSECT,
SCENE_MUSEUM_ROOM_FISH,
SCENE_MY_ROOM_LL1,
SCENE_MY_ROOM_LL2,
SCENE_MY_ROOM_BASEMENT_S,
SCENE_MY_ROOM_BASEMENT_M,
SCENE_MY_ROOM_BASEMENT_L,
SCENE_MY_ROOM_BASEMENT_LL1,
SCENE_NEEDLEWORK, /* able sister's */
SCENE_COTTAGE_MY,
SCENE_COTTAGE_NPC,
SCENE_START_DEMO3,
SCENE_LIGHTHOUSE,
SCENE_TENT,
SCENE_NUM
SCENE_NUM
};
#define mSc_IS_SCENE_PLAYER_ROOM(scene) \
((scene) == SCENE_MY_ROOM_S || (scene) == SCENE_MY_ROOM_M || (scene) == SCENE_MY_ROOM_L || \
(scene) == SCENE_MY_ROOM_LL1 || (scene) == SCENE_MY_ROOM_LL2 || (scene) == SCENE_MY_ROOM_BASEMENT_S || \
(scene) == SCENE_MY_ROOM_BASEMENT_M || (scene) == (SCENE_MY_ROOM_BASEMENT_L) || (scene) == SCENE_MY_ROOM_BASEMENT_LL1 || \
(scene) == SCENE_COTTAGE_MY)
#define mSc_IS_SCENE_PLAYER_HOUSE_ROOM(scene) \
((scene) == SCENE_MY_ROOM_S || (scene) == SCENE_MY_ROOM_M || (scene) == SCENE_MY_ROOM_L || \
(scene) == SCENE_MY_ROOM_LL1 || (scene) == SCENE_MY_ROOM_LL2 || (scene) == SCENE_MY_ROOM_BASEMENT_S || \
(scene) == SCENE_MY_ROOM_BASEMENT_M || (scene) == (SCENE_MY_ROOM_BASEMENT_L) || \
(scene) == SCENE_MY_ROOM_BASEMENT_LL1)
#define mSc_IS_SCENE_BASEMENT(scene) \
((scene) == SCENE_MY_ROOM_BASEMENT_S || \
(scene) == SCENE_MY_ROOM_BASEMENT_M || \
(scene) == SCENE_MY_ROOM_BASEMENT_L || \
(scene) == SCENE_MY_ROOM_BASEMENT_LL1)
#define mSc_IS_SCENE_PLAYER_ROOM(scene) \
((scene) == SCENE_MY_ROOM_S || (scene) == SCENE_MY_ROOM_M || (scene) == SCENE_MY_ROOM_L || \
(scene) == SCENE_MY_ROOM_LL1 || (scene) == SCENE_MY_ROOM_LL2 || (scene) == SCENE_MY_ROOM_BASEMENT_S || \
(scene) == SCENE_MY_ROOM_BASEMENT_M || (scene) == (SCENE_MY_ROOM_BASEMENT_L) || \
(scene) == SCENE_MY_ROOM_BASEMENT_LL1 || (scene) == SCENE_COTTAGE_MY)
#define mSc_IS_SCENE_MUSEUM_ROOM(scene) \
((scene) >= SCENE_MUSEUM_ENTRANCE && (scene) <= SCENE_MUSEUM_ROOM_FISH)
#define mSc_IS_SCENE_BASEMENT(scene) \
((scene) == SCENE_MY_ROOM_BASEMENT_S || (scene) == SCENE_MY_ROOM_BASEMENT_M || \
(scene) == SCENE_MY_ROOM_BASEMENT_L || (scene) == SCENE_MY_ROOM_BASEMENT_LL1)
#define mSc_IS_SCENE_MUSEUM_ROOM(scene) ((scene) >= SCENE_MUSEUM_ENTRANCE && (scene) <= SCENE_MUSEUM_ROOM_FISH)
extern Scene_data_status_c scene_data_status[SCENE_NUM];