summaryrefslogtreecommitdiff
path: root/src/msg
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2022-06-29 13:19:09 -0700
committerGitHub <noreply@github.com>2022-06-29 22:19:09 +0200
commit046d178003035ea87d3042a61917c2d482c68c74 (patch)
tree4240e760d8d40201ca4ec96634da8abff211f6bb /src/msg
parentcd5b02450cf278cbeb2c8bb90be1ad22518938c7 (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.cpp387
-rw-r--r--src/msg/scrn/d_msg_scrn_boss.cpp293
-rw-r--r--src/msg/scrn/d_msg_scrn_explain.cpp111
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"