diff --git a/configure.py b/configure.py index 1b0b16e0431..8892b56144b 100755 --- a/configure.py +++ b/configure.py @@ -417,7 +417,7 @@ config.libs = [ "host": True, "objects": [ Object(MatchingFor("GZ2E01", "GZ2J01"), "m_Do/m_Do_main.cpp"), - Object(NonMatching, "m_Do/m_Do_printf.cpp"), + Object(MatchingFor("GZ2E01"), "m_Do/m_Do_printf.cpp"), Object(MatchingFor("GZ2E01", "GZ2J01"), "m_Do/m_Do_audio.cpp"), Object(MatchingFor("GZ2E01", "GZ2J01"), "m_Do/m_Do_controller_pad.cpp"), Object(Equivalent, "m_Do/m_Do_graphic.cpp"), # weak func order diff --git a/include/d/d_lib.h b/include/d/d_lib.h index ad8babf29de..21d6ea4e4d1 100644 --- a/include/d/d_lib.h +++ b/include/d/d_lib.h @@ -47,6 +47,7 @@ public: void setFirstWaitTime(s16 time) { mFirstWaitTime = time; } s16 getYwaitTimer() { return mYwaitTimer; } + s16 getXwaitTimer() { return mXwaitTimer; } /* 0x04 */ f32 mThreshold; /* 0x08 */ f32 field_0x08; diff --git a/include/d/d_menu_dmap.h b/include/d/d_menu_dmap.h index 405daae162d..d475c0a80e8 100644 --- a/include/d/d_menu_dmap.h +++ b/include/d/d_menu_dmap.h @@ -25,7 +25,7 @@ struct dMenu_DmapMapCtrl_c; class renderingDmap_c : public renderingPlusDoor_c { public: /* 801C0380 */ virtual ~renderingDmap_c() {} - /* 801C051C */ renderingDmap_c(); + /* 801C051C */ renderingDmap_c() {} /* 801C0C48 */ virtual const GXColor* getColor(int); /* 801C0C10 */ virtual int getLineWidth(int); @@ -53,7 +53,8 @@ public: /* 0x34 */ f32 field_0x34; }; -struct dMenu_DmapBg_c : public dDlst_base_c, public dMenuMapCommon_c { +class dMenu_DmapBg_c : public dDlst_base_c, public dMenuMapCommon_c { +public: /* 801B7F20 */ dMenu_DmapBg_c(JKRExpHeap*, STControl*); /* 801B8110 */ void mapScreenInit(); /* 801B884C */ void mapScreenAnime(); @@ -81,13 +82,21 @@ struct dMenu_DmapBg_c : public dDlst_base_c, public dMenuMapCommon_c { /* 801BB464 */ void calcCursor(); /* 801BB468 */ void drawCursor(); - f32 getMapWidth() { return field_0xda0; } - f32 getMapHeight() { return field_0xda4; } - J2DPicture* getMapPane() { return field_0xcc4; } + void setDPDFloorSelCurPos(s8 i_pos) { field_0xdd6 = i_pos; } - /* 0xC98 */ JKRExpHeap* field_0xc98; + f32 getMapWidth() { return mMapWidth; } + f32 getMapHeight() { return mMapHeight; } + J2DPicture* getMapPane() { return mMapPane; } + dMenu_ItemExplain_c* getItemExplainPtr() { return mpItemExplain; } + + void setAllTrans(f32 param_0, f32 param_1) { + field_0xd94 = param_0; + field_0xd98 = param_1; + } + + /* 0xC98 */ JKRExpHeap* mpHeap; /* 0xC9C */ JKRExpHeap* mpTalkHeap; - /* 0xCA0 */ STControl* field_0xca0; + /* 0xCA0 */ STControl* mpStick; /* 0xCA4 */ J2DScreen* mBaseScreen; /* 0xCA8 */ J2DScreen* mMapScreen[2]; /* 0xCB0 */ int field_0xcb0; @@ -95,7 +104,7 @@ struct dMenu_DmapBg_c : public dDlst_base_c, public dMenuMapCommon_c { /* 0xCB8 */ J2DScreen* mDecorateScreen; /* 0xCBC */ J2DScreen* mFloorScreen; /* 0xCC0 */ dSelect_cursor_c* mpDrawCursor; - /* 0xCC4 */ J2DPicture* field_0xcc4; + /* 0xCC4 */ J2DPicture* mMapPane; /* 0xCC8 */ dMsgString_c* mString; /* 0xCCC */ CPaneMgrAlphaMorf* mpBaseRoot; /* 0xCD0 */ CPaneMgrAlphaMorf* mpMapRoot[2]; @@ -113,14 +122,16 @@ struct dMenu_DmapBg_c : public dDlst_base_c, public dMenuMapCommon_c { /* 0xD08 */ CPaneMgr* mpButtonAB[2]; /* 0xD10 */ CPaneMgr* mpButtonText[2]; /* 0xD18 */ dMenu_ItemExplain_c* mpItemExplain; - /* 0xD1C */ mDoDvdThd_mountArchive_c* field_0xd1c; - /* 0xD20 */ JKRArchive* field_0xd20; + /* 0xD1C */ mDoDvdThd_mountArchive_c* mpArchiveMount; + /* 0xD20 */ JKRArchive* mpArchive; /* 0xD24 */ J2DPicture* mpBackTexture; /* 0xD28 */ J2DAnmTextureSRTKey* field_0xd28[1]; /* 0xD2C */ u8 field_0xd2c[0xd30 - 0xd2c]; /* 0xD30 */ dMeterHaihai_c* mpMeterHaihai; - /* 0xD34 */ dMsgFlow_c field_0xd34; - /* 0xD80 */ u8 field_0xd80[0xc]; + /* 0xD34 */ dMsgFlow_c mMsgFlow; + /* 0xD80 */ f32 field_0xd80; + /* 0xD84 */ f32 field_0xd84; + /* 0xD88 */ f32 field_0xd88; /* 0xD8C */ u8 field_0xd8c; /* 0xD8D */ u8 field_0xd8d; /* 0xD8E */ u8 field_0xd8e; @@ -132,8 +143,8 @@ struct dMenu_DmapBg_c : public dDlst_base_c, public dMenuMapCommon_c { /* 0xD94 */ f32 field_0xd94; /* 0xD98 */ f32 field_0xd98; /* 0xD9C */ f32 field_0xd9c; - /* 0xDA0 */ f32 field_0xda0; - /* 0xDA4 */ f32 field_0xda4; + /* 0xDA0 */ f32 mMapWidth; + /* 0xDA4 */ f32 mMapHeight; /* 0xDA8 */ f32 field_0xda8; /* 0xDAC */ f32 field_0xdac; /* 0xDB0 */ f32 field_0xdb0; @@ -181,7 +192,7 @@ public: /* 801BEAFC */ void itemInfo_init_proc(); /* 801BEB0C */ void itemInfo_proc(); /* 801BEB44 */ void itemSelect(); - /* 801BEF28 */ void getNextItem(int); + /* 801BEF28 */ int getNextItem(int); /* 801BEFCC */ void itemSelectAnmInit(); /* 801BF030 */ void itemSelectAnm(); /* 801BF180 */ void itemInfoOpenAnm(); @@ -189,7 +200,7 @@ public: /* 801BF278 */ void itemInfoCloseAnm(); /* 801BF334 */ u8 getNextStatus(); /* 801BF410 */ bool isSync(); - /* 801BF464 */ void isKeyCheck(); + /* 801BF464 */ bool isKeyCheck(); /* 801BF4A4 */ void infoModeChange_init_proc(); /* 801BF528 */ void infoModeChange_proc(); /* 801BF688 */ void mapModeChange_init_proc(); @@ -200,7 +211,7 @@ public: /* 801BF9E0 */ void mapMode_proc(); /* 801BFA84 */ void floorSelect_init_proc(); /* 801BFA88 */ void floorSelect_proc(); - /* 801BFC78 */ void itemCarryCheck(); + /* 801BFC78 */ int itemCarryCheck(); /* 801BFCAC */ void floorChange_init_proc(); /* 801BFD5C */ void floorChange_proc(); /* 801BFF84 */ void zoomWait_init_proc(); @@ -216,13 +227,16 @@ public: u8 getZoomState() { return mZoomState; } u16 getCMessasgeNum() { return mCMessageNum; } s8 getBottomFloor() { return mBottomFloor; } - s8 getFloorAll() { return mFloorAll; } + s8 getFloorAll() { return (mFloorAll - mBottomFloor) + 1; } + s8 getFloorPos(s8 param_0) { return param_0 - mBottomFloor; } + u16 getCMessageNum() { return mCMessageNum; } static dMenu_Dmap_c* myclass; private: /* 0x004 */ dMenu_DmapMapCtrl_c* mMapCtrl; - /* 0x008 */ dMenu_DmapBg_c* mpDrawBg[2]; + /* 0x008 */ dMenu_DmapBg_c* mpDrawBg; + /* 0x00C */ u8 field_0xc[0x10 - 0xC]; /* 0x010 */ CPaneMgr* field_0x10; /* 0x014 */ CPaneMgr* mSelFloor[8]; /* 0x034 */ CPaneMgr* mIconLinkPos[8]; @@ -233,8 +247,8 @@ private: /* 0x094 */ CPaneMgr* field_0x94; /* 0x098 */ CPaneMgr* field_0x98; /* 0x09C */ u8 field_0x9c[0x44]; - /* 0x0E0 */ mDoDvdThd_mountArchive_c* field_0xe0; - /* 0x0E4 */ JKRArchive* field_0xe4; + /* 0x0E0 */ mDoDvdThd_mountArchive_c* mpDresArchiveMount; + /* 0x0E4 */ JKRArchive* mpDresArchive; /* 0x0E8 */ JKRExpHeap* field_0xe8; /* 0x0EC */ JKRExpHeap* mDmapHeap; /* 0x0F0 */ STControl* mSelStick; @@ -260,7 +274,7 @@ private: /* 0x16A */ u16 field_0x16a; /* 0x16C */ s8 field_0x16c; /* 0x16D */ s8 field_0x16d; - /* 0x16E */ u8 field_0x16e; + /* 0x16E */ s8 field_0x16e; /* 0x16F */ u8 field_0x16f; /* 0x170 */ s8 mFloorAll; /* 0x171 */ s8 mBottomFloor; @@ -271,8 +285,8 @@ private: /* 0x178 */ u8 field_0x178; /* 0x179 */ u8 field_0x179; /* 0x17A */ u8 mInOutDir; - /* 0x17B */ u8 field_0x17b; - /* 0x17C */ u8 field_0x17c; + /* 0x17B */ u8 m_process; + /* 0x17C */ u8 m_itemSubProcess; /* 0x17D */ u8 field_0x17d; /* 0x17E */ u8 field_0x17e; /* 0x17F */ u8 mZoomState; @@ -281,7 +295,7 @@ private: /* 0x182 */ u8 field_0x182; /* 0x183 */ u8 field_0x183; /* 0x184 */ bool field_0x184; - /* 0x185 */ u8 field_0x185; + /* 0x185 */ bool field_0x185; }; #endif /* D_MENU_D_MENU_DMAP_H */ diff --git a/include/d/d_menu_dmap_map.h b/include/d/d_menu_dmap_map.h index 95ee5b9c86d..813c1f043ad 100644 --- a/include/d/d_menu_dmap_map.h +++ b/include/d/d_menu_dmap_map.h @@ -6,13 +6,14 @@ class dMenu_DmapMap_c { public: - /* 801C04AC */ virtual ~dMenu_DmapMap_c(); + /* 801C04AC */ virtual ~dMenu_DmapMap_c() {} /* 801C0CD8 */ void _create(u16, u16, u16, u16, void*); /* 801C0D04 */ void _delete(); /* 801C0D70 */ void setTexture(u16, u16, u16, u16); /* 801C0E4C */ void setPos(int, int, f32, f32, f32, bool, f32); const renderingDmap_c* getRendPointer(int i_no) const { return &mRend[i_no]; } + ResTIMG* getResTIMGPointer(int i_no) const { return mResTIMG[i_no]; } /* 0x04 */ renderingDmap_c mRend[2]; /* 0x74 */ ResTIMG* mResTIMG[2]; @@ -22,13 +23,57 @@ public: class dMenu_StageMapCtrl_c : public dMenu_DmapMap_c { public: + dMenu_StageMapCtrl_c() { + field_0x8c = NULL; + field_0x90 = 0.0f; + field_0x94 = 0.0f; + field_0x98 = 0.0f; + field_0x9c = 0.0f; + field_0xa0 = 0.0f; + field_0xa4 = 0.0f; + field_0xa8 = 0.0f; + field_0xac = 0.0f; + field_0xb0 = 0.0f; + field_0xb4 = 0.0f; + field_0xb8 = 0.0f; + field_0xbc = 0.0f; + field_0xc0 = 0.0f; + field_0xc4 = 0.0f; + field_0xc8 = 0.0f; + field_0xcc = 0.0f; + field_0xd0 = 0.0f; + field_0xd4 = 0.0f; + field_0xd8 = 0.0f; + field_0xe4 = 0; + field_0xe6 = 0; + field_0xe7 = 0; + field_0xe8 = 0; + field_0xe9 = 0; + field_0xea = 0; + field_0xeb = 0; + field_0xec = 0; + field_0xed = 0; + field_0xee = 0; + field_0xef = 0; + field_0xf0 = 0; + field_0xf1 = 0; + field_0xf2 = 0; + field_0xf3 = 0; + field_0xf4 = 0; + field_0xf5 = 0; + field_0xf6 = 0; + field_0xf7 = 0; + field_0xf8 = false; + field_0xf9 = false; + } + virtual ~dMenu_StageMapCtrl_c() {} - virtual bool isEnableZoomMove() const; - virtual void calcZoomCenter(f32*, f32*); - virtual void getInitWholeMapScale(f32*, f32, f32, f32, f32); - virtual void getInitDispCenter(f32*, f32*); - virtual void getZoomMinMaxCheck(f32*, f32*, f32*, f32*, bool*, bool*); - virtual f32 getZoomCmPerPixel(); + virtual bool isEnableZoomMove() const = 0; + virtual void calcZoomCenter(f32*, f32*) = 0; + virtual void getInitWholeMapScale(f32*, f32, f32, f32, f32) = 0; + virtual void getInitDispCenter(f32*, f32*) = 0; + virtual void getZoomMinMaxCheck(f32*, f32*, f32*, f32*, bool*, bool*) = 0; + virtual f32 getZoomCmPerPixel() = 0; virtual void draw(); /* 801C0EE0 */ f32 getMapBlendPer() const; @@ -70,6 +115,25 @@ public: u8 getDisableZoomMoveFlgX() const { return field_0xf8; } u8 getDisableZoomMoveFlgZ() const { return field_0xf9; } + s8 getNowStayFloorNo() const { return field_0xe7; } + s8 getTopFloorNo() const { return field_0xed; } + s8 getBottomFloorNo() const { return field_0xee; } + s8 getDispFloorNo() const { return field_0xeb; } + s8 getDispFloor2No() const { return field_0xec; } + + f32 getDispCenterX() const { return field_0x9c; } + f32 getDispCenterZ() const { return field_0xa0; } + + f32 getStageMapSizeX() const { return dMpath_c::getSizeX(); } + f32 getStageMapSizeZ() const { return dMpath_c::getSizeZ(); } + + f32 getZoomCenterMaxX() { return field_0xcc; } + f32 getZoomCenterMinX() { return field_0xc8; } + f32 getZoomCenterMaxZ() { return field_0xd4; } + f32 getZoomCenterMinZ() { return field_0xd0; } + + f32 getPixelPerCm() const { return 1.0f / field_0xbc; } + f32 makeStayFloorBlendPer(int param_0, f32 param_1) { return param_0 + param_1; } @@ -82,6 +146,11 @@ public: return std::fmod(param_0, 1.0f); } + bool isEndZoomIn() const { return field_0xf5 == 2; } + bool isEndZoomOut() const { return field_0xf5 == 0; } + + ResTIMG* getResTIMGPointer(int i_no) const { return dMenu_DmapMap_c::getResTIMGPointer(i_no); } + static f32 m_zoomCenterMinX; static f32 m_zoomCenterMaxX; static f32 m_zoomCenterMinZ; diff --git a/include/d/d_menu_map_common.h b/include/d/d_menu_map_common.h index a1606c6a365..7ebd8ce9955 100644 --- a/include/d/d_menu_map_common.h +++ b/include/d/d_menu_map_common.h @@ -7,7 +7,46 @@ class J2DPicture; class JKRArchive; class dSelect_cursor_c; -struct dMenuMapCommon_c { +enum dMenuMapIcon_e { + ICON_UNK_0_e, + ICON_UNK_1_e, + ICON_DUNGEON_WARP_e, + ICON_BOSS_GANON_e, + ICON_BOSS_e, + ICON_LIGHT_DROP_e, + ICON_LIGHT_BALL_e, + ICON_CANNON_BALL_e, + ICON_COPY_STATUE_e, + ICON_YETO_e, + ICON_YETA_e, + ICON_GOLD_WOLF_e, + ICON_MONKEY_e, + ICON_COACH_e, + ICON_KEY_e, + ICON_OOCCOO_e, + ICON_OOCCOO_JR_e, + ICON_LINK_e, + ICON_DESTINATION_e, + ICON_TREASURE_CHEST_e, + ICON_DUNGEON_ENTER_e, + ICON_LINK_ENTER_e, + ICON_LV8_WARP_e, + + ICON_MAX_e, +}; + +class dMenuMapCommon_c { +public: + struct IconInfo_s { + /* 0x00 */ f32 pos_x; + /* 0x04 */ f32 pos_y; + /* 0x08 */ f32 scale; + /* 0x0C */ f32 rotation; + /* 0x10 */ f32 alpha_rate; + /* 0x14 */ u8 icon_no; + /* 0x15 */ u8 _15; + }; + /* 801C2718 */ dMenuMapCommon_c(); /* 801C27B4 */ virtual ~dMenuMapCommon_c(); /* 801C28D8 */ void initiate(JKRArchive*); @@ -18,8 +57,8 @@ struct dMenuMapCommon_c { /* 801C4494 */ void setBlendRatio(u8, f32, f32); /* 801C452C */ void blinkMove(s16); /* 801C4600 */ void moveLightDropAnime(); - /* 801C4738 */ float getIconSizeX(u8 index); - /* 801C4778 */ float getIconSizeY(u8 index); + /* 801C4738 */ f32 getIconSizeX(u8 index); + /* 801C4778 */ f32 getIconSizeY(u8 index); /* 801C47C4 */ void debugIcon(); void setCenterPosX(f32 center_pos, u8 param_2) { @@ -27,16 +66,6 @@ struct dMenuMapCommon_c { _c90 = param_2; } - struct data { - /* 0x00 */ float _0; - /* 0x04 */ float _4; - /* 0x08 */ float _8; - /* 0x0C */ float _C; - /* 0x10 */ float _10; - /* 0x14 */ u8 _14; - /* 0x15 */ u8 _15; - }; - struct Stage_c { // Incomplete class @@ -73,21 +102,21 @@ struct dMenuMapCommon_c { }; /* 0x004 */ J2DPicture* mPictures[23]; - /* 0x060 */ J2DPicture* _60; + /* 0x060 */ J2DPicture* mLightDropPic; /* 0x064 */ dSelect_cursor_c* mpDrawCursor; /* 0x068 */ dSelect_cursor_c* mpPortalIcon; /* 0x06C */ u32 _6c; - /* 0x070 */ data _70[128]; + /* 0x070 */ IconInfo_s mIconInfo[128]; /* 0xC70 */ u16 mIconNum; - /* 0xC72 */ s16 _c72; - /* 0xC74 */ s16 _c74; + /* 0xC72 */ s16 mBlinkTimer; + /* 0xC74 */ s16 mLightDropFlashTimer; /* 0xC76 */ u16 _c76; - /* 0xC78 */ float _c78; - /* 0xC7C */ float _c7c; - /* 0xC80 */ float _c80; - /* 0xC84 */ float _c84; - /* 0xC88 */ float _c88; - /* 0xC8C */ float mCenterPosX; + /* 0xC78 */ f32 mBlinkAlpha; + /* 0xC7C */ f32 _c7c; + /* 0xC80 */ f32 _c80; + /* 0xC84 */ f32 _c84; + /* 0xC88 */ f32 _c88; + /* 0xC8C */ f32 mCenterPosX; /* 0xC90 */ u8 _c90; }; diff --git a/include/d/d_meter2_info.h b/include/d/d_meter2_info.h index 07af53d474c..c171bd7bb13 100644 --- a/include/d/d_meter2_info.h +++ b/include/d/d_meter2_info.h @@ -178,7 +178,7 @@ public: mCollectCursorPosX = x; mCollectCursorPosY = y; } - void setMapDrugFlag(u8 flag) { mMapDrugFlag = flag; } + void setMapDrugFlag(bool flag) { mMapDrugFlag = flag; } void offTempBit(int i_bit) { mTempBits &= ~(1 << i_bit); } void onTempBit(int i_bit) { mTempBits |= (1 << i_bit); } bool isTempBit(int bit) { return mTempBits & (1 << bit); } @@ -276,7 +276,7 @@ public: /* 0xE8 */ u8 mItemExplainWindowStatus; /* 0xE9 */ char mSaveStageName[8]; /* 0xF1 */ bool mFloatingMessageWakuVisible; - /* 0xF2 */ u8 mMapDrugFlag; + /* 0xF2 */ bool mMapDrugFlag; /* 0xF3 */ u8 unk243[5]; }; @@ -731,7 +731,7 @@ inline bool dMeter2Info_isShopTalkFlag() { return g_meter2_info.isShopTalkFlag(); } -inline void dMeter2Info_setMapDrugFlag(u8 flag) { +inline void dMeter2Info_setMapDrugFlag(bool flag) { g_meter2_info.setMapDrugFlag(flag); } diff --git a/include/d/d_tresure.h b/include/d/d_tresure.h index 78e91535500..9261e978a11 100644 --- a/include/d/d_tresure.h +++ b/include/d/d_tresure.h @@ -58,7 +58,7 @@ public: /* 8009BE28 */ static void checkTreasureBox(dTres_c::data_s*); /* 8009C168 */ static void onStatus(u8, int, int); /* 8009C1F0 */ static void offStatus(u8, int, int); - /* 8009C27C */ static int getBossIconFloorNo(int*); + /* 8009C27C */ static bool getBossIconFloorNo(int*); /* 8009C360 */ static typeGroupData_c* getFirstData(u8); /* 8009C39C */ static typeGroupData_c* getNextData(dTres_c::typeGroupData_c*); /* 8009C3B4 */ static typeGroupData_c* getNextData(dTres_c::typeGroupData_c const*); diff --git a/src/d/d_menu_dmap.cpp b/src/d/d_menu_dmap.cpp index 3429a3967bc..e135452a2a0 100644 --- a/src/d/d_menu_dmap.cpp +++ b/src/d/d_menu_dmap.cpp @@ -1,17 +1,4 @@ -// -// Generated By: dol2asm -// Translation Unit: d/d_menu_dmap -// - #include "d/d_menu_dmap.h" -#include "d/actor/d_a_player.h" -#include "d/d_item.h" -#include "d/d_menu_item_explain.h" -#include "d/d_msg_object.h" -#include "d/d_meter_HIO.h" -#include "d/d_meter2_info.h" -#include "d/d_lib.h" -#include "d/d_menu_dmap_map.h" #include "JSystem/J2DGraph/J2DAnmLoader.h" #include "JSystem/J2DGraph/J2DGrafContext.h" #include "JSystem/J2DGraph/J2DOrthoGraph.h" @@ -21,271 +8,33 @@ #include "JSystem/JKernel/JKRExpHeap.h" #include "JSystem/JKernel/JKRMemArchive.h" #include "SSystem/SComponent/c_math.h" -#include "string.h" -#include "dol2asm.h" -#include "dolphin/types.h" +#include "d/actor/d_a_player.h" +#include "d/d_item.h" +#include "d/d_menu_item_explain.h" +#include "d/d_msg_object.h" +#include "d/d_meter_HIO.h" +#include "d/d_meter2_info.h" +#include "d/d_lib.h" +#include "d/d_menu_dmap_map.h" #include "d/d_msg_string.h" #include "d/d_meter_haihai.h" +#include "d/d_menu_window.h" #include "f_op/f_op_msg_mng.h" #include "m_Do/m_Do_graphic.h" -// -// Forward References: -// - -extern "C" void __ct__14dMenu_DmapBg_cFP10JKRExpHeapP9STControl(); -extern "C" void mapScreenInit__14dMenu_DmapBg_cFv(); -extern "C" void mapScreenAnime__14dMenu_DmapBg_cFv(); -extern "C" void mapIconScaleSet__14dMenu_DmapBg_cFUc(); -extern "C" void iconScaleAnmInit__14dMenu_DmapBg_cFffUc(); -extern "C" void iconScaleAnm__14dMenu_DmapBg_cFv(); -extern "C" void buttonIconScreenInit__14dMenu_DmapBg_cFv(); -extern "C" void setAButtonString__14dMenu_DmapBg_cFUl(); -extern "C" void setBButtonString__14dMenu_DmapBg_cFUl(); -extern "C" void setCButtonString__14dMenu_DmapBg_cFUl(); -extern "C" void setJButtonString__14dMenu_DmapBg_cFUl(); -extern "C" void createExplain__14dMenu_DmapBg_cFv(); -extern "C" void deleteExplain__14dMenu_DmapBg_cFv(); -extern "C" void baseScreenInit__14dMenu_DmapBg_cFv(); -extern "C" void setFloorMessage__14dMenu_DmapBg_cFv(); -extern "C" bool dpdMove__14dMenu_DmapBg_cFScScScPUcUc(); -extern "C" void __dt__14dMenu_DmapBg_cFv(); -extern "C" void setAllAlphaRate__14dMenu_DmapBg_cFfb(); -extern "C" void setGoldAnimation__14dMenu_DmapBg_cFb(); -extern "C" void setGoldFrameAlphaRate__14dMenu_DmapBg_cFf(); -extern "C" void addGoldFrameAlphaRate__14dMenu_DmapBg_cFv(); -extern "C" void decGoldFrameAlphaRate__14dMenu_DmapBg_cFv(); -extern "C" void draw__14dMenu_DmapBg_cFv(); -extern "C" void update__14dMenu_DmapBg_cFv(); -extern "C" void calcCursor__14dMenu_DmapBg_cFv(); -extern "C" void drawCursor__14dMenu_DmapBg_cFv(); -extern "C" void __ct__12dMenu_Dmap_cFP10JKRExpHeapP9STControlP10CSTControlUcUc(); -extern "C" void screenInit__12dMenu_Dmap_cFv(); -extern "C" void getPlayerIconPos__12dMenu_Dmap_cFScf(); -extern "C" void getIconPos__12dMenu_Dmap_cFScf(); -extern "C" void __dt__12dMenu_Dmap_cFv(); -extern "C" void __dt__19dMenu_DmapMapCtrl_cFv(); -extern "C" void getCurFloorPos__12dMenu_Dmap_cFv(); -extern "C" void getDefaultCurFloorPos__12dMenu_Dmap_cFv(); -extern "C" void iconMoveCalc__12dMenu_Dmap_cFv(); -extern "C" void drawFloorScreenBack__12dMenu_Dmap_cFP9J2DScreenffP13J2DOrthoGraph(); -extern "C" void drawFloorScreenTop__12dMenu_Dmap_cFP9J2DScreenffP13J2DOrthoGraph(); -extern "C" void isMapMoveState__12dMenu_Dmap_cFv(); -extern "C" void floorChangeMode__12dMenu_Dmap_cFv(); -extern "C" void _create__12dMenu_Dmap_cFv(); -extern "C" void append__10J2DPictureFPC7ResTIMGf(); -extern "C" void insert__10J2DPictureFPC7ResTIMGUcf(); -extern "C" void _move__12dMenu_Dmap_cFv(); -extern "C" void setMapTexture__12dMenu_Dmap_cFv(); -extern "C" void mapBgAnime__12dMenu_Dmap_cFv(); -extern "C" void mapControl__12dMenu_Dmap_cFv(); -extern "C" void isOpen__12dMenu_Dmap_cFv(); -extern "C" void isClose__12dMenu_Dmap_cFv(); -extern "C" void _draw__12dMenu_Dmap_cFv(); -extern "C" void itemInfo_init_proc__12dMenu_Dmap_cFv(); -extern "C" void itemInfo_proc__12dMenu_Dmap_cFv(); -extern "C" void itemSelect__12dMenu_Dmap_cFv(); -extern "C" void getNextItem__12dMenu_Dmap_cFi(); -extern "C" void itemSelectAnmInit__12dMenu_Dmap_cFv(); -extern "C" void itemSelectAnm__12dMenu_Dmap_cFv(); -extern "C" void itemInfoOpenAnm__12dMenu_Dmap_cFv(); -extern "C" void itemInfoWait__12dMenu_Dmap_cFv(); -extern "C" void itemInfoCloseAnm__12dMenu_Dmap_cFv(); -extern "C" void getNextStatus__12dMenu_Dmap_cFv(); -extern "C" void isSync__12dMenu_Dmap_cFv(); -extern "C" void isKeyCheck__12dMenu_Dmap_cFv(); -extern "C" void infoModeChange_init_proc__12dMenu_Dmap_cFv(); -extern "C" void infoModeChange_proc__12dMenu_Dmap_cFv(); -extern "C" void mapModeChange_init_proc__12dMenu_Dmap_cFv(); -extern "C" void mapModeChange_proc__12dMenu_Dmap_cFv(); -extern "C" void lv5_talk_init_proc__12dMenu_Dmap_cFv(); -extern "C" void lv5_talk_proc__12dMenu_Dmap_cFv(); -extern "C" void mapMode_init_proc__12dMenu_Dmap_cFv(); -extern "C" void mapMode_proc__12dMenu_Dmap_cFv(); -extern "C" void floorSelect_init_proc__12dMenu_Dmap_cFv(); -extern "C" void floorSelect_proc__12dMenu_Dmap_cFv(); -extern "C" void itemCarryCheck__12dMenu_Dmap_cFv(); -extern "C" void floorChange_init_proc__12dMenu_Dmap_cFv(); -extern "C" void floorChange_proc__12dMenu_Dmap_cFv(); -extern "C" void zoomWait_init_proc__12dMenu_Dmap_cFv(); -extern "C" void zoomWait_proc__12dMenu_Dmap_cFv(); -extern "C" void zoomIn_init_proc__12dMenu_Dmap_cFv(); -extern "C" void zoomIn_proc__12dMenu_Dmap_cFv(); -extern "C" void zoomOut_init_proc__12dMenu_Dmap_cFv(); -extern "C" void zoomOut_proc__12dMenu_Dmap_cFv(); -extern "C" void __dt__15renderingDmap_cFv(); -extern "C" void __dt__20dMenu_StageMapCtrl_cFv(); -extern "C" void __dt__15dMenu_DmapMap_cFv(); -extern "C" void __ct__15renderingDmap_cFv(); -extern "C" void __sinit_d_menu_dmap_cpp(); -extern "C" static void func_801C0844(); -extern "C" extern char const* const d_menu_d_menu_dmap__stringBase0; -extern "C" u8 myclass__12dMenu_Dmap_c[4 + 4 /* padding */]; - -// -// External References: -// - -extern "C" void mDoExt_getJ2dHeap__Fv(); -extern "C" void mDoExt_destroyExpHeap__FP10JKRExpHeap(); -extern "C" void mDoExt_setCurrentHeap__FP7JKRHeap(); -extern "C" void mDoExt_getMesgFont__Fv(); -extern "C" void mDoExt_getSubFont__Fv(); -extern "C" void create__24mDoDvdThd_mountArchive_cFPCcUcP7JKRHeap(); -extern "C" void fopMsgM_valueIncrease__FiiUc(); -extern "C" void dComIfGp_isLightDropMapVisible__Fv(); -extern "C" void __ct__9STControlFssssffss(); -extern "C" void checkTrigger__9STControlFv(); -extern "C" void checkLeftTrigger__9STControlFv(); -extern "C" void checkRightTrigger__9STControlFv(); -extern "C" void checkUpTrigger__9STControlFv(); -extern "C" void checkDownTrigger__9STControlFv(); -extern "C" void isSwitch__12dSv_memBit_cCFi(); -extern "C" void isDungeonItem__12dSv_memBit_cCFi(); -extern "C" void isEventBit__11dSv_event_cCFUs(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c(); -extern "C" void checkItemGet__FUci(); -extern "C" void getBossIconFloorNo__7dTres_cFPi(); -extern "C" void __ct__16dSelect_cursor_cFUcfP10JKRArchive(); -extern "C" void setPos__16dSelect_cursor_cFffP7J2DPaneb(); -extern "C" void setParam__16dSelect_cursor_cFfffff(); -extern "C" void setAlphaRate__16dSelect_cursor_cFf(); -extern "C" void getMapBlendPer__20dMenu_StageMapCtrl_cCFv(); -extern "C" void getPixelStageSizeX__20dMenu_StageMapCtrl_cCFv(); -extern "C" void getPixelStageSizeZ__20dMenu_StageMapCtrl_cCFv(); -extern "C" void getPixelCenterX__20dMenu_StageMapCtrl_cCFv(); -extern "C" void getPixelCenterZ__20dMenu_StageMapCtrl_cCFv(); -extern "C" void initGetTreasureList__20dMenu_StageMapCtrl_cFUcSc(); -extern "C" void getTreasureList__20dMenu_StageMapCtrl_cFPfPfPScPUcPSc(); -extern "C" void getPlayerDrawInfo__20dMenu_StageMapCtrl_cCFPfPfPs(); -extern "C" void getRestartDrawInfo__20dMenu_StageMapCtrl_cCFPfPfPs(); -extern "C" void setPlusNowStayFloorNo__20dMenu_StageMapCtrl_cFScUc(); -extern "C" void initZoomIn__20dMenu_StageMapCtrl_cFUc(); -extern "C" void initZoomIn__20dMenu_StageMapCtrl_cFUcff(); -extern "C" void initZoomInCenterHold__20dMenu_StageMapCtrl_cFUc(); -extern "C" void initZoomOut__20dMenu_StageMapCtrl_cFUc(); -extern "C" void initZoomWait__20dMenu_StageMapCtrl_cFff(); -extern "C" void move__20dMenu_StageMapCtrl_cFv(); -extern "C" void getPlayerStayFloorNo__20dMenu_StageMapCtrl_cCFv(); -extern "C" void _create__20dMenu_StageMapCtrl_cFUsUsUsUsPv(); -extern "C" void _create__20dMenu_StageMapCtrl_cFUsUsUsUsScPv(); -extern "C" void _delete__20dMenu_StageMapCtrl_cFv(); -extern "C" void isEnableZoomIn__20dMenu_StageMapCtrl_cFv(); -extern "C" void isEnableZoomOut__20dMenu_StageMapCtrl_cFv(); -extern "C" void setPlusZoomCenterX__20dMenu_StageMapCtrl_cFf(); -extern "C" void setPlusZoomCenterZ__20dMenu_StageMapCtrl_cFf(); -extern "C" void __ct__16dMenuMapCommon_cFv(); -extern "C" void __dt__16dMenuMapCommon_cFv(); -extern "C" void initiate__16dMenuMapCommon_cFP10JKRArchive(); -extern "C" void drawIcon__16dMenuMapCommon_cFffff(); -extern "C" void iconScale__16dMenuMapCommon_cFifff(); -extern "C" void setIconInfo__16dMenuMapCommon_cFUcfffffUc(); -extern "C" void clearIconInfo__16dMenuMapCommon_cFv(); -extern "C" void __ct__19dMenu_ItemExplain_cFP10JKRExpHeapP10JKRArchiveP9STControlb(); -extern "C" void move__19dMenu_ItemExplain_cFv(); -extern "C" void draw__19dMenu_ItemExplain_cFP13J2DOrthoGraph(); -extern "C" void openExplainDmap__19dMenu_ItemExplain_cFUcUcUcbUc(); -extern "C" void dMw_LEFT_TRIGGER__Fv(); -extern "C" void dMw_RIGHT_TRIGGER__Fv(); -extern "C" void dMw_B_TRIGGER__Fv(); -extern "C" void __ct__14dMeterHaihai_cFUc(); -extern "C" void drawHaihai__14dMeterHaihai_cFUcffff(); -extern "C" void setScale__14dMeterHaihai_cFf(); -extern "C" void getString__13dMeter2Info_cFUlPcP14JMSMesgEntry_c(); -extern "C" void getStringKanji__13dMeter2Info_cFUlPcP14JMSMesgEntry_c(); -extern "C" void -readItemTexture__13dMeter2Info_cFUcPvP10J2DPicturePvP10J2DPicturePvP10J2DPicturePvP10J2DPicturei(); -extern "C" void dMeter2Info_getNumberTextureName__Fi(); -extern "C" void setTalkHeap__12dMsgObject_cFPv(); -extern "C" void getTalkHeap__12dMsgObject_cFv(); -extern "C" void getStatus__12dMsgObject_cFv(); -extern "C" void __ct__12dMsgString_cFv(); -extern "C" void __dt__12dMsgString_cFv(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void __dt__10dMsgFlow_cFv(); -extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c(); -extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci(); -extern "C" void __ct__8CPaneMgrFv(); -extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap(); -extern "C" void __dt__8CPaneMgrFv(); -extern "C" void paneTrans__8CPaneMgrFff(); -extern "C" void scaleAnime__8CPaneMgrFsffUc(); -extern "C" void getGlobalVtx__8CPaneMgrFP7J2DPanePA3_A4_fUcbs(); -extern "C" void getGlobalVtxCenter__8CPaneMgrFP7J2DPanebs(); -extern "C" void dPaneClass_showNullPane__FP9J2DScreen(); -extern "C" void __ct__13CPaneMgrAlphaFP9J2DScreenUxUcP10JKRExpHeap(); -extern "C" void show__13CPaneMgrAlphaFv(); -extern "C" void hide__13CPaneMgrAlphaFv(); -extern "C" void setAlphaRate__13CPaneMgrAlphaFf(); -extern "C" void alphaAnime__13CPaneMgrAlphaFsUcUcUc(); -extern "C" void __ct__17CPaneMgrAlphaMorfFP9J2DScreenUxUcP10JKRExpHeap(); -extern "C" void setBackupAlpha__17CPaneMgrAlphaMorfFv(); -extern "C" void setAlphaMorfRate__17CPaneMgrAlphaMorfFf(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void alloc__7JKRHeapFUli(); -extern "C" void free__7JKRHeapFPv(); -extern "C" void getFreeSize__7JKRHeapFv(); -extern "C" void getTotalFreeSize__7JKRHeapFv(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void create__10JKRExpHeapFUlP7JKRHeapb(); -extern "C" void getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader(); -extern "C" void func_802E90C0(); -extern "C" void getBounds__7J2DPaneFv(); -extern "C" void setBasePosition__7J2DPaneF15J2DBasePosition(); -extern "C" void __ct__9J2DScreenFv(); -extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive(); -extern "C" void draw__9J2DScreenFffPC14J2DGrafContext(); -extern "C" void animation__9J2DScreenFv(); -extern "C" void __ct__10J2DPictureFPC7ResTIMG(); -extern "C" void getStringPtr__10J2DTextBoxCFv(); -extern "C" void setString__10J2DTextBoxFsPCce(); -extern "C" void load__20J2DAnmLoaderDataBaseFPCv(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__12dDlst_base_c[3]; -extern "C" extern void* __vt__28dDrawPathWithNormalPattern_c[16]; -extern "C" extern void* __vt__15dRenderingMap_c[23]; -extern "C" extern void* __vt__18dRenderingFDAmap_c[26]; -extern "C" extern void* __vt__11dDrawPath_c[16]; -extern "C" extern void* __vt__19renderingPlusDoor_c[41]; -extern "C" extern void* __vt__16renderingDAmap_c[38]; -extern "C" extern void* __vt__19dMenu_DmapMapCtrl_c[10 + 51 /* padding */]; -extern "C" extern void* __vt__15renderingDmap_c[43 + 1 /* padding */]; -extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" f32 mAllSizeX__8dMpath_c; -extern "C" f32 mAllSizeZ__8dMpath_c; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// +#if (PLATFORM_WII || PLATFORM_SHIELD) +#define POINTER_OPT dComIfGs_getOptPointer() +#else +#define POINTER_OPT 0 +#endif /* 803BC7E0-803BC7EC 019900 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { +static u8 cNullVec__6Z2Calc[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; typedef void (dMenu_Dmap_c::*ProcFunc)(); -/* 803BC7EC-803BC7F8 -00001 000C+00 0/1 0/0 0/0 .data @4861 */ static ProcFunc init_process[5] = { &dMenu_Dmap_c::itemInfo_init_proc, &dMenu_Dmap_c::mapMode_init_proc, @@ -294,7 +43,6 @@ static ProcFunc init_process[5] = { &dMenu_Dmap_c::lv5_talk_init_proc, }; -/* 803BC864-803BC870 -00001 000C+00 0/1 0/0 0/0 .data @4866 */ static ProcFunc move_process[5] = { &dMenu_Dmap_c::itemInfo_proc, &dMenu_Dmap_c::mapMode_proc, @@ -335,47 +83,58 @@ static ProcFunc map_move_process[3] = { /* 801B7F20-801B8110 1B2860 01F0+00 1/1 0/0 0/0 .text * __ct__14dMenu_DmapBg_cFP10JKRExpHeapP9STControl */ -dMenu_DmapBg_c::dMenu_DmapBg_c(JKRExpHeap* param_1, STControl* param_2) { - field_0xc98 = param_1; - field_0xca0 = param_2; +dMenu_DmapBg_c::dMenu_DmapBg_c(JKRExpHeap* i_heap, STControl* i_stick) { + mpHeap = i_heap; + mpStick = i_stick; field_0xd94 = 0.0f; field_0xd98 = 0.0f; field_0xd9c = 0.0f; field_0xda8 = 1.0f; field_0xdb4 = 0.0f; field_0xdb8 = 0.0f; - field_0xdd3 = 0xff; - field_0xdd4 = 0x9d; - field_0xdd6 = 0x9d; - field_0xdd5 = 0xff; + field_0xdd3 = 0xFF; + field_0xdd4 = 0x9D; + field_0xdd6 = 0x9D; + field_0xdd5 = 0xFF; field_0xdd7 = 0; field_0xdd8 = 1; + mString = new dMsgString_c(); JUT_ASSERT(621, mString != 0); - mpTalkHeap = JKRCreateExpHeap(0x32000, field_0xc98, 0); + + mpTalkHeap = JKRCreateExpHeap(0x32000, mpHeap, false); JUT_ASSERT(624, mpTalkHeap != 0); + mpItemExplain = NULL; + mpMeterHaihai = new dMeterHaihai_c(2); JUT_ASSERT(630, mpMeterHaihai != 0); + field_0xdda = 0; - OS_REPORT("remain ===> %d\n", field_0xc98->getTotalFreeSize()); + + OS_REPORT("remain ===> %d\n", mpHeap->getTotalFreeSize()); + baseScreenInit(); mapScreenInit(); - char amStack_38[32]; - strcpy(amStack_38, "/res/FieldMap/D_MN10.arc"); - char acStack_40[8]; - strcpy(acStack_40, dComIfGp_getStartStageName()); - amStack_38[18] = acStack_40[4]; - amStack_38[19] = acStack_40[5]; + + char archive_path[32]; + strcpy(archive_path, "/res/FieldMap/D_MN10.arc"); + char stage_name[8]; + strcpy(stage_name, dComIfGp_getStartStageName()); + archive_path[18] = stage_name[4]; + archive_path[19] = stage_name[5]; + if (dComIfGs_isDungeonItemMap() || dComIfGs_isDungeonItemCompass()) { - field_0xd1c = mDoDvdThd_mountArchive_c::create(amStack_38, 2, mDoExt_getJ2dHeap()); + mpArchiveMount = mDoDvdThd_mountArchive_c::create(archive_path, 2, mDoExt_getJ2dHeap()); } else { - field_0xd1c = NULL; + mpArchiveMount = NULL; } - field_0xd20 = 0; - mpBackTexture = 0; + + mpArchive = NULL; + mpBackTexture = NULL; field_0xdbc = 0.0f; - memset(field_0xd80, 0, 0x14); + + memset(&field_0xd80, 0, 20); buttonIconScreenInit(); field_0xdd0 = 0; } @@ -386,13 +145,14 @@ void dMenu_DmapBg_c::mapScreenInit() { for (int i = 0; i < 2; i++) { mMapScreen[i] = new J2DScreen(); JUT_ASSERT(689, mMapScreen[i] != 0); - bool fg = mMapScreen[i]->setPriority("zelda_dungeon_map_map.blo", 0x20000, - dComIfGp_getDmapResArchive()); + + bool fg = mMapScreen[i]->setPriority("zelda_dungeon_map_map.blo", 0x20000, dComIfGp_getDmapResArchive()); JUT_ASSERT(693, fg != false); + dPaneClass_showNullPane(mMapScreen[i]); } - #ifdef DEBUG + #if (PLATFORM_WII || PLATFORM_SHIELD) mpBlack = new CPaneMgrAlpha(mMapScreen[0], 'm_black', 2, NULL); JUT_ASSERT(699, mpBlack != 0); mpBlack->setAlphaRate(0.0f); @@ -413,43 +173,54 @@ void dMenu_DmapBg_c::mapScreenInit() { mMapScreen[1]->search('center_n')->hide(); mMapScreen[1]->search('map_ai_n')->setBasePosition(J2DBasePosition_0); mMapScreen[0]->search('center_n')->setBasePosition(J2DBasePosition_4); + OSInitFastCast(); { - Mtx mtxVar1; - CPaneMgr aCStack_84; - Vec local_184 = aCStack_84.getGlobalVtx(mMapScreen[1]->search('map_icon'), &mtxVar1, 0, false, 0); - field_0xdc0 = local_184.x; - field_0xdc4 = local_184.y; + Mtx m; + CPaneMgr pane; + Vec vtx = pane.getGlobalVtx(mMapScreen[1]->search('map_icon'), &m, 0, false, 0); + field_0xdc0 = vtx.x; + field_0xdc4 = vtx.y; } + for (int i = 0; i < 2; i++) { mpMapRoot[i] = new CPaneMgrAlphaMorf(mMapScreen[i], 'ROOT', 2, NULL); JUT_ASSERT(751, mpMapRoot[i] != 0); } + void* btk0 = JKRGetNameResource("zelda_dungeon_map_map.btk", dComIfGp_getDmapResArchive()); JUT_ASSERT(766, btk0 != 0); + field_0xd28[0] = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk0); field_0xd28[0]->searchUpdateMaterialID(mMapScreen[0]); field_0xdc8[0] = 0.0f; field_0xd28[0]->setFrame(field_0xdc8[0]); + mMapScreen[0]->animation(); setGoldAnimation(true); - field_0xcc4 = (J2DPicture*)mMapScreen[1]->search('map_aria'); - field_0xcc4->setCornerColor(JUtility::TColor(0xff, 0xff, 0xff, 0xff)); - field_0xcc4->setWhite(JUtility::TColor(0xff, 0xff, 0xff, 0xff)); - CPaneMgr aCStack_f0; - Mtx mtxVar1; - Vec vec1 = aCStack_f0.getGlobalVtx(field_0xcc4, &mtxVar1, 0, false, 0); - Vec vec2 = aCStack_f0.getGlobalVtx(field_0xcc4, &mtxVar1, 3, false, 0); - field_0xda0 = vec2.x - vec1.x; - field_0xda4 = vec2.y - vec1.y; - J2DPicture* local_1ac = (J2DPicture*) mMapScreen[1]->search('map_icon'); - local_1ac->setBasePosition(J2DBasePosition_4); - local_1ac->setCornerColor(JUtility::TColor(0xff, 0xff, 0xff, 0xff)); - local_1ac->setAlpha(0); + + mMapPane = (J2DPicture*)mMapScreen[1]->search('map_aria'); + mMapPane->setCornerColor(JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF)); + mMapPane->setWhite(JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF)); + + CPaneMgr pane; + Mtx m; + Vec vtx0 = pane.getGlobalVtx(mMapPane, &m, 0, false, 0); + Vec vtx3 = pane.getGlobalVtx(mMapPane, &m, 3, false, 0); + mMapWidth = vtx3.x - vtx0.x; + mMapHeight = vtx3.y - vtx0.y; + + J2DPicture* map_icon_pic = (J2DPicture*)mMapScreen[1]->search('map_icon'); + map_icon_pic->setBasePosition(J2DBasePosition_4); + map_icon_pic->setCornerColor(JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF)); + map_icon_pic->setAlpha(0); + initiate(dComIfGp_getDmapResArchive()); + for (int i = 0; i < 2; i++) { mpMapSpace[i] = new CPaneMgr(mMapScreen[i], 'mapspace', 0, NULL); JUT_ASSERT(817, mpMapSpace[i] != 0); + mpMapSpace[i]->paneTrans(0.0f, -15.0f); } } @@ -480,6 +251,7 @@ void dMenu_DmapBg_c::mapIconScaleSet(u8 param_1) { fVar1 = 1.0f; fVar2 = 0.0f; } + iconScale(1, fVar1, fVar1, fVar2); } @@ -497,6 +269,7 @@ bool dMenu_DmapBg_c::iconScaleAnm() { if (field_0xdd2 > field_0xdd1) { return true; } + f32 dVar7 = fopMsgM_valueIncrease(field_0xdd1, field_0xdd2, 4); f32 dVar8; f32 dVar1; @@ -508,11 +281,14 @@ bool dMenu_DmapBg_c::iconScaleAnm() { dVar8 = dVar7; dVar1 = 1.0f - dVar7; } + iconScale(1, dVar7, dVar8, dVar1); + field_0xdd2++; if (field_0xdd2 >= field_0xdd1) { rv = true; } + return rv; } @@ -526,16 +302,19 @@ void dMenu_DmapBg_c::buttonIconScreenInit() { mButtonScreen = new J2DScreen(); JUT_ASSERT(916, mButtonScreen != 0); + bool fg = mButtonScreen->setPriority("zelda_dungeon_map_spot_button.blo", 0x20000, dComIfGp_getDmapResArchive()); JUT_ASSERT(922, fg != false); dPaneClass_showNullPane(mButtonScreen); - #ifdef DEBUG + #if (PLATFORM_WII || PLATFORM_SHIELD) mDecorateScreen = new J2DScreen(); JUT_ASSERT(926, mDecorateScreen != 0); + fg = mDecorateScreen->setPriority("zelda_dungeon_map_decoration_revo.blo", 0x20000, dComIfGp_getDmapResArchive()); JUT_ASSERT(930, fg != false); dPaneClass_showNullPane(mDecorateScreen); + mpDecorateRoot = new CPaneMgrAlphaMorf(mDecorateScreen, 'ROOT', 2, NULL); JUT_ASSERT(934, mpDecorateRoot != 0); #else @@ -548,6 +327,7 @@ void dMenu_DmapBg_c::buttonIconScreenInit() { mpButtonRoot = new CPaneMgrAlphaMorf(mButtonScreen, 'ROOT', 2, NULL); JUT_ASSERT(952, mpButtonRoot != 0); + for (int i = 0; i < 2; i++) { mpButtonAB[i] = NULL; mpButtonText[i] = NULL; @@ -565,43 +345,48 @@ void dMenu_DmapBg_c::buttonIconScreenInit() { ((J2DTextBox*)mButtonScreen->search(cont_at[i]))->hide(); ((J2DTextBox*)mButtonScreen->search(cont_bt[i]))->hide(); } + field_0xcf4 = new CPaneMgr(mButtonScreen, 'c_n', 2, NULL); field_0xcf8 = NULL; + J2DTextBox* textBox; for (int i = 0; i < 2; i++) { textBox = ((J2DTextBox*)mButtonScreen->search(c_tag[i])); textBox->setFont(mDoExt_getMesgFont()); textBox->setString(32, ""); } + if (field_0xcf4 != NULL) { field_0xcf4->show(); } + if (field_0xcf8 != NULL) { field_0xcf8->paneTrans(160.0f, 0.0f); } + field_0xcf4->paneTrans(321.0f, 0.0f); } /* 801B8DE4-801B8EBC 1B3724 00D8+00 7/7 0/0 0/0 .text setAButtonString__14dMenu_DmapBg_cFUl */ -void dMenu_DmapBg_c::setAButtonString(u32 param_1) { +void dMenu_DmapBg_c::setAButtonString(u32 i_msgNo) { static u64 const cont_at[5] = {'font_at', 'font_at1', 'font_at2', 'font_at3', 'font_at4'}; for (int i = 0; i < 5; i++) { - if (param_1 == 0) { + if (i_msgNo == 0) { strcpy(((J2DTextBox*)mButtonScreen->search(cont_at[i]))->getStringPtr(), ""); } else { - dMeter2Info_getStringKanji(param_1, ((J2DTextBox*)mButtonScreen->search(cont_at[i]))->getStringPtr(), NULL); + dMeter2Info_getStringKanji(i_msgNo, ((J2DTextBox*)mButtonScreen->search(cont_at[i]))->getStringPtr(), NULL); } } } /* 801B8EBC-801B8F94 1B37FC 00D8+00 8/8 0/0 0/0 .text setBButtonString__14dMenu_DmapBg_cFUl */ -void dMenu_DmapBg_c::setBButtonString(u32 param_1) { +void dMenu_DmapBg_c::setBButtonString(u32 i_msgNo) { static u64 const cont_bt[5] = {'font_bt', 'font_bt1', 'font_bt2', 'font_bt3', 'font_bt4'}; for (int i = 0; i < 5; i++) { - if (param_1 == 0) { + if (i_msgNo == 0) { strcpy(((J2DTextBox*)mButtonScreen->search(cont_bt[i]))->getStringPtr(), ""); } else { - dMeter2Info_getStringKanji(param_1, ((J2DTextBox*)mButtonScreen->search(cont_bt[i]))->getStringPtr(), NULL); + dMeter2Info_getStringKanji(i_msgNo, ((J2DTextBox*)mButtonScreen->search(cont_bt[i]))->getStringPtr(), NULL); } } } @@ -616,30 +401,32 @@ static f32 player_py; dMenu_Dmap_c* dMenu_Dmap_c::myclass; /* 801B8F94-801B90BC 1B38D4 0128+00 1/1 0/0 0/0 .text setCButtonString__14dMenu_DmapBg_cFUl */ -void dMenu_DmapBg_c::setCButtonString(u32 param_1) { +void dMenu_DmapBg_c::setCButtonString(u32 i_msgNo) { static u64 const c_tag[2] = {'f_text_s', 'f_text'}; int i; - u32 r26; + + u32 msgNo; if (!dMenu_Dmap_c::myclass->isMapMoveState()) { - r26 = 0; + msgNo = 0; } else { - r26 = dMenu_Dmap_c::myclass->getCMessasgeNum(); + msgNo = dMenu_Dmap_c::myclass->getCMessasgeNum(); } - if (r26 == 0) { + + if (msgNo == 0) { for (i = 0; i < 2; i++) { strcpy(((J2DTextBox*)mButtonScreen->search(c_tag[i]))->getStringPtr(), ""); } mpCButton->setAlphaRate(0.5f); } else { for (i = 0; i < 2; i++) { - dMeter2Info_getStringKanji(r26, ((J2DTextBox*)mButtonScreen->search(c_tag[i]))->getStringPtr(), NULL); + dMeter2Info_getStringKanji(msgNo, ((J2DTextBox*)mButtonScreen->search(c_tag[i]))->getStringPtr(), NULL); } mpCButton->setAlphaRate(1.0f); } } /* 801B90BC-801B90E0 1B39FC 0024+00 1/1 0/0 0/0 .text setJButtonString__14dMenu_DmapBg_cFUl */ -void dMenu_DmapBg_c::setJButtonString(u32 param_0) { +void dMenu_DmapBg_c::setJButtonString(u32 i_msgNo) { dMenu_Dmap_c::myclass->isMapMoveState(); } @@ -648,8 +435,9 @@ void dMenu_DmapBg_c::setJButtonString(u32 param_0) { void dMenu_DmapBg_c::createExplain() { if (mpItemExplain == NULL) { JKRHeap* prevHeap = mDoExt_setCurrentHeap(mpTalkHeap); - mpItemExplain = new dMenu_ItemExplain_c(mpTalkHeap, dComIfGp_getDmapResArchive(), field_0xca0, true); + mpItemExplain = new dMenu_ItemExplain_c(mpTalkHeap, dComIfGp_getDmapResArchive(), mpStick, true); JUT_ASSERT(1308, mpItemExplain != 0); + mDoExt_setCurrentHeap(prevHeap); } } @@ -670,31 +458,41 @@ void dMenu_DmapBg_c::deleteExplain() { void dMenu_DmapBg_c::baseScreenInit() { mBaseScreen = new J2DScreen(); JUT_ASSERT(1336, mBaseScreen != 0); + bool fg = mBaseScreen->setPriority("zelda_dungeon_map_base.blo", 0x20000, dComIfGp_getDmapResArchive()); JUT_ASSERT(1347, fg != false); dPaneClass_showNullPane(mBaseScreen); + mFloorScreen = new J2DScreen(); JUT_ASSERT(1351, mFloorScreen != 0); + fg = mFloorScreen->setPriority("zelda_dungeon_map_floor_parts.blo", 0x20000, dComIfGp_getDmapResArchive()); JUT_ASSERT(1362, fg != false); dPaneClass_showNullPane(mFloorScreen); + mBaseScreen->search('w_btn_n')->hide(); + mpBaseRoot = new CPaneMgrAlphaMorf(mBaseScreen, 'ROOT', 2, NULL); JUT_ASSERT(1396, mpBaseRoot != 0); + mpFloorRoot = new CPaneMgrAlphaMorf(mFloorScreen, 'ROOT', 2, NULL); JUT_ASSERT(1399, mpFloorRoot != 0); + mpDrawCursor = new dSelect_cursor_c(2, 1.0f, NULL); JUT_ASSERT(1403, mpDrawCursor != 0); + mpDrawCursor->setAlphaRate(1.0f); mpDrawCursor->setParam(0.95f, 0.9f, 0.1f, 0.6f, 0.5f); + J2DTextBox* uVar9 = (J2DTextBox*)mBaseScreen->search('f_t_00'); mBaseScreen->search('t_t00')->hide(); uVar9->setFont(mDoExt_getSubFont()); uVar9->setString(32, ""); - u32 stageTitleNo = dStage_stagInfo_GetStageTitleNo(dComIfGp_getStage()->getStagInfo()); + + u16 stageTitleNo = (u16)dStage_stagInfo_GetStageTitleNo(dComIfGp_getStage()->getStagInfo()); if (stageTitleNo != 0) { - mString->getString((u16)stageTitleNo, uVar9, NULL, NULL, NULL, 0); + mString->getString(stageTitleNo, uVar9, NULL, NULL, NULL, 0); } else { JUT_WARN(1426, "stage title message index zero!"); } @@ -703,211 +501,236 @@ void dMenu_DmapBg_c::baseScreenInit() { /* 801B944C-801BA0B4 1B3D8C 0C68+00 1/1 0/0 0/0 .text setFloorMessage__14dMenu_DmapBg_cFv */ void dMenu_DmapBg_c::setFloorMessage() { - char acStack_98[128]; - J2DTextBox* local_b8[8]; - J2DTextBox* local_d8[8]; - J2DTextBox* local_f8[8]; - s16 local_118[13] = { + int var_r26 = -5; + + char floor_msg_buf[128]; + J2DTextBox* floor_textbox_1[8]; + J2DTextBox* floor_textbox_2[8]; + J2DTextBox* floor_textbox_3[8]; + s16 floor_msg_no[13] = { 0, 0, 0x03DB, 0x03DA, 0x036B, 0x036C, 0x036D, 0x036E, 0x036F, 0x03DC, 0x03DD, 0x03D9, 0x03D8, }; - local_b8[0] = (J2DTextBox*)mFloorScreen->search('ffoor7_1'); - local_d8[0] = (J2DTextBox*)mFloorScreen->search('ffoor7_2'); - local_f8[0] = (J2DTextBox*)mFloorScreen->search('ffoor7_3'); + floor_textbox_1[0] = (J2DTextBox*)mFloorScreen->search('ffoor7_1'); + floor_textbox_2[0] = (J2DTextBox*)mFloorScreen->search('ffoor7_2'); + floor_textbox_3[0] = (J2DTextBox*)mFloorScreen->search('ffoor7_3'); mFloorScreen->search('floor7_1')->hide(); mFloorScreen->search('floor7_2')->hide(); mFloorScreen->search('floor7_3')->hide(); - local_b8[0]->setFont(mDoExt_getSubFont()); - local_d8[0]->setFont(mDoExt_getSubFont()); - local_f8[0]->setFont(mDoExt_getSubFont()); + floor_textbox_1[0]->setFont(mDoExt_getSubFont()); + floor_textbox_2[0]->setFont(mDoExt_getSubFont()); + floor_textbox_3[0]->setFont(mDoExt_getSubFont()); - local_b8[1] = (J2DTextBox*)mFloorScreen->search('ffoor0_1'); - local_d8[1] = (J2DTextBox*)mFloorScreen->search('ffoor0_2'); - local_f8[1] = (J2DTextBox*)mFloorScreen->search('ffoor0_3'); + floor_textbox_1[1] = (J2DTextBox*)mFloorScreen->search('ffoor0_1'); + floor_textbox_2[1] = (J2DTextBox*)mFloorScreen->search('ffoor0_2'); + floor_textbox_3[1] = (J2DTextBox*)mFloorScreen->search('ffoor0_3'); mFloorScreen->search('floor0_1')->hide(); mFloorScreen->search('floor0_2')->hide(); mFloorScreen->search('floor0_3')->hide(); - local_b8[1]->setFont(mDoExt_getSubFont()); - local_d8[1]->setFont(mDoExt_getSubFont()); - local_f8[1]->setFont(mDoExt_getSubFont()); + floor_textbox_1[1]->setFont(mDoExt_getSubFont()); + floor_textbox_2[1]->setFont(mDoExt_getSubFont()); + floor_textbox_3[1]->setFont(mDoExt_getSubFont()); - local_b8[2] = (J2DTextBox*)mFloorScreen->search('ffoor1_1'); - local_d8[2] = (J2DTextBox*)mFloorScreen->search('ffoor1_2'); - local_f8[2] = (J2DTextBox*)mFloorScreen->search('ffoor1_3'); + floor_textbox_1[2] = (J2DTextBox*)mFloorScreen->search('ffoor1_1'); + floor_textbox_2[2] = (J2DTextBox*)mFloorScreen->search('ffoor1_2'); + floor_textbox_3[2] = (J2DTextBox*)mFloorScreen->search('ffoor1_3'); mFloorScreen->search('floor1_1')->hide(); mFloorScreen->search('floor1_2')->hide(); mFloorScreen->search('floor1_3')->hide(); - local_b8[2]->setFont(mDoExt_getSubFont()); - local_d8[2]->setFont(mDoExt_getSubFont()); - local_f8[2]->setFont(mDoExt_getSubFont()); + floor_textbox_1[2]->setFont(mDoExt_getSubFont()); + floor_textbox_2[2]->setFont(mDoExt_getSubFont()); + floor_textbox_3[2]->setFont(mDoExt_getSubFont()); - local_b8[3] = (J2DTextBox*)mFloorScreen->search('ffoor2_1'); - local_d8[3] = (J2DTextBox*)mFloorScreen->search('ffoor2_2'); - local_f8[3] = (J2DTextBox*)mFloorScreen->search('ffoor2_3'); + floor_textbox_1[3] = (J2DTextBox*)mFloorScreen->search('ffoor2_1'); + floor_textbox_2[3] = (J2DTextBox*)mFloorScreen->search('ffoor2_2'); + floor_textbox_3[3] = (J2DTextBox*)mFloorScreen->search('ffoor2_3'); mFloorScreen->search('floor2_1')->hide(); mFloorScreen->search('floor2_2')->hide(); mFloorScreen->search('floor2_3')->hide(); - local_b8[3]->setFont(mDoExt_getSubFont()); - local_d8[3]->setFont(mDoExt_getSubFont()); - local_f8[3]->setFont(mDoExt_getSubFont()); + floor_textbox_1[3]->setFont(mDoExt_getSubFont()); + floor_textbox_2[3]->setFont(mDoExt_getSubFont()); + floor_textbox_3[3]->setFont(mDoExt_getSubFont()); - local_b8[4] = (J2DTextBox*)mFloorScreen->search('ffoor3_1'); - local_d8[4] = (J2DTextBox*)mFloorScreen->search('ffoor3_2'); - local_f8[4] = (J2DTextBox*)mFloorScreen->search('ffoor3_3'); + floor_textbox_1[4] = (J2DTextBox*)mFloorScreen->search('ffoor3_1'); + floor_textbox_2[4] = (J2DTextBox*)mFloorScreen->search('ffoor3_2'); + floor_textbox_3[4] = (J2DTextBox*)mFloorScreen->search('ffoor3_3'); mFloorScreen->search('floor3_1')->hide(); mFloorScreen->search('floor3_2')->hide(); mFloorScreen->search('floor3_3')->hide(); - local_b8[4]->setFont(mDoExt_getSubFont()); - local_d8[4]->setFont(mDoExt_getSubFont()); - local_f8[4]->setFont(mDoExt_getSubFont()); + floor_textbox_1[4]->setFont(mDoExt_getSubFont()); + floor_textbox_2[4]->setFont(mDoExt_getSubFont()); + floor_textbox_3[4]->setFont(mDoExt_getSubFont()); - local_b8[5] = (J2DTextBox*)mFloorScreen->search('ffoor4_1'); - local_d8[5] = (J2DTextBox*)mFloorScreen->search('ffoor4_2'); - local_f8[5] = (J2DTextBox*)mFloorScreen->search('ffoor4_3'); + floor_textbox_1[5] = (J2DTextBox*)mFloorScreen->search('ffoor4_1'); + floor_textbox_2[5] = (J2DTextBox*)mFloorScreen->search('ffoor4_2'); + floor_textbox_3[5] = (J2DTextBox*)mFloorScreen->search('ffoor4_3'); mFloorScreen->search('floor4_1')->hide(); mFloorScreen->search('floor4_2')->hide(); mFloorScreen->search('floor4_3')->hide(); - local_b8[5]->setFont(mDoExt_getSubFont()); - local_d8[5]->setFont(mDoExt_getSubFont()); - local_f8[5]->setFont(mDoExt_getSubFont()); + floor_textbox_1[5]->setFont(mDoExt_getSubFont()); + floor_textbox_2[5]->setFont(mDoExt_getSubFont()); + floor_textbox_3[5]->setFont(mDoExt_getSubFont()); - local_b8[6] = (J2DTextBox*)mFloorScreen->search('ffoor5_1'); - local_d8[6] = (J2DTextBox*)mFloorScreen->search('ffoor5_2'); - local_f8[6] = (J2DTextBox*)mFloorScreen->search('ffoor5_3'); + floor_textbox_1[6] = (J2DTextBox*)mFloorScreen->search('ffoor5_1'); + floor_textbox_2[6] = (J2DTextBox*)mFloorScreen->search('ffoor5_2'); + floor_textbox_3[6] = (J2DTextBox*)mFloorScreen->search('ffoor5_3'); mFloorScreen->search('floor5_1')->hide(); mFloorScreen->search('floor5_2')->hide(); mFloorScreen->search('floor5_3')->hide(); - local_b8[6]->setFont(mDoExt_getSubFont()); - local_d8[6]->setFont(mDoExt_getSubFont()); - local_f8[6]->setFont(mDoExt_getSubFont()); + floor_textbox_1[6]->setFont(mDoExt_getSubFont()); + floor_textbox_2[6]->setFont(mDoExt_getSubFont()); + floor_textbox_3[6]->setFont(mDoExt_getSubFont()); - local_b8[7] = (J2DTextBox*)mFloorScreen->search('ffoor6_1'); - local_d8[7] = (J2DTextBox*)mFloorScreen->search('ffoor6_2'); - local_f8[7] = (J2DTextBox*)mFloorScreen->search('ffoor6_3'); + floor_textbox_1[7] = (J2DTextBox*)mFloorScreen->search('ffoor6_1'); + floor_textbox_2[7] = (J2DTextBox*)mFloorScreen->search('ffoor6_2'); + floor_textbox_3[7] = (J2DTextBox*)mFloorScreen->search('ffoor6_3'); mFloorScreen->search('floor6_1')->hide(); mFloorScreen->search('floor6_2')->hide(); mFloorScreen->search('floor6_3')->hide(); - local_b8[7]->setFont(mDoExt_getSubFont()); - local_d8[7]->setFont(mDoExt_getSubFont()); - local_f8[7]->setFont(mDoExt_getSubFont()); + floor_textbox_1[7]->setFont(mDoExt_getSubFont()); + floor_textbox_2[7]->setFont(mDoExt_getSubFont()); + floor_textbox_3[7]->setFont(mDoExt_getSubFont()); OS_REPORT("floor ===> %d\n", dMenu_Dmap_c::myclass->getFloorAll()); + for (int i = 0; i < 8; i++) { - int bottomFloor = dMenu_Dmap_c::myclass->getBottomFloor(); - u32 floorAll = dMenu_Dmap_c::myclass->getFloorAll(); - u32 temp = (s8)((s8)floorAll - bottomFloor + 1); - if (i < (int)temp) { - bottomFloor += i; - if ((bottomFloor += 5) < 0 || bottomFloor >= 0xd) { - JUT_WARN(1609, "floor message index zero! %d", bottomFloor); - local_b8[i]->setString(16, ""); - local_d8[i]->setString(16, ""); - local_f8[i]->setString(16, ""); + if (i < dMenu_Dmap_c::myclass->getFloorAll()) { + int floor_msg_index = (dMenu_Dmap_c::myclass->getBottomFloor() - var_r26) + i; + if (floor_msg_index < 0 || floor_msg_index >= 13) { + JUT_WARN(1609, "floor message index zero! %d", floor_msg_index); + floor_textbox_1[i]->setString(16, ""); + floor_textbox_2[i]->setString(16, ""); + floor_textbox_3[i]->setString(16, ""); } else { - dMeter2Info_getString(local_118[bottomFloor], acStack_98,NULL); - local_b8[i]->setString(16, acStack_98); - local_d8[i]->setString(16, acStack_98); - local_f8[i]->setString(16, acStack_98); + dMeter2Info_getString(floor_msg_no[floor_msg_index], floor_msg_buf, NULL); + floor_textbox_1[i]->setString(16, floor_msg_buf); + floor_textbox_2[i]->setString(16, floor_msg_buf); + floor_textbox_3[i]->setString(16, floor_msg_buf); } } else { - local_b8[i]->setString(16, ""); - local_d8[i]->setString(16, ""); - local_f8[i]->setString(16, ""); + floor_textbox_1[i]->setString(16, ""); + floor_textbox_2[i]->setString(16, ""); + floor_textbox_3[i]->setString(16, ""); } } } /* 801BA0B4-801BA0BC 1B49F4 0008+00 1/1 0/0 0/0 .text dpdMove__14dMenu_DmapBg_cFScScScPUcUc */ bool dMenu_DmapBg_c::dpdMove(s8 param_0, s8 param_1, s8 param_2, u8* param_3, u8 param_4) { - return false; + bool var_r31 = false; + return var_r31; } /* 801BA0BC-801BA60C 1B49FC 0550+00 2/1 0/0 0/0 .text __dt__14dMenu_DmapBg_cFv */ dMenu_DmapBg_c::~dMenu_DmapBg_c() { dComIfGp_getDmapResArchive()->removeResourceAll(); delete mString; + if (mpMeterHaihai != NULL) { delete mpMeterHaihai; mpMeterHaihai = NULL; } + delete mBaseScreen; mBaseScreen = NULL; + delete mFloorScreen; mFloorScreen = NULL; + delete mpBaseRoot; mpBaseRoot = NULL; + delete mpFloorRoot; mpFloorRoot = NULL; + delete mpDrawCursor; mpDrawCursor = NULL; for (int i = 0; i < 2; i++) { delete mMapScreen[i]; mMapScreen[i] = NULL; + delete mpMapSpace[i]; mpMapSpace[i] = NULL; + delete mpMapRoot[i]; mpMapRoot[i] = NULL; } + if (mpBlack != NULL) { delete mpBlack; mpBlack = NULL; } + for (int i = 0; i < 1; i++) { delete field_0xd28[i]; } + for (int i = 0; i < 2; i++) { delete mpMapSpace[i]; mpMapSpace[i] = NULL; } + if (field_0xcf4 != NULL) { delete field_0xcf4; field_0xcf4 = NULL; } + if (field_0xcf8 != NULL) { delete field_0xcf8; field_0xcf8 = NULL; } deleteExplain(); - if (field_0xd20 != NULL) { - JKRUnmountArchive(field_0xd20); - field_0xd20 = NULL; + + if (mpArchive != NULL) { + JKRUnmountArchive(mpArchive); + mpArchive = NULL; } - if (field_0xd1c != NULL) { - JKRUnmountArchive(field_0xd1c->getArchive()); - field_0xd1c->destroy(); - field_0xd1c = NULL; + + if (mpArchiveMount != NULL) { + JKRUnmountArchive(mpArchiveMount->getArchive()); + mpArchiveMount->destroy(); + mpArchiveMount = NULL; } + if (mpBackTexture != NULL) { delete mpBackTexture; mpBackTexture = NULL; } + delete mButtonScreen; mButtonScreen = NULL; + if (mDecorateScreen != NULL) { delete mDecorateScreen; mDecorateScreen = NULL; } + if (mpDecorateRoot != NULL) { delete mpDecorateRoot; mpDecorateRoot = NULL; } + delete mpButtonRoot; mpButtonRoot = NULL; + for (int i = 0; i < 2; i++) { if (mpButtonAB[i] != NULL) { delete mpButtonAB[i]; mpButtonAB[i] = NULL; } + if (mpButtonText[i] != NULL) { delete mpButtonText[i]; mpButtonText[i] = NULL; } } + delete mpCButton; mpCButton = NULL; + if (mpJButton != NULL) { delete mpJButton; mpJButton = NULL; @@ -923,27 +746,35 @@ dMenu_DmapBg_c::~dMenu_DmapBg_c() { } /* 801BA60C-801BA700 1B4F4C 00F4+00 2/2 0/0 0/0 .text setAllAlphaRate__14dMenu_DmapBg_cFfb */ -void dMenu_DmapBg_c::setAllAlphaRate(f32 param_1, bool param_2) { - field_0xd9c = param_1; +void dMenu_DmapBg_c::setAllAlphaRate(f32 i_rate, bool param_2) { + field_0xd9c = i_rate; + if (param_2) { mpBaseRoot->setBackupAlpha(); mpFloorRoot->setBackupAlpha(); + for (int i = 0; i < 2; i++) { mpMapRoot[i]->setBackupAlpha(); } + mpButtonRoot->setBackupAlpha(); + if (mpDecorateRoot != NULL) { mpDecorateRoot->setBackupAlpha(); } } - mpBaseRoot->setAlphaMorfRate(param_1); - mpFloorRoot->setAlphaMorfRate(param_1); + + mpBaseRoot->setAlphaMorfRate(i_rate); + mpFloorRoot->setAlphaMorfRate(i_rate); + for (int i = 0; i < 2; i++) { - mpMapRoot[i]->setAlphaMorfRate(param_1); + mpMapRoot[i]->setAlphaMorfRate(i_rate); } - mpButtonRoot->setAlphaMorfRate(param_1); + + mpButtonRoot->setAlphaMorfRate(i_rate); + if (mpDecorateRoot != NULL) { - mpDecorateRoot->setAlphaMorfRate(param_1); + mpDecorateRoot->setAlphaMorfRate(i_rate); } } @@ -951,6 +782,7 @@ void dMenu_DmapBg_c::setAllAlphaRate(f32 param_1, bool param_2) { void dMenu_DmapBg_c::setGoldAnimation(bool param_1) { J2DPane* gold0 = mMapScreen[0]->search('gold00_0'); J2DPane* gold1 = mMapScreen[0]->search('gold00_1'); + if (param_1) { gold0->setAnimation(field_0xd28[0]); gold1->setAnimation(field_0xd28[0]); @@ -961,116 +793,125 @@ void dMenu_DmapBg_c::setGoldAnimation(bool param_1) { } /* 801BA7F0-801BA974 1B5130 0184+00 3/3 0/0 0/0 .text setGoldFrameAlphaRate__14dMenu_DmapBg_cFf */ -void dMenu_DmapBg_c::setGoldFrameAlphaRate(f32 param_1) { - if (0.0f == param_1) { +void dMenu_DmapBg_c::setGoldFrameAlphaRate(f32 i_rate) { + if (0.0f == i_rate) { mMapScreen[0]->search('gold00_0')->hide(); mMapScreen[0]->search('gold00_1')->hide(); } else { mMapScreen[0]->search('gold00_0')->show(); mMapScreen[0]->search('gold00_1')->show(); - mMapScreen[0]->search('gold00_0')->setAlpha(param_1 * 255.0f); - mMapScreen[0]->search('gold00_1')->setAlpha(param_1 * 255.0f); + mMapScreen[0]->search('gold00_0')->setAlpha(i_rate * 255.0f); + mMapScreen[0]->search('gold00_1')->setAlpha(i_rate * 255.0f); } } /* 801BA974-801BAA4C 1B52B4 00D8+00 1/1 0/0 0/0 .text addGoldFrameAlphaRate__14dMenu_DmapBg_cFv */ void dMenu_DmapBg_c::addGoldFrameAlphaRate() { - f32 dVar4; + f32 rate; if (field_0xdd7 >= g_fmapHIO.mDisplayFrameNum) { - dVar4 = 1.0f; + rate = 1.0f; setGoldAnimation(true); } else { field_0xdd7++; if (field_0xdd7 == g_fmapHIO.mDisplayFrameNum) { setGoldAnimation(true); } - dVar4 = (f32)(field_0xdd7 * field_0xdd7) / (f32)(g_fmapHIO.mDisplayFrameNum * g_fmapHIO.mDisplayFrameNum); + rate = (f32)(field_0xdd7 * field_0xdd7) / (f32)(g_fmapHIO.mDisplayFrameNum * g_fmapHIO.mDisplayFrameNum); } - setGoldFrameAlphaRate(dVar4); + + setGoldFrameAlphaRate(rate); } /* 801BAA4C-801BAB10 1B538C 00C4+00 1/1 0/0 0/0 .text decGoldFrameAlphaRate__14dMenu_DmapBg_cFv */ void dMenu_DmapBg_c::decGoldFrameAlphaRate() { - f32 dVar4; + f32 rate; setGoldAnimation(false); + if (field_0xdd7 >= g_fmapHIO.mUndisplayFrameNum) { field_0xdd7 = g_fmapHIO.mUndisplayFrameNum / 2; } + field_0xdd7 = 0; if (field_0xdd7 == 0) { - dVar4 = 0.0f; + rate = 0.0f; } else { field_0xdd7--; - dVar4 = (f32)(field_0xdd7 * field_0xdd7) / (f32)(g_fmapHIO.mUndisplayFrameNum * g_fmapHIO.mUndisplayFrameNum); + rate = (f32)(field_0xdd7 * field_0xdd7) / (f32)(g_fmapHIO.mUndisplayFrameNum * g_fmapHIO.mUndisplayFrameNum); } - setGoldFrameAlphaRate(dVar4); + setGoldFrameAlphaRate(rate); } /* 801BAB10-801BB334 1B5450 0824+00 1/0 0/0 0/0 .text draw__14dMenu_DmapBg_cFv */ void dMenu_DmapBg_c::draw() { - u32 local_270; - u32 local_274; - u32 local_278; - u32 local_27c; + u32 scissor_left; + u32 scissor_top; + u32 scissor_width; + u32 scissor_height; + J2DOrthoGraph* grafContext = (J2DOrthoGraph*)dComIfGp_getCurrentGrafPort(); grafContext->setup2D(); - GXGetScissor(&local_270, &local_274, &local_278, &local_27c); + + GXGetScissor(&scissor_left, &scissor_top, &scissor_width, &scissor_height); grafContext->scissor(field_0xd94, 0.0f, 608.0f, 448.0f); grafContext->setScissor(); + mBaseScreen->draw(field_0xd94, field_0xd98, grafContext); dMenu_Dmap_c::myclass->drawFloorScreenBack(mFloorScreen, field_0xd94, field_0xd98, grafContext); + f32 dVar21 = mDoGph_gInf_c::getWidthF() / 608.0f; f32 dVar16 = mDoGph_gInf_c::getHeightF() / 448.0f; mMapScreen[0]->draw(field_0xd94, field_0xd98, grafContext); - if (mpBackTexture != 0) { - J2DPane* local_280 = mMapScreen[0]->search('center_n'); - CPaneMgr afStack_124; + + if (mpBackTexture != NULL) { + J2DPane* center_pane = mMapScreen[0]->search('center_n'); + CPaneMgr pane; Mtx mtx; - Vec local_200 = afStack_124.getGlobalVtx(local_280, &mtx, 0, false, 0); - Vec local_20c = afStack_124.getGlobalVtx(local_280, &mtx, 3, false, 0); - grafContext->scissor( - ((local_200.x - mDoGph_gInf_c::getMinXF()) / dVar21), ((local_200.y / dVar16) / dVar16), - ((local_20c.x - local_200.x) / dVar21), 2.0f + (local_20c.y - local_200.y)); + Vec local_200 = pane.getGlobalVtx(center_pane, &mtx, 0, false, 0); + Vec local_20c = pane.getGlobalVtx(center_pane, &mtx, 3, false, 0); + grafContext->scissor(((local_200.x - mDoGph_gInf_c::getMinXF()) / dVar21), ((local_200.y / dVar16) / dVar16), + ((local_20c.x - local_200.x) / dVar21), 2.0f + (local_20c.y - local_200.y)); grafContext->setScissor(); + f32 dVar17 = field_0xd8c / 255.0f; - JUtility::TColor local_284; - JUtility::TColor local_288; - local_284.set(field_0xd91, field_0xd92, field_0xd93, 0xff); - local_288.set(field_0xd8d, field_0xd8e, field_0xd8f, 0xff); + JUtility::TColor color_black; + JUtility::TColor color_white; + color_black.set(field_0xd91, field_0xd92, field_0xd93, 0xFF); + color_white.set(field_0xd8d, field_0xd8e, field_0xd8f, 0xFF); mpBackTexture->setAlpha(dVar17 * (field_0xdbc * field_0xd9c)); + f32 local_28c = mpBackTexture->getBounds().i.x; - mpBackTexture->setBlackWhite(local_284, local_288); - mpBackTexture->draw( - local_28c, field_0xd94 + mpBackTexture->getBounds().i.y, mpBackTexture->getWidth(), - mpBackTexture->getHeight(), false, false, false); + mpBackTexture->setBlackWhite(color_black, color_white); + mpBackTexture->draw(local_28c, field_0xd94 + mpBackTexture->getBounds().i.y, mpBackTexture->getWidth(), + mpBackTexture->getHeight(), false, false, false); + grafContext->scissor(field_0xd94 + mDoGph_gInf_c::getMinXF(), - local_274, mDoGph_gInf_c::getWidthF(), - local_27c); + scissor_top, mDoGph_gInf_c::getWidthF(), + scissor_height); grafContext->setScissor(); } + mMapScreen[1]->draw(field_0xd94, field_0xd98, grafContext); - J2DPane* local_290 = mMapScreen[1]->search('center_n'); - CPaneMgr afStack_190; + + J2DPane* center_pane = mMapScreen[1]->search('center_n'); + CPaneMgr pane; Mtx local_110; - Vec local_218 = afStack_190.getGlobalVtx(local_290, &local_110, 0, false, 0); - Vec local_224 = afStack_190.getGlobalVtx(local_290, &local_110, 3, false, 0); + Vec local_218 = pane.getGlobalVtx(center_pane, &local_110, 0, false, 0); + Vec local_224 = pane.getGlobalVtx(center_pane, &local_110, 3, false, 0); f32 local_294 = ((local_218.x - mDoGph_gInf_c::getMinXF()) / dVar21); f32 local_298 = ((local_218.y / dVar16) / dVar16); f32 local_29c = ((local_224.x - local_218.x) / dVar21); f32 local_2a0 = 2.0f + (local_224.y - local_218.y); grafContext->scissor(local_294, local_298, local_29c, local_2a0); grafContext->setScissor(); - //local_2a4 = field_0xd9c * field_0xda8; - Vec local_26c = afStack_190.getGlobalVtx(field_0xcc4, &local_110, 0, false, 0); + + Vec local_26c = pane.getGlobalVtx(mMapPane, &local_110, 0, false, 0); drawIcon(local_26c.x + field_0xd94, local_26c.y, field_0xda8, 1.0f); - grafContext->scissor(field_0xd94 + mDoGph_gInf_c::getMinXF(), - local_274, - mDoGph_gInf_c::getWidthF(), - local_27c); + grafContext->scissor(field_0xd94 + mDoGph_gInf_c::getMinXF(), scissor_top, mDoGph_gInf_c::getWidthF(), scissor_height); grafContext->setScissor(); - grafContext->scissor(local_270, local_274, local_278, local_27c); + grafContext->scissor(scissor_left, scissor_top, scissor_width, scissor_height); grafContext->setScissor(); + if (field_0xdda != 0 && mpMeterHaihai != NULL) { mpMeterHaihai->setScale(0.7f); f32 x1 = 0.0f; @@ -1082,39 +923,43 @@ void dMenu_DmapBg_c::draw() { -35.0f + (local_224.y - local_218.y)); field_0xdda = 0; } + dMenu_Dmap_c::myclass->drawFloorScreenTop(mFloorScreen, field_0xd94, field_0xd98, grafContext); + if (0.0f == field_0xd94 && 0.0f == field_0xd98) { drawCursor(); } + if (mDecorateScreen != NULL) { mDecorateScreen->draw(field_0xd94, field_0xd98, grafContext); } + if (field_0xdd0 != 0 && mpItemExplain != NULL) { mpItemExplain->draw(grafContext); } + mButtonScreen->draw(field_0xd94, field_0xd98, grafContext); - grafContext->scissor( - local_270, - local_274, - local_278, - local_27c); + grafContext->scissor(scissor_left, scissor_top, scissor_width, scissor_height); grafContext->setScissor(); grafContext->setup2D(); } /* 801BB334-801BB464 1B5C74 0130+00 1/1 0/0 0/0 .text update__14dMenu_DmapBg_cFv */ void dMenu_DmapBg_c::update() { - if (field_0xd1c !=NULL) { - if (field_0xd1c->sync() && field_0xd20 == NULL) { - field_0xd20 = field_0xd1c->getArchive(); - field_0xd1c->destroy(); - field_0xd1c = NULL; - ResTIMG* mp_image = (ResTIMG*) field_0xd20->getResource("tex/bg.bti"); + if (mpArchiveMount != NULL) { + if (mpArchiveMount->sync() && mpArchive == NULL) { + mpArchive = mpArchiveMount->getArchive(); + mpArchiveMount->destroy(); + mpArchiveMount = NULL; + + ResTIMG* mp_image = (ResTIMG*)mpArchive->getResource("tex/bg.bti"); JUT_ASSERT(2321, mp_image != 0); + mpBackTexture = new J2DPicture(mp_image); JUT_ASSERT(2323, mpBackTexture != 0); - void* uVar1 = field_0xd20->getResource("spec/spec.dat"); - memcpy(field_0xd80, uVar1, 20); + + void* spec = mpArchive->getResource("spec/spec.dat"); + memcpy(&field_0xd80, spec, 20); } } @@ -1127,9 +972,7 @@ void dMenu_DmapBg_c::update() { } /* 801BB464-801BB468 1B5DA4 0004+00 1/1 0/0 0/0 .text calcCursor__14dMenu_DmapBg_cFv */ -void dMenu_DmapBg_c::calcCursor() { - /* empty function */ -} +void dMenu_DmapBg_c::calcCursor() {} /* 801BB468-801BB498 1B5DA8 0030+00 1/1 0/0 0/0 .text drawCursor__14dMenu_DmapBg_cFv */ void dMenu_DmapBg_c::drawCursor() { @@ -1139,40 +982,46 @@ void dMenu_DmapBg_c::drawCursor() { /* 801BB498-801BB634 1B5DD8 019C+00 0/0 1/1 0/0 .text * __ct__12dMenu_Dmap_cFP10JKRExpHeapP9STControlP10CSTControlUcUc */ dMenu_Dmap_c::dMenu_Dmap_c(JKRExpHeap* param_1, STControl* param_2, CSTControl* param_3, - u8 param_4, u8 param_5) { + u8 param_4, u8 param_5) { dMeter2Info_setMapDrugFlag(0); dMenu_Dmap_c::myclass = this; field_0xe8 = param_1; mpStick = param_2; mpCStick = param_3; mZoomState = param_4; - mpDrawBg[0] = NULL; + mpDrawBg = NULL; mDmapHeap = NULL; mItemTexBuf = NULL; mSelStick = NULL; field_0x94 = NULL; - field_0x17c = 0; + m_itemSubProcess = 0; + for (int i = 0; i < 8; i++) { mSelFloor[i] = NULL; } + for (int i = 0; i < 8; i++) { mSelFloor[i] = NULL; mIconLinkPos[i] = NULL; mIconBossPos[i] = NULL; } + for (int i = 0; i < 2; i++) { mStayIcon[i] = NULL; } + field_0x10 = NULL; for (int i = 0; i < 3; i++) { field_0x7c[i] = NULL; field_0x88[i]= NULL; } + field_0x98 = NULL; mMapCtrl = NULL; field_0x144 = 0.0f; field_0x148 = 0.0f; field_0x181 = 0; + if (param_5 == 1) { field_0x104 = -mDoGph_gInf_c::getWidthF(); field_0x108 = 0.0f; @@ -1189,6 +1038,7 @@ dMenu_Dmap_c::dMenu_Dmap_c(JKRExpHeap* param_1, STControl* param_2, CSTControl* field_0x104 = 0.0f; field_0x108 = 0.0f; } + field_0x10c = 0.0f; field_0x110 = 0.0f; field_0x134 = 0.0f; @@ -1200,12 +1050,11 @@ dMenu_Dmap_c::dMenu_Dmap_c(JKRExpHeap* param_1, STControl* param_2, CSTControl* field_0x185 = 0; field_0x180 = 0; mMapCtrl = 0; - field_0xe0 = 0; - field_0xe4 = 0; + mpDresArchiveMount = 0; + mpDresArchive = 0; } /* 801BB634-801BC788 1B5F74 1154+00 1/1 0/0 0/0 .text screenInit__12dMenu_Dmap_cFv */ -// NONMATCHING float reg issues void dMenu_Dmap_c::screenInit() { static u64 const floor_tag[8] = {'floor7_n', 'floor0_n', 'floor1_n', 'floor2_n', 'floor3_n', 'floor4_n', 'floor5_n', 'floor6_n'}; @@ -1218,32 +1067,34 @@ void dMenu_Dmap_c::screenInit() { static u64 const key_tag[3] = {'key_00', 'key_01', 'key_02'}; static u64 const item_tag[3] = {'map000', 'con000', 'i_key_n'}; - field_0x10 = new CPaneMgr(mpDrawBg[0]->mBaseScreen, 'floo_s_n', 0, NULL); + field_0x10 = new CPaneMgr(mpDrawBg->mBaseScreen, 'floo_s_n', 0, NULL); + for (int i = 0; i < 8; i++) { field_0x114[i] = 0.0f; - mSelFloor[i] = new CPaneMgr(mpDrawBg[0]->mFloorScreen, floor_tag[i], 3, NULL); + mSelFloor[i] = new CPaneMgr(mpDrawBg->mFloorScreen, floor_tag[i], 3, NULL); JUT_ASSERT(2654, mSelFloor[i] != 0); - mIconLinkPos[i] = new CPaneMgr(mpDrawBg[0]->mFloorScreen, icon_tag[i], 0, NULL); + mIconLinkPos[i] = new CPaneMgr(mpDrawBg->mFloorScreen, icon_tag[i], 0, NULL); JUT_ASSERT(2657, mIconLinkPos[i] != 0); - mIconBossPos[i] = new CPaneMgr(mpDrawBg[0]->mFloorScreen, boss_tag[i], 0, NULL); + mIconBossPos[i] = new CPaneMgr(mpDrawBg->mFloorScreen, boss_tag[i], 0, NULL); JUT_ASSERT(2660, mIconBossPos[i] != 0); } + for (int i = 0; i < 2; i++) { - mStayIcon[i] = new CPaneMgr(mpDrawBg[0]->mFloorScreen, stay_tag[i], 0, NULL); + mStayIcon[i] = new CPaneMgr(mpDrawBg->mFloorScreen, stay_tag[i], 0, NULL); JUT_ASSERT(2665, mStayIcon[i] != 0); mStayIcon[i]->hide(); + field_0x14c[i] = mStayIcon[i]->getGlobalVtxCenter(false, 0); + if (i == 0) { - f32 dVar16; - f32 dVar17 = mpDrawBg[0]->mFloorScreen->search('rink')->getBounds().i.y; - dVar16 = mpDrawBg[0]->mFloorScreen->search('rink')->getBounds().i.x; - mpDrawBg[0]->mFloorScreen->search('wolf')->move(dVar16, dVar17); + mpDrawBg->mFloorScreen->search('wolf')->move((f32)mpDrawBg->mFloorScreen->search('rink')->getBounds().i.x, (f32)mpDrawBg->mFloorScreen->search('rink')->getBounds().i.y); + if (daPy_py_c::checkNowWolf()) { - mpDrawBg[0]->mFloorScreen->search('wolf')->show(); - mpDrawBg[0]->mFloorScreen->search('rink')->hide(); + mpDrawBg->mFloorScreen->search('wolf')->show(); + mpDrawBg->mFloorScreen->search('rink')->hide(); } else { - mpDrawBg[0]->mFloorScreen->search('wolf')->hide(); - mpDrawBg[0]->mFloorScreen->search('rink')->show(); + mpDrawBg->mFloorScreen->search('wolf')->hide(); + mpDrawBg->mFloorScreen->search('rink')->show(); } } } @@ -1253,124 +1104,138 @@ void dMenu_Dmap_c::screenInit() { mSelFloor[i]->hide(); } else if (i == getCurFloorPos()) { mSelFloor[i]->getPanePtr()->scale(1.0f, 1.0f); - mSelFloor[i]->setAlpha(0xff); + mSelFloor[i]->setAlpha(0xFF); } else { mSelFloor[i]->getPanePtr()->scale(0.9f, 0.9f); mSelFloor[i]->setAlpha(0x80); } } - f32 dVar16 = mpDrawBg[0]->mFloorScreen->search('s_n_all')->getHeight(); - f32 dVar17 = mSelFloor[0]->getPanePtr()->getHeight(); - f32 dVar18 = mFloorAll - mBottomFloor + 1; - f32 fVar1 = (dVar16 - (7.0f * (dVar18 - 1.0f) + dVar18 * dVar17)) / 2 + dVar17 / 2; - fVar1 -= (dVar16 / 2); + f32 var_f29; + f32 var_f28 = 7.0f; + + var_f29 = mpDrawBg->mFloorScreen->search('s_n_all')->getHeight(); + f32 var_f30 = mSelFloor[0]->getPanePtr()->getHeight(); + + f32 var_f27 = mFloorAll - mBottomFloor + 1; + + f32 var_f26 = (var_f27 * var_f30) + ((var_f27 - 1.0f) * var_f28); + + f32 var_f31 = (var_f30 / 2) + ((var_f29 - var_f26) / 2); + var_f31 -= var_f29 / 2; + for (int i = mFloorAll - mBottomFloor; i >= 0; i--) { - mSelFloor[i]->getPanePtr()->translate(mSelFloor[i]->getPanePtr()->getTranslateX(), fVar1); - fVar1 += 7.0f + dVar17; + mSelFloor[i]->getPanePtr()->translate(mSelFloor[i]->getPanePtr()->getTranslateX(), var_f31); + var_f31 += var_f30 + var_f28; } - field_0x10->getPanePtr()->translate(mSelFloor[getCurFloorPos()]->getTranslateX(), mSelFloor[getCurFloorPos()]->getTranslateY()); + field_0x10->getPanePtr()->translate(mSelFloor[getCurFloorPos()]->getPanePtr()->getTranslateX(), mSelFloor[getCurFloorPos()]->getPanePtr()->getTranslateY()); iconMoveCalc(); Vec local_b0 = mSelFloor[getDefaultCurFloorPos()]->getGlobalVtxCenter(false, 0); - mpDrawBg[0]->mpDrawCursor->setPos(local_b0.x + field_0x104, local_b0.y, mSelFloor[getDefaultCurFloorPos()]->getPanePtr(), true); - field_0x94 = new CPaneMgr(mpDrawBg[0]->mBaseScreen, 'item_s_n', 0, NULL); - field_0x7c[0] = new CPaneMgr(mpDrawBg[0]->mBaseScreen, 'map_n', 3, NULL); - field_0x7c[1] = new CPaneMgr(mpDrawBg[0]->mBaseScreen, 'con_n', 3, NULL); - field_0x7c[2] = new CPaneMgr(mpDrawBg[0]->mBaseScreen, 'key_n', 3, NULL); - field_0x88[0] = new CPaneMgr(mpDrawBg[0]->mBaseScreen, 'map000', 3, NULL); - field_0x88[1] = new CPaneMgr(mpDrawBg[0]->mBaseScreen, 'con000', 3, NULL); + mpDrawBg->mpDrawCursor->setPos(local_b0.x + field_0x104, local_b0.y, mSelFloor[getDefaultCurFloorPos()]->getPanePtr(), true); + field_0x94 = new CPaneMgr(mpDrawBg->mBaseScreen, 'item_s_n', 0, NULL); + field_0x7c[0] = new CPaneMgr(mpDrawBg->mBaseScreen, 'map_n', 3, NULL); + field_0x7c[1] = new CPaneMgr(mpDrawBg->mBaseScreen, 'con_n', 3, NULL); + field_0x7c[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'key_n', 3, NULL); + field_0x88[0] = new CPaneMgr(mpDrawBg->mBaseScreen, 'map000', 3, NULL); + field_0x88[1] = new CPaneMgr(mpDrawBg->mBaseScreen, 'con000', 3, NULL); if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x11) { - field_0x88[2] = new CPaneMgr(mpDrawBg[0]->mBaseScreen, 'i_key_n', 3, NULL); + field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'i_key_n', 3, NULL); } else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x14) { - field_0x88[2] = new CPaneMgr(mpDrawBg[0]->mBaseScreen, 'lv5_k_n', 3, NULL); + field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'lv5_k_n', 3, NULL); } else { - field_0x88[2] = new CPaneMgr(mpDrawBg[0]->mBaseScreen, 'nor_k_n', 3, NULL); + field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'nor_k_n', 3, NULL); } + for (int i = 0; i < 3; i++) { field_0x88[i]->scale(0.9f, 0.9f); } + if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x11) { - mpDrawBg[0]->mBaseScreen->search('lv5_k_n')->hide(); - mpDrawBg[0]->mBaseScreen->search('nor_k_n')->hide(); - u8 local_13f = 0; - if (checkItemGet(0xf9, 1)) { - local_13f = 1; + mpDrawBg->mBaseScreen->search('lv5_k_n')->hide(); + mpDrawBg->mBaseScreen->search('nor_k_n')->hide(); + + u8 key_num = 0; + if (checkItemGet(fpcNm_ITEM_L2_KEY_PIECES1, 1)) { + key_num = 1; } - if (checkItemGet(0xfa, 1)) { - local_13f++; + if (checkItemGet(fpcNm_ITEM_L2_KEY_PIECES2, 1)) { + key_num++; } - if (checkItemGet(0xfb, 1)) { - local_13f++; + if (checkItemGet(fpcNm_ITEM_L2_KEY_PIECES3, 1)) { + key_num++; } + for (int i = 0; i < 3; i++) { - if (i == local_13f - 1) { - mpDrawBg[0]->mBaseScreen->search(key_tag[i])->show(); + if (i == key_num - 1) { + mpDrawBg->mBaseScreen->search(key_tag[i])->show(); } else { - mpDrawBg[0]->mBaseScreen->search(key_tag[i])->hide(); + mpDrawBg->mBaseScreen->search(key_tag[i])->hide(); } } - if (local_13f != 0) { + + if (key_num != 0) { field_0x174[2] = 0x26; } else { field_0x174[2] = 0; } - if (local_13f == 0 || dMeter2Info_isTempBit(0)) { - mpDrawBg[0]->mBaseScreen->search('key_n_n')->hide(); + + if (key_num == 0 || dMeter2Info_isTempBit(0)) { + mpDrawBg->mBaseScreen->search('key_n_n')->hide(); } else { - ResTIMG* uVar20 = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', dMeter2Info_getNumberTextureName(local_13f)); - ((J2DPicture*)mpDrawBg[0]->mBaseScreen->search('c_n_2_s'))->changeTexture(uVar20, 0); - ((J2DPicture*)mpDrawBg[0]->mBaseScreen->search('c_n_2'))->changeTexture(uVar20, 0); - uVar20 = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', dMeter2Info_getNumberTextureName(3)); - ((J2DPicture*)mpDrawBg[0]->mBaseScreen->search('c_n_1_s'))->changeTexture(uVar20, 0); - ((J2DPicture*)mpDrawBg[0]->mBaseScreen->search('c_n_1'))->changeTexture(uVar20, 0); + ResTIMG* tex = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', dMeter2Info_getNumberTextureName(key_num)); + ((J2DPicture*)mpDrawBg->mBaseScreen->search('c_n_2_s'))->changeTexture(tex, 0); + ((J2DPicture*)mpDrawBg->mBaseScreen->search('c_n_2'))->changeTexture(tex, 0); + tex = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', dMeter2Info_getNumberTextureName(3)); + ((J2DPicture*)mpDrawBg->mBaseScreen->search('c_n_1_s'))->changeTexture(tex, 0); + ((J2DPicture*)mpDrawBg->mBaseScreen->search('c_n_1'))->changeTexture(tex, 0); } } else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x14) { - mpDrawBg[0]->mBaseScreen->search('i_key_n')->hide(); - mpDrawBg[0]->mBaseScreen->search('nor_k_n')->hide(); - mpDrawBg[0]->mBaseScreen->search('key_n_n')->hide(); - u8 local_140 = 0xff; + mpDrawBg->mBaseScreen->search('i_key_n')->hide(); + mpDrawBg->mBaseScreen->search('nor_k_n')->hide(); + mpDrawBg->mBaseScreen->search('key_n_n')->hide(); + + u8 itemNo = fpcNm_ITEM_NONE; field_0x174[2] = 0; + if (g_fmapHIO.mMapIconHIO.mLV5DungeonItemDebug) { - local_140 = g_fmapHIO.mMapIconHIO.mLV5DungeonItem; - if (local_140 != 0xff) { - field_0x174[2] = local_140; + itemNo = g_fmapHIO.mMapIconHIO.mLV5DungeonItem; + if (itemNo != fpcNm_ITEM_NONE) { + field_0x174[2] = itemNo; } } else { if (dComIfGs_isDungeonItemBossKey()) { - local_140 = 0xf6; - field_0x174[2] = (u8)dComIfGs_isDungeonItemBossKey() ? 0xf6 : 0; - } else { - if (checkItemGet(0xf4, 1) && !dComIfGs_isEventBit(2)) { - local_140 = 0xf4; - field_0x174[2] = 0xf4; - } else { - if (checkItemGet(0xf5, 1) && !dComIfGs_isEventBit(1)) { - local_140 = 0xf5; - field_0x174[2] = 0xf5; - } - } + itemNo = fpcNm_ITEM_LV5_BOSS_KEY; + field_0x174[2] = (u8)dComIfGs_isDungeonItemBossKey() ? fpcNm_ITEM_LV5_BOSS_KEY : 0; + } else if (checkItemGet(fpcNm_ITEM_TOMATO_PUREE, 1) && !dComIfGs_isEventBit(2)) { + itemNo = fpcNm_ITEM_TOMATO_PUREE; + field_0x174[2] = fpcNm_ITEM_TOMATO_PUREE; + } else if (checkItemGet(fpcNm_ITEM_TASTE, 1) && !dComIfGs_isEventBit(1)) { + itemNo = fpcNm_ITEM_TASTE; + field_0x174[2] = fpcNm_ITEM_TASTE; } } - switch (local_140) { - case 0xf4: - case 0xf5: - dMeter2Info_readItemTexture(local_140, mItemTexBuf, - (J2DPicture*)mpDrawBg[0]->mBaseScreen->search('lv5_boss'), NULL, NULL, NULL, NULL, + + switch (itemNo) { + case fpcNm_ITEM_TOMATO_PUREE: + case fpcNm_ITEM_TASTE: + dMeter2Info_readItemTexture(itemNo, mItemTexBuf, + (J2DPicture*)mpDrawBg->mBaseScreen->search('lv5_boss'), NULL, NULL, NULL, NULL, NULL, NULL, -1); break; } } else { - mpDrawBg[0]->mBaseScreen->search('i_key_n')->hide(); - mpDrawBg[0]->mBaseScreen->search('lv5_k_n')->hide(); - mpDrawBg[0]->mBaseScreen->search('key_n_n')->hide(); - field_0x174[2] = (u8)dComIfGs_isDungeonItemBossKey() ? 0x26 : 0; + mpDrawBg->mBaseScreen->search('i_key_n')->hide(); + mpDrawBg->mBaseScreen->search('lv5_k_n')->hide(); + mpDrawBg->mBaseScreen->search('key_n_n')->hide(); + field_0x174[2] = (u8)dComIfGs_isDungeonItemBossKey() ? fpcNm_ITEM_BOSS_KEY : 0; } - field_0x174[0] = (u8)dComIfGs_isDungeonItemMap() ? 0x23 : 0; - field_0x174[1] = (u8)dComIfGs_isDungeonItemCompass() ? 0x24 : 0; + field_0x174[0] = (u8)dComIfGs_isDungeonItemMap() ? fpcNm_ITEM_MAP : 0; + field_0x174[1] = (u8)dComIfGs_isDungeonItemCompass() ? fpcNm_ITEM_COMPUS : 0; field_0x177 = 0; + int bVar6 = 0; for (int i = 0; i < 3; i++) { if (field_0x174[i] != 0) { @@ -1380,160 +1245,183 @@ void dMenu_Dmap_c::screenInit() { } field_0x88[i]->getPanePtr()->scale(0.9f, 0.9f); } else { - mpDrawBg[0]->mBaseScreen->search(item_tag[i])->hide(); - mpDrawBg[0]->mBaseScreen->search(waku_tag[i])->hide(); + mpDrawBg->mBaseScreen->search(item_tag[i])->hide(); + mpDrawBg->mBaseScreen->search(waku_tag[i])->hide(); + if (i == 2) { - mpDrawBg[0]->mBaseScreen->search('lv5_k_n')->hide(); - mpDrawBg[0]->mBaseScreen->search('nor_k_n')->hide(); - mpDrawBg[0]->mBaseScreen->search('key_n_n')->hide(); + mpDrawBg->mBaseScreen->search('lv5_k_n')->hide(); + mpDrawBg->mBaseScreen->search('nor_k_n')->hide(); + mpDrawBg->mBaseScreen->search('key_n_n')->hide(); } } } + if (bVar6 == true) { - field_0x94->translate(field_0x7c[field_0x177]->getTranslateX(), field_0x7c[field_0x177]->getTranslateY()); + field_0x94->getPanePtr()->translate(field_0x7c[field_0x177]->getPanePtr()->getTranslateX(), field_0x7c[field_0x177]->getPanePtr()->getTranslateY()); } + field_0x94->hide(); - field_0x98 = new CPaneMgr(mpDrawBg[0]->mBaseScreen, 'so_s_n', 0, NULL); + field_0x98 = new CPaneMgr(mpDrawBg->mBaseScreen, 'so_s_n', 0, NULL); field_0x98->hide(); } /* 801BC788-801BC848 1B70C8 00C0+00 1/1 0/0 0/0 .text getPlayerIconPos__12dMenu_Dmap_cFScf */ -void dMenu_Dmap_c::getPlayerIconPos(s8 param_1, f32 param_2) { - if (param_1 == field_0x172) { - f32 local_18; - f32 local_1c; - s16 local_20; - mMapCtrl->getPlayerDrawInfo(&local_18, &local_1c, &local_20); - mpDrawBg[0]->setIconInfo(17, local_18, local_1c, param_2, cM_sht2d(local_20), 1.0f, 1); - player_px = local_18; - player_py = local_1c; +void dMenu_Dmap_c::getPlayerIconPos(s8 i_floorNo, f32 param_2) { + if (i_floorNo == field_0x172) { + f32 pos_x; + f32 pos_y; + s16 rotation; + mMapCtrl->getPlayerDrawInfo(&pos_x, &pos_y, &rotation); + mpDrawBg->setIconInfo(ICON_LINK_e, pos_x, pos_y, param_2, cM_sht2d(rotation), 1.0f, 1); + player_px = pos_x; + player_py = pos_y; } } /* 801BC848-801BCDF4 1B7188 05AC+00 2/2 0/0 0/0 .text getIconPos__12dMenu_Dmap_cFScf */ -void dMenu_Dmap_c::getIconPos(s8 param_1, f32 param_2) { - f32 local_34; - f32 local_38; - f32 local_3c = mpDrawBg[0]->getMapWidth(); - f32 local_40 = mpDrawBg[0]->getMapHeight(); +void dMenu_Dmap_c::getIconPos(s8 i_floorNo, f32 param_2) { + f32 pos_x; + f32 pos_y; + f32 map_width = mpDrawBg->getMapWidth(); + f32 map_height = mpDrawBg->getMapHeight(); s8 cStack_45; - mMapCtrl->initGetTreasureList(1, param_1); + + mMapCtrl->initGetTreasureList(1, i_floorNo); while (true) { - if (!mMapCtrl->getTreasureList(&local_34, &local_38, &cStack_45, NULL, NULL)) { + if (!mMapCtrl->getTreasureList(&pos_x, &pos_y, &cStack_45, NULL, NULL)) { break; } - mpDrawBg[0]->setIconInfo(20, local_34, local_38, param_2, 0.0f, 1.0f, 1); + mpDrawBg->setIconInfo(ICON_DUNGEON_ENTER_e, pos_x, pos_y, param_2, 0.0f, 1.0f, 1); } - mMapCtrl->initGetTreasureList(8, param_1); + + mMapCtrl->initGetTreasureList(8, i_floorNo); while (true) { - if (!mMapCtrl->getTreasureList(&local_34, &local_38, &cStack_45, NULL, NULL)) { + if (!mMapCtrl->getTreasureList(&pos_x, &pos_y, &cStack_45, NULL, NULL)) { break; } - mpDrawBg[0]->setIconInfo(22, local_34, local_38, param_2, 0.0f, 1.0f, 1); + mpDrawBg->setIconInfo(ICON_LV8_WARP_e, pos_x, pos_y, param_2, 0.0f, 1.0f, 1); } - mMapCtrl->initGetTreasureList(3, param_1); - if (mMapCtrl->getTreasureList(&local_34, &local_38, NULL, NULL, NULL) == 1) { - mpDrawBg[0]->setIconInfo(4, local_34, local_38, param_2, 0.0f, 1.0f, 1); + + mMapCtrl->initGetTreasureList(3, i_floorNo); + if (mMapCtrl->getTreasureList(&pos_x, &pos_y, NULL, NULL, NULL) == 1) { + mpDrawBg->setIconInfo(ICON_BOSS_e, pos_x, pos_y, param_2, 0.0f, 1.0f, 1); } - mMapCtrl->initGetTreasureList(0, param_1); + + mMapCtrl->initGetTreasureList(0, i_floorNo); while (true) { - if (!mMapCtrl->getTreasureList(&local_34, &local_38, NULL, NULL, NULL)) { + if (!mMapCtrl->getTreasureList(&pos_x, &pos_y, NULL, NULL, NULL)) { break; } - mpDrawBg[0]->setIconInfo(19, local_34, local_38, param_2, 0.0f, 1.0f, 1); + mpDrawBg->setIconInfo(ICON_TREASURE_CHEST_e, pos_x, pos_y, param_2, 0.0f, 1.0f, 1); } - mMapCtrl->initGetTreasureList(5, param_1); + + mMapCtrl->initGetTreasureList(5, i_floorNo); while (true) { - if (!mMapCtrl->getTreasureList(&local_34, &local_38, NULL, NULL, NULL)) { + if (!mMapCtrl->getTreasureList(&pos_x, &pos_y, NULL, NULL, NULL)) { break; } - mpDrawBg[0]->setIconInfo(18, local_34, local_38, param_2, 0.0f, 1.0f, 1); + mpDrawBg->setIconInfo(ICON_DESTINATION_e, pos_x, pos_y, param_2, 0.0f, 1.0f, 1); } + if (dComIfGp_isLightDropMapVisible()) { - mMapCtrl->initGetTreasureList(4, param_1); + mMapCtrl->initGetTreasureList(4, i_floorNo); while (true) { - if (!mMapCtrl->getTreasureList(&local_34, &local_38, NULL, NULL, NULL)) { + if (!mMapCtrl->getTreasureList(&pos_x, &pos_y, NULL, NULL, NULL)) { break; } - mpDrawBg[0]->setIconInfo(5, local_34, local_38, param_2, 0.0f, 1.0f, 1); + mpDrawBg->setIconInfo(ICON_LIGHT_DROP_e, pos_x, pos_y, param_2, 0.0f, 1.0f, 1); } } - mMapCtrl->initGetTreasureList(12, param_1); + + mMapCtrl->initGetTreasureList(12, i_floorNo); while (true) { - if (!mMapCtrl->getTreasureList(&local_34, &local_38, NULL, NULL, NULL)) { + if (!mMapCtrl->getTreasureList(&pos_x, &pos_y, NULL, NULL, NULL)) { break; } - mpDrawBg[0]->setIconInfo(6, local_34, local_38, param_2, 0.0f, 1.0f, 1); + mpDrawBg->setIconInfo(ICON_LIGHT_BALL_e, pos_x, pos_y, param_2, 0.0f, 1.0f, 1); } - mMapCtrl->initGetTreasureList(11, param_1); + + mMapCtrl->initGetTreasureList(11, i_floorNo); while (true) { - if (!mMapCtrl->getTreasureList(&local_34, &local_38, NULL, NULL, NULL)) { + if (!mMapCtrl->getTreasureList(&pos_x, &pos_y, NULL, NULL, NULL)) { break; } - mpDrawBg[0]->setIconInfo(7, local_34, local_38, param_2, 0.0f, 1.0f, 1); + mpDrawBg->setIconInfo(ICON_CANNON_BALL_e, pos_x, pos_y, param_2, 0.0f, 1.0f, 1); } - mMapCtrl->initGetTreasureList(2, param_1); + + mMapCtrl->initGetTreasureList(2, i_floorNo); while (true) { - if (!mMapCtrl->getTreasureList(&local_34, &local_38, NULL, NULL, NULL)) { + if (!mMapCtrl->getTreasureList(&pos_x, &pos_y, NULL, NULL, NULL)) { break; } - mpDrawBg[0]->setIconInfo(14, local_34, local_38, param_2, 0.0f, 1.0f, 1); + mpDrawBg->setIconInfo(ICON_KEY_e, pos_x, pos_y, param_2, 0.0f, 1.0f, 1); } - mMapCtrl->initGetTreasureList(9, param_1); + + mMapCtrl->initGetTreasureList(9, i_floorNo); while (true) { - if (!mMapCtrl->getTreasureList(&local_34, &local_38, NULL, NULL, NULL)) { + if (!mMapCtrl->getTreasureList(&pos_x, &pos_y, NULL, NULL, NULL)) { break; } - mpDrawBg[0]->setIconInfo(12, local_34, local_38, param_2, 0.0f, 1.0f, 1); + mpDrawBg->setIconInfo(ICON_MONKEY_e, pos_x, pos_y, param_2, 0.0f, 1.0f, 1); } - mMapCtrl->initGetTreasureList(15, param_1); + + mMapCtrl->initGetTreasureList(15, i_floorNo); while (true) { - if (!mMapCtrl->getTreasureList(&local_34, &local_38, NULL, NULL, NULL)) { + if (!mMapCtrl->getTreasureList(&pos_x, &pos_y, NULL, NULL, NULL)) { break; } - mpDrawBg[0]->setIconInfo(8, local_34, local_38, param_2, 0.0f, 1.0f, 1); + mpDrawBg->setIconInfo(ICON_COPY_STATUE_e, pos_x, pos_y, param_2, 0.0f, 1.0f, 1); } - mMapCtrl->initGetTreasureList(16, param_1); - s16 local_44; - u8 local_46; - s8 local_47; + + mMapCtrl->initGetTreasureList(16, i_floorNo); + s16 rotation; + u8 swbit; + s8 roomNo; while (true) { - if (!mMapCtrl->getTreasureList(&local_34, &local_38, NULL, &local_46, &local_47)) { + if (!mMapCtrl->getTreasureList(&pos_x, &pos_y, NULL, &swbit, &roomNo)) { break; } - if (local_46 == 0xff || (local_46 != 0xff && dComIfGs_isSwitch(local_46, (int)local_47))) { - mpDrawBg[0]->setIconInfo(15, local_34, local_38, param_2, 0.0f, 1.0f, 1); + if (swbit == 0xFF || (swbit != 0xFF && dComIfGs_isSwitch(swbit, (int)roomNo))) { + mpDrawBg->setIconInfo(ICON_OOCCOO_e, pos_x, pos_y, param_2, 0.0f, 1.0f, 1); } else { - mpDrawBg[0]->setIconInfo(16, local_34, local_38, param_2, 0.0f, 1.0f, 1); + mpDrawBg->setIconInfo(ICON_OOCCOO_JR_e, pos_x, pos_y, param_2, 0.0f, 1.0f, 1); } } - s32 drawInfo = mMapCtrl->getRestartDrawInfo(&local_34, &local_38, &local_44); - if (drawInfo == param_1) { - mpDrawBg[0]->setIconInfo(21, local_34, local_38, param_2, cM_sht2d(local_44), 1.0f, 1); + + s32 drawInfo = mMapCtrl->getRestartDrawInfo(&pos_x, &pos_y, &rotation); + if (drawInfo == i_floorNo) { + mpDrawBg->setIconInfo(ICON_LINK_ENTER_e, pos_x, pos_y, param_2, cM_sht2d(rotation), 1.0f, 1); } - getPlayerIconPos(param_1, param_2); + + getPlayerIconPos(i_floorNo, param_2); } /* 801BCDF4-801BD144 1B7734 0350+00 1/0 0/0 0/0 .text __dt__12dMenu_Dmap_cFv */ dMenu_Dmap_c::~dMenu_Dmap_c() { s32 iVar2 = field_0xe8->getTotalFreeSize(); s32 iVar4 = field_0xe8->getTotalFreeSize(); - if (mpDrawBg[0] != NULL) { - delete mpDrawBg[0]; - mpDrawBg[0] = NULL; + + if (mpDrawBg != NULL) { + delete mpDrawBg; + mpDrawBg = NULL; } + if (mDmapHeap != NULL) { mDmapHeap->free(mItemTexBuf); mItemTexBuf = NULL; } + OS_REPORT("mpDrawBg free ==================> %d bytes use, %d bytes remain\n", field_0xe8->getTotalFreeSize() - iVar4, field_0xe8->getTotalFreeSize()); + if (mSelStick != NULL) { delete mSelStick; } + if (field_0x94 != NULL) { delete field_0x94; } + for (int i = 0; i < 8; i++) { if (mSelFloor[i] != NULL) { delete mSelFloor[i]; @@ -1548,15 +1436,18 @@ dMenu_Dmap_c::~dMenu_Dmap_c() { mIconBossPos[i] = NULL; } } + for (int i = 0; i < 2; i++) { if (mStayIcon[i] != NULL) { delete mStayIcon[i]; mStayIcon[i] = NULL; } } + if (field_0x10 != NULL) { delete field_0x10; } + for (int i = 0; i < 3; i++) { if (field_0x7c[i] != NULL) { delete field_0x7c[i]; @@ -1567,29 +1458,36 @@ dMenu_Dmap_c::~dMenu_Dmap_c() { field_0x88[i] = NULL; } } + if (field_0x98 != NULL) { delete field_0x98; } + if (mMapCtrl != NULL) { mMapCtrl->_delete(); delete mMapCtrl; } - if (field_0xe0 != NULL) { - JKRUnmountArchive(field_0xe0->getArchive()); - field_0xe0->destroy(); - field_0xe0 = NULL; + + if (mpDresArchiveMount != NULL) { + JKRUnmountArchive(mpDresArchiveMount->getArchive()); + mpDresArchiveMount->destroy(); + mpDresArchiveMount = NULL; } - if (field_0xe4 != NULL) { - JKRUnmountArchive(field_0xe4); - field_0xe4 = 0; + + if (mpDresArchive != NULL) { + JKRUnmountArchive(mpDresArchive); + mpDresArchive = NULL; } + if (mDmapHeap != NULL) { mDoExt_destroyExpHeap(mDmapHeap); - mDmapHeap = 0; + mDmapHeap = NULL; } - dMeter2Info_setMapDrugFlag(0); + + dMeter2Info_setMapDrugFlag(false); OS_REPORT("MenuDmap free ==================> %d bytes use, %d bytes remain\n", field_0xe8->getTotalFreeSize() - iVar2, field_0xe8->getTotalFreeSize()); + dMenu_Dmap_c::myclass = NULL; } @@ -1610,16 +1508,20 @@ s8 dMenu_Dmap_c::getDefaultCurFloorPos() { void dMenu_Dmap_c::iconMoveCalc() { s32 iVar7 = ((s16)field_0x172 - (s16)mBottomFloor); mStayIcon[0]->show(); + Vec local_3c = field_0x14c[0]; Vec local_6c = mIconLinkPos[iVar7]->getGlobalVtxCenter(false, 0); mStayIcon[0]->paneTrans(local_6c.x - local_3c.x, local_6c.y - local_3c.y); + // !@bug Uses ScaleX for y coordinate f32 yscale = mSelFloor[iVar7]->getPanePtr()->getScaleX(); f32 xscale = mSelFloor[iVar7]->getPanePtr()->getScaleX(); mStayIcon[0]->scale(xscale, yscale); + if (field_0x173 != -99) { iVar7 = field_0x173 - (s16)mBottomFloor; mStayIcon[1]->show(); + Vec local_54 = field_0x14c[1]; Vec local_78 = mIconBossPos[iVar7]->getGlobalVtxCenter(false, 0); mStayIcon[1]->paneTrans(local_78.x - local_54.x, local_78.y - local_54.y); @@ -1629,20 +1531,22 @@ void dMenu_Dmap_c::iconMoveCalc() { /* 801BD3B8-801BD524 1B7CF8 016C+00 1/1 0/0 0/0 .text * drawFloorScreenBack__12dMenu_Dmap_cFP9J2DScreenffP13J2DOrthoGraph */ -void dMenu_Dmap_c::drawFloorScreenBack(J2DScreen* param_1, f32 param_2, f32 param_3, - J2DOrthoGraph* param_4) { - for (int i = 0; i < (s8)(getFloorAll() - mBottomFloor + 1); i++) { +void dMenu_Dmap_c::drawFloorScreenBack(J2DScreen* i_screen, f32 i_transX, f32 i_transY, + J2DOrthoGraph* i_ortho) { + for (int i = 0; i < getFloorAll(); i++) { if (i == getCurFloorPos() && 0.0f == field_0x114[i]) { mSelFloor[i]->hide(); } else { mSelFloor[i]->show(); } } + if (field_0x172 - mBottomFloor == getCurFloorPos()) { mStayIcon[0]->hide(); } else { mStayIcon[0]->show(); } + if (field_0x173 != -99) { if (field_0x173 - mBottomFloor == getCurFloorPos()) { mStayIcon[1]->hide(); @@ -1650,26 +1554,28 @@ void dMenu_Dmap_c::drawFloorScreenBack(J2DScreen* param_1, f32 param_2, f32 para mStayIcon[1]->show(); } } - param_1->draw(param_2, param_3, param_4); -} + i_screen->draw(i_transX, i_transY, i_ortho); +} /* 801BD524-801BD690 1B7E64 016C+00 1/1 0/0 0/0 .text * drawFloorScreenTop__12dMenu_Dmap_cFP9J2DScreenffP13J2DOrthoGraph */ -void dMenu_Dmap_c::drawFloorScreenTop(J2DScreen* param_1, f32 param_2, f32 param_3, - J2DOrthoGraph* param_4) { - for (int i = 0; i < (s8)(getFloorAll() - mBottomFloor + 1); i++) { +void dMenu_Dmap_c::drawFloorScreenTop(J2DScreen* i_screen, f32 i_transX, f32 i_transY, + J2DOrthoGraph* i_ortho) { + for (int i = 0; i < getFloorAll(); i++) { if (i == getCurFloorPos() && 0.0f == field_0x114[i]) { mSelFloor[i]->show(); } else { mSelFloor[i]->hide(); } } + if (field_0x172 - mBottomFloor == getCurFloorPos()) { mStayIcon[0]->show(); } else { mStayIcon[0]->hide(); } + if (field_0x173 != -99) { if (field_0x173 - mBottomFloor == getCurFloorPos()) { mStayIcon[1]->show(); @@ -1677,28 +1583,19 @@ void dMenu_Dmap_c::drawFloorScreenTop(J2DScreen* param_1, f32 param_2, f32 param mStayIcon[1]->hide(); } } - param_1->draw(param_2, param_3, param_4); -} + i_screen->draw(i_transX, i_transY, i_ortho); +} /* 801BD690-801BD6C4 1B7FD0 0034+00 3/3 0/0 0/0 .text isMapMoveState__12dMenu_Dmap_cFv */ -// getDisableZoomMoveFlgX is not defined - needs the member variables and the class is not defined at all. -#ifdef NONMATCHING bool dMenu_Dmap_c::isMapMoveState() { field_0x184 = true; - if (mMapCtrl->getDisableZoomMoveFlgX() == 1 && mMapCtrl->getDisableZoomMoveFlgZ() == 1) { - field_0x184 = false; - } - if (field_0x17b == 0) { + if (mMapCtrl->getDisableZoomMoveFlgX() == true && mMapCtrl->getDisableZoomMoveFlgZ() == true) { field_0x184 = false; } + return field_0x184; } -#else -bool dMenu_Dmap_c::isMapMoveState() { - // NONMATCHING -} -#endif /* 801BD6C4-801BD7C0 1B8004 00FC+00 1/1 0/0 0/0 .text floorChangeMode__12dMenu_Dmap_cFv */ @@ -1718,237 +1615,996 @@ void dMenu_Dmap_c::floorChangeMode() { field_0x16c = field_0x16d; mMapCtrl->setPlusNowStayFloorNo(dVar1, field_0x179); } + field_0x185 = 0; + if (mZoomState != 0) { - mpDrawBg[0]->setAButtonString(0); - mpDrawBg[0]->setBButtonString(0x522); + mpDrawBg->setAButtonString(0); + mpDrawBg->setBButtonString(0x522); } else { - mpDrawBg[0]->setAButtonString(0x527); - mpDrawBg[0]->setBButtonString(0x3f9); + mpDrawBg->setAButtonString(0x527); + mpDrawBg->setBButtonString(0x3f9); } } /* 801BD7C0-801BDD40 1B8100 0580+00 1/1 0/0 0/0 .text _create__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::_create() { - // NONMATCHING -} + u32 sp30 = field_0xe8->getTotalFreeSize(); + OS_REPORT("MenuDmap create前 最大===========> %d bytes max\n", field_0xe8->getFreeSize()); + OS_REPORT("MenuDmap create前================> %d bytes remain\n", sp30); -/* ############################################################################################## */ -/* 80454054-80454058 002654 0004+00 1/1 0/0 0/0 .sdata2 @6017 */ -SECTION_SDATA2 static f32 lit_6017 = 12.0f / 17.0f; + mDmapHeap = JKRCreateExpHeap(field_0xe8->getFreeSize() - 0x10, field_0xe8, false); + JUT_ASSERT(3732, mDmapHeap != 0); + JKRHeap* heap = mDoExt_setCurrentHeap(mDmapHeap); + u32 sp28 = mDmapHeap->getTotalFreeSize(); + + mMapCtrl = new dMenu_DmapMapCtrl_c(); + JUT_ASSERT(3739, mMapCtrl != 0); + + mCMessageNum = 0; + mJMessageNum = 0; + + field_0x184 = true; + if (mMapCtrl->getDisableZoomMoveFlgX() == true && mMapCtrl->getDisableZoomMoveFlgZ() == true) { + field_0x184 = false; + } + + mSelStick = new STControl(5, 2, 1, 1, 0.9f, 0.5f, 0, 0x800); + JUT_ASSERT(3753, mSelStick != 0); + mSelStick->setFirstWaitTime(8); + + u32 sp24 = field_0xe8->getTotalFreeSize(); + mpDrawBg = new dMenu_DmapBg_c(mDmapHeap, mpStick); + JUT_ASSERT(3763, mpDrawBg != 0); + + mItemTexBuf = (u8*)mDmapHeap->alloc(0xC00, 0x20); + JUT_ASSERT(3766, mItemTexBuf != 0); + + if (mZoomState) { + if (POINTER_OPT == 0) { + mpDrawBg->setAButtonString(0); + mpDrawBg->setBButtonString(0x522); + } + + mCMessageNum = 0x37B; + mJMessageNum = 0x569; + } else { + if (POINTER_OPT == 0) { + mpDrawBg->setAButtonString(0x527); + mpDrawBg->setBButtonString(0x3F9); + } + + mCMessageNum = 0; + mJMessageNum = 0; + } + + OS_REPORT("mpDrawBg create==================> %d bytes use, %d bytes remain\n", sp24 - field_0xe8->getTotalFreeSize(), field_0xe8->getTotalFreeSize()); + + if (dMeter2Info_getMapStatus() == 6) { + s8 sp8 = 0; + if (dComIfGs_isSaveSwitch(0x67)) { + sp8++; + } else if (dComIfGs_isSaveSwitch(0x66) || dComIfGs_isSaveSwitch(0x65)) { + + } + + mMapCtrl->_create(mpDrawBg->getMapWidth(), mpDrawBg->getMapHeight(), mpDrawBg->getMapWidth(), mpDrawBg->getMapHeight(), sp8, mpBinData); + m_process = 4; + } else { + mMapCtrl->_create(mpDrawBg->getMapWidth(), mpDrawBg->getMapHeight(), mpDrawBg->getMapWidth(), mpDrawBg->getMapHeight(), mpBinData); + m_process = 1; + } + + field_0x16c = mMapCtrl->getNowStayFloorNo(); + field_0x172 = mMapCtrl->getPlayerStayFloorNo(); + field_0x16d = field_0x16c; + field_0x16f = field_0x16c; + field_0x16a = 0; + + mpDrawBg->setDPDFloorSelCurPos(field_0x172); + mFloorAll = mMapCtrl->getTopFloorNo(); + mBottomFloor = mMapCtrl->getBottomFloorNo(); + field_0x173 = 0x9D; + + int floorNo; + if (dTres_c::getBossIconFloorNo(&floorNo)) { + OS_REPORT("BOSS floorNo<%d>\n", floorNo); + field_0x173 = floorNo; + } else { + OS_REPORT("BOSS floor Nothing!!\n"); + } + + mpDrawBg->setFloorMessage(); + + if (mZoomState) { + f32 sp1C = 0.0f; + f32 sp18 = 0.0f; + mMapCtrl->calcZoomCenter(&sp1C, &sp18); + mMapCtrl->initZoomWait(sp1C, sp18); + + if ((mMapCtrl->getDisableZoomMoveFlgX() != true || mMapCtrl->getDisableZoomMoveFlgZ() != true) && mpDrawBg->field_0xcf4 != NULL) { + mpDrawBg->field_0xcf4->setAlpha(0xFF); + } + } + + field_0x182 = 1; + field_0x183 = 1; + + mpDrawBg->mapIconScaleSet(mZoomState); + + screenInit(); + + mpDrawBg->getMapPane()->changeTexture(mMapCtrl->getResTIMGPointer(0), NULL); + + if (mpDrawBg->getMapPane()->append(mMapCtrl->getResTIMGPointer(1), 1.0f)) { + mpDrawBg->getMapPane()->setBlendRatio(1.0f, 0.0f); + } + + mDoExt_setCurrentHeap(heap); + + getIconPos(mMapCtrl->getNowStayFloorNo(), 1.0f); + + field_0x17d = 0; + (this->*init_process[m_process])(); + + field_0x17e = 0; + (this->*map_init_process[field_0x17e])(); +} /* 801BDDA4-801BDEF8 1B86E4 0154+00 0/0 1/1 0/0 .text _move__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::_move() { - // NONMATCHING + u8 prev_process = m_process; + JKRHeap* prev_heap = mDoExt_setCurrentHeap(mDmapHeap); + + mpDrawBg->update(); + mpDrawBg->clearIconInfo(); + mapControl(); + + if (field_0x17e == 0) { + mpDrawBg->dpdMove(mFloorAll, mBottomFloor, field_0x172, field_0x174, field_0x181); + + if (mpDrawBg->mpBlack != NULL) { + f32 var_f31; + if (mpDrawBg->field_0xdd3 != 0xFF) { + var_f31 = 0.0f; + } else { + var_f31 = 0.70588237f; + } + + cLib_addCalc2(&field_0x110, var_f31, 0.4f, 0.5f); + mpDrawBg->mpBlack->setAlphaRate(field_0x110); + } + + (this->*move_process[m_process])(); + mpDrawBg->setCButtonString(0); + mpDrawBg->setJButtonString(0); + + if (m_process != prev_process) { + (this->*init_process[m_process])(); + } + } + + setMapTexture(); + mapBgAnime(); + mpDrawBg->calcCursor(); + mpDrawBg->addGoldFrameAlphaRate(); + + mDoExt_setCurrentHeap(prev_heap); } /* 801BDEF8-801BDF48 1B8838 0050+00 1/1 0/0 0/0 .text setMapTexture__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::setMapTexture() { f32 mapBlendPer = mMapCtrl->getMapBlendPer(); - mpDrawBg[0]->getMapPane()->setBlendRatio(mapBlendPer, 1.0f - mapBlendPer); + mpDrawBg->getMapPane()->setBlendRatio(mapBlendPer, 1.0f - mapBlendPer); } - /* 801BDF48-801BDF6C 1B8888 0024+00 1/1 0/0 0/0 .text mapBgAnime__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::mapBgAnime() { - mpDrawBg[0]->mapScreenAnime(); + mpDrawBg->mapScreenAnime(); } -/* ############################################################################################## */ -/* 80454058-8045405C 002658 0004+00 2/2 0/0 0/0 .sdata2 @6180 */ -SECTION_SDATA2 static f32 lit_6180 = 100.0f; - -/* 8045405C-80454060 00265C 0004+00 7/7 0/0 0/0 .sdata2 @6181 */ -SECTION_SDATA2 static f32 lit_6181 = -1.0f; - /* 801BDF6C-801BE328 1B88AC 03BC+00 1/1 0/0 0/0 .text mapControl__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::mapControl() { - // NONMATCHING -} + u8 temp_r27 = field_0x17e; + if (m_process == 0 || field_0x183 == 0) { + mMapCtrl->move(); -/* ############################################################################################## */ -/* 80395760-80395760 021DC0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80395826 = "/res/FieldMap/res-d.arc"; -SECTION_DEAD static char const* const stringBase_8039583E = "dat/data.dat"; -#pragma pop + getIconPos(mMapCtrl->getDispFloorNo(), mMapCtrl->getMapBlendPer()); + getIconPos(mMapCtrl->getDispFloor2No(), 1.0f - mMapCtrl->getMapBlendPer()); + return; + } + + (this->*map_move_process[field_0x17e])(); + + if (field_0x17e != temp_r27) { + (this->*map_init_process[field_0x17e])(); + } + + f32 sp28 = g_fmapHIO.mScrollSpeedSlowBound < g_fmapHIO.mScrollSpeedFastBound ? g_fmapHIO.mScrollSpeedSlowBound : g_fmapHIO.mScrollSpeedFastBound; + f32 sp24 = g_fmapHIO.mScrollSpeedSlowBound > g_fmapHIO.mScrollSpeedFastBound ? g_fmapHIO.mScrollSpeedSlowBound : g_fmapHIO.mScrollSpeedFastBound; + + f32 stick_value = mpCStick->getValueStick(); + s16 stick_angle = mpCStick->getAngleStick(); + + bool var_r28 = false; + f32 disp_center_x = mMapCtrl->getDispCenterX(); + f32 disp_center_z = mMapCtrl->getDispCenterZ(); + + if (stick_value >= sp28 && field_0x181 != 2) { + var_r28 = true; + + f32 var_f31 = mMapCtrl->getStageMapSizeX(); + if (var_f31 < mMapCtrl->getStageMapSizeZ()) { + var_f31 = mMapCtrl->getStageMapSizeZ(); + } + + f32 var_f29; + if (stick_value < sp24) { + var_f29 = g_fmapHIO.mScrollSpeedDungeonMapSlow; + } else { + var_f29 = g_fmapHIO.mScrollSpeedDungeonMapFast; + } + + f32 temp_f28 = (var_f29 / 100.0f) * var_f31; + f32 sp18 = temp_f28 * cM_ssin(stick_angle); + f32 sp14 = temp_f28 * cM_scos(stick_angle); + mMapCtrl->setPlusZoomCenterX(sp18); + mMapCtrl->setPlusZoomCenterZ(sp14); + } + + mMapCtrl->move(); + + getIconPos(mMapCtrl->getDispFloorNo(), mMapCtrl->getMapBlendPer()); + getIconPos(mMapCtrl->getDispFloor2No(), 1.0f - mMapCtrl->getMapBlendPer()); + + if (var_r28 && (disp_center_x != mMapCtrl->getDispCenterX() || disp_center_z != mMapCtrl->getDispCenterZ())) { + Z2GetAudioMgr()->seStartLevel(Z2SE_SY_MAP_SCROLL, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + + if (mpDrawBg->mpMeterHaihai != NULL && isMapMoveState() && (getCMessageNum() == 0x37B || getCMessageNum() == 0x569)) { + mpDrawBg->field_0xdda = 0; + + if (mMapCtrl->getDispCenterX() > mMapCtrl->getZoomCenterMinX()) { + mpDrawBg->field_0xdda |= 1; + } + + if (mMapCtrl->getDispCenterX() < mMapCtrl->getZoomCenterMaxX()) { + mpDrawBg->field_0xdda |= 4; + } + + if (mMapCtrl->getDispCenterZ() > mMapCtrl->getZoomCenterMinZ()) { + mpDrawBg->field_0xdda |= 8; + } + + if (mMapCtrl->getDispCenterZ() < mMapCtrl->getZoomCenterMaxZ()) { + mpDrawBg->field_0xdda |= 2; + } + + mpDrawBg->mpMeterHaihai->_execute(0); + } +} /* 801BE328-801BE670 1B8C68 0348+00 0/0 1/1 0/0 .text isOpen__12dMenu_Dmap_cFv */ bool dMenu_Dmap_c::isOpen() { - // NONMATCHING + bool var_r28 = false; + bool var_r27 = false; + const s16 display_frame_num = g_fmapHIO.mDisplayFrameNum; + const s16 undisplay_frame_num = g_fmapHIO.mUndisplayFrameNum; + + mpBinData = NULL; + + if (mpDresArchive == NULL) { + if (mpDresArchiveMount == NULL) { + mpDresArchiveMount = mDoDvdThd_mountArchive_c::create("/res/FieldMap/res-d.arc", 2, mDoExt_getJ2dHeap()); + } + + if (mpDresArchiveMount->sync()) { + mpDresArchive = mpDresArchiveMount->getArchive(); + mpDresArchiveMount->destroy(); + mpDresArchiveMount = NULL; + + mpBinData = mpDresArchive->getResource("dat/data.dat"); + JUT_ASSERT(4377, mpBinData != 0); + + _create(); + } else { + return var_r28; + } + } + + if (field_0x164 == 0) { + var_r27 = true; + } + + field_0x164++; + f32 temp_f31 = (f32)field_0x164 / (f32)display_frame_num; + + if (mInOutDir == 1) { + field_0x104 = (1.0f - temp_f31) * -mDoGph_gInf_c::getWidthF(); + field_0x108 = 0.0f; + } else if (mInOutDir == 3) { + field_0x104 = (1.0f - temp_f31) * mDoGph_gInf_c::getWidthF(); + field_0x108 = 0.0f; + } else if (mInOutDir == 2) { + field_0x104 = 0.0f; + field_0x108 = (1.0f - temp_f31) * -mDoGph_gInf_c::getHeightF(); + } else if (mInOutDir == 0) { + field_0x104 = 0.0f; + field_0x108 = (1.0f - temp_f31) * mDoGph_gInf_c::getHeightF(); + } + + field_0x10c = temp_f31; + + if (m_process == 0) { + Vec sp2C = field_0x7c[field_0x177]->getGlobalVtxCenter(false, 0); + mpDrawBg->mpDrawCursor->setPos(sp2C.x + field_0x104, sp2C.y, field_0x7c[field_0x177]->getPanePtr(), 0); + } else { + Vec sp20 = mSelFloor[getDefaultCurFloorPos()]->getGlobalVtxCenter(false, 0); + mpDrawBg->mpDrawCursor->setPos(sp20.x + field_0x104, sp20.y, mSelFloor[getDefaultCurFloorPos()]->getPanePtr(), 1); + } + + if (field_0x164 >= display_frame_num) { + field_0x164 = undisplay_frame_num; + field_0x104 = 0.0f; + field_0x108 = 0.0f; + field_0x10c = 1.0f; + var_r28 = true; + } + + mpDrawBg->setAllAlphaRate(field_0x10c, var_r27); + mpDrawBg->setGoldFrameAlphaRate(0.0f); + return var_r28; } /* 801BE670-801BE7E0 1B8FB0 0170+00 0/0 1/1 0/0 .text isClose__12dMenu_Dmap_cFv */ bool dMenu_Dmap_c::isClose() { - // NONMATCHING + bool var_r30 = true; + bool var_r29 = false; + const s16 undisplay_frame_num = g_fmapHIO.mUndisplayFrameNum; + + if (field_0x164 == undisplay_frame_num) { + var_r29 = true; + } + + field_0x164--; + + f32 temp_f31 = (f32)field_0x164 / (f32)undisplay_frame_num; + + if (field_0x164 <= 0) { + field_0x164 = 0; + } else { + var_r30 = false; + } + + if (mInOutDir == 1) { + field_0x104 = (1.0f - temp_f31) * mDoGph_gInf_c::getWidthF(); + field_0x108 = 0.0f; + } else if (mInOutDir == 3) { + field_0x104 = (1.0f - temp_f31) * -mDoGph_gInf_c::getWidthF(); + field_0x108 = 0.0f; + } else if (mInOutDir == 2) { + field_0x104 = 0.0f; + field_0x108 = (1.0f - temp_f31) * mDoGph_gInf_c::getHeightF(); + } else if (mInOutDir == 0) { + field_0x104 = 0.0f; + field_0x108 = (1.0f - temp_f31) * -mDoGph_gInf_c::getHeightF(); + } + + field_0x10c = temp_f31; + mpDrawBg->setAllAlphaRate(field_0x10c, var_r29); + mpDrawBg->decGoldFrameAlphaRate(); + return var_r30; } /* 801BE7E0-801BEAFC 1B9120 031C+00 0/0 1/1 0/0 .text _draw__12dMenu_Dmap_cFv */ +// NONMATCHING - not sure what the 2nd param of getGlobalVtxCenter is supposed to be void dMenu_Dmap_c::_draw() { - // NONMATCHING + if (mMapCtrl != NULL) { + mMapCtrl->draw(); + + if (mpDrawBg != NULL) { + mpDrawBg->setAllTrans(field_0x104, field_0x108); + + if (mpDrawBg->mpBackTexture != NULL) { + f32 var_f31 = 100.0f * mpDrawBg->field_0xd88; + f32 sp24 = mpDrawBg->field_0xd80 / var_f31; + f32 sp20 = mpDrawBg->field_0xd84 / var_f31; + + const ResTIMG* back_timg = mpDrawBg->mpBackTexture->getTexture(0)->getTexInfo(); + field_0x13c = mMapCtrl->getPixelStageSizeX(); + field_0x140 = mMapCtrl->getPixelStageSizeZ(); + field_0x134 = mMapCtrl->getPixelCenterX(); + field_0x138 = mMapCtrl->getPixelCenterZ(); + + f32 temp_f30; + f32 var_f29; + + f32 var_f27; + if (field_0x13c > field_0x140) { + temp_f30 = back_timg->width * var_f31; + var_f29 = mMapCtrl->getStageMapSizeX(); + var_f27 = field_0x13c * (temp_f30 / var_f29); + } else { + temp_f30 = back_timg->height * var_f31; + var_f29 = mMapCtrl->getStageMapSizeZ(); + var_f27 = field_0x140 * (temp_f30 / var_f29); + } + + f32 sp1C[2]; + sp1C[0] = var_f27; + sp1C[1] = var_f27; + + f32 sp14[2]; + sp14[0] = -(field_0x134 + (100.0f * (sp24 * mMapCtrl->getPixelPerCm()))); + sp14[1] = -(field_0x138 + 100.0f * (sp20 * mMapCtrl->getPixelPerCm())); + + Vec spC; + spC.x = mpDrawBg->mMapScreen[0]->search('center_n')->getGlbBounds().i.x + (mpDrawBg->mMapScreen[0]->search('center_n')->getWidth() / 2); + spC.y = mpDrawBg->mMapScreen[0]->search('center_n')->getGlbBounds().i.y + (mpDrawBg->mMapScreen[0]->search('center_n')->getHeight() / 2); + + CPaneMgr sp70; + Vec sp34 = sp70.getGlobalVtxCenter(mpDrawBg->getMapPane(), false, 0); + + spC.x = sp34.x; + spC.y = sp34.y; + mpDrawBg->mpBackTexture->move(sp14[0] + (spC.x - (sp1C[0] / 2)), sp14[1] + (spC.y - (sp1C[1] / 2))); + mpDrawBg->mpBackTexture->resize(sp1C[0], sp1C[1]); + } + + dComIfGd_set2DOpa(mpDrawBg); + } + } } /* 801BEAFC-801BEB0C 1B943C 0010+00 1/0 0/0 0/0 .text itemInfo_init_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::itemInfo_init_proc() { - // NONMATCHING + m_itemSubProcess = 0; + field_0x185 = 0; } /* 801BEB0C-801BEB44 1B944C 0038+00 1/0 0/0 0/0 .text itemInfo_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::itemInfo_proc() { - // NONMATCHING + (this->*itemInfo_subProcess[m_itemSubProcess])(); } /* 801BEB44-801BEF28 1B9484 03E4+00 1/0 0/0 0/0 .text itemSelect__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::itemSelect() { - // NONMATCHING + if (mpDrawBg->field_0xdd4 == -99 && mpDrawBg->field_0xdd5 == 0xFF) { + mSelStick->checkTrigger(); + } + + if (POINTER_OPT == 0) { + if (field_0x174[field_0x177] != 0) { + mpDrawBg->setAButtonString(0x5D); + } else { + mpDrawBg->setAButtonString(0); + } + + mpDrawBg->setBButtonString(0x3F9); + } + + if (mSelStick->checkUpTrigger()) { + int temp_r3 = getNextItem(-1); + if (temp_r3 != -1) { + Z2GetAudioMgr()->seStart(Z2SE_SY_CURSOR_ITEM, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + field_0x178 = field_0x177; + field_0x177 = temp_r3; + field_0x179 = mSelStick->getYwaitTimer(); + itemSelectAnmInit(); + } + return; + } + + if (mSelStick->checkDownTrigger()) { + int temp_r3_2 = getNextItem(1); + if (temp_r3_2 != -1) { + Z2GetAudioMgr()->seStart(Z2SE_SY_CURSOR_ITEM, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + field_0x178 = field_0x177; + field_0x177 = temp_r3_2; + field_0x179 = mSelStick->getYwaitTimer(); + itemSelectAnmInit(); + } + return; + } + + if (mSelStick->checkRightTrigger()) { + Z2GetAudioMgr()->seStart(Z2SE_SY_CURSOR_FLOOR, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + field_0x179 = mSelStick->getXwaitTimer(); + m_process = 3; + + if (POINTER_OPT == 0) { + if (mZoomState) { + mpDrawBg->setAButtonString(0); + mpDrawBg->setBButtonString(0x522); + } else { + mpDrawBg->setAButtonString(0x527); + mpDrawBg->setBButtonString(0x3F9); + } + } + } else if (mpDrawBg->field_0xdd4 == -99) { + if (mpDrawBg->field_0xdd5 != 0xFF) { + if (field_0x177 != mpDrawBg->field_0xdd5) { + Z2GetAudioMgr()->seStart(Z2SE_SY_CURSOR_ITEM, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + field_0x178 = field_0x177; + field_0x177 = mpDrawBg->field_0xdd5; + field_0x179 = mSelStick->getYwaitTimer(); + itemSelectAnmInit(); + return; + } + } + + if (mDoCPd_c::getTrigA(PAD_1) && !dMeter2Info_isTouchKeyCheck(0xC)) { + if (field_0x174[field_0x177] != 0) { + field_0x185 = 1; + field_0x183 = 0; + + mpDrawBg->createExplain(); + if (mpDrawBg->getItemExplainPtr()->openExplainDmap(field_0x174[field_0x177], 0, 0, 0, 0xFF)) { + mpDrawBg->field_0xdd0 = 1; + m_itemSubProcess = 2; + Z2GetAudioMgr()->seStart(Z2SE_SY_EXP_WIN_OPEN, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + + if (POINTER_OPT == 0) { + mpDrawBg->setAButtonString(0); + mpDrawBg->setBButtonString(0); + } + + mCMessageNum = 0; + mJMessageNum = 0; + } + } else { + Z2GetAudioMgr()->seStart(Z2SE_SYS_ERROR, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + } + } } /* 801BEF28-801BEFCC 1B9868 00A4+00 1/1 0/0 0/0 .text getNextItem__12dMenu_Dmap_cFi */ -void dMenu_Dmap_c::getNextItem(int param_0) { - // NONMATCHING +int dMenu_Dmap_c::getNextItem(int param_0) { + if (!itemCarryCheck()) { + return -1; + } + + if ((field_0x177 + param_0) < 0 || (field_0x177 + param_0) > 2) { + return -1; + } + + int var_r30 = field_0x177; + int var_r28 = -1; + + while ((var_r30 + param_0) <= 2 && (var_r30 + param_0) >= 0) { + if (field_0x174[var_r30 + param_0] != 0) { + var_r28 = var_r30 + param_0; + break; + } + + var_r30 += param_0; + } + + return var_r28; } /* 801BEFCC-801BF030 1B990C 0064+00 1/1 0/0 0/0 .text itemSelectAnmInit__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::itemSelectAnmInit() { - // NONMATCHING + field_0x94->hide(); + field_0x88[field_0x178]->scaleAnimeStart(0); + field_0x88[field_0x177]->scaleAnimeStart(0); + m_itemSubProcess = 1; } /* 801BF030-801BF180 1B9970 0150+00 1/0 0/0 0/0 .text itemSelectAnm__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::itemSelectAnm() { - // NONMATCHING + bool temp_r29 = field_0x88[field_0x178]->scaleAnime(field_0x179, 1.0f, 0.9f, 0); + bool temp_r28 = field_0x88[field_0x177]->scaleAnime(field_0x179, 0.9f, 1.0f, 0); + + if (temp_r29 == true && temp_r28 == true) { + field_0x94->getPanePtr()->translate(field_0x88[field_0x177]->getPanePtr()->getTranslateX(), + field_0x88[field_0x177]->getPanePtr()->getTranslateY()); + field_0x94->show(); + + Vec sp14 = field_0x7c[field_0x177]->getGlobalVtxCenter(false, 0); + mpDrawBg->mpDrawCursor->setPos(sp14.x + field_0x104, sp14.y, field_0x7c[field_0x177]->getPanePtr(), false); + m_itemSubProcess = 0; + } } /* 801BF180-801BF18C 1B9AC0 000C+00 1/0 0/0 0/0 .text itemInfoOpenAnm__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::itemInfoOpenAnm() { - field_0x17c = 3; + m_itemSubProcess = 3; } /* 801BF18C-801BF278 1B9ACC 00EC+00 1/0 0/0 0/0 .text itemInfoWait__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::itemInfoWait() { - // NONMATCHING + mpDrawBg->getItemExplainPtr()->move(); + + if (mpDrawBg->getItemExplainPtr()->getStatus() == 2) { + if (POINTER_OPT == 0) { + mpDrawBg->setAButtonString(0); + mpDrawBg->setBButtonString(0x3F9); + } + } else if (mpDrawBg->getItemExplainPtr()->getStatus() == 3) { + if (POINTER_OPT == 0) { + if (field_0x174[field_0x177] != 0) { + mpDrawBg->setAButtonString(0x5D); + } else { + mpDrawBg->setAButtonString(0); + } + } + } else if (mpDrawBg->getItemExplainPtr()->getStatus() == 5) { + if (POINTER_OPT == 0) { + mpDrawBg->setAButtonString(0); + } + + Z2GetAudioMgr()->seStart(Z2SE_SY_EXP_WIN_CLOSE, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + mpDrawBg->field_0xdd0 = 1; + m_itemSubProcess = 4; + } } /* 801BF278-801BF334 1B9BB8 00BC+00 1/0 0/0 0/0 .text itemInfoCloseAnm__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::itemInfoCloseAnm() { - // NONMATCHING + bool var_r30 = false; + mpDrawBg->getItemExplainPtr()->move(); + + if (mpDrawBg->getItemExplainPtr()->getStatus() == 0) { + var_r30 = true; + } + + if (var_r30 == true) { + mpDrawBg->deleteExplain(); + mpDrawBg->field_0xdd0 = 0; + field_0x185 = 0; + field_0x183 = 1; + m_itemSubProcess = 0; + + if (POINTER_OPT == 0) { + mpDrawBg->setBButtonString(0x3F9); + } + + if (mZoomState) { + mCMessageNum = 0x37B; + mJMessageNum = 0x569; + } else { + mCMessageNum = 0; + mJMessageNum = 0; + } + } } /* 801BF334-801BF410 1B9C74 00DC+00 0/0 1/1 0/0 .text getNextStatus__12dMenu_Dmap_cFv */ u8 dMenu_Dmap_c::getNextStatus() { - // NONMATCHING + if (POINTER_OPT != 0) { + if ((dMw_LEFT_TRIGGER() || (dMw_B_TRIGGER() && (!getZoomState() || (m_process == 0 && m_itemSubProcess == 0)))) && !isKeyCheck()) { + return 1; + } else if (dMeter2Info_isTouchKeyCheck(0xE) && dMeter2Info_getMapStatus() != 6 && !isKeyCheck()) { + return 3; + } + } else { + if ((dMw_LEFT_TRIGGER() || (dMw_B_TRIGGER() && (!getZoomState() || (m_process == 0 && m_itemSubProcess == 0)))) && !isKeyCheck()) { + return 1; + } + #if (PLATFORM_GCN) + else if (dMw_RIGHT_TRIGGER() && !isKeyCheck()) { + return 2; + } + #endif + else if (dMeter2Info_isTouchKeyCheck(0xE) && dMeter2Info_getMapStatus() != 6 && !isKeyCheck()) { + return 3; + } + } + + return 0; } /* 801BF410-801BF464 1B9D50 0054+00 1/1 1/1 0/0 .text isSync__12dMenu_Dmap_cFv */ bool dMenu_Dmap_c::isSync() { - // NONMATCHING + if (mpDrawBg != NULL && (mpDrawBg->mpArchiveMount != NULL) && !mpDrawBg->mpArchiveMount->sync()) { + return false; + } + + if (mpDresArchiveMount != NULL && !mpDresArchiveMount->sync()) { + return false; + } + + return true; } /* 801BF464-801BF4A4 1B9DA4 0040+00 1/1 0/0 0/0 .text isKeyCheck__12dMenu_Dmap_cFv */ -void dMenu_Dmap_c::isKeyCheck() { - // NONMATCHING +bool dMenu_Dmap_c::isKeyCheck() { + if (!isSync()) { + return true; + } + + return field_0x185; } /* 801BF4A4-801BF528 1B9DE4 0084+00 1/0 0/0 0/0 .text infoModeChange_init_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::infoModeChange_init_proc() { - // NONMATCHING + field_0x10->hide(); + mSelFloor[getCurFloorPos()]->scaleAnimeStart(0); + mSelFloor[getCurFloorPos()]->alphaAnimeStart(0); + field_0x88[field_0x177]->scaleAnimeStart(0); } /* 801BF528-801BF688 1B9E68 0160+00 1/0 0/0 0/0 .text infoModeChange_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::infoModeChange_proc() { - // NONMATCHING + bool temp_r29 = mSelFloor[getCurFloorPos()]->scaleAnime(field_0x179, 1.0f, 0.9f, 0); + bool temp_r27 = mSelFloor[getCurFloorPos()]->alphaAnime(field_0x179, 0xFF, 0x80, 0); + bool temp_r28 = field_0x88[field_0x177]->scaleAnime(field_0x179, 0.9f, 1.0f, 0); + + if (temp_r29 == true && temp_r28 == true && temp_r27 == true) { + field_0x94->show(); + + Vec sp14 = field_0x7c[field_0x177]->getGlobalVtxCenter(false, 0); + mpDrawBg->mpDrawCursor->setPos(sp14.x + field_0x104, sp14.y, field_0x7c[field_0x177]->getPanePtr(), 0); + m_process = 0; + m_itemSubProcess = 0; + } + + iconMoveCalc(); } /* 801BF688-801BF70C 1B9FC8 0084+00 1/0 0/0 0/0 .text mapModeChange_init_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::mapModeChange_init_proc() { - // NONMATCHING + field_0x94->hide(); + mSelFloor[getCurFloorPos()]->scaleAnimeStart(0); + mSelFloor[getCurFloorPos()]->alphaAnimeStart(0); + field_0x88[field_0x177]->scaleAnimeStart(0); } /* 801BF70C-801BF8A0 1BA04C 0194+00 1/0 0/0 0/0 .text mapModeChange_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::mapModeChange_proc() { - // NONMATCHING + bool temp_r29 = mSelFloor[getCurFloorPos()]->scaleAnime(field_0x179, 0.9f, 1.0f, 0); + bool temp_r27 = mSelFloor[getCurFloorPos()]->alphaAnime(field_0x179, 0x80, 0xFF, 0); + bool temp_r28 = field_0x88[field_0x177]->scaleAnime(field_0x179, 1.0f, 0.9f, 0); + + if (temp_r29 == true && temp_r28 == true && temp_r27 == true) { + field_0x10->show(); + + Vec sp14 = mSelFloor[getDefaultCurFloorPos()]->getGlobalVtxCenter(false, 0); + mpDrawBg->mpDrawCursor->setPos(sp14.x + field_0x104, sp14.y, mSelFloor[getDefaultCurFloorPos()]->getPanePtr(), 1); + m_process = 1; + field_0x17d = 0; + + (this->*map_init_process[field_0x17d])(); + } + + iconMoveCalc(); } /* 801BF8A0-801BF8F8 1BA1E0 0058+00 1/0 0/0 0/0 .text lv5_talk_init_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::lv5_talk_init_proc() { - // NONMATCHING + field_0x185 = true; + dMsgObject_setTalkHeap(mpDrawBg->mpTalkHeap); + mpDrawBg->mMsgFlow.init(NULL, 0x202, 0, NULL); } /* 801BF8F8-801BF9D4 1BA238 00DC+00 1/0 0/0 0/0 .text lv5_talk_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::lv5_talk_proc() { - // NONMATCHING + u16 msg_status = dMsgObject_c::getStatus(); + if (msg_status == 15 || msg_status == 16) { + mpDrawBg->setAButtonString(0x408); + mpDrawBg->setBButtonString(0); + } else { + mpDrawBg->setAButtonString(0); + mpDrawBg->setBButtonString(0); + } + + if (mpDrawBg->mMsgFlow.doFlow(NULL, NULL, 0)) { + if (POINTER_OPT == 0) { + if (mZoomState) { + mpDrawBg->setAButtonString(0); + mpDrawBg->setBButtonString(0x522); + } else { + mpDrawBg->setAButtonString(0x527); + mpDrawBg->setBButtonString(0x3F9); + } + } + + m_process = 1; + } } /* 801BF9D4-801BF9E0 1BA314 000C+00 1/0 0/0 0/0 .text mapMode_init_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::mapMode_init_proc() { - // NONMATCHING + field_0x185 = false; } /* 801BF9E0-801BFA84 1BA320 00A4+00 1/0 0/0 0/0 .text mapMode_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::mapMode_proc() { - // NONMATCHING + u8 temp_r30 = field_0x17d; + if (mpDrawBg->field_0xdd4 == -99 && mpDrawBg->field_0xdd5 == 0xFF) { + mSelStick->checkTrigger(); + } + + (this->*floor_move_process[field_0x17d])(); + + if (field_0x17d != temp_r30) { + (this->*floor_init_process[field_0x17d])(); + } } /* 801BFA84-801BFA88 1BA3C4 0004+00 1/0 0/0 0/0 .text floorSelect_init_proc__12dMenu_Dmap_cFv */ -void dMenu_Dmap_c::floorSelect_init_proc() { - /* empty function */ -} +void dMenu_Dmap_c::floorSelect_init_proc() {} /* 801BFA88-801BFC78 1BA3C8 01F0+00 1/0 0/0 0/0 .text floorSelect_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::floorSelect_proc() { - // NONMATCHING + if (field_0x16d != field_0x16c) { + floorChangeMode(); + return; + } + + if (mSelStick->checkUpTrigger()) { + if (field_0x16c != mFloorAll) { + Z2GetAudioMgr()->seStart(Z2SE_SY_CURSOR_FLOOR, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + field_0x16e = field_0x16c; + field_0x16c++; + field_0x16d = field_0x16c; + field_0x179 = mSelStick->getYwaitTimer(); + mMapCtrl->setPlusNowStayFloorNo(1, field_0x179); + field_0x17d = 1; + } + } else if (mSelStick->checkDownTrigger()) { + if (field_0x16c != mBottomFloor) { + Z2GetAudioMgr()->seStart(Z2SE_SY_CURSOR_FLOOR, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + field_0x16e = field_0x16c; + field_0x16c -= 1; + field_0x16d = field_0x16c; + field_0x179 = mSelStick->getYwaitTimer(); + field_0x17d = 1; + mMapCtrl->setPlusNowStayFloorNo(-1, field_0x179); + } + } else if (mSelStick->checkLeftTrigger() && itemCarryCheck()) { + Z2GetAudioMgr()->seStart(Z2SE_SY_CURSOR_ITEM, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + field_0x179 = mSelStick->getXwaitTimer(); + m_process = 2; + } } /* 801BFC78-801BFCAC 1BA5B8 0034+00 2/2 0/0 0/0 .text itemCarryCheck__12dMenu_Dmap_cFv */ -void dMenu_Dmap_c::itemCarryCheck() { - // NONMATCHING +int dMenu_Dmap_c::itemCarryCheck() { + int var_r29 = 0; + for (int i = 0; i < 3; i++) { + if (field_0x174[i] != 0) { + var_r29++; + } + } + + return var_r29; } /* 801BFCAC-801BFD5C 1BA5EC 00B0+00 1/0 0/0 0/0 .text floorChange_init_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::floorChange_init_proc() { - // NONMATCHING + field_0x10->hide(); + mSelFloor[getCurFloorPos()]->scaleAnimeStart(0); + mSelFloor[getFloorPos(field_0x16e)]->scaleAnimeStart(0); + mSelFloor[getCurFloorPos()]->alphaAnimeStart(0); + mSelFloor[getFloorPos(field_0x16e)]->alphaAnimeStart(0); } /* 801BFD5C-801BFF84 1BA69C 0228+00 1/0 0/0 0/0 .text floorChange_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::floorChange_proc() { - // NONMATCHING + bool temp_r29 = mSelFloor[getCurFloorPos()]->scaleAnime(field_0x179, 0.9f, 1.0f, 0); + bool temp_r28 = mSelFloor[getFloorPos(field_0x16e)]->scaleAnime(field_0x179, 1.0f, 0.9f, 0); + bool temp_r27 = mSelFloor[getCurFloorPos()]->alphaAnime(field_0x179, 0x80, 0xFF, 0); + bool temp_r26 = mSelFloor[getFloorPos(field_0x16e)]->alphaAnime(field_0x179, 0xFF, 0x80, 0); + + if (temp_r29 == true && temp_r28 == true && temp_r27 == true && temp_r26 == true) { + field_0x10->show(); + field_0x10->getPanePtr()->translate(mSelFloor[getCurFloorPos()]->getPanePtr()->getTranslateX(), + mSelFloor[getCurFloorPos()]->getPanePtr()->getTranslateY()); + + Vec sp14 = mSelFloor[getDefaultCurFloorPos()]->getGlobalVtxCenter(false, 0); + mpDrawBg->mpDrawCursor->setPos(sp14.x + field_0x104, sp14.y, mSelFloor[getDefaultCurFloorPos()]->getPanePtr(), 1); + field_0x17d = 0; + } + + iconMoveCalc(); } /* 801BFF84-801BFF88 1BA8C4 0004+00 1/0 0/0 0/0 .text zoomWait_init_proc__12dMenu_Dmap_cFv */ -void dMenu_Dmap_c::zoomWait_init_proc() { - /* empty function */ -} +void dMenu_Dmap_c::zoomWait_init_proc() {} /* 801BFF88-801C008C 1BA8C8 0104+00 1/0 0/0 0/0 .text zoomWait_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::zoomWait_proc() { - // NONMATCHING + if (m_process == 1) { + if (mDoCPd_c::getTrigA(PAD_1) && (((POINTER_OPT == 1 && mpDrawBg->field_0xdd3 != 0xFF) || POINTER_OPT == 0) && !dMeter2Info_isTouchKeyCheck(0xC))) { + if (!mZoomState && mMapCtrl->isEnableZoomIn()) { + field_0x17e = 1; + field_0x181 = 0; + return; + } + } else if (mDoCPd_c::getTrigB(PAD_1) && (POINTER_OPT == 1 || POINTER_OPT == 0) && !dMeter2Info_isTouchKeyCheck(0xC)) { + if (mZoomState && mMapCtrl->isEnableZoomOut()) { + field_0x17e = 2; + return; + } + + Z2GetAudioMgr()->seStart(Z2SE_SYS_ERROR, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + } } /* 801C008C-801C01A0 1BA9CC 0114+00 1/0 0/0 0/0 .text zoomIn_init_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::zoomIn_init_proc() { - // NONMATCHING + Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_ZOOMIN, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + + if (mpDrawBg->field_0xdd3 != 0xFF) { + mMapCtrl->initZoomIn(10, mpDrawBg->field_0xdb4, mpDrawBg->field_0xdb8); + + if (field_0x182 != 0) { + field_0x182 = 0; + } + } else if (field_0x182 != 0) { + mMapCtrl->initZoomIn(10); + field_0x182 = 0; + } else { + mMapCtrl->initZoomInCenterHold(10); + } + + mpDrawBg->iconScaleAnmInit(0.0f, 1.0f, 10); + + field_0x184 = 1; + if (mMapCtrl->getDisableZoomMoveFlgX() == true && mMapCtrl->getDisableZoomMoveFlgZ() == true) { + field_0x184 = 0; + } + + mCMessageNum = 0; + mJMessageNum = 0; } /* 801C01A0-801C023C 1BAAE0 009C+00 1/0 0/0 0/0 .text zoomIn_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::zoomIn_proc() { - // NONMATCHING + bool temp_r30 = mMapCtrl->isEndZoomIn(); + bool temp_r29 = mpDrawBg->iconScaleAnm(); + bool temp_r28 = true; + + if (temp_r30 == true && temp_r29 == true && temp_r28 == true) { + mZoomState = 1; + mpDrawBg->setAButtonString(0); + mpDrawBg->setBButtonString(0x522); + mCMessageNum = 0x37B; + mJMessageNum = 0x569; + field_0x17e = 0; + } } /* 801C023C-801C02F0 1BAB7C 00B4+00 1/0 0/0 0/0 .text zoomOut_init_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::zoomOut_init_proc() { - // NONMATCHING + Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_ZOOMOUT, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + mMapCtrl->initZoomOut(10); + mpDrawBg->iconScaleAnmInit(1.0f, 0.0f, 10); + + field_0x184 = 1; + if (mMapCtrl->getDisableZoomMoveFlgX() == true && mMapCtrl->getDisableZoomMoveFlgZ() == true) { + field_0x184 = 0; + } + + mCMessageNum = 0; + mJMessageNum = 0; } /* 801C02F0-801C0380 1BAC30 0090+00 1/0 0/0 0/0 .text zoomOut_proc__12dMenu_Dmap_cFv */ void dMenu_Dmap_c::zoomOut_proc() { - // NONMATCHING + bool temp_r30 = mMapCtrl->isEndZoomOut(); + bool temp_r29 = mpDrawBg->iconScaleAnm(); + bool temp_r28 = true; + + if (temp_r30 == true && temp_r29 == true && temp_r28 == true) { + mZoomState = 0; + mpDrawBg->setAButtonString(0x527); + mpDrawBg->setBButtonString(0x3F9); + mCMessageNum = 0; + mJMessageNum = 0; + field_0x17e = 0; + } } diff --git a/src/d/d_menu_dmap_map.cpp b/src/d/d_menu_dmap_map.cpp index 9d7bfc3be2b..6ff6154c9b7 100644 --- a/src/d/d_menu_dmap_map.cpp +++ b/src/d/d_menu_dmap_map.cpp @@ -396,8 +396,8 @@ inline static s16 rightModeCnvRot(s16 param_0) { /* 801C0FF8-801C1128 1BB938 0130+00 0/0 1/1 0/0 .text * getTreasureList__20dMenu_StageMapCtrl_cFPfPfPScPUcPSc */ -bool dMenu_StageMapCtrl_c::getTreasureList(f32* param_0, f32* param_1, s8* param_2, u8* param_3, - s8* param_4) { +bool dMenu_StageMapCtrl_c::getTreasureList(f32* o_posX, f32* o_posY, s8* param_2, u8* o_swbit, + s8* o_roomNo) { bool var_r30 = false; while (field_0xe4 != 0 && !var_r30) { @@ -405,18 +405,18 @@ bool dMenu_StageMapCtrl_c::getTreasureList(f32* param_0, f32* param_1, s8* param sp10 = *field_0x8c->getPos(); if (getRendPointer(0)->isDrawIconSingle(field_0x8c->getDataPointer(), (s8)dComIfGp_roomControl_getStayNo(), field_0xf7, true, true, &sp10)) { - cnvPosTo2Dpos(sp10.x, sp10.z, param_0, param_1); + cnvPosTo2Dpos(sp10.x, sp10.z, o_posX, o_posY); if (param_2 != NULL) { *param_2 = rightModeCnvRot((s8)field_0x8c->getAngleY()) >> 8; } - if (param_3 != NULL) { - *param_3 = field_0x8c->getSwBit(); + if (o_swbit != NULL) { + *o_swbit = field_0x8c->getSwBit(); } - if (param_4 != NULL) { - *param_4 = field_0x8c->getRoomNo(); + if (o_roomNo != NULL) { + *o_roomNo = field_0x8c->getRoomNo(); } var_r30 = true; diff --git a/src/d/d_menu_map_common.cpp b/src/d/d_menu_map_common.cpp index f9335b817b5..cefdf91b810 100644 --- a/src/d/d_menu_map_common.cpp +++ b/src/d/d_menu_map_common.cpp @@ -1,67 +1,84 @@ -// -// Generated By: dol2asm -// Translation Unit: d/d_menu_map_common -// - #include "d/d_menu_map_common.h" #include "d/d_com_inf_game.h" -#include "d/d_select_cursor.h" #include "d/d_meter_HIO.h" +#include "d/d_select_cursor.h" #include "global.h" -/* ############################################################################################## */ /* 803BCF18-803BD02C 01A038 0114+00 2/2 0/0 0/0 .data map_icon_size */ struct map_icon_size_t { - float mXSize; - float mYSize; - u8 mIndex; + f32 size_x; + f32 size_y; + u8 icon_no; }; static map_icon_size_t map_icon_size[] = { - {1.0f, 1.0f, 0x0}, {1.0f, 1.0f, 0x1}, {40.0f, 40.0f, 0x11}, {40.0f, 40.0f, 0x2}, - {40.0f, 40.0f, 0x12}, {40.0f, 40.0f, 0x4}, {40.0f, 40.0f, 0x3}, {40.0f, 40.0f, 0x5}, - {40.0f, 40.0f, 0x6}, {40.0f, 40.0f, 0x7}, {40.0f, 40.0f, 0x9}, {40.0f, 40.0f, 0xa}, - {40.0f, 40.0f, 0xb}, {40.0f, 40.0f, 0xc}, {40.0f, 40.0f, 0xf}, {40.0f, 40.0f, 0x10}, - {40.0f, 40.0f, 0x8}, {67.5f, 40.0f, 0xd}, {40.0f, 40.0f, 0xe}, {40.0f, 40.0f, 0x13}, - {40.0f, 40.0f, 0x14}, {40.0f, 40.0f, 0x15}, {40.0f, 40.0f, 0x16}}; + /* ? */ {1.0f, 1.0f, 0}, + /* ? */ {1.0f, 1.0f, 1}, + /* Link */ {40.0f, 40.0f, 17}, + /* Dungeon Warp */ {40.0f, 40.0f, 2}, + /* Destination */ {40.0f, 40.0f, 18}, + /* Boss */ {40.0f, 40.0f, 4}, + /* Boss (Ganon) */ {40.0f, 40.0f, 3}, + /* Light Drop */ {40.0f, 40.0f, 5}, + /* Light Ball */ {40.0f, 40.0f, 6}, + /* Cannon Ball */ {40.0f, 40.0f, 7}, + /* Yeto */ {40.0f, 40.0f, 9}, + /* Yeta */ {40.0f, 40.0f, 10}, + /* Gold Wolf */ {40.0f, 40.0f, 11}, + /* Monkey */ {40.0f, 40.0f, 12}, + /* Ooccoo Sr. */ {40.0f, 40.0f, 15}, + /* Ooccoo Jr. */ {40.0f, 40.0f, 16}, + /* Copy Statue */ {40.0f, 40.0f, 8}, + /* Coach */ {67.5f, 40.0f, 13}, + /* Small Key */ {40.0f, 40.0f, 14}, + /* Treasure Chest */ {40.0f, 40.0f, 19}, + /* Dungeon Enter */ {40.0f, 40.0f, 20}, + /* Link Enter */ {40.0f, 40.0f, 21}, + /* LV8 Warp */ {40.0f, 40.0f, 22}, +}; /* 801C2718-801C27B4 1BD058 009C+00 0/0 2/2 0/0 .text __ct__16dMenuMapCommon_cFv */ dMenuMapCommon_c::dMenuMapCommon_c() { - for (int i = 0; i < 23; i++) { + for (int i = 0; i < ICON_MAX_e; i++) { mPictures[i] = NULL; } - _60 = 0; + + mLightDropPic = NULL; mpDrawCursor = NULL; mpPortalIcon = NULL; _6c = 0; - _c72 = 0; - _c78 = 0.0f; - _c74 = 0; + mBlinkTimer = 0; + mBlinkAlpha = 0.0f; + mLightDropFlashTimer = 0; _c80 = 0.0f; _c7c = 0.0f; _c84 = 0.0f; _c88 = 0.0f; mCenterPosX = 0.0f; _c90 = 0; + clearIconInfo(); } /* 801C27B4-801C28D8 1BD0F4 0124+00 1/0 2/2 0/0 .text __dt__16dMenuMapCommon_cFv */ dMenuMapCommon_c::~dMenuMapCommon_c() { - for (int i = 0; i < 23; i++) { + for (int i = 0; i < ICON_MAX_e; i++) { if (mPictures[i] != NULL) { delete mPictures[i]; mPictures[i] = NULL; } } - if (_60 != NULL) { - delete _60; - _60 = NULL; + + if (mLightDropPic != NULL) { + delete mLightDropPic; + mLightDropPic = NULL; } + if (mpDrawCursor != NULL) { delete mpDrawCursor; mpDrawCursor = NULL; } + if (mpPortalIcon != NULL) { delete mpPortalIcon; mpPortalIcon = NULL; @@ -70,323 +87,330 @@ dMenuMapCommon_c::~dMenuMapCommon_c() { /* 801C28D8-801C38E4 1BD218 100C+00 0/0 2/2 0/0 .text initiate__16dMenuMapCommon_cFP10JKRArchive */ -void dMenuMapCommon_c::initiate(JKRArchive* arc) { +void dMenuMapCommon_c::initiate(JKRArchive* i_archive) { ResTIMG* mp_image; - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_boss_s_ci8_16_00.bti"); - ASSERT(mp_image != 0); - mPictures[4] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_boss_ci8_32_00.bti"); - ASSERT(mp_image != 0); - mPictures[4]->append(mp_image, 0.0f); - mPictures[4]->setBasePosition(J2DBasePosition_4); - mPictures[4]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_boss_s_ci8_16_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_BOSS_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_boss_ci8_32_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_BOSS_e]->append(mp_image, 0.0f); + mPictures[ICON_BOSS_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_BOSS_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_boss_s_ci8_16_00.bti"); - ASSERT(mp_image != 0); - mPictures[3] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_boss_ci8_32_00.bti"); - ASSERT(mp_image != 0); - mPictures[3]->append(mp_image, 0.0f); - mPictures[3]->setBasePosition(J2DBasePosition_4); - mPictures[3]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_boss_s_ci8_16_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_BOSS_GANON_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_boss_ci8_32_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_BOSS_GANON_e]->append(mp_image, 0.0f); + mPictures[ICON_BOSS_GANON_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_BOSS_GANON_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "im_map_icon_enter_ci8_24_02.bti"); - ASSERT(mp_image != 0); - mPictures[20] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "im_map_icon_enter_ci8_02.bti"); - ASSERT(mp_image != 0); - mPictures[20]->append(mp_image, 0.0f); - mPictures[20]->setBasePosition(J2DBasePosition_4); - mPictures[20]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_map_icon_enter_ci8_24_02.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_DUNGEON_ENTER_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_map_icon_enter_ci8_02.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_DUNGEON_ENTER_e]->append(mp_image, 0.0f); + mPictures[ICON_DUNGEON_ENTER_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_DUNGEON_ENTER_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_enter_s_ci8_24_00.bti"); - ASSERT(mp_image != 0); - mPictures[21] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_enter_ci8_32_00.bti"); - ASSERT(mp_image != 0); - mPictures[21]->append(mp_image, 0.0f); - mPictures[21]->setBasePosition(J2DBasePosition_4); - mPictures[21]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_enter_s_ci8_24_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_LINK_ENTER_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_enter_ci8_32_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_LINK_ENTER_e]->append(mp_image, 0.0f); + mPictures[ICON_LINK_ENTER_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_LINK_ENTER_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "im_map_icon_warp_24_ci8_00.bti"); - ASSERT(mp_image != 0); - mPictures[22] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "im_map_icon_warp_32_ci8_00.bti"); - ASSERT(mp_image != 0); - mPictures[22]->append(mp_image, 0.0f); - mPictures[22]->setBasePosition(J2DBasePosition_4); - mPictures[22]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_map_icon_warp_24_ci8_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_LV8_WARP_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_map_icon_warp_32_ci8_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_LV8_WARP_e]->append(mp_image, 0.0f); + mPictures[ICON_LV8_WARP_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_LV8_WARP_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_box_s_ci8_24_00.bti"); - ASSERT(mp_image != 0); - mPictures[19] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_box_ci8_32_00.bti"); - ASSERT(mp_image != 0); - mPictures[19]->append(mp_image, 0.0f); - mPictures[19]->setBasePosition(J2DBasePosition_4); - mPictures[19]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_box_s_ci8_24_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_TREASURE_CHEST_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_box_ci8_32_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_TREASURE_CHEST_e]->append(mp_image, 0.0f); + mPictures[ICON_TREASURE_CHEST_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_TREASURE_CHEST_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_gray_00.bti"); - ASSERT(mp_image != 0); - mPictures[14] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_key_ci8_32_00.bti"); - ASSERT(mp_image != 0); - mPictures[14]->append(mp_image, 0.0f); - mPictures[14]->setBasePosition(J2DBasePosition_4); - mPictures[14]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_gray_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_KEY_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_key_ci8_32_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_KEY_e]->append(mp_image, 0.0f); + mPictures[ICON_KEY_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_KEY_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); - ASSERT(mp_image != 0); - mPictures[9] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "st_yuki_M.bti"); - ASSERT(mp_image != 0); - mPictures[9]->append(mp_image, 0.0f); - mPictures[9]->setBasePosition(J2DBasePosition_4); - mPictures[9]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_YETO_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "st_yuki_M.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_YETO_e]->append(mp_image, 0.0f); + mPictures[ICON_YETO_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_YETO_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); - ASSERT(mp_image != 0); - mPictures[10] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "st_yuki_W.bti"); - ASSERT(mp_image != 0); - mPictures[10]->append(mp_image, 0.0f); - mPictures[10]->setBasePosition(J2DBasePosition_4); - mPictures[10]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_YETA_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "st_yuki_W.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_YETA_e]->append(mp_image, 0.0f); + mPictures[ICON_YETA_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_YETA_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_yellow_00.bti"); - ASSERT(mp_image != 0); - mPictures[11] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "st_gold_wolf.bti"); - ASSERT(mp_image != 0); - mPictures[11]->append(mp_image, 0.0f); - mPictures[11]->setBasePosition(J2DBasePosition_4); - mPictures[11]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_yellow_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_GOLD_WOLF_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "st_gold_wolf.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_GOLD_WOLF_e]->append(mp_image, 0.0f); + mPictures[ICON_GOLD_WOLF_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_GOLD_WOLF_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); - ASSERT(mp_image != 0); - mPictures[12] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_monkey_ci8_32_00.bti"); - ASSERT(mp_image != 0); - mPictures[12]->append(mp_image, 0.0f); - mPictures[12]->setBasePosition(J2DBasePosition_4); - mPictures[12]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_MONKEY_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_monkey_ci8_32_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_MONKEY_e]->append(mp_image, 0.0f); + mPictures[ICON_MONKEY_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_MONKEY_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_blue_00.bti"); - ASSERT(mp_image != 0); - mPictures[15] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "ni_obacyan.bti"); - ASSERT(mp_image != 0); - mPictures[15]->append(mp_image, 0.0f); - mPictures[15]->setBasePosition(J2DBasePosition_4); - mPictures[15]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_blue_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_OOCCOO_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "ni_obacyan.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_OOCCOO_e]->append(mp_image, 0.0f); + mPictures[ICON_OOCCOO_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_OOCCOO_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_blue_00.bti"); - ASSERT(mp_image != 0); - mPictures[16] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "ni_obacyan.bti"); - ASSERT(mp_image != 0); - mPictures[16]->append(mp_image, 0.0f); - mPictures[16]->setBasePosition(J2DBasePosition_4); - mPictures[16]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_blue_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_OOCCOO_JR_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "ni_obacyan.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_OOCCOO_JR_e]->append(mp_image, 0.0f); + mPictures[ICON_OOCCOO_JR_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_OOCCOO_JR_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); - ASSERT(mp_image != 0); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); + JUT_ASSERT(0, mp_image != 0); mPictures[8] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', - "im_zelda_map_icon_copy_stone_statue_snup_try_00_04.bti"); - ASSERT(mp_image != 0); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_zelda_map_icon_copy_stone_statue_snup_try_00_04.bti"); + JUT_ASSERT(0, mp_image != 0); mPictures[8]->append(mp_image, 0.0f); mPictures[8]->setBasePosition(J2DBasePosition_4); mPictures[8]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_link_s_ci8_24_00.bti"); - ASSERT(mp_image != 0); - mPictures[17] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_link_ci8_32_00.bti"); - ASSERT(mp_image != 0); - mPictures[17]->append(mp_image, 0.0f); - mPictures[17]->setBasePosition(J2DBasePosition_4); - mPictures[17]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_link_s_ci8_24_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_LINK_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_link_ci8_32_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_LINK_e]->append(mp_image, 0.0f); + mPictures[ICON_LINK_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_LINK_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_penant_s_ci8_24_00.bti"); - ASSERT(mp_image != 0); - mPictures[2] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_penant_ci8_32_00.bti"); - ASSERT(mp_image != 0); - mPictures[2]->append(mp_image, 0.0f); - mPictures[2]->setBasePosition(J2DBasePosition_4); - mPictures[2]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_penant_s_ci8_24_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_DUNGEON_WARP_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_penant_ci8_32_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_DUNGEON_WARP_e]->append(mp_image, 0.0f); + mPictures[ICON_DUNGEON_WARP_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_DUNGEON_WARP_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "im_black_32.bti"); - ASSERT(mp_image != 0); - mPictures[5] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "im_black_32.bti"); - ASSERT(mp_image != 0); - mPictures[5]->append(mp_image, 0.0f); - mPictures[5]->setBasePosition(J2DBasePosition_4); - mPictures[5]->setInfluencedAlpha(false, false); - mPictures[5]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255)); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_black_32.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_LIGHT_DROP_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_black_32.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_LIGHT_DROP_e]->append(mp_image, 0.0f); + mPictures[ICON_LIGHT_DROP_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_LIGHT_DROP_e]->setInfluencedAlpha(false, false); + mPictures[ICON_LIGHT_DROP_e]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255)); - mp_image = (ResTIMG*)arc->getResource('TIMG', "im_hikari_no_shizuku_try_10_00_24x24.bti"); - ASSERT(mp_image != 0); - _60 = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "im_hikari_no_shizuku_try_10_00_24x24.bti"); - ASSERT(mp_image != 0); - _60->append(mp_image, 0.0f); - _60->setBasePosition(J2DBasePosition_4); - _60->setInfluencedAlpha(false, false); - _60->setBlackWhite(JUtility::TColor(0, 240, 170, 0), - JUtility::TColor(255, 255, 230, 255)); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_hikari_no_shizuku_try_10_00_24x24.bti"); + JUT_ASSERT(0, mp_image != 0); + mLightDropPic = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_hikari_no_shizuku_try_10_00_24x24.bti"); + JUT_ASSERT(0, mp_image != 0); + mLightDropPic->append(mp_image, 0.0f); + mLightDropPic->setBasePosition(J2DBasePosition_4); + mLightDropPic->setInfluencedAlpha(false, false); + mLightDropPic->setBlackWhite(JUtility::TColor(0, 240, 170, 0), JUtility::TColor(255, 255, 230, 255)); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); - ASSERT(mp_image != 0); - mPictures[6] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "im_zelda_map_icon_hikari_ball_03.bti"); - ASSERT(mp_image != 0); - mPictures[6]->append(mp_image, 0.0f); - mPictures[6]->setBasePosition(J2DBasePosition_4); - mPictures[6]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_LIGHT_BALL_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_zelda_map_icon_hikari_ball_03.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_LIGHT_BALL_e]->append(mp_image, 0.0f); + mPictures[ICON_LIGHT_BALL_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_LIGHT_BALL_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); - ASSERT(mp_image != 0); - mPictures[7] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "im_map_icon_iron_ball_ci8_32_00.bti"); - ASSERT(mp_image != 0); - mPictures[7]->append(mp_image, 0.0f); - mPictures[7]->setBasePosition(J2DBasePosition_4); - mPictures[7]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_CANNON_BALL_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_map_icon_iron_ball_ci8_32_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_CANNON_BALL_e]->append(mp_image, 0.0f); + mPictures[ICON_CANNON_BALL_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_CANNON_BALL_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); - ASSERT(mp_image != 0); - mPictures[13] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "im_map_icon_basha_ci8.bti"); - ASSERT(mp_image != 0); - mPictures[13]->append(mp_image, 0.0f); - mPictures[13]->setBasePosition(J2DBasePosition_4); - mPictures[13]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_COACH_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_map_icon_basha_ci8.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_COACH_e]->append(mp_image, 0.0f); + mPictures[ICON_COACH_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_COACH_e]->setInfluencedAlpha(false, false); - mp_image = (ResTIMG*)arc->getResource('TIMG', "im_nijumaru_40x40_ind_01.bti"); - ASSERT(mp_image != 0); - mPictures[18] = new J2DPicture(mp_image); - mp_image = (ResTIMG*)arc->getResource('TIMG', "im_nijumaru_40x40_ind_01.bti"); - ASSERT(mp_image != 0); - mPictures[18]->append(mp_image, 0.0f); - mPictures[18]->setBasePosition(J2DBasePosition_4); - mPictures[18]->setInfluencedAlpha(false, false); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_nijumaru_40x40_ind_01.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_DESTINATION_e] = new J2DPicture(mp_image); + mp_image = (ResTIMG*)i_archive->getResource('TIMG', "im_nijumaru_40x40_ind_01.bti"); + JUT_ASSERT(0, mp_image != 0); + mPictures[ICON_DESTINATION_e]->append(mp_image, 0.0f); + mPictures[ICON_DESTINATION_e]->setBasePosition(J2DBasePosition_4); + mPictures[ICON_DESTINATION_e]->setInfluencedAlpha(false, false); mpDrawCursor = new dSelect_cursor_c(4, 1.0f, NULL); - ASSERT(mpDrawCursor != 0); + JUT_ASSERT(0, mpDrawCursor != 0); - if (arc == dComIfGp_getFmapResArchive()) { - mpPortalIcon = new dSelect_cursor_c(5, 1.0f, arc); - ASSERT(mpPortalIcon != 0); + if (i_archive == dComIfGp_getFmapResArchive()) { + mpPortalIcon = new dSelect_cursor_c(5, 1.0f, i_archive); + JUT_ASSERT(0, mpPortalIcon != 0); } } /* 801C38E4-801C3EC4 1BE224 05E0+00 0/0 2/2 0/0 .text drawIcon__16dMenuMapCommon_cFffff */ -void dMenuMapCommon_c::drawIcon(f32 param_1, f32 param_2, f32 param_3, f32 param_4) { - s16 tmp[128]; +void dMenuMapCommon_c::drawIcon(f32 i_posX, f32 i_posY, f32 param_3, f32 param_4) { + s16 icon_draw_list[128]; if (g_fmapHIO.mMapIconHIO.mIconDebug) { debugIcon(); } + if (mpDrawCursor) { mpDrawCursor->onUpdateFlag(); } + if (mpPortalIcon) { mpPortalIcon->onUpdateFlag(); } - int counter = 0; + + int icon_draw_num = 0; for (int i = 0; i < 128; i++) { - tmp[i] = -1; + icon_draw_list[i] = -1; } for (int i = 22; i >= 0; i--) { for (s16 j = 0; j < 128; j++) { - if (i == _70[j]._14 && _70[j]._15 != 0) { - tmp[counter] = j; - counter++; + if (i == mIconInfo[j].icon_no != 0 && mIconInfo[j]._15 != 0) { + icon_draw_list[icon_draw_num] = j; + icon_draw_num++; } } } for (int i = 0; i < 128; i++) { - s16 sVar9 = tmp[i]; - if (sVar9 != -1) { - if (_70[sVar9]._14 == 0) { + s16 info_idx = icon_draw_list[i]; + if (info_idx != -1) { + if (mIconInfo[info_idx].icon_no == 0) { if (mpDrawCursor != NULL) { - f32 local_1b4 = _70[sVar9]._0; - f32 local_1b8 = _70[sVar9]._4; + f32 icon_pos_x = mIconInfo[info_idx].pos_x; + f32 icon_pos_y = mIconInfo[info_idx].pos_y; + if (mpDrawCursor->getUpdateFlag() == 1) { - if (_70[sVar9]._15 == 2) { + if (mIconInfo[info_idx]._15 == 2) { mpDrawCursor->setAlphaRate(1.0f); - } else if (_70[sVar9]._15 == 3) { - mpDrawCursor->setAlphaRate(_c78); + } else if (mIconInfo[info_idx]._15 == 3) { + mpDrawCursor->setAlphaRate(mBlinkAlpha); } else { - mpDrawCursor->setAlphaRate(param_4 * (param_3 * _70[sVar9]._10)); + mpDrawCursor->setAlphaRate(param_4 * (param_3 * mIconInfo[info_idx].alpha_rate)); } } - f32 local_1bc = (local_1b4 + param_1); - mpDrawCursor->setPos(local_1bc, (local_1b8 + param_2)); - mpDrawCursor->setScale( _70[sVar9]._8 * g_fmapHIO.mMapIconHIO.mPortalCursorScale); + + f32 pos_x = icon_pos_x + i_posX; + mpDrawCursor->setPos(pos_x, icon_pos_y + i_posY); + mpDrawCursor->setScale(mIconInfo[info_idx].scale * g_fmapHIO.mMapIconHIO.mPortalCursorScale); mpDrawCursor->draw(); mpDrawCursor->resetUpdateFlag(); } - } else if (_70[sVar9]._14 == 1) { + } else if (mIconInfo[info_idx].icon_no == 1) { if (mpPortalIcon != NULL) { - f32 local_1c0 = _70[sVar9]._0; - f32 local_1c4 = _70[sVar9]._4; + f32 icon_pos_x = mIconInfo[info_idx].pos_x; + f32 icon_pos_y = mIconInfo[info_idx].pos_y; + if (mpPortalIcon->getUpdateFlag() == 1) { - if (_70[sVar9]._15 == 2) { + if (mIconInfo[info_idx]._15 == 2) { mpPortalIcon->setAlphaRate(1.0f); - } else if (_70[sVar9]._15 == 3) { - mpPortalIcon->setAlphaRate(_c78); + } else if (mIconInfo[info_idx]._15 == 3) { + mpPortalIcon->setAlphaRate(mBlinkAlpha); } else { - mpPortalIcon->setAlphaRate(param_3 * _70[sVar9]._10); + mpPortalIcon->setAlphaRate(param_3 * mIconInfo[info_idx].alpha_rate); } } - f32 local_1c8 = (local_1c0 + param_1); - mpPortalIcon->setPos(local_1c8, (local_1c4 + param_2)); - mpPortalIcon->setScale(_70[sVar9]._8 * g_fmapHIO.mMapIconHIO.mPortalIconScale); + + f32 pos_x = (icon_pos_x + i_posX); + mpPortalIcon->setPos(pos_x, icon_pos_y + i_posY); + mpPortalIcon->setScale(mIconInfo[info_idx].scale * g_fmapHIO.mMapIconHIO.mPortalIconScale); mpPortalIcon->draw(); mpPortalIcon->resetUpdateFlag(); } - } else if (mPictures[_70[sVar9]._14] != NULL) { - f32 fVar2 = _70[sVar9]._0; - f32 fVar3 = _70[sVar9]._4; - f32 dVar11 = getIconSizeX(_70[sVar9]._14); - f32 dVar12 = getIconSizeY(_70[sVar9]._14); - f32 dVar17 = ((4.0f / 7.0f) * getIconSizeX(_70[sVar9]._14)); - f32 dVar13 = ((4.0f / 7.0f) * getIconSizeY(_70[sVar9]._14)); - if (_70[sVar9]._14 == 5) { - dVar11 = (dVar11 * _c7c); - dVar12 = (dVar12 * _c7c); + } else if (mPictures[mIconInfo[info_idx].icon_no] != NULL) { + f32 icon_pos_x = mIconInfo[info_idx].pos_x; + f32 icon_pos_y = mIconInfo[info_idx].pos_y; + f32 icon_size_x = getIconSizeX(mIconInfo[info_idx].icon_no); + f32 icon_size_y = getIconSizeY(mIconInfo[info_idx].icon_no); + + f32 var_f29 = (4.0f / 7.0f) * getIconSizeX(mIconInfo[info_idx].icon_no); + f32 var_f28 = (4.0f / 7.0f) * getIconSizeY(mIconInfo[info_idx].icon_no); + + if (mIconInfo[info_idx].icon_no == ICON_LIGHT_DROP_e) { + icon_size_x *= _c7c; + icon_size_y *= _c7c; } - mPictures[_70[sVar9]._14]->rotate( - dVar11 / 2, - dVar12 / 2, ROTATE_Z, - _70[sVar9]._C); - if (_70[sVar9]._14 == 5) { - mPictures[_70[sVar9]._14]->setAlpha(((180.0f * _c80) / 255.0f)); - _60->rotate((dVar17 / 2), (dVar13 / 2), ROTATE_Z, _70[sVar9]._C); - _60->setAlpha(_c80); - } else if (_70[sVar9]._15 == 2) { - mPictures[_70[sVar9]._14]->setAlpha(0xff); - } else if (_70[sVar9]._15 == 3) { - mPictures[_70[sVar9]._14]->setAlpha(255.0f * _c78); + + mPictures[mIconInfo[info_idx].icon_no]->rotate(icon_size_x / 2, icon_size_y / 2, ROTATE_Z, + mIconInfo[info_idx].rotation); + + if (mIconInfo[info_idx].icon_no == ICON_LIGHT_DROP_e) { + mPictures[mIconInfo[info_idx].icon_no]->setAlpha((180.0f * _c80) / 255.0f); + mLightDropPic->rotate(var_f29 / 2, var_f28 / 2, ROTATE_Z, mIconInfo[info_idx].rotation); + mLightDropPic->setAlpha(_c80); + } else if (mIconInfo[info_idx]._15 == 2) { + mPictures[mIconInfo[info_idx].icon_no]->setAlpha(0xFF); + } else if (mIconInfo[info_idx]._15 == 3) { + mPictures[mIconInfo[info_idx].icon_no]->setAlpha(255.0f * mBlinkAlpha); } else { - mPictures[_70[sVar9]._14]->setAlpha(param_4 * - (255.0f * param_3 * _70[sVar9]._10)); + mPictures[mIconInfo[info_idx].icon_no]->setAlpha(param_4 * (255.0f * param_3 * mIconInfo[info_idx].alpha_rate)); } - f32 temp = (fVar2 - (dVar11 / 2)); - fVar2 = param_1 + temp; - mPictures[_70[sVar9]._14]->draw(fVar2, (param_2 + (fVar3 - dVar12 / 2)), dVar11, dVar12, - false, false, false); - if (_70[sVar9]._14 == 5) { - _60->draw((fVar2 + (dVar11 / 2)) - (dVar17 / 2), - ((dVar12 / 2) + (param_2 + (fVar3 - dVar12 / 2))) - (dVar13 / 2), - dVar17, dVar13, false, false, false); + + f32 pos_x = i_posX + (icon_pos_x - (icon_size_x / 2)); + mPictures[mIconInfo[info_idx].icon_no]->draw(pos_x, (i_posY + (icon_pos_y - icon_size_y / 2)), + icon_size_x, icon_size_y, false, false, false); + + if (mIconInfo[info_idx].icon_no == ICON_LIGHT_DROP_e) { + mLightDropPic->draw((pos_x + (icon_size_x / 2)) - (var_f29 / 2), + ((icon_size_y / 2) + (i_posY + (icon_pos_y - icon_size_y / 2))) - (var_f28 / 2), + var_f29, var_f28, false, false, false); } } } @@ -397,123 +421,125 @@ void dMenuMapCommon_c::drawIcon(f32 param_1, f32 param_2, f32 param_3, f32 param */ void dMenuMapCommon_c::iconScale(int param_1, f32 param_2, f32 param_3, f32 param_4) { _c88 = 1.0f + param_4; - f32 local_74[23]; - local_74[17] = - g_fmapHIO.mMapIconHIO.mLinkZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mLinkZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mLinkScale[param_1]); - local_74[20] = - g_fmapHIO.mMapIconHIO.mDungeonEntranceZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mDungeonEntranceZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mDungeonEntranceScale[param_1]); - local_74[21] = - g_fmapHIO.mMapIconHIO.mRoomEntranceZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mRoomEntranceZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mRoomEntranceScale[param_1]); - local_74[22] = - g_fmapHIO.mMapIconHIO.mLV8EntranceZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mLV8EntranceZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mLV8EntranceScale[param_1]); - local_74[4] = - g_fmapHIO.mMapIconHIO.mBossZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mBossZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mBossScale[param_1]); - local_74[3] = - g_fmapHIO.mMapIconHIO.mGanonZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mGanonZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mGanonScale[param_1]); - local_74[14] = - g_fmapHIO.mMapIconHIO.mSmallKeyZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mSmallKeyZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mSmallKeyScale[param_1]); - local_74[19] = - g_fmapHIO.mMapIconHIO.mChestZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mChestZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mChestScale[param_1]); - local_74[9] = - g_fmapHIO.mMapIconHIO.mYetoZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mYetoZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mYetoScale[param_1]); - local_74[10] = - g_fmapHIO.mMapIconHIO.mYetaZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mYetaZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mYetaScale[param_1]); - local_74[11] = - g_fmapHIO.mMapIconHIO.mGoldWolfZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mGoldWolfZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mGoldWolfScale[param_1]); - local_74[12] = - g_fmapHIO.mMapIconHIO.mMonkeyZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mMonkeyZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mMonkeyScale[param_1]); - local_74[15] = - g_fmapHIO.mMapIconHIO.mOoccooZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mOoccooZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mOoccooScale[param_1]); - local_74[16] = - g_fmapHIO.mMapIconHIO.mOoccooPotZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mOoccooPotZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mOoccooPotScale[param_1]); - local_74[8] = - g_fmapHIO.mMapIconHIO.mCopyRodStatueZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mCopyRodStatueZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mCopyRodStatueScale[param_1]); - local_74[2] = - g_fmapHIO.mMapIconHIO.mDungeonWarpZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mDungeonWarpZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mDungeonWarpScale[param_1]); - local_74[5] = - g_fmapHIO.mMapIconHIO.mLightDropZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mLightDropZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mLightDropScale[param_1]); - local_74[6] = - g_fmapHIO.mMapIconHIO.mLightOrbZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mLightOrbZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mLightOrbScale[param_1]); - local_74[7] = - g_fmapHIO.mMapIconHIO.mCannonBallZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mCannonBallZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mCannonBallScale[param_1]); - local_74[13] = - g_fmapHIO.mMapIconHIO.mWagonZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mWagonZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mWagonScale[param_1]); - local_74[18] = - g_fmapHIO.mMapIconHIO.mDestinationZoomScale[param_1] - - param_2 * (g_fmapHIO.mMapIconHIO.mDestinationZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mDestinationScale[param_1]); - local_74[0] = 1.0f; - local_74[1] = 1.0f; - for (int i = 0; i < 23; i++) { + + f32 icon_scale[ICON_MAX_e]; + icon_scale[ICON_LINK_e] = g_fmapHIO.mMapIconHIO.mLinkZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mLinkZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mLinkScale[param_1]); + + icon_scale[ICON_DUNGEON_ENTER_e] = g_fmapHIO.mMapIconHIO.mDungeonEntranceZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mDungeonEntranceZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mDungeonEntranceScale[param_1]); + + icon_scale[ICON_LINK_ENTER_e] = g_fmapHIO.mMapIconHIO.mRoomEntranceZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mRoomEntranceZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mRoomEntranceScale[param_1]); + + icon_scale[ICON_LV8_WARP_e] = g_fmapHIO.mMapIconHIO.mLV8EntranceZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mLV8EntranceZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mLV8EntranceScale[param_1]); + + icon_scale[ICON_BOSS_e] = g_fmapHIO.mMapIconHIO.mBossZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mBossZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mBossScale[param_1]); + + icon_scale[ICON_BOSS_GANON_e] = g_fmapHIO.mMapIconHIO.mGanonZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mGanonZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mGanonScale[param_1]); + + icon_scale[ICON_KEY_e] = g_fmapHIO.mMapIconHIO.mSmallKeyZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mSmallKeyZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mSmallKeyScale[param_1]); + + icon_scale[ICON_TREASURE_CHEST_e] = g_fmapHIO.mMapIconHIO.mChestZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mChestZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mChestScale[param_1]); + + icon_scale[ICON_YETO_e] = g_fmapHIO.mMapIconHIO.mYetoZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mYetoZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mYetoScale[param_1]); + + icon_scale[ICON_YETA_e] = g_fmapHIO.mMapIconHIO.mYetaZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mYetaZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mYetaScale[param_1]); + + icon_scale[ICON_GOLD_WOLF_e] = g_fmapHIO.mMapIconHIO.mGoldWolfZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mGoldWolfZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mGoldWolfScale[param_1]); + + icon_scale[ICON_MONKEY_e] = g_fmapHIO.mMapIconHIO.mMonkeyZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mMonkeyZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mMonkeyScale[param_1]); + + icon_scale[ICON_OOCCOO_e] = g_fmapHIO.mMapIconHIO.mOoccooZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mOoccooZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mOoccooScale[param_1]); + + icon_scale[ICON_OOCCOO_JR_e] = g_fmapHIO.mMapIconHIO.mOoccooPotZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mOoccooPotZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mOoccooPotScale[param_1]); + + icon_scale[ICON_COPY_STATUE_e] = g_fmapHIO.mMapIconHIO.mCopyRodStatueZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mCopyRodStatueZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mCopyRodStatueScale[param_1]); + + icon_scale[ICON_DUNGEON_WARP_e] = g_fmapHIO.mMapIconHIO.mDungeonWarpZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mDungeonWarpZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mDungeonWarpScale[param_1]); + + icon_scale[ICON_LIGHT_DROP_e] = g_fmapHIO.mMapIconHIO.mLightDropZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mLightDropZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mLightDropScale[param_1]); + + icon_scale[ICON_LIGHT_BALL_e] = g_fmapHIO.mMapIconHIO.mLightOrbZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mLightOrbZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mLightOrbScale[param_1]); + + icon_scale[ICON_CANNON_BALL_e] = g_fmapHIO.mMapIconHIO.mCannonBallZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mCannonBallZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mCannonBallScale[param_1]); + + icon_scale[ICON_COACH_e] = g_fmapHIO.mMapIconHIO.mWagonZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mWagonZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mWagonScale[param_1]); + + icon_scale[ICON_DESTINATION_e] = g_fmapHIO.mMapIconHIO.mDestinationZoomScale[param_1] - param_2 * + (g_fmapHIO.mMapIconHIO.mDestinationZoomScale[param_1] - g_fmapHIO.mMapIconHIO.mDestinationScale[param_1]); + icon_scale[0] = 1.0f; + icon_scale[1] = 1.0f; + + for (int i = 0; i < ICON_MAX_e; i++) { if (mPictures[i] != NULL) { - if (i == 13) { - mPictures[i]->scale(((16.0f / 27.0f) + - ((11.0f / 27.0f) * param_4)) * - local_74[i], - local_74[i]); + if (i == ICON_COACH_e) { + mPictures[i]->scale(((16.0f / 27.0f) + ((11.0f / 27.0f) * param_4)) * icon_scale[i], + icon_scale[i]); } else { - mPictures[i]->scale(local_74[i], local_74[i]); - if (i == 5) { - _60->scale(local_74[i], local_74[i]); + mPictures[i]->scale(icon_scale[i], icon_scale[i]); + + if (i == ICON_LIGHT_DROP_e) { + mLightDropPic->scale(icon_scale[i], icon_scale[i]); } } } } - setBlendRatio(17, param_3, param_4); - setBlendRatio(20, param_3, param_4); - setBlendRatio(21, param_3, param_4); - setBlendRatio(22, param_3, param_4); - setBlendRatio(4, param_3, param_4); - setBlendRatio(3, param_3, param_4); - setBlendRatio(14, param_3, param_4); - setBlendRatio(19, param_3, param_4); - setBlendRatio(9, param_3, param_4); - setBlendRatio(10, param_3, param_4); - setBlendRatio(11, param_3, param_4); - setBlendRatio(12, param_3, param_4); - setBlendRatio(15, param_3, param_4); - setBlendRatio(16, param_3, param_4); - setBlendRatio(8, param_3, param_4); - setBlendRatio(2, param_3, param_4); - setBlendRatio(5, param_3, param_4); - setBlendRatio(6, param_3, param_4); - setBlendRatio(7, param_3, param_4); - setBlendRatio(13, param_3, param_4); - setBlendRatio(18, param_3, param_4); + + setBlendRatio(ICON_LINK_e, param_3, param_4); + setBlendRatio(ICON_DUNGEON_ENTER_e, param_3, param_4); + setBlendRatio(ICON_LINK_ENTER_e, param_3, param_4); + setBlendRatio(ICON_LV8_WARP_e, param_3, param_4); + setBlendRatio(ICON_BOSS_e, param_3, param_4); + setBlendRatio(ICON_BOSS_GANON_e, param_3, param_4); + setBlendRatio(ICON_KEY_e, param_3, param_4); + setBlendRatio(ICON_TREASURE_CHEST_e, param_3, param_4); + setBlendRatio(ICON_YETO_e, param_3, param_4); + setBlendRatio(ICON_YETA_e, param_3, param_4); + setBlendRatio(ICON_GOLD_WOLF_e, param_3, param_4); + setBlendRatio(ICON_MONKEY_e, param_3, param_4); + setBlendRatio(ICON_OOCCOO_e, param_3, param_4); + setBlendRatio(ICON_OOCCOO_JR_e, param_3, param_4); + setBlendRatio(ICON_COPY_STATUE_e, param_3, param_4); + setBlendRatio(ICON_DUNGEON_WARP_e, param_3, param_4); + setBlendRatio(ICON_LIGHT_DROP_e, param_3, param_4); + setBlendRatio(ICON_LIGHT_BALL_e, param_3, param_4); + setBlendRatio(ICON_CANNON_BALL_e, param_3, param_4); + setBlendRatio(ICON_COACH_e, param_3, param_4); + setBlendRatio(ICON_DESTINATION_e, param_3, param_4); } /* 801C43A8-801C443C 1BECE8 0094+00 1/1 3/3 0/0 .text setIconInfo__16dMenuMapCommon_cFUcfffffUc */ -bool dMenuMapCommon_c::setIconInfo(u8 param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5, - f32 param_6, u8 param_7) { +bool dMenuMapCommon_c::setIconInfo(u8 i_iconNo, f32 i_posX, f32 i_posY, f32 i_alpharate, f32 i_rotation, + f32 i_scale, u8 param_7) { if (mIconNum >= 128) { return false; } - _70[mIconNum]._0 = param_2; - _70[mIconNum]._4 = param_3; - _70[mIconNum]._8 = param_6; - _70[mIconNum]._C = param_5; - _70[mIconNum]._14 = param_1; - _70[mIconNum]._15 = param_7; - _70[mIconNum]._10 = param_4; + + mIconInfo[mIconNum].pos_x = i_posX; + mIconInfo[mIconNum].pos_y = i_posY; + mIconInfo[mIconNum].scale = i_scale; + mIconInfo[mIconNum].rotation = i_rotation; + mIconInfo[mIconNum].icon_no = i_iconNo; + mIconInfo[mIconNum]._15 = param_7; + mIconInfo[mIconNum].alpha_rate = i_alpharate; mIconNum++; return true; } @@ -523,40 +549,42 @@ bool dMenuMapCommon_c::setIconInfo(u8 param_1, f32 param_2, f32 param_3, f32 par void dMenuMapCommon_c::clearIconInfo() { mIconNum = 0; for (int i = 0; i < 128; i++) { - _70[i]._0 = 0.0f; - _70[i]._4 = 0.0f; - _70[i]._8 = 1.0f; - _70[i]._C = 0.0f; - _70[i]._14 = 23; - _70[i]._15 = 0; - // !@bug _10 is only set to zero in the first icon. + mIconInfo[i].pos_x = 0.0f; + mIconInfo[i].pos_y = 0.0f; + mIconInfo[i].scale = 1.0f; + mIconInfo[i].rotation = 0.0f; + mIconInfo[i].icon_no = ICON_MAX_e; + mIconInfo[i]._15 = 0; + // !@bug alpha_rate is only set to zero in the first icon. // Shouldn't really matter though as setIconInfo sets it on init. - _70[mIconNum]._10 = 0.0f; + mIconInfo[mIconNum].alpha_rate = 0.0f; } } /* 801C4494-801C452C 1BEDD4 0098+00 1/1 0/0 0/0 .text setBlendRatio__16dMenuMapCommon_cFUcff */ -void dMenuMapCommon_c::setBlendRatio(u8 param_1, f32 param_2, f32 param_3) { - if (mPictures[param_1] != NULL) { - mPictures[param_1]->setBlendRatio(param_2, param_3); - if (param_1 == 5) { - _60->setBlendRatio(param_2, param_3); +void dMenuMapCommon_c::setBlendRatio(u8 i_iconNo, f32 param_2, f32 param_3) { + if (mPictures[i_iconNo] != NULL) { + mPictures[i_iconNo]->setBlendRatio(param_2, param_3); + + if (i_iconNo == ICON_LIGHT_DROP_e) { + mLightDropPic->setBlendRatio(param_2, param_3); } } } /* 801C452C-801C4600 1BEE6C 00D4+00 0/0 1/1 0/0 .text blinkMove__16dMenuMapCommon_cFs */ void dMenuMapCommon_c::blinkMove(s16 param_1) { - _c72++; - if (_c72 >= param_1) { - _c72 -= (s16)(param_1 + 15); + mBlinkTimer++; + if (mBlinkTimer >= param_1) { + mBlinkTimer -= (s16)(param_1 + 15); } - if (_c72 < 0) { - _c78 = 1.0f; - } else if (_c72 <= param_1 / 2.0f) { - _c78 = (param_1 / 2.0f - _c72) / (param_1 / 2.0f); + + if (mBlinkTimer < 0) { + mBlinkAlpha = 1.0f; + } else if (mBlinkTimer <= param_1 / 2.0f) { + mBlinkAlpha = (param_1 / 2.0f - mBlinkTimer) / (param_1 / 2.0f); } else { - _c78 = (_c72 - param_1 / 2.0f) / (param_1 / 2.0f); + mBlinkAlpha = (mBlinkTimer - param_1 / 2.0f) / (param_1 / 2.0f); } } @@ -566,129 +594,157 @@ void dMenuMapCommon_c::moveLightDropAnime() { if (_c88 > 1.0f) { bVar6 = 1; } - s16 r7 = g_fmapHIO.mMapIconHIO.mLightDropFlashFrameNum; - f32 fVar3 = g_fmapHIO.mMapIconHIO.mLightDropFlashStartScaleOut[bVar6]; - f32 fVar4 = g_fmapHIO.mMapIconHIO.mLightDropFlashEndScaleOut[bVar6]; - u8 bVar1 = g_fmapHIO.mMapIconHIO.mLightDropFlashStartAlphaOut[bVar6]; - u8 bVar2 = g_fmapHIO.mMapIconHIO.mLightDropFlashEndAlphaOut[bVar6]; - _c74++; - if (_c74 >= r7) { - _c74 -= r7; + + s16 flash_frame_num = g_fmapHIO.mMapIconHIO.mLightDropFlashFrameNum; + f32 flash_start_scale = g_fmapHIO.mMapIconHIO.mLightDropFlashStartScaleOut[bVar6]; + f32 flash_end_scale = g_fmapHIO.mMapIconHIO.mLightDropFlashEndScaleOut[bVar6]; + u8 flash_start_alpha = g_fmapHIO.mMapIconHIO.mLightDropFlashStartAlphaOut[bVar6]; + u8 flash_end_alpha = g_fmapHIO.mMapIconHIO.mLightDropFlashEndAlphaOut[bVar6]; + + mLightDropFlashTimer++; + if (mLightDropFlashTimer >= flash_frame_num) { + mLightDropFlashTimer -= flash_frame_num; } + f32 fVar7; - if (_c74 <= r7 / 2.0f) { - fVar7 = (r7 / 2.0f - _c74) / (r7 / 2.0f); + if (mLightDropFlashTimer <= flash_frame_num / 2.0f) { + fVar7 = (flash_frame_num / 2.0f - mLightDropFlashTimer) / (flash_frame_num / 2.0f); } else { - fVar7 = (_c74 - r7 / 2.0f) / (r7 / 2.0f); + fVar7 = (mLightDropFlashTimer - flash_frame_num / 2.0f) / (flash_frame_num / 2.0f); } - _c80 = bVar1 + fVar7 * (bVar2 - bVar1); - _c7c = fVar3 + fVar7 * (fVar4 - fVar3); + + _c80 = flash_start_alpha + fVar7 * (flash_end_alpha - flash_start_alpha); + _c7c = flash_start_scale + fVar7 * (flash_end_scale - flash_start_scale); } /* 801C4738-801C4778 1BF078 0040+00 1/1 0/0 0/0 .text getIconSizeX__16dMenuMapCommon_cFUc */ -float dMenuMapCommon_c::getIconSizeX(u8 index) { +f32 dMenuMapCommon_c::getIconSizeX(u8 i_iconNo) { for (int i = 0; i < ARRAY_SIZE(map_icon_size); i++) { - if (map_icon_size[i].mIndex == index) { - return map_icon_size[i].mXSize; + if (map_icon_size[i].icon_no == i_iconNo) { + return map_icon_size[i].size_x; } } + return 0.0f; } /* 801C4778-801C47C4 1BF0B8 004C+00 1/1 0/0 0/0 .text getIconSizeY__16dMenuMapCommon_cFUc */ -float dMenuMapCommon_c::getIconSizeY(u8 index) { +f32 dMenuMapCommon_c::getIconSizeY(u8 i_iconNo) { for (int i = 0; i < ARRAY_SIZE(map_icon_size); i++) { - if (map_icon_size[i].mIndex == index) { - return map_icon_size[i].mYSize; + if (map_icon_size[i].icon_no == i_iconNo) { + return map_icon_size[i].size_y; } } + return 0.0f; } /* 801C47C4-801C4D54 1BF104 0590+00 1/1 0/0 0/0 .text debugIcon__16dMenuMapCommon_cFv */ void dMenuMapCommon_c::debugIcon() { - int iVar6 = -1; - for (int i = 0; i < 128; i++) - { - if (_70[i]._14 == 17) { - iVar6 = i; + int link_icon_idx = -1; + for (int i = 0; i < 128; i++) { + if (mIconInfo[i].icon_no == 17) { + link_icon_idx = i; break; } } - if (iVar6 < 0) { + + if (link_icon_idx < 0) { return; } - f32 dVar10 = _70[iVar6]._0; - f32 dVar9 = _70[iVar6]._4; - f32 dVar7 = _70[iVar6]._8; + f32 pos_x = mIconInfo[link_icon_idx].pos_x; + f32 pos_y = mIconInfo[link_icon_idx].pos_y; + f32 scale = mIconInfo[link_icon_idx].scale; + if (g_fmapHIO.mMapIconHIO.mIconDisplay[0]) { - setIconInfo(0, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); - setIconInfo(1, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(0, pos_x, pos_y, 0.0f, scale, 1.0f, 1); + setIconInfo(1, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (!g_fmapHIO.mMapIconHIO.mIconDisplay[1]) { - _70[iVar6]._15 = 0; + mIconInfo[link_icon_idx]._15 = 0; } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[2]) { - setIconInfo(2, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_DUNGEON_WARP_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[3]) { - setIconInfo(18, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_DESTINATION_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[4]) { - setIconInfo(4, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_BOSS_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[5]) { - setIconInfo(3, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_BOSS_GANON_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[6]) { - setIconInfo(5, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_LIGHT_DROP_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[7]) { - setIconInfo(6, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_LIGHT_BALL_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[8]) { - setIconInfo(7, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_CANNON_BALL_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[9]) { - setIconInfo(9, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_YETO_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[10]) { - setIconInfo(10, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_YETA_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[11]) { - setIconInfo(11, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_GOLD_WOLF_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[12]) { - setIconInfo(12, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_MONKEY_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[13]) { - setIconInfo(15, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_OOCCOO_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[14]) { - setIconInfo(16, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_OOCCOO_JR_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[15]) { - setIconInfo(8, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_COPY_STATUE_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[16]) { - setIconInfo(13, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_COACH_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[17]) { - setIconInfo(14, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_KEY_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[18]) { - setIconInfo(19, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_TREASURE_CHEST_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[19]) { - setIconInfo(20, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_DUNGEON_ENTER_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[20]) { - setIconInfo(21, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_LINK_ENTER_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } + if (g_fmapHIO.mMapIconHIO.mIconDisplay[21]) { - setIconInfo(22, dVar10, dVar9, 0.0f, dVar7, 1.0f, 1); + setIconInfo(ICON_LV8_WARP_e, pos_x, pos_y, 0.0f, scale, 1.0f, 1); } -} \ No newline at end of file +} diff --git a/src/d/d_npc_lib.cpp b/src/d/d_npc_lib.cpp index e36a1f4dfd2..7c9fa3bb564 100644 --- a/src/d/d_npc_lib.cpp +++ b/src/d/d_npc_lib.cpp @@ -1,58 +1,6 @@ -// -// Generated By: dol2asm -// Translation Unit: d/d_npc_lib -// - #include "d/d_npc_lib.h" -#include "dol2asm.h" #include "SSystem/SComponent/c_math.h" -// -// Forward References: -// - -extern "C" void __ct__16dNpcLib_lookat_cFv(); -extern "C" void init__16dNpcLib_lookat_cFP8J3DModelPiP5csXyzP5csXyz(); -extern "C" void action__16dNpcLib_lookat_cF4cXyz4cXyzP10fopAc_ac_cPA4_fi(); -extern "C" void dbView__16dNpcLib_lookat_cFv(); -extern "C" void setPrm__16dNpcLib_lookat_cFv(); -extern "C" void update__16dNpcLib_lookat_cFv(); -extern "C" void limitter__16dNpcLib_lookat_cFPssss(); -extern "C" void __dt__16dNpcLib_lookat_cFv(); - -// -// External References: -// - -extern "C" void __dt__4cXyzFv(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void XYZrotS__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void __ct__4cXyzFv(); -extern "C" void __dt__5csXyzFv(); -extern "C" void __ct__5csXyzFv(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void normalize__4cXyzFv(); -extern "C" void isZero__4cXyzCFv(); -extern "C" void __apl__5csXyzFR5csXyz(); -extern "C" void cM_atan2s__Fff(); -extern "C" void __dl__FPv(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_25(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_25(); -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 Zero__5csXyz[4]; -extern "C" extern u8 data_80451164[4]; - -// -// Declarations: -// - /* 80251314-8025140C 24BC54 00F8+00 0/0 0/0 4/4 .text __ct__16dNpcLib_lookat_cFv */ dNpcLib_lookat_c::dNpcLib_lookat_c() {} @@ -71,6 +19,8 @@ void dNpcLib_lookat_c::init(J3DModel* i_mdl_p, int* param_1, csXyz* param_2, csX break; } + JUT_ASSERT(649, a_jntNum < i_mdl_p->getModelData()->getJointNum()); + mDoMtx_stack_c::copy(i_mdl_p->getAnmMtx(a_jntNum)); mDoMtx_stack_c::multVecZero(&field_0x04[mCount]); field_0xbc[i] = a_jntNum; @@ -80,105 +30,72 @@ void dNpcLib_lookat_c::init(J3DModel* i_mdl_p, int* param_1, csXyz* param_2, csX } } -/* ############################################################################################## */ -/* 80454DE8-80454DEC 0033E8 0004+00 3/3 0/0 0/0 .sdata2 @3864 */ -SECTION_SDATA2 static u8 lit_3864[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80454DEC-80454DF0 0033EC 0004+00 1/1 0/0 0/0 .sdata2 @3865 */ -SECTION_SDATA2 static f32 lit_3865 = 1.0f; - -/* 80454DF0-80454DF8 0033F0 0008+00 2/2 0/0 0/0 .sdata2 @3866 */ -SECTION_SDATA2 static f64 lit_3866 = 0.5; - -/* 80454DF8-80454E00 0033F8 0008+00 2/2 0/0 0/0 .sdata2 @3867 */ -SECTION_SDATA2 static f64 lit_3867 = 3.0; - -/* 80454E00-80454E08 003400 0008+00 2/2 0/0 0/0 .sdata2 @3868 */ -SECTION_SDATA2 static u8 lit_3868[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80454E08-80454E10 003408 0004+04 1/1 0/0 0/0 .sdata2 @3869 */ -SECTION_SDATA2 static f32 lit_3869[1 + 1 /* padding */] = { - 0.5f, - /* padding */ - 0.0f, -}; - -/* 80454E10-80454E18 003410 0008+00 2/2 0/0 0/0 .sdata2 @3873 */ -SECTION_SDATA2 static f64 lit_3873 = 4503601774854144.0 /* cast s32 to float */; - /* 80251534-80251B60 24BE74 062C+00 0/0 0/0 2/2 .text * action__16dNpcLib_lookat_cF4cXyz4cXyzP10fopAc_ac_cPA4_fi */ // NONMATCHING - regswap, equivalent void dNpcLib_lookat_c::action(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2, Mtx param_3, int param_4) { - cXyz spA0; + cXyz sp90; + int i; - Mtx sp90; - cMtx_copy(param_3, sp90); - sp90[2][3] = 0.0f; - sp90[1][3] = 0.0f; - sp90[0][3] = 0.0f; + Mtx spA0; + cMtx_copy(param_3, spA0); + spA0[0][3] = spA0[1][3] = spA0[2][3] = 0.0f; - mDoMtx_stack_c::copy(sp90); + mDoMtx_stack_c::copy(spA0); mDoMtx_stack_c::inverse(); - cMtx_copy(mDoMtx_stack_c::get(), sp90); + cMtx_copy(mDoMtx_stack_c::get(), spA0); for (int i = 0; i < mCount; i++) { - spA0 = field_0x04[i] - param_2->current.pos; + sp90 = field_0x04[i] - param_2->current.pos; mDoMtx_stack_c::transS(param_2->current.pos); - mDoMtx_stack_c::concat(sp90); - mDoMtx_stack_c::multVec(&spA0, &field_0x04[i]); + mDoMtx_stack_c::concat(spA0); + mDoMtx_stack_c::multVec(&sp90, &field_0x04[i]); } - spA0 = param_0 - param_2->current.pos; + sp90 = param_0 - param_2->current.pos; mDoMtx_stack_c::transS(param_2->current.pos); - mDoMtx_stack_c::concat(sp90); - mDoMtx_stack_c::multVec(&spA0, ¶m_0); + mDoMtx_stack_c::concat(spA0); + mDoMtx_stack_c::multVec(&sp90, ¶m_0); - spA0 = param_1 - param_2->current.pos; + sp90 = param_1 - param_2->current.pos; mDoMtx_stack_c::transS(param_2->current.pos); - mDoMtx_stack_c::concat(sp90); - mDoMtx_stack_c::multVec(&spA0, &field_0x04[mCount]); + mDoMtx_stack_c::concat(spA0); + mDoMtx_stack_c::multVec(&sp90, &field_0x04[mCount]); setPrm(); update(); - cXyz spAC; - cXyz spB8; + cXyz sp84; + cXyz sp78; - f32 tmp = 1.0f; + f32 var_f30 = 0.0f; + f32 var_f31 = 1.0f; for (int i = mCount - 1; i >= 0 && param_4 == 1; i--) { - spAC = param_0 - field_0x04[i]; + sp84 = param_0 - field_0x04[i]; - if (!spAC.isZero()) { - spAC.normalize(); + if (!sp84.isZero()) { + sp84.normalize(); - spB8 = field_0x04[mCount] - field_0x04[i]; - if (!spB8.isZero()) { - spB8.normalize(); + sp78 = field_0x04[mCount] - field_0x04[i]; + if (!sp78.isZero()) { + sp78.normalize(); - s16 svar7 = -cM_atan2s(spAC.y, spAC.absXZ()); - s16 svar8 = cM_atan2s(spAC.x, spAC.z); + s16 sp1A = -cM_atan2s(sp84.y, sp84.absXZ()); + s16 sp18 = cM_atan2s(sp84.x, sp84.z); - s16 svar9 = -cM_atan2s(spB8.y, spB8.absXZ()); - s16 svar10 = cM_atan2s(spB8.x, spB8.z); + s16 sp16 = -cM_atan2s(sp78.y, sp78.absXZ()); + s16 sp14 = cM_atan2s(sp78.x, sp78.z); - field_0x4c[i].x += (s16)(tmp * (f32)(svar7 - svar9)); - field_0x4c[i].y += (s16)(tmp * (f32)(svar8 - svar10)); + field_0x4c[i].x += (s16)(var_f31 * (f32)(sp1A - sp16)); + field_0x4c[i].y += (s16)(var_f31 * (f32)(sp18 - sp14)); limitter(&field_0x4c[i].x, field_0x34[i].x, field_0x94[i].x, field_0x7c[i].x); limitter(&field_0x4c[i].y, field_0x34[i].y, field_0x94[i].y, field_0x7c[i].y); } } - tmp *= 0.5f; + var_f31 *= 0.5f; update(); } @@ -194,17 +111,26 @@ void dNpcLib_lookat_c::action(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2, M /* 80251B60-80251B64 24C4A0 0004+00 0/0 0/0 2/2 .text dbView__16dNpcLib_lookat_cFv */ void dNpcLib_lookat_c::dbView() {} -/* ############################################################################################## */ -/* 80454E18-80454E20 003418 0004+04 1/1 0/0 0/0 .sdata2 @3970 */ -SECTION_SDATA2 static f32 lit_3970[1 + 1 /* padding */] = { - 2.0f / 5.0f, - /* padding */ - 0.0f, -}; - /* 80251B64-80251EF8 24C4A4 0394+00 1/1 0/0 0/0 .text setPrm__16dNpcLib_lookat_cFv */ void dNpcLib_lookat_c::setPrm() { - // NONMATCHING + cXyz sp14; + int i; + + for (i = 0; i < mCount; i++) { + field_0x34[i] = csXyz::Zero; + field_0xac[i] = 0.0f; + } + + for (i = 0; i < mCount; i++) { + field_0x4c[i].x = 0.4f * field_0x4c[i].x; + field_0x4c[i].y = 0.4f * field_0x4c[i].y; + + sp14 = field_0x04[i + 1] - field_0x04[i]; + field_0x34[i].x = -cM_atan2s(sp14.y, sp14.absXZ()); + field_0x34[i].y = cM_atan2s(sp14.x, sp14.z); + + field_0xac[i] = sp14.abs(); + } } /* 80251EF8-80252018 24C838 0120+00 1/1 0/0 0/0 .text update__16dNpcLib_lookat_cFv */ @@ -212,8 +138,9 @@ void dNpcLib_lookat_c::update() { cXyz sp50; csXyz sp58(csXyz::Zero); Mtx m; + int i; - for (int i = 0; i < mCount; i++) { + for (i = 0; i < mCount; i++) { mDoMtx_stack_c::XYZrotS(field_0x34[i]); cMtx_copy(mDoMtx_stack_c::get(), m); @@ -233,11 +160,14 @@ void dNpcLib_lookat_c::update() { /* 80252018-80252094 24C958 007C+00 1/1 0/0 0/0 .text limitter__16dNpcLib_lookat_cFPssss */ int dNpcLib_lookat_c::limitter(s16* o_value, s16 param_1, s16 param_2, s16 param_3) { int limit = param_1 + *o_value; + BOOL rt = FALSE; + if (param_2 <= limit) { if (param_2 <= param_1) { *o_value = 0; } else { *o_value -= (s16)(limit - param_2); + rt = TRUE; } } @@ -246,6 +176,7 @@ int dNpcLib_lookat_c::limitter(s16* o_value, s16 param_1, s16 param_2, s16 param *o_value = 0; } else { *o_value -= (s16)(limit - param_3); + rt = TRUE; } } diff --git a/src/d/d_tresure.cpp b/src/d/d_tresure.cpp index 499a9821021..d8c7deb6633 100644 --- a/src/d/d_tresure.cpp +++ b/src/d/d_tresure.cpp @@ -172,8 +172,8 @@ void dTres_c::offStatus(u8 listIdx, int param_1, int flag) { } /* 8009C27C-8009C360 096BBC 00E4+00 0/0 1/1 0/0 .text getBossIconFloorNo__7dTres_cFPi */ -int dTres_c::getBossIconFloorNo(int* o_floorNo) { - int ret; +bool dTres_c::getBossIconFloorNo(int* o_floorNo) { + bool ret; if (o_floorNo == NULL) { return 0; diff --git a/src/m_Do/m_Do_printf.cpp b/src/m_Do/m_Do_printf.cpp index 9569a4f869f..00ed254f0cd 100644 --- a/src/m_Do/m_Do_printf.cpp +++ b/src/m_Do/m_Do_printf.cpp @@ -21,10 +21,33 @@ u8 __OSReport_System_disable; u8 __OSReport_enable; /* 80006798-800067C8 0010D8 0030+00 1/1 0/0 0/0 .text OSSwitchFiberEx__FUlUlUlUlUlUl */ -void OSSwitchFiberEx(u32 param_0, u32 param_1, u32 param_2, u32 param_3, u32 param_4, - u32 param_5) { - // NONMATCHING +#ifdef __GEKKO__ +asm void OSSwitchFiberEx(register u32 param_0, register u32 param_1, register u32 param_2, register u32 param_3, register u32 code, register u32 stack) { + nofralloc + + mflr r0 + + // Back chain + mr r9, r1 + stwu r9, -8(stack) + + // LR save + mr r1, stack + stw r0, 4(r9) + + // Call function + mtlr code + blrl + + // Switch back + lwz r5, 0(r1) + lwz r0, 4(r5) + mtlr r0 + mr r1, r5 + + blr } +#endif /* 800067C8-800067F4 001108 002C+00 3/3 0/0 0/0 .text my_PutString__FPCc */ void my_PutString(const char* string) {