summaryrefslogtreecommitdiff
path: root/src/d
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2022-07-04 12:21:57 -0700
committerGitHub <noreply@github.com>2022-07-04 21:21:57 +0200
commit929c5cfa5a18effef4ef76e61282dd774b3deb1b (patch)
tree902fba539d9a30cc7aae3761f4ba5d2c34af83e8 /src/d
parentb68cfbc0e6a66e9ef46ab01264dbe9e92b65bf8e (diff)
d_menu_save / pane_class / rename some data (#205)
* work on fop actor / actor mng, daalink, d_a_obj_item * d_a_title mostly decompiled * daalink / d_event / JMessage / dmsg_out_font work * msg_scrn_base / msg_scrn_boss * some work on mDo machine, d_menu_save, d_tresure, and various * remove asm * progress * finish d_menu_save / d_pane_class_alpha / d_pane_class / rename some data * rename more data * remove asm / progress * match all of d_pane_class * fixes / some dKankyo doc
Diffstat (limited to 'src/d')
-rw-r--r--src/d/a/d_a_alink.cpp27
-rw-r--r--src/d/a/d_a_no_chg_room.cpp2
-rw-r--r--src/d/a/d_a_npc.cpp22
-rw-r--r--src/d/bg/d_bg_s.cpp8
-rw-r--r--src/d/bg/d_bg_w.cpp4
-rw-r--r--src/d/bg/d_bg_w_kcol.cpp4
-rw-r--r--src/d/d_camera.cpp2
-rw-r--r--src/d/d_demo.cpp2
-rw-r--r--src/d/d_envse.cpp2
-rw-r--r--src/d/d_error_msg.cpp2
-rw-r--r--src/d/d_ev_camera.cpp2
-rw-r--r--src/d/d_k_wmark.cpp2
-rw-r--r--src/d/d_k_wpillar.cpp2
-rw-r--r--src/d/d_ky_thunder.cpp2
-rw-r--r--src/d/d_model.cpp4
-rw-r--r--src/d/d_stage.cpp85
-rw-r--r--src/d/d_tresure.cpp8
-rw-r--r--src/d/kankyo/d_kankyo.cpp718
-rw-r--r--src/d/kankyo/d_kankyo_rain.cpp2
-rw-r--r--src/d/kankyo/d_kankyo_wether.cpp203
-rw-r--r--src/d/menu/d_menu_dmap_map.cpp2
-rw-r--r--src/d/menu/d_menu_fmap.cpp2
-rw-r--r--src/d/menu/d_menu_fmap_map.cpp2
-rw-r--r--src/d/menu/d_menu_letter.cpp4
-rw-r--r--src/d/menu/d_menu_save.cpp2670
-rw-r--r--src/d/msg/d_msg_class.cpp2
-rw-r--r--src/d/msg/d_msg_flow.cpp2
-rw-r--r--src/d/msg/d_msg_string.cpp89
-rw-r--r--src/d/ovlp/d_ovlp_fade2.cpp2
-rw-r--r--src/d/pane/d_pane_class.cpp597
-rw-r--r--src/d/pane/d_pane_class_alpha.cpp470
-rw-r--r--src/d/particle/d_particle.cpp2
-rw-r--r--src/d/s/d_s_logo.cpp1
-rw-r--r--src/d/s/d_s_play.cpp41
-rw-r--r--src/d/s/d_s_room.cpp2
35 files changed, 3254 insertions, 1737 deletions
diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp
index 61a4c41c76..7be119fe41 100644
--- a/src/d/a/d_a_alink.cpp
+++ b/src/d/a/d_a_alink.cpp
@@ -18079,32 +18079,32 @@ int daAlink_c::checkItemSetButton(int i_itemNo) {
/* 800C0284-800C02C8 0BABC4 0044+00 1/1 0/0 0/0 .text checkField__9daAlink_cFv */
bool daAlink_c::checkField() {
- return dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == 0;
+ return dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == ST_FIELD;
}
/* 800C02C8-800C0310 0BAC08 0048+00 6/6 0/0 0/0 .text checkBossRoom__9daAlink_cFv */
bool daAlink_c::checkBossRoom() {
- return dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == 3;
+ return dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == ST_BOSS_ROOM;
}
/* 800C0310-800C0358 0BAC50 0048+00 4/4 0/0 0/0 .text checkDungeon__9daAlink_cFv */
bool daAlink_c::checkDungeon() {
- return dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == 1;
+ return dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == ST_DUNGEON;
}
/* 800C0358-800C03A0 0BAC98 0048+00 3/3 0/0 0/0 .text checkCastleTown__9daAlink_cFv */
bool daAlink_c::checkCastleTown() {
- return dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == 4;
+ return dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == ST_CASTLE_TOWN;
}
/* 800C03A0-800C03E8 0BACE0 0048+00 6/6 0/0 1/1 .text checkCloudSea__9daAlink_cFv */
bool daAlink_c::checkCloudSea() {
- return dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == 5;
+ return dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == ST_CLOUD_SEA;
}
/* 800C03E8-800C044C 0BAD28 0064+00 5/5 0/0 0/0 .text checkRoomOnly__9daAlink_cFv */
bool daAlink_c::checkRoomOnly() {
- return dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == 2 || checkLv7DungeonShop();
+ return dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == ST_ROOM || checkLv7DungeonShop();
}
/* 800C044C-800C04B4 0BAD8C 0068+00 3/3 0/0 0/0 .text checkLv2DungeonRoomSpecial__9daAlink_cFv */
@@ -19697,9 +19697,9 @@ asm void daAlink_c::setWaterDropColor(J3DGXColorS10 const* param_0) {
/* 800CC7DC-800CC7FC 0C711C 0020+00 2/2 0/0 0/0 .text initTevCustomColor__9daAlink_cFv */
void daAlink_c::initTevCustomColor() {
mTevStr.field_0x367 = 0;
- mTevStr.field_0x358 = 0;
- mTevStr.field_0x35a = 0;
- mTevStr.field_0x35c = 0;
+ mTevStr.mFogColor.r = 0;
+ mTevStr.mFogColor.g = 0;
+ mTevStr.mFogColor.b = 0;
mTevStr.field_0x360 = 0;
mTevStr.field_0x362 = 0;
}
@@ -20034,7 +20034,14 @@ daAlink_c::firePointEff_c::firePointEff_c() {
}
/* 800CFC7C-800CFCB8 0CA5BC 003C+00 0/0 2/2 0/0 .text __dt__15LIGHT_INFLUENCEFv */
-LIGHT_INFLUENCE::~LIGHT_INFLUENCE() {}
+#pragma push
+#pragma optimization_level 0
+#pragma optimizewithasm off
+extern "C" asm void __dt__15LIGHT_INFLUENCEFv() {
+ nofralloc
+#include "asm/d/a/d_a_alink/__dt__15LIGHT_INFLUENCEFv.s"
+}
+#pragma pop
/* 800CFCB8-800CFCF4 0CA5F8 003C+00 2/2 0/0 0/0 .text __dt__18daAlink_footData_cFv */
daAlink_footData_c::~daAlink_footData_c() {}
diff --git a/src/d/a/d_a_no_chg_room.cpp b/src/d/a/d_a_no_chg_room.cpp
index b412574cbd..e90e464386 100644
--- a/src/d/a/d_a_no_chg_room.cpp
+++ b/src/d/a/d_a_no_chg_room.cpp
@@ -83,7 +83,7 @@ extern "C" u8 mGndCheck__11fopAcM_gc_c[84];
extern "C" u8 mStatus__20dStage_roomControl_c[65792];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 data_804505F0[8];
-extern "C" extern u8 data_80450D68[4];
+extern "C" extern u8 mNoChangeRoom__20dStage_roomControl_c[4];
//
// Declarations:
diff --git a/src/d/a/d_a_npc.cpp b/src/d/a/d_a_npc.cpp
index 5998b2abf7..844c2b15d4 100644
--- a/src/d/a/d_a_npc.cpp
+++ b/src/d/a/d_a_npc.cpp
@@ -1775,22 +1775,22 @@ int daNpcT_c::draw(int param_0, int param_1, f32 param_2, GXColorS10* color, f32
return 1;
}
- mTevStr.field_0x358 = 0;
- mTevStr.field_0x35a = 0;
- mTevStr.field_0x35c = 0;
- mTevStr.field_0x35e = 0;
+ mTevStr.mFogColor.r = 0;
+ mTevStr.mFogColor.g = 0;
+ mTevStr.mFogColor.b = 0;
+ mTevStr.mFogColor.a = 0;
if (color != NULL) {
- mTevStr.field_0x358 = color->r;
- mTevStr.field_0x35a = color->g;
- mTevStr.field_0x35c = color->b;
- mTevStr.field_0x35e = color->a;
+ mTevStr.mFogColor.r = color->r;
+ mTevStr.mFogColor.g = color->g;
+ mTevStr.mFogColor.b = color->b;
+ mTevStr.mFogColor.a = color->a;
}
if (field_0xdb8 != 0 && mTimer != 0) {
f32 r = (f32)field_0xdb8 / (f32)mTimer;
if (!cM3d_IsZero(r)) {
- mTevStr.field_0x358 = r * 20.0f;
+ mTevStr.mFogColor.r = r * 20.0f;
}
} else if (param_0 != 0) {
mTevStr.field_0x35a = 20;
@@ -1874,8 +1874,8 @@ asm int daNpcT_c::draw(int param_0, int param_1, f32 param_2, _GXColorS10* param
/* 80148C70-80148CCC 1435B0 005C+00 1/1 0/0 58/58 .text setEnvTevColor__8daNpcT_cFv */
void daNpcT_c::setEnvTevColor() {
- mTevStr.field_0x381 = dComIfG_Bgsp().GetPolyColor(field_0x930);
- mTevStr.field_0x380 = dComIfG_Bgsp().GetRoomId(field_0x930);
+ mTevStr.mEnvrIdxOverride = dComIfG_Bgsp().GetPolyColor(field_0x930);
+ mTevStr.mRoomNo = dComIfG_Bgsp().GetRoomId(field_0x930);
}
/* 80148CCC-80148D10 14360C 0044+00 1/1 0/0 58/58 .text setRoomNo__8daNpcT_cFv */
diff --git a/src/d/bg/d_bg_s.cpp b/src/d/bg/d_bg_s.cpp
index a4b514c5aa..58aed46dea 100644
--- a/src/d/bg/d_bg_s.cpp
+++ b/src/d/bg/d_bg_s.cpp
@@ -543,23 +543,23 @@ s32 dBgS::GetWallCode(cBgS_PolyInfo const& poly) {
}
/* 80074E50-80074EA0 06F790 0050+00 0/0 29/29 28/28 .text GetPolyAtt0__4dBgSFRC13cBgS_PolyInfo */
-BOOL dBgS::GetPolyAtt0(cBgS_PolyInfo const& poly) {
+int dBgS::GetPolyAtt0(cBgS_PolyInfo const& poly) {
int bg_index = poly.GetBgIndex();
if (m_chk_element[bg_index].ChkUsed()) {
return m_chk_element[bg_index].m_bgw_base_ptr->GetPolyAtt0(poly);
}
- return false;
+ return 0;
}
/* 80074EA0-80074EF0 06F7E0 0050+00 0/0 13/13 0/0 .text GetPolyAtt1__4dBgSFRC13cBgS_PolyInfo */
-bool dBgS::GetPolyAtt1(cBgS_PolyInfo const& poly) {
+int dBgS::GetPolyAtt1(cBgS_PolyInfo const& poly) {
int bg_index = poly.GetBgIndex();
if (m_chk_element[bg_index].ChkUsed()) {
return m_chk_element[bg_index].m_bgw_base_ptr->GetPolyAtt1(poly);
}
- return false;
+ return 0;
}
/* 80074EF0-80074F40 06F830 0050+00 0/0 7/7 8/8 .text GetGroundCode__4dBgSFRC13cBgS_PolyInfo */
diff --git a/src/d/bg/d_bg_w.cpp b/src/d/bg/d_bg_w.cpp
index 2a8c6dd59b..5dbf684e31 100644
--- a/src/d/bg/d_bg_w.cpp
+++ b/src/d/bg/d_bg_w.cpp
@@ -1167,7 +1167,7 @@ asm s32 dBgW::GetWallCode(cBgS_PolyInfo const& param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm BOOL dBgW::GetPolyAtt0(cBgS_PolyInfo const& param_0) {
+asm int dBgW::GetPolyAtt0(cBgS_PolyInfo const& param_0) {
nofralloc
#include "asm/d/bg/d_bg_w/GetPolyAtt0__4dBgWFRC13cBgS_PolyInfo.s"
}
@@ -1177,7 +1177,7 @@ asm BOOL dBgW::GetPolyAtt0(cBgS_PolyInfo const& param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm bool dBgW::GetPolyAtt1(cBgS_PolyInfo const& param_0) {
+asm int dBgW::GetPolyAtt1(cBgS_PolyInfo const& param_0) {
nofralloc
#include "asm/d/bg/d_bg_w/GetPolyAtt1__4dBgWFRC13cBgS_PolyInfo.s"
}
diff --git a/src/d/bg/d_bg_w_kcol.cpp b/src/d/bg/d_bg_w_kcol.cpp
index 73fad0f717..86f8b94d12 100644
--- a/src/d/bg/d_bg_w_kcol.cpp
+++ b/src/d/bg/d_bg_w_kcol.cpp
@@ -767,7 +767,7 @@ asm s32 dBgWKCol::GetWallCode(cBgS_PolyInfo const& param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm BOOL dBgWKCol::GetPolyAtt0(cBgS_PolyInfo const& param_0) {
+asm int dBgWKCol::GetPolyAtt0(cBgS_PolyInfo const& param_0) {
nofralloc
#include "asm/d/bg/d_bg_w_kcol/GetPolyAtt0__8dBgWKColFRC13cBgS_PolyInfo.s"
}
@@ -777,7 +777,7 @@ asm BOOL dBgWKCol::GetPolyAtt0(cBgS_PolyInfo const& param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dBgWKCol::GetPolyAtt1(cBgS_PolyInfo const& param_0) {
+asm int dBgWKCol::GetPolyAtt1(cBgS_PolyInfo const& param_0) {
nofralloc
#include "asm/d/bg/d_bg_w_kcol/GetPolyAtt1__8dBgWKColFRC13cBgS_PolyInfo.s"
}
diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp
index 1c27da54d8..2a9a15fae5 100644
--- a/src/d/d_camera.cpp
+++ b/src/d/d_camera.cpp
@@ -816,7 +816,7 @@ extern "C" f32 Zero__4cXyz[3];
extern "C" u8 BaseY__4cXyz[12];
extern "C" extern u8 g_dComIfGoat_gameInfo[4 + 4 /* padding */];
extern "C" extern u8 data_80450B44[4];
-extern "C" extern u8 struct_80450BE4[4];
+extern "C" extern u8 mBlureFlag__13mDoGph_gInf_c[4];
extern "C" u8 stopStatus__10fopAc_ac_c[4];
extern "C" u8 m_object__7dDemo_c[4];
extern "C" u8 m_midnaActor__9daPy_py_c[4];
diff --git a/src/d/d_demo.cpp b/src/d/d_demo.cpp
index c4b58509b7..11400f2804 100644
--- a/src/d/d_demo.cpp
+++ b/src/d/d_demo.cpp
@@ -532,7 +532,7 @@ extern "C" extern u8 g_env_light[4880];
extern "C" extern u32 g_blackColor;
extern "C" extern u32 __float_max;
extern "C" extern u8 data_80450B74[4];
-extern "C" extern u8 struct_80450D64[4];
+extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
extern "C" u8 mEmitterMng__13dPa_control_c[4];
//
diff --git a/src/d/d_envse.cpp b/src/d/d_envse.cpp
index e304c32e04..f7c664ca82 100644
--- a/src/d/d_envse.cpp
+++ b/src/d/d_envse.cpp
@@ -109,7 +109,7 @@ extern "C" extern void* __vt__8cM3dGLin[3];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_mEnvSeMgr[780];
extern "C" extern u32 __float_max;
-extern "C" extern u8 struct_80450D64[4];
+extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
//
// Declarations:
diff --git a/src/d/d_error_msg.cpp b/src/d/d_error_msg.cpp
index 92b3bb011a..24a1b87f31 100644
--- a/src/d/d_error_msg.cpp
+++ b/src/d/d_error_msg.cpp
@@ -170,7 +170,7 @@ extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 j3dSys[284];
extern "C" extern u8 g_clearColor[4];
extern "C" extern u8 data_80450688[8];
-extern "C" extern u8 struct_80450BB8[4];
+extern "C" extern u8 mInitFlag__17mDoAud_zelAudio_c[4];
extern "C" u8 mFrameBufferTimg__13mDoGph_gInf_c[4];
extern "C" u8 mFrameBufferTex__13mDoGph_gInf_c[4];
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
diff --git a/src/d/d_ev_camera.cpp b/src/d/d_ev_camera.cpp
index 5bf51bd45d..1e008668e9 100644
--- a/src/d/d_ev_camera.cpp
+++ b/src/d/d_ev_camera.cpp
@@ -402,7 +402,7 @@ extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" f32 Zero__4cXyz[3];
extern "C" extern u32 __float_nan;
-extern "C" extern u8 struct_80450D64[4];
+extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
extern "C" u8 m_object__7dDemo_c[4];
extern "C" extern u8 struct_80450F88[8];
extern "C" u8 m_midnaActor__9daPy_py_c[4];
diff --git a/src/d/d_k_wmark.cpp b/src/d/d_k_wmark.cpp
index 86e0369bbc..b36b703b5b 100644
--- a/src/d/d_k_wmark.cpp
+++ b/src/d/d_k_wmark.cpp
@@ -150,7 +150,7 @@ extern "C" extern u8 j3dSys[284];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" extern u32 __float_nan;
extern "C" f32 mGroundY__11fopAcM_gc_c;
-extern "C" extern u8 struct_80450D64[4];
+extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
//
// Declarations:
diff --git a/src/d/d_k_wpillar.cpp b/src/d/d_k_wpillar.cpp
index cfbebadbe5..ae5c8f4e40 100644
--- a/src/d/d_k_wpillar.cpp
+++ b/src/d/d_k_wpillar.cpp
@@ -169,7 +169,7 @@ extern "C" u8 mGndCheck__11fopAcM_gc_c[84];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_env_light[4880];
extern "C" extern u8 j3dSys[284];
-extern "C" extern u8 struct_80450D64[4];
+extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
//
// Declarations:
diff --git a/src/d/d_ky_thunder.cpp b/src/d/d_ky_thunder.cpp
index ce833cde6e..2bfaf8446e 100644
--- a/src/d/d_ky_thunder.cpp
+++ b/src/d/d_ky_thunder.cpp
@@ -128,7 +128,7 @@ extern "C" extern u8 g_mEnvSeMgr[780];
extern "C" extern u8 g_Counter[12 + 4 /* padding */];
extern "C" extern u8 j3dSys[284];
extern "C" u8 sincosTable___5JMath[65536];
-extern "C" extern u8 struct_80450D64[4];
+extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
extern "C" extern u8 struct_80451070[8];
//
diff --git a/src/d/d_model.cpp b/src/d/d_model.cpp
index ce00b54a32..23abd6e669 100644
--- a/src/d/d_model.cpp
+++ b/src/d/d_model.cpp
@@ -61,8 +61,8 @@ void dMdl_c::draw() {
mpModelData->getMaterialNodePointer(mMaterialId)->loadSharedDL();
shape->loadPreDrawSetting();
- GXColor amb_color = {mpTevstr->field_0x348.r, mpTevstr->field_0x348.g, mpTevstr->field_0x348.b,
- mpTevstr->field_0x348.a};
+ GXColor amb_color = {mpTevstr->mColorC0.r, mpTevstr->mColorC0.g, mpTevstr->mColorC0.b,
+ mpTevstr->mColorC0.a};
GXSetChanAmbColor(GX_COLOR0A0, amb_color);
GXSetChanMatColor(GX_COLOR0A0, g_whiteColor);
dKy_setLight_nowroom_actor(mpTevstr);
diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp
index 8f7fbaf781..ed36960c30 100644
--- a/src/d/d_stage.cpp
+++ b/src/d/d_stage.cpp
@@ -442,7 +442,7 @@ static u8 dStage_isBossStage(dStage_dt_c* stageDt) {
return false;
}
- return dStage_stagInfo_GetSTType(pstag) == 3;
+ return dStage_stagInfo_GetSTType(pstag) == ST_BOSS_ROOM;
}
/* 80023F50-80023F84 01E890 0034+00 1/1 0/0 0/1 .text dStage_KeepDoorInfoInit__FP11dStage_dt_c */
@@ -503,40 +503,12 @@ void dStage_startStage_c::set(const char* i_Name, s8 i_RoomNo, s16 i_Point, s8 i
/* 803F6094-80406194 022DB4 10100+00 12/12 31/31 16/16 .bss mStatus__20dStage_roomControl_c */
dStage_roomStatus_c dStage_roomControl_c::mStatus[0x40];
-/* 80450D58-80450D60 000258 0008+00 1/1 0/0 0/0 .sbss tmp_name$4456 */
-static char tmp_name[8];
-
-/* 80450D60-80450D64 000260 0004+00 1/1 3/3 1/1 .sbss mProcID__20dStage_roomControl_c */
-u32 dStage_roomControl_c::mProcID;
-
-/* 80450D64-80450D68 -00001 0004+00 6/6 94/94 101/101 .sbss None */
-/* 80450D64 0001+00 data_80450D64 None */
-s8 struct_80450D64;
-
-/* 80450D65 0001+00 data_80450D65 None */
-s8 gLastStayNo;
-
-/* 80450D66 0001+00 data_80450D66 None */
-s8 gNextStayNo;
-
-/* 80450D67 0001+00 data_80450D67 None */
-s8 gTimePass;
-
-/* 80450D68-80450D6C 000268 0004+00 2/2 2/2 1/1 .sbss None */
-u8 data_80450D68;
-
-/* 80450D6C-80450D70 00026C 0004+00 1/1 2/2 0/0 .sbss mArcBankName__20dStage_roomControl_c */
-char* dStage_roomControl_c::mArcBankName;
-
-/* 80450D70-80450D74 000270 0004+00 1/1 1/1 0/0 .sbss mArcBankData__20dStage_roomControl_c */
-char* dStage_roomControl_c::mArcBankData;
-
/* 800241E8-80024338 01EB28 0150+00 1/1 0/0 0/4 .text init__20dStage_roomControl_cFv */
void dStage_roomControl_c::init() {
- struct_80450D64 = -1;
- gLastStayNo = -1;
- gNextStayNo = -1;
- data_80450D68 = 0;
+ mStayNo = -1;
+ mOldStayNo = -1;
+ mNextStayNo = -1;
+ mNoChangeRoom = 0;
data_804505F0 = -1;
if (dComIfGp_getStartStagePoint() >= 0 || dComIfGp_getStartStagePoint() == -4) {
@@ -1610,20 +1582,20 @@ JKRExpHeap* dStage_roomControl_c::getMemoryBlock(int i_roomNo) {
/* 800243E8-80024424 01ED28 003C+00 2/2 0/0 0/0 .text setStayNo__20dStage_roomControl_cFi
*/
void dStage_roomControl_c::setStayNo(int stayNo) {
- gLastStayNo = struct_80450D64;
- struct_80450D64 = stayNo;
- gNextStayNo = struct_80450D64;
+ mOldStayNo = mStayNo;
+ mStayNo = stayNo;
+ mNextStayNo = mStayNo;
- if (struct_80450D64 < 0) {
+ if (mStayNo < 0) {
return;
}
- onStatusDraw(struct_80450D64);
+ onStatusDraw(mStayNo);
}
/* 80024424-8002442C 01ED64 0008+00 0/0 0/0 1/1 .text setNextStayNo__20dStage_roomControl_cFi */
void dStage_roomControl_c::setNextStayNo(int nextStayNo) {
- gNextStayNo = nextStayNo;
+ mNextStayNo = nextStayNo;
}
static int stayRoomCheck(int param_0, u8* param_1, int param_2) {
@@ -1679,8 +1651,8 @@ void dStage_roomControl_c::zoneCountCheck(int stayNo) const {
dComIfGs_clearRoomSwitch(status->mZoneNo);
dComIfGs_clearRoomItem(status->mZoneNo);
- if (dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) != 0 &&
- stayNo != gLastStayNo) {
+ if (dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) != ST_FIELD &&
+ stayNo != mOldStayNo) {
if (--status->mZoneCount == 0) {
dComIfGs_removeZone(status->mZoneNo);
status->mZoneNo = -1;
@@ -1928,7 +1900,7 @@ static int dStage_roomInit(int stayNo) {
/* 80024DB0-80024DB8 01F6F0 0008+00 2/2 0/0 0/0 .text SetTimePass__20dStage_roomControl_cFi */
void dStage_roomControl_c::SetTimePass(int isPassing) {
- gTimePass = isPassing;
+ m_time_pass = isPassing;
}
roomRead_class* dStage_stageDt_c::getRoom() const {
@@ -1948,6 +1920,8 @@ dStage_objectNameInf* dStage_searchName(char const* objName) {
}
static const char* dStage_getName(s16 procName, s8 subtype) {
+ static char tmp_name[8];
+
dStage_objectNameInf* obj = &l_objectName[0];
char* tmp = NULL;
@@ -1974,6 +1948,31 @@ const char* dStage_getName2(s16 procName, s8 subtype) {
return dStage_getName(procName, subtype);
}
+/* 80450D60-80450D64 000260 0004+00 1/1 3/3 1/1 .sbss mProcID__20dStage_roomControl_c */
+u32 dStage_roomControl_c::mProcID;
+
+/* 80450D64-80450D68 -00001 0004+00 6/6 94/94 101/101 .sbss None */
+/* 80450D64 0001+00 data_80450D64 None */
+s8 dStage_roomControl_c::mStayNo;
+
+/* 80450D65 0001+00 data_80450D65 None */
+s8 dStage_roomControl_c::mOldStayNo;
+
+/* 80450D66 0001+00 data_80450D66 None */
+s8 dStage_roomControl_c::mNextStayNo;
+
+/* 80450D67 0001+00 data_80450D67 None */
+s8 dStage_roomControl_c::m_time_pass;
+
+/* 80450D68-80450D6C 000268 0004+00 2/2 2/2 1/1 .sbss None */
+u8 dStage_roomControl_c::mNoChangeRoom;
+
+/* 80450D6C-80450D70 00026C 0004+00 1/1 2/2 0/0 .sbss mArcBankName__20dStage_roomControl_c */
+char* dStage_roomControl_c::mArcBankName;
+
+/* 80450D70-80450D74 000270 0004+00 1/1 1/1 0/0 .sbss mArcBankData__20dStage_roomControl_c */
+char* dStage_roomControl_c::mArcBankData;
+
/* 80024EFC-80024F98 01F83C 009C+00 7/7 0/0 0/0 .text
* dStage_actorCreate__FP22stage_actor_data_classP16fopAcM_prm_class */
static void dStage_actorCreate(stage_actor_data_class* param_0, fopAcM_prm_class* param_1) {
@@ -2926,7 +2925,7 @@ void dStage_Delete() {
strcmp(dComIfGp_getNextStageName(), dComIfGp_getStartStageName())) {
dStage_roomControl_c::destroyMemoryBlock();
- if (dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == 1) {
+ if (dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == ST_DUNGEON) {
dRes_info_c* info = dComIfG_getStageResInfo("Stg_00");
*info->getArchiveName() = 'X';
dComIfGp_setOldMulti();
diff --git a/src/d/d_tresure.cpp b/src/d/d_tresure.cpp
index 3781dafe96..6726996672 100644
--- a/src/d/d_tresure.cpp
+++ b/src/d/d_tresure.cpp
@@ -61,10 +61,6 @@ extern "C" void _restgpr_28();
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern bool data_80450680;
-//
-// Declarations:
-//
-
/* ############################################################################################## */
/* 80450F98-80450F9C 000498 0004+00 2/2 0/0 0/0 .sbss mTypeGroupData__7dTres_c */
dTres_c::typeGroupData_c* dTres_c::mTypeGroupData;
@@ -81,7 +77,7 @@ asm int dTres_c::createWork() {
/* 8009BC18-8009BC60 096558 0048+00 0/0 1/1 0/0 .text create__7dTres_cFv */
void dTres_c::create() {
- if (dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) != 3) {
+ if (dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) != ST_BOSS_ROOM) {
reset();
}
}
@@ -116,7 +112,7 @@ void dTres_c::reset() {
*/
#ifdef NONMATCHING
void dTres_c::addData(dTres_c::list_class* p_list, s8 roomNo) {
- if (dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) != 3) {
+ if (dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) != ST_BOSS_ROOM) {
reset();
typeGroupData_c* listData = p_list->field_0x4;
diff --git a/src/d/kankyo/d_kankyo.cpp b/src/d/kankyo/d_kankyo.cpp
index 087fc72ff1..4d8c3ffd6d 100644
--- a/src/d/kankyo/d_kankyo.cpp
+++ b/src/d/kankyo/d_kankyo.cpp
@@ -11,6 +11,8 @@
#include "dol2asm.h"
#include "dolphin/types.h"
#include "m_Do/m_Do_audio.h"
+#include "SSystem/SComponent/c_math.h"
+#include "SSystem/SComponent/c_counter.h"
//
// Types:
@@ -305,7 +307,6 @@ extern "C" void __as__12J3DLightInfoFRC12J3DLightInfo();
extern "C" void setEffectMtx__13J3DTexMtxInfoFPA4_f();
extern "C" void simpleCalcMaterial__12J3DModelDataFUsPA4_f();
extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void GXInitLightAttn();
extern "C" void __register_global_object();
extern "C" void __destroy_arr();
extern "C" void __construct_array();
@@ -342,7 +343,6 @@ extern "C" extern void* g_fopKy_Method[5 + 1 /* padding */];
extern "C" u8 m_bloom__13mDoGph_gInf_c[20];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" u8 mStatus__20dStage_roomControl_c[65792];
-extern "C" extern u8 g_Counter[12 + 4 /* padding */];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
@@ -545,7 +545,7 @@ SECTION_DATA static u8 lightStatusBase[232] = {
/* 803BBEAC-803BBEBC 018FCC 0010+00 4/4 0/0 0/0 .data lightMaskData */
SECTION_DATA static u16 lightMaskData[8] = {
- 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080,
+ GX_LIGHT0, GX_LIGHT1, GX_LIGHT2, GX_LIGHT3, GX_LIGHT4, GX_LIGHT5, GX_LIGHT6, GX_LIGHT7,
};
/* 8019CB0C-8019CCDC 19744C 01D0+00 3/2 0/0 0/0 .text dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10 */
@@ -1049,7 +1049,7 @@ SECTION_SDATA2 static f32 lit_5077 = 99999.8984375f;
/* 8019E694-8019E708 198FD4 0074+00 2/2 0/0 0/0 .text plight_init__Fv */
static void plight_init() {
- g_env_light.field_0x38[0].mPow = lit_5077;
+ g_env_light.mLightInfluence[0].mPow = lit_5077;
for (int i = 0; i < 100; i++) {
g_env_light.mPointLight[i] = NULL;
@@ -1060,8 +1060,8 @@ static void plight_init() {
g_env_light.field_0x72c[i] = NULL;
}
- g_env_light.field_0x12a4 = -1;
- g_env_light.field_0x12a8 = -1;
+ g_env_light.mPlayerPLightIdx = -1;
+ g_env_light.mPlayerEfLightIdx = -1;
}
/* 8019E708-8019E734 199048 002C+00 1/1 0/0 0/0 .text darkmist_init__Fv */
@@ -1206,6 +1206,186 @@ SECTION_SDATA2 static f32 lit_5348 = 360.0f;
SECTION_SDATA2 static f32 lit_5349 = 0.012000000104308128f;
/* 8019EC98-8019F264 1995D8 05CC+00 1/1 0/0 0/0 .text envcolor_init__Fv */
+#ifdef NONMATCHING
+static void envcolor_init() {
+ stage_palette_info_class* palette = dComIfGp_getStagePaletteInfo();
+ stage_pselect_info_class* pselect = dComIfGp_getStagePselectInfo();
+ stage_envr_info_class* envr = dComIfGp_getStageEnvrInfo();
+ stage_vrbox_info_class* vrbox = dComIfGp_getStageVrboxcolInfo();
+
+ dKy_actor_addcol_set(0, 0, 0, 0.0f);
+ dKy_fog_startendz_set(0.0f, 0.0f, 0.0f);
+ dKy_vrbox_addcol_set(0, 0, 0, 0.0f);
+
+ g_env_light.field_0x1280 = 0;
+ g_env_light.mInitAnmTimer = 1;
+ g_env_light.mSchBit = 0;
+ g_env_light.mSchbitTimer = 0;
+
+ g_env_light.mVrboxInvisible = false;
+ g_env_light.mContrastFlag = 0;
+ g_env_light.mFogAdjEnable = true;
+ g_env_light.mFogAdjTableType = 0;
+ g_env_light.mFogAdjCenter = 0x140;
+ dKyd_xfog_table_set(0);
+
+ g_env_light.mColAllcolRatio = 1.0f;
+ g_env_light.mColActColRatio = 1.0f;
+ g_env_light.mColBgColRatio = 1.0f;
+ g_env_light.mColFogColRatio = 1.0f;
+ g_env_light.mColVrboxSoraColRatio = 1.0f;
+ g_env_light.mColVrboxKumocolRatio = 1.0f;
+ g_env_light.field_0x1210 = 1.0f;
+
+ g_env_light.mAllcolRatio = 1.0f;
+ g_env_light.mActcolRatio = 1.0f;
+ g_env_light.mBgcolRatio = 1.0f;
+ g_env_light.mFogcolRatio = 1.0f;
+ g_env_light.mVrboxSoracolRatio = 1.0f;
+ g_env_light.mVrboxKumocolRatio = 1.0f;
+ g_env_light.field_0x122c = 1.0f;
+
+ g_env_light.mItemGetCol_chg = 0;
+ g_env_light.field_0x1240 = 0.0f;
+ g_env_light.field_0x1230 = 0.0f;
+ g_env_light.field_0x1234 = 0.0f;
+
+ g_env_light.mThunderEff.mStateTimer = 0;
+ g_env_light.field_0x1238 = 0.0f;
+ g_env_light.field_0x123c = 0.0f;
+ g_env_light.field_0x12d6 = 0;
+ g_env_light.mShadowMode = 0;
+ g_env_light.mCameraInWater = 0;
+
+ g_env_light.field_0x1258 = 0.0f;
+ g_env_light.mActorLightEffect = 100;
+ g_env_light.mPaletteTerrainLightEffect = 1.0f;
+ g_env_light.field_0x1064 = 0.0f;
+ g_env_light.field_0x1068 = -1.0f;
+ g_env_light.field_0x106c = -1.0f;
+ g_env_light.mDemoAttentionPoint = 0.0f;
+
+ if (!strcmp(dComIfGp_getStartStageName(), "R_SP127")) {
+ g_env_light.mDemoAttentionPoint = 0.11f;
+ }
+
+ g_env_light.field_0x1308 = 0;
+ g_env_light.field_0x130b = 0;
+ g_env_light.field_0x1309 = 1;
+ dKy_light_size_get(dComIfGp_getStartStageName());
+ g_env_light.mGrassLightEffectRate = 1.0f;
+ g_env_light.field_0x12fc = -1;
+ g_env_light.field_0x1278 = 0.0f;
+ g_env_light.field_0x1264 = -255.0f;
+ g_env_light.field_0x1268 = 999999.0f;
+ g_env_light.field_0x126c = 999999.0f;
+ g_env_light.field_0x127c = 200.0f;
+
+ if (dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == ST_BOSS_ROOM) {
+ g_env_light.mpSchedule = dKyd_schejule_boss_getp();
+ } else {
+ g_env_light.mpSchedule = dKyd_schejule_getp();
+ }
+
+ g_env_light.mNowRoom = dComIfGp_roomControl_getStayNo();
+ g_env_light.mEnvrIdxCurr = dComIfGp_roomControl_getStayNo();
+ g_env_light.mColPatBlend = 1.0f;
+ g_env_light.field_0x12b0 = 0;
+ g_env_light.mColpatWeather = 0;
+ g_env_light.field_0xecc = 0.0f;
+
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") || !strcmp(dComIfGp_getStartStageName(), "R_SP127")) {
+ if (g_env_light.field_0x12cc >= 7) {
+ g_env_light.mColpatWeather = 2;
+ } else if (g_env_light.field_0x12cc != 0) {
+ g_env_light.mColpatWeather = 1;
+ }
+ } else if (!strcmp(dComIfGp_getStartStageName(), "D_MN07A")) {
+ if (g_env_light.field_0x12cc == 1) {
+ g_env_light.mColpatWeather = 1;
+ } else if (g_env_light.field_0x12cc == 2) {
+ g_env_light.mColpatWeather = 2;
+ }
+ } else {
+ g_env_light.field_0x12cc = 0;
+ }
+
+ g_env_light.mRainCountOrig = 0;
+ g_env_light.field_0x12a0 = 0;
+ g_env_light.mDiceWeatherMode = 0;
+ g_env_light.mDiceWeatherChangeTime = dComIfGs_getTime() + (cM_rndF(g_Counter.mCounter0 & 0x1F) * 15.0f);
+ if (g_env_light.mDiceWeatherChangeTime >= 360.0f) {
+ g_env_light.mDiceWeatherChangeTime -= 360.0f;
+ }
+
+ g_env_light.mDiceWeatherState = 0;
+ g_env_light.mDiceWeatherCurrPattern = 0;
+ g_env_light.mDiceWeatherCounter = 0;
+ g_env_light.mDiceWeatherTime = 0.0f;
+
+ g_env_light.mColPatPrev = g_env_light.mColpatWeather;
+ g_env_light.mColPatCurr = g_env_light.mColpatWeather;
+ g_env_light.mColpatPrevGather = 0xFF;
+ g_env_light.mColpatCurrGather = 0xFF;
+ g_env_light.mColPatBlendGather = -1.0f;
+ g_env_light.mColPatMode = 0;
+ g_env_light.mColPatModeGather = 0;
+
+ if (envr != NULL) {
+ g_env_light.mpDmEnvr = envr;
+ } else {
+ g_env_light.mpDmEnvr = (stage_envr_info_class*)dKyd_dmenvr_getp();
+ }
+
+ if (palette != NULL) {
+ g_env_light.mpDmPalet = palette;
+ } else {
+ g_env_light.mpDmPalet = (stage_palette_info_class*)dKyd_dmpalet_getp();
+ }
+
+ if (pselect != NULL) {
+ g_env_light.mpDmPselect = pselect;
+ } else {
+ g_env_light.mpDmPselect = (stage_pselect_info_class*)dKyd_dmpselect_getp();
+ }
+
+ if (vrbox != NULL) {
+ g_env_light.mpDmVrbox = vrbox;
+ } else {
+ g_env_light.mpDmVrbox = (stage_vrbox_info_class*)dKyd_dmvrbox_getp();
+ }
+
+ plight_init();
+ plight_set();
+ darkmist_init();
+ bgparts_activelight_init();
+
+ g_env_light.field_0x11c8 = 1.0f;
+ g_env_light.field_0x11cc = 1.0f;
+ g_env_light.field_0x11d0 = 1.0f;
+ g_env_light.field_0xf2c = 0;
+ g_env_light.field_0xf30 = NULL;
+ g_env_light.field_0xf34 = 0.0f;
+ g_env_light.field_0xf38 = NULL;
+
+ undwater_init();
+ dComIfGs_PolyDamageOff_Set(0);
+ g_env_light.field_0x98c = dComIfGp_roomControl_getStayNo();
+ g_env_light.field_0x12fa = 0;
+ g_env_light.field_0x12fb = 0;
+ g_env_light.field_0x1300 = -1;
+ g_env_light.field_0x1302 = -1;
+ g_env_light.mWaterSurfaceShineRate = 1.0f;
+
+ int timeH = dStage_stagInfo_GetTimeH(i_dComIfGp_getStage()->getStagInfo());
+ if (timeH >= 0) {
+ dComIfGs_setTime(timeH * 15.0f);
+ }
+ g_env_light.mTimeSpeed = 0.012f;
+
+ memset(&g_env_light.mMoyaSE, 0, 0x10);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1214,12 +1394,37 @@ static asm void envcolor_init() {
#include "asm/d/kankyo/d_kankyo/envcolor_init__Fv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 80453CB8-80453CBC 0022B8 0004+00 3/3 0/0 0/0 .sdata2 @5365 */
SECTION_SDATA2 static f32 lit_5365 = 120.0f;
/* 8019F264-8019F2E8 199BA4 0084+00 1/1 1/1 0/0 .text dKy_clear_game_init__Fv */
+// matches with literals
+#ifdef NONMATCHING
+void dKy_clear_game_init() {
+ dKy_actor_addcol_set(0, 0, 0, 0.0f);
+
+ g_env_light.mSunPos.x = 1.0f;
+ g_env_light.mSunPos.y = 0.0f;
+ g_env_light.mSunPos.z = 0.0f;
+
+ g_env_light.mMoonPos.x = -1.0f;
+ g_env_light.mMoonPos.y = 0.0f;
+ g_env_light.mMoonPos.z = 0.0f;
+
+ g_env_light.mNexttime = -1.0f;
+ g_env_light.mTime = -1.0f;
+ g_env_light.mDarkDaytime = 120.0f;
+
+ g_env_light.mDarktimeWeek = 0;
+ g_env_light.field_0x12fe = 0;
+ g_env_light.field_0x130a = 0;
+ g_env_light.field_0x12cc = 0;
+ g_env_light.field_0x130c = 0;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1228,6 +1433,7 @@ asm void dKy_clear_game_init() {
#include "asm/d/kankyo/d_kankyo/dKy_clear_game_init__Fv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 803BBFD0-803BBFF0 -00001 0020+00 1/1 0/0 0/0 .data @5842 */
@@ -1508,7 +1714,7 @@ WIND_INF_ENTITY::WIND_INF_ENTITY() {
}
/* 8019F4F8-8019F4FC 199E38 0004+00 1/1 0/0 0/0 .text __ct__15LIGHT_INFLUENCEFv */
-LIGHT_INFLUENCE::LIGHT_INFLUENCE() {
+extern "C" void __ct__15LIGHT_INFLUENCEFv() {
/* empty function */
}
@@ -1919,7 +2125,7 @@ asm void dScnKy_env_light_c::settingTevStruct_plightcol_plus(cXyz* param_0, dKy_
Z2EnvSeMgr g_mEnvSeMgr;
/* 8042E07C-8042E7BC 05AD9C 0740+00 5/4 0/0 0/0 .bss lightStatusData */
-static u8 lightStatusData[1856];
+static LightStatus lightStatusData[8];
/* 80453D4C-80453D50 00234C 0004+00 1/1 0/0 0/0 .sdata2 @7011 */
SECTION_SDATA2 static f32 lit_7011 = 30000.0f;
@@ -2214,14 +2420,70 @@ SECTION_DEAD static char const* const stringBase_80394E5E = "colordata_tbl.dat";
#pragma pop
/* 801A5C1C-801A5E54 1A055C 0238+00 1/0 0/0 0/0 .text dKy_Create__FPv */
+// matches with literals
+#ifdef NONMATCHING
+static int dKy_Create(void*) {
+ BOOL setNextTime = false;
+ stage_envr_info_class* envr = dComIfGp_getStageEnvrInfo();
+ if (envr != NULL && dComIfGp_getStartStageRoomNo() != -1) {
+ if (envr[dComIfGp_getStartStageRoomNo()].field_0x0[0x40] != 0) {
+ mDoGph_gInf_c::getBloom()->create();
+ }
+ }
+
+ envcolor_init();
+ g_env_light.field_0x12b0 = 0;
+ g_env_light.field_0x1254 = 1.0f;
+ g_env_light.mPLightNearPos.x = 0.0f;
+ g_env_light.mPLightNearPos.y = 0.0f;
+ g_env_light.mPLightNearPos.z = 0.0f;
+ g_env_light.field_0xf3c = 0;
+ g_env_light.field_0xf40 = 0.0f;
+ g_env_light.field_0xf3d = 0;
+
+ dKy_setLight_init();
+ dKy_Sound_init();
+ dKyw_wind_set();
+ dungeonlight_init();
+ dKy_setLight_nowroom(dComIfGp_roomControl_getStayNo());
+
+ g_env_light.mResPolEfftbl = (dKy_pol_efftbl_struct*)dComIfG_getStageRes("pol_efftbl.dat");
+ g_env_light.mResPolEffcol = (dKy_pol_effcol_struct*)dComIfG_getStageRes("pol_effcol.dat");
+ g_env_light.mResPolEfftbl2 = (dKy_pol_efftbl_struct*)dComIfG_getStageRes("pol_efftbl2.dat");
+ g_env_light.mResPolEffcol2 = (dKy_pol_effcol_struct*)dComIfG_getStageRes("pol_effcol2.dat");
+ g_env_light.mResPolSound = (dKy_pol_sound_struct*)dComIfG_getStageRes("pol_sound.dat");
+ g_env_light.mResPolArg = (dKy_pol_arg_struct*)dComIfG_getStageRes("pol_arg.dat");
+ g_env_light.mResColorDataTbl = (dKy_color_data_struct*)dComIfG_getStageRes("colordata_tbl.dat");
+
+ if (g_env_light.mNexttime != -1.0f) {
+ setNextTime = true;
+ dComIfGs_setTime(g_env_light.mNexttime);
+ }
+
+ if (dKy_darkworld_check()) {
+ if (g_env_light.mTime == -1.0f) {
+ g_env_light.mTime = dComIfGs_getTime();
+ }
+ } else if (g_env_light.mTime != -1.0f) {
+ if (!setNextTime) {
+ dComIfGs_setTime(g_env_light.mTime);
+ }
+ g_env_light.mTime = -1.0f;
+ }
+
+ g_env_light.mNexttime = -1.0f;
+ return 4;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-static asm void dKy_Create(void* param_0) {
+static asm int dKy_Create(void* param_0) {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_Create__FPv.s"
}
#pragma pop
+#endif
/* 801A5E54-801A60BC 1A0794 0268+00 1/1 1/1 0/0 .text dKy_setLight_init__Fv */
#pragma push
@@ -2234,14 +2496,9 @@ asm void dKy_setLight_init() {
#pragma pop
/* 801A60BC-801A60E0 1A09FC 0024+00 0/0 1/1 0/0 .text dKy_setLight__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_setLight() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_setLight__Fv.s"
+void dKy_setLight() {
+ g_env_light.mSunPos2 = g_env_light.mSunPos;
}
-#pragma pop
/* 801A60E0-801A61F4 1A0A20 0114+00 2/2 0/0 0/0 .text dKy_GlobalLight_set__Fv */
#pragma push
@@ -2553,14 +2810,11 @@ asm void dKy_vrbox_addcol_kasumi_set(s16 param_0, s16 param_1, s16 param_2, f32
#pragma pop
/* 801A8060-801A80D0 1A29A0 0070+00 1/1 0/0 0/0 .text dKy_vrbox_addcol_set__Fsssf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKy_vrbox_addcol_set(s16 param_0, s16 param_1, s16 param_2, f32 param_3) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_vrbox_addcol_set__Fsssf.s"
+static void dKy_vrbox_addcol_set(s16 param_0, s16 param_1, s16 param_2, f32 param_3) {
+ dKy_vrbox_addcol_sky0_set(param_0, param_1, param_2, param_3);
+ dKy_vrbox_addcol_kasumi_set(param_0, param_1, param_2, param_3);
+ dKy_addcol_fog_set(param_0, param_1, param_2, param_3);
}
-#pragma pop
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -2581,24 +2835,24 @@ asm void dKy_fog_startendz_set(f32 param_0, f32 param_1, f32 param_2) {
#pragma pop
/* 801A8168-801A8190 1A2AA8 0028+00 0/0 1/1 0/0 .text dKy_Itemgetcol_chg_on__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_Itemgetcol_chg_on() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_Itemgetcol_chg_on__Fv.s"
+void dKy_Itemgetcol_chg_on() {
+ if (g_env_light.mItemGetCol_chg != 0 && g_env_light.mItemGetCol_chg != 6) {
+ return;
+ }
+
+ g_env_light.mItemGetCol_chg = 1;
}
-#pragma pop
/* 801A8190-801A81C0 1A2AD0 0030+00 2/2 0/0 0/0 .text dKy_Sound_init__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKy_Sound_init() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_Sound_init__Fv.s"
+static void dKy_Sound_init() {
+ f32 tmp = lit_5346;
+ g_env_light.mSound.field_0x0.x = tmp;
+ g_env_light.mSound.field_0x0.y = tmp;
+ g_env_light.mSound.field_0x0.z = tmp;
+ g_env_light.mSound.field_0xc = 0;
+ g_env_light.mSound.field_0x14 = -1;
+ g_env_light.mSound.field_0x10 = 0;
}
-#pragma pop
/* 801A81C0-801A8474 1A2B00 02B4+00 0/0 5/5 27/27 .text dKy_Sound_set__F4cXyziUii */
#pragma push
@@ -2611,14 +2865,9 @@ asm void dKy_Sound_set(cXyz param_0, int param_1, unsigned int param_2, int para
#pragma pop
/* 801A8474-801A8484 1A2DB4 0010+00 0/0 1/1 8/8 .text dKy_Sound_get__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm SND_INFLUENCE* dKy_Sound_get() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_Sound_get__Fv.s"
+SND_INFLUENCE* dKy_Sound_get() {
+ return &g_env_light.mSound;
}
-#pragma pop
/* 801A8484-801A8538 1A2DC4 00B4+00 0/0 2/2 0/0 .text dKy_SordFlush_set__F4cXyzi */
#pragma push
@@ -2695,37 +2944,96 @@ static asm void GxXFog_set() {
#pragma pop
/* 801A87E4-801A880C 1A3124 0028+00 0/0 0/0 52/52 .text dKy_change_colpat__FUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_change_colpat(u8 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_change_colpat__FUc.s"
+void dKy_change_colpat(u8 colpat) {
+ g_env_light.mColpatCurrGather = colpat;
+ if (g_env_light.mColPatCurr == colpat) {
+ return;
+ }
+
+ g_env_light.mColPatBlendGather = FLOAT_LABEL(lit_4409);
}
-#pragma pop
/* 801A880C-801A8854 1A314C 0048+00 0/0 0/0 25/25 .text dKy_custom_colset__FUcUcf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_custom_colset(u8 param_0, u8 param_1, f32 param_2) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_custom_colset__FUcUcf.s"
+void dKy_custom_colset(u8 prevGather, u8 curGather, f32 blend) {
+ if (g_env_light.mInitAnmTimer != 1) {
+ if (blend < lit_4505) {
+ g_env_light.mColpatPrevGather = prevGather;
+ } else {
+ g_env_light.mColpatPrevGather = curGather;
+ }
+
+ g_env_light.mColpatCurrGather = curGather;
+ g_env_light.mColPatBlendGather = blend;
+ g_env_light.mColPatModeGather = 1;
+ }
}
-#pragma pop
/* 801A8854-801A88EC 1A3194 0098+00 0/0 0/0 2/2 .text dKy_setLight_mine__FP12dKy_tevstr_c
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_setLight_mine(dKy_tevstr_c* param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_setLight_mine__FP12dKy_tevstr_c.s"
+void dKy_setLight_mine(dKy_tevstr_c* p_tevstr) {
+ GXLightObj light;
+
+ GXInitLightPos(&light, p_tevstr->mLightObj.mInfo.mLightPosition.x,
+ p_tevstr->mLightObj.mInfo.mLightPosition.y,
+ p_tevstr->mLightObj.mInfo.mLightPosition.z);
+ GXInitLightDir(&light, p_tevstr->mLightObj.mInfo.mLightDirection.x,
+ p_tevstr->mLightObj.mInfo.mLightDirection.y,
+ p_tevstr->mLightObj.mInfo.mLightDirection.z);
+ GXInitLightColor(&light, p_tevstr->mLightObj.mInfo.mColor);
+ GXInitLightAttn(&light, p_tevstr->mLightObj.mInfo.mCosAtten.x,
+ p_tevstr->mLightObj.mInfo.mCosAtten.y, p_tevstr->mLightObj.mInfo.mCosAtten.z,
+ p_tevstr->mLightObj.mInfo.mDistAtten.x, p_tevstr->mLightObj.mInfo.mDistAtten.y,
+ p_tevstr->mLightObj.mInfo.mDistAtten.z);
+ GXLoadLightObjImm(&light, (GXLightID)*lightMaskData);
}
-#pragma pop
/* 801A88EC-801A8A34 1A322C 0148+00 2/2 5/5 11/11 .text dKy_tevstr_init__FP12dKy_tevstr_cScUc */
+// almost
+#ifdef NONMATCHING
+void dKy_tevstr_init(dKy_tevstr_c* p_tevstr, s8 roomNo, u8 param_2) {
+ memset(p_tevstr, 0, sizeof(dKy_tevstr_c));
+
+ if (roomNo == -1) {
+ p_tevstr->mRoomNo = dComIfGp_roomControl_getStayNo();
+ } else {
+ p_tevstr->mRoomNo = roomNo;
+ }
+
+ p_tevstr->mEnvrIdxCurr = p_tevstr->mRoomNo;
+ p_tevstr->mEnvrIdxPrev = p_tevstr->mRoomNo;
+ p_tevstr->mEnvrIdxOverride = param_2;
+ p_tevstr->mInitTimer = 1;
+ p_tevstr->mInitType = 0x7B;
+ p_tevstr->mColorC0.a = 0;
+ p_tevstr->mColorK0.a = 255;
+ p_tevstr->field_0x378 = 0;
+ p_tevstr->field_0x374 = 1.0f;
+ p_tevstr->field_0x384 = 0;
+
+ p_tevstr->mLightObj.mInfo.mColor.g = 0;
+ p_tevstr->mLightObj.mInfo.mColor.b = 0;
+ p_tevstr->mLightObj.mInfo.mColor.a = 255;
+ p_tevstr->mLightObj.mInfo.mCosAtten.x = 1.0f;
+ p_tevstr->mLightObj.mInfo.mCosAtten.y = 0.0f;
+ p_tevstr->mLightObj.mInfo.mCosAtten.z = 0.0f;
+ p_tevstr->mLightObj.mInfo.mDistAtten.x = 1.0f;
+ p_tevstr->mLightObj.mInfo.mDistAtten.y = 0.0f;
+ p_tevstr->mLightObj.mInfo.mDistAtten.z = 0.0f;
+
+ for (int i = 0; i < 6; i++) {
+ J3DLightObj* light = &p_tevstr->field_0x074[i];
+
+ lightStatusData[i].field_0x0 = light->mInfo.mLightPosition;
+ lightStatusData[i].field_0x18 = light->mInfo.mColor;
+ lightStatusData[i].field_0x1c.x = 1.0f;
+ lightStatusData[i].field_0x1c.y = 0.0f;
+ lightStatusData[i].field_0x1c.z = 0.0f;
+ lightStatusData[i].field_0x28.x = 1.0f;
+ lightStatusData[i].field_0x28.y = 0.0f;
+ lightStatusData[i].field_0x28.z = 0.0f;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2734,88 +3042,58 @@ asm void dKy_tevstr_init(dKy_tevstr_c* param_0, s8 param_1, u8 param_2) {
#include "asm/d/kankyo/d_kankyo/dKy_tevstr_init__FP12dKy_tevstr_cScUc.s"
}
#pragma pop
+#endif
/* 801A8A34-801A8A44 1A3374 0010+00 0/0 1/1 0/0 .text dKy_rain_check__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_rain_check() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_rain_check__Fv.s"
+int dKy_rain_check() {
+ return g_env_light.mRainCount;
}
-#pragma pop
/* 801A8A44-801A8A54 1A3384 0010+00 0/0 0/0 5/5 .text dKy_set_allcol_ratio__Ff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_set_allcol_ratio(f32 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_set_allcol_ratio__Ff.s"
+void dKy_set_allcol_ratio(f32 ratio) {
+ g_env_light.mAllcolRatio = ratio;
}
-#pragma pop
/* 801A8A54-801A8A64 1A3394 0010+00 0/0 1/1 1/1 .text dKy_set_actcol_ratio__Ff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_set_actcol_ratio(f32 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_set_actcol_ratio__Ff.s"
+void dKy_set_actcol_ratio(f32 ratio) {
+ g_env_light.mActcolRatio = ratio;
}
-#pragma pop
/* 801A8A64-801A8A74 1A33A4 0010+00 0/0 1/1 1/1 .text dKy_set_bgcol_ratio__Ff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_set_bgcol_ratio(f32 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_set_bgcol_ratio__Ff.s"
+void dKy_set_bgcol_ratio(f32 ratio) {
+ g_env_light.mBgcolRatio = ratio;
}
-#pragma pop
/* 801A8A74-801A8A84 1A33B4 0010+00 0/0 1/1 1/1 .text dKy_set_fogcol_ratio__Ff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_set_fogcol_ratio(f32 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_set_fogcol_ratio__Ff.s"
+void dKy_set_fogcol_ratio(f32 ratio) {
+ g_env_light.mFogcolRatio = ratio;
}
-#pragma pop
/* 801A8A84-801A8AB8 1A33C4 0034+00 0/0 1/1 0/0 .text dKy_set_vrboxcol_ratio__Ff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_set_vrboxcol_ratio(f32 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_set_vrboxcol_ratio__Ff.s"
+void dKy_set_vrboxcol_ratio(f32 ratio) {
+ dKy_set_vrboxsoracol_ratio(ratio);
+ dKy_set_vrboxkumocol_ratio(ratio);
}
-#pragma pop
/* 801A8AB8-801A8AC8 1A33F8 0010+00 1/1 0/0 0/0 .text dKy_set_vrboxsoracol_ratio__Ff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKy_set_vrboxsoracol_ratio(f32 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_set_vrboxsoracol_ratio__Ff.s"
+static void dKy_set_vrboxsoracol_ratio(f32 ratio) {
+ g_env_light.mVrboxSoracolRatio = ratio;
}
-#pragma pop
/* 801A8AC8-801A8AD8 1A3408 0010+00 1/1 0/0 0/0 .text dKy_set_vrboxkumocol_ratio__Ff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKy_set_vrboxkumocol_ratio(f32 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_set_vrboxkumocol_ratio__Ff.s"
+static void dKy_set_vrboxkumocol_ratio(f32 ratio) {
+ g_env_light.mVrboxKumocolRatio = ratio;
}
-#pragma pop
/* 801A8AD8-801A8B38 1A3418 0060+00 0/0 1/1 0/0 .text dKy_itudemo_se__Fv */
+// matches with literals
+#ifdef NONMATCHING
+void dKy_itudemo_se() {
+ if (g_env_light.mMoyaSE != 0) {
+ mDoAud_seStart(g_env_light.mMoyaSE, NULL, 0, 0);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2824,46 +3102,35 @@ asm void dKy_itudemo_se() {
#include "asm/d/kankyo/d_kankyo/dKy_itudemo_se__Fv.s"
}
#pragma pop
+#endif
/* 801A8B38-801A8B58 1A3478 0020+00 1/1 2/2 11/11 .text dKy_get_dayofweek__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm s32 dKy_get_dayofweek() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_get_dayofweek__Fv.s"
+s32 dKy_get_dayofweek() {
+ return dComIfGs_getDate() % 7;
}
-#pragma pop
/* 801A8B58-801A8B68 1A3498 0010+00 0/0 3/3 0/0 .text dKy_set_nexttime__Ff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_set_nexttime(f32 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_set_nexttime__Ff.s"
+void dKy_set_nexttime(f32 nextTime) {
+ g_env_light.mNexttime = nextTime;
}
-#pragma pop
/* 801A8B68-801A8BC8 1A34A8 0060+00 0/0 1/1 0/0 .text dKy_instant_timechg__Ff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_instant_timechg(f32 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_instant_timechg__Ff.s"
+void dKy_instant_timechg(f32 time) {
+ if (time < g_env_light.getDaytime()) {
+ dComIfGs_setDate(dComIfGs_getDate() + 1);
+ dKankyo_DayProc();
+ }
+
+ dComIfGs_setTime(time);
}
-#pragma pop
/* 801A8BC8-801A8C04 1A3508 003C+00 0/0 1/1 0/0 .text dKy_instant_rainchg__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_instant_rainchg() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_instant_rainchg__Fv.s"
+void dKy_instant_rainchg() {
+ dKyw_rain_set(250);
+ g_env_light.mColpatWeather = 1;
+ g_env_light.mColPatPrev = 1;
+ g_env_light.mColPatCurr = 1;
}
-#pragma pop
/* 801A8C04-801A8E20 1A3544 021C+00 3/3 0/0 0/0 .text NewAmbColGet__FP11_GXColorS10 */
#pragma push
@@ -3051,24 +3318,14 @@ static asm void dKy_WaterIn_Light_set() {
/* 801AB270-801AB280 1A5BB0 0010+00 0/0 2/2 0/0 .text dKy_camera_water_in_status_set__FUc
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_camera_water_in_status_set(u8 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_camera_water_in_status_set__FUc.s"
+void dKy_camera_water_in_status_set(u8 status) {
+ g_env_light.mCameraInWater = status;
}
-#pragma pop
/* 801AB280-801AB290 1A5BC0 0010+00 3/3 1/1 5/5 .text dKy_camera_water_in_status_check__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm BOOL dKy_camera_water_in_status_check() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_camera_water_in_status_check__Fv.s"
+BOOL dKy_camera_water_in_status_check() {
+ return g_env_light.mCameraInWater;
}
-#pragma pop
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -3108,14 +3365,26 @@ asm u8 dKy_pol_sound_get(cBgS_PolyInfo const* param_0) {
#pragma pop
/* 801AB59C-801AB668 1A5EDC 00CC+00 0/0 5/5 0/0 .text dKy_pol_argument_get__FPC13cBgS_PolyInfo */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_pol_argument_get(cBgS_PolyInfo const* param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_pol_argument_get__FPC13cBgS_PolyInfo.s"
+u8 dKy_pol_argument_get(cBgS_PolyInfo const* p_poly) {
+ dScnKy_env_light_c* envLight = &g_env_light;
+
+ if (p_poly == NULL || &dComIfG_Bgsp() == NULL) {
+ return 0;
+ }
+
+ int att0 = dComIfG_Bgsp().GetPolyAtt0(*p_poly);
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") && g_env_light.field_0x12fe == 4 &&
+ att0 == 4) {
+ att0 = 13;
+ }
+
+ int att1 = dComIfG_Bgsp().GetPolyAtt1(*p_poly);
+ if (envLight->mResPolArg != NULL) {
+ return envLight->mResPolArg[att0].data[att1];
+ }
+
+ return 0;
}
-#pragma pop
/* 801AB668-801AB7D0 1A5FA8 0168+00 0/0 1/1 2/2 .text
* dKy_pol_eff_prim_get__FPC13cBgS_PolyInfoP8_GXColor */
@@ -3128,6 +3397,33 @@ asm void dKy_pol_eff_prim_get(cBgS_PolyInfo const* param_0, _GXColor* param_1) {
}
#pragma pop
+/* u8 dKy_pol_eff_prim_get(cBgS_PolyInfo const* p_poly, GXColor* p_color) {
+ dScnKy_env_light_c* envLight = &g_env_light;
+
+ if (p_poly == NULL || p_color == NULL || &dComIfG_Bgsp() == NULL) {
+ return 0xFF;
+ }
+
+ int att0 = dComIfG_Bgsp().GetPolyAtt0(*p_poly);
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") && g_env_light.field_0x12fe == 4 && att0 ==
+4) { att0 = 13; } else if (!strcmp(dComIfGp_getStartStageName(), "D_MN05A") &&
+dComIfGs_isStageBossEnemy() && att0 == 11) { att0 = 7;
+ }
+
+ int att1 = dComIfG_Bgsp().GetPolyAtt1(*p_poly);
+ if (envLight->mResPolEffcol == NULL || ) {
+ u32 index = envLight->mResPolEffcol[att0].data[att1];
+
+ if (index >= 100) {
+ return 0xFF;
+ }
+
+ p_color->r = envLight->mResColorDataTbl[index].data[0];
+ p_color->g = envLight->mResColorDataTbl[index].data[1];
+ p_color->b = envLight->mResColorDataTbl[index].data[2];
+ }
+} */
+
/* 801AB7D0-801AB93C 1A6110 016C+00 0/0 1/1 2/2 .text
* dKy_pol_eff_env_get__FPC13cBgS_PolyInfoP8_GXColor */
#pragma push
@@ -3204,44 +3500,55 @@ asm void dKy_pol_eff2_ratio_get(cBgS_PolyInfo const* param_0) {
#pragma pop
/* 801AC140-801AC168 1A6A80 0028+00 0/0 2/2 0/0 .text dKy_TeachWind_existence_chk__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_TeachWind_existence_chk() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_TeachWind_existence_chk__Fv.s"
+BOOL dKy_TeachWind_existence_chk() {
+ if (g_env_light.mTeachWindExist == 0xFF) {
+ return -1;
+ }
+
+ return g_env_light.mTeachWindExist ? TRUE : FALSE;
}
-#pragma pop
/* 801AC168-801AC228 1A6AA8 00C0+00 4/4 0/0 2/2 .text dKy_SunMoon_Light_Check__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_SunMoon_Light_Check() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_SunMoon_Light_Check__Fv.s"
+bool dKy_SunMoon_Light_Check() {
+ bool check = false;
+ if (g_env_light.mSunInitialized && !dKy_darkworld_check()) {
+ // stage is not City in the Sky, Hyrule Castle, or Hidden Skill area
+ if (memcmp(dComIfGp_getStartStageName(), "D_MN07", 6) &&
+ memcmp(dComIfGp_getStartStageName(), "D_MN09", 6) &&
+ strcmp(dComIfGp_getStartStageName(), "F_SP200")) {
+ check = true;
+ }
+ }
+
+ return check;
}
-#pragma pop
/* 801AC228-801AC28C 1A6B68 0064+00 3/3 0/0 0/0 .text dKy_Outdoor_check__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm int dKy_Outdoor_check() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_Outdoor_check__Fv.s"
+static int dKy_Outdoor_check() {
+ BOOL outdoors = false;
+ u32 type = ST_FIELD;
+
+ if (i_dComIfGp_getStage() != NULL) {
+ type = dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo());
+ }
+
+ if (type == ST_FIELD) {
+ outdoors = true;
+ }
+
+ return outdoors;
}
-#pragma pop
/* 801AC28C-801AC2E0 1A6BCC 0054+00 1/1 0/0 0/0 .text dKy_Indoor_check__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKy_Indoor_check() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_Indoor_check__Fv.s"
+static int dKy_Indoor_check() {
+ BOOL indoors = false;
+
+ if (dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) != ST_FIELD) {
+ indoors = true;
+ }
+
+ return indoors;
}
-#pragma pop
/* 801AC2E0-801AC2E8 1A6C20 0008+00 0/0 1/1 0/0 .text dKy_withwarp_capture_check__Fv */
BOOL dKy_withwarp_capture_check() {
@@ -3266,14 +3573,15 @@ asm void dKy_depth_dist_set(void* param_0) {
#pragma pop
/* 801AC57C-801AC5BC 1A6EBC 0040+00 13/13 21/21 134/134 .text dKy_darkworld_check__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm bool dKy_darkworld_check() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_darkworld_check__Fv.s"
+bool dKy_darkworld_check() {
+ bool check = false;
+
+ if (dComIfGp_world_dark_get() == 1) {
+ check = true;
+ }
+
+ return check;
}
-#pragma pop
/**
* @brief Returns the following info about a room: (1) if the room must not be in twilight and (2)
diff --git a/src/d/kankyo/d_kankyo_rain.cpp b/src/d/kankyo/d_kankyo_rain.cpp
index 4d051653b6..5fb82586ee 100644
--- a/src/d/kankyo/d_kankyo_rain.cpp
+++ b/src/d/kankyo/d_kankyo_rain.cpp
@@ -379,7 +379,7 @@ extern "C" extern u8 j3dSys[284];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" extern u32 __float_nan;
extern "C" u8 mFrameBufferTimg__13mDoGph_gInf_c[4];
-extern "C" extern u8 struct_80450D64[4];
+extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
extern "C" u8 m_mode__7dDemo_c[4];
extern "C" u8 sOldVcdVatCmd__8J3DShape[4];
diff --git a/src/d/kankyo/d_kankyo_wether.cpp b/src/d/kankyo/d_kankyo_wether.cpp
index de47268357..cfce856920 100644
--- a/src/d/kankyo/d_kankyo_wether.cpp
+++ b/src/d/kankyo/d_kankyo_wether.cpp
@@ -129,6 +129,7 @@ extern "C" void dKyw_evt_wind_set_go__Fv();
extern "C" void dKyw_rain_set__Fi();
extern "C" extern char const* const d_kankyo_d_kankyo_wether__stringBase0;
+
//
// External References:
//
@@ -270,12 +271,12 @@ static J3DPacket* dKyw_setDrawPacketListXluBg(J3DPacket* p_packet, int type) {
/* 80056C60-80056C98 0515A0 0038+00 1/0 0/0 0/0 .text draw__18dKankyo_sun_PacketFv */
void dKankyo_sun_Packet::draw() {
- dKyr_drawSun(j3dSys.getViewMtx(), &field_0x10[0], mColor, &mpResMoon);
+ dKyr_drawSun(j3dSys.getViewMtx(), mPos, mColor, &mpResMoon);
}
/* 80056C98-80056CD0 0515D8 0038+00 1/0 0/0 0/0 .text draw__22dKankyo_sunlenz_PacketFv */
void dKankyo_sunlenz_Packet::draw() {
- dKyr_drawLenzflare(j3dSys.getViewMtx(), &field_0x24[0], field_0x10, &mpResBall);
+ dKyr_drawLenzflare(j3dSys.getViewMtx(), mPositions, mColor, &mpResBall);
}
/* 80056CD0-80056D0C 051610 003C+00 2/2 0/0 0/0 .text __dt__8RAIN_EFFFv */
@@ -288,8 +289,8 @@ RAIN_EFF::RAIN_EFF() {
/* 80056D10-80056D58 051650 0048+00 1/0 0/0 0/0 .text draw__19dKankyo_rain_PacketFv */
void dKankyo_rain_Packet::draw() {
- dKyr_drawSibuki(j3dSys.getViewMtx(), &field_0x10);
- dKyr_drawRain(j3dSys.getViewMtx(), &field_0x10);
+ dKyr_drawSibuki(j3dSys.getViewMtx(), &mpTex);
+ dKyr_drawRain(j3dSys.getViewMtx(), &mpTex);
}
/* 80056D58-80056D94 051698 003C+00 1/1 1/1 0/0 .text __dt__8SNOW_EFFFv */
@@ -302,7 +303,7 @@ SNOW_EFF::SNOW_EFF() {
/* 80056D98-80056DC8 0516D8 0030+00 1/0 0/0 0/0 .text draw__19dKankyo_snow_PacketFv */
void dKankyo_snow_Packet::draw() {
- dKyr_drawSnow(j3dSys.getViewMtx(), &field_0x10);
+ dKyr_drawSnow(j3dSys.getViewMtx(), &mpTex);
}
/* 80056DC8-80056E04 051708 003C+00 1/1 1/1 0/0 .text __dt__8STAR_EFFFv */
@@ -354,7 +355,7 @@ VRKUMO_EFF::VRKUMO_EFF() {
/* 80056F58-80056F8C 051898 0034+00 1/0 0/0 0/0 .text draw__21dKankyo_vrkumo_PacketFv */
void dKankyo_vrkumo_Packet::draw() {
- drawVrkumo(j3dSys.getViewMtx(), field_0x10, &mpResCloudtx_01);
+ drawVrkumo(j3dSys.getViewMtx(), mColor, &mpResCloudtx_01);
}
/* 80056F8C-80056FC8 0518CC 003C+00 2/2 0/0 0/0 .text __dt__12EF_ODOUR_EFFFv */
@@ -408,7 +409,7 @@ static void dKyw_Sun_Draw() {
/* 80057130-80057174 051A70 0044+00 1/1 0/0 0/0 .text dKyw_drawSunlenz__Fi */
static void dKyw_drawSunlenz(int type) {
- if (g_env_light.mpSunLenzPacket->field_0x9e == 0) {
+ if (g_env_light.mpSunLenzPacket->mDrawLenzInSky == false) {
dKyw_setDrawPacketListIndScreen(g_env_light.mpSunLenzPacket, type);
} else {
dKyw_setDrawPacketListSky(g_env_light.mpSunLenzPacket, type);
@@ -550,35 +551,35 @@ inline u32 tmp_dComIfGp_particle_set(u16 param_0, const cXyz* param_1, const csX
/* 800574E0-800579EC 051E20 050C+00 0/0 1/1 0/0 .text dKyw_wether_init__Fv */
void dKyw_wether_init() {
- g_env_light.mSunPacketEnabled = false;
- g_env_light.field_0xed4.field_0x0 = 0;
- g_env_light.field_0xed4.field_0x4 = 0;
- g_env_light.mRainPacketEnabled = 0;
+ g_env_light.mSunInitialized = false;
+ g_env_light.mThunderEff.mStatus = 0;
+ g_env_light.mThunderEff.mMode = 0;
+ g_env_light.mRainInitialized = false;
g_env_light.mRainCount = 0;
- g_env_light.mSnowPacketEnabled = 0;
+ g_env_light.mSnowInitialized = false;
g_env_light.field_0xe92 = 0;
g_env_light.mSnowCount = 0;
g_env_light.field_0xe90 = 0;
g_env_light.field_0xe91 = 0;
- g_env_light.mStarPacketEnabled = false;
+ g_env_light.mStarInitialized = false;
g_env_light.mStarCount = 0;
f32 tmp0 = FLOAT_LABEL(lit_4378);
g_env_light.mStarDensity = tmp0;
- g_env_light.mCloudPacketEnabled = 0;
- g_env_light.field_0xeb8 = 0;
+ g_env_light.mCloudInitialized = 0;
+ g_env_light.mMoyaCount = 0;
g_env_light.field_0xebc = tmp0;
- g_env_light.field_0xeb5 = 0;
- g_env_light.mHousiPacketEnabled = false;
- g_env_light.field_0xeac = 0;
+ g_env_light.mMoyaMode = 0;
+ g_env_light.mHousiInitialized = false;
+ g_env_light.mHousiCount = 0;
g_env_light.mOdourPacketStatus = 0;
g_env_light.field_0xf24 = 0;
g_env_light.field_0xf21 = 0;
g_env_light.mpOdourPacket = NULL;
g_env_light.field_0x1038 = 0;
g_env_light.field_0x103c = 0;
- g_env_light.mMudPacketEnabled = 0;
+ g_env_light.mMudInitialized = 0;
g_env_light.field_0x1048 = 0;
- g_env_light.mEvilPacketEnabled = 0;
+ g_env_light.mEvilInitialized = 0;
g_env_light.field_0x1054 = 0;
g_env_light.field_0x1051 = 0;
g_env_light.field_0xe60 = tmp0;
@@ -622,41 +623,41 @@ void dKyw_wether_init() {
/* 800579EC-80057A04 05232C 0018+00 0/0 1/1 0/0 .text dKyw_wether_init2__Fv */
void dKyw_wether_init2() {
- g_env_light.field_0xec4 = 0;
- g_env_light.field_0xec8 = 0;
+ g_env_light.mVrkumoStatus = 0;
+ g_env_light.mVrkumoCount = 0;
}
/* 80057A04-80057C84 052344 0280+00 0/0 1/1 0/0 .text dKyw_wether_delete__Fv */
void dKyw_wether_delete() {
- if (g_env_light.mSunPacketEnabled) {
+ if (g_env_light.mSunInitialized) {
delete g_env_light.mpSunPacket;
delete g_env_light.mpSunLenzPacket;
g_env_light.mpSunPacket = NULL;
g_env_light.mpSunLenzPacket = NULL;
}
- if (g_env_light.mRainPacketEnabled) {
+ if (g_env_light.mRainInitialized) {
delete g_env_light.mpRainPacket;
g_env_light.mpRainPacket = NULL;
}
- if (g_env_light.mSnowPacketEnabled) {
+ if (g_env_light.mSnowInitialized) {
delete g_env_light.mpSnowPacket;
g_env_light.mpSnowPacket = NULL;
g_env_light.field_0xe90 = 0;
}
- if (g_env_light.mStarPacketEnabled) {
+ if (g_env_light.mStarInitialized) {
delete g_env_light.mpStarPacket;
g_env_light.mpStarPacket = NULL;
}
- if (g_env_light.mHousiPacketEnabled) {
+ if (g_env_light.mHousiInitialized) {
delete g_env_light.mpHousiPacket;
g_env_light.mpHousiPacket = NULL;
}
- if (g_env_light.mCloudPacketEnabled) {
+ if (g_env_light.mCloudInitialized) {
delete g_env_light.mpCloudPacket;
g_env_light.mpCloudPacket = NULL;
}
@@ -666,12 +667,12 @@ void dKyw_wether_delete() {
g_env_light.mpOdourPacket = NULL;
}
- if (g_env_light.mMudPacketEnabled) {
+ if (g_env_light.mMudInitialized) {
delete g_env_light.mpMudPacket;
g_env_light.mpMudPacket = NULL;
}
- if (g_env_light.mEvilPacketEnabled) {
+ if (g_env_light.mEvilInitialized) {
delete g_env_light.mpEvilPacket;
g_env_light.mpEvilPacket = NULL;
}
@@ -739,7 +740,7 @@ dKankyo_sun_Packet::~dKankyo_sun_Packet() {}
/* 800581AC-8005820C 052AEC 0060+00 0/0 1/1 0/0 .text dKyw_wether_delete2__Fv */
void dKyw_wether_delete2() {
- if (g_env_light.field_0xec4 != 0) {
+ if (g_env_light.mVrkumoStatus != 0) {
delete g_env_light.mpVrkumoPacket;
g_env_light.mpVrkumoPacket = NULL;
}
@@ -750,11 +751,11 @@ dKankyo_vrkumo_Packet::~dKankyo_vrkumo_Packet() {}
/* 80058290-800582F8 052BD0 0068+00 1/1 0/0 0/0 .text wether_move_thunder__Fv */
static void wether_move_thunder() {
- switch (g_env_light.field_0xed4.field_0x0) {
+ switch (g_env_light.mThunderEff.mStatus) {
case 0:
- if (g_env_light.field_0xed4.field_0x4 != 0) {
+ if (g_env_light.mThunderEff.mMode != 0) {
dKyr_thunder_init();
- g_env_light.field_0xed4.field_0x0 = 1;
+ g_env_light.mThunderEff.mStatus = 1;
}
break;
case 1:
@@ -777,7 +778,7 @@ SECTION_SDATA2 static f32 lit_4611 = 1000000000.0f;
/* 80058318-80058894 052C58 057C+00 1/1 0/0 0/0 .text wether_move_sun__Fv */
static void wether_move_sun() {
s32 sunVisible = false;
- if (dComIfGp_checkStatus(1) && !g_env_light.field_0x12d4) {
+ if (dComIfGp_checkStatus(1) && !g_env_light.mVrboxInvisible) {
roomRead_class* room = dComIfGp_getStageRoom();
if (room != NULL && room->field_0x0 > dComIfGp_roomControl_getStayNo()) {
sunVisible = dStage_roomRead_dt_c_GetVrboxswitch(
@@ -793,7 +794,7 @@ static void wether_move_sun() {
sunVisible = false;
}
- switch (g_env_light.mSunPacketEnabled) {
+ switch (g_env_light.mSunInitialized) {
case FALSE:
if (sunVisible && dKy_darkworld_check() != true) {
g_env_light.mpSunPacket = new (0x20) dKankyo_sun_Packet();
@@ -854,16 +855,16 @@ static void wether_move_sun() {
f32 tmp0_2 = FLOAT_LABEL(lit_4378);
g_env_light.mpSunLenzPacket->field_0x90 = tmp0_2;
g_env_light.mpSunLenzPacket->field_0x98 = tmp0_2;
- g_env_light.mpSunLenzPacket->field_0x9e = 0;
+ g_env_light.mpSunLenzPacket->mDrawLenzInSky = false;
dKyr_sun_move();
dKyr_lenzflare_move();
- g_env_light.mSunPacketEnabled = true;
+ g_env_light.mSunInitialized = true;
}
}
break;
case TRUE:
if (!sunVisible) {
- g_env_light.mSunPacketEnabled = false;
+ g_env_light.mSunInitialized = false;
delete g_env_light.mpSunPacket;
delete g_env_light.mpSunLenzPacket;
g_env_light.mpSunPacket = NULL;
@@ -897,7 +898,7 @@ SECTION_SDATA2 static f64 lit_4671 = 4503601774854144.0 /* cast s32 to float */;
// matches with literals
#ifdef NONMATCHING
static void wether_move_rain() {
- switch (g_env_light.mRainPacketEnabled) {
+ switch (g_env_light.mRainInitialized) {
case FALSE:
if (g_env_light.mRainCount > 3) {
g_env_light.mpRainPacket = new (32) dKankyo_rain_Packet();
@@ -905,7 +906,7 @@ static void wether_move_rain() {
if (g_env_light.mpRainPacket != NULL) {
dKyr_rain_init();
dKyr_rain_move();
- g_env_light.mRainPacketEnabled = 1;
+ g_env_light.mRainInitialized = 1;
if (g_env_light.mRainCount != 250) {
mDoAud_seStart(JA_SE_ATM_RAIN_START, NULL, 0, 0);
@@ -929,7 +930,7 @@ static void wether_move_rain() {
}
if (g_env_light.mRainCount <= 3) {
- g_env_light.mRainPacketEnabled = 0;
+ g_env_light.mRainInitialized = 0;
mDoAud_seStart(JA_SE_ATM_RAIN_END, NULL, 0, 0);
delete g_env_light.mpRainPacket;
g_env_light.mpRainPacket = NULL;
@@ -950,13 +951,13 @@ static asm void wether_move_rain() {
/* 80058B00-80058B8C 053440 008C+00 1/1 0/0 0/0 .text wether_move_snow__Fv */
static void wether_move_snow() {
- switch (g_env_light.mSnowPacketEnabled) {
+ switch (g_env_light.mSnowInitialized) {
case FALSE:
if (g_env_light.mSnowCount != 0 || g_env_light.field_0xe90 != 0) {
dKyr_snow_init();
if (g_env_light.mpSnowPacket != NULL) {
dKyr_snow_move();
- g_env_light.mSnowPacketEnabled = 1;
+ g_env_light.mSnowInitialized = 1;
}
}
break;
@@ -1020,7 +1021,7 @@ static void wether_move_star() {
return;
} else {
// Stage is Hero Shade arena
- if ((dComIfGp_checkStatus(1) && !g_env_light.field_0x12d4) ||
+ if ((dComIfGp_checkStatus(1) && !g_env_light.mVrboxInvisible) ||
!strcmp(dComIfGp_getStartStageName(), "F_SP200")) {
roomRead_class* room = dComIfGp_getStageRoom();
if (room != NULL && room->field_0x0 > dComIfGp_roomControl_getStayNo()) {
@@ -1048,11 +1049,11 @@ static void wether_move_star() {
}
}
- if (g_env_light.field_0x12c8 != 0) {
+ if (g_env_light.mColpatWeather != 0) {
density = FLOAT_LABEL(lit_4378);
}
- if (g_env_light.field_0x12c3 != 0 && g_env_light.field_0x11dc > lit_4767) {
+ if (g_env_light.mColPatCurr != 0 && g_env_light.mColPatBlend > lit_4767) {
density = FLOAT_LABEL(lit_4378);
}
@@ -1071,7 +1072,7 @@ static void wether_move_star() {
g_env_light.mStarCount = (s16)(lit_4772 * g_env_light.mStarDensity);
}
- switch (g_env_light.mStarPacketEnabled) {
+ switch (g_env_light.mStarInitialized) {
case FALSE:
if (g_env_light.mStarCount != 0) {
dKyr_star_init();
@@ -1080,7 +1081,7 @@ static void wether_move_star() {
if (g_env_light.mpStarPacket != NULL) {
dKyr_star_move();
dKyr_shstar_move();
- g_env_light.mStarPacketEnabled = true;
+ g_env_light.mStarInitialized = true;
}
}
break;
@@ -1089,7 +1090,7 @@ static void wether_move_star() {
dKyr_shstar_move();
if (g_env_light.mStarCount == 0) {
- g_env_light.mStarPacketEnabled = false;
+ g_env_light.mStarInitialized = false;
delete g_env_light.mpStarPacket;
g_env_light.mpStarPacket = NULL;
@@ -1117,9 +1118,9 @@ static void wether_move_housi() {
if (dKy_darkworld_check() == true ||
(!strcmp(dComIfGp_getStartStageName(), "F_SP115") &&
dComIfGp_roomControl_getStayNo() == 1 && dComIfGp_getStartStageLayer() == 9)) {
- if (g_env_light.field_0x12d2 != 0) {
+ if (g_env_light.mInitAnmTimer != 0) {
g_env_light.field_0xea9 = 0;
- g_env_light.field_0xeac = 200;
+ g_env_light.mHousiCount = 200;
// Stage is Faron Woods and Room is Faron Spring or
// Stage is Castle Town and Room is Castle Town Center or
@@ -1133,14 +1134,14 @@ static void wether_move_housi() {
dComIfGp_getStartStageRoomNo() == 0 && dComIfGp_getStartStageLayer() == 9) ||
(!strcmp(dComIfGp_getStartStageName(), "F_SP115") &&
dComIfGp_getStartStageLayer() == 9)) {
- g_env_light.field_0xeac = 0;
+ g_env_light.mHousiCount = 0;
}
}
}
- switch (g_env_light.mHousiPacketEnabled) {
+ switch (g_env_light.mHousiInitialized) {
case FALSE:
- if (g_env_light.field_0xeac != 0) {
+ if (g_env_light.mHousiCount != 0) {
g_env_light.mpHousiPacket = new (32) dKankyo_housi_Packet();
if (g_env_light.mpHousiPacket != NULL) {
@@ -1173,23 +1174,23 @@ static void wether_move_housi() {
g_env_light.mpHousiPacket->field_0x5de8 = tmp0;
g_env_light.mpHousiPacket->field_0x10.set(tmp0, tmp0, tmp0);
for (int i = 0; i < 300; i++) {
- g_env_light.mpHousiPacket->field_0x18[i].field_0x0 = 0;
+ g_env_light.mpHousiPacket->mHousiEff[i].mStatus = 0;
}
dKyr_housi_move();
- g_env_light.mHousiPacketEnabled = true;
+ g_env_light.mHousiInitialized = true;
}
}
break;
case TRUE:
- if (g_env_light.field_0xeac == 0 &&
+ if (g_env_light.mHousiCount == 0 &&
g_env_light.mpHousiPacket->field_0x5de8 <= FLOAT_LABEL(lit_4378)) {
- g_env_light.mHousiPacketEnabled = false;
+ g_env_light.mHousiInitialized = false;
delete g_env_light.mpHousiPacket;
g_env_light.mpHousiPacket = NULL;
} else {
dKyr_housi_move();
if (!dKy_darkworld_check()) {
- g_env_light.field_0xeac = 0;
+ g_env_light.mHousiCount = 0;
}
}
break;
@@ -1233,32 +1234,32 @@ static void wether_move_odour() {
/* 80059580-80059728 053EC0 01A8+00 1/1 0/0 0/0 .text wether_move_moya__Fv */
static void wether_move_moya() {
- switch (g_env_light.mCloudPacketEnabled) {
+ switch (g_env_light.mCloudInitialized) {
case 0:
- if (g_env_light.field_0xeb8 != 0) {
+ if (g_env_light.mMoyaCount != 0) {
g_env_light.mpCloudPacket = new (32) dKankyo_cloud_Packet();
if (g_env_light.mpCloudPacket != NULL) {
g_env_light.mpCloudPacket->mpResTex = (u8*)dComIfG_getObjectRes("Always", 0x53);
for (int i = 0; i < 50; i++) {
- g_env_light.mpCloudPacket->field_0x18[i].field_0x0 = 0;
+ g_env_light.mpCloudPacket->mCloudEff[i].mStatus = 0;
}
- g_env_light.mpCloudPacket->field_0x14 = 0;
+ g_env_light.mpCloudPacket->mCount = 0;
cloud_shadow_move();
- g_env_light.mCloudPacketEnabled++;
+ g_env_light.mCloudInitialized++;
}
}
break;
case 1:
- if (g_env_light.field_0xeb5 == 0) {
+ if (g_env_light.mMoyaMode == 0) {
dKyw_get_wind_pow();
}
cloud_shadow_move();
- if (g_env_light.field_0xeb8 == 0 && g_env_light.mpCloudPacket->field_0x14 == 0) {
- g_env_light.mCloudPacketEnabled = 0;
+ if (g_env_light.mMoyaCount == 0 && g_env_light.mpCloudPacket->mCount == 0) {
+ g_env_light.mCloudInitialized = 0;
delete g_env_light.mpCloudPacket;
g_env_light.mpCloudPacket = NULL;
@@ -1336,7 +1337,7 @@ static asm void wether_move_vrkumo() {
/* 80059E38-80059F74 054778 013C+00 1/1 0/0 0/0 .text wether_move_mud__Fv */
static void wether_move_mud() {
- switch (g_env_light.mMudPacketEnabled) {
+ switch (g_env_light.mMudInitialized) {
case 0:
if (g_env_light.field_0x1048 != 0) {
g_env_light.mpMudPacket = new (32) dKankyo_mud_Packet();
@@ -1344,7 +1345,7 @@ static void wether_move_mud() {
if (g_env_light.mpMudPacket != NULL) {
dKyr_mud_init();
dKyr_mud_move();
- g_env_light.mMudPacketEnabled++;
+ g_env_light.mMudInitialized++;
}
}
break;
@@ -1352,7 +1353,7 @@ static void wether_move_mud() {
dKyr_mud_move();
if (g_env_light.field_0x1048 == 0 && g_env_light.mpMudPacket->field_0x10 == 0) {
- g_env_light.mMudPacketEnabled = 0;
+ g_env_light.mMudInitialized = 0;
delete g_env_light.mpMudPacket;
g_env_light.mpMudPacket = NULL;
@@ -1363,7 +1364,7 @@ static void wether_move_mud() {
/* 80059F74-8005A0B8 0548B4 0144+00 1/1 0/0 0/0 .text wether_move_evil__Fv */
static void wether_move_evil() {
- switch (g_env_light.mEvilPacketEnabled & 0xF) {
+ switch (g_env_light.mEvilInitialized & 0xF) {
case 0:
if (g_env_light.field_0x1054 != 0) {
g_env_light.mpEvilPacket = new (32) dKankyo_evil_Packet();
@@ -1371,7 +1372,7 @@ static void wether_move_evil() {
if (g_env_light.mpEvilPacket != NULL) {
dKyr_evil_init();
dKyr_evil_move();
- g_env_light.mEvilPacketEnabled++;
+ g_env_light.mEvilInitialized++;
}
}
break;
@@ -1379,7 +1380,7 @@ static void wether_move_evil() {
dKyr_evil_move();
if (g_env_light.field_0x1054 == 0 && g_env_light.mpEvilPacket->field_0x10 == 0) {
- g_env_light.mEvilPacketEnabled = 0;
+ g_env_light.mEvilInitialized = 0;
delete g_env_light.mpEvilPacket;
g_env_light.mpEvilPacket = NULL;
@@ -1390,7 +1391,7 @@ static void wether_move_evil() {
/* 8005A0B8-8005A154 0549F8 009C+00 0/0 1/1 0/0 .text dKyw_wether_move_draw__Fv */
void dKyw_wether_move_draw() {
- g_env_light.field_0x1288 = 0;
+ g_env_light.mMoyaSE = 0;
if (strcmp(dComIfGp_getStartStageName(), "Name")) {
wether_move_sun();
@@ -1415,11 +1416,11 @@ void dKyw_wether_move_draw2() {
/* 8005A174-8005A304 054AB4 0190+00 0/0 1/1 0/0 .text dKyw_wether_draw__Fv */
void dKyw_wether_draw() {
- if (strcmp(dComIfGp_getStartStageName(), "Name") && g_env_light.mCloudPacketEnabled != 0) {
+ if (strcmp(dComIfGp_getStartStageName(), "Name") && g_env_light.mCloudInitialized != 0) {
dKyw_Cloud_Draw();
}
- if (strcmp(dComIfGp_getStartStageName(), "Name") && g_env_light.mSunPacketEnabled) {
+ if (strcmp(dComIfGp_getStartStageName(), "Name") && g_env_light.mSunInitialized) {
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
if (dStage_stagInfo_GetArg0(stag_info) != 0) {
@@ -1428,21 +1429,21 @@ void dKyw_wether_draw() {
}
}
- if (g_env_light.mStarPacketEnabled) {
+ if (g_env_light.mStarInitialized) {
dKyw_Star_Draw();
dKyw_shstar_Draw();
}
if (strcmp(dComIfGp_getStartStageName(), "Name")) {
- if (g_env_light.mRainPacketEnabled) {
+ if (g_env_light.mRainInitialized) {
dKyw_Rain_Draw();
}
- if (g_env_light.mSnowPacketEnabled) {
+ if (g_env_light.mSnowInitialized) {
dKyw_Snow_Draw();
}
- if (g_env_light.mHousiPacketEnabled) {
+ if (g_env_light.mHousiInitialized) {
dKyw_Housi_Draw();
}
@@ -1450,11 +1451,11 @@ void dKyw_wether_draw() {
dKyw_Odour_Draw();
}
- if (g_env_light.mMudPacketEnabled != 0) {
+ if (g_env_light.mMudInitialized != 0) {
dKyw_mud_Draw();
}
- if (g_env_light.mEvilPacketEnabled != 0) {
+ if (g_env_light.mEvilInitialized != 0) {
dKyw_evil_Draw();
}
@@ -1464,7 +1465,7 @@ void dKyw_wether_draw() {
/* 8005A304-8005A340 054C44 003C+00 0/0 1/1 0/0 .text dKyw_wether_draw2__Fv */
void dKyw_wether_draw2() {
- if (g_env_light.field_0xec4 != 0 && g_env_light.field_0xec4 < 99) {
+ if (g_env_light.mVrkumoStatus != 0 && g_env_light.mVrkumoStatus < 99) {
dKyw_Vrkumo_Draw();
}
}
@@ -1512,13 +1513,13 @@ void dKyw_wether_proc() {
g_env_light.field_0x12c9 >= 1 && g_env_light.field_0x12c9 < 6) {
dKy_get_dayofweek();
cLib_addCalc(&g_env_light.field_0xebc, lit_4379, lit_5362, lit_5363, lit_4770);
- g_env_light.field_0xeb5 = 7;
- g_env_light.field_0xeb8 = 49;
+ g_env_light.mMoyaMode = 7;
+ g_env_light.mMoyaCount = 49;
} else {
cLib_addCalc(&g_env_light.field_0xebc, FLOAT_LABEL(lit_4378), lit_5362,
lit_5363, lit_5364[0]);
- if (g_env_light.field_0xebc <= lit_4769 && g_env_light.field_0xeb8 == 49) {
- g_env_light.field_0xeb8 = 0;
+ if (g_env_light.field_0xebc <= lit_4769 && g_env_light.mMoyaCount == 49) {
+ g_env_light.mMoyaCount = 0;
}
}
}
@@ -1529,9 +1530,9 @@ void dKyw_wether_proc() {
if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") &&
(g_env_light.field_0x12fe == 1 || g_env_light.field_0x12fe == 3)) {
if (g_env_light.field_0x12fe == 1) {
- g_env_light.field_0xeac = 35;
+ g_env_light.mHousiCount = 35;
} else {
- g_env_light.field_0xeac = 30;
+ g_env_light.mHousiCount = 30;
}
g_env_light.field_0xea9 = 2;
}
@@ -1560,8 +1561,8 @@ static void dKyw_wind_init() {
g_env_light.field_0xe66 = 0;
g_env_light.mWind.field_0xc = 0;
g_env_light.custom_windpower = tmp_0;
- g_env_light.field_0xe6d = 0;
- g_env_light.field_0xe6e = 0;
+ g_env_light.mEvtWindSet = 0;
+ g_env_light.mTeachWindExist = 0;
}
/* ############################################################################################## */
@@ -1649,7 +1650,7 @@ static void dKyw_pntwind_init() {
}
for (int i = 0; i < 5; i++) {
- g_env_light.field_0x848[i].field_0x0[0] = 0;
+ g_env_light.mWindInfluenceEntity[i].mInUse = 0;
}
}
@@ -1671,14 +1672,14 @@ static void pntwind_set(WIND_INFLUENCE* pntwind) {
/* 8005ADFC-8005AE28 05573C 002C+00 0/0 0/0 5/5 .text dKyw_pntwind_set__FP14WIND_INFLUENCE */
void dKyw_pntwind_set(WIND_INFLUENCE* pntwind) {
- pntwind->field_0x28 = 0;
+ pntwind->mConstant = 0;
pntwind->field_0x29 = 0;
pntwind_set(pntwind);
}
/* 8005AE28-8005AE58 055768 0030+00 1/1 0/0 0/0 .text dKyw_pntlight_set__FP14WIND_INFLUENCE */
static void dKyw_pntlight_set(WIND_INFLUENCE* pntwind) {
- pntwind->field_0x28 = 0;
+ pntwind->mConstant = 0;
pntwind->field_0x29 = 1;
pntwind_set(pntwind);
}
@@ -1786,21 +1787,21 @@ void dKyw_custom_windpower(f32 pow) {
}
/* 8005B61C-8005B638 055F5C 001C+00 0/0 0/0 6/6 .text dKyw_evt_wind_set__Fss */
-void dKyw_evt_wind_set(s16 param_0, s16 param_1) {
- g_env_light.field_0xe6d = 1;
- g_env_light.field_0xe68 = param_0;
- g_env_light.field_0xe6a = param_1;
+void dKyw_evt_wind_set(s16 angleX, s16 angleY) {
+ g_env_light.mEvtWindSet = 1;
+ g_env_light.mEvtWindAngleX = angleX;
+ g_env_light.mEvtWindAngleY = angleY;
}
/* 8005B638-8005B64C 055F78 0014+00 0/0 0/0 3/3 .text dKyw_evt_wind_set_go__Fv */
void dKyw_evt_wind_set_go() {
- g_env_light.field_0xe6d = 1;
+ g_env_light.mEvtWindSet = 1;
}
/* 8005B64C-8005B660 055F8C 0014+00 0/0 1/1 5/5 .text dKyw_rain_set__Fi */
void dKyw_rain_set(int count) {
g_env_light.mRainCount = count;
- g_env_light.field_0x129c = count;
+ g_env_light.mRainCountOrig = count;
}
/* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/menu/d_menu_dmap_map.cpp b/src/d/menu/d_menu_dmap_map.cpp
index f9175580d1..79abf82cc9 100644
--- a/src/d/menu/d_menu_dmap_map.cpp
+++ b/src/d/menu/d_menu_dmap_map.cpp
@@ -365,7 +365,7 @@ extern "C" u8 mStatus__20dStage_roomControl_c[65792];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 mTypeGroupListAll__7dTres_c[204 + 4 /* padding */];
extern "C" extern u32 __float_max;
-extern "C" extern u8 struct_80450D64[4];
+extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
extern "C" extern u8 data_80450E58[4];
extern "C" extern u8 data_80450E60[4];
extern "C" u8 mLayerList__8dMpath_c[4];
diff --git a/src/d/menu/d_menu_fmap.cpp b/src/d/menu/d_menu_fmap.cpp
index 70b5dd5ca3..86a506e0bb 100644
--- a/src/d/menu/d_menu_fmap.cpp
+++ b/src/d/menu/d_menu_fmap.cpp
@@ -447,7 +447,7 @@ extern "C" extern void* __vt__19dMenuFmapIconDisp_c[3];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_fmapHIO[1188];
extern "C" extern u8 g_meter2_info[248];
-extern "C" extern u8 struct_80450D64[4];
+extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
extern "C" u8 m_midnaActor__9daPy_py_c[4];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
diff --git a/src/d/menu/d_menu_fmap_map.cpp b/src/d/menu/d_menu_fmap_map.cpp
index 010c8b0443..edd170b62b 100644
--- a/src/d/menu/d_menu_fmap_map.cpp
+++ b/src/d/menu/d_menu_fmap_map.cpp
@@ -228,7 +228,7 @@ extern "C" extern void* __vt__11dDrawPath_c[16];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_Counter[12 + 4 /* padding */];
extern "C" u8 sincosTable___5JMath[65536];
-extern "C" extern u8 struct_80450D64[4];
+extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
//
// Declarations:
diff --git a/src/d/menu/d_menu_letter.cpp b/src/d/menu/d_menu_letter.cpp
index 0e6bbd1735..dff7b09725 100644
--- a/src/d/menu/d_menu_letter.cpp
+++ b/src/d/menu/d_menu_letter.cpp
@@ -907,7 +907,7 @@ asm void dMenu_Letter_c::screenSetMenu() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void J2DTextBox::getWhite() const {
+asm JUtility::TColor J2DTextBox::getWhite() const {
nofralloc
#include "asm/d/menu/d_menu_letter/getWhite__10J2DTextBoxCFv.s"
}
@@ -917,7 +917,7 @@ asm void J2DTextBox::getWhite() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void J2DTextBox::getBlack() const {
+asm JUtility::TColor J2DTextBox::getBlack() const {
nofralloc
#include "asm/d/menu/d_menu_letter/getBlack__10J2DTextBoxCFv.s"
}
diff --git a/src/d/menu/d_menu_save.cpp b/src/d/menu/d_menu_save.cpp
index dbef5a0e60..22be9056b7 100644
--- a/src/d/menu/d_menu_save.cpp
+++ b/src/d/menu/d_menu_save.cpp
@@ -4,22 +4,16 @@
//
#include "d/menu/d_menu_save.h"
+#include "JSystem/J2DGraph/J2DAnmLoader.h"
#include "d/com/d_com_inf_game.h"
#include "d/file/d_file_sel_info.h"
#include "d/file/d_file_sel_warning.h"
+#include "d/msg/d_msg_string.h"
#include "dol2asm.h"
#include "dolphin/types.h"
+#include "f_op/f_op_msg_mng.h"
#include "m_Do/m_Do_MemCard.h"
#include "msg/scrn/d_msg_scrn_explain.h"
-#include "d/msg/d_msg_string.h"
-
-//
-// Types:
-//
-
-struct J2DAnmLoaderDataBase {
- /* 80308A6C */ void load(void const*);
-};
//
// Forward References:
@@ -261,10 +255,6 @@ extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
extern "C" u8 sManager__10JFWDisplay[4];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-//
-// Declarations:
-//
-
/* ############################################################################################## */
/* 803BDF78-803BDF84 01B098 000C+00 2/2 0/0 0/0 .data cNullVec__6Z2Calc */
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
@@ -272,191 +262,138 @@ SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
};
/* 803BDF84-803BDF90 01B0A4 000C+00 3/3 0/0 0/0 .data SelStartFrameTbl */
-SECTION_DATA static u8 SelStartFrameTbl[12] = {
- 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x8B,
+SECTION_DATA static int SelStartFrameTbl[3] = {
+ 59,
+ 99,
+ 139,
};
/* 803BDF90-803BDF9C 01B0B0 000C+00 3/3 0/0 0/0 .data SelEndFrameTbl */
-SECTION_DATA static u8 SelEndFrameTbl[12] = {
- 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00, 0x95,
+SECTION_DATA static int SelEndFrameTbl[3] = {
+ 69,
+ 109,
+ 149,
};
/* 803BDF9C-803BDFA8 01B0BC 000C+00 2/2 0/0 0/0 .data SelOpenStartFrameTbl */
-SECTION_DATA static u8 SelOpenStartFrameTbl[12] = {
- 0x00, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x02, 0x88,
+SECTION_DATA static int SelOpenStartFrameTbl[3] = {
+ 249,
+ 448,
+ 648,
};
/* 803BDFA8-803BDFB4 01B0C8 000C+00 2/2 0/0 0/0 .data SelOpenEndFrameTbl */
-SECTION_DATA static u8 SelOpenEndFrameTbl[12] = {
- 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x01, 0xCC, 0x00, 0x00, 0x02, 0x93,
+SECTION_DATA static int SelOpenEndFrameTbl[3] = {
+ 259,
+ 460,
+ 659,
};
/* 803BDFB4-803BDFC4 01B0D4 0010+00 2/2 0/0 0/0 .data YnSelStartFrameTbl */
-SECTION_DATA static u8 YnSelStartFrameTbl[16] = {
- 0x00, 0x00, 0x08, 0x66, 0x00, 0x00, 0x0C, 0x6D, 0x00, 0x00, 0x08, 0x5B, 0x00, 0x00, 0x0C, 0x63,
+SECTION_DATA static int YnSelStartFrameTbl[2][2] = {
+ {2150, 3181},
+ {2139, 3171},
};
/* 803BDFC4-803BDFD8 01B0E4 0010+04 2/2 0/0 0/0 .data YnSelEndFrameTbl */
-SECTION_DATA static u8 YnSelEndFrameTbl[16 + 4 /* padding */] = {
- 0x00,
- 0x00,
- 0x08,
- 0x5A,
- 0x00,
- 0x00,
- 0x0C,
- 0x63,
- 0x00,
- 0x00,
- 0x08,
- 0x66,
- 0x00,
- 0x00,
- 0x0C,
- 0x6D,
- /* padding */
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
+SECTION_DATA static int YnSelEndFrameTbl[2][2] = {{2138, 3171}, {2150, 3181}};
/* 803BDFD8-803BDFF0 01B0F8 0018+00 0/1 0/0 0/0 .data l_tagName0$3857 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName0[24] = {
- 0x77, 0x5F, 0x73, 0x65, 0x6C, 0x5F, 0x30, 0x30, 0x77, 0x5F, 0x73, 0x65,
- 0x6C, 0x5F, 0x30, 0x31, 0x77, 0x5F, 0x73, 0x65, 0x6C, 0x5F, 0x30, 0x32,
-};
+SECTION_DATA static u64 l_tagName0[3] = {'w_sel_00', 'w_sel_01', 'w_sel_02'};
#pragma pop
/* 803BDFF0-803BE000 01B110 0010+00 0/1 0/0 0/0 .data l_tagName000$3866 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName000[16] = {
- 0x00, 0x00, 0x77, 0x5F, 0x6E, 0x6F, 0x5F, 0x74, 0x00, 0x77, 0x5F, 0x79, 0x65, 0x73, 0x5F, 0x74,
-};
+SECTION_DATA static u64 l_tagName000[2] = {'w_no_t', 'w_yes_t'};
#pragma pop
/* 803BE000-803BE010 01B120 0010+00 0/1 0/0 0/0 .data l_tagName000U$3867 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName000U[16] = {
- 0x00, 0x00, 0x66, 0x5F, 0x6E, 0x6F, 0x5F, 0x74, 0x00, 0x66, 0x5F, 0x79, 0x65, 0x73, 0x5F, 0x74,
-};
+SECTION_DATA static u64 l_tagName000U[2] = {'f_no_t', 'f_yes_t'};
#pragma pop
/* 803BE010-803BE020 01B130 0010+00 0/1 0/0 0/0 .data l_tagName00$3879 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName00[16] = {
- 0x00, 0x00, 0x77, 0x5F, 0x6D, 0x6F, 0x64, 0x6F, 0x00, 0x00, 0x77, 0x5F, 0x6B, 0x65, 0x74, 0x65,
-};
+SECTION_DATA static u64 l_tagName00[2] = {'w_modo', 'w_kete'};
#pragma pop
/* 803BE020-803BE030 01B140 0010+00 0/1 0/0 0/0 .data l_tagName00U$3880 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName00U[16] = {
- 0x00, 0x00, 0x66, 0x5F, 0x6D, 0x6F, 0x64, 0x6F, 0x00, 0x00, 0x66, 0x5F, 0x6B, 0x65, 0x74, 0x65,
-};
+SECTION_DATA static u64 l_tagName00U[2] = {'f_modo', 'f_kete'};
#pragma pop
/* 803BE030-803BE048 01B150 0018+00 0/1 0/0 0/0 .data l_tagName3$3887 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName3[24] = {
- 0x77, 0x5F, 0x6D, 0x6F, 0x79, 0x6F, 0x30, 0x30, 0x77, 0x5F, 0x6D, 0x6F,
- 0x79, 0x6F, 0x30, 0x31, 0x77, 0x5F, 0x6D, 0x6F, 0x79, 0x6F, 0x30, 0x32,
-};
+SECTION_DATA static u64 l_tagName3[3] = {'w_moyo00', 'w_moyo01', 'w_moyo02'};
#pragma pop
/* 803BE048-803BE060 01B168 0018+00 0/1 0/0 0/0 .data l_tagName4$3888 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName4[24] = {
- 0x77, 0x5F, 0x67, 0x6F, 0x6C, 0x64, 0x30, 0x30, 0x77, 0x5F, 0x67, 0x6F,
- 0x6C, 0x64, 0x30, 0x31, 0x77, 0x5F, 0x67, 0x6F, 0x6C, 0x64, 0x30, 0x32,
-};
+SECTION_DATA static u64 l_tagName4[3] = {'w_gold00', 'w_gold01', 'w_gold02'};
#pragma pop
/* 803BE060-803BE078 01B180 0018+00 0/1 0/0 0/0 .data l_tagName5$3889 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName5[24] = {
- 0x77, 0x5F, 0x67, 0x6F, 0x32, 0x5F, 0x30, 0x30, 0x77, 0x5F, 0x67, 0x6F,
- 0x32, 0x5F, 0x30, 0x31, 0x77, 0x5F, 0x67, 0x6F, 0x32, 0x5F, 0x30, 0x32,
-};
+SECTION_DATA static u64 l_tagName5[3] = {'w_go2_00', 'w_go2_01', 'w_go2_02'};
#pragma pop
/* 803BE078-803BE088 01B198 0010+00 0/1 0/0 0/0 .data l_tagName9$3898 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName9[16] = {
- 0x00, 0x00, 0x77, 0x5F, 0x6E, 0x6F, 0x5F, 0x6D, 0x00, 0x77, 0x5F, 0x79, 0x65, 0x73, 0x5F, 0x6D,
-};
+SECTION_DATA static u64 l_tagName9[2] = {'w_no_m', 'w_yes_m'};
#pragma pop
/* 803BE088-803BE098 01B1A8 0010+00 0/1 0/0 0/0 .data l_tagName10$3899 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName10[16] = {
- 0x00, 0x00, 0x77, 0x5F, 0x6E, 0x6F, 0x5F, 0x67, 0x00, 0x77, 0x5F, 0x79, 0x65, 0x73, 0x5F, 0x67,
-};
+SECTION_DATA static u64 l_tagName10[2] = {'w_no_g', 'w_yes_g'};
#pragma pop
/* 803BE098-803BE0A8 01B1B8 0010+00 0/1 0/0 0/0 .data l_tagName11$3900 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName11[16] = {
- 0x00, 0x77, 0x5F, 0x6E, 0x6F, 0x5F, 0x67, 0x72, 0x77, 0x5F, 0x79, 0x65, 0x73, 0x5F, 0x67, 0x72,
-};
+SECTION_DATA static u64 l_tagName11[2] = {'w_no_gr', 'w_yes_gr'};
#pragma pop
/* 803BE0A8-803BE0C0 01B1C8 0018+00 0/1 0/0 0/0 .data l_tagName12$3909 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName12[24] = {
- 0x77, 0x5F, 0x62, 0x6B, 0x5F, 0x6C, 0x30, 0x30, 0x77, 0x5F, 0x62, 0x6B,
- 0x5F, 0x6C, 0x30, 0x31, 0x77, 0x5F, 0x62, 0x6B, 0x5F, 0x6C, 0x30, 0x32,
-};
+SECTION_DATA static u64 l_tagName12[3] = {'w_bk_l00', 'w_bk_l01', 'w_bk_l02'};
#pragma pop
/* 803BE0C0-803BE0D0 01B1E0 0010+00 0/1 0/0 0/0 .data l_tagName21$3916 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName21[16] = {
- 0x00, 0x00, 0x00, 0x74, 0x5F, 0x66, 0x6F, 0x72, 0x00, 0x00, 0x74, 0x5F, 0x66, 0x6F, 0x72, 0x31,
-};
+SECTION_DATA static u64 l_tagName21[2] = {'t_for', 't_for1'};
#pragma pop
/* 803BE0D0-803BE120 01B1F0 0050+00 0/1 0/0 0/0 .data l_tagName211$3917 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName211[80] = {
- 0x74, 0x6D, 0x6F, 0x79, 0x6F, 0x75, 0x30, 0x30, 0x74, 0x6D, 0x6F, 0x79, 0x6F, 0x75, 0x30, 0x31,
- 0x74, 0x6D, 0x6F, 0x79, 0x6F, 0x75, 0x30, 0x32, 0x74, 0x6D, 0x6F, 0x79, 0x6F, 0x75, 0x30, 0x33,
- 0x74, 0x6D, 0x6F, 0x79, 0x6F, 0x75, 0x30, 0x34, 0x74, 0x6D, 0x6F, 0x79, 0x6F, 0x75, 0x30, 0x35,
- 0x74, 0x6D, 0x6F, 0x79, 0x6F, 0x75, 0x30, 0x36, 0x74, 0x6D, 0x6F, 0x79, 0x6F, 0x75, 0x30, 0x37,
- 0x74, 0x6D, 0x6F, 0x79, 0x6F, 0x75, 0x30, 0x38, 0x74, 0x6D, 0x6F, 0x79, 0x6F, 0x75, 0x30, 0x39,
-};
+SECTION_DATA static u64 l_tagName211[10] = {'tmoyou00', 'tmoyou01', 'tmoyou02', 'tmoyou03',
+ 'tmoyou04', 'tmoyou05', 'tmoyou06', 'tmoyou07',
+ 'tmoyou08', 'tmoyou09'};
#pragma pop
/* 803BE120-803BE130 01B240 0010+00 0/1 0/0 0/0 .data l_tagName20$3929 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName20[16] = {
- 0x00, 0x65, 0x72, 0x5F, 0x66, 0x6F, 0x72, 0x30, 0x00, 0x65, 0x72, 0x5F, 0x66, 0x6F, 0x72, 0x31,
-};
+SECTION_DATA static u64 l_tagName20[2] = {'er_for0', 'er_for1'};
#pragma pop
/* 803BE130-803BE148 01B250 0018+00 0/1 0/0 0/0 .data l_tagName13$3937 */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 l_tagName13[24] = {
- 0x77, 0x5F, 0x64, 0x61, 0x74, 0x5F, 0x69, 0x30, 0x77, 0x5F, 0x64, 0x61,
- 0x74, 0x5F, 0x69, 0x31, 0x77, 0x5F, 0x64, 0x61, 0x74, 0x5F, 0x69, 0x32,
-};
+SECTION_DATA static u64 l_tagName13[3] = {'w_dat_i0', 'w_dat_i1', 'w_dat_i2'};
#pragma pop
/* 8042E84C-8042E860 05B56C 0010+04 21/21 0/0 0/0 .bss g_msHIO */
@@ -623,53 +560,46 @@ dMenu_save_c::dMenu_save_c() {
mSelIcon = NULL;
for (int i = 0; i < 3; i++) {
- field_0xd4[i] = NULL;
- field_0xe0[i] = NULL;
- field_0xec[i] = NULL;
- field_0xf8[i] = NULL;
- field_0x68[i] = NULL;
+ mpSelWakuMoyo[i] = NULL;
+ mpSelWakuGold[i] = NULL;
+ mpSelWakuGold2[i] = NULL;
+ mpBookWaku[i] = NULL;
+ mpSelData[i] = NULL;
mFileInfo[i] = NULL;
}
- field_0x58 = NULL;
+ mpSelectMoveBase = NULL;
for (int i = 0; i < 2; i++) {
- field_0x84[i] = NULL;
- field_0x118[i] = NULL;
- field_0x120[i] = NULL;
- field_0x128[i] = NULL;
- field_0x168[i] = NULL;
- field_0xc0[i] = NULL;
- field_0x138[i] = NULL;
+ mpNoYes[i] = NULL;
+ mNoYesBase[i] = NULL;
+ mNoYesGold[i] = NULL;
+ mNoYesGold2[i] = NULL;
+ mpHeaderTxtPane[i] = NULL;
+ mpErrTxtPane[i] = NULL;
+ mpNoYesTxt[i] = NULL;
}
field_0x40 = NULL;
field_0x44 = NULL;
field_0x48 = NULL;
- field_0x140 = NULL;
- field_0x148 = NULL;
+ mpFileWakuAnm = NULL;
+ mpFileWakuRotAnm = NULL;
field_0x150 = NULL;
field_0x158 = NULL;
field_0x160 = NULL;
field_0x4c = NULL;
- field_0x194 = NULL;
- field_0x198 = NULL;
- field_0x1a0 = NULL;
- field_0x1a4 = NULL;
+ mpBBtnIcon = NULL;
+ mpABtnIcon = NULL;
+ mpBackTxt = NULL;
+ mpConfirmTxt = NULL;
mpArchive = NULL;
- field_0x1b0 = 0;
+ mDisplayMenu = false;
mpMount = NULL;
field_0x21a2 = 0;
field_0x21a1 = 0;
}
-/* ############################################################################################## */
-/* 80397960-80397960 023FC0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80397960 = "/res/Layout/saveres.arc";
-#pragma pop
-
/* 80454438-8045443C 002A38 0004+00 1/1 0/0 0/0 .sdata2 @3849 */
SECTION_SDATA2 static f32 lit_3849 = 9.0f / 10.0f;
@@ -680,22 +610,22 @@ SECTION_SDATA2 static f32 lit_3850 = 0.5f;
void dMenu_save_c::_create() {
stick = new STControl(2, 2, 1, 1, lit_3849, lit_3850, 0, 0x2000);
- if (mUseType == 1 || mUseType == 3 || mUseType == 4) {
+ if (mUseType == TYPE_DEFAULT || mUseType == TYPE_WHITE_EVENT || mUseType == TYPE_BLACK_EVENT) {
mpMount =
mDoDvdThd_mountArchive_c::create("/res/Layout/saveres.arc", 0, mDoExt_getJ2dHeap());
}
- if (mUseType == 2 || mUseType == 3 || mUseType == 4) {
+ if (mUseType == 2 || mUseType == TYPE_WHITE_EVENT || mUseType == TYPE_BLACK_EVENT) {
u8 var_r31;
switch (mUseType) {
case 2:
var_r31 = 2;
break;
- case 4:
+ case TYPE_BLACK_EVENT:
var_r31 = 3;
break;
default:
- case 3:
+ case TYPE_WHITE_EVENT:
var_r31 = 1;
break;
}
@@ -726,21 +656,15 @@ SECTION_DEAD static char const* const stringBase_80397A05 = "";
#pragma pop
/* 80450740-80450744 0001C0 0002+02 1/1 0/0 0/0 .sdata l_msgNum0$3868 */
-SECTION_SDATA static u8 l_msgNum0[2 + 2 /* padding */] = {
+SECTION_SDATA static u8 l_msgNum0[2] = {
0x08,
0x07,
- /* padding */
- 0x00,
- 0x00,
};
/* 80450744-80450748 0001C4 0002+02 1/1 0/0 0/0 .sdata l_msgNum$3881 */
-SECTION_SDATA static u8 l_msgNum[2 + 2 /* padding */] = {
+SECTION_SDATA static u8 l_msgNum[2] = {
0x54,
0x55,
- /* padding */
- 0x00,
- 0x00,
};
/* 80454440-80454444 002A40 0004+00 1/1 0/0 0/0 .sdata2 @4173 */
@@ -789,6 +713,204 @@ SECTION_SDATA2 static f32 lit_4183[1 + 1 /* padding */] = {
SECTION_SDATA2 static f64 lit_4185 = 4503601774854144.0 /* cast s32 to float */;
/* 801EF904-801F0938 1EA244 1034+00 1/1 0/0 0/0 .text screenSet__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::screenSet() {
+ mSaveSel.Scr = new J2DScreen();
+ mSaveSel.Scr->setPriority("zelda_file_select2.blo", 0x1100000, mpArchive);
+ dPaneClass_showNullPane(mSaveSel.Scr);
+
+ mSaveSel.font[0] = mDoExt_getMesgFont();
+ mSaveSel.font[1] = mDoExt_getSubFont();
+ mSaveSel.mMsgString = new dMsgString_c();
+
+ void* bck = JKRGetNameResource("zelda_file_select2.bck", mpArchive);
+ field_0x40 = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load(bck);
+ field_0x44 = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load(bck);
+ field_0x48 = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load(bck);
+ field_0x4c = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load(bck);
+ field_0x40->searchUpdateMaterialID(mSaveSel.Scr);
+ field_0x44->searchUpdateMaterialID(mSaveSel.Scr);
+ field_0x48->searchUpdateMaterialID(mSaveSel.Scr);
+ field_0x4c->searchUpdateMaterialID(mSaveSel.Scr);
+
+ mpSelectMoveBase = new CPaneMgr(mSaveSel.Scr, 'w_move_n', 0, NULL);
+ field_0xa0 = mSaveSel.Scr->search('wmenu_n');
+
+ for (int i = 0; i < 3; i++) {
+ mpSelData[i] = new CPaneMgr(mSaveSel.Scr, l_tagName0[i], 0, NULL);
+ }
+
+ mpNoYes[0] = new CPaneMgr(mSaveSel.Scr, 'w_no_n', 0, NULL);
+ mpNoYes[1] = new CPaneMgr(mSaveSel.Scr, 'w_yes_n', 0, NULL);
+
+ for (int i = 0; i < 2; i++) {
+ mpNoYesTxt[i] = new CPaneMgr(mSaveSel.Scr, l_tagName000U[i], 0, NULL);
+ mSaveSel.Scr->search(l_tagName000[i])->hide();
+ ((J2DTextBox*)mpNoYesTxt[i]->getPanePtr())->setFont(mSaveSel.font[0]);
+
+ char message[32];
+ fopMsgM_messageGet(message, l_msgNum0[i]);
+ ((J2DTextBox*)mpNoYesTxt[i]->getPanePtr())->setString(message);
+ }
+
+ mSaveSel.Scr->search('Wi_btn_n')->hide();
+ mSaveSel.Scr->search('GC_btn_n')->show();
+
+ mpBBtnIcon = new CPaneMgrAlpha(mSaveSel.Scr, 'w_nbbtn', 2, NULL);
+ mpABtnIcon = new CPaneMgrAlpha(mSaveSel.Scr, 'w_nabtn', 2, NULL);
+ mpBackTxt = new CPaneMgrAlpha(mSaveSel.Scr, 'f_modo', 2, NULL);
+ mpConfirmTxt = new CPaneMgrAlpha(mSaveSel.Scr, 'f_kete', 2, NULL);
+
+ mpBackTxt->setAlpha(0);
+ mpConfirmTxt->setAlpha(0);
+ mpBBtnIcon->setAlpha(128);
+ mpABtnIcon->setAlpha(128);
+
+ for (int i = 0; i < 2; i++) {
+ J2DTextBox* tbox[2];
+ tbox[i] = (J2DTextBox*)mSaveSel.Scr->search(l_tagName00U[i]);
+ mSaveSel.Scr->search(l_tagName00[i])->hide();
+ tbox[i]->setFont(mSaveSel.font[0]);
+
+ char message[32];
+ fopMsgM_messageGet(message, l_msgNum[i]);
+ tbox[i]->setString(message);
+ }
+
+ const void* bpk = JKRFileLoader::getGlbResource("zelda_file_select2.bpk", mpArchive);
+ mpFileWakuAnm = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(bpk);
+ mpFileWakuAnm->searchUpdateMaterialID(mSaveSel.Scr);
+ mFileWakuAnmFrame = 0;
+
+ const void* btk = JKRFileLoader::getGlbResource("zelda_file_select2_02.btk", mpArchive);
+ mpFileWakuRotAnm = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk);
+ mpFileWakuRotAnm->searchUpdateMaterialID(mSaveSel.Scr);
+ mFileWakuRotAnmFrame = 0;
+
+ for (int i = 0; i < 3; i++) {
+ mpSelWakuMoyo[i] = new CPaneMgr(mSaveSel.Scr, l_tagName3[i], 0, NULL);
+ mpSelWakuGold[i] = new CPaneMgr(mSaveSel.Scr, l_tagName4[i], 0, NULL);
+ mpSelWakuGold2[i] = new CPaneMgr(mSaveSel.Scr, l_tagName5[i], 0, NULL);
+
+ mpSelWakuMoyo[i]->getPanePtr()->setAnimation(mpFileWakuAnm);
+ mpSelWakuGold[i]->getPanePtr()->setAnimation(mpFileWakuAnm);
+ mpSelWakuGold2[i]->getPanePtr()->setAnimation(mpFileWakuAnm);
+ mpSelWakuGold[i]->getPanePtr()->setAnimation(mpFileWakuRotAnm);
+ mpSelWakuGold2[i]->getPanePtr()->setAnimation(mpFileWakuRotAnm);
+ }
+
+ for (int i = 0; i < 2; i++) {
+ mNoYesBase[i] = new CPaneMgr(mSaveSel.Scr, l_tagName9[i], 0, NULL);
+ mNoYesGold[i] = new CPaneMgr(mSaveSel.Scr, l_tagName10[i], 0, NULL);
+ mNoYesGold2[i] = new CPaneMgr(mSaveSel.Scr, l_tagName11[i], 0, NULL);
+
+ mNoYesBase[i]->getPanePtr()->setAnimation(mpFileWakuAnm);
+ mNoYesGold[i]->getPanePtr()->setAnimation(mpFileWakuAnm);
+ mNoYesGold2[i]->getPanePtr()->setAnimation(mpFileWakuAnm);
+ mNoYesGold[i]->getPanePtr()->setAnimation(mpFileWakuRotAnm);
+ mNoYesGold2[i]->getPanePtr()->setAnimation(mpFileWakuRotAnm);
+ mNoYesBase[i]->setAlpha(0);
+ mNoYesGold[i]->setAlpha(0);
+ mNoYesGold2[i]->setAlpha(0);
+ }
+
+ field_0x150 = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(bpk);
+ field_0x150->searchUpdateMaterialID(mSaveSel.Scr);
+
+ const void* btk2 = JKRFileLoader::getGlbResource("zelda_file_select2.btk", mpArchive);
+ field_0x158 = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(btk2);
+ field_0x158->searchUpdateMaterialID(mSaveSel.Scr);
+
+ const void* brk = JKRFileLoader::getGlbResource("zelda_file_select2.brk", mpArchive);
+ field_0x160 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(brk);
+ field_0x160->searchUpdateMaterialID(mSaveSel.Scr);
+
+ field_0x154 = 0;
+ field_0x15c = 0;
+ field_0x164 = 0;
+
+ for (int i = 0; i < 3; i++) {
+ mpBookWaku[i] = new CPaneMgr(mSaveSel.Scr, l_tagName12[i], 0, NULL);
+
+ mpBookWaku[i]->getPanePtr()->setAnimation(field_0x150);
+ mpBookWaku[i]->getPanePtr()->setAnimation(field_0x158);
+ mpBookWaku[i]->getPanePtr()->setAnimation(field_0x160);
+ mpBookWaku[i]->setAlpha(0);
+ }
+
+ mSaveSel.Scr->search('w_tabi_s')->hide();
+ mSaveSel.Scr->search('w_tabi_x')->hide();
+
+ for (int i = 0; i < 10; i++) {
+ mSaveSel.Scr->search(l_tagName211[i])->hide();
+ }
+
+ for (int i = 0; i < 2; i++) {
+ mpHeaderTxtPane[i] = new CPaneMgrAlpha(mSaveSel.Scr, l_tagName21[i], 0, NULL);
+
+ ((J2DTextBox*)mpHeaderTxtPane[i]->getPanePtr())->setFont(mSaveSel.font[0]);
+ ((J2DTextBox*)mpHeaderTxtPane[i]->getPanePtr())->setString(0x100, "");
+ ((J2DTextBox*)mpHeaderTxtPane[i]->getPanePtr())->setFontSize(19.0f, 19.0f);
+ ((J2DTextBox*)mpHeaderTxtPane[i]->getPanePtr())->setLineSpace(20.0f);
+ ((J2DTextBox*)mpHeaderTxtPane[i]->getPanePtr())->setCharSpace(0.0f);
+ mpHeaderTxt[i] = ((J2DTextBox*)mpHeaderTxtPane[i]->getPanePtr())->getStringPtr();
+ }
+
+ mpHeaderTxtPane[0]->setAlpha(255);
+ mpHeaderTxtPane[1]->setAlpha(0);
+ mHeaderTxtType = 0;
+
+ field_0xb4 = mSaveSel.Scr->search('w_er_n');
+ mSaveSel.Scr->search('w_er_msg')->hide();
+ mSaveSel.Scr->search('w_er_msR')->hide();
+
+ for (int i = 0; i < 2; i++) {
+ mpErrTxtPane[i] = new CPaneMgrAlpha(mSaveSel.Scr, l_tagName20[i], 0, NULL);
+
+ ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->setFont(mSaveSel.font[0]);
+ ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->setString(0x200, "");
+ ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->resize(440.0f, 198.0f);
+ ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->setFontSize(21.0f, 21.0f);
+ ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->setLineSpace(21.0f);
+ ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->setCharSpace(1.0f);
+ mpErrTxt[i] = ((J2DTextBox*)mpErrTxtPane[i]->getPanePtr())->getStringPtr();
+ mpErrTxtPane[i]->show();
+ }
+
+ mErrTxtType = 0;
+ mpErrTxtPane[mErrTxtType]->setAlpha(255);
+ mpErrTxtPane[mErrTxtType ^ 1]->setAlpha(0);
+
+ mSelectedFile = dComIfGs_getDataNum();
+ mSelIcon = new dSelect_cursor_c(0, 1.0f, NULL);
+ mSelIcon->setParam(0.96f, 0.94f, 0.03f, 0.7f, 0.7f);
+
+ Vec* pos = &mpSelData[mSelectedFile]->getGlobalVtxCenter(false, 0);
+ mSelIcon->setPos(pos->x, pos->y, mpSelData[mSelectedFile]->getPanePtr(), true);
+ mSelIcon->setAlphaRate(0.0f);
+
+ J2DPane* pane = mSaveSel.Scr->search('Nm_02');
+ pane->setAnimation(field_0x40);
+ field_0x64 = 0;
+ field_0x50 = 1;
+ field_0x40->setFrame(field_0x50);
+ pane->animationTransform();
+ pane->setAnimation((J2DAnmTransformKey*)NULL);
+
+ mpHeaderTxtPane[0]->getPanePtr()->scale(1.0f, 1.0f);
+ mpHeaderTxtPane[1]->getPanePtr()->scale(1.0f, 1.0f);
+
+ for (int i = 0; i < 3; i++) {
+ mFileInfo[i] = new dFile_info_c(mpArchive, 1);
+ mFileInfo[i]->setBasePane(mSaveSel.Scr->search(l_tagName13[i]));
+ mpDataBase[i] = mFileInfo[i]->getDatBase();
+ mpNoDataBase[i] = mFileInfo[i]->getNoDatBase();
+ }
+
+ mWarning = new dFile_warning_c(mpArchive, 0);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -797,6 +919,7 @@ asm void dMenu_save_c::screenSet() {
#include "asm/d/menu/d_menu_save/screenSet__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F0938-801F0958 1EB278 0020+00 0/0 2/2 0/0 .text initialize__12dMenu_save_cFv */
void dMenu_save_c::initialize() {
@@ -827,7 +950,7 @@ void dMenu_save_c::displayInit() {
bool dMenu_save_c::_open() {
field_0x1bf = 1;
- if (mUseType == 1 || mUseType == 3 || mUseType == 4) {
+ if (mUseType == TYPE_DEFAULT || mUseType == TYPE_WHITE_EVENT || mUseType == TYPE_BLACK_EVENT) {
if (!mpMount->sync()) {
return false;
}
@@ -836,8 +959,8 @@ bool dMenu_save_c::_open() {
mpArchive = mpMount->getArchive();
screenSet();
- if (mUseType == 1) {
- field_0x1b0 = 1;
+ if (mUseType == TYPE_DEFAULT) {
+ mDisplayMenu = true;
field_0x1bf = 0;
}
@@ -847,16 +970,16 @@ bool dMenu_save_c::_open() {
}
}
- field_0x1b6 = 0;
+ mYesNoCursor = CURSOR_NO;
field_0x2190 = 1;
switch (mUseType) {
- case 1:
+ case TYPE_DEFAULT:
mMenuProc = PROC_MEMCARD_CHECK;
break;
- case 3:
- case 4:
- field_0x1b6 = 1;
+ case TYPE_WHITE_EVENT:
+ case TYPE_BLACK_EVENT:
+ mYesNoCursor = CURSOR_YES;
msgTxtSet(0x3CE, true); // "Do you want to save?"
mMenuProc = PROC_SAVE_QUESTION;
break;
@@ -892,33 +1015,33 @@ void dMenu_save_c::_delete() {
mpScrnExplain = NULL;
}
- if (mMenuSave.mMsgString != NULL) {
- delete mMenuSave.mMsgString;
+ if (mSaveSel.mMsgString != NULL) {
+ delete mSaveSel.mMsgString;
}
- if (mMenuSave.Scr != NULL) {
- delete mMenuSave.Scr;
+ if (mSaveSel.Scr != NULL) {
+ delete mSaveSel.Scr;
}
for (int i = 0; i < 3; i++) {
- if (field_0xd4[i] != NULL) {
- delete field_0xd4[i];
+ if (mpSelWakuMoyo[i] != NULL) {
+ delete mpSelWakuMoyo[i];
}
- if (field_0xe0[i] != NULL) {
- delete field_0xe0[i];
+ if (mpSelWakuGold[i] != NULL) {
+ delete mpSelWakuGold[i];
}
- if (field_0xec[i] != NULL) {
- delete field_0xec[i];
+ if (mpSelWakuGold2[i] != NULL) {
+ delete mpSelWakuGold2[i];
}
- if (field_0xf8[i] != NULL) {
- delete field_0xf8[i];
+ if (mpBookWaku[i] != NULL) {
+ delete mpBookWaku[i];
}
- if (field_0x68[i] != NULL) {
- delete field_0x68[i];
+ if (mpSelData[i] != NULL) {
+ delete mpSelData[i];
}
if (mFileInfo[i] != NULL) {
@@ -926,37 +1049,37 @@ void dMenu_save_c::_delete() {
}
}
- if (field_0x58 != NULL) {
- delete field_0x58;
+ if (mpSelectMoveBase != NULL) {
+ delete mpSelectMoveBase;
}
for (int i = 0; i < 2; i++) {
- if (field_0x84[i] != NULL) {
- delete field_0x84[i];
+ if (mpNoYes[i] != NULL) {
+ delete mpNoYes[i];
}
- if (field_0x118[i] != NULL) {
- delete field_0x118[i];
+ if (mNoYesBase[i] != NULL) {
+ delete mNoYesBase[i];
}
- if (field_0x120[i] != NULL) {
- delete field_0x120[i];
+ if (mNoYesGold[i] != NULL) {
+ delete mNoYesGold[i];
}
- if (field_0x128[i] != NULL) {
- delete field_0x128[i];
+ if (mNoYesGold2[i] != NULL) {
+ delete mNoYesGold2[i];
}
- if (field_0x168[i] != NULL) {
- delete field_0x168[i];
+ if (mpHeaderTxtPane[i] != NULL) {
+ delete mpHeaderTxtPane[i];
}
- if (field_0xc0[i] != NULL) {
- delete field_0xc0[i];
+ if (mpErrTxtPane[i] != NULL) {
+ delete mpErrTxtPane[i];
}
- if (field_0x138[i] != NULL) {
- delete field_0x138[i];
+ if (mpNoYesTxt[i] != NULL) {
+ delete mpNoYesTxt[i];
}
}
@@ -972,12 +1095,12 @@ void dMenu_save_c::_delete() {
delete field_0x48;
}
- if (field_0x140 != NULL) {
- delete field_0x140;
+ if (mpFileWakuAnm != NULL) {
+ delete mpFileWakuAnm;
}
- if (field_0x148 != NULL) {
- delete field_0x148;
+ if (mpFileWakuRotAnm != NULL) {
+ delete mpFileWakuRotAnm;
}
if (field_0x150 != NULL) {
@@ -996,20 +1119,20 @@ void dMenu_save_c::_delete() {
delete field_0x4c;
}
- if (field_0x194 != NULL) {
- delete field_0x194;
+ if (mpBBtnIcon != NULL) {
+ delete mpBBtnIcon;
}
- if (field_0x198 != NULL) {
- delete field_0x198;
+ if (mpABtnIcon != NULL) {
+ delete mpABtnIcon;
}
- if (field_0x1a0 != NULL) {
- delete field_0x1a0;
+ if (mpBackTxt != NULL) {
+ delete mpBackTxt;
}
- if (field_0x1a4 != NULL) {
- delete field_0x1a4;
+ if (mpConfirmTxt != NULL) {
+ delete mpConfirmTxt;
}
if (mSelIcon != NULL) {
@@ -1061,10 +1184,10 @@ void dMenu_save_c::_move() {
/* 801F1100-801F1148 1EBA40 0048+00 1/1 0/0 0/0 .text saveSelAnm__12dMenu_save_cFv */
void dMenu_save_c::saveSelAnm() {
- if (field_0x1b0 != 0) {
+ if (mDisplayMenu) {
selFileWakuAnm();
bookIconAnm();
- mMenuSave.Scr->animation();
+ mSaveSel.Scr->animation();
}
}
@@ -1072,17 +1195,17 @@ void dMenu_save_c::saveSelAnm() {
// matches with literals
#ifdef NONMATCHING
void dMenu_save_c::selFileWakuAnm() {
- field_0x144 += 2;
- if (field_0x144 >= field_0x140->getFrameMax()) {
- field_0x144 -= field_0x140->getFrameMax();
+ mFileWakuAnmFrame += 2;
+ if (mFileWakuAnmFrame >= mpFileWakuAnm->getFrameMax()) {
+ mFileWakuAnmFrame -= mpFileWakuAnm->getFrameMax();
}
- field_0x140->setFrame(field_0x144);
+ mpFileWakuAnm->setFrame(mFileWakuAnmFrame);
- field_0x14c += 2;
- if (field_0x14c >= field_0x148->getFrameMax()) {
- field_0x14c -= field_0x148->getFrameMax();
+ mFileWakuRotAnmFrame += 2;
+ if (mFileWakuRotAnmFrame >= mpFileWakuRotAnm->getFrameMax()) {
+ mFileWakuRotAnmFrame -= mpFileWakuRotAnm->getFrameMax();
}
- field_0x148->setFrame(field_0x14c);
+ mpFileWakuRotAnm->setFrame(mFileWakuRotAnmFrame);
}
#else
#pragma push
@@ -1146,7 +1269,7 @@ void dMenu_save_c::memCardWatch() {
if (mpScrnExplain != NULL) {
u8 status = mpScrnExplain->getStatus();
if (status != 0 && (status == 3 || status == 4)) {
- mpScrnExplain->setForceSelect();
+ mpScrnExplain->onForceSelect();
}
}
mMenuProc = PROC_MEMCARD_CHECK;
@@ -1160,34 +1283,34 @@ void dMenu_save_c::memCardWatch() {
#ifdef NONMATCHING
void dMenu_save_c::saveQuestion() {
if (YesNoSelect()) {
- if (field_0x1b6 == 1) {
+ if (mYesNoCursor == CURSOR_YES) {
field_0x1c0 = 1;
- J2DPane* pane = mMenuSave.Scr->search('Nm_02');
+ J2DPane* pane = mSaveSel.Scr->search('Nm_02');
pane->setAnimation(field_0x40);
field_0xd2 = 0;
field_0x9c = 0;
field_0x17a = 0;
- strcpy(field_0x170[field_0x178], "");
- strcpy(field_0x170[field_0x178 ^ 1], "");
+ strcpy(mpHeaderTxt[mHeaderTxtType], "");
+ strcpy(mpHeaderTxt[mHeaderTxtType ^ 1], "");
field_0x64 = 0;
field_0x50 = 1;
field_0x40->setFrame(field_0x50);
pane->animationTransform();
pane->setAnimation((J2DAnmTransformKey*)NULL);
- field_0x168[0]->getPanePtr()->scale(1.0f, 1.0f);
- field_0x168[1]->getPanePtr()->scale(1.0f, 1.0f);
+ mpHeaderTxtPane[0]->getPanePtr()->scale(1.0f, 1.0f);
+ mpHeaderTxtPane[1]->getPanePtr()->scale(1.0f, 1.0f);
mMenuProc = PROC_SAVE_QUESTION2;
} else {
switch (mUseType) {
- case 3:
+ case TYPE_WHITE_EVENT:
mEndStatus = 1;
mSaveStatus = 3;
mMenuProc = PROC_SAVE_WAIT;
break;
- case 4:
+ case TYPE_BLACK_EVENT:
field_0x2190 = 0;
msgTxtSet(0x4E4, true); // To save your progress, press START then choose Save
mMenuProc = PROC_SAVE_GUIDE;
@@ -1208,90 +1331,99 @@ asm void dMenu_save_c::saveQuestion() {
#endif
/* 801F1558-801F1620 1EBE98 00C8+00 1/0 0/0 0/0 .text saveQuestion2__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::saveQuestion2() {
- nofralloc
-#include "asm/d/menu/d_menu_save/saveQuestion2__12dMenu_save_cFv.s"
+void dMenu_save_c::saveQuestion2() {
+ if (mpScrnExplain != NULL && mpScrnExplain->getStatus() == 0) {
+ if (mUseType == TYPE_BLACK_EVENT) {
+ mWaitTimer = g_msHIO.mFadeOutTimer;
+ mDoGph_gInf_c::startFadeOut(mWaitTimer);
+ field_0x21a0 = 1;
+ mMenuProc = PROC_SAVE_QUESTION21;
+ } else {
+ mDoGph_gInf_c::startFadeOut(1);
+ field_0x21a0 = 1;
+ mMenuProc = PROC_SAVE_QUESTION3;
+ }
+ }
}
-#pragma pop
/* 801F1620-801F1644 1EBF60 0024+00 1/0 0/0 0/0 .text saveQuestion21__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::saveQuestion21() {
- nofralloc
-#include "asm/d/menu/d_menu_save/saveQuestion21__12dMenu_save_cFv.s"
+void dMenu_save_c::saveQuestion21() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ mMenuProc = PROC_SAVE_QUESTION3;
}
-#pragma pop
/* 801F1644-801F16B8 1EBF84 0074+00 1/0 0/0 0/0 .text saveQuestion3__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::saveQuestion3() {
- nofralloc
-#include "asm/d/menu/d_menu_save/saveQuestion3__12dMenu_save_cFv.s"
+void dMenu_save_c::saveQuestion3() {
+ mDisplayMenu = true;
+ mWaitTimer = g_msHIO.mFadeOutTimer;
+ mDoGph_gInf_c::startFadeIn(mWaitTimer);
+ field_0x21a0 = 0;
+ mMenuProc = PROC_SAVE_QUESTION4;
}
-#pragma pop
/* 801F16B8-801F16F4 1EBFF8 003C+00 1/0 0/0 0/0 .text saveQuestion4__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::saveQuestion4() {
- nofralloc
-#include "asm/d/menu/d_menu_save/saveQuestion4__12dMenu_save_cFv.s"
+void dMenu_save_c::saveQuestion4() {
+ if (mDoRst::isReset()) {
+ return;
+ }
+
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ field_0x1bf = 0;
+ mMenuProc = PROC_MEMCARD_CHECK;
}
-#pragma pop
/* 801F16F4-801F1720 1EC034 002C+00 1/0 0/0 0/0 .text saveGuide__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::saveGuide() {
- nofralloc
-#include "asm/d/menu/d_menu_save/saveGuide__12dMenu_save_cFv.s"
+void dMenu_save_c::saveGuide() {
+ if (mpScrnExplain->getStatus() == 0) {
+ mEndStatus = 1;
+ mSaveStatus = 3;
+ mMenuProc = PROC_SAVE_WAIT;
+ }
}
-#pragma pop
/* 801F1720-801F191C 1EC060 01FC+00 2/0 0/0 0/0 .text memCardCheck__12dMenu_save_cFv */
// matches with literals
#ifdef NONMATCHING
void dMenu_save_c::memCardCheck() {
- u32 cardState = g_mDoMemCd_control.getStatus(0);
+ u32 cardStatus = g_mDoMemCd_control.getStatus(0);
- if (cardState != 14) {
- switch (cardState) {
+ if (cardStatus != 14) {
+ switch (cardStatus) {
case 0:
field_0x1c0 = 0;
errDispInitSet(0x3AB); // There is no Memory Card in Slot A.
field_0x9e = 0;
field_0x1b4 = 9;
- field_0x1b5 = 0x3d;
+ mErrProc = 0x3D;
break;
case 8:
field_0x1c0 = 0;
errDispInitSet(0x3AC); // The Memory Card in Slot A is damaged
field_0x9e = 0;
field_0x1b4 = 9;
- field_0x1b5 = 0x3d;
+ mErrProc = 0x3D;
break;
case 9:
field_0x1c0 = 0;
errDispInitSet(0x3AD); // Wrong Device in Slot A.
field_0x9e = 0;
field_0x1b4 = 9;
- field_0x1b5 = 0x3d;
+ mErrProc = 0x3D;
break;
case 10:
field_0x1c0 = 0;
errDispInitSet(0x3AE); // The Memory Card in Slot A is not compatible.
field_0x9e = 0;
field_0x1b4 = 9;
- field_0x1b5 = 0x3d;
+ mErrProc = 0x3D;
break;
case 6:
case 7:
@@ -1305,8 +1437,8 @@ void dMenu_save_c::memCardCheck() {
field_0x1c0 = 0;
errDispInitSet(0x3B4); // There is Insufficient space on the Memory Card in Slot A.
field_0x9e = 0;
- field_0x1cc = &iplSelMsgInitSet;
- field_0x1b5 = 10;
+ mpErrFunc = &iplSelMsgInitSet;
+ mErrProc = PROC_IPL_SELECT_DISP1;
field_0x1b4 = 9;
break;
case 2:
@@ -1317,8 +1449,8 @@ void dMenu_save_c::memCardCheck() {
field_0x1c0 = 0;
errDispInitSet(0x3C4); // There is no save for this game on the Memory Card in Slot A.
field_0x9e = 0;
- field_0x1cc = &gameFileMakeSelInitSet;
- field_0x1b5 = 0x17;
+ mpErrFunc = &gameFileMakeSelInitSet;
+ mErrProc = PROC_MAKE_GAME_FILE_SEL_DISP;
field_0x1b4 = 9;
break;
case 3:
@@ -1342,54 +1474,94 @@ asm void dMenu_save_c::memCardCheck() {
/* 801F191C-801F19A8 1EC25C 008C+00 1/0 0/0 0/0 .text memCardErrMsgWaitKey__12dMenu_save_cFv */
void dMenu_save_c::memCardErrMsgWaitKey() {
if (cAPICPad_ANY_BUTTON(PAD_1) && dMeter2Info_getMsgKeyWaitTimer() == 0) {
- if (field_0x1b5 == 0x3D) {
+ if (mErrProc == 0x3D) {
closeSelect();
} else {
- if (field_0x1cc != NULL) {
- (this->*field_0x1cc)();
+ if (mpErrFunc != NULL) {
+ (this->*mpErrFunc)();
}
- mMenuProc = field_0x1b5;
+ mMenuProc = mErrProc;
}
}
}
/* 801F19A8-801F19DC 1EC2E8 0034+00 1/1 0/0 0/0 .text backSaveQuestionInitSet__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::backSaveQuestionInitSet() {
- nofralloc
-#include "asm/d/menu/d_menu_save/backSaveQuestionInitSet__12dMenu_save_cFv.s"
+void dMenu_save_c::backSaveQuestionInitSet() {
+ field_0x2190 = 1;
+ mYesNoCursor = CURSOR_YES;
+ msgTxtSet(0x3CE, true); // Do you want to save?
}
-#pragma pop
/* 801F19DC-801F1A48 1EC31C 006C+00 1/0 0/0 0/0 .text backSaveQuestion__12dMenu_save_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::backSaveQuestion() {
- nofralloc
-#include "asm/d/menu/d_menu_save/backSaveQuestion__12dMenu_save_cFv.s"
+void dMenu_save_c::backSaveQuestion() {
+ mWaitTimer = g_msHIO.mFadeOutTimer;
+ mDoGph_gInf_c::startFadeOut(mWaitTimer);
+ field_0x21a0 = 1;
+ mMenuProc = PROC_BACK_SAVE_QUESTION2;
}
-#pragma pop
/* 801F1A48-801F1B38 1EC388 00F0+00 1/0 0/0 0/0 .text backSaveQuestion2__12dMenu_save_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::backSaveQuestion2() {
- nofralloc
-#include "asm/d/menu/d_menu_save/backSaveQuestion2__12dMenu_save_cFv.s"
+void dMenu_save_c::backSaveQuestion2() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ if (mUseType == TYPE_BLACK_EVENT) {
+ if (field_0x21a2 == 1) {
+ field_0x2190 = 0;
+ mYesNoCursor = CURSOR_YES;
+ msgTxtSet(0x4E4, true); // To save your progress, press START then choose Save
+ } else {
+ backSaveQuestionInitSet();
+ }
+ } else {
+ backSaveQuestionInitSet();
+ }
+
+ mDoGph_gInf_c::startFadeIn(1);
+ field_0x21a0 = 0;
+ field_0x1c0 = 0;
+ field_0x1bf = 1;
+ mDisplayMenu = false;
+
+ if (mUseType == TYPE_BLACK_EVENT) {
+ if (field_0x21a2 == 1) {
+ mMenuProc = PROC_SAVE_GUIDE;
+ } else {
+ mMenuProc = PROC_SAVE_QUESTION;
+ }
+ } else {
+ mMenuProc = PROC_SAVE_QUESTION;
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 80454478-8045447C 002A78 0004+00 16/16 0/0 0/0 .sdata2 @4879 */
SECTION_SDATA2 static f32 lit_4879 = -1.0f;
/* 801F1B38-801F1BF8 1EC478 00C0+00 5/5 0/0 0/0 .text closeSelect__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::closeSelect() {
+ mDoAud_seStart(Z2SE_SY_MENU_BACK, NULL, 0, 0);
+ mSelIcon->setAlphaRate(0.0f);
+
+ if (mUseType != TYPE_WHITE_EVENT && mUseType != TYPE_BLACK_EVENT) {
+ mSaveStatus = 3;
+ if (dMeter2Info_getMiniGameItemSetFlag() != 0) {
+ dMeter2Info_setMiniGameItem(dMeter2Info_getMiniGameItemSetFlag());
+ }
+ mMenuProc = PROC_SAVE_WAIT;
+ } else {
+ field_0x1bf = 1;
+ field_0x21a2 = 0;
+ mMenuProc = PROC_BACK_SAVE_QUESTION;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1398,8 +1570,18 @@ asm void dMenu_save_c::closeSelect() {
#include "asm/d/menu/d_menu_save/closeSelect__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F1BF8-801F1C70 1EC538 0078+00 2/2 0/0 0/0 .text closeSelect2__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::closeSelect2() {
+ mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0);
+ mSelIcon->setAlphaRate(0.0f);
+ field_0x21a2 = 1;
+ mMenuProc = PROC_BACK_SAVE_QUESTION;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1408,6 +1590,7 @@ asm void dMenu_save_c::closeSelect2() {
#include "asm/d/menu/d_menu_save/closeSelect2__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F1C70-801F1C94 1EC5B0 0024+00 1/0 0/0 0/0 .text iplSelMsgInitSet__12dMenu_save_cFv
*/
@@ -1416,16 +1599,24 @@ void dMenu_save_c::iplSelMsgInitSet() {
}
/* 801F1C94-801F1CEC 1EC5D4 0058+00 1/0 0/0 0/0 .text iplSelInitSet__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::iplSelInitSet() {
- nofralloc
-#include "asm/d/menu/d_menu_save/iplSelInitSet__12dMenu_save_cFv.s"
+void dMenu_save_c::iplSelInitSet() {
+ errorTxtSet(0x3C0); // Would you like to manage the contents of your Memory Card?
+ mYesNoCursor = CURSOR_NO;
+ ketteiTxtDispAnmInit(1);
+ yesnoMenuMoveAnmInitSet(2999, 3009, 0);
}
-#pragma pop
/* 801F1CEC-801F1D54 1EC62C 0068+00 1/0 0/0 0/0 .text IPLSelectDisp1__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::IPLSelectDisp1() {
+ if (errorTxtChangeAnm() == true) {
+ mpErrFunc = &iplSelInitSet;
+ mErrProc = PROC_IPL_SELECT_DISP2;
+ mMenuProc = PROC_MEMCARD_ERRMSG_WAIT_KEY;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1434,109 +1625,148 @@ asm void dMenu_save_c::IPLSelectDisp1() {
#include "asm/d/menu/d_menu_save/IPLSelectDisp1__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F1D54-801F1DD4 1EC694 0080+00 1/0 0/0 0/0 .text IPLSelectDisp2__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::IPLSelectDisp2() {
- nofralloc
-#include "asm/d/menu/d_menu_save/IPLSelectDisp2__12dMenu_save_cFv.s"
+void dMenu_save_c::IPLSelectDisp2() {
+ bool txtAnmComplete = errorTxtChangeAnm();
+ bool moveAnmComplete = yesnoMenuMoveAnm();
+ bool ketteiAnmComplete = ketteiTxtDispAnm();
+
+ if (txtAnmComplete == true && moveAnmComplete == true && ketteiAnmComplete == true) {
+ yesnoCursorShow();
+ mMenuProc = PROC_MEMCARD_ERR_GO_IPL_SEL;
+ }
}
-#pragma pop
/* 801F1DD4-801F1E58 1EC714 0084+00 1/0 0/0 0/0 .text memCardErrGoIPLSel__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::memCardErrGoIPLSel() {
- nofralloc
-#include "asm/d/menu/d_menu_save/memCardErrGoIPLSel__12dMenu_save_cFv.s"
+void dMenu_save_c::memCardErrGoIPLSel() {
+ if (errYesNoSelect(1, 0)) {
+ if (mYesNoCursor != CURSOR_NO) {
+ errorTxtSet(0x3BD); // The current game data will not be saved
+ mYesNoPrevCursor = mYesNoCursor;
+ mYesNoCursor = CURSOR_NO;
+ yesnoSelectAnmSet(1);
+ mMenuProc = PROC_IPL_SELECT2_DISP;
+ } else {
+ closeSelect();
+ }
+ }
}
-#pragma pop
/* 801F1E58-801F1EE0 1EC798 0088+00 1/0 0/0 0/0 .text IPLSelect2Disp__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::IPLSelect2Disp() {
- nofralloc
-#include "asm/d/menu/d_menu_save/IPLSelect2Disp__12dMenu_save_cFv.s"
+void dMenu_save_c::IPLSelect2Disp() {
+ bool txtAnmComplete = errorTxtChangeAnm();
+ bool moveAnmComplete = yesnoSelectMoveAnm(1);
+ bool wakuAnmComplete = yesnoWakuAlpahAnm(mYesNoPrevCursor);
+
+ if (txtAnmComplete == true && moveAnmComplete == true && wakuAnmComplete == true) {
+ yesnoCursorShow();
+ mMenuProc = PROC_MEMCARD_ERR_GO_IPL_SEL2;
+ }
}
-#pragma pop
/* 801F1EE0-801F1F80 1EC820 00A0+00 1/0 0/0 0/0 .text memCardErrGoIPLSel2__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::memCardErrGoIPLSel2() {
- nofralloc
-#include "asm/d/menu/d_menu_save/memCardErrGoIPLSel2__12dMenu_save_cFv.s"
+void dMenu_save_c::memCardErrGoIPLSel2() {
+ if (errYesNoSelect(1, 0)) {
+ if (mYesNoCursor != CURSOR_NO) {
+ field_0x1bf = 1;
+ mWaitTimer = g_msHIO.mFadeOutTimer;
+ mDoGph_gInf_c::startFadeOut(mWaitTimer);
+ field_0x21a0 = 1;
+ mMenuProc = PROC_MEMCARD_ERR_GOTO_IPL;
+ } else {
+ closeSelect();
+ }
+ }
}
-#pragma pop
/* 801F1F80-801F2000 1EC8C0 0080+00 1/0 0/0 0/0 .text memCardErrGotoIPL__12dMenu_save_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::memCardErrGotoIPL() {
- nofralloc
-#include "asm/d/menu/d_menu_save/memCardErrGotoIPL__12dMenu_save_cFv.s"
+void dMenu_save_c::memCardErrGotoIPL() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ field_0x21a1 = 1;
+ mDoGph_gInf_c::startFadeIn(0);
+ field_0x21a0 = 0;
+ mDoRst::onShutdown();
}
-#pragma pop
/* 801F2000-801F20AC 1EC940 00AC+00 1/0 0/0 0/0 .text memCardErrMsgWaitFormatSel__12dMenu_save_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::memCardErrMsgWaitFormatSel() {
- nofralloc
-#include "asm/d/menu/d_menu_save/memCardErrMsgWaitFormatSel__12dMenu_save_cFv.s"
+void dMenu_save_c::memCardErrMsgWaitFormatSel() {
+ if (errYesNoSelect(1, 0)) {
+ if (mYesNoCursor != CURSOR_NO) {
+ errorTxtSet(0x3B9); // Formatting the Card in Slot A will erase all save data
+ mYesNoPrevCursor = mYesNoCursor;
+ mYesNoCursor = CURSOR_NO;
+ yesnoSelectAnmSet(1);
+ mMenuProc = PROC_CARD_FORMAT_YES_SEL_DISP;
+ } else {
+ errorTxtSet(0x3BC); // Unable to save. The Card in Slot A cannot be used
+ field_0x9e = 0;
+ yesnoMenuMoveAnmInitSet(3009, 2999, 0);
+ mMenuProc = PROC_CARD_FORMAT_NO_SEL_DISP;
+ }
+ }
}
-#pragma pop
/* 801F20AC-801F2134 1EC9EC 0088+00 1/0 0/0 0/0 .text cardFormatYesSelDisp__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::cardFormatYesSelDisp() {
- nofralloc
-#include "asm/d/menu/d_menu_save/cardFormatYesSelDisp__12dMenu_save_cFv.s"
+void dMenu_save_c::cardFormatYesSelDisp() {
+ bool txtChangeAnm = errorTxtChangeAnm();
+ bool moveAnm = yesnoSelectMoveAnm(1);
+ bool wakuAlphaAnm = yesnoWakuAlpahAnm(mYesNoPrevCursor);
+
+ if (txtChangeAnm == true && moveAnm == true && wakuAlphaAnm == true) {
+ yesnoCursorShow();
+ mMenuProc = PROC_MEMCARD_ERRMSG_WAIT_FORMAT_SEL2;
+ }
}
-#pragma pop
/* 801F2134-801F219C 1ECA74 0068+00 1/0 0/0 0/0 .text cardFormatNoSelDisp__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::cardFormatNoSelDisp() {
- nofralloc
-#include "asm/d/menu/d_menu_save/cardFormatNoSelDisp__12dMenu_save_cFv.s"
+void dMenu_save_c::cardFormatNoSelDisp() {
+ bool txtChangeAnm = errorTxtChangeAnm();
+ bool moveAnm = yesnoMenuMoveAnm();
+
+ if (txtChangeAnm == true && moveAnm == true) {
+ mMenuProc = PROC_MEMCARD_ERRMSG_WAIT_KEY;
+ mErrProc = 0x3D;
+ }
}
-#pragma pop
/* 801F219C-801F2250 1ECADC 00B4+00 1/0 0/0 0/0 .text
* memCardErrMsgWaitFormatSel2__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::memCardErrMsgWaitFormatSel2() {
- nofralloc
-#include "asm/d/menu/d_menu_save/memCardErrMsgWaitFormatSel2__12dMenu_save_cFv.s"
+void dMenu_save_c::memCardErrMsgWaitFormatSel2() {
+ if (errYesNoSelect(1, 0)) {
+ if (mYesNoCursor != CURSOR_NO) {
+ field_0x1bf = 1;
+ errorTxtSet(0x3B8); // Formatting...
+ field_0x9e = 0;
+ yesnoMenuMoveAnmInitSet(3009, 2999, 0);
+ mMenuProc = PROC_CARD_FORMAT_YES_SEL2_DISP;
+ } else {
+ errorTxtSet(0x3BC); // Unable to save. The Card in Slot A cannot be used
+ field_0x9e = 0;
+ yesnoMenuMoveAnmInitSet(3009, 2999, 0);
+ mMenuProc = PROC_CARD_FORMAT_NO_SEL_DISP;
+ }
+ }
}
-#pragma pop
/* 801F2250-801F22CC 1ECB90 007C+00 1/0 0/0 0/0 .text cardFormatYesSel2Disp__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::cardFormatYesSel2Disp() {
- nofralloc
-#include "asm/d/menu/d_menu_save/cardFormatYesSel2Disp__12dMenu_save_cFv.s"
+void dMenu_save_c::cardFormatYesSel2Disp() {
+ bool txtChangeAnm = errorTxtChangeAnm();
+ bool moveAnm = yesnoMenuMoveAnm();
+
+ if (txtChangeAnm == true && moveAnm == true) {
+ mWaitTimer = g_msHIO.mCardWaitFrames;
+ g_mDoMemCd_control.command_format();
+ mMenuProc = PROC_MEMCARD_FORMAT;
+ }
}
-#pragma pop
/* 801F22CC-801F232C 1ECC0C 0060+00 1/0 0/0 0/0 .text memCardFormat__12dMenu_save_cFv */
void dMenu_save_c::memCardFormat() {
@@ -1553,20 +1783,26 @@ void dMenu_save_c::memCardFormat() {
/* 801F232C-801F23A4 1ECC6C 0078+00 1/0 0/0 0/0 .text memCardFormatWait__12dMenu_save_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::memCardFormatWait() {
- nofralloc
-#include "asm/d/menu/d_menu_save/memCardFormatWait__12dMenu_save_cFv.s"
+void dMenu_save_c::memCardFormatWait() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ if (mCmdState == 2) {
+ errorTxtSet(0x399); // An error might have occurred in formatting.
+ mMenuProc = PROC_MEMCARD_COMMAND_END;
+ } else if (mCmdState == 1) {
+ errorTxtSet(0x39A); // Formatted.
+ mMenuProc = PROC_MEMCARD_COMMAND_END;
+ }
}
-#pragma pop
/* 801F23A4-801F23FC 1ECCE4 0058+00 1/0 0/0 0/0 .text gameFileMakeSelInitSet__12dMenu_save_cFv */
void dMenu_save_c::gameFileMakeSelInitSet() {
errorTxtSet(0x3C1); // Create a save file on the Memory Card in Slot A?
ketteiTxtDispAnmInit(1);
- field_0x1b6 = 0;
+ mYesNoCursor = CURSOR_NO;
yesnoMenuMoveAnmInitSet(2999, 3009, 0);
}
@@ -1585,7 +1821,7 @@ void dMenu_save_c::makeGameFileSelDisp() {
/* 801F247C-801F2514 1ECDBC 0098+00 1/0 0/0 0/0 .text memCardMakeGameFileSel__12dMenu_save_cFv */
void dMenu_save_c::memCardMakeGameFileSel() {
if (errYesNoSelect(1, 0)) {
- if (field_0x1b6 != 0) {
+ if (mYesNoCursor != CURSOR_NO) {
field_0x1bf = 1;
errorTxtSet(0x3C5); // Creating a file...
ketteiTxtDispAnmInit(0);
@@ -1614,63 +1850,81 @@ void dMenu_save_c::makeGameFileDisp() {
}
/* 801F25AC-801F260C 1ECEEC 0060+00 1/0 0/0 0/0 .text memCardMakeGameFile__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::memCardMakeGameFile() {
- nofralloc
-#include "asm/d/menu/d_menu_save/memCardMakeGameFile__12dMenu_save_cFv.s"
+void dMenu_save_c::memCardMakeGameFile() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ }
+
+ mCmdState = g_mDoMemCd_control.SaveSync();
+
+ if (mCmdState != 0) {
+ mMenuProc = PROC_MEMCARD_MAKE_GAME_FILE_WAIT;
+ }
}
-#pragma pop
/* 801F260C-801F2698 1ECF4C 008C+00 1/0 0/0 0/0 .text memCardMakeGameFileWait__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::memCardMakeGameFileWait() {
- nofralloc
-#include "asm/d/menu/d_menu_save/memCardMakeGameFileWait__12dMenu_save_cFv.s"
+void dMenu_save_c::memCardMakeGameFileWait() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ if (mCmdState == 2) {
+ errorTxtSet(0x3C6); // An error might have occurred when creating a save file.
+ mMenuProc = PROC_MEMCARD_COMMAND_END;
+ } else if (mCmdState == 1) {
+ dComIfGs_setNewFile(1);
+ errorTxtSet(0x3C7); // A save file has been created.
+ mMenuProc = PROC_MEMCARD_COMMAND_END;
+ }
}
-#pragma pop
/* 801F2698-801F2708 1ECFD8 0070+00 1/0 0/0 0/0 .text memCardCommandEnd__12dMenu_save_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::memCardCommandEnd() {
- nofralloc
-#include "asm/d/menu/d_menu_save/memCardCommandEnd__12dMenu_save_cFv.s"
+void dMenu_save_c::memCardCommandEnd() {
+ if (errorTxtChangeAnm() == true) {
+ mpErrFunc = NULL;
+ mErrProc = PROC_MEMCARD_CHECK;
+ mMenuProc = PROC_MEMCARD_ERRMSG_WAIT_KEY;
+ field_0x1bf = 0;
+ }
}
-#pragma pop
/* 801F2708-801F27CC 1ED048 00C4+00 1/0 0/0 0/0 .text memCardCommandEnd2__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::memCardCommandEnd2() {
- nofralloc
-#include "asm/d/menu/d_menu_save/memCardCommandEnd2__12dMenu_save_cFv.s"
+void dMenu_save_c::memCardCommandEnd2() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool ketteiDispAnm = ketteiTxtDispAnm();
+ bool modoruDispAnm = modoruTxtDispAnm();
+ u32 check = mWarning->getStatus() != 0;
+
+ if (headerTxtChanged == true && ketteiDispAnm == true && modoruDispAnm == true && check == 1) {
+ mpErrFunc = NULL;
+ mErrProc = PROC_MEMCARD_CHECK;
+ mMenuProc = PROC_MEMCARD_ERRMSG_WAIT_KEY;
+ field_0x1bf = 0;
+ }
}
-#pragma pop
/* 801F27CC-801F2840 1ED10C 0074+00 1/0 0/0 0/0 .text memCardDataLoadWait__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::memCardDataLoadWait() {
- nofralloc
-#include "asm/d/menu/d_menu_save/memCardDataLoadWait__12dMenu_save_cFv.s"
+void dMenu_save_c::memCardDataLoadWait() {
+ int cardState = g_mDoMemCd_control.LoadSync(mSaveBuffer, sizeof(mSaveBuffer), 0);
+ if (cardState != 0) {
+ if (cardState == 2) {
+ field_0x1c0 = 0;
+ mMenuProc = PROC_MEMCARD_CHECK;
+ } else if (cardState == 1) {
+ saveSelectOpenInit();
+ }
+ }
}
-#pragma pop
/* 801F2840-801F28E4 1ED180 00A4+00 2/2 0/0 0/0 .text dataWrite__12dMenu_save_cFv */
void dMenu_save_c::dataWrite() {
int stageNo = i_dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo());
dComIfGs_putSave(stageNo);
- dComIfGs_setMemoryToCard(mSaveBuffer, field_0x54);
- mDoMemCdRWm_SetCheckSumGameData(mSaveBuffer, field_0x54);
+ dComIfGs_setMemoryToCard(mSaveBuffer, mSelectedFile);
+ mDoMemCdRWm_SetCheckSumGameData(mSaveBuffer, mSelectedFile);
u8* save = mSaveBuffer;
for (int i = 0; i < 3; i++) {
@@ -1716,6 +1970,44 @@ asm void dMenu_save_c::memCardDataSaveWait() {
#endif
/* 801F298C-801F2B5C 1ED2CC 01D0+00 1/0 0/0 0/0 .text memCardDataSaveWait2__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::memCardDataSaveWait2() {
+ if (mWaitTimer != 0) {
+ i_mDoAud_seStartLevel(Z2SE_SY_FILE_SAVE_LEVEL, NULL, 0, 0);
+ mWaitTimer--;
+ return;
+ }
+
+ if (mCmdState == 1) {
+ mDoAud_seStart(Z2SE_SY_FILE_SAVE_OK, NULL, 0, 0);
+ dComIfGs_setDataNum(mSelectedFile);
+ dComIfGs_setNoFile(0);
+
+ if (mUseType == TYPE_WHITE_EVENT || mUseType == TYPE_BLACK_EVENT) {
+ headerTxtSet(0x530); // Saved.
+ mWarning->closeInit();
+ ketteiTxtDispAnmInit(1);
+ mMenuProc = PROC_SAVE_END;
+ } else {
+ headerTxtSet(0x3CA); // Saved. Continue Playing?
+ mWarning->closeInit();
+ mYesNoCursor = CURSOR_YES;
+ yesnoMenuMoveAnmInitSet(2259, 2249, 1);
+ ketteiTxtDispAnmInit(1);
+ mMenuProc = PROC_GAME_CONTINUE_DISP;
+ }
+ setSaveData();
+ } else if (mCmdState == 2) {
+ mDoAud_seStart(Z2SE_SY_FILE_ERROR, NULL, 0, 0);
+ headerTxtSet(0x3CD); // An error might have occurred when saving.
+ mWarning->closeInit();
+ ketteiTxtDispAnmInit(1);
+ modoruTxtDispAnmInit(1);
+ mMenuProc = PROC_MEMCARD_COMMAND_END2;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1724,19 +2016,72 @@ asm void dMenu_save_c::memCardDataSaveWait2() {
#include "asm/d/menu/d_menu_save/memCardDataSaveWait2__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F2B5C-801F2BF8 1ED49C 009C+00 1/0 0/0 0/0 .text gameContinueDisp__12dMenu_save_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::gameContinueDisp() {
- nofralloc
-#include "asm/d/menu/d_menu_save/gameContinueDisp__12dMenu_save_cFv.s"
+void dMenu_save_c::gameContinueDisp() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool moveAnm = yesnoMenuMoveAnm();
+ bool ketteiDispAnm = ketteiTxtDispAnm();
+ u32 check = mWarning->getStatus() != 0;
+
+ if (headerTxtChanged == true && moveAnm == true && ketteiDispAnm == true && check == 1) {
+ yesnoCursorShow();
+ mMenuProc = PROC_GAME_CONTINUE;
+ }
}
-#pragma pop
/* 801F2BF8-801F2D78 1ED538 0180+00 1/0 0/0 0/0 .text gameContinue__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::gameContinue() {
+ if (errYesNoSelect(0, 1)) {
+ if (mYesNoCursor == CURSOR_YES) {
+ mDoAud_seStart(Z2SE_SY_CONTINUE_OK, NULL, 0, 0);
+
+ switch (mUseType) {
+ case TYPE_WHITE_EVENT:
+ break;
+ case TYPE_DEFAULT:
+ case 2:
+ case TYPE_BLACK_EVENT:
+ mEndStatus = 1;
+ if (dMeter2Info_getMiniGameItemSetFlag()) {
+ dMeter2Info_setMiniGameItem(dMeter2Info_getMiniGameItemSetFlag());
+ }
+ break;
+ }
+ mSelIcon->setAlphaRate(0.0f);
+ mSaveStatus = 4;
+
+ if (mUseType == TYPE_BLACK_EVENT) {
+ closeSelect2();
+ } else {
+ mMenuProc = PROC_SAVE_WAIT;
+ }
+ return;
+ }
+
+ mDoAud_seStart(Z2SE_QUIT_GAME, NULL, 0, 0);
+
+ if (mUseType == 2 || mUseType == TYPE_WHITE_EVENT) {
+ mWaitTimer = 15;
+ mMenuProc = PROC_GAME_CONTINUE3;
+ return;
+ }
+
+ if (mUseType == TYPE_BLACK_EVENT) {
+ mSaveStatus = 4;
+ closeSelect2();
+ return;
+ }
+
+ mWaitTimer = 30;
+ mMenuProc = PROC_GAME_CONTINUE2;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1745,107 +2090,140 @@ asm void dMenu_save_c::gameContinue() {
#include "asm/d/menu/d_menu_save/gameContinue__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F2D78-801F2DA0 1ED6B8 0028+00 1/0 0/0 0/0 .text gameContinue2__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::gameContinue2() {
- nofralloc
-#include "asm/d/menu/d_menu_save/gameContinue2__12dMenu_save_cFv.s"
+void dMenu_save_c::gameContinue2() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ mDoRst::onReset();
}
-#pragma pop
/* 801F2DA0-801F2DD4 1ED6E0 0034+00 1/0 0/0 0/0 .text gameContinue3__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::gameContinue3() {
- nofralloc
-#include "asm/d/menu/d_menu_save/gameContinue3__12dMenu_save_cFv.s"
+void dMenu_save_c::gameContinue3() {
+ if (mWaitTimer != 0) {
+ mWaitTimer--;
+ return;
+ }
+
+ mMenuProc = PROC_SAVE_WAIT;
+ mSaveStatus = 3;
+ mEndStatus = 0;
}
-#pragma pop
/* 801F2DD4-801F2E88 1ED714 00B4+00 1/0 0/0 0/0 .text saveEnd__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::saveEnd() {
- nofralloc
-#include "asm/d/menu/d_menu_save/saveEnd__12dMenu_save_cFv.s"
+void dMenu_save_c::saveEnd() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool ketteiDispAnm = ketteiTxtDispAnm();
+ u32 check = mWarning->getStatus() != 0;
+
+ if (headerTxtChanged == true && ketteiDispAnm == true && check == 1) {
+ if (mUseType == TYPE_BLACK_EVENT) {
+ mSaveStatus = 4;
+ closeSelect2();
+ } else {
+ mEndStatus = 1;
+ restartInit();
+ mSaveStatus = 3;
+ mMenuProc = PROC_SAVE_WAIT;
+ }
+ }
}
-#pragma pop
/* 801F2E88-801F2F08 1ED7C8 0080+00 1/0 0/0 0/0 .text endingNoSave__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::endingNoSave() {
- nofralloc
-#include "asm/d/menu/d_menu_save/endingNoSave__12dMenu_save_cFv.s"
+void dMenu_save_c::endingNoSave() {
+ if (YesNoSelect()) {
+ if (mYesNoCursor != CURSOR_NO) {
+ mEndStatus = 0;
+ mMenuProc = PROC_SAVE_WAIT;
+ mSaveStatus = 3;
+ } else {
+ field_0x2190 = 1;
+ mYesNoCursor = CURSOR_YES;
+ msgTxtSet(0x3CF, false); // Do you want to continue playing?
+ mMenuProc = PROC_ENDING_NO_SAVE2;
+ }
+ }
}
-#pragma pop
/* 801F2F08-801F2F38 1ED848 0030+00 1/0 0/0 0/0 .text endingNoSave2__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::endingNoSave2() {
- nofralloc
-#include "asm/d/menu/d_menu_save/endingNoSave2__12dMenu_save_cFv.s"
+void dMenu_save_c::endingNoSave2() {
+ if (mpScrnExplain != NULL && mpScrnExplain->getStatus() == 0) {
+ field_0x2190 = 0;
+ }
+
+ mYesNoCursor = CURSOR_NO;
+ mMenuProc = PROC_SAVE_QUESTION;
}
-#pragma pop
/* 801F2F38-801F2F4C 1ED878 0014+00 1/0 0/0 0/0 .text endingDataCheck__12dMenu_save_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::endingDataCheck() {
- nofralloc
-#include "asm/d/menu/d_menu_save/endingDataCheck__12dMenu_save_cFv.s"
+void dMenu_save_c::endingDataCheck() {
+ mMenuProc = PROC_SAVE_WAIT;
+ mSaveStatus = 3;
}
-#pragma pop
/* 801F2F4C-801F2FB4 1ED88C 0068+00 1/0 0/0 0/0 .text retryQuestion0__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::retryQuestion0() {
- nofralloc
-#include "asm/d/menu/d_menu_save/retryQuestion0__12dMenu_save_cFv.s"
+void dMenu_save_c::retryQuestion0() {
+ if (Z2GetAudioMgr()->mSeqMgr.checkBgmIDPlaying(Z2BGM_GAME_OVER) != true) {
+ mYesNoCursor = CURSOR_YES;
+ msgTxtSet(0x4BC, false); // Retry?
+ mMenuProc = PROC_RETRY_QUESTION1;
+ }
}
-#pragma pop
/* 801F2FB4-801F3040 1ED8F4 008C+00 1/0 0/0 0/0 .text retryQuestion1__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::retryQuestion1() {
- nofralloc
-#include "asm/d/menu/d_menu_save/retryQuestion1__12dMenu_save_cFv.s"
+void dMenu_save_c::retryQuestion1() {
+ if (YesNoSelect()) {
+ if (mYesNoCursor == CURSOR_YES) {
+ mEndStatus = 1;
+ restartInit();
+ mSaveStatus = 3;
+ mMenuProc = PROC_SAVE_WAIT;
+ } else {
+ field_0x2190 = 1;
+ mYesNoCursor = CURSOR_NO;
+ msgTxtSet(0x4BF, false); // Return to the title screen?
+ mMenuProc = PROC_RETRY_QUESTION2;
+ }
+ }
}
-#pragma pop
/* 801F3040-801F30B8 1ED980 0078+00 1/0 0/0 0/0 .text retryQuestion2__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::retryQuestion2() {
- nofralloc
-#include "asm/d/menu/d_menu_save/retryQuestion2__12dMenu_save_cFv.s"
+void dMenu_save_c::retryQuestion2() {
+ if (YesNoSelect()) {
+ if (mYesNoCursor == CURSOR_YES) {
+ mWaitTimer = 15;
+ mMenuProc = PROC_GAME_CONTINUE3;
+ } else {
+ field_0x2190 = 1;
+ mYesNoCursor = CURSOR_YES;
+ msgTxtSet(0x4BC, false); // Retry?
+ mMenuProc = PROC_RETRY_QUESTION1;
+ }
+ }
}
-#pragma pop
/* 801F30B8-801F31B0 1ED9F8 00F8+00 2/2 0/0 0/0 .text restartInit__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::restartInit() {
- nofralloc
-#include "asm/d/menu/d_menu_save/restartInit__12dMenu_save_cFv.s"
+void dMenu_save_c::restartInit() {
+ // if monkey lantern sequence not completed
+ if (!i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[226])) {
+ dComIfGs_offEventBit(dSv_event_flag_c::saveBitLabels[224]); // Lantern stolen
+ dComIfGs_offEventBit(dSv_event_flag_c::saveBitLabels[225]); // Monkey dropped lantern
+ }
+
+ if (i_dComIfGs_isItemFirstBit(KANTERA) && dComIfGs_getItem(SLOT_1, true) == NO_ITEM) {
+ dComIfGs_setItem(SLOT_1, KANTERA);
+ dComIfGs_setOil(dMeter2Info_getOilGaugeBackUp());
+ }
+
+ if (dMeter2Info_getMiniGameItemSetFlag()) {
+ dMeter2Info_setMiniGameItem(dMeter2Info_getMiniGameItemSetFlag());
+ }
}
-#pragma pop
/* 801F31B0-801F31B4 1EDAF0 0004+00 1/0 0/0 0/0 .text saveWait__12dMenu_save_cFv */
void dMenu_save_c::saveWait() {
@@ -1853,16 +2231,89 @@ void dMenu_save_c::saveWait() {
}
/* 801F31B4-801F328C 1EDAF4 00D8+00 1/0 0/0 0/0 .text messageChange__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::messageChange() {
- nofralloc
-#include "asm/d/menu/d_menu_save/messageChange__12dMenu_save_cFv.s"
+void dMenu_save_c::messageChange() {
+ if (mpScrnExplain != NULL) {
+ field_0x219d = mpScrnExplain->getStatus();
+
+ u8 explainStatus = mpScrnExplain->getStatus();
+ if (explainStatus != 0) {
+ if (explainStatus == 3 || explainStatus == 4) {
+ mpScrnExplain->onForceSelect();
+ }
+ mpScrnExplain->move();
+ return;
+ }
+
+ bool var_r3;
+ if (field_0x2190 == 1) {
+ var_r3 = mpScrnExplain->openExplain(field_0x2192, 1, mYesNoCursor == CURSOR_NO, -1,
+ field_0x219c);
+ mpScrnExplain->setKeyWaitTimer(30);
+ } else {
+ var_r3 = mpScrnExplain->openExplain(field_0x2192, 0, 0, -1, true);
+ }
+
+ if (var_r3 == true) {
+ mMenuProc = field_0x2194;
+ }
+ }
}
-#pragma pop
/* 801F328C-801F34BC 1EDBCC 0230+00 4/4 0/0 0/0 .text YesNoSelect__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+int dMenu_save_c::YesNoSelect() {
+ int ret = 0;
+
+ if (mDoRst::isReset()) {
+ return 0;
+ }
+
+ if (mpScrnExplain == NULL) {
+ return 0;
+ }
+
+ if (field_0x219d != 5 && mpScrnExplain->getStatus() == 5) {
+ switch (mpScrnExplain->getSelectCursor()) {
+ case 0:
+ if (mMenuProc == PROC_RETRY_QUESTION2) {
+ mDoAud_seStart(Z2SE_QUIT_GAME, NULL, 0, 0);
+ } else if (mMenuProc == PROC_RETRY_QUESTION1) {
+ mDoAud_seStart(Z2SE_SY_CONTINUE_OK, NULL, 0, 0);
+ } else {
+ mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0);
+ }
+ break;
+ case 1:
+ Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_CURSOR_CANCEL, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
+ -1.0f, 0);
+ break;
+ case 255:
+ Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_CURSOR_CANCEL, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
+ -1.0f, 0);
+ break;
+ }
+ }
+
+ if (mpScrnExplain->getStatus() == 0) {
+ field_0x2190 = 0;
+ switch (mpScrnExplain->getSelectCursor()) {
+ case 0:
+ mYesNoCursor = CURSOR_YES;
+ break;
+ case 1:
+ mYesNoCursor = CURSOR_NO;
+ break;
+ case 255:
+ mYesNoCursor = 2;
+ break;
+ }
+ ret = 1;
+ }
+
+ return ret;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1871,6 +2322,7 @@ asm int dMenu_save_c::YesNoSelect() {
#include "asm/d/menu/d_menu_save/YesNoSelect__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F34BC-801F3588 1EDDFC 00CC+00 8/8 0/0 0/0 .text msgTxtSet__12dMenu_save_cFUsb */
void dMenu_save_c::msgTxtSet(u16 msgID, bool param_1) {
@@ -1880,7 +2332,7 @@ void dMenu_save_c::msgTxtSet(u16 msgID, bool param_1) {
if (mpScrnExplain == NULL) {
check = false;
} else if (field_0x2190 == 1) {
- check = mpScrnExplain->openExplain(msgID, 1, field_0x1b6 == 0, 0xFF, param_1);
+ check = mpScrnExplain->openExplain(msgID, 1, mYesNoCursor == CURSOR_NO, 0xFF, param_1);
mpScrnExplain->setKeyWaitTimer(30);
} else {
check = mpScrnExplain->openExplain(msgID, 0, 0, 0xFF, true);
@@ -1898,6 +2350,35 @@ void dMenu_save_c::msgTxtSet(u16 msgID, bool param_1) {
}
/* 801F3588-801F36B4 1EDEC8 012C+00 1/0 0/0 0/0 .text openSaveSelect__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::openSaveSelect() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+
+ bool dataMoveAnmComplete = true;
+ if (field_0x64 != 0 || field_0x65 != 0) {
+ dataMoveAnmComplete = selectDataBaseMoveAnm();
+ }
+
+ bool errMoveAnmComplete = true;
+ if (field_0xd2 != 0 || field_0xd3 != 0) {
+ errMoveAnmComplete = errorMoveAnm();
+ }
+
+ bool yesnoMoveAnmComplete = true;
+ if (field_0x9c != 0 || field_0x9d != 0) {
+ yesnoMoveAnmComplete = yesnoMenuMoveAnm();
+ }
+
+ if (headerTxtChanged == true && dataMoveAnmComplete == true && errMoveAnmComplete == true &&
+ yesnoMoveAnmComplete == true) {
+ headerTxtSet(0x4CA); // Save to which log?
+ saveSelectOpenAnmSet();
+ mDoAud_seStart(Z2SE_SY_FILE_MENU_SLIDE_IN, NULL, 0, 0);
+ mMenuProc = PROC_OPEN_SAVE_SELECT2;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1906,20 +2387,62 @@ asm void dMenu_save_c::openSaveSelect() {
#include "asm/d/menu/d_menu_save/openSaveSelect__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F36B4-801F37A0 1EDFF4 00EC+00 1/0 0/0 0/0 .text openSaveSelect2__12dMenu_save_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::openSaveSelect2() {
- nofralloc
-#include "asm/d/menu/d_menu_save/openSaveSelect2__12dMenu_save_cFv.s"
+void dMenu_save_c::openSaveSelect2() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool dataMoveAnm = selectDataBaseMoveAnm();
+
+ if (headerTxtChanged == true && dataMoveAnm == true) {
+ modoruTxtDispAnmInit(1);
+ mSelectedFile = dComIfGs_getDataNum();
+ mLastSelFile = mSelectedFile;
+ mpBookWaku[mSelectedFile]->alphaAnimeStart(0);
+ mpSelData[mSelectedFile]->getPanePtr()->setAnimation(field_0x40);
+ field_0x74[mSelectedFile] = SelStartFrameTbl[mSelectedFile];
+ ketteiTxtDispAnmInit(1);
+ mMenuProc = PROC_OPEN_SAVE_SELECT3;
+ }
}
-#pragma pop
/* 801F37A0-801F3934 1EE0E0 0194+00 1/0 0/0 0/0 .text openSaveSelect3__12dMenu_save_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::openSaveSelect3() {
+ bool modoruTxtDisp = modoruTxtDispAnm();
+ bool var_r30 = true;
+ bool var_r29 = true;
+ bool var_r28 = true;
+
+ if (mSelectedFile != 0xFF) {
+ var_r30 = mpBookWaku[mSelectedFile]->alphaAnime(g_msHIO.mEffectDispFrames, 0, 0xFF, 1);
+ var_r29 = ketteiTxtDispAnm();
+
+ if (field_0x74[mSelectedFile] != SelEndFrameTbl[mSelectedFile]) {
+ field_0x74[mSelectedFile] += 2;
+
+ if (field_0x74[mSelectedFile] > SelEndFrameTbl[mSelectedFile]) {
+ field_0x74[mSelectedFile] = SelEndFrameTbl[mSelectedFile];
+ }
+
+ field_0x40->setFrame(field_0x74[mSelectedFile]);
+ mpSelData[mSelectedFile]->getPanePtr()->animationTransform();
+ var_r28 = false;
+ }
+ }
+
+ if (modoruTxtDisp == true && var_r30 == true && var_r29 == true && var_r28 == true) {
+ if (mSelectedFile != 0xFF) {
+ mpSelData[mSelectedFile]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ selFileCursorShow();
+ }
+ mMenuProc = PROC_SAVE_SELECT;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1928,8 +2451,39 @@ asm void dMenu_save_c::openSaveSelect3() {
#include "asm/d/menu/d_menu_save/openSaveSelect3__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F3934-801F3A94 1EE274 0160+00 1/0 0/0 0/0 .text saveSelect__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::saveSelect() {
+ if (!mDoRst::isReset()) {
+ stick->checkTrigger();
+
+ if (mDoCPd_c::getTrigA(PAD_1)) {
+ saveSelectStart();
+ } else if (mDoCPd_c::getTrigB(PAD_1)) {
+ closeSelect();
+ } else if (stick->checkUpTrigger()) {
+ if (mSelectedFile != 0) {
+ mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR, NULL, 0, 0);
+ mLastSelFile = mSelectedFile;
+ mSelectedFile--;
+ dataSelectAnmSet();
+ mMenuProc = PROC_SAVE_SELECT_MOVE_ANM;
+ }
+ } else if (stick->checkDownTrigger()) {
+ if (mSelectedFile != 2) {
+ mDoAud_seStart(Z2SE_FILE_SELECT_CURSOR, NULL, 0, 0);
+ mLastSelFile = mSelectedFile;
+ mSelectedFile++;
+ dataSelectAnmSet();
+ mMenuProc = PROC_SAVE_SELECT_MOVE_ANM;
+ }
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1938,9 +2492,37 @@ asm void dMenu_save_c::saveSelect() {
#include "asm/d/menu/d_menu_save/saveSelect__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F3A94-801F3BE0 1EE3D4 014C+00 1/1 0/0 0/0 .text saveSelectStart__12dMenu_save_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::saveSelectStart() {
+ mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0);
+ selectDataMoveAnmInitSet(SelOpenStartFrameTbl[mSelectedFile],
+ SelOpenEndFrameTbl[mSelectedFile]);
+ mSelIcon->setAlphaRate(0.0f);
+ selectWakuAlpahAnmInit(mSelectedFile, 255, 0, g_msHIO.mSelectFrames);
+
+ if (field_0x1aa[mSelectedFile] != 0) {
+ u8* saveData = mSaveBuffer;
+ for (int i = 0; i < 3; i++) {
+ mDoMemCdRWm_TestCheckSumGameData(saveData);
+ saveData += 0xA94;
+ }
+ headerTxtSet(0x3A); // Saving...
+ mWarning->openInit();
+ ketteiTxtDispAnmInit(0);
+ modoruTxtDispAnmInit(0);
+ mMenuProc = PROC_SAVE_MOVE_DISP2;
+ } else {
+ yesnoMenuMoveAnmInitSet(2089, 2099, 0);
+ headerTxtSet(0x4CB); // Overwrite this log?
+ mMenuProc = PROC_SELECT_DATA_OPEN_MOVE;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1949,19 +2531,46 @@ asm void dMenu_save_c::saveSelectStart() {
#include "asm/d/menu/d_menu_save/saveSelectStart__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F3BE0-801F3C7C 1EE520 009C+00 1/0 0/0 0/0 .text selectDataOpenMove__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::selectDataOpenMove() {
- nofralloc
-#include "asm/d/menu/d_menu_save/selectDataOpenMove__12dMenu_save_cFv.s"
+void dMenu_save_c::selectDataOpenMove() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool selDataAnmComplete = selectDataMoveAnm();
+ bool yesnoAnmComplete = yesnoMenuMoveAnm();
+ bool wakuAnmComplete = selectWakuAlpahAnm(mSelectedFile);
+
+ if (headerTxtChanged == true && selDataAnmComplete == true && yesnoAnmComplete == true &&
+ wakuAnmComplete == true) {
+ yesnoCursorShow();
+ mMenuProc = PROC_SAVE_YES_NO_SELECT;
+ }
}
-#pragma pop
/* 801F3C7C-801F3E30 1EE5BC 01B4+00 1/1 0/0 0/0 .text dataSelectAnmSet__12dMenu_save_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::dataSelectAnmSet() {
+ if (mSelectedFile != 0xFF) {
+ mpSelData[mSelectedFile]->getPanePtr()->setAnimation(field_0x40);
+ field_0x74[mSelectedFile] = SelStartFrameTbl[mSelectedFile];
+ field_0x40->setFrame(field_0x74[mSelectedFile]);
+ mpSelData[mSelectedFile]->getPanePtr()->animationTransform();
+ mpBookWaku[mSelectedFile]->alphaAnimeStart(0);
+ }
+
+ if (mLastSelFile != 0xFF) {
+ selectWakuAlpahAnmInit(mLastSelFile, 255, 0, g_msHIO.mSelectFrames);
+ mpSelData[mLastSelFile]->getPanePtr()->setAnimation(field_0x44);
+ field_0x74[mLastSelFile] = SelEndFrameTbl[mLastSelFile];
+ field_0x44->setFrame(field_0x74[mLastSelFile]);
+ mpSelData[mLastSelFile]->getPanePtr()->animationTransform();
+ mpBookWaku[mLastSelFile]->alphaAnimeStart(0);
+ mSelIcon->setAlphaRate(0.0f);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1970,8 +2579,65 @@ asm void dMenu_save_c::dataSelectAnmSet() {
#include "asm/d/menu/d_menu_save/dataSelectAnmSet__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F3E30-801F40D8 1EE770 02A8+00 1/0 0/0 0/0 .text saveSelectMoveAnime__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::saveSelectMoveAnime() {
+ bool bookWakuAnmComplete = true;
+ bool selWakuAnmComplete = true;
+ bool var_r29 = true;
+
+ if (mLastSelFile != 0xFF) {
+ bookWakuAnmComplete = mpBookWaku[mLastSelFile]->alphaAnime(g_msHIO.mEffectDispFrames, 255, 0, 1);
+ selWakuAnmComplete = selectWakuAlpahAnm(mLastSelFile);
+
+ if (field_0x74[mLastSelFile] != SelStartFrameTbl[mLastSelFile]) {
+ field_0x74[mLastSelFile] -= 2;
+
+ if (field_0x74[mLastSelFile] < SelStartFrameTbl[mLastSelFile]) {
+ field_0x74[mLastSelFile] = SelStartFrameTbl[mLastSelFile];
+ }
+
+ field_0x44->setFrame(field_0x74[mLastSelFile]);
+ mpSelData[mLastSelFile]->getPanePtr()->animationTransform();
+ var_r29 = false;
+ }
+ }
+
+ bool var_r28 = true;
+ bool var_r27 = true;
+ if (mSelectedFile != 0xFF) {
+ var_r28 = mpBookWaku[mSelectedFile]->alphaAnime(g_msHIO.mEffectDispFrames, 0, 0xFF, 1);
+
+ if (field_0x74[mSelectedFile] != SelEndFrameTbl[mSelectedFile]) {
+ field_0x74[mSelectedFile] += 2;
+
+ if (field_0x74[mSelectedFile] > SelEndFrameTbl[mSelectedFile]) {
+ field_0x74[mSelectedFile] = SelEndFrameTbl[mSelectedFile];
+ }
+
+ field_0x40->setFrame(field_0x74[mSelectedFile]);
+ mpSelData[mSelectedFile]->getPanePtr()->animationTransform();
+ var_r27 = false;
+ }
+ }
+
+ if (bookWakuAnmComplete == true && selWakuAnmComplete == true && var_r29 == true && var_r28 == true &&
+ var_r27 == true) {
+ if (mSelectedFile != 0xFF) {
+ mpSelData[mSelectedFile]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ selFileCursorShow();
+ }
+
+ if (mLastSelFile != 0xFF) {
+ mpSelData[mLastSelFile]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ }
+ mMenuProc = PROC_SAVE_SELECT;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1980,9 +2646,40 @@ asm void dMenu_save_c::saveSelectMoveAnime() {
#include "asm/d/menu/d_menu_save/saveSelectMoveAnime__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F40D8-801F4238 1EEA18 0160+00 1/0 0/0 0/0 .text saveYesNoSelect__12dMenu_save_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::saveYesNoSelect() {
+ if (!mDoRst::isReset()) {
+ stick->checkTrigger();
+
+ if (mDoCPd_c::getTrigA(PAD_1)) {
+ yesnoSelectStart();
+ } else if (mDoCPd_c::getTrigB(PAD_1)) {
+ yesnoCancelAnmSet();
+ } else if (stick->checkRightTrigger()) {
+ if (mYesNoCursor != CURSOR_NO) {
+ mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, 0, 0);
+ mYesNoPrevCursor = mYesNoCursor;
+ mYesNoCursor = CURSOR_NO;
+ yesnoSelectAnmSet(0);
+ mMenuProc = PROC_YES_NO_CURSOR_MOVE_ANM;
+ }
+ } else if (stick->checkLeftTrigger()) {
+ if (mYesNoCursor != CURSOR_YES) {
+ mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, 0, 0);
+ mYesNoPrevCursor = mYesNoCursor;
+ mYesNoCursor = CURSOR_YES;
+ yesnoSelectAnmSet(0);
+ mMenuProc = PROC_YES_NO_CURSOR_MOVE_ANM;
+ }
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1991,9 +2688,27 @@ asm void dMenu_save_c::saveYesNoSelect() {
#include "asm/d/menu/d_menu_save/saveYesNoSelect__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F4238-801F42FC 1EEB78 00C4+00 1/1 0/0 0/0 .text yesnoSelectStart__12dMenu_save_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::yesnoSelectStart() {
+ if (mYesNoCursor != CURSOR_NO) {
+ mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0);
+ mSelIcon->setAlphaRate(0.0f);
+ yesnoMenuMoveAnmInitSet(2099, 2089, 0);
+ headerTxtSet(0x3A); // Saving...
+ mWarning->openInit();
+ ketteiTxtDispAnmInit(0);
+ modoruTxtDispAnmInit(0);
+ mMenuProc = PROC_SAVE_MOVE_DISP;
+ } else {
+ yesnoCancelAnmSet();
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2002,8 +2717,28 @@ asm void dMenu_save_c::yesnoSelectStart() {
#include "asm/d/menu/d_menu_save/yesnoSelectStart__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F42FC-801F43F8 1EEC3C 00FC+00 1/0 0/0 0/0 .text saveMoveDisp__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::saveMoveDisp() {
+ i_mDoAud_seStartLevel(Z2SE_SY_FILE_SAVE_LEVEL, NULL, 0, 0);
+
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool yesnoAnmComplete = yesnoMenuMoveAnm();
+ bool ketteiAnmComplete = ketteiTxtDispAnm();
+ bool modoruAnmComplete = modoruTxtDispAnm();
+ u32 check = mWarning->getStatus() != 0;
+
+ if (headerTxtChanged == true && yesnoAnmComplete == true && ketteiAnmComplete == true &&
+ modoruAnmComplete == 1 && check == 1) {
+ mWaitTimer = g_msHIO.mCardWaitFrames;
+ dataWrite();
+ mMenuProc = PROC_MEMCARD_DATA_SAVE_WAIT;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2012,8 +2747,29 @@ asm void dMenu_save_c::saveMoveDisp() {
#include "asm/d/menu/d_menu_save/saveMoveDisp__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F43F8-801F4510 1EED38 0118+00 1/0 0/0 0/0 .text saveMoveDisp2__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::saveMoveDisp2() {
+ i_mDoAud_seStartLevel(Z2SE_SY_FILE_SAVE_LEVEL, NULL, 0, 0);
+
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool dataMoveAnm = selectDataMoveAnm();
+ bool wakuAnmComplete = selectWakuAlpahAnm(mSelectedFile);
+ bool ketteiAnmComplete = ketteiTxtDispAnm();
+ bool modoruAnmComplete = modoruTxtDispAnm();
+ u32 check = mWarning->getStatus() != 0;
+
+ if (headerTxtChanged == true && dataMoveAnm == true && wakuAnmComplete == true &&
+ ketteiAnmComplete == true && modoruAnmComplete == 1 && check == 1) {
+ mWaitTimer = g_msHIO.mCardWaitFrames;
+ dataWrite();
+ mMenuProc = PROC_MEMCARD_DATA_SAVE_WAIT;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2022,8 +2778,29 @@ asm void dMenu_save_c::saveMoveDisp2() {
#include "asm/d/menu/d_menu_save/saveMoveDisp2__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F4510-801F46B4 1EEE50 01A4+00 4/4 0/0 0/0 .text yesnoSelectAnmSet__12dMenu_save_cFUc */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::yesnoSelectAnmSet(u8 param_0) {
+ if (mYesNoPrevCursor != 0xFF) {
+ yesnoWakuAlpahAnmInit(mYesNoPrevCursor, 255, 0, g_msHIO.mSelectFrames);
+ mpNoYes[mYesNoPrevCursor]->getPanePtr()->setAnimation(field_0x40);
+ field_0x8c[mYesNoPrevCursor] = YnSelEndFrameTbl[mYesNoPrevCursor][param_0];
+ field_0x40->setFrame(field_0x8c[mYesNoPrevCursor]);
+ mpNoYes[mYesNoPrevCursor]->getPanePtr()->animationTransform();
+ mSelIcon->setAlphaRate(0.0f);
+ }
+
+ if (mYesNoCursor != 0xFF) {
+ mpNoYes[mYesNoCursor]->getPanePtr()->setAnimation(field_0x44);
+ field_0x8c[mYesNoCursor] = YnSelStartFrameTbl[mYesNoCursor][param_0];
+ field_0x44->setFrame(field_0x8c[mYesNoCursor]);
+ mpNoYes[mYesNoCursor]->getPanePtr()->animationTransform();
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2032,19 +2809,33 @@ asm void dMenu_save_c::yesnoSelectAnmSet(u8 param_0) {
#include "asm/d/menu/d_menu_save/yesnoSelectAnmSet__12dMenu_save_cFUc.s"
}
#pragma pop
+#endif
/* 801F46B4-801F4724 1EEFF4 0070+00 1/0 0/0 0/0 .text yesNoCursorMoveAnm__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::yesNoCursorMoveAnm() {
- nofralloc
-#include "asm/d/menu/d_menu_save/yesNoCursorMoveAnm__12dMenu_save_cFv.s"
+void dMenu_save_c::yesNoCursorMoveAnm() {
+ bool selAnmComplete = yesnoSelectMoveAnm(0);
+ bool wakuAnmComplete = yesnoWakuAlpahAnm(mYesNoPrevCursor);
+
+ if (selAnmComplete == true && wakuAnmComplete == true) {
+ yesnoCursorShow();
+ mMenuProc = PROC_SAVE_YES_NO_SELECT;
+ }
}
-#pragma pop
/* 801F4724-801F47DC 1EF064 00B8+00 2/2 0/0 0/0 .text yesnoCancelAnmSet__12dMenu_save_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::yesnoCancelAnmSet() {
+ mDoAud_seStart(Z2SE_SY_CURSOR_CANCEL, NULL, 0, 0);
+ mSelIcon->setAlphaRate(0.0f);
+ headerTxtSet(0x4CA);
+ selectDataMoveAnmInitSet(SelOpenEndFrameTbl[mSelectedFile],
+ SelOpenStartFrameTbl[mSelectedFile]);
+ yesnoMenuMoveAnmInitSet(2099, 2089, 0);
+ mMenuProc = PROC_SAVE_YES_NO_CANCEL_MOVE;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2053,41 +2844,87 @@ asm void dMenu_save_c::yesnoCancelAnmSet() {
#include "asm/d/menu/d_menu_save/yesnoCancelAnmSet__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F47DC-801F485C 1EF11C 0080+00 1/0 0/0 0/0 .text saveYesNoCancelMove__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::saveYesNoCancelMove() {
- nofralloc
-#include "asm/d/menu/d_menu_save/saveYesNoCancelMove__12dMenu_save_cFv.s"
+void dMenu_save_c::saveYesNoCancelMove() {
+ bool headerTxtChanged = headerTxtChangeAnm();
+ bool yesnoAnmComplete = yesnoMenuMoveAnm();
+ bool dataAnmComplete = selectDataMoveAnm();
+
+ if (headerTxtChanged == true && yesnoAnmComplete == true && dataAnmComplete == true) {
+ selFileCursorShow();
+ mMenuProc = PROC_SAVE_SELECT;
+ }
}
-#pragma pop
/* 801F485C-801F4928 1EF19C 00CC+00 7/7 0/0 0/0 .text headerTxtSet__12dMenu_save_cFUs */
void dMenu_save_c::headerTxtSet(u16 msgID) {
if (msgID == 0xFFFF) {
- strcpy(field_0x170[field_0x178 ^ 1], "");
+ strcpy(mpHeaderTxt[mHeaderTxtType ^ 1], "");
} else {
- mMenuSave.mMsgString->getString(msgID, (J2DTextBox*)field_0x168[field_0x178 ^ 1]->getPanePtr(), NULL, mMenuSave.font[0], NULL, 0);
+ mSaveSel.mMsgString->getString(
+ msgID, (J2DTextBox*)mpHeaderTxtPane[mHeaderTxtType ^ 1]->getPanePtr(), NULL,
+ mSaveSel.font[0], NULL, 0);
}
- field_0x168[field_0x178]->alphaAnimeStart(0);
- field_0x168[field_0x178 ^ 1]->alphaAnimeStart(0);
- field_0x179 = 0;
+ mpHeaderTxtPane[mHeaderTxtType]->alphaAnimeStart(0);
+ mpHeaderTxtPane[mHeaderTxtType ^ 1]->alphaAnimeStart(0);
+ mHeaderAnmComplete = false;
}
/* 801F4928-801F4A10 1EF268 00E8+00 10/10 0/0 0/0 .text headerTxtChangeAnm__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::headerTxtChangeAnm() {
- nofralloc
-#include "asm/d/menu/d_menu_save/headerTxtChangeAnm__12dMenu_save_cFv.s"
+bool dMenu_save_c::headerTxtChangeAnm() {
+ if (mHeaderAnmComplete) {
+ return true;
+ }
+
+ bool changed = false;
+ bool curHeaderAnmComplete =
+ mpHeaderTxtPane[mHeaderTxtType]->alphaAnime(g_msHIO.mCharSwitchFrames, 255, 0, 0);
+ bool newHeaderAnmComplete =
+ mpHeaderTxtPane[mHeaderTxtType ^ 1]->alphaAnime(g_msHIO.mCharSwitchFrames, 0, 255, 0);
+ int msgWaitTimer = dMeter2Info_getMsgKeyWaitTimer();
+
+ if (curHeaderAnmComplete == true && newHeaderAnmComplete == true && msgWaitTimer == 0) {
+ mHeaderTxtType ^= 1;
+ mHeaderAnmComplete = true;
+ changed = true;
+ }
+
+ return changed;
}
-#pragma pop
/* 801F4A10-801F4B84 1EF350 0174+00 1/1 0/0 0/0 .text errDispInitSet__12dMenu_save_cFi */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::errDispInitSet(int param_0) {
+ headerTxtSet(1);
+ mpErrTxtPane[mErrTxtType]->setAlpha(255);
+ mpErrTxtPane[mErrTxtType ^ 1]->setAlpha(0);
+
+ mSaveSel.mMsgString->getString(param_0, (J2DTextBox*)mpErrTxtPane[mErrTxtType]->getPanePtr(),
+ NULL, mSaveSel.font[0], NULL, 0);
+
+ if (field_0xd2 != 0 || field_0xd3 != 0) {
+ errorMoveAnmInitSet(2859, 2849);
+ }
+
+ if (field_0x64 != 0 || field_0x65 != 0) {
+ selectDataBaseMoveAnmInitSet(33, 1);
+ }
+
+ if (field_0x9c != 0 || field_0x9d != 0) {
+ yesnoMenuMoveAnmInitSet(2099, 2089, 0);
+ }
+
+ modoruTxtDispAnmInit(0);
+ ketteiTxtDispAnmInit(0);
+ mWarning->init();
+ mSelIcon->setAlphaRate(0.0f);
+ mMenuProc = PROC_MSG_WINDOW_INIT_OPEN;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2096,40 +2933,130 @@ asm void dMenu_save_c::errDispInitSet(int param_0) {
#include "asm/d/menu/d_menu_save/errDispInitSet__12dMenu_save_cFi.s"
}
#pragma pop
+#endif
/* 801F4B84-801F4D10 1EF4C4 018C+00 1/0 0/0 0/0 .text msgWindowInitOpen__12dMenu_save_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::msgWindowInitOpen() {
- nofralloc
-#include "asm/d/menu/d_menu_save/msgWindowInitOpen__12dMenu_save_cFv.s"
+void dMenu_save_c::msgWindowInitOpen() {
+ bool headerTxtChanged = true;
+
+ if (field_0x17a == 0) {
+ headerTxtChanged = headerTxtChangeAnm();
+ }
+
+ bool dataAnmComplete = true;
+ bool yesnoAnmComplete = true;
+ bool errorAnmComplete = true;
+
+ if (field_0x64 != 0 || field_0x65 != 0) {
+ dataAnmComplete = selectDataBaseMoveAnm();
+ }
+
+ if (field_0x9c != 0 || field_0x9d != 0) {
+ yesnoAnmComplete = yesnoMenuMoveAnm();
+ }
+
+ if (field_0xd2 != 0 || field_0xd3 != 0) {
+ errorAnmComplete = errorMoveAnm();
+ }
+
+ bool modoruAnmComplete = modoruTxtDispAnm();
+ bool ketteiAnmComplete = ketteiTxtDispAnm();
+
+ if (headerTxtChanged == true && dataAnmComplete == true && yesnoAnmComplete == true && errorAnmComplete == true &&
+ modoruAnmComplete == true && ketteiAnmComplete == true) {
+ mSaveSel.Scr->clearAnmTransform();
+ errorMoveAnmInitSet(2849, 2859);
+
+ if (field_0x9e != 0) {
+ yesnoMenuMoveAnmInitSet(2999, 3009, 0);
+ ketteiTxtDispAnmInit(1);
+ } else {
+ ketteiTxtDispAnmInit(0);
+ }
+
+ field_0x17a = 1;
+ mMenuProc = PROC_MSG_WINDOW_OPEN;
+ }
}
-#pragma pop
/* 801F4D10-801F4DAC 1EF650 009C+00 1/0 0/0 0/0 .text msgWindowOpen__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::msgWindowOpen() {
- nofralloc
-#include "asm/d/menu/d_menu_save/msgWindowOpen__12dMenu_save_cFv.s"
+void dMenu_save_c::msgWindowOpen() {
+ bool errorAnmComplete = errorMoveAnm();
+ bool yesnoAnmComplete = true;
+
+ if (field_0x9e != 0) {
+ yesnoAnmComplete = yesnoMenuMoveAnm();
+ }
+
+ bool ketteiAnmComplete = ketteiTxtDispAnm();
+
+ if (errorAnmComplete == true && yesnoAnmComplete == true && ketteiAnmComplete == true) {
+ if (field_0x9e != 0) {
+ yesnoCursorShow();
+ }
+
+ mMenuProc = field_0x1b4;
+ }
}
-#pragma pop
/* 801F4DAC-801F4E48 1EF6EC 009C+00 1/0 0/0 0/0 .text msgWindowClose__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::msgWindowClose() {
- nofralloc
-#include "asm/d/menu/d_menu_save/msgWindowClose__12dMenu_save_cFv.s"
+void dMenu_save_c::msgWindowClose() {
+ bool errorAnmComplete = errorMoveAnm();
+ bool yenoAnmComplete = true;
+
+ if (field_0x9c != 0) {
+ yenoAnmComplete = yesnoMenuMoveAnm();
+ }
+
+ if (errorAnmComplete == true && yenoAnmComplete == true) {
+ field_0x9e = 0;
+
+ if (mpErrFunc != NULL) {
+ (this->*mpErrFunc)();
+ } else {
+ mMenuProc = field_0x1b4;
+ }
+ }
}
-#pragma pop
/* 801F4E48-801F4FB4 1EF788 016C+00 6/6 0/0 0/0 .text errYesNoSelect__12dMenu_save_cFUcUc
*/
+// matches with literals
+#ifdef NONMATCHING
+bool dMenu_save_c::errYesNoSelect(u8 param_0, u8 param_1) {
+ bool yesnoSelected = false;
+
+ if (mDoRst::isReset()) {
+ return false;
+ }
+
+ stick->checkTrigger();
+
+ if (mDoCPd_c::getTrigA(PAD_1)) {
+ if (mYesNoCursor != CURSOR_NO) {
+ if (param_1 == 0) {
+ mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0);
+ }
+ } else if (param_1 == 0) {
+ mDoAud_seStart(Z2SE_SY_CURSOR_CANCEL, NULL, 0, 0);
+ }
+
+ mSelIcon->setAlphaRate(0.0f);
+ yesnoSelected = true;
+ } else if (stick->checkRightTrigger()) {
+ if (mYesNoCursor != CURSOR_NO) {
+ errCurMove(param_0, 0);
+ }
+ } else if (stick->checkLeftTrigger()) {
+ if (mYesNoCursor != CURSOR_YES) {
+ errCurMove(param_0, 0);
+ }
+ }
+
+ return yesnoSelected;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2138,8 +3065,22 @@ asm bool dMenu_save_c::errYesNoSelect(u8 param_0, u8 param_1) {
#include "asm/d/menu/d_menu_save/errYesNoSelect__12dMenu_save_cFUcUc.s"
}
#pragma pop
+#endif
/* 801F4FB4-801F5054 1EF8F4 00A0+00 1/1 0/0 0/0 .text errCurMove__12dMenu_save_cFUcUc */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::errCurMove(u8 param_0, u8 param_1) {
+ mYesNoPrevCursor = mYesNoCursor;
+ mYesNoCursor ^= 1;
+ field_0x2195 = param_0;
+
+ mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, param_1, 0);
+ yesnoSelectAnmSet(param_0);
+ field_0x1b3 = mMenuProc;
+ mMenuProc = PROC_ERR_YES_NO_CURSOR_MOVE_ANM;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2148,54 +3089,90 @@ asm void dMenu_save_c::errCurMove(u8 param_0, u8 param_1) {
#include "asm/d/menu/d_menu_save/errCurMove__12dMenu_save_cFUcUc.s"
}
#pragma pop
+#endif
/* 801F5054-801F50C4 1EF994 0070+00 1/0 0/0 0/0 .text errYesNoCursorMoveAnm__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::errYesNoCursorMoveAnm() {
- nofralloc
-#include "asm/d/menu/d_menu_save/errYesNoCursorMoveAnm__12dMenu_save_cFv.s"
+void dMenu_save_c::errYesNoCursorMoveAnm() {
+ bool moveAnmComplete = yesnoSelectMoveAnm(field_0x2195);
+ bool wakuAnmComplete = yesnoWakuAlpahAnm(mYesNoPrevCursor);
+
+ if (moveAnmComplete == true && wakuAnmComplete == true) {
+ yesnoCursorShow();
+ mMenuProc = field_0x1b3;
+ }
}
-#pragma pop
/* 801F50C4-801F5190 1EFA04 00CC+00 9/9 0/0 0/0 .text errorTxtSet__12dMenu_save_cFUs */
void dMenu_save_c::errorTxtSet(u16 msgID) {
if (msgID == 0xFFFF) {
- strcpy(field_0xc8[field_0xd0 ^ 1], "");
+ strcpy(mpErrTxt[mErrTxtType ^ 1], "");
} else {
- J2DTextBox* tbox = (J2DTextBox*)field_0xc0[field_0xd0 ^ 1]->getPanePtr();
- mMenuSave.mMsgString->getString(msgID, tbox, NULL, mMenuSave.font[0], NULL, 0);
+ J2DTextBox* tbox = (J2DTextBox*)mpErrTxtPane[mErrTxtType ^ 1]->getPanePtr();
+ mSaveSel.mMsgString->getString(msgID, tbox, NULL, mSaveSel.font[0], NULL, 0);
}
- field_0xc0[field_0xd0]->alphaAnimeStart(0);
- field_0xc0[field_0xd0 ^ 1]->alphaAnimeStart(0);
- field_0xd1 = 0;
+ mpErrTxtPane[mErrTxtType]->alphaAnimeStart(0);
+ mpErrTxtPane[mErrTxtType ^ 1]->alphaAnimeStart(0);
+ mErrTxtAnmComplete = false;
}
/* 801F5190-801F5278 1EFAD0 00E8+00 9/9 0/0 0/0 .text errorTxtChangeAnm__12dMenu_save_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm bool dMenu_save_c::errorTxtChangeAnm() {
- nofralloc
-#include "asm/d/menu/d_menu_save/errorTxtChangeAnm__12dMenu_save_cFv.s"
+bool dMenu_save_c::errorTxtChangeAnm() {
+ if (mErrTxtAnmComplete) {
+ return true;
+ }
+
+ bool anmComplete = false;
+ bool errTxtAnm1Complete =
+ mpErrTxtPane[mErrTxtType]->alphaAnime(g_msHIO.mCharSwitchFrames, 255, 0, 0);
+ bool errTxtAnm2Complete =
+ mpErrTxtPane[mErrTxtType ^ 1]->alphaAnime(g_msHIO.mCharSwitchFrames, 0, 255, 0);
+ int msgWaitTimer = dMeter2Info_getMsgKeyWaitTimer();
+
+ if (errTxtAnm1Complete == true && errTxtAnm2Complete == true && msgWaitTimer == 0) {
+ mErrTxtType ^= 1;
+ mErrTxtAnmComplete = true;
+ anmComplete = true;
+ }
+
+ return anmComplete;
}
-#pragma pop
/* 801F5278-801F533C 1EFBB8 00C4+00 1/1 0/0 0/0 .text saveSelectOpenInit__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::saveSelectOpenInit() {
- nofralloc
-#include "asm/d/menu/d_menu_save/saveSelectOpenInit__12dMenu_save_cFv.s"
+void dMenu_save_c::saveSelectOpenInit() {
+ if (field_0x64 != 0 || field_0x65 != 0) {
+ selectDataBaseMoveAnmInitSet(0x21, 1);
+ }
+
+ if (field_0xd2 != 0 || field_0xd3 != 0) {
+ errorMoveAnmInitSet(0xB2B, 0xB21);
+ }
+
+ if (field_0x9c != 0 || field_0x9c != 0) {
+ yesnoMenuMoveAnmInitSet(2099, 2089, 0);
+ }
+
+ mWarning->init();
+ headerTxtSet(0xFFFF);
+ field_0x17a = 0;
+ mMenuProc = PROC_OPEN_SAVE_SELECT;
}
-#pragma pop
/* 801F533C-801F53D4 1EFC7C 0098+00 3/3 0/0 0/0 .text
* selectDataBaseMoveAnmInitSet__12dMenu_save_cFii */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::selectDataBaseMoveAnmInitSet(int param_0, int param_1) {
+ mpSelectMoveBase->getPanePtr()->setAnimation(field_0x40);
+ mDataBaseMoveAnmFrame = param_0;
+ mDataBaseMoveFrameMax = param_1;
+
+ field_0x40->setFrame(mDataBaseMoveAnmFrame);
+ mpSelectMoveBase->getPanePtr()->animationTransform();
+ field_0x65 = 1;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2204,29 +3181,80 @@ asm void dMenu_save_c::selectDataBaseMoveAnmInitSet(int param_0, int param_1) {
#include "asm/d/menu/d_menu_save/selectDataBaseMoveAnmInitSet__12dMenu_save_cFii.s"
}
#pragma pop
+#endif
/* 801F53D4-801F54C0 1EFD14 00EC+00 3/3 0/0 0/0 .text selectDataBaseMoveAnm__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+bool dMenu_save_c::selectDataBaseMoveAnm() {
+ if (mDataBaseMoveAnmFrame != mDataBaseMoveFrameMax) {
+ if (mDataBaseMoveAnmFrame < mDataBaseMoveFrameMax) {
+ mDataBaseMoveAnmFrame += 2;
+
+ if (mDataBaseMoveAnmFrame > mDataBaseMoveFrameMax) {
+ mDataBaseMoveAnmFrame = mDataBaseMoveFrameMax;
+ }
+ } else {
+ mDataBaseMoveAnmFrame -= 2;
+
+ if (mDataBaseMoveAnmFrame < mDataBaseMoveFrameMax) {
+ mDataBaseMoveAnmFrame = mDataBaseMoveFrameMax;
+ }
+ }
+
+ field_0x40->setFrame(mDataBaseMoveAnmFrame);
+ mpSelectMoveBase->getPanePtr()->animationTransform();
+ return false;
+ } else {
+ if (mDataBaseMoveAnmFrame == 33) {
+ field_0x64 = 1;
+ field_0x65 = 0;
+ } else {
+ field_0x64 = 0;
+ }
+
+ mpSelectMoveBase->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ return true;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dMenu_save_c::selectDataBaseMoveAnm() {
+asm bool dMenu_save_c::selectDataBaseMoveAnm() {
nofralloc
#include "asm/d/menu/d_menu_save/selectDataBaseMoveAnm__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F54C0-801F5508 1EFE00 0048+00 1/1 0/0 0/0 .text saveSelectOpenAnmSet__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::saveSelectOpenAnmSet() {
- nofralloc
-#include "asm/d/menu/d_menu_save/saveSelectOpenAnmSet__12dMenu_save_cFv.s"
+void dMenu_save_c::saveSelectOpenAnmSet() {
+ setSaveData();
+
+ if (field_0x64 == 0) {
+ selectDataBaseMoveAnmInitSet(1, 0x21);
+ }
}
-#pragma pop
/* 801F5508-801F5600 1EFE48 00F8+00 2/2 0/0 0/0 .text selectDataMoveAnmInitSet__12dMenu_save_cFii
*/
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::selectDataMoveAnmInitSet(int param_0, int param_1) {
+ mpSelData[0]->getPanePtr()->setAnimation(field_0x40);
+ mpSelData[1]->getPanePtr()->setAnimation(field_0x40);
+ mpSelData[2]->getPanePtr()->setAnimation(field_0x40);
+
+ field_0x74[mSelectedFile] = param_0;
+ field_0x80 = param_1;
+ field_0x40->setFrame(field_0x74[mSelectedFile]);
+
+ mpSelData[0]->getPanePtr()->animationTransform();
+ mpSelData[1]->getPanePtr()->animationTransform();
+ mpSelData[2]->getPanePtr()->animationTransform();
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2235,20 +3263,81 @@ asm void dMenu_save_c::selectDataMoveAnmInitSet(int param_0, int param_1) {
#include "asm/d/menu/d_menu_save/selectDataMoveAnmInitSet__12dMenu_save_cFii.s"
}
#pragma pop
+#endif
/* 801F5600-801F5744 1EFF40 0144+00 3/3 0/0 0/0 .text selectDataMoveAnm__12dMenu_save_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+bool dMenu_save_c::selectDataMoveAnm() {
+ if (field_0x74[mSelectedFile] != field_0x80) {
+ if (field_0x74[mSelectedFile] < field_0x80) {
+ field_0x74[mSelectedFile] += 2;
+
+ if (field_0x74[mSelectedFile] > field_0x80) {
+ field_0x74[mSelectedFile] = field_0x80;
+ }
+ } else {
+ field_0x74[mSelectedFile] -= 2;
+
+ if (field_0x74[mSelectedFile] < field_0x80) {
+ field_0x74[mSelectedFile] = field_0x80;
+ }
+ }
+
+ field_0x40->setFrame(field_0x74[mSelectedFile]);
+ for (int i = 0; i < 3; i++) {
+ mpSelData[i]->getPanePtr()->animationTransform();
+ }
+
+ return false;
+ } else {
+ for (int i = 0; i < 3; i++) {
+ mpSelData[i]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ }
+ return true;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dMenu_save_c::selectDataMoveAnm() {
+asm bool dMenu_save_c::selectDataMoveAnm() {
nofralloc
#include "asm/d/menu/d_menu_save/selectDataMoveAnm__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F5744-801F58C8 1F0084 0184+00 12/12 0/0 0/0 .text
* yesnoMenuMoveAnmInitSet__12dMenu_save_cFiiUc */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::yesnoMenuMoveAnmInitSet(int anmFrame, int frameMax, u8 param_2) {
+ if (param_2 == 0 && field_0x9c == 0) {
+ mYesNoCursor = CURSOR_NO;
+ mYesNoPrevCursor = 1;
+ }
+
+ if (anmFrame == 2089) {
+ ((J2DTextBox*)mpNoYesTxt[mYesNoCursor]->getPanePtr())
+ ->setWhite(JUtility::TColor(255, 255, 255, 255));
+ ((J2DTextBox*)mpNoYesTxt[mYesNoPrevCursor]->getPanePtr())
+ ->setWhite(JUtility::TColor(150, 150, 150, 255));
+ }
+
+ mSelIcon->setAlphaRate(0.0f);
+ mpNoYes[0]->getPanePtr()->setAnimation(field_0x48);
+ mpNoYes[1]->getPanePtr()->setAnimation(field_0x48);
+ mYesNoMoveAnmFrame = anmFrame;
+ mYesNoMoveAnmMax = frameMax;
+
+ field_0x48->setFrame(mYesNoMoveAnmFrame);
+ mpNoYes[0]->getPanePtr()->animationTransform();
+ mpNoYes[1]->getPanePtr()->animationTransform();
+ field_0x9d = 1;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2257,8 +3346,59 @@ asm void dMenu_save_c::yesnoMenuMoveAnmInitSet(int param_0, int param_1, u8 para
#include "asm/d/menu/d_menu_save/yesnoMenuMoveAnmInitSet__12dMenu_save_cFiiUc.s"
}
#pragma pop
+#endif
/* 801F58C8-801F5AE4 1F0208 021C+00 13/13 0/0 0/0 .text yesnoMenuMoveAnm__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+bool dMenu_save_c::yesnoMenuMoveAnm() {
+ if (mYesNoMoveAnmFrame != mYesNoMoveAnmMax) {
+ if (mYesNoMoveAnmFrame < mYesNoMoveAnmMax) {
+ mYesNoMoveAnmFrame += 2;
+
+ if (mYesNoMoveAnmFrame > mYesNoMoveAnmMax) {
+ mYesNoMoveAnmFrame = mYesNoMoveAnmMax;
+ }
+ } else {
+ mYesNoMoveAnmFrame -= 2;
+
+ if (mYesNoMoveAnmFrame < mYesNoMoveAnmMax) {
+ mYesNoMoveAnmFrame = mYesNoMoveAnmMax;
+ }
+ }
+
+ field_0x48->setFrame(mYesNoMoveAnmFrame);
+ mpNoYes[0]->getPanePtr()->animationTransform();
+ mpNoYes[1]->getPanePtr()->animationTransform();
+ return false;
+ } else {
+ mpNoYes[0]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ mpNoYes[1]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+
+ if (mYesNoMoveAnmFrame == 0x833 || mYesNoMoveAnmFrame == 0x8C9 ||
+ mYesNoMoveAnmFrame == 0xBC1) {
+ field_0x9c = 1;
+
+ if (mYesNoCursor != 0xFF) {
+ mNoYesBase[mYesNoCursor]->setAlpha(255);
+ mNoYesGold[mYesNoCursor]->setAlpha(255);
+ mNoYesGold2[mYesNoCursor]->setAlpha(255);
+ }
+ } else {
+ field_0x9c = 0;
+
+ if (mYesNoCursor != 0xFF) {
+ mNoYesBase[mYesNoCursor]->setAlpha(0);
+ mNoYesGold[mYesNoCursor]->setAlpha(0);
+ mNoYesGold2[mYesNoCursor]->setAlpha(0);
+ }
+ }
+ field_0x9d = 0;
+
+ return true;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2267,16 +3407,82 @@ asm bool dMenu_save_c::yesnoMenuMoveAnm() {
#include "asm/d/menu/d_menu_save/yesnoMenuMoveAnm__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F5AE4-801F5D84 1F0424 02A0+00 4/4 0/0 0/0 .text yesnoSelectMoveAnm__12dMenu_save_cFUc */
+// matches with literals
+#ifdef NONMATCHING
+bool dMenu_save_c::yesnoSelectMoveAnm(u8 param_0) {
+ bool ret = false;
+ bool var_r30 = true;
+ if (mYesNoPrevCursor != 0xFF) {
+ if (field_0x8c[mYesNoPrevCursor] != YnSelStartFrameTbl[mYesNoPrevCursor][param_0]) {
+ if (field_0x8c[mYesNoPrevCursor] < YnSelStartFrameTbl[mYesNoPrevCursor][param_0]) {
+ field_0x8c[mYesNoPrevCursor] += 2;
+
+ if (field_0x8c[mYesNoPrevCursor] > YnSelStartFrameTbl[mYesNoPrevCursor][param_0]) {
+ field_0x8c[mYesNoPrevCursor] = YnSelStartFrameTbl[mYesNoPrevCursor][param_0];
+ }
+ } else {
+ field_0x8c[mYesNoPrevCursor] -= 2;
+
+ if (field_0x8c[mYesNoPrevCursor] < YnSelStartFrameTbl[mYesNoPrevCursor][param_0]) {
+ field_0x8c[mYesNoPrevCursor] = YnSelStartFrameTbl[mYesNoPrevCursor][param_0];
+ }
+ }
+
+ field_0x40->setFrame(field_0x8c[mYesNoPrevCursor]);
+ mpNoYes[mYesNoPrevCursor]->getPanePtr()->animationTransform();
+ var_r30 = false;
+ }
+ }
+
+ bool var_r7 = true;
+ if (mYesNoCursor != 0xFF) {
+ if (field_0x8c[mYesNoCursor] != YnSelEndFrameTbl[mYesNoCursor][param_0]) {
+ if (field_0x8c[mYesNoCursor] < YnSelEndFrameTbl[mYesNoCursor][param_0]) {
+ field_0x8c[mYesNoCursor] += 2;
+
+ if (field_0x8c[mYesNoCursor] > YnSelEndFrameTbl[mYesNoCursor][param_0]) {
+ field_0x8c[mYesNoCursor] = YnSelEndFrameTbl[mYesNoCursor][param_0];
+ }
+ } else {
+ field_0x8c[mYesNoCursor] -= 2;
+
+ if (field_0x8c[mYesNoCursor] < YnSelEndFrameTbl[mYesNoCursor][param_0]) {
+ field_0x8c[mYesNoCursor] = YnSelEndFrameTbl[mYesNoCursor][param_0];
+ }
+ }
+
+ field_0x44->setFrame(field_0x8c[mYesNoCursor]);
+ mpNoYes[mYesNoCursor]->getPanePtr()->animationTransform();
+ var_r7 = false;
+ }
+ }
+
+ if (var_r30 == true && var_r7 == true) {
+ if (mYesNoPrevCursor != 0xFF) {
+ mpNoYes[mYesNoPrevCursor]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ }
+
+ if (mYesNoCursor != 0xFF) {
+ mpNoYes[mYesNoCursor]->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
+ }
+ ret = true;
+ }
+
+ return ret;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dMenu_save_c::yesnoSelectMoveAnm(u8 param_0) {
+asm bool dMenu_save_c::yesnoSelectMoveAnm(u8 param_0) {
nofralloc
#include "asm/d/menu/d_menu_save/yesnoSelectMoveAnm__12dMenu_save_cFUc.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 8045447C-80454480 002A7C 0004+00 1/1 0/0 0/0 .sdata2 @6327 */
@@ -2291,6 +3497,24 @@ SECTION_SDATA2 static f32 lit_6328[1 + 1 /* padding */] = {
/* 801F5D84-801F5EF4 1F06C4 0170+00 9/9 0/0 0/0 .text yesnoCursorShow__12dMenu_save_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::yesnoCursorShow() {
+ if (mYesNoCursor != 0xFF) {
+ ((J2DTextBox*)mpNoYesTxt[mYesNoCursor]->getPanePtr())
+ ->setWhite(JUtility::TColor(255, 255, 255, 255));
+
+ mNoYesBase[mYesNoCursor]->setAlpha(255);
+ mNoYesGold[mYesNoCursor]->setAlpha(255);
+ mNoYesGold2[mYesNoCursor]->setAlpha(255);
+
+ Vec pos = mpNoYes[mYesNoCursor]->getGlobalVtxCenter(false, 0);
+ mSelIcon->setPos(pos.x, pos.y, mpNoYes[mYesNoCursor]->getPanePtr(), true);
+ mSelIcon->setAlphaRate(1.0f);
+ mSelIcon->setParam(0.96f, 0.84f, 0.06f, 0.5f, 0.5f);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2299,8 +3523,20 @@ asm void dMenu_save_c::yesnoCursorShow() {
#include "asm/d/menu/d_menu_save/yesnoCursorShow__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F5EF4-801F5F84 1F0834 0090+00 3/3 0/0 0/0 .text errorMoveAnmInitSet__12dMenu_save_cFii */
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::errorMoveAnmInitSet(int param_0, int param_1) {
+ field_0xb4->setAnimation(field_0x4c);
+ field_0xb8 = param_0;
+ field_0xbc = param_1;
+ field_0x4c->setFrame(field_0xb8);
+ field_0xb4->animationTransform();
+ field_0xd3 = 1;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2309,81 +3545,171 @@ asm void dMenu_save_c::errorMoveAnmInitSet(int param_0, int param_1) {
#include "asm/d/menu/d_menu_save/errorMoveAnmInitSet__12dMenu_save_cFii.s"
}
#pragma pop
+#endif
/* 801F5F84-801F60A4 1F08C4 0120+00 4/4 0/0 0/0 .text errorMoveAnm__12dMenu_save_cFv */
+// matches with literals
+#ifdef NONMATCHING
+bool dMenu_save_c::errorMoveAnm() {
+ if (field_0xb8 != field_0xbc) {
+ if (field_0xb8 < field_0xbc) {
+ field_0xb8 += 2;
+
+ if (field_0xb8 > field_0xbc) {
+ field_0xb8 = field_0xbc;
+ }
+ } else {
+ field_0xb8 -= 2;
+
+ if (field_0xb8 < field_0xbc) {
+ field_0xb8 = field_0xbc;
+ }
+ }
+
+ field_0x4c->setFrame(field_0xb8);
+ field_0xb4->animationTransform();
+ return 0;
+ } else {
+ field_0x4c->setFrame(field_0xbc);
+ field_0xb4->animationTransform();
+ field_0xb4->setAnimation((J2DAnmTransformKey*)NULL);
+
+ if (field_0xbc == 2859) {
+ field_0xd2 = 1;
+ } else {
+ field_0xd2 = 0;
+ }
+ field_0xd3 = 0;
+ return 1;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dMenu_save_c::errorMoveAnm() {
+asm bool dMenu_save_c::errorMoveAnm() {
nofralloc
#include "asm/d/menu/d_menu_save/errorMoveAnm__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F60A4-801F6120 1F09E4 007C+00 5/5 0/0 0/0 .text modoruTxtDispAnmInit__12dMenu_save_cFUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::modoruTxtDispAnmInit(u8 param_0) {
- nofralloc
-#include "asm/d/menu/d_menu_save/modoruTxtDispAnmInit__12dMenu_save_cFUc.s"
+void dMenu_save_c::modoruTxtDispAnmInit(u8 param_0) {
+ field_0x1a8 = param_0;
+ if ((param_0 != 0 || mpBackTxt->getAlpha() != 0) &&
+ (param_0 != 1 || mpBackTxt->getAlpha() != 255)) {
+ mpBackTxt->alphaAnimeStart(0);
+ mpBBtnIcon->alphaAnimeStart(0);
+ return;
+ }
+
+ mpBackTxt->alphaAnimeStart(g_msHIO.mCharSwitchFrames);
+ mpBBtnIcon->alphaAnimeStart(g_msHIO.mCharSwitchFrames);
}
-#pragma pop
/* 801F6120-801F61FC 1F0A60 00DC+00 5/5 0/0 0/0 .text modoruTxtDispAnm__12dMenu_save_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::modoruTxtDispAnm() {
- nofralloc
-#include "asm/d/menu/d_menu_save/modoruTxtDispAnm__12dMenu_save_cFv.s"
+bool dMenu_save_c::modoruTxtDispAnm() {
+ bool txtAnmComplete;
+ bool btnAnmComplete;
+
+ if (field_0x1a8 != 0) {
+ txtAnmComplete = mpBackTxt->alphaAnime(g_msHIO.mCharSwitchFrames, 0, 255, 0);
+ btnAnmComplete = mpBBtnIcon->alphaAnime(g_msHIO.mCharSwitchFrames, 128, 255, 0);
+ } else {
+ txtAnmComplete = mpBackTxt->alphaAnime(g_msHIO.mCharSwitchFrames, 255, 0, 0);
+ btnAnmComplete = mpBBtnIcon->alphaAnime(g_msHIO.mCharSwitchFrames, 255, 128, 0);
+ }
+
+ if (txtAnmComplete == true && btnAnmComplete == true) {
+ return true;
+ }
+
+ return false;
}
-#pragma pop
/* 801F61FC-801F6278 1F0B3C 007C+00 9/9 0/0 0/0 .text ketteiTxtDispAnmInit__12dMenu_save_cFUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::ketteiTxtDispAnmInit(u8 param_0) {
- nofralloc
-#include "asm/d/menu/d_menu_save/ketteiTxtDispAnmInit__12dMenu_save_cFUc.s"
+void dMenu_save_c::ketteiTxtDispAnmInit(u8 param_0) {
+ field_0x1a9 = param_0;
+ if ((param_0 != 0 || mpConfirmTxt->getAlpha() != 0) &&
+ (param_0 != 1 || mpConfirmTxt->getAlpha() != 255)) {
+ mpConfirmTxt->alphaAnimeStart(0);
+ mpABtnIcon->alphaAnimeStart(0);
+ return;
+ }
+
+ mpConfirmTxt->alphaAnimeStart(g_msHIO.mCharSwitchFrames);
+ mpABtnIcon->alphaAnimeStart(g_msHIO.mCharSwitchFrames);
}
-#pragma pop
/* 801F6278-801F6354 1F0BB8 00DC+00 11/11 0/0 0/0 .text ketteiTxtDispAnm__12dMenu_save_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm bool dMenu_save_c::ketteiTxtDispAnm() {
- nofralloc
-#include "asm/d/menu/d_menu_save/ketteiTxtDispAnm__12dMenu_save_cFv.s"
+bool dMenu_save_c::ketteiTxtDispAnm() {
+ bool txtAnmComplete;
+ bool btnAnmComplete;
+
+ if (field_0x1a9 != 0) {
+ txtAnmComplete = mpConfirmTxt->alphaAnime(g_msHIO.mCharSwitchFrames, 0, 255, 0);
+ btnAnmComplete = mpABtnIcon->alphaAnime(g_msHIO.mCharSwitchFrames, 128, 255, 0);
+ } else {
+ txtAnmComplete = mpConfirmTxt->alphaAnime(g_msHIO.mCharSwitchFrames, 255, 0, 0);
+ btnAnmComplete = mpABtnIcon->alphaAnime(g_msHIO.mCharSwitchFrames, 255, 128, 0);
+ }
+
+ if (txtAnmComplete == true && btnAnmComplete == true) {
+ return true;
+ }
+
+ return false;
}
-#pragma pop
/* 801F6354-801F6390 1F0C94 003C+00 2/2 0/0 0/0 .text
* selectWakuAlpahAnmInit__12dMenu_save_cFUcUcUcUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::selectWakuAlpahAnmInit(u8 param_0, u8 param_1, u8 param_2, u8 param_3) {
- nofralloc
-#include "asm/d/menu/d_menu_save/selectWakuAlpahAnmInit__12dMenu_save_cFUcUcUcUc.s"
+void dMenu_save_c::selectWakuAlpahAnmInit(u8 param_0, u8 param_1, u8 param_2, u8 param_3) {
+ mpSelWakuMoyo[param_0]->alphaAnimeStart(0);
+ mpSelWakuGold[param_0]->alphaAnimeStart(0);
+ mpSelWakuGold2[param_0]->alphaAnimeStart(0);
+ field_0x104[param_0] = param_1;
+ field_0x107[param_0] = param_2;
+ field_0x10a[param_0] = param_3;
}
-#pragma pop
/* 801F6390-801F6458 1F0CD0 00C8+00 3/3 0/0 0/0 .text selectWakuAlpahAnm__12dMenu_save_cFUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::selectWakuAlpahAnm(u8 param_0) {
- nofralloc
-#include "asm/d/menu/d_menu_save/selectWakuAlpahAnm__12dMenu_save_cFUc.s"
+bool dMenu_save_c::selectWakuAlpahAnm(u8 param_0) {
+ bool anmComplete = false;
+ bool moyoAnmComplete = mpSelWakuMoyo[param_0]->alphaAnime(
+ field_0x10a[param_0], field_0x104[param_0], field_0x107[param_0], 0);
+ bool goldAnmComplete = mpSelWakuGold[param_0]->alphaAnime(
+ field_0x10a[param_0], field_0x104[param_0], field_0x107[param_0], 0);
+ bool gold2AnmComplete = mpSelWakuGold2[param_0]->alphaAnime(
+ field_0x10a[param_0], field_0x104[param_0], field_0x107[param_0], 0);
+
+ if (moyoAnmComplete == true && goldAnmComplete == true && gold2AnmComplete == true) {
+ anmComplete = true;
+ }
+
+ return anmComplete;
}
-#pragma pop
/* 801F6458-801F6608 1F0D98 01B0+00 3/3 0/0 0/0 .text selFileCursorShow__12dMenu_save_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+void dMenu_save_c::selFileCursorShow() {
+ mpSelWakuMoyo[mSelectedFile]->getPanePtr()->scale(1.0f, 1.0f);
+ mpSelWakuGold[mSelectedFile]->getPanePtr()->scale(1.0f, 1.0f);
+ mpSelWakuGold2[mSelectedFile]->getPanePtr()->scale(1.0f, 1.0f);
+
+ mpSelWakuMoyo[mSelectedFile]->setAlpha(255);
+ mpSelWakuGold[mSelectedFile]->setAlpha(255);
+ mpSelWakuGold2[mSelectedFile]->setAlpha(255);
+
+ Vec pos = mpSelData[mSelectedFile]->getGlobalVtxCenter(false, 0);
+ mSelIcon->setPos(pos.x, pos.y, mpSelData[mSelectedFile]->getPanePtr(), true);
+ mSelIcon->setAlphaRate(0.0f);
+ mSelIcon->setParam(0.96f, 0.94f, 0.03f, 0.7f, 0.7f);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2392,27 +3718,53 @@ asm void dMenu_save_c::selFileCursorShow() {
#include "asm/d/menu/d_menu_save/selFileCursorShow__12dMenu_save_cFv.s"
}
#pragma pop
+#endif
/* 801F6608-801F6654 1F0F48 004C+00 1/1 0/0 0/0 .text
* yesnoWakuAlpahAnmInit__12dMenu_save_cFUcUcUcUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::yesnoWakuAlpahAnmInit(u8 param_0, u8 param_1, u8 param_2, u8 param_3) {
- nofralloc
-#include "asm/d/menu/d_menu_save/yesnoWakuAlpahAnmInit__12dMenu_save_cFUcUcUcUc.s"
+void dMenu_save_c::yesnoWakuAlpahAnmInit(u8 yesnoIdx, u8 startAlpha, u8 endAlpha, u8 anmTimer) {
+ if (yesnoIdx != 0xFF) {
+ mNoYesBase[yesnoIdx]->alphaAnimeStart(0);
+ mNoYesGold[yesnoIdx]->alphaAnimeStart(0);
+ mNoYesGold2[yesnoIdx]->alphaAnimeStart(0);
+ mNoYesWakuStartAlpha[yesnoIdx] = startAlpha;
+ mNoYesWakuEndAlpha[yesnoIdx] = endAlpha;
+ mNoYesWakuAnmTimer[yesnoIdx] = anmTimer;
+ mpNoYesTxt[yesnoIdx]->colorAnimeStart(0);
+ }
}
-#pragma pop
/* 801F6654-801F67B8 1F0F94 0164+00 4/4 0/0 0/0 .text yesnoWakuAlpahAnm__12dMenu_save_cFUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMenu_save_c::yesnoWakuAlpahAnm(u8 param_0) {
- nofralloc
-#include "asm/d/menu/d_menu_save/yesnoWakuAlpahAnm__12dMenu_save_cFUc.s"
+bool dMenu_save_c::yesnoWakuAlpahAnm(u8 yesnoIdx) {
+ if (yesnoIdx == 0xFF) {
+ return true;
+ }
+
+ bool anmComplete = false;
+ bool baseAnmComplete = mNoYesBase[yesnoIdx]->alphaAnime(mNoYesWakuAnmTimer[yesnoIdx],
+ mNoYesWakuStartAlpha[yesnoIdx],
+ mNoYesWakuEndAlpha[yesnoIdx], 0);
+
+ bool goldAnmComplete = mNoYesGold[yesnoIdx]->alphaAnime(mNoYesWakuAnmTimer[yesnoIdx],
+ mNoYesWakuStartAlpha[yesnoIdx],
+ mNoYesWakuEndAlpha[yesnoIdx], 0);
+
+ bool gold2AnmComplete = mNoYesGold2[yesnoIdx]->alphaAnime(mNoYesWakuAnmTimer[yesnoIdx],
+ mNoYesWakuStartAlpha[yesnoIdx],
+ mNoYesWakuEndAlpha[yesnoIdx], 0);
+
+ bool txtAnmComplete = mpNoYesTxt[yesnoIdx]->colorAnime(
+ mNoYesWakuAnmTimer[yesnoIdx], mpNoYesTxt[yesnoIdx]->getInitBlack(),
+ mpNoYesTxt[yesnoIdx]->getInitBlack(), JUtility::TColor(255, 255, 255, 255),
+ JUtility::TColor(150, 150, 150, 255), 0);
+
+ if (baseAnmComplete == true && goldAnmComplete == true && gold2AnmComplete == true &&
+ txtAnmComplete == true) {
+ anmComplete = true;
+ }
+
+ return anmComplete;
}
-#pragma pop
/* 801F67B8-801F67F0 1F10F8 0038+00 2/2 0/0 0/0 .text dataSave__12dMenu_save_cFv */
void dMenu_save_c::dataSave() {
@@ -2441,11 +3793,11 @@ void dMenu_save_c::setSaveData() {
}
if (field_0x1ad[i] != 0 || field_0x1aa[i] == 1) {
- field_0x17c[i]->setAlpha(0);
- field_0x188[i]->setAlpha(255);
+ mpDataBase[i]->setAlpha(0);
+ mpNoDataBase[i]->setAlpha(255);
} else {
- field_0x17c[i]->setAlpha(255);
- field_0x188[i]->setAlpha(0);
+ mpDataBase[i]->setAlpha(255);
+ mpNoDataBase[i]->setAlpha(0);
}
if (field_0x1aa[i] == 2) {
@@ -2479,8 +3831,8 @@ void dMenu_save_c::_draw2() {
dComIfGd_set2DOpa(&mMenuSaveExplain);
}
- if (field_0x1b0 != 0) {
- dComIfGd_set2DOpa(&mMenuSave);
+ if (mDisplayMenu) {
+ dComIfGd_set2DOpa(&mSaveSel);
for (int i = 0; i < 3; i++) {
mFileInfo[i]->_draw();
@@ -2496,6 +3848,12 @@ void dMenu_save_c::_draw2() {
/* 801F6ADC-801F6B0C 1F141C 0030+00 1/0 0/0 0/0 .text draw__23dDlst_MenuSaveExplain_cFv
*/
+// matches with vtable data
+#ifdef NONMATCHING
+void dDlst_MenuSaveExplain_c::draw() {
+ mpScrn->draw((J2DOrthoGraph*)dComIfGp_getCurrentGrafPort());
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2505,8 +3863,15 @@ extern "C" asm void draw__23dDlst_MenuSaveExplain_cFv() {
#include "asm/d/menu/d_menu_save/draw__23dDlst_MenuSaveExplain_cFv.s"
}
#pragma pop
+#endif
/* 801F6B0C-801F6B44 1F144C 0038+00 1/0 0/0 0/0 .text draw__16dDlst_MenuSave_cFv */
+// matches with vtable data
+#ifdef NONMATCHING
+void dDlst_MenuSave_c::draw() {
+ Scr->draw(0.0f, 0.0f, dComIfGp_getCurrentGrafPort());
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2516,6 +3881,7 @@ extern "C" asm void draw__16dDlst_MenuSave_cFv() {
#include "asm/d/menu/d_menu_save/draw__16dDlst_MenuSave_cFv.s"
}
#pragma pop
+#endif
/* 801F6B44-801F6B8C 1F1484 0048+00 1/0 0/0 0/0 .text __dt__16dDlst_MenuSave_cFv */
dDlst_MenuSave_c::~dDlst_MenuSave_c() {}
diff --git a/src/d/msg/d_msg_class.cpp b/src/d/msg/d_msg_class.cpp
index 5485ab9440..c7f83f2ca9 100644
--- a/src/d/msg/d_msg_class.cpp
+++ b/src/d/msg/d_msg_class.cpp
@@ -556,7 +556,7 @@ extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_meter2_info[248];
extern "C" extern u8 g_MsgObject_HIO_c[1040];
extern "C" extern u8 data_80450B70[4];
-extern "C" extern u8 struct_80450D64[4];
+extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
extern "C" extern u8 g_msg_unit[4 + 4 /* padding */];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
diff --git a/src/d/msg/d_msg_flow.cpp b/src/d/msg/d_msg_flow.cpp
index 8373ec9404..b86c853db1 100644
--- a/src/d/msg/d_msg_flow.cpp
+++ b/src/d/msg/d_msg_flow.cpp
@@ -1338,7 +1338,7 @@ int dMsgFlow_c::query042(mesg_flow_node_branch*, fopAc_ac_c*, int) {
ret = 1;
} else if (midna->checkNpcFar()) {
ret = 2;
- } else if (g_env_light.mEvilPacketEnabled & 0x80) {
+ } else if (g_env_light.mEvilInitialized & 0x80) {
ret = 3;
}
diff --git a/src/d/msg/d_msg_string.cpp b/src/d/msg/d_msg_string.cpp
index 3e29d44b76..8d74180582 100644
--- a/src/d/msg/d_msg_string.cpp
+++ b/src/d/msg/d_msg_string.cpp
@@ -6,6 +6,7 @@
#include "d/msg/d_msg_string.h"
#include "dol2asm.h"
#include "dolphin/types.h"
+#include "JSystem/JGeometry.h"
//
// Forward References:
@@ -52,82 +53,50 @@ SECTION_DATA extern void* __vt__12dMsgString_c[8] = {
};
/* 80249C20-80249CA0 244560 0080+00 0/0 15/15 0/0 .text __ct__12dMsgString_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dMsgString_c::dMsgString_c() {
- nofralloc
-#include "asm/d/msg/d_msg_string/__ct__12dMsgString_cFv.s"
+dMsgString_c::dMsgString_c() {
+ field_0x28 = 0;
+ mpOutFont = new COutFont_c(field_0x28);
+ mpOutFont->createPane();
+ getResource();
}
-#pragma pop
/* 80249CA0-80249D28 2445E0 0088+00 0/0 1/1 0/0 .text __ct__12dMsgString_cFUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dMsgString_c::dMsgString_c(u8 param_0) {
- nofralloc
-#include "asm/d/msg/d_msg_string/__ct__12dMsgString_cFUc.s"
+dMsgString_c::dMsgString_c(u8 param_0) {
+ field_0x28 = param_0;
+ mpOutFont = new COutFont_c(field_0x28);
+ mpOutFont->createPane();
+ getResource();
}
-#pragma pop
/* 80249D28-80249DB4 244668 008C+00 0/0 17/17 0/0 .text __dt__12dMsgString_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dMsgString_c::~dMsgString_c() {
- nofralloc
-#include "asm/d/msg/d_msg_string/__dt__12dMsgString_cFv.s"
+dMsgString_c::~dMsgString_c() {
+ delete mpOutFont;
+ mpOutFont = NULL;
}
-#pragma pop
/* 80249DB4-80249DE4 2446F4 0030+00 1/0 0/0 0/0 .text
* resetStringLocal__12dMsgString_cFP10J2DTextBox */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgString_c::resetStringLocal(J2DTextBox* param_0) {
- nofralloc
-#include "asm/d/msg/d_msg_string/resetStringLocal__12dMsgString_cFP10J2DTextBox.s"
+void dMsgString_c::resetStringLocal(J2DTextBox* p_textBox) {
+ mpOutFont->reset(p_textBox);
}
-#pragma pop
-
-/* ############################################################################################## */
-/* 80454D78-80454D7C 003378 0004+00 1/1 0/0 0/0 .sdata2 @3777 */
-SECTION_SDATA2 static f32 lit_3777 = 255.0f;
-
-/* 80454D7C-80454D80 00337C 0004+00 1/1 0/0 0/0 .sdata2 @3778 */
-SECTION_SDATA2 static f32 lit_3778 = -1.0f;
-
-/* 80454D80-80454D88 003380 0004+04 1/1 0/0 0/0 .sdata2 @3779 */
-SECTION_SDATA2 static f32 lit_3779[1 + 1 /* padding */] = {
- 1.0f,
- /* padding */
- 0.0f,
-};
-
-/* 80454D88-80454D90 003388 0008+00 1/1 0/0 0/0 .sdata2 @3781 */
-SECTION_SDATA2 static f64 lit_3781 = 4503599627370496.0 /* cast u32 to float */;
/* 80249DE4-80249ED0 244724 00EC+00 1/0 0/0 0/0 .text
* drawOutFontLocal__12dMsgString_cFP10J2DTextBoxf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgString_c::drawOutFontLocal(J2DTextBox* param_0, f32 param_1) {
- nofralloc
-#include "asm/d/msg/d_msg_string/drawOutFontLocal__12dMsgString_cFP10J2DTextBoxf.s"
+void dMsgString_c::drawOutFontLocal(J2DTextBox* p_textBox, f32 i_alpha) {
+ JGeometry::TVec3<f32> pos = p_textBox->getGlbVtx(0);
+ f32 y = pos.y;
+
+ if (i_alpha == -1.0f) {
+ i_alpha = p_textBox->getAlpha() / 255.0f;
+ }
+
+ mpOutFont->setAlphaRatio(i_alpha);
+ mpOutFont->draw(p_textBox, pos.x, y, 1.0f);
}
-#pragma pop
/* 80249ED0-80249F00 244810 0030+00 1/0 0/0 0/0 .text
* drawFontLocal__12dMsgString_cFP10J2DTextBoxUcffffUlUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMsgString_c::drawFontLocal(J2DTextBox* param_0, u8 param_1, f32 param_2, f32 param_3,
- f32 param_4, f32 param_5, u32 param_6, u8 param_7) {
- nofralloc
-#include "asm/d/msg/d_msg_string/drawFontLocal__12dMsgString_cFP10J2DTextBoxUcffffUlUc.s"
+void dMsgString_c::drawFontLocal(J2DTextBox* p_textBox, u8 type, f32 posX, f32 posY,
+ f32 sizeX, f32 sizeY, u32 color, u8 alpha) {
+ mpOutFont->drawFont(p_textBox, type, posX, posY, sizeX, sizeY, color, alpha);
}
-#pragma pop
diff --git a/src/d/ovlp/d_ovlp_fade2.cpp b/src/d/ovlp/d_ovlp_fade2.cpp
index b710c28ba8..7665b93d65 100644
--- a/src/d/ovlp/d_ovlp_fade2.cpp
+++ b/src/d/ovlp/d_ovlp_fade2.cpp
@@ -137,7 +137,7 @@ extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_clearColor[4];
extern "C" u8 mFrameBufferTex__13mDoGph_gInf_c[4];
-extern "C" extern u8 struct_80450BE4[4];
+extern "C" extern u8 mBlureFlag__13mDoGph_gInf_c[4];
extern "C" u8 sManager__10JFWDisplay[4];
//
diff --git a/src/d/pane/d_pane_class.cpp b/src/d/pane/d_pane_class.cpp
index c16c6b5db5..17d05caae8 100644
--- a/src/d/pane/d_pane_class.cpp
+++ b/src/d/pane/d_pane_class.cpp
@@ -7,124 +7,11 @@
#include "dol2asm.h"
#include "dolphin/types.h"
#include "m_Do/m_Do_ext.h"
-
-//
-// Types:
-//
-
-struct JSUMemoryInputStream {
- /* 802552B8 */ ~JSUMemoryInputStream();
- /* 802DC520 */ void setBuffer(void const*, s32);
-};
-
-struct JKRAramArchive {};
-
-struct J2DOrthoGraph {
- /* 802E96D0 */ J2DOrthoGraph(f32, f32, f32, f32, f32, f32);
- /* 802E980C */ void setOrtho(JGeometry::TBox2<f32> const&, f32, f32);
-};
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__8CPaneMgrFv();
-extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap();
-extern "C" void __dt__8CPaneMgrFv();
-extern "C" void setAlpha__8CPaneMgrFUc();
-extern "C" void reinit__8CPaneMgrFv();
-extern "C" void initiate__8CPaneMgrFP7J2DPaneP10JKRExpHeap();
-extern "C" void getBlack__9J2DWindowCFv();
-extern "C" void getWhite__9J2DWindowCFv();
-extern "C" void childPaneGetSize__8CPaneMgrFP7J2DPane();
-extern "C" void childPaneSetSize__8CPaneMgrFP7J2DPaneff();
-extern "C" void getGlobalPosX__8CPaneMgrFv();
-extern "C" void getGlobalPosY__8CPaneMgrFv();
-extern "C" void setWhite__9J2DWindowFQ28JUtility6TColor();
-extern "C" void setBlack__10J2DTextBoxFQ28JUtility6TColor();
-extern "C" void setBlack__9J2DWindowFQ28JUtility6TColor();
-extern "C" void setBlackWhite__8CPaneMgrFQ28JUtility6TColorQ28JUtility6TColor();
-extern "C" void setBlackWhite__9J2DWindowFQ28JUtility6TColorQ28JUtility6TColor();
-extern "C" void paneTrans__8CPaneMgrFff();
-extern "C" void paneScale__8CPaneMgrFff();
-extern "C" void scaleAnime__8CPaneMgrFsffUc();
-extern "C" void
-colorAnime__8CPaneMgrFsQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorUc();
-extern "C" void getGlobalVtx__8CPaneMgrFP7J2DPanePA3_A4_fUcbs();
-extern "C" void getGlobalVtxCenter__8CPaneMgrFP7J2DPanebs();
-extern "C" void getBounds__8CPaneMgrFP7J2DPane();
-extern "C" void dPaneClass_showNullPane__FP9J2DScreen();
-extern "C" void dPaneClass_showNullPane__FP7J2DPane();
-extern "C" void dPaneClass_setPriority__FPPvP7JKRHeapP9J2DScreenPCcUlP10JKRArchive();
-extern "C" void __dt__20JSUMemoryInputStreamFv();
-extern "C" void __dt__20JSURandomInputStreamFv();
-extern "C" void __dt__10JSUIosBaseFv();
-extern "C" void __sinit_d_pane_class_cpp();
-
-//
-// External References:
-//
-
-extern "C" void mDoExt_getCurrentHeap__Fv();
-extern "C" void dLib_getExpandSizeFromAramArchive__FP14JKRAramArchivePCc();
-extern "C" void __ct__13CPaneMgrAlphaFv();
-extern "C" void __dt__13CPaneMgrAlphaFv();
-extern "C" void rateCalc__13CPaneMgrAlphaFssUc();
-extern "C" void childPaneCount__13CPaneMgrAlphaFP7J2DPane();
-extern "C" void childPaneGetAlpha__13CPaneMgrAlphaFP7J2DPane();
-extern "C" void childPaneSetAlpha__13CPaneMgrAlphaFP7J2DPaneUc();
-extern "C" void alloc__7JKRHeapFUli();
-extern "C" void free__7JKRHeapFPv();
-extern "C" void __dl__FPv();
-extern "C" void __dt__14JSUInputStreamFv();
-extern "C" void setBuffer__20JSUMemoryInputStreamFPCvl();
-extern "C" void __ct__13J2DOrthoGraphFffffff();
-extern "C" void func_802E980C();
-extern "C" void getBounds__7J2DPaneFv();
-extern "C" void rotate__7J2DPaneFff13J2DRotateAxisf();
-extern "C" void getFirstChildPane__7J2DPaneFv();
-extern "C" void getNextChildPane__7J2DPaneFv();
-extern "C" void getParentPane__7J2DPaneFv();
-extern "C" void setPriority__9J2DScreenFP20JSURandomInputStreamUlP10JKRArchive();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_24();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" extern void* __vt__20JSURandomInputStream[9];
-extern "C" extern void* __vt__14JSUInputStream[6 + 1 /* padding */];
-extern "C" extern void* __vt__20JSUMemoryInputStream[9 + 1 /* padding */];
-extern "C" extern void* __vt__14J2DGrafContext[10];
-extern "C" extern void* __vt__13J2DOrthoGraph[10];
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 803C2DF8-803C2E04 01FF18 000C+00 2/2 4/4 0/0 .data __vt__10JSUIosBase */
-SECTION_DATA extern void* __vt__10JSUIosBase[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10JSUIosBaseFv,
-};
-
-/* 803C2E04-803C2E18 01FF24 0010+04 3/3 0/0 0/0 .data __vt__8CPaneMgr */
-SECTION_DATA extern void* __vt__8CPaneMgr[4 + 1 /* padding */] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8CPaneMgrFv,
- (void*)setAlpha__8CPaneMgrFUc,
- /* padding */
- NULL,
-};
+#include "m_Do/m_Do_graphic.h"
+#include "JSystem/J2DGraph/J2DOrthoGraph.h"
+#include "JSystem/J2DGraph/J2DPicture.h"
+#include "JSystem/JSupport/JSUMemoryStream.h"
+#include "d/d_lib.h"
/* 80253930-80253984 24E270 0054+00 0/0 11/11 0/0 .text __ct__8CPaneMgrFv */
CPaneMgr::CPaneMgr() {
@@ -134,10 +21,10 @@ CPaneMgr::CPaneMgr() {
/* 80253984-80253A18 24E2C4 0094+00 0/0 58/58 2/2 .text
* __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap */
-CPaneMgr::CPaneMgr(J2DScreen* pScrn, u64 tag, u8 flags, JKRExpHeap* pHeap) {
- J2DPane* pane = pScrn->search(tag);
+CPaneMgr::CPaneMgr(J2DScreen* p_scrn, u64 tag, u8 flags, JKRExpHeap* p_heap) {
+ J2DPane* pane = p_scrn->search(tag);
mFlags = flags;
- initiate(pane, pHeap);
+ initiate(pane, p_heap);
}
/* 80253A18-80253AB4 24E358 009C+00 1/0 11/11 0/0 .text __dt__8CPaneMgrFv */
@@ -155,9 +42,10 @@ CPaneMgr::~CPaneMgr() {
/* 80253AB4-80253B2C 24E3F4 0078+00 1/0 0/0 0/0 .text setAlpha__8CPaneMgrFUc */
void CPaneMgr::setAlpha(u8 alpha) {
if (mFlags & 2) {
- field_0x10 = mpFirstStackAlpha;
+ field_0x10 = (u8*)mpFirstStackAlpha;
childPaneSetAlpha(getPanePtr()->getFirstChildPane(), alpha);
}
+
getPanePtr()->setAlpha(alpha);
}
@@ -185,12 +73,11 @@ void CPaneMgr::reinit() {
/* 80253C08-80254000 24E548 03F8+00 1/1 0/0 0/0 .text initiate__8CPaneMgrFP7J2DPaneP10JKRExpHeap
*/
-// switch issues
-#ifdef NONMATCHING
-void CPaneMgr::initiate(J2DPane* pPane, JKRExpHeap* pHeap) {
- (J2DPane*)mWindow = pPane;
- if (pHeap) {
- heap = pHeap;
+void CPaneMgr::initiate(J2DPane* p_pane, JKRExpHeap* p_heap) {
+ mPane = p_pane;
+
+ if (p_heap) {
+ heap = p_heap;
} else {
heap = (JKRExpHeap*)mDoExt_getCurrentHeap();
}
@@ -205,24 +92,24 @@ void CPaneMgr::initiate(J2DPane* pPane, JKRExpHeap* pHeap) {
childPaneCount(getPanePtr()->getFirstChildPane());
if (mFlags & 1) {
mpFirstStackSize = heap->alloc(mChildPaneCount * 12, 0x20);
- field_0x20 = mpFirstStackSize;
+ field_0x20 = (s16*)mpFirstStackSize;
childPaneGetSize(getPanePtr()->getFirstChildPane());
}
if (mFlags & 2) {
mpFirstStackAlpha = heap->alloc(mChildPaneCount, 0x20);
- field_0x10 = mpFirstStackAlpha;
- childPaneGetSize(getPanePtr()->getFirstChildPane());
+ field_0x10 = (u8*)mpFirstStackAlpha;
+ childPaneGetAlpha(getPanePtr()->getFirstChildPane());
}
}
- mInitPos.x = pPane->getBounds().i.x;
- mInitPos.y = pPane->getBounds().i.y;
+ mInitPos.x = p_pane->getBounds().i.x;
+ mInitPos.y = p_pane->getBounds().i.y;
mGlobalPos.x = getGlobalPosX();
mGlobalPos.y = getGlobalPosY();
- mInitSize.x = pPane->getWidth();
- mInitSize.y = pPane->getHeight();
+ mInitSize.x = p_pane->getWidth();
+ mInitSize.y = p_pane->getHeight();
mInitScale.x = getPanePtr()->getScaleX();
mInitScale.y = getPanePtr()->getScaleY();
@@ -230,15 +117,16 @@ void CPaneMgr::initiate(J2DPane* pPane, JKRExpHeap* pHeap) {
mInitTrans.x = getPanePtr()->getTranslateX();
mInitTrans.y = getPanePtr()->getTranslateY();
- mRotateZ = pPane->getRotateZ();
- mRotateOffset.x = pPane->getRotOffsetX();
- mRotateOffset.y = pPane->getRotOffsetY();
+ mRotateZ = p_pane->getRotateZ();
+ mRotateOffset.x = p_pane->getRotOffsetX();
+ mRotateOffset.y = p_pane->getRotOffsetY();
- if (pPane->getKind() == 'PAN2') {
+ if (p_pane->getKind() == 'PAN2') {
mInitAlpha = 255;
} else {
- mInitAlpha = pPane->getAlpha();
+ mInitAlpha = p_pane->getAlpha();
}
+
field_0x60 = 0;
field_0x62 = 0;
mScaleAnime = 0;
@@ -248,44 +136,25 @@ void CPaneMgr::initiate(J2DPane* pPane, JKRExpHeap* pHeap) {
mAlphaTimer = 0;
switch (getPanePtr()->getKind()) {
- case 'TBX3':
- case 'TBX4':
- case 'WIN3':
- JUtility::TColor white = mWindow->getWhite();
- mInitWhite.set(white.r, white.g, white.b, white.a);
-
- JUtility::TColor black = mWindow->getBlack();
- mInitBlack.set(black.r, black.g, black.b, black.a);
- break;
+ case 'WIN1':
+ case 'WIN2':
+ mInitWhite.set(((J2DWindow*)mPane)->getWhite());
+ mInitBlack.set(((J2DWindow*)mPane)->getBlack());
+ return;
case 'PIC1':
case 'PIC2':
- JUtility::TColor white2 = mWindow->getWhite();
- mInitWhite.set(white2.r, white2.g, white2.b, white2.a);
-
- JUtility::TColor black2 = mWindow->getBlack();
- mInitBlack.set(black2.r, black2.g, black2.b, black2.a);
- break;
- case 'WIN1':
- JUtility::TColor white3 = mWindow->getWhite();
- mInitWhite.set(white3.r, white3.g, white3.b, white3.a);
-
- JUtility::TColor black3 = mWindow->getBlack();
- mInitBlack.set(black3.r, black3.g, black3.b, black3.a);
- break;
+ mInitWhite.set(((J2DPicture*)mPane)->getWhite());
+ mInitBlack.set(((J2DPicture*)mPane)->getBlack());
+ return;
+ case 'TBX1':
+ case 'TBX2':
+ mInitWhite.set(((J2DTextBox*)mPane)->getWhite());
+ mInitBlack.set(((J2DTextBox*)mPane)->getBlack());
+ return;
}
mInitWhite.set(255, 255, 255, 255);
mInitBlack.set(0, 0, 0, 0);
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgr::initiate(J2DPane* param_0, JKRExpHeap* param_1) {
- nofralloc
-#include "asm/d/pane/d_pane_class/initiate__8CPaneMgrFP7J2DPaneP10JKRExpHeap.s"
-}
-#pragma pop
-#endif
/* 80254000-8025400C 24E940 000C+00 0/0 1/0 0/0 .text getBlack__9J2DWindowCFv */
JUtility::TColor J2DWindow::getBlack() const {
@@ -298,41 +167,43 @@ JUtility::TColor J2DWindow::getWhite() const {
}
/* 80254018-80254134 24E958 011C+00 1/1 0/0 0/0 .text childPaneGetSize__8CPaneMgrFP7J2DPane */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgr::childPaneGetSize(J2DPane* param_0) {
- nofralloc
-#include "asm/d/pane/d_pane_class/childPaneGetSize__8CPaneMgrFP7J2DPane.s"
+void CPaneMgr::childPaneGetSize(J2DPane* p_pane) {
+ if (p_pane != NULL) {
+ field_0x20[0] = p_pane->getBounds().i.x;
+ field_0x20[1] = p_pane->getBounds().i.y;
+ field_0x20[2] = p_pane->getWidth();
+ field_0x20[3] = p_pane->getHeight();
+ field_0x20[4] = p_pane->getRotOffsetX();
+ field_0x20[5] = p_pane->getRotOffsetY();
+ field_0x20 += 6;
+
+ childPaneGetSize(p_pane->getFirstChildPane());
+ childPaneGetSize(p_pane->getNextChildPane());
+ }
}
-#pragma pop
-/* ############################################################################################## */
-/* 80454E88-80454E90 003488 0004+04 4/4 0/0 0/0 .sdata2 @3858 */
-SECTION_SDATA2 static f32 lit_3858[1 + 1 /* padding */] = {
- 0.0f,
- /* padding */
- 0.0f,
-};
+/* 80254134-802542E8 24EA74 01B4+00 1/1 0/0 0/0 .text childPaneSetSize__8CPaneMgrFP7J2DPaneff */
+void CPaneMgr::childPaneSetSize(J2DPane* p_pane, f32 param_1, f32 param_2) {
+ if (p_pane != NULL) {
+ p_pane->move(field_0x20[0] * param_1, field_0x20[1] * param_2);
+ p_pane->resize(field_0x20[2] * param_1, field_0x20[3] * param_2);
+
+ if (p_pane->getRotateZ() != 0.0f) {
+ p_pane->rotate(field_0x20[4] * param_1, field_0x20[5] * param_2, ROTATE_Z, p_pane->getRotateZ());
+ }
-/* 80454E90-80454E98 003490 0008+00 2/2 0/0 0/0 .sdata2 @3860 */
-SECTION_SDATA2 static f64 lit_3860 = 4503601774854144.0 /* cast s32 to float */;
+ field_0x20 += 6;
-/* 80254134-802542E8 24EA74 01B4+00 1/1 0/0 0/0 .text childPaneSetSize__8CPaneMgrFP7J2DPaneff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgr::childPaneSetSize(J2DPane* param_0, f32 param_1, f32 param_2) {
- nofralloc
-#include "asm/d/pane/d_pane_class/childPaneSetSize__8CPaneMgrFP7J2DPaneff.s"
+ childPaneSetSize(p_pane->getFirstChildPane(), param_1, param_2);
+ childPaneSetSize(p_pane->getNextChildPane(), param_1, param_2);
+ }
}
-#pragma pop
/* 802542E8-80254364 24EC28 007C+00 2/2 18/18 0/0 .text getGlobalPosX__8CPaneMgrFv */
f32 CPaneMgr::getGlobalPosX() {
f32 posX = getPosX();
for (J2DPane* pane = getPanePtr()->getParentPane(); pane != NULL;
- pane = pane->getParentPane()) {
+ pane = pane->getParentPane()) {
posX += pane->getBounds().i.x;
}
return posX;
@@ -342,7 +213,7 @@ f32 CPaneMgr::getGlobalPosX() {
f32 CPaneMgr::getGlobalPosY() {
f32 posY = getPosY();
for (J2DPane* pane = getPanePtr()->getParentPane(); pane != NULL;
- pane = pane->getParentPane()) {
+ pane = pane->getParentPane()) {
posY += pane->getBounds().i.y;
}
return posY;
@@ -368,14 +239,22 @@ bool J2DWindow::setBlack(JUtility::TColor black) {
/* 80254458-80254568 24ED98 0110+00 1/1 7/7 0/0 .text
* setBlackWhite__8CPaneMgrFQ28JUtility6TColorQ28JUtility6TColor */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgr::setBlackWhite(JUtility::TColor param_0, JUtility::TColor param_1) {
- nofralloc
-#include "asm/d/pane/d_pane_class/setBlackWhite__8CPaneMgrFQ28JUtility6TColorQ28JUtility6TColor.s"
+void CPaneMgr::setBlackWhite(JUtility::TColor black, JUtility::TColor white) {
+ switch (mPane->getKind()) {
+ case 'WIN1':
+ case 'WIN2':
+ ((J2DWindow*)mPane)->setBlackWhite(black, white);
+ break;
+ case 'PIC1':
+ case 'PIC2':
+ ((J2DPicture*)mPane)->setBlackWhite(black, white);
+ break;
+ case 'TBX1':
+ case 'TBX2':
+ ((J2DTextBox*)mPane)->setBlackWhite(black, white);
+ break;
+ }
}
-#pragma pop
/* 80254568-802545B0 24EEA8 0048+00 0/0 1/0 0/0 .text
* setBlackWhite__9J2DWindowFQ28JUtility6TColorQ28JUtility6TColor */
@@ -385,62 +264,33 @@ bool J2DWindow::setBlackWhite(JUtility::TColor black, JUtility::TColor white) {
return true;
}
-/* ############################################################################################## */
-/* 80454E98-80454EA0 003498 0004+04 3/3 0/0 0/0 .sdata2 @4046 */
-SECTION_SDATA2 static f32 lit_4046[1 + 1 /* padding */] = {
- 0.5f,
- /* padding */
- 0.0f,
-};
-
/* 802545B0-80254638 24EEF0 0088+00 0/0 51/51 3/3 .text paneTrans__8CPaneMgrFff */
-// matches with literals
-#ifdef NONMATCHING
void CPaneMgr::paneTrans(f32 x, f32 y) {
f32 moveX = x + getInitCenterPosX() - getSizeX() * 0.5f;
f32 moveY = y + getInitCenterPosY() - getSizeY() * 0.5f;
getPanePtr()->move(moveX, moveY);
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgr::paneTrans(f32 param_0, f32 param_1) {
- nofralloc
-#include "asm/d/pane/d_pane_class/paneTrans__8CPaneMgrFff.s"
-}
-#pragma pop
-#endif
/* 80254638-802547CC 24EF78 0194+00 0/0 5/5 0/0 .text paneScale__8CPaneMgrFff */
-// swapped float reg
-#ifdef NONMATCHING
void CPaneMgr::paneScale(f32 x, f32 y) {
f32 moveX = getPosX() + getSizeX() * 0.5f;
f32 moveY = getPosY() + getSizeY() * 0.5f;
getPanePtr()->resize(mInitSize.x * x, mInitSize.y * y);
- getPanePtr()->move(moveX - getSizeY() * 0.5f, moveY - getSizeX() * 0.5f);
+
+ f32 moveX2 = moveX - getSizeX() * 0.5f;
+ f32 moveY2 = moveY - getSizeY() * 0.5f;
+ getPanePtr()->move(moveX2, moveY2);
if (mRotateZ != 0.0f) {
getPanePtr()->rotate(mRotateOffset.x * x, mRotateOffset.y * y, ROTATE_Z, getRotateZ());
}
if (mFlags & 1) {
- field_0x20 = mpFirstStackSize;
+ field_0x20 = (s16*)mpFirstStackSize;
childPaneSetSize(getPanePtr()->getFirstChildPane(), x, y);
}
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgr::paneScale(f32 param_0, f32 param_1) {
- nofralloc
-#include "asm/d/pane/d_pane_class/paneScale__8CPaneMgrFff.s"
-}
-#pragma pop
-#endif
/* 802547CC-802548BC 24F10C 00F0+00 0/0 10/10 0/0 .text scaleAnime__8CPaneMgrFsffUc */
bool CPaneMgr::scaleAnime(s16 param_0, f32 param_1, f32 param_2, u8 param_3) {
@@ -457,148 +307,197 @@ bool CPaneMgr::scaleAnime(s16 param_0, f32 param_1, f32 param_2, u8 param_3) {
return false;
}
-/* ############################################################################################## */
-/* 80454EA0-80454EA8 0034A0 0008+00 1/1 0/0 0/0 .sdata2 @4349 */
-SECTION_SDATA2 static f64 lit_4349 = 4503599627370496.0 /* cast u32 to float */;
-
/* 802548BC-80254C90 24F1FC 03D4+00 0/0 4/4 0/0 .text
* colorAnime__8CPaneMgrFsQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorUc
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgr::colorAnime(s16 param_0, JUtility::TColor param_1, JUtility::TColor param_2,
- JUtility::TColor param_3, JUtility::TColor param_4, u8 param_5) {
- nofralloc
-#include "asm/d/pane/d_pane_class/func_802548BC.s"
-}
-#pragma pop
+bool CPaneMgr::colorAnime(s16 anmTimer, JUtility::TColor startBlack, JUtility::TColor endBlack,
+ JUtility::TColor startWhite, JUtility::TColor endWhite, u8 calcType) {
+ if (mColorAnime < anmTimer - 1) {
+ mColorAnime++;
+ f32 rate = rateCalc(anmTimer, mColorAnime, calcType);
+
+ JUtility::TColor black;
+ JUtility::TColor white;
+
+ if (startBlack.r != endBlack.r) {
+ black.r = startBlack.r + rate * (endBlack.r - startBlack.r);
+ } else {
+ black.r = endBlack.r;
+ }
-/* ############################################################################################## */
-/* 80454EA8-80454EAC 0034A8 0004+00 1/1 0/0 0/0 .sdata2 @4473 */
-SECTION_SDATA2 static f32 lit_4473 = 608.0f;
+ if (startBlack.g != endBlack.g) {
+ black.g = startBlack.g + rate * (endBlack.g - startBlack.g);
+ } else {
+ black.g = endBlack.g;
+ }
-/* 80454EAC-80454EB0 0034AC 0004+00 1/1 0/0 0/0 .sdata2 @4474 */
-SECTION_SDATA2 static f32 lit_4474 = 448.0f;
+ if (startBlack.b != endBlack.b) {
+ black.b = startBlack.b + rate * (endBlack.b - startBlack.b);
+ } else {
+ black.b = endBlack.b;
+ }
-/* 80454EB0-80454EB4 0034B0 0004+00 1/1 0/0 0/0 .sdata2 @4475 */
-SECTION_SDATA2 static f32 lit_4475 = -1.0f;
+ if (startBlack.a != endBlack.a) {
+ black.a = startBlack.a + rate * (endBlack.a - startBlack.a);
+ } else {
+ black.a = endBlack.a;
+ }
+
+
+ if (startWhite.r != endWhite.r) {
+ white.r = startWhite.r + rate * (endWhite.r - startWhite.r);
+ } else {
+ white.r = endWhite.r;
+ }
-/* 80454EB4-80454EB8 0034B4 0004+00 1/1 0/0 0/0 .sdata2 @4476 */
-SECTION_SDATA2 static f32 lit_4476 = 1.0f;
+ if (startWhite.g != endWhite.g) {
+ white.g = startWhite.g + rate * (endWhite.g - startWhite.g);
+ } else {
+ white.g = endWhite.g;
+ }
+
+ if (startWhite.b != endWhite.b) {
+ white.b = startWhite.b + rate * (endWhite.b - startWhite.b);
+ } else {
+ white.b = endWhite.b;
+ }
+
+ if (startWhite.a != endWhite.a) {
+ white.a = startWhite.a + rate * (endWhite.a - startWhite.a);
+ } else {
+ white.a = endWhite.a;
+ }
+
+ setBlackWhite(black, white);
+ } else {
+ mColorAnime = anmTimer;
+ setBlackWhite(endBlack, endWhite);
+ return true;
+ }
+
+ return false;
+}
/* 80254C90-80254EBC 24F5D0 022C+00 1/1 9/9 0/0 .text
* getGlobalVtx__8CPaneMgrFP7J2DPanePA3_A4_fUcbs */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgr::getGlobalVtx(J2DPane* param_0, f32 (*param_1)[3][4], u8 param_2, bool param_3,
+Vec CPaneMgr::getGlobalVtx(J2DPane* p_pane, Mtx* param_1, u8 param_2, bool param_3,
s16 param_4) {
- nofralloc
-#include "asm/d/pane/d_pane_class/getGlobalVtx__8CPaneMgrFP7J2DPanePA3_A4_fUcbs.s"
+ Mtx m;
+ MtxP mp = (MtxP)param_1;
+ J2DPane* parent = p_pane->getParentPane();
+
+ J2DOrthoGraph ortho(0.0f, 0.0f, 608.0f, 448.0f, -1.0f, 1.0f);
+ ortho.setOrtho(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(), mDoGph_gInf_c::getWidthF(), mDoGph_gInf_c::getHeightF(), -1.0f, 1.0f);
+
+ if (parent != NULL) {
+ getGlobalVtx(parent, param_1, param_2, param_3, param_4);
+ PSMTXCopy(*param_1, m);
+ PSMTXConcat(m, *p_pane->getMtx(), *param_1);
+ } else {
+ p_pane->calcMtx();
+ PSMTXCopy(*p_pane->getMtx(), *param_1);
+ }
+
+ Vec outVec;
+ if (param_2 >= 4) {
+ outVec.x = 0.0f;
+ outVec.y = 0.0f;
+ outVec.z = 0.0f;
+
+ return outVec;
+ } else {
+ JGeometry::TBox2<f32> bounds = *getBounds(p_pane);
+ f32 x2 = (param_2 & 1) ? bounds.f.x : bounds.i.x;
+ f32 y2 = (param_2 & 2) ? bounds.f.y : bounds.i.y;
+
+ outVec.x = mp[0][3] + (x2 * mp[0][0] + (y2 * mp[0][1]));
+ outVec.y = mp[1][3] + (x2 * mp[1][0] + (y2 * mp[1][1]));
+ outVec.z = mp[2][3] + (x2 * mp[2][0] + (y2 * mp[2][1]));
+
+ return outVec;
+ }
}
-#pragma pop
-/* 80254EBC-80254FB8 24F7FC 00FC+00 0/0 56/56 1/1 .text getGlobalVtxCenter__8CPaneMgrFP7J2DPanebs
+/* 80254EBC-80254FB8 24F7FC 00FC+00 0/0 56/56 1/1 .text tCenter__8CPaneMgrFP7J2DPanebs
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm Vec CPaneMgr::getGlobalVtxCenter(J2DPane* param_0, bool param_1, s16 param_2) {
- nofralloc
-#include "asm/d/pane/d_pane_class/getGlobalVtxCenter__8CPaneMgrFP7J2DPanebs.s"
+Vec CPaneMgr::getGlobalVtxCenter(J2DPane* p_pane, bool param_1, s16) {
+ Mtx m;
+ Vec vtxCenter;
+ Vec v1 = getGlobalVtx(p_pane, &m, 0, param_1, 0);
+ Vec v2 = getGlobalVtx(p_pane, &m, 3, param_1, 0);
+
+ vtxCenter.x = (v1.x + v2.x) * 0.5f;
+ vtxCenter.y = (v1.y + v2.y) * 0.5f;
+ vtxCenter.z = (v1.z + v2.z) * 0.5f;
+
+ return vtxCenter;
}
-#pragma pop
/* ############################################################################################## */
/* 80430748-80430758 05D468 0010+00 2/2 0/0 0/0 .bss static_mBounds */
-static f32 static_mBounds[4];
+static JGeometry::TBox2<f32> static_mBounds(0.0f, 0.0f, 0.0f, 0.0f);
/* 80254FB8-802550E8 24F8F8 0130+00 1/1 0/0 0/0 .text getBounds__8CPaneMgrFP7J2DPane */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgr::getBounds(J2DPane* param_0) {
- nofralloc
-#include "asm/d/pane/d_pane_class/getBounds__8CPaneMgrFP7J2DPane.s"
+JGeometry::TBox2<f32>* CPaneMgr::getBounds(J2DPane* p_pane) {
+ JGeometry::TBox2<f32> bounds(p_pane->getBounds());
+
+ J2DPane* parent = p_pane->getParentPane();
+ if (parent != NULL) {
+ JGeometry::TBox2<f32>* parentBounds = getBounds(parent);
+ f32 y = parentBounds->i.y;
+
+ JGeometry::TBox2<f32>* parentBounds2 = getBounds(parent);
+
+ bounds.addPos(JGeometry::TVec2<f32>(parentBounds2->i.x, y));
+ }
+
+ f32 transX = -p_pane->getTranslateX();
+ f32 transY = -p_pane->getTranslateY();
+ bounds.addPos(JGeometry::TVec2<f32>(transX, transY));
+
+ static_mBounds = bounds;
+ return &static_mBounds;
}
-#pragma pop
/* 802550E8-8025512C 24FA28 0044+00 0/0 54/54 3/3 .text dPaneClass_showNullPane__FP9J2DScreen */
-void dPaneClass_showNullPane(J2DScreen* pScrn) {
- if (pScrn) {
- dPaneClass_showNullPane(pScrn->search('ROOT'));
+void dPaneClass_showNullPane(J2DScreen* p_scrn) {
+ if (p_scrn) {
+ dPaneClass_showNullPane(p_scrn->search('ROOT'));
}
}
/* 8025512C-80255184 24FA6C 0058+00 1/1 0/0 0/0 .text dPaneClass_showNullPane__FP7J2DPane
*/
-void dPaneClass_showNullPane(J2DPane* pPane) {
- if (pPane) {
- if (!pPane->isVisible()) {
- pPane->show();
+void dPaneClass_showNullPane(J2DPane* p_pane) {
+ if (p_pane) {
+ if (!p_pane->isVisible()) {
+ p_pane->show();
}
- dPaneClass_showNullPane(pPane->getFirstChildPane());
- dPaneClass_showNullPane(pPane->getNextChildPane());
+ dPaneClass_showNullPane(p_pane->getFirstChildPane());
+ dPaneClass_showNullPane(p_pane->getNextChildPane());
}
}
/* 80255184-802552B8 24FAC4 0134+00 0/0 1/1 0/0 .text
* dPaneClass_setPriority__FPPvP7JKRHeapP9J2DScreenPCcUlP10JKRArchive */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dPaneClass_setPriority(void** param_0, JKRHeap* param_1, J2DScreen* param_2,
- char const* param_3, u32 param_4, JKRArchive* param_5) {
- nofralloc
-#include "asm/d/pane/d_pane_class/dPaneClass_setPriority__FPPvP7JKRHeapP9J2DScreenPCcUlP10JKRArchive.s"
-}
-#pragma pop
-
-/* 802552B8-80255328 24FBF8 0070+00 0/0 1/0 0/0 .text __dt__20JSUMemoryInputStreamFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-// asm JSUMemoryInputStream::~JSUMemoryInputStream() {
-extern "C" asm void __dt__20JSUMemoryInputStreamFv() {
- nofralloc
-#include "asm/d/pane/d_pane_class/__dt__20JSUMemoryInputStreamFv.s"
-}
-#pragma pop
-
-/* 80255328-80255388 24FC68 0060+00 0/0 1/0 0/0 .text __dt__20JSURandomInputStreamFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-// asm JSURandomInputStream::~JSURandomInputStream() {
-extern "C" asm void __dt__20JSURandomInputStreamFv() {
- nofralloc
-#include "asm/d/pane/d_pane_class/__dt__20JSURandomInputStreamFv.s"
-}
-#pragma pop
-
-/* 80255388-802553D0 24FCC8 0048+00 1/0 0/0 0/0 .text __dt__10JSUIosBaseFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-// asm JSUIosBase::~JSUIosBase() {
-extern "C" asm void __dt__10JSUIosBaseFv() {
- nofralloc
-#include "asm/d/pane/d_pane_class/__dt__10JSUIosBaseFv.s"
-}
-#pragma pop
-
-/* 802553D0-802553EC 24FD10 001C+00 0/0 1/0 0/0 .text __sinit_d_pane_class_cpp */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void __sinit_d_pane_class_cpp() {
- nofralloc
-#include "asm/d/pane/d_pane_class/__sinit_d_pane_class_cpp.s"
-}
-#pragma pop
+bool dPaneClass_setPriority(void** i_data, JKRHeap* p_heap, J2DScreen* p_screen,
+ char const* resName, u32 param_4, JKRArchive* p_archive) {
+ if (p_archive == NULL) {
+ return false;
+ }
+
+ u32 size = dLib_getExpandSizeFromAramArchive((JKRAramArchive*)p_archive, resName);
+ if (size == 0) {
+ return false;
+ }
+
+ *i_data = p_heap->alloc(size, 0x20);
+ u32 len = p_archive->readResource(*i_data, size, resName);
+
+ if (len != 0) {
+ JSUMemoryInputStream stream(*i_data, len);
+ return p_screen->setPriority(&stream, param_4, p_archive);
+ }
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x802553D0, __sinit_d_pane_class_cpp);
-#pragma pop
+ return false;
+}
diff --git a/src/d/pane/d_pane_class_alpha.cpp b/src/d/pane/d_pane_class_alpha.cpp
index 2680ad9673..a32ac807d1 100644
--- a/src/d/pane/d_pane_class_alpha.cpp
+++ b/src/d/pane/d_pane_class_alpha.cpp
@@ -6,330 +6,300 @@
#include "d/pane/d_pane_class_alpha.h"
#include "dol2asm.h"
#include "dolphin/types.h"
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__13CPaneMgrAlphaFv();
-extern "C" void __ct__13CPaneMgrAlphaFP9J2DScreenUxUcP10JKRExpHeap();
-extern "C" void __dt__13CPaneMgrAlphaFv();
-extern "C" void initiateAlpha__13CPaneMgrAlphaFP7J2DPaneP10JKRExpHeap();
-extern "C" void show__13CPaneMgrAlphaFv();
-extern "C" void hide__13CPaneMgrAlphaFv();
-extern "C" void isVisible__13CPaneMgrAlphaFv();
-extern "C" void rateCalc__13CPaneMgrAlphaFssUc();
-extern "C" void setAlpha__13CPaneMgrAlphaFUc();
-extern "C" void setAlphaRate__13CPaneMgrAlphaFf();
-extern "C" void getAlphaRate__13CPaneMgrAlphaFv();
-extern "C" void alphaAnime__13CPaneMgrAlphaFsUcUcUc();
-extern "C" void alphaAnimeLoop__13CPaneMgrAlphaFsUcUcUc();
-extern "C" void childPaneCount__13CPaneMgrAlphaFP7J2DPane();
-extern "C" void childPaneGetAlpha__13CPaneMgrAlphaFP7J2DPane();
-extern "C" void childPaneSetAlpha__13CPaneMgrAlphaFP7J2DPaneUc();
-extern "C" void __ct__17CPaneMgrAlphaMorfFP9J2DScreenUxUcP10JKRExpHeap();
-extern "C" void __dt__17CPaneMgrAlphaMorfFv();
-extern "C" void initiateAlphaMorf__17CPaneMgrAlphaMorfFv();
-extern "C" void setBackupAlpha__17CPaneMgrAlphaMorfFv();
-extern "C" void setAlphaMorfRate__17CPaneMgrAlphaMorfFf();
-extern "C" void childPaneBackupAlpha__17CPaneMgrAlphaMorfFP7J2DPane();
-extern "C" void childPaneSetAlphaMorf__17CPaneMgrAlphaMorfFP7J2DPanef();
-
-//
-// External References:
-//
-
-extern "C" void mDoExt_getCurrentHeap__Fv();
-extern "C" void alloc__7JKRHeapFUli();
-extern "C" void free__7JKRHeapFPv();
-extern "C" void __dl__FPv();
-extern "C" void getFirstChildPane__7J2DPaneFv();
-extern "C" void getNextChildPane__7J2DPaneFv();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 803C2E18-803C2E28 01FF38 0010+00 2/2 0/0 0/0 .data __vt__17CPaneMgrAlphaMorf */
-SECTION_DATA extern void* __vt__17CPaneMgrAlphaMorf[4] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__17CPaneMgrAlphaMorfFv,
- (void*)setAlpha__13CPaneMgrAlphaFUc,
-};
-
-/* 803C2E28-803C2E38 01FF48 0010+00 3/3 0/0 0/0 .data __vt__13CPaneMgrAlpha */
-SECTION_DATA extern void* __vt__13CPaneMgrAlpha[4] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__13CPaneMgrAlphaFv,
- (void*)setAlpha__13CPaneMgrAlphaFUc,
-};
+#include "m_Do/m_Do_ext.h"
/* 802553EC-802553FC 24FD2C 0010+00 0/0 2/2 0/0 .text __ct__13CPaneMgrAlphaFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm CPaneMgrAlpha::CPaneMgrAlpha() {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/__ct__13CPaneMgrAlphaFv.s"
-}
-#pragma pop
+CPaneMgrAlpha::CPaneMgrAlpha() {}
/* 802553FC-8025546C 24FD3C 0070+00 1/1 9/9 1/1 .text
* __ct__13CPaneMgrAlphaFP9J2DScreenUxUcP10JKRExpHeap */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm CPaneMgrAlpha::CPaneMgrAlpha(J2DScreen* param_0, u64 param_1, u8 param_2, JKRExpHeap* param_3) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/__ct__13CPaneMgrAlphaFP9J2DScreenUxUcP10JKRExpHeap.s"
+CPaneMgrAlpha::CPaneMgrAlpha(J2DScreen* p_screen, u64 tag, u8 flags, JKRExpHeap* p_heap) {
+ J2DPane* pane = p_screen->search(tag);
+ mFlags = flags;
+ initiateAlpha(pane, p_heap);
}
-#pragma pop
/* 8025546C-802554E0 24FDAC 0074+00 2/1 1/1 0/0 .text __dt__13CPaneMgrAlphaFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm CPaneMgrAlpha::~CPaneMgrAlpha() {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/__dt__13CPaneMgrAlphaFv.s"
+CPaneMgrAlpha::~CPaneMgrAlpha() {
+ if (mpFirstStackAlpha != NULL) {
+ heap->free(mpFirstStackAlpha);
+ mpFirstStackAlpha = NULL;
+ }
}
-#pragma pop
/* 802554E0-802555C8 24FE20 00E8+00 1/1 0/0 0/0 .text
* initiateAlpha__13CPaneMgrAlphaFP7J2DPaneP10JKRExpHeap */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlpha::initiateAlpha(J2DPane* param_0, JKRExpHeap* param_1) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/initiateAlpha__13CPaneMgrAlphaFP7J2DPaneP10JKRExpHeap.s"
+void CPaneMgrAlpha::initiateAlpha(J2DPane* p_pane, JKRExpHeap* p_heap) {
+ mPane = p_pane;
+
+ if (p_heap != NULL) {
+ heap = p_heap;
+ } else {
+ heap = (JKRExpHeap*)mDoExt_getCurrentHeap();
+ }
+
+ mpFirstStackAlpha = NULL;
+ field_0x10 = NULL;
+ mChildPaneCount = 0;
+
+ if (mFlags != 0) {
+ childPaneCount(mPane->getFirstChildPane());
+
+ if (mFlags & 2) {
+ mpFirstStackAlpha = heap->alloc(mChildPaneCount, 0x20);
+ field_0x10 = (u8*)mpFirstStackAlpha;
+ childPaneGetAlpha(mPane->getFirstChildPane());
+ }
+ }
+
+ if (p_pane->getKind() == 'PAN2') {
+ mInitAlpha = 255;
+ } else {
+ mInitAlpha = p_pane->getAlpha();
+ }
+
+ mAlphaTimer = 0;
}
-#pragma pop
/* 802555C8-80255608 24FF08 0040+00 0/0 40/40 2/2 .text show__13CPaneMgrAlphaFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlpha::show() {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/show__13CPaneMgrAlphaFv.s"
+void CPaneMgrAlpha::show() {
+ if (!isVisible()) {
+ mPane->show();
+ }
}
-#pragma pop
/* 80255608-8025564C 24FF48 0044+00 0/0 46/46 2/2 .text hide__13CPaneMgrAlphaFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlpha::hide() {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/hide__13CPaneMgrAlphaFv.s"
+void CPaneMgrAlpha::hide() {
+ if (isVisible() == true) {
+ mPane->hide();
+ }
}
-#pragma pop
/* 8025564C-80255658 24FF8C 000C+00 2/2 12/12 0/0 .text isVisible__13CPaneMgrAlphaFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlpha::isVisible() {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/isVisible__13CPaneMgrAlphaFv.s"
+bool CPaneMgrAlpha::isVisible() {
+ return mPane->isVisible();
}
-#pragma pop
-
-/* ############################################################################################## */
-/* 80454EB8-80454EC0 0034B8 0004+04 1/1 0/0 0/0 .sdata2 @3692 */
-SECTION_SDATA2 static f32 lit_3692[1 + 1 /* padding */] = {
- 1.0f,
- /* padding */
- 0.0f,
-};
-
-/* 80454EC0-80454EC8 0034C0 0008+00 3/3 0/0 0/0 .sdata2 @3694 */
-SECTION_SDATA2 static f64 lit_3694 = 4503601774854144.0 /* cast s32 to float */;
/* 80255658-80255758 24FF98 0100+00 2/2 2/2 0/0 .text rateCalc__13CPaneMgrAlphaFssUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm f32 CPaneMgrAlpha::rateCalc(s16 param_0, s16 param_1, u8 param_2) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/rateCalc__13CPaneMgrAlphaFssUc.s"
+f32 CPaneMgrAlpha::rateCalc(s16 maxTimer, s16 curTimer, u8 calcType) {
+ if (maxTimer <= curTimer) {
+ return 1.0f;
+ }
+
+ switch (calcType) {
+ case 1:
+ return (f32)(curTimer * curTimer) / (f32)(maxTimer * maxTimer);
+ case 2:
+ return (f32)((maxTimer - curTimer) * (maxTimer - curTimer)) / (f32)(maxTimer * maxTimer);
+ default:
+ return (f32)curTimer / (f32)maxTimer;
+ }
}
-#pragma pop
/* 80255758-802557D0 250098 0078+00 2/0 0/0 0/0 .text setAlpha__13CPaneMgrAlphaFUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlpha::setAlpha(u8 param_0) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/setAlpha__13CPaneMgrAlphaFUc.s"
+void CPaneMgrAlpha::setAlpha(u8 alpha) {
+ if (mFlags & 2) {
+ field_0x10 = (u8*)mpFirstStackAlpha;
+ childPaneSetAlpha(mPane->getFirstChildPane(), alpha);
+ }
+ mPane->setAlpha(alpha);
}
-#pragma pop
-
-/* ############################################################################################## */
-/* 80454EC8-80454ED0 0034C8 0008+00 6/6 0/0 0/0 .sdata2 @3708 */
-SECTION_SDATA2 static f64 lit_3708 = 4503599627370496.0 /* cast u32 to float */;
/* 802557D0-80255828 250110 0058+00 1/1 173/173 5/5 .text setAlphaRate__13CPaneMgrAlphaFf
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlpha::setAlphaRate(f32 param_0) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/setAlphaRate__13CPaneMgrAlphaFf.s"
+void CPaneMgrAlpha::setAlphaRate(f32 rate) {
+ setAlpha(mInitAlpha * rate);
}
-#pragma pop
-
-/* ############################################################################################## */
-/* 80454ED0-80454ED8 0034D0 0004+04 2/2 0/0 0/0 .sdata2 @3721 */
-SECTION_SDATA2 static f32 lit_3721[1 + 1 /* padding */] = {
- 0.0f,
- /* padding */
- 0.0f,
-};
/* 80255828-80255878 250168 0050+00 0/0 107/107 2/2 .text getAlphaRate__13CPaneMgrAlphaFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm f32 CPaneMgrAlpha::getAlphaRate() {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/getAlphaRate__13CPaneMgrAlphaFv.s"
+f32 CPaneMgrAlpha::getAlphaRate() {
+ f32 rate = 0.0f;
+
+ if (mInitAlpha != 0) {
+ rate = getAlpha() / (f32)mInitAlpha;
+ }
+
+ return rate;
}
-#pragma pop
/* 80255878-80255964 2501B8 00EC+00 0/0 31/31 1/1 .text alphaAnime__13CPaneMgrAlphaFsUcUcUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlpha::alphaAnime(s16 param_0, u8 param_1, u8 param_2, u8 param_3) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/alphaAnime__13CPaneMgrAlphaFsUcUcUc.s"
+bool CPaneMgrAlpha::alphaAnime(s16 timer, u8 startAlpha, u8 endAlpha, u8 calcType) {
+ if (mAlphaTimer < timer - 1) {
+ mAlphaTimer++;
+ f32 rate = rateCalc(timer, mAlphaTimer, calcType);
+ setAlpha(startAlpha + rate * (f32)(endAlpha - startAlpha));
+ } else {
+ mAlphaTimer = timer;
+ setAlpha(endAlpha);
+ return true;
+ }
+
+ return false;
}
-#pragma pop
/* 80255964-80255A60 2502A4 00FC+00 0/0 0/0 1/1 .text alphaAnimeLoop__13CPaneMgrAlphaFsUcUcUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlpha::alphaAnimeLoop(s16 param_0, u8 param_1, u8 param_2, u8 param_3) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/alphaAnimeLoop__13CPaneMgrAlphaFsUcUcUc.s"
+bool CPaneMgrAlpha::alphaAnimeLoop(s16 param_0, u8 param_1, u8 param_2, u8 param_3) {
+ bool ret = false;
+ s16 temp_r4 = param_0 / 2;
+
+ mAlphaTimer++;
+
+ if (mAlphaTimer >= param_0) {
+ mAlphaTimer = 0;
+ ret = true;
+ }
+
+ s16 tmp;
+ if (mAlphaTimer < temp_r4) {
+ tmp = mAlphaTimer;
+ } else {
+ tmp = param_0 - mAlphaTimer;
+ }
+
+ f32 rate = rateCalc(temp_r4, tmp, param_3);
+ setAlpha(param_1 + rate * (f32)(param_2 - param_1));
+
+ return ret;
}
-#pragma pop
/* 80255A60-80255ACC 2503A0 006C+00 1/1 1/1 0/0 .text childPaneCount__13CPaneMgrAlphaFP7J2DPane */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlpha::childPaneCount(J2DPane* param_0) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/childPaneCount__13CPaneMgrAlphaFP7J2DPane.s"
+void CPaneMgrAlpha::childPaneCount(J2DPane* p_pane) {
+ if (p_pane != NULL) {
+ mChildPaneCount++;
+ childPaneCount(p_pane->getFirstChildPane());
+ childPaneCount(p_pane->getNextChildPane());
+ }
}
-#pragma pop
/* 80255ACC-80255B5C 25040C 0090+00 1/1 1/1 0/0 .text childPaneGetAlpha__13CPaneMgrAlphaFP7J2DPane
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlpha::childPaneGetAlpha(J2DPane* param_0) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/childPaneGetAlpha__13CPaneMgrAlphaFP7J2DPane.s"
+void CPaneMgrAlpha::childPaneGetAlpha(J2DPane* p_pane) {
+ if (p_pane != NULL) {
+ u8 alpha;
+ if (p_pane->getKind() == 'PAN2') {
+ alpha = 255;
+ } else {
+ alpha = p_pane->getAlpha();
+ }
+
+ *field_0x10 = alpha;
+ field_0x10++;
+ childPaneGetAlpha(p_pane->getFirstChildPane());
+ childPaneGetAlpha(p_pane->getNextChildPane());
+ }
}
-#pragma pop
/* 80255B5C-80255C68 25049C 010C+00 1/1 1/1 0/0 .text
* childPaneSetAlpha__13CPaneMgrAlphaFP7J2DPaneUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlpha::childPaneSetAlpha(J2DPane* param_0, u8 param_1) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/childPaneSetAlpha__13CPaneMgrAlphaFP7J2DPaneUc.s"
+void CPaneMgrAlpha::childPaneSetAlpha(J2DPane* p_pane, u8 alpha) {
+ if (p_pane != NULL) {
+ if (!p_pane->mIsInfluencedAlpha) {
+ f32 tmp;
+ if (mInitAlpha == 0) {
+ tmp = 0.0f;
+ } else {
+ tmp = (f32)alpha / (f32)mInitAlpha;
+ }
+
+ p_pane->setAlpha(*field_0x10 * tmp);
+ }
+
+ field_0x10++;
+ childPaneSetAlpha(p_pane->getFirstChildPane(), alpha);
+ childPaneSetAlpha(p_pane->getNextChildPane(), alpha);
+ }
}
-#pragma pop
/* 80255C68-80255CAC 2505A8 0044+00 0/0 5/5 0/0 .text
* __ct__17CPaneMgrAlphaMorfFP9J2DScreenUxUcP10JKRExpHeap */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm CPaneMgrAlphaMorf::CPaneMgrAlphaMorf(J2DScreen* param_0, u64 param_1, u8 param_2,
- JKRExpHeap* param_3) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/__ct__17CPaneMgrAlphaMorfFP9J2DScreenUxUcP10JKRExpHeap.s"
+CPaneMgrAlphaMorf::CPaneMgrAlphaMorf(J2DScreen* p_screen, u64 tag, u8 flags,
+ JKRExpHeap* p_heap)
+ : CPaneMgrAlpha(p_screen, tag, flags, p_heap) {
+ initiateAlphaMorf();
}
-#pragma pop
/* 80255CAC-80255D48 2505EC 009C+00 1/0 0/0 0/0 .text __dt__17CPaneMgrAlphaMorfFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm CPaneMgrAlphaMorf::~CPaneMgrAlphaMorf() {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/__dt__17CPaneMgrAlphaMorfFv.s"
+CPaneMgrAlphaMorf::~CPaneMgrAlphaMorf() {
+ if (mpFirstSaveAlpha != NULL) {
+ heap->free(mpFirstSaveAlpha);
+ mpFirstSaveAlpha = NULL;
+ }
+
+ if (mpFirstGetAlpha != NULL) {
+ heap->free(mpFirstGetAlpha);
+ mpFirstGetAlpha = NULL;
+ }
}
-#pragma pop
/* 80255D48-80255DD0 250688 0088+00 1/1 0/0 0/0 .text initiateAlphaMorf__17CPaneMgrAlphaMorfFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlphaMorf::initiateAlphaMorf() {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/initiateAlphaMorf__17CPaneMgrAlphaMorfFv.s"
+void CPaneMgrAlphaMorf::initiateAlphaMorf() {
+ mpFirstSaveAlpha = NULL;
+ field_0x20 = NULL;
+
+ mpFirstGetAlpha = NULL;
+ field_0x28 = NULL;
+
+ if (mpFirstStackAlpha != NULL) {
+ mpFirstSaveAlpha = heap->alloc(mChildPaneCount, 0x20);
+ field_0x20 = (u8*)mpFirstSaveAlpha;
+
+ mpFirstGetAlpha = heap->alloc(mChildPaneCount, 0x20);
+ field_0x28 = (u8*)mpFirstGetAlpha;
+ setBackupAlpha();
+ }
}
-#pragma pop
/* 80255DD0-80255E28 250710 0058+00 1/1 3/3 0/0 .text setBackupAlpha__17CPaneMgrAlphaMorfFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlphaMorf::setBackupAlpha() {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/setBackupAlpha__17CPaneMgrAlphaMorfFv.s"
+void CPaneMgrAlphaMorf::setBackupAlpha() {
+ if (mpFirstStackAlpha != NULL) {
+ field_0x20 = (u8*)mpFirstSaveAlpha;
+ field_0x28 = (u8*)mpFirstGetAlpha;
+
+ childPaneBackupAlpha(mPane->getFirstChildPane());
+ }
}
-#pragma pop
/* 80255E28-80255E98 250768 0070+00 0/0 3/3 0/0 .text setAlphaMorfRate__17CPaneMgrAlphaMorfFf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlphaMorf::setAlphaMorfRate(f32 param_0) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/setAlphaMorfRate__17CPaneMgrAlphaMorfFf.s"
+void CPaneMgrAlphaMorf::setAlphaMorfRate(f32 rate) {
+ if (mpFirstStackAlpha != NULL) {
+ field_0x20 = (u8*)mpFirstSaveAlpha;
+ field_0x28 = (u8*)mpFirstGetAlpha;
+
+ childPaneSetAlphaMorf(mPane->getFirstChildPane(), rate);
+ } else {
+ setAlphaRate(rate);
+ }
}
-#pragma pop
/* 80255E98-80255F28 2507D8 0090+00 1/1 0/0 0/0 .text
* childPaneBackupAlpha__17CPaneMgrAlphaMorfFP7J2DPane */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlphaMorf::childPaneBackupAlpha(J2DPane* param_0) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/childPaneBackupAlpha__17CPaneMgrAlphaMorfFP7J2DPane.s"
+void CPaneMgrAlphaMorf::childPaneBackupAlpha(J2DPane* p_pane) {
+ if (p_pane != NULL) {
+ *field_0x20 = p_pane->getAlpha();
+ field_0x20++;
+
+ *field_0x28 = p_pane->getAlpha();
+ field_0x28++;
+
+ childPaneBackupAlpha(p_pane->getFirstChildPane());
+ childPaneBackupAlpha(p_pane->getNextChildPane());
+ }
}
-#pragma pop
/* 80255F28-80256018 250868 00F0+00 1/1 0/0 0/0 .text
* childPaneSetAlphaMorf__17CPaneMgrAlphaMorfFP7J2DPanef */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void CPaneMgrAlphaMorf::childPaneSetAlphaMorf(J2DPane* param_0, f32 param_1) {
- nofralloc
-#include "asm/d/pane/d_pane_class_alpha/childPaneSetAlphaMorf__17CPaneMgrAlphaMorfFP7J2DPanef.s"
+void CPaneMgrAlphaMorf::childPaneSetAlphaMorf(J2DPane* p_pane, f32 morf) {
+ if (p_pane != NULL) {
+ if (*field_0x20 == *field_0x28) {
+ p_pane->setAlpha(*field_0x20 * morf);
+ } else {
+ *field_0x20 = *field_0x28;
+ }
+ field_0x20++;
+ field_0x28++;
+
+ childPaneSetAlphaMorf(p_pane->getFirstChildPane(), morf);
+ childPaneSetAlphaMorf(p_pane->getNextChildPane(), morf);
+ }
}
-#pragma pop
diff --git a/src/d/particle/d_particle.cpp b/src/d/particle/d_particle.cpp
index d46eb184db..62ddd4827e 100644
--- a/src/d/particle/d_particle.cpp
+++ b/src/d/particle/d_particle.cpp
@@ -469,7 +469,7 @@ extern "C" extern u32 g_whiteColor;
extern "C" u8 mFrameBufferTimg__13mDoGph_gInf_c[4];
extern "C" extern u8 JPTracePCB4[4];
extern "C" f32 mWaterY__11fopAcM_wt_c[1 + 1 /* padding */];
-extern "C" extern u8 struct_80450D64[4];
+extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
extern "C" u8 sOldVcdVatCmd__8J3DShape[4];
//
diff --git a/src/d/s/d_s_logo.cpp b/src/d/s/d_s_logo.cpp
index 7e1081a6d6..a9f6a3a140 100644
--- a/src/d/s/d_s_logo.cpp
+++ b/src/d/s/d_s_logo.cpp
@@ -137,6 +137,7 @@ extern "C" extern void* g_fpcNd_Method[5 + 1 /* padding */];
extern "C" extern void* __vt__10dDlst_2D_c[3];
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
extern "C" void* mRenderModeObj__15mDoMch_render_c[1 + 1 /* padding */];
+extern "C" extern u8 mInitFlag__17mDoAud_zelAudio_c[4];
extern "C" u8 mFader__13mDoGph_gInf_c[4];
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
extern "C" u8 mData__12dEnemyItem_c[4 + 4 /* padding */];
diff --git a/src/d/s/d_s_play.cpp b/src/d/s/d_s_play.cpp
index c613985499..008cc27ba1 100644
--- a/src/d/s/d_s_play.cpp
+++ b/src/d/s/d_s_play.cpp
@@ -197,6 +197,7 @@ extern "C" u8 mFader__13mDoGph_gInf_c[4];
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
extern "C" u8 mProcID__20dStage_roomControl_c[4];
extern "C" extern u8 struct_80450D8C[4];
+extern "C" extern u8 mBgmSet__17mDoAud_zelAudio_c;
extern "C" u8 m_emitter__8daYkgr_c[4];
extern "C" u8 sManager__10JFWDisplay[4];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
@@ -238,19 +239,19 @@ static u8 g_preLoadHIO[4];
/* 80451124-80451128 -00001 0004+00 3/3 7/7 38/38 .sbss None */
/* 80451124 0001+00 data_80451124 None */
-/* 80451125 0003+00 data_80451125 None */
-s8 struct_80451124;
+/* 80451125 0003+00 nextPauseTimer__9dScnPly_c None */
+s8 dScnPly_c::pauseTimer;
-s8 data_80451125;
+s8 dScnPly_c::nextPauseTimer;
/* 80259400-80259440 253D40 0040+00 1/1 0/0 0/0 .text calcPauseTimer__9dScnPly_cFv */
s8 dScnPly_c::calcPauseTimer() {
- if (data_80451125 != 0) {
- struct_80451124 = data_80451125;
- data_80451125 = 0;
- return struct_80451124;
+ if (nextPauseTimer != 0) {
+ pauseTimer = nextPauseTimer;
+ nextPauseTimer = 0;
+ return pauseTimer;
} else {
- return func_80252E70(&struct_80451124); // cLib_calcTimer<s8> : 80252E70
+ return func_80252E70(&pauseTimer); // cLib_calcTimer<s8> : 80252E70
}
}
@@ -418,7 +419,7 @@ static int dScnPly_Draw(dScnPly_c* scn) {
}
dMdl_mng_c::reset();
- if (!dComIfGp_isPauseFlag() && struct_80451124 == 0) {
+ if (!dComIfGp_isPauseFlag() && pauseTimer == 0) {
if (fpcM_GetName(scn) == PROC_PLAY_SCENE) {
dComIfGp_getVibration().Run();
}
@@ -429,9 +430,9 @@ static int dScnPly_Draw(dScnPly_c* scn) {
cCt_execCounter();
} else {
dPa_control_c::onStatus(1);
- if (struct_80451124 == 0) {
+ if (pauseTimer == 0) {
dPa_control_c::onStatus(2);
- if (struct_80451124 == 0) {
+ if (pauseTimer == 0) {
dComIfGp_getVibration().Pause();
}
}
@@ -523,11 +524,11 @@ SECTION_DEAD static char const* const stringBase_8039A2DF = "T_JOINT";
SECTION_SDATA static char* T_JOINT_resName = "Always";
/* 80450764-80450768 -00001 0004+00 4/4 0/0 0/0 .sdata None */
-SECTION_SDATA static s8 struct_80450764 = 0xFF;
+SECTION_SDATA static s8 preLoadNo = 0xFF;
#pragma push
#pragma force_active on
-SECTION_SDATA static u8 data_80450765 = 1;
+SECTION_SDATA static u8 doPreLoad = 1;
#pragma pop
/* 802598AC-80259AC4 2541EC 0218+00 1/0 0/0 0/0 .text dScnPly_Delete__FP9dScnPly_c */
@@ -576,7 +577,7 @@ void dScnPly_c::offReset() {
if (field_0x1d4 != 0 && !fopOvlpM_IsPeek()) {
mDoRst::offReset();
mDoRst::offResetPrepare();
- struct_80451501 = false;
+ JUTGamePad::C3ButtonReset::sResetOccurred = false;
JUTGamePad::setResetCallback(mDoRst_resetCallBack, NULL);
field_0x1d4 = 0;
}
@@ -922,15 +923,15 @@ static int phase_4(dScnPly_c* i_this) {
dComIfG_setBrightness(255);
mDoGph_gInf_c::offFade();
mDoAud_zelAudio_c::onBgmSet();
- struct_80451124 = 0;
- data_80451125 = 0;
- struct_80450764 = -1;
+ dScnPly_c::pauseTimer = 0;
+ dScnPly_c::nextPauseTimer = 0;
+ preLoadNo = -1;
- if (data_80450765 != 0 && !strcmp(dComIfGp_getStartStageName(), (char*)PreLoadInfoT[0])) {
- struct_80450764 = 0;
+ if (doPreLoad != 0 && !strcmp(dComIfGp_getStartStageName(), (char*)PreLoadInfoT[0])) {
+ preLoadNo = 0;
}
- if (struct_80450764 < 0) {
+ if (preLoadNo < 0) {
return 4;
}
diff --git a/src/d/s/d_s_room.cpp b/src/d/s/d_s_room.cpp
index d415716ac8..533ade06b0 100644
--- a/src/d/s/d_s_room.cpp
+++ b/src/d/s/d_s_room.cpp
@@ -110,7 +110,7 @@ extern "C" u8 mDemoArcName__20dStage_roomControl_c[10 + 2 /* padding */];
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
extern "C" u8 mArcBankName__20dStage_roomControl_c[4];
extern "C" u8 mArcBankData__20dStage_roomControl_c[4];
-extern "C" extern u8 struct_80451124[4];
+extern "C" extern u8 pauseTimer__9dScnPly_c[4];
//
// Declarations: