mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-06-02 17:48:24 -04:00
Implement & link m_room_type.c
This commit is contained in:
@@ -229,8 +229,11 @@ m_rcp.c:
|
||||
.text: [0x803E50E4, 0x803E5D04]
|
||||
.data: [0x8065C588, 0x8065C910]
|
||||
.bss: [0x8129F2E8, 0x8129F2F0]
|
||||
m_room_type/mRmTp_FtrItemNo2FtrIdx.c:
|
||||
.text: [0x803E7878, 0x803E78BC]
|
||||
m_room_type.c:
|
||||
.text: [0x803E5D04, 0x803E7998]
|
||||
.rodata: [0x80643240, 0x80643270]
|
||||
.data: [0x8065C910, 0x8065D690]
|
||||
.bss: [0x8129F2F0, 0x8129F308]
|
||||
m_scene_ftr.c:
|
||||
.text: [0x803E7998, 0x803E7A7C]
|
||||
m_shop.c:
|
||||
|
||||
+7
-5
@@ -122,6 +122,12 @@ typedef struct home_layer_s {
|
||||
/* 0x208 */ u32 unk_208[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? */
|
||||
} mHm_fllot_bit_c;
|
||||
|
||||
/* sizeof(mHm_flr_c) == 0x8A8 */
|
||||
typedef struct home_floor_s {
|
||||
/* 0x000 */ mHm_lyr_c layer_main;
|
||||
@@ -130,11 +136,7 @@ typedef struct home_floor_s {
|
||||
/* 0x678 */ mHm_lyr_c layer_storage2;
|
||||
/* 0x8A0 */ mHm_wf_c wall_floor;
|
||||
/* 0x8A2 */ TempoBeat_c tempo_beat;
|
||||
/* 0x8A4 */ struct {
|
||||
u8 wall_original:1; /* is wallpaper a pattern (original)? */
|
||||
u8 floor_original:1; /* is flooring a pattern (original)? */
|
||||
u8 bit_2_7:6; /* unused? */
|
||||
} fllot_bit; /* Name exposed? by mISL_gc_to_agb_fllot_bit, may also be floor_bit_info as 'mRmTp_GetNowSceneFloorBitInfoP' */
|
||||
/* 0x8A4 */ mHm_fllot_bit_c floor_bit_info;
|
||||
} mHm_flr_c;
|
||||
|
||||
/* sizeof(mHm_flg_c) == 1 */
|
||||
|
||||
@@ -96,6 +96,7 @@ extern int mNT_check_unknown(mActor_name_t item_no);
|
||||
extern int FGTreeType_check(mActor_name_t tree);
|
||||
extern mActor_name_t bg_item_fg_sub_tree_grow(mActor_name_t tree, int past_days, int check_plant);
|
||||
extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
extern mActor_name_t mNT_FishIdx2FishItemNo(int idx);
|
||||
|
||||
/* Retrieve the item actor's category */
|
||||
#define ITEM_NAME_GET_TYPE(n) (((n) & 0xF000) >> 12)
|
||||
@@ -676,6 +677,7 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
#define ITM_AXE 0x2201
|
||||
#define ITM_SHOVEL 0x2202
|
||||
#define ITM_ROD 0x2203
|
||||
#define ITM_UMBRELLA_START (ITM_TOOL_START + 4)
|
||||
#define ITM_GELATO_UMBRELLA 0x2204
|
||||
#define ITM_DAFFODIL_PARASOL 0x2205
|
||||
// TODO: other umbrellas
|
||||
@@ -688,6 +690,7 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
#define ITM_MY_ORG_UMBRELLA5 0x2229
|
||||
#define ITM_MY_ORG_UMBRELLA6 0x222A
|
||||
#define ITM_MY_ORG_UMBRELLA7 0x222B
|
||||
#define ITM_UMBRELLA_END (ITM_TOOL_START + 44)
|
||||
#define ITM_SICKLE 0x222C
|
||||
#define ITM_RED_PAINT 0x222D
|
||||
#define ITM_ORANGE_PAINT 0x222E
|
||||
@@ -712,6 +715,7 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
#define ITM_AXE_USE_5 0x2241
|
||||
#define ITM_AXE_USE_6 0x2242
|
||||
#define ITM_AXE_USE_7 0x2243
|
||||
#define ITM_BALLOON_START (ITM_TOOL_START + 68)
|
||||
#define ITM_RED_BALLOON 0x2244
|
||||
#define ITM_YELLOW_BALLOON 0x2245
|
||||
#define ITM_BLUE_BALLOON 0x2246
|
||||
@@ -1245,12 +1249,13 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
#define ITM_INSECT37 (ITM_INSECT_START + 37)
|
||||
#define ITM_INSECT38 (ITM_INSECT_START + 38)
|
||||
#define ITM_INSECT39 (ITM_INSECT_START + 39)
|
||||
#define ITM_INSECT_END (ITM_INSECT_START + 40)
|
||||
#define ITM_SPIRIT0 (ITM_INSECT_START + 40)
|
||||
#define ITM_SPIRIT1 (ITM_INSECT_START + 41)
|
||||
#define ITM_SPIRIT2 (ITM_INSECT_START + 42)
|
||||
#define ITM_SPIRIT3 (ITM_INSECT_START + 43)
|
||||
#define ITM_SPIRIT4 (ITM_INSECT_START + 44)
|
||||
#define ITM_INSECT_END (ITM_INSECT_START + 45)
|
||||
#define ITM_INSECT_ALL_END (ITM_INSECT_START + 45)
|
||||
|
||||
#define ITM_HUKUBUKURO_START 0x2E00
|
||||
#define ITM_HUKUBUKURO_BAG (ITM_HUKUBUKURO_START + 0)
|
||||
@@ -1326,6 +1331,8 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item);
|
||||
|
||||
#define FTR_CALLIGRAPHY_PAD_WEST 0x313B
|
||||
|
||||
#define FTR_AXE 0x3190
|
||||
|
||||
#define FTR_BOTTLE_ROCKET 0x31F0
|
||||
|
||||
#define FTR_FISHING_TROPHY 0x3210
|
||||
|
||||
@@ -18,6 +18,7 @@ extern "C" {
|
||||
#define mNW_TOTAL_DESIGN_NUM (mNW_CLOTH_DESIGN_NUM + mNW_UMBRELLA_DESIGN_NUM) /* total designs in Able Sisters' */
|
||||
|
||||
#define mNW_DESIGN_TEX_SIZE (mNW_ORIGINAL_DESIGN_HEIGHT * (mNW_ORIGINAL_DESIGN_WIDTH / 2)) /* total texture data size */
|
||||
#define mNW_PALETTE_SIZE (16 * sizeof(u16))
|
||||
#define mNW_PALETTE_COUNT 16 /* number of design palettes */
|
||||
|
||||
enum {
|
||||
|
||||
+48
-15
@@ -4,6 +4,7 @@
|
||||
#include "types.h"
|
||||
#include "libu64/gfxprint.h"
|
||||
#include "m_actor_type.h"
|
||||
#include "m_play_h.h"
|
||||
|
||||
#define mRmTp_FTR_UNIT_MAX 4
|
||||
|
||||
@@ -68,6 +69,23 @@ enum {
|
||||
mRmTp_DIRECT_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mRmTp_FTR_SE_NONE,
|
||||
mRmTp_FTR_SE_SOFT_CHAIR,
|
||||
mRmTp_FTR_SE_HARD_CHAIR,
|
||||
mRmTp_FTR_SE_BUBU_CHAIR,
|
||||
mRmTp_FTR_SE_TOILET_CHAIR,
|
||||
|
||||
mRmTp_FTR_SE_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mRmTp_CHAIR_ACTION_SIT,
|
||||
mRmTp_CHAIR_ACTION_STAND,
|
||||
|
||||
mRmTp_CHAIR_ACTION_NUM
|
||||
};
|
||||
|
||||
typedef struct room_type_place_info_one_s {
|
||||
int exists;
|
||||
int ut_x;
|
||||
@@ -125,27 +143,42 @@ enum {
|
||||
mRmTp_LIGHT_SWITCH_NUM
|
||||
};
|
||||
|
||||
extern int mRmTp_ItemNo2FtrSize(mActor_name_t item_no);
|
||||
extern int mRmTp_GetFurnitureData(mActor_name_t ftr, int ut_x, int ut_z, mRmTp_FtrPlaceInfoOne_t* place_info);
|
||||
extern void mRmTp_MakeFtrNoTable(mActor_name_t* dst, mActor_name_t* src);
|
||||
extern int mRmTp_GetFtrActionSE(int ftr_idx, int mode);
|
||||
extern u8* mRmTp_CheckFtrBirthInfoTop();
|
||||
extern int mRmTp_GetFloorIdx();
|
||||
extern int mRmTp_GetWallIdx();
|
||||
extern mActor_name_t mRmTp_Item1ItemNo2FtrItemNo_AtPlayerRoom(mActor_name_t item1_no, int no_convert_tools);
|
||||
extern mActor_name_t mRmTp_FtrItemNo2Item1ItemNo(mActor_name_t ftr_no, int no_convert_tools);
|
||||
extern void mRmTp_MakeMelodyData();
|
||||
extern u8* mRmTp_GetMelodyData();
|
||||
extern void mRmTp_DrawFamicomInfo(gfxprint_t* gfxprint);
|
||||
extern void mRmTp_MakeFamicom_Fdebug();
|
||||
|
||||
extern mActor_name_t mRmTp_FtrItemNo2Item1ItemNo(mActor_name_t ftr_item_no, void* unused); /* second paramter is probably GAME*? */
|
||||
extern int mRmTp_FtrItemNo2FtrIdx(mActor_name_t ftr_item_no);
|
||||
extern mActor_name_t mRmTp_FtrIdx2FtrItemNo(int ftr_idx, int rotation);
|
||||
extern int mRmTp_GetFurnitureData(mActor_name_t ftr, int ut_x, int ut_z, mRmTp_FtrPlaceInfoOne_t* place_info);
|
||||
extern mActor_name_t mRmTp_GetPlayerRoomCollisionIdx(mActor_name_t field_id, mActor_name_t bg_idx);
|
||||
extern int mRmTp_FurnitureIdx2FurnitureKind(int ftr_idx);
|
||||
extern int mRmTp_PleaseDrawLightSwitch();
|
||||
extern mActor_name_t mRmTp_Item1ItemNo2FtrItemNo_AtPlayerRoom(mActor_name_t item_no, int flag);
|
||||
extern void mRmTp_SetDefaultLightSwitchData(int state);
|
||||
extern void mRmTp_CopyWallData(u8* dst, int wall_no);
|
||||
extern void mRmTp_CopyFloorData(u8* dst, int floor_no);
|
||||
extern int mRmTp_CheckTalkAble(s16* rot, xyz_t* pos, f32 max_dist, int required_dir, GAME_PLAY* play);
|
||||
extern int mRmTp_CheckWallIsMyOriginalInThisScene();
|
||||
extern int mRmTp_CheckFloorIsMyOriginalInThisScene();
|
||||
extern int mRmTp_GetEntranceBasePosition(xyz_t* pos);
|
||||
extern mActor_name_t mRmTp_GetPlayerRoomCollisionIdx(mActor_name_t field_name, mActor_name_t bg_name);
|
||||
extern u8 mRmTp_GetFloorIdx();
|
||||
extern int mRmTp_GetNowSceneLightSwitchIndex();
|
||||
extern void mRmTp_IndexLightSwitchOFF(int index);
|
||||
extern void mRmTp_IndexLightSwitchON(int index);
|
||||
extern int mRmTp_Index2LightSwitchStatus(int index);
|
||||
extern int mRmTp_PleaseDrawLightSwitch();
|
||||
extern int mRmTp_NowSceneLightSwitchON();
|
||||
extern int mRmTp_IndexLightSwitchON(int switch_index);
|
||||
extern int mRmTp_NowSceneLightSwitchOFF();
|
||||
extern void mRmTp_MakeFtrNoTable(mActor_name_t* dst, mActor_name_t* src);
|
||||
extern u8* mRmTp_CheckFtrBirthInfoTop();
|
||||
extern int mRmTp_IndexLightSwitchOFF(int switch_index);
|
||||
extern int mRmTp_Index2LightSwitchStatus(int switch_index);
|
||||
extern int mRmTp_SetDefaultLightSwitchData(int state);
|
||||
extern void mRmTp_DecideCottageDefaultLightSwitch();
|
||||
extern int mRmTp_GetNowSceneOriginalWallStatus();
|
||||
extern int mRmTp_GetNowSceneOriginalFloorStatus();
|
||||
extern void mRmTp_SetNowSceneOriginalWallStatus(int enabled);
|
||||
extern void mRmTp_SetNowSceneOriginalFloorStatus(int enabled);
|
||||
extern int mRmTp_FtrItemNo2FtrIdx(mActor_name_t ftr_item_no);
|
||||
extern mActor_name_t mRmTp_FtrIdx2FtrItemNo(int ftr_idx, int direct);
|
||||
extern int mRmTp_SoundStepWalkSE(xyz_t* wpos);
|
||||
|
||||
#endif
|
||||
+2
-2
@@ -251,7 +251,7 @@ extern void mIN_copy_name_str(u8* dst, mActor_name_t item) {
|
||||
|
||||
u8 item_name[mIN_ITEM_NAME_LEN];
|
||||
u32 itm = item;
|
||||
mActor_name_t item_no = mRmTp_FtrItemNo2Item1ItemNo(item, NULL);
|
||||
mActor_name_t item_no = mRmTp_FtrItemNo2Item1ItemNo(item, FALSE);
|
||||
|
||||
if (mNT_check_unknown(item_no) == TRUE) {
|
||||
mem_copy(dst, unknown_item_str, mIN_ITEM_NAME_LEN);
|
||||
@@ -321,7 +321,7 @@ extern int mIN_get_item_article(mActor_name_t item) {
|
||||
};
|
||||
|
||||
int article = mIN_ARTICLE_NONE;
|
||||
mActor_name_t item_no = mRmTp_FtrItemNo2Item1ItemNo(item, NULL);
|
||||
mActor_name_t item_no = mRmTp_FtrItemNo2Item1ItemNo(item, FALSE);
|
||||
int index = item_no & 0xFF;
|
||||
|
||||
switch (ITEM_NAME_GET_TYPE(item_no)) {
|
||||
|
||||
@@ -1033,7 +1033,7 @@ extern int mMpswd_check_present_user(mActor_name_t item) {
|
||||
case NAME_TYPE_FTR1:
|
||||
{
|
||||
if (item >= FTR_CLOTH_MANNIQUIN000_SOUTH && item <= FTR_CLOTH_MANNIQUIN254_WEST) {
|
||||
item = mRmTp_FtrItemNo2Item1ItemNo(item, NULL);
|
||||
item = mRmTp_FtrItemNo2Item1ItemNo(item, FALSE);
|
||||
if (
|
||||
mSP_SearchItemCategoryPriority(item, mSP_KIND_CLOTH, mSP_LISTTYPE_COMMON, NULL) ||
|
||||
mSP_SearchItemCategoryPriority(item, mSP_KIND_CLOTH, mSP_LISTTYPE_UNCOMMON, NULL) ||
|
||||
@@ -1043,7 +1043,7 @@ extern int mMpswd_check_present_user(mActor_name_t item) {
|
||||
}
|
||||
}
|
||||
else if (item >= FTR_UMBRELLA00_SOUTH && item <= FTR_UMBRELLA31_WEST) {
|
||||
price = mSP_ItemNo2ItemPrice(mRmTp_FtrItemNo2Item1ItemNo(item, NULL));
|
||||
price = mSP_ItemNo2ItemPrice(mRmTp_FtrItemNo2Item1ItemNo(item, FALSE));
|
||||
}
|
||||
else if ( // TODO: furniture index values need to be declared in some header file as defines
|
||||
(mRmTp_FtrItemNo2FtrIdx(item) >= 0x3FC && mRmTp_FtrItemNo2FtrIdx(item) <= 0x403) || // balloons
|
||||
@@ -1054,7 +1054,7 @@ extern int mMpswd_check_present_user(mActor_name_t item) {
|
||||
(mRmTp_FtrItemNo2FtrIdx(item) >= 0x463 && mRmTp_FtrItemNo2FtrIdx(item) <= 0x466) // regular tools
|
||||
) {
|
||||
/* Convert furniture to their item1 variants */
|
||||
price = mSP_ItemNo2ItemPrice(mRmTp_FtrItemNo2Item1ItemNo(item, NULL));
|
||||
price = mSP_ItemNo2ItemPrice(mRmTp_FtrItemNo2Item1ItemNo(item, FALSE));
|
||||
}
|
||||
else if (
|
||||
mSP_SearchItemCategoryPriority(item, mSP_KIND_FURNITURE, mSP_LISTTYPE_COMMON, NULL) ||
|
||||
|
||||
+3556
File diff suppressed because it is too large
Load Diff
@@ -1,16 +0,0 @@
|
||||
#include "m_room_type.h"
|
||||
#include "m_name_table.h"
|
||||
|
||||
#define FTR_NO_2_FTR_IDX(f) ((f) >> 2)
|
||||
#define NUM_FTR_IN_TYPE (FTR_NO_2_FTR_IDX(0x1000))
|
||||
|
||||
extern int mRmTp_FtrItemNo2FtrIdx(u16 ftr_no) {
|
||||
if (ITEM_IS_FTR(ftr_no)) {
|
||||
if (ITEM_NAME_GET_TYPE(ftr_no) == NAME_TYPE_FTR0) {
|
||||
return FTR_NO_2_FTR_IDX(ftr_no - FTR0_NO_START);
|
||||
}
|
||||
return FTR_NO_2_FTR_IDX(ftr_no - FTR1_NO_START) + NUM_FTR_IN_TYPE;
|
||||
}
|
||||
|
||||
return EMPTY_NO;
|
||||
}
|
||||
+1
-1
@@ -745,7 +745,7 @@ extern u32 mSP_ItemNo2ItemPrice(mActor_name_t item_no) {
|
||||
return year;
|
||||
}
|
||||
|
||||
item_no = mRmTp_FtrItemNo2Item1ItemNo(item_no, NULL);
|
||||
item_no = mRmTp_FtrItemNo2Item1ItemNo(item_no, FALSE);
|
||||
if (item_no >= ITM_SHELL0 && item_no <= ITM_SHELL7) {
|
||||
u32 idx = item_no - ITM_SHELL0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user