Merge branch 'master' of https://github.com/zeldaret/tp into lv4floor

This commit is contained in:
TakaRikka
2023-07-16 23:45:01 -07:00
123 changed files with 2273 additions and 7096 deletions
+19 -7
View File
@@ -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] = {
+1 -1
View File
@@ -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
+5 -34
View File
@@ -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"
}
+396 -455
View File
@@ -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] = {
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,
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,
};
/* 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,
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,
};
#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,
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,
};
/* 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,
};
/* 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"
bool dMsgScrnExplain_c::checkTriggerB() {
return mDoCPd_c::getTrigB(PAD_1);
}
#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"
}
#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 */
+141 -228
View File
@@ -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) {