d_meter_HIO debug (#2959)

This commit is contained in:
Jcw87 2025-12-16 06:54:05 -08:00 committed by GitHub
parent 497aa20aa9
commit c8104b6d62
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 2986 additions and 71 deletions

View File

@ -43,6 +43,7 @@ public:
enum EFlags {
EFlags_READ = (1 << 0),
EFlags_WRITE = (1 << 1),
EFlags_UNK_0x4 = (1 << 2),
EFlags_DEFAULT_EXT = (1 << 4),
EFlags_UNK_0x20 = (1 << 5),
EFlags_HAS_SUFFIX = (1 << 6),

View File

@ -293,6 +293,10 @@ public:
updateCheckBoxSub(mode, id, value, mask, param_4);
}
void updateRadioButton(u32 mode, s16* pSrc, u32 param_3) {
updateSelectorSub(mode, (uintptr_t)pSrc, *pSrc, param_3);
}
void editComboBoxItem(u32 param_0, u32 param_1, const char* param_2, s32 param_3, u32 param_4);
void openMessageBox(void* param_0, u32 style, const char* message, const char* title);

View File

@ -3,6 +3,30 @@
#include "d/d_map_path_dmap.h"
class dMap_HIO_list_c : public dMpath_HIO_n::hioList_c {
public:
virtual void copySrcToHio();
virtual void copyHioToDst();
virtual void copyBufToHio(const char*);
};
class dMap_HIO_c : public dMpath_HIO_file_base_c {
public:
dMap_HIO_c();
virtual void listenPropertyEvent(const JORPropertyEvent*);
virtual void genMessage(JORMContext*);
virtual u32 addString(char*, u32, u32);
virtual u32 addData(char*, u32, u32);
virtual void copyReadBufToData(const char*, s32);
virtual u32 addStringBinary(char*, u32, u32);
/* 0x04 */ u8 field_0x4[0x08 - 0x04];
/* 0x08 */ dMap_HIO_list_c field_0x8;
static dMap_HIO_c* mMySelfPointer;
static dMpath_HIO_n::list_s l_list;
};
struct dMap_prm_res_s {
/* 0x000 */ dMpath_RGB5A3_palDt_s palette_data[51];
/* 0x198 */ u8 field_0x198;

View File

@ -3,6 +3,46 @@
#include "d/d_drawlist.h"
namespace dMpath_HIO_n {
struct list_s {
/* 0x00 */ void* field_0x0;
/* 0x04 */ u32 field_0x4;
};
class hioList_c {
public:
/* 0x00 */ list_s field_0x0;
virtual ~hioList_c() {}
virtual void copySrcToHio() = 0;
virtual void copyHioToDst() = 0;
virtual void copyBufToHio(const char*) = 0;
void set(const list_s& param_1) { field_0x0 = param_1; }
void gen(JORMContext*);
void update(JORMContext*);
u32 addString(char*, u32, u32) const;
u32 addStringBinary(char*, u32, u32) const;
};
}
class dMpath_HIO_file_base_c : public JORReflexible {
public:
virtual ~dMpath_HIO_file_base_c() {}
virtual u32 addString(char*, u32, u32) = 0;
virtual u32 addData(char*, u32, u32) = 0;
virtual void copyReadBufToData(const char*, s32) = 0;
virtual u32 addStringBinary(char* param_1, u32 param_2, u32 param_3) {
return addString(param_1, param_2, param_3);
}
BOOL writeHostioTextFile(const char*);
BOOL writeBinaryTextFile(const char*);
BOOL writeBinaryFile(const char*);
void binaryDump(const void*, u32);
bool readBinaryFile(const char*);
};
class dDrawPath_c : public dDlst_base_c {
public:
struct line_class {

View File

@ -22,6 +22,16 @@ class dMenu_ItemExplain_c;
class J2DPictureEx;
struct dMenu_DmapMapCtrl_c;
class dMdm_HIO_c : public JORReflexible {
public:
virtual ~dMdm_HIO_c() {}
virtual void genMessage(JORMContext*);
/* 0x04 */ u8 field_0x4[0xb8 - 0x4];
static dMdm_HIO_c* mMySelfPointer;
};
class renderingDmap_c : public renderingPlusDoor_c {
public:
virtual ~renderingDmap_c() {}

View File

@ -273,7 +273,7 @@ private:
/* 0x020 */ dMenu_Fmap_world_data_c* mpWorldData;
/* 0x024 */ dMenu_Fmap_region_data_c* mpRegionData[8];
/* 0x044 */ dMenu_Fmap_stage_data_c* mpStageData[8];
/* 0x064 */ JKRAramArchive* mpMapArchive;
/* 0x064 */ JKRArchive* mpMapArchive;
/* 0x068 */ JKRArchive* mpResArchive;
/* 0x06C */ dMenuMapCommon_c::RoomData_c* mpRoomData[8];
/* 0x08C */ dMenu_Fmap_field_data_c* mpFieldDat;
@ -334,10 +334,13 @@ private:
/* 0x313 */ bool mAreaNameSet;
};
class dMf_HIO_c {
class dMf_HIO_c : public JORReflexible {
public:
dMf_HIO_c();
virtual ~dMf_HIO_c() {}
#if DEBUG
virtual void genMessage(JORMContext*);
#endif
/* 0x04 */ u8 field_0x4[4];
/* 0x08 */ f32 mBackAnimeStep;

View File

@ -30,6 +30,10 @@ struct dMfm_HIO_prm_res_src_s {
static const dMfm_HIO_prm_res_src_s m_other;
};
struct dMfm_HIO_prm_res_dst_s {
static const void* m_res;
};
class renderingFmap_c : public dRenderingFDAmap_c {
public:
enum palette_e {
@ -97,9 +101,9 @@ public:
bool isDrawEnable() { return mDrawEnable; }
/* 0x24 */ Mtx mViewMtx;
/* 0x54 */ cXyz mEye;
/* 0x60 */ cXyz mCenter;
/* 0x6C */ cXyz mUp;
/* 0x54 */ Vec mEye;
/* 0x60 */ Vec mCenter;
/* 0x6C */ Vec mUp;
/* 0x78 */ dMenu_Fmap_world_data_c* mpWorldData;
/* 0x7C */ dMenu_Fmap_region_data_c* mpRegionData;
/* 0x80 */ dMenu_Fmap_stage_data_c* mpStageData;
@ -120,7 +124,42 @@ public:
/* 0xB9 */ u8 mSaveTableNo;
/* 0xBA */ u8 mVisitedRoomSaveTableNo;
/* 0xBB */ bool mDrawEnable;
};
};
class dMfm_HIO_list_c : public dMpath_HIO_n::hioList_c {
public:
virtual void copySrcToHio();
virtual void copyHioToDst();
virtual void copyBufToHio(const char*);
};
class dMfm_HIO_c : public dMpath_HIO_file_base_c {
public:
dMfm_HIO_c();
virtual ~dMfm_HIO_c() { mMySelfPointer = NULL; }
virtual void listenPropertyEvent(const JORPropertyEvent*);
virtual void genMessage(JORMContext*);
virtual u32 addString(char* param_1, u32 param_2, u32 param_3) { return field_0xc.addString(param_1, param_2, param_3); }
virtual u32 addData(char* param_1, u32 param_2, u32 param_3) {
(void)param_2;
(void)param_3;
memcpy(param_1, dMfm_HIO_prm_res_dst_s::m_res, 366);
return 366;
}
virtual void copyReadBufToData(const char* param_1, s32 param_2) {
(void)param_2;
field_0xc.copyBufToHio(param_1);
}
virtual u32 addStringBinary(char* param_1, u32 param_2, u32 param_3) { return field_0xc.addStringBinary(param_1, param_2, param_3); }
/* 0x04 */ u8 field_0x4[0x8 - 0x4];
/* 0x08 */ dMenu_FmapMap_c* field_0x8;
/* 0x0C */ dMfm_HIO_list_c field_0xc;
/* 0x18 */ u8 field_0x18;
static dMfm_HIO_c* mMySelfPointer;
static dMpath_HIO_n::list_s l_list;
};
class dMenu_FmapMap_c : public renderingFmap_c {
public:
@ -166,12 +205,17 @@ public:
}
ResTIMG* getResTIMGPointer() { return mResTIMG; }
#if DEBUG
dMenu_Fmap_world_data_c* getWorldData() { return mpWorldData; }
#endif
/* 0xBC */ ResTIMG* mResTIMG;
/* 0xC0 */ u8* mMapImage_p;
/* 0xC4 */ dMfm_prm_res_s* m_res;
/* 0xC8 */ dMpath_RGB5A3_palDt_s* m_palette;
/* 0xCC */ int field_0xcc;
#if DEBUG
/* 0xD0 */ dMenu_Fmap_world_data_c* mpWorldData;
#endif
/* 0xD0 */ f32 mZoomRate;
/* 0xD4 */ int mLineNo;
/* 0xD8 */ bool mFlash;
@ -180,8 +224,10 @@ public:
/* 0xE0 */ int mLastStageCursor;
/* 0xE4 */ u8 mRegionCursor;
/* 0xE5 */ u8 mFlashTimer;
/* 0xE8 */ u8* mFlashRooms;
/* 0xEC */ int mFlashRoomCount;
/* 0xE8 */ u8* mp_roomList;
/* 0xEC */ int m_roomListNumber;
static dMenu_FmapMap_c* mMySelfPointer;
};

View File

@ -11,7 +11,7 @@
struct subJOREventCallbackListNode : public JOREventCallbackListNode {
subJOREventCallbackListNode() : JOREventCallbackListNode(0x81000000, 0x81000000, true) {}
virtual int JORAct(u32, const char*);
virtual BOOL JORAct(u32, const char*);
virtual ~subJOREventCallbackListNode() {}
};
@ -578,12 +578,14 @@ public:
/* 0xA8 */ u8 mAnimDebug;
}; // Size: 0xAC
class dMeter_map_HIO_c;
class dMeter_drawHIO_c : public JORReflexible {
public:
dMeter_drawHIO_c();
virtual ~dMeter_drawHIO_c() {
#if DEBUG
field_0x8_debug = 0;
field_0x8_debug = NULL;
#endif
}
@ -602,7 +604,7 @@ public:
/* 0x000 */ // vtable
/* 0x004 */ s8 field_0x4;
#if DEBUG
int field_0x8_debug;
dMeter_map_HIO_c* field_0x8_debug;
#endif
/* 0x008 */ f32 mLifeTopPosX;
/* 0x00C */ f32 mLifeTopPosY;
@ -1140,6 +1142,10 @@ public:
/* 0x179 */ bool mIconDisplay[22];
}; // Size: 0x190
class dMf_HIO_c;
class dMdm_HIO_c;
class dMfm_HIO_c;
class dMeter_fmapHIO_c : public JORReflexible {
public:
enum {
@ -1199,13 +1205,13 @@ public:
#if DEBUG
/* 0x008 */ subJOREventCallbackListNode* mpEvtCallBack;
#endif
/* 0x008 */ JKRAramArchive* mpArcData;
/* 0x008 */ JKRArchive* mpArcData;
/* 0x00C */ void* mpArcFile;
/* 0x010 */ void* mpDecompBuf;
/* 0x014 */ void* field_0x14;
/* 0x018 */ void* field_0x18;
/* 0x014 */ dMfm_HIO_c* field_0x14;
/* 0x018 */ dMdm_HIO_c* field_0x18;
#if DEBUG
/* 0x020 */ u8 unk_0x20[4];
/* 0x020 */ dMf_HIO_c* field_0x20;
#endif
/* 0x01C */ MapBlinkAnime mMapBlink[3];
/* 0x094 */ s16 mDisplayFrameNum;

View File

@ -5,6 +5,52 @@
class J2DPicture;
class dMap_c;
class dMap_HIO_c;
class dMeter_map_HIO_c : public JORReflexible {
public:
dMeter_map_HIO_c();
virtual void listenPropertyEvent(const JORPropertyEvent*);
virtual void genMessage(JORMContext*);
virtual ~dMeter_map_HIO_c();
void update();
static dMeter_map_HIO_c* mMySelfPointer;
private:
/* 0x04 */ u8 field_0x4;
/* 0x05 */ u8 field_0x5;
/* 0x06 */ u8 field_0x6;
/* 0x07 */ u8 field_0x7;
/* 0x08 */ s16 field_0x8;
/* 0x0A */ s16 field_0xa;
/* 0x0C */ s16 field_0xc;
/* 0x0E */ s16 field_0xe;
/* 0x10 */ s16 field_0x10;
/* 0x12 */ s16 field_0x12;
/* 0x14 */ s16 field_0x14;
/* 0x16 */ u8 field_0x16;
/* 0x17 */ u8 field_0x17;
/* 0x18 */ s16 field_0x18;
/* 0x1A */ s16 field_0x1a;
/* 0x1C */ s16 field_0x1c;
/* 0x1E */ s16 field_0x1e;
/* 0x20 */ s16 field_0x20;
/* 0x22 */ s16 field_0x22;
/* 0x24 */ s16 field_0x24;
/* 0x26 */ u8 field_0x26;
/* 0x27 */ u8 field_0x27[0x2a - 0x27];
/* 0x2A */ s16 field_0x2a;
/* 0x2C */ u8 field_0x2c;
/* 0x2D */ u8 field_0x2d;
/* 0x2E */ u8 field_0x2e;
/* 0x2F */ u8 field_0x2f;
/* 0x30 */ s16 field_0x30;
/* 0x32 */ u8 field_0x32;
/* 0x33 */ u8 field_0x33;
/* 0x34 */ dMap_HIO_c* field_0x34;
};
class dMeterMap_c : public dDlst_base_c {
public:
static bool isEnableDispMap();
@ -40,7 +86,14 @@ public:
enum { MAP_SIZE_TYPE_BIG = 2, MAP_SIZE_TYPE_SMALL = 3, MAP_SIZE_TYPE_STAGE = 7 };
static dMeterMap_c* mMySelfPointer;
private:
#if DEBUG
/* 0x04 */ u8 field_0x4_debug;
/* 0x08 */ int field_0x8_debug;
#endif
/* 0x04 */ J2DPicture* mMapJ2DPicture;
/* 0x08 */ dMap_c* mMap;
/* 0x0C */ s32 mIsCompass;

View File

@ -11,6 +11,33 @@
#include "SSystem/SComponent/c_math.h"
#include "d/d_com_inf_game.h"
#if DEBUG
dMap_HIO_c g_dMap_HIO;
void dMap_HIO_c::genMessage(JORMContext* mctx) {
mctx->genLabel("エリアマップ パスマップ 調整項目", 0, 0, NULL, -1, -1, 512, 24);
mctx->genLabel("初期化等は 下位フォルダ[パレット]込み です", 0, 0, NULL, -1, -1, 512, 24);
mctx->genButton("初期化", 0x4000003, 0, NULL, -1, -1, 512, 24);
mctx->genButton("HOSTIO順テキストファイル書き出し", 0x4000004, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリ順テキスト書き出し", 0x4000005, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリファイル書き出し", 0x4000006, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリファイル読み込み", 0x4000007, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリダンプ", 0x4000008, 0, NULL, -1, -1, 512, 24);
field_0x8.gen(mctx);
mctx->genButton("ID_INFO_ROOM_MAX_TEXEL", 0x4000009, 0, NULL, -1, -1, 512, 24);
mctx->genButton("ID_INFO_SWITCH", 0x400000a, 0, NULL, -1, -1, 512, 24);
}
dMap_HIO_c::dMap_HIO_c() {
mMySelfPointer = this;
field_0x8.set(l_list);
}
void dMap_HIO_c::listenPropertyEvent(const JORPropertyEvent*) {
// DEBUG NONMATCHING
}
#endif
f32 renderingAmap_c::getIconSize(u8 i_icon) const {
static f32 const l_iconSize[] = {
0.12f, 0.12f, 0.08f, 0.12f, 0.08f, 0.16f, 0.12f, 0.0f, 0.12f,

View File

@ -6,6 +6,7 @@
#include "d/dolzel.h" // IWYU pragma: keep
#include "JSystem/J2DGraph/J2DGrafContext.h"
#include "JSystem/JHostIO/JORFile.h"
#include "JSystem/JUtility/JUTTexture.h"
#include "d/d_com_inf_game.h"
#include "d/d_map_path.h"
@ -16,11 +17,14 @@ void dMpath_n::dTexObjAggregate_c::create() {
79, 80, 77, 78, 76, 81, 82,
};
for (int i = 0; i < 7; i++) {
mp_texObj[i] = new GXTexObj();
ResTIMG* image = (ResTIMG*)dComIfG_getObjectRes("Always", data[i]);
mDoLib_setResTimgObj(image, mp_texObj[i], 0, NULL);
for (int lp1 = 0; lp1 < 7; lp1++) {
mp_texObj[lp1] = new GXTexObj();
JUT_ASSERT(70, mp_texObj[lp1] != NULL);
ResTIMG* image = (ResTIMG*)dComIfG_getObjectRes("Always", data[lp1]);
JUT_ASSERT(72, image != NULL);
JUT_ASSERT(73, image->minFilter == GX_NEAR);
JUT_ASSERT(74, image->magFilter == GX_NEAR);
mDoLib_setResTimgObj(image, mp_texObj[lp1], 0, NULL);
}
}
@ -31,6 +35,159 @@ void dMpath_n::dTexObjAggregate_c::remove() {
}
}
#if DEBUG
void dMpath_HIO_n::hioList_c::gen(JORMContext* mctx) {
static const char* number[] = {
"00", "01", "02", "03", "04", "05", "06", "07",
"08", "09", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23",
"24", "25", "26", "27", "28", "29", "30", "31",
"32", "33", "34", "35", "36", "37", "38", "39",
"40", "41", "42", "43", "44", "45", "46", "47",
"48", "49", "50", "51", "52", "53", "54", "55",
"56", "57", "58", "59", "60", "61", "62", "63",
};
// DEBUG NONMATCHING
}
void dMpath_HIO_n::hioList_c::update(JORMContext* mctx) {
// DEBUG NONMATCHING
}
u32 dMpath_HIO_n::hioList_c::addString(char* param_1, u32 param_2, u32 param_3) const {
// DEBUG NONMATCHING
}
u32 dMpath_HIO_n::hioList_c::addStringBinary(char* param_1, u32 param_2, u32 param_3) const {
// DEBUG NONMATCHING
}
BOOL dMpath_HIO_file_base_c::writeHostioTextFile(const char* param_1) {
JORFile file;
BOOL result = 0;
const char* r27 = "すべてのファイル(*.*)\0*.*\0";
if (param_1) {
r27 = param_1;
}
if (file.open(JORFile::EFlags_WRITE | JORFile::EFlags_UNK_0x4, r27, NULL, NULL, NULL)) {
const u32 bufSize = 4000;
u32 size = 0;
char buffer[bufSize];
memset(buffer, 0, bufSize);
size = addString(buffer, size, bufSize);
JUT_ASSERT(732, size < bufSize);
file.writeData(buffer, s16(size));
file.close();
OSReport("write append success!::%6d\n", size);
result = 1;
} else {
OSReport("write append failure!\n");
result = 0;
}
return result;
}
BOOL dMpath_HIO_file_base_c::writeBinaryTextFile(const char* param_1) {
JORFile file;
BOOL result = 0;
const char* r27 = "すべてのファイル(*.*)\0*.*\0";
if (param_1) {
r27 = param_1;
}
if (file.open(JORFile::EFlags_WRITE | JORFile::EFlags_UNK_0x4, r27, NULL, NULL, NULL)) {
const u32 bufSize = 10000;
u32 size = 0;
char buffer[bufSize];
memset(buffer, 0, bufSize);
size = addStringBinary(buffer, size, bufSize);
JUT_ASSERT(762, size < bufSize);
file.writeData(buffer, s16(size));
file.close();
OSReport("write append success!::%6d\n", size);
result = 1;
} else {
OSReport("write append failure!\n");
result = 0;
}
return result;
}
BOOL dMpath_HIO_file_base_c::writeBinaryFile(const char* param_1) {
JORFile file;
BOOL result = 0;
const char* r27 = "すべてのファイル(*.*)\0*.*\0";
if (param_1) {
r27 = param_1;
}
if (file.open(JORFile::EFlags_WRITE | JORFile::EFlags_UNK_0x4, r27, NULL, NULL, NULL)) {
const u32 bufSize = 2000;
u32 size = 0;
char buffer[bufSize];
memset(buffer, 0, bufSize);
size = addData(buffer, size, bufSize);
JUT_ASSERT(794, size < bufSize);
file.writeData(buffer, s16(size));
file.close();
OSReport("write append success!::%6d\n", size);
result = 1;
} else {
OSReport("write append failure!\n");
result = 0;
}
return result;
}
void dMpath_HIO_file_base_c::binaryDump(const void* param_1, u32 param_2) {
int r26 = 0;
u8* r30 = (u8*)param_1;
u8* r25 = r30;
int r28;
for (int i = 0; i < param_2; i++, r30++) {
r28 = i % 8;
if (r28 == 0) {
OSReport("%04x : ",i);
}
OSReport("%02x", u8(*r30));
if (r28 == 3) {
OSReport(" - ");
} else if (r28 == 7) {
OSReport("\n");
} else {
OSReport(" ");
}
}
if (r28 != 7) {
OSReport("\n");
}
OSReport("startAdr<%08x>dataSize<%d><0x%04x>\n", param_1, param_2, param_2);
}
bool dMpath_HIO_file_base_c::readBinaryFile(const char* param_1) {
JORFile file;
bool result = false;
const char* r26 = "すべてのファイル(*.*)\0*.*\0";
if (param_1) {
r26 = param_1;
}
if (file.open(JORFile::EFlags_READ, r26, NULL, NULL, NULL)) {
s32 r28 = file.getFileSize();
char* buf = new char[r28];
JUT_ASSERT(855, buf != 0);
file.readData(buf, r28);
copyReadBufToData(buf, r28);
OSReport("write read success!::%6d\n", r28);
result = true;
delete[] buf;
buf = NULL;
file.close();
} else {
OSReport("write append failure!\n");
result = false;
}
return result;
}
#endif
void dDrawPath_c::rendering(dDrawPath_c::line_class const* p_line) {
if (isDrawType(p_line->field_0x0)) {
int width = getLineWidth(p_line->field_0x1);
@ -94,13 +251,14 @@ void dDrawPath_c::rendering(dDrawPath_c::floor_class const* p_floor) {
}
}
void dDrawPath_c::rendering(dDrawPath_c::room_class const* p_room) {
if (p_room != NULL) {
GXSetArray(GX_VA_POS, p_room->mpFloatData, 8);
floor_class* floor = p_room->mpFloor;
void dDrawPath_c::rendering(dDrawPath_c::room_class const* room) {
JUT_ASSERT(1043, room != NULL);
if (room != NULL) {
GXSetArray(GX_VA_POS, room->mpFloatData, 8);
floor_class* floor = room->mpFloor;
if (floor != NULL) {
for (int i = 0; i < p_room->mFloorNum; i++) {
for (int i = 0; i < room->mFloorNum; i++) {
if (isRenderingFloor(floor->mFloorNo)) {
rendering(floor);
}
@ -171,7 +329,7 @@ void dRenderingFDAmap_c::setTevSettingIntensityTextureToCI() const {
GXSetNumTevStages(2);
GXSetNumChans(1);
GXSetNumTexGens(1);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 60, GX_FALSE, 125);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 60);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_KONST, GX_CC_TEXC, GX_CC_C1);

View File

@ -100,6 +100,19 @@ dMf_HIO_c::dMf_HIO_c() {
mMoyaAlpha = 95;
}
#if DEBUG
void dMf_HIO_c::genMessage(JORMContext* mctx) {
mctx->genLabel("\n■枠BTKアニメフレーム", 0, 0, NULL, -1, -1, 512, 24);
mctx->genSlider("フレーム数", &mBackAnimeStep, 0.0, 10.0, 0, NULL, -1, -1, 512, 24);
mctx->genLabel("\n■枠の明度", 0, 0, NULL, -1, -1, 512, 24);
mctx->genSlider("アルファ", &mBaseBackAlpha, 0, 255, 0, NULL, -1, -1, 512, 24);
mctx->genLabel("\n■もやもやBTKアニメフレーム", 0, 0, NULL, -1, -1, 512, 24);
mctx->genSlider("フレーム数", &mTopAnimeStep, 0.0, 10.0, 0, NULL, -1, -1, 512, 24);
mctx->genLabel("\n■もやもやの明度", 0, 0, NULL, -1, -1, 512, 24);
mctx->genSlider("アルファ", &mMoyaAlpha, 0, 255, 0, NULL, -1, -1, 512, 24);
}
#endif
const char* dMenuFmap_getStartStageName(void* i_fieldData) {
static char virtual_stage[8];
stage_stag_info_class* stag_info = dComIfGp_getStage()->getStagInfo();
@ -115,6 +128,7 @@ const char* dMenuFmap_getStartStageName(void* i_fieldData) {
return virtual_stage;
}
}
JUT_ASSERT(203, 0);
}
return dComIfGp_getStartStageName();
}
@ -175,6 +189,7 @@ dMenu_Fmap_c::dMenu_Fmap_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i
}
mpTalkHeap = JKRCreateExpHeap(0x32000, mpHeap, false);
JUT_ASSERT(359, mpTalkHeap != 0);
field_0x200 = 0;
mIsWarpMap = false;
@ -323,9 +338,12 @@ dMenu_Fmap_c::~dMenu_Fmap_c() {
void dMenu_Fmap_c::_create() {
mpHeap->getTotalFreeSize();
mpDraw2DBack = new dMenu_Fmap2DBack_c();
JUT_ASSERT(594, mpDraw2DBack != NULL);
mpDraw2DBack->setRegionCursor(dComIfGp_getNowLevel() - 1);
mpDraw2DTop = new dMenu_Fmap2DTop_c(mpHeap, mpStick);
JUT_ASSERT(599, mpDraw2DTop != NULL);
mpMenuFmapMap = new dMenu_FmapMap_c();
JUT_ASSERT(603, mpMenuFmapMap != NULL);
mpMenuFmapMap->_create(dMeter2Info_get2DWidth(), dMeter2Info_get2DHeight(),
dMeter2Info_get2DWidth(), dMeter2Info_get2DHeight(), mpFmapMapRes);
@ -2225,7 +2243,7 @@ bool dMenu_Fmap_c::readFieldMapData(void** o_data, char const* i_path, bool para
*o_data = res;
return true;
} else {
size = dLib_getExpandSizeFromAramArchive(mpMapArchive, i_path);
size = dLib_getExpandSizeFromAramArchive((JKRAramArchive*)mpMapArchive, i_path);
}
}
@ -2326,7 +2344,7 @@ bool dMenu_Fmap_c::readRoomDzsData(void** i_data, u32 param_1, char const* i_pat
size = mpMapArchive->getExpandedResSize(res);
mpMapArchive->removeResource(res);
} else {
size = dLib_getExpandSizeFromAramArchive(mpMapArchive, path);
size = dLib_getExpandSizeFromAramArchive((JKRAramArchive*)mpMapArchive, path);
}
*i_data = mpHeap->alloc(size, 0x20);

View File

@ -1,8 +1,11 @@
#include "d/dolzel.h" // IWYU pragma: keep
#include "JSystem/JHostIO/JORFile.h"
#include "JSystem/JHostIO/JORServer.h"
#include "JSystem/JUtility/JUTTexture.h"
#include "SSystem/SComponent/c_math.h"
#include "d/d_com_inf_game.h"
#include "d/d_debug_viewer.h"
#include "d/d_menu_fmap_map.h"
#include "m_Do/m_Do_graphic.h"
@ -82,9 +85,19 @@ bool renderingFmap_c::isSwitch(dDrawPath_c::group_class const* i_group) {
int renderingFmap_c::getPointStagePathInnerNo(dMenu_Fmap_region_data_c* i_regionData,
f32 i_offsetX, f32 i_offsetY, int i_stageNo,
int* o_stageNo, int* o_roomNo) {
return i_regionData->getPointStagePathInnerNo(mPosX + i_offsetX * mCmPerTexel,
mPosZ + i_offsetY * mCmPerTexel,
i_stageNo, o_stageNo, o_roomNo);
f32 f31 = mPosX + i_offsetX * mCmPerTexel;
f32 f30 = mPosZ + i_offsetY * mCmPerTexel;
int result = i_regionData->getPointStagePathInnerNo(f31, f30, i_stageNo, o_stageNo, o_roomNo);
#if DEBUG
if (o_stageNo) {
dDbVw_Report(48, 72, "stNo%d", *o_stageNo);
}
if (o_roomNo) {
dDbVw_Report(48, 84, "rmNo%d", *o_roomNo);
}
#endif
return result;
}
void renderingFmap_c::preDrawPath() {
@ -263,9 +276,118 @@ dDrawPath_c::room_class* renderingFmap_c::getNextRoomPointer() {
return room;
}
#if DEBUG
dMfm_HIO_c g_mfmHIO;
dMfm_HIO_c::dMfm_HIO_c() {
mMySelfPointer = this;
field_0xc.set(l_list);
field_0x18 = 0;
}
void dMfm_HIO_c::genMessage(JORMContext* mctx) {
// DEBUG NONMATCHING
mctx->genLabel("フィールドマップ パスマップ 調整項目", 0, 0, NULL, -1, -1, 512, 24);
mctx->genButton("初期化", 0x4000005, 0, NULL, -1, -1, 512, 24);
mctx->genButton("HOSTIO順テキストファイル書き出し", 0x4000006, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリ順テキスト書き出し", 0x4000007, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリファイル書き出し", 0x4000008, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリファイル読み込み", 0x4000009, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリダンプ", 0x400000a, 0, NULL, -1, -1, 512, 24);
mctx->genLabel("■■リソースに入らない調整項目■■", 0, 0, NULL, -1, -1, 512, 24);
field_0xc.gen(mctx);
}
void dMfm_HIO_c::listenPropertyEvent(const JORPropertyEvent* property) {
// DEBUG NONMATCHING
JORReflexible::listenPropertyEvent(property);
if (field_0x18) {
return;
}
if (!dMfm_HIO_prm_res_dst_s::m_res) {
field_0x18 = 1;
JORMessageBox("フィールドマップを開けた状態で操作して下さい","注意!",0x10);
field_0x18 = 0;
return;
}
JORFile file;
JORMContext* mctx;
switch (reinterpret_cast<u32>(property->id)) {
case 0x4000002: {
int i = 0;
if (!field_0x8) {
return;
}
dMenu_Fmap_world_data_c* worldData = field_0x8->getWorldData();
if (!worldData) {
return;
}
for (dMenu_Fmap_region_data_c* regionData = worldData->getMenuFmapRegionTop(); regionData; regionData = regionData->getNextData()) {
int j = 0;
for (dMenu_Fmap_stage_data_c* stageData = regionData->getMenuFmapStageDataTop(); stageData; stageData = stageData->getNextData()) {
dMenu_Fmap_stage_arc_data_c* stageArc = stageData->getStageArc();
if (stageArc) {
OSReport("R<%2d>S<%2d> SaveTable<%2d>ArriveSaveTable<%2d>\n", i, j, stageArc->getSaveTableNo(), stageArc->getVisitedRoomSaveTableNo());
}
dMenu_Fmap_room_data_c* roomData = stageData->getFmapRoomDataTop();
for (int k = 0; roomData; k++) {
roomData = roomData->getNextData();
}
j++;
}
i++;
}
break;
}
case 0x4000006:
writeHostioTextFile(NULL);
break;
case 0x4000007:
writeBinaryTextFile(NULL);
break;
case 0x4000008:
writeBinaryFile(NULL);
break;
case 0x4000009:
readBinaryFile(NULL);
mctx = attachJORMContext(8);
mctx->startUpdateNode(this);
field_0xc.update(mctx);
mctx->endUpdateNode();
releaseJORMContext(mctx);
break;
case 0x4000005:
field_0xc.copySrcToHio();
mctx = attachJORMContext(8);
mctx->startUpdateNode(this);
field_0xc.update(mctx);
mctx->endUpdateNode();
releaseJORMContext(mctx);
break;
case 0x400000a:
binaryDump(dMfm_HIO_prm_res_dst_s::m_res, 366);
break;
}
field_0xc.copyHioToDst();
}
void dMfm_HIO_list_c::copySrcToHio() {
// DEBUG NONMATCHING
}
void dMfm_HIO_list_c::copyHioToDst() {
// DEBUG NONMATCHING
}
void dMfm_HIO_list_c::copyBufToHio(const char*) {
// DEBUG NONMATCHING
}
#endif
void dMenu_FmapMap_c::setFmapPaletteColor(renderingFmap_c::palette_e i_palette, u8 i_r,
u8 i_g, u8 i_b, u8 i_a) {
int color;
JUT_ASSERT(1835, m_palette != NULL);
if (i_a >= 0xe0) {
color = ((i_r & 0xf8) << 7) | ((i_g & 0xf8) << 2) | (i_b >> 3) | (1 << 15);
} else {
@ -286,13 +408,16 @@ void dMenu_FmapMap_c::setFmapPaletteColor(renderingFmap_c::palette_e i_palette,
}
bool dMenu_FmapMap_c::isFlashRoomNoCheck(int i_roomNo) const {
JUT_ASSERT(1874, mp_roomList != NULL);
JUT_ASSERT(1875, m_roomListNumber != NULL);
bool ret = false;
u8* ptr = mFlashRooms;
for (int i = 0; i < mFlashRoomCount; ptr++, i++) {
u8* ptr = mp_roomList;
for (int i = 0; i < m_roomListNumber; i++) {
if (*ptr == i_roomNo) {
ret = true;
break;
}
ptr++;
}
return ret;
}
@ -337,8 +462,12 @@ dMenu_FmapMap_c::dMenu_FmapMap_c() {
mLastStageCursor = 0;
mRegionCursor = 0;
mFlashTimer = 0;
mFlashRooms = NULL;
mFlashRoomCount = 0;
mp_roomList = NULL;
m_roomListNumber = 0;
#if DEBUG
dMfm_HIO_prm_res_dst_s::m_res = NULL;
mMySelfPointer = this;
#endif
}
@ -444,8 +573,8 @@ void dMenu_FmapMap_c::setFlashOn(int i_regionNo, int i_stageNo, u8* i_rooms, int
mFlash = true;
mRegionCursor = i_regionNo;
mStageCursor = (u8)i_stageNo;
mFlashRooms = i_rooms;
mFlashRoomCount = i_roomCount;
mp_roomList = i_rooms;
m_roomListNumber = i_roomCount;
}
const GXColor* dMenu_FmapMap_c::getLineColor(int param_0, int param_1) {
@ -510,7 +639,7 @@ const GXColor* dMenu_FmapMap_c::getColor(int param_0) {
const GXColor* list = l_dungeon_onColor;
if (mFlash && mRegionCursor == getNowDrawRegionNo() && mStageNo == mStageCursor) {
if (mFlashRooms == NULL) {
if (mp_roomList == NULL) {
list = l_dungeon_pointColor;
} else if (isFlashRoomNoCheck(mRoomNo)) {
list = l_dungeon_pointColor;

File diff suppressed because it is too large Load Diff

View File

@ -15,6 +15,58 @@
#include "f_op/f_op_overlap_mng.h"
#include "m_Do/m_Do_controller_pad.h"
#if DEBUG
dMeter_map_HIO_c g_meter_map;
dMeter_map_HIO_c::dMeter_map_HIO_c() {
dMeter_map_HIO_c::mMySelfPointer = this;
field_0x34 = dMap_HIO_c::mMySelfPointer;
field_0x5 = 0;
field_0x6 = 0;
field_0x8 = -38;
field_0xa = 380;
field_0xc = 35;
field_0xe = 380;
field_0x10 = 35;
field_0x12 = 421;
field_0x14 = -36;
field_0x16 = 0;
field_0x17 = 0;
field_0x18 = 1;
field_0x1a = 144;
field_0x1c = 144;
field_0x1e = 216;
field_0x20 = 216;
field_0x22 = 96;
field_0x24 = 96;
field_0x26 = 0;
field_0x2a = 144;
field_0x2c = 0;
field_0x2d = 180;
field_0x2e = 0;
field_0x2f = 0;
field_0x30 = 144;
field_0x32 = 0;
field_0x33 = 0;
}
void dMeter_map_HIO_c::genMessage(JORMContext* mctx) {
// DEBUG NONMATCHING
}
void dMeter_map_HIO_c::listenPropertyEvent(const JORPropertyEvent*) {
// DEBUG NONMATCHING
}
void dMeter_map_HIO_c::update() {
JORMContext* mctx = attachJORMContext(8);
mctx->startUpdateNode(this);
mctx->updateRadioButton(2, &field_0x18, 1);
mctx->endUpdateNode();
releaseJORMContext(mctx);
}
#endif
bool dMeterMap_c::isEnableDispMap() {
bool minimapEnable = false;
stage_stag_info_class* pstag = dComIfGp_getStage()->getStagInfo();
@ -150,6 +202,11 @@ bool dMeterMap_c::isMapOpenCheck() {
}
dMeterMap_c::dMeterMap_c(J2DScreen* i_scrn) {
#if DEBUG
field_0x4_debug = 0;
field_0x8_debug = 0;
dMeterMap_c::mMySelfPointer = this;
#endif
_create(i_scrn);
}