summaryrefslogtreecommitdiff
path: root/src/d
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2022-01-25 12:24:14 -0800
committerGitHub <noreply@github.com>2022-01-25 21:24:14 +0100
commit612f26c132280da43ecfa5fa8c8cc32966f06eb6 (patch)
treeac20d071712cf830ec526222c98d340d90721f77 /src/d
parent6f4d068f1d7c5a9f25f1920e64e5b10dc29aea07 (diff)
d_kankyo_wether / d_eye_hl (#178)
* d_eye_hl / d_kankyo_wether wip * more d_kankyo_wether + format * remove asm * some d_kankyo wip * fix dccs vtable * some m_Do_graphic / d_meter2_draw work
Diffstat (limited to 'src/d')
-rw-r--r--src/d/a/d_a_alink.cpp7
-rw-r--r--src/d/bg/d_bg_s_movebg_actor.cpp4
-rw-r--r--src/d/cc/d_cc_s.cpp194
-rw-r--r--src/d/com/d_com_inf_game.cpp12
-rw-r--r--src/d/d_bomb.cpp7
-rw-r--r--src/d/d_error_msg.cpp2
-rw-r--r--src/d/d_eye_hl.cpp119
-rw-r--r--src/d/d_kyeff.cpp11
-rw-r--r--src/d/kankyo/d_kankyo.cpp797
-rw-r--r--src/d/kankyo/d_kankyo_data.cpp179
-rw-r--r--src/d/kankyo/d_kankyo_wether.cpp1946
-rw-r--r--src/d/map/d_map_path.cpp110
-rw-r--r--src/d/menu/d_menu_letter.cpp4
-rw-r--r--src/d/menu/d_menu_window.cpp1
-rw-r--r--src/d/meter/d_meter2_draw.cpp723
-rw-r--r--src/d/meter/d_meter_HIO.cpp16
-rw-r--r--src/d/msg/d_msg_object.cpp4
-rw-r--r--src/d/pane/d_pane_class_alpha.cpp2
-rw-r--r--src/d/particle/d_particle.cpp10
19 files changed, 2285 insertions, 1863 deletions
diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp
index 8c397548c8..3ede1b76e1 100644
--- a/src/d/a/d_a_alink.cpp
+++ b/src/d/a/d_a_alink.cpp
@@ -3324,7 +3324,6 @@ extern "C" u8 BaseY__4cXyz[12];
extern "C" u8 BaseZ__4cXyz[12];
extern "C" u8 mCurrentMtx__6J3DSys[48];
extern "C" u8 sincosTable___5JMath[65536];
-extern "C" extern u32 g_whiteColor;
extern "C" u16 m_branchId__7dDemo_c[1 + 3 /* padding */];
extern "C" extern u8 data_80450B38[4];
extern "C" f32 mGroundY__11fopAcM_gc_c;
@@ -3582,10 +3581,10 @@ void daAlink_c::setMatrixWorldAxisRot(MtxP param_0, s16 param_1, s16 param_2, s1
mDoMtx_stack_c::YrotM(-mCollisionRot.y);
concatMagneBootInvMtx();
mDoMtx_stack_c::transM(-tmp.x, -tmp.y, -tmp.z);
- PSMTXConcat(*mDoMtx_stack_c::get(), param_0, *mDoMtx_stack_c::get());
- PSMTXCopy(*mDoMtx_stack_c::get(), param_0);
+ PSMTXConcat(mDoMtx_stack_c::get(), param_0, mDoMtx_stack_c::get());
+ PSMTXCopy(mDoMtx_stack_c::get(), param_0);
if (param_4 != 0) {
- PSMTXCopy(*mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
+ PSMTXCopy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
}
}
diff --git a/src/d/bg/d_bg_s_movebg_actor.cpp b/src/d/bg/d_bg_s_movebg_actor.cpp
index 35c3973ec6..a0b0b529c9 100644
--- a/src/d/bg/d_bg_s_movebg_actor.cpp
+++ b/src/d/bg/d_bg_s_movebg_actor.cpp
@@ -172,7 +172,7 @@ int dBgS_MoveBgActor::MoveBGCreate(char const* p_name, int dzb_id, MoveBGActor_S
mDoMtx_stack_c::transS(mCurrent.mPosition.x, mCurrent.mPosition.y, mCurrent.mPosition.z);
mDoMtx_stack_c::YrotM(mCollisionRot.y);
mDoMtx_stack_c::scaleM(mScale.x, mScale.y, mScale.z);
- PSMTXCopy(*mDoMtx_stack_c::get(), field_0x56c);
+ PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c);
} else {
PSMTXCopy(*param_4, field_0x56c);
}
@@ -222,7 +222,7 @@ bool dBgS_MoveBgActor::MoveBGExecute() {
mDoMtx_stack_c::transS(mCurrent.mPosition.x, mCurrent.mPosition.y, mCurrent.mPosition.z);
mDoMtx_stack_c::YrotM(mCollisionRot.y);
mDoMtx_stack_c::scaleM(mScale.x, mScale.y, mScale.z);
- PSMTXCopy(*mDoMtx_stack_c::get(), field_0x56c);
+ PSMTXCopy(mDoMtx_stack_c::get(), field_0x56c);
} else {
PSMTXCopy(*tmp, field_0x56c);
}
diff --git a/src/d/cc/d_cc_s.cpp b/src/d/cc/d_cc_s.cpp
index d19fc7b5c2..8bd4540176 100644
--- a/src/d/cc/d_cc_s.cpp
+++ b/src/d/cc/d_cc_s.cpp
@@ -3,7 +3,8 @@
// Translation Unit: d/cc/d_cc_s
//
-//#include "d/cc/d_cc_s.h"
+#include "d/cc/d_cc_s.h"
+#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -11,139 +12,12 @@
// Types:
//
-struct csXyz {};
-
struct mDoMtx_stack_c {
/* 8000CF0C */ void ZXYrotS(csXyz const&);
static u8 now[48];
};
-struct fopAc_ac_c {};
-
-struct cXyz {
- static u8 BaseZ[12];
-};
-
-struct dPa_control_c {
- /* 8004C218 */ void setHitMark(u16, fopAc_ac_c*, cXyz const*, csXyz const*, cXyz const*, u32);
-};
-
-struct dJntCol_c {
- /* 80036C44 */ void getHitmarkPosAndAngle(cXyz const*, csXyz const*, cXyz*, csXyz*, int) const;
-};
-
-struct dCcD_GObjInf {
- /* 800843DC */ void ChkAtNoGuard();
-};
-
-struct cCcD_GObjInf {};
-
-struct cCcD_ShapeAttr {
- struct Shape {};
-};
-
-struct cCcD_Stts {
- /* 80263934 */ void PlusCcMove(f32, f32, f32);
- /* 80263970 */ void PlusDmg(int);
-};
-
-struct cCcD_GStts {};
-
-struct cCcD_Obj {
- /* 80263A48 */ void GetAc();
-};
-
-struct dCcD_GStts {};
-
-struct dCcS {
- /* 8002FF40 */ ~dCcS();
- /* 80085ED4 */ void Ct();
- /* 80085F08 */ void Dt();
- /* 80085F28 */ void ChkShieldFrontRange(cCcD_Obj*, cCcD_Obj*, int, cXyz const*);
- /* 800860F8 */ void ChkShield(cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, dCcD_GObjInf*, cXyz const*);
- /* 800861B0 */ void CalcTgPlusDmg(cCcD_Obj*, cCcD_Obj*, cCcD_Stts*, cCcD_Stts*);
- /* 800861B4 */ void ChkAtTgHitAfterCross(bool, bool, cCcD_GObjInf const*, cCcD_GObjInf const*,
- cCcD_Stts*, cCcD_Stts*, cCcD_GStts*, cCcD_GStts*);
- /* 80086240 */ void SetCoGObjInf(bool, bool, cCcD_GObjInf*, cCcD_GObjInf*, cCcD_Stts*,
- cCcD_Stts*, cCcD_GStts*, cCcD_GStts*);
- /* 80086360 */ void GetRank(u8);
- /* 80086404 */ bool ChkNoHitGCo(cCcD_Obj*, cCcD_Obj*);
- /* 8008640C */ void SetPosCorrect(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, f32);
- /* 80086754 */ void CalcParticleAngle(dCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, csXyz*);
- /* 8008685C */ void ProcAtTgHitmark(bool, bool, cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*,
- dCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, dCcD_GStts*,
- dCcD_GStts*, cXyz*, bool);
- /* 80086AC0 */ void SetAtTgGObjInf(bool, bool, cCcD_Obj*, cCcD_Obj*, cCcD_GObjInf*,
- cCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, cCcD_GStts*,
- cCcD_GStts*, cXyz*);
- /* 80086D8C */ void ChkCamera(cXyz&, cXyz&, f32, fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*);
- /* 80086FBC */ void chkCameraPoint(cXyz const&, cCcD_ShapeAttr::Shape*, fopAc_ac_c*,
- fopAc_ac_c*);
- /* 800872A8 */ void MoveAfterCheck();
- /* 800872AC */ void DrawAfter();
- /* 800872B0 */ void Move();
- /* 800872D0 */ void Draw();
- /* 8008730C */ void MassClear();
- /* 80087330 */ void ChkAtTgMtrlHit(u8, u8);
- /* 8008734C */ void ChkNoHitGAtTg(cCcD_GObjInf const*, cCcD_GObjInf const*, cCcD_GStts*,
- cCcD_GStts*);
-
- static u8 m_mtrl_hit_tbl[64];
-};
-
-struct dCcMassS_Mng {
- /* 800855E4 */ void Ct();
- /* 80085CF0 */ void Clear();
-};
-
-struct dCcD_GAtTgCoCommonBase {
- /* 80083678 */ void SetHitApid(unsigned int);
- /* 80083718 */ void SetEffCounterTimer();
- /* 80083748 */ void ChkEffCounter();
-};
-
-struct cM3dGSphS {};
-
-struct cM3dGSph {
- /* 8026F6A8 */ void Set(cM3dGSphS const&);
-};
-
-struct cM3dGCps {
- /* 8026EF88 */ cM3dGCps();
- /* 8026EFA4 */ ~cM3dGCps();
- /* 8026F000 */ void Set(cXyz const&, cXyz const&, f32);
-};
-
-struct cM3dGAab {};
-
-struct cCcS {
- /* 80264A94 */ void Ct();
- /* 80264B60 */ void Dt();
- /* 80265CCC */ void Move();
- /* 80265D30 */ void DrawClear();
- /* 80265DF4 */ void SetCoGCorrectProc(cCcD_Obj*, cCcD_Obj*);
-};
-
-struct cCcD_SphAttr {
- /* 8008721C */ ~cCcD_SphAttr();
- /* 802646E0 */ void CalcAabBox();
-};
-
-struct cCcD_DivideInfo {
- /* 80263368 */ void Chk(cCcD_DivideInfo const&) const;
-};
-
-struct cCcD_DivideArea {
- /* 802636A0 */ void CalcDivideInfoOverArea(cCcD_DivideInfo*, cM3dGAab const&);
-};
-
-struct cCcD_CpsAttr {
- /* 80263FC4 */ void CalcAabBox();
-};
-
-struct Vec {};
-
//
// Forward References:
//
@@ -211,13 +85,6 @@ extern "C" void Set__8cM3dGCpsFRC4cXyzRC4cXyzf();
extern "C" void Set__8cM3dGSphFRC9cM3dGSphS();
extern "C" void cLib_distanceAngleS__Fss();
extern "C" void __dl__FPv();
-extern "C" void PSMTXMultVecSR();
-extern "C" void PSVECAdd();
-extern "C" void PSVECSubtract();
-extern "C" void PSVECScale();
-extern "C" void PSVECNormalize();
-extern "C" void PSVECMag();
-extern "C" void PSVECDotProduct();
extern "C" void _savegpr_17();
extern "C" void _savegpr_23();
extern "C" void _savegpr_24();
@@ -237,33 +104,22 @@ extern "C" extern void* __vt__12cCcD_SphAttr[25];
extern "C" extern void* __vt__12cCcD_CpsAttr[25];
extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 BaseZ__4cXyz[12];
-extern "C" extern f32 G_CM3D_F_ABS_MIN[1 + 1 /* padding */];
//
// Declarations:
//
/* 80085ED4-80085F08 080814 0034+00 0/0 1/1 0/0 .text Ct__4dCcSFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dCcS::Ct() {
- nofralloc
-#include "asm/d/cc/d_cc_s/Ct__4dCcSFv.s"
+void dCcS::Ct() {
+ cCcS::Ct();
+ mMass_Mng.Ct();
}
-#pragma pop
/* 80085F08-80085F28 080848 0020+00 0/0 1/1 0/0 .text Dt__4dCcSFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dCcS::Dt() {
- nofralloc
-#include "asm/d/cc/d_cc_s/Dt__4dCcSFv.s"
+void dCcS::Dt() {
+ cCcS::Dt();
}
-#pragma pop
/* ############################################################################################## */
/* 80452778-8045277C 000D78 0004+00 3/3 0/0 0/0 .sdata2 @3705 */
@@ -311,7 +167,7 @@ void dCcS::CalcTgPlusDmg(cCcD_Obj* param_0, cCcD_Obj* param_1, cCcD_Stts* param_
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dCcS::ChkAtTgHitAfterCross(bool param_0, bool param_1, cCcD_GObjInf const* param_2,
+asm bool dCcS::ChkAtTgHitAfterCross(bool param_0, bool param_1, cCcD_GObjInf const* param_2,
cCcD_GObjInf const* param_3, cCcD_Stts* param_4,
cCcD_Stts* param_5, cCcD_GStts* param_6, cCcD_GStts* param_7) {
nofralloc
@@ -581,7 +437,8 @@ asm void dCcS::chkCameraPoint(cXyz const& param_0, cCcD_ShapeAttr::Shape* param_
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm cCcD_SphAttr::~cCcD_SphAttr() {
+// asm cCcD_SphAttr::~cCcD_SphAttr() {
+extern "C" asm void __dt__12cCcD_SphAttrFv() {
nofralloc
#include "asm/d/cc/d_cc_s/__dt__12cCcD_SphAttrFv.s"
}
@@ -598,34 +455,21 @@ void dCcS::DrawAfter() {
}
/* 800872B0-800872D0 081BF0 0020+00 0/0 1/1 0/0 .text Move__4dCcSFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dCcS::Move() {
- nofralloc
-#include "asm/d/cc/d_cc_s/Move__4dCcSFv.s"
+void dCcS::Move() {
+ cCcS::Move();
}
-#pragma pop
/* 800872D0-8008730C 081C10 003C+00 0/0 1/1 0/0 .text Draw__4dCcSFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dCcS::Draw() {
- nofralloc
-#include "asm/d/cc/d_cc_s/Draw__4dCcSFv.s"
+void dCcS::Draw() {
+ DrawAfter();
+ DrawClear();
+ mMass_Mng.Clear();
}
-#pragma pop
/* 8008730C-80087330 081C4C 0024+00 0/0 0/0 1/1 .text MassClear__4dCcSFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dCcS::MassClear() {
- nofralloc
-#include "asm/d/cc/d_cc_s/MassClear__4dCcSFv.s"
+void dCcS::MassClear() {
+ mMass_Mng.Clear();
}
-#pragma pop
/* ############################################################################################## */
/* 803AC3A4-803AC3E4 0094C4 0040+00 1/1 0/0 0/0 .data m_mtrl_hit_tbl__4dCcS */
@@ -651,7 +495,7 @@ asm void dCcS::ChkAtTgMtrlHit(u8 param_0, u8 param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dCcS::ChkNoHitGAtTg(cCcD_GObjInf const* param_0, cCcD_GObjInf const* param_1,
+asm bool dCcS::ChkNoHitGAtTg(cCcD_GObjInf const* param_0, cCcD_GObjInf const* param_1,
cCcD_GStts* param_2, cCcD_GStts* param_3) {
nofralloc
#include "asm/d/cc/d_cc_s/ChkNoHitGAtTg__4dCcSFPC12cCcD_GObjInfPC12cCcD_GObjInfP10cCcD_GSttsP10cCcD_GStts.s"
diff --git a/src/d/com/d_com_inf_game.cpp b/src/d/com/d_com_inf_game.cpp
index be22bb8621..79a3114d6f 100644
--- a/src/d/com/d_com_inf_game.cpp
+++ b/src/d/com/d_com_inf_game.cpp
@@ -230,7 +230,6 @@ extern "C" void __dt__8cM3dGCylFv();
extern "C" void __dt__8cM3dGAabFv();
extern "C" void __dt__15cCcD_DivideInfoFv();
extern "C" extern char const* const d_com_d_com_inf_game__stringBase0;
-extern "C" extern u32 g_whiteColor;
extern "C" extern u32 g_saftyWhiteColor;
//
@@ -1327,7 +1326,7 @@ dTimer_c* dComIfG_play_c::getTimerPtr() {
}
void dComIfG_inf_c::ct() {
- field_0x1ddf8 = 0xFF;
+ mFadeBrightness = 255;
play.ct();
mWorldDark = 0;
field_0x1ddfa = -1;
@@ -1348,12 +1347,7 @@ SECTION_DEAD static char const* const stringBase_80379043 = "F_SP102";
#pragma pop
/* 80450600-80450604 000080 0004+00 0/0 18/18 2/2 .sdata g_clearColor */
-SECTION_SDATA extern u8 g_clearColor[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
+SECTION_SDATA extern GXColor g_clearColor = {0, 0, 0, 0};
/* 80450604-80450608 000084 0004+00 1/1 10/10 15/15 .sdata g_blackColor */
SECTION_SDATA extern GXColor g_blackColor = {0, 0, 0, 255};
@@ -2591,7 +2585,7 @@ asm void dComIfGs_staffroll_next_go_check() {
/* ############################################################################################## */
/* 80450608-8045060C 000088 0004+00 0/0 6/6 11/11 .sdata g_whiteColor */
-SECTION_SDATA extern u32 g_whiteColor = 0xFFFFFFFF;
+SECTION_SDATA extern GXColor g_whiteColor = {255, 255, 255, 255};
/* 8045060C-80450610 00008C 0004+00 0/0 3/3 3/3 .sdata g_saftyWhiteColor */
SECTION_SDATA extern u32 g_saftyWhiteColor = 0xA0A0A0FF;
diff --git a/src/d/d_bomb.cpp b/src/d/d_bomb.cpp
index f025c00205..adf55dc467 100644
--- a/src/d/d_bomb.cpp
+++ b/src/d/d_bomb.cpp
@@ -4,6 +4,7 @@
//
#include "d/d_bomb.h"
+#include "d/d_procname.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
@@ -14,13 +15,13 @@ bool dBomb_c::checkStateCarry() {
}
bool dBomb_c::checkFlowerBombWait(fopAc_ac_c* param_1) {
- return (fopAcM_GetName(&mActor) == 0x221 && fopAcM_GetParam(&mActor) == 4);
+ return (fopAcM_GetName(&mActor) == PROC_NBOMB && fopAcM_GetParam(&mActor) == 4);
}
bool dBomb_c::checkWaterBomb(fopAc_ac_c* param_1) {
- return (fopAcM_GetName(&mActor) == 0x221 && daNbomb_c::checkWaterBomb());
+ return (fopAcM_GetName(&mActor) == PROC_NBOMB && daNbomb_c::checkWaterBomb());
}
bool dBomb_c::checkInsectBombMove(fopAc_ac_c* param_1) {
- return (fopAcM_GetName(&mActor) == 0x221 && fopAcM_GetParam(&mActor) == 7);
+ return (fopAcM_GetName(&mActor) == PROC_NBOMB && fopAcM_GetParam(&mActor) == 7);
} \ No newline at end of file
diff --git a/src/d/d_error_msg.cpp b/src/d/d_error_msg.cpp
index f6817d78eb..92b3bb011a 100644
--- a/src/d/d_error_msg.cpp
+++ b/src/d/d_error_msg.cpp
@@ -184,7 +184,7 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
/* ############################################################################################## */
/* 8037B140-8037B180 0077A0 0040+00 1/1 0/0 0/0 .rodata black_tex */
-SECTION_RODATA static u8 const black_tex[64] = {
+SECTION_RODATA static u8 const black_tex[64] ALIGN_DECL(32) = {
0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
diff --git a/src/d/d_eye_hl.cpp b/src/d/d_eye_hl.cpp
index 693147dc5a..394740abb3 100644
--- a/src/d/d_eye_hl.cpp
+++ b/src/d/d_eye_hl.cpp
@@ -4,7 +4,10 @@
//
#include "d/d_eye_hl.h"
+#include "MSL_C.PPCEABI.bare.H/MSL_Common/Src/string.h"
+#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
+#include "dolphin/os/OS.h"
#include "dolphin/types.h"
//
@@ -26,52 +29,45 @@ extern "C" extern u8 struct_80450FBC[4];
// External References:
//
-extern "C" void OSReport_Error();
extern "C" void getName__10JUTNameTabCFUs();
extern "C" void _savegpr_27();
extern "C" void _restgpr_27();
-extern "C" void strcmp();
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_envHIO[68];
//
// Declarations:
//
-/* ############################################################################################## */
-/* 8037B100-8037B100 007760 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_8037B100 =
- "目のハイライトテクスチャーがありません!\n";
-/* @stringBase0 padding */
-SECTION_DEAD static char const* const pad_8037B12A = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
-#pragma pop
-
/* 8009C964-8009CA28 0972A4 00C4+00 0/0 2/2 0/0 .text entry__8dEyeHL_cFP12J3DModelDataPCc
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dEyeHL_c::entry(J3DModelData* param_0, char const* param_1) {
- nofralloc
-#include "asm/d/d_eye_hl/entry__8dEyeHL_cFP12J3DModelDataPCc.s"
+void dEyeHL_c::entry(J3DModelData* p_mData, char const* name) {
+ J3DTexture* tex = p_mData->getTexture();
+ JUTNameTab* tex_nametab = p_mData->getTextureName();
+
+ if (tex != NULL && tex_nametab != NULL) {
+ for (u16 i = 0; i < tex->getNum(); i++) {
+ const char* tex_name = tex_nametab->getName(i);
+
+ if (tex_name != NULL && !strcmp(tex_name, name)) {
+ m_timg = tex->getResTIMG(i);
+ m_lodBias = m_timg->LODBias;
+ dEyeHL_mng_c::entry(this);
+ return;
+ }
+ }
+ }
+ // "Eye Highlight Texture doesn't exist!\n"
+ OSReport_Error("目のハイライトテクスチャーがありません!\n");
}
-#pragma pop
/* 8009CA28-8009CA48 097368 0020+00 0/0 3/3 0/0 .text remove__8dEyeHL_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dEyeHL_c::remove() {
- nofralloc
-#include "asm/d/d_eye_hl/remove__8dEyeHL_cFv.s"
+void dEyeHL_c::remove() {
+ dEyeHL_mng_c::remove(this);
}
-#pragma pop
/* ############################################################################################## */
/* 80450FA8-80450FB0 0004A8 0004+04 3/3 0/0 0/0 .sbss m_obj__12dEyeHL_mng_c */
-u8 dEyeHL_mng_c::m_obj[4 + 4 /* padding */];
+dEyeHL_mng_c* dEyeHL_mng_c::m_obj;
/* 80452C10-80452C14 001210 0004+00 1/1 0/0 0/0 .sdata2 @3862 */
SECTION_SDATA2 static f32 lit_3862 = 2.0f;
@@ -79,7 +75,30 @@ SECTION_SDATA2 static f32 lit_3862 = 2.0f;
/* 80452C14-80452C18 001214 0004+00 1/1 0/0 0/0 .sdata2 @3863 */
SECTION_SDATA2 static f32 lit_3863 = 45.0f;
+inline BOOL dComIfGp_event_runCheck() {
+ return g_dComIfG_gameInfo.play.getEvent().runCheck();
+}
+
/* 8009CA48-8009CB14 097388 00CC+00 0/0 1/1 0/0 .text update__12dEyeHL_mng_cFv */
+// small issue with cLib_minMaxLimit
+#ifdef NONMATCHING
+void dEyeHL_mng_c::update() {
+ dEyeHL_mng_c* obj = m_obj;
+
+ if (g_envHIO[0x10] == 0 || !dComIfGp_event_runCheck()) {
+ for (; obj != NULL; obj = obj->m_next) {
+ obj->m_timg->LODBias = obj->m_lodBias;
+ }
+ } else {
+ s16 tmp = 2.0f * (dComIfGd_getView()->field_0xd0 - 45.0f);
+ for (; obj != NULL; obj = obj->m_next) {
+ ResTIMG* timg = obj->m_timg;
+ timg->LODBias = obj->m_lodBias + tmp;
+ timg->LODBias = cLib_minMaxLimit(timg->LODBias, (s16)-400, (s16)399);
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -88,27 +107,41 @@ asm void dEyeHL_mng_c::update() {
#include "asm/d/d_eye_hl/update__12dEyeHL_mng_cFv.s"
}
#pragma pop
+#endif
/* 8009CB14-8009CB34 097454 0020+00 1/1 0/0 0/0 .text entry__12dEyeHL_mng_cFP8dEyeHL_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dEyeHL_mng_c::entry(dEyeHL_c* param_0) {
- nofralloc
-#include "asm/d/d_eye_hl/entry__12dEyeHL_mng_cFP8dEyeHL_c.s"
+void dEyeHL_mng_c::entry(dEyeHL_c* i_obj) {
+ if (m_obj != NULL) {
+ m_obj->m_pre = i_obj;
+ }
+ i_obj->m_next = m_obj;
+ m_obj = i_obj;
}
-#pragma pop
/* 8009CB34-8009CB88 097474 0054+00 1/1 0/0 0/0 .text remove__12dEyeHL_mng_cFP8dEyeHL_c
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dEyeHL_mng_c::remove(dEyeHL_c* param_0) {
- nofralloc
-#include "asm/d/d_eye_hl/remove__12dEyeHL_mng_cFP8dEyeHL_c.s"
+void dEyeHL_mng_c::remove(dEyeHL_c* i_obj) {
+ if (i_obj->m_timg != NULL) {
+ dEyeHL_mng_c* prev = i_obj->m_pre;
+ dEyeHL_mng_c* next = i_obj->m_next;
+
+ if (next != NULL) {
+ next->m_pre = prev;
+ }
+
+ if (prev == NULL) {
+ m_obj = next;
+ } else {
+ prev->m_next = next;
+ next = m_obj;
+ }
+
+ i_obj->m_timg->LODBias = i_obj->m_lodBias;
+ i_obj->m_timg = NULL;
+ i_obj->m_pre = NULL;
+ i_obj->m_next = NULL;
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 80450FB0-80450FB8 -00001 0008+00 0/0 2/2 0/0 .sbss None */
@@ -116,7 +149,7 @@ asm void dEyeHL_mng_c::remove(dEyeHL_c* param_0) {
/* 80450FB1 0001+00 data_80450FB1 None */
/* 80450FB2 0006+00 data_80450FB2 None */
extern u8 struct_80450FB0[8];
-u8 struct_80450FB0[8];
+u8 struct_80450FB0[8] ALIGN_DECL(8);
/* 80450FB8-80450FBC -00001 0004+00 0/0 1/1 0/0 .sbss None */
/* 80450FB8 0001+00 data_80450FB8 None */
diff --git a/src/d/d_kyeff.cpp b/src/d/d_kyeff.cpp
index 16837abee3..d4946a6fcf 100644
--- a/src/d/d_kyeff.cpp
+++ b/src/d/d_kyeff.cpp
@@ -8,6 +8,8 @@
#include "dol2asm.h"
#include "dolphin/types.h"
+#include "d/com/d_com_inf_game.h"
+
//
// Types:
//
@@ -42,12 +44,8 @@ extern "C" void dKyw_wether_move_draw__Fv();
extern "C" void dKyw_wether_draw__Fv();
extern "C" void dKy_FiveSenses_fullthrottle_dark__Fv();
extern "C" void framework__10Z2EnvSeMgrFv();
-extern "C" void OSGetTime();
-extern "C" void OSTicksToCalendarTime();
-extern "C" void strcmp();
extern "C" extern void* g_fopKy_Method[5 + 1 /* padding */];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_env_light[4880];
extern "C" extern u8 g_mEnvSeMgr[780];
@@ -55,6 +53,11 @@ extern "C" extern u8 g_mEnvSeMgr[780];
// Declarations:
//
+/* 801ADD00-801ADD38 1A8640 0038+00 2/2 0/0 0/0 .text dKankyo_DayProc__Fv */
+void dKankyo_DayProc() {
+ dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[91]);
+}
+
static bool dKyeff_Draw(dKyeff_c* ptr) {
dKyw_wether_draw();
return true;
diff --git a/src/d/kankyo/d_kankyo.cpp b/src/d/kankyo/d_kankyo.cpp
index bc55d5987b..051381c62b 100644
--- a/src/d/kankyo/d_kankyo.cpp
+++ b/src/d/kankyo/d_kankyo.cpp
@@ -4,10 +4,14 @@
//
#include "d/kankyo/d_kankyo.h"
+#include "MSL_C.PPCEABI.bare.H/MSL_Common/Src/mem.h"
+#include "Z2AudioLib/Z2EnvSeMgr.h"
#include "d/com/d_com_inf_game.h"
#include "d/kankyo/d_kankyo_data.h"
+#include "d/msg/d_msg_object.h"
#include "dol2asm.h"
#include "dolphin/types.h"
+#include "m_Do/m_Do_audio.h"
//
// Types:
@@ -21,28 +25,6 @@ struct mDoMtx_stack_c {
struct color_RGB_class {};
-struct Z2SeMgr {
- /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
-};
-
-struct Z2SceneMgr {
- /* 802BA120 */ void load2ndDynamicWave();
-};
-
-struct Z2EnvSeMgr {
- /* 802C611C */ Z2EnvSeMgr();
- /* 802C6540 */ ~Z2EnvSeMgr();
- /* 802C6998 */ void resetScene();
-};
-
-struct Z2AudioMgr {
- static u8 mAudioMgrPtr[4 + 4 /* padding */];
-};
-
-struct JMath {
- static u8 sincosTable_[65536];
-};
-
//
// Forward References:
//
@@ -359,7 +341,6 @@ extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
-extern "C" void memcmp();
extern "C" u8 const tempBitLabels__20dSv_event_tmp_flag_c[370 + 2 /* padding */];
extern "C" extern void* __vt__12J3DFrameCtrl[3];
extern "C" extern void* g_fopKy_Method[5 + 1 /* padding */];
@@ -382,78 +363,172 @@ inline BOOL dComIfGs_isEventBit(u16 id) {
}
/* 8019C388-8019C3A4 196CC8 001C+00 2/2 0/0 0/0 .text dKy_WolfPowerup_AmbCol__FP11_GXColorS10 */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKy_WolfPowerup_AmbCol(_GXColorS10* param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_WolfPowerup_AmbCol__FP11_GXColorS10.s"
+static void dKy_WolfPowerup_AmbCol(GXColorS10* in_col_p) {
+ in_col_p->r = 40;
+ in_col_p->g = 52;
+ in_col_p->b = 49;
}
-#pragma pop
-
-/* ############################################################################################## */
-/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80394C6C = "F_SP115";
-SECTION_DEAD static char const* const stringBase_80394C74 = "F_SP113";
-SECTION_DEAD static char const* const stringBase_80394C7C = "D_SB10";
-SECTION_DEAD static char const* const stringBase_80394C83 = "F_SP112";
-SECTION_DEAD static char const* const stringBase_80394C8B = "F_SP126";
-SECTION_DEAD static char const* const stringBase_80394C93 = "F_SP114";
-SECTION_DEAD static char const* const stringBase_80394C9B = "D_MN05";
-SECTION_DEAD static char const* const stringBase_80394CA2 = "D_MN04";
-SECTION_DEAD static char const* const stringBase_80394CA9 = "D_SB04";
-SECTION_DEAD static char const* const stringBase_80394CB0 = "D_SB05";
-SECTION_DEAD static char const* const stringBase_80394CB7 = "D_SB06";
-SECTION_DEAD static char const* const stringBase_80394CBE = "D_SB07";
-SECTION_DEAD static char const* const stringBase_80394CC5 = "D_SB08";
-SECTION_DEAD static char const* const stringBase_80394CCC = "D_SB09";
-SECTION_DEAD static char const* const stringBase_80394CD3 = "D_MN10A";
-SECTION_DEAD static char const* const stringBase_80394CDB = "D_MN07A";
-SECTION_DEAD static char const* const stringBase_80394CE3 = "D_MN10B";
-SECTION_DEAD static char const* const stringBase_80394CEB = "D_MN10";
-SECTION_DEAD static char const* const stringBase_80394CF2 = "D_MN11A";
-SECTION_DEAD static char const* const stringBase_80394CFA = "D_MN11";
-SECTION_DEAD static char const* const stringBase_80394D01 = "D_MN11B";
-SECTION_DEAD static char const* const stringBase_80394D09 = "D_SB00";
-SECTION_DEAD static char const* const stringBase_80394D10 = "D_MN09B";
-SECTION_DEAD static char const* const stringBase_80394D18 = "D_MN09C";
-SECTION_DEAD static char const* const stringBase_80394D20 = "F_SP116";
-SECTION_DEAD static char const* const stringBase_80394D28 = "D_MN06";
-SECTION_DEAD static char const* const stringBase_80394D2F = "D_MN07";
-SECTION_DEAD static char const* const stringBase_80394D36 = "D_MN09A";
-SECTION_DEAD static char const* const stringBase_80394D3E = "D_SB01";
-SECTION_DEAD static char const* const stringBase_80394D45 = "R_SP300";
-SECTION_DEAD static char const* const stringBase_80394D4D = "R_SP301";
-SECTION_DEAD static char const* const stringBase_80394D55 = "D_MN01";
-SECTION_DEAD static char const* const stringBase_80394D5C = "D_MN01B";
-SECTION_DEAD static char const* const stringBase_80394D64 = "D_MN01A";
-SECTION_DEAD static char const* const stringBase_80394D6C = "D_MN08";
-SECTION_DEAD static char const* const stringBase_80394D73 = "D_SB02";
-SECTION_DEAD static char const* const stringBase_80394D7A = "D_SB03";
-SECTION_DEAD static char const* const stringBase_80394D81 = "R_SP01";
-SECTION_DEAD static char const* const stringBase_80394D88 = "R_SP108";
-SECTION_DEAD static char const* const stringBase_80394D90 = "R_SP209";
-SECTION_DEAD static char const* const stringBase_80394D98 = "R_SP116";
-SECTION_DEAD static char const* const stringBase_80394DA0 = "R_SP161";
-SECTION_DEAD static char const* const stringBase_80394DA8 = "F_SP110";
-SECTION_DEAD static char const* const stringBase_80394DB0 = "R_SP107";
-SECTION_DEAD static char const* const stringBase_80394DB8 = "R_SP128";
-SECTION_DEAD static char const* const stringBase_80394DC0 = "R_SP160";
-SECTION_DEAD static char const* const stringBase_80394DC8 = "R_SP127";
-SECTION_DEAD static char const* const stringBase_80394DD0 = "R_SP109";
-#pragma pop
/* 8019C3A4-8019CB0C 196CE4 0768+00 2/2 0/0 0/0 .text dKy_sense_pat_get__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKy_sense_pat_get() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_sense_pat_get__Fv.s"
+static s32 dKy_sense_pat_get() {
+ s32 pat = 0;
+ if (dKy_Outdoor_check()) {
+ pat = 1;
+ } else {
+ pat = 5;
+ }
+
+ // Stage is Lake Hylia
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP115")) {
+ pat = 9;
+
+ // Room is Lake
+ if (dComIfGp_roomControl_getStayNo() == 0 && dComIfGs_isSaveSwitch(0x11) &&
+ !dComIfGs_isSaveSwitch(0x75)) {
+ pat = 2;
+ }
+
+ if (dComIfGs_sense_type_change_Get() > 0) {
+ pat = 13;
+ }
+ }
+ // Stage is Zora's Domain
+ else if (!strcmp(dComIfGp_getStartStageName(), "F_SP113")) {
+ if (dComIfGs_sense_type_change_Get() > 0) {
+ pat = 13;
+ } else {
+ pat = 1;
+ }
+ }
+ // Stage is Faron Woods Cave
+ else if (!strcmp(dComIfGp_getStartStageName(), "D_SB10")) {
+ pat = 1;
+ }
+ // Stage is Zora's River
+ else if (!strcmp(dComIfGp_getStartStageName(), "F_SP112")) {
+ pat = 3;
+ }
+ // Stage is Upper Zora's River
+ else if (!strcmp(dComIfGp_getStartStageName(), "F_SP126")) {
+ pat = 6;
+ }
+ // Stage is Snowpeak
+ else if (!strcmp(dComIfGp_getStartStageName(), "F_SP114")) {
+ pat = 4;
+ }
+ // Stage is Forest Temple or Goron Mines or Goron Stockcave or Grotto
+ else if (!memcmp(dComIfGp_getStartStageName(), "D_MN05", 6) ||
+ !memcmp(dComIfGp_getStartStageName(), "D_MN04", 6) ||
+ !memcmp(dComIfGp_getStartStageName(), "D_SB04", 6) ||
+ !memcmp(dComIfGp_getStartStageName(), "D_SB05", 6) ||
+ !memcmp(dComIfGp_getStartStageName(), "D_SB06", 6) ||
+ !memcmp(dComIfGp_getStartStageName(), "D_SB07", 6) ||
+ !memcmp(dComIfGp_getStartStageName(), "D_SB08", 6) ||
+ !memcmp(dComIfGp_getStartStageName(), "D_SB09", 6)) {
+ pat = 5;
+ }
+ // Stage is Stallord arena or Argorok arena
+ else if (!strcmp(dComIfGp_getStartStageName(), "D_MN10A") ||
+ !strcmp(dComIfGp_getStartStageName(), "D_MN07A")) {
+ pat = 14;
+ }
+ // Stage is Death Sword arena
+ else if (!strcmp(dComIfGp_getStartStageName(), "D_MN10B")) {
+ pat = 15;
+ }
+ // Stage is Arbiter's Grounds
+ else if (!strcmp(dComIfGp_getStartStageName(), "D_MN10")) {
+ pat = 8;
+ // Room is Central Poe room
+ if (dComIfGp_roomControl_getStayNo() == 2) {
+ pat = 14;
+ // Room is 2nd Poe room or 4th Poe room
+ } else if (dComIfGp_roomControl_getStayNo() == 3 || dComIfGp_roomControl_getStayNo() == 8) {
+ pat = 6;
+ }
+ }
+ // Stage is Blizzeta arena
+ else if (!strcmp(dComIfGp_getStartStageName(), "D_MN11A")) {
+ pat = 4;
+ }
+ // Stage is Snowpeak Ruins or Darkhammer or Ice Puzzle cave
+ else if (!strcmp(dComIfGp_getStartStageName(), "D_MN11") ||
+ !strcmp(dComIfGp_getStartStageName(), "D_MN11B") ||
+ !memcmp(dComIfGp_getStartStageName(), "D_SB00", 6)) {
+ pat = 7;
+
+ // Stage is Snowpeak Ruins and Room is Courtyard
+ if (!strcmp(dComIfGp_getStartStageName(), "D_MN11") &&
+ dComIfGp_roomControl_getStayNo() == 4) {
+ pat = 4;
+ }
+ }
+ // Stage is Ganondorf Field or Ganondorf Defeated or Castle Town
+ else if (!strcmp(dComIfGp_getStartStageName(), "D_MN09B") ||
+ !strcmp(dComIfGp_getStartStageName(), "D_MN09C") ||
+ !strcmp(dComIfGp_getStartStageName(), "F_SP116")) {
+ pat = 1;
+ }
+ // Stage is Temple of Time or City in the Sky or Hyrule Castle Throne Room or
+ // Cave of Ordeals or Cloud Sea or Hyrule Castle cutscenes or Lakebed Temple or Deku Toad
+ else if (!memcmp(dComIfGp_getStartStageName(), "D_MN06", 6) ||
+ !strcmp(dComIfGp_getStartStageName(), "D_MN07") ||
+ !strcmp(dComIfGp_getStartStageName(), "D_MN09A") ||
+ !memcmp(dComIfGp_getStartStageName(), "D_SB01", 6) ||
+ !strcmp(dComIfGp_getStartStageName(), "R_SP300") ||
+ !strcmp(dComIfGp_getStartStageName(), "R_SP301") ||
+ !strcmp(dComIfGp_getStartStageName(), "D_MN01") ||
+ !strcmp(dComIfGp_getStartStageName(), "D_MN01B")) {
+ pat = 8;
+ }
+ // Stage is Morpheel arena
+ else if (!strcmp(dComIfGp_getStartStageName(), "D_MN01A")) {
+ pat = 14;
+ }
+ // Stage is Palace of Twilight
+ else if (!memcmp(dComIfGp_getStartStageName(), "D_MN08", 6)) {
+ pat = 9;
+ }
+ // Stage is Gorge Cave or Lake Hylia Cave
+ else if (!memcmp(dComIfGp_getStartStageName(), "D_SB02", 6) ||
+ !memcmp(dComIfGp_getStartStageName(), "D_SB03", 6)) {
+ pat = 10;
+ }
+ // Stage is Ordon Village Interiors or Faron Woods Interiors or
+ // Kakariko Graveyard or Telma's Bar or STAR game or Death Mountain or
+ // Hyrule Castle sewers
+ else if (!strcmp(dComIfGp_getStartStageName(), "R_SP01") ||
+ !strcmp(dComIfGp_getStartStageName(), "R_SP108") ||
+ !strcmp(dComIfGp_getStartStageName(), "R_SP209") ||
+ !strcmp(dComIfGp_getStartStageName(), "R_SP116") ||
+ !strcmp(dComIfGp_getStartStageName(), "R_SP161") ||
+ !strcmp(dComIfGp_getStartStageName(), "F_SP110") ||
+ !strcmp(dComIfGp_getStartStageName(), "R_SP107")) {
+ pat = 11;
+
+ // Stage is Ordon Village and Room is Sera's Shop
+ if (!strcmp(dComIfGp_getStartStageName(), "R_SP01") &&
+ dComIfGp_roomControl_getStayNo() == 1) {
+ pat = 12;
+ }
+ }
+ // Stage is Hidden Village interiors or Castle Town interiors or Fishing Pond interiors
+ else if (!strcmp(dComIfGp_getStartStageName(), "R_SP128") ||
+ !strcmp(dComIfGp_getStartStageName(), "R_SP160") ||
+ !strcmp(dComIfGp_getStartStageName(), "R_SP127")) {
+ pat = 12;
+ }
+ // Stage is Kakariko Village interiors
+ else if (!strcmp(dComIfGp_getStartStageName(), "R_SP109")) {
+ pat = 12;
+
+ // Room is Sanctuary or Inn
+ if (dComIfGp_roomControl_getStayNo() == 0 || dComIfGp_roomControl_getStayNo() == 2) {
+ pat = 11;
+ }
+ }
+ return pat;
}
-#pragma pop
/* ############################################################################################## */
/* 803BBDB8-803BBDC4 018ED8 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
@@ -481,39 +556,86 @@ SECTION_DATA static u8 lightStatusBase[232] = {
};
/* 803BBEAC-803BBEBC 018FCC 0010+00 4/4 0/0 0/0 .data lightMaskData */
-SECTION_DATA static u8 lightMaskData[16] = {
- 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80,
-};
-
-/* 803BBEBC-803BBEFC -00001 0040+00 1/1 0/0 0/0 .data @4322 */
-SECTION_DATA static void* lit_4322[16] = {
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0x1BC),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0x38),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0x54),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0x70),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0x8C),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0xA8),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0xC4),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0xE0),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0xFC),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0x118),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0x150),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0x134),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0x134),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0x16C),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0x188),
- (void*)(((char*)dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10) + 0x1A4),
+SECTION_DATA static u16 lightMaskData[8] = {
+ 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080,
};
/* 8019CB0C-8019CCDC 19744C 01D0+00 3/2 0/0 0/0 .text dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10 */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKy_WolfPowerup_BgAmbCol(_GXColorS10* param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_WolfPowerup_BgAmbCol__FP11_GXColorS10.s"
+static void dKy_WolfPowerup_BgAmbCol(GXColorS10* in_col_p) {
+ switch (dKy_sense_pat_get()) {
+ case 1:
+ in_col_p->r = 33;
+ in_col_p->g = 48;
+ in_col_p->b = 44;
+ break;
+ case 2:
+ in_col_p->r = 33;
+ in_col_p->g = 48;
+ in_col_p->b = 44;
+ break;
+ case 3:
+ in_col_p->r = 40;
+ in_col_p->g = 53;
+ in_col_p->b = 49;
+ break;
+ case 4:
+ in_col_p->r = 32;
+ in_col_p->g = 46;
+ in_col_p->b = 40;
+ break;
+ case 5:
+ in_col_p->r = 45;
+ in_col_p->g = 64;
+ in_col_p->b = 58;
+ break;
+ case 6:
+ in_col_p->r = 33;
+ in_col_p->g = 48;
+ in_col_p->b = 44;
+ break;
+ case 7:
+ in_col_p->r = 38;
+ in_col_p->g = 53;
+ in_col_p->b = 49;
+ break;
+ case 8:
+ in_col_p->r = 33;
+ in_col_p->g = 48;
+ in_col_p->b = 44;
+ break;
+ case 9:
+ in_col_p->r = 40;
+ in_col_p->g = 59;
+ in_col_p->b = 53;
+ break;
+ case 11:
+ case 12:
+ in_col_p->r = 45;
+ in_col_p->g = 64;
+ in_col_p->b = 58;
+ break;
+ case 10:
+ in_col_p->r = 40;
+ in_col_p->g = 60;
+ in_col_p->b = 58;
+ break;
+ case 13:
+ in_col_p->r = 33;
+ in_col_p->g = 48;
+ in_col_p->b = 44;
+ break;
+ case 14:
+ in_col_p->r = 33;
+ in_col_p->g = 48;
+ in_col_p->b = 44;
+ break;
+ case 15:
+ in_col_p->r = 30;
+ in_col_p->g = 48;
+ in_col_p->b = 59;
+ break;
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 803BBEFC-803BBF3C -00001 0040+00 1/1 0/0 0/0 .data @4364 */
@@ -639,7 +761,6 @@ static asm void dKy_pos2_get_angle(cXyz* param_0, cXyz* param_1, s16* param_2, s
static u8 lit_4112[12];
/* 8042CA54-8042DD64 059774 1310+00 116/118 128/128 649/649 .bss g_env_light */
-extern u8 g_env_light[4880];
u8 g_env_light[4880];
/* 80453C28-80453C2C 002228 0004+00 1/1 0/0 0/0 .sdata2 @4441 */
@@ -818,21 +939,16 @@ static asm void float_kankyo_color_ratio_set(f32 param_0, f32 param_1, f32 param
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-static asm void get_parcent(f32 param_0, f32 param_1, f32 param_2) {
+static asm f32 get_parcent(f32 param_0, f32 param_1, f32 param_2) {
nofralloc
#include "asm/d/kankyo/d_kankyo/get_parcent__Ffff.s"
}
#pragma pop
/* 8019D8AC-8019D8CC 1981EC 0020+00 0/0 1/1 1/1 .text dKy_get_parcent__Ffff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_get_parcent(f32 param_0, f32 param_1, f32 param_2) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_get_parcent__Ffff.s"
+f32 dKy_get_parcent(f32 param_0, f32 param_1, f32 param_2) {
+ return get_parcent(param_0, param_1, param_2);
}
-#pragma pop
/* ############################################################################################## */
/* 80453C64-80453C68 002264 0004+00 4/4 0/0 0/0 .sdata2 @4730 */
@@ -856,14 +972,9 @@ static asm void dKy_FiveSenses_fullthrottle_dark_static1() {
#pragma pop
/* 8019DD4C-8019DD6C 19868C 0020+00 0/0 1/1 0/0 .text dKy_FiveSenses_fullthrottle_dark__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_FiveSenses_fullthrottle_dark() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_FiveSenses_fullthrottle_dark__Fv.s"
+void dKy_FiveSenses_fullthrottle_dark() {
+ dKy_FiveSenses_fullthrottle_dark_static1();
}
-#pragma pop
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -907,14 +1018,10 @@ static asm void dKy_eflight_influence_id(cXyz param_0, int param_1) {
#pragma pop
/* 8019E404-8019E430 198D44 002C+00 1/1 0/0 0/0 .text dKy_light_influence_col__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKy_light_influence_col(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_light_influence_col__Fi.s"
+static GXColorS10 dKy_light_influence_col(int param_0) {
+ dScnKy_env_light_c* env_light = ((dScnKy_env_light_c*)g_env_light);
+ return env_light->mPointLight[param_0 >= 0 ? param_0 : 0]->mColor;
}
-#pragma pop
/* ############################################################################################## */
/* 80453C80-80453C88 002280 0008+00 14/14 0/0 0/0 .sdata2 @4964 */
@@ -931,24 +1038,16 @@ asm void dKy_light_influence_col(_GXColor* param_0, f32 param_1) {
#pragma pop
/* 8019E520-8019E548 198E60 0028+00 1/1 0/0 0/0 .text dKy_light_influence_power__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKy_light_influence_power(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_light_influence_power__Fi.s"
+static f32 dKy_light_influence_power(int param_0) {
+ dScnKy_env_light_c* env_light = ((dScnKy_env_light_c*)g_env_light);
+ return env_light->mPointLight[param_0 >= 0 ? param_0 : 0]->mPow;
}
-#pragma pop
/* 8019E548-8019E570 198E88 0028+00 1/1 0/0 0/0 .text dKy_light_influence_yuragi__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKy_light_influence_yuragi(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_light_influence_yuragi__Fi.s"
+static f32 dKy_light_influence_yuragi(int param_0) {
+ dScnKy_env_light_c* env_light = ((dScnKy_env_light_c*)g_env_light);
+ return env_light->mPointLight[param_0 >= 0 ? param_0 : 0]->mFluctuation;
}
-#pragma pop
/* 8019E570-8019E694 198EB0 0124+00 1/1 0/0 0/0 .text dKy_light_influence_distance__F4cXyzi */
#pragma push
@@ -965,24 +1064,28 @@ static asm void dKy_light_influence_distance(cXyz param_0, int param_1) {
SECTION_SDATA2 static f32 lit_5077 = 99999.8984375f;
/* 8019E694-8019E708 198FD4 0074+00 2/2 0/0 0/0 .text plight_init__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void plight_init() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/plight_init__Fv.s"
+static void plight_init() {
+ (*(dScnKy_env_light_c*)g_env_light).field_0x38[0].mPow = lit_5077;
+
+ for (int i = 0; i < 100; i++) {
+ (*(dScnKy_env_light_c*)g_env_light).mPointLight[i] = NULL;
+ }
+
+ for (int i = 0; i < 5; i++) {
+ (*(dScnKy_env_light_c*)g_env_light).mEfPLight[i] = NULL;
+ (*(dScnKy_env_light_c*)g_env_light).field_0x72c[i] = NULL;
+ }
+
+ (*(dScnKy_env_light_c*)g_env_light).field_0x12a4 = -1;
+ (*(dScnKy_env_light_c*)g_env_light).field_0x12a8 = -1;
}
-#pragma pop
/* 8019E708-8019E734 199048 002C+00 1/1 0/0 0/0 .text darkmist_init__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void darkmist_init() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/darkmist_init__Fv.s"
+static void darkmist_init() {
+ for (int i = 0; i < 10; i++) {
+ (*(dScnKy_env_light_c*)g_env_light).mDalkmistInf[i] = NULL;
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 80453C8C-80453C90 00228C 0004+00 6/6 0/0 0/0 .sdata2 @5106 */
@@ -1047,32 +1150,54 @@ static asm void dungeonlight_init() {
}
#pragma pop
-/* ############################################################################################## */
-/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80394DDF = "Always";
-#pragma pop
-
/* 8019EAA0-8019EBD0 1993E0 0130+00 1/1 0/0 0/0 .text undwater_init__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void undwater_init() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/undwater_init__Fv.s"
+static void undwater_init() {
+ J3DModelData* modelData2 = (J3DModelData*)dComIfG_getObjectRes("Always", 0x1D);
+ (*(dScnKy_env_light_c*)g_env_light).field_0xf38 =
+ mDoExt_createSolidHeapFromGameToCurrent(0x600, 0x20);
+
+ if ((*(dScnKy_env_light_c*)g_env_light).field_0xf38 != NULL) {
+ (*(dScnKy_env_light_c*)g_env_light).field_0xf30 =
+ mDoExt_J3DModel__create(modelData2, 0x80000, 0x11020202);
+
+ if ((*(dScnKy_env_light_c*)g_env_light).field_0xf30 != NULL) {
+ (*(dScnKy_env_light_c*)g_env_light).field_0x105c = new mDoExt_btkAnm();
+
+ if ((*(dScnKy_env_light_c*)g_env_light).field_0x105c != NULL) {
+ J3DAnmTextureSRTKey* key =
+ (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Always", 0x3C);
+ (*(dScnKy_env_light_c*)g_env_light)
+ .field_0x105c->init(modelData2, key, 1, 2, lit_4505, 0, -1);
+ }
+ }
+ mDoExt_restoreCurrentHeap();
+ mDoExt_adjustSolidHeap((*(dScnKy_env_light_c*)g_env_light).field_0xf38);
+ }
}
-#pragma pop
/* 8019EBD0-8019EC98 199510 00C8+00 1/1 0/0 0/0 .text dKy_light_size_get__FPCc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKy_light_size_get(char const* param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_light_size_get__FPCc.s"
+static void dKy_light_size_get(char const* stage) {
+ dKydata_lightsizeInfo_c* lightTbl = dKyd_light_size_tbl_getp();
+ dKydata_lightsizeInfo_c* lightTwTbl = dKyd_light_tw_size_tbl_getp();
+
+ if (!dKy_darkworld_check()) {
+ for (int i = 0; i < 36; i++) {
+ if (!strcmp(stage, lightTbl->stageName)) {
+ (*(dScnKy_env_light_c*)g_env_light).field_0x1309 = lightTbl->size;
+ return;
+ }
+ lightTbl++;
+ }
+ } else {
+ for (int i = 0; i < 9; i++) {
+ if (!strcmp(stage, lightTwTbl->stageName)) {
+ (*(dScnKy_env_light_c*)g_env_light).field_0x1309 = lightTwTbl->size;
+ return;
+ }
+ lightTwTbl++;
+ }
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -1370,34 +1495,15 @@ SECTION_DATA extern void* __vt__18dScnKy_env_light_c[3 + 4 /* padding */] = {
};
/* 8019F2E8-8019F400 199C28 0118+00 1/1 0/0 0/0 .text __ct__18dScnKy_env_light_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dScnKy_env_light_c::dScnKy_env_light_c() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/__ct__18dScnKy_env_light_cFv.s"
+dScnKy_env_light_c::dScnKy_env_light_c() {
+ dKy_clear_game_init();
}
-#pragma pop
/* 8019F400-8019F438 199D40 0038+00 1/1 0/0 0/0 .text __ct__19GB_MAPLE_COL_CHANGEFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm GB_MAPLE_COL_CHANGE::GB_MAPLE_COL_CHANGE() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/__ct__19GB_MAPLE_COL_CHANGEFv.s"
-}
-#pragma pop
+GB_MAPLE_COL_CHANGE::GB_MAPLE_COL_CHANGE() {}
/* 8019F438-8019F474 199D78 003C+00 2/2 0/0 0/0 .text __dt__10BOSS_LIGHTFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm BOSS_LIGHT::~BOSS_LIGHT() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/__dt__10BOSS_LIGHTFv.s"
-}
-#pragma pop
+BOSS_LIGHT::~BOSS_LIGHT() {}
/* 8019F474-8019F478 199DB4 0004+00 1/1 0/0 0/0 .text __ct__10BOSS_LIGHTFv */
BOSS_LIGHT::BOSS_LIGHT() {
@@ -1405,14 +1511,7 @@ BOSS_LIGHT::BOSS_LIGHT() {
}
/* 8019F478-8019F4B4 199DB8 003C+00 2/2 0/0 0/0 .text __dt__13DUNGEON_LIGHTFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm DUNGEON_LIGHT::~DUNGEON_LIGHT() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/__dt__13DUNGEON_LIGHTFv.s"
-}
-#pragma pop
+DUNGEON_LIGHT::~DUNGEON_LIGHT() {}
/* 8019F4B4-8019F4B8 199DF4 0004+00 1/1 0/0 0/0 .text __ct__13DUNGEON_LIGHTFv */
DUNGEON_LIGHT::DUNGEON_LIGHT() {
@@ -1420,14 +1519,7 @@ DUNGEON_LIGHT::DUNGEON_LIGHT() {
}
/* 8019F4B8-8019F4F4 199DF8 003C+00 2/2 0/0 0/0 .text __dt__15WIND_INF_ENTITYFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm WIND_INF_ENTITY::~WIND_INF_ENTITY() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/__dt__15WIND_INF_ENTITYFv.s"
-}
-#pragma pop
+WIND_INF_ENTITY::~WIND_INF_ENTITY() {}
/* 8019F4F4-8019F4F8 199E34 0004+00 1/1 0/0 0/0 .text __ct__15WIND_INF_ENTITYFv */
WIND_INF_ENTITY::WIND_INF_ENTITY() {
@@ -1449,8 +1541,72 @@ SECTION_SDATA2 static f32 lit_5555 = 150.0f;
/* 80453CC4-80453CC8 0022C4 0004+00 1/1 0/0 0/0 .sdata2 @5556 */
SECTION_SDATA2 static f32 lit_5556 = 195.0f;
+inline BOOL dComIfGp_event_runCheck() {
+ return g_dComIfG_gameInfo.play.getEvent().runCheck();
+}
+
/* 8019F4FC-8019F780 199E3C 0284+00 1/1 0/0 0/0 .text setDaytime__18dScnKy_env_light_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+void dScnKy_env_light_c::setDaytime() {
+ mDate = dComIfGs_getDate();
+ mDaytime = dComIfGs_getTime();
+
+ if (field_0x12fb == 0) {
+ if (!dKy_darkworld_check()) {
+ if (!dComIfGp_event_runCheck()) {
+ fopAc_ac_c* ac = dMsgObject_c::getActor();
+ bool tmp = true;
+
+ if (ac != NULL && ac->mEvtInfo.mCommand >= 2) {
+ tmp = false;
+ }
+
+ if (dComIfGp_roomControl_getTimePass() && !field_0x130a && tmp) {
+ mDaytime += mTimeSpeed;
+
+ // Stage is Fishing Pond or Hena's Hut
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") ||
+ !strcmp(dComIfGp_getStartStageName(), "R_SP127")) {
+ f32 current_time = mDaytime;
+ if (current_time >= 300.0f || current_time <= 60.0f) {
+ mDaytime += mTimeSpeed;
+ mDaytime += mTimeSpeed;
+ } else if (current_time >= 150.0f && current_time <= 195.0f) {
+ mDaytime = current_time + mTimeSpeed;
+ }
+ }
+
+ if ((u32)mDaytime >= 360.0f) {
+ mDaytime = 0.0f;
+ mDate++;
+ dKankyo_DayProc();
+ }
+ }
+ }
+ } else {
+ mDarkDaytime += mTimeSpeed;
+ if ((u32)mDarkDaytime >= 360.0f) {
+ mDarktimeWeek++;
+ mDarkDaytime = 0.0f;
+ }
+ mDaytime = 0.0f;
+ }
+ }
+
+ if (mDaytime >= 360.0f) {
+ mDaytime = 0.0f;
+ }
+
+ dComIfGs_setTime(mDaytime);
+ mDoAud_setHour(dKy_getdaytime_hour());
+ mDoAud_setMinute(dKy_getdaytime_minute());
+ mDoAud_setWeekday(dKy_get_dayofweek());
+ dComIfGs_setDate(mDate);
+ (*(dScnKy_env_light_c*)g_env_light).field_0x12fb = 0;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1459,12 +1615,13 @@ asm void dScnKy_env_light_c::setDaytime() {
#include "asm/d/kankyo/d_kankyo/setDaytime__18dScnKy_env_light_cFv.s"
}
#pragma pop
+#endif
/* 8019F780-8019F788 19A0C0 0008+00 1/1 0/0 0/0 .text GetTimePass__20dStage_roomControl_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm s8 dStage_roomControl_c::GetTimePass() {
+asm s32 dStage_roomControl_c::GetTimePass() {
nofralloc
#include "asm/d/kankyo/d_kankyo/GetTimePass__20dStage_roomControl_cFv.s"
}
@@ -1513,44 +1670,43 @@ f32 dScnKy_env_light_c::getDaytime() {
}
/* 8019FA10-8019FA3C 19A350 002C+00 2/2 2/2 32/32 .text dKy_getdaytime_hour__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_getdaytime_hour() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_getdaytime_hour__Fv.s"
+s32 dKy_getdaytime_hour() {
+ return dComIfGs_getTime() / lit_5347;
}
-#pragma pop
/* 8019FA3C-8019FAB8 19A37C 007C+00 1/1 1/1 26/26 .text dKy_getdaytime_minute__Fv */
+// just small regalloc
+#ifdef NONMATCHING
+s32 dKy_getdaytime_minute() {
+ f32 tmp = ((s32)(dComIfGs_getTime() * lit_4850) % 15000000);
+ return tmp / lit_4850 / lit_5347 * lit_5554;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dKy_getdaytime_minute() {
+asm s32 dKy_getdaytime_minute() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_getdaytime_minute__Fv.s"
}
#pragma pop
+#endif
/* 8019FAB8-8019FAF4 19A3F8 003C+00 0/0 3/3 6/6 .text dKy_daynight_check__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_daynight_check() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_daynight_check__Fv.s"
+s32 dKy_daynight_check() {
+ s32 hour = dKy_getdaytime_hour();
+
+ if (hour >= 6 && hour < 19) {
+ return 0; // day time
+ } else {
+ return 1; // night time
+ }
}
-#pragma pop
/* 8019FAF4-8019FB30 19A434 003C+00 0/0 0/0 22/22 .text dKy_getDarktime_hour__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_getDarktime_hour() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_getDarktime_hour__Fv.s"
+s32 dKy_getDarktime_hour() {
+ return (*(dScnKy_env_light_c*)g_env_light).getDarkDaytime() / lit_5347;
}
-#pragma pop
/* 8019FB30-8019FBBC 19A470 008C+00 0/0 0/0 19/19 .text dKy_getDarktime_minute__Fv */
#pragma push
@@ -1563,24 +1719,14 @@ asm void dKy_getDarktime_minute() {
#pragma pop
/* 8019FBBC-8019FBCC 19A4FC 0010+00 0/0 0/0 8/8 .text dKy_getDarktime_week__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_getDarktime_week() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_getDarktime_week__Fv.s"
+s32 dKy_getDarktime_week() {
+ return (*(dScnKy_env_light_c*)g_env_light).mDarktimeWeek;
}
-#pragma pop
/* 8019FBCC-8019FBD4 19A50C 0008+00 2/2 0/0 0/0 .text getDarkDaytime__18dScnKy_env_light_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dScnKy_env_light_c::getDarkDaytime() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/getDarkDaytime__18dScnKy_env_light_cFv.s"
+f32 dScnKy_env_light_c::getDarkDaytime() {
+ return mDarkDaytime;
}
-#pragma pop
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -1939,14 +2085,14 @@ asm void dScnKy_env_light_c::CalcTevColor() {
#pragma pop
/* 801A4F24-801A4F64 19F864 0040+00 1/1 0/0 0/0 .text Sndpos__18dScnKy_env_light_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dScnKy_env_light_c::Sndpos() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/Sndpos__18dScnKy_env_light_cFv.s"
+void dScnKy_env_light_c::Sndpos() {
+ if (mSound.field_0x10 != 0) {
+ mSound.field_0x10--;
+ if (mSound.field_0x10 == 0) {
+ dKy_Sound_init();
+ }
+ }
}
-#pragma pop
/* 801A4F64-801A516C 19F8A4 0208+00 1/1 0/0 0/0 .text Eflight_flush_proc__18dScnKy_env_light_cFv
*/
@@ -1999,14 +2145,12 @@ asm void dScnKy_env_light_c::exeKankyo() {
/* 801A56DC-801A572C 1A001C 0050+00 1/1 0/0 0/0 .text drawKankyo__18dScnKy_env_light_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dScnKy_env_light_c::drawKankyo() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/drawKankyo__18dScnKy_env_light_cFv.s"
+void dScnKy_env_light_c::drawKankyo() {
+ setSunpos();
+ SetBaseLight();
+ setLight();
+ dKy_setLight_nowroom((*(dScnKy_env_light_c*)g_env_light).mNowRoom);
}
-#pragma pop
/* ############################################################################################## */
/* 8042E7BC-8042E7C8 05B4DC 000C+00 0/1 0/0 0/0 .bss @7485 */
@@ -2162,14 +2306,11 @@ static asm void dKy_setLight_nowroom_common(char param_0, f32 param_1) {
#pragma pop
/* 801A6C20-801A6C58 1A1560 0038+00 2/2 1/1 0/0 .text dKy_setLight_nowroom__Fc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_setLight_nowroom(char param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_setLight_nowroom__Fc.s"
+void dKy_setLight_nowroom(char param_0) {
+ if (dComIfGp_getCamera(0) != NULL) {
+ dKy_setLight_nowroom_common(param_0, lit_4505);
+ }
}
-#pragma pop
/* 801A6C58-801A6D4C 1A1598 00F4+00 0/0 1/1 2/2 .text dKy_setLight_nowroom_grass__Fcf */
#pragma push
@@ -2210,14 +2351,9 @@ asm void dKy_setLight_nowroom_actor(dKy_tevstr_c* param_0) {
#pragma pop
/* 801A75C0-801A75E0 1A1F00 0020+00 0/0 6/6 7/7 .text dKy_setLight_again__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_setLight_again() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_setLight_again__Fv.s"
+void dKy_setLight_again() {
+ dKy_GlobalLight_set();
}
-#pragma pop
/* 801A75E0-801A76D8 1A1F20 00F8+00 0/0 3/3 5/5 .text dKy_Global_amb_set__FP12dKy_tevstr_c */
#pragma push
@@ -2230,24 +2366,19 @@ asm void dKy_Global_amb_set(dKy_tevstr_c* param_0) {
#pragma pop
/* 801A76D8-801A7714 1A2018 003C+00 1/1 0/0 0/0 .text dKy_light_influence_pos__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKy_light_influence_pos(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_light_influence_pos__Fi.s"
+static cXyz dKy_light_influence_pos(int param_0) {
+ if (param_0 < 0) {
+ param_0 = 0;
+ }
+
+ dScnKy_env_light_c* env_light = ((dScnKy_env_light_c*)g_env_light);
+ return env_light->mPointLight[param_0]->mPosition;
}
-#pragma pop
/* 801A7714-801A7738 1A2054 0024+00 0/0 1/1 0/0 .text dKy_plight_near_pos__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_plight_near_pos() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_plight_near_pos__Fv.s"
+cXyz dKy_plight_near_pos() {
+ return (*(dScnKy_env_light_c*)g_env_light).mPLightNearPos;
}
-#pragma pop
/* 801A7738-801A7790 1A2078 0058+00 0/0 0/0 1/1 .text
* dKy_mock_light_every_set__FP15LIGHT_INFLUENCE */
@@ -2729,7 +2860,7 @@ asm void dKy_itudemo_se() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dKy_get_dayofweek() {
+asm s32 dKy_get_dayofweek() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_get_dayofweek__Fv.s"
}
@@ -2964,7 +3095,7 @@ asm void dKy_camera_water_in_status_set(u8 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dKy_camera_water_in_status_check() {
+asm BOOL dKy_camera_water_in_status_check() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_camera_water_in_status_check__Fv.s"
}
@@ -3127,7 +3258,7 @@ asm void dKy_SunMoon_Light_Check() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-static asm void dKy_Outdoor_check() {
+static asm int dKy_Outdoor_check() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_Outdoor_check__Fv.s"
}
@@ -3189,7 +3320,7 @@ asm bool dKy_darkworld_check() {
*/
/* 801AC5BC-801AC70C 1A6EFC 0150+00 3/3 0/0 0/0 .text dKy_F_SP121Check__FPCciPUci */
static int dKy_F_SP121Check(char const* stageName, int roomNo, u8* out_darkLv, int tblIndex) {
- dKyd_darkworldTblEntry* darkworldTbl = dKyd_darkworld_tbl_getp();
+ dKydata_darkworldInfo_c* darkworldTbl = dKyd_darkworld_tbl_getp();
int result = 0;
if (out_darkLv != NULL) {
@@ -3259,7 +3390,7 @@ static int dKy_F_SP121Check(char const* stageName, int roomNo, u8* out_darkLv, i
*/
/* 801AC70C-801AC7E0 1A704C 00D4+00 0/0 2/2 0/0 .text dKy_darkworld_stage_check__FPCci */
BOOL dKy_darkworld_stage_check(char const* stageName, int roomNo) {
- dKyd_darkworldTblEntry* darkworldTbl = dKyd_darkworld_tbl_getp();
+ dKydata_darkworldInfo_c* darkworldTbl = dKyd_darkworld_tbl_getp();
BOOL result = FALSE;
u8 darkLv[1];
@@ -3302,7 +3433,7 @@ BOOL dKy_darkworld_stage_check(char const* stageName, int roomNo) {
*/
/* 801AC7E0-801AC870 1A7120 0090+00 0/0 1/1 0/0 .text dKy_darkworld_spot_check__FPCci */
BOOL dKy_darkworld_spot_check(char const* stageName, int roomNo) {
- dKyd_darkworldTblEntry* darkworldTblPtr = dKyd_darkworld_tbl_getp();
+ dKydata_darkworldInfo_c* darkworldTblPtr = dKyd_darkworld_tbl_getp();
BOOL result = FALSE;
for (int i = 0; i < 34; i++) {
@@ -3319,7 +3450,7 @@ BOOL dKy_darkworld_spot_check(char const* stageName, int roomNo) {
/* 801AC870-801AC918 1A71B0 00A8+00 0/0 1/1 0/0 .text dKy_darkworld_Area_set__FPCci */
void dKy_darkworld_Area_set(char const* stageName, int roomNo) {
- dKyd_darkworldTblEntry* darkworldTblPtr = dKyd_darkworld_tbl_getp();
+ dKydata_darkworldInfo_c* darkworldTblPtr = dKyd_darkworld_tbl_getp();
u8 darkLv[1];
for (int i = 0; i < 34; i++) {
@@ -3360,34 +3491,19 @@ static asm void dKy_murky_set(J3DMaterial* param_0) {
#pragma pop
/* 801ACCDC-801ACCF4 1A761C 0018+00 2/2 1/1 0/0 .text dKy_shadow_mode_set__FUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_shadow_mode_set(u8 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_shadow_mode_set__FUc.s"
+void dKy_shadow_mode_set(u8 mode) {
+ (*(dScnKy_env_light_c*)g_env_light).mShadowMode |= mode;
}
-#pragma pop
/* 801ACCF4-801ACD0C 1A7634 0018+00 2/2 1/1 0/0 .text dKy_shadow_mode_reset__FUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_shadow_mode_reset(u8 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_shadow_mode_reset__FUc.s"
+void dKy_shadow_mode_reset(u8 mode) {
+ (*(dScnKy_env_light_c*)g_env_light).mShadowMode &= ~mode;
}
-#pragma pop
/* 801ACD0C-801ACD24 1A764C 0018+00 3/3 0/0 1/1 .text dKy_shadow_mode_check__FUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKy_shadow_mode_check(u8 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo/dKy_shadow_mode_check__FUc.s"
+u8 dKy_shadow_mode_check(u8 mode) {
+ return (*(dScnKy_env_light_c*)g_env_light).mShadowMode & mode;
}
-#pragma pop
/* ############################################################################################## */
/* 80394C6C-80394C6C 0212CC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -3521,11 +3637,6 @@ asm void __sinit_d_kankyo_cpp() {
REGISTER_CTORS(0x801ADCA4, __sinit_d_kankyo_cpp);
#pragma pop
-/* 801ADD00-801ADD38 1A8640 0038+00 2/2 0/0 0/0 .text dKankyo_DayProc__Fv */
-void dKankyo_DayProc() {
- dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[91]);
-}
-
/* ############################################################################################## */
/* 80451070-80451078 -00001 0008+00 0/0 1/1 0/0 .sbss None */
/* 80451070 0001+00 data_80451070 None */
diff --git a/src/d/kankyo/d_kankyo_data.cpp b/src/d/kankyo/d_kankyo_data.cpp
index ab8c0c6f51..131694e9ca 100644
--- a/src/d/kankyo/d_kankyo_data.cpp
+++ b/src/d/kankyo/d_kankyo_data.cpp
@@ -66,76 +66,101 @@ extern "C" extern u8 g_env_light[4880];
//
/* 803A8E98-803A9198 005FB8 0300+00 1/1 0/0 0/0 .data l_kydata_BloomInf_tbl */
-SECTION_DATA static u8 l_kydata_BloomInf_tbl[768] = {
- // Each is 0xc long; All u8's
- 0x01, 0xFF, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x28, 0x46, 0x87, 0xCF, 0xB1, 0x38, 0xD2, 0xFF, 0xFF, 0xFF, 0x60, //
- 0x00, 0x2D, 0x46, 0x73, 0xCF, 0xB1, 0x38, 0xD2, 0xFF, 0xFF, 0xFF, 0x60, //
- 0x00, 0x00, 0x40, 0x30, 0x60, 0xBA, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x40, 0x50, 0x40, 0x86, 0x83, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x64, 0x50, 0x50, 0xFF, 0xD7, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0xA0, 0x30, 0xC8, 0x81, 0x77, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x64, 0x40, 0x60, 0xFF, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x60, 0x5E, 0x60, 0x69, 0x86, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x40, 0x60, 0x6E, 0x58, 0xA5, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x23, 0x2F, 0x9B, 0x7D, 0x6E, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x30, 0x40, 0x80, 0x3C, 0xB7, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x38, 0x5F, 0x82, 0x7D, 0x87, 0x93, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x73, 0x6C, 0xFF, 0xED, 0xFF, 0xCA, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x31, 0x30, 0xC8, 0x97, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x28, 0x46, 0x78, 0x42, 0x2E, 0x30, 0xFF, 0x80, 0xFF, 0xFF, 0x54, //
- 0x00, 0x28, 0x46, 0x87, 0x96, 0xB4, 0x64, 0xD2, 0xFF, 0xFF, 0xFF, 0x54, //
- 0x01, 0x28, 0x46, 0x73, 0x78, 0x96, 0xA0, 0x0D, 0x00, 0x00, 0x00, 0x00, //
- 0x01, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, //
- 0x00, 0x62, 0x69, 0x80, 0xB2, 0x5F, 0x00, 0xFF, 0xE4, 0xFF, 0xFF, 0x90, //
- 0x01, 0x30, 0x40, 0x59, 0xFF, 0xEF, 0x86, 0xCE, 0xFF, 0xD5, 0x8C, 0xC8, //
- 0x01, 0x6E, 0x46, 0x9A, 0xFF, 0xD7, 0x06, 0xE0, 0xFF, 0xDC, 0xA7, 0x49, //
- 0x01, 0x40, 0x60, 0x40, 0x6E, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x8C, 0x2D, 0xA0, 0x63, 0x55, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x5F, 0x59, 0x5A, 0x96, 0x91, 0x84, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x52, 0x64, 0x3C, 0xFF, 0xC2, 0x70, 0xBA, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x8C, 0x2D, 0xA0, 0x63, 0x55, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x46, 0x5A, 0x41, 0x3C, 0x50, 0x46, 0xFF, 0xFA, 0xFF, 0x9B, 0x78, //
- 0x01, 0x2E, 0x60, 0x7D, 0x64, 0x96, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x00, 0x83, 0xFF, 0x72, 0xD1, 0xFF, 0xFF, 0xFF, 0xE2, 0xFE, 0x7D, //
- 0x00, 0x5F, 0x14, 0xB4, 0x50, 0x96, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, //
- 0x00, 0x28, 0x46, 0x87, 0x82, 0xC8, 0xFA, 0xD2, 0xFF, 0xFF, 0xFF, 0x32, //
- 0x00, 0x20, 0x10, 0x50, 0x64, 0x64, 0x32, 0xFF, 0x96, 0xFF, 0xFF, 0x82, //
- 0x00, 0x00, 0x00, 0x30, 0x00, 0xBA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x40, 0x50, 0x40, 0x86, 0x83, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x64, 0x50, 0x50, 0xFF, 0xD7, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0xA0, 0x30, 0xC8, 0x81, 0x77, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x64, 0x40, 0x60, 0xFF, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x30, 0x30, 0x60, 0x6F, 0x69, 0x52, 0xFF, 0xC0, 0xB9, 0xA1, 0x80, //
- 0x01, 0x2D, 0x60, 0x87, 0xFF, 0xE0, 0x46, 0xFF, 0xFF, 0x85, 0x79, 0x60, //
- 0x00, 0x00, 0x88, 0x6A, 0x85, 0x3E, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x11, //
- 0x00, 0x2E, 0x41, 0x64, 0xF9, 0xE7, 0x7C, 0xD0, 0xFF, 0xDA, 0x9A, 0xBB, //
- 0x00, 0x00, 0xFF, 0xFF, 0xBE, 0xB9, 0xB4, 0xE6, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x2D, 0x46, 0x50, 0xCF, 0xB1, 0x38, 0xD2, 0xFF, 0xFF, 0xFF, 0x60, //
- 0x00, 0xA0, 0x14, 0x32, 0xE6, 0xFF, 0x96, 0xF3, 0xE6, 0xFF, 0x96, 0x6E, //
- 0x00, 0x52, 0x64, 0x3C, 0xFF, 0xC2, 0x70, 0xBA, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x01, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, //
- 0x00, 0x62, 0x69, 0x80, 0xB2, 0x5F, 0x00, 0xFF, 0xE4, 0xFF, 0xFF, 0x90, //
- 0x01, 0x30, 0x40, 0x59, 0xFF, 0xEF, 0x86, 0xCE, 0xFF, 0xD5, 0x8C, 0xC8, //
- 0x01, 0x6E, 0x46, 0x9A, 0xFF, 0xD7, 0x06, 0xE0, 0xFF, 0xDC, 0xA7, 0x49, //
- 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00, //
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //
+static dKydata_BloomInfo_c l_kydata_BloomInf_tbl[BLOOMINFO_MAX] = {
+ {BLOOM_SOFT, 0xFF, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00},
+ {BLOOM_CLEAR, 0x28, 0x46, 0x87, 0xCF, 0xB1, 0x38, 0xD2, 0xFF, 0xFF, 0xFF, 0x60}, // Twilight
+ {BLOOM_CLEAR, 0x2D, 0x46, 0x73, 0xCF, 0xB1, 0x38, 0xD2, 0xFF, 0xFF, 0xFF,
+ 0x60}, // Twilight Weak
+ {BLOOM_CLEAR, 0x00, 0x40, 0x30, 0x60, 0xBA, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x00}, // Senses
+ {BLOOM_SOFT, 0x40, 0x50, 0x40, 0x86, 0x83, 0x96, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Field Normal (Morning 0)
+ {BLOOM_SOFT, 0x64, 0x50, 0x50, 0xFF, 0xD7, 0x96, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Field Normal (Morning 1)
+ {BLOOM_SOFT, 0xA0, 0x30, 0xC8, 0x81, 0x77, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Field Normal (Afternoon)
+ {BLOOM_SOFT, 0x64, 0x40, 0x60, 0xFF, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Field Normal (Evening 0)
+ {BLOOM_SOFT, 0x60, 0x5E, 0x60, 0x69, 0x86, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Field Normal (Evening 1)
+ {BLOOM_SOFT, 0x40, 0x60, 0x6E, 0x58, 0xA5, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Field Normal (Night)
+ {BLOOM_CLEAR, 0x23, 0x2F, 0x9B, 0x7D, 0x6E, 0x50, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Bulblin Camp Fire
+ {BLOOM_SOFT, 0x30, 0x40, 0x80, 0x3C, 0xB7, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Palace of Twilight
+ {BLOOM_SOFT, 0x38, 0x5F, 0x82, 0x7D, 0x87, 0x93, 0xFF, 0xFF, 0xFF, 0xFF, 0x00}, // demo28_03
+ {BLOOM_SOFT, 0x73, 0x6C, 0xFF, 0xED, 0xFF, 0xCA, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Golden Bug Glow
+ {BLOOM_SOFT, 0x31, 0x30, 0xC8, 0x97, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00}, // Cloud Sea
+ {BLOOM_CLEAR, 0x28, 0x46, 0x78, 0x42, 0x2E, 0x30, 0xFF, 0x80, 0xFF, 0xFF,
+ 0x54}, // Zora's Domain Outside (Twilight)
+ {BLOOM_CLEAR, 0x28, 0x46, 0x87, 0x96, 0xB4, 0x64, 0xD2, 0xFF, 0xFF, 0xFF,
+ 0x54}, // Zora's Domain Inside (Twilight)
+ {BLOOM_SOFT, 0x28, 0x46, 0x73, 0x78, 0x96, 0xA0, 0x0D, 0x00, 0x00, 0x00, 0x00}, // Senses-like
+ {BLOOM_SOFT, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF,
+ 0xFF}, // Sacred Grove Time Travel
+ {BLOOM_CLEAR, 0x62, 0x69, 0x80, 0xB2, 0x5F, 0x00, 0xFF, 0xE4, 0xFF, 0xFF, 0x90}, // Sewers
+ {BLOOM_SOFT, 0x30, 0x40, 0x59, 0xFF, 0xEF, 0x86, 0xCE, 0xFF, 0xD5, 0x8C,
+ 0xC8}, // Flashback Scene
+ {BLOOM_SOFT, 0x6E, 0x46, 0x9A, 0xFF, 0xD7, 0x06, 0xE0, 0xFF, 0xDC, 0xA7,
+ 0x49}, // Twilight Gate
+ {BLOOM_SOFT, 0x40, 0x60, 0x40, 0x6E, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Underwater (Normal)
+ {BLOOM_CLEAR, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_CLEAR, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_SOFT, 0x8C, 0x2D, 0xA0, 0x63, 0x55, 0x49, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Dungeon Normal Weak
+ {BLOOM_SOFT, 0x5F, 0x59, 0x5A, 0x96, 0x91, 0x84, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Dungeon Normal Strong
+ {BLOOM_CLEAR, 0x52, 0x64, 0x3C, 0xFF, 0xC2, 0x70, 0xBA, 0xFF, 0xFF, 0xFF, 0x00}, // Lava
+ {BLOOM_CLEAR, 0x8C, 0x2D, 0xA0, 0x63, 0x55, 0x49, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Goron Mines - No Lava
+ {BLOOM_SOFT, 0x46, 0x5A, 0x41, 0x3C, 0x50, 0x46, 0xFF, 0xFA, 0xFF, 0x9B,
+ 0x78}, // Sacred Grove Past
+ {BLOOM_SOFT, 0x2E, 0x60, 0x7D, 0x64, 0x96, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00}, // Castle
+ {BLOOM_CLEAR, 0x00, 0x83, 0xFF, 0x72, 0xD1, 0xFF, 0xFF, 0xFF, 0xE2, 0xFE, 0x7D}, // Empty
+ {BLOOM_CLEAR, 0x5F, 0x14, 0xB4, 0x50, 0x96, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0x64}, // Empty
+ {BLOOM_CLEAR, 0x28, 0x46, 0x87, 0x82, 0xC8, 0xFA, 0xD2, 0xFF, 0xFF, 0xFF, 0x32}, // Empty
+ {BLOOM_CLEAR, 0x20, 0x10, 0x50, 0x64, 0x64, 0x32, 0xFF, 0x96, 0xFF, 0xFF, 0x82}, // Empty
+ {BLOOM_CLEAR, 0x00, 0x00, 0x30, 0x00, 0xBA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_SOFT, 0x40, 0x50, 0x40, 0x86, 0x83, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_SOFT, 0x64, 0x50, 0x50, 0xFF, 0xD7, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_SOFT, 0xA0, 0x30, 0xC8, 0x81, 0x77, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_SOFT, 0x64, 0x40, 0x60, 0xFF, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_SOFT, 0x30, 0x30, 0x60, 0x6F, 0x69, 0x52, 0xFF, 0xC0, 0xB9, 0xA1,
+ 0x80}, // Demo: Flashback Scene
+ {BLOOM_SOFT, 0x2D, 0x60, 0x87, 0xFF, 0xE0, 0x46, 0xFF, 0xFF, 0x85, 0x79,
+ 0x60}, // Demo: Fake Twilight
+ {BLOOM_CLEAR, 0x00, 0x88, 0x6A, 0x85, 0x3E, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x11}, // Demo: demo32_03
+ {BLOOM_CLEAR, 0x2E, 0x41, 0x64, 0xF9, 0xE7, 0x7C, 0xD0, 0xFF, 0xDA, 0x9A,
+ 0xBB}, // Demo: Twilight Flashback Scene
+ {BLOOM_CLEAR, 0x00, 0xFF, 0xFF, 0xBE, 0xB9, 0xB4, 0xE6, 0xFF, 0xFF, 0xFF,
+ 0x00}, // Demo: demo31_20
+ {BLOOM_CLEAR, 0x2D, 0x46, 0x50, 0xCF, 0xB1, 0x38, 0xD2, 0xFF, 0xFF, 0xFF,
+ 0x60}, // Demo: Lava W
+ {BLOOM_CLEAR, 0xA0, 0x14, 0x32, 0xE6, 0xFF, 0x96, 0xF3, 0xE6, 0xFF, 0x96, 0x6E}, // Empty
+ {BLOOM_CLEAR, 0x52, 0x64, 0x3C, 0xFF, 0xC2, 0x70, 0xBA, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_CLEAR, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_SOFT, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_CLEAR, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF}, // Empty
+ {BLOOM_CLEAR, 0x62, 0x69, 0x80, 0xB2, 0x5F, 0x00, 0xFF, 0xE4, 0xFF, 0xFF, 0x90}, // Empty
+ {BLOOM_SOFT, 0x30, 0x40, 0x59, 0xFF, 0xEF, 0x86, 0xCE, 0xFF, 0xD5, 0x8C, 0xC8}, // Empty
+ {BLOOM_SOFT, 0x6E, 0x46, 0x9A, 0xFF, 0xD7, 0x06, 0xE0, 0xFF, 0xDC, 0xA7, 0x49}, // Empty
+ {BLOOM_CLEAR, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_CLEAR, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_CLEAR, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_CLEAR, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_CLEAR, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_CLEAR, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_CLEAR, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_CLEAR, 0x80, 0x40, 0x80, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0x00}, // Empty
+ {BLOOM_CLEAR, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // Empty
+ {BLOOM_CLEAR, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // Empty
};
/* 803A9198-803A92A8 -00001 0110+00 1/1 0/0 0/0 .data l_darkworld_tbl */
-static dKyd_darkworldTblEntry l_darkworld_tbl[34] = {
+static dKydata_darkworldInfo_c l_darkworld_tbl[34] = {
{"R_SP30", UNCLEARABLE}, // UNUSED - Unknown Room
{"T_SP05", TEST}, // UNUSED - E3 2005 Warp Test (Old)
{"T_SP05A", TEST}, // UNUSED - Ito Warp Test
@@ -172,13 +197,8 @@ static dKyd_darkworldTblEntry l_darkworld_tbl[34] = {
{"D_SB10", FARON}, // Faron Woods Cave
};
-// TODO: wrong type
-// Only thing I can easily find: the byte is written to 8042DD4D and it seems to control the Y
-// pos(?) (essentially brightness) of the soft spotlight that is on wolf Link during twilight? Will
-// need more investigation before can be changed to appropriate type. Leaving this way since the
-// stageNames are already converted.
/* 803A92A8-803A93C8 -00001 0120+00 1/1 0/0 0/0 .data l_light_size_tbl */
-static dKyd_darkworldTblEntry l_light_size_tbl[36] = {
+static dKydata_lightsizeInfo_c l_light_size_tbl[36] = {
{"R_SP01", 0}, // Ordon Interiors
{"R_SP108", 0}, // Coro's Lantern Shop
{"F_SP109", 2}, // Kakariko Village
@@ -217,9 +237,8 @@ static dKyd_darkworldTblEntry l_light_size_tbl[36] = {
{"D_SB10", 0}, // Faron Woods Cave
};
-// TODO: wrong type
/* 803A93C8-803A9410 -00001 0048+00 1/1 0/0 0/0 .data l_light_size_tbl_tw */
-static dKyd_darkworldTblEntry l_light_size_tbl_tw[9] = {
+static dKydata_lightsizeInfo_c l_light_size_tbl_tw[9] = {
{"F_SP109", 2}, // Kakariko Village
{"F_SP110", 2}, // Death Mountain
{"R_SP209", 2}, // Sanctuary Basement
@@ -445,23 +464,23 @@ void* dKyd_maple_col_getp() {
}
/* 80056A70-80056A7C 0513B0 000C+00 0/0 4/4 0/0 .text dKyd_darkworld_tbl_getp__Fv */
-dKyd_darkworldTblEntry* dKyd_darkworld_tbl_getp() {
+dKydata_darkworldInfo_c* dKyd_darkworld_tbl_getp() {
return l_darkworld_tbl;
}
/* 80056A7C-80056A88 0513BC 000C+00 0/0 1/1 0/0 .text dKyd_light_size_tbl_getp__Fv */
-void* dKyd_light_size_tbl_getp() {
+dKydata_lightsizeInfo_c* dKyd_light_size_tbl_getp() {
return l_light_size_tbl;
}
/* 80056A88-80056A94 0513C8 000C+00 0/0 1/1 0/0 .text dKyd_light_tw_size_tbl_getp__Fv */
-void* dKyd_light_tw_size_tbl_getp() {
+dKydata_lightsizeInfo_c* dKyd_light_tw_size_tbl_getp() {
return l_light_size_tbl_tw;
}
/* 80056A94-80056AA8 0513D4 0014+00 0/0 1/1 0/0 .text dKyd_BloomInf_tbl_getp__Fi */
-void* dKyd_BloomInf_tbl_getp(int tblIdx) {
- return &l_kydata_BloomInf_tbl[tblIdx * 0xC];
+dKydata_BloomInfo_c* dKyd_BloomInf_tbl_getp(int tblIdx) {
+ return &l_kydata_BloomInf_tbl[tblIdx];
}
/* 8037A1C0-8037A1C0 006820 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/kankyo/d_kankyo_wether.cpp b/src/d/kankyo/d_kankyo_wether.cpp
index 3a24218a66..4ffcdc2682 100644
--- a/src/d/kankyo/d_kankyo_wether.cpp
+++ b/src/d/kankyo/d_kankyo_wether.cpp
@@ -4,189 +4,13 @@
//
#include "d/kankyo/d_kankyo_wether.h"
+#include "Z2AudioLib/Z2EnvSeMgr.h"
+#include "d/com/d_com_inf_game.h"
+#include "d/kankyo/d_kankyo.h"
+#include "d/kankyo/d_kankyo_rain.h"
#include "dol2asm.h"
#include "dolphin/types.h"
-
-//
-// Types:
-//
-
-struct dStage_roomControl_c {
- /* 80024384 */ void getStatusRoomDt(int);
-};
-
-struct dScnKy_env_light_c {
- /* 8019FA08 */ void getDaytime();
-};
-
-struct dRes_info_c {};
-
-struct dRes_control_c {
- /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
-};
-
-struct dPa_levelEcallBack {};
-
-struct dKy_tevstr_c {};
-
-struct csXyz {};
-
-struct _GXColor {};
-
-struct Vec {};
-
-struct cXyz {
- /* 80009184 */ ~cXyz();
- /* 800125DC */ cXyz();
- /* 80266AE4 */ void operator+(Vec const&) const;
- /* 80266B84 */ void operator*(f32) const;
- /* 80266D30 */ void normZP() const;
- /* 8026706C */ bool operator!=(Vec const&) const;
-
- static f32 Zero[3];
-};
-
-struct dPa_control_c {
- /* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*,
- u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*,
- cXyz const*, f32);
-};
-
-struct dKankyo_vrkumo_Packet {
- /* 80056F58 */ void draw();
- /* 8005820C */ ~dKankyo_vrkumo_Packet();
-};
-
-struct dKankyo_sunlenz_Packet {
- /* 80056C98 */ void draw();
- /* 800580A4 */ ~dKankyo_sunlenz_Packet();
-};
-
-struct dKankyo_sun_Packet {
- /* 80056C60 */ void draw();
- /* 80058128 */ ~dKankyo_sun_Packet();
-};
-
-struct dKankyo_star_Packet {
- /* 80056E08 */ void draw();
- /* 80057F18 */ ~dKankyo_star_Packet();
-};
-
-struct dKankyo_snow_Packet {
- /* 80056D98 */ void draw();
- /* 80057F9C */ ~dKankyo_snow_Packet();
-};
-
-struct dKankyo_rain_Packet {
- /* 80056D10 */ void draw();
- /* 80058020 */ ~dKankyo_rain_Packet();
-};
-
-struct dKankyo_odour_Packet {
- /* 80056FCC */ void draw();
- /* 80057D8C */ ~dKankyo_odour_Packet();
-};
-
-struct dKankyo_mud_Packet {
- /* 8005703C */ void draw();
- /* 80057D08 */ ~dKankyo_mud_Packet();
-};
-
-struct dKankyo_housi_Packet {
- /* 80056EE8 */ void draw();
- /* 80057E94 */ ~dKankyo_housi_Packet();
-};
-
-struct dKankyo_evil_Packet {
- /* 800570AC */ void draw();
- /* 80057C84 */ ~dKankyo_evil_Packet();
-};
-
-struct dKankyo_cloud_Packet {
- /* 80056E78 */ void draw();
- /* 80057E10 */ ~dKankyo_cloud_Packet();
-};
-
-struct dComIfG_play_c {
- /* 8002C97C */ void getLayerNo(int);
-};
-
-struct JAISoundID {};
-
-struct Z2SeMgr {
- /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
-};
-
-struct Z2EnvSeMgr {
- /* 802C7830 */ void startRainSe(s32, s8);
- /* 802C7FBC */ void initStrongWindSe();
- /* 802C7FC8 */ void setWindDirection(Vec*);
- /* 802C800C */ void startStrongWindSe(s8);
-};
-
-struct Z2AudioMgr {
- static u8 mAudioMgrPtr[4 + 4 /* padding */];
-};
-
-struct WIND_INFLUENCE {};
-
-struct VRKUMO_EFF {
- /* 80056F18 */ ~VRKUMO_EFF();
- /* 80056F54 */ VRKUMO_EFF();
-};
-
-struct STAR_EFF {
- /* 80056DC8 */ ~STAR_EFF();
- /* 80056E04 */ STAR_EFF();
-};
-
-struct SNOW_EFF {
- /* 80056D58 */ ~SNOW_EFF();
- /* 80056D94 */ SNOW_EFF();
-};
-
-struct RAIN_EFF {
- /* 80056CD0 */ ~RAIN_EFF();
- /* 80056D0C */ RAIN_EFF();
-};
-
-struct JMath {
- static u8 sincosTable_[65536];
-};
-
-struct J3DPacket;
-struct J3DDrawBuffer {
- /* 8032548C */ void entryImm(J3DPacket*, u16);
-};
-
-struct J3DPacket {
- /* 80312750 */ bool entry(J3DDrawBuffer*);
-};
-
-struct HOUSI_EFF {
- /* 80056EA8 */ ~HOUSI_EFF();
- /* 80056EE4 */ HOUSI_EFF();
-};
-
-struct EF_ODOUR_EFF {
- /* 80056F8C */ ~EF_ODOUR_EFF();
- /* 80056FC8 */ EF_ODOUR_EFF();
-};
-
-struct EF_MUD_EFF {
- /* 80056FFC */ ~EF_MUD_EFF();
- /* 80057038 */ EF_MUD_EFF();
-};
-
-struct EF_EVIL_EFF {
- /* 8005706C */ ~EF_EVIL_EFF();
- /* 800570A8 */ EF_EVIL_EFF();
-};
-
-struct CLOUD_EFF {
- /* 80056E38 */ ~CLOUD_EFF();
- /* 80056E74 */ CLOUD_EFF();
-};
+#include "m_Do/m_Do_audio.h"
//
// Forward References:
@@ -330,7 +154,8 @@ extern "C" void dKyr_star_init__Fv();
extern "C" void dKyr_star_move__Fv();
extern "C" void cloud_shadow_move__Fv();
extern "C" void vrkumo_move__Fv();
-extern "C" void dKyr_drawSun__FPA4_fP4cXyzR8_GXColorPPUc();
+extern "C" void dKyr_drawSun__FPA4_fP4cXyzR8_GXColorPPUc(f32 (*param_0)[4], cXyz* param_1,
+ _GXColor& param_2, u8** param_3);
extern "C" void dKyr_drawLenzflare__FPA4_fP4cXyzR8_GXColorPPUc();
extern "C" void dKyr_drawRain__FPA4_fPPUc();
extern "C" void dKyr_drawSibuki__FPA4_fPPUc();
@@ -371,8 +196,6 @@ extern "C" void* __nw__FUli();
extern "C" void __dl__FPv();
extern "C" bool entry__9J3DPacketFP13J3DDrawBuffer();
extern "C" void entryImm__13J3DDrawBufferFP9J3DPacketUs();
-extern "C" void PSVECSquareMag();
-extern "C" void PSVECSquareDistance();
extern "C" void __register_global_object();
extern "C" void __destroy_arr();
extern "C" void __construct_array();
@@ -387,16 +210,11 @@ extern "C" void _restgpr_26();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void memcmp();
-extern "C" void strcmp();
extern "C" extern void* __vt__9J3DPacket[5];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" extern u8 g_env_light[4880];
-extern "C" extern u8 g_mEnvSeMgr[780];
+extern "C" extern dScnKy_env_light_c g_env_light;
+extern "C" extern Z2EnvSeMgr g_mEnvSeMgr;
extern "C" f32 Zero__4cXyz[3];
-extern "C" extern u8 j3dSys[284];
extern "C" u8 sincosTable___5JMath[65536];
-extern "C" extern u32 __float_nan;
-extern "C" extern u8 struct_80450D64[4];
extern "C" extern u8 data_80450EE0[8];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
@@ -404,77 +222,74 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
// Declarations:
//
+// move these later
+inline void mDoAud_rainPlay(s32 enable) {
+ g_mEnvSeMgr.startRainSe(enable, 0);
+}
+
+inline void mDoAud_seStart(u32 sfx_id, const Vec* param_1, u32 param_2, s8 param_3) {
+ Z2AudioMgr::getInterface()->mSeMgr.seStart(sfx_id, param_1, param_2, param_3, 1.0f, 1.0f, -1.0f,
+ -1.0f, 0);
+}
+
/* 80056AA8-80056AF8 0513E8 0050+00 3/3 0/0 0/0 .text dKyw_setDrawPacketList__FP9J3DPacketi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_setDrawPacketList(J3DPacket* param_0, int param_1) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_setDrawPacketList__FP9J3DPacketi.s"
+static J3DPacket* dKyw_setDrawPacketList(J3DPacket* p_packet, int param_1) {
+ if (p_packet == NULL) {
+ return NULL;
+ } else {
+ dComIfGd_getListFilter()->entryImm(p_packet, 0);
+ return p_packet;
+ }
}
-#pragma pop
/* 80056AF8-80056B48 051438 0050+00 3/3 0/0 0/0 .text
* dKyw_setDrawPacketListIndScreen__FP9J3DPacketi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_setDrawPacketListIndScreen(J3DPacket* param_0, int param_1) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_setDrawPacketListIndScreen__FP9J3DPacketi.s"
+static J3DPacket* dKyw_setDrawPacketListIndScreen(J3DPacket* p_packet, int param_1) {
+ if (p_packet == NULL) {
+ return NULL;
+ } else {
+ dComIfGd_getOpaListIndScreen()->entryImm(p_packet, 0);
+ return p_packet;
+ }
}
-#pragma pop
/* 80056B48-80056BD8 051488 0090+00 5/5 0/0 0/0 .text dKyw_setDrawPacketListSky__FP9J3DPacketi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_setDrawPacketListSky(J3DPacket* param_0, int param_1) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_setDrawPacketListSky__FP9J3DPacketi.s"
+static J3DPacket* dKyw_setDrawPacketListSky(J3DPacket* p_packet, int type) {
+ if (p_packet == NULL) {
+ return NULL;
+ } else {
+ dComIfGd_setListSky();
+ j3dSys.getDrawBuffer(type)->entryImm(p_packet, 0);
+ dComIfGd_setList();
+ return p_packet;
+ }
}
-#pragma pop
/* 80056BD8-80056C60 051518 0088+00 2/2 0/0 0/0 .text dKyw_setDrawPacketListXluBg__FP9J3DPacketi
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_setDrawPacketListXluBg(J3DPacket* param_0, int param_1) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_setDrawPacketListXluBg__FP9J3DPacketi.s"
+static J3DPacket* dKyw_setDrawPacketListXluBg(J3DPacket* p_packet, int type) {
+ if (p_packet == NULL) {
+ return NULL;
+ } else {
+ dComIfGd_setXluListBG();
+ j3dSys.getDrawBuffer(type)->entryImm(p_packet, 0);
+ dComIfGd_setList();
+ return p_packet;
+ }
}
-#pragma pop
/* 80056C60-80056C98 0515A0 0038+00 1/0 0/0 0/0 .text draw__18dKankyo_sun_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKankyo_sun_Packet::draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/draw__18dKankyo_sun_PacketFv.s"
+void dKankyo_sun_Packet::draw() {
+ dKyr_drawSun(j3dSys.getViewMtx(), &field_0x10[0], mColor, &mpResMoon);
}
-#pragma pop
/* 80056C98-80056CD0 0515D8 0038+00 1/0 0/0 0/0 .text draw__22dKankyo_sunlenz_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKankyo_sunlenz_Packet::draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/draw__22dKankyo_sunlenz_PacketFv.s"
+void dKankyo_sunlenz_Packet::draw() {
+ dKyr_drawLenzflare(j3dSys.getViewMtx(), &field_0x24[0], field_0x10, &mpResBall);
}
-#pragma pop
/* 80056CD0-80056D0C 051610 003C+00 2/2 0/0 0/0 .text __dt__8RAIN_EFFFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm RAIN_EFF::~RAIN_EFF() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__8RAIN_EFFFv.s"
-}
-#pragma pop
+RAIN_EFF::~RAIN_EFF() {}
/* 80056D0C-80056D10 05164C 0004+00 1/1 0/0 0/0 .text __ct__8RAIN_EFFFv */
RAIN_EFF::RAIN_EFF() {
@@ -482,24 +297,13 @@ RAIN_EFF::RAIN_EFF() {
}
/* 80056D10-80056D58 051650 0048+00 1/0 0/0 0/0 .text draw__19dKankyo_rain_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKankyo_rain_Packet::draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/draw__19dKankyo_rain_PacketFv.s"
+void dKankyo_rain_Packet::draw() {
+ dKyr_drawSibuki(j3dSys.getViewMtx(), &field_0x10);
+ dKyr_drawRain(j3dSys.getViewMtx(), &field_0x10);
}
-#pragma pop
/* 80056D58-80056D94 051698 003C+00 1/1 1/1 0/0 .text __dt__8SNOW_EFFFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm SNOW_EFF::~SNOW_EFF() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__8SNOW_EFFFv.s"
-}
-#pragma pop
+SNOW_EFF::~SNOW_EFF() {}
/* 80056D94-80056D98 0516D4 0004+00 0/0 1/1 0/0 .text __ct__8SNOW_EFFFv */
SNOW_EFF::SNOW_EFF() {
@@ -507,24 +311,12 @@ SNOW_EFF::SNOW_EFF() {
}
/* 80056D98-80056DC8 0516D8 0030+00 1/0 0/0 0/0 .text draw__19dKankyo_snow_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKankyo_snow_Packet::draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/draw__19dKankyo_snow_PacketFv.s"
+void dKankyo_snow_Packet::draw() {
+ dKyr_drawSnow(j3dSys.getViewMtx(), &field_0x10);
}
-#pragma pop
/* 80056DC8-80056E04 051708 003C+00 1/1 1/1 0/0 .text __dt__8STAR_EFFFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm STAR_EFF::~STAR_EFF() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__8STAR_EFFFv.s"
-}
-#pragma pop
+STAR_EFF::~STAR_EFF() {}
/* 80056E04-80056E08 051744 0004+00 0/0 1/1 0/0 .text __ct__8STAR_EFFFv */
STAR_EFF::STAR_EFF() {
@@ -532,24 +324,12 @@ STAR_EFF::STAR_EFF() {
}
/* 80056E08-80056E38 051748 0030+00 1/0 0/0 0/0 .text draw__19dKankyo_star_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKankyo_star_Packet::draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/draw__19dKankyo_star_PacketFv.s"
+void dKankyo_star_Packet::draw() {
+ dKyr_drawStar(j3dSys.getViewMtx(), &field_0x10);
}
-#pragma pop
/* 80056E38-80056E74 051778 003C+00 2/2 0/0 0/0 .text __dt__9CLOUD_EFFFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm CLOUD_EFF::~CLOUD_EFF() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__9CLOUD_EFFFv.s"
-}
-#pragma pop
+CLOUD_EFF::~CLOUD_EFF() {}
/* 80056E74-80056E78 0517B4 0004+00 1/1 0/0 0/0 .text __ct__9CLOUD_EFFFv */
CLOUD_EFF::CLOUD_EFF() {
@@ -557,24 +337,12 @@ CLOUD_EFF::CLOUD_EFF() {
}
/* 80056E78-80056EA8 0517B8 0030+00 1/0 0/0 0/0 .text draw__20dKankyo_cloud_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKankyo_cloud_Packet::draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/draw__20dKankyo_cloud_PacketFv.s"
+void dKankyo_cloud_Packet::draw() {
+ drawCloudShadow(j3dSys.getViewMtx(), &mpResTex);
}
-#pragma pop
/* 80056EA8-80056EE4 0517E8 003C+00 2/2 0/0 0/0 .text __dt__9HOUSI_EFFFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm HOUSI_EFF::~HOUSI_EFF() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__9HOUSI_EFFFv.s"
-}
-#pragma pop
+HOUSI_EFF::~HOUSI_EFF() {}
/* 80056EE4-80056EE8 051824 0004+00 1/1 0/0 0/0 .text __ct__9HOUSI_EFFFv */
HOUSI_EFF::HOUSI_EFF() {
@@ -582,24 +350,12 @@ HOUSI_EFF::HOUSI_EFF() {
}
/* 80056EE8-80056F18 051828 0030+00 1/0 0/0 0/0 .text draw__20dKankyo_housi_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKankyo_housi_Packet::draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/draw__20dKankyo_housi_PacketFv.s"
+void dKankyo_housi_Packet::draw() {
+ dKyr_drawHousi(j3dSys.getViewMtx(), &mpResTex);
}
-#pragma pop
/* 80056F18-80056F54 051858 003C+00 2/2 0/0 0/0 .text __dt__10VRKUMO_EFFFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm VRKUMO_EFF::~VRKUMO_EFF() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__10VRKUMO_EFFFv.s"
-}
-#pragma pop
+VRKUMO_EFF::~VRKUMO_EFF() {}
/* 80056F54-80056F58 051894 0004+00 1/1 0/0 0/0 .text __ct__10VRKUMO_EFFFv */
VRKUMO_EFF::VRKUMO_EFF() {
@@ -607,24 +363,12 @@ VRKUMO_EFF::VRKUMO_EFF() {
}
/* 80056F58-80056F8C 051898 0034+00 1/0 0/0 0/0 .text draw__21dKankyo_vrkumo_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKankyo_vrkumo_Packet::draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/draw__21dKankyo_vrkumo_PacketFv.s"
+void dKankyo_vrkumo_Packet::draw() {
+ drawVrkumo(j3dSys.getViewMtx(), field_0x10, &mpResCloudtx_01);
}
-#pragma pop
/* 80056F8C-80056FC8 0518CC 003C+00 2/2 0/0 0/0 .text __dt__12EF_ODOUR_EFFFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm EF_ODOUR_EFF::~EF_ODOUR_EFF() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__12EF_ODOUR_EFFFv.s"
-}
-#pragma pop
+EF_ODOUR_EFF::~EF_ODOUR_EFF() {}
/* 80056FC8-80056FCC 051908 0004+00 1/1 0/0 0/0 .text __ct__12EF_ODOUR_EFFFv */
EF_ODOUR_EFF::EF_ODOUR_EFF() {
@@ -632,24 +376,12 @@ EF_ODOUR_EFF::EF_ODOUR_EFF() {
}
/* 80056FCC-80056FFC 05190C 0030+00 1/0 0/0 0/0 .text draw__20dKankyo_odour_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKankyo_odour_Packet::draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/draw__20dKankyo_odour_PacketFv.s"
+void dKankyo_odour_Packet::draw() {
+ dKyr_odour_draw(j3dSys.getViewMtx(), &mpResTex);
}
-#pragma pop
/* 80056FFC-80057038 05193C 003C+00 2/2 0/0 0/0 .text __dt__10EF_MUD_EFFFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm EF_MUD_EFF::~EF_MUD_EFF() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__10EF_MUD_EFFFv.s"
-}
-#pragma pop
+EF_MUD_EFF::~EF_MUD_EFF() {}
/* 80057038-8005703C 051978 0004+00 1/1 0/0 0/0 .text __ct__10EF_MUD_EFFFv */
EF_MUD_EFF::EF_MUD_EFF() {
@@ -657,24 +389,12 @@ EF_MUD_EFF::EF_MUD_EFF() {
}
/* 8005703C-8005706C 05197C 0030+00 1/0 0/0 0/0 .text draw__18dKankyo_mud_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKankyo_mud_Packet::draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/draw__18dKankyo_mud_PacketFv.s"
+void dKankyo_mud_Packet::draw() {
+ dKyr_mud_draw(j3dSys.getViewMtx(), &field_0x14);
}
-#pragma pop
/* 8005706C-800570A8 0519AC 003C+00 2/2 0/0 0/0 .text __dt__11EF_EVIL_EFFFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm EF_EVIL_EFF::~EF_EVIL_EFF() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__11EF_EVIL_EFFFv.s"
-}
-#pragma pop
+EF_EVIL_EFF::~EF_EVIL_EFF() {}
/* 800570A8-800570AC 0519E8 0004+00 1/1 0/0 0/0 .text __ct__11EF_EVIL_EFFFv */
EF_EVIL_EFF::EF_EVIL_EFF() {
@@ -682,262 +402,133 @@ EF_EVIL_EFF::EF_EVIL_EFF() {
}
/* 800570AC-800570DC 0519EC 0030+00 1/0 0/0 0/0 .text draw__19dKankyo_evil_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKankyo_evil_Packet::draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/draw__19dKankyo_evil_PacketFv.s"
+void dKankyo_evil_Packet::draw() {
+ dKyr_evil_draw(j3dSys.getViewMtx(), &field_0x14);
}
-#pragma pop
/* 800570DC-8005710C 051A1C 0030+00 1/1 0/0 0/0 .text dKyw_drawSun__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_drawSun(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_drawSun__Fi.s"
+static void dKyw_drawSun(int type) {
+ dKyw_setDrawPacketListSky(g_env_light.mpSunPacket, type);
}
-#pragma pop
/* 8005710C-80057130 051A4C 0024+00 1/1 0/0 0/0 .text dKyw_Sun_Draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_Sun_Draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_Sun_Draw__Fv.s"
+static void dKyw_Sun_Draw() {
+ dKyw_drawSun(XLU_BUFFER);
}
-#pragma pop
/* 80057130-80057174 051A70 0044+00 1/1 0/0 0/0 .text dKyw_drawSunlenz__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_drawSunlenz(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_drawSunlenz__Fi.s"
+static void dKyw_drawSunlenz(int type) {
+ if (g_env_light.mpSunLenzPacket->field_0x9e == 0) {
+ dKyw_setDrawPacketListIndScreen(g_env_light.mpSunLenzPacket, type);
+ } else {
+ dKyw_setDrawPacketListSky(g_env_light.mpSunLenzPacket, type);
+ }
}
-#pragma pop
/* 80057174-80057198 051AB4 0024+00 1/1 0/0 0/0 .text dKyw_Sunlenz_Draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_Sunlenz_Draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_Sunlenz_Draw__Fv.s"
+static void dKyw_Sunlenz_Draw() {
+ dKyw_drawSunlenz(XLU_BUFFER);
}
-#pragma pop
/* 80057198-800571C8 051AD8 0030+00 1/1 0/0 0/0 .text dKyw_drawRain__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_drawRain(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_drawRain__Fi.s"
+static void dKyw_drawRain(int type) {
+ dKyw_setDrawPacketList(g_env_light.mpRainPacket, type);
}
-#pragma pop
/* 800571C8-800571EC 051B08 0024+00 1/1 0/0 0/0 .text dKyw_Rain_Draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_Rain_Draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_Rain_Draw__Fv.s"
+static void dKyw_Rain_Draw() {
+ dKyw_drawRain(XLU_BUFFER);
}
-#pragma pop
/* 800571EC-8005721C 051B2C 0030+00 1/1 0/0 0/0 .text dKyw_drawSnow__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_drawSnow(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_drawSnow__Fi.s"
+static void dKyw_drawSnow(int type) {
+ dKyw_setDrawPacketList(g_env_light.mpSnowPacket, type);
}
-#pragma pop
/* 8005721C-80057240 051B5C 0024+00 1/1 0/0 0/0 .text dKyw_Snow_Draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_Snow_Draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_Snow_Draw__Fv.s"
+static void dKyw_Snow_Draw() {
+ dKyw_drawSnow(XLU_BUFFER);
}
-#pragma pop
/* 80057240-80057270 051B80 0030+00 1/1 0/0 0/0 .text dKyw_drawStar__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_drawStar(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_drawStar__Fi.s"
+static void dKyw_drawStar(int type) {
+ dKyw_setDrawPacketListSky(g_env_light.mpStarPacket, type);
}
-#pragma pop
/* 80057270-80057294 051BB0 0024+00 1/1 0/0 0/0 .text dKyw_Star_Draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_Star_Draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_Star_Draw__Fv.s"
+static void dKyw_Star_Draw() {
+ dKyw_drawStar(XLU_BUFFER);
}
-#pragma pop
/* 80057294-800572C4 051BD4 0030+00 1/1 0/0 0/0 .text dKyw_drawHousi__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_drawHousi(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_drawHousi__Fi.s"
+static void dKyw_drawHousi(int type) {
+ dKyw_setDrawPacketList(g_env_light.mpHousiPacket, type);
}
-#pragma pop
/* 800572C4-800572E8 051C04 0024+00 1/1 0/0 0/0 .text dKyw_Housi_Draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_Housi_Draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_Housi_Draw__Fv.s"
+static void dKyw_Housi_Draw() {
+ dKyw_drawHousi(XLU_BUFFER);
}
-#pragma pop
/* 800572E8-80057318 051C28 0030+00 1/1 0/0 0/0 .text dKyw_drawCloud__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_drawCloud(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_drawCloud__Fi.s"
+static void dKyw_drawCloud(int type) {
+ dKyw_setDrawPacketListIndScreen(g_env_light.mpCloudPacket, type);
}
-#pragma pop
/* 80057318-8005733C 051C58 0024+00 1/1 0/0 0/0 .text dKyw_Cloud_Draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_Cloud_Draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_Cloud_Draw__Fv.s"
+static void dKyw_Cloud_Draw() {
+ dKyw_drawCloud(XLU_BUFFER);
}
-#pragma pop
/* 8005733C-8005736C 051C7C 0030+00 1/1 0/0 0/0 .text dKyw_drawVrkumo__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_drawVrkumo(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_drawVrkumo__Fi.s"
+static void dKyw_drawVrkumo(int type) {
+ dKyw_setDrawPacketListSky(g_env_light.mpVrkumoPacket, type);
}
-#pragma pop
/* 8005736C-80057390 051CAC 0024+00 1/1 0/0 0/0 .text dKyw_Vrkumo_Draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_Vrkumo_Draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_Vrkumo_Draw__Fv.s"
+static void dKyw_Vrkumo_Draw() {
+ dKyw_drawVrkumo(XLU_BUFFER);
}
-#pragma pop
/* 80057390-800573C0 051CD0 0030+00 1/1 0/0 0/0 .text dKyw_shstar_packet__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_shstar_packet(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_shstar_packet__Fi.s"
+static void dKyw_shstar_packet(int type) {
+ dKyw_setDrawPacketListSky(g_env_light.mpShstarPacket, type);
}
-#pragma pop
/* 800573C0-800573E4 051D00 0024+00 1/1 0/0 0/0 .text dKyw_shstar_Draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_shstar_Draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_shstar_Draw__Fv.s"
+static void dKyw_shstar_Draw() {
+ dKyw_shstar_packet(XLU_BUFFER);
}
-#pragma pop
/* 800573E4-80057414 051D24 0030+00 1/1 0/0 0/0 .text dKyw_odour_packet__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_odour_packet(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_odour_packet__Fi.s"
+static void dKyw_odour_packet(int type) {
+ dKyw_setDrawPacketListIndScreen(g_env_light.mpOdourPacket, type);
}
-#pragma pop
/* 80057414-80057438 051D54 0024+00 1/1 0/0 0/0 .text dKyw_Odour_Draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_Odour_Draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_Odour_Draw__Fv.s"
+static void dKyw_Odour_Draw() {
+ dKyw_odour_packet(XLU_BUFFER);
}
-#pragma pop
/* 80057438-80057468 051D78 0030+00 1/1 0/0 0/0 .text dKyw_mud_packet__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_mud_packet(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_mud_packet__Fi.s"
+static void dKyw_mud_packet(int type) {
+ dKyw_setDrawPacketListXluBg(g_env_light.mpMudPacket, type);
}
-#pragma pop
/* 80057468-8005748C 051DA8 0024+00 1/1 0/0 0/0 .text dKyw_mud_Draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_mud_Draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_mud_Draw__Fv.s"
+static void dKyw_mud_Draw() {
+ dKyw_mud_packet(XLU_BUFFER);
}
-#pragma pop
/* 8005748C-800574BC 051DCC 0030+00 1/1 0/0 0/0 .text dKyw_evil_packet__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_evil_packet(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_evil_packet__Fi.s"
+static void dKyw_evil_packet(int type) {
+ dKyw_setDrawPacketListXluBg(g_env_light.mpEvilPacket, type);
}
-#pragma pop
/* 800574BC-800574E0 051DFC 0024+00 1/1 0/0 0/0 .text dKyw_evil_Draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_evil_Draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_evil_Draw__Fv.s"
+static void dKyw_evil_Draw() {
+ dKyw_evil_packet(XLU_BUFFER);
}
-#pragma pop
-
-/* ############################################################################################## */
-/* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_8037A368 = "F_SP113";
-SECTION_DEAD static char const* const stringBase_8037A370 = "D_MN07";
-#pragma pop
/* 804520E0-804520E4 0006E0 0004+00 12/12 0/0 0/0 .sdata2 @4378 */
SECTION_SDATA2 static u8 lit_4378[4] = {
@@ -950,95 +541,160 @@ SECTION_SDATA2 static u8 lit_4378[4] = {
/* 804520E4-804520E8 0006E4 0004+00 11/11 0/0 0/0 .sdata2 @4379 */
SECTION_SDATA2 static f32 lit_4379 = 1.0f;
+// remove these once float data is fixed
+inline u32 tmp_dComIfGp_particle_set(u16 param_1, const cXyz* param_2, const dKy_tevstr_c* param_3,
+ const csXyz* param_4, const cXyz* param_5, u8 param_6,
+ dPa_levelEcallBack* param_7, s8 param_8,
+ const GXColor* param_9, const GXColor* param_10,
+ const cXyz* param_11) {
+ return g_dComIfG_gameInfo.play.getParticle()->setNormal(param_1, param_2, param_3, param_4,
+ param_5, param_6, param_7, param_8,
+ param_9, param_10, param_11, lit_4379);
+}
+
+inline u32 tmp_dComIfGp_particle_set(u16 param_0, const cXyz* param_1, const csXyz* param_2,
+ const cXyz* param_3) {
+ return tmp_dComIfGp_particle_set(param_0, param_1, NULL, param_2, param_3, 0xFF, NULL, -1, NULL,
+ NULL, NULL);
+}
+
/* 800574E0-800579EC 051E20 050C+00 0/0 1/1 0/0 .text dKyw_wether_init__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_wether_init() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_wether_init__Fv.s"
+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.mRainCount = 0;
+ g_env_light.mSnowPacketEnabled = 0;
+ 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.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.field_0xebc = tmp0;
+ g_env_light.field_0xeb5 = 0;
+ g_env_light.mHousiPacketEnabled = false;
+ g_env_light.field_0xeac = 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.field_0x1048 = 0;
+ g_env_light.mEvilPacketEnabled = 0;
+ g_env_light.field_0x1054 = 0;
+ g_env_light.field_0x1051 = 0;
+ g_env_light.field_0xe60 = tmp0;
+
+ dKyw_wind_init();
+ dKyw_pntwind_init();
+
+ // Stage is Zora's Domain and Room is Outside Throne Room
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP113") && dComIfGp_roomControl_getStayNo() == 1 &&
+ dComIfG_play_c::getLayerNo(0) < 8) {
+ cXyz tmp;
+ f32 tmp0_2 = FLOAT_LABEL(lit_4378);
+ tmp.z = tmp0_2;
+ tmp.y = tmp0_2;
+ tmp.x = tmp0_2;
+
+ tmp_dComIfGp_particle_set(0x878F, &tmp, NULL, NULL);
+ tmp_dComIfGp_particle_set(0x8790, &tmp, NULL, NULL);
+ tmp_dComIfGp_particle_set(0x8791, &tmp, NULL, NULL);
+ tmp_dComIfGp_particle_set(0x8792, &tmp, NULL, NULL);
+ tmp_dComIfGp_particle_set(0x8793, &tmp, NULL, NULL);
+ tmp_dComIfGp_particle_set(0x8794, &tmp, NULL, NULL);
+ tmp_dComIfGp_particle_set(0x8795, &tmp, NULL, NULL);
+ tmp_dComIfGp_particle_set(0x8796, &tmp, NULL, NULL);
+ tmp_dComIfGp_particle_set(0x8797, &tmp, NULL, NULL);
+ tmp_dComIfGp_particle_set(0x8798, &tmp, NULL, NULL);
+ tmp_dComIfGp_particle_set(0x8799, &tmp, NULL, NULL);
+ tmp_dComIfGp_particle_set(0x879A, &tmp, NULL, NULL);
+ tmp_dComIfGp_particle_set(0x879B, &tmp, NULL, NULL);
+ }
+
+ // Stage is City in the Sky
+ // Room is Entrance or Right Wing Outside or Left Wing Outside or Central Hub Outside
+ if (!strcmp(dComIfGp_getStartStageName(), "D_MN07")) {
+ if ((dComIfGp_roomControl_getStayNo() == 0 || dComIfGp_roomControl_getStayNo() == 3) ||
+ dComIfGp_roomControl_getStayNo() == 6 || dComIfGp_roomControl_getStayNo() == 13) {
+ g_mEnvSeMgr.initStrongWindSe();
+ }
+ }
}
-#pragma pop
/* 800579EC-80057A04 05232C 0018+00 0/0 1/1 0/0 .text dKyw_wether_init2__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_wether_init2() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_wether_init2__Fv.s"
+void dKyw_wether_init2() {
+ g_env_light.field_0xec4 = 0;
+ g_env_light.field_0xec8 = 0;
}
-#pragma pop
/* 80057A04-80057C84 052344 0280+00 0/0 1/1 0/0 .text dKyw_wether_delete__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_wether_delete() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_wether_delete__Fv.s"
+void dKyw_wether_delete() {
+ if (g_env_light.mSunPacketEnabled) {
+ 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) {
+ delete g_env_light.mpRainPacket;
+ g_env_light.mpRainPacket = NULL;
+ }
+
+ if (g_env_light.mSnowPacketEnabled) {
+ delete g_env_light.mpSnowPacket;
+ g_env_light.mpSnowPacket = NULL;
+ g_env_light.field_0xe90 = 0;
+ }
+
+ if (g_env_light.mStarPacketEnabled) {
+ delete g_env_light.mpStarPacket;
+ g_env_light.mpStarPacket = NULL;
+ }
+
+ if (g_env_light.mHousiPacketEnabled) {
+ delete g_env_light.mpHousiPacket;
+ g_env_light.mpHousiPacket = NULL;
+ }
+
+ if (g_env_light.mCloudPacketEnabled) {
+ delete g_env_light.mpCloudPacket;
+ g_env_light.mpCloudPacket = NULL;
+ }
+
+ if (g_env_light.mOdourPacketStatus) {
+ delete g_env_light.mpOdourPacket;
+ g_env_light.mpOdourPacket = NULL;
+ }
+
+ if (g_env_light.mMudPacketEnabled) {
+ delete g_env_light.mpMudPacket;
+ g_env_light.mpMudPacket = NULL;
+ }
+
+ if (g_env_light.mEvilPacketEnabled) {
+ delete g_env_light.mpEvilPacket;
+ g_env_light.mpEvilPacket = NULL;
+ }
}
-#pragma pop
-
-/* ############################################################################################## */
-/* 803A9AC0-803A9AD4 006BE0 0014+00 2/2 0/0 0/0 .data __vt__19dKankyo_evil_Packet */
-SECTION_DATA extern void* __vt__19dKankyo_evil_Packet[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)entry__9J3DPacketFP13J3DDrawBuffer,
- (void*)draw__19dKankyo_evil_PacketFv,
- (void*)__dt__19dKankyo_evil_PacketFv,
-};
/* 80057C84-80057D08 0525C4 0084+00 1/0 0/0 0/0 .text __dt__19dKankyo_evil_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dKankyo_evil_Packet::~dKankyo_evil_Packet() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__19dKankyo_evil_PacketFv.s"
-}
-#pragma pop
-
-/* ############################################################################################## */
-/* 803A9AD4-803A9AE8 006BF4 0014+00 2/2 0/0 0/0 .data __vt__18dKankyo_mud_Packet */
-SECTION_DATA extern void* __vt__18dKankyo_mud_Packet[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)entry__9J3DPacketFP13J3DDrawBuffer,
- (void*)draw__18dKankyo_mud_PacketFv,
- (void*)__dt__18dKankyo_mud_PacketFv,
-};
+dKankyo_evil_Packet::~dKankyo_evil_Packet() {}
/* 80057D08-80057D8C 052648 0084+00 1/0 0/0 0/0 .text __dt__18dKankyo_mud_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dKankyo_mud_Packet::~dKankyo_mud_Packet() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__18dKankyo_mud_PacketFv.s"
-}
-#pragma pop
-
-/* ############################################################################################## */
-/* 803A9AE8-803A9AFC 006C08 0014+00 2/2 0/0 0/0 .data __vt__20dKankyo_odour_Packet */
-SECTION_DATA extern void* __vt__20dKankyo_odour_Packet[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)entry__9J3DPacketFP13J3DDrawBuffer,
- (void*)draw__20dKankyo_odour_PacketFv,
- (void*)__dt__20dKankyo_odour_PacketFv,
-};
+dKankyo_mud_Packet::~dKankyo_mud_Packet() {}
/* 80057D8C-80057E10 0526CC 0084+00 1/0 0/0 0/0 .text __dt__20dKankyo_odour_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dKankyo_odour_Packet::~dKankyo_odour_Packet() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__20dKankyo_odour_PacketFv.s"
-}
-#pragma pop
+dKankyo_odour_Packet::~dKankyo_odour_Packet() {}
/* ############################################################################################## */
/* 803A9AFC-803A9B10 006C1C 0014+00 2/2 0/0 0/0 .data __vt__21dKankyo_vrkumo_Packet */
@@ -1050,43 +706,11 @@ SECTION_DATA extern void* __vt__21dKankyo_vrkumo_Packet[5] = {
(void*)__dt__21dKankyo_vrkumo_PacketFv,
};
-/* 803A9B10-803A9B24 006C30 0014+00 2/2 0/0 0/0 .data __vt__20dKankyo_housi_Packet */
-SECTION_DATA extern void* __vt__20dKankyo_housi_Packet[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)entry__9J3DPacketFP13J3DDrawBuffer,
- (void*)draw__20dKankyo_housi_PacketFv,
- (void*)__dt__20dKankyo_housi_PacketFv,
-};
-
-/* 803A9B24-803A9B38 006C44 0014+00 2/2 0/0 0/0 .data __vt__20dKankyo_cloud_Packet */
-SECTION_DATA extern void* __vt__20dKankyo_cloud_Packet[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)entry__9J3DPacketFP13J3DDrawBuffer,
- (void*)draw__20dKankyo_cloud_PacketFv,
- (void*)__dt__20dKankyo_cloud_PacketFv,
-};
-
/* 80057E10-80057E94 052750 0084+00 1/0 0/0 0/0 .text __dt__20dKankyo_cloud_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dKankyo_cloud_Packet::~dKankyo_cloud_Packet() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__20dKankyo_cloud_PacketFv.s"
-}
-#pragma pop
+dKankyo_cloud_Packet::~dKankyo_cloud_Packet() {}
/* 80057E94-80057F18 0527D4 0084+00 1/0 0/0 0/0 .text __dt__20dKankyo_housi_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dKankyo_housi_Packet::~dKankyo_housi_Packet() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__20dKankyo_housi_PacketFv.s"
-}
-#pragma pop
+dKankyo_housi_Packet::~dKankyo_housi_Packet() {}
/* ############################################################################################## */
/* 803A9B38-803A9B4C 006C58 0014+00 1/1 1/1 0/0 .data __vt__19dKankyo_star_Packet */
@@ -1099,34 +723,10 @@ SECTION_DATA extern void* __vt__19dKankyo_star_Packet[5] = {
};
/* 80057F18-80057F9C 052858 0084+00 1/0 0/0 0/0 .text __dt__19dKankyo_star_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dKankyo_star_Packet::~dKankyo_star_Packet() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__19dKankyo_star_PacketFv.s"
-}
-#pragma pop
-
-/* ############################################################################################## */
-/* 803A9B4C-803A9B60 006C6C 0014+00 1/1 1/1 0/0 .data __vt__19dKankyo_snow_Packet */
-SECTION_DATA extern void* __vt__19dKankyo_snow_Packet[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)entry__9J3DPacketFP13J3DDrawBuffer,
- (void*)draw__19dKankyo_snow_PacketFv,
- (void*)__dt__19dKankyo_snow_PacketFv,
-};
+dKankyo_star_Packet::~dKankyo_star_Packet() {}
/* 80057F9C-80058020 0528DC 0084+00 1/0 0/0 0/0 .text __dt__19dKankyo_snow_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dKankyo_snow_Packet::~dKankyo_snow_Packet() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__19dKankyo_snow_PacketFv.s"
-}
-#pragma pop
+dKankyo_snow_Packet::~dKankyo_snow_Packet() {}
/* ############################################################################################## */
/* 803A9B60-803A9B74 006C80 0014+00 2/2 0/0 0/0 .data __vt__19dKankyo_rain_Packet */
@@ -1139,112 +739,44 @@ SECTION_DATA extern void* __vt__19dKankyo_rain_Packet[5] = {
};
/* 80058020-800580A4 052960 0084+00 1/0 0/0 0/0 .text __dt__19dKankyo_rain_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dKankyo_rain_Packet::~dKankyo_rain_Packet() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__19dKankyo_rain_PacketFv.s"
-}
-#pragma pop
-
-/* ############################################################################################## */
-/* 803A9B74-803A9B88 006C94 0014+00 2/2 0/0 0/0 .data __vt__22dKankyo_sunlenz_Packet */
-SECTION_DATA extern void* __vt__22dKankyo_sunlenz_Packet[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)entry__9J3DPacketFP13J3DDrawBuffer,
- (void*)draw__22dKankyo_sunlenz_PacketFv,
- (void*)__dt__22dKankyo_sunlenz_PacketFv,
-};
+dKankyo_rain_Packet::~dKankyo_rain_Packet() {}
/* 800580A4-80058128 0529E4 0084+00 1/0 0/0 0/0 .text __dt__22dKankyo_sunlenz_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dKankyo_sunlenz_Packet::~dKankyo_sunlenz_Packet() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__22dKankyo_sunlenz_PacketFv.s"
-}
-#pragma pop
-
-/* ############################################################################################## */
-/* 803A9B88-803A9BA0 006CA8 0014+04 2/2 0/0 0/0 .data __vt__18dKankyo_sun_Packet */
-SECTION_DATA extern void* __vt__18dKankyo_sun_Packet[5 + 1 /* padding */] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)entry__9J3DPacketFP13J3DDrawBuffer,
- (void*)draw__18dKankyo_sun_PacketFv,
- (void*)__dt__18dKankyo_sun_PacketFv,
- /* padding */
- NULL,
-};
+dKankyo_sunlenz_Packet::~dKankyo_sunlenz_Packet() {}
/* 80058128-800581AC 052A68 0084+00 1/0 0/0 0/0 .text __dt__18dKankyo_sun_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dKankyo_sun_Packet::~dKankyo_sun_Packet() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__18dKankyo_sun_PacketFv.s"
-}
-#pragma pop
+dKankyo_sun_Packet::~dKankyo_sun_Packet() {}
/* 800581AC-8005820C 052AEC 0060+00 0/0 1/1 0/0 .text dKyw_wether_delete2__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_wether_delete2() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_wether_delete2__Fv.s"
+void dKyw_wether_delete2() {
+ if (g_env_light.field_0xec4 != 0) {
+ delete g_env_light.mpVrkumoPacket;
+ g_env_light.mpVrkumoPacket = NULL;
+ }
}
-#pragma pop
/* 8005820C-80058290 052B4C 0084+00 1/0 0/0 0/0 .text __dt__21dKankyo_vrkumo_PacketFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dKankyo_vrkumo_Packet::~dKankyo_vrkumo_Packet() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/__dt__21dKankyo_vrkumo_PacketFv.s"
-}
-#pragma pop
+dKankyo_vrkumo_Packet::~dKankyo_vrkumo_Packet() {}
/* 80058290-800582F8 052BD0 0068+00 1/1 0/0 0/0 .text wether_move_thunder__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void wether_move_thunder() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/wether_move_thunder__Fv.s"
+static void wether_move_thunder() {
+ switch (g_env_light.field_0xed4.field_0x0) {
+ case 0:
+ if (g_env_light.field_0xed4.field_0x4 != 0) {
+ dKyr_thunder_init();
+ g_env_light.field_0xed4.field_0x0 = 1;
+ }
+ break;
+ case 1:
+ dKyr_thunder_move();
+ break;
+ }
}
-#pragma pop
/* 800582F8-80058318 052C38 0020+00 0/0 1/1 0/0 .text dKyw_wether_move__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_wether_move() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_wether_move__Fv.s"
+void dKyw_wether_move() {
+ wether_move_thunder();
}
-#pragma pop
-
-/* ############################################################################################## */
-/* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_8037A377 = "F_SP200";
-SECTION_DEAD static char const* const stringBase_8037A37F = "D_MN09";
-SECTION_DEAD static char const* const stringBase_8037A386 = "D_MN09A";
-SECTION_DEAD static char const* const stringBase_8037A38E = "F_moon.bti";
-SECTION_DEAD static char const* const stringBase_8037A399 = "F_moon_A.bti";
-SECTION_DEAD static char const* const stringBase_8037A3A6 = "F_moon_A_A00.bti";
-SECTION_DEAD static char const* const stringBase_8037A3B7 = "F_moon_A_A01.bti";
-SECTION_DEAD static char const* const stringBase_8037A3C8 = "F_moon_A_A02.bti";
-SECTION_DEAD static char const* const stringBase_8037A3D9 = "F_moon_A_A03.bti";
-SECTION_DEAD static char const* const stringBase_8037A3EA = "Always";
-#pragma pop
/* 804520E8-804520EC 0006E8 0004+00 1/1 0/0 0/0 .sdata2 @4610 */
SECTION_SDATA2 static f32 lit_4610 = 255.0f;
@@ -1253,14 +785,107 @@ SECTION_SDATA2 static f32 lit_4610 = 255.0f;
SECTION_SDATA2 static f32 lit_4611 = 1000000000.0f;
/* 80058318-80058894 052C58 057C+00 1/1 0/0 0/0 .text wether_move_sun__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void wether_move_sun() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/wether_move_sun__Fv.s"
+static void wether_move_sun() {
+ s32 sunVisible = false;
+ if (dComIfGp_checkStatus(1) && !g_env_light.field_0x12d4) {
+ roomRead_class* room = dComIfGp_getStageRoom();
+ if (room != NULL && room->field_0x0 > dComIfGp_roomControl_getStayNo()) {
+ sunVisible = dStage_roomRead_dt_c_GetVrboxswitch(
+ *room->field_0x4[dComIfGp_roomControl_getStayNo()]);
+ }
+
+ // Stage is Hero Shade arena
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP200")) {
+ sunVisible = true;
+ // Stage is Hyrule Castle or Castle Throne Room
+ } else if (!strcmp(dComIfGp_getStartStageName(), "D_MN09") ||
+ !strcmp(dComIfGp_getStartStageName(), "D_MN09A")) {
+ sunVisible = false;
+ }
+
+ switch (g_env_light.mSunPacketEnabled) {
+ case FALSE:
+ if (sunVisible && dKy_darkworld_check() != true) {
+ g_env_light.mpSunPacket = new (0x20) dKankyo_sun_Packet();
+ g_env_light.mpSunLenzPacket = new (0x20) dKankyo_sunlenz_Packet();
+ if (g_env_light.mpSunPacket != NULL && g_env_light.mpSunLenzPacket != NULL) {
+ g_env_light.mpSunPacket->mpResMoon = (u8*)dComIfG_getStageRes("F_moon.bti");
+ g_env_light.mpSunPacket->mpResMoon_A = (u8*)dComIfG_getStageRes("F_moon_A.bti");
+ g_env_light.mpSunPacket->mpResMoon_A_A00 =
+ (u8*)dComIfG_getStageRes("F_moon_A_A00.bti");
+ g_env_light.mpSunPacket->mpResMoon_A_A01 =
+ (u8*)dComIfG_getStageRes("F_moon_A_A01.bti");
+ g_env_light.mpSunPacket->mpResMoon_A_A02 =
+ (u8*)dComIfG_getStageRes("F_moon_A_A02.bti");
+ g_env_light.mpSunPacket->mpResMoon_A_A03 =
+ (u8*)dComIfG_getStageRes("F_moon_A_A03.bti");
+
+ if (g_env_light.mpSunPacket->mpResMoon == NULL) {
+ g_env_light.mpSunPacket->mpResMoon =
+ (u8*)dComIfG_getObjectRes("Always", 0x56);
+ g_env_light.mpSunPacket->mpResMoon_A =
+ (u8*)dComIfG_getObjectRes("Always", 0x56);
+ g_env_light.mpSunPacket->mpResMoon_A_A00 =
+ (u8*)dComIfG_getObjectRes("Always", 0x56);
+ g_env_light.mpSunPacket->mpResMoon_A_A01 =
+ (u8*)dComIfG_getObjectRes("Always", 0x56);
+ g_env_light.mpSunPacket->mpResMoon_A_A02 =
+ (u8*)dComIfG_getObjectRes("Always", 0x56);
+ g_env_light.mpSunPacket->mpResMoon_A_A03 =
+ (u8*)dComIfG_getObjectRes("Always", 0x56);
+ }
+ g_env_light.mpSunPacket->field_0x28 = 0;
+ g_env_light.mpSunPacket->field_0x29 = 0;
+ f32 tmp0 = FLOAT_LABEL(lit_4378);
+ g_env_light.mpSunPacket->field_0x5c = tmp0;
+ g_env_light.mpSunPacket->field_0x60 = tmp0;
+ g_env_light.mpSunPacket->field_0x64 = tmp0;
+ g_env_light.mpSunPacket->field_0x68 = tmp0;
+
+ if (g_env_light.mDaytime < lit_4610) {
+ g_env_light.mpSunPacket->field_0x6c = lit_4379;
+ } else {
+ g_env_light.mpSunPacket->field_0x6c = tmp0;
+ }
+ g_env_light.mpSunPacket->field_0x44 = 0;
+ g_env_light.mpSunPacket->field_0x48 = 0;
+ g_env_light.mpSunPacket->field_0x4c = 0;
+ g_env_light.mpSunPacket->field_0x50 = 0;
+ g_env_light.mpSunPacket->field_0x54 = 0;
+ g_env_light.mpSunPacket->field_0x58 = 0;
+
+ g_env_light.mpSunLenzPacket->mpResBall =
+ (u8*)dComIfG_getObjectRes("Always", 0x4A);
+ g_env_light.mpSunLenzPacket->mpResRing_A =
+ (u8*)dComIfG_getObjectRes("Always", 0x57);
+ g_env_light.mpSunLenzPacket->mpResLenz =
+ (u8*)dComIfG_getObjectRes("Always", 0x5C);
+ g_env_light.mpSunLenzPacket->field_0x8c = lit_4611;
+ 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;
+ dKyr_sun_move();
+ dKyr_lenzflare_move();
+ g_env_light.mSunPacketEnabled = true;
+ }
+ }
+ break;
+ case TRUE:
+ if (!sunVisible) {
+ g_env_light.mSunPacketEnabled = false;
+ delete g_env_light.mpSunPacket;
+ delete g_env_light.mpSunLenzPacket;
+ g_env_light.mpSunPacket = NULL;
+ g_env_light.mpSunLenzPacket = NULL;
+ } else {
+ dKyr_sun_move();
+ dKyr_lenzflare_move();
+ }
+ break;
+ }
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -1279,6 +904,50 @@ SECTION_SDATA2 static f32 lit_4669 = 125.0f;
SECTION_SDATA2 static f64 lit_4671 = 4503601774854144.0 /* cast s32 to float */;
/* 80058894-80058B00 0531D4 026C+00 1/1 0/0 0/0 .text wether_move_rain__Fv */
+// matches with literals
+#ifdef NONMATCHING
+static void wether_move_rain() {
+ switch (g_env_light.mRainPacketEnabled) {
+ case FALSE:
+ if (g_env_light.mRainCount > 3) {
+ g_env_light.mpRainPacket = new (32) dKankyo_rain_Packet();
+
+ if (g_env_light.mpRainPacket != NULL) {
+ dKyr_rain_init();
+ dKyr_rain_move();
+ g_env_light.mRainPacketEnabled = 1;
+
+ if (g_env_light.mRainCount != 250) {
+ mDoAud_seStart(JA_SE_ATM_RAIN_START, NULL, 0, 0);
+ }
+ }
+ }
+ break;
+ case TRUE:
+ camera_class* cam = dComIfGp_getCamera(0);
+ dKyr_rain_move();
+
+ if (g_env_light.mSnowCount == 0 && cam != NULL) {
+ // Stage is not Fishing Pond
+ if (strcmp(dComIfGp_getStartStageName(), "R_SP127") || cam->field_0xd8.y > 0.0f) {
+ if (g_env_light.mRainCount < 125.0f) {
+ mDoAud_rainPlay(FALSE);
+ } else {
+ mDoAud_rainPlay(TRUE);
+ }
+ }
+ }
+
+ if (g_env_light.mRainCount <= 3) {
+ g_env_light.mRainPacketEnabled = 0;
+ mDoAud_seStart(JA_SE_ATM_RAIN_END, NULL, 0, 0);
+ delete g_env_light.mpRainPacket;
+ g_env_light.mpRainPacket = NULL;
+ }
+ break;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1287,16 +956,25 @@ static asm void wether_move_rain() {
#include "asm/d/kankyo/d_kankyo_wether/wether_move_rain__Fv.s"
}
#pragma pop
+#endif
/* 80058B00-80058B8C 053440 008C+00 1/1 0/0 0/0 .text wether_move_snow__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void wether_move_snow() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/wether_move_snow__Fv.s"
+static void wether_move_snow() {
+ switch (g_env_light.mSnowPacketEnabled) {
+ 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;
+ }
+ }
+ break;
+ case TRUE:
+ dKyr_snow_move();
+ break;
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -1344,59 +1022,260 @@ SECTION_SDATA2 static f32 lit_4771 = 1200.0f;
SECTION_SDATA2 static f32 lit_4772 = 500.0f;
/* 80058B8C-80058F18 0534CC 038C+00 1/1 0/0 0/0 .text wether_move_star__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void wether_move_star() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/wether_move_star__Fv.s"
+static void wether_move_star() {
+ s32 starsVisible = false;
+ // Stage is Hyrule Castle or Castle Throne Room
+ if (!strcmp(dComIfGp_getStartStageName(), "D_MN09") ||
+ !strcmp(dComIfGp_getStartStageName(), "D_MN09A")) {
+ return;
+ } else {
+ // Stage is Hero Shade arena
+ if ((dComIfGp_checkStatus(1) && !g_env_light.field_0x12d4) ||
+ !strcmp(dComIfGp_getStartStageName(), "F_SP200")) {
+ roomRead_class* room = dComIfGp_getStageRoom();
+ if (room != NULL && room->field_0x0 > dComIfGp_roomControl_getStayNo()) {
+ starsVisible = dStage_roomRead_dt_c_GetVrboxswitch(
+ *room->field_0x4[dComIfGp_roomControl_getStayNo()]);
+ }
+
+ // Stage is Hero Shade arena
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP200")) {
+ starsVisible = true;
+ }
+
+ if (starsVisible && dKy_darkworld_check() != true) {
+ f32 density;
+ f32 time = g_env_light.getDaytime();
+ if (time >= lit_4761 || time < lit_4762) {
+ density = lit_4379;
+ } else if (time > lit_4763) {
+ density = lit_4379 - lit_4764 * (lit_4761 - time);
+ } else {
+ if (time < lit_4765) {
+ density = lit_4766 * (lit_4765 - time);
+ } else {
+ density = FLOAT_LABEL(lit_4378);
+ }
+ }
+
+ if (g_env_light.field_0x12c8 != 0) {
+ density = FLOAT_LABEL(lit_4378);
+ }
+
+ if (g_env_light.field_0x12c3 != 0 && g_env_light.field_0x11dc > lit_4767) {
+ density = FLOAT_LABEL(lit_4378);
+ }
+
+ // Stage is Hero Shade arena
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP200")) {
+ density = lit_4379;
+ }
+
+ cLib_addCalc(&g_env_light.mStarDensity, density, lit_4768, lit_4769, lit_4770);
+ g_env_light.mStarCount = (s16)(lit_4771 * g_env_light.mStarDensity);
+
+ // Stage is Hyrule Field or Outside Castle Town or Hidden Village
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") ||
+ !strcmp(dComIfGp_getStartStageName(), "F_SP122") ||
+ !strcmp(dComIfGp_getStartStageName(), "F_SP128")) {
+ g_env_light.mStarCount = (s16)(lit_4772 * g_env_light.mStarDensity);
+ }
+
+ switch (g_env_light.mStarPacketEnabled) {
+ case FALSE:
+ if (g_env_light.mStarCount != 0) {
+ dKyr_star_init();
+ dKyr_shstar_init();
+
+ if (g_env_light.mpStarPacket != NULL) {
+ dKyr_star_move();
+ dKyr_shstar_move();
+ g_env_light.mStarPacketEnabled = true;
+ }
+ }
+ break;
+ case TRUE:
+ dKyr_star_move();
+ dKyr_shstar_move();
+
+ if (g_env_light.mStarCount == 0) {
+ g_env_light.mStarPacketEnabled = false;
+
+ delete g_env_light.mpStarPacket;
+ g_env_light.mpStarPacket = NULL;
+ }
+ break;
+ }
+ }
+ }
+ }
}
-#pragma pop
-
-/* ############################################################################################## */
-/* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_8037A411 = "D_MN08";
-SECTION_DEAD static char const* const stringBase_8037A418 = "D_MN08A";
-SECTION_DEAD static char const* const stringBase_8037A420 = "D_MN08B";
-SECTION_DEAD static char const* const stringBase_8037A428 = "D_MN08C";
-SECTION_DEAD static char const* const stringBase_8037A430 = "F_SP115";
-SECTION_DEAD static char const* const stringBase_8037A438 = "F_SP108";
-SECTION_DEAD static char const* const stringBase_8037A440 = "F_SP116";
-SECTION_DEAD static char const* const stringBase_8037A448 = "momiji64s3tc.bti";
-SECTION_DEAD static char const* const stringBase_8037A459 = "sakura32ia4.bti";
-#pragma pop
/* 80058F18-800593DC 053858 04C4+00 1/1 0/0 0/0 .text wether_move_housi__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void wether_move_housi() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/wether_move_housi__Fv.s"
+static void wether_move_housi() {
+ // Stage is Palace of Twilight or Zant Throne Room, or Phantom Zant arena
+ // Room is not Entrance or Boss Key room
+ if ((!strcmp(dComIfGp_getStartStageName(), "D_MN08") && dComIfGp_roomControl_getStayNo() != 0 &&
+ dComIfGp_roomControl_getStayNo() != 11) ||
+ (!strcmp(dComIfGp_getStartStageName(), "D_MN08A") ||
+ !strcmp(dComIfGp_getStartStageName(), "D_MN08B") ||
+ !strcmp(dComIfGp_getStartStageName(), "D_MN08C"))) {
+ return;
+ }
+
+ // Stage is darkworld or Stage is Lake Hylia and Room is Lanayru Spring
+ if (dKy_darkworld_check() == true ||
+ (!strcmp(dComIfGp_getStartStageName(), "F_SP115") &&
+ dComIfGp_roomControl_getStayNo() == 1 && dComIfGp_getStartStageLayer() == 9)) {
+ if (g_env_light.field_0x12d2 != 0) {
+ g_env_light.field_0xea9 = 0;
+ g_env_light.field_0xeac = 200;
+
+ // Stage is Faron Woods and Room is Faron Spring or
+ // Stage is Castle Town and Room is Castle Town Center or
+ // Stage is Faron Woods and Room is South Faron or
+ // Stage is Lake Hylia
+ if ((!strcmp(dComIfGp_getStartStageName(), "F_SP108") &&
+ dComIfGp_getStartStageRoomNo() == 1 && dComIfGp_getStartStageLayer() == 13) ||
+ (!strcmp(dComIfGp_getStartStageName(), "F_SP116") &&
+ dComIfGp_getStartStageRoomNo() == 0 && dComIfGp_getStartStageLayer() == 8) ||
+ (!strcmp(dComIfGp_getStartStageName(), "F_SP108") &&
+ dComIfGp_getStartStageRoomNo() == 0 && dComIfGp_getStartStageLayer() == 9) ||
+ (!strcmp(dComIfGp_getStartStageName(), "F_SP115") &&
+ dComIfGp_getStartStageLayer() == 9)) {
+ g_env_light.field_0xeac = 0;
+ }
+ }
+ }
+
+ switch (g_env_light.mHousiPacketEnabled) {
+ case FALSE:
+ if (g_env_light.field_0xeac != 0) {
+ g_env_light.mpHousiPacket = new (32) dKankyo_housi_Packet();
+
+ if (g_env_light.mpHousiPacket != NULL) {
+ if (dKy_darkworld_check() == true) {
+ g_env_light.mpHousiPacket->mpResTex = (u8*)dComIfG_getObjectRes("Always", 0x5E);
+ } else {
+ if (g_env_light.field_0xea9 == 2) {
+ if (g_env_light.field_0x12fe == 3) {
+ g_env_light.mpHousiPacket->mpResTex =
+ (u8*)dComIfG_getStageRes("momiji64s3tc.bti");
+ } else {
+ g_env_light.mpHousiPacket->mpResTex =
+ (u8*)dComIfG_getStageRes("sakura32ia4.bti");
+ }
+
+ if (g_env_light.mpHousiPacket->mpResTex == NULL) {
+ g_env_light.mpHousiPacket->mpResTex =
+ (u8*)dComIfG_getObjectRes("Always", 0x55);
+ }
+ } else if (g_env_light.field_0xea9 == 0) {
+ g_env_light.mpHousiPacket->mpResTex =
+ (u8*)dComIfG_getObjectRes("Always", 0x55);
+ } else {
+ g_env_light.mpHousiPacket->mpResTex =
+ (u8*)dComIfG_getObjectRes("Always", 0x56);
+ }
+ }
+
+ f32 tmp0 = FLOAT_LABEL(lit_4378);
+ 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;
+ }
+ dKyr_housi_move();
+ g_env_light.mHousiPacketEnabled = true;
+ }
+ }
+ break;
+ case TRUE:
+ if (g_env_light.field_0xeac == 0 &&
+ g_env_light.mpHousiPacket->field_0x5de8 <= FLOAT_LABEL(lit_4378)) {
+ g_env_light.mHousiPacketEnabled = 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;
+ }
+ }
+ break;
+ }
}
-#pragma pop
/* 800593DC-80059580 053D1C 01A4+00 1/1 0/0 0/0 .text wether_move_odour__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void wether_move_odour() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/wether_move_odour__Fv.s"
+static void wether_move_odour() {
+ switch (g_env_light.mOdourPacketStatus) {
+ case 0:
+ if (g_env_light.field_0xf21 != 0) {
+ g_env_light.mpOdourPacket = new (32) dKankyo_odour_Packet();
+
+ if (g_env_light.mpOdourPacket != NULL) {
+ g_env_light.mpOdourPacket->mpResTex = (u8*)dComIfG_getObjectRes("Always", 0x53);
+ dKyr_odour_init();
+ dKyr_odour_move();
+ g_env_light.mOdourPacketStatus = 1;
+ }
+ }
+ break;
+ case 1:
+ if (g_env_light.field_0xf21 == 0) {
+ g_env_light.mOdourPacketStatus = 0;
+ if (g_env_light.mpOdourPacket != NULL) {
+ delete g_env_light.mpOdourPacket;
+ g_env_light.mpOdourPacket = NULL;
+ }
+ } else {
+ dKyr_odour_move();
+ }
+ break;
+ case 2:
+ g_env_light.field_0xf21 = 0;
+ g_env_light.mOdourPacketStatus = 0;
+ delete g_env_light.mpOdourPacket;
+ g_env_light.mpOdourPacket = NULL;
+ break;
+ }
}
-#pragma pop
/* 80059580-80059728 053EC0 01A8+00 1/1 0/0 0/0 .text wether_move_moya__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void wether_move_moya() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/wether_move_moya__Fv.s"
+static void wether_move_moya() {
+ switch (g_env_light.mCloudPacketEnabled) {
+ case 0:
+ if (g_env_light.field_0xeb8 != 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->field_0x14 = 0;
+ cloud_shadow_move();
+ g_env_light.mCloudPacketEnabled++;
+ }
+ }
+ break;
+ case 1:
+ if (g_env_light.field_0xeb5 == 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;
+
+ delete g_env_light.mpCloudPacket;
+ g_env_light.mpCloudPacket = NULL;
+ }
+ break;
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -1466,71 +1345,139 @@ static asm void wether_move_vrkumo() {
#pragma pop
/* 80059E38-80059F74 054778 013C+00 1/1 0/0 0/0 .text wether_move_mud__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void wether_move_mud() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/wether_move_mud__Fv.s"
+static void wether_move_mud() {
+ switch (g_env_light.mMudPacketEnabled) {
+ case 0:
+ if (g_env_light.field_0x1048 != 0) {
+ g_env_light.mpMudPacket = new (32) dKankyo_mud_Packet();
+
+ if (g_env_light.mpMudPacket != NULL) {
+ dKyr_mud_init();
+ dKyr_mud_move();
+ g_env_light.mMudPacketEnabled++;
+ }
+ }
+ break;
+ case 1:
+ dKyr_mud_move();
+
+ if (g_env_light.field_0x1048 == 0 && g_env_light.mpMudPacket->field_0x10 == 0) {
+ g_env_light.mMudPacketEnabled = 0;
+
+ delete g_env_light.mpMudPacket;
+ g_env_light.mpMudPacket = NULL;
+ }
+ break;
+ }
}
-#pragma pop
/* 80059F74-8005A0B8 0548B4 0144+00 1/1 0/0 0/0 .text wether_move_evil__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void wether_move_evil() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/wether_move_evil__Fv.s"
+static void wether_move_evil() {
+ switch (g_env_light.mEvilPacketEnabled & 0xF) {
+ case 0:
+ if (g_env_light.field_0x1054 != 0) {
+ g_env_light.mpEvilPacket = new (32) dKankyo_evil_Packet();
+
+ if (g_env_light.mpEvilPacket != NULL) {
+ dKyr_evil_init();
+ dKyr_evil_move();
+ g_env_light.mEvilPacketEnabled++;
+ }
+ }
+ break;
+ case 1:
+ dKyr_evil_move();
+
+ if (g_env_light.field_0x1054 == 0 && g_env_light.mpEvilPacket->field_0x10 == 0) {
+ g_env_light.mEvilPacketEnabled = 0;
+
+ delete g_env_light.mpEvilPacket;
+ g_env_light.mpEvilPacket = NULL;
+ }
+ break;
+ }
}
-#pragma pop
-
-/* ############################################################################################## */
-/* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_8037A4AE = "Name";
-#pragma pop
/* 8005A0B8-8005A154 0549F8 009C+00 0/0 1/1 0/0 .text dKyw_wether_move_draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_wether_move_draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_wether_move_draw__Fv.s"
+void dKyw_wether_move_draw() {
+ g_env_light.field_0x1288 = 0;
+
+ if (strcmp(dComIfGp_getStartStageName(), "Name")) {
+ wether_move_sun();
+ wether_move_rain();
+ wether_move_snow();
+ }
+ wether_move_star();
+
+ if (strcmp(dComIfGp_getStartStageName(), "Name")) {
+ wether_move_housi();
+ wether_move_moya();
+ wether_move_mud();
+ wether_move_evil();
+ wether_move_odour();
+ }
}
-#pragma pop
/* 8005A154-8005A174 054A94 0020+00 0/0 1/1 0/0 .text dKyw_wether_move_draw2__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_wether_move_draw2() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_wether_move_draw2__Fv.s"
+void dKyw_wether_move_draw2() {
+ wether_move_vrkumo();
}
-#pragma pop
/* 8005A174-8005A304 054AB4 0190+00 0/0 1/1 0/0 .text dKyw_wether_draw__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_wether_draw() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_wether_draw__Fv.s"
+void dKyw_wether_draw() {
+ if (strcmp(dComIfGp_getStartStageName(), "Name") && g_env_light.mCloudPacketEnabled != 0) {
+ dKyw_Cloud_Draw();
+ }
+
+ if (strcmp(dComIfGp_getStartStageName(), "Name") && g_env_light.mSunPacketEnabled) {
+ stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
+
+ if (dStage_stagInfo_GetArg0(stag_info) != 0) {
+ dKyw_Sun_Draw();
+ dKyw_Sunlenz_Draw();
+ }
+ }
+
+ if (g_env_light.mStarPacketEnabled) {
+ dKyw_Star_Draw();
+ dKyw_shstar_Draw();
+ }
+
+ if (strcmp(dComIfGp_getStartStageName(), "Name")) {
+ if (g_env_light.mRainPacketEnabled) {
+ dKyw_Rain_Draw();
+ }
+
+ if (g_env_light.mSnowPacketEnabled) {
+ dKyw_Snow_Draw();
+ }
+
+ if (g_env_light.mHousiPacketEnabled) {
+ dKyw_Housi_Draw();
+ }
+
+ if (g_env_light.mOdourPacketStatus != 0) {
+ dKyw_Odour_Draw();
+ }
+
+ if (g_env_light.mMudPacketEnabled != 0) {
+ dKyw_mud_Draw();
+ }
+
+ if (g_env_light.mEvilPacketEnabled != 0) {
+ dKyw_evil_Draw();
+ }
+
+ dKy_undwater_filter_draw();
+ }
}
-#pragma pop
/* 8005A304-8005A340 054C44 003C+00 0/0 1/1 0/0 .text dKyw_wether_draw2__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_wether_draw2() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_wether_draw2__Fv.s"
+void dKyw_wether_draw2() {
+ if (g_env_light.field_0xec4 != 0 && g_env_light.field_0xec4 < 99) {
+ dKyw_Vrkumo_Draw();
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -1558,6 +1505,49 @@ SECTION_SDATA2 static f32 lit_5364[1 + 1 /* padding */] = {
};
/* 8005A340-8005A57C 054C80 023C+00 0/0 1/1 0/0 .text dKyw_wether_proc__Fv */
+// small branch issues
+#ifdef NONMATCHING
+void dKyw_wether_proc() {
+ // Stage is Faron Woods or Fishing Pond or Hyrule Field
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP108") ||
+ !strcmp(dComIfGp_getStartStageName(), "F_SP127") ||
+ (!strcmp(dComIfGp_getStartStageName(), "F_SP121") &&
+ FLOAT_LABEL(lit_4378) != g_env_light.field_0x11d8)) {
+ if (!dKy_darkworld_check()) {
+ // Stage is Hyrule Field
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") || g_env_light.mDaytime >= 75.0f ||
+ g_env_light.mDaytime <= 120.0f) {
+ // Stage is Hyrule Field
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP121") &&
+ 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;
+ } 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;
+ }
+ }
+ }
+ }
+ }
+
+ // Stage is Fishing Pond
+ 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;
+ } else {
+ g_env_light.field_0xeac = 30;
+ }
+ g_env_light.field_0xea9 = 2;
+ }
+ squal_proc();
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1566,16 +1556,23 @@ asm void dKyw_wether_proc() {
#include "asm/d/kankyo/d_kankyo_wether/dKyw_wether_proc__Fv.s"
}
#pragma pop
+#endif
/* 8005A57C-8005A5C0 054EBC 0044+00 1/1 0/0 0/0 .text dKyw_wind_init__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_wind_init() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_wind_init__Fv.s"
+static void dKyw_wind_init() {
+ g_env_light.mWind.vec.x = lit_4668;
+ f32 tmp_0 = FLOAT_LABEL(lit_4378);
+ g_env_light.mWind.vec.y = tmp_0;
+ g_env_light.mWind.vec.z = tmp_0;
+ g_env_light.mWind.pow = tmp_0;
+ g_env_light.field_0xe6c = 0;
+ g_env_light.field_0xe64 = 0;
+ 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;
}
-#pragma pop
/* ############################################################################################## */
/* 80452178-80452180 000778 0008+00 3/3 0/0 0/0 .sdata2 @5524 */
@@ -1615,34 +1612,20 @@ asm void dKyw_wind_set() {
#pragma pop
/* 8005AAE0-8005AAF0 055420 0010+00 1/1 6/6 7/7 .text dKyw_get_wind_vec__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_get_wind_vec() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_get_wind_vec__Fv.s"
+cXyz& dKyw_get_wind_vec() {
+ return g_env_light.mWind.vec;
}
-#pragma pop
/* 8005AAF0-8005AB00 055430 0010+00 1/1 6/6 8/8 .text dKyw_get_wind_pow__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_get_wind_pow() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_get_wind_pow__Fv.s"
+f32 dKyw_get_wind_pow() {
+ return g_env_light.mWind.pow;
}
-#pragma pop
/* 8005AB00-8005AB64 055440 0064+00 0/0 8/8 3/3 .text dKyw_get_wind_vecpow__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_get_wind_vecpow() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_get_wind_vecpow__Fv.s"
+cXyz dKyw_get_wind_vecpow() {
+ cXyz vec = g_env_light.mWind.vec * g_env_light.mWind.pow;
+ return vec;
}
-#pragma pop
/* 8005AB64-8005AC30 0554A4 00CC+00 0/0 0/0 1/1 .text dKyw_plight_collision_set__FP4cXyzssfffff */
#pragma push
@@ -1670,54 +1653,52 @@ static asm void squal_proc() {
#pragma pop
/* 8005AD44-8005AD98 055684 0054+00 1/1 0/0 0/0 .text dKyw_pntwind_init__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_pntwind_init() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_pntwind_init__Fv.s"
+static void dKyw_pntwind_init() {
+ for (int i = 0; i < 30; i++) {
+ g_env_light.mPntWind[i] = NULL;
+ }
+
+ for (int i = 0; i < 5; i++) {
+ g_env_light.field_0x848[i].field_0x0[0] = 0;
+ }
}
-#pragma pop
/* 8005AD98-8005ADFC 0556D8 0064+00 2/2 0/0 0/0 .text pntwind_set__FP14WIND_INFLUENCE */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void pntwind_set(WIND_INFLUENCE* param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/pntwind_set__FP14WIND_INFLUENCE.s"
+static void pntwind_set(WIND_INFLUENCE* pntwind) {
+ int i = 0;
+ for (; i < 30; i++) {
+ if (g_env_light.mPntWind[i] == NULL) {
+ g_env_light.mPntWind[i] = pntwind;
+ g_env_light.mPntWind[i]->field_0x24 = i;
+ break;
+ }
+ }
+
+ if (i >= 30) {
+ pntwind->field_0x24 = 9999;
+ }
}
-#pragma pop
/* 8005ADFC-8005AE28 05573C 002C+00 0/0 0/0 5/5 .text dKyw_pntwind_set__FP14WIND_INFLUENCE */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_pntwind_set(WIND_INFLUENCE* param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_pntwind_set__FP14WIND_INFLUENCE.s"
+void dKyw_pntwind_set(WIND_INFLUENCE* pntwind) {
+ pntwind->field_0x28 = 0;
+ pntwind->field_0x29 = 0;
+ pntwind_set(pntwind);
}
-#pragma pop
/* 8005AE28-8005AE58 055768 0030+00 1/1 0/0 0/0 .text dKyw_pntlight_set__FP14WIND_INFLUENCE */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_pntlight_set(WIND_INFLUENCE* param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_pntlight_set__FP14WIND_INFLUENCE.s"
+static void dKyw_pntlight_set(WIND_INFLUENCE* pntwind) {
+ pntwind->field_0x28 = 0;
+ pntwind->field_0x29 = 1;
+ pntwind_set(pntwind);
}
-#pragma pop
/* 8005AE58-8005AE90 055798 0038+00 1/1 0/0 5/5 .text dKyw_pntwind_cut__FP14WIND_INFLUENCE */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_pntwind_cut(WIND_INFLUENCE* param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_pntwind_cut__FP14WIND_INFLUENCE.s"
+void dKyw_pntwind_cut(WIND_INFLUENCE* pntwind_cut) {
+ if (pntwind_cut != NULL && pntwind_cut->field_0x24 >= 0 && pntwind_cut->field_0x24 < 30) {
+ g_env_light.mPntWind[pntwind_cut->field_0x24] = NULL;
+ }
}
-#pragma pop
/* 8005AE90-8005B23C 0557D0 03AC+00 2/2 0/0 0/0 .text pntwind_get_info__FP4cXyzP4cXyzPfUc
*/
@@ -1731,27 +1712,28 @@ static asm void pntwind_get_info(cXyz* param_0, cXyz* param_1, f32* param_2, u8
#pragma pop
/* 8005B23C-8005B260 055B7C 0024+00 3/3 0/0 0/0 .text dKyw_pntwind_get_info__FP4cXyzP4cXyzPf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void dKyw_pntwind_get_info(cXyz* param_0, cXyz* param_1, f32* param_2) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_pntwind_get_info__FP4cXyzP4cXyzPf.s"
+static void dKyw_pntwind_get_info(cXyz* param_0, cXyz* param_1, f32* param_2) {
+ pntwind_get_info(param_0, param_1, param_2, 0);
}
-#pragma pop
/* 8005B260-8005B284 055BA0 0024+00 0/0 0/0 3/3 .text
* dKyw_pntlight_collision_get_info__FP4cXyzP4cXyzPf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_pntlight_collision_get_info(cXyz* param_0, cXyz* param_1, f32* param_2) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_pntlight_collision_get_info__FP4cXyzP4cXyzPf.s"
+void dKyw_pntlight_collision_get_info(cXyz* param_0, cXyz* param_1, f32* param_2) {
+ pntwind_get_info(param_0, param_1, param_2, 1);
}
-#pragma pop
/* 8005B284-8005B2F8 055BC4 0074+00 0/0 1/1 0/0 .text dKyw_pntwind_get_vecpow__FP4cXyz */
+// missing mr instruction
+#ifdef NONMATCHING
+void dKyw_pntwind_get_vecpow(cXyz* out_vec) {
+ f32 pow;
+ cXyz vec;
+
+ dKyw_pntwind_get_info(out_vec, &vec, &pow);
+ vec = vec * pow;
+ *out_vec = vec;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1760,6 +1742,7 @@ asm void dKyw_pntwind_get_vecpow(cXyz* param_0) {
#include "asm/d/kankyo/d_kankyo_wether/dKyw_pntwind_get_vecpow__FP4cXyz.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 804521A8-804521B0 0007A8 0004+04 2/2 0/0 0/0 .sdata2 @5855 */
@@ -1780,6 +1763,23 @@ asm void dKyw_get_AllWind_vec(cXyz* param_0, cXyz* param_1, f32* param_2) {
#pragma pop
/* 8005B530-8005B60C 055E70 00DC+00 0/0 0/0 5/5 .text dKyw_get_AllWind_vecpow__FP4cXyz */
+// missing mr instruction
+#ifdef NONMATCHING
+void dKyw_get_AllWind_vecpow(cXyz* param_0) {
+ f32 sp8;
+ cXyz spC;
+ cXyz sp18;
+ cXyz sp24;
+ cXyz sp30;
+
+ dKyw_pntwind_get_info(param_0, &sp30, &sp8);
+ sp18 = g_env_light.mWind.vec * (g_env_light.mWind.pow * (1.0f - sp8));
+ sp24 = sp30 * (5.0f * sp8);
+ spC = sp18 + sp24;
+
+ *param_0 = spC;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1788,45 +1788,29 @@ asm void dKyw_get_AllWind_vecpow(cXyz* param_0) {
#include "asm/d/kankyo/d_kankyo_wether/dKyw_get_AllWind_vecpow__FP4cXyz.s"
}
#pragma pop
+#endif
/* 8005B60C-8005B61C 055F4C 0010+00 0/0 0/0 5/5 .text dKyw_custom_windpower__Ff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_custom_windpower(f32 param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_custom_windpower__Ff.s"
+void dKyw_custom_windpower(f32 pow) {
+ g_env_light.custom_windpower = pow;
}
-#pragma pop
/* 8005B61C-8005B638 055F5C 001C+00 0/0 0/0 6/6 .text dKyw_evt_wind_set__Fss */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_evt_wind_set(s16 param_0, s16 param_1) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_evt_wind_set__Fss.s"
+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;
}
-#pragma pop
/* 8005B638-8005B64C 055F78 0014+00 0/0 0/0 3/3 .text dKyw_evt_wind_set_go__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_evt_wind_set_go() {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_evt_wind_set_go__Fv.s"
+void dKyw_evt_wind_set_go() {
+ g_env_light.field_0xe6d = 1;
}
-#pragma pop
/* 8005B64C-8005B660 055F8C 0014+00 0/0 1/1 5/5 .text dKyw_rain_set__Fi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dKyw_rain_set(int param_0) {
- nofralloc
-#include "asm/d/kankyo/d_kankyo_wether/dKyw_rain_set__Fi.s"
+void dKyw_rain_set(int count) {
+ g_env_light.mRainCount = count;
+ g_env_light.field_0x129c = count;
}
-#pragma pop
/* 8037A368-8037A368 0069C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/map/d_map_path.cpp b/src/d/map/d_map_path.cpp
index ab7b736490..779a93cd3e 100644
--- a/src/d/map/d_map_path.cpp
+++ b/src/d/map/d_map_path.cpp
@@ -17,14 +17,13 @@ struct dRes_control_c {
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
};
-
struct dMpath_n {
struct dTexObjAggregate_c {
/* 8003C85C */ void create();
/* 8003C8F4 */ void remove();
- /* 8003D740 */ ~dTexObjAggregate_c() {remove();};
+ /* 8003D740 */ ~dTexObjAggregate_c() { remove(); };
inline dTexObjAggregate_c() {
- for(int i = 0;i<7;i++) {
+ for (int i = 0; i < 7; i++) {
mTexObjs[i] = NULL;
}
}
@@ -34,7 +33,7 @@ struct dMpath_n {
static dTexObjAggregate_c m_texObjAgg;
};
-STATIC_ASSERT(sizeof(dMpath_n::dTexObjAggregate_c)==28);
+STATIC_ASSERT(sizeof(dMpath_n::dTexObjAggregate_c) == 28);
//
// Forward References:
@@ -245,42 +244,43 @@ asm void dRenderingFDAmap_c::setTevSettingIntensityTextureToCI() const {
*/
void dRenderingFDAmap_c::drawBack() const {
GXClearVtxDesc();
- GXSetVtxDesc(GX_VA_POS,GX_DIRECT);
- GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_POS,GX_CLR_RGBA,GX_F32,0);
+ GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_F32, 0);
GXColor* colorPtr = getBackColor();
- GXSetTevColor(GX_TEVREG0,*colorPtr);
- GXBegin(GX_QUADS,GX_VTXFMT0,4);
- GXPosition3f32(-field_0x8,-field_0xc,0);
- GXPosition3f32(field_0x8,-field_0xc,0);
- GXPosition3f32(field_0x8,field_0xc,0);
- GXPosition3f32(-field_0x8,field_0xc,0);
+ GXSetTevColor(GX_TEVREG0, *colorPtr);
+ GXBegin(GX_QUADS, GX_VTXFMT0, 4);
+ GXPosition3f32(-field_0x8, -field_0xc, 0);
+ GXPosition3f32(field_0x8, -field_0xc, 0);
+ GXPosition3f32(field_0x8, field_0xc, 0);
+ GXPosition3f32(-field_0x8, field_0xc, 0);
GXEnd();
}
/* 8003D188-8003D320 037AC8 0198+00 1/0 8/0 0/0 .text preRenderingMap__18dRenderingFDAmap_cFv */
void dRenderingFDAmap_c::preRenderingMap() {
- GXSetViewport(0.0f,0.0f,field_0x1c,field_0x1e,0.0f,1.0f);
- GXSetScissor(0,0,field_0x1c,field_0x1e);
+ GXSetViewport(0.0f, 0.0f, field_0x1c, field_0x1e, 0.0f, 1.0f);
+ GXSetScissor(0, 0, field_0x1c, field_0x1e);
GXSetNumChans(1);
GXSetNumTevStages(1);
- GXSetChanCtrl(GX_COLOR0A0,GX_FALSE,GX_SRC_REG,GX_SRC_REG,GX_LIGHT_NULL,GX_DF_NONE,GX_AF_NONE);
- GXSetAlphaCompare(GX_ALWAYS,0,GX_AOP_OR,GX_ALWAYS,0);
+ GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE,
+ GX_AF_NONE);
+ GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
GXSetZCompLoc(GX_TRUE);
- GXSetZMode(GX_FALSE,GX_ALWAYS,GX_FALSE);
- GXSetBlendMode(GX_BM_NONE,GX_BL_SRC_ALPHA,GX_BL_INV_SRC_ALPHA,GX_LO_CLEAR);
+ GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE);
+ GXSetBlendMode(GX_BM_NONE, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_CLEAR);
GXColor color = g_clearColor;
- GXSetFog(GX_FOG_NONE,0.0f,0.0f,0.0f,0.0f,color);
+ GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, color);
GXSetCullMode(GX_CULL_NONE);
GXSetDither(GX_FALSE);
GXSetNumIndStages(0);
GXSetClipMode(GX_FALSE);
setTevSettingNonTextureDirectColor();
- float right = field_0x8*0.5f;
- float top = field_0xc*0.5f;
+ float right = field_0x8 * 0.5f;
+ float top = field_0xc * 0.5f;
Mtx44 matrix;
- C_MTXOrtho(matrix,top,-top,-right,right,0.0f,10000.0f);
- GXSetProjection(matrix,GX_ORTHOGRAPHIC);
- GXLoadPosMtxImm(g_mDoMtx_identity,GX_PNMTX0);
+ C_MTXOrtho(matrix, top, -top, -right, right, 0.0f, 10000.0f);
+ GXSetProjection(matrix, GX_ORTHOGRAPHIC);
+ GXLoadPosMtxImm(g_mDoMtx_identity, GX_PNMTX0);
GXSetCurrentMtx(0);
drawBack();
}
@@ -308,53 +308,55 @@ dMpath_n::dTexObjAggregate_c dMpath_n::m_texObjAgg;
* renderingDecoration__18dRenderingFDAmap_cFPCQ211dDrawPath_c10line_class */
void dRenderingFDAmap_c::renderingDecoration(dDrawPath_c::line_class const* line) {
s32 width = getDecorationLineWidth(line->unk1);
- if (width<=0) {
+ if (width <= 0) {
return;
}
setTevSettingIntensityTextureToCI();
GXClearVtxDesc();
- GXSetVtxDesc(GX_VA_POS,GX_INDEX16);
- GXSetVtxDesc(GX_VA_TEX0,GX_DIRECT);
- GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_POS,GX_POS_XY,GX_F32,0);
- GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_TEX0,GX_POS_XYZ,GX_F32,0);
+ GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
+ GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0);
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_POS_XYZ, GX_F32, 0);
GXSetNumTevStages(1);
- GXLoadTexObj(dMpath_n::m_texObjAgg.mTexObjs[6],GX_TEXMAP0);
+ GXLoadTexObj(dMpath_n::m_texObjAgg.mTexObjs[6], GX_TEXMAP0);
u16* unk = line->unk4;
s32 unk2 = line->unk2;
- GXSetLineWidth(width,GX_TO_ONE);
- GXSetPointSize(width,GX_TO_ONE);
- GXColor* lineColorPtr = getDecoLineColor(line->unk0&0x3f,line->unk1);
- GXColor lineColor = *lineColorPtr;
- GXSetTevColor(GX_TEVREG0,lineColor);
- lineColor.r = lineColor.r-4;
- GXSetTevColor(GX_TEVREG1,lineColor);
- for (int i = 0; i<unk2; unk++,i++) {
+ GXSetLineWidth(width, GX_TO_ONE);
+ GXSetPointSize(width, GX_TO_ONE);
+ GXColor* lineColorPtr = getDecoLineColor(line->unk0 & 0x3f, line->unk1);
+ GXColor lineColor = *lineColorPtr;
+ GXSetTevColor(GX_TEVREG0, lineColor);
+ lineColor.r = lineColor.r - 4;
+ GXSetTevColor(GX_TEVREG1, lineColor);
+ for (int i = 0; i < unk2; unk++, i++) {
#ifndef HYRULE_FIELD_SPEEDHACK
- if(i<unk2-1) {
- GXSetTevColorIn(GX_TEVSTAGE0,GX_CC_ZERO,GX_CC_ZERO,GX_CC_ZERO,GX_CC_C0);
- GXSetTevColorOp(GX_TEVSTAGE0,GX_TEV_ADD,GX_TB_ZERO,GX_CS_SCALE_1,GX_TRUE,GX_TEVPREV);
- GXSetTevAlphaIn(GX_TEVSTAGE0,GX_CA_ZERO,GX_CA_ZERO,GX_CA_ZERO,GX_CA_KONST);
- GXSetTevAlphaOp(GX_TEVSTAGE0,GX_TEV_ADD,GX_TB_ZERO,GX_CS_SCALE_1,GX_TRUE,GX_TEVPREV);
- GXBegin(GX_LINESTRIP,GX_VTXFMT0,2);
+ if (i < unk2 - 1) {
+ GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0);
+ GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE,
+ GX_TEVPREV);
+ GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST);
+ GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE,
+ GX_TEVPREV);
+ GXBegin(GX_LINESTRIP, GX_VTXFMT0, 2);
GXPosition1x16(unk[0]);
- GXTexCoord2f32(0,0);
+ GXTexCoord2f32(0, 0);
GXPosition1x16(unk[1]);
- GXTexCoord2f32(0,0);
+ GXTexCoord2f32(0, 0);
}
- GXSetTevColorIn(GX_TEVSTAGE0,GX_CC_ZERO,GX_CC_KONST,GX_CC_TEXC,GX_CC_C1);
- GXSetTevColorOp(GX_TEVSTAGE0,GX_TEV_ADD,GX_TB_ZERO,GX_CS_SCALE_1,GX_TRUE,GX_TEVPREV);
- GXSetTevAlphaIn(GX_TEVSTAGE0,GX_CA_ZERO,GX_CA_ZERO,GX_CA_ZERO,GX_CA_TEXA);
- GXSetTevAlphaOp(GX_TEVSTAGE0,GX_TEV_ADD,GX_TB_ZERO,GX_CS_SCALE_1,GX_TRUE,GX_TEVPREV);
+ GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_KONST, GX_CC_TEXC, GX_CC_C1);
+ GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
+ GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA);
+ GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
#endif
- GXBegin(GX_POINTS,GX_VTXFMT0,1);
+ GXBegin(GX_POINTS, GX_VTXFMT0, 1);
GXPosition1x16(unk[0]);
- GXTexCoord2f32(0,0);
+ GXTexCoord2f32(0, 0);
GXEnd();
}
setTevSettingNonTextureDirectColor();
GXClearVtxDesc();
- GXSetVtxDesc(GX_VA_POS,GX_INDEX16);
- GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_POS,GX_CLR_RGB,GX_F32,0);
+ GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGB, GX_F32, 0);
}
/* 8003D68C-8003D6B8 037FCC 002C+00 1/0 6/0 0/0 .text getDecoLineColor__18dRenderingFDAmap_cFii */
diff --git a/src/d/menu/d_menu_letter.cpp b/src/d/menu/d_menu_letter.cpp
index 5b4751f684..33d406e774 100644
--- a/src/d/menu/d_menu_letter.cpp
+++ b/src/d/menu/d_menu_letter.cpp
@@ -937,7 +937,7 @@ asm void J2DTextBox::getBlack() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void J2DPicture::getWhite() const {
+asm JUtility::TColor J2DPicture::getWhite() const {
nofralloc
#include "asm/d/menu/d_menu_letter/getWhite__10J2DPictureCFv.s"
}
@@ -947,7 +947,7 @@ asm void J2DPicture::getWhite() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void J2DPicture::getBlack() const {
+asm JUtility::TColor J2DPicture::getBlack() const {
nofralloc
#include "asm/d/menu/d_menu_letter/getBlack__10J2DPictureCFv.s"
}
diff --git a/src/d/menu/d_menu_window.cpp b/src/d/menu/d_menu_window.cpp
index 5e5dbc971a..7100179a88 100644
--- a/src/d/menu/d_menu_window.cpp
+++ b/src/d/menu/d_menu_window.cpp
@@ -263,7 +263,6 @@ extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" extern void* __vt__12dDlst_base_c[3];
extern "C" extern void* __vt__10CSTControl[4];
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
-extern "C" extern u8 g_clearColor[4];
extern "C" u8 mFader__13mDoGph_gInf_c[4];
extern "C" u8 mFrameBufferTimg__13mDoGph_gInf_c[4];
extern "C" u8 mFrameBufferTex__13mDoGph_gInf_c[4];
diff --git a/src/d/meter/d_meter2_draw.cpp b/src/d/meter/d_meter2_draw.cpp
index 85392410c6..4fe4ed13bf 100644
--- a/src/d/meter/d_meter2_draw.cpp
+++ b/src/d/meter/d_meter2_draw.cpp
@@ -6,7 +6,9 @@
#include "d/meter/d_meter2_draw.h"
#include "JSystem/J2DGraph/J2DAnmLoader.h"
#include "d/com/d_com_inf_game.h"
+#include "d/d_kantera_icon_meter.h"
#include "d/meter/d_meter_HIO.h"
+#include "d/msg/d_msg_object.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -14,14 +16,6 @@
// Types:
//
-struct dKantera_icon_c {
- /* 801AE938 */ dKantera_icon_c();
- /* 801AEB7C */ void setAlphaRate(f32);
- /* 801AEBA0 */ void setPos(f32, f32);
- /* 801AEBF4 */ void setScale(f32, f32);
- /* 801AEC44 */ void setNowGauge(u16, u16);
-};
-
struct Z2SeMgr {
/* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
/* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
@@ -231,57 +225,46 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
// Declarations:
//
+inline bool dComIfGp_checkPlayerStatus0(int param_0, u32 param_1) {
+ return g_dComIfG_gameInfo.play.checkPlayerStatus(param_0, 0, param_1);
+}
+
/* ############################################################################################## */
/* 80398258-80398280 0248B8 0028+00 4/4 0/0 0/0 .rodata a_tag$3949 */
-SECTION_RODATA static u8 const a_tag[40] = {
- 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x61, 0x74, 0x31, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x61,
- 0x74, 0x32, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x61, 0x74, 0x33, 0x63, 0x6F, 0x6E, 0x74,
- 0x5F, 0x61, 0x74, 0x34, 0x00, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x61, 0x74,
+static u64 const a_tag[5] = {
+ 'cont_at1', 'cont_at2', 'cont_at3', 'cont_at4', 'cont_at',
};
-COMPILER_STRIP_GATE(0x80398258, &a_tag);
/* 80398280-803982A8 0248E0 0028+00 0/1 0/0 0/0 .rodata b_tag$3950 */
#pragma push
#pragma force_active on
-SECTION_RODATA static u8 const b_tag[40] = {
- 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x62, 0x74, 0x31, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x62,
- 0x74, 0x32, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x62, 0x74, 0x33, 0x63, 0x6F, 0x6E, 0x74,
- 0x5F, 0x62, 0x74, 0x34, 0x00, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x62, 0x74,
+static u64 const b_tag[5] = {
+ 'cont_bt1', 'cont_bt2', 'cont_bt3', 'cont_bt4', 'cont_bt',
};
-COMPILER_STRIP_GATE(0x80398280, &b_tag);
#pragma pop
/* 803982A8-803982D0 024908 0028+00 0/1 0/0 0/0 .rodata z_tag$3951 */
#pragma push
#pragma force_active on
-SECTION_RODATA static u8 const z_tag[40] = {
- 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x7A, 0x74, 0x31, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x7A,
- 0x74, 0x32, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x7A, 0x74, 0x33, 0x63, 0x6F, 0x6E, 0x74,
- 0x5F, 0x7A, 0x74, 0x34, 0x00, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x72, 0x74,
+static u64 const z_tag[5] = {
+ 'cont_zt1', 'cont_zt2', 'cont_zt3', 'cont_zt4', 'cont_rt',
};
-COMPILER_STRIP_GATE(0x803982A8, &z_tag);
#pragma pop
/* 803982D0-803982F8 024930 0028+00 0/1 0/0 0/0 .rodata x_tag$3952 */
#pragma push
#pragma force_active on
-SECTION_RODATA static u8 const x_tag[40] = {
- 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x78, 0x74, 0x31, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x78,
- 0x74, 0x32, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x78, 0x74, 0x33, 0x63, 0x6F, 0x6E, 0x74,
- 0x5F, 0x78, 0x74, 0x34, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x78, 0x74, 0x35,
+static u64 const x_tag[5] = {
+ 'cont_xt1', 'cont_xt2', 'cont_xt3', 'cont_xt4', 'cont_xt5',
};
-COMPILER_STRIP_GATE(0x803982D0, &x_tag);
#pragma pop
/* 803982F8-80398320 024958 0028+00 0/1 0/0 0/0 .rodata y_tag$3953 */
#pragma push
#pragma force_active on
-SECTION_RODATA static u8 const y_tag[40] = {
- 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x79, 0x74, 0x31, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x79,
- 0x74, 0x32, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x79, 0x74, 0x33, 0x63, 0x6F, 0x6E, 0x74,
- 0x5F, 0x79, 0x74, 0x34, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x79, 0x74, 0x35,
+static u64 const y_tag[5] = {
+ 'cont_yt1', 'cont_yt2', 'cont_yt3', 'cont_yt4', 'cont_yt5',
};
-COMPILER_STRIP_GATE(0x803982F8, &y_tag);
#pragma pop
/* 803988D0-803988D0 024F30 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -307,17 +290,9 @@ SECTION_DEAD static char const* const stringBase_803989BF = "";
#pragma pop
/* 803BF328-803BF350 -00001 0028+00 1/1 0/0 0/0 .data bmg_filename$3954 */
-SECTION_DATA static void* bmg_filename[10] = {
- (void*)&d_meter_d_meter2_draw__stringBase0,
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0xB),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x16),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x21),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x2C),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x37),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x42),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x4D),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x58),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x63),
+SECTION_DATA static char* bmg_filename[10] = {
+ "zel_00.bmg", "zel_01.bmg", "zel_02.bmg", "zel_03.bmg", "zel_04.bmg",
+ "zel_05.bmg", "zel_06.bmg", "zel_07.bmg", "zel_08.bmg", "zel_99.bmg",
};
/* 803BF350-803BF554 01C470 0204+00 1/1 0/0 0/0 .data i_action_num$8471 */
@@ -527,6 +502,91 @@ SECTION_SDATA2 static f32 lit_4185 = 20.0f;
/* 8020FAB4-802102F8 20A3F4 0844+00 0/0 1/1 0/0 .text __ct__13dMeter2Draw_cFP10JKRExpHeap
*/
+#ifdef NONMATCHING
+dMeter2Draw_c::dMeter2Draw_c(JKRExpHeap* p_heap) {
+ mp_heap = p_heap;
+ JKRHeap* heap = mDoExt_setCurrentHeap(dComIfGp_getMsgExpHeap());
+
+ void* msg_res = JKRGetTypeResource('ROOT', "zel_00.bmg", dComIfGp_getMsgDtArchive(0));
+ dMeter2Info_setMsgResource(msg_res);
+
+ void* stg_msg_res = JKRGetTypeResource('ROOT', bmg_filename[dMsgObject_getGroupID()],
+ dComIfGp_getMsgDtArchive(1));
+ dMeter2Info_setStageMsgResource(stg_msg_res);
+
+ void* msg_unit_res = JKRGetTypeResource('ROOT', "zel_unit.bmg", dComIfGp_getMsgDtArchive(0));
+ dMeter2Info_setMsgUnitResource(msg_unit_res);
+ mDoExt_setCurrentHeap(heap);
+
+ mpScreen = new J2DScreen();
+ mpScreen->setPriority("zelda_game_image.blo", 0x20000, dComIfGp_getMain2DArchive());
+ dPaneClass_showNullPane(mpScreen);
+ mpScreen->search('ju_ring5')->hide();
+
+ field_0x73c = 0.0f;
+ for (int i = 0; i < 2; i++) {
+ mpKanteraMeter[i] = new dKantera_icon_c();
+ }
+ mpKanteraScreen = new J2DScreen();
+ mpKanteraScreen->setPriority("zelda_game_image_kantera.blo", 0x20000,
+ dComIfGp_getMain2DArchive());
+ dPaneClass_showNullPane(mpKanteraScreen);
+
+ mpPikariScreen = new J2DScreen();
+ mpPikariScreen->setPriority("zelda_icon_pikari.blo", 0x20000, dComIfGp_getMain2DArchive());
+ dPaneClass_showNullPane(mpPikariScreen);
+ mpPikariParent = new CPaneMgr(mpPikariScreen, 'pika_n', 0, NULL);
+ field_0x548 = ((J2DPicture*)mpPikariScreen->search('pika00'))->getBlack();
+ field_0x54c = ((J2DPicture*)mpPikariScreen->search('pika00'))->getWhite();
+ OSInitFastCast();
+ void* pikari_bck = JKRGetNameResource("zelda_icon_pikari.bck", dComIfGp_getMain2DArchive());
+ mPikariBck = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load(pikari_bck);
+ playPikariBckAnimation(1.0f);
+ void* pikari_bpk = JKRGetNameResource("zelda_icon_pikari.bpk", dComIfGp_getMain2DArchive());
+ mPikariBpk = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(pikari_bpk);
+ mPikariBpk->searchUpdateMaterialID(mpPikariScreen);
+ playPikariBpkAnimation(1.0f);
+
+ mpParent = new CPaneMgr(mpScreen, 'n_all', 2, NULL);
+ for (int i = 0; i < 5; i++) {
+ mpAText[i] = new CPaneMgr(mpScreen, a_tag[i], 0, NULL);
+ ((J2DTextBox*)mpAText[i]->getPanePtr())->setString(64, "");
+ ((J2DTextBox*)mpAText[i]->getPanePtr())->setFont(mDoExt_getMesgFont());
+ ((J2DTextBox*)mpAText[i]->getPanePtr())->setCharSpace(g_drawHIO.mAButtonFontSpacing);
+
+ mpBText[i] = new CPaneMgr(mpScreen, b_tag[i], 0, NULL);
+ ((J2DTextBox*)mpBText[i]->getPanePtr())->setString(64, "");
+ ((J2DTextBox*)mpBText[i]->getPanePtr())->setFont(mDoExt_getMesgFont());
+
+ mpXYText[i][2] = new CPaneMgr(mpScreen, z_tag[i], 0, NULL);
+ ((J2DTextBox*)mpXYText[i][2]->getPanePtr())->setString(64, "");
+ ((J2DTextBox*)mpXYText[i][2]->getPanePtr())->setFont(mDoExt_getMesgFont());
+
+ mpXYText[i][0] = new CPaneMgr(mpScreen, x_tag[i], 0, NULL);
+ ((J2DTextBox*)mpXYText[i][0]->getPanePtr())->setString(64, "");
+ ((J2DTextBox*)mpXYText[i][0]->getPanePtr())->setFont(mDoExt_getMesgFont());
+
+ mpXYText[i][1] = new CPaneMgr(mpScreen, y_tag[i], 0, NULL);
+ ((J2DTextBox*)mpXYText[i][1]->getPanePtr())->setString(64, "");
+ ((J2DTextBox*)mpXYText[i][1]->getPanePtr())->setFont(mDoExt_getMesgFont());
+ }
+
+ J2DTextBox::TFontSize font_size = {lit_4184, lit_4185};
+ for (int i = 0; i < 5; i++) {
+ ((J2DTextBox*)mpAText[i]->getPanePtr())->setFontSize(font_size);
+ ((J2DTextBox*)mpBText[i]->getPanePtr())->setFontSize(font_size);
+ ((J2DTextBox*)mpXYText[i][2]->getPanePtr())->setFontSize(font_size);
+ ((J2DTextBox*)mpXYText[i][0]->getPanePtr())->setFontSize(font_size);
+ ((J2DTextBox*)mpXYText[i][1]->getPanePtr())->setFontSize(font_size);
+ }
+
+ init();
+ field_0xa8 = 0;
+ field_0x1e4 = 0;
+ field_0x2fc = 0;
+ field_0x36c = 0;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -535,36 +595,437 @@ asm dMeter2Draw_c::dMeter2Draw_c(JKRExpHeap* param_0) {
#include "asm/d/meter/d_meter2_draw/__ct__13dMeter2Draw_cFP10JKRExpHeap.s"
}
#pragma pop
+#endif
/* 802102F8-80210FB0 20AC38 0CB8+00 1/0 0/0 0/0 .text __dt__13dMeter2Draw_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dMeter2Draw_c::~dMeter2Draw_c() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/__dt__13dMeter2Draw_cFv.s"
+dMeter2Draw_c::~dMeter2Draw_c() {
+ dComIfGp_getMsgDtArchive(0)->removeResource(dMeter2Info_getMsgResource());
+ dComIfGp_getMsgDtArchive(0)->removeResource(dMeter2Info_getMsgUnitResource());
+ dComIfGp_getItemIconArchive()->removeResourceAll();
+
+ delete mpScreen;
+ mpScreen = NULL;
+
+ delete mpKanteraScreen;
+ mpKanteraScreen = NULL;
+
+ for (int i = 0; i < 2; i++) {
+ delete mpKanteraMeter[i];
+ mpKanteraMeter[i] = NULL;
+ }
+
+ delete mpParent;
+ mpParent = NULL;
+
+ delete mpPikariScreen;
+ mpPikariScreen = NULL;
+
+ delete mpPikariParent;
+ mpPikariParent = NULL;
+
+ delete mPikariBck;
+ mPikariBck = NULL;
+
+ delete mPikariBpk;
+ mPikariBpk = NULL;
+
+ for (int i = 0; i < 5; i++) {
+ delete mpAText[i];
+ mpAText[i] = NULL;
+
+ delete mpBText[i];
+ mpBText[i] = NULL;
+
+ for (int j = 0; j < 3; j++) {
+ delete mpXYText[i][j];
+ mpXYText[i][j] = NULL;
+ }
+ }
+
+ delete mpLifeParent;
+ mpLifeParent = NULL;
+
+ for (int i = 0; i < 20; i++) {
+ delete mpLifeParts[i];
+ mpLifeParts[i] = NULL;
+
+ delete mpHeartMask[i];
+ mpHeartMask[i] = NULL;
+
+ delete mpHeartBase[i];
+ mpHeartBase[i] = NULL;
+
+ delete mpLifeTexture[i][0];
+ mpLifeTexture[i][0] = NULL;
+
+ delete mpLifeTexture[i][1];
+ mpLifeTexture[i][1] = NULL;
+ }
+
+ delete mpBigHeart;
+ mpBigHeart = NULL;
+
+ delete mpMagicParent;
+ mpMagicParent = NULL;
+
+ delete mpMagicBase;
+ mpMagicBase = NULL;
+
+ delete mpMagicFrameL;
+ mpMagicFrameL = NULL;
+
+ delete mpMagicFrameR;
+ mpMagicFrameR = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ delete field_0x53c[i];
+ field_0x53c[i] = NULL;
+ }
+
+ delete mpMagicMeter;
+ mpMagicMeter = NULL;
+
+ for (int i = 0; i < 2; i++) {
+ delete mpSIParent[i];
+ mpSIParent[i] = NULL;
+ }
+
+ delete mpLightDropParent;
+ mpLightDropParent = NULL;
+
+ for (int i = 0; i < 16; i++) {
+ for (int j = 0; j < 3; j++) {
+ if (mpSIParts[i][j] != NULL) {
+ delete mpSIParts[i][j];
+ mpSIParts[i][j] = NULL;
+ }
+ }
+ }
+
+ delete mpRupeeKeyParent;
+ mpRupeeKeyParent = NULL;
+
+ for (int i = 0; i < 4; i++) {
+ delete mpRupeeTexture[i][0];
+ mpRupeeTexture[i][0] = NULL;
+
+ delete mpRupeeTexture[i][1];
+ mpRupeeTexture[i][1] = NULL;
+ }
+
+ for (int i = 0; i < 3; i++) {
+ delete mpRupeeParent[i];
+ mpRupeeParent[i] = NULL;
+ }
+
+ for (int i = 0; i < 5; i++) {
+ delete mpKeyTexture[i];
+ mpKeyTexture[i] = NULL;
+ }
+
+ delete mpKeyParent;
+ mpKeyParent = NULL;
+
+ for (int i = 0; i < 2; i++) {
+ for (int j = 0; j < 2; j++) {
+ mp_heap->free(mpItemBTex[i][j]);
+ mpItemBTex[i][j] = NULL;
+ }
+ }
+
+ for (int i = 0; i < 2; i++) {
+ for (int j = 0; j < 2; j++) {
+ for (int k = 0; k < 2; k++) {
+ mp_heap->free(mpItemXYTex[i][j][k]);
+ mpItemXYTex[i][j][k] = NULL;
+ }
+ }
+ }
+
+ delete mpItemB;
+ mpItemB = NULL;
+ mpItemBPane = NULL;
+
+ for (int i = 0; i < 2; i++) {
+ if (mpItemXY[i] != NULL) {
+ delete mpItemXY[i];
+ mpItemXY[i] = NULL;
+ }
+ }
+
+ delete mpItemR;
+ mpItemR = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ mpItemXYPane[i] = NULL;
+ }
+
+ delete mpLightB;
+ mpLightB = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ if (mpLightXY[i] != NULL) {
+ delete mpLightXY[i];
+ mpLightXY[i] = NULL;
+ }
+ }
+
+ delete mpBTextA;
+ mpBTextA = NULL;
+
+ delete mpBTextB;
+ mpBTextB = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ if (mpBTextXY[i] != NULL) {
+ delete mpBTextXY[i];
+ mpBTextXY[i] = NULL;
+ }
+ }
+
+ delete mpTextA;
+ mpTextA = NULL;
+
+ delete mpTextB;
+ mpTextB = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ delete mpTextXY[i];
+ mpTextXY[i] = NULL;
+ }
+
+ delete mpTextI;
+ mpTextI = NULL;
+
+ delete mpTextM;
+ mpTextM = NULL;
+
+ for (int i = 0; i < 5; i++) {
+ if (mpJujiI[i] != NULL) {
+ delete mpJujiI[i];
+ mpJujiI[i] = NULL;
+ }
+
+ if (mpJujiM[i] != NULL) {
+ delete mpJujiM[i];
+ mpJujiM[i] = NULL;
+ }
+ }
+
+ delete mpButtonParent;
+ mpButtonParent = NULL;
+
+ delete mpButtonA;
+ mpButtonA = NULL;
+
+ delete mpButtonB;
+ mpButtonB = NULL;
+
+ delete mpButtonMidona;
+ mpButtonMidona = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ delete mpButtonXY[i];
+ mpButtonXY[i] = NULL;
+ }
+
+ if (mpUzu != NULL) {
+ delete mpUzu;
+ mpUzu = NULL;
+ }
+
+ delete mpButtonCrossParent;
+ mpButtonCrossParent = NULL;
+
+ for (int i = 0; i < 2; i++) {
+ for (int j = 0; j < 3; j++) {
+ if (mpItemNumTex[i][j] != NULL) {
+ delete mpItemNumTex[i][j];
+ mpItemNumTex[i][j] = NULL;
+ }
+ }
+ }
+
+ for (int i = 0; i < 3; i++) {
+ if (field_0x9c[i] != NULL) {
+ delete field_0x9c[i];
+ field_0x9c[i] = NULL;
+ }
+ }
}
-#pragma pop
/* 80210FB0-8021135C 20B8F0 03AC+00 1/1 0/0 0/0 .text init__13dMeter2Draw_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::init() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/init__13dMeter2Draw_cFv.s"
+void dMeter2Draw_c::init() {
+ f32 tmp_0 = FLOAT_LABEL(lit_4182);
+ field_0x608 = tmp_0;
+ field_0x60c = tmp_0;
+
+ for (int i = 0; i < 3; i++) {
+ field_0x620[i] = tmp_0;
+ field_0x610[i] = tmp_0;
+ }
+
+ f32 tmp_0_1 = FLOAT_LABEL(lit_4182);
+ field_0x61c = tmp_0_1;
+ for (int i = 0; i < 16; i++) {
+ field_0x62c[i] = tmp_0_1;
+ field_0x66c[i] = tmp_0_1;
+ }
+
+ field_0x759 = 0;
+ field_0x75a = 0;
+ for (int i = 0; i < 3; i++) {
+ field_0x75c[i] = 0;
+ }
+
+ field_0x75f = 0;
+ field_0x756 = -1;
+
+ field_0x760 = 0;
+
+ int j = 0;
+ f32 tmp_0_3 = FLOAT_LABEL(lit_4182);
+ for (; j < 3; j++) {
+ field_0x6ac[j] = tmp_0_3;
+ field_0x6b8[j] = tmp_0_3;
+ field_0x6c4[j] = tmp_0_3;
+ field_0x6d0[j] = tmp_0_3;
+ }
+
+ f32 tmp_0_4 = FLOAT_LABEL(lit_4182);
+ field_0x6dc = tmp_0_4;
+ field_0x6e0 = tmp_0_4;
+ field_0x6e4 = tmp_0_4;
+ field_0x6e8 = tmp_0_4;
+ field_0x6ec = tmp_0_4;
+ field_0x6f0 = tmp_0_4;
+ mHUDScale = g_drawHIO.mHUDScale;
+ mHUDAlpha = g_drawHIO.mHUDAlpha;
+ mButtonsPosX = tmp_0_4;
+ mButtonsPosY = tmp_0_4;
+ mButtonsScale = lit_4183;
+ field_0x78c = g_drawHIO.mButtonDisplayBackScale;
+ field_0x790 = tmp_0_4;
+ mLifeGaugeHeartAlpha = g_drawHIO.mLifeGaugeHeartAlpha;
+ mLifeGaugeBaseAlpha = g_drawHIO.mLifeGaugeBaseAlpha;
+ mHeartAlpha = g_drawHIO.mHeartAlpha;
+ mLargeHeartAlpha = g_drawHIO.mLargeHeartAlpha;
+ field_0x7a4 = tmp_0_4;
+ mMagicMeterAlpha = g_drawHIO.mMagicMeterAlpha;
+ mMagicMeterFrameAlpha = g_drawHIO.mMagicMeterFrameAlpha;
+ field_0x7b0 = tmp_0_4;
+ mLanternMeterAlpha = g_drawHIO.mLanternMeterAlpha;
+ mLanternMeterFrameAlpha = g_drawHIO.mLanternMeterFrameAlpha;
+ field_0x7bc = tmp_0_4;
+ mOxygenMeterAlpha = g_drawHIO.mOxygenMeterAlpha;
+ mOxygenMeterFrameAlpha = g_drawHIO.mOxygenMeterFrameAlpha;
+ field_0x7c8 = tmp_0_4;
+ field_0x861 = 0;
+ field_0x860 = 0;
+ field_0x7cc = g_drawHIO.mHUDAlpha;
+ field_0x7d0 = g_drawHIO.mRupeeKeyAlpha;
+ mRupeeAlpha = g_drawHIO.mRupeeAlpha;
+ mRupeeFrameAlpha = g_drawHIO.mRupeeFrameAlpha;
+ mRupeeCountAlpha = g_drawHIO.mRupeeCountAlpha;
+ field_0x7e0 = g_drawHIO.mHUDAlpha;
+ field_0x7e4 = g_drawHIO.mRupeeKeyAlpha;
+ mKeyAlpha = g_drawHIO.mKeyAlpha;
+ mKeyNumAlpha = g_drawHIO.mKeyNumAlpha;
+ field_0x7f0 = g_drawHIO.mHUDAlpha;
+ mMainHUDButtonsAlpha = g_drawHIO.mMainHUDButtonsAlpha;
+ mButtonDisplayBackAlpha = g_drawHIO.mButtonDisplayBackAlpha;
+ mAButtonAlpha = g_drawHIO.mAButtonAlpha;
+ mBButtonAlpha = g_drawHIO.mBButtonAlpha;
+ mXButtonAlpha = g_drawHIO.mXButtonAlpha;
+ mYButtonAlpha = g_drawHIO.mYButtonAlpha;
+ field_0x80c = g_drawHIO.field_0x168;
+ field_0x810 = g_drawHIO.mZButtonAlpha;
+
+ for (int i = 0; i < 2; i++) {
+ mBItemBaseAlpha[i] = g_drawHIO.mBItemBaseAlpha[i];
+ mXButtonItemBaseAlpha[i] = g_drawHIO.mXButtonItemBaseAlpha[i];
+ mYButtonItemBaseAlpha[i] = g_drawHIO.mYButtonItemBaseAlpha[i];
+ field_0x82c[i] = g_drawHIO.field_0x298[i];
+ }
+
+ mZButtonItemBaseAlpha = g_drawHIO.mZButtonItemBaseAlpha;
+ mButtonBaseAlpha = g_drawHIO.mButtonBaseAlpha;
+ mAButtonFontSpacing = g_drawHIO.mAButtonFontSpacing;
+ mDPadButtonAlpha = g_drawHIO.mDPadButtonAlpha;
+ mDPadButtonITEMAlpha = g_drawHIO.mDPadButtonITEMAlpha;
+ mDPadButtonMAPAlpha = g_drawHIO.mDPadButtonMAPAlpha;
+ field_0x84c = g_drawHIO.mAButtonFontColor.r;
+ field_0x84d = g_drawHIO.mAButtonFontColor.g;
+ field_0x84e = g_drawHIO.mAButtonFontColor.b;
+ field_0x84f = g_drawHIO.mAButtonFontColor.a;
+ field_0x850 = g_drawHIO.mBButtonFontColor.r;
+ field_0x851 = g_drawHIO.mBButtonFontColor.g;
+ field_0x852 = g_drawHIO.mBButtonFontColor.b;
+ field_0x853 = g_drawHIO.mBButtonFontColor.a;
+ field_0x854 = g_drawHIO.field_0x2f0.r;
+ field_0x855 = g_drawHIO.field_0x2f0.g;
+ field_0x856 = g_drawHIO.field_0x2f0.b;
+ field_0x857 = g_drawHIO.field_0x2f0.a;
+ field_0x858 = g_drawHIO.mZButtonFontColor.r;
+ field_0x859 = g_drawHIO.mZButtonFontColor.g;
+ field_0x85a = g_drawHIO.mZButtonFontColor.b;
+ field_0x85b = g_drawHIO.mZButtonFontColor.a;
+ field_0x85c = g_drawHIO.mXYButtonFontColor.r;
+ field_0x85d = g_drawHIO.mXYButtonFontColor.g;
+ field_0x85e = g_drawHIO.mXYButtonFontColor.b;
+ field_0x85f = g_drawHIO.mXYButtonFontColor.a;
+
+ setItemParamX(0);
+ setItemParamY(0);
+ setItemParamZ(0);
+ setItemParamB(0);
+ initLife();
+ initMagic();
+ initLightDrop();
+ initRupeeKey();
+ initButton();
+ initButtonCross();
+ field_0x772 = 0;
}
-#pragma pop
/* 8021135C-8021151C 20BC9C 01C0+00 0/0 1/1 0/0 .text exec__13dMeter2Draw_cFUl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::exec(u32 param_0) {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/exec__13dMeter2Draw_cFUl.s"
+void dMeter2Draw_c::exec(u32 param_0) {
+ if (mHUDScale != g_drawHIO.mHUDScale) {
+ mHUDScale = g_drawHIO.mHUDScale;
+ mpParent->scale(g_drawHIO.mHUDScale, g_drawHIO.mHUDScale);
+ }
+
+ if (mHUDAlpha != g_drawHIO.mHUDAlpha) {
+ mHUDAlpha = g_drawHIO.mHUDAlpha;
+ mpParent->setAlphaRate(g_drawHIO.mHUDAlpha);
+ }
+
+ if (param_0 & 0x1000000) {
+ if (mButtonsPosX != g_drawHIO.mRingHUDButtonsPosX ||
+ mButtonsPosY != g_drawHIO.mRingHUDButtonsPosY) {
+ mButtonsPosX = g_drawHIO.mRingHUDButtonsPosX;
+ mButtonsPosY = g_drawHIO.mRingHUDButtonsPosY;
+ mpButtonParent->paneTrans(g_drawHIO.mRingHUDButtonsPosX, g_drawHIO.mRingHUDButtonsPosY);
+ }
+
+ if (mButtonsScale != g_drawHIO.mRingHUDButtonsScale) {
+ mButtonsScale = g_drawHIO.mRingHUDButtonsScale;
+ mpButtonParent->scale(g_drawHIO.mRingHUDButtonsScale, g_drawHIO.mRingHUDButtonsScale);
+ }
+ } else {
+ if (mButtonsPosX != g_drawHIO.mMainHUDButtonsPosX ||
+ mButtonsPosY != g_drawHIO.mMainHUDButtonsPosY) {
+ mButtonsPosX = g_drawHIO.mMainHUDButtonsPosX;
+ mButtonsPosY = g_drawHIO.mMainHUDButtonsPosY;
+ mpButtonParent->paneTrans(g_drawHIO.mMainHUDButtonsPosX, g_drawHIO.mMainHUDButtonsPosY);
+ }
+
+ if (mButtonsScale != g_drawHIO.mMainHUDButtonsScale) {
+ mButtonsScale = g_drawHIO.mMainHUDButtonsScale;
+ mpButtonParent->scale(g_drawHIO.mMainHUDButtonsScale, g_drawHIO.mMainHUDButtonsScale);
+ }
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 80454890-80454894 002E90 0004+00 1/1 0/0 0/0 .sdata2 @4921 */
@@ -704,6 +1165,7 @@ SECTION_DEAD static char const* const stringBase_80398A0A = "zelda_game_image_sa
#pragma pop
/* 80211E64-80212190 20C7A4 032C+00 1/1 0/0 0/0 .text initMagic__13dMeter2Draw_cFv */
+// matches with literals
#ifdef NONMATCHING
void dMeter2Draw_c::initMagic() {
field_0x550 = 0.0f;
@@ -714,21 +1176,22 @@ void dMeter2Draw_c::initMagic() {
mpMagicFrameL = new CPaneMgr(mpKanteraScreen, 'm_w_l_n', 2, NULL);
mpMagicFrameR = new CPaneMgr(mpKanteraScreen, 'm_w_r_n', 2, NULL);
mpMagicMeter = new CPaneMgr(mpKanteraScreen, 'mm_00', 0, NULL);
+ OSInitFastCast();
void* res = JKRFileLoader::getGlbResource("zelda_game_image_sanso_10percent.bpk",
dComIfGp_getMain2DArchive());
- field_0x53c = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(res);
- field_0x53c->searchUpdateMaterialID(mpKanteraScreen);
+ field_0x53c[0] = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(res);
+ field_0x53c[0]->searchUpdateMaterialID(mpKanteraScreen);
res = JKRFileLoader::getGlbResource("zelda_game_image_sanso_25percent.bpk",
dComIfGp_getMain2DArchive());
- field_0x540 = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(res);
- field_0x540->searchUpdateMaterialID(mpKanteraScreen);
+ field_0x53c[1] = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(res);
+ field_0x53c[1]->searchUpdateMaterialID(mpKanteraScreen);
res = JKRFileLoader::getGlbResource("zelda_game_image_sanso_50percent.bpk",
dComIfGp_getMain2DArchive());
- field_0x544 = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(res);
- field_0x544->searchUpdateMaterialID(mpKanteraScreen);
+ field_0x53c[2] = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(res);
+ field_0x53c[2]->searchUpdateMaterialID(mpKanteraScreen);
field_0x558 = 0.0f;
mpMagicParent->setAlphaRate(0.0f);
@@ -751,10 +1214,9 @@ void dMeter2Draw_c::initMagic() {
g_drawHIO.mMagicMeterPosY + offsetY);
setAlphaMagicChange(true);
- u16 oil = dComIfGs_getOil();
- u16 max_oil = dComIfGs_getMaxOil();
- drawKantera(max_oil, oil, g_drawHIO.mLanternMeterPosX + offsetX,
- g_drawHIO.mLanternMeterPosY + (g_drawHIO.mNoMagicPosY + offsetY));
+ drawKantera((u16)dComIfGs_getMaxOil(), (u16)dComIfGs_getOil(),
+ g_drawHIO.mLanternMeterPosX + offsetX,
+ g_drawHIO.mNoMagicPosY + (g_drawHIO.mLanternMeterPosY + offsetY));
setAlphaKanteraChange(true);
}
#else
@@ -908,35 +1370,28 @@ asm void dMeter2Draw_c::initButtonCross() {
#pragma pop
/* 80213CEC-80213D6C 20E62C 0080+00 3/3 0/0 0/0 .text playPikariBckAnimation__13dMeter2Draw_cFf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::playPikariBckAnimation(f32 param_0) {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/playPikariBckAnimation__13dMeter2Draw_cFf.s"
+void dMeter2Draw_c::playPikariBckAnimation(f32 frame) {
+ mpPikariParent->getPanePtr()->setAnimation(mPikariBck);
+ mPikariBck->setFrame(frame);
+ mpPikariParent->getPanePtr()->animationTransform();
+ mpPikariParent->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
}
-#pragma pop
/* 80213D6C-80213E3C 20E6AC 00D0+00 1/1 0/0 0/0 .text
* setPikariBpkAnimation__13dMeter2Draw_cFP11J2DAnmColor */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::setPikariBpkAnimation(J2DAnmColor* param_0) {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/setPikariBpkAnimation__13dMeter2Draw_cFP11J2DAnmColor.s"
+void dMeter2Draw_c::setPikariBpkAnimation(J2DAnmColor* p_anmcolor) {
+ mpPikariScreen->search('pika00')->setAnimation(p_anmcolor);
+ mpPikariScreen->search('moya00')->setAnimation(p_anmcolor);
+ mpPikariScreen->search('moyabs')->setAnimation(p_anmcolor);
}
-#pragma pop
/* 80213E3C-80213E94 20E77C 0058+00 3/3 0/0 0/0 .text playPikariBpkAnimation__13dMeter2Draw_cFf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::playPikariBpkAnimation(f32 param_0) {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/playPikariBpkAnimation__13dMeter2Draw_cFf.s"
+void dMeter2Draw_c::playPikariBpkAnimation(f32 frame) {
+ setPikariBpkAnimation(mPikariBpk);
+ mPikariBpk->setFrame(frame);
+ mpPikariScreen->animation();
+ setPikariBpkAnimation(NULL);
}
-#pragma pop
/* 80213E94-80213FF0 20E7D4 015C+00 1/1 0/0 0/0 .text
* playOxygenBpkAnimation__13dMeter2Draw_cFP11J2DAnmColor */
@@ -1414,14 +1869,12 @@ asm void dMeter2Draw_c::drawButtonC(u8 param_0, bool param_1) {
#pragma pop
/* 802179C0-80217A10 212300 0050+00 1/1 1/1 0/0 .text drawButtonS__13dMeter2Draw_cFUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::drawButtonS(u8 param_0) {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/drawButtonS__13dMeter2Draw_cFUc.s"
+void dMeter2Draw_c::drawButtonS(u8 param_0) {
+ getActionString(param_0, 1, &field_0x767);
+ if (param_0 != 0) {
+ field_0x767 = 7;
+ }
}
-#pragma pop
/* 80217A10-80217AB4 212350 00A4+00 0/0 1/1 0/0 .text drawButtonBin__13dMeter2Draw_cFUc
*/
@@ -1671,14 +2124,10 @@ asm void dMeter2Draw_c::setButtonIconAlpha(int param_0, u8 param_1, u32 param_2,
/* 8021A29C-8021A2F4 214BDC 0058+00 1/1 0/0 0/0 .text getNumberTexture__13dMeter2Draw_cFi
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::getNumberTexture(int param_0) {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/getNumberTexture__13dMeter2Draw_cFi.s"
+ResTIMG* dMeter2Draw_c::getNumberTexture(int i) {
+ return (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG',
+ dMeter2Info_getNumberTextureName(i));
}
-#pragma pop
/* ############################################################################################## */
/* 80430158-80430178 05CE78 0020+00 1/1 0/0 0/0 .bss i_text_buf$8454 */
@@ -1795,14 +2244,9 @@ asm void dMeter2Draw_c::drawKanteraMeter(u8 param_0, f32 param_1) {
/* 8021B0C8-8021B104 215A08 003C+00 0/0 3/3 0/0 .text isButtonVisible__13dMeter2Draw_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::isButtonVisible() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/isButtonVisible__13dMeter2Draw_cFv.s"
+u8 dMeter2Draw_c::isButtonVisible() {
+ return (mpButtonParent->getAlphaRate() == FLOAT_LABEL(lit_4182)) ^ 1;
}
-#pragma pop
/* ############################################################################################## */
/* 804548E8-804548EC 002EE8 0004+00 2/2 0/0 0/0 .sdata2 @8992 */
@@ -1986,14 +2430,13 @@ asm void dMeter2Draw_c::setItemParamB(u8 param_0) {
/* 8021BB6C-8021BBB4 2164AC 0048+00 1/1 0/0 0/0 .text getFishingType__13dMeter2Draw_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::getFishingType() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/getFishingType__13dMeter2Draw_cFv.s"
+bool dMeter2Draw_c::getFishingType() {
+ if (dMeter2Info_isGameStatus(1) && getCanoeFishing()) {
+ return true;
+ } else {
+ return false;
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 803988D0-803988D0 024F30 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -2010,14 +2453,14 @@ SECTION_DEAD static char const* const pad_80398A77 = "";
/* 8021BBB4-8021BC24 2164F4 0070+00 2/2 1/1 0/0 .text getCanoeFishing__13dMeter2Draw_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::getCanoeFishing() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/getCanoeFishing__13dMeter2Draw_cFv.s"
+bool dMeter2Draw_c::getCanoeFishing() {
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") &&
+ g_dComIfG_gameInfo.play.mPlayer[0]->checkCanoeRide()) {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
}
-#pragma pop
/* 8021BC24-8021BC54 216564 0030+00 0/0 1/1 0/0 .text getCameraSubject__13dMeter2Draw_cFv
*/
@@ -2043,14 +2486,9 @@ asm void dMeter2Draw_c::getItemSubject() {
/* 8021BCAC-8021BCC0 2165EC 0014+00 0/0 1/1 0/0 .text getPlayerSubject__13dMeter2Draw_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::getPlayerSubject() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/getPlayerSubject__13dMeter2Draw_cFv.s"
+bool dMeter2Draw_c::getPlayerSubject() {
+ return dComIfGp_checkPlayerStatus0(0, 0x8000000);
}
-#pragma pop
/* 8021BCC0-8021BDD0 216600 0110+00 2/2 2/2 0/0 .text isBButtonShow__13dMeter2Draw_cFb */
#pragma push
@@ -2064,14 +2502,9 @@ asm void dMeter2Draw_c::isBButtonShow(bool param_0) {
/* 8021BDD0-8021BDDC 216710 000C+00 0/0 1/1 0/0 .text getButtonTimer__13dMeter2Draw_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::getButtonTimer() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/getButtonTimer__13dMeter2Draw_cFv.s"
+s16 dMeter2Draw_c::getButtonTimer() {
+ return mpButtonParent->getAlphaTimer();
}
-#pragma pop
/* ############################################################################################## */
/* 803988B8-803988D0 024F18 0018+00 0/0 0/0 0/0 .rodata tag$7759 */
diff --git a/src/d/meter/d_meter_HIO.cpp b/src/d/meter/d_meter_HIO.cpp
index 1974afaff4..d2a47d6bf0 100644
--- a/src/d/meter/d_meter_HIO.cpp
+++ b/src/d/meter/d_meter_HIO.cpp
@@ -1011,38 +1011,38 @@ dMeter_drawHIO_c::dMeter_drawHIO_c() {
mBItemBasePosY[i] = 0.0f;
}
- mBItemBaseAlpha = 0.5f;
- field_0x23c = 0.5f;
+ mBItemBaseAlpha[0] = 0.5f;
+ mBItemBaseAlpha[1] = 0.5f;
mXButtonItemBaseScale = 1.5f;
mXButtonItemBasePosX = 14.0f;
mXButtonItemBasePosY = -12.0f;
- mXButtonItemBaseAlpha = 0.5f;
+ mXButtonItemBaseAlpha[0] = 0.5f;
mXButtonItemBaseNoItemScale = 1.5f;
mXButtonItemBaseNoItemPosX = 0.0f;
mXButtonItemBaseNoItemPosY = 0.0f;
- mXButtonItemBaseNoItemAlpha = 1.0f;
+ mXButtonItemBaseAlpha[1] = 1.0f;
mYButtonItemBaseScale = 1.5f;
mYButtonItemBasePosX = -15.0f;
mYButtonItemBasePosY = -12.0f;
- mYButtonItemBaseAlpha = 0.5f;
+ mYButtonItemBaseAlpha[0] = 0.5f;
mYButtonItemBaseNoItemScale = 1.5f;
mYButtonItemBaseNoItemPosX = 0.0f;
mYButtonItemBaseNoItemPosY = 0.0f;
- mYButtonItemBaseNoItemAlpha = 0.5f;
+ mYButtonItemBaseAlpha[1] = 0.5f;
field_0x280 = 1.5f;
field_0x288 = 0.0f;
field_0x290 = 6.0f;
- field_0x298 = 0.5f;
+ field_0x298[0] = 0.5f;
field_0x284 = 1.0f;
field_0x28c = 0.0f;
field_0x294 = 4.0f;
- field_0x29c = 1.0f;
+ field_0x298[1] = 1.0f;
mZButtonItemBaseScale = 1.0f;
mZButtonItemBasePosX = 0.0f;
diff --git a/src/d/msg/d_msg_object.cpp b/src/d/msg/d_msg_object.cpp
index e9603f2726..38978405fb 100644
--- a/src/d/msg/d_msg_object.cpp
+++ b/src/d/msg/d_msg_object.cpp
@@ -447,7 +447,7 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
static u8 s_groupID[2 + 6 /* padding */];
/* 80232A3C-80232A44 -00001 0008+00 0/0 0/0 0/0 .text dMsgObject_getGroupID__Fv */
-s32 dMsgObject_getGroupID() {
+s16 dMsgObject_getGroupID() {
return (s32) * (s16*)(&s_groupID);
}
@@ -1802,7 +1802,7 @@ asm void dMsgObject_c::setProcessID(unsigned int param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dMsgObject_c::getActor() {
+asm fopAc_ac_c* dMsgObject_c::getActor() {
nofralloc
#include "asm/d/msg/d_msg_object/getActor__12dMsgObject_cFv.s"
}
diff --git a/src/d/pane/d_pane_class_alpha.cpp b/src/d/pane/d_pane_class_alpha.cpp
index 22b96aefae..2680ad9673 100644
--- a/src/d/pane/d_pane_class_alpha.cpp
+++ b/src/d/pane/d_pane_class_alpha.cpp
@@ -202,7 +202,7 @@ SECTION_SDATA2 static f32 lit_3721[1 + 1 /* padding */] = {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void CPaneMgrAlpha::getAlphaRate() {
+asm f32 CPaneMgrAlpha::getAlphaRate() {
nofralloc
#include "asm/d/pane/d_pane_class_alpha/getAlphaRate__13CPaneMgrAlphaFv.s"
}
diff --git a/src/d/particle/d_particle.cpp b/src/d/particle/d_particle.cpp
index 0dc21219a2..d6917f2064 100644
--- a/src/d/particle/d_particle.cpp
+++ b/src/d/particle/d_particle.cpp
@@ -1906,11 +1906,11 @@ SECTION_SDATA2 static u32 lit_5199 = 0xFFFFFFFF;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dPa_control_c::set(u8 param_0, u16 param_1, cXyz const* param_2,
- dKy_tevstr_c const* param_3, csXyz const* param_4, cXyz const* param_5,
- u8 param_6, dPa_levelEcallBack* param_7, s8 param_8,
- _GXColor const* param_9, _GXColor const* param_10, cXyz const* param_11,
- f32 param_12) {
+asm u32 dPa_control_c::set(u8 param_0, u16 param_1, cXyz const* param_2,
+ dKy_tevstr_c const* param_3, csXyz const* param_4, cXyz const* param_5,
+ u8 param_6, dPa_levelEcallBack* param_7, s8 param_8,
+ _GXColor const* param_9, _GXColor const* param_10, cXyz const* param_11,
+ f32 param_12) {
nofralloc
#include "asm/d/particle/d_particle/func_8004CA90.s"
}