initialize

This commit is contained in:
Teddy Heidmann
2026-08-11 09:24:39 -07:00
parent 17e01665a1
commit b4cff7ab67
5 changed files with 160 additions and 37 deletions
+16
View File
@@ -3,6 +3,7 @@
#include "d/d_drawlist.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "d/d_stage.h"
struct ResTIMG;
struct dmap_dmap_tlut_s;
@@ -329,6 +330,17 @@ public:
void setFloorTextureOne(u8);
void init(s16, s16, s16, s16, s16, s16, s16, s16, s16, u8, u8, u8, u8, u8);
virtual void draw();
public:
/* 0x004 */ u8 field_0x4[0x2A4 - 0x4];
/* 0x2A4 */ JKRArchive* field_0x2A4;
/* 0x2A8 */ u8 field_0x2A8[0x35C - 0x2A8];
/* 0x35C */ s16 field_0x35C;
/* 0x35E */ s16 field_0x35E;
/* 0x360 */ u8 field_0x360[0x364 - 0x360];
/* 0x364 */ s16 field_0x364;
/* 0x366 */ s16 field_0x366;
/* 0x368 */ u8 field_0x368[0x368 + 0x2B8 - 0x368];
};
enum {
@@ -515,6 +527,10 @@ public:
static dMap_RoomInfo_c* mNowRoomInfoP;
};
BOOL dMap_GetTopBottomFloorNo(dStage_dt_c* stag, u8* bottom_p, u8* top_p);
u8 dMap_GetFloorNoForDmap(dStage_dt_c* stag, int param_2, f32 param_3);
u8 dMap_GetFloorNo(dStage_dt_c*, f32);
inline void dMap_drawPoint(u8 param_1, f32 param_2, f32 param_3, f32 param_4, s8 param_5, s16 param_6, u8 param_7, u8 param_8, u8 param_9) {
dMap_c::drawPointSingle(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8, param_9);
}
+25 -25
View File
@@ -65,7 +65,7 @@ public:
void itemScale();
void floorInit();
void mapMove();
void mapOffsetY();
f32 mapOffsetY();
void itemnameMove();
void dnameSet();
void itemnameSet();
@@ -145,36 +145,36 @@ public:
/* 0x1DB0 */ char* mTxtNote[2];
/* 0x1DB8 */ char* mTxtDummy[2];
/* 0x1DC0 */ char field_0x1DC0[0x1DCC - 0x1DC0];
/* 0x1DCC */ f32 field_0x1DCC[4];
/* 0x1DDC */ f32 field_0x1DDC[4];
/* 0x1DEC */ f32 field_0x1DEC[4];
/* 0x1DFC */ f32 field_0x1DFC[4];
/* 0x1DCC */ f32 mCarOfsX[4];
/* 0x1DDC */ f32 mCarOfsY[4];
/* 0x1DEC */ f32 mCarFloorOfsX[4];
/* 0x1DFC */ f32 mCarFloorOfsY[4];
/* 0x1E0C */ s16 field_0x1E0C;
/* 0x1E0E */ s16 field_0x1E0E;
/* 0x1E10 */ s16 field_0x1E10;
/* 0x1E12 */ s16 field_0x1E12;
/* 0x1E14 */ s16 field_0x1E14;
/* 0x1E16 */ u16 field_0x1E16;
/* 0x1E18 */ s16 field_0x1E18;
/* 0x1E1A */ s16 field_0x1E1A;
/* 0x1E1C */ s16 field_0x1E1C;
/* 0x1E1E */ u16 field_0x1E1E;
/* 0x1E20 */ s16 field_0x1E20;
/* 0x1E22 */ s16 field_0x1E22;
/* 0x1E24 */ s16 field_0x1E24;
/* 0x1E26 */ s16 field_0x1E26;
/* 0x1E28 */ s16 field_0x1E28;
/* 0x1E2A */ s16 field_0x1E2A;
/* 0x1E2C */ s16 field_0x1E2C;
/* 0x1E2E */ u8 field_0x1E2E;
/* 0x1E0E */ s16 mMapDrawOffsetY;
/* 0x1E10 */ s16 mCurFloorMapY;
/* 0x1E12 */ s16 mFloorListOffsetY;
/* 0x1E14 */ s16 mBossFloorListOffsetY;
/* 0x1E16 */ s16 mMpmkPosX;
/* 0x1E18 */ s16 mMpmkPosY;
/* 0x1E1A */ s16 mMpmkSizeX;
/* 0x1E1C */ s16 mMpmkSizeY;
/* 0x1E1E */ s16 mMpp1PosX;
/* 0x1E20 */ s16 mMpp1PosY;
/* 0x1E22 */ s16 mMpp1SizeX;
/* 0x1E24 */ s16 mMpp1SizeY;
/* 0x1E26 */ s16 mMppGapY;
/* 0x1E28 */ s16 mLnkTimer2;
/* 0x1E2A */ s16 mLnkTimer1;
/* 0x1E2C */ s16 mBossEyeTimer;
/* 0x1E2E */ u8 mSelectItem;
/* 0x1E2F */ u8 mCurFloor;
/* 0x1E30 */ u8 mBossFloor;
/* 0x1E31 */ u8 mTopFloor;
/* 0x1E32 */ u8 mBottomFloor;
/* 0x1E33 */ u8 field_0x1E33;
/* 0x1E34 */ bool field_0x1E34;
/* 0x1E33 */ bool mLnkTexFlip2;
/* 0x1E34 */ bool mLnkTexFlip1;
/* 0x1E35 */ bool field_0x1E35;
/* 0x1E36 */ u8 field_0x1E36;
/* 0x1E36 */ u8 mBossEyeState;
/* 0x1E37 */ u8 pad;
}; // Size: 0x1E38
+3
View File
@@ -999,6 +999,9 @@ struct FuncTable {
dStage_Func function;
};
dStage_KeepDoorInfo * dStage_GetKeepDoorInfo();
s8 dStage_roomRead_dt_c_GetReverbStage(roomRead_class&, int);
int dStage_mapInfo_GetOceanZ(stage_map_info_class*);
int dStage_mapInfo_GetOceanX(stage_map_info_class*);
+1 -1
View File
@@ -292,7 +292,7 @@ dStage_FloorInfo_dt_c* dMap_GetFloorInfoDtPFromFloorNo(dStage_FloorInfo_c* floor
}
/* 80045AEC-80045C24 .text dMap_GetFloorNoForDmap__FP11dStage_dt_cif */
int dMap_GetFloorNoForDmap(dStage_dt_c* stag, int param_2, f32 param_3) {
u8 dMap_GetFloorNoForDmap(dStage_dt_c* stag, int param_2, f32 param_3) {
dStage_FloorInfo_c* floor = stag->getFloorInfo();
int floorNo = Floor_1F;
dStage_FloorInfo_dt_c* floorData = dMap_GetFloorInfoDtP(floor, param_3);
+115 -11
View File
@@ -4,6 +4,7 @@
//
#include "d/dolzel.h" // IWYU pragma: keep
#include "d/d_map.h"
#include "d/d_menu_dmap.h"
#include "d/d_stage.h"
#include "f_op/f_op_msg_mng.h"
@@ -258,20 +259,20 @@ void dMenu_Dmap_c::screenSet() {
mMskPane.mInitAlpha = 0x82;
mMsk0Pane.mInitAlpha = 0x82;
field_0x1E16 = mpmk.mPosCenterOrig.x;
field_0x1E18 = mpmk.mPosCenterOrig.y;
field_0x1E1A = mpmk.mSizeOrig.x;
field_0x1E1C = mpmk.mSizeOrig.y;
field_0x1E1E = mpp1pane.mPosCenterOrig.x;
field_0x1E20 = mpp1pane.mPosCenterOrig.y;
field_0x1E22 = mpp1pane.mSizeOrig.x;
field_0x1E24 = mpp1pane.mSizeOrig.y;
mMpmkPosX = mpmk.mPosCenterOrig.x;
mMpmkPosY = mpmk.mPosCenterOrig.y;
mMpmkSizeX = mpmk.mSizeOrig.x;
mMpmkSizeY = mpmk.mSizeOrig.y;
mMpp1PosX = mpp1pane.mPosCenterOrig.x;
mMpp1PosY = mpp1pane.mPosCenterOrig.y;
mMpp1SizeX = mpp1pane.mSizeOrig.x;
mMpp1SizeY = mpp1pane.mSizeOrig.y;
J2DPane* p2 = scrn->search('mpp2');
f32 h = p2->getHeight();
p2 = scrn->search('mpp2');
J2DPane* p1 = scrn->search('mpp1');
field_0x1E26 = p1->mBounds.i.y - (p2->mBounds.i.y + h);
mMppGapY = p1->mBounds.i.y - (p2->mBounds.i.y + h);
}
/* 801A92D4-801A9364 .text dMap_isBossDoor__FP21stage_tgsc_data_class */
@@ -291,7 +292,109 @@ BOOL dMap_isBossDoor(stage_tgsc_data_class* i_stage) {
/* 801A9364-801A98EC .text initialize__12dMenu_Dmap_cFv */
void dMenu_Dmap_c::initialize() {
/* Nonmatching */
f32 yPos = dComIfGp_getPlayer(0)->current.pos.y;
mNm00Pane.mUserArea = 0;
mCurFloor = dMap_GetFloorNo(&dComIfGp_getStage(), yPos + mapOffsetY());
mBossFloor = 0xFF;
dStage_KeepDoorInfo* doorInfo = dStage_GetKeepDoorInfo();
stage_tgsc_data_class* tgsc = doorInfo->mDrTgData;
for (int i = 0; i < doorInfo->num; tgsc++, i++) {
if (dMap_isBossDoor(tgsc)) {
mBossFloor = dMap_GetFloorNo(&dComIfGp_getStage(), tgsc->base.position.y);
}
}
dMap_GetTopBottomFloorNo(&dComIfGp_getStage(), &mTopFloor, &mBottomFloor);
int stayNo = dComIfGp_roomControl_getStayNo();
u8 floorNo = dMap_GetFloorNoForDmap(&dComIfGp_getStage(), stayNo, yPos + mapOffsetY());
dmap_c->init(mMpmkPosX, mMpmkPosY, mMpmkSizeX, mMpmkSizeY,
mMpp1PosX, mMpp1PosY, mMpp1SizeX, mMpp1SizeY, mMppGapY,
mTopFloor, mBottomFloor, stayNo, floorNo, 0xFF);
mCurFloorMapY = mMpp1PosY + (mCurFloor - 0x80) * (mMpp1SizeY + mMppGapY);
mMapDrawOffsetY = 0x1E0;
mFloorListOffsetY = (mFbPanes[0].mPosCenterOrig.y - mFbPanes[1].mPosCenterOrig.y) * (mBottomFloor - mCurFloor);
if (mBossFloor != 0xFF) {
mBossFloorListOffsetY = (mFbPanes[0].mPosCenterOrig.y - mFbPanes[1].mPosCenterOrig.y) * (mBottomFloor - mBossFloor);
} else {
mBossFloorListOffsetY = 0;
}
s16 y = mMpmkPosY + mMapDrawOffsetY;
dMap_Dmap_c* dmap = dmap_c;
dmap->field_0x35C = mMpmkPosX;
dmap->field_0x35E = y;
y = mCurFloorMapY + mMapDrawOffsetY;
dmap = dmap_c;
dmap->field_0x364 = mMpp1PosX;
dmap->field_0x366 = y;
for (int i = 0; i < (mTopFloor - mBottomFloor + 1); i++) {
J2DPane* pane = mFlPanes[i].pane;
changeFloorTexture(pane, mBottomFloor - 0x76 + i);
}
mLnkTimer2 = cM_rndF(100.0f) + 100.0f;
mLnkTimer1 = cM_rndF(50.0f) + 100.0f;
mLnkTexFlip2 = false;
mLnkTexFlip1 = false;
mLnkPanes[1].mUserArea = 0;
mLnkPanes[2].mUserArea = 0;
mBossPane.mUserArea = 100;
mBos2Pane.mUserArea = cM_rndF(200.0f) + 300.0f;
mBossEyeState = 0;
mBossEyeTimer = ((int)(cM_rndF(18.0f) + 40.0f)) << 1;
f32 scale = 0.5f;
mCarOfsX[0] = -(mItPanes[0].mSizeOrig.x) * scale;
mCarOfsY[0] = (mItPanes[0].mSizeOrig.y) * scale;
mCarOfsX[1] = (mItPanes[0].mSizeOrig.x) * scale;
mCarOfsY[1] = (mItPanes[0].mSizeOrig.y) * scale;
mCarOfsX[2] = -(mItPanes[0].mSizeOrig.x) * scale;
mCarOfsY[2] = -(mItPanes[0].mSizeOrig.y) * scale;
mCarOfsX[3] = (mItPanes[0].mSizeOrig.x) * scale;
mCarOfsY[3] = -(mItPanes[0].mSizeOrig.y) * scale;
mCarFloorOfsX[0] = -(mFbPanes[0].mSizeOrig.x) * scale;
mCarFloorOfsY[0] = (mFbPanes[0].mSizeOrig.y) * scale;
mCarFloorOfsX[1] = (mFbPanes[0].mSizeOrig.x) * scale;
mCarFloorOfsY[1] = (mFbPanes[0].mSizeOrig.y) * scale;
mCarFloorOfsX[2] = -(mFbPanes[0].mSizeOrig.x) * scale;
mCarFloorOfsY[2] = -(mFbPanes[0].mSizeOrig.y) * scale;
mCarFloorOfsX[3] = (mFbPanes[0].mSizeOrig.x) * scale;
mCarFloorOfsY[3] = -(mFbPanes[0].mSizeOrig.y) * scale;
floorInit();
itemScale();
if (!dComIfGs_isDungeonItemMap()) {
mItPanes[0].pane->hide();
mIkPanes[0].pane->hide();
mIpPanes[0].pane->hide();
}
if (!dComIfGs_isDungeonItemBossKey()) {
mItPanes[1].pane->hide();
mIkPanes[1].pane->hide();
mIpPanes[1].pane->hide();
}
if (!dComIfGs_isDungeonItemCompass()) {
mItPanes[2].pane->hide();
mIkPanes[2].pane->hide();
mIpPanes[2].pane->hide();
}
if (!dComIfGs_isDungeonItemCompass() || mBossFloor == 0xFF) {
mBossPane.pane->hide();
}
noteInit();
if ((mSelectItem == 0 && dComIfGs_isDungeonItemMap()) ||
(mSelectItem == 1 && dComIfGs_isDungeonItemBossKey()) ||
(mSelectItem == 2 && dComIfGs_isDungeonItemCompass())
) {
dComIfGp_setDoStatusForce(dActStts_INFO_e);
} else {
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
dComIfGp_setDoStatus(dActStts_BLANK_e);
}
}
/* 801A98EC-801AAE10 .text treasureSet__12dMenu_Dmap_cFv */
@@ -375,8 +478,9 @@ void dMenu_Dmap_c::mapMove() {
}
/* 801AD000-801AD130 .text mapOffsetY__12dMenu_Dmap_cFv */
void dMenu_Dmap_c::mapOffsetY() {
f32 dMenu_Dmap_c::mapOffsetY() {
/* Nonmatching */
return 0.0f;
}
/* 801AD130-801AD1A8 .text itemnameMove__12dMenu_Dmap_cFv */