summaryrefslogtreecommitdiff
path: root/src/d/msg/d_msg_scrn_jimaku.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/d/msg/d_msg_scrn_jimaku.cpp')
-rw-r--r--src/d/msg/d_msg_scrn_jimaku.cpp405
1 files changed, 156 insertions, 249 deletions
diff --git a/src/d/msg/d_msg_scrn_jimaku.cpp b/src/d/msg/d_msg_scrn_jimaku.cpp
index 7528519e19..25fd348428 100644
--- a/src/d/msg/d_msg_scrn_jimaku.cpp
+++ b/src/d/msg/d_msg_scrn_jimaku.cpp
@@ -1,272 +1,179 @@
-//
-// Generated By: dol2asm
-// Translation Unit: msg/scrn/d_msg_scrn_jimaku
-//
+/**
+ * d_msg_scrn_jimaku.cpp
+ *
+ */
#include "d/msg/d_msg_scrn_jimaku.h"
-#include "dol2asm.h"
-
-//
-// Types:
-//
-
-struct dMsgScrnLight_c {
- /* 80245934 */ dMsgScrnLight_c(u8, u8);
-};
-
-struct JKRExpHeap {};
-
-struct dMsgScrnJimaku_c {
- /* 80244558 */ dMsgScrnJimaku_c(u8, JKRExpHeap*);
- /* 80244A74 */ ~dMsgScrnJimaku_c();
- /* 80244C2C */ void exec();
- /* 80244D34 */ void drawSelf();
- /* 80244D8C */ void fukiAlpha(f32);
- /* 80244E2C */ void fukiScale(f32);
- /* 80244E30 */ void fukiTrans(f32, f32);
- /* 80244E34 */ 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 JUtility {
- struct TColor {};
-};
-
-struct JKRHeap {
- /* 802CE4D4 */ void alloc(u32, int);
- /* 802CE548 */ void free(void*);
-};
-
-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();
- /* 80254458 */ void setBlackWhite(JUtility::TColor, JUtility::TColor);
- /* 802545B0 */ void paneTrans(f32, f32);
-};
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__16dMsgScrnJimaku_cFUcP10JKRExpHeap();
-extern "C" void __dt__16dMsgScrnJimaku_cFv();
-extern "C" void exec__16dMsgScrnJimaku_cFv();
-extern "C" void drawSelf__16dMsgScrnJimaku_cFv();
-extern "C" void fukiAlpha__16dMsgScrnJimaku_cFf();
-extern "C" void fukiScale__16dMsgScrnJimaku_cFf();
-extern "C" void fukiTrans__16dMsgScrnJimaku_cFff();
-extern "C" void fontAlpha__16dMsgScrnJimaku_cFf();
-extern "C" extern char const* const msg_scrn_d_msg_scrn_jimaku__stringBase0;
-
-//
-// External References:
-//
-
-SECTION_INIT void memset();
-extern "C" void mDoExt_getMesgFont__Fv();
-extern "C" void dComIfGp_getSubHeap2D__Fi();
-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__15dMsgScrnLight_cFUcUc();
-extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap();
-extern "C" void getGlobalPosX__8CPaneMgrFv();
-extern "C" void getGlobalPosY__8CPaneMgrFv();
-extern "C" void setBlackWhite__8CPaneMgrFQ28JUtility6TColorQ28JUtility6TColor();
-extern "C" void paneTrans__8CPaneMgrFff();
-extern "C" void dPaneClass_showNullPane__FP9J2DScreen();
-extern "C" void setAlphaRate__13CPaneMgrAlphaFf();
-extern "C" void alloc__7JKRHeapFUli();
-extern "C" void free__7JKRHeapFPv();
-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_23();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _restgpr_23();
-extern "C" void _restgpr_24();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" extern u8 g_MsgObject_HIO_c[1040];
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 80399A80-80399A80 0260E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80399A80 = "zelda_jimaku_message_text.blo";
-SECTION_DEAD static char const* const stringBase_80399A9E = "";
-/* @stringBase0 padding */
-SECTION_DEAD static char const* const pad_80399A9F = "";
-#pragma pop
-
-/* 803C11E8-803C1240 01E308 0058+00 2/2 0/0 0/0 .data __vt__16dMsgScrnJimaku_c */
-SECTION_DATA extern void* __vt__16dMsgScrnJimaku_c[22] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)draw__14dMsgScrnBase_cFv,
- (void*)__dt__16dMsgScrnJimaku_cFv,
- (void*)exec__16dMsgScrnJimaku_cFv,
- (void*)multiDraw__14dMsgScrnBase_cFv,
- (void*)drawSelf__16dMsgScrnJimaku_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__16dMsgScrnJimaku_cFf,
- (void*)fukiTrans__16dMsgScrnJimaku_cFff,
- (void*)fukiAlpha__16dMsgScrnJimaku_cFf,
- (void*)fontAlpha__16dMsgScrnJimaku_cFf,
- (void*)fukiPosCalc__14dMsgScrnBase_cFUc,
-};
-
-/* 80454CB0-80454CB4 0032B0 0004+00 2/2 0/0 0/0 .sdata2 @3941 */
-SECTION_SDATA2 static u8 lit_3941[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-
-/* 80454CB4-80454CB8 0032B4 0004+00 1/1 0/0 0/0 .sdata2 @3942 */
-SECTION_SDATA2 static f32 lit_3942 = 6.0f / 5.0f;
+#include "JSystem/J2DGraph/J2DGrafContext.h"
+#include "JSystem/J2DGraph/J2DScreen.h"
+#include "JSystem/J2DGraph/J2DTextBox.h"
+#include "d/com/d_com_inf_game.h"
+#include "d/msg/d_msg_object.h"
+#include "d/msg/d_msg_scrn_light.h"
+#include "d/pane/d_pane_class.h"
+
+extern "C" extern dMsgObject_HIO_c g_MsgObject_HIO_c;
/* 80244558-80244A74 23EE98 051C+00 0/0 1/1 0/0 .text __ct__16dMsgScrnJimaku_cFUcP10JKRExpHeap */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dMsgScrnJimaku_c::dMsgScrnJimaku_c(u8 param_0, JKRExpHeap* param_1) {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_jimaku/__ct__16dMsgScrnJimaku_cFUcP10JKRExpHeap.s"
+dMsgScrnJimaku_c::dMsgScrnJimaku_c(u8 param_0, JKRExpHeap* i_heap) {
+ if (i_heap != NULL) {
+ heap = i_heap;
+ } else {
+ heap = dComIfGp_getSubHeap2D(7);
+ }
+
+ init();
+
+ mpScreen = new J2DScreen();
+ JUT_ASSERT(mpScreen != 0);
+
+ bool fg = mpScreen->setPriority("zelda_jimaku_message_text.blo", 0x20000,
+ dComIfGp_getMsgCommonArchive());
+ JUT_ASSERT(fg != false);
+ dPaneClass_showNullPane(mpScreen);
+
+ mpLight_c = new dMsgScrnLight_c(0, param_0);
+ JUT_ASSERT(mpLight_c != 0);
+
+ void* mpBuf = heap->alloc(0x106A, 0x20);
+ JUT_ASSERT(mpBuf != 0);
+ memset(mpBuf, 0, 0x106A);
+ mCharInfoPtr = (CharInfo_c*)mpBuf;
+
+ mpPmP_c = new CPaneMgr(mpScreen, 'mg_null', 3, NULL);
+ JUT_ASSERT(mpPmP_c != 0);
+ mpPmP_c->scale(g_MsgObject_HIO_c.mSubtitleScaleX, g_MsgObject_HIO_c.mSubtitleScaleY);
+ field_0xcc = g_MsgObject_HIO_c.mBoxPos[0][5];
+ mpPmP_c->paneTrans(0.0f, field_0xcc);
+
+ mpTm_c[0] = new CPaneMgr(mpScreen, 'mg_e4lin', 0, NULL);
+ JUT_ASSERT(mpTm_c[0] != 0);
+
+ mpTm_c[1] = new CPaneMgr(mpScreen, 't4_s', 0, NULL);
+ JUT_ASSERT(mpTm_c[1] != 0);
+
+ mpScreen->search('n_3line')->hide();
+ mpScreen->search('n_3fline')->hide();
+ mpScreen->search('n_e4line')->show();
+
+ 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)]);
+
+ 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)]);
+ }
+ }
+
+ ((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 < 2; i++) {
+ ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setLineSpace(mLineSpace);
+ mpTm_c[i]->resize(mpTm_c[i]->getSizeX() * 1.2f, mpTm_c[i]->getSizeY());
+ }
+
+ mTextBoxPosX = mpTm_c[0]->getGlobalPosX();
+ mTextBoxPosY = mpTm_c[0]->getGlobalPosY();
+
+ for (int i = 0; i < 2; i++) {
+ if (mpTmr_c[i] != NULL) {
+ ((J2DTextBox*)mpTmr_c[i]->getPanePtr())->setLineSpace(mLineSpace);
+
+ if (i == 0) {
+ J2DTextBox::TFontSize font_size;
+ ((J2DTextBox*)mpTmr_c[0]->getPanePtr())->getFontSize(font_size);
+ mRubySize = font_size.mSizeX;
+ mRubyCharSpace = ((J2DTextBox*)mpTmr_c[0]->getPanePtr())->getCharSpace();
+ }
+
+ mpTmr_c[i]->resize(mpTmr_c[i]->getSizeX() * 1.2f, mpTmr_c[i]->getSizeY());
+ }
+ }
}
-#pragma pop
/* 80244A74-80244C2C 23F3B4 01B8+00 1/0 0/0 0/0 .text __dt__16dMsgScrnJimaku_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dMsgScrnJimaku_c::~dMsgScrnJimaku_c() {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_jimaku/__dt__16dMsgScrnJimaku_cFv.s"
+dMsgScrnJimaku_c::~dMsgScrnJimaku_c() {
+ delete mpScreen;
+ mpScreen = NULL;
+
+ delete mpLight_c;
+ mpLight_c = NULL;
+
+ if (mCharInfoPtr != NULL) {
+ heap->free(mCharInfoPtr);
+ mCharInfoPtr = NULL;
+ }
+
+ delete mpPmP_c;
+ mpPmP_c = NULL;
+
+ for (int i = 0; i < 2; i++) {
+ 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
-
-/* ############################################################################################## */
-/* 80454CB8-80454CC0 0032B8 0004+04 2/2 0/0 0/0 .sdata2 @4021 */
-SECTION_SDATA2 static f32 lit_4021[1 + 1 /* padding */] = {
- 1.0f,
- /* padding */
- 0.0f,
-};
/* 80244C2C-80244D34 23F56C 0108+00 1/0 0/0 0/0 .text exec__16dMsgScrnJimaku_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnJimaku_c::exec() {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_jimaku/exec__16dMsgScrnJimaku_cFv.s"
+void dMsgScrnJimaku_c::exec() {
+ if (isTalkNow()) {
+ fukiAlpha(1.0f);
+ }
+
+ 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)]);
+
+ 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)]);
+ }
+ }
}
-#pragma pop
/* 80244D34-80244D8C 23F674 0058+00 1/0 0/0 0/0 .text drawSelf__16dMsgScrnJimaku_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnJimaku_c::drawSelf() {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_jimaku/drawSelf__16dMsgScrnJimaku_cFv.s"
+void dMsgScrnJimaku_c::drawSelf() {
+ dComIfGp_getCurrentGrafPort()->setup2D();
+ drawOutFont(0.0f, 0.0f, 1.0f);
}
-#pragma pop
/* 80244D8C-80244E2C 23F6CC 00A0+00 1/0 0/0 0/0 .text fukiAlpha__16dMsgScrnJimaku_cFf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgScrnJimaku_c::fukiAlpha(f32 param_0) {
- nofralloc
-#include "asm/msg/scrn/d_msg_scrn_jimaku/fukiAlpha__16dMsgScrnJimaku_cFf.s"
+void dMsgScrnJimaku_c::fukiAlpha(f32 i_alpha) {
+ mpPmP_c->setAlphaRate(i_alpha * g_MsgObject_HIO_c.mSubtitleAlphaP);
+
+ for (int i = 0; i < 2; i++) {
+ mpTm_c[i]->setAlphaRate(i_alpha * mCharAlphaRate);
+
+ if (mpTmr_c[i] != NULL) {
+ mpTmr_c[i]->setAlphaRate(i_alpha * mCharAlphaRate);
+ }
+ }
}
-#pragma pop
/* 80244E2C-80244E30 23F76C 0004+00 1/0 0/0 0/0 .text fukiScale__16dMsgScrnJimaku_cFf */
-void dMsgScrnJimaku_c::fukiScale(f32 param_0) {
- /* empty function */
-}
+void dMsgScrnJimaku_c::fukiScale(f32 i_scale) {}
/* 80244E30-80244E34 23F770 0004+00 1/0 0/0 0/0 .text fukiTrans__16dMsgScrnJimaku_cFff */
-void dMsgScrnJimaku_c::fukiTrans(f32 param_0, f32 param_1) {
- /* empty function */
-}
+void dMsgScrnJimaku_c::fukiTrans(f32 i_posX, f32 i_posY) {}
/* 80244E34-80244E38 23F774 0004+00 1/0 0/0 0/0 .text fontAlpha__16dMsgScrnJimaku_cFf */
-void dMsgScrnJimaku_c::fontAlpha(f32 param_0) {
- /* empty function */
-}
-
-/* 80399A80-80399A80 0260E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+void dMsgScrnJimaku_c::fontAlpha(f32 i_alpha) {}