From f93c5ba62c18e7ae593fa034a6d0bd52bc95e55e Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Thu, 2 Jul 2026 17:43:07 -0700 Subject: d_message mostly done (#1097) * d_message mostly done * fopMsgM_selectMessageGet fix --- include/JSystem/J2DGraph/J2DPane.h | 2 +- include/JSystem/J2DGraph/J2DTextBox.h | 6 +- include/JSystem/JKernel/JKRArchive.h | 4 ++ include/d/d_drawlist.h | 11 +-- include/d/d_kankyo.h | 1 + include/d/d_message.h | 68 ++++++++++++++++-- include/d/d_meter.h | 45 +++--------- include/f_op/f_op_msg_mng.h | 128 +++++++++++++++++++--------------- include/m_Do/m_Do_controller_pad.h | 10 +++ 9 files changed, 172 insertions(+), 103 deletions(-) (limited to 'include') diff --git a/include/JSystem/J2DGraph/J2DPane.h b/include/JSystem/J2DGraph/J2DPane.h index 19b3a3a4..5bd81613 100644 --- a/include/JSystem/J2DGraph/J2DPane.h +++ b/include/JSystem/J2DGraph/J2DPane.h @@ -89,7 +89,7 @@ public: void hide() { mVisible = false; } bool isVisible() { return mVisible; } - void getBounds() {} + const JGeometry::TBox2& getBounds() { return mBounds; } const JGeometry::TBox2& getGlbBounds() { return mGlobalBounds; } f32 getRotate() const { return mRotation; } void place(const JGeometry::TBox2&) {} diff --git a/include/JSystem/J2DGraph/J2DTextBox.h b/include/JSystem/J2DGraph/J2DTextBox.h index 6e70e765..5a663fa2 100644 --- a/include/JSystem/J2DGraph/J2DTextBox.h +++ b/include/JSystem/J2DGraph/J2DTextBox.h @@ -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); diff --git a/include/JSystem/JKernel/JKRArchive.h b/include/JSystem/JKernel/JKRArchive.h index 169b9a1c..53f149cd 100644 --- a/include/JSystem/JKernel/JKRArchive.h +++ b/include/JSystem/JKernel/JKRArchive.h @@ -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 diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h index 2ecf5589..6ab8c6c9 100644 --- a/include/d/d_drawlist.h +++ b/include/d/d_drawlist.h @@ -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]; }; diff --git a/include/d/d_kankyo.h b/include/d/d_kankyo.h index 913cbf2b..d8666cd3 100644 --- a/include/d/d_kankyo.h +++ b/include/d/d_kankyo.h @@ -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 */ diff --git a/include/d/d_message.h b/include/d/d_message.h index 6105e3a8..6b5971c1 100644 --- a/include/d/d_message.h +++ b/include/d/d_message.h @@ -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 */ diff --git a/include/d/d_meter.h b/include/d/d_meter.h index b9affa4e..8bb14863 100644 --- a/include/d/d_meter.h +++ b/include/d/d_meter.h @@ -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; diff --git a/include/f_op/f_op_msg_mng.h b/include/f_op/f_op_msg_mng.h index 8e0b0491..2965cea1 100644 --- a/include/f_op/f_op_msg_mng.h +++ b/include/f_op/f_op_msg_mng.h @@ -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; }; diff --git a/include/m_Do/m_Do_controller_pad.h b/include/m_Do/m_Do_controller_pad.h index bf5ef949..bc8c9ada 100644 --- a/include/m_Do/m_Do_controller_pad.h +++ b/include/m_Do/m_Do_controller_pad.h @@ -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(); -- cgit v1.2.3