diff options
| author | hatal175 <hatal175@users.noreply.github.com> | 2024-08-14 23:50:36 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-14 13:50:36 -0700 |
| commit | edd2d30a337a69c6a0228a172108ce17d3253697 (patch) | |
| tree | cb1c71ab4a11b494afe6416df3a17b72346170d0 /src/d/msg | |
| parent | 0af6d632ced216e21c09e091156dd65d23bcba83 (diff) | |
Work on d_msg_scrn_talk (#2192)
* Work on d_msg_scrn_talk
* Generate d_pane_class_ex virtual inlines
Diffstat (limited to 'src/d/msg')
| -rw-r--r-- | src/d/msg/d_msg_scrn_jimaku.cpp | 16 | ||||
| -rw-r--r-- | src/d/msg/d_msg_scrn_talk.cpp | 611 |
2 files changed, 457 insertions, 170 deletions
diff --git a/src/d/msg/d_msg_scrn_jimaku.cpp b/src/d/msg/d_msg_scrn_jimaku.cpp index 25fd348428..211bf7f5d1 100644 --- a/src/d/msg/d_msg_scrn_jimaku.cpp +++ b/src/d/msg/d_msg_scrn_jimaku.cpp @@ -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]); } } } diff --git a/src/d/msg/d_msg_scrn_talk.cpp b/src/d/msg/d_msg_scrn_talk.cpp index 9e53bbebc0..eb5c3123a0 100644 --- a/src/d/msg/d_msg_scrn_talk.cpp +++ b/src/d/msg/d_msg_scrn_talk.cpp @@ -4,82 +4,22 @@ // #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 */ |
