diff options
| author | hatal175 <hatal175@users.noreply.github.com> | 2024-01-27 03:57:16 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-26 17:57:16 -0800 |
| commit | 9d331d712e6cc84e9b9399f7efc161422d236142 (patch) | |
| tree | be3cf14b0f7356f00e9c58f0738b090903653179 /src/msg | |
| parent | 1ea10fcc63d502aecf0aed02f831dbdb141a1034 (diff) | |
d_msg_scrn_light,d_msg_scrn_kanban ok (#2050)
* d_msg_scrn_light ok
* d_msg_scrn_kanban OK
Diffstat (limited to 'src/msg')
| -rw-r--r-- | src/msg/scrn/d_msg_scrn_kanban.cpp | 363 | ||||
| -rw-r--r-- | src/msg/scrn/d_msg_scrn_light.cpp | 426 |
2 files changed, 331 insertions, 458 deletions
diff --git a/src/msg/scrn/d_msg_scrn_kanban.cpp b/src/msg/scrn/d_msg_scrn_kanban.cpp index 03c1323202..b6c6156f70 100644 --- a/src/msg/scrn/d_msg_scrn_kanban.cpp +++ b/src/msg/scrn/d_msg_scrn_kanban.cpp @@ -1,264 +1,161 @@ // -// Generated By: dol2asm -// Translation Unit: msg/scrn/d_msg_scrn_kanban +// d_msg_scrn_kanban // #include "msg/scrn/d_msg_scrn_kanban.h" -#include "dol2asm.h" - -// -// Types: -// - -struct JKRExpHeap {}; - -struct dMsgScrnKanban_c { - /* 80244E38 */ dMsgScrnKanban_c(JKRExpHeap*); - /* 8024534C */ ~dMsgScrnKanban_c(); - /* 80245528 */ void exec(); - /* 80245618 */ void draw(); - /* 802456A0 */ void fukiAlpha(f32); - /* 80245754 */ void fukiScale(f32); - /* 80245758 */ void fukiTrans(f32, 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(); - /* 8023C300 */ void drawSelf(); - /* 8023C4F4 */ void fontAlpha(f32); - /* 8023C574 */ void isTalkNow(); -}; - -struct JKRHeap { - /* 802CE784 */ void getTotalFreeSize(); -}; - -struct JKRFileLoader { - /* 802D4270 */ void getGlbResource(char const*, JKRFileLoader*); -}; - -struct JKRArchive {}; - -struct J2DGrafContext {}; - -struct J2DScreen { - /* 802F8498 */ J2DScreen(); - /* 802F8648 */ void setPriority(char const*, u32, JKRArchive*); - /* 802F8ED4 */ void draw(f32, f32, J2DGrafContext const*); - /* 802F9690 */ void animation(); -}; - -struct J2DPane { - /* 802F7FCC */ void animationTransform(); -}; - -struct J2DAnmLoaderDataBase { - /* 80308A6C */ void load(void const*); -}; - -struct CPaneMgrAlpha { - /* 802557D0 */ void setAlphaRate(f32); -}; - -struct CPaneMgr { - /* 80253984 */ CPaneMgr(J2DScreen*, u64, u8, JKRExpHeap*); - /* 802542E8 */ void getGlobalPosX(); - /* 80254364 */ void getGlobalPosY(); -}; - -// -// Forward References: -// - -extern "C" void __ct__16dMsgScrnKanban_cFP10JKRExpHeap(); -extern "C" void __dt__16dMsgScrnKanban_cFv(); -extern "C" void exec__16dMsgScrnKanban_cFv(); -extern "C" void draw__16dMsgScrnKanban_cFv(); -extern "C" void fukiAlpha__16dMsgScrnKanban_cFf(); -extern "C" void fukiScale__16dMsgScrnKanban_cFf(); -extern "C" void fukiTrans__16dMsgScrnKanban_cFff(); -extern "C" extern char const* const msg_scrn_d_msg_scrn_kanban__stringBase0; +#include "JSystem/JKernel/JKRExpHeap.h" +#include "JSystem/JKernel/JKRFileLoader.h" +#include "JSystem/JKernel/JKRArchive.h" +#include "JSystem/J2DGraph/J2DScreen.h" +#include "JSystem/J2DGraph/J2DAnmLoader.h" +#include "JSystem/J2DGraph/J2DTextBox.h" +#include "JSystem/J2DGraph/J2DGrafContext.h" +#include "d/pane/d_pane_class.h" +#include "d/com/d_com_inf_game.h" +#include "d/msg/d_msg_object.h" +#include "d/msg/d_msg_out_font.h" // // External References: // -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 drawSelf__14dMsgScrnBase_cFv(); -extern "C" void fontAlpha__14dMsgScrnBase_cFf(); -extern "C" void isTalkNow__14dMsgScrnBase_cFv(); -extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap(); -extern "C" void getGlobalPosX__8CPaneMgrFv(); -extern "C" void getGlobalPosY__8CPaneMgrFv(); -extern "C" void dPaneClass_showNullPane__FP9J2DScreen(); -extern "C" void setAlphaRate__13CPaneMgrAlphaFf(); -extern "C" void getTotalFreeSize__7JKRHeapFv(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader(); -extern "C" void animationTransform__7J2DPaneFv(); -extern "C" void __ct__9J2DScreenFv(); -extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive(); -extern "C" void draw__9J2DScreenFffPC14J2DGrafContext(); -extern "C" void animation__9J2DScreenFv(); -extern "C" void load__20J2DAnmLoaderDataBaseFPCv(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -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: -// +extern dMsgObject_HIO_c g_MsgObject_HIO_c; /* ############################################################################################## */ /* 80399AA0-80399AB8 026100 0018+00 1/1 0/0 0/0 .rodata t_tag$3768 */ -SECTION_RODATA static u8 const t_tag[24] = { - 0x6D, 0x67, 0x5F, 0x65, 0x34, 0x6C, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00, - 0x66, 0x34, 0x5F, 0x77, 0x00, 0x00, 0x00, 0x00, 0x74, 0x34, 0x5F, 0x73, -}; -COMPILER_STRIP_GATE(0x80399AA0, &t_tag); - -/* 80399AB8-80399AB8 026118 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80399AB8 = "zelda_kanban_stone_a.blo"; -SECTION_DEAD static char const* const stringBase_80399AD1 = "zelda_kanban_stone_a.bck"; -SECTION_DEAD static char const* const stringBase_80399AEA = "zelda_kanban_stone_a.btk"; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_80399B03 = "\0\0\0\0"; -#pragma pop - -/* 803C1240-803C1298 01E360 0058+00 2/2 0/0 0/0 .data __vt__16dMsgScrnKanban_c */ -SECTION_DATA extern void* __vt__16dMsgScrnKanban_c[22] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)draw__16dMsgScrnKanban_cFv, - (void*)__dt__16dMsgScrnKanban_cFv, - (void*)exec__16dMsgScrnKanban_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__16dMsgScrnKanban_cFf, - (void*)fukiTrans__16dMsgScrnKanban_cFff, - (void*)fukiAlpha__16dMsgScrnKanban_cFf, - (void*)fontAlpha__14dMsgScrnBase_cFf, - (void*)fukiPosCalc__14dMsgScrnBase_cFUc, -}; - -/* 80454CC0-80454CC4 0032C0 0004+00 2/2 0/0 0/0 .sdata2 @3944 */ -SECTION_SDATA2 static u8 lit_3944[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80454CC4-80454CC8 0032C4 0004+00 3/3 0/0 0/0 .sdata2 @3945 */ -SECTION_SDATA2 static f32 lit_3945 = 1.0f; - -/* 80454CC8-80454CD0 0032C8 0004+04 1/1 0/0 0/0 .sdata2 @3946 */ -SECTION_SDATA2 static f32 lit_3946[1 + 1 /* padding */] = { - 6.0f / 5.0f, - /* padding */ - 0.0f, +static u64 const t_tag[3] = { + 'mg_e4lin', + 'f4_w', + 't4_s', }; /* 80244E38-8024534C 23F778 0514+00 0/0 1/1 0/0 .text __ct__16dMsgScrnKanban_cFP10JKRExpHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgScrnKanban_c::dMsgScrnKanban_c(JKRExpHeap* param_0) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_kanban/__ct__16dMsgScrnKanban_cFP10JKRExpHeap.s" +dMsgScrnKanban_c::dMsgScrnKanban_c(JKRExpHeap* param_0) { + if (param_0 != NULL) { + field_0xd4 = param_0; + } else { + field_0xd4 = dComIfGp_getSubHeap2D(7); + } + s32 uVar14 = field_0xd4->getTotalFreeSize(); + init(); + mpScreen = new J2DScreen(); + JUT_ASSERT(43, mpScreen != 0); + bool fg = mpScreen->setPriority("zelda_kanban_stone_a.blo", 0x1020000, dComIfGp_getMsgArchive(2)); + JUT_ASSERT(45, fg != false); + dPaneClass_showNullPane(mpScreen); + OSInitFastCast(); + field_0xcc = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(JKRGetNameResource("zelda_kanban_stone_a.bck", dComIfGp_getMsgArchive(2))); + field_0xd0 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(JKRGetNameResource("zelda_kanban_stone_a.btk", dComIfGp_getMsgArchive(2))); + field_0xd0->searchUpdateMaterialID(mpScreen); + field_0xd8 = 0.0f; + mpPmp_c = new CPaneMgr(mpScreen, 'n_size', 2, NULL); + JUT_ASSERT(60, mpPmp_c != 0); + mpPmp_c->getPanePtr()->setAnimation(field_0xcc); + field_0xcc->setFrame(1.0f); + mpPmp_c->getPanePtr()->animationTransform(); + mpPmp_c->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + mpPmp_c->scale(g_MsgObject_HIO_c.mBoxStoneScaleX, g_MsgObject_HIO_c.mBoxStoneScaleY); + mpBack_c = new CPaneMgr(mpScreen, 'back_b', 0, NULL); + JUT_ASSERT(68, mpBack_c != 0); + mpSpot_c = new CPaneMgr(mpScreen, 'spot00', 0, NULL); + JUT_ASSERT(72, mpSpot_c != 0); + mpSpot_c->getPanePtr()->setAnimation(field_0xd0); + for (int i = 0; i < 3; i++) { + mpTm_c[i] = new CPaneMgr(mpScreen, t_tag[i], 0, NULL); + JUT_ASSERT(81, mpTm_c[i] != 0); + ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setFont(mDoExt_getMesgFont()); + } + mpScreen->search('n_3line')->hide(); + mpScreen->search('n_3fline')->hide(); + mpScreen->search('n_e4line')->show(); + ((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 < 3; i = i + 1) { + ((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]->CPaneMgr::getGlobalPosY(); + mTextBoxPosOffsetY = 0.0f; + for (int i = 0; i < 3; 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()); + } + } + OS_REPORT("remain ===> %d\n", uVar14 - field_0xd4->getTotalFreeSize()); } -#pragma pop /* 8024534C-80245528 23FC8C 01DC+00 1/0 0/0 0/0 .text __dt__16dMsgScrnKanban_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgScrnKanban_c::~dMsgScrnKanban_c() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_kanban/__dt__16dMsgScrnKanban_cFv.s" +dMsgScrnKanban_c::~dMsgScrnKanban_c() { + delete mpScreen; + mpScreen = NULL; + delete field_0xcc; + field_0xcc = NULL; + delete field_0xd0; + field_0xd0 = NULL; + delete mpPmp_c; + mpPmp_c = NULL; + delete mpBack_c; + mpBack_c = NULL; + delete mpSpot_c; + mpSpot_c = NULL; + + for (int i = 0; i < 3; i++) { + delete mpTm_c[i]; + mpTm_c[i] = NULL; + if (mpTmr_c[i] != NULL) { + delete mpTmr_c[i]; + mpTmr_c[i] = NULL; + } + } + dComIfGp_getMsgArchive(2)->removeResourceAll(); } -#pragma pop - -/* ############################################################################################## */ -/* 80454CD0-80454CD8 0032D0 0008+00 1/1 0/0 0/0 .sdata2 @4033 */ -SECTION_SDATA2 static f64 lit_4033 = 4503601774854144.0 /* cast s32 to float */; /* 80245528-80245618 23FE68 00F0+00 1/0 0/0 0/0 .text exec__16dMsgScrnKanban_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnKanban_c::exec() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_kanban/exec__16dMsgScrnKanban_cFv.s" +void dMsgScrnKanban_c::exec() { + field_0xd8 += 1.0f; + if (field_0xd8 >= field_0xd0->getFrameMax()) { + field_0xd8 -= field_0xd0->getFrameMax(); + } + field_0xd0->setFrame(field_0xd8); + mpScreen->animation(); + if (isTalkNow()) { + fukiAlpha(1.0f); + } + mpPmp_c->scale(g_MsgObject_HIO_c.mBoxStoneScaleX, g_MsgObject_HIO_c.mBoxStoneScaleY); } -#pragma pop /* 80245618-802456A0 23FF58 0088+00 1/0 0/0 0/0 .text draw__16dMsgScrnKanban_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnKanban_c::draw() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_kanban/draw__16dMsgScrnKanban_cFv.s" +void dMsgScrnKanban_c::draw() { + J2DGrafContext* grafContext = dComIfGp_getCurrentGrafPort(); + grafContext->setup2D(); + mpScreen->draw(0.0f, 0.0f, grafContext); + mpOutFont->draw(NULL, 0.0f, 0.0f, 1.0f); } -#pragma pop /* 802456A0-80245754 23FFE0 00B4+00 1/0 0/0 0/0 .text fukiAlpha__16dMsgScrnKanban_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnKanban_c::fukiAlpha(f32 param_0) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_kanban/fukiAlpha__16dMsgScrnKanban_cFf.s" +void dMsgScrnKanban_c::fukiAlpha(f32 param_0) { + mpBack_c->setAlphaRate(param_0); + mpPmp_c->setAlphaRate(param_0 * g_MsgObject_HIO_c.mBoxStoneAlphaP); + mpSpot_c->setAlphaRate(param_0); + for (int i = 0; i < 3; i++) { + mpTm_c[i]->setAlphaRate(param_0 * mCharAlphaRate); + if (mpTmr_c[i] != NULL) { + mpTmr_c[i]->setAlphaRate(param_0 * mCharAlphaRate); + } + } } -#pragma pop - /* 80245754-80245758 240094 0004+00 1/0 0/0 0/0 .text fukiScale__16dMsgScrnKanban_cFf */ void dMsgScrnKanban_c::fukiScale(f32 param_0) { /* empty function */ diff --git a/src/msg/scrn/d_msg_scrn_light.cpp b/src/msg/scrn/d_msg_scrn_light.cpp index ea30a183f9..d2a818683a 100644 --- a/src/msg/scrn/d_msg_scrn_light.cpp +++ b/src/msg/scrn/d_msg_scrn_light.cpp @@ -1,258 +1,234 @@ // -// Generated By: dol2asm -// Translation Unit: msg/scrn/d_msg_scrn_light +// d_msg_scrn_light // #include "msg/scrn/d_msg_scrn_light.h" -#include "dol2asm.h" -#include "dolphin/types.h" +#include "JSystem/JKernel/JKRFileLoader.h" +#include "JSystem/JKernel/JKRExpHeap.h" +#include "JSystem/JKernel/JKRArchive.h" +#include "JSystem/J2DGraph/J2DGrafContext.h" +#include "JSystem/J2DGraph/J2DScreen.h" +#include "JSystem/J2DGraph/J2DAnmLoader.h" +#include "d/pane/d_pane_class.h" +#include "d/com/d_com_inf_game.h" -// -// Types: -// - -struct JUtility { - struct TColor {}; -}; - -struct dMsgScrnLight_c { - /* 80245934 */ dMsgScrnLight_c(u8, u8); - /* 80245B00 */ ~dMsgScrnLight_c(); - /* 80245C04 */ void draw(f32*, f32, f32, f32, f32, f32, u8); - /* 80245F90 */ void draw(f32*, f32, f32, f32, f32, f32, f32, JUtility::TColor, - JUtility::TColor); - /* 802460DC */ void drawCommon(f32, f32, f32, f32, f32); -}; - -struct dMsgScrnLight_HIO_c { - /* 8024575C */ dMsgScrnLight_HIO_c(); - /* 802457C4 */ void updateColor(u8); - /* 80246348 */ ~dMsgScrnLight_HIO_c(); -}; - -struct JKRFileLoader { - /* 802D4270 */ void getGlbResource(char const*, JKRFileLoader*); -}; - -struct JKRExpHeap {}; - -struct JKRArchive {}; - -struct J2DGrafContext {}; - -struct J2DScreen { - /* 802F8498 */ J2DScreen(); - /* 802F8648 */ void setPriority(char const*, u32, JKRArchive*); - /* 802F8ED4 */ void draw(f32, f32, J2DGrafContext const*); - /* 802F9690 */ void animation(); -}; - -struct J2DPane { - /* 802F7FCC */ void animationTransform(); -}; - -struct J2DAnmLoaderDataBase { - /* 80308A6C */ void load(void const*); -}; - -struct CPaneMgrAlpha { - /* 802557D0 */ void setAlphaRate(f32); - /* 80255828 */ void getAlphaRate(); -}; - -struct CPaneMgr { - /* 80253984 */ CPaneMgr(J2DScreen*, u64, u8, JKRExpHeap*); - /* 80254458 */ void setBlackWhite(JUtility::TColor, JUtility::TColor); -}; - -// -// Forward References: -// - -extern "C" void __ct__19dMsgScrnLight_HIO_cFv(); -extern "C" void updateColor__19dMsgScrnLight_HIO_cFUc(); -extern "C" void __ct__15dMsgScrnLight_cFUcUc(); -extern "C" void __dt__15dMsgScrnLight_cFv(); -extern "C" void draw__15dMsgScrnLight_cFPffffffUc(); -extern "C" void draw__15dMsgScrnLight_cFPfffffffQ28JUtility6TColorQ28JUtility6TColor(); -extern "C" void drawCommon__15dMsgScrnLight_cFfffff(); -extern "C" void __dt__19dMsgScrnLight_HIO_cFv(); -extern "C" void __sinit_d_msg_scrn_light_cpp(); -extern "C" extern char const* const msg_scrn_d_msg_scrn_light__stringBase0; - -// -// External References: -// - -extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap(); -extern "C" void setBlackWhite__8CPaneMgrFQ28JUtility6TColorQ28JUtility6TColor(); -extern "C" void dPaneClass_showNullPane__FP9J2DScreen(); -extern "C" void setAlphaRate__13CPaneMgrAlphaFf(); -extern "C" void getAlphaRate__13CPaneMgrAlphaFv(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader(); -extern "C" void animationTransform__7J2DPaneFv(); -extern "C" void __ct__9J2DScreenFv(); -extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive(); -extern "C" void draw__9J2DScreenFffPC14J2DGrafContext(); -extern "C" void animation__9J2DScreenFv(); -extern "C" void load__20J2DAnmLoaderDataBaseFPCv(); -extern "C" void __register_global_object(); -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 data_804510D8[8]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803C1298-803C12A4 01E3B8 000C+00 2/2 0/0 0/0 .data __vt__15dMsgScrnLight_c */ -SECTION_DATA extern void* __vt__15dMsgScrnLight_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__15dMsgScrnLight_cFv, -}; - -/* 803C12A4-803C12B0 01E3C4 000C+00 2/2 0/0 0/0 .data __vt__19dMsgScrnLight_HIO_c */ -SECTION_DATA extern void* __vt__19dMsgScrnLight_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__19dMsgScrnLight_HIO_cFv, -}; +extern u8 data_804510D8[8]; /* 8024575C-802457C4 24009C 0068+00 1/1 0/0 0/0 .text __ct__19dMsgScrnLight_HIO_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgScrnLight_HIO_c::dMsgScrnLight_HIO_c() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_light/__ct__19dMsgScrnLight_HIO_cFv.s" +dMsgScrnLight_HIO_c::dMsgScrnLight_HIO_c() { + field_0x5 = 0; + for (int i = 0; i < 9; i++) { + field_0x6[i] = 0xa0; + field_0x18[i] = 0x87; + field_0x2a[i] = 0x14; + field_0x3c[i] = 0x0; + field_0xf[i] = 0xe1; + field_0x21[i] = 0xd2; + field_0x33[i] = 0x6e; + field_0x45[i] = 0xd2; + } } -#pragma pop /* 802457C4-80245934 240104 0170+00 1/1 0/0 0/0 .text updateColor__19dMsgScrnLight_HIO_cFUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnLight_HIO_c::updateColor(u8 param_0) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_light/updateColor__19dMsgScrnLight_HIO_cFUc.s" +void dMsgScrnLight_HIO_c::updateColor(u8 param_0) { + switch(param_0) { + case 0: + for (int i = 0; i < 9; i++) { + field_0x6[i] = 0xa0; + field_0x18[i] = 0x87; + field_0x2a[i] = 0x14; + field_0x3c[i] = 0x0; + field_0xf[i] = 0xe1; + field_0x21[i] = 0xd2; + field_0x33[i] = 0x6e; + field_0x45[i] = 0xa0; + } + break; + case 2: + for (int i = 0; i < 9; i++) { + field_0x6[i] = 0xff; + field_0x18[i] = 0xfa; + field_0x2a[i] = 0x96; + field_0x3c[i] = 0x0; + field_0xf[i] = 0xff; + field_0x21[i] = 0xff; + field_0x33[i] = 0x6e; + field_0x45[i] = 0xd2; + } + break; + case 1: + for (int i = 0; i < 9; i++) { + field_0x6[i] = 0x28; + field_0x18[i] = 0x6e; + field_0x2a[i] = 0xb4; + field_0x3c[i] = 0x0; + field_0xf[i] = 0x28; + field_0x21[i] = 0x6e; + field_0x33[i] = 0xb4; + field_0x45[i] = 0x78; + } + break; + case 4: + for (int i = 0; i < 9; i++) { + field_0x6[i] = 0x46; + field_0x18[i] = 0x96; + field_0x2a[i] = 0x0; + field_0x3c[i] = 0x0; + field_0xf[i] = 0x46; + field_0x21[i] = 0x96; + field_0x33[i] = 0x0; + field_0x45[i] = 0x96; + } + break; + } } -#pragma pop - -/* ############################################################################################## */ -/* 80399B08-80399B08 026168 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80399B08 = "zelda_message_window_text_light.blo"; -SECTION_DEAD static char const* const stringBase_80399B2C = "zelda_message_window_text_light.bck"; -SECTION_DEAD static char const* const stringBase_80399B50 = "zelda_message_window_text_light.bpk"; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_80399B74 = "\0\0\0"; -#pragma pop - -/* 804306C8-804306D4 05D3E8 000C+00 1/1 0/0 0/0 .bss @3735 */ -static u8 lit_3735[12]; /* 804306D4-80430728 05D3F4 0050+04 3/3 0/0 0/0 .bss g_MsgScrnLight_HIO_c */ -static u8 g_MsgScrnLight_HIO_c[80 + 4 /* padding */]; - -/* 80454CD8-80454CDC 0032D8 0004+00 4/4 0/0 0/0 .sdata2 @3808 */ -SECTION_SDATA2 static u8 lit_3808[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; +dMsgScrnLight_HIO_c g_MsgScrnLight_HIO_c; /* 80245934-80245B00 240274 01CC+00 0/0 4/4 1/1 .text __ct__15dMsgScrnLight_cFUcUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgScrnLight_c::dMsgScrnLight_c(u8 param_0, u8 param_1) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_light/__ct__15dMsgScrnLight_cFUcUc.s" +dMsgScrnLight_c::dMsgScrnLight_c(u8 param_1, u8 param_2) { + field_0x20 = param_1; + field_0x21 = param_2; + if (data_804510D8[0] == 0) { + g_MsgScrnLight_HIO_c.field_0x4 = -1; + } + data_804510D8[0]++; + g_MsgScrnLight_HIO_c.updateColor(param_1); + mpScreen = new J2DScreen(); + JUT_ASSERT(250, mpScreen != 0); + bool fg = mpScreen->setPriority("zelda_message_window_text_light.blo", 0x20000, + dComIfGp_getMain2DArchive()); + JUT_ASSERT(254, fg != false); + dPaneClass_showNullPane(mpScreen); + OSInitFastCast(); + void* uVar7 = JKRGetNameResource("zelda_message_window_text_light.bck", dComIfGp_getMain2DArchive()); + field_0x8 = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(uVar7); + field_0x14 = 0.0f; + uVar7 = JKRGetNameResource("zelda_message_window_text_light.bpk", dComIfGp_getMain2DArchive()); + field_0xc = (J2DAnmColor*)J2DAnmLoaderDataBase::load(uVar7); + field_0xc->searchUpdateMaterialID(mpScreen); + field_0x18 = 0.0f; + mpParent_c = new CPaneMgr(mpScreen, 'moya00', 0, NULL); + JUT_ASSERT(269, mpParent_c != 0); + mpParent_c->getPanePtr()->setAnimation(field_0x8); + mpParent_c->getPanePtr()->setAnimation(field_0xc); + field_0x22 = 1; + field_0x1c = 0.0f; } -#pragma pop /* 80245B00-80245C04 240440 0104+00 1/0 0/0 0/0 .text __dt__15dMsgScrnLight_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgScrnLight_c::~dMsgScrnLight_c() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_light/__dt__15dMsgScrnLight_cFv.s" +dMsgScrnLight_c::~dMsgScrnLight_c() { + data_804510D8[0]--; + delete mpScreen; + mpScreen = NULL; + delete field_0x8; + field_0x8 = NULL; + delete field_0xc; + field_0xc = NULL; + delete mpParent_c; + mpParent_c = NULL; } -#pragma pop - -/* ############################################################################################## */ -/* 80454CDC-80454CE0 0032DC 0004+00 2/2 0/0 0/0 .sdata2 @3869 */ -SECTION_SDATA2 static f32 lit_3869 = 1.0f; - -/* 80454CE0-80454CE8 0032E0 0008+00 2/2 0/0 0/0 .sdata2 @3871 */ -SECTION_SDATA2 static f64 lit_3871 = 4503601774854144.0 /* cast s32 to float */; /* 80245C04-80245F90 240544 038C+00 0/0 2/2 0/0 .text draw__15dMsgScrnLight_cFPffffffUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnLight_c::draw(f32* param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, - f32 param_5, u8 param_6) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_light/draw__15dMsgScrnLight_cFPffffffUc.s" +void dMsgScrnLight_c::draw(f32* param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5, + f32 param_6, u8 param_7) { + if (g_MsgScrnLight_HIO_c.field_0x5 != 0) { + if (param_7 < 9) { + mpParent_c->setBlackWhite(JUtility::TColor(g_MsgScrnLight_HIO_c.field_0x6[param_7], + g_MsgScrnLight_HIO_c.field_0x18[param_7], + g_MsgScrnLight_HIO_c.field_0x2a[param_7], + g_MsgScrnLight_HIO_c.field_0x3c[param_7]), + JUtility::TColor(g_MsgScrnLight_HIO_c.field_0xf[param_7], + g_MsgScrnLight_HIO_c.field_0x21[param_7], + g_MsgScrnLight_HIO_c.field_0x33[param_7], + g_MsgScrnLight_HIO_c.field_0x45[param_7])); + } else { + mpParent_c->setBlackWhite(mpParent_c->getInitBlack(), mpParent_c->getInitWhite()); + } + } else { + if (field_0x20 == 0) { + mpParent_c->setBlackWhite(JUtility::TColor(0xa0, 0x87, 0x14, 0), + JUtility::TColor(0xe1, 0xd2, 0x6e, 0xa0)); + } else if (field_0x20 == 2) { + mpParent_c->setBlackWhite(JUtility::TColor(0xff, 0xff, 0x96, 0), + JUtility::TColor(0xff, 0xff, 0x6e, 0xd2)); + } else if (field_0x20 == 1) { + mpParent_c->setBlackWhite(JUtility::TColor(0x28, 0x6e, 0xb4, 0), + JUtility::TColor(0x28, 0x6e, 0xb4, 0x78)); + } else if (field_0x20 == 4) { + mpParent_c->setBlackWhite(JUtility::TColor(0x46, 0x96, 0, 0), + JUtility::TColor(0x46, 0x96, 0, 0x96)); + } else { + mpParent_c->setBlackWhite(mpParent_c->getInitBlack(), mpParent_c->getInitWhite()); + } + } + if (field_0x22 != 0) { + *param_1 += 1.0f; + if (*param_1 >= field_0x8->getFrameMax()) { + *param_1 = 0.0f; + } + field_0x14 = *param_1; + field_0x18 = *param_1; + } + drawCommon(param_2, param_3, param_4, param_5, param_6); } -#pragma pop /* 80245F90-802460DC 2408D0 014C+00 0/0 1/1 1/1 .text * draw__15dMsgScrnLight_cFPfffffffQ28JUtility6TColorQ28JUtility6TColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnLight_c::draw(f32* param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, - f32 param_5, f32 param_6, JUtility::TColor param_7, - JUtility::TColor param_8) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_light/draw__15dMsgScrnLight_cFPfffffffQ28JUtility6TColorQ28JUtility6TColor.s" +void dMsgScrnLight_c::draw(f32* param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5, + f32 param_6, f32 param_7, JUtility::TColor param_8, + JUtility::TColor param_9) { + mpParent_c->setBlackWhite(param_8, param_9); + if (field_0x22 != 0) { + *param_1 += param_7; + if (*param_1 >= field_0x8->getFrameMax()) { + *param_1 = 0.0f; + } + field_0x14 = *param_1; + field_0x18 = *param_1; + } + drawCommon(param_2, param_3, param_4, param_5, param_6); } -#pragma pop /* 802460DC-80246348 240A1C 026C+00 2/2 0/0 0/0 .text drawCommon__15dMsgScrnLight_cFfffff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnLight_c::drawCommon(f32 param_0, f32 param_1, f32 param_2, f32 param_3, - f32 param_4) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_light/drawCommon__15dMsgScrnLight_cFfffff.s" +void dMsgScrnLight_c::drawCommon(f32 param_1, f32 param_2, f32 param_3, f32 param_4, + f32 param_5) { + J2DGrafContext* grafContext = dComIfGp_getCurrentGrafPort(); + grafContext->setup2D(); + f32 dVar9 = mpParent_c->getAlphaRate(); + if (((field_0x21 == 3 || field_0x21 == 0x5) && + param_5 < field_0x1c) || + (field_0x21 != 3 && field_0x21 != 0x5 && 1.0f != param_5)) + { + if (field_0x22 != 0) { + mpParent_c->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); + mpParent_c->getPanePtr()->setAnimation((J2DAnmColor*)NULL); + field_0x22 = 0; + } + mpParent_c->setAlphaRate(dVar9 * param_5); + } else if (field_0x22 == 0) { + mpParent_c->getPanePtr()->setAnimation(field_0x8); + mpParent_c->getPanePtr()->setAnimation(field_0xc); + field_0x22 = 01; + } + if (field_0x22 != 0) { + field_0x8->setFrame(field_0x14); + field_0xc->setFrame(field_0x18); + mpParent_c->getPanePtr()->animationTransform(); + mpScreen->animation(); + } + mpParent_c->translate(param_1, param_2); + f32 dVar11 = mpParent_c->getInitScaleX(); + f32 dVar12 = mpParent_c->getInitScaleY(); + mpParent_c->scale(dVar11 * param_3, dVar12 * param_4); + mpScreen->draw(0.0f, 0.0f, grafContext); + if (1.0f != param_5) { + mpParent_c->setAlphaRate(dVar9); + } + field_0x1c = param_5; } -#pragma pop - -/* 80246348-80246390 240C88 0048+00 2/1 0/0 0/0 .text __dt__19dMsgScrnLight_HIO_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgScrnLight_HIO_c::~dMsgScrnLight_HIO_c() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_light/__dt__19dMsgScrnLight_HIO_cFv.s" -} -#pragma pop - -/* 80246390-802463CC 240CD0 003C+00 0/0 1/0 0/0 .text __sinit_d_msg_scrn_light_cpp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __sinit_d_msg_scrn_light_cpp() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_light/__sinit_d_msg_scrn_light_cpp.s" -} -#pragma pop - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80246390, __sinit_d_msg_scrn_light_cpp); -#pragma pop /* 80399B08-80399B08 026168 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ |
