diff --git a/include/d/menu/d_menu_fmap2D.h b/include/d/menu/d_menu_fmap2D.h index 9fd66ed8cbe..fc13ceacd0e 100644 --- a/include/d/menu/d_menu_fmap2D.h +++ b/include/d/menu/d_menu_fmap2D.h @@ -1,6 +1,263 @@ #ifndef D_MENU_D_MENU_FMAP2D_H #define D_MENU_D_MENU_FMAP2D_H +#include "JSystem/JUtility/TColor.h" +#include "d/map/d_map_path_fmap.h" +#include "d/menu/d_menu_fmap_map.h" +#include "d/menu/d_menu_map_common.h" +#include "d/meter/d_meter_haihai.h" +#include "d/pane/d_pane_class.h" #include "dolphin/types.h" +class dMenu_Fmap2DBack_c : public dDlst_base_c, public dMenuMapCommon_c { +public: + /* 801CF56C */ dMenu_Fmap2DBack_c(); + /* 801D0804 */ void setRegionTexData(u8, ResTIMG*, f32, f32, f32, f32, f32, f32, f32, f32, f32); + /* 801D0AC8 */ void calcAllMapPos(); + /* 801D0BF8 */ f32 calcAllMapScaleRate(); + /* 801D0C6C */ void calcAllMapPos2DFirst(f32, f32, f32*, f32*); + /* 801D0E00 */ void calcAllMapPos2D(f32, f32, f32*, f32*, f32, f32, f32); + /* 801D0D18 */ void calcAllMapPos2D(f32, f32, f32*, f32*); + /* 801D0D50 */ void calcAllMapPos2D(char const*, f32, f32, f32*, f32*); + /* 801D0F7C */ void calcAllMapPosWorld(f32, f32, f32*, f32*); + /* 801D1094 */ void setSpotPane(ResTIMG*); + /* 801D10F4 */ void deleteSpotPane(); + /* 801D1148 */ void zoomMapCalc(f32); + /* 801D1478 */ void zoomMapCalc2(f32); + /* 801D1858 */ void zoomMapCalcHIO(); + /* 801D1AA4 */ void scrollCalc(f32); + /* 801D1D50 */ void mapBlink(s16*); + /* 801D1D74 */ void setSpotCursor(u8); + /* 801D1DC4 */ void allmap_move2(STControl*); + /* 801D2100 */ void setIcon2DPos(u8, f32, f32, f32, u8, bool); + /* 801D241C */ void setIcon2DPos(u8, char const*, f32, f32, f32, u8, bool); + /* 801D2454 */ void setIcon2DPos(u8, u8, char const*, f32, f32, f32, u8, bool); + /* 801D2508 */ int isShowRegion(int); + /* 801D2658 */ f32 getMapAreaGlobalPosX(); + /* 801D2668 */ f32 getMapAreaGlobalPosY(); + /* 801D2678 */ f32 getMapAreaGlobalCenterPosX(); + /* 801D26C8 */ f32 getMapAreaGlobalCenterPosY(); + /* 801D2718 */ f32 getMapAreaSizeX(); + /* 801D2728 */ f32 getMapAreaSizeY(); + /* 801D2738 */ f32 getMapScissorAreaLX(); + /* 801D2790 */ f32 getMapScissorAreaLY(); + /* 801D27E8 */ f32 getMapScissorAreaSizeX(); + /* 801D2860 */ f32 getMapScissorAreaSizeRealX(); + /* 801D2880 */ f32 getMapScissorAreaCenterPosX(); + /* 801D28D0 */ f32 getMapScissorAreaCenterPosY(); + /* 801D2920 */ f32 getMapScissorAreaSizeY(); + /* 801D2998 */ f32 getMapScissorAreaSizeRealY(); + /* 801D29B8 */ void calcRenderingPos(); + /* 801D2A34 */ void calcRenderingScale(); + /* 801D2AC8 */ f32 getPathScale(f32); + /* 801D2B5C */ f32 getAllMapZoomRate(); + /* 801D2B64 */ f32 getRegionMapZoomRate(int); + /* 801D2C4C */ f32 getSpotMapZoomRate(); + /* 801D2C88 */ void getStageOriginPath(u8, f32*, f32*); + /* 801D2CC8 */ void calcOffset(u8, char const*, f32*, f32*); + /* 801D2DA8 */ void regionTextureDraw(); + /* 801D3094 */ void stageTextureDraw(); + /* 801D31D0 */ void worldGridDraw(); + /* 801D34DC */ void regionGridDraw(); + /* 801D382C */ void worldOriginDraw(); + /* 801D38FC */ void scrollAreaDraw(); + /* 801D3AF8 */ void regionOriginDraw(); + /* 801D3BBC */ void stageOriginDraw(); + /* 801D3CB8 */ void calcBlink(); + /* 801D4928 */ void calcBackAlpha(bool); + /* 801D49E0 */ void btkAnimeLoop(f32); + /* 801D4AFC */ void setBaseBackAlpha(u8); + /* 801D4B2C */ void regionMapMove(STControl*); + /* 801D4E80 */ void stageMapMove(STControl*, u8, bool); + /* 801D5334 */ void setAllAlphaRate(f32, bool); + /* 801D5388 */ void drawDebugStageArea(); + /* 801D564C */ void drawDebugRegionArea(); + /* 801D58F8 */ void setArrowPos3D(u8, char const*, f32, f32); + /* 801D59C0 */ void setArrowPos3DOffset(u8, char const*, f32, f32, f32); + /* 801D5AC4 */ void calcDrawPriority(); + /* 801D5BB8 */ void setArrowPosAxis(f32, f32); + + /* 801CFF34 */ virtual void draw(); + /* 801CFCDC */ virtual ~dMenu_Fmap2DBack_c(); + + void setDebugData(dMenu_FmapMap_c* fmap_map, dMenu_Fmap_region_data_c* region_data, + int param_2) { + mpFmapMap = fmap_map; + mpRegionData = region_data; + field_0x1244 = param_2; + } + + u8 isArrowDrawFlag() { return mArrowDrawFlag; } + + void onShowRegionFlag(int region_bit) { mRegionFlag |= ((1 << region_bit) & 0xFF); } + bool isShowRegionFlag(int region_bit) { return mRegionFlag & ((1 << region_bit) & 0xFF); } + + struct unkData { + /* 0x00 */ float field_0x0; + /* 0x04 */ float field_0x4; + /* 0x08 */ float field_0x8; + /* 0x0C */ float field_0xc; + /* 0x10 */ float field_0x10; + }; + + /* 0x0C98 */ J2DScreen* mpBackScreen; + /* 0x0C9C */ J2DScreen* mpBaseScreen; + /* 0x0CA0 */ CPaneMgrAlphaMorf* mpBaseRoot; + /* 0x0CA4 */ CPaneMgr* mpMapArea; + /* 0x0CA8 */ CPaneMgr* mpMapBlack; + /* 0x0CAC */ CPaneMgr* mpPointParent; + /* 0x0CB0 */ J2DPicture* mpBackTex; + /* 0x0CB4 */ J2DPicture* mpAreaTex[8]; + /* 0x0CD4 */ J2DPicture* mpSpotTexture; + /* 0x0CD8 */ J2DScreen* mpPointScreen; + /* 0x0CDC */ u32 field_0xcdc; + /* 0x0CE0 */ dMeterHaihai_c* mpMeterHaihai; + /* 0x0CE4 */ J2DAnmBase* mpBaseAnm; + /* 0x0CE8 */ unkData field_0xce8[8]; + /* 0x0D88 */ Stage_c* mpStages; + /* 0x0D8C */ float field_0xd8c[8]; + /* 0x0D0C */ float field_0xdac[8]; + /* 0x0D0C */ float field_0xdcc[8]; + /* 0x0D0C */ float field_0xdec[8]; + /* 0x0E0C */ float field_0xe0c[8]; + /* 0x0E2C */ float field_0xe2c[8]; + /* 0x0E4C */ float field_0xe4c[8]; + /* 0x0E6C */ float field_0xe6c[8]; + /* 0x0E8C */ float field_0xe8c[8]; + /* 0x0EAC */ float field_0xeac[8]; + /* 0x0ECC */ float field_0xecc[8]; + /* 0x0EEC */ float field_0xeec[8]; + /* 0x0F0C */ float field_0xf0c[8]; + /* 0x0F2C */ float field_0xf2c[8]; + /* 0x0F4C */ float field_0xf4c[8]; + /* 0x0F6C */ float field_0xf6c[8]; + /* 0x0F8C */ float field_0xf8c; + /* 0x0F90 */ float field_0xf90; + /* 0x0F94 */ float field_0xf94; + /* 0x0F98 */ float field_0xf98; + /* 0x0F9C */ float field_0xf9c; // Likely called mZoom or something similar + /* 0x0FA0 */ float field_0xfa0; + /* 0x0FA4 */ float field_0xfa4; + /* 0x0FA8 */ float field_0xfa8; + /* 0x0FAC */ float field_0xfac; + /* 0x0FB0 */ float field_0xfb0; + /* 0x0FB4 */ float field_0xfb4; + /* 0x0FB8 */ float field_0xfb8; + /* 0x0FBC */ float field_0xfbc; + /* 0x0FC0 */ float field_0xfc0; + /* 0x0FC4 */ float field_0xfc4; + /* 0x0FC8 */ float field_0xfc8; + /* 0x0FCC */ float field_0xfcc; + /* 0x0FD0 */ float field_0xfd0; + /* 0x0FD4 */ float field_0xfd4; + /* 0x0FD8 */ float field_0xfd8; + /* 0x0FDC */ float field_0xfdc; + /* 0x0FE0 */ float field_0xfe0; + /* 0x0FE4 */ float field_0xfe4; + /* 0x0FE8 */ float field_0xfe8; + /* 0x0FEC */ float field_0xfec; + /* 0x0FF0 */ float mAllMapScaleRate; + /* 0x0FF4 */ float field_0xff4; + /* 0x0FF8 */ float field_0xff8; + /* 0x0FFC */ float field_0xffc; + /* 0x1000 */ float field_0x1000; + /* 0x1004 */ float field_0x1004[8]; + /* 0x1024 */ float field_0x1024[8]; + /* 0x1044 */ float field_0x1044[20]; + /* 0x1094 */ float field_0x1094[20]; + /* 0x10E4 */ float field_0x10e4[20]; + /* 0x1134 */ float field_0x1134[20]; + /* 0x1184 */ float field_0x1184; + /* 0x1188 */ float field_0x1188; + /* 0x118C */ float field_0x118c; + /* 0x1190 */ float field_0x1190; + /* 0x1194 */ float field_0x1194; + /* 0x1198 */ float field_0x1198; + /* 0x119C */ float control_ypos; + /* 0x11A0 */ float control_xpos; + /* 0x11A4 */ float field_0x11a4; + /* 0x11A8 */ float field_0x11a8; + /* 0x11AC */ float field_0x11ac; + /* 0x11B0 */ float field_0x11b0; + /* 0x11B4 */ float field_0x11b4; + /* 0x11B8 */ float field_0x11b8; + /* 0x11BC */ float field_0x11bc; + /* 0x11C0 */ float field_0x11c0; + /* 0x11C4 */ float field_0x11c4; + /* 0x11C8 */ float field_0x11c8; + /* 0x11CC */ float field_0x11cc; + /* 0x11D0 */ float field_0x11d0; + /* 0x11D4 */ float field_0x11d4; + /* 0x11D8 */ float field_0x11d8; + /* 0x11DC */ float field_0x11dc; + /* 0x11E0 */ float field_0x11e0; + /* 0x11E4 */ float field_0x11e4; + /* 0x11E8 */ float field_0x11e8; + /* 0x11EC */ float field_0x11ec; + /* 0x11F0 */ JUtility::TColor field_0x11f0; + /* 0x11F4 */ JUtility::TColor field_0x11f4; + /* 0x11F8 */ JUtility::TColor field_0x11f8; + /* 0x11FC */ JUtility::TColor field_0x11fc; + /* 0x1200 */ JUtility::TColor field_0x1200; + /* 0x1204 */ JUtility::TColor field_0x1204; + /* 0x1208 */ JUtility::TColor field_0x1208; + /* 0x120C */ JUtility::TColor field_0x120c; + /* 0x1210 */ float field_0x1210; + /* 0x1214 */ float field_0x1214; + /* 0x1218 */ u16 field_0x1218; + /* 0x121A */ u16 field_0x121a; + /* 0x121C */ u8 field_0x121c[8]; + /* 0x1224 */ u8 field_0x1224; + /* 0x1225 */ u8 field_0x1225; + /* 0x1226 */ u8 field_0x1226; + /* 0x1227 */ u8 field_0x1227; + /* 0x1228 */ u8 field_0x1228; + /* 0x1229 */ u8 field_0x1229; + /* 0x122A */ u8 field_0x122a; + /* 0x122B */ u8 field_0x122b; + /* 0x122C */ u8 mRegionFlag; + /* 0x122D */ u8 field_0x122d; + /* 0x122E */ u8 field_0x122e; + /* 0x122F */ u8 field_0x122f; + /* 0x1230 */ u8 field_0x1230[8]; + /* 0x1238 */ u8 field_0x1238; + /* 0x1239 */ u8 field_0x1239; + /* 0x123A */ u8 mArrowDrawFlag; + /* 0x123B */ u8 field_0x123b; + /* 0x123C */ dMenu_FmapMap_c* mpFmapMap; + /* 0x1240 */ dMenu_Fmap_region_data_c* mpRegionData; + /* 0x1244 */ s32 field_0x1244; +}; + +class dMenu_Fmap2DTop_c : public dDlst_base_c { +public: + /* 801D5BD0 */ dMenu_Fmap2DTop_c(JKRExpHeap*, STControl*); + /* 801D6A44 */ void _execute(); + /* 801D6C44 */ void setAllAlphaRate(f32, bool); + /* 801D6DF8 */ void btkAnimeLoop(J2DAnmTextureSRTKey*, f32); + /* 801D6EDC */ void setMoyaAlpha(u8); + /* 801D6F38 */ void setTitleNameString(u32); + /* 801D7010 */ void setAreaNameString(u32); + /* 801D70E8 */ void setZButtonString(u32, u8); + /* 801D7210 */ void setBButtonString(u32, u8); + /* 801D72D4 */ void setAButtonString(u32, u8); + /* 801D7398 */ void setCrossLRString(u32); + /* 801D74EC */ void set3DStickString(u32); + /* 801D7640 */ void createExplain(JKRExpHeap*, STControl*); + /* 801D76C0 */ void deleteExplain(); + /* 801D7714 */ void setArrowAlphaRatio(u8, f32); + /* 801D77C4 */ void setAlphaAnimeMin(CPaneMgrAlpha*); + /* 801D7858 */ void setAlphaAnimeMid(CPaneMgrAlpha*); + /* 801D78FC */ void setAlphaAnimeMax(CPaneMgrAlpha*); + /* 801D7994 */ void checkPlayerWarpAccept(); + /* 801D7A08 */ void checkWarpAcceptRegion(int); + /* 801D7AB4 */ void checkWarpAcceptRegion4(); + /* 801D7B58 */ void checkWarpAcceptCannon(); + /* 801D7BCC */ void setHIO(bool); + /* 801D8088 */ void isWarpAccept(); + + /* 801D6C98 */ virtual void draw(); + /* 801D6700 */ virtual ~dMenu_Fmap2DTop_c(); +}; + #endif /* D_MENU_D_MENU_FMAP2D_H */ diff --git a/include/d/menu/d_menu_fmap_map.h b/include/d/menu/d_menu_fmap_map.h index a621d069cfc..5b0e05b9c53 100644 --- a/include/d/menu/d_menu_fmap_map.h +++ b/include/d/menu/d_menu_fmap_map.h @@ -2,5 +2,60 @@ #define D_MENU_D_MENU_FMAP_MAP_H #include "dolphin/types.h" +#include "d/menu/d_menu_fmap.h" +#include "d/map/d_map_path.h" + +class renderingFmap_c { +public: + enum palette_e {}; + + /* 801CE15C */ void init(u8*, u16, u16, u16, u16); + /* 801CE188 */ void entry(dMenu_Fmap_world_data_c*, int, f32, f32, f32); + /* 801CE224 */ void isSwitchSpecialOff(int); + /* 801CE288 */ void isSwitch(dDrawPath_c::group_class const*); + /* 801CE3C0 */ void getPointStagePathInnerNo(dMenu_Fmap_region_data_c*, f32, f32, int, int*, + int*); + /* 801CE410 */ void preDrawPath(); + /* 801CE4D4 */ bool isDrawPath(); + /* 801CE4DC */ void isDrawRoom(); + /* 801CE560 */ void postDrawPath(); + /* 801CE5B8 */ void postRenderingMap(); + /* 801CE5EC */ void roomSetteing(); + /* 801CE6A8 */ void getFirstRoomPointer(); + /* 801CE75C */ void getFirstRegion(); + /* 801CE7A8 */ void getFirstStage(); + /* 801CE80C */ void getFirstRoom(); + /* 801CE84C */ void getNextRoom(); + /* 801CE8B8 */ void getNextStage(); + /* 801CE93C */ void getNextRegion(); + /* 801CE9A4 */ void getNextRoomPointer(); + /* 801CF4D0 */ ~renderingFmap_c(); + /* 801CF55C */ bool isRenderingFloor(int); + /* 801CF564 */ void beforeDrawPath(); + /* 801CF568 */ void afterDrawPath(); +}; + +class dMenu_FmapMap_c { +public: + /* 801CEAAC */ void setFmapPaletteColor(renderingFmap_c::palette_e, _GXColor const&); + /* 801CEA38 */ void setFmapPaletteColor(renderingFmap_c::palette_e, u8, u8, u8, u8); + /* 801CEAE0 */ void isFlashRoomNoCheck(int) const; + /* 801CEB1C */ void setPointColor(f32); + /* 801CEC24 */ dMenu_FmapMap_c(); + /* 801CED38 */ ~dMenu_FmapMap_c(); + /* 801CEDE8 */ void _create(u16, u16, u16, u16, void*); + /* 801CEE3C */ void _delete(); + /* 801CEE94 */ void draw(); + /* 801CF0B4 */ void rendering(dDrawPath_c::line_class const*); + /* 801CF12C */ void getLineWidth(int); + /* 801CF1D4 */ void isDrawType(int); + /* 801CF1E0 */ void setFlashOn(int, int, u8*, int); + /* 801CF208 */ void getLineColor(int, int); + /* 801CF298 */ void getBackColor() const; + /* 801CF2A0 */ void getColor(int); + /* 801CF394 */ void setTexture(u16, u16, u16, u16); + /* 801CF450 */ void setRendering(dMenu_Fmap_world_data_c*, int, f32, f32, f32, f32); +}; + #endif /* D_MENU_D_MENU_FMAP_MAP_H */ diff --git a/include/d/menu/d_menu_map_common.h b/include/d/menu/d_menu_map_common.h index 52ac2591409..d83df6324af 100644 --- a/include/d/menu/d_menu_map_common.h +++ b/include/d/menu/d_menu_map_common.h @@ -22,6 +22,11 @@ struct dMenuMapCommon_c { /* 801C4778 */ float getIconSizeY(u8 index); /* 801C47C4 */ void debugIcon(); + void setCenterPosX(f32 center_pos, u8 param_2) { + mCenterPosX = center_pos; + _c90 = param_2; + } + struct data { /* 0x00 */ float _0; /* 0x04 */ float _4; @@ -32,6 +37,23 @@ struct dMenuMapCommon_c { /* 0x15 */ u8 _15; }; + struct Stage_c { + // Incomplete class + + struct Stage_c_data { + // Unknown name + + /* 0x00 */ char mName[8]; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9; + /* 0x0C */ f32 field_0xc; + /* 0x10 */ f32 field_0x10; + }; + + /* 0x0 */ u32 field_0x0; + /* 0x4 */ Stage_c_data field_0x4[0]; + }; + /* 0x004 */ J2DPicture* mPictures[23]; /* 0x060 */ J2DPicture* _60; /* 0x064 */ dSelect_cursor_c* mpDrawCursor; @@ -47,9 +69,8 @@ struct dMenuMapCommon_c { /* 0xC80 */ float _c80; /* 0xC84 */ float _c84; /* 0xC88 */ float _c88; - /* 0xC8C */ float _c8c; + /* 0xC8C */ float mCenterPosX; /* 0xC90 */ u8 _c90; }; - #endif /* D_MENU_D_MENU_MAP_COMMON_H */ diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h index 266c4ffb64b..2062d5fbafe 100644 --- a/include/d/meter/d_meter2_info.h +++ b/include/d/meter/d_meter2_info.h @@ -180,6 +180,10 @@ public: bool isTempBit(int bit) { return mTempBits & (1 << bit) != 0; } void offSub2DStatus(int bit) { mSub2DStatus &= ~(1 << bit); } void onSub2DStatus(int bit) { mSub2DStatus |= 1 << bit; } + void set2DWidth(float width) { m2DWidth = width; } + void set2DHeight(float height) { m2DHeight = height; } + void set2DPosH(float posH) { m2DPosH = posH; } + void set2DPosV(float posV) { m2DPosV = posV; } public: /* 0x04 */ u8 unk4[4]; @@ -224,7 +228,8 @@ public: /* 0xB4 */ u16 mWindowAccept; /* 0xB6 */ u16 mOilGaugeBackUp; /* 0xB8 */ u8 mDirectUseItem; - /* 0xB9 */ u8 mWindowStatus; // 0: normal play, 2: item wheel, 3: pause menu, 4: map, 10: pause menu submenus, 11: map in dungeon + /* 0xB9 */ u8 mWindowStatus; // 0: normal play, 2: item wheel, 3: pause menu, 4: map, 10: pause + // menu submenus, 11: map in dungeon /* 0xBA */ u8 unk186; /* 0xBB */ u8 mMaxCount; /* 0xBC */ u8 mNowCount; @@ -275,6 +280,8 @@ static void dMeter2Info_setFloatingMessage(u16 pMessageID, s16 pMessageTimer, bo static void dMeter2Info_offUseButton(int pButton); bool dMeter2Info_is2DActiveTouchArea(); u8 dMeter2Info_getRecieveLetterNum(); +bool dMeter2Info_getPixel(f32 param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, + f32 param_5, struct ResTIMG const* param_6); inline void dMeter2Info_Initialize() { g_meter2_info.init(); @@ -725,6 +732,22 @@ inline void dMeter2Info_onSub2DStatus(int bit) { g_meter2_info.onSub2DStatus(bit); } +inline void dMeter2Info_set2DWidth(float width) { + g_meter2_info.set2DWidth(width); +} + +inline void dMeter2Info_set2DHeight(float height) { + g_meter2_info.set2DHeight(height); +} + +inline void dMeter2Info_set2DPosH(float posH) { + g_meter2_info.set2DPosH(posH); +} + +inline void dMeter2Info_set2DPosV(float posV) { + g_meter2_info.set2DPosV(posV); +} + const char* dMeter2Info_getPlusTextureName(); const char* dMeter2Info_getNumberTextureName(int pIndex); void dMeter2Info_recieveLetter(); diff --git a/src/d/menu/d_menu_fmap2D.cpp b/src/d/menu/d_menu_fmap2D.cpp index 00ec00686fa..e6545f8395a 100644 --- a/src/d/menu/d_menu_fmap2D.cpp +++ b/src/d/menu/d_menu_fmap2D.cpp @@ -4,254 +4,21 @@ // #include "d/menu/d_menu_fmap2D.h" +#include "JSystem/J2DGraph/J2DAnmLoader.h" +#include "JSystem/J2DGraph/J2DOrthoGraph.h" +#include "JSystem/J2DGraph/J2DScreen.h" +#include "JSystem/JKernel/JKRExpHeap.h" +#include "JSystem/JUtility/JUTTexture.h" +#include "SSystem/SComponent/c_math.h" +#include "d/a/d_a_player.h" +#include "d/com/d_com_inf_game.h" +#include "d/d_lib.h" +#include "d/meter/d_meter2_info.h" +#include "d/meter/d_meter_HIO.h" +#include "d/msg/d_msg_class.h" +#include "d/msg/d_msg_scrn_explain.h" #include "dol2asm.h" - -// -// Types: -// - -struct dMenu_Fmap_region_data_c {}; - -struct renderingFmap_c { - /* 801CE3C0 */ void getPointStagePathInnerNo(dMenu_Fmap_region_data_c*, f32, f32, int, int*, - int*); -}; - -struct daPy_py_c { - static u8 m_midnaActor[4]; -}; - -struct dSv_player_field_last_stay_info_c { - /* 80032E78 */ void isRegionBit(int) const; -}; - -struct dSv_event_flag_c { - static u8 saveBitLabels[1644 + 4 /* padding */]; -}; - -struct dSv_event_c { - /* 800349BC */ void isEventBit(u16) const; -}; - -struct STControl {}; - -struct J2DOrthoGraph {}; - -struct dMsgScrnExplain_c { - /* 8023CC88 */ dMsgScrnExplain_c(STControl*, u8, bool, u8); - /* 8023D918 */ void draw(J2DOrthoGraph*); -}; - -struct dMeterHaihai_c { - /* 8020AE8C */ dMeterHaihai_c(u8); - /* 8020B518 */ void drawHaihai(u8); -}; - -struct JMSMesgEntry_c {}; - -struct dMeter2Info_c { - /* 8021C544 */ void getStringKanji(u32, char*, JMSMesgEntry_c*); -}; - -struct J2DAnmTextureSRTKey {}; - -struct JKRExpHeap {}; - -struct JGeometry { - template - struct TBox2 {}; - /* TBox2 */ - struct TBox2__template0 {}; -}; - -struct J2DGrafContext { - /* 802E90C0 */ void scissor(JGeometry::TBox2 const&); -}; - -struct JKRArchive {}; - -struct J2DScreen { - /* 802F8498 */ J2DScreen(); - /* 802F8648 */ void setPriority(char const*, u32, JKRArchive*); - /* 802F8ED4 */ void draw(f32, f32, J2DGrafContext const*); - /* 802F9690 */ void animation(); -}; - -struct CPaneMgrAlpha { - /* 802553FC */ CPaneMgrAlpha(J2DScreen*, u64, u8, JKRExpHeap*); - /* 80255608 */ void hide(); - /* 802557D0 */ void setAlphaRate(f32); - /* 80255828 */ void getAlphaRate(); -}; - -struct dMenu_Fmap2DTop_c { - /* 801D5BD0 */ dMenu_Fmap2DTop_c(JKRExpHeap*, STControl*); - /* 801D6700 */ ~dMenu_Fmap2DTop_c(); - /* 801D6A44 */ void _execute(); - /* 801D6C44 */ void setAllAlphaRate(f32, bool); - /* 801D6C98 */ void draw(); - /* 801D6DF8 */ void btkAnimeLoop(J2DAnmTextureSRTKey*, f32); - /* 801D6EDC */ void setMoyaAlpha(u8); - /* 801D6F38 */ void setTitleNameString(u32); - /* 801D7010 */ void setAreaNameString(u32); - /* 801D70E8 */ void setZButtonString(u32, u8); - /* 801D7210 */ void setBButtonString(u32, u8); - /* 801D72D4 */ void setAButtonString(u32, u8); - /* 801D7398 */ void setCrossLRString(u32); - /* 801D74EC */ void set3DStickString(u32); - /* 801D7640 */ void createExplain(JKRExpHeap*, STControl*); - /* 801D76C0 */ void deleteExplain(); - /* 801D7714 */ void setArrowAlphaRatio(u8, f32); - /* 801D77C4 */ void setAlphaAnimeMin(CPaneMgrAlpha*); - /* 801D7858 */ void setAlphaAnimeMid(CPaneMgrAlpha*); - /* 801D78FC */ void setAlphaAnimeMax(CPaneMgrAlpha*); - /* 801D7994 */ void checkPlayerWarpAccept(); - /* 801D7A08 */ void checkWarpAcceptRegion(int); - /* 801D7AB4 */ void checkWarpAcceptRegion4(); - /* 801D7B58 */ void checkWarpAcceptCannon(); - /* 801D7BCC */ void setHIO(bool); - /* 801D8088 */ void isWarpAccept(); -}; - -struct ResTIMG {}; - -struct dMenu_Fmap2DBack_c { - /* 801CF56C */ dMenu_Fmap2DBack_c(); - /* 801CFCDC */ ~dMenu_Fmap2DBack_c(); - /* 801CFF34 */ void draw(); - /* 801D0804 */ void setRegionTexData(u8, ResTIMG*, f32, f32, f32, f32, f32, f32, f32, f32, f32); - /* 801D0AC8 */ void calcAllMapPos(); - /* 801D0BF8 */ void calcAllMapScaleRate(); - /* 801D0C6C */ void calcAllMapPos2DFirst(f32, f32, f32*, f32*); - /* 801D0E00 */ void calcAllMapPos2D(f32, f32, f32*, f32*, f32, f32, f32); - /* 801D0D18 */ void calcAllMapPos2D(f32, f32, f32*, f32*); - /* 801D0D50 */ void calcAllMapPos2D(char const*, f32, f32, f32*, f32*); - /* 801D0F7C */ void calcAllMapPosWorld(f32, f32, f32*, f32*); - /* 801D1094 */ void setSpotPane(ResTIMG*); - /* 801D10F4 */ void deleteSpotPane(); - /* 801D1148 */ void zoomMapCalc(f32); - /* 801D1478 */ void zoomMapCalc2(f32); - /* 801D1858 */ void zoomMapCalcHIO(); - /* 801D1AA4 */ void scrollCalc(f32); - /* 801D1D50 */ void mapBlink(s16*); - /* 801D1D74 */ void setSpotCursor(u8); - /* 801D1DC4 */ void allmap_move2(STControl*); - /* 801D2100 */ void setIcon2DPos(u8, f32, f32, f32, u8, bool); - /* 801D241C */ void setIcon2DPos(u8, char const*, f32, f32, f32, u8, bool); - /* 801D2454 */ void setIcon2DPos(u8, u8, char const*, f32, f32, f32, u8, bool); - /* 801D2508 */ void isShowRegion(int); - /* 801D2658 */ void getMapAreaGlobalPosX(); - /* 801D2668 */ void getMapAreaGlobalPosY(); - /* 801D2678 */ void getMapAreaGlobalCenterPosX(); - /* 801D26C8 */ void getMapAreaGlobalCenterPosY(); - /* 801D2718 */ void getMapAreaSizeX(); - /* 801D2728 */ void getMapAreaSizeY(); - /* 801D2738 */ void getMapScissorAreaLX(); - /* 801D2790 */ void getMapScissorAreaLY(); - /* 801D27E8 */ void getMapScissorAreaSizeX(); - /* 801D2860 */ void getMapScissorAreaSizeRealX(); - /* 801D2880 */ void getMapScissorAreaCenterPosX(); - /* 801D28D0 */ void getMapScissorAreaCenterPosY(); - /* 801D2920 */ void getMapScissorAreaSizeY(); - /* 801D2998 */ void getMapScissorAreaSizeRealY(); - /* 801D29B8 */ void calcRenderingPos(); - /* 801D2A34 */ void calcRenderingScale(); - /* 801D2AC8 */ void getPathScale(f32); - /* 801D2B5C */ void getAllMapZoomRate(); - /* 801D2B64 */ void getRegionMapZoomRate(int); - /* 801D2C4C */ void getSpotMapZoomRate(); - /* 801D2C88 */ void getStageOriginPath(u8, f32*, f32*); - /* 801D2CC8 */ void calcOffset(u8, char const*, f32*, f32*); - /* 801D2DA8 */ void regionTextureDraw(); - /* 801D3094 */ void stageTextureDraw(); - /* 801D31D0 */ void worldGridDraw(); - /* 801D34DC */ void regionGridDraw(); - /* 801D382C */ void worldOriginDraw(); - /* 801D38FC */ void scrollAreaDraw(); - /* 801D3AF8 */ void regionOriginDraw(); - /* 801D3BBC */ void stageOriginDraw(); - /* 801D3CB8 */ void calcBlink(); - /* 801D4928 */ void calcBackAlpha(bool); - /* 801D49E0 */ void btkAnimeLoop(f32); - /* 801D4AFC */ void setBaseBackAlpha(u8); - /* 801D4B2C */ void regionMapMove(STControl*); - /* 801D4E80 */ void stageMapMove(STControl*, u8, bool); - /* 801D5334 */ void setAllAlphaRate(f32, bool); - /* 801D5388 */ void drawDebugStageArea(); - /* 801D564C */ void drawDebugRegionArea(); - /* 801D58F8 */ void setArrowPos3D(u8, char const*, f32, f32); - /* 801D59C0 */ void setArrowPos3DOffset(u8, char const*, f32, f32, f32); - /* 801D5AC4 */ void calcDrawPriority(); - /* 801D5BB8 */ void setArrowPosAxis(f32, f32); -}; - -struct dMenuMapCommon_c { - /* 801C2718 */ dMenuMapCommon_c(); - /* 801C27B4 */ ~dMenuMapCommon_c(); - /* 801C28D8 */ void initiate(JKRArchive*); - /* 801C38E4 */ void drawIcon(f32, f32, f32, f32); - /* 801C43A8 */ void setIconInfo(u8, f32, f32, f32, f32, f32, u8); - /* 801C452C */ void blinkMove(s16); - /* 801C4600 */ void moveLightDropAnime(); -}; - -struct JAISoundID {}; - -struct Vec {}; - -struct Z2SeMgr { - /* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -struct JUtility { - struct TColor {}; -}; - -struct JMath { - static u8 sincosTable_[65536]; -}; - -struct JKRHeap {}; - -struct JKRFileLoader { - /* 802D4270 */ void getGlbResource(char const*, JKRFileLoader*); -}; - -struct J2DTextBox { - /* 80300658 */ void getStringPtr() const; - /* 8030074C */ void setString(s16, char const*, ...); -}; - -struct J2DRotateAxis {}; - -struct J2DPicture { - /* 802FC708 */ J2DPicture(ResTIMG const*); -}; - -struct J2DPane { - /* 802F71DC */ void rotate(f32, f32, J2DRotateAxis, f32); - /* 802F7AFC */ void getParentPane(); -}; - -struct J2DAnmLoaderDataBase { - /* 80308A6C */ void load(void const*); -}; - -struct CPaneMgrAlphaMorf { - /* 80255C68 */ CPaneMgrAlphaMorf(J2DScreen*, u64, u8, JKRExpHeap*); - /* 80255DD0 */ void setBackupAlpha(); - /* 80255E28 */ void setAlphaMorfRate(f32); -}; - -struct CPaneMgr { - /* 80253984 */ CPaneMgr(J2DScreen*, u64, u8, JKRExpHeap*); - /* 802545B0 */ void paneTrans(f32, f32); - /* 80254C90 */ void getGlobalVtx(J2DPane*, f32 (*)[3][4], u8, bool, s16); -}; +#include "m_Do/m_Do_graphic.h" // // Forward References: @@ -408,7 +175,6 @@ extern "C" void __ct__10J2DPictureFPC7ResTIMG(); extern "C" void getStringPtr__10J2DTextBoxCFv(); extern "C" void setString__10J2DTextBoxFsPCce(); extern "C" void load__20J2DAnmLoaderDataBaseFPCv(); -extern "C" void GXGetScissor(); extern "C" void _savegpr_23(); extern "C" void _savegpr_24(); extern "C" void _savegpr_25(); @@ -423,13 +189,8 @@ extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void strcmp(); -extern "C" void strcpy(); extern "C" extern void* __vt__12dDlst_base_c[3]; extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_fmapHIO[1188]; -extern "C" extern u8 g_meter2_info[248]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" u8 m_midnaActor__9daPy_py_c[4]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; @@ -438,23 +199,7 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; // Declarations: // -/* ############################################################################################## */ -/* 80396248-80396268 0228A8 0020+00 2/2 0/0 0/0 .rodata cur_tag$3868 */ -SECTION_RODATA static u8 const cur_tag_3868[32] = { - 0x00, 0x66, 0x5F, 0x70, 0x6F, 0x5F, 0x72, 0x75, 0x00, 0x66, 0x5F, 0x70, 0x6F, 0x5F, 0x72, 0x64, - 0x00, 0x66, 0x5F, 0x70, 0x6F, 0x5F, 0x6C, 0x64, 0x00, 0x66, 0x5F, 0x70, 0x6F, 0x5F, 0x6C, 0x75, -}; -COMPILER_STRIP_GATE(0x80396248, &cur_tag_3868); - /* 803965D0-803965D0 022C30 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_803965D0 = "zelda_map_screen_stone_base.blo"; -SECTION_DEAD static char const* const stringBase_803965F0 = "zelda_map_screen_base.blo"; -SECTION_DEAD static char const* const stringBase_8039660A = "zelda_map_screen_base.btk"; -SECTION_DEAD static char const* const stringBase_80396624 = "tt_block8x8.bti"; -SECTION_DEAD static char const* const stringBase_80396634 = "zelda_field_map_point_cursor.blo"; -#pragma pop /* 803BD750-803BD760 01A870 0010+00 2/2 0/0 0/0 .data __vt__17dMenu_Fmap2DTop_c */ SECTION_DATA extern void* __vt__17dMenu_Fmap2DTop_c[4] = { @@ -477,6 +222,14 @@ SECTION_DATA extern void* __vt__18dMenu_Fmap2DBack_c[7 + 1 /* padding */] = { NULL, }; +/* ############################################################################################## */ +/* 80396248-80396268 0228A8 0020+00 2/2 0/0 0/0 .rodata cur_tag$3868 */ +SECTION_RODATA static u8 const cur_tag_3868[32] = { + 0x00, 0x66, 0x5F, 0x70, 0x6F, 0x5F, 0x72, 0x75, 0x00, 0x66, 0x5F, 0x70, 0x6F, 0x5F, 0x72, 0x64, + 0x00, 0x66, 0x5F, 0x70, 0x6F, 0x5F, 0x6C, 0x64, 0x00, 0x66, 0x5F, 0x70, 0x6F, 0x5F, 0x6C, 0x75, +}; +COMPILER_STRIP_GATE(0x80396248, &cur_tag_3868); + /* 804541D0-804541D4 0027D0 0004+00 21/21 0/0 0/0 .sdata2 @3970 */ SECTION_SDATA2 static u8 lit_3970[4] = { 0x00, @@ -491,27 +244,274 @@ SECTION_SDATA2 static f32 lit_3971 = 1.0f; /* 804541D8-804541DC 0027D8 0004+00 2/2 0/0 0/0 .sdata2 @3972 */ SECTION_SDATA2 static f32 lit_3972 = 360.0f; +#pragma push +#pragma force_active on +SECTION_DEAD static char const* const stringBase_803965D0 = "zelda_map_screen_stone_base.blo"; +SECTION_DEAD static char const* const stringBase_803965F0 = "zelda_map_screen_base.blo"; +SECTION_DEAD static char const* const stringBase_8039660A = "zelda_map_screen_base.btk"; +SECTION_DEAD static char const* const stringBase_80396624 = "tt_block8x8.bti"; +SECTION_DEAD static char const* const stringBase_80396634 = "zelda_field_map_point_cursor.blo"; +#pragma pop + /* 801CF56C-801CFCDC 1C9EAC 0770+00 0/0 1/1 0/0 .text __ct__18dMenu_Fmap2DBack_cFv */ +#ifdef NONMATCHING +// Matches with literals +dMenu_Fmap2DBack_c::dMenu_Fmap2DBack_c() { + dMeter2Info_setMapDrugFlag(0); + + for (int i = 0; i < 8; i++) { + mpAreaTex[i] = NULL; + field_0xe8c[i] = 0.0; + field_0xeac[i] = 0.0; + field_0xecc[i] = 0.0; + field_0xeec[i] = 0.0; + field_0xf0c[i] = 0.0; + field_0xf2c[i] = 0.0; + field_0xf4c[i] = 0.0; + field_0xf6c[i] = 0.0; + field_0x1004[i] = 0.0; + field_0x1024[i] = 0.0; + field_0xce8[i].field_0x0 = 0.0; + field_0xce8[i].field_0x4 = 0.0; + field_0xce8[i].field_0x8 = 0.0; + field_0xce8[i].field_0xc = 0.0; + field_0xce8[i].field_0x10 = 0.0; + field_0x121c[i] = 0xff; + field_0x1230[i] = 0xff; + field_0xd8c[i] = 0.0; + field_0xdac[i] = 0.0; + field_0xdcc[i] = 0.0; + field_0xdec[i] = 0.0; + field_0xe0c[i] = 0.0; + field_0xe2c[i] = 0.0; + field_0xe4c[i] = 0.0; + field_0xe6c[i] = 0.0; + } + + for (int i = 0; i < 20; i++) { + field_0x1044[i] = 0.0; + field_0x1094[i] = 0.0; + field_0x10e4[i] = 0.0; + field_0x1134[i] = 0.0; + } + + mpStages = NULL; + field_0xfe0 = 0.0; + field_0xfe4 = 0.0; + field_0xfe8 = 0.0; + field_0xfec = 0.0; + mAllMapScaleRate = 0.0; + field_0xff4 = 0.0; + field_0xff8 = 0.0; + field_0xffc = 0.0; + field_0x1000 = 0.0; + field_0x1184 = 0.0; + field_0x1188 = 0.0; + field_0xf8c = 0.0; + field_0xf90 = 0.0; + field_0xf94 = 1.0; + field_0xf98 = 1.0; + field_0xfa0 = 0.0; + field_0xf9c = getAllMapZoomRate(); + field_0xfa4 = 1.0; + field_0xfa8 = 0.0; + mpBackTex = NULL; + mpSpotTexture = NULL; + field_0xfbc = 0.0; + field_0xfc0 = 0.0; + field_0xfc4 = 0.0; + field_0xcdc = 0; + mpMeterHaihai = NULL; + field_0x122d = 0; + field_0x122e = 0; + field_0x1224 = 0; + field_0x1225 = 0; + field_0xfc8 = 0.0; + field_0xfcc = 0.0; + field_0xfd0 = 0.0; + field_0xfd4 = 0.0; + field_0xfd8 = 0.0; + field_0xfdc = 0.0; + control_ypos = 0.0; + control_xpos = 0.0; + field_0x11b4 = 0.0; + field_0x11b8 = 0.0; + field_0x11bc = 0.0; + field_0x11c0 = 0.0; + field_0x11c4 = 0.0; + field_0x11c8 = 0.0; + field_0x11cc = 0.0; + field_0x11d0 = 0.0; + mRegionFlag = 0; + field_0x1239 = 0; + field_0x1238 = 0; + field_0x1218 = 0; + field_0x121a = 0; + field_0x1226 = 0xff; + field_0x1227 = 0; + field_0x1228 = 0; + field_0x1229 = 0; + field_0x122a = 0; + field_0x122b = 1; + field_0xfb0 = 0.0; + field_0xfb4 = 0.0; + field_0xfb8 = 1.0; + field_0x11d4 = 0.0; + field_0x1190 = 0.0; + field_0x118c = 0.0; + field_0x11a8 = 0.0; + field_0x11a4 = 0.0; + field_0x11b0 = 0.0; + field_0x11ac = 0.0; + field_0x1198 = 0.0; + field_0x1194 = 0.0; + field_0x11d8 = 0.0; + field_0x11dc = 0.0; + field_0x11e0 = 360.0; + field_0x11e4 = 0.0; + field_0x11e8 = 0.0; + field_0x11ec = 0.0; + + field_0x11f0.set(0, 0, 0, 0); + field_0x11f4.set(255, 255, 255, 255); + field_0x11f8.set(0, 0, 0, 0); + field_0x11fc.set(255, 255, 255, 255); + field_0x1200.set(0, 0, 0, 0); + field_0x1204.set(0, 0, 0, 255); + field_0x1208.set(0, 0, 0, 0); + field_0x120c.set(0, 0, 0, 255); + + field_0x1210 = 1.0; + field_0x1214 = 1.0; + mArrowDrawFlag = 1; + field_0x122f = 0; + + initiate(dComIfGp_getFmapResArchive()); + + mpBackScreen = new J2DScreen(); + JUT_ASSERT(238, mpBackScreen != 0); + + bool fg = mpBackScreen->setPriority("zelda_map_screen_stone_base.blo", 0x20000, + dComIfGp_getFmapResArchive()); + JUT_ASSERT(242, fg != false); + + dPaneClass_showNullPane(mpBackScreen); + + mpBaseScreen = new J2DScreen(); + JUT_ASSERT(248, mpBaseScreen != 0) + + fg = mpBaseScreen->setPriority("zelda_map_screen_base.blo", 0x20000, + dComIfGp_getFmapResArchive()); + JUT_ASSERT(252, fg != false); + + dPaneClass_showNullPane(mpBaseScreen); + + mpBaseAnm = J2DAnmLoaderDataBase::load( + JKRGetNameResource("zelda_map_screen_base.btk", dComIfGp_getFmapResArchive())); + mpBaseAnm->searchUpdateMaterialID(mpBaseScreen); + + field_0xfac = 0.0; + + mpBaseRoot = new CPaneMgrAlphaMorf(mpBaseScreen, 'ROOT', 2, NULL); + JUT_ASSERT(264, mpBaseRoot != 0); + + mpMapArea = new CPaneMgr(mpBaseScreen, 'center_n', 0, NULL); + JUT_ASSERT(269, mpMapArea != 0); + + mpMapBlack = new CPaneMgr(mpBaseScreen, 'map_blak', 0, NULL); + JUT_ASSERT(273, mpMapBlack != 0); + + mpMeterHaihai = new dMeterHaihai_c(1); + JUT_ASSERT(277, mpMeterHaihai != 0); + + ResTIMG* backTexResource = + (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti"); + mpBackTex = new J2DPicture(backTexResource); + JUT_ASSERT(282, mpBackTex != 0); + + mpBackTex->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255)); + mpBackTex->setAlpha(0); + + mpPointScreen = new J2DScreen(); + JUT_ASSERT(293, mpPointScreen != 0); + + fg = mpPointScreen->setPriority("zelda_field_map_point_cursor.blo", 0x20000, + dComIfGp_getFmapResArchive()); + JUT_ASSERT(252, fg != false); + + dPaneClass_showNullPane(mpPointScreen); + + mpPointParent = new CPaneMgr(mpPointScreen, 'f_po_n', 2, NULL); + JUT_ASSERT(301, mpPointParent != 0); + + mpPointParent->scale(g_fmapHIO.mCursorScale, g_fmapHIO.mCursorScale); + + static const u64 cur_tag[4] = {'f_po_ru', 'f_po_rd', 'f_po_ld', 'f_po_lu'}; + + for (int i = 0; i < 4; i++) { + J2DPicture* picture = static_cast(mpPointScreen->search(cur_tag[i])); + picture->setBlackWhite(g_fmapHIO.mCursorBlack, g_fmapHIO.mCursorWhite); + } + + dMeter2Info_set2DWidth(getMapScissorAreaSizeX()); + dMeter2Info_set2DHeight(getMapScissorAreaSizeY()); + dMeter2Info_set2DPosH(getMapScissorAreaLX()); + dMeter2Info_set2DPosV(getMapScissorAreaLY()); + setDebugData(NULL, NULL, 0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dMenu_Fmap2DBack_c::dMenu_Fmap2DBack_c() { - nofralloc +extern "C" asm void __ct__18dMenu_Fmap2DBack_cFv(){nofralloc #include "asm/d/menu/d_menu_fmap2D/__ct__18dMenu_Fmap2DBack_cFv.s" } #pragma pop +#endif /* 801CFCDC-801CFF34 1CA61C 0258+00 2/1 0/0 0/0 .text __dt__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMenu_Fmap2DBack_c::~dMenu_Fmap2DBack_c() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/__dt__18dMenu_Fmap2DBack_cFv.s" -} -#pragma pop +dMenu_Fmap2DBack_c::~dMenu_Fmap2DBack_c() { + delete mpBackScreen; + mpBackScreen = NULL; + + delete mpBaseScreen; + mpBaseScreen = NULL; + + delete mpBaseAnm; + mpBaseAnm = NULL; + + delete mpBaseRoot; + mpBaseRoot = NULL; + + delete mpMapArea; + mpMapArea = NULL; + + delete mpMapBlack; + mpMapBlack = NULL; + + delete mpMeterHaihai; + mpMeterHaihai = NULL; + + delete mpBackTex; + mpBackTex = NULL; + + delete mpPointScreen; + mpPointScreen = NULL; + + delete mpPointParent; + mpPointParent = NULL; + + for (int i = 0; i < 8; i++) { + if (mpAreaTex[i] != NULL) { + delete mpAreaTex[i]; + mpAreaTex[i] = NULL; + } + } + + deleteSpotPane(); + dMeter2Info_setMapDrugFlag(0); +} -/* ############################################################################################## */ /* 80396268-80396288 0228C8 0020+00 1/1 0/0 0/0 .rodata cur_tag$4092 */ SECTION_RODATA static u8 const cur_tag_4092[32] = { 0x00, 0x66, 0x5F, 0x70, 0x6F, 0x5F, 0x72, 0x75, 0x00, 0x66, 0x5F, 0x70, 0x6F, 0x5F, 0x72, 0x64, @@ -543,15 +543,180 @@ SECTION_SDATA2 static f32 lit_4205 = 6.0f; /* 804541F8-80454200 0027F8 0008+00 4/4 0/0 0/0 .sdata2 @4207 */ SECTION_SDATA2 static f64 lit_4207 = 4503599627370496.0 /* cast u32 to float */; +/* ############################################################################################## */ + /* 801CFF34-801D0804 1CA874 08D0+00 1/0 0/0 0/0 .text draw__18dMenu_Fmap2DBack_cFv */ +#ifdef NONMATCHING +// Matches with literals +void dMenu_Fmap2DBack_c::draw() { + calcBlink(); + + J2DGrafContext* grafPort = dComIfGp_getCurrentGrafPort(); + + grafPort->setup2D(); + + u32 scissorLeft, scissorTop, scissorWidth, scissorHeight; + GXGetScissor(&scissorLeft, &scissorTop, &scissorWidth, &scissorHeight); + + grafPort->scissor(field_0xfbc, 0.0f, 608.0f, 448.0f); + grafPort->setScissor(); + + mpBackTex->setBlackWhite(field_0x1208, field_0x120c); + mpBackTex->setAlpha(field_0xfc4 * 255.0f * g_fmapHIO.mBackgroundAlpha); + mpBackTex->draw(field_0xfbc + mDoGph_gInf_c::getMinXF(), + field_0xfc0 + mDoGph_gInf_c::getMinYF(), mDoGph_gInf_c::getWidthF(), + mDoGph_gInf_c::getHeightF(), false, false, false); + + mpBackScreen->draw(field_0xfbc, field_0xfc0, grafPort); + mpBaseScreen->draw(field_0xfbc, field_0xfc0, grafPort); + + Mtx mtx; + Vec vec1 = mpMapArea->getGlobalVtx(&mtx, 0, false, 0); + + Vec vec2 = mpMapArea->getGlobalVtx(&mtx, 3, false, 0); + + f32 width = mDoGph_gInf_c::getWidthF() / 608.0f; + f32 height = mDoGph_gInf_c::getHeightF() / 448.0f; + + grafPort->scissor(field_0xfbc + ((vec1.x - mDoGph_gInf_c::getMinXF()) / width), + field_0xfc0 + (vec1.y / height), (vec2.x - vec1.x) / width, + (vec2.y - vec1.y) / height); + + grafPort->setScissor(); + + field_0x11dc = (field_0xfbc + getMapScissorAreaLX()) + (getMapScissorAreaSizeRealX() * 0.5f); + + if (g_fmapHIO.mRangeCheck && g_fmapHIO.mRangeCheckDrawPriority) { + drawDebugRegionArea(); + } + + regionTextureDraw(); + + if (g_fmapHIO.mRangeCheck && g_fmapHIO.mRangeCheckDrawPriority) { + drawDebugStageArea(); + } + + if (field_0x1239 && mpSpotTexture) { + if (g_fmapHIO.mDisplayRegionGrid && g_fmapHIO.mRegionGridWidth > 0.0f) { + regionGridDraw(); + } + + stageTextureDraw(); + + if (g_fmapHIO.mDisplayStageOrigin) { + stageOriginDraw(); + } + } + + if (g_fmapHIO.mDisplayRegionOrigin) { + regionOriginDraw(); + } + + if (g_fmapHIO.mDisplayWorldGrid && g_fmapHIO.mWorldGridWidth > 0.0f) { + worldGridDraw(); + } + + if (g_fmapHIO.mDisplayWorldOrigin) { + worldOriginDraw(); + } + + if (g_fmapHIO.mScrollRangeDisplay) { + scrollAreaDraw(); + } + + blinkMove(30); + moveLightDropAnime(); + setCenterPosX(field_0x11dc, 1); + drawIcon(field_0xfbc, field_0xfc0, field_0xfc4, field_0xfa8 * field_0x11d8); + + if (g_fmapHIO.mRangeCheck && !g_fmapHIO.mRangeCheckDrawPriority) { + drawDebugRegionArea(); + } + + grafPort->scissor(scissorLeft, scissorTop, scissorWidth, scissorHeight); + grafPort->setScissor(); + + if (isArrowDrawFlag()) { + f32 fVar2 = 0.0f; + f32 fVar3 = 0.0f; + f32 fVar4, fVar5; + + if (field_0xfa0 > 1.0f && field_0xfa0 < 2.0f) { + f32 tmp = 2.0f - field_0xfa0; + if (field_0x11a4 != 0.0f) { + fVar2 = field_0x11a4 * tmp; + } + if (field_0x11a8 != 0.0f) { + fVar3 = field_0x11a8 * tmp; + } + fVar4 = field_0x11ac; + fVar5 = field_0x11b0; + } else { + fVar4 = field_0xfc8; + fVar5 = field_0xfcc; + } + + calcAllMapPos2D((field_0x118c + control_ypos + fVar2) - fVar4, + (field_0x1190 + control_xpos + fVar3) - fVar5, &field_0x1194, + &field_0x1198); + + field_0x11e0 -= g_fmapHIO.mCursorSpeed; + + if (field_0x11e0 < 0.0f) { + field_0x11e0 += 360.0f; + } + + mpPointParent->getPanePtr()->rotate(mpPointParent->getSizeX() / 2.0f, + mpPointParent->getSizeY() / 2.0f, ROTATE_Z, + field_0x11e0); + + if (g_fmapHIO.mCursorDebugON) { + mpPointParent->scale(g_fmapHIO.mCursorScale, g_fmapHIO.mCursorScale); + + static const u64 cur_tag[4] = {'f_po_ru', 'f_po_rd', 'f_po_ld', 'f_po_lu'}; + + for (int i = 0; i < 4; i++) { + J2DPicture* picture = static_cast(mpPointScreen->search(cur_tag[i])); + picture->setBlackWhite(g_fmapHIO.mCursorBlack, g_fmapHIO.mCursorWhite); + } + } + + mpPointParent->setAlphaRate(field_0x11d4 * field_0x11d8); + mpPointParent->translate(field_0x1194 + field_0xfbc, field_0x1198 + field_0xfc0); + mpPointScreen->draw(0.0f, 0.0f, grafPort); + } + + if (g_fmapHIO.mDisplayReferenceArea) { + J2DDrawFrame(field_0xfbc + getMapAreaGlobalPosX(), field_0xfc0 + getMapAreaGlobalPosY(), + getMapAreaSizeX(), getMapAreaSizeY(), JUtility::TColor(255, 255, 255, 255), 6); + J2DFillBox(getMapAreaGlobalCenterPosX() - 3.0f, getMapAreaGlobalCenterPosY() - 3.0f, 6.0f, + 6.0f, JUtility::TColor(255, 255, 255, 255)); + } + + if (field_0x122d) { + mpMeterHaihai->drawHaihai(field_0x122d); + field_0x122d = 0; + } + + if (g_fmapHIO.mRangeCheck && !g_fmapHIO.mRangeCheckDrawPriority) { + drawDebugStageArea(); + } + + mpBackTex->setBlackWhite(field_0x1208, field_0x120c); + mpBackTex->setAlpha((field_0xfc4 * 255.0f) * g_fmapHIO.mBackgroundFrontAlpha * field_0x11e4); + mpBackTex->draw(field_0xfbc + mDoGph_gInf_c::getMinXF(), + field_0xfc0 + mDoGph_gInf_c::getMinYF(), mDoGph_gInf_c::getWidthF(), + mDoGph_gInf_c::getHeightF(), false, false, false); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::draw() { - nofralloc +asm void dMenu_Fmap2DBack_c::draw(){nofralloc #include "asm/d/menu/d_menu_fmap2D/draw__18dMenu_Fmap2DBack_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80454200-80454208 002800 0004+04 4/4 0/0 0/0 .sdata2 @4260 */ @@ -563,6 +728,82 @@ SECTION_SDATA2 static f32 lit_4260[1 + 1 /* padding */] = { /* 801D0804-801D0AC8 1CB144 02C4+00 0/0 1/1 0/0 .text * setRegionTexData__18dMenu_Fmap2DBack_cFUcP7ResTIMGfffffffff */ +#ifdef NONMATCHING +// Matches with literals +void dMenu_Fmap2DBack_c::setRegionTexData(u8 i_areaType, ResTIMG* i_timg, f32 param_2, f32 param_3, + f32 param_4, f32 param_5, f32 param_6, f32 param_7, + f32 param_8, f32 param_9, f32 param_10) { + if (param_6 == 0.0f) { + param_6 = 100.0f; + } + + mpAreaTex[i_areaType] = new J2DPicture(i_timg); + JUT_ASSERT(763, mpAreaTex[i_areaType] != 0); + + field_0x1004[i_areaType] = param_2; + field_0x1024[i_areaType] = param_3; + field_0xce8[i_areaType].field_0x10 = param_6 * 100.0f; + + f32 width = i_timg->width; + f32 height = i_timg->height; + + f32 tmp1 = (field_0x1004[i_areaType] + param_4) - + ((width * 0.5f) * field_0xce8[i_areaType].field_0x10); + f32 tmp2 = (field_0x1024[i_areaType] + param_5) - + ((height * 0.5f) * field_0xce8[i_areaType].field_0x10); + f32 tmp3 = (field_0x1004[i_areaType] + param_4) + + ((width * 0.5f) * field_0xce8[i_areaType].field_0x10); + f32 tmp4 = (field_0x1024[i_areaType] + param_5) + + ((height * 0.5f) * field_0xce8[i_areaType].field_0x10); + + field_0xce8[i_areaType].field_0x0 = tmp1; + field_0xce8[i_areaType].field_0x4 = tmp2; + field_0xce8[i_areaType].field_0x8 = tmp3; + field_0xce8[i_areaType].field_0xc = tmp4; + + field_0xd8c[i_areaType] = param_7; + field_0xdac[i_areaType] = param_8; + field_0xdcc[i_areaType] = param_9; + field_0xdec[i_areaType] = param_10; + + bool bVar13 = false; + + field_0xfe0 = 0.0f; + field_0xfe4 = 0.0f; + field_0xfe8 = 0.0f; + field_0xfec = 0.0f; + + bool bVar14 = false; + for (int i = 0; i < 8; i++) { + if (mpAreaTex[i] != NULL) { + if (!bVar13) { + field_0xfe0 = field_0xce8[i].field_0x0; + field_0xfe4 = field_0xce8[i].field_0x4; + field_0xfe8 = field_0xce8[i].field_0x8; + field_0xfec = field_0xce8[i].field_0xc; + bVar13 = true; + } else { + if (field_0xfe0 > field_0xce8[i].field_0x0) { + field_0xfe0 = field_0xce8[i].field_0x0; + } + if (field_0xfe4 > field_0xce8[i].field_0x4) { + field_0xfe4 = field_0xce8[i].field_0x4; + } + if (field_0xfe8 < field_0xce8[i].field_0x8) { + field_0xfe8 = field_0xce8[i].field_0x8; + } + if (field_0xfec < field_0xce8[i].field_0xc) { + field_0xfec = field_0xce8[i].field_0xc; + } + } + } + if ((!bVar14) && (field_0x1230[i] == 0xff)) { + field_0x1230[i] = i_areaType; + bVar14 = true; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -573,30 +814,66 @@ asm void dMenu_Fmap2DBack_c::setRegionTexData(u8 param_0, ResTIMG* param_1, f32 #include "asm/d/menu/d_menu_fmap2D/setRegionTexData__18dMenu_Fmap2DBack_cFUcP7ResTIMGfffffffff.s" } #pragma pop +#endif /* 801D0AC8-801D0BF8 1CB408 0130+00 1/1 1/1 0/0 .text calcAllMapPos__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::calcAllMapPos() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/calcAllMapPos__18dMenu_Fmap2DBack_cFv.s" +void dMenu_Fmap2DBack_c::calcAllMapPos() { + bool set = false; + calcAllMapScaleRate(); + for (int i = 0; i < 8; i = i + 1) { + if (mpAreaTex[i] != NULL) { + f32 tmp1, tmp2, tmp3, tmp4; + + calcAllMapPos2DFirst(field_0xce8[i].field_0x0, field_0xce8[i].field_0x4, &tmp1, &tmp2); + calcAllMapPos2DFirst(field_0xce8[i].field_0x8, field_0xce8[i].field_0xc, &tmp3, &tmp4); + field_0xe8c[i] = tmp1; + field_0xeac[i] = tmp2; + field_0xecc[i] = tmp3 - tmp1; + field_0xeec[i] = tmp4 - tmp2; + + calcAllMapPos2DFirst(field_0xd8c[i], field_0xdac[i], &field_0xe0c[i], &field_0xe2c[i]); + calcAllMapPos2DFirst(field_0xdcc[i], field_0xdec[i], &field_0xe4c[i], &field_0xe6c[i]); + + onShowRegionFlag(i); + + if (!set) { + set = true; + calcRenderingScale(); + calcRenderingPos(); + } + } + } } -#pragma pop /* 801D0BF8-801D0C6C 1CB538 0074+00 1/1 0/0 0/0 .text calcAllMapScaleRate__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::calcAllMapScaleRate() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/calcAllMapScaleRate__18dMenu_Fmap2DBack_cFv.s" +f32 dMenu_Fmap2DBack_c::calcAllMapScaleRate() { + f32 f1 = field_0xfe8 - field_0xfe0; + f32 f2 = field_0xfec - field_0xfe4; + f32 f31 = f1; + + if (f1 < f2) { + f31 = f2; + } + + mAllMapScaleRate = getMapAreaSizeX() / f31; + + return mAllMapScaleRate; } -#pragma pop /* 801D0C6C-801D0D18 1CB5AC 00AC+00 1/1 0/0 0/0 .text * calcAllMapPos2DFirst__18dMenu_Fmap2DBack_cFffPfPf */ +#ifdef NONMATCHING +// Matches with literals +void dMenu_Fmap2DBack_c::calcAllMapPos2DFirst(f32 param_0, f32 param_1, f32* param_2, + f32* param_3) { + f32 tmp1 = (mAllMapScaleRate * (param_0 - (field_0xfe8 + field_0xfe0) * 0.5f)); + f32 tmp2 = (mAllMapScaleRate * (param_1 - (field_0xfec + field_0xfe4) * 0.5f)); + + *param_2 = (float)(tmp1 + getMapAreaGlobalCenterPosX()); + *param_3 = (float)(tmp2 + getMapAreaGlobalCenterPosY()); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -606,32 +883,47 @@ asm void dMenu_Fmap2DBack_c::calcAllMapPos2DFirst(f32 param_0, f32 param_1, f32* #include "asm/d/menu/d_menu_fmap2D/calcAllMapPos2DFirst__18dMenu_Fmap2DBack_cFffPfPf.s" } #pragma pop +#endif /* 801D0D18-801D0D50 1CB658 0038+00 13/13 1/1 0/0 .text * calcAllMapPos2D__18dMenu_Fmap2DBack_cFffPfPf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::calcAllMapPos2D(f32 param_0, f32 param_1, f32* param_2, f32* param_3) { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/calcAllMapPos2D__18dMenu_Fmap2DBack_cFffPfPf.s" +void dMenu_Fmap2DBack_c::calcAllMapPos2D(f32 param_0, f32 param_1, f32* param_2, f32* param_3) { + calcAllMapPos2D(param_0, param_1, param_2, param_3, field_0xf0c[field_0x1227], + field_0xf2c[field_0x1227], field_0xf9c); } -#pragma pop /* 801D0D50-801D0E00 1CB690 00B0+00 0/0 1/1 0/0 .text * calcAllMapPos2D__18dMenu_Fmap2DBack_cFPCcffPfPf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::calcAllMapPos2D(char const* param_0, f32 param_1, f32 param_2, - f32* param_3, f32* param_4) { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/calcAllMapPos2D__18dMenu_Fmap2DBack_cFPCcffPfPf.s" +void dMenu_Fmap2DBack_c::calcAllMapPos2D(char const* param_0, f32 param_1, f32 param_2, + f32* param_3, f32* param_4) { + float tmp1, tmp2; + calcOffset(field_0x1227, param_0, &tmp1, &tmp2); + calcAllMapPos2D(param_1 + tmp1, param_2 + tmp2, param_3, param_4, field_0xf0c[field_0x1227], + field_0xf2c[field_0x1227], field_0xf9c); } -#pragma pop /* 801D0E00-801D0F7C 1CB740 017C+00 3/3 0/0 0/0 .text * calcAllMapPos2D__18dMenu_Fmap2DBack_cFffPfPffff */ +#ifdef NONMATCHING +// Matches with literals +void dMenu_Fmap2DBack_c::calcAllMapPos2D(f32 param_0, f32 param_1, f32* param_2, f32* param_3, + f32 param_4, f32 param_5, f32 param_6) { + getMapAreaSizeX(); + getMapAreaSizeY(); + + f32 tmp1 = (field_0xce8[field_0x1227].field_0x0 + field_0xce8[field_0x1227].field_0x8) * 0.5f; + f32 tmp2 = (field_0xce8[field_0x1227].field_0x4 + field_0xce8[field_0x1227].field_0xc) * 0.5f; + f32 tmp3 = field_0xe8c[field_0x1227] + param_4 + (field_0xecc[field_0x1227] * param_6) * 0.5f; + f32 tmp4 = field_0xeac[field_0x1227] + param_5 + (field_0xeec[field_0x1227] * param_6) * 0.5f; + + f32 scaleRatio = (getPathScale(param_6) / getMapScissorAreaSizeRealY()); + + f32 tmp5 = (param_0 - tmp1) / scaleRatio; + *param_2 = tmp5 + tmp3; + tmp5 = (param_1 - tmp2) / scaleRatio; + *param_3 = tmp5 + tmp4; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -641,9 +933,26 @@ asm void dMenu_Fmap2DBack_c::calcAllMapPos2D(f32 param_0, f32 param_1, f32* para #include "asm/d/menu/d_menu_fmap2D/calcAllMapPos2D__18dMenu_Fmap2DBack_cFffPfPffff.s" } #pragma pop +#endif /* 801D0F7C-801D1094 1CB8BC 0118+00 8/8 3/3 0/0 .text * calcAllMapPosWorld__18dMenu_Fmap2DBack_cFffPfPf */ +#ifdef NONMATCHING +// Matches with literals +void dMenu_Fmap2DBack_c::calcAllMapPosWorld(f32 param_0, f32 param_1, f32* param_2, f32* param_3) { + f32 tmp1 = (field_0xce8[field_0x1227].field_0x0 + field_0xce8[field_0x1227].field_0x8) * 0.5f; + f32 tmp2 = (field_0xce8[field_0x1227].field_0x4 + field_0xce8[field_0x1227].field_0xc) * 0.5f; + f32 tmp3 = (param_0 - ((field_0xe8c[field_0x1227] + field_0xf0c[field_0x1227]) + + field_0xecc[field_0x1227] * field_0xf9c * 0.5f)); + f32 tmp4 = (param_1 - ((field_0xeac[field_0x1227] + field_0xf2c[field_0x1227]) + + field_0xeec[field_0x1227] * field_0xf9c * 0.5f)); + + f32 tmp5 = field_0xf98 / getMapScissorAreaSizeRealY(); + + *param_2 = tmp1 + (tmp3 * tmp5); + *param_3 = tmp2 + (tmp4 * tmp5); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -653,30 +962,91 @@ asm void dMenu_Fmap2DBack_c::calcAllMapPosWorld(f32 param_0, f32 param_1, f32* p #include "asm/d/menu/d_menu_fmap2D/calcAllMapPosWorld__18dMenu_Fmap2DBack_cFffPfPf.s" } #pragma pop +#endif /* 801D1094-801D10F4 1CB9D4 0060+00 0/0 1/1 0/0 .text setSpotPane__18dMenu_Fmap2DBack_cFP7ResTIMG */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::setSpotPane(ResTIMG* param_0) { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/setSpotPane__18dMenu_Fmap2DBack_cFP7ResTIMG.s" +void dMenu_Fmap2DBack_c::setSpotPane(ResTIMG* i_timg) { + if (mpSpotTexture == NULL) { + mpSpotTexture = new J2DPicture(i_timg); + JUT_ASSERT(1169, mpSpotTexture != 0); + } } -#pragma pop /* 801D10F4-801D1148 1CBA34 0054+00 1/1 1/1 0/0 .text deleteSpotPane__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::deleteSpotPane() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/deleteSpotPane__18dMenu_Fmap2DBack_cFv.s" +void dMenu_Fmap2DBack_c::deleteSpotPane() { + if (mpSpotTexture != NULL) { + delete mpSpotTexture; + mpSpotTexture = NULL; + } } -#pragma pop /* 801D1148-801D1478 1CBA88 0330+00 0/0 8/8 0/0 .text zoomMapCalc__18dMenu_Fmap2DBack_cFf */ +#ifdef NONMATCHING +// Matches with literals +void dMenu_Fmap2DBack_c::zoomMapCalc(f32 param_0) { + field_0xfa0 = param_0; + field_0xfa8 = param_0; + field_0xf9c = getAllMapZoomRate() + + (param_0 * (getRegionMapZoomRate(field_0x1227) - getAllMapZoomRate())); + calcRenderingScale(); + + f32 centerX = getMapAreaGlobalCenterPosX(); + f32 centerY = getMapAreaGlobalCenterPosY(); + if (g_fmapHIO.field_0x308 == false) { + f32 dVar12 = field_0xe8c[field_0x1227] + (field_0xecc[field_0x1227] * 0.5f); + f32 dVar11 = field_0xeac[field_0x1227] + (field_0xeec[this->field_0x1227] * 0.5f); + field_0xf0c[field_0x1227] = (dVar12 + (param_0 * (centerX - dVar12)) - + (field_0xecc[field_0x1227] * field_0xf9c * 0.5f)) - + field_0xe8c[field_0x1227]; + field_0xf2c[field_0x1227] = (dVar11 + (param_0 * (centerY - dVar11)) - + (field_0xeec[field_0x1227] * field_0xf9c * 0.5f)) - + field_0xeac[field_0x1227]; + } else { + f32 dVar12 = (field_0xe0c[field_0x1227] + field_0xe4c[field_0x1227]) * 0.5f; + f32 dVar11 = (field_0xe2c[field_0x1227] + field_0xe6c[field_0x1227]) * 0.5f; + + f32 tmp = (field_0xeac[field_0x1227] + (field_0xeec[field_0x1227] * 0.5f)) - dVar11; + + f32 tmp2 = (dVar12 + (param_0 * (centerX - dVar12))); + f32 tmp3 = (((field_0xe8c[field_0x1227] + field_0xecc[field_0x1227] * 0.5f) - dVar12)); + field_0xf0c[field_0x1227] = + (((tmp2 + (tmp3 * field_0xf9c))) - field_0xecc[field_0x1227] * field_0xf9c * 0.5f) - + field_0xe8c[field_0x1227]; + + field_0xf2c[field_0x1227] = + (((dVar11 + (param_0 * (centerY - dVar11))) + tmp * field_0xf9c) - + field_0xeec[field_0x1227] * field_0xf9c * 0.5f) - + field_0xeac[field_0x1227]; + } + + for (int i = 0; i < 8; i++) { + if (i != field_0x1227) { + field_0xf0c[i] = + field_0xf0c[field_0x1227] + + (field_0xe8c[i] - field_0xe8c[field_0x1227]) * (field_0xf9c - getAllMapZoomRate()); + field_0xf2c[i] = + field_0xf2c[field_0x1227] + + (field_0xeac[i] - field_0xeac[field_0x1227]) * (field_0xf9c - getAllMapZoomRate()); + } + } + + if (param_0 == 1.0f) { + for (int i = 0; i < 8; i++) { + field_0xf4c[i] = field_0xf0c[i]; + field_0xf6c[i] = field_0xf2c[i]; + } + } + + calcRenderingPos(); + setSpotCursor(field_0x1229); + + field_0xfb8 = + ((field_0xecc[field_0x1227] + (param_0 * (getMapAreaSizeX() - field_0xecc[field_0x1227]))) / + getMapAreaSizeX()); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -685,8 +1055,90 @@ asm void dMenu_Fmap2DBack_c::zoomMapCalc(f32 param_0) { #include "asm/d/menu/d_menu_fmap2D/zoomMapCalc__18dMenu_Fmap2DBack_cFf.s" } #pragma pop +#endif /* 801D1478-801D1858 1CBDB8 03E0+00 0/0 10/10 0/0 .text zoomMapCalc2__18dMenu_Fmap2DBack_cFf */ +#ifdef NONMATCHING +// Matches with literals +void dMenu_Fmap2DBack_c::zoomMapCalc2(f32 param_0) { + f32 spotZoomRate = getSpotMapZoomRate(); + f32 regionZoomRate = getRegionMapZoomRate(field_0x1227); + field_0xf9c = regionZoomRate + (param_0 * (spotZoomRate - regionZoomRate)); + + if (field_0x118c + control_ypos < field_0xd8c[field_0x1227]) { + if (field_0x11a4 == 0.0f) { + field_0x11a4 = (field_0x118c + control_ypos) - field_0xd8c[field_0x1227]; + } + control_ypos = field_0xd8c[field_0x1227] - field_0x118c; + } else { + if (field_0x118c + control_ypos > field_0xdcc[field_0x1227]) { + if (field_0x11a4 == 0.0f) { + field_0x11a4 = (field_0x118c + control_ypos) - field_0xdcc[field_0x1227]; + } + control_ypos = field_0xdcc[field_0x1227] - field_0x118c; + } + } + + if (field_0x1190 + control_xpos < field_0xdac[field_0x1227]) { + if (field_0x11a8 == 0.0f) { + field_0x11a8 = (field_0x1190 + control_xpos) - field_0xdac[field_0x1227]; + } + control_xpos = field_0xdac[field_0x1227] - this->field_0x1190; + } else { + if (field_0x1190 + control_xpos > field_0xdec[field_0x1227]) { + if (field_0x11a8 == 0.0f) { + field_0x11a8 = (field_0x1190 + control_xpos) - field_0xdec[field_0x1227]; + } + control_xpos = field_0xdec[field_0x1227] - field_0x1190; + } + } + + calcRenderingScale(); + + field_0xfa0 = param_0 + 1.0f; + f32 centerX = getMapAreaGlobalCenterPosX(); + f32 centerY = getMapAreaGlobalCenterPosY(); + if (g_fmapHIO.field_0x308 == false) { + field_0xf0c[field_0x1227] = (centerX - (field_0xecc[field_0x1227] * field_0xf9c * 0.5f)) - + field_0xe8c[field_0x1227]; + field_0xf2c[field_0x1227] = (centerY - (field_0xeec[field_0x1227] * field_0xf9c * 0.5f)) - + field_0xeac[field_0x1227]; + } else { + f32 tmp1 = (field_0xeac[field_0x1227] + (field_0xeec[field_0x1227] * 0.5f)) - + ((field_0xe2c[field_0x1227] + field_0xe6c[field_0x1227]) * 0.5f); + + f32 tmp2 = ((field_0xe8c[field_0x1227] + field_0xecc[field_0x1227] * 0.5f) - + (field_0xe0c[field_0x1227] + field_0xe4c[field_0x1227]) * 0.5f); + + field_0xf0c[field_0x1227] = + ((centerX + (tmp2 * field_0xf9c)) - field_0xecc[field_0x1227] * field_0xf9c * 0.5f) - + field_0xe8c[field_0x1227]; + field_0xf2c[field_0x1227] = + ((centerY + (tmp1 * field_0xf9c)) - field_0xeec[field_0x1227] * field_0xf9c * 0.5f) - + field_0xeac[field_0x1227]; + } + + for (int i = 0; i < 8; i++) { + if (i != field_0x1227) { + field_0xf0c[i] = + field_0xf0c[field_0x1227] + + (field_0xe8c[i] - field_0xe8c[field_0x1227]) * (field_0xf9c - getAllMapZoomRate()); + field_0xf2c[i] = + field_0xf2c[field_0x1227] + + (field_0xeac[i] - field_0xeac[field_0x1227]) * (field_0xf9c - getAllMapZoomRate()); + } + } + + scrollCalc(param_0); + + if (param_0 == 1.0f) { + field_0x11b4 = (field_0x118c + control_ypos) - field_0xfc8; + field_0x11b8 = (field_0x1190 + control_xpos) - field_0xfcc; + field_0x11a4 = 0.0f; + field_0x11a8 = 0.0f; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -695,8 +1147,57 @@ asm void dMenu_Fmap2DBack_c::zoomMapCalc2(f32 param_0) { #include "asm/d/menu/d_menu_fmap2D/zoomMapCalc2__18dMenu_Fmap2DBack_cFf.s" } #pragma pop +#endif /* 801D1858-801D1AA4 1CC198 024C+00 0/0 1/1 0/0 .text zoomMapCalcHIO__18dMenu_Fmap2DBack_cFv */ +#ifdef NONMATCHING +// Matches with literals +void dMenu_Fmap2DBack_c::zoomMapCalcHIO() { + if (field_0xf9c != getSpotMapZoomRate()) { + f32 spotZoomRate = getSpotMapZoomRate(); + f32 regionZoomRate = getRegionMapZoomRate(field_0x1227); + field_0xf9c = getSpotMapZoomRate(); + calcRenderingScale(); + + f32 centerX = getMapAreaGlobalCenterPosX(); + f32 centerY = getMapAreaGlobalCenterPosY(); + if (g_fmapHIO.field_0x308 == false) { + field_0xf0c[field_0x1227] = + (centerX - (field_0xecc[field_0x1227] * field_0xf9c * 0.5f)) - + field_0xe8c[field_0x1227]; + field_0xf2c[field_0x1227] = + (centerY - (field_0xeec[field_0x1227] * field_0xf9c * 0.5f)) - + field_0xeac[field_0x1227]; + } else { + f32 tmp1 = (field_0xeac[field_0x1227] + (field_0xeec[field_0x1227] * 0.5f)) - + ((field_0xe2c[field_0x1227] + field_0xe6c[field_0x1227]) * 0.5f); + + f32 tmp2 = ((field_0xe8c[field_0x1227] + field_0xecc[field_0x1227] * 0.5f) - + (field_0xe0c[field_0x1227] + field_0xe4c[field_0x1227]) * 0.5f); + + field_0xf0c[field_0x1227] = ((centerX + (tmp2 * field_0xf9c)) - + field_0xecc[field_0x1227] * field_0xf9c * 0.5f) - + field_0xe8c[field_0x1227]; + field_0xf2c[field_0x1227] = ((centerY + (tmp1 * field_0xf9c)) - + field_0xeec[field_0x1227] * field_0xf9c * 0.5f) - + field_0xeac[field_0x1227]; + } + + for (int i = 0; i < 8; i++) { + if (i != field_0x1227) { + field_0xf0c[i] = + field_0xf0c[field_0x1227] + (field_0xe8c[i] - field_0xe8c[field_0x1227]) * + (field_0xf9c - getAllMapZoomRate()); + field_0xf2c[i] = + field_0xf2c[field_0x1227] + (field_0xeac[i] - field_0xeac[field_0x1227]) * + (field_0xf9c - getAllMapZoomRate()); + } + } + + scrollCalc(1.0f); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -705,9 +1206,73 @@ asm void dMenu_Fmap2DBack_c::zoomMapCalcHIO() { #include "asm/d/menu/d_menu_fmap2D/zoomMapCalcHIO__18dMenu_Fmap2DBack_cFv.s" } #pragma pop +#endif /* 801D1AA4-801D1D50 1CC3E4 02AC+00 2/2 0/0 0/0 .text scrollCalc__18dMenu_Fmap2DBack_cFf */ +#ifdef NONMATCHING +// Matches with literals +void dMenu_Fmap2DBack_c::scrollCalc(f32 param_0) { + f32 tmp1, tmp2; + calcAllMapPos2D(field_0x118c + control_ypos, field_0x1190 + control_xpos, &tmp1, &tmp2, + field_0xf4c[field_0x1227], field_0xf6c[field_0x1227], + getRegionMapZoomRate(field_0x1227)); + + f32 centerX = getMapAreaGlobalCenterPosX(); + f32 centerY = getMapAreaGlobalCenterPosY(); + + f32 tmp3, tmp4; + calcAllMapPosWorld(tmp1 + (param_0 * (centerX - tmp1)), tmp2 + (param_0 * (centerY - tmp2)), + &tmp3, &tmp4); + + field_0xfc8 = (field_0x118c + control_ypos) - tmp3; + field_0xfcc = (field_0x1190 + control_xpos) - tmp4; + + field_0x11ac = field_0xfc8; + field_0x11b0 = field_0xfcc; + + if ((((field_0x11a4 != 0.0f) || (field_0x11a8 != 0.0f)) && (field_0xfa0 > 1.0f)) && + (field_0xfa0 < 2.0f)) + { + f32 local_40 = 2.0f - field_0xfa0; + + //!@bug local_44 or local_48 can be uninitialized if field_0x11a4 or field_0x11a8 is not 0 + f32 local_44, local_48; + + if (field_0x11a4 != 0.0f) { + local_44 = field_0x11a4 * local_40; + } + + if (field_0x11a8 != 0.0f) { + local_48 = field_0x11a8 * local_40; + } + + calcAllMapPos2D(field_0x118c + control_ypos + local_44, + field_0x1190 + control_xpos + local_48, &tmp1, &tmp2, + field_0xf4c[field_0x1227], field_0xf6c[field_0x1227], + getRegionMapZoomRate(field_0x1227)); + + f32 local_54, local_58; + calcAllMapPosWorld(tmp1 + (param_0 * (centerX - tmp1)), tmp2 + (param_0 * (centerY - tmp2)), + &local_54, &local_58); + + field_0x11ac = (field_0x118c + control_ypos + local_44) - local_54; + field_0x11b0 = (field_0x1190 + control_xpos + local_48) - local_58; + } + + if (param_0 == 0.0f) { + field_0xfd4 = 0.0f; + field_0xfd0 = 0.0f; + field_0xfdc = 0.0f; + field_0xfd8 = 0.0f; + } else if (param_0 == 1.0f) { + field_0xfd0 = field_0xfc8; + field_0xfd4 = field_0xfcc; + } + + calcRenderingPos(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -716,30 +1281,104 @@ asm void dMenu_Fmap2DBack_c::scrollCalc(f32 param_0) { #include "asm/d/menu/d_menu_fmap2D/scrollCalc__18dMenu_Fmap2DBack_cFf.s" } #pragma pop +#endif /* 801D1D50-801D1D74 1CC690 0024+00 0/0 1/1 0/0 .text mapBlink__18dMenu_Fmap2DBack_cFPs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::mapBlink(s16* param_0) { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/mapBlink__18dMenu_Fmap2DBack_cFPs.s" +void dMenu_Fmap2DBack_c::mapBlink(s16* param_0) { + *param_0 += 1; + if (*param_0 >= 30) { + *param_0 -= 30; + } } -#pragma pop /* 801D1D74-801D1DC4 1CC6B4 0050+00 1/1 5/5 0/0 .text setSpotCursor__18dMenu_Fmap2DBack_cFUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::setSpotCursor(u8 param_0) { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/setSpotCursor__18dMenu_Fmap2DBack_cFUc.s" +void dMenu_Fmap2DBack_c::setSpotCursor(u8 param_0) { + this->field_0x1229 = param_0; + + f32 tmp1, tmp2; + getStageOriginPath(param_0, &tmp1, &tmp2); + calcAllMapPos2D(tmp1, tmp2, &field_0x1184, &field_0x1188); } -#pragma pop /* 801D1DC4-801D2100 1CC704 033C+00 0/0 1/1 0/0 .text * allmap_move2__18dMenu_Fmap2DBack_cFP9STControl */ +#ifdef NONMATCHING +// Matches with literals +void dMenu_Fmap2DBack_c::allmap_move2(STControl* param_0) { + f32 tmp1, tmp2; + calcAllMapPosWorld(getMapScissorAreaLX(), getMapScissorAreaLY(), &tmp1, &tmp2); + + f32 local_50, local_54; + calcAllMapPosWorld(getMapScissorAreaLX() + getMapScissorAreaSizeRealX(), + getMapScissorAreaLY() + getMapScissorAreaSizeRealY(), &local_50, &local_54); + + f32 scrollSpeed1 = g_fmapHIO.mScrollSpeedSlowBound < g_fmapHIO.mScrollSpeedFastBound ? + g_fmapHIO.mScrollSpeedSlowBound : + g_fmapHIO.mScrollSpeedFastBound; + f32 scrollSpeed2 = g_fmapHIO.mScrollSpeedSlowBound > g_fmapHIO.mScrollSpeedFastBound ? + g_fmapHIO.mScrollSpeedSlowBound : + g_fmapHIO.mScrollSpeedFastBound; + + f32 stickValue = param_0->getValueStick(); + if (stickValue >= scrollSpeed1) { + s16 angle = param_0->getAngleStick(); + f32 local_68 = (field_0xfe8 - field_0xfe0); + f32 zoomRate = local_68 / getAllMapZoomRate(); + + f32 speed = ((stickValue < scrollSpeed2 ? g_fmapHIO.mScrollSpeedWorldSlow : + g_fmapHIO.mScrollSpeedWorldFast) / + 100.0f); + + f32 delta_y = (speed * zoomRate) * cM_ssin(angle); + f32 delta_x = (speed * zoomRate) * cM_scos(angle); + + control_ypos = control_ypos + delta_y; + control_xpos = control_xpos + delta_x; + } + + if (field_0x118c + control_ypos < tmp1) { + control_ypos = tmp1 - field_0x118c; + } + + if (field_0x118c + control_ypos > local_50) { + control_ypos = local_50 - field_0x118c; + } + + if (field_0x1190 + control_xpos < tmp2) { + control_xpos = tmp2 - field_0x1190; + } + + if (field_0x1190 + control_xpos > local_54) { + control_xpos = local_54 - field_0x1190; + } + + calcRenderingScale(); + calcRenderingPos(); + calcAllMapPos(); + + f32 local_7c, local_80; + calcAllMapPos2D((field_0x118c + control_ypos) - field_0xfc8, + (field_0x1190 + control_xpos) - field_0xfcc, &local_7c, &local_80); + + field_0x1226 = 0xff; + for (int i = 7; i >= 0; i--) { + int val = field_0x1230[i]; + if (val != 0xff && val != 7) { + const ResTIMG* timg = mpAreaTex[val]->getTexture(0)->getTexInfo(); + bool pixel = dMeter2Info_getPixel( + local_7c, local_80, (field_0xe8c[val] + field_0xf0c[val] + field_0xfbc), + (field_0xeac[val] + field_0xf2c[val] + field_0xfc0), + (field_0xecc[val] * field_0xf9c), (field_0xeec[val] * field_0xf9c), timg); + if (pixel) { + field_0x1226 = val; + } + } + if (field_0x1226 != 0xff) + break; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -748,9 +1387,67 @@ asm void dMenu_Fmap2DBack_c::allmap_move2(STControl* param_0) { #include "asm/d/menu/d_menu_fmap2D/allmap_move2__18dMenu_Fmap2DBack_cFP9STControl.s" } #pragma pop +#endif /* 801D2100-801D241C 1CCA40 031C+00 1/1 3/3 0/0 .text setIcon2DPos__18dMenu_Fmap2DBack_cFUcfffUcb */ +#ifdef NONMATCHING +// Matches with literals +void dMenu_Fmap2DBack_c::setIcon2DPos(u8 param_0, f32 param_1, f32 param_2, f32 param_3, u8 param_4, + bool param_5) { + f32 local_68, local_6c; + + f32 local_70 = field_0xfa0; + u8 uVar9 = 1; + if (param_0 == 17) { + uVar9 = 2; + + f32 local_74, local_78; + calcAllMapPosWorld(getMapScissorAreaCenterPosX(), getMapScissorAreaCenterPosY(), &local_74, + &local_78); + + f32 local_7c, local_80; + calcAllMapPos2D(local_74 + field_0xfc8, local_78 + field_0xfcc, &local_7c, &local_80); + + f32 dVar11 = getMapScissorAreaCenterPosX() - local_7c; + f32 dVar10 = getMapScissorAreaCenterPosY() - local_80; + + if (field_0x1227 + 1 == dComIfGp_getNowLevel()) { + calcAllMapPos2D(param_1 - field_0xfc8, param_2 - field_0xfcc, &local_68, &local_6c); + f32 tmp1 = (dVar10 + (field_0xeac[field_0x1227] + field_0xf2c[field_0x1227])) + + ((field_0xeec[field_0x1227] * field_0xf9c) / 2.0f); + f32 tmp2 = (dVar11 + (field_0xe8c[field_0x1227] + field_0xf0c[field_0x1227])) + + ((field_0xecc[field_0x1227] * field_0xf9c) / 2.0f); + + field_0x11e8 = local_68 - tmp2; + field_0x11ec = local_6c - tmp1; + } else { + f32 tmp1 = (dVar11 + (field_0xe6c[dComIfGp_getNowLevel() + 7] + + field_0xeec[dComIfGp_getNowLevel() + 7])) + + ((field_0xeac[dComIfGp_getNowLevel() + 7] * field_0xf9c) / 2.0f); + f32 tmp2 = (dVar10 + (field_0xe8c[dComIfGp_getNowLevel() + 7] + + field_0xf0c[dComIfGp_getNowLevel() + 7])) + + ((field_0xecc[dComIfGp_getNowLevel() + 7] * field_0xf9c) / 2.0f); + local_68 = tmp1 + (field_0x11e8 * field_0xf9c); + local_6c = tmp2 + (field_0x11ec * field_0xf9c); + } + } else { + calcAllMapPos2D(param_1 - field_0xfc8, param_2 - field_0xfcc, &local_68, &local_6c); + } + + if (!param_5) { + if (param_0 == 1) { + local_70 = (field_0xfa0 * 0.5f) + 0.5f; + uVar9 = 2; + } + + if (param_4 != 0) { + uVar9 = 3; + } + setIconInfo(param_0, local_68, local_6c, 1.0f, param_3, local_70, uVar9); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -760,280 +1457,396 @@ asm void dMenu_Fmap2DBack_c::setIcon2DPos(u8 param_0, f32 param_1, f32 param_2, #include "asm/d/menu/d_menu_fmap2D/setIcon2DPos__18dMenu_Fmap2DBack_cFUcfffUcb.s" } #pragma pop +#endif /* 801D241C-801D2454 1CCD5C 0038+00 0/0 2/2 0/0 .text * setIcon2DPos__18dMenu_Fmap2DBack_cFUcPCcfffUcb */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::setIcon2DPos(u8 param_0, char const* param_1, f32 param_2, f32 param_3, - f32 param_4, u8 param_5, bool param_6) { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/setIcon2DPos__18dMenu_Fmap2DBack_cFUcPCcfffUcb.s" +void dMenu_Fmap2DBack_c::setIcon2DPos(u8 param_0, char const* param_1, f32 param_2, f32 param_3, + f32 param_4, u8 param_5, bool param_6) { + setIcon2DPos(param_0, field_0x1227, param_1, param_2, param_3, param_4, param_5, param_6); } -#pragma pop /* 801D2454-801D2508 1CCD94 00B4+00 1/1 0/0 0/0 .text * setIcon2DPos__18dMenu_Fmap2DBack_cFUcUcPCcfffUcb */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::setIcon2DPos(u8 param_0, u8 param_1, char const* param_2, f32 param_3, - f32 param_4, f32 param_5, u8 param_6, bool param_7) { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/setIcon2DPos__18dMenu_Fmap2DBack_cFUcUcPCcfffUcb.s" +void dMenu_Fmap2DBack_c::setIcon2DPos(u8 param_0, u8 param_1, char const* param_2, f32 param_3, + f32 param_4, f32 param_5, u8 param_6, bool param_7) { + f32 tmp1, tmp2; + calcOffset(param_1, param_2, &tmp1, &tmp2); + + setIcon2DPos(param_0, param_3 + tmp1, param_4 + tmp2, param_5, param_6, param_7); } -#pragma pop /* 801D2508-801D2658 1CCE48 0150+00 1/1 1/1 0/0 .text isShowRegion__18dMenu_Fmap2DBack_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::isShowRegion(int param_0) { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/isShowRegion__18dMenu_Fmap2DBack_cFi.s" +int dMenu_Fmap2DBack_c::isShowRegion(int param_0) { + if (param_0 == 7) { + return 1; + } + + if (g_fmapHIO.mAllRegionsUnlocked) { + if (isShowRegionFlag(param_0)) { + return 1; + } + } else { + if (g_fmapHIO.mDebugRegionBits[param_0] && isShowRegionFlag(param_0)) { + return 1; + } + if (param_0 == 6) { + if (isShowRegionFlag(3) && dComIfGs_isRegionBit(4)) { + return 1; + } + if (dComIfGp_getNowLevel() == 4) { + return 1; + } + return 0; + } + if (isShowRegionFlag(param_0) && dComIfGs_isRegionBit(param_0 + 1)) { + return 1; + } + if (param_0 + 1 == dComIfGp_getNowLevel()) { + return 1; + } + } + + return 0; } -#pragma pop /* 801D2658-801D2668 1CCF98 0010+00 2/2 0/0 0/0 .text getMapAreaGlobalPosX__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapAreaGlobalPosX() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getMapAreaGlobalPosX__18dMenu_Fmap2DBack_cFv.s" +f32 dMenu_Fmap2DBack_c::getMapAreaGlobalPosX() { + return g_fmapHIO.mMapTopLeftPosX; } -#pragma pop /* 801D2668-801D2678 1CCFA8 0010+00 2/2 0/0 0/0 .text getMapAreaGlobalPosY__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapAreaGlobalPosY() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getMapAreaGlobalPosY__18dMenu_Fmap2DBack_cFv.s" +f32 dMenu_Fmap2DBack_c::getMapAreaGlobalPosY() { + return g_fmapHIO.mMapTopLeftPosY; } -#pragma pop /* 801D2678-801D26C8 1CCFB8 0050+00 7/7 1/1 0/0 .text * getMapAreaGlobalCenterPosX__18dMenu_Fmap2DBack_cFv */ +#ifdef NONMATCHING +// Matches with literals +f32 dMenu_Fmap2DBack_c::getMapAreaGlobalCenterPosX() { + return getMapAreaGlobalPosX() + (getMapAreaSizeX() / 2.0f); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapAreaGlobalCenterPosX() { +asm f32 dMenu_Fmap2DBack_c::getMapAreaGlobalCenterPosX() { nofralloc #include "asm/d/menu/d_menu_fmap2D/getMapAreaGlobalCenterPosX__18dMenu_Fmap2DBack_cFv.s" } #pragma pop +#endif /* 801D26C8-801D2718 1CD008 0050+00 7/7 1/1 0/0 .text * getMapAreaGlobalCenterPosY__18dMenu_Fmap2DBack_cFv */ +#ifdef NONMATCHING +// Matches with literals +f32 dMenu_Fmap2DBack_c::getMapAreaGlobalCenterPosY() { + return getMapAreaGlobalPosY() + (getMapAreaSizeY() / 2.0f); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapAreaGlobalCenterPosY() { +asm f32 dMenu_Fmap2DBack_c::getMapAreaGlobalCenterPosY() { nofralloc #include "asm/d/menu/d_menu_fmap2D/getMapAreaGlobalCenterPosY__18dMenu_Fmap2DBack_cFv.s" } #pragma pop +#endif /* 801D2718-801D2728 1CD058 0010+00 8/8 0/0 0/0 .text getMapAreaSizeX__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapAreaSizeX() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getMapAreaSizeX__18dMenu_Fmap2DBack_cFv.s" +f32 dMenu_Fmap2DBack_c::getMapAreaSizeX() { + return g_fmapHIO.mMapScale; } -#pragma pop /* 801D2728-801D2738 1CD068 0010+00 6/6 0/0 0/0 .text getMapAreaSizeY__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapAreaSizeY() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getMapAreaSizeY__18dMenu_Fmap2DBack_cFv.s" +f32 dMenu_Fmap2DBack_c::getMapAreaSizeY() { + return g_fmapHIO.mMapScale; } -#pragma pop /* 801D2738-801D2790 1CD078 0058+00 10/10 0/0 0/0 .text * getMapScissorAreaLX__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapScissorAreaLX() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getMapScissorAreaLX__18dMenu_Fmap2DBack_cFv.s" +f32 dMenu_Fmap2DBack_c::getMapScissorAreaLX() { + Mtx mtx; + Vec vec = mpMapArea->getGlobalVtx(mpMapArea->getPanePtr(), &mtx, 0, false, 0); + return vec.x; } -#pragma pop /* 801D2790-801D27E8 1CD0D0 0058+00 9/9 0/0 0/0 .text getMapScissorAreaLY__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapScissorAreaLY() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getMapScissorAreaLY__18dMenu_Fmap2DBack_cFv.s" +f32 dMenu_Fmap2DBack_c::getMapScissorAreaLY() { + Mtx mtx; + Vec vec = mpMapArea->getGlobalVtx(mpMapArea->getPanePtr(), &mtx, 0, false, 0); + return vec.y; } -#pragma pop /* 801D27E8-801D2860 1CD128 0078+00 2/2 0/0 0/0 .text * getMapScissorAreaSizeX__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapScissorAreaSizeX() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getMapScissorAreaSizeX__18dMenu_Fmap2DBack_cFv.s" +f32 dMenu_Fmap2DBack_c::getMapScissorAreaSizeX() { + f32 scale = mpMapArea->getScaleX(); + + for (J2DPane* pane = mpMapArea->getPanePtr()->getParentPane(); pane != NULL; + pane = pane->getParentPane()) + { + scale *= pane->getScaleX(); + } + + return scale * mpMapArea->getSizeX(); } -#pragma pop /* 801D2860-801D2880 1CD1A0 0020+00 8/8 0/0 0/0 .text * getMapScissorAreaSizeRealX__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapScissorAreaSizeRealX() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getMapScissorAreaSizeRealX__18dMenu_Fmap2DBack_cFv.s" +f32 dMenu_Fmap2DBack_c::getMapScissorAreaSizeRealX() { + return getMapScissorAreaSizeX(); } -#pragma pop /* 801D2880-801D28D0 1CD1C0 0050+00 3/3 0/0 0/0 .text * getMapScissorAreaCenterPosX__18dMenu_Fmap2DBack_cFv */ +#ifdef NONMATCHING +// Matches with literals +f32 dMenu_Fmap2DBack_c::getMapScissorAreaCenterPosX() { + return getMapScissorAreaLX() + (getMapScissorAreaSizeRealX() / 2.0f); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapScissorAreaCenterPosX() { +asm f32 dMenu_Fmap2DBack_c::getMapScissorAreaCenterPosX() { nofralloc #include "asm/d/menu/d_menu_fmap2D/getMapScissorAreaCenterPosX__18dMenu_Fmap2DBack_cFv.s" } #pragma pop +#endif /* 801D28D0-801D2920 1CD210 0050+00 3/3 0/0 0/0 .text * getMapScissorAreaCenterPosY__18dMenu_Fmap2DBack_cFv */ +#ifdef NONMATCHING +// Matches with literals +f32 dMenu_Fmap2DBack_c::getMapScissorAreaCenterPosY() { + return getMapScissorAreaLY() + (getMapScissorAreaSizeRealY() / 2.0f); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapScissorAreaCenterPosY() { +asm f32 dMenu_Fmap2DBack_c::getMapScissorAreaCenterPosY() { nofralloc #include "asm/d/menu/d_menu_fmap2D/getMapScissorAreaCenterPosY__18dMenu_Fmap2DBack_cFv.s" } #pragma pop +#endif /* 801D2920-801D2998 1CD260 0078+00 2/2 0/0 0/0 .text * getMapScissorAreaSizeY__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapScissorAreaSizeY() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getMapScissorAreaSizeY__18dMenu_Fmap2DBack_cFv.s" +f32 dMenu_Fmap2DBack_c::getMapScissorAreaSizeY() { + f32 scale = mpMapArea->getScaleY(); + + for (J2DPane* pane = mpMapArea->getPanePtr()->getParentPane(); pane != NULL; + pane = pane->getParentPane()) + { + scale *= pane->getScaleY(); + } + + return scale * mpMapArea->getSizeY(); } -#pragma pop /* 801D2998-801D29B8 1CD2D8 0020+00 11/11 0/0 0/0 .text * getMapScissorAreaSizeRealY__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getMapScissorAreaSizeRealY() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getMapScissorAreaSizeRealY__18dMenu_Fmap2DBack_cFv.s" +f32 dMenu_Fmap2DBack_c::getMapScissorAreaSizeRealY() { + return getMapScissorAreaSizeY(); } -#pragma pop /* 801D29B8-801D2A34 1CD2F8 007C+00 6/6 0/0 0/0 .text calcRenderingPos__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::calcRenderingPos() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/calcRenderingPos__18dMenu_Fmap2DBack_cFv.s" +void dMenu_Fmap2DBack_c::calcRenderingPos() { + calcAllMapPosWorld(getMapScissorAreaCenterPosX(), getMapScissorAreaCenterPosY(), &field_0xf8c, + &field_0xf90); + + field_0xf8c += field_0xfc8; + field_0xf90 += field_0xfcc; } -#pragma pop /* 801D2A34-801D2AC8 1CD374 0094+00 7/7 0/0 0/0 .text calcRenderingScale__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::calcRenderingScale() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/calcRenderingScale__18dMenu_Fmap2DBack_cFv.s" +void dMenu_Fmap2DBack_c::calcRenderingScale() { + f32 xScale = (field_0xfe8 - field_0xfe0) / getMapAreaSizeX(); + f32 yScale = (field_0xfec - field_0xfe4) / getMapAreaSizeY(); + + f32 scale = xScale; + if (xScale < yScale) { + scale = yScale; + } + + field_0xf94 = scale / field_0xf9c; + field_0xf98 = field_0xf94 * getMapScissorAreaSizeRealY(); } -#pragma pop /* 801D2AC8-801D2B5C 1CD408 0094+00 1/1 0/0 0/0 .text getPathScale__18dMenu_Fmap2DBack_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getPathScale(f32 param_0) { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getPathScale__18dMenu_Fmap2DBack_cFf.s" +f32 dMenu_Fmap2DBack_c::getPathScale(f32 i_zoom) { + JUT_ASSERT(2204, i_zoom != 0.0f); + + f32 xScale = (field_0xfe8 - field_0xfe0) / getMapAreaSizeX(); + f32 yScale = (field_0xfec - field_0xfe4) / getMapAreaSizeY(); + + f32 scale = xScale; + if (xScale < yScale) { + scale = yScale; + } + + return (scale * getMapScissorAreaSizeRealY()) / i_zoom; } -#pragma pop /* 801D2B5C-801D2B64 1CD49C 0008+00 6/6 0/0 0/0 .text getAllMapZoomRate__18dMenu_Fmap2DBack_cFv */ +#ifdef NONMATCHING +// Matches with literals +f32 dMenu_Fmap2DBack_c::getAllMapZoomRate() { + return 1.0f; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getAllMapZoomRate() { +asm f32 dMenu_Fmap2DBack_c::getAllMapZoomRate() { nofralloc #include "asm/d/menu/d_menu_fmap2D/getAllMapZoomRate__18dMenu_Fmap2DBack_cFv.s" } #pragma pop +#endif /* 801D2B64-801D2C4C 1CD4A4 00E8+00 6/6 0/0 0/0 .text getRegionMapZoomRate__18dMenu_Fmap2DBack_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getRegionMapZoomRate(int param_0) { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getRegionMapZoomRate__18dMenu_Fmap2DBack_cFi.s" +f32 dMenu_Fmap2DBack_c::getRegionMapZoomRate(int param_0) { + f32 tmp1, tmp2; + + if (g_fmapHIO.field_0x308 == false) { + tmp1 = getMapAreaSizeX() / field_0xecc[param_0]; + tmp2 = getMapAreaSizeY() / field_0xeec[param_0]; + } else { + tmp1 = getMapAreaSizeX() / (field_0xe4c[field_0x1227] - field_0xe0c[field_0x1227]); + tmp2 = getMapAreaSizeY() / (field_0xe6c[field_0x1227] - field_0xe2c[field_0x1227]); + } + + if (tmp1 < tmp2) { + field_0x122e = 0; + tmp2 = tmp1; + } else { + field_0x122e = 1; + } + + return tmp2; } -#pragma pop /* 801D2C4C-801D2C88 1CD58C 003C+00 4/4 0/0 0/0 .text getSpotMapZoomRate__18dMenu_Fmap2DBack_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getSpotMapZoomRate() { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getSpotMapZoomRate__18dMenu_Fmap2DBack_cFv.s" +f32 dMenu_Fmap2DBack_c::getSpotMapZoomRate() { + f32 tmp1 = field_0xfe8 - field_0xfe0; + f32 tmp2 = field_0xfec - field_0xfe4; + + f32 tmp3 = tmp1; + if (tmp1 < tmp2) { + tmp3 = tmp2; + } + + return tmp3 / g_fmapHIO.mRegionZoomRange; } -#pragma pop /* 801D2C88-801D2CC8 1CD5C8 0040+00 1/1 0/0 0/0 .text * getStageOriginPath__18dMenu_Fmap2DBack_cFUcPfPf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::getStageOriginPath(u8 param_0, f32* param_1, f32* param_2) { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/getStageOriginPath__18dMenu_Fmap2DBack_cFUcPfPf.s" +void dMenu_Fmap2DBack_c::getStageOriginPath(u8 param_0, f32* param_1, f32* param_2) { + for (int i = 0; i < 20; i++) { + if (i == param_0) { + *param_1 = field_0x10e4[i]; + *param_2 = field_0x1134[i]; + break; + } + } } -#pragma pop /* 801D2CC8-801D2DA8 1CD608 00E0+00 4/4 0/0 0/0 .text calcOffset__18dMenu_Fmap2DBack_cFUcPCcPfPf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::calcOffset(u8 param_0, char const* param_1, f32* param_2, - f32* param_3) { - nofralloc -#include "asm/d/menu/d_menu_fmap2D/calcOffset__18dMenu_Fmap2DBack_cFUcPCcPfPf.s" +void dMenu_Fmap2DBack_c::calcOffset(u8 param_0, char const* param_1, f32* param_2, f32* param_3) { + if (mpStages != NULL) { + Stage_c::Stage_c_data* data = mpStages->field_0x4; + for (int i = 0; i < field_0x1225; i++) { + if (param_0 + 1 == data[i].field_0x9 && strcmp(param_1, data[i].mName) == 0) { + *param_2 = field_0x1004[param_0] + data[i].field_0xc; + *param_3 = field_0x1024[param_0] + data[i].field_0x10; + return; + } + } + } + + *param_2 = field_0x1004[param_0]; + *param_3 = field_0x1024[param_0]; } -#pragma pop /* 801D2DA8-801D3094 1CD6E8 02EC+00 1/1 0/0 0/0 .text regionTextureDraw__18dMenu_Fmap2DBack_cFv */ +#ifdef NONMATCHING +// Matches with literals +void dMenu_Fmap2DBack_c::regionTextureDraw() { + f32 local_84, local_88; + calcAllMapPosWorld(getMapScissorAreaCenterPosX(), getMapScissorAreaCenterPosY(), &local_84, + &local_88); + + f32 local_8c, local_90; + calcAllMapPos2D(local_84 + field_0xfc8, local_88 + field_0xfcc, &local_8c, &local_90); + + f32 dVar14 = getMapScissorAreaCenterPosX() - local_8c; + f32 dVar13 = getMapScissorAreaCenterPosY() - local_90; + + s32 uVar9 = field_0x1227; + + s32 local_94; + if (field_0xfa0 == 0.0f) { + local_94 = field_0x1226; + } else { + local_94 = field_0x1227; + } + + if (g_fmapHIO.mDrawBackground == false) { + return; + } + + for (int iVar8 = 0; iVar8 < 8; iVar8++) { + s32 uVar10 = field_0x1230[iVar8]; + if (uVar10 != 0xff && mpAreaTex[uVar10] != NULL) { + f32 fVar3; + if (isShowRegion(uVar10)) { + if (uVar10 != local_94) { + mpAreaTex[uVar10]->setBlackWhite(field_0x11f8, field_0x11fc); + fVar3 = field_0x1214; + + } else { + mpAreaTex[uVar10]->setBlackWhite(field_0x11f0, field_0x11f4); + fVar3 = field_0x1210; + } + } else { + mpAreaTex[uVar10]->setBlackWhite(field_0x1200, field_0x1204); + fVar3 = 0.5f; + } + + mpAreaTex[uVar10]->setAlpha(field_0xfc4 * 255.0f * fVar3 * field_0xfa4); + + if (uVar10 != uVar9) { + mpAreaTex[uVar10]->draw( + field_0xfbc + (dVar14 + (field_0xe8c[uVar10] + field_0xf0c[uVar10])), + field_0xfc0 + (dVar13 + (field_0xeac[uVar10] + field_0xf2c[uVar10])), + field_0xecc[uVar10] * field_0xf9c, field_0xeec[uVar10] * field_0xf9c, false, + false, false); + } else { + mpAreaTex[uVar9]->draw( + field_0xfbc + (dVar14 + (field_0xe8c[uVar9] + field_0xf0c[uVar9])), + field_0xfc0 + (dVar13 + (field_0xeac[uVar9] + field_0xf2c[uVar9])), + field_0xecc[uVar9] * field_0xf9c, field_0xeec[uVar9] * field_0xf9c, false, + false, false); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1042,8 +1855,24 @@ asm void dMenu_Fmap2DBack_c::regionTextureDraw() { #include "asm/d/menu/d_menu_fmap2D/regionTextureDraw__18dMenu_Fmap2DBack_cFv.s" } #pragma pop +#endif /* 801D3094-801D31D0 1CD9D4 013C+00 1/1 0/0 0/0 .text stageTextureDraw__18dMenu_Fmap2DBack_cFv */ +#ifdef NONMATCHING +// Matches with literals +void dMenu_Fmap2DBack_c::stageTextureDraw() { + if (field_0x122f) { + mpSpotTexture->setAlpha(field_0xfc4 * 255.0f * field_0x11d8); + } else { + f32 tmp = field_0xfc4 * 255.0f * field_0xfa8; + mpSpotTexture->setAlpha(field_0x11d8 * tmp); + } + + mpSpotTexture->draw(field_0xfbc + getMapScissorAreaLX(), field_0xfc0 + getMapScissorAreaLY(), + getMapScissorAreaSizeRealX(), getMapScissorAreaSizeRealY(), false, false, + false); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1052,8 +1881,79 @@ asm void dMenu_Fmap2DBack_c::stageTextureDraw() { #include "asm/d/menu/d_menu_fmap2D/stageTextureDraw__18dMenu_Fmap2DBack_cFv.s" } #pragma pop +#endif /* 801D31D0-801D34DC 1CDB10 030C+00 1/1 0/0 0/0 .text worldGridDraw__18dMenu_Fmap2DBack_cFv */ +#ifdef NONMATCHING +// float regalloc +void dMenu_Fmap2DBack_c::worldGridDraw() { + f32 local_74, local_78; + + f32 dVar9 = -field_0xfc8; + f32 dVar8 = -field_0xfcc; + calcAllMapPos2D(dVar9, dVar8, &local_74, &local_78); + + J2DDrawLine(local_74, mDoGph_gInf_c::getMinYF(), local_74, + mDoGph_gInf_c::getMinYF() + mDoGph_gInf_c::getHeightF(), + JUtility::TColor(255, 255, 255, 255), 6); + + f32 xPos = dVar9 - g_fmapHIO.mWorldGridWidth; + while (true) { + calcAllMapPos2D(xPos, dVar8, &local_74, &local_78); + if (local_74 >= getMapScissorAreaLX()) { + J2DDrawLine(local_74, mDoGph_gInf_c::getMinYF(), local_74, + mDoGph_gInf_c::getMinYF() + mDoGph_gInf_c::getHeightF(), + JUtility::TColor(255, 255, 255, 255), 6); + xPos -= g_fmapHIO.mWorldGridWidth; + } else { + break; + } + } + + f32 xPos2 = dVar9 + g_fmapHIO.mWorldGridWidth; + while (true) { + calcAllMapPos2D(xPos2, dVar8, &local_74, &local_78); + if (local_74 <= getMapScissorAreaLX() + getMapScissorAreaSizeRealX()) { + J2DDrawLine(local_74, mDoGph_gInf_c::getMinYF(), local_74, + mDoGph_gInf_c::getMinYF() + mDoGph_gInf_c::getHeightF(), + JUtility::TColor(255, 255, 255, 255), 6); + xPos2 += g_fmapHIO.mWorldGridWidth; + } else { + break; + } + } + + J2DDrawLine(mDoGph_gInf_c::getMinXF(), local_78, + mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF(), local_78, + JUtility::TColor(255, 255, 255, 255), 6); + + f32 yPos = dVar8 - g_fmapHIO.mWorldGridWidth; + while (true) { + calcAllMapPos2D(dVar9, yPos, &local_74, &local_78); + if (local_78 >= getMapScissorAreaLY()) { + J2DDrawLine(mDoGph_gInf_c::getMinXF(), local_78, + mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF(), local_78, + JUtility::TColor(255, 255, 255, 255), 6); + yPos -= g_fmapHIO.mWorldGridWidth; + } else { + break; + } + } + + f32 yPos2 = dVar8 + g_fmapHIO.mWorldGridWidth; + while (true) { + calcAllMapPos2D(dVar9, yPos2, &local_74, &local_78); + if (local_78 <= getMapScissorAreaLY() + getMapScissorAreaSizeRealY()) { + J2DDrawLine(mDoGph_gInf_c::getMinXF(), local_78, + mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF(), local_78, + JUtility::TColor(255, 255, 255, 255), 6); + yPos2 += g_fmapHIO.mWorldGridWidth; + }else{ + break; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1062,13 +1962,13 @@ asm void dMenu_Fmap2DBack_c::worldGridDraw() { #include "asm/d/menu/d_menu_fmap2D/worldGridDraw__18dMenu_Fmap2DBack_cFv.s" } #pragma pop +#endif /* 801D34DC-801D382C 1CDE1C 0350+00 1/1 0/0 0/0 .text regionGridDraw__18dMenu_Fmap2DBack_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::regionGridDraw() { - nofralloc +asm void dMenu_Fmap2DBack_c::regionGridDraw(){nofralloc #include "asm/d/menu/d_menu_fmap2D/regionGridDraw__18dMenu_Fmap2DBack_cFv.s" } #pragma pop @@ -1128,8 +2028,7 @@ asm void dMenu_Fmap2DBack_c::stageOriginDraw() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::calcBlink() { - nofralloc +asm void dMenu_Fmap2DBack_c::calcBlink(){nofralloc #include "asm/d/menu/d_menu_fmap2D/calcBlink__18dMenu_Fmap2DBack_cFv.s" } #pragma pop @@ -1176,8 +2075,7 @@ asm void dMenu_Fmap2DBack_c::setBaseBackAlpha(u8 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::regionMapMove(STControl* param_0) { - nofralloc +asm void dMenu_Fmap2DBack_c::regionMapMove(STControl* param_0){nofralloc #include "asm/d/menu/d_menu_fmap2D/regionMapMove__18dMenu_Fmap2DBack_cFP9STControl.s" } #pragma pop @@ -1201,8 +2099,7 @@ asm void dMenu_Fmap2DBack_c::stageMapMove(STControl* param_0, u8 param_1, bool p #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::setAllAlphaRate(f32 param_0, bool param_1) { - nofralloc +asm void dMenu_Fmap2DBack_c::setAllAlphaRate(f32 param_0, bool param_1){nofralloc #include "asm/d/menu/d_menu_fmap2D/setAllAlphaRate__18dMenu_Fmap2DBack_cFfb.s" } #pragma pop @@ -1274,8 +2171,7 @@ asm void dMenu_Fmap2DBack_c::calcDrawPriority() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DBack_c::setArrowPosAxis(f32 param_0, f32 param_1) { - nofralloc +asm void dMenu_Fmap2DBack_c::setArrowPosAxis(f32 param_0, f32 param_1){nofralloc #include "asm/d/menu/d_menu_fmap2D/setArrowPosAxis__18dMenu_Fmap2DBack_cFff.s" } #pragma pop @@ -1285,8 +2181,30 @@ asm void dMenu_Fmap2DBack_c::setArrowPosAxis(f32 param_0, f32 param_1) { #pragma push #pragma force_active on SECTION_RODATA static u8 const area_name[24] = { - 0x69, 0x5F, 0x6E, 0x61, 0x6D, 0x65, 0x5F, 0x73, 0x00, 0x00, 0x69, 0x5F, - 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x69, 0x5F, 0x6E, 0x61, 0x6D, 0x65, 0x31, + 0x69, + 0x5F, + 0x6E, + 0x61, + 0x6D, + 0x65, + 0x5F, + 0x73, + 0x00, + 0x00, + 0x69, + 0x5F, + 0x6E, + 0x61, + 0x6D, + 0x65, + 0x00, + 0x69, + 0x5F, + 0x6E, + 0x61, + 0x6D, + 0x65, + 0x31, }; COMPILER_STRIP_GATE(0x80396288, &area_name); #pragma pop @@ -1511,8 +2429,7 @@ asm void dMenu_Fmap2DTop_c::btkAnimeLoop(J2DAnmTextureSRTKey* param_0, f32 param #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DTop_c::setMoyaAlpha(u8 param_0) { - nofralloc +asm void dMenu_Fmap2DTop_c::setMoyaAlpha(u8 param_0){nofralloc #include "asm/d/menu/d_menu_fmap2D/setMoyaAlpha__17dMenu_Fmap2DTop_cFUc.s" } #pragma pop @@ -1520,10 +2437,62 @@ asm void dMenu_Fmap2DTop_c::setMoyaAlpha(u8 param_0) { /* ############################################################################################## */ /* 803964B8-803964F0 022B18 0038+00 1/1 0/0 0/0 .rodata ffont_name$6110 */ SECTION_RODATA static u8 const ffont_name_6110[56] = { - 0x00, 0x66, 0x66, 0x6F, 0x6E, 0x74, 0x30, 0x30, 0x00, 0x66, 0x66, 0x6F, 0x6E, 0x74, - 0x6C, 0x30, 0x00, 0x66, 0x66, 0x6F, 0x6E, 0x74, 0x6C, 0x31, 0x00, 0x66, 0x66, 0x6F, - 0x6E, 0x74, 0x6C, 0x32, 0x00, 0x66, 0x66, 0x6F, 0x6E, 0x74, 0x62, 0x30, 0x00, 0x66, - 0x66, 0x6F, 0x6E, 0x74, 0x62, 0x33, 0x00, 0x66, 0x66, 0x6F, 0x6E, 0x74, 0x62, 0x34, + 0x00, + 0x66, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x30, + 0x30, + 0x00, + 0x66, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x6C, + 0x30, + 0x00, + 0x66, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x6C, + 0x31, + 0x00, + 0x66, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x6C, + 0x32, + 0x00, + 0x66, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x62, + 0x30, + 0x00, + 0x66, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x62, + 0x33, + 0x00, + 0x66, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x62, + 0x34, }; COMPILER_STRIP_GATE(0x803964B8, &ffont_name_6110); @@ -1532,8 +2501,7 @@ COMPILER_STRIP_GATE(0x803964B8, &ffont_name_6110); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DTop_c::setTitleNameString(u32 param_0) { - nofralloc +asm void dMenu_Fmap2DTop_c::setTitleNameString(u32 param_0){nofralloc #include "asm/d/menu/d_menu_fmap2D/setTitleNameString__17dMenu_Fmap2DTop_cFUl.s" } #pragma pop @@ -1541,8 +2509,30 @@ asm void dMenu_Fmap2DTop_c::setTitleNameString(u32 param_0) { /* ############################################################################################## */ /* 803964F0-80396508 022B50 0018+00 1/1 0/0 0/0 .rodata farea_name$6125 */ SECTION_RODATA static u8 const farea_name_6125[24] = { - 0x66, 0x5F, 0x6E, 0x61, 0x6D, 0x65, 0x5F, 0x31, 0x00, 0x66, 0x5F, 0x6E, - 0x61, 0x6D, 0x65, 0x33, 0x00, 0x66, 0x5F, 0x6E, 0x61, 0x6D, 0x65, 0x32, + 0x66, + 0x5F, + 0x6E, + 0x61, + 0x6D, + 0x65, + 0x5F, + 0x31, + 0x00, + 0x66, + 0x5F, + 0x6E, + 0x61, + 0x6D, + 0x65, + 0x33, + 0x00, + 0x66, + 0x5F, + 0x6E, + 0x61, + 0x6D, + 0x65, + 0x32, }; COMPILER_STRIP_GATE(0x803964F0, &farea_name_6125); @@ -1550,8 +2540,7 @@ COMPILER_STRIP_GATE(0x803964F0, &farea_name_6125); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DTop_c::setAreaNameString(u32 param_0) { - nofralloc +asm void dMenu_Fmap2DTop_c::setAreaNameString(u32 param_0){nofralloc #include "asm/d/menu/d_menu_fmap2D/setAreaNameString__17dMenu_Fmap2DTop_cFUl.s" } #pragma pop @@ -1559,9 +2548,46 @@ asm void dMenu_Fmap2DTop_c::setAreaNameString(u32 param_0) { /* ############################################################################################## */ /* 80396508-80396530 022B68 0028+00 1/1 0/0 0/0 .rodata font_zt$6148 */ SECTION_RODATA static u8 const font_zt_6148[40] = { - 0x66, 0x6F, 0x6E, 0x74, 0x5F, 0x7A, 0x74, 0x31, 0x66, 0x6F, 0x6E, 0x74, 0x5F, 0x7A, - 0x74, 0x32, 0x66, 0x6F, 0x6E, 0x74, 0x5F, 0x7A, 0x74, 0x33, 0x66, 0x6F, 0x6E, 0x74, - 0x5F, 0x7A, 0x74, 0x34, 0x66, 0x6F, 0x6E, 0x74, 0x5F, 0x7A, 0x74, 0x35, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x7A, + 0x74, + 0x31, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x7A, + 0x74, + 0x32, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x7A, + 0x74, + 0x33, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x7A, + 0x74, + 0x34, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x7A, + 0x74, + 0x35, }; COMPILER_STRIP_GATE(0x80396508, &font_zt_6148); @@ -1570,8 +2596,7 @@ COMPILER_STRIP_GATE(0x80396508, &font_zt_6148); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DTop_c::setZButtonString(u32 param_0, u8 param_1) { - nofralloc +asm void dMenu_Fmap2DTop_c::setZButtonString(u32 param_0, u8 param_1){nofralloc #include "asm/d/menu/d_menu_fmap2D/setZButtonString__17dMenu_Fmap2DTop_cFUlUc.s" } #pragma pop @@ -1579,9 +2604,46 @@ asm void dMenu_Fmap2DTop_c::setZButtonString(u32 param_0, u8 param_1) { /* ############################################################################################## */ /* 80396530-80396558 022B90 0028+00 1/1 0/0 0/0 .rodata font_bt$6176 */ SECTION_RODATA static u8 const font_bt_6176[40] = { - 0x66, 0x6F, 0x6E, 0x74, 0x5F, 0x62, 0x74, 0x31, 0x66, 0x6F, 0x6E, 0x74, 0x5F, 0x62, - 0x74, 0x32, 0x66, 0x6F, 0x6E, 0x74, 0x5F, 0x62, 0x74, 0x33, 0x66, 0x6F, 0x6E, 0x74, - 0x5F, 0x62, 0x74, 0x34, 0x66, 0x6F, 0x6E, 0x74, 0x5F, 0x62, 0x74, 0x35, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x62, + 0x74, + 0x31, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x62, + 0x74, + 0x32, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x62, + 0x74, + 0x33, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x62, + 0x74, + 0x34, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x62, + 0x74, + 0x35, }; COMPILER_STRIP_GATE(0x80396530, &font_bt_6176); @@ -1590,8 +2652,7 @@ COMPILER_STRIP_GATE(0x80396530, &font_bt_6176); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DTop_c::setBButtonString(u32 param_0, u8 param_1) { - nofralloc +asm void dMenu_Fmap2DTop_c::setBButtonString(u32 param_0, u8 param_1){nofralloc #include "asm/d/menu/d_menu_fmap2D/setBButtonString__17dMenu_Fmap2DTop_cFUlUc.s" } #pragma pop @@ -1599,9 +2660,46 @@ asm void dMenu_Fmap2DTop_c::setBButtonString(u32 param_0, u8 param_1) { /* ############################################################################################## */ /* 80396558-80396580 022BB8 0028+00 1/1 0/0 0/0 .rodata font_at$6194 */ SECTION_RODATA static u8 const font_at_6194[40] = { - 0x66, 0x6F, 0x6E, 0x74, 0x5F, 0x61, 0x74, 0x31, 0x66, 0x6F, 0x6E, 0x74, 0x5F, 0x61, - 0x74, 0x32, 0x66, 0x6F, 0x6E, 0x74, 0x5F, 0x61, 0x74, 0x33, 0x66, 0x6F, 0x6E, 0x74, - 0x5F, 0x61, 0x74, 0x34, 0x66, 0x6F, 0x6E, 0x74, 0x5F, 0x61, 0x74, 0x35, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x61, + 0x74, + 0x31, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x61, + 0x74, + 0x32, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x61, + 0x74, + 0x33, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x61, + 0x74, + 0x34, + 0x66, + 0x6F, + 0x6E, + 0x74, + 0x5F, + 0x61, + 0x74, + 0x35, }; COMPILER_STRIP_GATE(0x80396558, &font_at_6194); @@ -1610,8 +2708,7 @@ COMPILER_STRIP_GATE(0x80396558, &font_at_6194); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DTop_c::setAButtonString(u32 param_0, u8 param_1) { - nofralloc +asm void dMenu_Fmap2DTop_c::setAButtonString(u32 param_0, u8 param_1){nofralloc #include "asm/d/menu/d_menu_fmap2D/setAButtonString__17dMenu_Fmap2DTop_cFUlUc.s" } #pragma pop @@ -1619,9 +2716,46 @@ asm void dMenu_Fmap2DTop_c::setAButtonString(u32 param_0, u8 param_1) { /* ############################################################################################## */ /* 80396580-803965A8 022BE0 0028+00 1/1 0/0 0/0 .rodata juji_c$6209 */ SECTION_RODATA static u8 const juji_c_6209[40] = { - 0x66, 0x75, 0x6A, 0x69, 0x5F, 0x63, 0x30, 0x30, 0x66, 0x75, 0x6A, 0x69, 0x5F, 0x63, - 0x30, 0x31, 0x66, 0x75, 0x6A, 0x69, 0x5F, 0x63, 0x30, 0x32, 0x66, 0x75, 0x6A, 0x69, - 0x5F, 0x63, 0x30, 0x33, 0x66, 0x75, 0x6A, 0x69, 0x5F, 0x63, 0x30, 0x34, + 0x66, + 0x75, + 0x6A, + 0x69, + 0x5F, + 0x63, + 0x30, + 0x30, + 0x66, + 0x75, + 0x6A, + 0x69, + 0x5F, + 0x63, + 0x30, + 0x31, + 0x66, + 0x75, + 0x6A, + 0x69, + 0x5F, + 0x63, + 0x30, + 0x32, + 0x66, + 0x75, + 0x6A, + 0x69, + 0x5F, + 0x63, + 0x30, + 0x33, + 0x66, + 0x75, + 0x6A, + 0x69, + 0x5F, + 0x63, + 0x30, + 0x34, }; COMPILER_STRIP_GATE(0x80396580, &juji_c_6209); @@ -1629,8 +2763,7 @@ COMPILER_STRIP_GATE(0x80396580, &juji_c_6209); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DTop_c::setCrossLRString(u32 param_0) { - nofralloc +asm void dMenu_Fmap2DTop_c::setCrossLRString(u32 param_0){nofralloc #include "asm/d/menu/d_menu_fmap2D/setCrossLRString__17dMenu_Fmap2DTop_cFUl.s" } #pragma pop @@ -1638,9 +2771,46 @@ asm void dMenu_Fmap2DTop_c::setCrossLRString(u32 param_0) { /* ############################################################################################## */ /* 803965A8-803965D0 022C08 0028+00 1/1 0/0 0/0 .rodata ast_c$6233 */ SECTION_RODATA static u8 const ast_c_6233[40] = { - 0x00, 0x00, 0x66, 0x73, 0x74, 0x5F, 0x30, 0x30, 0x00, 0x00, 0x66, 0x73, 0x74, 0x5F, - 0x30, 0x31, 0x00, 0x00, 0x66, 0x73, 0x74, 0x5F, 0x30, 0x32, 0x00, 0x00, 0x66, 0x73, - 0x74, 0x5F, 0x30, 0x33, 0x00, 0x00, 0x66, 0x73, 0x74, 0x5F, 0x30, 0x34, + 0x00, + 0x00, + 0x66, + 0x73, + 0x74, + 0x5F, + 0x30, + 0x30, + 0x00, + 0x00, + 0x66, + 0x73, + 0x74, + 0x5F, + 0x30, + 0x31, + 0x00, + 0x00, + 0x66, + 0x73, + 0x74, + 0x5F, + 0x30, + 0x32, + 0x00, + 0x00, + 0x66, + 0x73, + 0x74, + 0x5F, + 0x30, + 0x33, + 0x00, + 0x00, + 0x66, + 0x73, + 0x74, + 0x5F, + 0x30, + 0x34, }; COMPILER_STRIP_GATE(0x803965A8, &ast_c_6233); @@ -1681,8 +2851,7 @@ asm void dMenu_Fmap2DTop_c::deleteExplain() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DTop_c::setArrowAlphaRatio(u8 param_0, f32 param_1) { - nofralloc +asm void dMenu_Fmap2DTop_c::setArrowAlphaRatio(u8 param_0, f32 param_1){nofralloc #include "asm/d/menu/d_menu_fmap2D/setArrowAlphaRatio__17dMenu_Fmap2DTop_cFUcf.s" } #pragma pop @@ -1696,8 +2865,7 @@ SECTION_SDATA2 static f32 lit_6309 = 5.0f; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMenu_Fmap2DTop_c::setAlphaAnimeMin(CPaneMgrAlpha* param_0) { - nofralloc +asm void dMenu_Fmap2DTop_c::setAlphaAnimeMin(CPaneMgrAlpha* param_0){nofralloc #include "asm/d/menu/d_menu_fmap2D/setAlphaAnimeMin__17dMenu_Fmap2DTop_cFP13CPaneMgrAlpha.s" } #pragma pop diff --git a/src/d/menu/d_menu_fmap_map.cpp b/src/d/menu/d_menu_fmap_map.cpp index 933c8dfe18d..82d8bef1b42 100644 --- a/src/d/menu/d_menu_fmap_map.cpp +++ b/src/d/menu/d_menu_fmap_map.cpp @@ -10,77 +10,18 @@ // Types: // -struct dDrawPath_c { - struct group_class {}; - - struct line_class {}; - - struct poly_class {}; - - struct room_class {}; - - /* 8002ABF0 */ bool isDrawType(int); - /* 8002AD84 */ void getLineColor(int, int); - /* 8003CA40 */ void rendering(dDrawPath_c::poly_class const*); - /* 8003CC24 */ void rendering(dDrawPath_c::room_class const*); - /* 8003C94C */ void rendering(dDrawPath_c::line_class const*); - /* 8003CCC4 */ void drawPath(); -}; - struct dMenu_Fmap_region_data_c { /* 8003DB70 */ void getPointStagePathInnerNo(f32, f32, int, int*, int*); }; struct dMenu_Fmap_world_data_c {}; -struct renderingFmap_c { - struct palette_e {}; - - /* 801CE15C */ void init(u8*, u16, u16, u16, u16); - /* 801CE188 */ void entry(dMenu_Fmap_world_data_c*, int, f32, f32, f32); - /* 801CE224 */ void isSwitchSpecialOff(int); - /* 801CE288 */ void isSwitch(dDrawPath_c::group_class const*); - /* 801CE3C0 */ void getPointStagePathInnerNo(dMenu_Fmap_region_data_c*, f32, f32, int, int*, - int*); - /* 801CE410 */ void preDrawPath(); - /* 801CE4D4 */ bool isDrawPath(); - /* 801CE4DC */ void isDrawRoom(); - /* 801CE560 */ void postDrawPath(); - /* 801CE5B8 */ void postRenderingMap(); - /* 801CE5EC */ void roomSetteing(); - /* 801CE6A8 */ void getFirstRoomPointer(); - /* 801CE75C */ void getFirstRegion(); - /* 801CE7A8 */ void getFirstStage(); - /* 801CE80C */ void getFirstRoom(); - /* 801CE84C */ void getNextRoom(); - /* 801CE8B8 */ void getNextStage(); - /* 801CE93C */ void getNextRegion(); - /* 801CE9A4 */ void getNextRoomPointer(); - /* 801CF4D0 */ ~renderingFmap_c(); - /* 801CF55C */ bool isRenderingFloor(int); - /* 801CF564 */ void beforeDrawPath(); - /* 801CF568 */ void afterDrawPath(); -}; - struct dSv_info_c { /* 80035360 */ void isSwitch(int, int) const; }; struct ResTIMG {}; -struct dRenderingMap_c { - /* 8003CD38 */ void makeResTIMG(ResTIMG*, u16, u16, u8*, u8*, u16) const; - /* 8003CDAC */ void renderingMap(); -}; - -struct dRenderingFDAmap_c { - /* 8003D188 */ void preRenderingMap(); - /* 8003D320 */ void postRenderingMap(); - /* 8003D3C0 */ void renderingDecoration(dDrawPath_c::line_class const*); - /* 8003D68C */ void getDecoLineColor(int, int); - /* 8003D6B8 */ void getDecorationLineWidth(int); -}; - struct dMfm_HIO_prm_res_src_s { static u8 m_other[1 + 3 /* padding */]; }; @@ -89,43 +30,6 @@ struct dMenu_Fmap_room_data_c { /* 8003D818 */ void isArrival(); }; -struct _GXColor {}; - -struct dMenu_FmapMap_c { - /* 801CEAAC */ void setFmapPaletteColor(renderingFmap_c::palette_e, _GXColor const&); - /* 801CEA38 */ void setFmapPaletteColor(renderingFmap_c::palette_e, u8, u8, u8, u8); - /* 801CEAE0 */ void isFlashRoomNoCheck(int) const; - /* 801CEB1C */ void setPointColor(f32); - /* 801CEC24 */ dMenu_FmapMap_c(); - /* 801CED38 */ ~dMenu_FmapMap_c(); - /* 801CEDE8 */ void _create(u16, u16, u16, u16, void*); - /* 801CEE3C */ void _delete(); - /* 801CEE94 */ void draw(); - /* 801CF0B4 */ void rendering(dDrawPath_c::line_class const*); - /* 801CF12C */ void getLineWidth(int); - /* 801CF1D4 */ void isDrawType(int); - /* 801CF1E0 */ void setFlashOn(int, int, u8*, int); - /* 801CF208 */ void getLineColor(int, int); - /* 801CF298 */ void getBackColor() const; - /* 801CF2A0 */ void getColor(int); - /* 801CF394 */ void setTexture(u16, u16, u16, u16); - /* 801CF450 */ void setRendering(dMenu_Fmap_world_data_c*, int, f32, f32, f32, f32); -}; - -struct dDlst_base_c { - /* 8002ABEC */ void draw(); -}; - -struct dDlst_list_c { - /* 80056794 */ void set(dDlst_base_c**&, dDlst_base_c**&, dDlst_base_c*); -}; - -struct Vec {}; - -struct JMath { - static u8 sincosTable_[65536]; -}; - // // Forward References: // @@ -205,20 +109,13 @@ extern "C" void* __nw__FUli(); extern "C" void* __nwa__FUli(); extern "C" void __dl__FPv(); extern "C" void __dla__FPv(); -extern "C" void DCStoreRange(); -extern "C" void GXSetVtxDesc(); extern "C" void GXClearVtxDesc(); -extern "C" void GXSetVtxAttrFmt(); -extern "C" void GXSetMisc(); -extern "C" void GXGetTexBufferSize(); -extern "C" void GXLoadPosMtxImm(); extern "C" void _savegpr_27(); extern "C" void _savegpr_28(); extern "C" void _savegpr_29(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void strcmp(); 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]; diff --git a/src/d/menu/d_menu_map_common.cpp b/src/d/menu/d_menu_map_common.cpp index 8b57a1dee71..124bec6704a 100644 --- a/src/d/menu/d_menu_map_common.cpp +++ b/src/d/menu/d_menu_map_common.cpp @@ -41,7 +41,7 @@ dMenuMapCommon_c::dMenuMapCommon_c() { _c7c = 0.0f; _c84 = 0.0f; _c88 = 0.0f; - _c8c = 0.0f; + mCenterPosX = 0.0f; _c90 = 0; clearIconInfo(); } @@ -226,20 +226,17 @@ void dMenuMapCommon_c::initiate(JKRArchive* arc) { 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)); - // todo check if this value is mPictures[23] (out of the array) or field 0x60 mp_image = (ResTIMG*)arc->getResource('TIMG', "im_hikari_no_shizuku_try_10_00_24x24.bti"); ASSERT(mp_image != 0); - mPictures[23] = new J2DPicture(mp_image); + _60 = new J2DPicture(mp_image); mp_image = (ResTIMG*)arc->getResource('TIMG', "im_hikari_no_shizuku_try_10_00_24x24.bti"); ASSERT(mp_image != 0); - mPictures[23]->append(mp_image, 0.0f); - mPictures[23]->setBasePosition(J2DBasePosition_4); - mPictures[23]->setInfluencedAlpha(false, false); - - mPictures[23]->setBlackWhite(JUtility::TColor(0, 240, 170, 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*)arc->getResource('TIMG', "tt_map_icon_s_size_circle_ci4_00.bti"); diff --git a/src/d/meter/d_meter2_info.cpp b/src/d/meter/d_meter2_info.cpp index 2642c8e8e3f..06b9a8c564d 100644 --- a/src/d/meter/d_meter2_info.cpp +++ b/src/d/meter/d_meter2_info.cpp @@ -1392,7 +1392,7 @@ SECTION_SDATA2 static f64 lit_5206 = 4503599627370496.0 /* cast u32 to float */; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMeter2Info_getPixel(f32 param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, +asm bool dMeter2Info_getPixel(f32 param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5, ResTIMG const* param_6) { nofralloc #include "asm/d/meter/d_meter2_info/dMeter2Info_getPixel__FffffffPC7ResTIMG.s"