From bf663a0e3d3f5a2fb7bf8a36721c6cb3d81cf988 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Sat, 25 Feb 2023 18:23:13 -0800 Subject: d_a_kytag06 fully done / d_msg_class/object work (#300) * d_a_kytag06 OK and d_msg_class/object wip * add some GXDraw functions * cleanup kytag6 * remove asm --- include/JSystem/JMessage/processor.h | 176 +--------- include/d/com/d_com_inf_game.h | 29 +- include/d/d_gameover.h | 4 +- include/d/d_stage.h | 5 +- include/d/d_timer.h | 2 +- include/d/event/d_event_data.h | 3 +- include/d/kankyo/d_kankyo.h | 3 + include/d/kankyo/d_kankyo_wether.h | 18 +- include/d/menu/d_menu_window.h | 2 +- include/d/meter/d_meter2.h | 2 +- include/d/meter/d_meter2_info.h | 42 +-- include/d/msg/d_msg_class.h | 449 +++++++++++++++++++++++- include/d/msg/d_msg_flow.h | 4 +- include/d/msg/d_msg_object.h | 77 ++-- include/d/msg/d_msg_unit.h | 14 + include/d/save/d_save.h | 8 +- include/dolphin/gx/GX.h | 6 + include/dolphin/gx/GXAttr.h | 8 +- include/dolphin/gx/GXDraw.h | 17 + include/f_op/f_op_msg.h | 16 +- include/f_op/f_op_msg_mng.h | 4 +- include/m_Do/m_Do_ext.h | 39 ++ include/m_Do/m_Do_mtx.h | 2 + include/rel/d/a/kytag/d_a_kytag06/d_a_kytag06.h | 23 +- 24 files changed, 695 insertions(+), 258 deletions(-) create mode 100644 include/dolphin/gx/GXDraw.h (limited to 'include') diff --git a/include/JSystem/JMessage/processor.h b/include/JSystem/JMessage/processor.h index 5ca3f9c77a..f90f03264b 100644 --- a/include/JSystem/JMessage/processor.h +++ b/include/JSystem/JMessage/processor.h @@ -3,7 +3,6 @@ #include "JSystem/JMessage/resource.h" #include "JSystem/JUtility/JUTFont.h" -#include "SSystem/SComponent/c_xyz.h" #include "init.h" namespace JMessage { @@ -11,6 +10,8 @@ struct TResource; struct TResourceContainer; struct TReference { + TReference() { pcResource_ = NULL; } + /* 802A7AF8 */ virtual ~TReference(); /* 802A7B40 */ virtual const char* do_word(u32) const; @@ -183,6 +184,7 @@ struct TProcessor { const TResource* getResourceCache() const { return pResourceCache_; } const char* getCurrent() const { return pszCurrent_; } + const TReference* getReference() const { return pReference_; } const TResource* getResource_groupID_uncached(u16 groupID) const { return pReference_->getResource_groupID(groupID); @@ -268,7 +270,8 @@ struct TSequenceProcessor : public TProcessor { TControl* getControl() const { return pControl_; } static const void* process_setMessageIndex_(const TSequenceProcessor* pProcessor, u16 param_1) { - return process_setMessageCode_(pProcessor, pProcessor->getResourceCache()->getGroupID(), param_1); + return process_setMessageCode_(pProcessor, pProcessor->getResourceCache()->getGroupID(), + param_1); } static const void* process_setMessageCode_(const TSequenceProcessor* pProcessor, u32 param_1) { @@ -291,173 +294,4 @@ struct TRenderingProcessor : public TProcessor { }; }; // namespace JMessage -struct STControl; -struct dMsgObject_c; -struct jmessage_tReference : public JMessage::TReference { - /* 80228B04 */ jmessage_tReference(); - /* 80228D28 */ void calcDistance(); - /* 80228DE0 */ void getLineMax(); - /* 80228E6C */ void isKanban(); - /* 80228EA0 */ void isPlaceName(); - /* 80228ED4 */ void isBossName(); - /* 80228F08 */ void isSaveSeq(); - /* 80228F3C */ void isBook(); - /* 80228F70 */ void isStaffRoll(); - /* 80228FA4 */ void isHowl(); - /* 80228FD8 */ void isMidona(); - /* 8022900C */ void resetReference(); - /* 80229034 */ void pageSend(); - /* 80229168 */ void selectMessage(); - /* 802294A8 */ void inputNumber(); - /* 80229730 */ void getWord(int); - /* 80229744 */ void resetWord(); - /* 80229768 */ void setCharactor(u16); - /* 80229788 */ void addCharactor(u16); - /* 802297B0 */ void resetCharactor(); - /* 802297E4 */ void shiftCharCountBuffer(); - /* 80229810 */ void resetCharCountBuffer(); - /* 80229848 */ void allsetCharCountBuffer(); - /* 8022986C */ void isCharSend(); - /* 802298DC */ void isLightSend(); - /* 8022994C */ void isLightEnd(); - /* 802299AC */ void decideOutFontRupeeColor(int); - /* 80232A20 */ void getActorPos(); - - /* 80238C78 */ void setActorPos(cXyz pos) { mActorPos = pos; } - - /* 80228CB4 */ virtual ~jmessage_tReference(); - -private: - /* 0x0008 */ STControl* mpStick; - /* 0x000C */ u16 field_0xc[0x200]; - /* 0x040C */ s16 field_0x40c; - /* 0x040E */ s16 field_0x40e; - /* 0x0410 */ s16 mCountBackUp; - /* 0x0414 */ cXyz mActorPos; - /* 0x0420 */ f32 mFontSizeX; - /* 0x0424 */ f32 mFontSizeY; - /* 0x0428 */ f32 mRubySize; - /* 0x042C */ f32 mTBoxWidth; - /* 0x0430 */ f32 mTBoxHeight; - /* 0x0434 */ f32 mLineSpace; - /* 0x0438 */ f32 mCharSpace; - /* 0x043C */ f32 mRubyCharSpace; - /* 0x0440 */ f32 mSelFontSize; - /* 0x0444 */ f32 mSelRubySize; - /* 0x0448 */ f32 mSelTBoxWidth; - /* 0x044C */ f32 mSelCharSpace; - /* 0x0450 */ f32 mSelRubyCharSpace; - /* 0x0454 */ f32 mDistanceScale; - /* 0x0458 */ f32 mAddCharAllAlphaRate; - /* 0x045C */ f32 mCharAllAlphaRate; - /* 0x0460 */ f32 mAddCharAlpha; - /* 0x0464 */ f32 mCharAlpha; - /* 0x0468 */ f32 mStrLength[40]; - /* 0x0508 */ f32 mSpaceLength[40]; - /* 0x05A8 */ f32 mSelLength[3]; - /* 0x05B4 */ u32 mDemoFrame; - /* 0x05B8 */ u32 mRevoMessageID; - /* 0x05BC */ u16* mpStatus; - /* 0x05C0 */ dMsgObject_c* mpObjectPtr; - /* 0x05C4 */ char* mpSelMsgPtr; - /* 0x05C8 */ JUTFont* mpFont; - /* 0x05CC */ s16 mStartLineCount; - /* 0x05CE */ s16 mEndLineCount; - /* 0x05D0 */ u16 mLineCount; - /* 0x05D2 */ s16 field_0x5d2; - /* 0x05D4 */ s16 mPageEndCount; - /* 0x05D6 */ s16 mSendTimer; - /* 0x05D8 */ s16 mCharCnt; - /* 0x05DA */ s16 mPageNum; - /* 0x05DC */ u8 mNowLightCount; - /* 0x05DD */ u8 mDrawLightCount; - /* 0x05DE */ u16 mMsgID; - /* 0x05E0 */ u16 mLineScale[40]; - /* 0x0630 */ u16 mTopTagScale; - /* 0x0632 */ u16 mNowTagScale; - /* 0x0634 */ char mWord[10][100]; - /* 0x0A1C */ char mTextPtr[0x200]; - /* 0x0C1C */ char mTextSPtr[0x200]; - /* 0x0E1C */ char mRuby[0x200]; - /* 0x101C */ u8 mSelText[3][50]; - /* 0x10B2 */ u8 mSelRuby[3][80]; - /* 0x11A2 */ s8 mPageLine[40]; - /* 0x11CA */ s8 mPageLineMax[40]; - /* 0x11F2 */ u8 mPageType[40]; - /* 0x121A */ u8 mLineArrange[40]; - /* 0x1242 */ u8 mSelectNum; - /* 0x1243 */ u8 mSelectType; - /* 0x1244 */ u8 mSelectPos; - /* 0x1245 */ u8 mFukiPosType; - /* 0x1246 */ u8 mFukiKind; - /* 0x1247 */ u8 mForm; - /* 0x1248 */ u8 field_0x1248; - /* 0x1249 */ u8 mNowColorType; - /* 0x124A */ u8 mTopColorType; - /* 0x124B */ bool mButtonTagStopFlag; - /* 0x124C */ u8 mSendFlag; - /* 0x124D */ u8 mStopFlag; - /* 0x124E */ u8 mSelectRubyFlag; - /* 0x124F */ u8 mInputFigure; - /* 0x1250 */ u8 mOutFontRupeeColor; - /* 0x1251 */ s8 mNowWordCount; - /* 0x1252 */ s8 mTopWordCount; - /* 0x1253 */ u8 mCharCountBuffer[31]; - /* 0x1272 */ bool mLightBatchFlag; - /* 0x1273 */ bool mBatchFlag; - /* 0x1274 */ bool mSelectSetCancelFlag; - /* 0x1275 */ bool mBombNameUseFlag; - /* 0x1276 */ bool mBatchColorFlag; -}; // Size: 0x1278 - -struct jmessage_tControl; -struct jmessage_tSequenceProcessor : public JMessage::TSequenceProcessor { - /* 8022B558 */ jmessage_tSequenceProcessor(jmessage_tReference const*, jmessage_tControl*); - /* 8022C904 */ void do_name1(); - /* 8022C908 */ void do_space(u32); - /* 8022CA24 */ void do_rubyset(void const*, u32); - /* 8022CAAC */ void push_word(); - /* 8022CB10 */ void messageSePlay(u8, u8, cXyz*); - /* 8022CBE8 */ void calcStringLength(); - - /* 8023299C */ virtual ~jmessage_tSequenceProcessor(); - /* 8022B654 */ virtual void do_reset(); - /* 8022B658 */ virtual void do_begin(void const*, char const*); - /* 8022BA3C */ virtual void do_end(); - /* 8022BFE0 */ virtual void do_character(int); - /* 8022C1A0 */ virtual bool do_tag(u32, void const*, u32); - /* 8022BB7C */ virtual bool do_isReady(); - /* 8022C8FC */ virtual bool do_jump_isReady(); - /* 8022CBE4 */ virtual void do_jump(void const*, char const*); -}; - -struct jmessage_tRenderingProcessor : public JMessage::TRenderingProcessor { - /* 8022CCB0 */ jmessage_tRenderingProcessor(jmessage_tReference const*); - /* 8022E12C */ void resetRendering(); - /* 8022E17C */ void do_widthcenter(); - /* 8022E260 */ void do_selwidthcenter(int); - /* 8022E318 */ void do_heightcenter(); - /* 8022E7CC */ void do_color(u8); - /* 8022E860 */ void do_scale(f32); - /* 8022E960 */ void do_linedown(s16); - /* 8022E9C0 */ void do_transY(s16, bool); - /* 8022EAE4 */ void do_outfont(u8, u32); - /* 8022ED10 */ void do_arrow2(); - /* 8022EECC */ void getLineLength(int); - /* 8022EF00 */ void do_strcat(char*, bool, bool, bool); - /* 8022F148 */ void do_rubyset(void const*, u32); - /* 8022F384 */ void do_rubystrcat(char*, char*, f32, f32); - /* 8022F53C */ void do_name1(); - /* 8022F540 */ void do_numset(s16); - /* 8022F734 */ void push_word(); - /* 8022F784 */ void getCharInfo(f32, f32, f32, f32, f32); - - /* 8023293C */ virtual ~jmessage_tRenderingProcessor(); - /* 8022CDC8 */ virtual void do_reset(); - /* 8022CDCC */ virtual void do_begin(void const*, char const*); - /* 8022CFD8 */ virtual void do_end(); - /* 8022D0A0 */ virtual void do_character(int); - /* 8022D74C */ virtual void do_tag(u32, void const*, u32); -}; - #endif /* JMESSAGE_PROCESSOR_H */ diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index cc18f4a398..9d6c0083a0 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -289,7 +289,7 @@ public: f32 getItemLifeCount() { return mItemLifeCount; } s16 getItemMaxArrowNumCount() { return mItemMaxArrowNumCount; } void clearNowAnimeID() { mNowAnimeID = -1; } - void clearMesgCamInfoID() { mMesgCamInfo = (void*)-1; } + void clearMesgCamInfoID() { mMesgCamInfo = -1; } void clearItemMaxLifeCount() { mItemMaxLifeCount = 0; } void clearItemLifeCount() { mItemLifeCount = 0.0f; @@ -401,6 +401,10 @@ public: setCameraAttentionStatus(camIdx, 0); } + void setMesgCamInfoID(int param_0) { + mMesgCamInfo = param_0; + } + void setStatus(u16 status) { mStatus = status; } s32 checkStatus(u16 flags) { return flags & mStatus; } @@ -634,7 +638,7 @@ public: /* 0x04FAB */ u8 field_0x4fab; // related to setWarpItemData /* 0x04FAC */ u8 field_0x4fac; // related to setWarpItemData /* 0x04FAD */ u8 field_0x4fad[3]; - /* 0x04FB0 */ void* mMesgCamInfo; + /* 0x04FB0 */ int mMesgCamInfo; /* 0x04FB4 */ int mMesgCamInfoBasicID; /* 0x04FB8 */ fopAc_ac_c* mMesgCamInfoActor1; /* 0x04FBC */ fopAc_ac_c* mMesgCamInfoActor2; @@ -838,6 +842,7 @@ int dComIfGs_isItemFirstBit(u8 i_no); u16 dComIfGs_getRupee(); static u16 dComIfGs_getLife(); s8 dComIfGs_BossLife_public_Get(); +u8 dComIfGs_checkGetInsectNum(); inline void dComIfGs_init() { g_dComIfG_gameInfo.info.init(); @@ -1379,6 +1384,18 @@ inline char* dComIfGs_getPlayerName() { return g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().getLinkName(); } +inline char* dComIfGs_getHorseName() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().getHorseName(); +} + +inline u32 dComIfGs_getRaceGameTime() { + return g_dComIfG_gameInfo.info.getMiniGame().getRaceGameTime(); +} + +inline u32 dComIfGs_getBalloonScore() { + return g_dComIfG_gameInfo.info.getMiniGame().getBalloonScore(); +} + inline u8 dComIfGs_getTransformStatus() { return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getTransformStatus(); } @@ -1469,6 +1486,10 @@ inline int dComIfGs_getTmpReg(u16 i_reg) { return g_dComIfG_gameInfo.info.getTmp().getEventReg(i_reg); } +inline u8 i_dComIfGs_getEventReg(u16 reg) { + return g_dComIfG_gameInfo.info.getEvent().getEventReg(reg); +} + inline void dComIfGs_setWarashibeItem(u8 i_itemNo) { g_dComIfG_gameInfo.info.getPlayer().getItem().setWarashibeItem(i_itemNo); } @@ -2384,6 +2405,10 @@ inline u8 dComIfGp_getMesgStatus() { return g_dComIfG_gameInfo.play.getMesgStatus(); } +inline void dComIfGp_setMesgCameraTagInfo(int param_0) { + g_dComIfG_gameInfo.play.setMesgCamInfoID(param_0); +} + inline s32 dComIfGp_roomControl_getStayNo() { return dStage_roomControl_c::getStayNo(); } diff --git a/include/d/d_gameover.h b/include/d/d_gameover.h index 7ddd006b4a..3e2c20b081 100644 --- a/include/d/d_gameover.h +++ b/include/d/d_gameover.h @@ -3,7 +3,7 @@ #include "SSystem/SComponent/c_phase.h" #include "d/menu/d_menu_save.h" -#include "d/msg/d_msg_class.h" +#include "f_op/f_op_msg.h" #include "f_op/f_op_msg_mng.h" #include "m_Do/m_Do_hostIO.h" @@ -23,7 +23,7 @@ public: class dDlst_Gameover_CAPTURE_c : public dDlst_base_c { public: /* 8019ACF8 */ virtual void draw(); - /* 8019C2CC */ virtual ~dDlst_Gameover_CAPTURE_c(); + /* 8019C2CC */ virtual ~dDlst_Gameover_CAPTURE_c(); }; class dMsgScrnLight_c; diff --git a/include/d/d_stage.h b/include/d/d_stage.h index 56093e0d47..1a5d48ca69 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -273,7 +273,10 @@ public: // PPNT struct dStage_dPnt_c { - /* 0x0 */ int field_0x0; + /* 0x0 */ u8 field_0x0; + /* 0x1 */ u8 field_0x1; + /* 0x2 */ u8 field_0x2; + /* 0x3 */ u8 field_0x3; /* 0x4 */ cXyz m_position; }; // Size: 0x10 diff --git a/include/d/d_timer.h b/include/d/d_timer.h index 63d6f14f7c..ef75f4045d 100644 --- a/include/d/d_timer.h +++ b/include/d/d_timer.h @@ -5,7 +5,7 @@ #include "JSystem/JKernel/JKRExpHeap.h" #include "SSystem/SComponent/c_phase.h" #include "SSystem/SComponent/c_xyz.h" -#include "d/msg/d_msg_class.h" +#include "f_op/f_op_msg.h" #include "d/msg/d_msg_object.h" #include "dolphin/os/OSTime.h" #include "dolphin/types.h" diff --git a/include/d/event/d_event_data.h b/include/d/event/d_event_data.h index b5857f5141..1b2d413e90 100644 --- a/include/d/event/d_event_data.h +++ b/include/d/event/d_event_data.h @@ -2,9 +2,8 @@ #define D_EVENT_D_EVENT_DATA_H #include "d/d_stage.h" -#include "d/msg/d_msg_class.h" +#include "f_op/f_op_msg.h" #include "d/save/d_save.h" -#include "dolphin/types.h" struct event_binary_data_header { /* 0x00 */ u32 eventTop; // offset to Event chunk diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h index 051412b54e..d55cc9097a 100644 --- a/include/d/kankyo/d_kankyo.h +++ b/include/d/kankyo/d_kankyo.h @@ -38,6 +38,9 @@ static void GxXFog_set(); u8 dKy_pol_argument_get(cBgS_PolyInfo const* i_poly); void dKy_Sound_set(cXyz param_0, int param_1, unsigned int param_2, int param_3); void dKy_bg_MAxx_proc(void* param_0); +void dKy_change_colpat(u8 colpat); +void dKy_BossLight_set(cXyz* param_0, _GXColor* param_1, f32 param_2, u8 param_3); +void dKy_custom_colset(u8 prevGather, u8 curGather, f32 blend); struct LIGHT_INFLUENCE { /* 800CFC7C */ ~LIGHT_INFLUENCE() {} diff --git a/include/d/kankyo/d_kankyo_wether.h b/include/d/kankyo/d_kankyo_wether.h index b6f66d3783..90c1fe3bb8 100644 --- a/include/d/kankyo/d_kankyo_wether.h +++ b/include/d/kankyo/d_kankyo_wether.h @@ -22,6 +22,9 @@ static void squal_proc(); void dKyw_rain_set(int count); void dKyw_wind_set(); cXyz dKyw_get_wind_vecpow(); +void dKyw_evt_wind_set(s16 angleX, s16 angleY); +void dKyw_custom_windpower(f32 pow); +void dKyw_evt_wind_set_go(); class dKankyo_sun_Packet : public J3DPacket { public: @@ -133,9 +136,18 @@ public: virtual void draw(); virtual ~dKankyo_snow_Packet(); -private: - /* 0x10 */ u8* mpTex; - /* 0x14 */ SNOW_EFF mSnowEff[500]; + /* 0x0010 */ u8* mpTex; + /* 0x0014 */ SNOW_EFF mSnowEff[500]; + /* 0x6D74 */ cXyz field_0x6d74; + /* 0x6D80 */ f32 field_0x6d80; + /* 0x6D84 */ f32 field_0x6d84; + /* 0x6D88 */ u16 field_0x6d88; + /* 0x6D8A */ u16 field_0x6d8a; + /* 0x6D8C */ u32 field_0x6d8c; + /* 0x6D90 */ u8 field_0x6d90; + /* 0x6D91 */ u8 field_0x6d91; + /* 0x6D92 */ u8 field_0x6d92; + /* 0x6D93 */ u8 field_0x6d93; }; struct STAR_EFF { diff --git a/include/d/menu/d_menu_window.h b/include/d/menu/d_menu_window.h index 8734194867..0713418675 100644 --- a/include/d/menu/d_menu_window.h +++ b/include/d/menu/d_menu_window.h @@ -4,7 +4,7 @@ #include "d/d_drawlist.h" #include "d/menu/d_menu_collect.h" #include "d/meter/d_meter2_info.h" -#include "d/msg/d_msg_class.h" +#include "f_op/f_op_msg.h" #include "dolphin/types.h" #include "m_Do/m_Do_controller_pad.h" #include "m_Do/m_Do_graphic.h" diff --git a/include/d/meter/d_meter2.h b/include/d/meter/d_meter2.h index 02e8c4ce49..75198c5793 100644 --- a/include/d/meter/d_meter2.h +++ b/include/d/meter/d_meter2.h @@ -5,7 +5,7 @@ #include "d/com/d_com_inf_game.h" #include "d/meter/d_meter2_draw.h" #include "d/meter/d_meter_map.h" -#include "d/msg/d_msg_class.h" +#include "f_op/f_op_msg.h" #include "dolphin/types.h" class dMeterMap_c; diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h index eb02183a84..b1ebbbc3ba 100644 --- a/include/d/meter/d_meter2_info.h +++ b/include/d/meter/d_meter2_info.h @@ -5,29 +5,11 @@ #include "d/d_resorce.h" #include "d/menu/d_menu_window.h" #include "d/meter/d_meter2.h" +#include "d/msg/d_msg_class.h" #include "d/msg/d_msg_flow.h" #include "d/pane/d_pane_class.h" -#include "dolphin/types.h" #include "f_op/f_op_actor.h" -struct JMSMesgEntry_c { - /* 0x00 */ u32 mStringOffset; - /* 0x04 */ u16 mStringId; - /* 0x06 */ u16 field_0x04; - /* 0x08 */ u8 field_0x08; - /* 0x09 */ u8 field_0x09; - /* 0x0A */ u8 field_0x0a; - /* 0x0B */ u8 field_0x0b; - /* 0x0C */ u8 field_0x0c; - /* 0x0D */ u8 field_0x0d; - /* 0x0E */ u8 field_0x0e; - /* 0x0F */ u8 field_0x0f; - /* 0x10 */ u8 field_0x10; - /* 0x11 */ u8 field_0x11; - /* 0x12 */ u8 field_0x12; - /* 0x13 */ u8 field_0x13; -}; // Size: 0x14 - struct dMenu_LetterData { u16 mSubject; u16 mName; @@ -89,7 +71,7 @@ public: void setWarpInfo(const char*, const cXyz&, s16, u8, u8, u8); u8 getItemType(u8); int readItemTexture(u8, void*, J2DPicture*, void*, J2DPicture*, void*, J2DPicture*, void*, - J2DPicture*, int); + J2DPicture*, int); void setItemColor(u8, J2DPicture*, J2DPicture*, J2DPicture*, J2DPicture*); s16 get2ndTexture(u8); s16 get3rdTexture(u8); @@ -162,6 +144,10 @@ public: s16 getMsgKeyWaitTimer() { return mMsgKeyWaitTimer; } u8 getGameOverType() { return mGameOverType; } void setGameOverType(u8 i_gameoverType) { mGameOverType = i_gameoverType; } + void setMsgKeyWaitTimer(s16 i_waitTimer) { mMsgKeyWaitTimer = i_waitTimer; } + u32 getMsgTimeMs() { return mMsgTimeMs; } + u32 getTimeMs() { return mTimeMs; } + u8 getNowCount() { return mNowCount; } public: /* 0x04 */ u8 unk4[4]; @@ -516,6 +502,22 @@ inline void dMeter2Info_setGameOverType(u8 i_gameoverType) { g_meter2_info.setGameOverType(i_gameoverType); } +inline void dMeter2Info_setMsgKeyWaitTimer(s16 i_waitTimer) { + g_meter2_info.setMsgKeyWaitTimer(i_waitTimer); +} + +inline u32 dMeter2Info_getMsgTimeMs() { + return g_meter2_info.getMsgTimeMs(); +} + +inline u32 dMeter2Info_getTimeMs() { + return g_meter2_info.getTimeMs(); +} + +inline u8 dMeter2Info_getNowCount() { + return g_meter2_info.getNowCount(); +} + char* dMeter2Info_getNumberTextureName(int pIndex); void dMeter2Info_recieveLetter(); u8 dMeter2Info_getNewLetterNum(); diff --git a/include/d/msg/d_msg_class.h b/include/d/msg/d_msg_class.h index 8ac1d507e5..1b04e9eaf8 100644 --- a/include/d/msg/d_msg_class.h +++ b/include/d/msg/d_msg_class.h @@ -1,22 +1,437 @@ #ifndef D_MSG_D_MSG_CLASS_H #define D_MSG_D_MSG_CLASS_H -#include "dolphin/types.h" -#include "f_op/f_op_actor.h" - - -class msg_class : public leafdraw_class { -public: - /* 0xC0 */ int mMsgType; - /* 0xC4 */ create_tag_class mDwTg; - /* 0xD8 */ leafdraw_method_class* mSubMtd; - /* 0xDC */ fopAc_ac_c* mpActor; - /* 0xE0 */ cXyz mPos; - /* 0xEC */ u32 mMsgID; - /* 0xF0 */ u32 field_0xf0; - /* 0xF4 */ u32 field_0xf4; - /* 0xF8 */ u16 mMode; - /* 0xFA */ u8 mSelectedChoiceIdx; -}; // Size: 0xFC +#include "JSystem/JMessage/control.h" +#include "JSystem/JMessage/processor.h" +#include "d/msg/d_msg_out_font.h" +#include "f_op/f_op_msg.h" + +struct JMSMesgEntry_c { + /* 0x00 */ u32 mStringOffset; + /* 0x04 */ u16 mStringId; + /* 0x06 */ u16 field_0x04; + /* 0x08 */ u8 field_0x08; + /* 0x09 */ u8 field_0x09; + /* 0x0A */ u8 field_0x0a; + /* 0x0B */ u8 field_0x0b; + /* 0x0C */ u8 field_0x0c; + /* 0x0D */ u8 field_0x0d; + /* 0x0E */ u8 field_0x0e; + /* 0x0F */ u8 field_0x0f; + /* 0x10 */ u32 field_0x10; +}; // Size: 0x14 + +struct JMSMesgHeader_c { + /* 0x00 */ u32 magic; + /* 0x04 */ u32 sectionSize; + /* 0x08 */ u16 entryCount; + /* 0x0A */ u16 entrySize; + /* 0x0C */ u16 field_0xc; + /* 0x0E */ u16 field_0xe; +}; // Size: 0x10 + +struct STControl; +struct dMsgObject_c; +struct jmessage_tReference : public JMessage::TReference { + /* 80228B04 */ jmessage_tReference(); + /* 80228D28 */ void calcDistance(); + /* 80228DE0 */ u8 getLineMax(); + /* 80228E6C */ bool isKanban(); + /* 80228EA0 */ bool isPlaceName(); + /* 80228ED4 */ bool isBossName(); + /* 80228F08 */ bool isSaveSeq(); + /* 80228F3C */ bool isBook(); + /* 80228F70 */ bool isStaffRoll(); + /* 80228FA4 */ u8 isHowl(); + /* 80228FD8 */ bool isMidona(); + /* 8022900C */ void resetReference(); + /* 80229034 */ void pageSend(); + /* 80229168 */ void selectMessage(); + /* 802294A8 */ void inputNumber(); + /* 80229730 */ const char* getWord(int); + /* 80229744 */ void resetWord(); + /* 80229768 */ void setCharactor(u16); + /* 80229788 */ void addCharactor(u16); + /* 802297B0 */ void resetCharactor(); + /* 802297E4 */ void shiftCharCountBuffer(); + /* 80229810 */ void resetCharCountBuffer(); + /* 80229848 */ void allsetCharCountBuffer(); + /* 8022986C */ bool isCharSend(); + /* 802298DC */ bool isLightSend(); + /* 8022994C */ bool isLightEnd(); + /* 802299AC */ void decideOutFontRupeeColor(int); + /* 80232A20 */ cXyz getActorPos(); + + /* 80238C78 */ void setActorPos(cXyz pos) { mActorPos = pos; } + + bool isSelectSetCancelFlag() { return mSelectSetCancelFlag != 0; } + BOOL isSelectRubyFlag(int i_flag) { + return mSelectRubyFlag & (u8)(1 << i_flag) ? 1 : 0; + } + + void setAddCharAllAlphaRate(f32 i_alphaRate) { mAddCharAllAlphaRate = i_alphaRate; } + void setCharAllAlphaRate(f32 i_alphaRate) { mCharAllAlphaRate = i_alphaRate; } + void resetNowLightCount() { mNowLightCount = 0; } + void resetDrawLightCount() { mDrawLightCount = 0; } + void setBatchColorFlag(u8 i_flag) { mBatchColorFlag = i_flag; } + void setSendTimer(s16 i_timer) { mSendTimer = i_timer; } + void setSendFlag(u8 i_flag) { mSendFlag = i_flag; } + void setSelectNum(u8 i_num) { mSelectNum = i_num; } + void setSelectType(u8 i_type) { mSelectType = i_type; } + void resetInputFigure() { mInputFigure = 0; } + void onButtonTagStopFlag() { mButtonTagStopFlag = 1; } + void setDemoFrame(u32 i_frame) { mDemoFrame = i_frame; } + void setNowColorType(u8 i_colorType) { mNowColorType = i_colorType; } + void setNowTagScale(u16 i_tagScale) { mNowTagScale = i_tagScale; } + void setRevoMessageID(u32 i_msgID) { mRevoMessageID = i_msgID; } + void setPageLine(int i_no, s8 i_pageLine) { mPageLine[i_no] = i_pageLine; } + void setPageLineMax(int i_no, s8 i_pageLineMax) { mPageLineMax[i_no] = i_pageLineMax; } + void setPageType(int i_no, u8 i_pageType) { mPageType[i_no] = i_pageType; } + void setLineArrange(int i_no, u8 i_arrange) { mLineArrange[i_no] = i_arrange; } + void setLineScale(int i_no, u16 i_lineScale) { mLineScale[i_no] = i_lineScale; } + void setSelLength(int i_no, f32 i_selLength) { mSelLength[i_no] = i_selLength; } + void offSelectRubyFlag(int i_flag) { mSelectRubyFlag &= ~(u8)(1 << i_flag); } + void setPageEndCount(s16 i_endCount) { mPageEndCount = i_endCount; } + void onBombNameUseFlag() { mBombNameUseFlag = 1; } + void onSelectRubyFlag(int i_flag) { mSelectRubyFlag |= (1 << i_flag); } + + void setLineLength(int i_no, f32 i_strLen, f32 i_spaceLen) { + mStrLength[i_no] = i_strLen; + mSpaceLength[i_no] = i_spaceLen; + } + + void setSelectPos(u8 i_pos) { + if (!isSelectSetCancelFlag()) { + mSelectPos = i_pos; + } + } + + dMsgObject_c* getObjectPtr() { return mpObjectPtr; } + u8 getForm() { return mForm; } + u8 getNowLightCount() { return mNowLightCount; } + u8 getCharCountBuffer(int i_no) { return mCharCountBuffer[i_no]; } + u8 getDrawLightCount() { return mDrawLightCount; } + u8 getFukiKind() { return mFukiKind; } + s16 getSendTimer() { return mSendTimer; } + u8 getSelectNum() { return mSelectNum; } + u8 getSelectType() { return mSelectType; } + const char* getSelMsgPtr() { return mpSelMsgPtr; } + f32 getDistanceScale() { return mDistanceScale; } + + /* 80228CB4 */ virtual ~jmessage_tReference(); + + /* 0x0008 */ STControl* mpStick; + /* 0x000C */ u16 mCharactor[0x200]; + /* 0x040C */ s16 field_0x40c; + /* 0x040E */ s16 field_0x40e; + /* 0x0410 */ s16 mCountBackUp; + /* 0x0414 */ cXyz mActorPos; + /* 0x0420 */ f32 mFontSizeX; + /* 0x0424 */ f32 mFontSizeY; + /* 0x0428 */ f32 mRubySize; + /* 0x042C */ f32 mTBoxWidth; + /* 0x0430 */ f32 mTBoxHeight; + /* 0x0434 */ f32 mLineSpace; + /* 0x0438 */ f32 mCharSpace; + /* 0x043C */ f32 mRubyCharSpace; + /* 0x0440 */ f32 mSelFontSize; + /* 0x0444 */ f32 mSelRubySize; + /* 0x0448 */ f32 mSelTBoxWidth; + /* 0x044C */ f32 mSelCharSpace; + /* 0x0450 */ f32 mSelRubyCharSpace; + /* 0x0454 */ f32 mDistanceScale; + /* 0x0458 */ f32 mAddCharAllAlphaRate; + /* 0x045C */ f32 mCharAllAlphaRate; + /* 0x0460 */ f32 mAddCharAlpha; + /* 0x0464 */ f32 mCharAlpha; + /* 0x0468 */ f32 mStrLength[40]; + /* 0x0508 */ f32 mSpaceLength[40]; + /* 0x05A8 */ f32 mSelLength[3]; + /* 0x05B4 */ u32 mDemoFrame; + /* 0x05B8 */ u32 mRevoMessageID; + /* 0x05BC */ u16* mpStatus; + /* 0x05C0 */ dMsgObject_c* mpObjectPtr; + /* 0x05C4 */ char* mpSelMsgPtr; + /* 0x05C8 */ JUTFont* mpFont; + /* 0x05CC */ s16 mStartLineCount; + /* 0x05CE */ s16 mEndLineCount; + /* 0x05D0 */ u16 mLineCount; + /* 0x05D2 */ s16 field_0x5d2; + /* 0x05D4 */ s16 mPageEndCount; + /* 0x05D6 */ s16 mSendTimer; + /* 0x05D8 */ s16 mCharCnt; + /* 0x05DA */ s16 mPageNum; + /* 0x05DC */ u8 mNowLightCount; + /* 0x05DD */ u8 mDrawLightCount; + /* 0x05DE */ u16 mMsgID; + /* 0x05E0 */ u16 mLineScale[40]; + /* 0x0630 */ u16 mTopTagScale; + /* 0x0632 */ u16 mNowTagScale; + /* 0x0634 */ char mWord[10][100]; + /* 0x0A1C */ char mText[0x200]; + /* 0x0C1C */ char mTextS[0x200]; + /* 0x0E1C */ char mRuby[0x200]; + /* 0x101C */ u8 mSelText[3][50]; + /* 0x10B2 */ u8 mSelRuby[3][80]; + /* 0x11A2 */ s8 mPageLine[40]; + /* 0x11CA */ s8 mPageLineMax[40]; + /* 0x11F2 */ u8 mPageType[40]; + /* 0x121A */ u8 mLineArrange[40]; + /* 0x1242 */ u8 mSelectNum; + /* 0x1243 */ u8 mSelectType; + /* 0x1244 */ u8 mSelectPos; + /* 0x1245 */ u8 mFukiPosType; + /* 0x1246 */ u8 mFukiKind; + /* 0x1247 */ u8 mForm; + /* 0x1248 */ u8 mArrange; + /* 0x1249 */ u8 mNowColorType; + /* 0x124A */ u8 mTopColorType; + /* 0x124B */ bool mButtonTagStopFlag; + /* 0x124C */ u8 mSendFlag; + /* 0x124D */ u8 mStopFlag; + /* 0x124E */ u8 mSelectRubyFlag; + /* 0x124F */ u8 mInputFigure; + /* 0x1250 */ u8 mOutFontRupeeColor; + /* 0x1251 */ s8 mNowWordCount; + /* 0x1252 */ s8 mTopWordCount; + /* 0x1253 */ u8 mCharCountBuffer[31]; + /* 0x1272 */ bool mLightBatchFlag; + /* 0x1273 */ bool mBatchFlag; + /* 0x1274 */ bool mSelectSetCancelFlag; + /* 0x1275 */ bool mBombNameUseFlag; + /* 0x1276 */ u8 mBatchColorFlag; +}; // Size: 0x1278 + +struct jmessage_tMeasureProcessor : public JMessage::TRenderingProcessor { + /* 80229A28 */ jmessage_tMeasureProcessor(jmessage_tReference const*); + /* 8022B0B0 */ void do_scale(f32); + /* 8022B18C */ void do_space(u32); + /* 8022B3EC */ void do_pageType(int); + /* 8022B454 */ void do_name1(); + /* 8022B458 */ void do_rubyset(void const*, u32); + /* 8022B4E0 */ void push_word(char*); + + /* 8022B5F4 */ virtual ~jmessage_tMeasureProcessor(); + /* 80229AC4 */ virtual void do_begin(void const*, char const*); + /* 80229CB4 */ virtual void do_end(); + /* 80229E3C */ virtual void do_character(int); + /* 8022A268 */ virtual bool do_tag(u32, void const*, u32); + + /* 0x38 */ f32 field_0x38; + /* 0x3C */ s16 mTotalLineCnt; + /* 0x3E */ s16 field_0x3e; + /* 0x40 */ s16 field_0x40; + /* 0x42 */ u16 field_0x42; + /* 0x44 */ u8 field_0x44; + /* 0x45 */ u8 mSelectType; + /* 0x46 */ u8 field_0x46; + /* 0x47 */ u8 field_0x47; + /* 0x48 */ s8 field_0x48; + /* 0x49 */ s8 field_0x49; + /* 0x4A */ u8 mPageLineMax; + /* 0x4B */ u8 field_0x4b; + /* 0x4C */ u8 field_0x4c; + /* 0x4D */ u8 field_0x4d; +}; // Size: 0x50 + +struct jmessage_tControl; +struct jmessage_tSequenceProcessor : public JMessage::TSequenceProcessor, + public jmessage_tMeasureProcessor { + /* 8022B558 */ jmessage_tSequenceProcessor(jmessage_tReference const*, jmessage_tControl*); + /* 8022C904 */ void do_name1(); + /* 8022C908 */ void do_space(u32); + /* 8022CA24 */ void do_rubyset(void const*, u32); + /* 8022CAAC */ void push_word(); + /* 8022CB10 */ void messageSePlay(u8, u8, cXyz*); + /* 8022CBE8 */ void calcStringLength(); + + /* 8023299C */ virtual ~jmessage_tSequenceProcessor(); + /* 8022B654 */ virtual void do_reset(); + /* 8022B658 */ virtual void do_begin(void const*, char const*); + /* 8022BA3C */ virtual void do_end(); + /* 8022BFE0 */ virtual void do_character(int); + /* 8022C1A0 */ virtual bool do_tag(u32, void const*, u32); + /* 8022BB7C */ virtual bool do_isReady(); + /* 8022C8FC */ virtual bool do_jump_isReady(); + /* 8022CBE4 */ virtual void do_jump(void const*, char const*); + + /* 0x4C jmessage_tMeasureProcessor */ + /* 0x9C */ const void* field_0x9c; + /* 0xA0 */ const char* field_0xa0; + /* 0xA4 */ u16 field_0xa4; + /* 0xA6 */ u16 field_0xa6; + /* 0xA8 */ s16 field_0xa8; + /* 0xAA */ u16 field_0xaa; + /* 0xAC */ u8 field_0xac; + /* 0xAD */ u8 field_0xad; + /* 0xAE */ u8 field_0xae; + /* 0xAF */ u8 mForceForm; + /* 0xB0 */ u8 mMouthCheck; + /* 0xB1 */ u8 field_0xb1; + /* 0xB2 */ u8 field_0xb2; + /* 0xB3 */ u8 field_0xb3; + /* 0xB4 */ u8 field_0xb4; + /* 0xB5 */ s8 field_0xb5; +}; + +struct CharInfo_c; +struct jmessage_tRenderingProcessor : public JMessage::TRenderingProcessor { + /* 8022CCB0 */ jmessage_tRenderingProcessor(jmessage_tReference const*); + /* 8022E12C */ void resetRendering(); + /* 8022E17C */ void do_widthcenter(); + /* 8022E260 */ void do_selwidthcenter(int); + /* 8022E318 */ void do_heightcenter(); + /* 8022E7CC */ void do_color(u8); + /* 8022E860 */ void do_scale(f32); + /* 8022E960 */ void do_linedown(s16); + /* 8022E9C0 */ void do_transY(s16, bool); + /* 8022EAE4 */ void do_outfont(u8, u32); + /* 8022ED10 */ void do_arrow2(); + /* 8022EECC */ void getLineLength(int); + /* 8022EF00 */ void do_strcat(char*, bool, bool, bool); + /* 8022F148 */ void do_rubyset(void const*, u32); + /* 8022F384 */ void do_rubystrcat(char*, char*, f32, f32); + /* 8022F53C */ void do_name1(); + /* 8022F540 */ void do_numset(s16); + /* 8022F734 */ void push_word(); + /* 8022F784 */ void getCharInfo(f32, f32, f32, f32, f32); + + /* 8023293C */ virtual ~jmessage_tRenderingProcessor(); + /* 8022CDC8 */ virtual void do_reset(); + /* 8022CDCC */ virtual void do_begin(void const*, char const*); + /* 8022CFD8 */ virtual void do_end(); + /* 8022D0A0 */ virtual void do_character(int); + /* 8022D74C */ virtual bool do_tag(u32, void const*, u32); + + /* 0x038 */ COutFont_c* mpOutFont; + /* 0x03C */ CharInfo_c* mCharInfoPtr; + /* 0x040 */ s16* mpCharInfoCnt; + /* 0x044 */ f32 field_0x44; + /* 0x048 */ f32 field_0x48; + /* 0x04C */ f32 field_0x4c; + /* 0x050 */ f32 mTextInitPosX; + /* 0x054 */ f32 mTextInitPosY; + /* 0x058 */ f32 mTextInitScaleX; + /* 0x05C */ f32 mTextInitScaleY; + /* 0x060 */ f32 mSelTextInitPosX[3]; + /* 0x06C */ f32 mSelTextInitPosY[3]; + /* 0x078 */ f32 mTextInitOffsetPos; + /* 0x07C */ f32 field_0x7c[40]; + /* 0x11C */ int field_0x11c; + /* 0x120 */ u32 mCCColor; + /* 0x124 */ u32 mGCColor; + /* 0x128 */ f32 field_0x128; + /* 0x12C */ f32 field_0x12c; + /* 0x130 */ f32 field_0x130; + /* 0x134 */ f32 field_0x134; + /* 0x138 */ f32 field_0x138; + /* 0x13C */ u16 field_0x13c; + /* 0x13E */ u16 field_0x13e; + /* 0x140 */ u16 field_0x140; + /* 0x142 */ u16 field_0x142; + /* 0x144 */ u16 field_0x144; + /* 0x146 */ u16 field_0x146; + /* 0x148 */ u16 field_0x148; + /* 0x14A */ u16 field_0x14a; + /* 0x14C */ u8 field_0x14c; + /* 0x14D */ u8 field_0x14d; + /* 0x14E */ u8 field_0x14e; + /* 0x14F */ u8 field_0x14f; + /* 0x150 */ u8 mColorNo; + /* 0x151 */ u8 field_0x151; + /* 0x152 */ u8 field_0x152[0x184 - 0x152]; + /* 0x184 */ u8 field_0x184; + /* 0x185 */ u8 field_0x185; + /* 0x186 */ u8 field_0x186; + /* 0x187 */ u8 field_0x187; +}; + +struct jmessage_string_tControl : public JMessage::TControl { + /* 8022FB5C */ jmessage_string_tControl(); + + /* 802328DC */ virtual ~jmessage_string_tControl(); +}; + +struct jmessage_string_tReference : public JMessage::TReference { + /* 8022F8C0 */ jmessage_string_tReference(); + /* 8022F9AC */ void init(J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, u8); + /* 8022FA2C */ void setCharactor(u16); + /* 8022FA30 */ void addCharactor(u16); + /* 8022FA34 */ void resetCharactor(); + /* 8022FA38 */ void getLineLength(int); + /* 8022FA6C */ void addLineLength(int, f32); + /* 8022FA98 */ void getOutfontLength(int); + /* 8022FACC */ void setOutfontLength(int, f32); + /* 8022FAF0 */ void clearOutfontLength(int); + /* 8022FB24 */ void getLineCountNowPage(); + + /* 8022F94C */ virtual ~jmessage_string_tReference(); + + /* 0x08 */ J2DTextBox* mPanePtr; + /* 0x0C */ J2DTextBox* mRubyPanePtr; + /* 0x10 */ COutFont_c* mOutFontPtr; + /* 0x14 */ JUTFont* mpFont; + /* 0x18 */ f32 mLineLength[12]; + /* 0x48 */ f32 mOutfontLength[12]; + /* 0x78 */ u32 mCCColor; + /* 0x7C */ u32 mGCColor; + /* 0x80 */ s16 mLineCount; + /* 0x82 */ u8 mLineMax; + /* 0x83 */ u8 mNowPage; + /* 0x84 */ u8 mFlags; +}; + +struct jmessage_string_tMeasureProcessor : public JMessage::TRenderingProcessor { + /* 8022FB98 */ jmessage_string_tMeasureProcessor(jmessage_string_tReference const*); + /* 8023098C */ void do_rubyset(void const*, u32); + + /* 80230A5C */ virtual ~jmessage_string_tMeasureProcessor(); + /* 8022FBE4 */ virtual void do_begin(void const*, char const*); + /* 8022FC14 */ virtual void do_end(); + /* 8022FC28 */ virtual void do_character(int); + /* 8022FDF0 */ virtual void do_tag(u32, void const*, u32); + + /* 0x38 */ jmessage_string_tReference* mpReference; +}; + +struct jmessage_string_tSequenceProcessor : public JMessage::TSequenceProcessor, public jmessage_string_tMeasureProcessor { + /* 80230A08 */ jmessage_string_tSequenceProcessor(jmessage_string_tReference const*, + jmessage_string_tControl*); + + /* 80232858 */ virtual ~jmessage_string_tSequenceProcessor(); + /* 80230ABC */ virtual void do_reset(); + /* 80230AC0 */ virtual void do_begin(void const*, char const*); + /* 80230B7C */ virtual void do_end(); + /* 80230B88 */ virtual void do_character(int); + /* 80230B8C */ virtual void do_tag(u32, void const*, u32); + /* 80230B80 */ virtual bool do_isReady(); + /* 80230BBC */ virtual bool do_jump_isReady(); + /* 80230BC4 */ virtual void do_jump(void const*, char const*); +}; + +struct jmessage_string_tRenderingProcessor : public JMessage::TRenderingProcessor { + /* 80230BC8 */ jmessage_string_tRenderingProcessor(jmessage_string_tReference const*); + /* 80230C20 */ void getLineCountNowPage(); + /* 80231D70 */ void do_widthcenter(); + /* 80231EF0 */ void do_heightcenter(); + /* 80232044 */ void do_strcat(char*); + /* 802320B0 */ void do_rubyset(void const*, u32); + /* 80232260 */ void do_rubystrcat(char*); + /* 802322CC */ void do_outfont(u8); + /* 8023256C */ void do_color(u8); + /* 80232600 */ void do_scale(f32); + /* 80232690 */ void do_linedown(s16); + /* 802326E4 */ void do_numset(s16); + /* 802327BC */ void push_word(char const*); + + /* 802327F8 */ virtual ~jmessage_string_tRenderingProcessor(); + /* 80230C5C */ virtual void do_reset(); + /* 80230CA0 */ virtual void do_begin(void const*, char const*); + /* 80230CE8 */ virtual void do_end(); + /* 80230D48 */ virtual void do_character(int); + /* 80231110 */ virtual void do_tag(u32, void const*, u32); + + /* 0x38 */ jmessage_string_tReference* mpReference; +}; #endif /* D_MSG_D_MSG_CLASS_H */ diff --git a/include/d/msg/d_msg_flow.h b/include/d/msg/d_msg_flow.h index 378fb187a1..4e975d941b 100644 --- a/include/d/msg/d_msg_flow.h +++ b/include/d/msg/d_msg_flow.h @@ -1,9 +1,7 @@ #ifndef D_MSG_D_MSG_FLOW_H #define D_MSG_D_MSG_FLOW_H -#include "d/msg/d_msg_class.h" -#include "dolphin/types.h" -#include "f_op/f_op_actor.h" +#include "f_op/f_op_msg.h" // all mesg_flow_node structs members might be wrong struct mesg_flow_node { diff --git a/include/d/msg/d_msg_object.h b/include/d/msg/d_msg_object.h index 7f7c74f6f2..8f9c3f73d0 100644 --- a/include/d/msg/d_msg_object.h +++ b/include/d/msg/d_msg_object.h @@ -7,7 +7,6 @@ #include "JSystem/JMessage/resource.h" #include "d/com/d_com_inf_game.h" #include "d/msg/d_msg_class.h" -#include "dolphin/types.h" class COutFont_c; class dMsgScrnBase_c; @@ -20,7 +19,7 @@ public: /* 80233AE8 */ void _delete(); /* 80233D04 */ void setMessageIndex(u32, u32, bool); /* 80233E70 */ void setMessageIndexDemo(u32, bool); - /* 80233F84 */ void getMessageIndex(u32); + /* 80233F84 */ int getMessageIndex(u32); /* 80233FD8 */ void getRevoMessageIndex(u32); /* 802340D4 */ void getMessageIndexAlways(u32); /* 80234128 */ void getMessageIDAlways(u32); @@ -51,24 +50,24 @@ public: /* 80236D0C */ void changeGroupLocal(s16); /* 80236DE4 */ void getStringLocal(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, char*, char*, char*, s16*); - /* 802370A8 */ BOOL isGetItemMessage(); - /* 802370BC */ BOOL isKanbanMessage(); - /* 802370E8 */ BOOL isHowlMessage(); + /* 802370A8 */ u8 isGetItemMessage(); + /* 802370BC */ bool isKanbanMessage(); + /* 802370E8 */ u8 isHowlMessage(); /* 802370FC */ bool isMidonaMessage(); - /* 80237138 */ void isMidonaNormalTalkWait(); - /* 802371B0 */ void isMidonaTalkWait(); - /* 802371E4 */ void isPlaceMessage(); - /* 802371F8 */ void isBossMessage(); + /* 80237138 */ bool isMidonaNormalTalkWait(); + /* 802371B0 */ bool isMidonaTalkWait(); + /* 802371E4 */ bool isPlaceMessage(); + /* 802371F8 */ bool isBossMessage(); /* 8023720C */ bool isBookMessage(); - /* 80237214 */ void isStaffMessage(); - /* 80237228 */ void isSaveMessage(); - /* 8023723C */ void isTalkMessage(); - /* 802372CC */ void getSmellName(); - /* 80237334 */ void getPortalName(); - /* 8023738C */ void getBombName(); - /* 8023741C */ void getInsectName(); - /* 80237478 */ void getLetterName(); - /* 802374D0 */ void getSelectBombNum(); + /* 80237214 */ bool isStaffMessage(); + /* 80237228 */ bool isSaveMessage(); + /* 8023723C */ bool isTalkMessage(); + /* 802372CC */ const char* getSmellName(); + /* 80237334 */ const char* getPortalName(); + /* 8023738C */ const char* getBombName(); + /* 8023741C */ const char* getInsectName(); + /* 80237478 */ const char* getLetterName(); + /* 802374D0 */ u8 getSelectBombNum(); /* 80237520 */ void onMsgSendControlLocal(); /* 80237530 */ void offMsgSendControlLocal(); /* 80237550 */ void isMsgSendControlLocal(); @@ -145,7 +144,7 @@ public: /* 802384D8 */ static void setArrowNum(u8); /* 802384EC */ void setMsgOutputType(u8); /* 80238500 */ void getMsgOutputType(); - /* 80238514 */ void getWord(); + /* 80238514 */ static const char* getWord(); /* 80238528 */ void getSelectWord(int); /* 80238544 */ void setSelectWordFlag(u8); /* 80238574 */ void getSelectWordFlag(); @@ -159,8 +158,29 @@ public: void setShopWaitTimerLocal(u8 timer) { mShopWaitTimer = timer; } void setSelectCancelPosLocal(u8 pos) { mSelectCancelPos = pos; } u8 getItemEquipButtonLocal() { return mItemEquipButton; } + s16 getInputValueLocal() { return mInputValue; } + void setInputValueLocal(s16 i_inputValue) { mInputValue = i_inputValue; } + s16 getNowTotalPriceLocal() { return mNowTotalPrice; } + s16 getNowTotalPaymentLocal() { return mNowTotalPayment; } + void onInputFlagLocal() { mInputFlag = 1; } + void offAutoMessageFlagLocal() { mAutoMessageFlag = 0; } + void onAutoMessageFlagLocal() { mAutoMessageFlag = 1; } + void setFundRaisingValueLocal(s16 i_value) { mFundRaisingValue = i_value; } + u16 getPortalMessageIDLocal() { return mPortalMessageID; } + u8 getSelectPushFlag() { return mSelectPushFlag; } u8 getSelectCancelPos() { return mSelectCancelPos; } + s16 getInputValue() { return getInputValueLocal(); } + void setInputValue(s16 i_inputValue) { setInputValueLocal(i_inputValue); } + s16 getNowTotalPrice() { return getNowTotalPriceLocal(); } + s16 getNowTotalPayment() { return getNowTotalPaymentLocal(); } + void onInputFlag() { onInputFlagLocal(); } + void offAutoMessageFlag() { offAutoMessageFlagLocal(); } + void onAutoMessageFlag() { onAutoMessageFlagLocal(); } + void setFundRaisingValue(s16 i_value) { setFundRaisingValueLocal(i_value); } + u16 getPortalMessageID() { return getPortalMessageIDLocal(); } + + jmessage_tSequenceProcessor* getSequenceProcessor() { return mpSeqProc; } /* 0x0FC */ int field_0xfc; /* 0x100 */ msg_class* field_0x100; @@ -195,11 +215,11 @@ public: /* 0x16E */ u16 field_0x16e; /* 0x170 */ u16 mNowTalkFlowNo; /* 0x172 */ u16 field_0x172; - /* 0x174 */ u16 mInputValue; + /* 0x174 */ s16 mInputValue; /* 0x176 */ u16 mFundRaisingValue; /* 0x178 */ u16 field_0x178; - /* 0x17A */ u16 mNowTotalPrice; - /* 0x17C */ u16 mNowTotalPayment; + /* 0x17A */ s16 mNowTotalPrice; + /* 0x17C */ s16 mNowTotalPayment; /* 0x17E */ u16 field_0x17e; /* 0x180 */ u16 mPortalMessageID; /* 0x182 */ u16 mBombMessageID[3]; @@ -278,6 +298,10 @@ inline void dMsgObject_setDemoMessage(u32 param_0) { dMsgObject_getMsgObjectClass()->setDemoMessage(param_0); } +inline const char* dMsgObject_getWord() { + return dMsgObject_c::getWord(); +} + inline void dMsgObject_setShopWaitTimer(u8 timer) { dMsgObject_c::setShopWaitTimer(timer); } @@ -478,13 +502,12 @@ public: /* 0x310 */ u16 mBossNameDisplayTime; /* 0x312 */ u16 mBatchDisplayWeight_3; /* 0x314 */ u16 mCharDisplayWeight_5; - /* 0x316 */ u16 mBatchDisplayWeight_8; - /* 0x318 */ u16 mBatchDisplayWeight_9; - /* 0x31A */ u16 mHaloDelayFrame; - /* 0x31C */ u16 mHaloDelayFrameSpirit; + /* 0x316 */ s16 mBatchDisplayWeight_8; + /* 0x318 */ s16 mBatchDisplayWeight_9; + /* 0x31A */ s16 mHaloDelayFrame; + /* 0x31C */ s16 mHaloDelayFrameSpirit; /* 0x31E */ bool mSaveSeqMsgDebug; /* 0x31F */ bool mMsgDebug; - /* 0x320 */ u8 field_0x320; /* 0x320 */ bool mTextColorDebug; /* 0x321 */ u8 mTextColorUpperR[9]; // Default, Red, Green, Blue, Yellow, L.Blue, Purple, Grey, Orange, /* 0x32A */ u8 mTextColorUpperG[9]; diff --git a/include/d/msg/d_msg_unit.h b/include/d/msg/d_msg_unit.h index af9ade818b..f32b1e6b44 100644 --- a/include/d/msg/d_msg_unit.h +++ b/include/d/msg/d_msg_unit.h @@ -3,4 +3,18 @@ #include "dolphin/types.h" +class dMsgUnit_c { +public: + /* 80238C94 */ dMsgUnit_c(); + /* 80238CEC */ void setTag(int, int, char*, bool); + + /* 80238CA4 */ virtual ~dMsgUnit_c(); +}; + +extern dMsgUnit_c g_msg_unit; + +inline void dMsgUnit_setTag(int param_0, int param_1, char* param_2) { + g_msg_unit.setTag(param_0, param_1, param_2, true); +} + #endif /* D_MSG_D_MSG_UNIT_H */ diff --git a/include/d/save/d_save.h b/include/d/save/d_save.h index 387be9e51b..8071645b43 100644 --- a/include/d/save/d_save.h +++ b/include/d/save/d_save.h @@ -385,7 +385,7 @@ public: u16 getMaxLife() { return mMaxLife; } u16 getLife() const { return mLife; } - u16 getRupee() { return mRupee; } + u16 getRupee() const { return mRupee; } u16 getOil() { return mOil; } u16 getMaxOil() const { return mMaxOil; } u8& getMagic() { return mMagic; } @@ -678,6 +678,7 @@ class dSv_player_info_c { public: void init(); char* getLinkName() { return mPlayerName; } + char* getHorseName() { return mHorseName; } void setPlayerName(const char* i_name) { strcpy((char*)mPlayerName, i_name); } void setHorseName(const char* i_name) { strcpy((char*)mHorseName, i_name); } void setTotalTime(s64 i_time) { mTotalTime = i_time; } @@ -851,6 +852,9 @@ class dSv_MiniGame_c { public: void init(); + u32 getRaceGameTime() const { return mRaceGameTime; } + u32 getBalloonScore() const { return mBalloonScore; } + private: /* 0x00 */ u8 unk0; /* 0x01 */ u8 unk1[3]; @@ -1040,6 +1044,7 @@ public: dSv_player_c& getPlayer() { return mPlayer; } dSv_event_c& getEvent() { return mEvent; } dSv_memory_c& getSave(int i_stageNo) { return mSave[i_stageNo]; } + dSv_MiniGame_c& getMiniGame() { return mMiniGame; } void putSave(int i_stageNo, dSv_memory_c mem) { mSave[i_stageNo] = mem; } static const int STAGE_MAX = 32; @@ -1084,6 +1089,7 @@ public: dSv_turnRestart_c& getTurnRestart() { return mTurnRestart; } dSv_event_c& getEvent() { return mSavedata.getEvent(); } dSv_danBit_c& getDan() { return mDan; } + dSv_MiniGame_c& getMiniGame() { return mSavedata.getMiniGame(); } s64 getStartTime() const { return mStartTime; } s64 getSaveTotalTime() const { return mSaveTotalTime; } void setStartTime(s64 time) { mStartTime = time; } diff --git a/include/dolphin/gx/GX.h b/include/dolphin/gx/GX.h index d2d03f349f..a34161b4b6 100644 --- a/include/dolphin/gx/GX.h +++ b/include/dolphin/gx/GX.h @@ -53,6 +53,12 @@ inline void GXPosition3f32(f32 x, f32 y, f32 z) { GXFIFO.f32 = z; } +inline void GXNormal3f32(f32 x, f32 y, f32 z) { + GXFIFO.f32 = x; + GXFIFO.f32 = y; + GXFIFO.f32 = z; +} + inline void GXPosition2f32(f32 x, f32 z) { GXFIFO.f32 = x; GXFIFO.f32 = z; diff --git a/include/dolphin/gx/GXAttr.h b/include/dolphin/gx/GXAttr.h index 9b9bbdf4ee..7cebd8d6fd 100644 --- a/include/dolphin/gx/GXAttr.h +++ b/include/dolphin/gx/GXAttr.h @@ -29,9 +29,15 @@ void GXSetVtxAttrFmtv(GXVtxFmt fmt, GXVtxAttrFmtList* list); void __GXSetVAT(void); void GXSetArray(GXAttr attr, void* base, u8); void GXInvalidateVtxCache(void); -void GXSetTexCoordGen2(GXTexCoordID dst, GXTexGenType type, GXTexGenSrc src, u32 mtx, GXBool renormalize, u32 pt_mtx); +void GXSetTexCoordGen2(GXTexCoordID dst, GXTexGenType type, GXTexGenSrc src, u32 mtx, + GXBool renormalize, u32 pt_mtx); void GXSetNumTexGens(u8 numTexGens); +void GXGetVtxAttrFmtv(GXVtxFmt param_0, GXVtxAttrFmtList* param_1); +void GXGetVtxAttrFmt(GXVtxFmt param_0, int param_1, GXCompCnt* param_2, GXCompType* param_3, + u8* param_4); +void GXGetVtxDescv(GXVtxDescList* attrPtr); + #ifdef __cplusplus }; #endif diff --git a/include/dolphin/gx/GXDraw.h b/include/dolphin/gx/GXDraw.h new file mode 100644 index 0000000000..6e31b179f6 --- /dev/null +++ b/include/dolphin/gx/GXDraw.h @@ -0,0 +1,17 @@ +#ifndef GXDRAW_H +#define GXDRAW_H + +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXEnum.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void GXDrawCylinder(u8 numEdges); + +#ifdef __cplusplus +}; +#endif + +#endif /* GXDRAW_H */ diff --git a/include/f_op/f_op_msg.h b/include/f_op/f_op_msg.h index 5ba7d17fb4..1e093473c6 100644 --- a/include/f_op/f_op_msg.h +++ b/include/f_op/f_op_msg.h @@ -1,8 +1,22 @@ #ifndef F_OP_F_OP_MSG_H #define F_OP_F_OP_MSG_H -#include "dolphin/types.h" #include "f_pc/f_pc_leaf.h" +#include "f_op/f_op_actor.h" + +class msg_class : public leafdraw_class { +public: + /* 0xC0 */ int mMsgType; + /* 0xC4 */ create_tag_class mDwTg; + /* 0xD8 */ leafdraw_method_class* mSubMtd; + /* 0xDC */ fopAc_ac_c* mpActor; + /* 0xE0 */ cXyz mPos; + /* 0xEC */ u32 mMsgID; + /* 0xF0 */ u32 field_0xf0; + /* 0xF4 */ u32 field_0xf4; + /* 0xF8 */ u16 mMode; + /* 0xFA */ u8 mSelectedChoiceIdx; +}; // Size: 0xFC extern leafdraw_method_class g_fopMsg_Method; diff --git a/include/f_op/f_op_msg_mng.h b/include/f_op/f_op_msg_mng.h index 8e115fd700..15fa6eae40 100644 --- a/include/f_op/f_op_msg_mng.h +++ b/include/f_op/f_op_msg_mng.h @@ -1,9 +1,7 @@ #ifndef F_F_OP_MSG_MNG_H_ #define F_F_OP_MSG_MNG_H_ -#include "d/msg/d_msg_class.h" -#include "dolphin/types.h" -#include "f_op/f_op_actor.h" +#include "f_op/f_op_msg.h" struct msg_process_profile_definition { /* 0x00 */ leaf_process_profile_definition mBase; diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 474820b6b3..40d5d75aee 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -8,6 +8,7 @@ #include "JSystem/JKernel/JKRSolidHeap.h" #include "global.h" #include "m_Do/m_Do_audio.h" +#include "m_Do/m_Do_mtx.h" class mDoExt_baseAnm { public: @@ -481,6 +482,44 @@ private: /* 0x18 */ mDoExt_3Dline_c* field_0x18; }; +class mDoExt_cubePacket : public J3DPacket { +public: + mDoExt_cubePacket(cXyz& i_position, cXyz& i_size, csXyz& i_angle, const GXColor& i_color) { + mPosition = i_position; + mSize = i_size; + mAngle = i_angle; + mColor = i_color; + } + + virtual void draw(); + virtual ~mDoExt_cubePacket() {} + + /* 0x10 */ cXyz mPosition; + /* 0x1C */ cXyz mSize; + /* 0x28 */ csXyz mAngle; + /* 0x2E */ GXColor mColor; +}; + +class mDoExt_cylinderPacket : public J3DPacket { +public: + mDoExt_cylinderPacket(cXyz& i_position, f32 i_radius, f32 i_height, const GXColor& i_color, u8 param_4) { + mPosition = i_position; + mRadius = i_radius; + mHeight = i_height; + mColor = i_color; + field_0x28 = param_4; + } + + virtual void draw(); + virtual ~mDoExt_cylinderPacket() {} + + /* 0x10 */ cXyz mPosition; + /* 0x1C */ f32 mRadius; + /* 0x20 */ f32 mHeight; + /* 0x24 */ GXColor mColor; + /* 0x28 */ u8 field_0x28; +}; + JKRSolidHeap* mDoExt_createSolidHeapFromGame(u32 i_size, u32 i_alignment); void mDoExt_destroySolidHeap(JKRSolidHeap* i_heap); u32 mDoExt_adjustSolidHeap(JKRSolidHeap* i_heap); diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h index a415fd414d..dff4b20c56 100644 --- a/include/m_Do/m_Do_mtx.h +++ b/include/m_Do/m_Do_mtx.h @@ -24,6 +24,7 @@ void mDoMtx_lookAt(f32 (*param_0)[4], Vec const* param_1, Vec const* param_2, Ve s16 param_4); void mDoMtx_concatProjView(f32 const (*param_0)[4], f32 const (*param_1)[4], f32 (*param_2)[4]); void mDoMtx_ZrotM(Mtx mtx, s16 z); +void mDoMtx_inverseTranspose(f32 const (*param_0)[4], f32 (*param_1)[4]); inline void mDoMtx_multVecSR(Mtx m, const Vec* src, Vec* dst) { PSMTXMultVecSR(m, src, dst); @@ -98,6 +99,7 @@ public: static void XrotM(s16 x) { mDoMtx_XrotM(now, x); } static void ZrotM(s16 z) { mDoMtx_ZrotM(now, z); } static void inverse() { PSMTXInverse(now, now); } + static void inverseTranspose() { mDoMtx_inverseTranspose(now, now); } static void concat(const Mtx m) { PSMTXConcat(now, m, now); } static void revConcat(const Mtx m) { PSMTXConcat(m, now, now); } static void copy(const Mtx m) { PSMTXCopy(m, now); } diff --git a/include/rel/d/a/kytag/d_a_kytag06/d_a_kytag06.h b/include/rel/d/a/kytag/d_a_kytag06/d_a_kytag06.h index ea64262f62..cc30b2b861 100644 --- a/include/rel/d/a/kytag/d_a_kytag06/d_a_kytag06.h +++ b/include/rel/d/a/kytag/d_a_kytag06/d_a_kytag06.h @@ -1,6 +1,27 @@ #ifndef D_A_KYTAG06_H #define D_A_KYTAG06_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" +#include "d/d_path.h" + +class kytag06_class : public fopAc_ac_c { +public: + /* 0x568 */ dPath* mpPath; + /* 0x56C */ f32 mWindPower; + /* 0x570 */ f32 field_0x570; + /* 0x574 */ int field_0x574; + /* 0x578 */ int field_0x578; + /* 0x57C */ int field_0x57c; + /* 0x580 */ u32 field_0x580[4]; + /* 0x590 */ u8 mMode; + /* 0x591 */ u8 field_0x591; + /* 0x592 */ u8 field_0x592; + /* 0x593 */ u8 mType; + /* 0x594 */ u8 mPathNo; + /* 0x595 */ u8 mSwNo; + /* 0x596 */ u8 field_0x596; + /* 0x597 */ u8 field_0x597; + /* 0x598 */ u8 field_0x598; +}; #endif /* D_A_KYTAG06_H */ -- cgit v1.2.3