Match 5 d_bg_w_kcol funcs (#2856)

* dBgWKCol::CaptPoly equivalent

* dBgWKCol::CaptPoly OK

* Switch s32->int for the rest of the dBgW functions just in case

This doesn't immediately help any other functions besides CaptPoly, but I suspect it could help prevent issues in the future since it's more likely to be what the original devs did.

* Debug var fix

* Match 3 more kcol funcs

* Remove unused lits

* Update nonmatching comments

* Fix ChkShdwDrawThrough
This commit is contained in:
LagoLunatic 2025-11-24 01:07:35 -05:00 committed by GitHub
parent 178191908c
commit 97c60c9092
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 252 additions and 258 deletions

View File

@ -175,9 +175,9 @@ public:
virtual bool RoofChk(dBgS_RoofChk*) = 0;
virtual bool SplGrpChk(dBgS_SplGrpChk*) = 0;
virtual bool SphChk(dBgS_SphChk*, void*) = 0;
/* 8007B0E4 */ virtual s32 GetGrpRoomIndex(cBgS_PolyInfo const&) const;
virtual s32 GetExitId(cBgS_PolyInfo const&) = 0;
virtual s32 GetPolyColor(cBgS_PolyInfo const&) = 0;
/* 8007B0E4 */ virtual int GetGrpRoomIndex(cBgS_PolyInfo const&) const;
virtual int GetExitId(cBgS_PolyInfo const&) = 0;
virtual int GetPolyColor(cBgS_PolyInfo const&) = 0;
virtual BOOL GetHorseNoEntry(cBgS_PolyInfo const&) = 0;
virtual int GetSpecialCode(cBgS_PolyInfo const&) = 0;
virtual int GetSpecialCode(int) = 0;
@ -194,16 +194,16 @@ public:
virtual u32 GetUnderwaterRoofCode(int) = 0;
virtual int GetMonkeyBarsCode(cBgS_PolyInfo const&) = 0;
virtual int GetLinkNo(cBgS_PolyInfo const&) = 0;
virtual s32 GetWallCode(cBgS_PolyInfo const&) = 0;
virtual int GetWallCode(cBgS_PolyInfo const&) = 0;
virtual int GetPolyAtt0(cBgS_PolyInfo const&) = 0;
virtual int GetPolyAtt1(cBgS_PolyInfo const&) = 0;
virtual int GetGroundCode(cBgS_PolyInfo const&) = 0;
virtual u32 GetIronBallThrough(int) = 0;
virtual u32 GetAttackThrough(int) = 0;
virtual s32 GetCamMoveBG(cBgS_PolyInfo const&) = 0;
virtual s32 GetRoomCamId(cBgS_PolyInfo const&) = 0;
virtual s32 GetRoomPathId(cBgS_PolyInfo const&) = 0;
virtual s32 GetRoomPathPntNo(cBgS_PolyInfo const&) = 0;
virtual int GetCamMoveBG(cBgS_PolyInfo const&) = 0;
virtual int GetRoomCamId(cBgS_PolyInfo const&) = 0;
virtual int GetRoomPathId(cBgS_PolyInfo const&) = 0;
virtual int GetRoomPathPntNo(cBgS_PolyInfo const&) = 0;
virtual u8 GetPolyGrpRoomInfId(cBgS_PolyInfo const&) = 0;
virtual int GetGrpSoundId(cBgS_PolyInfo const&) = 0;
virtual void CrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*) = 0;
@ -287,8 +287,8 @@ public:
/* 8007D470 */ virtual bool RoofChk(dBgS_RoofChk*);
/* 8007D830 */ virtual bool SplGrpChk(dBgS_SplGrpChk*);
/* 8007DF00 */ virtual bool SphChk(dBgS_SphChk*, void*);
/* 8007B3AC */ virtual s32 GetExitId(cBgS_PolyInfo const&);
/* 8007B3D8 */ virtual s32 GetPolyColor(cBgS_PolyInfo const&);
/* 8007B3AC */ virtual int GetExitId(cBgS_PolyInfo const&);
/* 8007B3D8 */ virtual int GetPolyColor(cBgS_PolyInfo const&);
/* 8007B404 */ virtual BOOL GetHorseNoEntry(cBgS_PolyInfo const&);
/* 8007B430 */ virtual int GetSpecialCode(cBgS_PolyInfo const&);
/* 8007B460 */ virtual int GetSpecialCode(int);
@ -305,16 +305,16 @@ public:
/* 8007B630 */ virtual u32 GetUnderwaterRoofCode(int);
/* 8007B4B4 */ virtual int GetMonkeyBarsCode(cBgS_PolyInfo const&);
/* 8007B6AC */ virtual int GetLinkNo(cBgS_PolyInfo const&);
/* 8007B6D8 */ virtual s32 GetWallCode(cBgS_PolyInfo const&);
/* 8007B6D8 */ virtual int GetWallCode(cBgS_PolyInfo const&);
/* 8007B704 */ virtual int GetPolyAtt0(cBgS_PolyInfo const&);
/* 8007B734 */ virtual int GetPolyAtt1(cBgS_PolyInfo const&);
/* 8007B760 */ virtual int GetGroundCode(cBgS_PolyInfo const&);
/* 8007B7DC */ virtual u32 GetIronBallThrough(int);
/* 8007B800 */ virtual u32 GetAttackThrough(int);
/* 8007B87C */ virtual s32 GetCamMoveBG(cBgS_PolyInfo const&);
/* 8007B8A8 */ virtual s32 GetRoomCamId(cBgS_PolyInfo const&);
/* 8007B8D8 */ virtual s32 GetRoomPathId(cBgS_PolyInfo const&);
/* 8007B904 */ virtual s32 GetRoomPathPntNo(cBgS_PolyInfo const&);
/* 8007B87C */ virtual int GetCamMoveBG(cBgS_PolyInfo const&);
/* 8007B8A8 */ virtual int GetRoomCamId(cBgS_PolyInfo const&);
/* 8007B8D8 */ virtual int GetRoomPathId(cBgS_PolyInfo const&);
/* 8007B904 */ virtual int GetRoomPathPntNo(cBgS_PolyInfo const&);
/* 8007DF28 */ virtual u8 GetPolyGrpRoomInfId(cBgS_PolyInfo const&);
/* 8007DF58 */ virtual int GetGrpSoundId(cBgS_PolyInfo const&);
/* 8007DF88 */ virtual void CrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*,

View File

@ -67,9 +67,9 @@ public:
virtual bool RoofChk(dBgS_RoofChk*) = 0;
virtual bool SplGrpChk(dBgS_SplGrpChk*) = 0;
virtual bool SphChk(dBgS_SphChk*, void*) = 0;
virtual s32 GetGrpRoomIndex(cBgS_PolyInfo const&) const = 0;
virtual s32 GetExitId(cBgS_PolyInfo const&) = 0;
virtual s32 GetPolyColor(cBgS_PolyInfo const&) = 0;
virtual int GetGrpRoomIndex(cBgS_PolyInfo const&) const = 0;
virtual int GetExitId(cBgS_PolyInfo const&) = 0;
virtual int GetPolyColor(cBgS_PolyInfo const&) = 0;
virtual BOOL GetHorseNoEntry(cBgS_PolyInfo const&) = 0;
virtual int GetSpecialCode(cBgS_PolyInfo const&) = 0;
virtual int GetSpecialCode(int) = 0;
@ -86,16 +86,16 @@ public:
virtual u32 GetUnderwaterRoofCode(int) = 0;
virtual int GetMonkeyBarsCode(cBgS_PolyInfo const&) = 0;
virtual int GetLinkNo(cBgS_PolyInfo const&) = 0;
virtual s32 GetWallCode(cBgS_PolyInfo const&) = 0;
virtual int GetWallCode(cBgS_PolyInfo const&) = 0;
virtual int GetPolyAtt0(cBgS_PolyInfo const&) = 0;
virtual int GetPolyAtt1(cBgS_PolyInfo const&) = 0;
virtual int GetGroundCode(cBgS_PolyInfo const&) = 0;
virtual u32 GetIronBallThrough(int) = 0;
virtual u32 GetAttackThrough(int) = 0;
virtual s32 GetCamMoveBG(cBgS_PolyInfo const&) = 0;
virtual s32 GetRoomCamId(cBgS_PolyInfo const&) = 0;
virtual s32 GetRoomPathId(cBgS_PolyInfo const&) = 0;
virtual s32 GetRoomPathPntNo(cBgS_PolyInfo const&) = 0;
virtual int GetCamMoveBG(cBgS_PolyInfo const&) = 0;
virtual int GetRoomCamId(cBgS_PolyInfo const&) = 0;
virtual int GetRoomPathId(cBgS_PolyInfo const&) = 0;
virtual int GetRoomPathPntNo(cBgS_PolyInfo const&) = 0;
virtual u8 GetPolyGrpRoomInfId(cBgS_PolyInfo const&) = 0;
virtual int GetGrpSoundId(cBgS_PolyInfo const&) = 0;
virtual void CrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*) = 0;

