Work on d_menu_dmap (#2073)

* Move some J2DPicture inlines to header

* Work on d_menu_dmap

* JASBasicInst OK

* JASCalc cleanup
This commit is contained in:
hatal175
2024-02-17 04:22:01 +02:00
committed by GitHub
parent 672990a0b0
commit 8164c34142
36 changed files with 1789 additions and 1133 deletions
+14 -3
View File
@@ -54,7 +54,10 @@ public:
/* 802FD098 */ virtual bool prepareTexture(u8);
/* 801BDD40 */ virtual bool append(ResTIMG const*, f32);
/* 802FF238 */ virtual bool append(ResTIMG const*, JUTPalette*, f32);
/* 80020338 */ virtual bool append(char const*, f32);
/* 80020338 */ virtual bool append(char const* param_0, f32 param_1) {
return insert(param_0, mTextureNum, param_1);
}
/* 802FF2F0 */ virtual bool append(char const*, JUTPalette*, f32);
/* 802FF208 */ virtual bool append(JUTTexture*, f32);
/* 802FF3E0 */ virtual void prepend(ResTIMG const*, f32);
@@ -64,7 +67,9 @@ public:
/* 802FF320 */ virtual void prepend(JUTTexture*, f32);
/* 801BDD70 */ virtual void insert(ResTIMG const*, u8, f32);
/* 802FD168 */ virtual bool insert(ResTIMG const*, JUTPalette*, u8, f32);
/* 80020368 */ virtual bool insert(char const*, u8, f32);
/* 80020368 */ virtual bool insert(char const* param_0, u8 param_1, f32 param_2) {
return insert(param_0, NULL, param_1, param_2);
}
/* 802FD4B4 */ virtual bool insert(char const*, JUTPalette*, u8, f32);
/* 802FD524 */ virtual bool insert(JUTTexture*, u8, f32);
/* 802FD6F4 */ virtual bool remove(u8);
@@ -78,7 +83,10 @@ public:
/* 802FDF88 */ virtual void drawOut(JGeometry::TBox2<f32> const&, JGeometry::TBox2<f32> const&);
/* 802FF29C */ virtual void load(_GXTexMapID, u8);
/* 802FF268 */ virtual void load(u8);
/* 800202CC */ virtual void setBlendRatio(f32, f32);
/* 800202CC */ virtual void setBlendRatio(f32 param_0, f32 param_1) {
setBlendColorRatio(param_0, param_1);
setBlendAlphaRatio(param_0, param_1);
}
/* 802FEA74 */ virtual void setBlendColorRatio(f32, f32);
/* 802FEA9C */ virtual void setBlendAlphaRatio(f32, f32);
/* 802FD874 */ virtual const ResTIMG* changeTexture(ResTIMG const*, u8);
@@ -123,6 +131,9 @@ public:
mCornerColor[2] = c2;
mCornerColor[3] = c3;
}
void setCornerColor(JUtility::TColor c0) {
setCornerColor(c0, c0, c0, c0);
}
protected:
/* 0x100 */ JUTTexture* mTexture[2];
+1 -1
View File
@@ -32,7 +32,7 @@ struct JASInst {
struct JASBasicInst : public JASInst {
struct TKeymap {
/* 80298250 */ ~TKeymap();
/* 802982D4 */ TKeymap();
/* 802982D4 */ TKeymap() { field_0x0 = -1; }
s32 field_0x0;
u16 field_0x4;
+1
View File
@@ -822,6 +822,7 @@ int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* arc_nam
int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* resName, JKRHeap* heap);
int dComIfG_TimerDeleteRequest(int i_mode);
int dComIfG_TimerStart(int i_mode, s16 i_time);
bool dComIfGp_isLightDropMapVisible();
inline void dComIfG_setBrightness(u8 brightness) {
g_dComIfG_gameInfo.mFadeBrightness = brightness;
+1
View File
@@ -46,6 +46,7 @@ public:
/* 800325A0 */ bool checkDownTrigger();
void setFirstWaitTime(s16 time) { mFirstWaitTime = time; }
s16 getYwaitTimer() { return mYwaitTimer; }
/* 0x04 */ f32 mThreshold;
/* 0x08 */ f32 field_0x08;
+4
View File
@@ -1094,6 +1094,10 @@ inline u8 dStage_stagInfo_GetWolfDashType(stage_stag_info_class* pstag) {
return (pstag->field_0x09 >> 6) & 3;
}
inline u16 dStage_stagInfo_GetStageTitleNo(stage_stag_info_class* pstag) {
return pstag->mStageTitleNo;
}
inline u32 dStage_sclsInfo_getSceneLayer(stage_scls_info_class* p_info) {
return p_info->field_0xb & 0xF;
}
+137 -16
View File
@@ -2,6 +2,10 @@
#define D_MENU_D_MENU_DMAP_H
#include "d/d_select_cursor.h"
#include "d/d_drawlist.h"
#include "d/msg/d_msg_flow.h"
#include "d/menu/d_menu_map_common.h"
#include "d/menu/d_menu_dmap_map.h"
#include "dolphin/types.h"
class CPaneMgr;
@@ -12,9 +16,125 @@ class J2DScreen;
class JKRArchive;
class JKRExpHeap;
class STControl;
class dMenu_DmapMapCtrl_c;
class dMenu_DmapBg_c;
class mDoDvdThd_mountArchive_c;
class dMsgString_c;
class dMeterHaihai_c;
class dMenu_ItemExplain_c;
class J2DPictureEx;
struct renderingDmap_c {
/* 801C0380 */ ~renderingDmap_c();
/* 801C051C */ renderingDmap_c();
};
struct dMenu_DmapBg_c { //: public dDlst_base_c, public dMenuMapCommon_c {
/* 801B7F20 */ dMenu_DmapBg_c(JKRExpHeap*, STControl*);
/* 801B8110 */ void mapScreenInit();
/* 801B884C */ void mapScreenAnime();
/* 801B88F4 */ void mapIconScaleSet(u8);
/* 801B893C */ void iconScaleAnmInit(f32, f32, u8);
/* 801B8954 */ bool iconScaleAnm();
/* 801B8A0C */ void buttonIconScreenInit();
/* 801B8DE4 */ void setAButtonString(u32);
/* 801B8EBC */ void setBButtonString(u32);
/* 801B8F94 */ void setCButtonString(u32);
/* 801B90BC */ void setJButtonString(u32);
/* 801B90E0 */ void createExplain();
/* 801B9164 */ void deleteExplain();
/* 801B91DC */ void baseScreenInit();
/* 801B944C */ void setFloorMessage();
/* 801BA0B4 */ bool dpdMove(s8, s8, s8, u8*, u8);
/* 801BA0BC */ ~dMenu_DmapBg_c();
/* 801BA60C */ void setAllAlphaRate(f32, bool);
/* 801BA700 */ void setGoldAnimation(bool);
/* 801BA7F0 */ void setGoldFrameAlphaRate(f32);
/* 801BA974 */ void addGoldFrameAlphaRate();
/* 801BAA4C */ void decGoldFrameAlphaRate();
/* 801BAB10 */ void draw();
/* 801BB334 */ void update();
/* 801BB464 */ void calcCursor();
/* 801BB468 */ void drawCursor();
f32 getMapWidth() { return field_0xda0; }
f32 getMapHeight() { return field_0xda4; }
J2DPicture* getMapPane() { return field_0xcc4; }
#ifndef NONMATCHING
void* dDlst_base_c_vt;
void* dMenuMapCommon_c_vt;
/* 0x008 */ u8 field_0x8[0xc98 - 0x8];
#endif
/* 0xC98 */ JKRExpHeap* field_0xc98;
/* 0xC9C */ JKRExpHeap* mpTalkHeap;
/* 0xCA0 */ STControl* field_0xca0;
/* 0xCA4 */ J2DScreen* mBaseScreen;
/* 0xCA8 */ J2DScreen* mMapScreen[2];
/* 0xCB0 */ int field_0xcb0;
/* 0xCB4 */ J2DScreen* mButtonScreen;
/* 0xCB8 */ J2DScreen* mDecorateScreen;
/* 0xCBC */ J2DScreen* mFloorScreen;
/* 0xCC0 */ dSelect_cursor_c* mpDrawCursor;
/* 0xCC4 */ J2DPicture* field_0xcc4;
/* 0xCC8 */ dMsgString_c* mString;
/* 0xCCC */ CPaneMgrAlphaMorf* mpBaseRoot;
/* 0xCD0 */ CPaneMgrAlphaMorf* mpMapRoot[2];
/* 0xCD8 */ CPaneMgrAlphaMorf* mpButtonRoot;
/* 0xCDC */ CPaneMgrAlphaMorf* mpDecorateRoot;
/* 0xCE0 */ CPaneMgrAlphaMorf* mpFloorRoot;
/* 0xCE4 */ CPaneMgrAlpha* mpBlack;
/* 0xCE8 */ CPaneMgrAlpha* mpCButton;
/* 0xCEC */ CPaneMgrAlpha* mpJButton;
/* 0xCF0 */ int field_0xcf0;
/* 0xCF4 */ CPaneMgr* field_0xcf4;
/* 0xCF8 */ CPaneMgr* field_0xcf8;
/* 0xCFC */ u8 field_0xcfc[0xd00 - 0xcfc];
/* 0xD00 */ CPaneMgr* mpMapSpace[2];
/* 0xD08 */ CPaneMgr* mpButtonAB[2];
/* 0xD10 */ CPaneMgr* mpButtonText[2];
/* 0xD18 */ dMenu_ItemExplain_c* mpItemExplain;
/* 0xD1C */ mDoDvdThd_mountArchive_c* field_0xd1c;
/* 0xD20 */ JKRArchive* field_0xd20;
/* 0xD24 */ J2DPicture* mpBackTexture;
/* 0xD28 */ J2DAnmTextureSRTKey* field_0xd28[1];
/* 0xD2C */ u8 field_0xd2c[0xd30 - 0xd2c];
/* 0xD30 */ dMeterHaihai_c* mpMeterHaihai;
/* 0xD34 */ dMsgFlow_c field_0xd34;
/* 0xD80 */ u8 field_0xd80[0xc];
/* 0xD8C */ u8 field_0xd8c;
/* 0xD8D */ u8 field_0xd8d;
/* 0xD8E */ u8 field_0xd8e;
/* 0xD8F */ u8 field_0xd8f;
/* 0xD90 */ u8 field_0xd90;
/* 0xD91 */ u8 field_0xd91;
/* 0xD92 */ u8 field_0xd92;
/* 0xD93 */ u8 field_0xd93;
/* 0xD94 */ f32 field_0xd94;
/* 0xD98 */ f32 field_0xd98;
/* 0xD9C */ f32 field_0xd9c;
/* 0xDA0 */ f32 field_0xda0;
/* 0xDA4 */ f32 field_0xda4;
/* 0xDA8 */ f32 field_0xda8;
/* 0xDAC */ f32 field_0xdac;
/* 0xDB0 */ f32 field_0xdb0;
/* 0xDB4 */ f32 field_0xdb4;
/* 0xDB8 */ f32 field_0xdb8;
/* 0xDBC */ f32 field_0xdbc;
/* 0xDC0 */ f32 field_0xdc0;
/* 0xDC4 */ f32 field_0xdc4;
/* 0xDC8 */ f32 field_0xdc8[1];
/* 0xDCC */ f32 field_0xdcc;
/* 0xDD0 */ u8 field_0xdd0;
/* 0xDD1 */ u8 field_0xdd1;
/* 0xDD2 */ u8 field_0xdd2;
/* 0xDD3 */ u8 field_0xdd3;
/* 0xDD4 */ s8 field_0xdd4;
/* 0xDD5 */ u8 field_0xdd5;
/* 0xDD6 */ s8 field_0xdd6;
/* 0xDD7 */ u8 field_0xdd7;
/* 0xDD8 */ u8 field_0xdd8;
/* 0xDD9 */ u8 field_0xdd9;
/* 0xDDA */ u8 field_0xdda;
};
class dMenu_Dmap_c {
public:
@@ -22,12 +142,12 @@ public:
/* 801BB634 */ void screenInit();
/* 801BC788 */ void getPlayerIconPos(s8, f32);
/* 801BC848 */ void getIconPos(s8, f32);
/* 801BD1D4 */ void getCurFloorPos();
/* 801BD1E8 */ void getDefaultCurFloorPos();
/* 801BD1D4 */ s8 getCurFloorPos();
/* 801BD1E8 */ s8 getDefaultCurFloorPos();
/* 801BD208 */ void iconMoveCalc();
/* 801BD3B8 */ void drawFloorScreenBack(J2DScreen*, f32, f32, J2DOrthoGraph*);
/* 801BD524 */ void drawFloorScreenTop(J2DScreen*, f32, f32, J2DOrthoGraph*);
/* 801BD690 */ void isMapMoveState();
/* 801BD690 */ bool isMapMoveState();
/* 801BD6C4 */ void floorChangeMode();
/* 801BD7C0 */ void _create();
/* 801BDDA4 */ void _move();
@@ -73,8 +193,11 @@ public:
void setInOutDir(u8 dir) { mInOutDir = dir; }
u8 getZoomState() { return mZoomState; }
u16 getCMessasgeNum() { return mCMessageNum; }
s8 getBottomFloor() { return mBottomFloor; }
s8 getFloorAll() { return mFloorAll; }
static u8 myclass[4 + 4 /* padding */];
static dMenu_Dmap_c* myclass;
private:
/* 0x004 */ dMenu_DmapMapCtrl_c* mMapCtrl;
@@ -84,9 +207,7 @@ private:
/* 0x034 */ CPaneMgr* mIconLinkPos[8];
/* 0x054 */ CPaneMgr* mIconBossPos[8];
/* 0x074 */ CPaneMgr* mStayIcon[2];
/* 0x07C */ CPaneMgr* field_0x7c;
/* 0x080 */ CPaneMgr* field_0x80;
/* 0x084 */ CPaneMgr* field_0x84;
/* 0x07C */ CPaneMgr* field_0x7c[3];
/* 0x088 */ CPaneMgr* field_0x88[3];
/* 0x094 */ CPaneMgr* field_0x94;
/* 0x098 */ CPaneMgr* field_0x98;
@@ -116,14 +237,14 @@ private:
/* 0x166 */ u16 mCMessageNum;
/* 0x168 */ u16 mJMessageNum;
/* 0x16A */ u16 field_0x16a;
/* 0x16C */ u8 field_0x16c;
/* 0x16D */ u8 field_0x16d;
/* 0x16C */ s8 field_0x16c;
/* 0x16D */ s8 field_0x16d;
/* 0x16E */ u8 field_0x16e;
/* 0x16F */ u8 field_0x16f;
/* 0x170 */ u8 field_0x170;
/* 0x171 */ u8 mBottomFloor;
/* 0x172 */ u8 field_0x172;
/* 0x173 */ u8 field_0x173;
/* 0x170 */ s8 mFloorAll;
/* 0x171 */ s8 mBottomFloor;
/* 0x172 */ s8 field_0x172;
/* 0x173 */ s8 field_0x173;
/* 0x174 */ u8 field_0x174[3];
/* 0x177 */ u8 field_0x177;
/* 0x178 */ u8 field_0x178;
@@ -138,7 +259,7 @@ private:
/* 0x181 */ u8 field_0x181;
/* 0x182 */ u8 field_0x182;
/* 0x183 */ u8 field_0x183;
/* 0x184 */ u8 field_0x184;
/* 0x184 */ bool field_0x184;
/* 0x185 */ u8 field_0x185;
};
+65
View File
@@ -3,4 +3,69 @@
#include "dolphin/types.h"
struct dMenu_StageMapCtrl_c {
/* 801C042C */ ~dMenu_StageMapCtrl_c();
/* 801C0EE0 */ f32 getMapBlendPer() const;
/* 801C0F24 */ void getPixelStageSizeX() const;
/* 801C0F3C */ void getPixelStageSizeZ() const;
/* 801C0F54 */ void getPixelCenterX() const;
/* 801C0F74 */ void getPixelCenterZ() const;
/* 801C0F94 */ void initGetTreasureList(u8, s8);
/* 801C0FF8 */ bool getTreasureList(f32*, f32*, s8*, u8*, s8*);
/* 801C1128 */ void cnvPosTo2Dpos(f32, f32, f32*, f32*) const;
/* 801C1194 */ void getPlayerDrawInfo(f32*, f32*, s16*) const;
/* 801C1218 */ s8 getRestartDrawInfo(f32*, f32*, s16*) const;
/* 801C12A8 */ void setPlusNowStayFloorNo(s8, u8);
/* 801C12B4 */ void moveFloor();
/* 801C1878 */ void wait_init_proc();
/* 801C188C */ void wait_proc();
/* 801C18AC */ void zoomIn_init_proc();
/* 801C1C40 */ void initZoomIn(u8);
/* 801C1CEC */ void initZoomIn(u8, f32, f32);
/* 801C1E00 */ void initZoomInCenterHold(u8);
/* 801C1E74 */ void zoomCalcSet(f32);
/* 801C1EC0 */ void zoomIn_proc();
/* 801C1F2C */ void initZoomOut(u8);
/* 801C1F70 */ void initZoomWait(f32, f32);
/* 801C2004 */ void zoomWait_init_proc();
/* 801C205C */ void zoomWait_proc();
/* 801C2198 */ void zoomOut_init_proc();
/* 801C21AC */ void zoomOut_proc();
/* 801C2234 */ void move();
/* 801C22F8 */ void getPlayerStayFloorNo() const;
/* 801C231C */ void _create(u16, u16, u16, u16, void*);
/* 801C235C */ void _create(u16, u16, u16, u16, s8, void*);
/* 801C2518 */ void _delete();
/* 801C2538 */ void isEnableZoomIn();
/* 801C2578 */ void isEnableZoomOut();
/* 801C2588 */ void setPlusZoomCenterX(f32);
/* 801C2590 */ void setPlusZoomCenterZ(f32);
static f32 m_zoomCenterMinX;
static f32 m_zoomCenterMaxX;
static f32 m_zoomCenterMinZ;
static f32 m_zoomCenterMaxZ[1 + 1 /* padding */];
};
struct dMenu_DmapMapCtrl_c : public dMenu_StageMapCtrl_c {
/* 801BD144 */ ~dMenu_DmapMapCtrl_c();
/* 801C18C0 */ void getZoomMinMaxCheck(f32*, f32*, f32*, f32*, bool*, bool*);
/* 801C1B14 */ void calcZoomCenter(f32*, f32*);
/* 801C1BA4 */ void getZoomCmPerPixel();
/* 801C2028 */ void isEnableZoomMove() const;
/* 801C22A8 */ void draw();
/* 801C2598 */ void getInitWholeMapScale(f32*, f32, f32, f32, f32);
/* 801C25C0 */ void getInitDispCenter(f32*, f32*);
};
struct dMenu_DmapMap_c {
/* 801C04AC */ ~dMenu_DmapMap_c();
/* 801C0CD8 */ void _create(u16, u16, u16, u16, void*);
/* 801C0D04 */ void _delete();
/* 801C0D70 */ void setTexture(u16, u16, u16, u16);
/* 801C0E4C */ void setPos(int, int, f32, f32, f32, bool, f32);
};
#endif /* D_MENU_D_MENU_DMAP_MAP_H */
+50
View File
@@ -1,5 +1,55 @@
#ifndef D_MENU_D_MENU_MAP_COMMON_H
#define D_MENU_D_MENU_MAP_COMMON_H
#include "dolphin/types.h"
class J2DPicture;
class JKRArchive;
class dSelect_cursor_c;
struct dMenuMapCommon_c {
/* 801C2718 */ dMenuMapCommon_c();
/* 801C27B4 */ virtual ~dMenuMapCommon_c();
/* 801C28D8 */ void initiate(JKRArchive*);
/* 801C38E4 */ void drawIcon(f32, f32, f32, f32);
/* 801C3EC4 */ void iconScale(int, f32, f32, f32);
/* 801C43A8 */ void setIconInfo(u8, f32, f32, f32, f32, f32, u8);
/* 801C443C */ void clearIconInfo();
/* 801C4494 */ void setBlendRatio(u8, f32, f32);
/* 801C452C */ void blinkMove(s16);
/* 801C4600 */ void moveLightDropAnime();
/* 801C4738 */ float getIconSizeX(u8 index);
/* 801C4778 */ float getIconSizeY(u8 index);
/* 801C47C4 */ void debugIcon();
struct data {
/* 0x00 */ float _0;
/* 0x04 */ float _4;
/* 0x08 */ float _8;
/* 0x0C */ float _C;
/* 0x10 */ float _10;
/* 0x14 */ u8 _14;
/* 0x15 */ u8 _15;
};
/* 0x004 */ J2DPicture* mPictures[23];
/* 0x060 */ J2DPicture* _60;
/* 0x064 */ dSelect_cursor_c* mpDrawCursor;
/* 0x068 */ dSelect_cursor_c* mpPortalIcon;
/* 0x06C */ u32 _6c;
/* 0x070 */ data _70[128];
/* 0xC70 */ u16 _c70;
/* 0xC72 */ u16 _c72;
/* 0xC74 */ u16 _c74;
/* 0xC76 */ u16 _c76;
/* 0xC78 */ float _c78;
/* 0xC7C */ float _c7c;
/* 0xC80 */ float _c80;
/* 0xC84 */ float _c84;
/* 0xC88 */ float _c88;
/* 0xC8C */ float _c8c;
/* 0xC90 */ u8 _c90;
};
#endif /* D_MENU_D_MENU_MAP_COMMON_H */
+9
View File
@@ -175,6 +175,8 @@ public:
mCollectCursorPosX = x;
mCollectCursorPosY = y;
}
void setMapDrugFlag(u8 flag) { mMapDrugFlag = flag; }
bool isTempBit(int bit) { return mTempBits & (1 << bit) != 0; }
public:
/* 0x04 */ u8 unk4[4];
@@ -700,6 +702,13 @@ inline bool dMeter2Info_isShopTalkFlag() {
return g_meter2_info.isShopTalkFlag();
}
inline void dMeter2Info_setMapDrugFlag(u8 flag) {
g_meter2_info.setMapDrugFlag(flag);
}
inline bool dMeter2Info_isTempBit(int bit) {
return g_meter2_info.isTempBit(bit);
}
const char* dMeter2Info_getNumberTextureName(int pIndex);
void dMeter2Info_recieveLetter();
+10 -2
View File
@@ -99,9 +99,9 @@ public:
/* 80237A88 */ static void setNowTalkFlowNo(s16);
/* 80237A9C */ void getNowTalkFlowNo();
/* 80237AB0 */ void setDemoMessage(u32);
/* 80237AE0 */ void setTalkHeap(void*);
/* 80237AE0 */ static void setTalkHeap(void*);
/* 80237B10 */ void setTalkHeapLocal(void*);
/* 80237B54 */ void getTalkHeap();
/* 80237B54 */ static void* getTalkHeap();
/* 80237B68 */ void isDraw();
/* 80237BFC */ void setButtonStatusLocal();
/* 80237D88 */ void setDemoMessageLocal(u32);
@@ -391,6 +391,14 @@ inline bool dMsgObject_isFukidashiCheck() {
return dMsgObject_getMsgObjectClass()->getScrnDrawPtr() != NULL ? true : false;
}
inline void* dMsgObject_getTalkHeap() {
return dMsgObject_c::getTalkHeap();
}
inline void dMsgObject_setTalkHeap(void* heap) {
dMsgObject_c::setTalkHeap(heap);
}
class dMsgObject_HowlHIO_c {
public:
/* 80232AEC */ dMsgObject_HowlHIO_c();