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
This commit is contained in:
TakaRikka
2022-06-29 13:19:09 -07:00
committed by GitHub
parent cd5b02450c
commit 046d178003
412 changed files with 12030 additions and 16833 deletions
+108 -279
View File
@@ -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
+89 -204
View File
@@ -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);
/* ############################################################################################## */
/* 80454BB4-80454BB8 0031B4 0004+00 1/1 0/0 0/0 .sdata2 @3916 */
SECTION_SDATA2 static u8 lit_3916[4] = {
0x00,
0x00,
0x00,
0x00,
};
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->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 */
}
+3 -108
View File
@@ -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"