View File

@ -47,7 +47,7 @@ public:
/* 8007E9D4 */ bool GetTriPnt(KC_PrismData const*, Vec*, Vec*, Vec*) const;
/* 8007EB70 */ void getPolyCode(int, dBgPc*) const;
/* 8007EBC4 */ bool chkPolyThrough(dBgPc*, cBgS_PolyPassChk*, cBgS_GrpPassChk*, cXyz&) const;
/* 8007FF00 */ u8 ChkShdwDrawThrough(dBgPc*);
/* 8007FF00 */ bool ChkShdwDrawThrough(dBgPc*);
/* 8007E74C */ virtual ~dBgWKCol();
/* 8007E86C */ virtual bool ChkNotReady() const;
@ -69,9 +69,9 @@ public:
/* 80081E18 */ virtual bool RoofChk(dBgS_RoofChk*);
/* 80082184 */ virtual bool SplGrpChk(dBgS_SplGrpChk*);
/* 800824EC */ virtual bool SphChk(dBgS_SphChk*, void*);
/* 800829F0 */ virtual s32 GetGrpRoomIndex(cBgS_PolyInfo const&) const;
/* 80082A20 */ virtual s32 GetExitId(cBgS_PolyInfo const&);
/* 80082A50 */ virtual s32 GetPolyColor(cBgS_PolyInfo const&);
/* 800829F0 */ virtual int GetGrpRoomIndex(cBgS_PolyInfo const&) const;
/* 80082A20 */ virtual int GetExitId(cBgS_PolyInfo const&);
/* 80082A50 */ virtual int GetPolyColor(cBgS_PolyInfo const&);
/* 80082A80 */ virtual BOOL GetHorseNoEntry(cBgS_PolyInfo const&);
/* 80082AB0 */ virtual int GetSpecialCode(cBgS_PolyInfo const&);
/* 80082AE0 */ virtual int GetSpecialCode(int);
@ -88,16 +88,16 @@ public:
/* 80082CCC */ virtual u32 GetUnderwaterRoofCode(int);
/* 80082B3C */ virtual int GetMonkeyBarsCode(cBgS_PolyInfo const&);
/* 80082D24 */ virtual int GetLinkNo(cBgS_PolyInfo const&);
/* 80082D54 */ virtual s32 GetWallCode(cBgS_PolyInfo const&);
/* 80082D54 */ virtual int GetWallCode(cBgS_PolyInfo const&);
/* 80082D84 */ virtual int GetPolyAtt0(cBgS_PolyInfo const&);
/* 80082DB4 */ virtual int GetPolyAtt1(cBgS_PolyInfo const&);
/* 80082DE4 */ virtual int GetGroundCode(cBgS_PolyInfo const&);
/* 80082E14 */ virtual u32 GetIronBallThrough(int);
/* 80082E40 */ virtual u32 GetAttackThrough(int);
/* 80082E6C */ virtual s32 GetCamMoveBG(cBgS_PolyInfo const&);
/* 80082E9C */ virtual s32 GetRoomCamId(cBgS_PolyInfo const&);
/* 80082ECC */ virtual s32 GetRoomPathId(cBgS_PolyInfo const&);
/* 80082EFC */ virtual s32 GetRoomPathPntNo(cBgS_PolyInfo const&);
/* 80082E6C */ virtual int GetCamMoveBG(cBgS_PolyInfo const&);
/* 80082E9C */ virtual int GetRoomCamId(cBgS_PolyInfo const&);
/* 80082ECC */ virtual int GetRoomPathId(cBgS_PolyInfo const&);
/* 80082EFC */ virtual int GetRoomPathPntNo(cBgS_PolyInfo const&);
/* 80082F2C */ virtual u8 GetPolyGrpRoomInfId(cBgS_PolyInfo const&);
/* 80082F5C */ virtual int GetGrpSoundId(cBgS_PolyInfo const&);
/* 80082F8C */ virtual void CrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*,

View File

