diff options
| author | Caroline Madsen <69010899+randomsalience@users.noreply.github.com> | 2024-10-07 18:34:13 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-07 15:34:13 -0700 |
| commit | 2fd702c0ac170a789af879b8b92a82d4dcc9080c (patch) | |
| tree | 743222b58fbcfb5079cd6c82f91b2971ab8ffd77 /include | |
| parent | 1f3948e40ef095bb758914cce6fc652091cf4f4a (diff) | |
d_menu_fmap and d_menu_fmap2D OK (#2202)
Diffstat (limited to 'include')
| -rw-r--r-- | include/JSystem/JKernel/JKRArchive.h | 2 | ||||
| -rw-r--r-- | include/d/com/d_com_inf_game.h | 10 | ||||
| -rw-r--r-- | include/d/d_stage.h | 1 | ||||
| -rw-r--r-- | include/d/map/d_map.h | 36 | ||||
| -rw-r--r-- | include/d/map/d_map_path.h | 41 | ||||
| -rw-r--r-- | include/d/map/d_map_path_fmap.h | 173 | ||||
| -rw-r--r-- | include/d/menu/d_menu_fmap.h | 275 | ||||
| -rw-r--r-- | include/d/menu/d_menu_fmap2D.h | 304 | ||||
| -rw-r--r-- | include/d/menu/d_menu_fmap_map.h | 181 | ||||
| -rw-r--r-- | include/d/menu/d_menu_map_common.h | 32 | ||||
| -rw-r--r-- | include/d/menu/d_menu_window.h | 10 | ||||
| -rw-r--r-- | include/d/meter/d_meter2_draw.h | 1 | ||||
| -rw-r--r-- | include/d/meter/d_meter2_info.h | 36 | ||||
| -rw-r--r-- | include/d/meter/d_meter_HIO.h | 6 | ||||
| -rw-r--r-- | include/d/msg/d_msg_object.h | 4 | ||||
| -rw-r--r-- | include/d/save/d_save.h | 2 | ||||
| -rw-r--r-- | include/rel/d/a/d_a_midna/d_a_midna.h | 2 | ||||
| -rw-r--r-- | include/rel/d/a/obj/d_a_obj_life_container/d_a_obj_life_container.h | 2 |
18 files changed, 885 insertions, 233 deletions
diff --git a/include/JSystem/JKernel/JKRArchive.h b/include/JSystem/JKernel/JKRArchive.h index cee9371e88..86532e4045 100644 --- a/include/JSystem/JKernel/JKRArchive.h +++ b/include/JSystem/JKernel/JKRArchive.h @@ -162,7 +162,7 @@ public: /* vt[12] */ virtual u32 getResSize(const void*) const; /* override */ /* vt[13] */ virtual u32 countFile(const char*) const; /* override */ /* vt[14] */ virtual JKRFileFinder* getFirstFile(const char*) const; /* override */ - /* vt[15] */ virtual u32 getExpandedResSize(const void*) const; + /* vt[15] */ virtual u32 getExpandedResSize(const void* res) const { return getResSize(res); } /* vt[16] */ virtual void* fetchResource(SDIFileEntry*, u32*) = 0; /* vt[17] */ virtual void* fetchResource(void*, u32, SDIFileEntry*, u32*) = 0; /* vt[18] */ virtual void setExpandSize(SDIFileEntry*, u32); diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index a03b159b18..44b0d4b927 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -1008,6 +1008,7 @@ u8 dComIfGs_staffroll_next_go_check(); s8 dComIfGs_BossLife_public_Get(); u8 dComIfGs_checkGetInsectNum(); u8 dComIfGs_getSelectMixItemNoArrowIndex(int i_selmixItemIdx); +BOOL dComIfGs_isStageTbox(int i_stageNo, int i_no); inline void dComIfGs_init() { g_dComIfG_gameInfo.info.init(); @@ -1659,6 +1660,14 @@ inline void dComIfGs_setPlayerFieldLastStayInfo(const char* i_stage, cXyz& i_pos i_point, i_region); } +inline char* dComIfGs_getPlayerFieldLastStayName() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().getName(); +} + +inline s16 dComIfGs_getPlayerFieldLastStayAngleY() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().getAngleY(); +} + inline void dComIfGs_setPlayerName(const char* i_name) { g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().setPlayerName(i_name); } @@ -1947,6 +1956,7 @@ u8 dComIfGp_TargetWarpPt_get(); void dComIfGp_TargetWarpPt_set(u8); BOOL dComIfGp_TransportWarp_check(); u8 dComIfGp_SelectWarpPt_get(); +void dComIfGp_SelectWarpPt_set(u8); void dComIfGp_setNextStage(char const* stage, s16 point, s8 roomNo, s8 layer, f32 lastSpeed, u32 lastMode, int, s8 wipe, s16 lastAngle, int, int); void dComIfGp_setNextStage(char const* stage, s16 point, s8 roomNo, s8 layer); diff --git a/include/d/d_stage.h b/include/d/d_stage.h index d9c0c7e5d0..bbefb43a9b 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -1012,6 +1012,7 @@ class cBgS_GndChk; int dStage_RoomCheck(cBgS_GndChk* gndChk); void dStage_dt_c_roomReLoader(void* i_data, dStage_dt_c* stageDt, int param_2); void dStage_dt_c_roomLoader(void* i_data, dStage_dt_c* stageDt, int param_2); +void dStage_dt_c_fieldMapLoader(void* i_data, dStage_dt_c* stageDt); dStage_KeepDoorInfo* dStage_GetKeepDoorInfo(); dStage_KeepDoorInfo* dStage_GetRoomKeepDoorInfo(); diff --git a/include/d/map/d_map.h b/include/d/map/d_map.h index 27c57b2f85..818ab23383 100644 --- a/include/d/map/d_map.h +++ b/include/d/map/d_map.h @@ -3,6 +3,40 @@ #include "d/map/d_map_path_dmap.h" +struct dMap_prm_res_s { + /* 0x000 */ dMpath_RGB5A3_palDt_s palette_data[51]; + /* 0x198 */ u8 field_0x198; + /* 0x199 */ u8 field_0x199; + /* 0x19A */ u8 field_0x19a; + /* 0x19B */ u8 field_0x19b; + /* 0x19C */ u8 field_0x19c; + /* 0x19D */ u8 field_0x19d; + /* 0x19E */ u8 field_0x19e; + /* 0x19F */ u8 field_0x19f; + /* 0x1A0 */ u8 field_0x1a0; + /* 0x1A1 */ u8 field_0x1a1; + /* 0x1A2 */ u8 field_0x1a2; + /* 0x1A3 */ u8 field_0x1a3; + /* 0x1A4 */ u8 field_0x1a4; + /* 0x1A5 */ u8 field_0x1a5; + /* 0x1A6 */ u8 field_0x1a6; + /* 0x1A7 */ u8 field_0x1a7; + /* 0x1A8 */ u8 field_0x1a8; + /* 0x1A9 */ u8 field_0x1a9; + /* 0x1AA */ s16 field_0x1aa; + /* 0x1AC */ s16 field_0x1ac; + /* 0x1AE */ s16 field_0x1ae; + /* 0x1B0 */ s16 field_0x1b0; + /* 0x1B2 */ s16 field_0x1b2; + /* 0x1B4 */ s16 field_0x1b4; + /* 0x1B6 */ s16 field_0x1b6; + /* 0x1B8 */ f32 cursor_size; +}; + +struct dMap_HIO_prm_res_dst_s { + static dMap_prm_res_s* m_res; +}; + class renderingAmap_c : public renderingPlusDoorAndCursor_c { public: /* 800288C4 */ int getDispType() const; @@ -48,8 +82,6 @@ private: /* 0x3C */ s32 field_0x3c; }; // Size: 0x40 -struct dMap_prm_res_s; - class dMap_c : public renderingAmap_c { public: /* 8002974C */ void copyPalette(); diff --git a/include/d/map/d_map_path.h b/include/d/map/d_map_path.h index 87e8631562..1290e21770 100644 --- a/include/d/map/d_map_path.h +++ b/include/d/map/d_map_path.h @@ -20,7 +20,7 @@ public: }; // Size: 0x8 struct group_class { - /* 0x00 */ u8 field_0x0; + /* 0x00 */ u8 mSwbit; /* 0x01 */ u8 field_0x1; /* 0x02 */ u8 mLineNum; /* 0x03 */ u8 field_0x3; @@ -52,7 +52,7 @@ public: /* 8002AD3C */ virtual ~dDrawPath_c() {} /* 8002ABF0 */ virtual bool isDrawType(int) { return true; } virtual const GXColor* getColor(int) = 0; - /* 8002AD84 */ virtual GXColor* getLineColor(int param_0, int) { return (GXColor*)getColor(param_0); } + /* 8002AD84 */ virtual const GXColor* getLineColor(int param_0, int) { return (GXColor*)getColor(param_0); } virtual int getLineWidth(int) = 0; virtual bool isSwitch(dDrawPath_c::group_class const*) = 0; virtual bool isRenderingFloor(int) = 0; @@ -91,11 +91,11 @@ public: field_0x4 = NULL; field_0x8 = 0.0f; field_0xc = 0.0f; - field_0x10 = 0.0f; - field_0x14 = 0.0f; + mPosX = 0.0f; + mPosZ = 0.0f; mCmPerTexel = 0.0f; - field_0x1c = 0; - field_0x1e = 0; + mTexWidth = 0; + mTexHeight = 0; field_0x20 = 0; field_0x22 = 0; } @@ -108,25 +108,25 @@ public: /* 8002ABF8 */ virtual ~dRenderingFDAmap_c() {} /* 8003D188 */ virtual void preRenderingMap(); /* 8003D320 */ virtual void postRenderingMap(); - virtual GXColor* getBackColor() const = 0; + virtual const GXColor* getBackColor() const = 0; /* 8003D68C */ virtual const GXColor* getDecoLineColor(int, int); /* 8003D6B8 */ virtual s32 getDecorationLineWidth(int); bool isDrawAreaCheck(const Vec& param_0) { - return (param_0.x >= field_0x10 - field_0x8 * 2.0f && - param_0.x <= field_0x10 + field_0x8 * 2.0f) && - (param_0.z >= field_0x14 - field_0xc * 2.0f && - param_0.z <= field_0x14 + field_0xc * 2.0f); + return (param_0.x >= mPosX - field_0x8 * 2.0f && + param_0.x <= mPosX + field_0x8 * 2.0f) && + (param_0.z >= mPosZ - field_0xc * 2.0f && + param_0.z <= mPosZ + field_0xc * 2.0f); } /* 0x04 */ u8* field_0x4; /* 0x08 */ f32 field_0x8; /* 0x0C */ f32 field_0xc; - /* 0x10 */ f32 field_0x10; - /* 0x14 */ f32 field_0x14; + /* 0x10 */ f32 mPosX; + /* 0x14 */ f32 mPosZ; /* 0x18 */ f32 mCmPerTexel; - /* 0x1C */ u16 field_0x1c; - /* 0x1E */ u16 field_0x1e; + /* 0x1C */ u16 mTexWidth; + /* 0x1E */ u16 mTexHeight; /* 0x20 */ u16 field_0x20; /* 0x22 */ u16 field_0x22; }; // Size: 0x24 @@ -154,4 +154,15 @@ struct dMpath_n { STATIC_ASSERT(sizeof(dMpath_n::dTexObjAggregate_c) == 28); +struct dMpath_RGB5A3_s { + u16 color; +}; + +struct dMpath_RGB5A3_palDt_s { + /* 0x0 */ dMpath_RGB5A3_s field_0x0; + /* 0x2 */ dMpath_RGB5A3_s field_0x2; + /* 0x4 */ dMpath_RGB5A3_s field_0x4; + /* 0x6 */ dMpath_RGB5A3_s field_0x6; +}; + #endif /* D_MAP_D_MAP_PATH_H */ diff --git a/include/d/map/d_map_path_fmap.h b/include/d/map/d_map_path_fmap.h index 4aa8f432bf..0dd9681ab5 100644 --- a/include/d/map/d_map_path_fmap.h +++ b/include/d/map/d_map_path_fmap.h @@ -12,7 +12,11 @@ public: mpNext = NULL; } - /* 8003EB70 */ ~fmpTresTypeGroupData_c(); + /* 8003EB70 */ ~fmpTresTypeGroupData_c() { + if (mpNext != NULL) { + delete mpNext; + } + } void setTypeGroupNo(u8 i_no) { mTypeGroupNo = i_no; } void setNextData(fmpTresTypeGroupData_c* i_next) { mpNext = i_next; } @@ -31,6 +35,8 @@ public: /* 8003EB10 */ ~fmpTresTypeGroupDataList_c(); /* 8003EC90 */ fmpTresTypeGroupDataList_c(); + fmpTresTypeGroupData_c* getTypeGroupDataHead() { return mpTypeGroupDataHead; } + /* 0x0 */ fmpTresTypeGroupData_c* mpTypeGroupDataHead; /* 0x4 */ fmpTresTypeGroupData_c* mpNextData; }; @@ -40,21 +46,34 @@ public: void addTypeGroupData(u8 i_typeGroupNo, const dTres_c::data_s* i_data) { mpTypeGroupData[i_typeGroupNo].addTypeGroupData(i_typeGroupNo, i_data); } + fmpTresTypeGroupDataList_c* getTypeGroupDataList(int i_typeGroupNo) { + return &mpTypeGroupData[i_typeGroupNo]; + } /* 0x0 */ fmpTresTypeGroupDataList_c mpTypeGroupData[17]; }; class dMenu_Fmap_data_c { public: + dMenu_Fmap_data_c() { + mp_tresure = NULL; + m_fileList2 = NULL; + mp_mapPath = NULL; + mp_dzsData = NULL; + } + dTres_c::list_class* getTresure() { return mp_tresure; } f32 getFilelist2MinX() { return m_fileList2->mLeftRmX; } f32 getFilelist2MinZ() { return m_fileList2->mInnerRmZ; } f32 getFilelist2MaxX() { return m_fileList2->mRightRmX; } f32 getFilelist2MaxZ() { return m_fileList2->mFrontRmZ; } + dDrawPath_c::room_class* getMapPath() { return mp_mapPath; } + void* getDzsData() { return mp_dzsData; } void setFileList2(dStage_FileList2_dt_c* i_fileList) { m_fileList2 = i_fileList; } void setTresure(dTres_c::list_class* i_list) { mp_tresure = i_list; } void setMapPath(dDrawPath_c::room_class* i_path) { mp_mapPath = i_path; } + void setDzsData(void* i_dzsData) { mp_dzsData = i_dzsData; } /* 0x0 */ dTres_c::list_class* mp_tresure; /* 0x4 */ dStage_FileList2_dt_c* m_fileList2; @@ -69,12 +88,30 @@ public: /* 8003D868 */ void buildTresTypeGroup(int, int, int); /* 8003D92C */ void buildFmapRoomData(int, int, f32, f32, f32, f32); + dMenu_Fmap_room_data_c(u8 i_roomNo, dMenu_Fmap_stage_data_c* i_stageData, + dMenu_Fmap_data_c* i_data) { + mp_fmapData = i_data; + mp_fmpTresTypeGroupDataListAll = NULL; + mp_nextData = NULL; + mp_parentStage = i_stageData; + m_roomNo = i_roomNo; + } + + ~dMenu_Fmap_room_data_c() { + if (mp_fmpTresTypeGroupDataListAll != NULL) { + delete mp_fmpTresTypeGroupDataListAll; + } + } + + fmpTresTypeGroupDataListAll_c* getTypeGroupDataListAll() { return mp_fmpTresTypeGroupDataListAll; } f32 getFileList2MinX() { return mp_fmapData->getFilelist2MinX(); } f32 getFileList2MinZ() { return mp_fmapData->getFilelist2MinZ(); } f32 getFileList2MaxX() { return mp_fmapData->getFilelist2MaxX(); } f32 getFileList2MaxZ() { return mp_fmapData->getFilelist2MaxZ(); } dMenu_Fmap_room_data_c* getNextData() { return mp_nextData; } + dMenu_Fmap_data_c* getFmapData() { return mp_fmapData; } int getRoomNo() { return m_roomNo; } + void setNextData(dMenu_Fmap_room_data_c* i_nextData) { mp_nextData = i_nextData; } /* 0x00 */ dMenu_Fmap_data_c* mp_fmapData; /* 0x04 */ fmpTresTypeGroupDataListAll_c* mp_fmpTresTypeGroupDataListAll; @@ -85,11 +122,14 @@ public: class dMenu_Fmap_stage_arc_data_c { public: + u8 getSaveTableNo() { return mSaveTableNo; } u8 getVisitedRoomSaveTableNo() { return mVisitedRoomSaveTableNo; } - /* 0x0 */ u8 field_0x0; + /* 0x0 */ u8 mSize; /* 0x1 */ u8 mSaveTableNo; /* 0x2 */ u8 mVisitedRoomSaveTableNo; + /* 0x3 */ u8 field_0x3; + /* 0x4 */ u8 mRoomNos[0]; }; class dMenu_Fmap_stage_data_c { @@ -97,8 +137,47 @@ public: /* 8003D95C */ bool isArrival(); /* 8003D9D8 */ int buildFmapStageData(int, f32, f32); + dMenu_Fmap_stage_data_c() { + mpStageArc = NULL; + mp_roomTop = NULL; + mpNextData = NULL; + m_stageMinX = 0.0f; + m_stageMinZ = 0.0f; + m_stageMaxX = 0.0f; + m_stageMaxZ = 0.0f; + m_offsetX = 0.0f; + m_offsetZ = 0.0f; + for (int i = 0; i < 8; i++) { + name[i] = '\0'; + } + } + + f32 getStageCenterX() { return (m_stageMaxX + m_stageMinX) * 0.5f; } + f32 getStageCenterZ() { return (m_stageMaxZ + m_stageMinZ) * 0.5f; } + f32 getStageCenterX_CoordRegion() { return m_offsetX + getStageCenterX(); } + f32 getStageCenterZ_CoordRegion() { return m_offsetZ + getStageCenterZ(); } + char* getStageName() { return name; } dMenu_Fmap_stage_arc_data_c* getStageArc() { return mpStageArc; } dMenu_Fmap_stage_data_c* getNextData() { return mpNextData; } + dMenu_Fmap_room_data_c* getFmapRoomDataTop() { return mp_roomTop; } + f32 getOffsetX() { return m_offsetX; } + f32 getOffsetZ() { return m_offsetZ; } + f32 getStageMinX() { return m_stageMinX; } + f32 getStageMinZ() { return m_stageMinZ; } + f32 getStageMaxX() { return m_stageMaxX; } + f32 getStageMaxZ() { return m_stageMaxZ; } + void setStageArc(dMenu_Fmap_stage_arc_data_c* i_stageArc) { mpStageArc = i_stageArc; } + void setFmapRoomDataTop(dMenu_Fmap_room_data_c* i_roomTop) { mp_roomTop = i_roomTop; } + void setNextData(dMenu_Fmap_stage_data_c* i_nextData) { mpNextData = i_nextData; } + void setStageCntNo(int i_no) { m_stageCntNo = i_no; } + void setOffsetX(f32 i_offsetX) { m_offsetX = i_offsetX; } + void setOffsetZ(f32 i_offsetZ) { m_offsetZ = i_offsetZ; } + + void setName(char* i_name) { + for (int i = 0; i < 8; i++) { + name[i] = i_name[i]; + } + } /* 0x00 */ char name[8]; /* 0x08 */ dMenu_Fmap_stage_arc_data_c* mpStageArc; @@ -116,8 +195,41 @@ public: class dMenu_Fmap_region_data_c { public: /* 8003DB48 */ dMenu_Fmap_stage_data_c* getMenuFmapStageData(int); - /* 8003DB70 */ void getPointStagePathInnerNo(f32, f32, int, int*, int*); - /* 8003DEE0 */ void buildFmapRegionData(int); + /* 8003DB70 */ int getPointStagePathInnerNo(f32, f32, int, int*, int*); + /* 8003DEE0 */ int buildFmapRegionData(int); + + dMenu_Fmap_region_data_c(int i_no, dMenu_Fmap_stage_data_c* i_stageData, + f32 i_offsetX, f32 i_offsetZ) { + mpMenuFmapStageDataTop = i_stageData; + mpNextData = NULL; + mRegionOffsetX = i_offsetX; + mRegionOffsetZ = i_offsetZ; + mRegionMinX = 0.0f; + mRegionMaxX = 0.0f; + mRegionMinZ = 0.0f; + mRegionMaxZ = 0.0f; + mRegionNo = i_no; + buildFmapRegionData(0); + } + + f32 getStageCenterX_CoordWorld(int i_stageNo) { + return mRegionOffsetX + getMenuFmapStageData(i_stageNo)->getStageCenterX_CoordRegion(); + } + + f32 getStageCenterZ_CoordWorld(int i_stageNo) { + return mRegionOffsetZ + getMenuFmapStageData(i_stageNo)->getStageCenterZ_CoordRegion(); + } + + dMenu_Fmap_stage_data_c* getMenuFmapStageDataTop() { return mpMenuFmapStageDataTop; } + dMenu_Fmap_region_data_c* getNextData() { return mpNextData; } + f32 getRegionOffsetX() { return mRegionOffsetX; } + f32 getRegionOffsetZ() { return mRegionOffsetZ; } + f32 getRegionMinX() { return mRegionMinX; } + f32 getRegionMaxX() { return mRegionMaxX; } + f32 getRegionMinZ() { return mRegionMinZ; } + f32 getRegionMaxZ() { return mRegionMaxZ; } + int getRegionNo() { return mRegionNo; } + void setNextData(dMenu_Fmap_region_data_c* i_data) { mpNextData = i_data; } /* 0x00 */ dMenu_Fmap_stage_data_c* mpMenuFmapStageDataTop; /* 0x04 */ dMenu_Fmap_region_data_c* mpNextData; @@ -130,9 +242,17 @@ public: /* 0x20 */ int mRegionNo; }; -struct dMenu_Fmap_world_data_c { +class dMenu_Fmap_world_data_c { +public: /* 8003E028 */ void create(dMenu_Fmap_region_data_c*); - /* 8003E04C */ void buildFmapWorldData(); + /* 8003E04C */ int buildFmapWorldData(); + + dMenu_Fmap_world_data_c(dMenu_Fmap_region_data_c* i_regionData) { create(i_regionData); } + dMenu_Fmap_region_data_c* getMenuFmapRegionTop() { return mp_fmapRegionData; } + f32 getWorldMinX() { return m_worldMinX; } + f32 getWorldMinZ() { return m_worldMinZ; } + f32 getWorldMaxX() { return m_worldMaxX; } + f32 getWorldMaxZ() { return m_worldMaxZ; } /* 0x00 */ dMenu_Fmap_region_data_c* mp_fmapRegionData; /* 0x04 */ f32 m_worldMinX; @@ -141,21 +261,38 @@ struct dMenu_Fmap_world_data_c { /* 0x10 */ f32 m_worldMaxZ; }; -struct dMenuFmapIconPointer_c { - /* 8003E114 */ void init(dMenu_Fmap_region_data_c*, dMenu_Fmap_stage_data_c*, u8, int, int); - /* 8003E1C0 */ void getFirstData(); - /* 8003E2BC */ void getData(); +class dMenuFmapIconPointer_c { +public: + /* 8003E114 */ bool init(dMenu_Fmap_region_data_c*, dMenu_Fmap_stage_data_c*, u8, int, int); + /* 8003E1C0 */ bool getFirstData(); + /* 8003E2BC */ bool getData(); /* 8003E350 */ void getFirstRoomData(); - /* 8003E37C */ void getNextRoomData(); - /* 8003E3A4 */ void getNextStageData(); - /* 8003E3D8 */ void getNextData(); - /* 8003E490 */ void nextData(); - /* 8003E510 */ void getValidData(); + /* 8003E37C */ bool getNextRoomData(); + /* 8003E3A4 */ bool getNextStageData(); + /* 8003E3D8 */ bool getNextData(); + /* 8003E490 */ bool nextData(); + /* 8003E510 */ bool getValidData(); + + /* 0x00 */ int mStageNo; + /* 0x04 */ int mStayStageNo; + /* 0x08 */ int mStayRoomNo; + /* 0x0C */ int mSaveTbl; + /* 0x10 */ dMenu_Fmap_region_data_c* mpRegionData; + /* 0x14 */ dMenu_Fmap_stage_data_c* mpStageData; + /* 0x18 */ dMenu_Fmap_room_data_c* mpRoomData; + /* 0x1C */ fmpTresTypeGroupDataListAll_c* mpFmpTresTypeGroupDataListAll; + /* 0x20 */ fmpTresTypeGroupDataList_c* mpFmpTresTypeGroupDataList; + /* 0x24 */ fmpTresTypeGroupData_c* mpFmpTresTypeGroupData; + /* 0x28 */ dTres_c::typeGroupData_c* mpTresTypeGroupData; + /* 0x2C */ const dTres_c::data_s* mpTresData; + /* 0x30 */ u8 mTypeGroupNo; + /* 0x31 */ u8 mType; }; -struct dMenuFmapIconDisp_c { - /* 8003E578 */ void getPosition(int*, int*, f32*, f32*, dTres_c::data_s const**); - /* 8003E6E8 */ void isDrawDisp(); +class dMenuFmapIconDisp_c : public dMenuFmapIconPointer_c { +public: + /* 8003E578 */ bool getPosition(int*, int*, f32*, f32*, dTres_c::data_s const**); + /* 8003E6E8 */ virtual bool isDrawDisp(); }; #endif /* D_MAP_D_MAP_PATH_FMAP_H */ diff --git a/include/d/menu/d_menu_fmap.h b/include/d/menu/d_menu_fmap.h index 6010022c69..065b515850 100644 --- a/include/d/menu/d_menu_fmap.h +++ b/include/d/menu/d_menu_fmap.h @@ -2,14 +2,17 @@ #define D_MENU_D_MENU_FMAP_H #include "SSystem/SComponent/c_xyz.h" +#include "d/menu/d_menu_map_common.h" #include "d/msg/d_msg_flow.h" struct CSTControl; class J2DAnmTextureSRTKey; class JKRArchive; +class JKRAramArchive; class JKRExpHeap; class JKRHeap; class STControl; +class ResTIMG; class dMenu_Fmap_stage_data_c; class dMenu_Fmap_world_data_c; class dMenu_Fmap_region_data_c; @@ -17,10 +20,91 @@ class dMenu_Fmap2DBack_c; class dMenu_Fmap2DTop_c; class dMenu_FmapMap_c; class mDoDvdThd_mountArchive_c; -struct RoomData_c; + +// Unknown name +class dMenu_Fmap_field_data_c { +public: + /* 0x00 */ u32 field_0x0; + /* 0x04 */ u32 mStageDataOffset; + /* 0x08 */ u32 mRegionDataOffset; + /* 0x0C */ u32 mVirtualStageOffset; + /* 0x10 */ u32 mRoomDataOffset; +}; + +// Unknown name +class dMenu_Fmap_field_region_data_c { +public: + struct data { + /* 0x00 */ u8 mTextureReadNum; + /* 0x01 */ u8 field_0x1; + /* 0x02 */ u16 mTitleName; + /* 0x04 */ f32 mOriginX; + /* 0x08 */ f32 mOriginZ; + /* 0x0C */ f32 field_0xc; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ f32 field_0x1c; + /* 0x20 */ f32 field_0x20; + /* 0x24 */ f32 field_0x24; + }; + + /* 0x0 */ u8 mCount; + /* 0x4 */ data mData[0]; +}; + +// Unknown name +class dMenu_Fmap_virtual_stage_data_c { +public: + struct data { + /* 0x0 */ char mStageName[8]; + /* 0x8 */ char mVirtualStageName[8]; + }; + + /* 0x0 */ u8 mCount; + /* 0x1 */ u8 pad[3]; + /* 0x4 */ data mData[0]; +}; + +// Unknown name +class dMenu_Fmap_field_room_data_c { +public: + struct data { + /* 0x0 */ char mStageName[8]; + /* 0x8 */ u16 mAreaName; + /* 0xA */ u8 mCount; + /* 0xB */ u8 mRoomNos[0]; + }; + + /* 0x0 */ u8 mCount; + /* 0x1 */ u8 pad[3]; + /* 0x4 */ data mData[0]; +}; + +// Unknown name +class dMenu_Fmap_portal_data_c { +public: + struct data { + /* 0x00 */ u8 mSelectWarpPt; + /* 0x01 */ u8 mRegionNo; + /* 0x02 */ const char mStageName[8]; + /* 0x0A */ u8 mRoomNo; + /* 0x0B */ u8 mWarpPlayerNo; + /* 0x0C */ u16 mMessageID; + /* 0x0E */ u8 mStageNo; + /* 0x0F */ u8 mSwitchNo; + /* 0x10 */ cXyz mPosition; + }; + + /* 0x0 */ u8 field_0x0[8]; + /* 0x8 */ u8 mCount; + /* 0xC */ data mData[0]; +}; class dMenu_Fmap_c { public: + typedef void (dMenu_Fmap_c::*process)(); + /* 801C66E4 */ dMenu_Fmap_c(JKRExpHeap*, STControl*, CSTControl*, u8, u8, u8, f32, f32, u8); /* 801C6D64 */ void _create(); /* 801C74A4 */ void _delete(); @@ -95,26 +179,26 @@ public: /* 801CB230 */ u8 getStageCursor(); /* 801CB260 */ f32 getStageTransX(); /* 801CB290 */ f32 getStageTransZ(); - /* 801CB2C0 */ void isRoomCheck(int, int); - /* 801CB570 */ void checkStRoomData(); + /* 801CB2C0 */ bool isRoomCheck(int, int); + /* 801CB570 */ u16 checkStRoomData(); /* 801CB664 */ void talkButton(); /* 801CB6D0 */ void setProcess(u8); /* 801CB6E0 */ void setFlash(u8, bool); - /* 801CB770 */ void readWorldData(u8); - /* 801CB938 */ void readAreaData(u8, bool); - /* 801CBF04 */ void readRoomData(char const*, dMenu_Fmap_stage_data_c*, void*, int, u8); - /* 801CC094 */ void readFieldMapData(void**, char const*, bool, bool); + /* 801CB770 */ bool readWorldData(u8); + /* 801CB938 */ bool readAreaData(u8, bool); + /* 801CBF04 */ bool readRoomData(char const*, dMenu_Fmap_stage_data_c*, void*, int, u8); + /* 801CC094 */ bool readFieldMapData(void**, char const*, bool, bool); /* 801CC2B0 */ void decodeFieldMapData(); /* 801CC4EC */ void decodePortalData(); - /* 801CC51C */ void readRoomDzsData(void**, u32, char const*); - /* 801CC61C */ void removeAreaData(); - /* 801CC7A8 */ void removeRoomData(dMenu_Fmap_stage_data_c*); + /* 801CC51C */ bool readRoomDzsData(void**, u32, char const*); + /* 801CC61C */ bool removeAreaData(); + /* 801CC7A8 */ bool removeRoomData(dMenu_Fmap_stage_data_c*); /* 801CC85C */ void setTitleName(u32); /* 801CC880 */ void setAreaName(u32); /* 801CC8AC */ void setAreaNameZero(); /* 801CC8DC */ void portalWarpMapMove(STControl*); /* 801CCA70 */ void onRoomDataBit(int); - /* 801CCA98 */ void isRoomDataBit(int); + /* 801CCA98 */ BOOL isRoomDataBit(int); /* 801CCAC4 */ void resetRoomDataBit(); /* 801CCB08 */ void drawIcon(f32, bool); /* 801CD10C */ void drawIcon(u8, int); @@ -124,97 +208,144 @@ public: /* 801CCE48 */ void drawGoldWolfIcon(); /* 801CCE70 */ void drawCoachIcon(); /* 801CCE98 */ void drawPlayEnterIcon(); - /* 801CCFB0 */ void checkDrawPortalIcon(int, int); - /* 801CD000 */ void searchIcon(u8, int, f32*, f32*); + /* 801CCFB0 */ bool checkDrawPortalIcon(int, int); + /* 801CD000 */ bool searchIcon(u8, int, f32*, f32*); /* 801CD210 */ void drawEnterIcon(); /* 801CD254 */ void drawPortalIcon(); - /* 801CD2FC */ void getRegionStageNum(int); - /* 801CD350 */ void getNowFmapRegionData(); - /* 801CD368 */ void getNowFmapStageData(); - /* 801CD380 */ void searchPortalStageID(char*); + /* 801CD2FC */ u8 getRegionStageNum(int); + /* 801CD350 */ dMenu_Fmap_region_data_c* getNowFmapRegionData(); + /* 801CD368 */ dMenu_Fmap_stage_data_c* getNowFmapStageData(); + /* 801CD380 */ u8 searchPortalStageID(char*); /* 801CD3F0 */ void drawDebugStage(); /* 801CD460 */ void arrowPosInit(); /* 801CD5CC */ void tableArrowPosInit(bool); /* 801CD770 */ void yamibossArrowPosInit(); /* 801CD814 */ void howlArrowPosInit(); - /* 801CD8B4 */ void getHowlRegionID(); - /* 801CD92C */ void isLightVesselGet(); - /* 801CD95C */ void getPlayerPos2D(); + /* 801CD8B4 */ u8 getHowlRegionID(); + /* 801CD92C */ bool isLightVesselGet(); + /* 801CD95C */ cXyz* getPlayerPos2D(); /* 801C6AC8 */ virtual ~dMenu_Fmap_c(); - static u8 MyClass[4]; + enum process_e { + /* 0x00 */ PROC_ALL_MAP, + /* 0x01 */ PROC_PORTAL_DEMO2, + /* 0x02 */ PROC_PORTAL_DEMO3, + /* 0x03 */ PROC_TABLE_DEMO1, + /* 0x04 */ PROC_ZOOM_ALL_TO_REGION, + /* 0x05 */ PROC_ZOOM_REGION_TO_ALL, + /* 0x06 */ PROC_REGION_MAP, + /* 0x07 */ PROC_TO_PORTAL_WARP_MAP, + /* 0x08 */ PROC_PORTAL_WARP_MAP, + /* 0x09 */ PROC_PORTAL_WARP_SELECT, + /* 0x0A */ PROC_PORTAL_WARP_FORBID, + /* 0x0B */ PROC_ZOOM_REGION_TO_SPOT, + /* 0x0C */ PROC_ZOOM_SPOT_TO_REGION, + /* 0x0D */ PROC_SPOT_MAP, + /* 0x0E */ PROC_PORTAL_DEMO1, + /* 0x0F */ PROC_PORTAL_DEMO4, + /* 0x10 */ PROC_PORTAL_DEMO5, + /* 0x11 */ PROC_PORTAL_DEMO6, + /* 0x12 */ PROC_YAMIBOSS_DEMO1, + /* 0x13 */ PROC_YAMIBOSS_DEMO2, + /* 0x14 */ PROC_YAMIBOSS_DEMO3, + /* 0x15 */ PROC_YAMIBOSS_DEMO4, + /* 0x16 */ PROC_YAMIBOSS_DEMO5, + /* 0x17 */ PROC_LIGHT_DEMO1, + /* 0x18 */ PROC_LIGHT_DEMO2, + /* 0x19 */ PROC_TABLE_DEMO2, + /* 0x1A */ PROC_TABLE_DEMO3, + /* 0x1B */ PROC_HOWL_DEMO1, + /* 0x1C */ PROC_HOWL_DEMO2, + /* 0x1D */ PROC_HOWL_DEMO3, + }; + + static dMenu_Fmap_c* MyClass; private: - /* 0x004 */ JKRHeap* mpHeap; + /* 0x004 */ JKRExpHeap* mpHeap; /* 0x008 */ JKRExpHeap* mpTalkHeap; /* 0x00C */ STControl* mpStick; /* 0x010 */ CSTControl* mpCStick; /* 0x014 */ dMenu_Fmap2DBack_c* mpDraw2DBack; /* 0x018 */ dMenu_Fmap2DTop_c* mpDraw2DTop; - /* 0x01C */ mDoDvdThd_mountArchive_c* field_0x1c; + /* 0x01C */ mDoDvdThd_mountArchive_c* mpMountArchive; /* 0x020 */ dMenu_Fmap_world_data_c* mpWorldData; - /* 0x024 */ dMenu_Fmap_region_data_c* field_0x24[8]; - /* 0x044 */ dMenu_Fmap_stage_data_c* field_0x44[8]; - /* 0x064 */ JKRArchive* field_0x64; - /* 0x068 */ int field_0x68; - /* 0x06C */ RoomData_c* field_0x6c[8]; - /* 0x08C */ void* field_0x8c; - /* 0x090 */ void* field_0x90; - /* 0x094 */ int field_0x94[8]; + /* 0x024 */ dMenu_Fmap_region_data_c* mpRegionData[8]; + /* 0x044 */ dMenu_Fmap_stage_data_c* mpStageData[8]; + /* 0x064 */ JKRAramArchive* mpMapArchive; + /* 0x068 */ JKRArchive* mpResArchive; + /* 0x06C */ dMenuMapCommon_c::RoomData_c* mpRoomData[8]; + /* 0x08C */ dMenu_Fmap_field_data_c* mpFieldDat; + /* 0x090 */ dMenu_Fmap_portal_data_c* mpPortalDat; + /* 0x094 */ ResTIMG* mRegionTexture[8]; /* 0x0B4 */ int field_0xb4; /* 0x0B8 */ dMenu_FmapMap_c* mpMenuFmapMap; - /* 0x0BC */ int field_0xbc; - /* 0x0C0 */ u8* field_0xc0; - /* 0x0C4 */ dMsgFlow_c field_0xc4; - /* 0x110 */ cXyz field_0x110; - /* 0x11C */ f32 field_0x11c; - /* 0x120 */ f32 field_0x120; - /* 0x124 */ f32 field_0x124; + /* 0x0BC */ void* mpFmapMapRes; + /* 0x0C0 */ u8* mFlashRooms; + /* 0x0C4 */ dMsgFlow_c mMsgFlow; + /* 0x110 */ cXyz mPlayerPos; + /* 0x11C */ f32 mTransX; + /* 0x120 */ f32 mTransY; + /* 0x124 */ f32 mAlphaRatio; /* 0x128 */ f32 field_0x128[8]; /* 0x148 */ f32 field_0x148[8]; /* 0x168 */ f32 field_0x168[8]; /* 0x188 */ f32 field_0x188[8]; - /* 0x1A8 */ f32 field_0x1a8; - /* 0x1AC */ f32 field_0x1ac[8]; - /* 0x1CC */ f32 field_0x1cc[8]; + /* 0x1A8 */ f32 mSpotTextureFadeAlpha; + /* 0x1AC */ f32 mRegionOffsetX[8]; + /* 0x1CC */ f32 mRegionOffsetZ[8]; /* 0x1EC */ f32 field_0x1ec; - /* 0x1F0 */ f32 field_0x1f0; - /* 0x1F4 */ f32 field_0x1f4; - /* 0x1F8 */ int field_0x1f8[2]; - /* 0x200 */ int field_0x200; - /* 0x204 */ int field_0x204; - /* 0x208 */ int field_0x208; - /* 0x20C */ int field_0x20c; - /* 0x210 */ u16 field_0x210; - /* 0x212 */ u16 field_0x212; - /* 0x214 */ u16 field_0x214; - /* 0x216 */ u16 field_0x216; - /* 0x218 */ u16 field_0x218[8]; - /* 0x228 */ u16 field_0x228[20]; - /* 0x250 */ char field_0x250[8]; - /* 0x258 */ char field_0x258[8]; - /* 0x260 */ char field_0x260[20][8]; + /* 0x1F0 */ f32 mOldStageTransX; + /* 0x1F4 */ f32 mOldStageTransZ; + /* 0x1F8 */ u32 mRoomDataBits[2]; + /* 0x200 */ u32 field_0x200; + /* 0x204 */ int mStageCursor; + /* 0x208 */ int mRoomCursor; + /* 0x20C */ int mStayStageNo; + /* 0x210 */ s16 field_0x210; + /* 0x212 */ s16 mDisplayFrame; + /* 0x214 */ s16 mZoomLevel; + /* 0x216 */ u16 mAllTitleName; + /* 0x218 */ u16 mTitleName[8]; + /* 0x228 */ u16 mAreaName[20]; + /* 0x250 */ char mMarkedStageName[8]; + /* 0x258 */ char mTmpStageName[8]; + /* 0x260 */ char mStageName[20][8]; /* 0x300 */ u8 mProcess; - /* 0x301 */ u8 field_0x301; - /* 0x302 */ u8 field_0x302; + /* 0x301 */ u8 mPrevProcess; + /* 0x302 */ u8 mPrevProcessAlt; /* 0x303 */ u8 mDataNumMax; - /* 0x304 */ u8 field_0x304; - /* 0x305 */ u8 field_0x305; + /* 0x304 */ u8 mPanDirection; + /* 0x305 */ bool field_0x305; /* 0x306 */ u8 mSpotNum; - /* 0x307 */ u8 field_0x307; - /* 0x308 */ u8 field_0x308; - /* 0x309 */ u8 field_0x309; - /* 0x30A */ u8 field_0x30a; - /* 0x30B */ u8 field_0x31b; - /* 0x30C */ u8 field_0x31c; - /* 0x30D */ u8 field_0x31d; - /* 0x30E */ u8 field_0x30e; + /* 0x307 */ bool mIsWarpMap; + /* 0x308 */ u8 mPortalNo; + /* 0x309 */ bool mErrorSound; + /* 0x30A */ u8 mStartStageNo; + /* 0x30B */ bool field_0x30b; + /* 0x30C */ u8 mOldRegionCursor; + /* 0x30D */ u8 mOldStageCursor; + /* 0x30E */ u8 mFlashRoomCount; /* 0x30F */ u8 field_0x30f; /* 0x310 */ u8 field_0x310; - /* 0x311 */ u8 field_0x311; - /* 0x312 */ u8 field_0x312; - /* 0x313 */ u8 field_0x313; + /* 0x311 */ u8 mRegionNo; + /* 0x312 */ bool mResetAreaName; + /* 0x313 */ bool mAreaNameSet; +}; + +class dMf_HIO_c { +public: + /* 801C65F8 */ dMf_HIO_c(); + /* 801CDA2C */ virtual ~dMf_HIO_c() {} + + /* 0x04 */ u8 field_0x4[4]; + /* 0x08 */ f32 mBackAnimeStep; + /* 0x0C */ f32 mTopAnimeStep; + /* 0x10 */ u8 mBaseBackAlpha; + /* 0x11 */ u8 mMoyaAlpha; + + static dMf_HIO_c* mMySelfPointer; }; const char* dMenuFmap_getStartStageName(void* param_0); diff --git a/include/d/menu/d_menu_fmap2D.h b/include/d/menu/d_menu_fmap2D.h index fc13ceacd0..2467c2b708 100644 --- a/include/d/menu/d_menu_fmap2D.h +++ b/include/d/menu/d_menu_fmap2D.h @@ -9,6 +9,8 @@ #include "d/pane/d_pane_class.h" #include "dolphin/types.h" +class dMsgScrnExplain_c; + class dMenu_Fmap2DBack_c : public dDlst_base_c, public dMenuMapCommon_c { public: /* 801CF56C */ dMenu_Fmap2DBack_c(); @@ -87,17 +89,84 @@ public: field_0x1244 = param_2; } - u8 isArrowDrawFlag() { return mArrowDrawFlag; } + void setAllTrans(f32 i_transX, f32 i_transZ) { + mTransX = i_transX; + mTransZ = i_transZ; + } + + void setStageTransForceXZ(f32 param_0, f32 param_1) { + mStageTransX = param_0; + mStageTransZ = param_1; + } + + void setStageInfo(u8 i_spotNum, dMenu_FmapMap_c* i_fmapMap) { + mSpotNum = i_spotNum; + mpMenuFmapMap = i_fmapMap; + } + + void setWorldPosMinMax(f32 i_minX, f32 i_minZ, f32 i_maxX, f32 i_maxZ) { + mWorldMinX = i_minX; + mWorldMinZ = i_minZ; + mWorldMaxX = i_maxX; + mWorldMaxZ = i_maxZ; + } + + void setStageOriginXZ(int i_stageNo, f32 i_originX, f32 i_originZ) { + mStageOriginX[i_stageNo] = i_originX; + mStageOriginZ[i_stageNo] = i_originZ; + } + + void setStageOriginPathXZ(int i_stageNo, f32 i_originX, f32 i_originZ) { + mStageOriginPathX[i_stageNo] = i_originX; + mStageOriginPathZ[i_stageNo] = i_originZ; + } + + void setStageData(Stage_c* i_stageData, u8 i_dataNum) { + mpStages = i_stageData; + mStageDataNum = i_dataNum; + } + + void setRegionTextureReadNum(int i_region, u8 i_num) { + mRegionTextureReadNum[i_region] = i_num; + } + + f32 getArrowPos2DX() { return mArrowPos2DX; } + f32 getArrowPos2DY() { return mArrowPos2DY; } + f32 getRenderingPosX() { return mRenderingPosX; } + f32 getRenderingPosZ() { return mRenderingPosZ; } + f32 getStageTransX() { return mStageTransX; } + f32 getStageTransZ() { return mStageTransZ; } + f32 getRenderingScale() { return mRenderingScale; } + f32 getMapZoomRate() { return mMapZoomRate; } + u8 getRegionCursor() { return mRegionCursor; } + u8 getSpotCursor() { return mSpotCursor; } + u8 getSelectRegion() { return mSelectRegion; } + bool getAllPathShowFlag() { return mAllPathShowFlag; } + f32 getRegionOriginX(u8 i_region) { return mRegionOriginX[i_region]; } + f32 getRegionOriginZ(u8 i_region) { return mRegionOriginZ[i_region]; } + + void setArrowAlpha(f32 i_alpha) { mArrowAlpha = i_alpha; } + void setSpotTextureFadeAlpha(f32 i_alpha) { mSpotTextureFadeAlpha = i_alpha; } + void setRegionCursor(u8 i_value) { mRegionCursor = i_value; } + void setMapDrawFlag(bool i_flag) { mMapDrawFlag = i_flag; } + void resetDrug() { field_0x1238 = 0; } + + void offArrowDrawFlag() { mArrowDrawFlag = false; } + void onArrowDrawFlag() { mArrowDrawFlag = true; } + bool isArrowDrawFlag() { return mArrowDrawFlag; } void onShowRegionFlag(int region_bit) { mRegionFlag |= ((1 << region_bit) & 0xFF); } bool isShowRegionFlag(int region_bit) { return mRegionFlag & ((1 << region_bit) & 0xFF); } - struct unkData { - /* 0x00 */ float field_0x0; - /* 0x04 */ float field_0x4; - /* 0x08 */ float field_0x8; - /* 0x0C */ float field_0xc; - /* 0x10 */ float field_0x10; + void mapBlink() {} + + // Unknown name + struct RegionTexData { + /* 0x00 */ float mMinX; + /* 0x04 */ float mMinZ; + /* 0x08 */ float mMaxX; + /* 0x0C */ float mMaxZ; + /* 0x10 */ float mScale; }; /* 0x0C98 */ J2DScreen* mpBackScreen; @@ -110,71 +179,71 @@ public: /* 0x0CB4 */ J2DPicture* mpAreaTex[8]; /* 0x0CD4 */ J2DPicture* mpSpotTexture; /* 0x0CD8 */ J2DScreen* mpPointScreen; - /* 0x0CDC */ u32 field_0xcdc; + /* 0x0CDC */ dMenu_FmapMap_c* mpMenuFmapMap; /* 0x0CE0 */ dMeterHaihai_c* mpMeterHaihai; - /* 0x0CE4 */ J2DAnmBase* mpBaseAnm; - /* 0x0CE8 */ unkData field_0xce8[8]; + /* 0x0CE4 */ J2DAnmTextureSRTKey* mpBaseAnm; + /* 0x0CE8 */ RegionTexData mRegionTexData[8]; /* 0x0D88 */ Stage_c* mpStages; - /* 0x0D8C */ float field_0xd8c[8]; - /* 0x0D0C */ float field_0xdac[8]; - /* 0x0D0C */ float field_0xdcc[8]; - /* 0x0D0C */ float field_0xdec[8]; - /* 0x0E0C */ float field_0xe0c[8]; - /* 0x0E2C */ float field_0xe2c[8]; - /* 0x0E4C */ float field_0xe4c[8]; - /* 0x0E6C */ float field_0xe6c[8]; - /* 0x0E8C */ float field_0xe8c[8]; - /* 0x0EAC */ float field_0xeac[8]; - /* 0x0ECC */ float field_0xecc[8]; - /* 0x0EEC */ float field_0xeec[8]; + /* 0x0D8C */ float mRegionScrollMinX[8]; + /* 0x0D0C */ float mRegionScrollMinZ[8]; + /* 0x0D0C */ float mRegionScrollMaxX[8]; + /* 0x0D0C */ float mRegionScrollMaxZ[8]; + /* 0x0E0C */ float mRegionScrollMapMinX[8]; + /* 0x0E2C */ float mRegionScrollMapMinY[8]; + /* 0x0E4C */ float mRegionScrollMapMaxX[8]; + /* 0x0E6C */ float mRegionScrollMapMaxY[8]; + /* 0x0E8C */ float mRegionMinMapX[8]; + /* 0x0EAC */ float mRegionMinMapY[8]; + /* 0x0ECC */ float mRegionMapSizeX[8]; + /* 0x0EEC */ float mRegionMapSizeY[8]; /* 0x0F0C */ float field_0xf0c[8]; /* 0x0F2C */ float field_0xf2c[8]; /* 0x0F4C */ float field_0xf4c[8]; /* 0x0F6C */ float field_0xf6c[8]; - /* 0x0F8C */ float field_0xf8c; - /* 0x0F90 */ float field_0xf90; - /* 0x0F94 */ float field_0xf94; + /* 0x0F8C */ float mRenderingPosX; + /* 0x0F90 */ float mRenderingPosZ; + /* 0x0F94 */ float mRenderingScale; /* 0x0F98 */ float field_0xf98; - /* 0x0F9C */ float field_0xf9c; // Likely called mZoom or something similar - /* 0x0FA0 */ float field_0xfa0; + /* 0x0F9C */ float mZoom; + /* 0x0FA0 */ float mMapZoomRate; /* 0x0FA4 */ float field_0xfa4; /* 0x0FA8 */ float field_0xfa8; - /* 0x0FAC */ float field_0xfac; + /* 0x0FAC */ float mAnmFrame; /* 0x0FB0 */ float field_0xfb0; /* 0x0FB4 */ float field_0xfb4; /* 0x0FB8 */ float field_0xfb8; - /* 0x0FBC */ float field_0xfbc; - /* 0x0FC0 */ float field_0xfc0; - /* 0x0FC4 */ float field_0xfc4; - /* 0x0FC8 */ float field_0xfc8; - /* 0x0FCC */ float field_0xfcc; + /* 0x0FBC */ float mTransX; + /* 0x0FC0 */ float mTransZ; + /* 0x0FC4 */ float mAlphaRate; + /* 0x0FC8 */ float mStageTransX; + /* 0x0FCC */ float mStageTransZ; /* 0x0FD0 */ float field_0xfd0; /* 0x0FD4 */ float field_0xfd4; /* 0x0FD8 */ float field_0xfd8; /* 0x0FDC */ float field_0xfdc; - /* 0x0FE0 */ float field_0xfe0; - /* 0x0FE4 */ float field_0xfe4; - /* 0x0FE8 */ float field_0xfe8; - /* 0x0FEC */ float field_0xfec; + /* 0x0FE0 */ float mTexMinX; + /* 0x0FE4 */ float mTexMinZ; + /* 0x0FE8 */ float mTexMaxX; + /* 0x0FEC */ float mTexMaxZ; /* 0x0FF0 */ float mAllMapScaleRate; - /* 0x0FF4 */ float field_0xff4; - /* 0x0FF8 */ float field_0xff8; - /* 0x0FFC */ float field_0xffc; - /* 0x1000 */ float field_0x1000; - /* 0x1004 */ float field_0x1004[8]; - /* 0x1024 */ float field_0x1024[8]; - /* 0x1044 */ float field_0x1044[20]; - /* 0x1094 */ float field_0x1094[20]; - /* 0x10E4 */ float field_0x10e4[20]; - /* 0x1134 */ float field_0x1134[20]; + /* 0x0FF4 */ float mWorldMinX; + /* 0x0FF8 */ float mWorldMinZ; + /* 0x0FFC */ float mWorldMaxX; + /* 0x1000 */ float mWorldMaxZ; + /* 0x1004 */ float mRegionOriginX[8]; + /* 0x1024 */ float mRegionOriginZ[8]; + /* 0x1044 */ float mStageOriginX[20]; + /* 0x1094 */ float mStageOriginZ[20]; + /* 0x10E4 */ float mStageOriginPathX[20]; + /* 0x1134 */ float mStageOriginPathZ[20]; /* 0x1184 */ float field_0x1184; /* 0x1188 */ float field_0x1188; - /* 0x118C */ float field_0x118c; - /* 0x1190 */ float field_0x1190; - /* 0x1194 */ float field_0x1194; - /* 0x1198 */ float field_0x1198; - /* 0x119C */ float control_ypos; - /* 0x11A0 */ float control_xpos; + /* 0x118C */ float mArrowPos3DX; + /* 0x1190 */ float mArrowPos3DZ; + /* 0x1194 */ float mArrowPos2DX; + /* 0x1198 */ float mArrowPos2DY; + /* 0x119C */ float control_xpos; + /* 0x11A0 */ float control_ypos; /* 0x11A4 */ float field_0x11a4; /* 0x11A8 */ float field_0x11a8; /* 0x11AC */ float field_0x11ac; @@ -187,42 +256,42 @@ public: /* 0x11C8 */ float field_0x11c8; /* 0x11CC */ float field_0x11cc; /* 0x11D0 */ float field_0x11d0; - /* 0x11D4 */ float field_0x11d4; - /* 0x11D8 */ float field_0x11d8; + /* 0x11D4 */ float mArrowAlpha; + /* 0x11D8 */ float mSpotTextureFadeAlpha; /* 0x11DC */ float field_0x11dc; /* 0x11E0 */ float field_0x11e0; - /* 0x11E4 */ float field_0x11e4; + /* 0x11E4 */ float mBackAlpha; /* 0x11E8 */ float field_0x11e8; /* 0x11EC */ float field_0x11ec; - /* 0x11F0 */ JUtility::TColor field_0x11f0; - /* 0x11F4 */ JUtility::TColor field_0x11f4; - /* 0x11F8 */ JUtility::TColor field_0x11f8; - /* 0x11FC */ JUtility::TColor field_0x11fc; - /* 0x1200 */ JUtility::TColor field_0x1200; - /* 0x1204 */ JUtility::TColor field_0x1204; + /* 0x11F0 */ JUtility::TColor mSelectedRegionBlack; + /* 0x11F4 */ JUtility::TColor mSelectedRegionWhite; + /* 0x11F8 */ JUtility::TColor mUnselectedRegionBlack; + /* 0x11FC */ JUtility::TColor mUnselectedRegionWhite; + /* 0x1200 */ JUtility::TColor mUnreachedRegionBlack; + /* 0x1204 */ JUtility::TColor mUnreachedRegionWhite; /* 0x1208 */ JUtility::TColor field_0x1208; /* 0x120C */ JUtility::TColor field_0x120c; /* 0x1210 */ float field_0x1210; /* 0x1214 */ float field_0x1214; - /* 0x1218 */ u16 field_0x1218; - /* 0x121A */ u16 field_0x121a; - /* 0x121C */ u8 field_0x121c[8]; - /* 0x1224 */ u8 field_0x1224; - /* 0x1225 */ u8 field_0x1225; - /* 0x1226 */ u8 field_0x1226; - /* 0x1227 */ u8 field_0x1227; + /* 0x1218 */ s16 field_0x1218; + /* 0x121A */ s16 field_0x121a; + /* 0x121C */ u8 mRegionTextureReadNum[8]; + /* 0x1224 */ u8 mSpotNum; + /* 0x1225 */ u8 mStageDataNum; + /* 0x1226 */ u8 mSelectRegion; + /* 0x1227 */ u8 mRegionCursor; /* 0x1228 */ u8 field_0x1228; - /* 0x1229 */ u8 field_0x1229; + /* 0x1229 */ u8 mSpotCursor; /* 0x122A */ u8 field_0x122a; /* 0x122B */ u8 field_0x122b; /* 0x122C */ u8 mRegionFlag; /* 0x122D */ u8 field_0x122d; - /* 0x122E */ u8 field_0x122e; - /* 0x122F */ u8 field_0x122f; + /* 0x122E */ bool field_0x122e; + /* 0x122F */ bool mAllPathShowFlag; /* 0x1230 */ u8 field_0x1230[8]; /* 0x1238 */ u8 field_0x1238; - /* 0x1239 */ u8 field_0x1239; - /* 0x123A */ u8 mArrowDrawFlag; + /* 0x1239 */ bool mMapDrawFlag; + /* 0x123A */ bool mArrowDrawFlag; /* 0x123B */ u8 field_0x123b; /* 0x123C */ dMenu_FmapMap_c* mpFmapMap; /* 0x1240 */ dMenu_Fmap_region_data_c* mpRegionData; @@ -249,15 +318,90 @@ public: /* 801D77C4 */ void setAlphaAnimeMin(CPaneMgrAlpha*); /* 801D7858 */ void setAlphaAnimeMid(CPaneMgrAlpha*); /* 801D78FC */ void setAlphaAnimeMax(CPaneMgrAlpha*); - /* 801D7994 */ void checkPlayerWarpAccept(); - /* 801D7A08 */ void checkWarpAcceptRegion(int); - /* 801D7AB4 */ void checkWarpAcceptRegion4(); - /* 801D7B58 */ void checkWarpAcceptCannon(); + /* 801D7994 */ bool checkPlayerWarpAccept(); + /* 801D7A08 */ bool checkWarpAcceptRegion(int); + /* 801D7AB4 */ bool checkWarpAcceptRegion4(); + /* 801D7B58 */ bool checkWarpAcceptCannon(); /* 801D7BCC */ void setHIO(bool); - /* 801D8088 */ void isWarpAccept(); + /* 801D8088 */ bool isWarpAccept(); /* 801D6C98 */ virtual void draw(); /* 801D6700 */ virtual ~dMenu_Fmap2DTop_c(); -}; + + void setAllTrans(f32 i_transX, f32 i_transY) { + mTransX = i_transX; + mTransY = i_transY; + } + + dMsgScrnExplain_c* getScrnExplainPtr() { return mpScrnExplain; } + + void setPortalBin(void* i_bin) { mpPortalBin = i_bin; } + void btkAnimeLoop(f32 i_delta) { btkAnimeLoop(mpAnm, i_delta); } + + enum Arrow { + ARROW_UP = 1, + ARROW_DOWN = 2, + ARROW_UPDOWN = ARROW_UP | ARROW_DOWN, + ARROW_LEFT = 4, + ARROW_RIGHT = 8, + ARROW_LEFTRIGHT = ARROW_LEFT | ARROW_RIGHT, + }; + + enum Alpha { + ALPHA_MIN = 0, + ALPHA_MID = 1, + ALPHA_MAX = 2, + ALPHA_DEFAULT = 0xFF, + }; + + /* 0x04 */ JKRExpHeap* mpHeap; + /* 0x08 */ J2DScreen* mpTitleScreen; + /* 0x0C */ CPaneMgrAlphaMorf* mpTitleRoot; + /* 0x10 */ J2DAnmTextureSRTKey* mpAnm; + /* 0x14 */ u8 field_0x14[4]; + /* 0x18 */ CPaneMgr* mpButtonA; + /* 0x1C */ CPaneMgr* mpButtonB; + /* 0x20 */ CPaneMgr* mpButtonZ; + /* 0x24 */ CPaneMgr* mpButtonTextA; + /* 0x28 */ CPaneMgr* mpButtonTextB; + /* 0x2C */ CPaneMgr* mpButtonTextZ; + /* 0x30 */ CPaneMgrAlpha* mpAnalogStickAlpha; + /* 0x34 */ CPaneMgrAlpha* mpDpadAlpha; + /* 0x38 */ CPaneMgrAlpha* mpArrowLAlpha[2]; + /* 0x40 */ CPaneMgrAlpha* mpArrowRAlpha[2]; + /* 0x48 */ u8 field_0x48[8]; + /* 0x50 */ CPaneMgr* mpNamePane; + /* 0x54 */ CPaneMgr* mpSubPane; + /* 0x58 */ CPaneMgr* mpAnalogStick; + /* 0x5C */ CPaneMgr* mpDpad; + /* 0x60 */ CPaneMgr* mpContPane; + /* 0x64 */ u8 field_0x64[8]; + /* 0x6C */ dMsgScrnExplain_c* mpScrnExplain; + /* 0x70 */ void* mpPortalBin; + /* 0x74 */ f32 mAnmFrame; + /* 0x78 */ f32 mTransX; + /* 0x7C */ f32 mTransY; + /* 0x80 */ f32 mAlphaRate; + /* 0x84 */ f32 mTitlePosX; + /* 0x88 */ f32 mTitlePosY; + /* 0x8C */ f32 mTitleScale; + /* 0x90 */ f32 mSubTitlePosX; + /* 0x94 */ f32 mSubTitlePosY; + /* 0x98 */ f32 mSubTitleScale; + /* 0x9C */ f32 mAreaMovementPosX; + /* 0xA0 */ f32 mAreaMovementPosY; + /* 0xA4 */ f32 mAreaMovementScale; + /* 0xA8 */ f32 mClosingPosX; + /* 0xAC */ f32 mClosingPosY; + /* 0xB0 */ f32 mClosingScale; + /* 0xB4 */ f32 mDoIconPosX; + /* 0xB8 */ f32 mDoIconPosY; + /* 0xBC */ f32 mDoIconScale; + /* 0xC0 */ u8 mAlphaButtonA; + /* 0xC1 */ u8 mAlphaButtonB; + /* 0xC2 */ u8 mAlphaButtonZ; + /* 0xC3 */ u8 mAlphaAnalogStick; + /* 0xC4 */ u8 mAlphaDpad; + }; #endif /* D_MENU_D_MENU_FMAP2D_H */ diff --git a/include/d/menu/d_menu_fmap_map.h b/include/d/menu/d_menu_fmap_map.h index 5b0e05b9c5..9e11765d75 100644 --- a/include/d/menu/d_menu_fmap_map.h +++ b/include/d/menu/d_menu_fmap_map.h @@ -1,60 +1,187 @@ #ifndef D_MENU_D_MENU_FMAP_MAP_H #define D_MENU_D_MENU_FMAP_MAP_H +#include "SSystem/SComponent/c_counter.h" #include "dolphin/types.h" #include "d/menu/d_menu_fmap.h" +#include "d/map/d_map.h" #include "d/map/d_map_path.h" +#include "d/map/d_map_path_fmap.h" -class renderingFmap_c { +struct dMfm_prm_res_s { + /* 0x000 */ dMpath_RGB5A3_palDt_s palette_data[27]; + /* 0x0D8 */ GXColor field_0xd8; + /* 0x0DC */ GXColor field_0xdc; + /* 0x0E0 */ GXColor field_0xe0; + /* 0x0E4 */ GXColor field_0xe4; + /* 0x0E8 */ GXColor field_0xe8[8]; + /* 0x108 */ GXColor field_0x108[8]; + /* 0x128 */ GXColor field_0x128[8]; + /* 0x148 */ GXColor field_0x148[8]; + /* 0x168 */ s16 field_0x168; + /* 0x16A */ s16 field_0x16a; + /* 0x16C */ u8 field_0x16c; + /* 0x16D */ u8 field_0x16d; +}; + +struct dMfm_HIO_prm_res_src_s { + /* 0x0 */ u8 mFlashDuration; + + static const dMfm_HIO_prm_res_src_s m_other; +}; + +class renderingFmap_c : public dRenderingFDAmap_c { public: - enum palette_e {}; + enum palette_e { + /* 0x11 */ PALETTE_11 = 0x11, + /* 0x12 */ PALETTE_12, + /* 0x13 */ PALETTE_13, + /* 0x14 */ PALETTE_14, + /* 0x15 */ PALETTE_15, + /* 0x16 */ PALETTE_16, + /* 0x17 */ PALETTE_17, + /* 0x18 */ PALETTE_18, + /* 0x19 */ PALETTE_19, + /* 0x1A */ PALETTE_1A, + }; + + renderingFmap_c() { + mpWorldData = NULL; + mpRegionData = NULL; + mpStageData = NULL; + mpRoomData = NULL; + mpFmapData = NULL; + mpStageArc = NULL; + mStartStageNo = 0; + mRegionIndex = 0; + mStageNo = 0; + mRoomNo = 0; + mRegionNo = 0; + mRoomIndex = 0; + mStageOffsetX = 0.0f; + mStageOffsetZ = 0.0f; + mRegionOffsetX = 0.0f; + mRegionOffsetZ = 0.0f; + field_0xb8 = 0; + mSaveTableNo = 0; + mVisitedRoomSaveTableNo = 0; + mDrawEnable = false; + } /* 801CE15C */ void init(u8*, u16, u16, u16, u16); /* 801CE188 */ void entry(dMenu_Fmap_world_data_c*, int, f32, f32, f32); - /* 801CE224 */ void isSwitchSpecialOff(int); - /* 801CE288 */ void isSwitch(dDrawPath_c::group_class const*); - /* 801CE3C0 */ void getPointStagePathInnerNo(dMenu_Fmap_region_data_c*, f32, f32, int, int*, - int*); + /* 801CE224 */ bool isSwitchSpecialOff(int); + /* 801CE288 */ bool isSwitch(group_class const*); + /* 801CE3C0 */ int getPointStagePathInnerNo(dMenu_Fmap_region_data_c*, f32, f32, int, int*, + int*); /* 801CE410 */ void preDrawPath(); /* 801CE4D4 */ bool isDrawPath(); - /* 801CE4DC */ void isDrawRoom(); + /* 801CE4DC */ bool isDrawRoom(); /* 801CE560 */ void postDrawPath(); /* 801CE5B8 */ void postRenderingMap(); /* 801CE5EC */ void roomSetteing(); - /* 801CE6A8 */ void getFirstRoomPointer(); + /* 801CE6A8 */ room_class* getFirstRoomPointer(); /* 801CE75C */ void getFirstRegion(); /* 801CE7A8 */ void getFirstStage(); /* 801CE80C */ void getFirstRoom(); - /* 801CE84C */ void getNextRoom(); - /* 801CE8B8 */ void getNextStage(); - /* 801CE93C */ void getNextRegion(); - /* 801CE9A4 */ void getNextRoomPointer(); - /* 801CF4D0 */ ~renderingFmap_c(); - /* 801CF55C */ bool isRenderingFloor(int); - /* 801CF564 */ void beforeDrawPath(); - /* 801CF568 */ void afterDrawPath(); -}; + /* 801CE84C */ bool getNextRoom(); + /* 801CE8B8 */ bool getNextStage(); + /* 801CE93C */ bool getNextRegion(); + /* 801CE9A4 */ room_class* getNextRoomPointer(); + + /* 801CF4D0 */ ~renderingFmap_c(); // {} + /* 801CF55C */ bool isRenderingFloor(int); // { return true; } + /* 801CF564 */ void beforeDrawPath(); // {} + /* 801CF568 */ void afterDrawPath(); // {} + int getNowDrawRegionNo() { return mRegionNo; } + bool isDrawEnable() { return mDrawEnable; } -class dMenu_FmapMap_c { + /* 0x24 */ Mtx mViewMtx; + /* 0x54 */ cXyz mEye; + /* 0x60 */ cXyz mCenter; + /* 0x6C */ cXyz mUp; + /* 0x78 */ dMenu_Fmap_world_data_c* mpWorldData; + /* 0x7C */ dMenu_Fmap_region_data_c* mpRegionData; + /* 0x80 */ dMenu_Fmap_stage_data_c* mpStageData; + /* 0x84 */ dMenu_Fmap_room_data_c* mpRoomData; + /* 0x88 */ dMenu_Fmap_data_c* mpFmapData; + /* 0x8C */ dMenu_Fmap_stage_arc_data_c* mpStageArc; + /* 0x90 */ int mStartStageNo; + /* 0x94 */ int mRegionIndex; + /* 0x98 */ int mStageNo; + /* 0x9C */ int mRoomNo; + /* 0xA0 */ int mRegionNo; + /* 0xA4 */ int mRoomIndex; + /* 0xA8 */ f32 mStageOffsetX; + /* 0xAC */ f32 mStageOffsetZ; + /* 0xB0 */ f32 mRegionOffsetX; + /* 0xB4 */ f32 mRegionOffsetZ; + /* 0xB8 */ u8 field_0xb8; + /* 0xB9 */ u8 mSaveTableNo; + /* 0xBA */ u8 mVisitedRoomSaveTableNo; + /* 0xBB */ bool mDrawEnable; + }; + +class dMenu_FmapMap_c : public renderingFmap_c { public: - /* 801CEAAC */ void setFmapPaletteColor(renderingFmap_c::palette_e, _GXColor const&); - /* 801CEA38 */ void setFmapPaletteColor(renderingFmap_c::palette_e, u8, u8, u8, u8); - /* 801CEAE0 */ void isFlashRoomNoCheck(int) const; + /* 801CEAAC */ void setFmapPaletteColor(palette_e, GXColor const&); + /* 801CEA38 */ void setFmapPaletteColor(palette_e, u8, u8, u8, u8); + /* 801CEAE0 */ bool isFlashRoomNoCheck(int) const; /* 801CEB1C */ void setPointColor(f32); /* 801CEC24 */ dMenu_FmapMap_c(); /* 801CED38 */ ~dMenu_FmapMap_c(); /* 801CEDE8 */ void _create(u16, u16, u16, u16, void*); /* 801CEE3C */ void _delete(); /* 801CEE94 */ void draw(); - /* 801CF0B4 */ void rendering(dDrawPath_c::line_class const*); - /* 801CF12C */ void getLineWidth(int); - /* 801CF1D4 */ void isDrawType(int); + /* 801CF0B4 */ void rendering(line_class const*); + /* 801CF12C */ int getLineWidth(int); + /* 801CF1D4 */ bool isDrawType(int); /* 801CF1E0 */ void setFlashOn(int, int, u8*, int); - /* 801CF208 */ void getLineColor(int, int); - /* 801CF298 */ void getBackColor() const; - /* 801CF2A0 */ void getColor(int); + /* 801CF208 */ const GXColor* getLineColor(int, int); + /* 801CF298 */ const GXColor* getBackColor() const; + /* 801CF2A0 */ const GXColor* getColor(int); /* 801CF394 */ void setTexture(u16, u16, u16, u16); /* 801CF450 */ void setRendering(dMenu_Fmap_world_data_c*, int, f32, f32, f32, f32); + + f32 getRateWithFrameCount(int param_0) { + return (f32)(g_Counter.mCounter0 % param_0) / (f32)param_0; + } + + bool isDrawEnable() { + // probably a fakematch + bool ret = true; + ret &= renderingFmap_c::isDrawEnable(); + return ret; + } + + void setFlashOff() { + mLastFlash = mFlash; + mFlash = false; + } + + int getPointStagePathInnerNo(dMenu_Fmap_region_data_c* i_regionData, f32 i_offsetX, + f32 i_offsetY, int i_stageNo, int* o_stageNo, int* o_roomNo) { + return renderingFmap_c::getPointStagePathInnerNo(i_regionData, i_offsetX, i_offsetY, + i_stageNo, o_stageNo, o_roomNo); + } + + ResTIMG* getResTIMGPointer() { return mResTIMG; } + + /* 0xBC */ ResTIMG* mResTIMG; + /* 0xC0 */ u8* mMapImage_p; + /* 0xC4 */ dMfm_prm_res_s* m_res; + /* 0xC8 */ dMpath_RGB5A3_palDt_s* m_palette; + /* 0xCC */ int field_0xcc; + /* 0xD0 */ f32 mZoomRate; + /* 0xD4 */ int mLineNo; + /* 0xD8 */ bool mFlash; + /* 0xD9 */ bool mLastFlash; + /* 0xDC */ int mStageCursor; + /* 0xE0 */ int mLastStageCursor; + /* 0xE4 */ u8 mRegionCursor; + /* 0xE5 */ u8 mFlashTimer; + /* 0xE8 */ u8* mFlashRooms; + /* 0xEC */ int mFlashRoomCount; }; diff --git a/include/d/menu/d_menu_map_common.h b/include/d/menu/d_menu_map_common.h index d83df6324a..a1606c6a36 100644 --- a/include/d/menu/d_menu_map_common.h +++ b/include/d/menu/d_menu_map_common.h @@ -40,18 +40,36 @@ struct dMenuMapCommon_c { struct Stage_c { // Incomplete class - struct Stage_c_data { + struct data { // Unknown name /* 0x00 */ char mName[8]; - /* 0x08 */ u8 field_0x8; - /* 0x09 */ u8 field_0x9; - /* 0x0C */ f32 field_0xc; - /* 0x10 */ f32 field_0x10; + /* 0x08 */ u8 mRoomNo; + /* 0x09 */ u8 mRegionNo; + /* 0x0A */ u16 mAreaName; + /* 0x0C */ f32 mOffsetX; + /* 0x10 */ f32 mOffsetZ; }; - /* 0x0 */ u32 field_0x0; - /* 0x4 */ Stage_c_data field_0x4[0]; + /* 0x0 */ u8 mCount; + /* 0x4 */ data mData[0]; + }; + + class RoomData_c { + public: + struct data { + /* 0x0 */ u8 mSize; + /* 0x1 */ u8 field_0x1[3]; + /* 0x4 */ u8 mData[0]; + }; + + data* getRoomData() { return mpRoomData; } + RoomData_c* getNextData() { return mpNextData; } + void setRoomData(void* i_data) { mpRoomData = (data*)i_data; } + void setNextData(RoomData_c* i_nextData) { mpNextData = i_nextData; } + + /* 0x0 */ data* mpRoomData; + /* 0x4 */ RoomData_c* mpNextData; }; /* 0x004 */ J2DPicture* mPictures[23]; diff --git a/include/d/menu/d_menu_window.h b/include/d/menu/d_menu_window.h index 6b9a6f0954..4b21fb17a4 100644 --- a/include/d/menu/d_menu_window.h +++ b/include/d/menu/d_menu_window.h @@ -278,8 +278,8 @@ private: /* 0x130 */ dMenu_Skill_c* mpMenuSkill; /* 0x134 */ dMenu_Insect_c* mpMenuInsect; /* 0x138 */ s32 mMemSize; - /* 0x13C */ f32 field_0x13c; - /* 0x140 */ f32 field_0x140; + /* 0x13C */ f32 mFmapStageTransX; + /* 0x140 */ f32 mFmapStageTransZ; /* 0x144 */ u8 field_0x144; /* 0x145 */ u8 mButtons; /* 0x146 */ u8 mMenuStatus; @@ -290,9 +290,9 @@ private: /* 0x14B */ u8 field_0x14B; /* 0x14C */ u8 field_0x14C; /* 0x14D */ u8 field_0x14D; - /* 0x14E */ u8 field_0x14E; - /* 0x14F */ u8 field_0x14F; - /* 0x150 */ u8 field_0x150; + /* 0x14E */ u8 mFmapProcess; + /* 0x14F */ u8 mFmapRegionCursor; + /* 0x150 */ u8 mFmapStageCursor; /* 0x151 */ u8 field_0x151; /* 0x152 */ u8 field_0x152; /* 0x153 */ u8 field_0x153; diff --git a/include/d/meter/d_meter2_draw.h b/include/d/meter/d_meter2_draw.h index 670fe8dcf7..a4f83569e2 100644 --- a/include/d/meter/d_meter2_draw.h +++ b/include/d/meter/d_meter2_draw.h @@ -284,6 +284,7 @@ public: bool isEmphasisR() { return field_0x768[2] == 7 ? true : false; } void setEmphasisA(u8 param_0) { field_0x761 = param_0; } void setEmphasisB(u8 param_0) { field_0x762 = param_0; } + u8 getInsideObjCheck() { return field_0x772; } private: /* 0x004 */ item_params mItemParams[4]; diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h index b2cc55d1fc..553e9df8c6 100644 --- a/include/d/meter/d_meter2_info.h +++ b/include/d/meter/d_meter2_info.h @@ -118,7 +118,9 @@ public: void resetPauseStatus() { mPauseStatus = 0; } u8 getPauseStatus() { return mPauseStatus; } bool isGameStatus(int status) { return mGameStatus & status; } - bool isTouchKeyCheck(int i_status) { return mTouchKeyCheck & i_status; } + bool isTouchKeyCheck(int i_status) { return mTouchKeyCheck & (1 << i_status); } + // fake function, should be isTouchKeyCheck + bool isTouchKeyCheck_alt(int i_status) { return (mTouchKeyCheck >> i_status) & 1; } void setMapKeyDirection(u16 direction) { mMapKeyDirection = direction; } bool isSub2DStatus(int flag) { return mSub2DStatus & (1 << flag); } void offMenuInForce(int flag) { unk152 &= ~(1 << flag); } @@ -177,13 +179,17 @@ public: mCollectCursorPosY = y; } void setMapDrugFlag(u8 flag) { mMapDrugFlag = flag; } - bool isTempBit(int bit) { return mTempBits & (1 << bit) != 0; } + bool isTempBit(int bit) { return mTempBits & (1 << bit); } void offSub2DStatus(int bit) { mSub2DStatus &= ~(1 << bit); } void onSub2DStatus(int bit) { mSub2DStatus |= 1 << bit; } void set2DWidth(float width) { m2DWidth = width; } void set2DHeight(float height) { m2DHeight = height; } void set2DPosH(float posH) { m2DPosH = posH; } void set2DPosV(float posV) { m2DPosV = posV; } + f32 get2DWidth() { return m2DWidth; } + f32 get2DHeight() { return m2DHeight; } + u8 getTableMapRegionNo() { return mTableMapRegionNo; } + u8 getGoldWolfMapType() { return mGoldWolfMapType; } public: /* 0x04 */ u8 unk4[4]; @@ -448,6 +454,11 @@ inline bool dMeter2Info_isTouchKeyCheck(int i_status) { return g_meter2_info.isTouchKeyCheck(i_status); } +// fake function, should be dMeter2Info_isTouchKeyCheck +inline bool dMeter2Info_isTouchKeyCheck_alt(int i_status) { + return g_meter2_info.isTouchKeyCheck_alt(i_status); +} + inline void dMeter2Info_setMapKeyDirection(u16 direction) { g_meter2_info.setMapKeyDirection(direction); } @@ -752,6 +763,27 @@ inline void dMeter2Info_offShopTalkFlag() { g_meter2_info.offShopTalkFlag(); } +inline f32 dMeter2Info_get2DWidth() { + return g_meter2_info.get2DWidth(); +} + +inline f32 dMeter2Info_get2DHeight() { + return g_meter2_info.get2DHeight(); +} + +inline void dMeter2Info_setWarpInfo(const char* i_stageName, const cXyz& i_position, s16 i_angle, + u8 i_roomNo, u8 param_4, u8 i_warpPlayerNo) { + g_meter2_info.setWarpInfo(i_stageName, i_position, i_angle, i_roomNo, param_4, i_warpPlayerNo); +} + +inline u8 dMeter2Info_getTableMapRegionNo() { + return g_meter2_info.getTableMapRegionNo(); +} + +inline u8 dMeter2Info_getGoldWolfMapType() { + return g_meter2_info.getGoldWolfMapType(); +} + const char* dMeter2Info_getPlusTextureName(); const char* dMeter2Info_getNumberTextureName(int pIndex); int dMeter2Info_recieveLetter(); diff --git a/include/d/meter/d_meter_HIO.h b/include/d/meter/d_meter_HIO.h index b370e1ad3f..2cca81d0ee 100644 --- a/include/d/meter/d_meter_HIO.h +++ b/include/d/meter/d_meter_HIO.h @@ -5,7 +5,7 @@ #include "SSystem/SComponent/c_sxyz.h" #include "SSystem/SComponent/c_xyz.h" -class JKRArchive; +class JKRAramArchive; class dMeter_menuHIO_c { public: @@ -1132,7 +1132,7 @@ public: /* 80200BCC */ virtual ~dMeter_fmapHIO_c(); /* 0x004 */ s8 field_0x4; - /* 0x008 */ JKRArchive* field_0x8; + /* 0x008 */ JKRAramArchive* mpArchive; /* 0x00C */ void* field_0xc; /* 0x010 */ void* field_0x10; /* 0x014 */ void* field_0x14; @@ -1215,7 +1215,7 @@ public: /* 0x2F6 */ bool mDisplayWorldGrid; /* 0x2F7 */ bool mDisplayRegionGrid; /* 0x2F8 */ bool mDisplayReferenceArea; - /* 0x2F9 */ u8 field_0x2f9; + /* 0x2F9 */ bool field_0x2f9; /* 0x2FA */ bool mTerminalOutput; /* 0x2FB */ bool mPortalDataTerminalOutput; /* 0x2FC */ bool mAllRegionsUnlocked; diff --git a/include/d/msg/d_msg_object.h b/include/d/msg/d_msg_object.h index 633cdef525..506c9c1fce 100644 --- a/include/d/msg/d_msg_object.h +++ b/include/d/msg/d_msg_object.h @@ -484,6 +484,10 @@ inline void dMsgObject_setMsgOutputType(u8 outputType) { dMsgObject_getMsgObjectClass()->setMsgOutputType(outputType); } +inline void dMsgObject_setPortalMessageID(u16 id) { + dMsgObject_getMsgObjectClass()->setPortalMessageID(id); +} + class dMsgObject_HowlHIO_c { public: /* 80232AEC */ dMsgObject_HowlHIO_c(); diff --git a/include/d/save/d_save.h b/include/d/save/d_save.h index 16a85f724a..b73c8225b5 100644 --- a/include/d/save/d_save.h +++ b/include/d/save/d_save.h @@ -519,6 +519,8 @@ public: void onFieldDataExistFlag() { mFieldDataExistFlag = true; } cXyz& getPos() { return mPos; } u8 getRegionNo() const { return mRegionNo; } + char* getName() { return mName; } + s16 getAngleY() { return mAngleY; } private: /* 0x00 */ cXyz mPos; diff --git a/include/rel/d/a/d_a_midna/d_a_midna.h b/include/rel/d/a/d_a_midna/d_a_midna.h index 5c60621e00..330827a70c 100644 --- a/include/rel/d/a/d_a_midna/d_a_midna.h +++ b/include/rel/d/a/d_a_midna/d_a_midna.h @@ -104,7 +104,7 @@ public: void offStateFlg0(daMidna_FLG0 i_flag) { mStateFlg0 &= ~i_flag; } void onStateFlg1(daMidna_FLG1 i_flag) { mStateFlg1 |= i_flag; } void offStateFlg1(daMidna_FLG1 i_flag) { mStateFlg1 &= ~i_flag; } - u32 checkStateFlg0(daMidna_FLG0 flag) const { return mStateFlg0 & flag; } + BOOL checkStateFlg0(daMidna_FLG0 flag) const { return mStateFlg0 & flag; } u32 checkStateFlg1(daMidna_FLG1 flag) const { return mStateFlg1 & flag; } void setFaceNum(int num) { mFaceNum = num; } void setMotionNum(int num) { mMotionNum = num; } diff --git a/include/rel/d/a/obj/d_a_obj_life_container/d_a_obj_life_container.h b/include/rel/d/a/obj/d_a_obj_life_container/d_a_obj_life_container.h index c5ce1684f5..70e4644af5 100644 --- a/include/rel/d/a/obj/d_a_obj_life_container/d_a_obj_life_container.h +++ b/include/rel/d/a/obj/d_a_obj_life_container/d_a_obj_life_container.h @@ -38,6 +38,8 @@ public: /* 804CE1F0 */ void setListStart(); /* 804CE214 */ void _delete(); + void setPos(cXyz); + private: /* 0x568 */ u8 field_0x568[0x9d4 - 0x568]; }; |
