diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2022-06-29 13:19:09 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-29 22:19:09 +0200 |
| commit | 046d178003035ea87d3042a61917c2d482c68c74 (patch) | |
| tree | 4240e760d8d40201ca4ec96634da8abff211f6bb /src/msg | |
| parent | cd5b02450cf278cbeb2c8bb90be1ad22518938c7 (diff) | |
work on daalink, fop actor, mDo machine, msg_scrn, + various (#201)
* work on fop actor / actor mng, daalink, d_a_obj_item
* d_a_title mostly decompiled
* daalink / d_event / JMessage / dmsg_out_font work
* msg_scrn_base / msg_scrn_boss
* some work on mDo machine, d_menu_save, d_tresure, and various
* remove asm
* progress
Diffstat (limited to 'src/msg')
| -rw-r--r-- | src/msg/scrn/d_msg_scrn_base.cpp | 387 | ||||
| -rw-r--r-- | src/msg/scrn/d_msg_scrn_boss.cpp | 293 | ||||
| -rw-r--r-- | src/msg/scrn/d_msg_scrn_explain.cpp | 111 |
3 files changed, 200 insertions, 591 deletions
diff --git a/src/msg/scrn/d_msg_scrn_base.cpp b/src/msg/scrn/d_msg_scrn_base.cpp index bec807ab96..25d3cce7db 100644 --- a/src/msg/scrn/d_msg_scrn_base.cpp +++ b/src/msg/scrn/d_msg_scrn_base.cpp @@ -6,325 +6,154 @@ #include "msg/scrn/d_msg_scrn_base.h" #include "dol2asm.h" #include "dolphin/types.h" - -// -// Types: -// - -struct dMsgScrnBase_c { - /* 80238C3C */ void exec(); - /* 80238C40 */ void setSelectRubyString(char*, char*, char*); - /* 80238C44 */ void setSelectString(char*, char*, char*); - /* 80238C48 */ bool selectAnimeMove(u8, u8, bool); - /* 80238C50 */ void selectAnimeInit(u8, u8, f32, u8); - /* 80238C54 */ void arwAnimeMove(); - /* 80238C58 */ void arwAnimeInit(); - /* 80238C5C */ void fukiPosCalc(u8); - /* 80238C60 */ bool isSelect(); - /* 80238C68 */ bool selectAnimeEnd(); - /* 80238C70 */ void dotAnimeMove(); - /* 80238C74 */ void dotAnimeInit(); - /* 8023C0DC */ dMsgScrnBase_c(); - /* 8023C124 */ ~dMsgScrnBase_c(); - /* 8023C16C */ void init(); - /* 8023C234 */ void multiDraw(); - /* 8023C274 */ void draw(); - /* 8023C300 */ void drawSelf(); - /* 8023C32C */ void drawOutFont(f32, f32, f32); - /* 8023C360 */ void setString(char*, char*); - /* 8023C3EC */ void setRubyString(char*); - /* 8023C458 */ void fukiScale(f32); - /* 8023C480 */ void fukiTrans(f32, f32); - /* 8023C4A4 */ void fukiAlpha(f32); - /* 8023C4F4 */ void fontAlpha(f32); - /* 8023C574 */ void isTalkNow(); -}; - -struct dMsgObject_c { - /* 8023822C */ void getStatus(); -}; - -struct dDlst_base_c {}; - -struct dDlst_list_c { - /* 80056794 */ void set(dDlst_base_c**&, dDlst_base_c**&, dDlst_base_c*); -}; - -struct J2DTextBox { - /* 80300658 */ void getStringPtr() const; -}; - -struct J2DGrafContext {}; - -struct J2DScreen { - /* 802F8ED4 */ void draw(f32, f32, J2DGrafContext const*); -}; - -struct CPaneMgrAlpha { - /* 802557D0 */ void setAlphaRate(f32); -}; - -struct CPaneMgr { - /* 802545B0 */ void paneTrans(f32, f32); - /* 80254638 */ void paneScale(f32, f32); -}; - -// -// Forward References: -// - -extern "C" void __ct__14dMsgScrnBase_cFv(); -extern "C" void __dt__14dMsgScrnBase_cFv(); -extern "C" void init__14dMsgScrnBase_cFv(); -extern "C" void multiDraw__14dMsgScrnBase_cFv(); -extern "C" void draw__14dMsgScrnBase_cFv(); -extern "C" void drawSelf__14dMsgScrnBase_cFv(); -extern "C" void drawOutFont__14dMsgScrnBase_cFfff(); -extern "C" void setString__14dMsgScrnBase_cFPcPc(); -extern "C" void setRubyString__14dMsgScrnBase_cFPc(); -extern "C" void fukiScale__14dMsgScrnBase_cFf(); -extern "C" void fukiTrans__14dMsgScrnBase_cFff(); -extern "C" void fukiAlpha__14dMsgScrnBase_cFf(); -extern "C" void fontAlpha__14dMsgScrnBase_cFf(); -extern "C" void isTalkNow__14dMsgScrnBase_cFv(); - -// -// External References: -// - -extern "C" void set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c(); -extern "C" void getStatus__12dMsgObject_cFv(); -extern "C" void exec__14dMsgScrnBase_cFv(); -extern "C" void setSelectRubyString__14dMsgScrnBase_cFPcPcPc(); -extern "C" void setSelectString__14dMsgScrnBase_cFPcPcPc(); -extern "C" bool selectAnimeMove__14dMsgScrnBase_cFUcUcb(); -extern "C" void selectAnimeInit__14dMsgScrnBase_cFUcUcfUc(); -extern "C" void arwAnimeMove__14dMsgScrnBase_cFv(); -extern "C" void arwAnimeInit__14dMsgScrnBase_cFv(); -extern "C" void fukiPosCalc__14dMsgScrnBase_cFUc(); -extern "C" bool isSelect__14dMsgScrnBase_cFv(); -extern "C" bool selectAnimeEnd__14dMsgScrnBase_cFv(); -extern "C" void dotAnimeMove__14dMsgScrnBase_cFv(); -extern "C" void dotAnimeInit__14dMsgScrnBase_cFv(); -extern "C" void paneTrans__8CPaneMgrFff(); -extern "C" void paneScale__8CPaneMgrFff(); -extern "C" void setAlphaRate__13CPaneMgrAlphaFf(); -extern "C" void __dl__FPv(); -extern "C" void draw__9J2DScreenFffPC14J2DGrafContext(); -extern "C" void getStringPtr__10J2DTextBoxCFv(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void strcpy(); -extern "C" extern void* __vt__12dDlst_base_c[3]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803C0D08-803C0D58 -00001 0050+00 1/1 0/0 0/0 .data @3949 */ -SECTION_DATA static void* lit_3949[20] = { - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40), - (void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38), -}; - -/* 803C0D58-803C0DB0 01DE78 0058+00 2/2 0/0 0/0 .data __vt__14dMsgScrnBase_c */ -SECTION_DATA extern void* __vt__14dMsgScrnBase_c[22] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)draw__14dMsgScrnBase_cFv, - (void*)__dt__14dMsgScrnBase_cFv, - (void*)exec__14dMsgScrnBase_cFv, - (void*)multiDraw__14dMsgScrnBase_cFv, - (void*)drawSelf__14dMsgScrnBase_cFv, - (void*)setSelectString__14dMsgScrnBase_cFPcPcPc, - (void*)setSelectRubyString__14dMsgScrnBase_cFPcPcPc, - (void*)arwAnimeInit__14dMsgScrnBase_cFv, - (void*)arwAnimeMove__14dMsgScrnBase_cFv, - (void*)dotAnimeInit__14dMsgScrnBase_cFv, - (void*)dotAnimeMove__14dMsgScrnBase_cFv, - (void*)isSelect__14dMsgScrnBase_cFv, - (void*)selectAnimeInit__14dMsgScrnBase_cFUcUcfUc, - (void*)selectAnimeMove__14dMsgScrnBase_cFUcUcb, - (void*)selectAnimeEnd__14dMsgScrnBase_cFv, - (void*)fukiScale__14dMsgScrnBase_cFf, - (void*)fukiTrans__14dMsgScrnBase_cFff, - (void*)fukiAlpha__14dMsgScrnBase_cFf, - (void*)fontAlpha__14dMsgScrnBase_cFf, - (void*)fukiPosCalc__14dMsgScrnBase_cFUc, -}; +#include "d/msg/d_msg_object.h" /* 8023C0DC-8023C124 236A1C 0048+00 0/0 9/9 0/0 .text __ct__14dMsgScrnBase_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgScrnBase_c::dMsgScrnBase_c() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/__ct__14dMsgScrnBase_cFv.s" +dMsgScrnBase_c::dMsgScrnBase_c() { + init(); } -#pragma pop /* 8023C124-8023C16C 236A64 0048+00 1/0 9/9 0/0 .text __dt__14dMsgScrnBase_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgScrnBase_c::~dMsgScrnBase_c() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/__dt__14dMsgScrnBase_cFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80454BA8-80454BAC 0031A8 0004+00 3/3 0/0 0/0 .sdata2 @3820 */ -SECTION_SDATA2 static u8 lit_3820[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80454BAC-80454BB0 0031AC 0004+00 2/2 0/0 0/0 .sdata2 @3821 */ -SECTION_SDATA2 static f32 lit_3821 = 1.0f; +dMsgScrnBase_c::~dMsgScrnBase_c() {} /* 8023C16C-8023C234 236AAC 00C8+00 1/1 9/9 0/0 .text init__14dMsgScrnBase_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBase_c::init() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/init__14dMsgScrnBase_cFv.s" +void dMsgScrnBase_c::init() { + mpScreen = NULL; + mpPmp_c = NULL; + field_0x54 = 0; + + for (int i = 0; i < 7; i++) { + mpTm_c[i] = NULL; + mpTmr_c[i] = NULL; + } + + mpOutFont = NULL; + field_0x48 = NULL; + field_0x4c = 0; + mCharInfoPtr = NULL; + + mFontSize.mSizeY = 0.0f; + mFontSize.mSizeX = 0.0f; + mRubySize = 0.0f; + mTextBoxPosX = 0.0f; + mTextBoxPosY = 0.0f; + mTextBoxScaleX = 1.0f; + mTextBoxScaleY = 1.0f; + mTBoxWidth = 0.0f; + mTBoxHeight = 0.0f; + mLineSpace = 0.0f; + mCharSpace = 0.0f; + mRubyCharSpace = 0.0f; + mSelFontSize = 0.0f; + mSelRubySize = 0.0f; + + for (int i = 0; i < 3; i++) { + mSelTextBoxPosX[i] = 0.0f; + mSelTextBoxPosY[i] = 0.0f; + } + + mSelTBoxWidth = 0.0f; + mSelCharSpace = 0.0f; + mSelRubyCharSpace = 0.0f; + mTextBoxPosOffsetY = 0.0f; + field_0xb8 = 0.0f; + mCharAlphaRate = 1.0f; } -#pragma pop /* 8023C234-8023C274 236B74 0040+00 1/0 9/0 0/0 .text multiDraw__14dMsgScrnBase_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBase_c::multiDraw() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/multiDraw__14dMsgScrnBase_cFv.s" +void dMsgScrnBase_c::multiDraw() { + if (field_0x48 != NULL) { + dComIfGd_set2DOpa(field_0x48); + } } -#pragma pop /* 8023C274-8023C300 236BB4 008C+00 1/0 7/0 0/0 .text draw__14dMsgScrnBase_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBase_c::draw() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/draw__14dMsgScrnBase_cFv.s" +void dMsgScrnBase_c::draw() { + J2DGrafContext* ctx = dComIfGp_getCurrentGrafPort(); + + ctx->setup2D(); + mpScreen->draw(0.0f, 0.0f, ctx); + drawSelf(); + ctx->setup2D(); } -#pragma pop /* 8023C300-8023C32C 236C40 002C+00 1/0 2/0 0/0 .text drawSelf__14dMsgScrnBase_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBase_c::drawSelf() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/drawSelf__14dMsgScrnBase_cFv.s" +void dMsgScrnBase_c::drawSelf() { + drawOutFont(0.0f, 0.0f, 1.0f); } -#pragma pop /* 8023C32C-8023C360 236C6C 0034+00 1/1 6/6 0/0 .text drawOutFont__14dMsgScrnBase_cFfff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBase_c::drawOutFont(f32 param_0, f32 param_1, f32 param_2) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/drawOutFont__14dMsgScrnBase_cFfff.s" +void dMsgScrnBase_c::drawOutFont(f32 param_0, f32 param_1, f32 param_2) { + mpOutFont->draw(NULL, param_0, param_1, param_2); } -#pragma pop /* 8023C360-8023C3EC 236CA0 008C+00 0/0 2/2 0/0 .text setString__14dMsgScrnBase_cFPcPc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBase_c::setString(char* param_0, char* param_1) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/setString__14dMsgScrnBase_cFPcPc.s" +void dMsgScrnBase_c::setString(char* str1, char* str2) { + for (int i = 0; i < 7; i++) { + if (mpTm_c[i] != NULL) { + if (i == 0) { + strcpy(((J2DTextBox*)mpTm_c[i]->getPanePtr())->getStringPtr(), str1); + } else { + strcpy(((J2DTextBox*)mpTm_c[i]->getPanePtr())->getStringPtr(), str2); + } + } + } } -#pragma pop /* 8023C3EC-8023C458 236D2C 006C+00 0/0 2/2 0/0 .text setRubyString__14dMsgScrnBase_cFPc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBase_c::setRubyString(char* param_0) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/setRubyString__14dMsgScrnBase_cFPc.s" +void dMsgScrnBase_c::setRubyString(char* str) { + for (int i = 0; i < 3; i++) { + if (mpTmr_c[i] != NULL) { + strcpy(((J2DTextBox*)mpTmr_c[i]->getPanePtr())->getStringPtr(), str); + } + } } -#pragma pop /* 8023C458-8023C480 236D98 0028+00 1/0 0/0 0/0 .text fukiScale__14dMsgScrnBase_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBase_c::fukiScale(f32 param_0) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/fukiScale__14dMsgScrnBase_cFf.s" +void dMsgScrnBase_c::fukiScale(f32 scale) { + mpPmp_c->paneScale(scale, scale); } -#pragma pop /* 8023C480-8023C4A4 236DC0 0024+00 1/0 0/0 0/0 .text fukiTrans__14dMsgScrnBase_cFff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBase_c::fukiTrans(f32 param_0, f32 param_1) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/fukiTrans__14dMsgScrnBase_cFff.s" +void dMsgScrnBase_c::fukiTrans(f32 posX, f32 posY) { + mpPmp_c->paneTrans(posX, posY); } -#pragma pop /* 8023C4A4-8023C4F4 236DE4 0050+00 1/0 0/0 0/0 .text fukiAlpha__14dMsgScrnBase_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBase_c::fukiAlpha(f32 param_0) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/fukiAlpha__14dMsgScrnBase_cFf.s" +void dMsgScrnBase_c::fukiAlpha(f32 alpha) { + fontAlpha(alpha); + mpPmp_c->setAlphaRate(alpha); } -#pragma pop /* 8023C4F4-8023C574 236E34 0080+00 1/0 5/0 0/0 .text fontAlpha__14dMsgScrnBase_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBase_c::fontAlpha(f32 param_0) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/fontAlpha__14dMsgScrnBase_cFf.s" +void dMsgScrnBase_c::fontAlpha(f32 alpha) { + for (int i = 0; i < 7; i++) { + if (mpTm_c[i] != NULL) { + mpTm_c[i]->setAlphaRate(alpha); + } + + if (mpTmr_c[i] != NULL) { + mpTmr_c[i]->setAlphaRate(alpha); + } + } } -#pragma pop /* 8023C574-8023C5C8 236EB4 0054+00 1/0 8/8 0/0 .text isTalkNow__14dMsgScrnBase_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBase_c::isTalkNow() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_base/isTalkNow__14dMsgScrnBase_cFv.s" +bool dMsgScrnBase_c::isTalkNow() { + switch (dMsgObject_c::getStatus()) { + case 5: + case 6: + case 7: + case 8: + case 9: + case 15: + case 16: + case 20: + case 24: + return true; + default: + return false; + } } -#pragma pop diff --git a/src/msg/scrn/d_msg_scrn_boss.cpp b/src/msg/scrn/d_msg_scrn_boss.cpp index e59ecf9cc2..88a1ac0556 100644 --- a/src/msg/scrn/d_msg_scrn_boss.cpp +++ b/src/msg/scrn/d_msg_scrn_boss.cpp @@ -4,246 +4,131 @@ // #include "msg/scrn/d_msg_scrn_boss.h" +#include "d/msg/d_msg_object.h" #include "dol2asm.h" #include "dolphin/types.h" // -// Types: -// - -struct dMsgScrnBoss_c { - /* 8023C5C8 */ dMsgScrnBoss_c(); - /* 8023C928 */ ~dMsgScrnBoss_c(); - /* 8023CA88 */ void exec(); - /* 8023CB98 */ void drawSelf(); - /* 8023CBF0 */ void fukiAlpha(f32); - /* 8023CC7C */ void fukiScale(f32); - /* 8023CC80 */ void fukiTrans(f32, f32); - /* 8023CC84 */ void fontAlpha(f32); -}; - -struct dMsgScrnBase_c { - /* 80238C40 */ void setSelectRubyString(char*, char*, char*); - /* 80238C44 */ void setSelectString(char*, char*, char*); - /* 80238C48 */ bool selectAnimeMove(u8, u8, bool); - /* 80238C50 */ void selectAnimeInit(u8, u8, f32, u8); - /* 80238C54 */ void arwAnimeMove(); - /* 80238C58 */ void arwAnimeInit(); - /* 80238C5C */ void fukiPosCalc(u8); - /* 80238C60 */ bool isSelect(); - /* 80238C68 */ bool selectAnimeEnd(); - /* 80238C70 */ void dotAnimeMove(); - /* 80238C74 */ void dotAnimeInit(); - /* 8023C0DC */ dMsgScrnBase_c(); - /* 8023C124 */ ~dMsgScrnBase_c(); - /* 8023C16C */ void init(); - /* 8023C234 */ void multiDraw(); - /* 8023C274 */ void draw(); - /* 8023C32C */ void drawOutFont(f32, f32, f32); - /* 8023C574 */ void isTalkNow(); -}; - -struct JKRExpHeap {}; - -struct JKRArchive {}; - -struct J2DTextBox { - /* 8030074C */ void setString(s16, char const*, ...); -}; - -struct J2DScreen { - /* 802F8498 */ J2DScreen(); - /* 802F8648 */ void setPriority(char const*, u32, JKRArchive*); -}; - -struct CPaneMgrAlpha { - /* 802557D0 */ void setAlphaRate(f32); -}; - -struct CPaneMgr { - /* 80253984 */ CPaneMgr(J2DScreen*, u64, u8, JKRExpHeap*); - /* 802542E8 */ void getGlobalPosX(); - /* 80254364 */ void getGlobalPosY(); - /* 802545B0 */ void paneTrans(f32, f32); -}; - -// -// Forward References: -// - -extern "C" void __ct__14dMsgScrnBoss_cFv(); -extern "C" void __dt__14dMsgScrnBoss_cFv(); -extern "C" void exec__14dMsgScrnBoss_cFv(); -extern "C" void drawSelf__14dMsgScrnBoss_cFv(); -extern "C" void fukiAlpha__14dMsgScrnBoss_cFf(); -extern "C" void fukiScale__14dMsgScrnBoss_cFf(); -extern "C" void fukiTrans__14dMsgScrnBoss_cFff(); -extern "C" void fontAlpha__14dMsgScrnBoss_cFf(); -extern "C" extern char const* const msg_scrn_d_msg_scrn_boss__stringBase0; - -// // External References: // -extern "C" void mDoExt_getRubyFont__Fv(); -extern "C" void setSelectRubyString__14dMsgScrnBase_cFPcPcPc(); -extern "C" void setSelectString__14dMsgScrnBase_cFPcPcPc(); -extern "C" bool selectAnimeMove__14dMsgScrnBase_cFUcUcb(); -extern "C" void selectAnimeInit__14dMsgScrnBase_cFUcUcfUc(); -extern "C" void arwAnimeMove__14dMsgScrnBase_cFv(); -extern "C" void arwAnimeInit__14dMsgScrnBase_cFv(); -extern "C" void fukiPosCalc__14dMsgScrnBase_cFUc(); -extern "C" bool isSelect__14dMsgScrnBase_cFv(); -extern "C" bool selectAnimeEnd__14dMsgScrnBase_cFv(); -extern "C" void dotAnimeMove__14dMsgScrnBase_cFv(); -extern "C" void dotAnimeInit__14dMsgScrnBase_cFv(); -extern "C" void __ct__14dMsgScrnBase_cFv(); -extern "C" void __dt__14dMsgScrnBase_cFv(); -extern "C" void init__14dMsgScrnBase_cFv(); -extern "C" void multiDraw__14dMsgScrnBase_cFv(); -extern "C" void draw__14dMsgScrnBase_cFv(); -extern "C" void drawOutFont__14dMsgScrnBase_cFfff(); -extern "C" void isTalkNow__14dMsgScrnBase_cFv(); -extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap(); -extern "C" void getGlobalPosX__8CPaneMgrFv(); -extern "C" void getGlobalPosY__8CPaneMgrFv(); -extern "C" void paneTrans__8CPaneMgrFff(); -extern "C" void dPaneClass_showNullPane__FP9J2DScreen(); -extern "C" void setAlphaRate__13CPaneMgrAlphaFf(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void __ct__9J2DScreenFv(); -extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive(); -extern "C" void setString__10J2DTextBoxFsPCce(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_29(); -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_MsgObject_HIO_c[1040]; +extern "C" extern dMsgObject_HIO_c g_MsgObject_HIO_c; // // Declarations: // -/* ############################################################################################## */ -/* 803998F8-803998F8 025F58 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_803998F8 = "zelda_boss_name.blo"; -SECTION_DEAD static char const* const stringBase_8039990C = ""; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_8039990D = "\0\0"; -#pragma pop - -/* 803C0DB0-803C0DE8 01DED0 0038+00 1/1 0/0 0/0 .data t_tag$3759 */ -SECTION_DATA static u8 t_tag[56] = { - 0x00, 0x73, 0x66, 0x6F, 0x6E, 0x74, 0x62, 0x30, 0x00, 0x73, 0x66, 0x6F, 0x6E, 0x74, - 0x62, 0x31, 0x00, 0x73, 0x66, 0x6F, 0x6E, 0x74, 0x62, 0x32, 0x00, 0x73, 0x66, 0x6F, - 0x6E, 0x74, 0x6C, 0x30, 0x00, 0x73, 0x66, 0x6F, 0x6E, 0x74, 0x6C, 0x31, 0x00, 0x73, - 0x66, 0x6F, 0x6E, 0x74, 0x6C, 0x32, 0x00, 0x73, 0x66, 0x6F, 0x6E, 0x74, 0x30, 0x30, -}; - -/* 803C0DE8-803C0E40 01DF08 0058+00 2/2 0/0 0/0 .data __vt__14dMsgScrnBoss_c */ -SECTION_DATA extern void* __vt__14dMsgScrnBoss_c[22] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)draw__14dMsgScrnBase_cFv, - (void*)__dt__14dMsgScrnBoss_cFv, - (void*)exec__14dMsgScrnBoss_cFv, - (void*)multiDraw__14dMsgScrnBase_cFv, - (void*)drawSelf__14dMsgScrnBoss_cFv, - (void*)setSelectString__14dMsgScrnBase_cFPcPcPc, - (void*)setSelectRubyString__14dMsgScrnBase_cFPcPcPc, - (void*)arwAnimeInit__14dMsgScrnBase_cFv, - (void*)arwAnimeMove__14dMsgScrnBase_cFv, - (void*)dotAnimeInit__14dMsgScrnBase_cFv, - (void*)dotAnimeMove__14dMsgScrnBase_cFv, - (void*)isSelect__14dMsgScrnBase_cFv, - (void*)selectAnimeInit__14dMsgScrnBase_cFUcUcfUc, - (void*)selectAnimeMove__14dMsgScrnBase_cFUcUcb, - (void*)selectAnimeEnd__14dMsgScrnBase_cFv, - (void*)fukiScale__14dMsgScrnBoss_cFf, - (void*)fukiTrans__14dMsgScrnBoss_cFff, - (void*)fukiAlpha__14dMsgScrnBoss_cFf, - (void*)fontAlpha__14dMsgScrnBoss_cFf, - (void*)fukiPosCalc__14dMsgScrnBase_cFUc, -}; - -/* 80454BB0-80454BB4 0031B0 0004+00 3/3 0/0 0/0 .sdata2 @3854 */ -SECTION_SDATA2 static f32 lit_3854 = 1.0f; - /* 8023C5C8-8023C928 236F08 0360+00 0/0 1/1 0/0 .text __ct__14dMsgScrnBoss_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgScrnBoss_c::dMsgScrnBoss_c() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_boss/__ct__14dMsgScrnBoss_cFv.s" +dMsgScrnBoss_c::dMsgScrnBoss_c() { + static u64 t_tag[7] = { + 'sfontb0', 'sfontb1', 'sfontb2', 'sfontl0', + 'sfontl1', 'sfontl2', 'sfont00', + }; + + init(); + + mpScreen = new J2DScreen(); + mpScreen->setPriority("zelda_boss_name.blo", 0x20000, dComIfGp_getMsgArchive(4)); + dPaneClass_showNullPane(mpScreen); + + mpPmp_c = new CPaneMgr(mpScreen, 'n_all', 2, NULL); + mpPmp_c->scale(g_MsgObject_HIO_c.mBossNameScaleX, g_MsgObject_HIO_c.mBossNameScaleY); + + mpFontParent = new CPaneMgr(mpScreen, 's_font_n', 0, NULL); + mpFontParent->scale(g_MsgObject_HIO_c.mBossNameCharSizeX, g_MsgObject_HIO_c.mBossNameCharSizeY); + mpFontParent->paneTrans(g_MsgObject_HIO_c.mBossNameCharPosX, g_MsgObject_HIO_c.mBossNameCharPosY); + + mpBaseParent = new CPaneMgr(mpScreen, 'base_n', 2, NULL); + mpBaseParent->scale(g_MsgObject_HIO_c.mBossNameBaseSizeX, g_MsgObject_HIO_c.mBossNameBaseSizeY); + mpBaseParent->paneTrans(g_MsgObject_HIO_c.mBossNameBasePosX, g_MsgObject_HIO_c.mBossNameBasePosY); + + for (int i = 0; i < 7; i++) { + mpTm_c[i] = new CPaneMgr(mpScreen, t_tag[i], 0, NULL); + ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setFont(mDoExt_getRubyFont()); + ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setCharSpace(1.0f); + ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setString(0x100, ""); + } + + ((J2DTextBox*)mpTm_c[0]->getPanePtr())->getFontSize(mFontSize); + mTBoxWidth = mpTm_c[0]->getSizeX(); + mTBoxHeight = mpTm_c[0]->getSizeY(); + mLineSpace = ((J2DTextBox*)mpTm_c[0]->getPanePtr())->getLineSpace(); + mCharSpace = ((J2DTextBox*)mpTm_c[0]->getPanePtr())->getCharSpace(); + + for (int i = 0; i < 7; i++) { + ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setLineSpace(mLineSpace); + } + + mTextBoxPosX = mpTm_c[0]->getGlobalPosX(); + mTextBoxPosY = mpTm_c[0]->getGlobalPosY(); } -#pragma pop /* 8023C928-8023CA88 237268 0160+00 1/0 0/0 0/0 .text __dt__14dMsgScrnBoss_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgScrnBoss_c::~dMsgScrnBoss_c() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_boss/__dt__14dMsgScrnBoss_cFv.s" +dMsgScrnBoss_c::~dMsgScrnBoss_c() { + delete mpScreen; + mpScreen = NULL; + + delete mpPmp_c; + mpPmp_c = NULL; + + delete mpFontParent; + mpFontParent = NULL; + + delete mpBaseParent; + mpBaseParent = NULL; + + for (int i = 0; i < 7; i++) { + delete mpTm_c[i]; + mpTm_c[i] = NULL; + } + + dComIfGp_getMsgArchive(4)->removeResourceAll(); } -#pragma pop /* 8023CA88-8023CB98 2373C8 0110+00 1/0 0/0 0/0 .text exec__14dMsgScrnBoss_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBoss_c::exec() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_boss/exec__14dMsgScrnBoss_cFv.s" -} -#pragma pop +void dMsgScrnBoss_c::exec() { + mpPmp_c->scale(g_MsgObject_HIO_c.mBossNameScaleX, g_MsgObject_HIO_c.mBossNameScaleY); + + mpFontParent->scale(g_MsgObject_HIO_c.mBossNameCharSizeX, g_MsgObject_HIO_c.mBossNameCharSizeY); + mpFontParent->paneTrans(g_MsgObject_HIO_c.mBossNameCharPosX, g_MsgObject_HIO_c.mBossNameCharPosY); -/* ############################################################################################## */ -/* 80454BB4-80454BB8 0031B4 0004+00 1/1 0/0 0/0 .sdata2 @3916 */ -SECTION_SDATA2 static u8 lit_3916[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; + mpBaseParent->scale(g_MsgObject_HIO_c.mBossNameBaseSizeX, g_MsgObject_HIO_c.mBossNameBaseSizeY); + mpBaseParent->paneTrans(g_MsgObject_HIO_c.mBossNameBasePosX, g_MsgObject_HIO_c.mBossNameBasePosY); + + if (isTalkNow()) { + fukiAlpha(1.0f); + } +} /* 8023CB98-8023CBF0 2374D8 0058+00 1/0 0/0 0/0 .text drawSelf__14dMsgScrnBoss_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBoss_c::drawSelf() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_boss/drawSelf__14dMsgScrnBoss_cFv.s" +void dMsgScrnBoss_c::drawSelf() { + J2DGrafContext* ctx = dComIfGp_getCurrentGrafPort(); + ctx->setup2D(); + drawOutFont(0.0f, 0.0f, 1.0f); } -#pragma pop /* 8023CBF0-8023CC7C 237530 008C+00 1/0 0/0 0/0 .text fukiAlpha__14dMsgScrnBoss_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnBoss_c::fukiAlpha(f32 param_0) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_boss/fukiAlpha__14dMsgScrnBoss_cFf.s" +void dMsgScrnBoss_c::fukiAlpha(f32 alpha) { + mpPmp_c->setAlphaRate(alpha); + mpBaseParent->setAlphaRate(alpha * g_MsgObject_HIO_c.mBossNameBaseAlpha); + + for (int i = 0; i < 7; i++) { + mpTm_c[i]->setAlphaRate(alpha); + } } -#pragma pop /* 8023CC7C-8023CC80 2375BC 0004+00 1/0 0/0 0/0 .text fukiScale__14dMsgScrnBoss_cFf */ -void dMsgScrnBoss_c::fukiScale(f32 param_0) { +void dMsgScrnBoss_c::fukiScale(f32) { /* empty function */ } /* 8023CC80-8023CC84 2375C0 0004+00 1/0 0/0 0/0 .text fukiTrans__14dMsgScrnBoss_cFff */ -void dMsgScrnBoss_c::fukiTrans(f32 param_0, f32 param_1) { +void dMsgScrnBoss_c::fukiTrans(f32, f32) { /* empty function */ } /* 8023CC84-8023CC88 2375C4 0004+00 1/0 0/0 0/0 .text fontAlpha__14dMsgScrnBoss_cFf */ -void dMsgScrnBoss_c::fontAlpha(f32 param_0) { +void dMsgScrnBoss_c::fontAlpha(f32) { /* empty function */ } diff --git a/src/msg/scrn/d_msg_scrn_explain.cpp b/src/msg/scrn/d_msg_scrn_explain.cpp index 38d8f659c8..baad240efb 100644 --- a/src/msg/scrn/d_msg_scrn_explain.cpp +++ b/src/msg/scrn/d_msg_scrn_explain.cpp @@ -11,46 +11,11 @@ // Types: // -struct mDoCPd_c { - static u8 m_cpadInfo[256]; -}; - struct dMsgString_c { /* 80249C20 */ dMsgString_c(); /* 80249D28 */ ~dMsgString_c(); }; -struct STControl { - /* 8003219C */ void checkTrigger(); - /* 80032524 */ void checkUpTrigger(); - /* 800325A0 */ void checkDownTrigger(); -}; - -struct J2DOrthoGraph {}; - -struct dMsgScrnExplain_c { - /* 8023CC88 */ dMsgScrnExplain_c(STControl*, u8, bool, u8); - /* 8023D538 */ ~dMsgScrnExplain_c(); - /* 8023D7D8 */ void move(); - /* 8023D918 */ void draw(J2DOrthoGraph*); - /* 8023DAD0 */ void wait_init(); - /* 8023DAD4 */ void wait_proc(); - /* 8023DAD8 */ void open_request_init(); - /* 8023DADC */ void open_request_proc(); - /* 8023DBE4 */ void open_init(); - /* 8023DC7C */ void open_proc(); - /* 8023DD90 */ void move_init(); - /* 8023DDB4 */ void move_proc(); - /* 8023DE8C */ void move_select_init(); - /* 8023E0F4 */ void move_select_proc(); - /* 8023E43C */ void close_init(); - /* 8023E448 */ void close_proc(); - /* 8023E558 */ void openExplain(u32, u8, u8, u8, bool); - /* 8023E5CC */ void getAlphaRatio(); - /* 8023E640 */ void checkTriggerA(); - /* 8023E654 */ void checkTriggerB(); -}; - struct dMsgScrnArrow_c { /* 8023B9B4 */ dMsgScrnArrow_c(); /* 8023BDC0 */ void draw(); @@ -73,77 +38,11 @@ struct dMsgScrn3Select_c { /* 8023A97C */ void getCharSpace(); }; -struct J2DTextBox { - /* 80300658 */ void getStringPtr() const; - /* 8030074C */ void setString(s16, char const*, ...); -}; - -struct JUTFont {}; - -struct COutFont_c { - /* 80225C94 */ COutFont_c(u8); -}; - struct dMsgObject_c { /* 802380F4 */ void getString(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, char*, char*, char*, s16*); }; -struct JMSMesgEntry_c {}; - -struct dMeter2Info_c { - /* 8021C250 */ void getString(u32, char*, JMSMesgEntry_c*); - /* 8021C7FC */ void getStringLength(JUTFont*, f32, f32, char*); -}; - -struct Z2SpeechMgr2 { - /* 802CBF60 */ void setTextCount(s16); -}; - -struct JAISoundID {}; - -struct Vec {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -struct ResTIMG {}; - -struct JKRExpHeap {}; - -struct JKRArchive {}; - -struct J2DGrafContext {}; - -struct J2DScreen { - /* 802F8498 */ J2DScreen(); - /* 802F8648 */ void setPriority(char const*, u32, JKRArchive*); - /* 802F8ED4 */ void draw(f32, f32, J2DGrafContext const*); -}; - -struct J2DPicture { - /* 802FC708 */ J2DPicture(ResTIMG const*); -}; - -struct J2DPane { - /* 802F7100 */ void getBounds(); -}; - -struct CPaneMgrAlpha { - /* 802557D0 */ void setAlphaRate(f32); -}; - -struct CPaneMgr { - /* 80253984 */ CPaneMgr(J2DScreen*, u64, u8, JKRExpHeap*); - /* 802545B0 */ void paneTrans(f32, f32); - /* 80254EBC */ void getGlobalVtxCenter(J2DPane*, bool, s16); -}; - // // Forward References: // @@ -228,12 +127,7 @@ extern "C" void _restgpr_24(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void snprintf(); -extern "C" void strcat(); -extern "C" void strcpy(); extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_meter2_info[248]; extern "C" extern u8 g_MsgObject_HIO_c[1040]; extern "C" extern u8 data_80450B70[4]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; @@ -436,7 +330,8 @@ asm dMsgScrnExplain_c::dMsgScrnExplain_c(STControl* param_0, u8 param_1, bool pa #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dMsgScrnExplain_c::~dMsgScrnExplain_c() { +// asm dMsgScrnExplain_c::~dMsgScrnExplain_c() { +extern "C" asm void __dt__17dMsgScrnExplain_cFv() { nofralloc #include "asm/msg/scrn/d_msg_scrn_explain/__dt__17dMsgScrnExplain_cFv.s" } @@ -617,7 +512,7 @@ asm void dMsgScrnExplain_c::close_proc() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMsgScrnExplain_c::openExplain(u32 param_0, u8 param_1, u8 param_2, u8 param_3, +asm bool dMsgScrnExplain_c::openExplain(u32 param_0, u8 param_1, u8 param_2, u8 param_3, bool param_4) { nofralloc #include "asm/msg/scrn/d_msg_scrn_explain/openExplain__17dMsgScrnExplain_cFUlUcUcUcb.s" |