@ -309,7 +309,7 @@ void cBgW::MakeNodeTreeGrpRp(int i_grp_idx) {
*pm_node_tree[pm_bgd->m_g_tbl[i_grp_idx].m_tree_idx].GetMaxP());
}
s32 child_idx = pm_bgd->m_g_tbl[i_grp_idx].m_first_child;
int child_idx = pm_bgd->m_g_tbl[i_grp_idx].m_first_child;
while (true) {
if (child_idx == 0xFFFF)
break;
@ -518,7 +518,7 @@ bool cBgW::LineCheckGrpRp(cBgS_LinChk* i_linchk, int i_grp_idx, int depth) {
chk = true;
}
s32 child_idx = pm_bgd->m_g_tbl[i_grp_idx].m_first_child;
int child_idx = pm_bgd->m_g_tbl[i_grp_idx].m_first_child;
while (true) {
if (child_idx == 0xFFFF)
break;
@ -655,7 +655,7 @@ bool cBgW::GroundCrossGrpRp(cBgS_GndChk* i_gndchk, int i_grp_idx, int i_depth) {
chk = true;
}
s32 child_idx = pm_bgd->m_g_tbl[i_grp_idx].m_first_child;
int child_idx = pm_bgd->m_g_tbl[i_grp_idx].m_first_child;
while (true) {
if (child_idx == 0xFFFF)
break;
@ -772,7 +772,7 @@ void cBgW::ShdwDrawGrpRp(cBgS_ShdwDraw* i_shdw, int i_idx) {
ShdwDrawRp(i_shdw, pm_bgd->m_g_tbl[i_idx].m_tree_idx);
}
s32 child_idx = pm_bgd->m_g_tbl[i_idx].m_first_child;
int child_idx = pm_bgd->m_g_tbl[i_idx].m_first_child;
while (true) {
if (child_idx == 0xFFFF) {
break;
@ -806,7 +806,7 @@ bool cBgW::ChkGrpThrough(int param_0, cBgS_GrpPassChk* param_1, int param_2) {
}
/* 8007B0E4-8007B164 075A24 0080+00 2/0 1/0 0/0 .text GetGrpRoomIndex__4cBgWCFRC13cBgS_PolyInfo */
s32 cBgW::GetGrpRoomIndex(cBgS_PolyInfo const& poly) const {
int cBgW::GetGrpRoomIndex(cBgS_PolyInfo const& poly) const {
int grp_index = GetTriGrp(poly.GetPolyIndex());
u16 parent_idx = pm_bgd->m_g_tbl[grp_index].m_parent;
@ -888,12 +888,12 @@ u32 cBgW::GetMaskPolyInf0_NoShift(int poly_index, u32 mask) const {
/* 8007B3AC-8007B3D8 075CEC 002C+00 1/0 1/0 0/0 .text GetExitId__4dBgWFRC13cBgS_PolyInfo
*/
s32 dBgW::GetExitId(cBgS_PolyInfo const& poly) {
int dBgW::GetExitId(cBgS_PolyInfo const& poly) {
return GetPolyInf0(poly.GetPolyIndex(), 0x3F, 0);
}
/* 8007B3D8-8007B404 075D18 002C+00 1/0 1/0 0/0 .text GetPolyColor__4dBgWFRC13cBgS_PolyInfo */
s32 dBgW::GetPolyColor(cBgS_PolyInfo const& poly) {
int dBgW::GetPolyColor(cBgS_PolyInfo const& poly) {
return GetPolyInf0(poly.GetPolyIndex(), 0x3FC0, 6);
}
@ -986,7 +986,7 @@ int dBgW::GetLinkNo(cBgS_PolyInfo const& poly) {
}
/* 8007B6D8-8007B704 076018 002C+00 1/0 1/0 0/0 .text GetWallCode__4dBgWFRC13cBgS_PolyInfo */
s32 dBgW::GetWallCode(cBgS_PolyInfo const& poly) {
int dBgW::GetWallCode(cBgS_PolyInfo const& poly) {
return GetPolyInf1(poly.GetPolyIndex(), 0xF00, 8);
}
@ -1029,22 +1029,22 @@ u32 cBgW::GetPolyInf2(int poly_index, u32 mask, u32 shift) const {
}
/* 8007B87C-8007B8A8 0761BC 002C+00 1/0 1/0 0/0 .text GetCamMoveBG__4dBgWFRC13cBgS_PolyInfo */
s32 dBgW::GetCamMoveBG(cBgS_PolyInfo const& poly) {
int dBgW::GetCamMoveBG(cBgS_PolyInfo const& poly) {
return GetPolyInf2(poly.GetPolyIndex(), 0xFF, 0);
}
/* 8007B8A8-8007B8D8 0761E8 0030+00 1/0 1/0 0/0 .text GetRoomCamId__4dBgWFRC13cBgS_PolyInfo */
s32 dBgW::GetRoomCamId(cBgS_PolyInfo const& poly) {
int dBgW::GetRoomCamId(cBgS_PolyInfo const& poly) {
return GetPolyInf2(poly.GetPolyIndex(), 0xFF00, 8);
}
/* 8007B8D8-8007B904 076218 002C+00 1/0 1/0 0/0 .text GetRoomPathId__4dBgWFRC13cBgS_PolyInfo */
s32 dBgW::GetRoomPathId(cBgS_PolyInfo const& poly) {
int dBgW::GetRoomPathId(cBgS_PolyInfo const& poly) {
return GetPolyInf2(poly.GetPolyIndex(), 0xFF0000, 16);
}
/* 8007B904-8007B930 076244 002C+00 1/0 1/0 0/0 .text GetRoomPathPntNo__4dBgWFRC13cBgS_PolyInfo */
s32 dBgW::GetRoomPathPntNo(cBgS_PolyInfo const& poly) {
int dBgW::GetRoomPathPntNo(cBgS_PolyInfo const& poly) {
return GetPolyInf2(poly.GetPolyIndex(), 0xFF000000, 24);
}
@ -1369,7 +1369,7 @@ bool dBgW::WallCorrectGrpRp(dBgS_Acch* i_acch, int i_idx, int i_depth) {
chk = true;
}
s32 child_idx = pm_bgd->m_g_tbl[i_idx].m_first_child;
int child_idx = pm_bgd->m_g_tbl[i_idx].m_first_child;
while (true) {
if (child_idx == 0xFFFF) {
break;
@ -1527,7 +1527,7 @@ bool dBgW::WallCorrectGrpRpSort(dBgS_Acch* i_acch, int i_idx, int i_depth) {
WallCorrectRpSort(i_acch, pm_bgd->m_g_tbl[i_idx].m_tree_idx);
}
s32 child_idx = pm_bgd->m_g_tbl[i_idx].m_first_child;
int child_idx = pm_bgd->m_g_tbl[i_idx].m_first_child;
while (true) {
if (child_idx == 0xFFFF) {
break;
@ -1832,7 +1832,7 @@ bool dBgW::RoofChkGrpRp(dBgS_RoofChk* i_roofchk, int i_idx, int i_depth) {
chk = true;
}
s32 child_idx = data->m_first_child;
int child_idx = data->m_first_child;
while (true) {
if (child_idx == 0xFFFF) {
break;
@ -1929,7 +1929,7 @@ bool dBgW::SplGrpChkGrpRp(dBgS_SplGrpChk* i_splchk, int i_idx, int i_depth) {
chk = true;
}
s32 child_idx = data->m_first_child;
int child_idx = data->m_first_child;
while (true) {
if (child_idx == 0xFFFF) {
break;
@ -2008,7 +2008,7 @@ void dBgW::CaptPolyGrpRp(dBgS_CaptPoly& i_captpoly, int i_idx, int i_depth) {
CaptPolyRp(i_captpoly, pm_bgd->m_g_tbl[i_idx].m_tree_idx);
}
s32 child_idx = pm_bgd->m_g_tbl[i_idx].m_first_child;
int child_idx = pm_bgd->m_g_tbl[i_idx].m_first_child;
while (true) {
if (child_idx == 0xFFFF) {
break;
@ -2112,7 +2112,7 @@ bool dBgW::SphChkGrpRp(dBgS_SphChk* i_sphchk, void* i_data, int i_idx, int i_dep
chk = true;
}
s32 child_idx = data->m_first_child;
int child_idx = data->m_first_child;
while (true) {
if (child_idx == 0xFFFF) {
break;

View File

@ -257,7 +257,6 @@ bool dBgWKCol::chkPolyThrough(dBgPc* ppoly, cBgS_PolyPassChk* ppolypasschk,
/* 8007EE34-8007F628 079774 07F4+00 1/0 0/0 0/0 .text LineCheck__8dBgWKColFP11cBgS_LinChk
*/
// NONMATCHING
bool dBgWKCol::LineCheck(cBgS_LinChk* plinchk) {
cXyz* pstart = plinchk->GetStartP();
cXyz* pcross = plinchk->GetCrossP();
@ -331,8 +330,8 @@ bool dBgWKCol::LineCheck(cBgS_LinChk* plinchk) {
int sp8C;
int sp88;
int sp84 = (u32)sp108.x;
if (sp84 > (s32)~m_pkc_head->m_area_x_width_mask) {
sp84 = (s32)~m_pkc_head->m_area_x_width_mask;
if (sp84 > (int)~m_pkc_head->m_area_x_width_mask) {
sp84 = (int)~m_pkc_head->m_area_x_width_mask;
}
if (sp90 < sp84) {
@ -386,21 +385,21 @@ bool dBgWKCol::LineCheck(cBgS_LinChk* plinchk) {
int x_sp38 = sp90;
do {
u32 block = (u32)m_pkc_head->m_block_data;
u16* block = (u16*)m_pkc_head->m_block_data;
u32 shift = m_pkc_head->m_block_width_shift;
s32 offset = (((u32)z_sp40 >> shift) << m_pkc_head->m_area_xy_blocks_shift |
int offset = (((u32)z_sp40 >> shift) << m_pkc_head->m_area_xy_blocks_shift |
((u32)y_sp3C >> shift) << m_pkc_head->m_area_x_blocks_shift |
(u32)x_sp38 >> shift) << 2;
while ((offset = *(u32*)(block + offset)) >= 0) {
block += offset;
while ((offset = *(int*)((int)block + offset)) >= 0) {
block = (u16*)((int)block + offset);
shift--;
offset = (((u32)z_sp40 >> shift & 1) << 2 |
((u32)y_sp3C >> shift & 1) << 1 |
((u32)x_sp38 >> shift & 1) << 0) << 2;
}
u16* sp28 = (u16*)(block + (offset & 0x7FFFFFFF));
u16* sp28 = (u16*)((int)block + (offset & 0x7FFFFFFF));
shift = 1 << shift;
int cellSize = shift - 1;
@ -550,7 +549,6 @@ bool dBgWKCol::LineCheck(cBgS_LinChk* plinchk) {
}
/* 8007F628-8007F9A4 079F68 037C+00 1/0 0/0 0/0 .text GroundCross__8dBgWKColFP11cBgS_GndChk */
// NONMATCHING
bool dBgWKCol::GroundCross(cBgS_GndChk* i_chk) {
cXyz* point_p = (cXyz*)&i_chk->GetPointP();
cXyz sp58;
@ -587,10 +585,10 @@ bool dBgWKCol::GroundCross(cBgS_GndChk* i_chk) {
uintptr_t block = (uintptr_t)m_pkc_head->m_block_data;
u32 shift = m_pkc_head->m_block_width_shift;
int sp20 = 4 * (((u32)sp34 >> shift) << m_pkc_head->m_area_xy_blocks_shift |
((u32)sp30 >> shift) << m_pkc_head->m_area_x_blocks_shift |
(u32)sp38 >> shift);
while ((sp20 = (*(s32*)(block + sp20))) >= 0) {
block += sp20;
((u32)sp30 >> shift) << m_pkc_head->m_area_x_blocks_shift |
(u32)sp38 >> shift);
while ((sp20 = (*(int*)((int)block + sp20))) >= 0) {
block = (int)block + sp20;
shift--;
sp20 = (((u32)sp34 >> shift & 1) << 2 |
((u32)sp30 >> shift & 1) << 1 |
@ -644,7 +642,7 @@ bool dBgWKCol::GroundCross(cBgS_GndChk* i_chk) {
}
/* 8007F9A4-8007FF00 07A2E4 055C+00 1/0 0/0 0/0 .text ShdwDraw__8dBgWKColFP13cBgS_ShdwDraw */
// NONMATCHING
// NONMATCHING - stack
void dBgWKCol::ShdwDraw(cBgS_ShdwDraw* param_0) {
dBgPc polyCode_sp108;
@ -668,32 +666,32 @@ void dBgWKCol::ShdwDraw(cBgS_ShdwDraw* param_0) {
localMax_spC8.y += 1.0f;
localMax_spC8.z += 1.0f;
s32 minX_spA0 = (u32)localMin_spD4.x;
int minX_spA0 = (u32)localMin_spD4.x;
if (minX_spA0 < 0) {
minX_spA0 = 0;
}
s32 maxX_sp9C = (u32)localMax_spC8.x;
if (maxX_sp9C > (s32)~m_pkc_head->m_area_x_width_mask) {
int maxX_sp9C = (u32)localMax_spC8.x;
if (maxX_sp9C > (int)~m_pkc_head->m_area_x_width_mask) {
maxX_sp9C = ~m_pkc_head->m_area_x_width_mask;
}
if (minX_spA0 < maxX_sp9C) {
s32 minY_sp98 = (u32)localMin_spD4.y;
int minY_sp98 = (u32)localMin_spD4.y;
if (minY_sp98 < 0) {
minY_sp98 = 0;
}
s32 maxY_sp94 = (u32)localMax_spC8.y;
if (maxY_sp94 > (s32)~m_pkc_head->m_area_y_width_mask) {
int maxY_sp94 = (u32)localMax_spC8.y;
if (maxY_sp94 > (int)~m_pkc_head->m_area_y_width_mask) {
maxY_sp94 = ~m_pkc_head->m_area_y_width_mask;
}
if (minY_sp98 < maxY_sp94) {
s32 minZ_sp90 = (u32)localMin_spD4.z;
int minZ_sp90 = (u32)localMin_spD4.z;
if (minZ_sp90 < 0) {
minZ_sp90 = 0;
}
s32 maxZ_sp8C = (u32)localMax_spC8.z;
if (maxZ_sp8C > (s32)~m_pkc_head->m_area_z_width_mask) {
int maxZ_sp8C = (u32)localMax_spC8.z;
if (maxZ_sp8C > (int)~m_pkc_head->m_area_z_width_mask) {
maxZ_sp8C = ~m_pkc_head->m_area_z_width_mask;
}
@ -703,16 +701,16 @@ void dBgWKCol::ShdwDraw(cBgS_ShdwDraw* param_0) {
*el_sp88 = 0;
}
s32 remX_sp84;
s32 remY_sp80;
s32 remZ_sp7C;
int remX_sp84;
int remY_sp80;
int remZ_sp7C;
s32 stepY_sp78;
s32 stepZ_sp74;
int stepY_sp78;
int stepZ_sp74;
s32 best1_sp70;
s32 best2_sp6C;
s32 best3_sp68;
int best1_sp70;
int best2_sp6C;
int best3_sp68;
u16* topPrism1_sp64 = NULL;
u16* topPrism2_sp60 = NULL;
@ -723,10 +721,10 @@ void dBgWKCol::ShdwDraw(cBgS_ShdwDraw* param_0) {
u16* prev3_sp50;
prev3_sp50 = NULL;
s32 z_sp4C = minZ_sp90;
int z_sp4C = minZ_sp90;
do {
stepZ_sp74 = 1000000;
s32 y_sp48 = minY_sp98;
int y_sp48 = minY_sp98;
do {
stepY_sp78 = 1000000;
@ -734,16 +732,17 @@ void dBgWKCol::ShdwDraw(cBgS_ShdwDraw* param_0) {
best2_sp6C = NULL;
best3_sp68 = NULL;
s32 x_sp44 = minX_spA0;
int x_sp44 = minX_spA0;
do {
u32 block_sp40 = (u32)m_pkc_head->m_block_data;
u32 shift_sp3C = m_pkc_head->m_block_width_shift;
s32 offset_sp38 = 4 * (((u32)z_sp4C >> shift_sp3C) << m_pkc_head->m_area_xy_blocks_shift |
((u32)y_sp48 >> shift_sp3C) << m_pkc_head->m_area_x_blocks_shift |
(u32)x_sp44 >> shift_sp3C);
int offset_sp38 =
4 * (((u32)z_sp4C >> shift_sp3C) << m_pkc_head->m_area_xy_blocks_shift |
((u32)y_sp48 >> shift_sp3C) << m_pkc_head->m_area_x_blocks_shift |
(u32)x_sp44 >> shift_sp3C);
while ((offset_sp38 = *(u32*)(block_sp40 + offset_sp38)) >= 0) {
block_sp40 += offset_sp38;
while ((offset_sp38 = *(u32*)((int)block_sp40 + offset_sp38)) >= 0) {
block_sp40 = (int)block_sp40 + offset_sp38;
shift_sp3C--;
offset_sp38 = (((u32)z_sp4C >> shift_sp3C & 1) << 2 |
((u32)y_sp48 >> shift_sp3C & 1) << 1 |
@ -807,7 +806,7 @@ void dBgWKCol::ShdwDraw(cBgS_ShdwDraw* param_0) {
u32 temp_sp0C;
bool temp2_sp08 = true;
if (sp2c > (s32)MAX_DRAW_BIT) {
if (sp2c > (int)MAX_DRAW_BIT) {
OS_PANIC(0x47c,
"Failed assertion shift <= MAX_DRAW_BIT");
@ -886,17 +885,16 @@ void dBgWKCol::ShdwDraw(cBgS_ShdwDraw* param_0) {
/* 8007FF00-8007FF1C 07A840 001C+00 1/1 0/0 0/0 .text ChkShdwDrawThrough__8dBgWKColFP5dBgPc */
u8 dBgWKCol::ChkShdwDrawThrough(dBgPc* pcode) {
bool dBgWKCol::ChkShdwDrawThrough(dBgPc* pcode) {
if (pcode->getShdwThrough()) {
return true;
} else if (pcode->getArrowThrough()) {
return TRUE;
return true;
}
return FALSE;
return false;
}
/* 8007FF1C-80080330 07A85C 0414+00 1/0 0/0 0/0 .text CaptPoly__8dBgWKColFR13dBgS_CaptPoly */
// NONMATCHING
void dBgWKCol::CaptPoly(dBgS_CaptPoly& i_captpoly) {
const cM3dGAab* pbounds = i_captpoly.GetBndP();
cXyz min(*pbounds->GetMinP());
@ -943,43 +941,42 @@ void dBgWKCol::CaptPoly(dBgS_CaptPoly& i_captpoly) {
sp48 = (int)~m_pkc_head->m_area_z_width_mask;
}
s32 sp44;
s32 sp40;
s32 sp3C;
s32 sp38;
s32 sp34;
s32 sp30;
int sp44;
int sp40;
int sp3C;
int sp38;
int sp34;
int sp30;
if (sp4C < sp48) {
u16* sp2C = NULL;
u16* sp28 = NULL;
s32 sp24 = sp4C;
int sp24 = sp4C;
do {
sp34 = 1000000;
s32 sp20 = sp54;
int sp20 = sp54;
do {
sp38 = 1000000;
sp30 = 0;
s32 sp1C = sp5C;
int sp1C = sp5C;
do {
uintptr_t block_18 = (uintptr_t)m_pkc_head->m_block_data;
u32 r29 = m_pkc_head->m_block_width_shift;
s32 sp14 =
u16* sp18 = (u16*)m_pkc_head->m_block_data;
int r29 = m_pkc_head->m_block_width_shift;
int sp14 =
4 * (((u32)sp24 >> r29) << m_pkc_head->m_area_xy_blocks_shift |
((u32)sp20 >> r29) << m_pkc_head->m_area_x_blocks_shift |
(u32)sp1C >> r29);
while ((sp14 = (*(s32*)(block_18 + sp14))) >= 0) {
block_18 = (block_18 + sp14);
while ((sp14 = (*(int*)((int)sp18 + sp14))) >= 0) {
sp18 = (u16*)((int)sp18 + sp14);
r29--;
sp14 =
4 * (((u32)sp24 >> r29 & 1) << 2 |
((u32)sp20 >> r29 & 1) << 1 |
((u32)sp1C >> r29 & 1) << 0);
sp14 = (((u32)sp24 >> r29 & 1) << 2 |
((u32)sp20 >> r29 & 1) << 1 |
((u32)sp1C >> r29 & 1) << 0) << 2;
}
u16 *r28 = (u16*)(block_18 + (sp14 & 0x7FFFFFFF));
u16* r28 = (u16*)((int)sp18 + (sp14 & 0x7FFFFFFF));
r29 = 1 << r29;
int sp10 = r29 - 1;
@ -998,6 +995,7 @@ void dBgWKCol::CaptPoly(dBgS_CaptPoly& i_captpoly) {
if (sp40 > sp30 && r28[1] != 0) {
sp30 = sp40;
sp2C = r28;
sp2C = r28;
}
if (r28 != sp28) {
@ -1048,19 +1046,15 @@ struct wcs_data {
static wcs_data l_wcsbuf[84];
#ifdef DEBUG
/* 80452740-80452748 000D40 0008+00 2/2 0/0 0/0 .sdata2 @5300 */
SECTION_SDATA2 static u8 lit_5300[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80452748-80452750 000D48 0004+04 2/2 0/0 0/0 .sdata2 @5301 */
SECTION_SDATA2 static f32 lit_5301[1 + 1 /* padding */] = {
1.0f / 125.0f,
/* padding */
0.0f,
};
#endif
/* 80080330-800811A0 07AC70 0E70+00 1/0 0/0 0/0 .text WallCorrectSort__8dBgWKColFP9dBgS_Acch */
// NONMATCHING - regalloc
bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) {
bool sp_10 = false;
@ -1078,40 +1072,40 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) {
Vec* sp_13c = &m_pkc_head->m_area_min_pos;
PSVECSubtract(&sp_1a4, sp_13c, &sp_1a4);
PSVECSubtract(&sp_198, sp_13c, &sp_198);
u32 sp_138 = sp_1a4.x;
if ((s32)sp_138 < 0) {
int sp_138 = (u32)sp_1a4.x;
if (sp_138 < 0) {
sp_138 = 0;
}
u32 sp_134 = sp_198.x;
if ((s32)sp_134 > (s32)~m_pkc_head->m_area_x_width_mask) {
sp_134 = ~m_pkc_head->m_area_x_width_mask;
int sp_134 = (u32)sp_198.x;
if (sp_134 > (int)~m_pkc_head->m_area_x_width_mask) {
sp_134 = (int)~m_pkc_head->m_area_x_width_mask;
}
if ((s32)sp_138 >= (s32)sp_134) {
if (sp_138 >= sp_134) {
return false;
}
u32 sp_130 = sp_1a4.y;
if ((s32)sp_130 < 0) {
int sp_130 = (u32)sp_1a4.y;
if (sp_130 < 0) {
sp_130 = 0;
}
u32 sp_12c = sp_198.y;
if ((s32)sp_12c > (s32)~m_pkc_head->m_area_y_width_mask) {
sp_12c = ~m_pkc_head->m_area_y_width_mask;
int sp_12c = (u32)sp_198.y;
if (sp_12c > (int)~m_pkc_head->m_area_y_width_mask) {
sp_12c = (int)~m_pkc_head->m_area_y_width_mask;
}
if ((s32)sp_130 >= (s32)sp_12c) {
if (sp_130 >= sp_12c) {
return false;
}
u32 sp_128 = sp_1a4.z;
if ((s32)sp_128 < 0) {
int sp_128 = (u32)sp_1a4.z;
if (sp_128 < 0) {
sp_128 = 0;
}
u32 sp_124 = sp_198.z;
int sp_124 = (u32)sp_198.z;
if (sp_124 > ~m_pkc_head->m_area_z_width_mask) {
sp_124 = ~m_pkc_head->m_area_z_width_mask;
}
if ((s32)sp_128 >= (s32)sp_124) {
if (sp_128 >= sp_124) {
return false;
}
@ -1121,46 +1115,46 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) {
u16* sp_114 = NULL;
u16* sp_110 = NULL;
u16* sp_10c = NULL;
s32 sp_108;
s32 sp_104;
s32 sp_100;
int sp_108;
int sp_104;
int sp_100;
sp_18c.y = 0.0f;
s32 sp_fc;
s32 sp_f8;
s32 sp_f4;
s32 sp_f0;
s32 sp_ec;
int sp_fc;
int sp_f8;
int sp_f4;
int sp_f0;
int sp_ec;
wcs_data* sp_e8 = NULL;
s32 wcsIndex_e4 = 0;
u32 sp_e0 = sp_128;
int wcsIndex_e4 = 0;
int sp_e0 = sp_128;
do {
sp_f8 = 1000000;
u32 sp_dc = sp_130;
int sp_dc = sp_130;
do {
sp_fc = 1000000;
sp_f4 = 0;
sp_f0 = 0;
sp_ec = 0;
u32 sp_d8 = sp_138;
int sp_d8 = sp_138;
do {
KC_PrismData* block_d4 = m_pkc_head->m_block_data;
u32 shift_d0 = m_pkc_head->m_block_width_shift;
s32 sp_cc = 4 * (
(sp_e0 >> shift_d0) << m_pkc_head->m_area_xy_blocks_shift |
(sp_dc >> shift_d0) << m_pkc_head->m_area_x_blocks_shift |
(sp_d8 >> shift_d0));
while ((sp_cc = *(s32*)((int)block_d4 + sp_cc)) >= 0) {
block_d4 = (KC_PrismData*)((int)block_d4 + sp_cc);
u16* block_d4 = (u16*)m_pkc_head->m_block_data;
int shift_d0 = m_pkc_head->m_block_width_shift;
int sp_cc = 4 * (
((u32)sp_e0 >> shift_d0) << m_pkc_head->m_area_xy_blocks_shift |
((u32)sp_dc >> shift_d0) << m_pkc_head->m_area_x_blocks_shift |
((u32)sp_d8 >> shift_d0));
while ((sp_cc = *(int*)((int)block_d4 + sp_cc)) >= 0) {
block_d4 = (u16*)((int)block_d4 + sp_cc);
shift_d0--;
sp_cc = 4 * (
(((sp_e0 >> shift_d0) & 1) << 2) |
(((sp_dc >> shift_d0) & 1) << 1) |
(((sp_d8 >> shift_d0) & 1) << 0)
((((u32)sp_e0 >> shift_d0) & 1) << 2) |
((((u32)sp_dc >> shift_d0) & 1) << 1) |
((((u32)sp_d8 >> shift_d0) & 1) << 0)
);
}
u16* sp_c8 = (u16*)((int)block_d4 + (sp_cc & 0x7fffffff));
shift_d0 = 1 << shift_d0;
u32 sp_c4 = shift_d0 - 1;
int sp_c4 = shift_d0 - 1;
sp_108 = shift_d0 - (sp_d8 & sp_c4);
sp_104 = shift_d0 - (sp_dc & sp_c4);
sp_100 = shift_d0 - (sp_e0 & sp_c4);
@ -1219,9 +1213,9 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) {
sp_e8 = &l_wcsbuf[wcsIndex_e4];
wcsIndex_e4++;
} else {
#ifdef DEBUG
#ifdef DEBUG
lit_5300[0] = 1;
#endif
#endif
}
} else if (*sp_c8 != sp_e8->_4) {
if (sp_ac > sp_e8->_0) {
@ -1233,9 +1227,9 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) {
// local_118->_0 = l_wcsbuf[local_11c]._0;
wcsIndex_e4++;
} else {
#ifdef DEBUG
#ifdef DEBUG
lit_5300[0] = 1;
#endif
#endif
}
} else {
wcs_data* sp_a8 = sp_e8;
@ -1248,9 +1242,9 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) {
sp_a8->next = &l_wcsbuf[wcsIndex_e4];
wcsIndex_e4++;
} else {
#ifdef DEBUG
#ifdef DEBUG
lit_5300[0] = 1;
#endif
#endif
}
break;
@ -1268,9 +1262,9 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) {
sp_a8->next = &l_wcsbuf[wcsIndex_e4];
wcsIndex_e4++;
} else {
#ifdef DEBUG
#ifdef DEBUG
lit_5300[0] = 1;
#endif
#endif
}
break;
@ -1284,12 +1278,13 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) {
}
}
}
} while ((sp_d8 += sp_108) <= sp_134);
} while ((u32)(sp_d8 += sp_108) <= sp_134);
sp_120 = sp_114;
sp_11c = sp_110;
sp_118 = sp_10c;
} while ((sp_dc += sp_fc) <= sp_12c);
} while ((sp_e0 += sp_f8) <= sp_124);
} while ((u32)(sp_dc += sp_fc) <= sp_12c);
} while ((u32)(sp_e0 += sp_f8) <= sp_124);
wcs_data* sp_a4 = sp_e8;
while (true) {
if (sp_a4 == NULL) {
@ -1324,10 +1319,10 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) {
continue;
}
s32 sp_80;
s32 sp_7c;
s32 sp_78;
s32 sp_74 = 0;
int sp_80;
int sp_7c;
int sp_78;
int sp_74 = 0;
if (cM3d_IsZero(sp_144[0])) {
sp_74++;
@ -1415,10 +1410,10 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) {
JUT_ASSERT(0x77e, !isnan(pwi->GetPos()->x));
JUT_ASSERT(0x77f, !isnan(pwi->GetPos()->z));
JUT_ASSERT(0x782, -INFINITY < pwi->GetPos()->x &&
pwi->GetPos()->x < INFINITY);
JUT_ASSERT(0x784, -INFINITY < pwi->GetPos()->z &&
pwi->GetPos()->z < INFINITY);
JUT_ASSERT(0x782, -INF < pwi->GetPos()->x &&
pwi->GetPos()->x < INF);
JUT_ASSERT(0x784, -INF < pwi->GetPos()->z &&
pwi->GetPos()->z < INF);
pwi->CalcMovePosWork();
pwi->SetWallCirHit(cir_index_8c);
@ -1468,10 +1463,10 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) {
JUT_ASSERT(0x7bf, !isnan(pwi->GetPos()->x));
JUT_ASSERT(0x7c0, !isnan(pwi->GetPos()->z));
JUT_ASSERT(0x7c3, -INFINITY < pwi->GetPos()->x &&
pwi->GetPos()->x < INFINITY)
JUT_ASSERT(0x7c5, -INFINITY < pwi->GetPos()->z &&
pwi->GetPos()->z < INFINITY)
JUT_ASSERT(0x7c3, -INF < pwi->GetPos()->x &&
pwi->GetPos()->x < INF)
JUT_ASSERT(0x7c5, -INF < pwi->GetPos()->z &&
pwi->GetPos()->z < INF)
pwi->CalcMovePosWork();
pwi->SetWallCirHit(cir_index_8c);
@ -1521,6 +1516,7 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) {
/* 800811A0-80081E18 07BAE0 0C78+00 1/0 0/0 0/0 .text WallCorrect__8dBgWKColFP9dBgS_Acch
*/
// NONMATCHING - missing mr
bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) {
bool sp10 = false;
@ -1598,34 +1594,35 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) {
int spC8;
int spC4;
int spC0;
u32 spBC = spFC;
int spBC = spFC;
do {
spCC = 1000000;
u32 spB8 = sp104;
int spB8 = sp104;
do {
spD0 = 1000000;
spC8 = 0;
spC4 = 0;
spC0 = 0;
u32 spB4 = sp10C;
int spB4 = sp10C;
do {
uintptr_t spB0 = (uintptr_t)m_pkc_head->m_block_data;
u16* spB0 = (u16*)m_pkc_head->m_block_data;
int spAC = m_pkc_head->m_block_width_shift;
intptr_t spA8 = (((spBC >> spAC) << m_pkc_head->m_area_xy_blocks_shift) |
((spB8 >> spAC) << m_pkc_head->m_area_x_blocks_shift) |
(spB4 >> spAC)) * 4;
int spA8 =
4 * (((u32)spBC >> spAC) << m_pkc_head->m_area_xy_blocks_shift |
((u32)spB8 >> spAC) << m_pkc_head->m_area_x_blocks_shift |
(u32)spB4 >> spAC);
while ((spA8 = *(int*)(spB0 + spA8)) >= 0) {
spB0 += spA8;
while ((spA8 = *(int*)((int)spB0 + spA8)) >= 0) {
spB0 = (u16*)((int)spB0 + spA8);
spAC--;
spA8 = (((spBC >> spAC) & 1) << 2 |
((spB8 >> spAC) & 1) << 1 |
((spB4 >> spAC) & 1) << 0) * 4;
spA8 = ((((u32)spBC >> spAC) & 1) << 2 |
(((u32)spB8 >> spAC) & 1) << 1 |
(((u32)spB4 >> spAC) & 1) << 0) * 4;
}
u16* spA4 = (u16*)((int)spB0 + (spA8 & 0x7fffffff));
u16* spA4 = (u16*)((int)spB0 + (spA8 & 0x7FFFFFFF));
spAC = 1 << spAC;
u32 spA0 = spAC - 1;
spDC = spAC - (spB4 & spA0);
@ -1673,8 +1670,7 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) {
continue;
}
f32 sp94 = JMAFastSqrt(sp98->x * sp98->x +
sp98->z * sp98->z);
f32 sp94 = JMAFastSqrt(sp98->x * sp98->x + sp98->z * sp98->z);
if (cM3d_IsZero(sp94)) {
continue;
}
@ -1818,8 +1814,8 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) {
pwi->GetPos()->z += sp38 * sp98->z;
JUT_ASSERT(0x989, !isnan(pwi->GetPos()->x));
JUT_ASSERT(0x98a, !isnan(pwi->GetPos()->z));
JUT_ASSERT(0x98d, -INFINITY < pwi->GetPos()->x && pwi->GetPos()->x < INFINITY);
JUT_ASSERT(0x98f, -INFINITY < pwi->GetPos()->z && pwi->GetPos()->z < INFINITY);
JUT_ASSERT(0x98d, -INF < pwi->GetPos()->x && pwi->GetPos()->x < INF);
JUT_ASSERT(0x98f, -INF < pwi->GetPos()->z && pwi->GetPos()->z < INF);
pwi->CalcMovePosWork();
pwi->SetWallCirHit(sp8C);
pwi->SetWallPolyIndex(sp8C,
@ -1856,9 +1852,9 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) {
JUT_ASSERT(0x9d2, !isnan(pwi->GetPos()->z));
JUT_ASSERT(0x9d5, -INFINITY < pwi->GetPos()->x && pwi->GetPos()->x < INFINITY);
JUT_ASSERT(0x9d5, -INF < pwi->GetPos()->x && pwi->GetPos()->x < INF);
JUT_ASSERT(0x9d7, -INFINITY < pwi->GetPos()->z && pwi->GetPos()->z < INFINITY);
JUT_ASSERT(0x9d7, -INF < pwi->GetPos()->z && pwi->GetPos()->z < INF);
pwi->CalcMovePosWork();
pwi->SetWallCirHit(sp8C);
@ -1883,9 +1879,9 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) {
JUT_ASSERT(0xa06, !isnan(pwi->GetPos()->x));
JUT_ASSERT(0xa07, !isnan(pwi->GetPos()->z));
JUT_ASSERT(0xa0a, -INFINITY < pwi->GetPos()->x && pwi->GetPos()->x < INFINITY);
JUT_ASSERT(0xa0a, -INF < pwi->GetPos()->x && pwi->GetPos()->x < INF);
JUT_ASSERT(0xa0c, -INFINITY < pwi->GetPos()->z && pwi->GetPos()->z < INFINITY);
JUT_ASSERT(0xa0c, -INF < pwi->GetPos()->z && pwi->GetPos()->z < INF);
pwi->CalcMovePosWork();
pwi->SetWallCirHit(sp8C);
@ -1898,13 +1894,13 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) {
}
}
}
} while ((spB4 += spDC) <= sp108);
} while ((u32)(spB4 += spDC) <= sp108);
spF4 = spE8;
spF0 = spE4;
spEC = spE0;
} while ((spB8 += spD0) <= sp100);
} while ((spBC += spCC) <= spF8);
} while ((u32)(spB8 += spD0) <= sp100);
} while ((u32)(spBC += spCC) <= spF8);
return sp10;
}
@ -1920,20 +1916,20 @@ bool dBgWKCol::RoofChk(dBgS_RoofChk* param_0) {
PSVECSubtract(sp40, &m_pkc_head->m_area_min_pos, &sp74);
u32 sp3C = sp74.x;
if ((s32)sp3C < 0) {
if ((int)sp3C < 0) {
return false;
}
if ((s32)sp3C > (s32)~m_pkc_head->m_area_x_width_mask) {
if ((int)sp3C > (int)~m_pkc_head->m_area_x_width_mask) {
return false;
}
u32 sp38 = sp74.z;
if ((s32)sp38 < 0) {
if ((int)sp38 < 0) {
return false;
}
if ((s32)sp38 > (s32)~m_pkc_head->m_area_z_width_mask) {
if ((int)sp38 > (int)~m_pkc_head->m_area_z_width_mask) {
return false;
}
@ -1950,10 +1946,10 @@ bool dBgWKCol::RoofChk(dBgS_RoofChk* param_0) {
do {
uintptr_t sp2C = (uintptr_t)m_pkc_head->m_block_data;
u32 sp28 = m_pkc_head->m_block_width_shift;
s32 sp24 = 4 * (((u32)sp38 >> sp28) << m_pkc_head->m_area_xy_blocks_shift |
int sp24 = 4 * (((u32)sp38 >> sp28) << m_pkc_head->m_area_xy_blocks_shift |
((u32)sp34 >> sp28) << m_pkc_head->m_area_x_blocks_shift |
(u32)sp3C >> sp28);
while ((sp24 = (*(s32*)(sp2C + (sp24 & 0x7fffffff)))) >= 0) {
while ((sp24 = (*(int*)(sp2C + (sp24 & 0x7fffffff)))) >= 0) {
sp2C += sp24;
sp28--;
sp24 = (((u32)sp38 >> sp28 & 1) << 2 |
@ -1966,8 +1962,8 @@ bool dBgWKCol::RoofChk(dBgS_RoofChk* param_0) {
KC_PrismData* sp1C;
Vec* sp18;
Vec* sp14;
s32 sp10;
s32 sp0C;
int sp10;
int sp0C;
while (*++sp20 != 0) {
sp1C = getPrismData(*sp20);
@ -2030,46 +2026,45 @@ bool dBgWKCol::RoofChk(dBgS_RoofChk* param_0) {
sp28 = 1 << sp28;
sp10 = sp28 - 1;
sp34 += sp28 - (sp34 & sp10);
} while ((s32)sp34 <= (s32)sp30);
} while ((int)sp34 <= (int)sp30);
return sp0A;
}
/* 80082184-800824EC 07CAC4 0368+00 1/0 0/0 0/0 .text SplGrpChk__8dBgWKColFP14dBgS_SplGrpChk */
// NONMATCHING - regalloc + missing mr
bool dBgWKCol::SplGrpChk(dBgS_SplGrpChk* param_0) {
Vec* sp3C = &param_0->GetPosP();
cXyz sp54;
PSVECSubtract(sp3C, &m_pkc_head->m_area_min_pos, &sp54);
u32 sp38 = sp54.x;
if ((s32)sp38 < 0) {
if ((int)sp38 < 0) {
return false;
}
if ((s32)sp38 > (s32)~m_pkc_head->m_area_x_width_mask) {
if ((int)sp38 > (int)~m_pkc_head->m_area_x_width_mask) {
return false;
}
u32 sp34 = sp54.z;
if ((s32)sp34 < 0) {
if ((int)sp34 < 0) {
return false;
}
if ((s32)sp34 > (s32)~m_pkc_head->m_area_z_width_mask) {
if ((int)sp34 > (int)~m_pkc_head->m_area_z_width_mask) {
return false;
}
u32 sp30 = sp54.y;
if ((s32)sp30 < 0) {
if ((int)sp30 < 0) {
sp30 = 0;
}
u32 sp2C = param_0->GetRoof() - m_pkc_head->m_area_min_pos.y;
if ((s32)sp2C > (s32)~m_pkc_head->m_area_y_width_mask) {
if ((int)sp2C > (int)~m_pkc_head->m_area_y_width_mask) {
sp2C = ~m_pkc_head->m_area_y_width_mask;
}
if ((s32)sp30 >= (s32)sp2C) {
if ((int)sp30 >= (int)sp2C) {
return false;
}
@ -2077,11 +2072,11 @@ bool dBgWKCol::SplGrpChk(dBgS_SplGrpChk* param_0) {
do {
u32 sp28 = (u32)m_pkc_head->m_block_data;
u32 sp24 = m_pkc_head->m_block_width_shift;
s32 sp20 = 4 * (((u32)sp34 >> sp24) << m_pkc_head->m_area_xy_blocks_shift |
((u32)sp2C >> sp24) << m_pkc_head->m_area_x_blocks_shift |
int sp20 = 4 * (((u32)sp34 >> sp24) << m_pkc_head->m_area_xy_blocks_shift |
((u32)sp2C >> sp24) << m_pkc_head->m_area_x_blocks_shift |
(u32)sp38 >> sp24);
while ((sp20 = *(s32*)(sp28 + sp20)) >= 0) {
sp28 += sp20;
while ((sp20 = *(int*)((int)sp28 + sp20)) >= 0) {
sp28 = ((int)sp28 + sp20);
sp24--;
sp20 = 4 *
(((u32)sp34 >> sp24 & 1) << 2 |
@ -2146,14 +2141,13 @@ bool dBgWKCol::SplGrpChk(dBgS_SplGrpChk* param_0) {
u32 sp0C = sp24 - 1;
sp2C = sp2C & ~sp0C;
sp2C--;
} while ((s32)sp2C >= (s32)sp30);
} while ((int)sp2C >= (int)sp30);
return sp09;
}
/* 800824EC-800829AC 07CE2C 04C0+00 1/0 0/0 0/0 .text SphChk__8dBgWKColFP11dBgS_SphChkPv
*/
// NONMATCHING
bool dBgWKCol::SphChk(dBgS_SphChk* param_0, void* param_1) {
static Vec vtx_tbl[3];
@ -2239,20 +2233,20 @@ bool dBgWKCol::SphChk(dBgS_SphChk* param_0, void* param_1) {
sp38 = 0;
int sp24 = sp64;
do {
uintptr_t sp20 = (uintptr_t)m_pkc_head->m_block_data;
u16* sp20 = (u16*)m_pkc_head->m_block_data;
u32 var_r29 = m_pkc_head->m_block_width_shift;
int sp1C = (((u32)sp2C >> var_r29 << m_pkc_head->m_area_xy_blocks_shift) |
((u32)sp28 >> var_r29 << m_pkc_head->m_area_x_blocks_shift) |
((u32)sp24 >> var_r29)) * 4;
while ((sp1C = *(int*)(sp20 + sp1C)) >= 0) {
sp20 += sp1C;
while ((sp1C = *(int*)((int)sp20 + sp1C)) >= 0) {
sp20 = (u16*)((int)sp20 + sp1C);
var_r29--;
sp1C = (((u32)sp2C >> var_r29 & 1) << 2 |
((u32)sp28 >> var_r29 & 1) << 1 |
((u32)sp24 >> var_r29 & 1)) * 4;
}
u16* var_r28 = (u16*)(sp20 + (sp1C & 0x7fffffff));
u16* var_r28 = (u16*)((int)sp20 + (sp1C & 0x7fffffff));
var_r29 = 1 << var_r29;
int sp18 = var_r29 - 1;
sp4C = var_r29 - (sp24 & sp18);
@ -2318,8 +2312,8 @@ void dBgWKCol::GetTopUnder(f32* param_0, f32* param_1) const {
/* 800829F0-80082A20 07D330 0030+00 1/0 0/0 0/0 .text
* GetGrpRoomIndex__8dBgWKColCFRC13cBgS_PolyInfo */
s32 dBgWKCol::GetGrpRoomIndex(const cBgS_PolyInfo& poly) const {
s32 poly_index = poly.GetPolyIndex();
int dBgWKCol::GetGrpRoomIndex(const cBgS_PolyInfo& poly) const {
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2327,8 +2321,8 @@ s32 dBgWKCol::GetGrpRoomIndex(const cBgS_PolyInfo& poly) const {
}
/* 80082A20-80082A50 07D360 0030+00 1/0 0/0 0/0 .text GetExitId__8dBgWKColFRC13cBgS_PolyInfo */
s32 dBgWKCol::GetExitId(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int dBgWKCol::GetExitId(const cBgS_PolyInfo& poly) {
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2336,8 +2330,8 @@ s32 dBgWKCol::GetExitId(const cBgS_PolyInfo& poly) {
}
/* 80082A50-80082A80 07D390 0030+00 1/0 0/0 0/0 .text GetPolyColor__8dBgWKColFRC13cBgS_PolyInfo */
s32 dBgWKCol::GetPolyColor(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int dBgWKCol::GetPolyColor(const cBgS_PolyInfo& poly) {
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2371,7 +2365,7 @@ int dBgWKCol::GetSpecialCode(int poly_index) {
/* 80082B0C-80082B3C 07D44C 0030+00 1/0 0/0 0/0 .text GetMagnetCode__8dBgWKColFRC13cBgS_PolyInfo
*/
int dBgWKCol::GetMagnetCode(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2381,7 +2375,7 @@ int dBgWKCol::GetMagnetCode(const cBgS_PolyInfo& poly) {
/* 80082B3C-80082B6C 07D47C 0030+00 1/0 0/0 0/0 .text
* GetMonkeyBarsCode__8dBgWKColFRC13cBgS_PolyInfo */
int dBgWKCol::GetMonkeyBarsCode(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2471,7 +2465,7 @@ bool dBgWKCol::GetShdwThrough(int poly_index) {
/* 80082D24-80082D54 07D664 0030+00 1/0 0/0 0/0 .text GetLinkNo__8dBgWKColFRC13cBgS_PolyInfo */
int dBgWKCol::GetLinkNo(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2479,8 +2473,8 @@ int dBgWKCol::GetLinkNo(const cBgS_PolyInfo& poly) {
}
/* 80082D54-80082D84 07D694 0030+00 1/0 0/0 0/0 .text GetWallCode__8dBgWKColFRC13cBgS_PolyInfo */
s32 dBgWKCol::GetWallCode(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int dBgWKCol::GetWallCode(const cBgS_PolyInfo& poly) {
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2489,7 +2483,7 @@ s32 dBgWKCol::GetWallCode(const cBgS_PolyInfo& poly) {
/* 80082D84-80082DB4 07D6C4 0030+00 1/0 0/0 0/0 .text GetPolyAtt0__8dBgWKColFRC13cBgS_PolyInfo */
int dBgWKCol::GetPolyAtt0(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2498,7 +2492,7 @@ int dBgWKCol::GetPolyAtt0(const cBgS_PolyInfo& poly) {
/* 80082DB4-80082DE4 07D6F4 0030+00 1/0 0/0 0/0 .text GetPolyAtt1__8dBgWKColFRC13cBgS_PolyInfo */
int dBgWKCol::GetPolyAtt1(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2508,7 +2502,7 @@ int dBgWKCol::GetPolyAtt1(const cBgS_PolyInfo& poly) {
/* 80082DE4-80082E14 07D724 0030+00 1/0 0/0 0/0 .text GetGroundCode__8dBgWKColFRC13cBgS_PolyInfo
*/
int dBgWKCol::GetGroundCode(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2532,8 +2526,8 @@ u32 dBgWKCol::GetAttackThrough(int poly_index) {
}
/* 80082E6C-80082E9C 07D7AC 0030+00 1/0 0/0 0/0 .text GetCamMoveBG__8dBgWKColFRC13cBgS_PolyInfo */
s32 dBgWKCol::GetCamMoveBG(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int dBgWKCol::GetCamMoveBG(const cBgS_PolyInfo& poly) {
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2541,8 +2535,8 @@ s32 dBgWKCol::GetCamMoveBG(const cBgS_PolyInfo& poly) {
}
/* 80082E9C-80082ECC 07D7DC 0030+00 1/0 0/0 0/0 .text GetRoomCamId__8dBgWKColFRC13cBgS_PolyInfo */
s32 dBgWKCol::GetRoomCamId(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int dBgWKCol::GetRoomCamId(const cBgS_PolyInfo& poly) {
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2551,8 +2545,8 @@ s32 dBgWKCol::GetRoomCamId(const cBgS_PolyInfo& poly) {
/* 80082ECC-80082EFC 07D80C 0030+00 1/0 0/0 0/0 .text GetRoomPathId__8dBgWKColFRC13cBgS_PolyInfo
*/
s32 dBgWKCol::GetRoomPathId(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int dBgWKCol::GetRoomPathId(const cBgS_PolyInfo& poly) {
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2561,8 +2555,8 @@ s32 dBgWKCol::GetRoomPathId(const cBgS_PolyInfo& poly) {
/* 80082EFC-80082F2C 07D83C 0030+00 1/0 0/0 0/0 .text
* GetRoomPathPntNo__8dBgWKColFRC13cBgS_PolyInfo */
s32 dBgWKCol::GetRoomPathPntNo(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int dBgWKCol::GetRoomPathPntNo(const cBgS_PolyInfo& poly) {
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2572,7 +2566,7 @@ s32 dBgWKCol::GetRoomPathPntNo(const cBgS_PolyInfo& poly) {
/* 80082F2C-80082F5C 07D86C 0030+00 1/0 0/0 0/0 .text
* GetPolyGrpRoomInfId__8dBgWKColFRC13cBgS_PolyInfo */
u8 dBgWKCol::GetPolyGrpRoomInfId(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);
@ -2582,7 +2576,7 @@ u8 dBgWKCol::GetPolyGrpRoomInfId(const cBgS_PolyInfo& poly) {
/* 80082F5C-80082F8C 07D89C 0030+00 1/0 0/0 0/0 .text GetGrpSoundId__8dBgWKColFRC13cBgS_PolyInfo
*/
int dBgWKCol::GetGrpSoundId(const cBgS_PolyInfo& poly) {
s32 poly_index = poly.GetPolyIndex();
int poly_index = poly.GetPolyIndex();
dBgPc bgpc;
getPolyCode(poly_index, &bgpc);