diff options
| author | Benjamin ROELANDT <benjamin.roelandt@gmail.com> | 2026-08-02 17:45:21 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-02 11:45:21 -0400 |
| commit | dbc093a3cfefac7f38088aa14c07115390d14fe5 (patch) | |
| tree | edf45d983965649c16535eef7c2443c403643595 /include | |
| parent | 6b911411f071a174d794ced3a583fceff8073446 (diff) | |
* First version of d_scope, everything is matching on all version, probably missing a few inline on undocumented field that i did not manage to find
* Readd stuff previously deleted but badly tested
* Rename some fields and a few more inline
doesn't improve matching but i think it looks more genuine
* clean up syntax
* move d_scptyp enum and add forgotten inline
* build fix
* replace seStart call with proper enum
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/d_com_inf_game.h | 34 | ||||
| -rw-r--r-- | include/d/d_meter.h | 4 | ||||
| -rw-r--r-- | include/d/d_scope.h | 71 | ||||
| -rw-r--r-- | include/f_op/f_op_msg.h | 7 | ||||
| -rw-r--r-- | include/f_op/f_op_msg_mng.h | 26 |
5 files changed, 117 insertions, 25 deletions
diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index fd99d3cd..bcc7db8b 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -474,6 +474,12 @@ public: u8 getScopeType() { return mScopeType; } void setScopeType(u8 type) { mScopeType = type; } + void setItemScopeWipeTimer(u8 timer) { mItemScopeWipeTimer = timer; } + f32 getItemScopeWipeScale() { return mItemScopeWipeScale; } + void setItemScopeWipeScale(f32 scale) { mItemScopeWipeScale = scale; } + bool getScopeWipeFlag() { return mScopeWipeFlag; } + void setScopeWipeFlag(bool flag) { mScopeWipeFlag = flag; } + u8 getOperateWind() { return mOperateWind; } void setOperateWindCancelOff() { mOperateWind = 0; } void setOperateWindChangeOff() { mOperateWind = 1; } @@ -602,6 +608,7 @@ public: void setActionIconArchive(JKRArchive * pArc) { mpActionIconArchive = pArc; } JKRArchive* getActionIconArchive() { return mpActionIconArchive; } void setScopeResArchive(JKRArchive * pArc) { mpScopeResArchive = pArc; } + JKRArchive* getScopeResArchive() { return mpScopeResArchive; } JKRArchive* getCameraResArchive() { return mpCameraResArchive; } void setCameraResArchive(JKRArchive * pArc) { mpCameraResArchive = pArc; } JKRArchive* getSwimResArchive() { return mpSwimResArchive; } @@ -772,7 +779,7 @@ public: /* 0x4 */ s8 mCameraID; } mPlayerInfo[1]; /* 0x48AC */ fopAc_ac_c* mpPlayerPtr[3]; // 0: Link, 1: Partner, 2: Ship - /* 0x48B8 */ f32 field_0x48b8; + /* 0x48B8 */ f32 mItemScopeWipeScale; /* 0x48BC */ f32 mItemLifeCount; /* 0x48C0 */ s32 mItemRupeeCount; /* 0x48C4 */ s32 mAirMeter; @@ -800,7 +807,7 @@ public: /* 0x4924 */ u16 mItemNowLife; /* 0x4926 */ s16 mItemNowRupee; /* 0x4928 */ bool mItemSwimTimerStatus; - /* 0x4929 */ u8 field_0x4929; + /* 0x4929 */ u8 mItemScopeWipeTimer; /* 0x492A */ u8 mMesgStatus; /* 0x492B */ u8 mScopeMesgStatus; /* 0x492C */ u8 field_0x492c; @@ -855,7 +862,7 @@ public: /* 0x4965 */ u8 field_0x4965; /* 0x4966 */ char mInputPassword[0x11]; /* 0x4977 */ u8 mMesgBgm; - /* 0x4978 */ u8 field_0x4978; + /* 0x4978 */ u8 mScopeWipeFlag; /* 0x4979 */ u8 m2dShow; /* 0x497A */ u8 field_0x497a; /* 0x497B */ u8 field_0x497B[0x497C - 0x497B]; @@ -2752,6 +2759,26 @@ inline void dComIfGp_setScopeType(u8 type) { g_dComIfG_gameInfo.play.setScopeType(type); } +inline void dComIfGp_setItemScopeWipeTimer(u8 timer) { + g_dComIfG_gameInfo.play.setItemScopeWipeTimer(timer); +} + +inline f32 dComIfGp_getItemScopeWipeScale() { + return g_dComIfG_gameInfo.play.getItemScopeWipeScale(); +} + +inline void dComIfGp_setItemScopeWipeScale(f32 scale) { + g_dComIfG_gameInfo.play.setItemScopeWipeScale(scale); +} + +inline bool dComIfGp_getScopeWipeFlag() { + return g_dComIfG_gameInfo.play.getScopeWipeFlag(); +} + +inline void dComIfGp_setScopeWipeFlag(bool flag) { + g_dComIfG_gameInfo.play.setScopeWipeFlag(flag); +} + inline u8 dComIfGp_getOperateWind() { return g_dComIfG_gameInfo.play.getOperateWind(); } @@ -3937,6 +3964,7 @@ inline JKRArchive* dComIfGp_getErrorResArchive() { return g_dComIfG_gameInfo.pla inline void dComIfGp_setActionIconArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setActionIconArchive(pArc); } inline JKRArchive* dComIfGp_getActionIconArchive() { return g_dComIfG_gameInfo.play.getActionIconArchive(); } inline void dComIfGp_setScopeResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setScopeResArchive(pArc); } +inline JKRArchive* dComIfGp_getScopeResArchive() { return g_dComIfG_gameInfo.play.getScopeResArchive(); } inline JKRArchive* dComIfGp_getCameraResArchive() { return g_dComIfG_gameInfo.play.getCameraResArchive(); } inline void dComIfGp_setCameraResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setCameraResArchive(pArc); } inline JKRArchive* dComIfGp_getSwimResArchive() { return g_dComIfG_gameInfo.play.getSwimResArchive(); } diff --git a/include/d/d_meter.h b/include/d/d_meter.h index 8bb14863..d31da77f 100644 --- a/include/d/d_meter.h +++ b/include/d/d_meter.h @@ -31,8 +31,8 @@ public: /* 0x01C */ f32 field_0x1c; /* 0x020 */ f32 field_0x20; /* 0x024 */ f32 field_0x24; - /* 0x028 */ f32 field_0x28; - /* 0x02C */ u8 field_0x2c; + /* 0x028 */ f32 mScopeWipeMaxScale; + /* 0x02C */ u8 mScopeWipeAlpha; /* 0x02D */ u8 field_0x2d; /* 0x02E */ s16 field_0x2e; /* 0x030 */ s16 field_0x30; diff --git a/include/d/d_scope.h b/include/d/d_scope.h index 38598a4f..ed6c6e37 100644 --- a/include/d/d_scope.h +++ b/include/d/d_scope.h @@ -3,18 +3,77 @@ #include "dolphin/types.h" #include "f_op/f_op_msg.h" +#include "f_op/f_op_msg_mng.h" +#include "JSystem/JUtility/TColor.h" +#include "d/d_drawlist.h" + +class J2DTextBox; + +enum dScpTyp { + dScpTyp_TELESCOPE_e = 0, // default/normal telescope + dScpTyp_PICTO_BOX_e = 1, + dScpTyp_DEMO_e = 2, +}; class sub_scp_class : public msg_class { public: - /* Place member variables here */ -}; + /* 0x0FC */ JKRExpHeap* mpHeap; + /* 0x100 */ mesg_header* head_p; + /* 0x104 */ fopMsgM_pane_class mWipeCross; + /* 0x13C */ fopMsgM_pane_class mWipeNum; + /* 0x174 */ fopMsgM_pane_class mWipeCrossKage; + /* 0x1AC */ fopMsgM_pane_class mWipeNumKage; + /* 0x1E4 */ fopMsgM_pane_class mWipeBarA; + /* 0x21C */ fopMsgM_pane_class mWipeBarPivot; + /* 0x254 */ fopMsgM_pane_class mWipeScope; + /* 0x28C */ fopMsgM_pane_class mCursorReturn; + /* 0x2C4 */ fopMsgM_pane_class mCursorZoom; + /* 0x2FC */ fopMsgM_pane_class mCursorReturnAnime; + /* 0x334 */ fopMsgM_pane_class mCursorZoomAnime; + /* 0x36C */ fopMsgM_pane_class mArrowL; + /* 0x3A4 */ fopMsgM_pane_class mArrowR; + /* 0x3DC */ fopMsgM_pane_class mWipePanel[8]; + /* 0x59C */ fopMsgM_pane_class mArrow; + /* 0x5D4 */ fopMsgM_pane_class mDot; + /* 0x60C */ J2DTextBox* mpTextBox; + /* 0x610 */ J2DTextBox* mpRubyBox; + /* 0x614 */ J2DTextBox* mpTextBoxSdw; + /* 0x618 */ J2DTextBox* mpRubyBoxSdw; + /* 0x61C */ JMSMesgEntry_c mMesgEntry; + /* 0x634 */ fopMsgM_msgDataProc_c mMesgDataProc; + /* 0x8D4 */ fopMsgM_msgGet_c mMsgGet; + /* 0x8E4 */ f32 mFontSizeX; + /* 0x8E8 */ f32 mFontSizeY; + /* 0x8EC */ f32 mRubyFontSizeX; + /* 0x8F0 */ f32 mRubyFontSizeY; + /* 0x8F4 */ JUtility::TColor mDotBlackOrig; + /* 0x8F8 */ JUtility::TColor mDotBlackNow; + /* 0x8FC */ JUtility::TColor mDotWhiteOrig; + /* 0x900 */ JUtility::TColor mDotWhiteNow; + /* 0x904 */ f32 mOffsetX; + /* 0x908 */ f32 mOffsetY; + /* 0x90C */ int mArrowBaseY; + /* 0x910 */ f32 mZoomScale; + /* 0x914 */ s16 mTransTimer; + /* 0x916 */ s16 mLineCount; + /* 0x918 */ s16 mAnimeTimer; + /* 0x91C */ const char* mpMesgStr; + /* 0x920 */ char* oTx; + /* 0x924 */ char* oRb; + /* 0x928 */ char* oTxSdw; + /* 0x92C */ char* oRbSdw; + /* 0x930 */ u8 mDemoCloseFlag; +}; // Size: 0x934 -class dDlst_2DSCP_c { +class dDlst_2DSCP_c : public dDlst_base_c { public: - void setActorP(sub_scp_class*) {} - - void draw(); + dDlst_2DSCP_c() {} + virtual ~dDlst_2DSCP_c(); + virtual void draw(); void outFontDraw(); + void setActorP(sub_scp_class* i_scp) { mpScp = i_scp; } + + /* 0x04 */ sub_scp_class* mpScp; }; #endif /* D_SCOPE_H */ diff --git a/include/f_op/f_op_msg.h b/include/f_op/f_op_msg.h index 60cc1363..7620e44e 100644 --- a/include/f_op/f_op_msg.h +++ b/include/f_op/f_op_msg.h @@ -10,14 +10,17 @@ enum fopMsg_MessageStatus_e { fopMsgStts_MSG_UNK0_e = 0x00, fopMsgStts_MSG_PREPARING_e = 0x01, fopMsgStts_BOX_OPENING_e = 0x02, + fopMsgStts_SCOPE_OPENING_1_e = 0x03, // Scope opening (picto box type) + fopMsgStts_SCOPE_OPENING_2_e = 0x04, // Scope opening (demo type) fopMsgStts_MSG_UNK5_e = 0x05, fopMsgStts_MSG_TYPING_e = 0x06, fopMsgStts_STOP_e = 0x07, fopMsgStts_SELECT_2_e = 0x08, // Selection box with 2 choices fopMsgStts_SELECT_3_e = 0x09, // Selection box with 3 choices fopMsgStts_CLOSE_WAIT_e = 0x0A, // Waiting for player input before closing the text box - fopMsgStts_UNKB_e = 0x0B, - fopMsgStts_UNKD_e = 0x0D, + fopMsgStts_SCOPE_ACTIVE_e = 0x0B, // Scope active/idle + fopMsgStts_SCOPE_DEMO_e = 0x0C, // Scope demo (cutscene) mode + fopMsgStts_SCOPE_WAIT_e = 0x0D, // Scope waiting for event/demo fopMsgStts_MSG_DISPLAYED_e = 0x0E, fopMsgStts_MSG_CONTINUES_e = 0x0F, fopMsgStts_MSG_ENDS_e = 0x10, diff --git a/include/f_op/f_op_msg_mng.h b/include/f_op/f_op_msg_mng.h index eacff1d8..51989cbb 100644 --- a/include/f_op/f_op_msg_mng.h +++ b/include/f_op/f_op_msg_mng.h @@ -264,7 +264,7 @@ public: void setMesgEntry(JMSMesgEntry_c* i_entry) { mesgEntry = i_entry; } void dec_keyWaitTimer() {} - void dec_waitTimer() {} + void dec_waitTimer() { waitTimer = (int)waitTimer > 0 ? waitTimer - 1 : 0; } u8 getCharAlpha() { return field_0x293; } // ? u8 getGradAlpha() { return field_0x292; } // ? int getLineCount() { return lineCount; } @@ -272,15 +272,15 @@ public: f32 getNowCursorPos() { return field_0x20; } u8 getRCharAlpha() { return field_0x291; } // ? u8 getRGradAlpha() { return field_0x290; } // ? - void getSelectFlag() {} + u8 getSelectFlag() { return selectFlag; } void getSelectLength() {} - void getStringColor() {} - void get_waitTimer() {} + u32 getStringColor() { return field_0x25C;} + u32 get_waitTimer() { return waitTimer; } void resetNowLine() { nowLine = 0; } void selectArrow(J2DPicture*) {} void setActorPosition(cXyz*) {} void setAimLine(int i_line) { aimLine = i_line; } - void setAutoSendFlagOff() {} + void setAutoSendFlagOff() { autoSendFlag = 0; } void setBmgData(char* i_data) { bmgData = i_data; } void setCenterLineWidth(int i_width) { centerLineWidth = i_width; } @@ -294,20 +294,20 @@ public: 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 setHandSendFlagOff() { handSendFlag = 0; } 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 setSelectFlagOff() { selectFlag = 0; } void setSelectNum(u8) {} void setSendSpeed(int i_speed) { sendSpeed = i_speed; } void setSpaceFlagOff() { spaceFlag = 0; } - void setSpaceFlagOn() {} + void setSpaceFlagOn() { spaceFlag = 1; } void setSpaceTimer(int i_timer) { spaceTimer = i_timer; } - void setStringColor(u32) {} - void set_waitTimer(int) {} - void set_waitTimerZero() {} + void setStringColor(u32 color) { field_0x25C = color; } + void set_waitTimer(int i_timer) { waitTimer = i_timer; } + void set_waitTimerZero() { waitTimer = 0; } void shortCut() { field_0x299 = 1; } // fake, replace with real inline once it's figured out @@ -359,7 +359,7 @@ public: /* 0x14C */ int rubyFontSize; /* 0x150 */ int field_0x150; /* 0x154 */ u32 field_0x154; - /* 0x158 */ u32 field_0x158; + /* 0x158 */ u32 waitTimer; /* 0x15C */ int spaceTimer; /* 0x160 */ int sendSpeed; /* 0x164 */ int field_0x164; // keyWaitTimer? @@ -461,6 +461,8 @@ void fopMsgM_setAlpha(fopMsgM_pane_alpha_class* i_pane); u32 fopMsgM_searchMessageNumber(u32 i_msgNo); bool fopMsgM_forceSendOn(); +bool fopMsgM_checkForceSend(); +void fopMsgM_forceSendOff(); void fopMsgM_messageSendOn(); void fopMsgM_messageSendOff(); bool fopMsgM_checkMessageSend(); |
