Work on d_msg_scrn_talk (#2192)

* Work on d_msg_scrn_talk

* Generate d_pane_class_ex virtual inlines
This commit is contained in:
hatal175
2024-08-14 23:50:36 +03:00
committed by GitHub
parent 8316d7e952
commit 7d8dc7eb17
27 changed files with 505 additions and 722 deletions
+8 -8
View File
@@ -59,14 +59,14 @@ dMsgScrnJimaku_c::dMsgScrnJimaku_c(u8 param_0, JKRExpHeap* i_heap) {
for (int i = 0; i < 2; i++) {
((J2DTextBox*)mpTm_c[i]->getPanePtr())->setFont(mDoExt_getMesgFont());
((J2DTextBox*)mpTm_c[i]->getPanePtr())->setString(0x200, "");
mpTm_c[i]->setBlackWhite(g_MsgObject_HIO_c.mBoxStartBlack[4 + (i * 10)],
g_MsgObject_HIO_c.mBoxStartWhite[4 + (i * 10)]);
mpTm_c[i]->setBlackWhite(g_MsgObject_HIO_c.mBoxStartBlack[i][4],
g_MsgObject_HIO_c.mBoxStartWhite[i][4]);
if (mpTmr_c[i] != NULL) {
((J2DTextBox*)mpTmr_c[i]->getPanePtr())->setFont(mDoExt_getMesgFont());
((J2DTextBox*)mpTmr_c[i]->getPanePtr())->setString(0x200, "");
mpTmr_c[i]->setBlackWhite(g_MsgObject_HIO_c.mBoxStartBlack[4 + (i * 10)],
g_MsgObject_HIO_c.mBoxStartWhite[4 + (i * 10)]);
mpTmr_c[i]->setBlackWhite(g_MsgObject_HIO_c.mBoxStartBlack[i][4],
g_MsgObject_HIO_c.mBoxStartWhite[i][4]);
}
}
@@ -140,12 +140,12 @@ void dMsgScrnJimaku_c::exec() {
mpPmP_c->scale(g_MsgObject_HIO_c.mSubtitleScaleX, g_MsgObject_HIO_c.mSubtitleScaleY);
for (int i = 0; i < 2; i++) {
mpTm_c[i]->setBlackWhite(g_MsgObject_HIO_c.mBoxStartBlack[4 + (i * 10)],
g_MsgObject_HIO_c.mBoxStartWhite[4 + (i * 10)]);
mpTm_c[i]->setBlackWhite(g_MsgObject_HIO_c.mBoxStartBlack[i][4],
g_MsgObject_HIO_c.mBoxStartWhite[i][4]);
if (mpTmr_c[i] != NULL) {
mpTmr_c[i]->setBlackWhite(g_MsgObject_HIO_c.mBoxStartBlack[4 + (i * 10)],
g_MsgObject_HIO_c.mBoxStartWhite[4 + (i * 10)]);
mpTmr_c[i]->setBlackWhite(g_MsgObject_HIO_c.mBoxStartBlack[i][4],
g_MsgObject_HIO_c.mBoxStartWhite[i][4]);
}
}
}
+449 -162
View File
@@ -4,81 +4,21 @@
//
#include "d/msg/d_msg_scrn_talk.h"
#include "d/msg/d_msg_scrn_light.h"
#include "d/msg/d_msg_scrn_arrow.h"
#include "d/msg/d_msg_scrn_3select.h"
#include "d/msg/d_msg_object.h"
#include "d/msg/d_msg_class.h"
#include "d/meter/d_meter2.h"
#include "d/meter/d_meter2_draw.h"
#include "d/meter/d_meter2_info.h"
#include "d/pane/d_pane_class.h"
#include "m_Do/m_Do_lib.h"
#include "JSystem/JKernel/JKRExpHeap.h"
#include "JSystem/J2DGraph/J2DGrafContext.h"
#include "JSystem/J2DGraph/J2DScreen.h"
#include "dol2asm.h"
//
// Types:
//
struct JKRExpHeap {};
struct dMsgScrnLight_c {
/* 80245934 */ dMsgScrnLight_c(u8, u8);
/* 80245C04 */ void draw(f32*, f32, f32, f32, f32, f32, u8);
};
struct dMsgScrnArrow_c {
/* 8023B9B4 */ dMsgScrnArrow_c();
/* 8023BDC0 */ void draw();
/* 8023BDF8 */ void setPos(f32, f32);
/* 8023BE34 */ void arwAnimeInit();
/* 8023BE90 */ void arwAnimeMove();
/* 8023BFC4 */ void dotAnimeInit();
/* 8023C010 */ void dotAnimeMove();
};
struct dMsgScrn3Select_c {
/* 802390B4 */ dMsgScrn3Select_c();
/* 80239C64 */ void isSelect();
/* 80239C78 */ void setString(char*, char*, char*);
/* 80239D08 */ void setRubyString(char*, char*, char*);
/* 80239D98 */ void translate(f32, f32);
/* 80239DD4 */ void draw(f32, f32);
/* 8023A094 */ void selAnimeInit(u8, u8, u8, f32, u8);
/* 8023A398 */ void selAnimeMove(u8, u8, bool);
/* 8023A680 */ void selAnimeEnd();
/* 8023A934 */ void getTextBoxWidth();
/* 8023A94C */ void getFontSize();
/* 8023A95C */ void getRubyFontSize();
/* 8023A97C */ void getCharSpace();
/* 8023A98C */ void getRubyCharSpace();
/* 8023A9AC */ void getTextBoxGlobalPosX(int);
/* 8023A9D8 */ void getTextBoxGlobalPosY(int);
};
struct dMsgObject_c {
/* 8023819C */ void getActor();
};
struct dMeter2Draw_c {
/* 802140DC */ void drawPikari(f32, f32, f32*, f32, JUtility::TColor, JUtility::TColor,
JUtility::TColor, JUtility::TColor, f32, u8);
};
struct JKRArchive {};
struct J2DGrafContext {};
struct J2DScreen {
/* 802F8498 */ J2DScreen();
/* 802F8648 */ void setPriority(char const*, u32, JKRArchive*);
/* 802F8ED4 */ void draw(f32, f32, J2DGrafContext const*);
};
struct CPaneMgrAlpha {
/* 802557D0 */ void setAlphaRate(f32);
/* 80255828 */ void getAlphaRate();
};
struct CPaneMgr {
/* 80253984 */ CPaneMgr(J2DScreen*, u64, u8, JKRExpHeap*);
/* 80253B2C */ void reinit();
/* 802542E8 */ void getGlobalPosX();
/* 80254364 */ void getGlobalPosY();
/* 80254458 */ void setBlackWhite(JUtility::TColor, JUtility::TColor);
/* 80254EBC */ void getGlobalVtxCenter(J2DPane*, bool, s16);
};
//
// Forward References:
//
@@ -175,9 +115,6 @@ extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
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];
//
// Declarations:
@@ -239,6 +176,175 @@ SECTION_SDATA2 static f32 lit_4088 = -10.0f;
SECTION_SDATA2 static f32 lit_4089 = 6.0f / 5.0f;
/* 80246FF0-80247A90 241930 0AA0+00 0/0 1/1 0/0 .text __ct__14dMsgScrnTalk_cFUcUcP10JKRExpHeap */
// Matches with literals
#ifdef NONMATCHING
dMsgScrnTalk_c::dMsgScrnTalk_c(u8 param_1, u8 param_2, JKRExpHeap* param_3) {
if (param_3 != NULL) {
field_0xe4 = param_3;
} else {
field_0xe4 = dComIfGp_getSubHeap2D(7);
}
init();
mpScreen = new J2DScreen();
JUT_ASSERT(70, mpScreen != 0);
bool fg = mpScreen->setPriority("zelda_message_window_new.blo", 0x20000,
dComIfGp_getMsgArchive(1));
JUT_ASSERT(77, fg != false);
dPaneClass_showNullPane(mpScreen);
mpTxScreen = new J2DScreen();
JUT_ASSERT(81, mpTxScreen != 0);
if (dMsgObject_getMsgObjectClass()->getFukiKind() == 8) {
fg = mpTxScreen->setPriority("zelda_message_window_text_seirei.blo", 0x20000,
dComIfGp_getMsgCommonArchive());
} else {
fg = mpTxScreen->setPriority("zelda_message_window_text.blo", 0x20000,
dComIfGp_getMsgCommonArchive());
}
JUT_ASSERT(90, fg != false);
dPaneClass_showNullPane(mpTxScreen);
mpArrow_c = new dMsgScrnArrow_c();
JUT_ASSERT(95, mpArrow_c != 0);
if (dComIfGp_isHeapLockFlag() != 3) {
mpSelect_c = new dMsgScrn3Select_c();
JUT_ASSERT(100, mpSelect_c != 0);
} else {
mpSelect_c = NULL;
}
u8 uVar22;
switch(dMsgObject_getMsgObjectClass()->getFukiKind()) {
case 8:
uVar22 = 2;
break;
case 13:
uVar22 = 1;
break;
case 14:
uVar22 = 4;
break;
default:
uVar22 = 0;
break;
}
mpLight_c = new dMsgScrnLight_c(uVar22, param_2);
JUT_ASSERT(123, mpLight_c != 0);
void* mpBuf = field_0xe4->alloc(0x106a, 0x20);
JUT_ASSERT(126, mpBuf != 0);
memset(mpBuf, 0, 0x106a);
mCharInfoPtr = (CharInfo_c*)mpBuf;
for (int i = 0; i < 150; i++) {
field_0xf8[i] = 18.0f - g_MsgObject_HIO_c.mPikariScale;
field_0x35c[i] = g_MsgObject_HIO_c.mPikariHaloDelay_spirit;
}
field_0xe8 = mpScreen->search('n_all')->getBounds().i.x;
field_0xec = mpScreen->search('n_all')->getBounds().i.y;
field_0xf0 = 0.0f;
for (int i = 0; i < 3; i++) {
field_0x350[i] = g_MsgObject_HIO_c.mBoxPos[i][0];
}
mpScreen->search('mg_null')->move(
mpScreen->search('mg_null')->getBounds().i.x + g_MsgObject_HIO_c.mTextPosX,
mpScreen->search('mg_null')->getBounds().i.y + g_MsgObject_HIO_c.mTextPosY);
mpArw_c = new CPaneMgr(mpScreen, 'set_ya_n', 0, NULL);
JUT_ASSERT(147, mpArw_c != 0);
mpMg_c[0] = new CPaneMgr(mpScreen, 'mg_null', 0, NULL);
JUT_ASSERT(150, mpMg_c[0] != 0);
mpMg_c[1] = new CPaneMgr(mpTxScreen, 'mg_null', 0, NULL);
JUT_ASSERT(153, mpMg_c[1] != 0);
OSInitFastCast();
field_0xf4 = -10.0f;
fukiPosCalc(param_1);
mpPmP_c = new CPaneMgr(mpScreen, 'n_all', 3, NULL);
JUT_ASSERT(176, mpPmP_c != 0);
mpPmP_c->scale(g_MsgObject_HIO_c.mBoxTalkScaleX, g_MsgObject_HIO_c.mBoxTalkScaleY);
mpTm_c[0] = new CPaneMgr(mpTxScreen, 'mg_e4lin', 0, NULL);
JUT_ASSERT(182, mpTm_c[0] != 0);
mpTm_c[1] = new CPaneMgr(mpTxScreen, 't4_s', 0, NULL);
JUT_ASSERT(185, mpTm_c[1] != 0);
if (dMsgObject_getMsgObjectClass()->getFukiKind() == 8) {
mpTm_c[2] = new CPaneMgr(mpTxScreen, 't4_s1', 0, NULL);
JUT_ASSERT(189, mpTm_c[2] != 0);
mpTm_c[3] = new CPaneMgr(mpTxScreen, 't4_s2', 0, NULL);
JUT_ASSERT(191, mpTm_c[3] != 0);
mpTm_c[4] = new CPaneMgr(mpTxScreen, 't4_s3', 0, NULL);
JUT_ASSERT(193, mpTm_c[4] != 0);
mpTm_c[5] = new CPaneMgr(mpTxScreen, 't4_s4', 0, NULL);
JUT_ASSERT(193, mpTm_c[5] != 0);
}
mpTxScreen->search('n_3line')->hide();
mpTxScreen->search('n_3fline')->hide();
mpTxScreen->search('n_e4line')->show();
for (int i = 0; i < 6; i++) {
if (mpTm_c[i] != NULL) {
((J2DTextBox*)mpTm_c[i]->getPanePtr())->setFont(mDoExt_getMesgFont());
((J2DTextBox*)mpTm_c[i]->getPanePtr())->setString(0x200, "");
}
if (mpTmr_c[i] != NULL) {
((J2DTextBox*)mpTmr_c[i]->getPanePtr())->setFont(mDoExt_getMesgFont());
((J2DTextBox*)mpTmr_c[i]->getPanePtr())->setString(0x200, "");
}
}
if (dMsgObject_getMsgObjectClass()->getFukiKind() != 8) {
for (int i = 0; i < 2; i++) {
if (mpTm_c[i] != NULL) {
mpTm_c[i]->setBlackWhite(g_MsgObject_HIO_c.mBoxStartBlack[i][0],
g_MsgObject_HIO_c.mBoxStartWhite[i][0]);
}
if (mpTmr_c[i] != 0) {
mpTmr_c[i]->setBlackWhite(g_MsgObject_HIO_c.mBoxStartBlack[i][0],
g_MsgObject_HIO_c.mBoxStartWhite[i][0]);
}
}
}
((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 < 6; i++) {
if (mpTm_c[i] != NULL) {
((J2DTextBox*)mpTm_c[i]->getPanePtr())->setLineSpace(mLineSpace);
mpTm_c[i]->resize(1.2f * mpTm_c[i]->getSizeX(), mpTm_c[i]->getSizeY());
}
}
mTextBoxPosX = mpTm_c[0]->getGlobalPosX();
mTextBoxPosY = mpTm_c[0]->getGlobalPosY();
for (int i = 0; i < 6; i++) {
if (mpTmr_c[i] != NULL) {
((J2DTextBox*)mpTmr_c[i]->getPanePtr())->setLineSpace(mLineSpace);
if (i == 0) {
J2DTextBox::TFontSize fontSize;
((J2DTextBox*)mpTmr_c[0]->getPanePtr())->getFontSize(fontSize);
mRubySize = fontSize.mSizeX;
mRubyCharSpace = ((J2DTextBox*)mpTmr_c[0]->getPanePtr())->getCharSpace();
}
mpTmr_c[i]->resize(1.2f * mpTmr_c[i]->getSizeX(), mpTmr_c[i]->getSizeY());
}
}
if (mpSelect_c != NULL) {
mSelTBoxWidth = mpSelect_c->getTextBoxWidth();
mSelFontSize = mpSelect_c->getFontSize();
mSelRubySize = mpSelect_c->getRubyFontSize();
mSelCharSpace = mpSelect_c->getCharSpace();
mSelRubyCharSpace = mpSelect_c->getRubyCharSpace();
for (int i = 0; i < 3; i++) {
mSelTextBoxPosX[i] = mpSelect_c->getTextBoxGlobalPosX(i);
mSelTextBoxPosY[i] = mpSelect_c->getTextBoxGlobalPosY(i);
}
} else {
mSelTBoxWidth = 0.0f;
mSelFontSize = 0.0f;
mSelRubySize = 0.0f;
mSelCharSpace = 0.0f;
mSelRubyCharSpace = 0.0f;
for (int i = 0; i < 3; i++) {
mSelTextBoxPosX[i] = 0.0f;
mSelTextBoxPosY[i] = 0.0f;
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -247,22 +353,74 @@ asm dMsgScrnTalk_c::dMsgScrnTalk_c(u8 param_0, u8 param_1, JKRExpHeap* param_2)
#include "asm/msg/scrn/d_msg_scrn_talk/__ct__14dMsgScrnTalk_cFUcUcP10JKRExpHeap.s"
}
#pragma pop
#endif
/* 80247A90-80247D34 2423D0 02A4+00 1/0 0/0 0/0 .text __dt__14dMsgScrnTalk_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dMsgScrnTalk_c::~dMsgScrnTalk_c() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_talk/__dt__14dMsgScrnTalk_cFv.s"
dMsgScrnTalk_c::~dMsgScrnTalk_c() {
delete mpScreen;
mpScreen = NULL;
delete mpTxScreen;
mpTxScreen = NULL;
delete mpArrow_c;
mpArrow_c = NULL;
if (mpSelect_c != NULL) {
delete mpSelect_c;
mpSelect_c = NULL;
}
delete mpLight_c;
mpLight_c = NULL;
if (mCharInfoPtr != NULL) {
field_0xe4->free(mCharInfoPtr);
mCharInfoPtr = NULL;
}
delete mpArw_c;
mpArw_c = NULL;
for (int i = 0; i < 2; i++) {
delete mpMg_c[i];
mpMg_c[i] = NULL;
}
delete mpPmP_c;
mpPmP_c = NULL;
for (int i = 0; i < 6; i++) {
if (mpTm_c[i] != NULL) {
delete mpTm_c[i];
mpTm_c[i] = NULL;
}
if (mpTmr_c[i] != NULL) {
delete mpTmr_c[i];
mpTmr_c[i] = NULL;
}
}
dComIfGp_getMsgArchive(0)->removeResourceAll();
dComIfGp_getMsgArchive(1)->removeResourceAll();
dComIfGp_getMsgCommonArchive()->removeResourceAll();
}
#pragma pop
/* ############################################################################################## */
/* 80454D10-80454D14 003310 0004+00 2/2 0/0 0/0 .sdata2 @4197 */
SECTION_SDATA2 static f32 lit_4197 = 1.0f;
/* 80247D34-80247E4C 242674 0118+00 1/0 0/0 0/0 .text exec__14dMsgScrnTalk_cFv */
// Matches with literals
#ifdef NONMATCHING
void dMsgScrnTalk_c::exec() {
if (isTalkNow()) {
fukiAlpha(1.0f);
}
mpPmP_c->scale(g_MsgObject_HIO_c.mBoxTalkScaleX, g_MsgObject_HIO_c.mBoxTalkScaleY);
for (int i = 0; i < 2; i++) {
if (mpTm_c[i] != NULL) {
mpTm_c[i]->setBlackWhite(g_MsgObject_HIO_c.mBoxStartBlack[i][0],
g_MsgObject_HIO_c.mBoxStartWhite[i][0]);
}
if (mpTmr_c[i] != 0) {
mpTmr_c[i]->setBlackWhite(g_MsgObject_HIO_c.mBoxStartBlack[i][0],
g_MsgObject_HIO_c.mBoxStartWhite[i][0]);
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -271,6 +429,7 @@ asm void dMsgScrnTalk_c::exec() {
#include "asm/msg/scrn/d_msg_scrn_talk/exec__14dMsgScrnTalk_cFv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80454D14-80454D18 003314 0004+00 1/1 0/0 0/0 .sdata2 @4278 */
@@ -280,6 +439,64 @@ SECTION_SDATA2 static f32 lit_4278 = 4.0f / 5.0f;
SECTION_SDATA2 static f32 lit_4279 = -1.0f;
/* 80247E4C-802480F0 24278C 02A4+00 1/0 0/0 0/0 .text drawSelf__14dMsgScrnTalk_cFv */
// regalloc
#ifdef NONMATCHING
void dMsgScrnTalk_c::drawSelf() {
CharInfo_c* pCharInfo;
J2DGrafContext* grafContext = dComIfGp_getCurrentGrafPort();
grafContext->setup2D();
pCharInfo = mCharInfoPtr;
if (*(s16*)(pCharInfo + 150) > 0) {
f32 dVar10 = mpTm_c[0]->getAlphaRate();
for (int i = 0; i < *(s16*)(pCharInfo + 150); i++) {
if (dMsgObject_getMsgObjectClass()->getFukiKind() == 8) {
if (field_0xf8[i] >= 0.0f) {
f32 fVar1;
if (mCharInfoPtr[i].field_0x19 == 0) {
fVar1 = 0.8f;
} else {
fVar1 = g_MsgObject_HIO_c.mPikariScale;
}
dMeter2Info_getMeterClass()->getMeterDrawPtr()->drawPikari(
mCharInfoPtr[i].field_0x00, mCharInfoPtr[i].field_0x04, &field_0xf8[i], fVar1,
g_MsgObject_HIO_c.mPikariMoyaR1, g_MsgObject_HIO_c.mPikariMoyaR0,
g_MsgObject_HIO_c.mPikariMoyabsR1, g_MsgObject_HIO_c.mPikariMoyabsR0,
g_MsgObject_HIO_c.mPikariAnmSpeed, 4);
if (field_0xf8[i] == 0.0f) {
field_0xf8[i] = -1.0f;
}
}
if (field_0x35c[i] > 0) {
field_0x35c[i]--;
} else {
mpLight_c->draw(
&mCharInfoPtr[i].field_0x14, mCharInfoPtr[i].field_0x00, mCharInfoPtr[i].field_0x04,
mCharInfoPtr[i].field_0x08, mCharInfoPtr[i].field_0x0c,
dVar10 * g_MsgObject_HIO_c.mBoxTalkHaloAlpha, mCharInfoPtr[i].mColorNo);
}
} else {
mpLight_c->draw(
&mCharInfoPtr[i].field_0x14, mCharInfoPtr[i].field_0x00, mCharInfoPtr[i].field_0x04,
mCharInfoPtr[i].field_0x08, mCharInfoPtr[i].field_0x0c,
dVar10 * g_MsgObject_HIO_c.mBoxTalkHaloAlpha, mCharInfoPtr[i].mColorNo);
}
}
} else {
if (dMsgObject_getMsgObjectClass()->getFukiKind() == 8) {
for (int i = 0; i < 150; i++) {
field_0xf8[i] = 18.0f - g_MsgObject_HIO_c.mPikariScale;
field_0x35c[i] = g_MsgObject_HIO_c.mPikariHaloDelay_spirit;
}
}
}
drawOutFont(0.0f, 0.0f, 1.0f);
mpTxScreen->draw(0.0f, 0.0f, grafContext);
if (mpSelect_c != NULL) {
mpSelect_c->draw(0.0f, 0.0f);
}
mpArrow_c->draw();
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -288,128 +505,95 @@ asm void dMsgScrnTalk_c::drawSelf() {
#include "asm/msg/scrn/d_msg_scrn_talk/drawSelf__14dMsgScrnTalk_cFv.s"
}
#pragma pop
#endif
/* 802480F0-80248114 242A30 0024+00 1/0 0/0 0/0 .text arwAnimeInit__14dMsgScrnTalk_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnTalk_c::arwAnimeInit() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_talk/arwAnimeInit__14dMsgScrnTalk_cFv.s"
void dMsgScrnTalk_c::arwAnimeInit() {
mpArrow_c->arwAnimeInit();
}
#pragma pop
/* 80248114-80248138 242A54 0024+00 1/0 0/0 0/0 .text arwAnimeMove__14dMsgScrnTalk_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnTalk_c::arwAnimeMove() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_talk/arwAnimeMove__14dMsgScrnTalk_cFv.s"
void dMsgScrnTalk_c::arwAnimeMove() {
mpArrow_c->arwAnimeMove();
}
#pragma pop
/* 80248138-8024815C 242A78 0024+00 1/0 0/0 0/0 .text dotAnimeInit__14dMsgScrnTalk_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnTalk_c::dotAnimeInit() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_talk/dotAnimeInit__14dMsgScrnTalk_cFv.s"
void dMsgScrnTalk_c::dotAnimeInit() {
mpArrow_c->dotAnimeInit();
}
#pragma pop
/* 8024815C-80248180 242A9C 0024+00 1/0 0/0 0/0 .text dotAnimeMove__14dMsgScrnTalk_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnTalk_c::dotAnimeMove() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_talk/dotAnimeMove__14dMsgScrnTalk_cFv.s"
void dMsgScrnTalk_c::dotAnimeMove() {
mpArrow_c->dotAnimeMove();
}
#pragma pop
/* 80248180-802481AC 242AC0 002C+00 1/0 0/0 0/0 .text setSelectString__14dMsgScrnTalk_cFPcPcPc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnTalk_c::setSelectString(char* param_0, char* param_1, char* param_2) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_talk/setSelectString__14dMsgScrnTalk_cFPcPcPc.s"
void dMsgScrnTalk_c::setSelectString(char* param_0, char* param_1, char* param_2) {
if (mpSelect_c != NULL) {
mpSelect_c->setString(param_0, param_1, param_2);
}
}
#pragma pop
/* 802481AC-802481D8 242AEC 002C+00 1/0 0/0 0/0 .text setSelectRubyString__14dMsgScrnTalk_cFPcPcPc
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnTalk_c::setSelectRubyString(char* param_0, char* param_1, char* param_2) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_talk/setSelectRubyString__14dMsgScrnTalk_cFPcPcPc.s"
void dMsgScrnTalk_c::setSelectRubyString(char* param_0, char* param_1, char* param_2) {
if (mpSelect_c != NULL) {
mpSelect_c->setRubyString(param_0, param_1, param_2);
}
}
#pragma pop
/* 802481D8-8024820C 242B18 0034+00 1/0 0/0 0/0 .text isSelect__14dMsgScrnTalk_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool dMsgScrnTalk_c::isSelect() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_talk/isSelect__14dMsgScrnTalk_cFv.s"
bool dMsgScrnTalk_c::isSelect() {
if (mpSelect_c != NULL) {
return mpSelect_c->isSelect();
}
return false;
}
#pragma pop
/* 8024820C-80248244 242B4C 0038+00 1/0 0/0 0/0 .text selectAnimeInit__14dMsgScrnTalk_cFUcUcfUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnTalk_c::selectAnimeInit(u8 param_0, u8 param_1, f32 param_2, u8 param_3) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_talk/selectAnimeInit__14dMsgScrnTalk_cFUcUcfUc.s"
void dMsgScrnTalk_c::selectAnimeInit(u8 param_0, u8 param_1, f32 param_2, u8 param_3) {
if (mpSelect_c != NULL) {
mpSelect_c->selAnimeInit(param_0, param_1, field_0x488, param_2, param_3);
}
}
#pragma pop
/* 80248244-80248278 242B84 0034+00 1/0 0/0 0/0 .text selectAnimeMove__14dMsgScrnTalk_cFUcUcb */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool dMsgScrnTalk_c::selectAnimeMove(u8 param_0, u8 param_1, bool param_2) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_talk/selectAnimeMove__14dMsgScrnTalk_cFUcUcb.s"
bool dMsgScrnTalk_c::selectAnimeMove(u8 param_0, u8 param_1, bool param_2) {
if (mpSelect_c != NULL) {
return mpSelect_c->selAnimeMove(param_0, param_1, param_2);
}
return false;
}
#pragma pop
/* 80248278-802482AC 242BB8 0034+00 1/0 0/0 0/0 .text selectAnimeEnd__14dMsgScrnTalk_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool dMsgScrnTalk_c::selectAnimeEnd() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_talk/selectAnimeEnd__14dMsgScrnTalk_cFv.s"
bool dMsgScrnTalk_c::selectAnimeEnd() {
if (mpSelect_c != NULL) {
return mpSelect_c->selAnimeEnd();
}
return false;
}
#pragma pop
/* 802482AC-802482B0 242BEC 0004+00 1/0 0/0 0/0 .text fukiScale__14dMsgScrnTalk_cFf */
void dMsgScrnTalk_c::fukiScale(f32 param_0) {
/* empty function */
}
/* 802482B0-802482B4 242BF0 0004+00 1/0 0/0 0/0 .text fukiTrans__14dMsgScrnTalk_cFff */
void dMsgScrnTalk_c::fukiTrans(f32 param_0, f32 param_1) {
/* empty function */
}
/* 802482B4-8024835C 242BF4 00A8+00 1/0 0/0 0/0 .text fukiAlpha__14dMsgScrnTalk_cFf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnTalk_c::fukiAlpha(f32 param_0) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_talk/fukiAlpha__14dMsgScrnTalk_cFf.s"
void dMsgScrnTalk_c::fukiAlpha(f32 param_1) {
mpPmP_c->setAlphaRate(param_1 * g_MsgObject_HIO_c.mBoxTalkAlphaP);
for (int i = 0; i < 6; i = i + 1) {
if (mpTm_c[i] != NULL) {
mpTm_c[i]->setAlphaRate(param_1 * mCharAlphaRate);
}
if (mpTmr_c[i] != NULL) {
mpTmr_c[i]->setAlphaRate(param_1 * mCharAlphaRate);
}
}
}
#pragma pop
/* ############################################################################################## */
/* 80454D1C-80454D20 00331C 0004+00 1/1 0/0 0/0 .sdata2 @4489 */
@@ -456,6 +640,108 @@ SECTION_SDATA2 static f32 lit_4500[1 + 1 /* padding */] = {
SECTION_SDATA2 static f64 lit_4502 = 4503601774854144.0 /* cast s32 to float */;
/* 8024835C-80248954 242C9C 05F8+00 1/0 0/0 0/0 .text fukiPosCalc__14dMsgScrnTalk_cFUc */
// Matches with literals
#ifdef NONMATCHING
void dMsgScrnTalk_c::fukiPosCalc(u8 param_1) {
msg_class* msgActor = dMsgObject_c::getActor();
if (mpPmP_c != 0) {
mpPmP_c->move(field_0xe8, field_0xec);
}
if (param_1 == 3) {
fopAc_ac_c* player = dComIfGp_getPlayer(0);
cXyz local_70;
cXyz cStack_7c;
f32 f3y;
mDoLib_project(&player->eyePos, &cStack_7c);
if (msgActor->mPos == cXyz(0.0f, 0.0f, 0.0f)) {
f3y = cStack_7c.y;
} else {
mDoLib_project(&msgActor->mPos, &local_70);
if (local_70.x >= 0.0f && local_70.x <= 608.0f && local_70.y >= 0.0f &&
local_70.y <= 448.0f)
{
f3y = 0.5f * (cStack_7c.y + local_70.y);
} else {
f3y = cStack_7c.y;
}
}
if (mpPmP_c != NULL) {
switch (field_0x488) {
case 1:
if (f3y < g_MsgObject_HIO_c.mBoxAppearBound - 50.0f) {
param_1 = 0;
} else {
param_1 = 1;
}
break;
case 0:
if (f3y < g_MsgObject_HIO_c.mBoxAppearBound + 50.0f) {
param_1 = 0;
} else {
param_1 = 1;
}
break;
}
} else {
if (f3y < g_MsgObject_HIO_c.mBoxAppearBound) {
param_1 = 0;
} else {
param_1 = 1;
}
}
}
field_0xf0 = 0.0f;
field_0x488 = param_1;
f32 dVar15;
switch (field_0x488) {
case 1:
dVar15 = g_MsgObject_HIO_c.mBoxPos[2][0];
field_0xf0 = 235.0f - (mpScreen->search('n_all')->getBounds().i.y +
mpScreen->search('n_all')->getBounds().f.y) / 2;
if (mpSelect_c != NULL) {
mpSelect_c->translate(486.0f, 230.0f);
}
break;
case 2:
dVar15 = g_MsgObject_HIO_c.mBoxPos[1][0];
field_0xf0 = 105.0f - (mpScreen->search('n_all')->getBounds().i.y +
mpScreen->search('n_all')->getBounds().f.y) / 2;
if (mpSelect_c != NULL) {
mpSelect_c->translate(486.0f, 355.0f);
}
break;
default:
dVar15 = g_MsgObject_HIO_c.mBoxPos[0][0];
field_0xf0 = 0.0f;
if (mpSelect_c != NULL) {
mpSelect_c->translate(486.0f, 209.0f);
}
}
if (dComIfGp_isHeapLockFlag() == 2 || dComIfGp_isHeapLockFlag() == 3) {
setTextBoxPosOffsetY(-190.0f);
mpScreen->search('n_all')->move(field_0xe8, field_0xec - 190.0f);
} else {
setTextBoxPosOffsetY(field_0xf0 + dVar15);
mpScreen->search('n_all')->move(field_0xe8, field_0xec + field_0xf0 + dVar15);
}
if (mpPmP_c != NULL) {
mpPmP_c->reinit();
mpArrow_c->setPos(mpArw_c->getGlobalPosX() + (0.5f * mpArw_c->getSizeX()),
mpArw_c->getGlobalPosY() + (0.5f * mpArw_c->getSizeY()));
mpMg_c[1]->translate(field_0xf4 +
(mpMg_c[0]->getGlobalPosX() + (0.5f * mpMg_c[0]->getSizeX())),
(mpMg_c[0]->getGlobalPosY() + (0.5f * mpMg_c[0]->getSizeY())));
mTextBoxPosX = mpTm_c[0]->getGlobalPosX();
mTextBoxPosY = mpTm_c[0]->getGlobalPosY();
} else {
Vec local_ac = mpArw_c->getGlobalVtxCenter(false, 0);
mpArrow_c->setPos(local_ac.x, local_ac.y);
Vec local_b8 = mpMg_c[0]->getGlobalVtxCenter(false, 0);
mpMg_c[1]->translate(local_b8.x + field_0xf4, local_b8.y);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -464,5 +750,6 @@ asm void dMsgScrnTalk_c::fukiPosCalc(u8 param_0) {
#include "asm/msg/scrn/d_msg_scrn_talk/fukiPosCalc__14dMsgScrnTalk_cFUc.s"
}
#pragma pop
#endif
/* 80399BB0-80399BB0 026210 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+18 -145
View File
@@ -1,151 +1,24 @@
//
// Generated By: dol2asm
// Translation Unit: d/pane/d_pane_class_ex
// d_pane_class_ex
//
#include "d/pane/d_pane_class_ex.h"
#include "JSystem/J2DGraph/J2DPane.h"
#include "JSystem/J2DGraph/J2DPictureEx.h"
#include "JSystem/J2DGraph/J2DTextBoxEx.h"
#include "JSystem/J2DGraph/J2DWindowEx.h"
//
// Types:
//
struct J2DAnmTransform {};
struct J2DWindowEx {
/* 80256084 */ void setAnimation(J2DAnmTransform*);
};
struct J2DTextBoxEx {
/* 80256024 */ void getMaterial() const;
/* 80256044 */ void setAnimation(J2DAnmTransform*);
};
struct J2DTextBox {
/* 8025602C */ bool getMaterial() const;
};
struct J2DPictureEx {
/* 80256034 */ void getMaterial() const;
/* 80256064 */ void setAnimation(J2DAnmTransform*);
};
struct J2DPicture {
/* 8025603C */ bool getMaterial() const;
};
struct J2DAnmTexPattern {};
struct J2DAnmVisibilityFull {};
struct J2DAnmVtxColor {};
struct J2DPane {
/* 80256018 */ void setAnimation(J2DAnmVtxColor*);
/* 80256020 */ void setAnimation(J2DAnmTexPattern*);
/* 8025601C */ void setAnimation(J2DAnmVisibilityFull*);
};
//
// Forward References:
//
extern "C" void setAnimation__7J2DPaneFP14J2DAnmVtxColor();
extern "C" void setAnimation__7J2DPaneFP20J2DAnmVisibilityFull();
extern "C" void setAnimation__7J2DPaneFP16J2DAnmTexPattern();
extern "C" void getMaterial__12J2DTextBoxExCFv();
extern "C" bool getMaterial__10J2DTextBoxCFv();
extern "C" void getMaterial__12J2DPictureExCFv();
extern "C" bool getMaterial__10J2DPictureCFv();
extern "C" void setAnimation__12J2DTextBoxExFP15J2DAnmTransform();
extern "C" void setAnimation__12J2DPictureExFP15J2DAnmTransform();
extern "C" void setAnimation__11J2DWindowExFP15J2DAnmTransform();
//
// External References:
//
extern "C" void setAnimation__7J2DPaneFP15J2DAnmTransform();
//
// Declarations:
//
/* 80256018-8025601C 250958 0004+00 0/0 4/0 0/0 .text setAnimation__7J2DPaneFP14J2DAnmVtxColor */
void J2DPane::setAnimation(J2DAnmVtxColor* param_0) {
/* empty function */
static void dummyVirtualFunctions(J2DPane* pane, J2DTextBoxEx* textBoxEx, J2DTextBox* textBox,
J2DPictureEx* pictureEx, J2DPicture* picture,
J2DWindowEx* windowEx) {
windowEx->setAnimation((J2DAnmTransform*)NULL);
pictureEx->setAnimation((J2DAnmTransform*)NULL);
textBoxEx->setAnimation((J2DAnmTransform*)NULL);
picture->getMaterial();
pictureEx->getMaterial();
textBox->getMaterial();
textBoxEx->getMaterial();
pane->setAnimation((J2DAnmTexPattern*)NULL);
pane->setAnimation((J2DAnmVisibilityFull*)NULL);
pane->setAnimation((J2DAnmVtxColor*)NULL);
}
/* 8025601C-80256020 25095C 0004+00 0/0 4/0 0/0 .text
* setAnimation__7J2DPaneFP20J2DAnmVisibilityFull */
void J2DPane::setAnimation(J2DAnmVisibilityFull* param_0) {
/* empty function */
}
/* 80256020-80256024 250960 0004+00 0/0 4/0 0/0 .text setAnimation__7J2DPaneFP16J2DAnmTexPattern
*/
void J2DPane::setAnimation(J2DAnmTexPattern* param_0) {
/* empty function */
}
/* 80256024-8025602C 250964 0008+00 0/0 1/0 0/0 .text getMaterial__12J2DTextBoxExCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DTextBoxEx::getMaterial() const {
nofralloc
#include "asm/d/pane/d_pane_class_ex/getMaterial__12J2DTextBoxExCFv.s"
}
#pragma pop
/* 8025602C-80256034 25096C 0008+00 0/0 1/0 0/0 .text getMaterial__10J2DTextBoxCFv */
bool J2DTextBox::getMaterial() const {
return false;
}
/* 80256034-8025603C 250974 0008+00 0/0 1/0 0/0 .text getMaterial__12J2DPictureExCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DPictureEx::getMaterial() const {
nofralloc
#include "asm/d/pane/d_pane_class_ex/getMaterial__12J2DPictureExCFv.s"
}
#pragma pop
/* 8025603C-80256044 25097C 0008+00 0/0 1/0 0/0 .text getMaterial__10J2DPictureCFv */
bool J2DPicture::getMaterial() const {
return false;
}
/* 80256044-80256064 250984 0020+00 0/0 1/0 0/0 .text
* setAnimation__12J2DTextBoxExFP15J2DAnmTransform */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DTextBoxEx::setAnimation(J2DAnmTransform* param_0) {
nofralloc
#include "asm/d/pane/d_pane_class_ex/setAnimation__12J2DTextBoxExFP15J2DAnmTransform.s"
}
#pragma pop
/* 80256064-80256084 2509A4 0020+00 0/0 1/0 0/0 .text
* setAnimation__12J2DPictureExFP15J2DAnmTransform */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DPictureEx::setAnimation(J2DAnmTransform* param_0) {
nofralloc
#include "asm/d/pane/d_pane_class_ex/setAnimation__12J2DPictureExFP15J2DAnmTransform.s"
}
#pragma pop
/* 80256084-802560A4 2509C4 0020+00 0/0 1/0 0/0 .text
* setAnimation__11J2DWindowExFP15J2DAnmTransform */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DWindowEx::setAnimation(J2DAnmTransform* param_0) {
nofralloc
#include "asm/d/pane/d_pane_class_ex/setAnimation__11J2DWindowExFP15J2DAnmTransform.s"
}
#pragma pop