d_message mostly done (#1097)

* d_message mostly done

* fopMsgM_selectMessageGet fix
This commit is contained in:
TakaRikka
2026-07-02 17:43:07 -07:00
committed by GitHub
parent 873bb82e00
commit f93c5ba62c
15 changed files with 1837 additions and 659 deletions
+1 -1
View File
@@ -89,7 +89,7 @@ public:
void hide() { mVisible = false; }
bool isVisible() { return mVisible; }
void getBounds() {}
const JGeometry::TBox2<f32>& getBounds() { return mBounds; }
const JGeometry::TBox2<f32>& getGlbBounds() { return mGlobalBounds; }
f32 getRotate() const { return mRotation; }
void place(const JGeometry::TBox2<f32>&) {}
+4 -2
View File
@@ -66,8 +66,10 @@ public:
char* getStringPtr() const;
s32 setString(const char*, ...);
// TODO
void setFontColor(JUtility::TColor, JUtility::TColor) {}
void setFontColor(JUtility::TColor i_charColor, JUtility::TColor i_GradientColor) {
mCharColor = i_charColor;
mGradColor = i_GradientColor;
}
virtual ~J2DTextBox();
virtual bool setConnectParent(bool);
+4
View File
@@ -236,4 +236,8 @@ inline u32 JKRReadIdResource(void* buffer, u32 bufferSize, u16 id, JKRArchive* a
return JKRReadResource(buffer, bufferSize, id, arc);
}
inline u32 JKRReadTypeResource(void* buffer, u32 bufferSize, u32 tag, const char* name, JKRArchive* arc) {
return JKRArchive::readTypeResource(buffer, bufferSize, tag, name, arc);
}
#endif
+6 -5
View File
@@ -149,9 +149,10 @@ public:
void setScale(f32, f32);
void setScroll(int, s16, s16);
virtual void draw();
void setAlpha(u8) {}
void setBlackColor(GXColor& c) { mC0 = c; }
void setWhiteColor(GXColor& c) { mC1 = c; }
void setAlpha(u8 i_alpha) { mBlack.a = i_alpha; }
void setBlackColor(GXColor& c) { mBlack = c; }
void setWhiteColor(GXColor& c) { mWhite = c; }
public:
struct TexEntry {
@@ -169,8 +170,8 @@ public:
/* 0x0A */ s16 mY1;
/* 0x0C */ f32 mScaleX;
/* 0x10 */ f32 mScaleY;
/* 0x14 */ GXColor mC0;
/* 0x18 */ GXColor mC1;
/* 0x14 */ GXColor mBlack;
/* 0x18 */ GXColor mWhite;
/* 0x1C */ TexEntry mTex[2];
};
+1
View File
@@ -467,5 +467,6 @@ void dKy_contrast_flg_set(u8);
u8 dKy_contrast_flg_get();
BOOL dKyr_player_overhead_bg_chk();
void dKy_usonami_set(f32 param_0);
GXColorS10* dKy_Get_DifCol();
#endif /* D_KANKYO_D_KANKYO_H */
+64 -4
View File
@@ -1,21 +1,81 @@
#ifndef D_MESSAGE_H
#define D_MESSAGE_H
#include "dolphin/types.h"
#include "f_op/f_op_msg_mng.h"
#include "d/d_drawlist.h"
class sub_msg2_class;
class dDlst_2DMSG2_c {
class dDlst_2DMSG2_c : public dDlst_base_c {
public:
void setActorP(sub_msg2_class*) {}
virtual ~dDlst_2DMSG2_c() {}
void setActorP(sub_msg2_class* i_actorp) { actorP = i_actorp; }
void draw();
void outFontDraw();
/* 0x4 */ sub_msg2_class* actorP;
};
class dDlst_2DCopy_c {
class dDlst_2DCopy_c : public dDlst_base_c {
public:
virtual ~dDlst_2DCopy_c() {}
void draw();
/* 0x4 */ u8 field_0x4[0x8 - 0x4];
/* 0x8 */ void* copyTex;
};
struct sub_msg2_class {
/* 0x000 */ msg_class msg;
/* 0x0FC */ u8 field_0x0FC[0x100 - 0x0FC];
/* 0x100 */ JKRExpHeap* Heap;
/* 0x104 */ JMSMesgEntry_c mesgEntry;
/* 0x11C */ fopMsgM_msgDataProc_c msgDataProc[3];
/* 0x8FC */ fopMsgM_msgGet_c msgGet;
/* 0x90C */ mesg_header* head_p;
/* 0x910 */ fopMsgM_pane_class text_pane[3];
/* 0x9B8 */ fopMsgM_pane_class textSdw_pane[3];
/* 0xA60 */ fopMsgM_pane_class ruby_pane[3];
/* 0xB08 */ fopMsgM_pane_class rubySdw_pane[3];
/* 0xBB0 */ fopMsgM_pane_class field_0xbb0;
/* 0xBE8 */ fopMsgM_pane_class field_0xbe8;
/* 0xC20 */ fopMsgM_pane_class field_0xc20;
/* 0xC58 */ fopMsgM_pane_class field_0xc58;
/* 0xC90 */ fopMsgM_pane_class field_0xc90;
/* 0xCC8 */ fopMsgM_pane_class field_0xcc8;
/* 0xD00 */ fopMsgM_pane_class field_0xd00[3];
/* 0xDA8 */ fopMsgM_pane_class field_0xda8[3];
/* 0xE50 */ JUTFont* mx;
/* 0xE54 */ JUTFont* rx;
/* 0xE58 */ ResTIMG* Tex[2];
/* 0xE60 */ char* message;
/* 0xE64 */ char* output_text[3];
/* 0xE70 */ char* output_ruby[3];
/* 0xE7C */ char* output_textSdw[3];
/* 0xE88 */ char* output_rubySdw[3];
/* 0xE94 */ f32 field_0xe94;
/* 0xE98 */ int field_0xe98;
/* 0xE9C */ u8 field_0xe9c;
/* 0xE9D */ u8 field_0xe9d;
/* 0xE9E */ u8 field_0xe9e;
/* 0xEA0 */ u32 mesgNumber;
/* 0xEA4 */ u16 colorNo;
/* 0xEA8 */ f32 field_0xea8;
/* 0xEAC */ f32 field_0xeac;
/* 0xEB0 */ int field_0xeb0;
/* 0xEB4 */ int field_0xeb4;
/* 0xEB8 */ int field_0xeb8;
/* 0xEBC */ int field_0xebc;
/* 0xEC0 */ u8 field_0xec0;
/* 0xEC4 */ int field_0xec4;
/* 0xEC8 */ int field_0xec8;
/* 0xECC */ int field_0xecc[3];
/* 0xED8 */ u8 field_0xED8[0xEDD - 0xED8];
/* 0xEDD */ u8 field_0xedd;
/* 0xEDE */ u8 field_0xede;
/* 0xEDF */ u8 field_0xedf[4][3];
};
#endif /* D_MESSAGE_H */
+9 -36
View File
@@ -386,42 +386,15 @@ public:
void genMessage(JORMContext* ctx);
/* 0x04 */ s8 mNo;
/* 0x05 */ u8 field_0x5;
/* 0x06 */ u8 field_0x6;
/* 0x07 */ u8 field_0x7;
/* 0x08 */ u8 field_0x8;
/* 0x09 */ u8 field_0x9;
/* 0x0A */ u8 field_0xa;
/* 0x0B */ u8 field_0xb;
/* 0x0C */ u8 field_0xc;
/* 0x0D */ u8 field_0xd;
/* 0x0E */ u8 field_0xe;
/* 0x0F */ u8 field_0xf;
/* 0x10 */ u8 field_0x10;
/* 0x11 */ u8 field_0x11;
/* 0x12 */ u8 field_0x12;
/* 0x13 */ u8 field_0x13;
/* 0x14 */ u8 field_0x14;
/* 0x15 */ u8 field_0x15;
/* 0x16 */ u8 field_0x16;
/* 0x17 */ u8 field_0x17;
/* 0x18 */ u8 field_0x18;
/* 0x19 */ u8 field_0x19;
/* 0x1A */ u8 field_0x1a;
/* 0x1B */ u8 field_0x1b;
/* 0x1C */ u8 field_0x1c;
/* 0x1D */ u8 field_0x1d;
/* 0x1E */ u8 field_0x1e;
/* 0x1F */ u8 field_0x1f;
/* 0x20 */ u8 field_0x20;
/* 0x21 */ u8 field_0x21;
/* 0x22 */ u8 field_0x22;
/* 0x23 */ u8 field_0x23;
/* 0x24 */ u8 field_0x24;
/* 0x25 */ u8 field_0x25;
/* 0x26 */ u8 field_0x26;
/* 0x27 */ u8 field_0x27;
/* 0x28 */ u8 field_0x28;
/* 0x05 */ GXColor field_0x5;
/* 0x09 */ GXColor field_0x9;
/* 0x0D */ GXColor field_0xd;
/* 0x11 */ GXColor field_0x11;
/* 0x15 */ GXColor field_0x15;
/* 0x19 */ GXColor field_0x19;
/* 0x1D */ GXColor field_0x1d;
/* 0x21 */ GXColor field_0x21;
/* 0x25 */ GXColor field_0x25;
/* 0x29 */ u8 field_0x29;
/* 0x2A */ u8 field_0x2a;
/* 0x2B */ u8 field_0x2b;
+73 -55
View File
@@ -97,6 +97,10 @@ public:
JMSMesgEntry_c getMesgEntry(mesg_header*);
const char* getMessage(mesg_header*);
u32 getMesgNumber() {
return (mGroupID << 8) | mResMsgNo;
}
public:
/* 0x04 */ u32 mMsgIdx;
/* 0x08 */ u16 mGroupID;
@@ -150,7 +154,7 @@ public:
void dataInit();
f32 charLength(int, int, bool);
f32 rubyLength(int, bool);
void stringLength();
u32 stringLength();
void stringShift();
void iconSelect(int, u8);
void iconIdxRefresh();
@@ -237,14 +241,14 @@ public:
#endif
void getIconColor(int) {}
void getIconNum(int) {}
void getIconPosX(int) {}
void getIconPosY(int) {}
u8 getIconNum(int i_no) { return field_0x281[i_no]; }
int getIconPosX(int i_no) { return field_0x168[i_no]; }
int getIconPosY(int i_no) { return field_0x1A4[i_no]; }
void getIconScale(int) {}
void setCharSpace(int) {}
void setRubyCharSpace(int) {}
void setLineSpace(int) {}
void setCharSpace(int i_space) { charSpace = i_space; }
void setRubyCharSpace(int i_space) { rubyCharSpace = i_space; }
void setLineSpace(int i_space) { lineSpace = i_space; }
void setOutMessage(char* param_0, char* param_1, char* param_2, char* param_3) {
field_0x60 = param_0;
@@ -258,63 +262,77 @@ public:
}
void setSelectMessage(char*, char*, char*, char*) {}
void setMesgEntry(JMSMesgEntry_c*) {}
void setMesgEntry(JMSMesgEntry_c* i_entry) { mesgEntry = i_entry; }
void dec_keyWaitTimer() {}
void dec_waitTimer() {}
void getCharAlpha() {}
void getGradAlpha() {}
void getLineCount() {}
void getMesgStatus() {}
void getNowCursorPos() {}
void getRCharAlpha() {}
void getRGradAlpha() {}
u8 getCharAlpha() { return field_0x293; } // ?
u8 getGradAlpha() { return field_0x292; } // ?
int getLineCount() { return lineCount; }
u8 getMesgStatus() { return mesgStatus; }
f32 getNowCursorPos() { return field_0x20; }
u8 getRCharAlpha() { return field_0x291; } // ?
u8 getRGradAlpha() { return field_0x290; } // ?
void getSelectFlag() {}
void getSelectLength() {}
void getStringColor() {}
void get_waitTimer() {}
void resetNowLine() {}
void resetNowLine() { nowLine = 0; }
void selectArrow(J2DPicture*) {}
void setActorPosition(cXyz*) {}
void setAimLine(int) {}
void setAimLine(int i_line) { aimLine = i_line; }
void setAutoSendFlagOff() {}
void setBmgData(char*) {}
void setCenterLineWidth(int) {}
void setCharAlpha(u8, u8, u8, u8) {}
void setCount(int) {}
void setFont(JUTFont*) {}
void setFontSize(int) {}
void setBmgData(char* i_data) { bmgData = i_data; }
void setCenterLineWidth(int i_width) { centerLineWidth = i_width; }
void setCharAlpha(u8 param_0, u8 param_1, u8 param_2, u8 param_3) {
field_0x290 = param_0;
field_0x291 = param_1;
field_0x292 = param_2;
field_0x293 = param_3;
}
void setCount(int i_count) { count = i_count; }
void setFont(JUTFont* i_font) { font[0] = i_font; }
void setFontSize(int i_size) { fontSize = i_size; }
void setHandSendFlagOff() {}
void setLineCount(int) {}
void setLineWidth(int) {}
void setRubyFont(JUTFont*) {}
void setRubyFontSize(int) {}
void setLineCount(int i_count) { lineCount = i_count; }
void setLineWidth(int i_width) { lineWidth = i_width; }
void setRubyFont(JUTFont* i_font) { font[1] = i_font; }
void setRubyFontSize(int i_size) { rubyFontSize = i_size; }
void setSelectFlagOff() {}
void setSelectNum(u8) {}
void setSendSpeed(int) {}
void setSpaceFlagOff() {}
void setSendSpeed(int i_speed) { sendSpeed = i_speed; }
void setSpaceFlagOff() { spaceFlag = 0; }
void setSpaceFlagOn() {}
void setSpaceTimer(int) {}
void setSpaceTimer(int i_timer) { spaceTimer = i_timer; }
void setStringColor(u32) {}
void set_waitTimer(int) {}
void set_waitTimerZero() {}
void shortCut() {}
void shortCut() {
field_0x299 = 1;
}
// fake, replace with real inline once it's figured out
u32 get_0x220(int i) {
return field_0x220[i];
}
public:
/* 0x004 */ JUTFont* font[2];
/* 0x00C */ JMSMesgEntry_c* field_0x0C;
/* 0x00C */ JMSMesgEntry_c* mesgEntry;
/* 0x010 */ u32 field_0x10;
/* 0x014 */ f32 field_0x14;
/* 0x018 */ f32 field_0x18;
/* 0x01C */ f32 field_0x1C;
/* 0x020 */ f32 field_0x20;
/* 0x020 */ f32 field_0x20; // NowCursorPos?
/* 0x024 */ f32 field_0x24;
/* 0x028 */ f32 field_0x28;
/* 0x02C */ u32 field_0x2C;
/* 0x030 */ u32 field_0x30;
/* 0x034 */ u32 field_0x34;
/* 0x038 */ u32 field_0x38;
/* 0x03C */ const char* field_0x3C;
/* 0x03C */ const char* bmgData;
/* 0x040 */ char* field_0x40;
/* 0x044 */ char* field_0x44;
/* 0x048 */ char* field_0x48;
@@ -330,28 +348,28 @@ public:
/* 0x0E8 */ s32 field_0xE8[4];
/* 0x0F8 */ s32 field_0xF8[4];
/* 0x108 */ s32 field_0x108[4];
/* 0x118 */ u32 field_0x118;
/* 0x11C */ s32 field_0x11C;
/* 0x120 */ s32 field_0x120;
/* 0x124 */ s32 field_0x124;
/* 0x128 */ s32 field_0x128;
/* 0x12C */ u32 field_0x12C;
/* 0x130 */ s32 field_0x130;
/* 0x118 */ int count;
/* 0x11C */ int charSpace;
/* 0x120 */ int lineSpace;
/* 0x124 */ int rubyCharSpace;
/* 0x128 */ int lineWidth;
/* 0x12C */ int centerLineWidth;
/* 0x130 */ int lineCount;
/* 0x134 */ u32 field_0x134;
/* 0x138 */ u32 field_0x138;
/* 0x13C */ u32 field_0x13C;
/* 0x138 */ int nowLine;
/* 0x13C */ int aimLine;
/* 0x140 */ u32 field_0x140;
/* 0x144 */ s32 field_0x144;
/* 0x144 */ int fontSize;
/* 0x148 */ u32 field_0x148;
/* 0x14C */ s32 field_0x14C;
/* 0x14C */ int rubyFontSize;
/* 0x150 */ int field_0x150;
/* 0x154 */ u32 field_0x154;
/* 0x158 */ u32 field_0x158;
/* 0x15C */ u32 field_0x15C;
/* 0x160 */ u32 field_0x160;
/* 0x164 */ int field_0x164;
/* 0x168 */ s32 field_0x168[0xF];
/* 0x1A4 */ u32 field_0x1A4[0xF];
/* 0x15C */ int spaceTimer;
/* 0x160 */ int sendSpeed;
/* 0x164 */ int field_0x164; // keyWaitTimer?
/* 0x168 */ int field_0x168[0xF]; // IconPosX
/* 0x1A4 */ int field_0x1A4[0xF]; // IconPosY
/* 0x1A4 */ u32 field_0x1E0[0xF];
/* 0x21C */ int field_0x21C;
/* 0x21C */ u32 field_0x220[0xF];
@@ -363,7 +381,7 @@ public:
/* 0x270 */ f32 field_0x270;
/* 0x274 */ f32 field_0x274;
/* 0x278 */ f32 field_0x278;
/* 0x27C */ u8 field_0x27C;
/* 0x27C */ u8 mesgStatus;
/* 0x27D */ u8 field_0x27D;
/* 0x27E */ u8 field_0x27E;
/* 0x27F */ u8 field_0x27F;
@@ -373,17 +391,17 @@ public:
/* 0x291 */ u8 field_0x291;
/* 0x292 */ u8 field_0x292;
/* 0x293 */ u8 field_0x293;
/* 0x294 */ u8 field_0x294;
/* 0x294 */ u8 selectFlag;
/* 0x295 */ u8 field_0x295;
#if VERSION > VERSION_DEMO
/* 0x296 */ u8 field_0x296;
#endif
/* 0x297 */ u8 field_0x297;
/* 0x298 */ u8 field_0x298;
/* 0x297 */ u8 autoSendFlag;
/* 0x298 */ u8 handSendFlag;
/* 0x299 */ u8 field_0x299;
/* 0x29A */ u8 field_0x29A;
/* 0x29B */ u8 field_0x29B;
/* 0x29C */ u8 field_0x29C;
/* 0x29C */ u8 spaceFlag;
/* 0x29D */ u8 field_0x29D;
};
+10
View File
@@ -33,6 +33,16 @@ extern interface_of_controller_pad g_mDoCPd_cpadInfo[4];
#define CPad_CHECK_TRIG_RIGHT(padNo) (g_mDoCPd_cpadInfo[padNo].mButtonTrig.right)
#define CPad_CHECK_TRIG_LEFT(padNo) (g_mDoCPd_cpadInfo[padNo].mButtonTrig.left)
#define CPad_GET_STICK_POS_X(padNo) (g_mDoCPd_cpadInfo[padNo].mMainStickPosX)
#define CPad_GET_STICK_POS_Y(padNo) (g_mDoCPd_cpadInfo[padNo].mMainStickPosY)
#define CPad_GET_STICK_VALUE(padNo) (g_mDoCPd_cpadInfo[padNo].mMainStickValue)
#define CPad_GET_STICK_ANGLE(padNo) (g_mDoCPd_cpadInfo[padNo].mMainStickAngle)
#define CPad_GET_SUBSTICK_POS_X(padNo) (g_mDoCPd_cpadInfo[padNo].mCStickPosX)
#define CPad_GET_SUBSTICK_POS_Y(padNo) (g_mDoCPd_cpadInfo[padNo].mCStickPosY)
#define CPad_GET_SUBSTICK_VALUE(padNo) (g_mDoCPd_cpadInfo[padNo].mCStickValue)
#define CPad_GET_SUBSTICK_ANGLE(padNo) (g_mDoCPd_cpadInfo[padNo].mCStickAngle)
int mDoCPd_Create();
int mDoCPd_Read();