diff options
| author | hatal175 <hatal175@users.noreply.github.com> | 2023-07-16 22:09:21 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-16 13:09:21 -0600 |
| commit | 0b12611fea47ac9aa298fec779a57d9e86eb9751 (patch) | |
| tree | 9eaaa1b44e3d18332678d012eea85c55202f8ca3 /src | |
| parent | fe7fbf37db6bd57efa63d8a2e4499b9163947533 (diff) | |
dMsgScrnTree_c OK, Some JGeometry work (#370)
* Minor work on c_damagereaction and JGeomtry
* dMsgScrnTree_c OK
* dMsgScrnExplain_c OK
Diffstat (limited to 'src')
| -rw-r--r-- | src/c/c_damagereaction.cpp | 26 | ||||
| -rw-r--r-- | src/d/msg/d_msg_object.cpp | 2 | ||||
| -rw-r--r-- | src/msg/scrn/d_msg_scrn_3select.cpp | 39 | ||||
| -rw-r--r-- | src/msg/scrn/d_msg_scrn_explain.cpp | 851 | ||||
| -rw-r--r-- | src/msg/scrn/d_msg_scrn_tree.cpp | 369 |
5 files changed, 562 insertions, 725 deletions
diff --git a/src/c/c_damagereaction.cpp b/src/c/c_damagereaction.cpp index 8116bd5d95..656c272dac 100644 --- a/src/c/c_damagereaction.cpp +++ b/src/c/c_damagereaction.cpp @@ -71,17 +71,25 @@ SECTION_SDATA2 static f64 lit_3736 = 4503599627370496.0 /* cast u32 to float */; /* 8001817C-800182A4 012ABC 0128+00 1/0 0/0 0/0 .text * execute__24JPTraceParticleCallBack4FP14JPABaseEmitterP15JPABaseParticle */ +// Matches with TVec3<f32> ctors #ifdef NONMATCHING void JPTraceParticleCallBack4::execute(JPABaseEmitter* param_0, JPABaseParticle* param_1) { - int age = param_1->getAge(); + u32 age = param_1->getAge(); if (age != 0) { - JGeometry::TVec3<f32> vec1; - JGeometry::TVec3<f32> vec2; + Vec* user_work = (Vec*)param_0->getUserWork(); + f32 fVar1 = (25.0f - age) / 25.0f; + if (fVar1 < 0.0f) { + fVar1 = 0.0f; + } + JGeometry::TVec3<f32> vec1(user_work[age]); + vec1.scale(0.3f * fVar1); + JGeometry::TVec3<f32> vec2(user_work[0]); + vec2.scale(0.5f * fVar1); JGeometry::TVec3<f32> vec3; - void* user_work = param_0->getUserWork(); - user_work[age*0x0C]; - param_1->setOffsetPosition(param_1->getOffsetPosition() + ) + param_1->getOffsetPosition(vec3); + vec3.add(vec1 + vec2); + param_1->setOffsetPosition(vec3); } } #else @@ -129,6 +137,10 @@ SECTION_DATA extern void* __vt__24JPTraceParticleCallBack4[5] = { /* 80018328-80018388 012C68 0060+00 2/1 0/0 0/0 .text __dt__24JPTraceParticleCallBack4Fv */ +// Needs JPAParticleCallBack inheritance and function order issues in the file +#ifdef NONMATCHING +JPTraceParticleCallBack4::~JPTraceParticleCallBack4() {} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -137,7 +149,7 @@ asm JPTraceParticleCallBack4::~JPTraceParticleCallBack4() { #include "asm/c/c_damagereaction/__dt__24JPTraceParticleCallBack4Fv.s" } #pragma pop - +#endif /* ############################################################################################## */ /* 803A357C-803A3590 00069C 0014+00 1/1 3/3 0/0 .data __vt__19JPAParticleCallBack */ SECTION_DATA extern void* __vt__19JPAParticleCallBack[5] = { diff --git a/src/d/msg/d_msg_object.cpp b/src/d/msg/d_msg_object.cpp index 9b6ba08756..d77c7c6800 100644 --- a/src/d/msg/d_msg_object.cpp +++ b/src/d/msg/d_msg_object.cpp @@ -1662,7 +1662,7 @@ asm void dMsgObject_c::changeGroup(s16 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMsgObject_c::getString(u32 param_0, J2DTextBox* param_1, J2DTextBox* param_2, +asm bool dMsgObject_c::getString(u32 param_0, J2DTextBox* param_1, J2DTextBox* param_2, JUTFont* param_3, COutFont_c* param_4, char* param_5, char* param_6, char* param_7, s16* param_8) { nofralloc diff --git a/src/msg/scrn/d_msg_scrn_3select.cpp b/src/msg/scrn/d_msg_scrn_3select.cpp index 3e64c33f5e..79b4cfcca8 100644 --- a/src/msg/scrn/d_msg_scrn_3select.cpp +++ b/src/msg/scrn/d_msg_scrn_3select.cpp @@ -25,35 +25,6 @@ struct dSelect_cursor_c { /* 801952A0 */ void setAlphaRate(f32); }; -struct dMsgScrn3Select_c { - /* 802390B4 */ dMsgScrn3Select_c(); - /* 802398CC */ ~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); - /* 8023AA04 */ void open1Proc(); - /* 8023AAF4 */ void open2Proc(); - /* 8023AC14 */ void waitProc(); - /* 8023AC44 */ void selectProc(); - /* 8023AE68 */ void changeProc(); - /* 8023B148 */ void closeProc(); - /* 8023B228 */ void selectScale(); - /* 8023B4AC */ void selectTrans(); - /* 8023B870 */ void selectAnimeTransform(int); -}; - struct JKRFileLoader { /* 802D4270 */ void getGlbResource(char const*, JKRFileLoader*); }; @@ -504,7 +475,7 @@ asm J2DAnmColorKey::~J2DAnmColorKey() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMsgScrn3Select_c::isSelect() { +asm bool dMsgScrn3Select_c::isSelect() { nofralloc #include "asm/msg/scrn/d_msg_scrn_3select/isSelect__17dMsgScrn3Select_cFv.s" } @@ -602,7 +573,7 @@ SECTION_SDATA2 static f32 lit_4434 = 199.0f; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMsgScrn3Select_c::selAnimeEnd() { +asm bool dMsgScrn3Select_c::selAnimeEnd() { nofralloc #include "asm/msg/scrn/d_msg_scrn_3select/selAnimeEnd__17dMsgScrn3Select_cFv.s" } @@ -612,7 +583,7 @@ asm void dMsgScrn3Select_c::selAnimeEnd() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMsgScrn3Select_c::getTextBoxWidth() { +asm f32 dMsgScrn3Select_c::getTextBoxWidth() { nofralloc #include "asm/msg/scrn/d_msg_scrn_3select/getTextBoxWidth__17dMsgScrn3Select_cFv.s" } @@ -623,7 +594,7 @@ asm void dMsgScrn3Select_c::getTextBoxWidth() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMsgScrn3Select_c::getFontSize() { +asm f32 dMsgScrn3Select_c::getFontSize() { nofralloc #include "asm/msg/scrn/d_msg_scrn_3select/getFontSize__17dMsgScrn3Select_cFv.s" } @@ -644,7 +615,7 @@ asm void dMsgScrn3Select_c::getRubyFontSize() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMsgScrn3Select_c::getCharSpace() { +asm f32 dMsgScrn3Select_c::getCharSpace() { nofralloc #include "asm/msg/scrn/d_msg_scrn_3select/getCharSpace__17dMsgScrn3Select_cFv.s" } diff --git a/src/msg/scrn/d_msg_scrn_explain.cpp b/src/msg/scrn/d_msg_scrn_explain.cpp index 0e3f1de984..df57a1afa1 100644 --- a/src/msg/scrn/d_msg_scrn_explain.cpp +++ b/src/msg/scrn/d_msg_scrn_explain.cpp @@ -4,10 +4,19 @@ // #include "msg/scrn/d_msg_scrn_explain.h" +#include "msg/scrn/d_msg_scrn_arrow.h" +#include "msg/scrn/d_msg_scrn_3select.h" #include "MSL_C/stdio.h" #include "d/com/d_com_inf_game.h" #include "d/meter/d_meter2_info.h" -#include "dol2asm.h" +#include "d/msg/d_msg_object.h" +#include "d/msg/d_msg_out_font.h" +#include "d/msg/d_msg_string.h" +#include "d/pane/d_pane_class.h" +#include "d/d_lib.h" +#include "m_Do/m_Do_controller_pad.h" +#include "JSystem/J2DGraph/J2DScreen.h" +#include "JSystem/J2DGraph/J2DTextBox.h" #include "dolphin/os/OS.h" #include "dolphin/types.h" @@ -15,371 +24,228 @@ // Types: // -struct dMsgString_c { - /* 80249C20 */ dMsgString_c(); - /* 80249D28 */ ~dMsgString_c(); -}; - -struct dMsgScrnArrow_c { - /* 8023B9B4 */ dMsgScrnArrow_c(); - /* 8023BDC0 */ void draw(); - /* 8023BDF8 */ void setPos(f32, f32); - /* 8023BE34 */ void arwAnimeInit(); -}; - -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(); - /* 8023A97C */ void getCharSpace(); -}; - -struct dMsgObject_c { - /* 802380F4 */ void getString(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, char*, - char*, char*, s16*); -}; - // // Forward References: // -extern "C" void __ct__17dMsgScrnExplain_cFP9STControlUcbUc(); -extern "C" void __dt__17dMsgScrnExplain_cFv(); -extern "C" void move__17dMsgScrnExplain_cFv(); -extern "C" void draw__17dMsgScrnExplain_cFP13J2DOrthoGraph(); -extern "C" void wait_init__17dMsgScrnExplain_cFv(); -extern "C" void wait_proc__17dMsgScrnExplain_cFv(); -extern "C" void open_request_init__17dMsgScrnExplain_cFv(); -extern "C" void open_request_proc__17dMsgScrnExplain_cFv(); -extern "C" void open_init__17dMsgScrnExplain_cFv(); -extern "C" void open_proc__17dMsgScrnExplain_cFv(); -extern "C" void move_init__17dMsgScrnExplain_cFv(); -extern "C" void move_proc__17dMsgScrnExplain_cFv(); -extern "C" void move_select_init__17dMsgScrnExplain_cFv(); -extern "C" void move_select_proc__17dMsgScrnExplain_cFv(); -extern "C" void close_init__17dMsgScrnExplain_cFv(); -extern "C" void close_proc__17dMsgScrnExplain_cFv(); -extern "C" void openExplain__17dMsgScrnExplain_cFUlUcUcUcb(); -extern "C" void getAlphaRatio__17dMsgScrnExplain_cFv(); -extern "C" void checkTriggerA__17dMsgScrnExplain_cFv(); -extern "C" void checkTriggerB__17dMsgScrnExplain_cFv(); -extern "C" void __sinit_d_msg_scrn_explain_cpp(); -extern "C" extern char const* const msg_scrn_d_msg_scrn_explain__stringBase0; - // // External References: // -extern "C" void mDoExt_getMesgFont__Fv(); -extern "C" void checkTrigger__9STControlFv(); -extern "C" void checkUpTrigger__9STControlFv(); -extern "C" void checkDownTrigger__9STControlFv(); -extern "C" void getString__13dMeter2Info_cFUlPcP14JMSMesgEntry_c(); -extern "C" void getStringLength__13dMeter2Info_cFP7JUTFontffPc(); -extern "C" void dMeter2Info_set2DVibrationM__Fv(); -extern "C" void __ct__10COutFont_cFUc(); -extern "C" void -getString__12dMsgObject_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cPcPcPcPs(); -extern "C" void __ct__17dMsgScrn3Select_cFv(); -extern "C" void isSelect__17dMsgScrn3Select_cFv(); -extern "C" void setString__17dMsgScrn3Select_cFPcPcPc(); -extern "C" void setRubyString__17dMsgScrn3Select_cFPcPcPc(); -extern "C" void translate__17dMsgScrn3Select_cFff(); -extern "C" void draw__17dMsgScrn3Select_cFff(); -extern "C" void selAnimeInit__17dMsgScrn3Select_cFUcUcUcfUc(); -extern "C" void selAnimeMove__17dMsgScrn3Select_cFUcUcb(); -extern "C" void selAnimeEnd__17dMsgScrn3Select_cFv(); -extern "C" void getTextBoxWidth__17dMsgScrn3Select_cFv(); -extern "C" void getFontSize__17dMsgScrn3Select_cFv(); -extern "C" void getCharSpace__17dMsgScrn3Select_cFv(); -extern "C" void __ct__15dMsgScrnArrow_cFv(); -extern "C" void draw__15dMsgScrnArrow_cFv(); -extern "C" void setPos__15dMsgScrnArrow_cFff(); -extern "C" void arwAnimeInit__15dMsgScrnArrow_cFv(); -extern "C" void __ct__12dMsgString_cFv(); -extern "C" void __dt__12dMsgString_cFv(); -extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap(); -extern "C" void paneTrans__8CPaneMgrFff(); -extern "C" void getGlobalVtxCenter__8CPaneMgrFP7J2DPanebs(); -extern "C" void dPaneClass_showNullPane__FP9J2DScreen(); -extern "C" void setAlphaRate__13CPaneMgrAlphaFf(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void setTextCount__12Z2SpeechMgr2Fs(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void getBounds__7J2DPaneFv(); -extern "C" void __ct__9J2DScreenFv(); -extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive(); -extern "C" void draw__9J2DScreenFffPC14J2DGrafContext(); -extern "C" void __ct__10J2DPictureFPC7ResTIMG(); -extern "C" void getStringPtr__10J2DTextBoxCFv(); -extern "C" void setString__10J2DTextBoxFsPCce(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; -extern "C" extern u8 g_MsgObject_HIO_c[1040]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; +extern dMsgObject_HIO_c g_MsgObject_HIO_c; // // Declarations: // /* ############################################################################################## */ -/* 80399910-80399910 025F70 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80399910 = "zelda_message_window_new.blo"; -SECTION_DEAD static char const* const stringBase_8039992D = - "zelda_message_window_text_save_road.blo"; -SECTION_DEAD static char const* const stringBase_80399955 = "zelda_message_window_text.blo"; -SECTION_DEAD static char const* const stringBase_80399973 = ""; -SECTION_DEAD static char const* const stringBase_80399974 = "tt_block8x8.bti"; -#pragma pop /* 803C0E40-803C0E4C 01DF60 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 803C0E4C-803C0E58 -00001 000C+00 0/1 0/0 0/0 .data @3819 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3819[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait_init__17dMsgScrnExplain_cFv, -}; -#pragma pop - -/* 803C0E58-803C0E64 -00001 000C+00 0/1 0/0 0/0 .data @3820 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3820[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)open_request_init__17dMsgScrnExplain_cFv, -}; -#pragma pop - -/* 803C0E64-803C0E70 -00001 000C+00 0/1 0/0 0/0 .data @3821 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3821[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)open_init__17dMsgScrnExplain_cFv, -}; -#pragma pop - -/* 803C0E70-803C0E7C -00001 000C+00 0/1 0/0 0/0 .data @3822 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3822[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)move_init__17dMsgScrnExplain_cFv, -}; -#pragma pop - -/* 803C0E7C-803C0E88 -00001 000C+00 0/1 0/0 0/0 .data @3823 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3823[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)move_select_init__17dMsgScrnExplain_cFv, -}; -#pragma pop - -/* 803C0E88-803C0E94 -00001 000C+00 0/1 0/0 0/0 .data @3824 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3824[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)close_init__17dMsgScrnExplain_cFv, -}; -#pragma pop - -/* 803C0E94-803C0EDC 01DFB4 0048+00 1/2 0/0 0/0 .data init_process */ -SECTION_DATA static u8 init_process[72] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 803C0EDC-803C0EE8 -00001 000C+00 0/1 0/0 0/0 .data @3825 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3825[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)wait_proc__17dMsgScrnExplain_cFv, -}; -#pragma pop - -/* 803C0EE8-803C0EF4 -00001 000C+00 0/1 0/0 0/0 .data @3826 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3826[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)open_request_proc__17dMsgScrnExplain_cFv, -}; -#pragma pop - -/* 803C0EF4-803C0F00 -00001 000C+00 0/1 0/0 0/0 .data @3827 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3827[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)open_proc__17dMsgScrnExplain_cFv, -}; -#pragma pop - -/* 803C0F00-803C0F0C -00001 000C+00 0/1 0/0 0/0 .data @3828 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3828[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)move_proc__17dMsgScrnExplain_cFv, -}; -#pragma pop - -/* 803C0F0C-803C0F18 -00001 000C+00 0/1 0/0 0/0 .data @3829 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3829[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)move_select_proc__17dMsgScrnExplain_cFv, -}; -#pragma pop - -/* 803C0F18-803C0F24 -00001 000C+00 0/1 0/0 0/0 .data @3830 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3830[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)close_proc__17dMsgScrnExplain_cFv, -}; -#pragma pop - -/* 803C0F24-803C0F6C 01E044 0048+00 1/2 0/0 0/0 .data move_process */ -SECTION_DATA static u8 move_process[72] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static u8 cNullVec__6Z2Calc[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; -/* 803C0F6C-803C0F78 01E08C 000C+00 2/2 0/0 0/0 .data __vt__17dMsgScrnExplain_c */ -SECTION_DATA extern void* __vt__17dMsgScrnExplain_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__17dMsgScrnExplain_cFv, +static dMsgScrnExplain_c::ProcFunc init_process[6] = { + &dMsgScrnExplain_c::wait_init, &dMsgScrnExplain_c::open_request_init, &dMsgScrnExplain_c::open_init, + &dMsgScrnExplain_c::move_init, &dMsgScrnExplain_c::move_select_init, &dMsgScrnExplain_c::close_init, }; -/* 80454BB8-80454BBC 0031B8 0004+00 5/5 0/0 0/0 .sdata2 @3978 */ -SECTION_SDATA2 static f32 lit_3978 = 608.0f; - -/* 80454BBC-80454BC0 0031BC 0004+00 1/1 0/0 0/0 .sdata2 @3979 */ -SECTION_SDATA2 static f32 lit_3979 = -10.0f; - -/* 80454BC0-80454BC4 0031C0 0004+00 5/5 0/0 0/0 .sdata2 @3980 */ -SECTION_SDATA2 static u8 lit_3980[4] = { - 0x00, - 0x00, - 0x00, - 0x00, +static dMsgScrnExplain_c::ProcFunc move_process[6] = { + &dMsgScrnExplain_c::wait_proc, &dMsgScrnExplain_c::open_request_proc, &dMsgScrnExplain_c::open_proc, + &dMsgScrnExplain_c::move_proc, &dMsgScrnExplain_c::move_select_proc, &dMsgScrnExplain_c::close_proc, }; -/* 80454BC4-80454BC8 0031C4 0004+00 1/1 0/0 0/0 .sdata2 @3981 */ -SECTION_SDATA2 static f32 lit_3981 = -190.0f; - /* 8023CC88-8023D538 2375C8 08B0+00 0/0 2/2 0/0 .text __ct__17dMsgScrnExplain_cFP9STControlUcbUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgScrnExplain_c::dMsgScrnExplain_c(STControl* param_0, u8 param_1, bool param_2, u8 param_3) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/__ct__17dMsgScrnExplain_cFP9STControlUcbUc.s" +dMsgScrnExplain_c::dMsgScrnExplain_c(STControl* param_0, u8 param_1, bool param_2, u8 param_3) { + field_0x44 = param_0; + field_0x54 = 0; + field_0x5c = 0; + field_0x64 = 0; + mSelCursor = 0; + field_0x62 = 0xff; + field_0x63 = 0; + mStatus = 0; + field_0x5a = 0; + mForceSelect = 0; + field_0x58 = 1; + field_0x66 = param_1; + mKeyWaitTimer = 0; + field_0x67 = param_3; + mpString_c = new dMsgString_c(); + mpOutFont = new COutFont_c(0); + mpOutFont->createPane(); + mpScreen = new J2DScreen(); + mpScreen->setPriority("zelda_message_window_new.blo", 0x20000, dComIfGp_getMsgArchive(1)); + dPaneClass_showNullPane(mpScreen); + mpTxScreen = new J2DScreen(); + field_0x48 = 608.0f; + + if (param_1 == 1 || param_1 == 3) { + mpTxScreen->setPriority("zelda_message_window_text_save_road.blo", 0x20000, dComIfGp_getMsgCommonArchive()); + dPaneClass_showNullPane(mpTxScreen); + mpTm_c[0] = new CPaneMgr(mpTxScreen, 'mg_3line', 0, NULL); + mpTm_c[1] = new CPaneMgr(mpTxScreen, 't3_s', 0, NULL); + field_0x10[0] = NULL; + field_0x10[1] = NULL; + mpTxScreen->search('n_3line')->show(); + mpTxScreen->search('n_3fline')->hide(); + mpTxScreen->search('n_e4line')->hide(); + field_0x50 = -10.0f; + field_0x4c = 0.0f; + } else { + mpTxScreen->setPriority("zelda_message_window_text.blo", 0x20000, dComIfGp_getMsgCommonArchive()); + dPaneClass_showNullPane(mpTxScreen); + mpScreen->search('n_all')->scale(g_MsgObject_HIO_c.mBoxTalkScaleX, g_MsgObject_HIO_c.mBoxTalkScaleY); + field_0x50 = -10.0f; + mpTm_c[0] = new CPaneMgr(mpTxScreen, 'mg_e4lin', 0, NULL); + mpTm_c[1] = new CPaneMgr(mpTxScreen, 't4_s', 0, NULL); + field_0x10[0] = NULL; + field_0x10[1] = NULL; + mpTxScreen->search('n_3line')->hide(); + mpTxScreen->search('n_3fline')->hide(); + mpTxScreen->search('n_e4line')->show(); + if (param_1 == 2 || param_1 == 4) { + field_0x4c = 0.0f; + } else { + field_0x4c = -190.0f; + } + } + + f32 lineSpace = ((J2DTextBox*)mpTm_c[0]->getPanePtr())->getLineSpace(); + for (int i = 0; i < 2; i++) { + ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setFont(mDoExt_getMesgFont()); + ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setString(0x200, ""); + ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setLineSpace(lineSpace); + if (field_0x10[i] != NULL) { + ((J2DTextBox*)field_0x10[i]->getPanePtr())->setFont(mDoExt_getMesgFont()); + ((J2DTextBox*)field_0x10[i]->getPanePtr())->setString(0x200, ""); + ((J2DTextBox*)field_0x10[i]->getPanePtr())->setLineSpace(lineSpace); + } + } + mpScreen->search('mg_null')->move( + g_MsgObject_HIO_c.mTextPosX + mpScreen->search('mg_null')->getBounds().i.x, + g_MsgObject_HIO_c.mTextPosY + mpScreen->search('mg_null')->getBounds().i.y + ); + mpArw_c = new CPaneMgr(mpScreen, 'set_ya_n', 0, NULL); + mpMg_c[0] = new CPaneMgr(mpScreen, 'mg_null', 0, NULL); + mpMg_c[1] = new CPaneMgr(mpTxScreen, 'mg_null', 0, NULL); + mpRoot_c[0] = new CPaneMgr(mpScreen, 'ROOT', 2, NULL); + mpRoot_c[1] = new CPaneMgr(mpTxScreen, 'ROOT', 2, NULL); + + if (param_2 == true) { + ResTIMG* texResource = (ResTIMG*) dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti"); + mpBackTex = new J2DPicture(texResource); + mpBackTex->setBlackWhite(JUtility::TColor::TColor(0,0,0,0), JUtility::TColor::TColor(0,0,0,0xff)); + mpBackTex->setAlpha(0); + } else { + mpBackTex = NULL; + } + mpArrow_c = new dMsgScrnArrow_c(); + if (param_0 != NULL) { + mpSelect_c = new dMsgScrn3Select_c(); + } else { + mpSelect_c = NULL; + } + Vec vtxCenter = mpArw_c->getGlobalVtxCenter(mpArw_c->mPane, false, 0); + mpArrow_c->setPos(vtxCenter.x, vtxCenter.y); + Vec vtxCenter2 = mpMg_c[0]->getGlobalVtxCenter(mpMg_c[0]->mPane, false, 0); + mpMg_c[1]->translate(vtxCenter2.x + field_0x50, vtxCenter2.y); } -#pragma pop /* 8023D538-8023D7D8 237E78 02A0+00 1/0 0/0 0/0 .text __dt__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm dMsgScrnExplain_c::~dMsgScrnExplain_c() { -extern "C" asm void __dt__17dMsgScrnExplain_cFv() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/__dt__17dMsgScrnExplain_cFv.s" +dMsgScrnExplain_c::~dMsgScrnExplain_c() { + delete mpString_c; + mpString_c = NULL; + delete mpOutFont; + mpOutFont = NULL; + delete mpScreen; + mpScreen = NULL; + delete mpTxScreen; + mpTxScreen = NULL; + delete mpArw_c; + mpArw_c = NULL; + for (int i = 0; i < 2; i++) { + delete mpTm_c[i]; + mpTm_c[i] = NULL; + if (field_0x10[i] != NULL) { + delete field_0x10[i]; + field_0x10[i] = NULL; + } + delete mpMg_c[i]; + mpMg_c[i] = NULL; + delete mpRoot_c[i]; + mpRoot_c[i] = NULL; + } + if (mpBackTex != NULL) { + delete mpBackTex; + mpBackTex = NULL; + } + if (mpArrow_c != NULL) { + delete mpArrow_c; + mpArrow_c = NULL; + } + if (mpSelect_c) { + delete mpSelect_c; + mpSelect_c = NULL; + } + dComIfGp_getMsgArchive(0)->removeResourceAll(); + dComIfGp_getMsgArchive(1)->removeResourceAll(); + dComIfGp_getMsgCommonArchive()->removeResourceAll(); } -#pragma pop /* ############################################################################################## */ -/* 80454BC8-80454BCC 0031C8 0004+00 1/1 0/0 0/0 .sdata2 @4078 */ -SECTION_SDATA2 static f32 lit_4078 = -35.0f; /* 8023D7D8-8023D918 238118 0140+00 0/0 4/4 0/0 .text move__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::move() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/move__17dMsgScrnExplain_cFv.s" +void dMsgScrnExplain_c::move() { + u8 currentStatus = mStatus; + f32 fVar2 = 0.0f; + if (field_0x66 == 2) { + fVar2 = -35.0f; + } + for (int i = 0; i < 2; i++) { + mpRoot_c[i]->paneTrans(field_0x48 + g_MsgObject_HIO_c.mChoicePos[0][6], + field_0x4c + g_MsgObject_HIO_c.mBoxPos[0][6] + fVar2); + } + (this->*move_process[mStatus])(); + if (currentStatus != mStatus) { + (this->*init_process[mStatus])(); + } + mpScreen->search('n_all')->scale(g_MsgObject_HIO_c.mBoxTalkScaleX, g_MsgObject_HIO_c.mBoxTalkScaleY); } -#pragma pop /* ############################################################################################## */ -/* 80454BCC-80454BD0 0031CC 0004+00 1/1 0/0 0/0 .sdata2 @4120 */ -SECTION_SDATA2 static f32 lit_4120 = 448.0f; - -/* 80454BD0-80454BD4 0031D0 0004+00 4/4 0/0 0/0 .sdata2 @4121 */ -SECTION_SDATA2 static f32 lit_4121 = -1.0f; - -/* 80454BD4-80454BD8 0031D4 0004+00 1/1 0/0 0/0 .sdata2 @4122 */ -SECTION_SDATA2 static f32 lit_4122 = -100.0f; - -/* 80454BD8-80454BDC 0031D8 0004+00 1/1 0/0 0/0 .sdata2 @4123 */ -SECTION_SDATA2 static f32 lit_4123 = 486.0f; - -/* 80454BDC-80454BE0 0031DC 0004+00 1/1 0/0 0/0 .sdata2 @4124 */ -SECTION_SDATA2 static f32 lit_4124 = 209.0f; /* 8023D918-8023DAD0 238258 01B8+00 0/0 3/3 0/0 .text draw__17dMsgScrnExplain_cFP13J2DOrthoGraph */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::draw(J2DOrthoGraph* param_0) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/draw__17dMsgScrnExplain_cFP13J2DOrthoGraph.s" +void dMsgScrnExplain_c::draw(J2DOrthoGraph* param_0) { + if (mStatus == 0 || mStatus == 1) { + return; + } + if (mpBackTex != NULL) { + mpBackTex->draw(0.0f, 0.0f, 608.0f, 448.0f, false, false, false); + } + if (field_0x66 != 2 && field_0x66 != 3) { + mpScreen->draw(0.0f, 0.0f, (J2DGrafContext*)param_0); + } + char acStack_228[512]; + strcpy(acStack_228, ((J2DTextBox*)mpTm_c[0]->getPanePtr())->getStringPtr()); + mpTxScreen->draw(0.0f, 0.0f, (J2DGrafContext*)param_0); + mpString_c->getString(field_0x54, (J2DTextBox*)mpTm_c[0]->getPanePtr(), NULL, NULL, NULL, 8); + mpString_c->drawOutFont((J2DTextBox*)mpTm_c[0]->getPanePtr(), -1.0f); + strcpy(((J2DTextBox*)mpTm_c[0]->getPanePtr())->getStringPtr(), acStack_228); + if (mpSelect_c != NULL && (field_0x64 == 1 || field_0x64 == 2)) { + f32 fVar1 = 0.0f; + if (field_0x66 == 2) { + fVar1 = -100.0f; + } + mpSelect_c->translate(486.0f + g_MsgObject_HIO_c.mChoicePos[0][7], 209.0f + g_MsgObject_HIO_c.mBoxPos[0][7] + fVar1); + mpSelect_c->draw(0.0f, 0.0f); + } + if (mpArrow_c != NULL) { + mpArrow_c->draw(); + } } -#pragma pop /* 8023DAD0-8023DAD4 238410 0004+00 1/0 0/0 0/0 .text wait_init__17dMsgScrnExplain_cFv */ void dMsgScrnExplain_c::wait_init() { @@ -397,181 +263,256 @@ void dMsgScrnExplain_c::open_request_init() { } /* 8023DADC-8023DBE4 23841C 0108+00 1/0 0/0 0/0 .text open_request_proc__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::open_request_proc() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/open_request_proc__17dMsgScrnExplain_cFv.s" +void dMsgScrnExplain_c::open_request_proc() { + J2DTextBox* uVar1; + J2DTextBox* uVar6 = NULL; + uVar1 = (J2DTextBox*) mpTm_c[0]->getPanePtr(); + if (field_0x10[0] != NULL) { + uVar6 = (J2DTextBox*) field_0x10[0]->getPanePtr(); + } + char acStack_220[512]; + char acStack_420[512]; + char acStack_620[512]; + if (dMsgObject_getString(field_0x54, uVar1, uVar6, mDoExt_getMesgFont(), + mpOutFont, acStack_220, + acStack_420, acStack_620, &field_0x5c) != 0) { + strcpy(((J2DTextBox*)mpTm_c[0]->getPanePtr())->getStringPtr(), acStack_220); + strcpy(((J2DTextBox*)mpTm_c[1]->getPanePtr())->getStringPtr(), acStack_620); + for (int i = 0; i < 2; i++) { + if (field_0x10[i] != NULL) { + strcpy(((J2DTextBox*)field_0x10[i]->getPanePtr())->getStringPtr(), acStack_420); + } + } + if (field_0x67 != 0) { + Z2GetSpeechMgr2()->setTextCount(0); + } + mStatus = 2; + } } -#pragma pop /* ############################################################################################## */ -/* 80454BE0-80454BE4 0031E0 0004+00 6/6 0/0 0/0 .sdata2 @4211 */ -SECTION_SDATA2 static f32 lit_4211 = 1.0f; /* 8023DBE4-8023DC7C 238524 0098+00 1/0 0/0 0/0 .text open_init__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::open_init() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/open_init__17dMsgScrnExplain_cFv.s" +void dMsgScrnExplain_c::open_init() { + field_0x5a = 0; + field_0x48 = 608.0f; + for (int i = 0; i < 2; i++) { + mpRoot_c[i]->setAlphaRate(0.0f); + } + mDoAud_seStart(0x51, 0, 0, 0); } -#pragma pop /* ############################################################################################## */ -/* 80454BE4-80454BE8 0031E4 0004+00 2/2 0/0 0/0 .sdata2 @4230 */ -SECTION_SDATA2 static f32 lit_4230 = 150.0f; /* 8023DC7C-8023DD90 2385BC 0114+00 1/0 0/0 0/0 .text open_proc__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::open_proc() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/open_proc__17dMsgScrnExplain_cFv.s" +void dMsgScrnExplain_c::open_proc() { + field_0x5a++; + if (field_0x5a >= 5) { + field_0x5a = 5; + if (field_0x64 == 1 || field_0x64 == 2) { + mStatus = 4; + } else { + mStatus = 3; + } + } + field_0x48 = 608.0f * getAlphaRatio(); + for (int i = 0; i < 2; i++) { + mpRoot_c[i]->setAlphaRate(1.0f - getAlphaRatio()); + } + if (mpBackTex != NULL) { + mpBackTex->setAlpha((1.0f - getAlphaRatio()) * 150.0f ); + } } -#pragma pop /* 8023DD90-8023DDB4 2386D0 0024+00 1/0 0/0 0/0 .text move_init__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::move_init() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/move_init__17dMsgScrnExplain_cFv.s" +void dMsgScrnExplain_c::move_init() { + mpArrow_c->arwAnimeInit(); } -#pragma pop /* 8023DDB4-8023DE8C 2386F4 00D8+00 1/0 0/0 0/0 .text move_proc__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::move_proc() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/move_proc__17dMsgScrnExplain_cFv.s" +void dMsgScrnExplain_c::move_proc() { + if (mKeyWaitTimer > 0) { + mKeyWaitTimer--; + return; + } + if (mDoCPd_c::getTrigA(PAD_1) || + ((field_0x58 != 0x0 && + (mDoCPd_c::getTrigB(PAD_1) || mDoCPd_c::getTrigZ(PAD_1) || mDoCPd_c::getTrigX(PAD_1) || + mDoCPd_c::getTrigY(PAD_1) || mDoCPd_c::getTrigStart(PAD_1) || mDoCPd_c::getTrigR(PAD_1) || + mDoCPd_c::getTrigL(PAD_1) || mForceSelect)))) { + mStatus = 5; + dMeter2Info_set2DVibrationM(); + mDoAud_seStart(0x52, 0, 0, 0); + } } -#pragma pop /* ############################################################################################## */ -/* 80399910-80399910 025F70 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80399984 = "" - "\x1B" - "CR[%d]"; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_8039998C = "\0\0\0"; -#pragma pop - -/* 80454BE8-80454BEC 0031E8 0004+00 1/1 0/0 0/0 .sdata2 @4294 */ -SECTION_SDATA2 static f32 lit_4294 = 0.5f; /* 8023DE8C-8023E0F4 2387CC 0268+00 1/0 0/0 0/0 .text move_select_init__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::move_select_init() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/move_select_init__17dMsgScrnExplain_cFv.s" +void dMsgScrnExplain_c::move_select_init() { + char local_c0[8]; + char local_c8[8]; + char local_a4[20]; + char local_b8[20]; + local_c0[0] = 0; + local_c8[0] = 0; + local_a4[0] = 0; + local_b8[1] = 0; + if (field_0x66 == 4) { + dMeter2Info_getString(0x4b0, local_c0, NULL); + dMeter2Info_getString(0x4b1, local_c8, NULL); + } else { + dMeter2Info_getString(0x51f, local_c0, NULL); + dMeter2Info_getString(0x520, local_c8, NULL); + } + + f32 dVar10 = dMeter2Info_getStringLength(mDoExt_getMesgFont(), mpSelect_c->getFontSize(), mpSelect_c->getCharSpace(), local_c0); + f32 dVar11 = dMeter2Info_getStringLength(mDoExt_getMesgFont(), mpSelect_c->getFontSize(), mpSelect_c->getCharSpace(), local_c8); + f32 dVar13; + if (dVar10 < dVar11) { + dVar13 = dVar11; + } else { + dVar13 = dVar10; + } + f32 dVar12 = mpSelect_c->getTextBoxWidth(); + if (dVar13 < dVar12) { + dVar13 = mpSelect_c->getTextBoxWidth(); + } + + snprintf(local_a4, 20, "\x1B""CR[%d]", (int)(0.5f * (dVar13 - dVar10))); + strcat(local_a4, local_c0); + snprintf(local_b8, 20, "\x1B""CR[%d]", (int)(0.5f * (dVar13 - dVar11))); + strcat(local_b8, local_c8); + mpSelect_c->setString("", local_a4, local_b8); + mpSelect_c->setRubyString("", "", ""); + mpSelect_c->selAnimeInit(2, mSelCursor + 1, 0, dVar13, 0); + mpArrow_c->arwAnimeInit(); } -#pragma pop /* 8023E0F4-8023E43C 238A34 0348+00 1/0 0/0 0/0 .text move_select_proc__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::move_select_proc() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/move_select_proc__17dMsgScrnExplain_cFv.s" +void dMsgScrnExplain_c::move_select_proc() { + if (mKeyWaitTimer > 0) { + mKeyWaitTimer--; + } else { + field_0x44->checkTrigger(); + + if (checkTriggerA()) { + if (field_0x64 == 2) { + if (mSelCursor == 0) { + dMeter2Info_setWarpStatus(3); + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_WARP_MAP_DECIDE, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } else { + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_CURSOR_CANCEL, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + } else if (field_0x66 == 0) { + mDoAud_seStart(Z2SE_SY_TALK_CURSOR_OK, NULL, 0, 0); + } + mStatus = 5; + mDoAud_seStart(Z2SE_SY_EXP_WIN_CLOSE, NULL, 0, 0); + } else if (field_0x58 && (checkTriggerB() || mForceSelect)) { + if (field_0x64 == 2) { + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_CURSOR_CANCEL, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } else if (field_0x64 == 1) { + if (field_0x63 != 0xff) { + mSelCursor = field_0x63; + } else { + mSelCursor = 0xff; + } + } + mStatus = 5; + mDoAud_seStart(Z2SE_SY_EXP_WIN_CLOSE, NULL, 0, 0); + } else if (mpSelect_c->isSelect() && field_0x44->checkUpTrigger()) { + if (mSelCursor == 1) { + mSelCursor = 0; + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + } else if (mpSelect_c->isSelect() && field_0x44->checkDownTrigger() && mSelCursor == 0) { + mSelCursor = 1; + Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + } + + if (mStatus == 4) { + mpSelect_c->selAnimeMove(2, mSelCursor + 1, false); + } else { + mpSelect_c->selAnimeEnd(); + } } -#pragma pop /* 8023E43C-8023E448 238D7C 000C+00 1/0 0/0 0/0 .text close_init__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::close_init() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/close_init__17dMsgScrnExplain_cFv.s" +void dMsgScrnExplain_c::close_init() { + field_0x5a = 5; } -#pragma pop /* 8023E448-8023E558 238D88 0110+00 1/0 0/0 0/0 .text close_proc__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::close_proc() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/close_proc__17dMsgScrnExplain_cFv.s" +void dMsgScrnExplain_c::close_proc() { + bool iVar1; + if (mpSelect_c != NULL) { + iVar1 = mpSelect_c->selAnimeEnd(); + } else { + iVar1 = true; + } + field_0x5a--; + if (field_0x5a <= 0) { + field_0x5a = 0; + if (iVar1) { + mStatus = 0; + } + } + field_0x48 = 608.0f * getAlphaRatio(); + for (int i = 0; i < 2; i++) { + mpRoot_c[i]->setAlphaRate(1.0f - getAlphaRatio()); + } + if (mpBackTex != NULL) { + mpBackTex->setAlpha(150.0f * (1.0f - getAlphaRatio())); + } } -#pragma pop /* 8023E558-8023E5CC 238E98 0074+00 0/0 7/7 0/0 .text openExplain__17dMsgScrnExplain_cFUlUcUcUcb */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool dMsgScrnExplain_c::openExplain(u32 param_0, u8 param_1, u8 param_2, u8 param_3, +bool dMsgScrnExplain_c::openExplain(u32 param_0, u8 param_1, u8 param_2, u8 param_3, bool param_4) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/openExplain__17dMsgScrnExplain_cFUlUcUcUcb.s" + bool rv = false; + if (g_MsgObject_HIO_c.mSaveSeqMsgDebug) { + param_0 = g_MsgObject_HIO_c.mSaveSeqMsgIndex; + } + if (mStatus == 0) { + field_0x54 = param_0; + field_0x64 = param_1; + mSelCursor = param_2; + field_0x63 = param_3; + mForceSelect = 0; + field_0x58 = param_4; + mStatus = 1; + open_request_init(); + rv = true; + } + return rv; } -#pragma pop /* ############################################################################################## */ -/* 80454BEC-80454BF0 0031EC 0004+00 1/1 0/0 0/0 .sdata2 @4414 */ -SECTION_SDATA2 static f32 lit_4414 = 5.0f; - -/* 80454BF0-80454BF8 0031F0 0008+00 1/1 0/0 0/0 .sdata2 @4416 */ -SECTION_SDATA2 static f64 lit_4416 = 4503601774854144.0 /* cast s32 to float */; /* 8023E5CC-8023E640 238F0C 0074+00 2/2 0/0 0/0 .text getAlphaRatio__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::getAlphaRatio() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/getAlphaRatio__17dMsgScrnExplain_cFv.s" +f32 dMsgScrnExplain_c::getAlphaRatio() { + switch (mStatus) { + case 2: + case 5: + return 1.0f - (field_0x5a / 5.0f); + case 0: + return 1.0f; + default: + return 0.0f; + } } -#pragma pop /* 8023E640-8023E654 238F80 0014+00 1/1 0/0 0/0 .text checkTriggerA__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::checkTriggerA() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/checkTriggerA__17dMsgScrnExplain_cFv.s" +bool dMsgScrnExplain_c::checkTriggerA() { + return mDoCPd_c::getTrigA(PAD_1); } -#pragma pop /* 8023E654-8023E668 238F94 0014+00 1/1 0/0 0/0 .text checkTriggerB__17dMsgScrnExplain_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnExplain_c::checkTriggerB() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/checkTriggerB__17dMsgScrnExplain_cFv.s" -} -#pragma pop - -/* 8023E668-8023E79C 238FA8 0134+00 0/0 1/0 0/0 .text __sinit_d_msg_scrn_explain_cpp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __sinit_d_msg_scrn_explain_cpp() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_explain/__sinit_d_msg_scrn_explain_cpp.s" +bool dMsgScrnExplain_c::checkTriggerB() { + return mDoCPd_c::getTrigB(PAD_1); } -#pragma pop - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x8023E668, __sinit_d_msg_scrn_explain_cpp); -#pragma pop - -/* 80399910-80399910 025F70 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/msg/scrn/d_msg_scrn_tree.cpp b/src/msg/scrn/d_msg_scrn_tree.cpp index 1199a14a13..9d1c9bc895 100644 --- a/src/msg/scrn/d_msg_scrn_tree.cpp +++ b/src/msg/scrn/d_msg_scrn_tree.cpp @@ -4,271 +4,184 @@ // #include "msg/scrn/d_msg_scrn_tree.h" -#include "dol2asm.h" +#include "d/com/d_com_inf_game.h" +#include "d/pane/d_pane_class.h" +#include "d/msg/d_msg_object.h" +#include "d/msg/d_msg_out_font.h" #include "dolphin/types.h" +#include "dolphin/os/OS.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "JSystem/JKernel/JKRExpHeap.h" +#include "JSystem/J2DGraph/J2DScreen.h" +#include "JSystem/J2DGraph/J2DAnmLoader.h" +#include "JSystem/J2DGraph/J2DGrafContext.h" // // Types: -// - -struct JUTFont {}; - -struct JKRExpHeap {}; - -struct dMsgScrnTree_c { - /* 80248954 */ dMsgScrnTree_c(JUTFont*, JKRExpHeap*); - /* 80248F14 */ ~dMsgScrnTree_c(); - /* 80249118 */ void exec(); - /* 80249270 */ void draw(); - /* 802492F8 */ void fukiAlpha(f32); - /* 802493AC */ void fukiScale(f32); - /* 802493B0 */ 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 J2DTextBox { - /* 8030074C */ void setString(s16, char const*, ...); -}; - -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__14dMsgScrnTree_cFP7JUTFontP10JKRExpHeap(); -extern "C" void __dt__14dMsgScrnTree_cFv(); -extern "C" void exec__14dMsgScrnTree_cFv(); -extern "C" void draw__14dMsgScrnTree_cFv(); -extern "C" void fukiAlpha__14dMsgScrnTree_cFf(); -extern "C" void fukiScale__14dMsgScrnTree_cFf(); -extern "C" void fukiTrans__14dMsgScrnTree_cFff(); -extern "C" extern char const* const msg_scrn_d_msg_scrn_tree__stringBase0; - // // 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 setString__10J2DTextBoxFsPCce(); -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]; +extern dMsgObject_HIO_c g_MsgObject_HIO_c; // // Declarations: // /* ############################################################################################## */ -/* 80399C18-80399C30 026278 0018+00 1/1 0/0 0/0 .rodata t_tag$3763 */ -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(0x80399C18, &t_tag); - -/* 80399C30-80399C30 026290 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80399C30 = "zelda_kanban_wood_a.blo"; -SECTION_DEAD static char const* const stringBase_80399C48 = "zelda_kanban_wood_a.bck"; -SECTION_DEAD static char const* const stringBase_80399C60 = "zelda_kanban_wood_a.btk"; -SECTION_DEAD static char const* const stringBase_80399C78 = "zelda_kanban_wood_a_02.btk"; -SECTION_DEAD static char const* const stringBase_80399C93 = ""; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_80399C94 = "\0\0\0"; -#pragma pop - -/* 803C1420-803C1478 01E540 0058+00 2/2 0/0 0/0 .data __vt__14dMsgScrnTree_c */ -SECTION_DATA extern void* __vt__14dMsgScrnTree_c[22] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)draw__14dMsgScrnTree_cFv, - (void*)__dt__14dMsgScrnTree_cFv, - (void*)exec__14dMsgScrnTree_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__14dMsgScrnTree_cFf, - (void*)fukiTrans__14dMsgScrnTree_cFff, - (void*)fukiAlpha__14dMsgScrnTree_cFf, - (void*)fontAlpha__14dMsgScrnBase_cFf, - (void*)fukiPosCalc__14dMsgScrnBase_cFUc, -}; - -/* 80454D58-80454D5C 003358 0004+00 2/2 0/0 0/0 .sdata2 @3949 */ -SECTION_SDATA2 static u8 lit_3949[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80454D5C-80454D60 00335C 0004+00 3/3 0/0 0/0 .sdata2 @3950 */ -SECTION_SDATA2 static f32 lit_3950 = 1.0f; - -/* 80454D60-80454D68 003360 0004+04 1/1 0/0 0/0 .sdata2 @3951 */ -SECTION_SDATA2 static f32 lit_3951[1 + 1 /* padding */] = { - 6.0f / 5.0f, - /* padding */ - 0.0f, -}; /* 80248954-80248F14 243294 05C0+00 0/0 1/1 0/0 .text * __ct__14dMsgScrnTree_cFP7JUTFontP10JKRExpHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgScrnTree_c::dMsgScrnTree_c(JUTFont* param_0, JKRExpHeap* param_1) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_tree/__ct__14dMsgScrnTree_cFP7JUTFontP10JKRExpHeap.s" +dMsgScrnTree_c::dMsgScrnTree_c(JUTFont* param_0, JKRExpHeap* param_1) { + if (param_1 != NULL) { + field_0xd8 = param_1; + } else { + field_0xd8 = dComIfGp_getSubHeap2D(7); + } + + field_0xd8->getTotalFreeSize(); + init(); + if (param_0 == NULL) { + field_0x54 = mDoExt_getMesgFont(); + } else { + field_0x54 = param_0; + } + + mpScreen = new J2DScreen(); + mpScreen->setPriority("zelda_kanban_wood_a.blo", 0x1020000, dComIfGp_getMsgArchive(2)); + dPaneClass_showNullPane(mpScreen); + i_OSInitFastCast(); + field_0xcc = (J2DAnmTransform*) J2DAnmLoaderDataBase::load(JKRGetNameResource("zelda_kanban_wood_a.bck", dComIfGp_getMsgArchive(2))); + field_0xd0 = (J2DAnmTextureSRTKey*) J2DAnmLoaderDataBase::load(JKRGetNameResource("zelda_kanban_wood_a.btk", dComIfGp_getMsgArchive(2))); + field_0xd0->searchUpdateMaterialID(mpScreen); + field_0xdc = 0.0f; + field_0xd4 = (J2DAnmTextureSRTKey*) J2DAnmLoaderDataBase::load(JKRGetNameResource("zelda_kanban_wood_a_02.btk", dComIfGp_getMsgArchive(2))); + field_0xd4->searchUpdateMaterialID(mpScreen); + field_0xe0 = 0.0f; + mpPmp_c = new CPaneMgr(mpScreen, 'n_size', 2, NULL); + 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.mBoxWoodScaleX, g_MsgObject_HIO_c.mBoxWoodScaleY); + field_0xc4 = new CPaneMgr(mpScreen, 'back_b', 0, NULL); + field_0xc8 = new CPaneMgr(mpScreen, 'spot00', 0, NULL); + field_0xc8->getPanePtr()->setAnimation(field_0xd0); + mpScreen->search('white_m')->setAnimation(field_0xd4); + for (int i = 0; i < 3; i++) { + static u64 const t_tag[3] = { + 'mg_e4lin', 'f4_w', 't4_s' + }; + mpTm_c[i] = new CPaneMgr(mpScreen, t_tag[i], 0, NULL); + ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setFont(field_0x54); + ((J2DTextBox*)mpTm_c[i]->getPanePtr())->setString(0x200, ""); + } + 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++) { + ((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(); + mTextBoxPosOffsetY = 0.0f; + + for (int i = 0; i < 3; i++) { + if (mpTmr_c[i] != 0) { + ((J2DTextBox*)mpTmr_c[i]->getPanePtr())->setLineSpace(mLineSpace); + if (i == 0) { + J2DTextBox::TFontSize aTStack_38; + ((J2DTextBox*)mpTmr_c[0]->getPanePtr())->getFontSize(aTStack_38); + mRubySize = aTStack_38.mSizeX; + mRubyCharSpace = ((J2DTextBox*)mpTmr_c[0]->getPanePtr())->getCharSpace(); + } + mpTmr_c[i]->resize(1.2f * mpTmr_c[i]->getSizeX(), mpTmr_c[i]->getSizeY()); + } + } } -#pragma pop /* 80248F14-80249118 243854 0204+00 1/0 0/0 0/0 .text __dt__14dMsgScrnTree_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgScrnTree_c::~dMsgScrnTree_c() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_tree/__dt__14dMsgScrnTree_cFv.s" +dMsgScrnTree_c::~dMsgScrnTree_c() { + delete mpScreen; + mpScreen = NULL; + delete field_0xcc; + field_0xcc = NULL; + delete field_0xd0; + field_0xd0 = NULL; + delete field_0xd4; + field_0xd4 = NULL; + delete mpPmp_c; + mpPmp_c = NULL; + delete field_0xc4; + field_0xc4 = NULL; + delete field_0xc8; + field_0xc8 = NULL; + for (int i = 0; i < 3; i++) { + delete mpTm_c[i]; + mpTm_c[i] = NULL; + if (mpTmr_c[i]) { + delete mpTmr_c[i]; + mpTmr_c[i] = NULL; + } + } + dComIfGp_getMsgArchive(2)->removeResourceAll(); } -#pragma pop /* ############################################################################################## */ -/* 80454D68-80454D70 003368 0008+00 1/1 0/0 0/0 .sdata2 @4053 */ -SECTION_SDATA2 static f64 lit_4053 = 4503601774854144.0 /* cast s32 to float */; /* 80249118-80249270 243A58 0158+00 1/0 0/0 0/0 .text exec__14dMsgScrnTree_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnTree_c::exec() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_tree/exec__14dMsgScrnTree_cFv.s" +void dMsgScrnTree_c::exec() { + field_0xdc += 1.0f; + if (field_0xdc >= field_0xd0->getFrameMax()) { + field_0xdc -= field_0xd0->getFrameMax(); + } + field_0xd0->setFrame(field_0xdc); + + field_0xe0 += 1.0f; + if (field_0xe0 >= field_0xd4->getFrameMax()) { + field_0xe0 -= field_0xd4->getFrameMax(); + } + field_0xd4->setFrame(field_0xe0); + mpScreen->animation(); + + if (isTalkNow()) { + fukiAlpha(1.0f); + } + mpPmp_c->scale(g_MsgObject_HIO_c.mBoxWoodScaleX, g_MsgObject_HIO_c.mBoxWoodScaleY); } -#pragma pop /* 80249270-802492F8 243BB0 0088+00 1/0 0/0 0/0 .text draw__14dMsgScrnTree_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnTree_c::draw() { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_tree/draw__14dMsgScrnTree_cFv.s" +void dMsgScrnTree_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 /* 802492F8-802493AC 243C38 00B4+00 1/0 0/0 0/0 .text fukiAlpha__14dMsgScrnTree_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgScrnTree_c::fukiAlpha(f32 param_0) { - nofralloc -#include "asm/msg/scrn/d_msg_scrn_tree/fukiAlpha__14dMsgScrnTree_cFf.s" +void dMsgScrnTree_c::fukiAlpha(f32 param_0) { + field_0xc4->setAlphaRate(param_0); + mpPmp_c->setAlphaRate(param_0 * g_MsgObject_HIO_c.mBoxWoodAlphaP); + field_0xc8->setAlphaRate(param_0); + for (int i = 0; i < 3; i++) { + mpTm_c[i]->setAlphaRate(param_0 * mCharAlphaRate); + if (mpTmr_c[i] != 0) { + mpTmr_c[i]->setAlphaRate(param_0 * mCharAlphaRate); + } + } } -#pragma pop /* 802493AC-802493B0 243CEC 0004+00 1/0 0/0 0/0 .text fukiScale__14dMsgScrnTree_cFf */ void dMsgScrnTree_c::fukiScale(f32 param_0) { |
