diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2023-01-15 11:10:23 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-15 12:10:23 -0700 |
| commit | 5e05ae38f8541fddd79341bdcf75488b07ca9122 (patch) | |
| tree | 57e2806b6e48586e0d9bbde6d221236888137d04 /src | |
| parent | c90f9dfde9a3ee5dfa13475e2199ee491671507b (diff) | |
d_a_b_oh2 / d_a_obj_web0 / d_a_obj_web1 (#243)
* d_a_obj_web0 / d_a_obj_web1
* remove asm
* d_a_set_bgobj
* d_cc_s work
* remove asm
* build fix
* fix tp.py progress check and rel sha1 check
* clean up some bg files
Diffstat (limited to 'src')
| -rw-r--r-- | src/c/c_damagereaction.cpp | 13 | ||||
| -rw-r--r-- | src/d/a/d_a_obj_item.cpp | 150 | ||||
| -rw-r--r-- | src/d/bg/d_bg_pc.cpp | 7 | ||||
| -rw-r--r-- | src/d/bg/d_bg_s.cpp | 21 | ||||
| -rw-r--r-- | src/d/bg/d_bg_s_chk.cpp | 61 | ||||
| -rw-r--r-- | src/d/bg/d_bg_s_movebg_actor.cpp | 15 | ||||
| -rw-r--r-- | src/d/bg/d_bg_s_roof_chk.cpp | 97 | ||||
| -rw-r--r-- | src/d/bg/d_bg_s_sph_chk.cpp | 103 | ||||
| -rw-r--r-- | src/d/bg/d_bg_s_spl_grp_chk.cpp | 88 | ||||
| -rw-r--r-- | src/d/bg/d_bg_s_wtr_chk.cpp | 7 | ||||
| -rw-r--r-- | src/d/bg/d_bg_w_base.cpp | 121 | ||||
| -rw-r--r-- | src/d/cc/d_cc_mass_s.cpp | 13 | ||||
| -rw-r--r-- | src/d/cc/d_cc_s.cpp | 847 | ||||
| -rw-r--r-- | src/d/com/d_com_static.cpp | 4 | ||||
| -rw-r--r-- | src/d/d_jnt_col.cpp | 21 | ||||
| -rw-r--r-- | src/m_Do/m_Do_machine_exception.cpp | 17 |
16 files changed, 750 insertions, 835 deletions
diff --git a/src/c/c_damagereaction.cpp b/src/c/c_damagereaction.cpp index 2b04c61fcb..5a87192790 100644 --- a/src/c/c_damagereaction.cpp +++ b/src/c/c_damagereaction.cpp @@ -56,6 +56,17 @@ extern "C" extern u8 g_dComIfG_gameInfo[122384]; // /* ############################################################################################## */ +/* 80450C98-80450C9C -00001 0004+00 0/0 0/0 50/50 .sbss None */ +extern u8 struct_80450C98[4]; +u8 struct_80450C98[4]; + +/* 80450C9C-80450CA0 -00001 0004+00 0/0 0/0 6/6 .sbss None */ +#pragma push +#pragma force_active on +u8 cDmr_SkipInfo; +#pragma pop + +/* ############################################################################################## */ /* 80451BA8-80451BAC 0001A8 0004+00 1/1 0/0 0/0 .sdata2 @3731 */ SECTION_SDATA2 static f32 lit_3731 = 25.0f; @@ -97,7 +108,7 @@ void JPTraceParticleCallBack4::draw(JPABaseEmitter* param_0, JPABaseParticle* pa #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cDmrNowMidnaTalk() { +asm BOOL cDmrNowMidnaTalk() { nofralloc #include "asm/c/c_damagereaction/cDmrNowMidnaTalk__Fv.s" } diff --git a/src/d/a/d_a_obj_item.cpp b/src/d/a/d_a_obj_item.cpp index 94b766c4f9..80608168b8 100644 --- a/src/d/a/d_a_obj_item.cpp +++ b/src/d/a/d_a_obj_item.cpp @@ -4,13 +4,13 @@ // #include "d/a/d_a_obj_item.h" +#include "SSystem/SComponent/c_math.h" +#include "d/com/d_com_inf_game.h" +#include "d/d_item.h" +#include "d/d_item_data.h" #include "dol2asm.h" #include "dolphin/types.h" -#include "d/d_item_data.h" -#include "d/d_item.h" -#include "d/com/d_com_inf_game.h" #include "m_Do/m_Do_mtx.h" -#include "SSystem/SComponent/c_math.h" // // Forward References: @@ -261,7 +261,7 @@ void daItem_c::initBaseMtx() { void daItem_c::setBaseMtx() { if (mpModel != NULL) { mpModel->setBaseScale(mScale); - + switch (m_itemNo) { case GREEN_RUPEE: case BLUE_RUPEE: @@ -500,18 +500,25 @@ SECTION_DATA u8 daItem_c::mFuncPtr[120] = { }; /* SECTION_DATA procFunc daItem_c::mFuncPtr[9] = { - &daItem_c::procMainNormal, &daItem_c::procMainEnemyCarry, &daItem_c::procMainSimpleGetDemo, - &daItem_c::procWaitGetDemoEvent, &daItem_c::procMainGetDemoEvent, &daItem_c::procMainBoomerangCarry, - &daItem_c::procMainSwOnWait, &daItem_c::procMainBoomHitWait, &daItem_c::procMainForceGet, + &daItem_c::procMainNormal, &daItem_c::procMainEnemyCarry, &daItem_c::procMainSimpleGetDemo, + &daItem_c::procWaitGetDemoEvent, &daItem_c::procMainGetDemoEvent, +&daItem_c::procMainBoomerangCarry, &daItem_c::procMainSwOnWait, &daItem_c::procMainBoomHitWait, +&daItem_c::procMainForceGet, }; */ /* 803B9F10-803B9F54 017030 0044+00 1/1 0/0 0/0 .data m_cyl_src__8daItem_c */ -SECTION_DATA u8 daItem_c::m_cyl_src[68] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x59, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, +dCcD_SrcCyl daItem_c::m_cyl_src = { + { + {0, {{0, 0, 0}, {0xFFFFFFFF, 17}, 0x59}}, + {dCcD_SE_NONE, 0, 0, 0, {0}}, + {dCcD_SE_NONE, 0, 0, 0, {4}}, + {0}, + }, + { + {0.0f, 0.0f, 0.0f}, + 10.0f, + 50.0f, + }, }; /* 80453574-80453578 001B74 0004+00 1/1 0/0 0/0 .sdata2 @4067 */ @@ -534,6 +541,103 @@ SECTION_SDATA2 static f32 lit_4070[1 + 1 /* padding */] = { SECTION_SDATA2 static f64 lit_4072 = 4503599627370496.0 /* cast u32 to float */; /* 8015B3D8-8015B7BC 155D18 03E4+00 1/1 0/0 0/0 .text CreateInit__8daItem_cFv */ +// matches with literals +#ifdef NONMATCHING +void daItem_c::CreateInit() { + mAcchCir.SetWall(30.0f, 30.0f); + mAcch.Set(¤t.pos, &next.pos, this, 1, &mAcchCir, &mSpeed, NULL, NULL); + mAcch.ClrWaterNone(); + mAcch.ClrRoofNone(); + mAcch.SetWtrChkMode(2); + mAcch.SetWaterCheckOffset(10000.0f); + + mColStatus.Init(0, 0xFF, this); + mCollider.Set(m_cyl_src); + mCollider.SetStts(&mColStatus); + mCollider.SetCoHitCallback(itemGetCoCallBack); + mCollider.SetTgHitCallback(itemGetTgCallBack); + + f32 cylHeight = dItem_data::getH(m_itemNo); + f32 cylRadius = dItem_data::getR(m_itemNo); + + if (mScale.x > 1.0f) { + cylHeight *= mScale.x; + cylRadius *= mScale.x; + } + + mCollider.SetR(cylRadius); + mCollider.SetH(cylHeight); + + setCullInfo(); + + field_0x942 = getData().field_0x16; + field_0x944 = getData().field_0x18; + + procInitNormal(); + show(); + + field_0x930.setAll(1.0f); + + switch (daItem_prm::getType(this)) { + case 5: + hide(); + procInitBoomHitWait(); + break; + case 7: + procInitForceGet(); + break; + case 4: + procInitSimpleGetDemo(); + procMainSimpleGetDemo(); + break; + default: + case 6: + field_0x93c = daItem_prm::getSwitchNo(this); + if (field_0x93c != 0xFF && !i_fopAcM_isSwitch(this, field_0x93c)) { + hide(); + setFlag(8); + procInitSwOnWait(); + } + break; + } + + initAction(); + initBaseMtx(); + animPlay(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f); + + if (m_itemNo == BOOMERANG) { + itemGetNextExecute(); + } else if ((m_itemNo == ORANGE_RUPEE || m_itemNo == SILVER_RUPEE) && + field_0x998.getEmitter() == NULL) { + dComIfGp_particle_set(0x0C14, &field_0x9ac, NULL, NULL, -1, &field_0x998, -1, NULL, NULL, + NULL); + } + + field_0x978.init(¤t.pos, 1); + + f32 old_speedF = mSpeedF; + cXyz old_speed = mSpeed; + + mAcch.CrrPos(dComIfG_Bgsp()); + + if (mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > orig.pos.y + 150.0f) { + field_0x9c0 = 1; + } + + if (daItem_prm::checkInWater(this) == true) { + field_0x9c0 = 1; + } + + mSpeedF = old_speedF; + mSpeed = old_speed; + + mAcch.ClrGroundLanding(); + mAcch.i_ClrGroundHit(); + mAcch.ClrWaterHit(); + mAcch.ClrWaterIn(); + mAcch.ClrWallHit(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -542,6 +646,7 @@ asm void daItem_c::CreateInit() { #include "asm/a/obj/d_a_obj_item/CreateInit__8daItem_cFv.s" } #pragma pop +#endif /* 8015B7BC-8015B7D4 1560FC 0018+00 1/1 0/0 0/0 .text setCullInfo__8daItem_cFv */ void daItem_c::setCullInfo() { @@ -668,7 +773,8 @@ int daItem_c::_daItem_create() { phase_state = dComIfG_resLoad(&mPhase, dItem_data::getFieldArc(m_itemNo)); if (phase_state == cPhs_COMPLEATE_e) { - if (!fopAcM_entrySolidHeap(this, (heapCallbackFunc)CheckFieldItemCreateHeap, dItem_data::getFieldHeapSize(m_itemNo))) { + if (!fopAcM_entrySolidHeap(this, (heapCallbackFunc)CheckFieldItemCreateHeap, + dItem_data::getFieldHeapSize(m_itemNo))) { return cPhs_ERROR_e; } else { CreateInit(); @@ -713,7 +819,7 @@ SECTION_SDATA2 static f32 lit_4321 = 18.0f; int daItem_c::_daItem_execute() { field_0x950 = mSpeed; CountTimer(); - + mEyePos = current.pos; mEyePos.y += (f32)dItem_data::getH(m_itemNo) * 0.5f; @@ -750,7 +856,6 @@ int daItem_c::_daItem_execute() { daPy_getPlayerActorClass()->setHookshotCarryOffset(fopAcM_GetID(this), &carry_pos); } - animPlay(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f); setBaseMtx(); field_0x978.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); @@ -910,7 +1015,8 @@ void daItem_c::procInitGetDemoEvent() { fopAcM_orderItemEvent(this, 0, 0); mEvtInfo.i_onCondition(8); - m_item_id = fopAcM_createItemForTrBoxDemo(¤t.pos, m_itemNo, -1, fopAcM_GetRoomNo(this), NULL, NULL); + m_item_id = fopAcM_createItemForTrBoxDemo(¤t.pos, m_itemNo, -1, fopAcM_GetRoomNo(this), + NULL, NULL); setStatus(3); } @@ -1203,7 +1309,8 @@ void daItem_c::itemGetNextExecute() { case ORANGE_RUPEE: case SILVER_RUPEE: case PACHINKO_SHOT: - if (daPy_getPlayerActorClass()->checkCanoeRide() || daPy_getPlayerActorClass()->checkHorseRide()) { + if (daPy_getPlayerActorClass()->checkCanoeRide() || + daPy_getPlayerActorClass()->checkHorseRide()) { if (checkItemGet(m_itemNo, 1)) { haveItem = true; } @@ -1306,7 +1413,7 @@ BOOL daItem_c::checkCountTimer() { if (i_dComIfGp_event_runCheck()) { count = false; } - + if (mStatus == 5 || fopAcM_checkHookCarryNow(this)) { count = false; } @@ -1578,8 +1685,7 @@ static asm void daItem_Create(fopAc_ac_c* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __sinit_d_a_obj_item_cpp() { - nofralloc +asm void __sinit_d_a_obj_item_cpp(){nofralloc #include "asm/a/obj/d_a_obj_item/__sinit_d_a_obj_item_cpp.s" } #pragma pop diff --git a/src/d/bg/d_bg_pc.cpp b/src/d/bg/d_bg_pc.cpp index e90096b82f..8b98f83b16 100644 --- a/src/d/bg/d_bg_pc.cpp +++ b/src/d/bg/d_bg_pc.cpp @@ -1,6 +1,9 @@ +/** + * d_bg_pc.cpp + * + */ + #include "d/bg/d_bg_pc.h" -#include "dol2asm.h" -#include "dolphin/types.h" void dBgPc::setCode(sBgPc& code) { m_code = code; diff --git a/src/d/bg/d_bg_s.cpp b/src/d/bg/d_bg_s.cpp index 5c15f0b296..d04cba9df7 100644 --- a/src/d/bg/d_bg_s.cpp +++ b/src/d/bg/d_bg_s.cpp @@ -1048,27 +1048,6 @@ f32 dBgS_GetNY(cBgS_PolyInfo const& poly) { return pla.mNormal.y; } -/* ############################################################################################## */ -/* 803AB608-803AB61C 008728 0014+00 0/0 3/3 0/0 .data __vt__4dBgS */ -SECTION_DATA extern void* __vt__4dBgS[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__4dBgSFv, - (void*)Ct__4dBgSFv, (void*)Dt__4dBgSFv, -}; - -/* 803AB61C-803AB630 00873C 0014+00 0/0 4/4 0/0 .data __vt__4cBgS */ -SECTION_DATA extern void* __vt__4cBgS[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__4cBgSFv, - (void*)Ct__4cBgSFv, (void*)Dt__4cBgSFv, -}; - -/* 803AB630-803AB640 008750 0010+00 0/0 2/2 0/0 .data __vt__11cBgS_ChkElm */ -SECTION_DATA extern void* __vt__11cBgS_ChkElm[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__11cBgS_ChkElmFv, - (void*)Regist2__11cBgS_ChkElmFP9dBgW_BaseUiPv, -}; - /* 80450F68-80450F70 000468 0008+00 0/0 1/1 0/0 .sbss None */ extern u8 data_80450F68[8]; u8 data_80450F68[8] ALIGN_DECL(8); diff --git a/src/d/bg/d_bg_s_chk.cpp b/src/d/bg/d_bg_s_chk.cpp index 79474f4054..bc8251a5e4 100644 --- a/src/d/bg/d_bg_s_chk.cpp +++ b/src/d/bg/d_bg_s_chk.cpp @@ -1,56 +1,15 @@ -// -// Generated By: dol2asm -// Translation Unit: d/bg/d_bg_s_chk -// +/** + * d_bg_s_chk.cpp + * + */ #include "d/bg/d_bg_s_chk.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void __ct__8dBgS_ChkFv(); -extern "C" void __dt__8dBgS_ChkFv(); -extern "C" void GetPolyPassChkInfo__8dBgS_ChkFv(); -extern "C" void GetGrpPassChkInfo__8dBgS_ChkFv(); -extern "C" static void func_80077574(); - -// -// External References: -// - -extern "C" void __ct__15dBgS_GrpPassChkFv(); -extern "C" void __dt__15dBgS_GrpPassChkFv(); -extern "C" void __ct__16dBgS_PolyPassChkFv(); -extern "C" void __dt__16dBgS_PolyPassChkFv(); -extern "C" void __dl__FPv(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803AB670-803AB688 008790 0018+00 2/2 0/0 0/0 .data __vt__8dBgS_Chk */ -SECTION_DATA extern void* __vt__8dBgS_Chk[6] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__8dBgS_ChkFv, (void*)NULL, (void*)NULL, - (void*)func_80077574, -}; /* 8007749C-800774E8 071DDC 004C+00 0/0 6/6 0/0 .text __ct__8dBgS_ChkFv */ dBgS_Chk::dBgS_Chk() {} /* 800774E8-80077560 071E28 0078+00 2/1 6/6 0/0 .text __dt__8dBgS_ChkFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm dBgS_Chk::~dBgS_Chk() { -extern "C" asm void __dt__8dBgS_ChkFv() { - nofralloc -#include "asm/d/bg/d_bg_s_chk/__dt__8dBgS_ChkFv.s" -} -#pragma pop +dBgS_Chk::~dBgS_Chk() {} /* 80077560-80077564 071EA0 0004+00 0/0 6/6 0/0 .text GetPolyPassChkInfo__8dBgS_ChkFv */ cBgS_PolyPassChk* dBgS_Chk::GetPolyPassChkInfo() { @@ -61,13 +20,3 @@ cBgS_PolyPassChk* dBgS_Chk::GetPolyPassChkInfo() { cBgS_GrpPassChk* dBgS_Chk::GetGrpPassChkInfo() { return this; } - -/* 80077574-8007757C 071EB4 0008+00 1/0 0/0 0/0 .text @16@__dt__8dBgS_ChkFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void func_80077574() { - nofralloc -#include "asm/d/bg/d_bg_s_chk/func_80077574.s" -} -#pragma pop diff --git a/src/d/bg/d_bg_s_movebg_actor.cpp b/src/d/bg/d_bg_s_movebg_actor.cpp index 90ee3982d9..09f479d083 100644 --- a/src/d/bg/d_bg_s_movebg_actor.cpp +++ b/src/d/bg/d_bg_s_movebg_actor.cpp @@ -56,21 +56,6 @@ extern "C" u8 now__14mDoMtx_stack_c[48]; // Declarations: // -/* ############################################################################################## */ -/* 803AB9A0-803AB9C8 008AC0 0028+00 1/1 0/0 34/34 .data __vt__16dBgS_MoveBgActor */ -SECTION_DATA extern void* __vt__16dBgS_MoveBgActor[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__16dBgS_MoveBgActorFv, - (void*)Create__16dBgS_MoveBgActorFv, - (void*)Execute__16dBgS_MoveBgActorFPPA3_A4_f, - (void*)Draw__16dBgS_MoveBgActorFv, - (void*)Delete__16dBgS_MoveBgActorFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - /* 80078624-80078668 072F64 0044+00 0/0 0/0 173/173 .text __ct__16dBgS_MoveBgActorFv */ dBgS_MoveBgActor::dBgS_MoveBgActor() { field_0x568 = NULL; diff --git a/src/d/bg/d_bg_s_roof_chk.cpp b/src/d/bg/d_bg_s_roof_chk.cpp index fb4e37b0c8..2a0387ec65 100644 --- a/src/d/bg/d_bg_s_roof_chk.cpp +++ b/src/d/bg/d_bg_s_roof_chk.cpp @@ -1,58 +1,9 @@ -// -// Generated By: dol2asm -// Translation Unit: d/bg/d_bg_s_roof_chk -// +/** + * d_bg_s_roof_chk.cpp + * + */ #include "d/bg/d_bg_s_roof_chk.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void __ct__12dBgS_RoofChkFv(); -extern "C" void __dt__12dBgS_RoofChkFv(); -extern "C" void Init__12dBgS_RoofChkFv(); -extern "C" static void func_8007914C(); -extern "C" static void func_80079154(); -extern "C" static void func_8007915C(); - -// -// External References: -// - -extern "C" void __ct__8dBgS_ChkFv(); -extern "C" void __dt__8dBgS_ChkFv(); -extern "C" void GetPolyPassChkInfo__8dBgS_ChkFv(); -extern "C" void GetGrpPassChkInfo__8dBgS_ChkFv(); -extern "C" void __ct__8cBgS_ChkFv(); -extern "C" void __dt__8cBgS_ChkFv(); -extern "C" void __ct__13cBgS_PolyInfoFv(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void ClearPi__13cBgS_PolyInfoFv(); -extern "C" void __dl__FPv(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803ABA50-803ABA80 008B70 0030+00 2/2 0/0 0/0 .data __vt__12dBgS_RoofChk */ -SECTION_DATA extern void* __vt__12dBgS_RoofChk[12] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_RoofChkFv, - (void*)NULL, - (void*)NULL, - (void*)func_8007914C, - (void*)NULL, - (void*)NULL, - (void*)func_8007915C, - (void*)NULL, - (void*)NULL, - (void*)func_80079154, -}; /* 80078FF4-80079090 073934 009C+00 0/0 10/10 1/1 .text __ct__12dBgS_RoofChkFv */ dBgS_RoofChk::dBgS_RoofChk() { @@ -66,48 +17,10 @@ dBgS_RoofChk::dBgS_RoofChk() { } /* 80079090-80079124 0739D0 0094+00 4/3 11/11 1/1 .text __dt__12dBgS_RoofChkFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm dBgS_RoofChk::~dBgS_RoofChk() { -extern "C" asm void __dt__12dBgS_RoofChkFv() { - nofralloc -#include "asm/d/bg/d_bg_s_roof_chk/__dt__12dBgS_RoofChkFv.s" -} -#pragma pop +dBgS_RoofChk::~dBgS_RoofChk() {} /* 80079124-8007914C 073A64 0028+00 0/0 1/1 0/0 .text Init__12dBgS_RoofChkFv */ void dBgS_RoofChk::Init() { SetNowY(1000000000.0f); ClearPi(); } - -/* 8007914C-80079154 073A8C 0008+00 1/0 0/0 0/0 .text @16@__dt__12dBgS_RoofChkFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void func_8007914C() { - nofralloc -#include "asm/d/bg/d_bg_s_roof_chk/func_8007914C.s" -} -#pragma pop - -/* 80079154-8007915C 073A94 0008+00 1/0 0/0 0/0 .text @52@__dt__12dBgS_RoofChkFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void func_80079154() { - nofralloc -#include "asm/d/bg/d_bg_s_roof_chk/func_80079154.s" -} -#pragma pop - -/* 8007915C-80079164 073A9C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_RoofChkFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void func_8007915C() { - nofralloc -#include "asm/d/bg/d_bg_s_roof_chk/func_8007915C.s" -} -#pragma pop diff --git a/src/d/bg/d_bg_s_sph_chk.cpp b/src/d/bg/d_bg_s_sph_chk.cpp index a79529cc43..e92a7e70d0 100644 --- a/src/d/bg/d_bg_s_sph_chk.cpp +++ b/src/d/bg/d_bg_s_sph_chk.cpp @@ -1,64 +1,9 @@ -// -// Generated By: dol2asm -// Translation Unit: d/bg/d_bg_s_sph_chk -// +/** + * d_bg_s_sph_chk.cpp + * + */ #include "d/bg/d_bg_s_sph_chk.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void __ct__11dBgS_SphChkFv(); -extern "C" void __dt__11dBgS_SphChkFv(); -extern "C" static void func_80078B70(); -extern "C" static void func_80078B78(); -extern "C" static void func_80078B80(); -extern "C" static void func_80078B88(); - -// -// External References: -// - -extern "C" void __ct__8dBgS_ChkFv(); -extern "C" void __dt__8dBgS_ChkFv(); -extern "C" void GetPolyPassChkInfo__8dBgS_ChkFv(); -extern "C" void GetGrpPassChkInfo__8dBgS_ChkFv(); -extern "C" void __ct__8cBgS_ChkFv(); -extern "C" void __dt__8cBgS_ChkFv(); -extern "C" void __ct__13cBgS_PolyInfoFv(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void ClearPi__13cBgS_PolyInfoFv(); -extern "C" void __dl__FPv(); -extern "C" extern void* __vt__8cM3dGSph[3]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803AB9C8-803ABA08 008AE8 003C+04 2/2 0/0 0/0 .data __vt__11dBgS_SphChk */ -SECTION_DATA extern void* __vt__11dBgS_SphChk[15 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__11dBgS_SphChkFv, - (void*)NULL, - (void*)NULL, - (void*)func_80078B70, - (void*)NULL, - (void*)NULL, - (void*)func_80078B78, - (void*)NULL, - (void*)NULL, - (void*)func_80078B88, - (void*)NULL, - (void*)NULL, - (void*)func_80078B80, - /* padding */ - NULL, -}; /* 80078A14-80078AC0 073354 00AC+00 0/0 1/1 1/1 .text __ct__11dBgS_SphChkFv */ dBgS_SphChk::dBgS_SphChk() { @@ -71,43 +16,3 @@ dBgS_SphChk::dBgS_SphChk() { /* 80078AC0-80078B70 073400 00B0+00 5/4 2/2 0/0 .text __dt__11dBgS_SphChkFv */ dBgS_SphChk::~dBgS_SphChk() {} - -/* 80078B70-80078B78 0734B0 0008+00 1/0 0/0 0/0 .text @20@__dt__11dBgS_SphChkFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void func_80078B70() { - nofralloc -#include "asm/d/bg/d_bg_s_sph_chk/func_80078B70.s" -} -#pragma pop - -/* 80078B78-80078B80 0734B8 0008+00 1/0 0/0 0/0 .text @36@__dt__11dBgS_SphChkFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void func_80078B78() { - nofralloc -#include "asm/d/bg/d_bg_s_sph_chk/func_80078B78.s" -} -#pragma pop - -/* 80078B80-80078B88 0734C0 0008+00 1/0 0/0 0/0 .text @72@__dt__11dBgS_SphChkFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void func_80078B80() { - nofralloc -#include "asm/d/bg/d_bg_s_sph_chk/func_80078B80.s" -} -#pragma pop - -/* 80078B88-80078B90 0734C8 0008+00 1/0 0/0 0/0 .text @56@__dt__11dBgS_SphChkFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void func_80078B88() { - nofralloc -#include "asm/d/bg/d_bg_s_sph_chk/func_80078B88.s" -} -#pragma pop diff --git a/src/d/bg/d_bg_s_spl_grp_chk.cpp b/src/d/bg/d_bg_s_spl_grp_chk.cpp index 68900a8c79..aed701f8a1 100644 --- a/src/d/bg/d_bg_s_spl_grp_chk.cpp +++ b/src/d/bg/d_bg_s_spl_grp_chk.cpp @@ -1,42 +1,9 @@ -// -// Generated By: dol2asm -// Translation Unit: d/bg/d_bg_s_spl_grp_chk -// +/** + * d_bg_s_spl_grp_chk.cpp + * + */ #include "d/bg/d_bg_s_spl_grp_chk.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void Set__14dBgS_SplGrpChkFR4cXyzf(); -extern "C" void __ct__14dBgS_SplGrpChkFv(); -extern "C" void __dt__14dBgS_SplGrpChkFv(); -extern "C" void Init__14dBgS_SplGrpChkFv(); -extern "C" static void func_80078D4C(); -extern "C" static void func_80078D54(); -extern "C" static void func_80078D5C(); - -// -// External References: -// - -extern "C" void __ct__8dBgS_ChkFv(); -extern "C" void __dt__8dBgS_ChkFv(); -extern "C" void GetPolyPassChkInfo__8dBgS_ChkFv(); -extern "C" void GetGrpPassChkInfo__8dBgS_ChkFv(); -extern "C" void __ct__8cBgS_ChkFv(); -extern "C" void __dt__8cBgS_ChkFv(); -extern "C" void __ct__13cBgS_PolyInfoFv(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void ClearPi__13cBgS_PolyInfoFv(); -extern "C" void __dl__FPv(); - -// -// Declarations: -// /* 80078B90-80078BB0 0734D0 0020+00 0/0 2/2 3/3 .text Set__14dBgS_SplGrpChkFR4cXyzf */ void dBgS_SplGrpChk::Set(cXyz& ground, f32 roof) { @@ -44,23 +11,6 @@ void dBgS_SplGrpChk::Set(cXyz& ground, f32 roof) { m_roof = roof; } -/* ############################################################################################## */ -/* 803ABA08-803ABA38 008B28 0030+00 2/2 0/0 0/0 .data __vt__14dBgS_SplGrpChk */ -SECTION_DATA extern void* __vt__14dBgS_SplGrpChk[12] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14dBgS_SplGrpChkFv, - (void*)NULL, - (void*)NULL, - (void*)func_80078D4C, - (void*)NULL, - (void*)NULL, - (void*)func_80078D5C, - (void*)NULL, - (void*)NULL, - (void*)func_80078D54, -}; - /* 80078BB0-80078C78 0734F0 00C8+00 0/0 1/1 0/0 .text __ct__14dBgS_SplGrpChkFv */ dBgS_SplGrpChk::dBgS_SplGrpChk() { SetPolyPassChk(GetPolyPassChkInfo()); @@ -88,33 +38,3 @@ void dBgS_SplGrpChk::Init() { SetHeight(GetPosP().y); ClearPi(); } - -/* 80078D4C-80078D54 07368C 0008+00 1/0 0/0 0/0 .text @16@__dt__14dBgS_SplGrpChkFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void func_80078D4C() { - nofralloc -#include "asm/d/bg/d_bg_s_spl_grp_chk/func_80078D4C.s" -} -#pragma pop - -/* 80078D54-80078D5C 073694 0008+00 1/0 0/0 0/0 .text @52@__dt__14dBgS_SplGrpChkFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void func_80078D54() { - nofralloc -#include "asm/d/bg/d_bg_s_spl_grp_chk/func_80078D54.s" -} -#pragma pop - -/* 80078D5C-80078D64 07369C 0008+00 1/0 0/0 0/0 .text @36@__dt__14dBgS_SplGrpChkFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void func_80078D5C() { - nofralloc -#include "asm/d/bg/d_bg_s_spl_grp_chk/func_80078D5C.s" -} -#pragma pop diff --git a/src/d/bg/d_bg_s_wtr_chk.cpp b/src/d/bg/d_bg_s_wtr_chk.cpp index 499179c8ab..6e1c83835d 100644 --- a/src/d/bg/d_bg_s_wtr_chk.cpp +++ b/src/d/bg/d_bg_s_wtr_chk.cpp @@ -1,6 +1,9 @@ +/** + * d_bg_s_wtr_chk.cpp + * + */ + #include "d/bg/d_bg_s_wtr_chk.h" -#include "dol2asm.h" -#include "dolphin/types.h" dBgS_WtrChk::dBgS_WtrChk() { OnWaterGrp(); diff --git a/src/d/bg/d_bg_w_base.cpp b/src/d/bg/d_bg_w_base.cpp index 050a7cdd63..28b72cda0a 100644 --- a/src/d/bg/d_bg_w_base.cpp +++ b/src/d/bg/d_bg_w_base.cpp @@ -1,128 +1,17 @@ -// -// Generated By: dol2asm -// Translation Unit: d/bg/d_bg_w_base -// +/** + * d_bg_w_base.cpp + * + */ #include "d/bg/d_bg_w_base.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void __ct__9dBgW_BaseFv(); -extern "C" void __dt__9cBgW_BgIdFv(); -extern "C" void __dt__9dBgW_BaseFv(); -extern "C" void ClrDBgWBase__9dBgW_BaseFv(); -extern "C" bool ChkMemoryError__9dBgW_BaseFv(); -extern "C" void CallRideCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_c(); -extern "C" void CallArrowStickCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_cR4cXyz(); -extern "C" void CalcDiffShapeAngleY__9dBgW_BaseFs(); - -// -// External References: -// - -extern "C" void SetOldShapeAngleY__9dBgW_BaseFs(); -extern "C" void __dl__FPv(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803ABCC8-803ABDB8 008DE8 00F0+00 2/2 0/0 0/0 .data __vt__9dBgW_Base */ -SECTION_DATA extern void* __vt__9dBgW_Base[60] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__9dBgW_BaseFv, - (void*)ChkMemoryError__9dBgW_BaseFv, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)SetOldShapeAngleY__9dBgW_BaseFs, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)CallRideCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_c, - (void*)CallArrowStickCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_cR4cXyz, -}; - -/* 803ABDB8-803ABDC8 008ED8 000C+04 3/3 0/0 0/0 .data __vt__9cBgW_BgId */ -SECTION_DATA extern void* __vt__9cBgW_BgId[3 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__9cBgW_BgIdFv, - /* padding */ - NULL, -}; /* 8007E5A8-8007E5F8 078EE8 0050+00 0/0 2/2 0/0 .text __ct__9dBgW_BaseFv */ dBgW_Base::dBgW_Base() { ClrDBgWBase(); } -/* 8007E5F8-8007E640 078F38 0048+00 1/0 0/0 0/0 .text __dt__9cBgW_BgIdFv */ -cBgW_BgId::~cBgW_BgId() {} - /* 8007E640-8007E69C 078F80 005C+00 1/0 2/2 0/0 .text __dt__9dBgW_BaseFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm dBgW_Base::~dBgW_Base() { -extern "C" asm void __dt__9dBgW_BaseFv() { - nofralloc -#include "asm/d/bg/d_bg_w_base/__dt__9dBgW_BaseFv.s" -} -#pragma pop +dBgW_Base::~dBgW_Base() {} /* 8007E69C-8007E6D0 078FDC 0034+00 1/1 1/1 0/0 .text ClrDBgWBase__9dBgW_BaseFv */ void dBgW_Base::ClrDBgWBase() { diff --git a/src/d/cc/d_cc_mass_s.cpp b/src/d/cc/d_cc_mass_s.cpp index ef0b179a28..95c93417f1 100644 --- a/src/d/cc/d_cc_mass_s.cpp +++ b/src/d/cc/d_cc_mass_s.cpp @@ -1,13 +1,11 @@ -// -// Generated By: dol2asm -// Translation Unit: d/cc/d_cc_mass_s -// +/** + * d_cc_mass_s.cpp + * + */ #include "d/cc/d_cc_mass_s.h" #include "SSystem/SComponent/c_math.h" #include "d/cc/d_cc_d.h" -#include "dol2asm.h" -#include "dolphin/types.h" /* 800852E0-800852F0 07FC20 0010+00 1/1 0/0 0/0 .text * Set__12dCcMassS_ObjFP8cCcD_ObjUcPFP10fopAc_ac_cP4cXyzUl_v */ @@ -156,7 +154,8 @@ u32 dCcMassS_Mng::Chk(cXyz* p_xyz, fopAc_ac_c** p_actor, dCcMassS_HitInf* p_hitI cCcD_ShapeAttr* objShape = obj->GetShapeAttr(); cXyz unusedVec; if (obj->ChkAtSet() && !gobjInf->ChkAtNoMass() && - mCylAttr.CrossAtTg(*objShape, &unusedVec) && (field_0x200 & 1)) { + mCylAttr.CrossAtTg(*objShape, &unusedVec) && (field_0x200 & 1)) + { flagsMaybe |= 1; *p_actor = obj->GetStts()->GetAc(); if (p_hitInf != NULL) { diff --git a/src/d/cc/d_cc_s.cpp b/src/d/cc/d_cc_s.cpp index 59beb30238..3d5095e9ed 100644 --- a/src/d/cc/d_cc_s.cpp +++ b/src/d/cc/d_cc_s.cpp @@ -1,12 +1,12 @@ -// -// Generated By: dol2asm -// Translation Unit: d/cc/d_cc_s -// +/** + * d_cc_s.cpp + * + */ #include "d/cc/d_cc_s.h" +#include "JSystem/JMath/JMath.h" #include "d/com/d_com_inf_game.h" #include "dol2asm.h" -#include "dolphin/types.h" // // Forward References: @@ -111,38 +111,94 @@ void dCcS::Dt() { cCcS::Dt(); } -/* ############################################################################################## */ -/* 80452778-8045277C 000D78 0004+00 3/3 0/0 0/0 .sdata2 @3705 */ -SECTION_SDATA2 static u8 lit_3705[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - /* 80085F28-800860F8 080868 01D0+00 1/1 0/0 0/0 .text * ChkShieldFrontRange__4dCcSFP8cCcD_ObjP8cCcD_ObjiPC4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dCcS::ChkShieldFrontRange(cCcD_Obj* param_0, cCcD_Obj* param_1, int param_2, - cXyz const* param_3) { - nofralloc -#include "asm/d/cc/d_cc_s/ChkShieldFrontRange__4dCcSFP8cCcD_ObjP8cCcD_ObjiPC4cXyz.s" +bool dCcS::ChkShieldFrontRange(cCcD_Obj* i_atObj, cCcD_Obj* i_tgObj, int param_2, + cXyz const* i_hitPos) { + dCcD_GObjInf* atObj = (dCcD_GObjInf*)i_atObj->GetGObjInf(); + if (atObj == NULL) { + return false; + } + + dCcD_GObjInf* tgObj = (dCcD_GObjInf*)i_tgObj->GetGObjInf(); + if (tgObj == NULL) { + return false; + } + + fopAc_ac_c* tgActor = tgObj->GetAc(); + if (tgActor == NULL) { + return false; + } + + csXyz sp10; + CalcParticleAngle(atObj, i_atObj->GetStts(), i_tgObj->GetStts(), &sp10); + + if (param_2 != 0) { + dJntCol_c* jntcol = fopAcM_GetJntCol(tgActor); + + if (jntcol != NULL) { + cXyz pos; + csXyz angle; + + int temp_r3 = jntcol->getHitmarkPosAndAngle(i_hitPos, &sp10, &pos, &angle, 0); + + if (temp_r3 >= 0 && jntcol->checkShieldType(temp_r3)) { + cXyz sp18; + mDoMtx_stack_c::ZXYrotS(sp10); + mDoMtx_stack_c::multVecSR(&cXyz::BaseZ, &sp18); + mDoMtx_stack_c::ZXYrotS(angle); + mDoMtx_stack_c::multVecSR(&cXyz::BaseZ, &pos); + + if (pos.inprod(sp18) > 0.0f) { + return true; + } else { + return false; + } + } + + return false; + } + } + + s16 var_r4; + if (tgObj->GetTgShieldFrontRangeYAngle() != NULL) { + var_r4 = *tgObj->GetTgShieldFrontRangeYAngle(); + } else { + var_r4 = fopAcM_GetShapeAngle_p(tgActor).y; + } + + s16 shield_range = tgObj->GetTgShieldRange(); + if (param_2 != 0) { + shield_range >>= 1; + } + + if (cLib_distanceAngleS(sp10.y - -0x8000, var_r4) > shield_range) { + return false; + } + + return true; } -#pragma pop /* 800860F8-800861B0 080A38 00B8+00 1/1 0/0 0/0 .text * ChkShield__4dCcSFP8cCcD_ObjP8cCcD_ObjP12dCcD_GObjInfP12dCcD_GObjInfPC4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dCcS::ChkShield(cCcD_Obj* param_0, cCcD_Obj* param_1, dCcD_GObjInf* param_2, - dCcD_GObjInf* param_3, cXyz const* param_4) { - nofralloc -#include "asm/d/cc/d_cc_s/ChkShield__4dCcSFP8cCcD_ObjP8cCcD_ObjP12dCcD_GObjInfP12dCcD_GObjInfPC4cXyz.s" +bool dCcS::ChkShield(cCcD_Obj* i_atObj, cCcD_Obj* i_tgObj, dCcD_GObjInf* i_atObjInf, + dCcD_GObjInf* i_tgObjInf, cXyz const* i_hitPos) { + if (i_atObjInf->ChkAtNoGuard()) { + return false; + } + + if (i_tgObjInf->ChkTgShield() || i_tgObjInf->ChkTgSpShield() || + (i_tgObjInf->ChkTgSmallShield() && i_atObjInf->GetAtSpl() == 8)) + { + if (i_tgObjInf->ChkTgShieldFrontRange()) { + return ChkShieldFrontRange(i_atObj, i_tgObj, !i_tgObjInf->ChkTgShield(), i_hitPos); + } + + return true; + } + + return false; } -#pragma pop /* 800861B0-800861B4 080AF0 0004+00 1/0 0/0 0/0 .text * CalcTgPlusDmg__4dCcSFP8cCcD_ObjP8cCcD_ObjP9cCcD_SttsP9cCcD_Stts */ @@ -154,20 +210,81 @@ void dCcS::CalcTgPlusDmg(cCcD_Obj* param_0, cCcD_Obj* param_1, cCcD_Stts* param_ /* 800861B4-80086240 080AF4 008C+00 1/0 0/0 0/0 .text * ChkAtTgHitAfterCross__4dCcSFbbPC12cCcD_GObjInfPC12cCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP10cCcD_GSttsP10cCcD_GStts */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -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 -#include "asm/d/cc/d_cc_s/func_800861B4.s" +bool dCcS::ChkAtTgHitAfterCross(bool i_setAt, bool i_setTg, cCcD_GObjInf const* i_atObjInf, + cCcD_GObjInf const* i_tgObjInf, cCcD_Stts* param_4, + cCcD_Stts* param_5, cCcD_GStts* param_6, cCcD_GStts* param_7) { + dCcD_GObjInf* atObjInf = (dCcD_GObjInf*)i_atObjInf; + dCcD_GObjInf* tgObjInf = (dCcD_GObjInf*)i_tgObjInf; + + u32 tgApid = param_4->GetApid(); + u32 atApid = param_5->GetApid(); + + if (i_setAt) { + static_cast<dCcD_GStts*>(param_6)->SetAtApid(atApid); + + if (atObjInf->ChkAtNoConHit() && !tgObjInf->ChkTgStopNoConHit()) { + if (static_cast<dCcD_GStts*>(param_6)->GetAtOldApid() == param_5->GetApid()) { + return true; + } + } + } + + if (i_setTg) { + static_cast<dCcD_GStts*>(param_7)->SetTgApid(tgApid); + + if (tgObjInf->ChkTgNoConHit() && !atObjInf->ChkAtStopNoConHit()) { + if (static_cast<dCcD_GStts*>(param_7)->GetTgOldApid() == param_4->GetApid()) { + return true; + } + } + } + + return false; } -#pragma pop /* 80086240-80086360 080B80 0120+00 1/0 0/0 0/0 .text * SetCoGObjInf__4dCcSFbbP12cCcD_GObjInfP12cCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP10cCcD_GSttsP10cCcD_GStts */ +// weird reg alloc +#ifdef NONMATCHING +void dCcS::SetCoGObjInf(bool param_0, bool param_1, cCcD_GObjInf* param_2, cCcD_GObjInf* param_3, + cCcD_Stts* param_4, cCcD_Stts* param_5, cCcD_GStts* param_6, + cCcD_GStts* param_7) { + if (param_0) { + static_cast<dCcD_GObjInf*>(param_2)->SetCoHitApid(param_5->GetApid()); + + if (static_cast<dCcD_GStts*>(param_7)->ChkNoActor()) { + static_cast<dCcD_GObjInf*>(param_2)->OnCoHitNoActor(); + } + } + + if (param_1) { + static_cast<dCcD_GObjInf*>(param_3)->SetCoHitApid(param_4->GetApid()); + + if (static_cast<dCcD_GStts*>(param_6)->ChkNoActor()) { + static_cast<dCcD_GObjInf*>(param_3)->OnCoHitNoActor(); + } + } + + if (param_0) { + dCcD_HitCallback cb = static_cast<dCcD_GObjInf*>(param_2)->GetCoHitCallback(); + + if (cb != NULL) { + cb(param_2->GetAc(), static_cast<dCcD_GObjInf*>(param_2), param_3->GetAc(), + static_cast<dCcD_GObjInf*>(param_3)); + } + } + + if (param_1) { + dCcD_HitCallback cb = static_cast<dCcD_GObjInf*>(param_3)->GetCoHitCallback(); + + if (cb != NULL) { + cb(param_3->GetAc(), static_cast<dCcD_GObjInf*>(param_3), param_2->GetAc(), + static_cast<dCcD_GObjInf*>(param_2)); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -178,16 +295,52 @@ asm void dCcS::SetCoGObjInf(bool param_0, bool param_1, cCcD_GObjInf* param_2, #include "asm/d/cc/d_cc_s/SetCoGObjInf__4dCcSFbbP12cCcD_GObjInfP12cCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP10cCcD_GSttsP10cCcD_GStts.s" } #pragma pop +#endif /* 80086360-80086404 080CA0 00A4+00 1/1 0/0 0/0 .text GetRank__4dCcSFUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dCcS::GetRank(u8 param_0) { - nofralloc -#include "asm/d/cc/d_cc_s/GetRank__4dCcSFUc.s" +int dCcS::GetRank(u8 weight) { + if (weight == 255) { + return 10; + } + + if (weight == 254) { + return 9; + } + + if (weight >= 217) { + return 8; + } + + if (weight >= 181) { + return 7; + } + + if (weight >= 145) { + return 6; + } + + if (weight >= 109) { + return 5; + } + + if (weight >= 73) { + return 4; + } + + if (weight >= 37) { + return 3; + } + + if (weight >= 2) { + return 2; + } + + if (weight == 1) { + return 1; + } + + return 0; } -#pragma pop /* 80086404-8008640C 080D44 0008+00 1/0 0/0 0/0 .text ChkNoHitGCo__4dCcSFP8cCcD_ObjP8cCcD_Obj */ bool dCcS::ChkNoHitGCo(cCcD_Obj* param_0, cCcD_Obj* param_1) { @@ -196,174 +349,208 @@ bool dCcS::ChkNoHitGCo(cCcD_Obj* param_0, cCcD_Obj* param_1) { /* ############################################################################################## */ /* 803AC328-803AC3A4 009448 0079+03 1/1 0/0 0/0 .data rank_tbl */ -SECTION_DATA static u8 rank_tbl[121 + 3 /* padding */] = { - 0x00, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x00, - 0x32, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x00, - 0x00, - 0x32, - 0x4B, - 0x5A, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x00, - 0x00, - 0x19, - 0x32, - 0x4B, - 0x5A, - 0x64, - 0x64, - 0x64, - 0x64, - 0x64, - 0x00, - 0x00, - 0x0A, - 0x19, - 0x32, - 0x4B, - 0x5A, - 0x64, - 0x64, - 0x64, - 0x64, - 0x00, - 0x00, - 0x00, - 0x0A, - 0x19, - 0x32, - 0x4B, - 0x5A, - 0x64, - 0x64, - 0x64, - 0x00, - 0x00, - 0x00, - 0x00, - 0x0A, - 0x19, - 0x32, - 0x4B, - 0x5A, - 0x64, - 0x64, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x0A, - 0x19, - 0x32, - 0x4B, - 0x64, - 0x64, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x0A, - 0x19, - 0x32, - 0x64, - 0x64, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x32, - 0x64, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; - -/* 8045277C-80452780 000D7C 0004+00 1/1 0/0 0/0 .sdata2 @3924 */ -SECTION_SDATA2 static f32 lit_3924 = 1.0f / 100.0f; - -/* 80452780-80452788 000D80 0004+04 2/2 0/0 0/0 .sdata2 @3925 */ -SECTION_SDATA2 static f32 lit_3925[1 + 1 /* padding */] = { - -1.0f, - /* padding */ - 0.0f, +static u8 rank_tbl[11][11] = { + 0x00, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x00, 0x32, 0x64, 0x64, 0x64, + 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x00, 0x00, 0x32, 0x4B, 0x5A, 0x64, 0x64, 0x64, 0x64, 0x64, + 0x64, 0x00, 0x00, 0x19, 0x32, 0x4B, 0x5A, 0x64, 0x64, 0x64, 0x64, 0x64, 0x00, 0x00, 0x0A, 0x19, + 0x32, 0x4B, 0x5A, 0x64, 0x64, 0x64, 0x64, 0x00, 0x00, 0x00, 0x0A, 0x19, 0x32, 0x4B, 0x5A, 0x64, + 0x64, 0x64, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x19, 0x32, 0x4B, 0x5A, 0x64, 0x64, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0A, 0x19, 0x32, 0x4B, 0x64, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x19, + 0x32, 0x64, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x64, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; -/* 80452788-80452790 000D88 0008+00 1/1 0/0 0/0 .sdata2 @3927 */ -SECTION_SDATA2 static f64 lit_3927 = 4503599627370496.0 /* cast u32 to float */; - /* 8008640C-80086754 080D4C 0348+00 1/0 0/0 0/0 .text * SetPosCorrect__4dCcSFP8cCcD_ObjP4cXyzP8cCcD_ObjP4cXyzf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dCcS::SetPosCorrect(cCcD_Obj* param_0, cXyz* param_1, cCcD_Obj* param_2, cXyz* param_3, - f32 param_4) { - nofralloc -#include "asm/d/cc/d_cc_s/SetPosCorrect__4dCcSFP8cCcD_ObjP4cXyzP8cCcD_ObjP4cXyzf.s" +void dCcS::SetPosCorrect(cCcD_Obj* param_0, cXyz* param_1, cCcD_Obj* param_2, cXyz* param_3, + f32 param_4) { + if (param_0->ChkCoNoCrr() || param_2->ChkCoNoCrr()) { + return; + } + + if (param_0->GetStts() == NULL || param_2->GetStts() == NULL) { + return; + } + + if (cM3d_IsZero(param_4)) { + return; + } + + SetCoGCorrectProc(param_0, param_2); + + bool bvar2 = false; + if (param_0->ChkCoSph3DCrr() && param_2->ChkCoSph3DCrr()) { + bvar2 = true; + } + + if ((param_0->GetStts()->GetWeightUc() == 0 && param_2->GetStts()->GetWeightUc() == 0) || + (param_0->GetStts()->GetWeightUc() == 0xFF && param_2->GetStts()->GetWeightUc() == 0xFF)) + { + return; + } + + int weight1 = GetRank(param_0->GetStts()->GetWeightUc()); + int weight2 = GetRank(param_2->GetStts()->GetWeightUc()); + u8 rank = rank_tbl[weight1][weight2]; + + f32 fvar1 = rank * 0.01f; + f32 fvar2 = (u8)(100 - rank) * 0.01f; + + cXyz local_b0; + cXyz local_bc; + Vec local_c8; + + f32 fvar14; + if (bvar2) { + PSVECSubtract(param_3, param_1, &local_c8); + fvar14 = PSVECMag(&local_c8); + } else { + local_c8.x = param_3->x - param_1->x; + local_c8.y = 0.0f; + local_c8.z = param_3->z - param_1->z; + fvar14 = JMAFastSqrt((local_c8.x * local_c8.x) + (local_c8.z * local_c8.z)); + } + + if (!cM3d_IsZero(fvar14)) { + if (bvar2) { + PSVECScale(&local_c8, &local_c8, param_4 / fvar14); + fvar1 *= -1.0f; + PSVECScale(&local_c8, &local_b0, fvar1); + PSVECScale(&local_c8, &local_bc, fvar2); + } else { + fvar14 = param_4 / fvar14; + local_c8.x *= fvar14; + local_c8.z *= fvar14; + + local_b0.x = -local_c8.x * fvar1; + local_b0.y = 0.0f; + local_b0.z = -local_c8.z * fvar1; + + local_bc.x = local_c8.x * fvar2; + local_bc.y = 0.0f; + local_bc.z = local_c8.z * fvar2; + } + } else { + local_b0.y = 0.0f; + local_b0.z = 0.0f; + local_bc.y = 0.0f; + local_bc.z = 0.0f; + + if (!cM3d_IsZero(param_4)) { + local_b0.x = -param_4 * fvar1; + local_bc.x = param_4 * fvar2; + } else { + local_b0.x = -fvar1; + local_bc.x = fvar2; + } + } + + param_0->GetStts()->PlusCcMove(local_b0.x, local_b0.y, local_b0.z); + param_2->GetStts()->PlusCcMove(local_bc.x, local_bc.y, local_bc.z); + *param_1 += local_b0; + *param_3 += local_bc; } -#pragma pop /* 80086754-8008685C 081094 0108+00 1/0 0/0 0/0 .text * CalcParticleAngle__4dCcSFP12dCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP5csXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dCcS::CalcParticleAngle(dCcD_GObjInf* param_0, cCcD_Stts* param_1, cCcD_Stts* param_2, - csXyz* param_3) { - nofralloc -#include "asm/d/cc/d_cc_s/CalcParticleAngle__4dCcSFP12dCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP5csXyz.s" +void dCcS::CalcParticleAngle(dCcD_GObjInf* i_atObjInf, cCcD_Stts* i_atStts, cCcD_Stts* i_tgStts, + csXyz* o_angle) { + cXyz vec(*i_atObjInf->GetAtVecP()); + + if (cM3d_IsZero(PSVECMag(&vec))) { + fopAc_ac_c* atActor = i_atStts->GetActor(); + fopAc_ac_c* tgActor = i_tgStts->GetActor(); + + if (atActor == NULL || tgActor == NULL) { + vec.z = 0.0f; + vec.x = 0.0f; + vec.y = -1.0f; + } else { + PSVECSubtract(&tgActor->current.pos, &atActor->current.pos, &vec); + + if (cM3d_IsZero(PSVECMag(&vec))) { + vec.z = 0.0f; + vec.x = 0.0f; + vec.y = -1.0f; + } else { + PSVECNormalize(&vec, &vec); + } + } + } else { + PSVECNormalize(&vec, &vec); + } + + cM3d_CalcVecZAngle(vec, o_angle); } -#pragma pop /* 8008685C-80086AC0 08119C 0264+00 1/1 0/0 0/0 .text * ProcAtTgHitmark__4dCcSFbbP8cCcD_ObjP8cCcD_ObjP12dCcD_GObjInfP12dCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP10dCcD_GSttsP10dCcD_GSttsP4cXyzb */ +// one branch issue +#ifdef NONMATCHING +void dCcS::ProcAtTgHitmark(bool i_setAt, bool i_setTg, cCcD_Obj* param_2, cCcD_Obj* param_3, + dCcD_GObjInf* i_atObjInf, dCcD_GObjInf* i_tgObjInf, cCcD_Stts* param_6, + cCcD_Stts* param_7, dCcD_GStts* param_8, dCcD_GStts* param_9, + cXyz* i_hitPos, bool i_chkShield) { + if (!i_atObjInf->ChkAtNoHitMark() && !i_tgObjInf->ChkTgNoHitMark() && + (i_atObjInf->GetAtType() != AT_TYPE_10000000 || i_tgObjInf->GetAc() == NULL || + fopAcM_checkStatus(i_tgObjInf->GetAc(), AT_TYPE_10000000))) + { + if ((i_atObjInf->GetAtType() & + (AT_TYPE_WOLF_ATTACK | AT_TYPE_WOLF_CUT_TURN | AT_TYPE_10000000 | AT_TYPE_MIDNA_LOCK | + AT_TYPE_HOOKSHOT | AT_TYPE_SHIELD_ATTACK | AT_TYPE_NORMAL_SWORD)) == 0 || + i_tgObjInf->GetTgSpl() == 1) + { + return; + } + + if ((i_atObjInf->GetAtType() != AT_TYPE_HOOKSHOT || + !i_tgObjInf->ChkTgHookShotNoHitMark()) && + (i_atObjInf->GetAtType() != AT_TYPE_ARROW || !i_tgObjInf->ChkTgArrowNoHitMark()) && + param_9->ChkNoneActorPerfTblId()) + { + if (!i_chkShield) { + if ((i_atObjInf->GetAtHitMark() != 0 || i_tgObjInf->GetTgHitMark() == 8) && + (i_atObjInf->GetAtHitMark() != 4 || i_tgObjInf->GetTgHitMark() != 4)) + { + csXyz sp10; + CalcParticleAngle(i_atObjInf, param_6, param_7, &sp10); + + if (i_tgObjInf->GetTgHitMark() == 5 || i_tgObjInf->GetTgHitMark() == 8) { + u32 atType = i_atObjInf->GetAtType(); + fopAc_ac_c* ac = i_tgObjInf->GetAc(); + + i_dComIfGp_setHitMark(2, ac, i_hitPos, &sp10, NULL, atType); + } else { + u16 hitmark; + if (i_tgObjInf->GetTgHitMark() == 3) { + hitmark = 3; + } else { + hitmark = i_atObjInf->GetAtHitMark(); + } + + if ((hitmark != 1 && hitmark != 3) || i_atObjInf->GetAtAtp() != 0) { + u32 atType = i_atObjInf->GetAtType(); + fopAc_ac_c* ac = i_tgObjInf->GetAc(); + + i_dComIfGp_setHitMark(hitmark, ac, i_hitPos, &sp10, NULL, atType); + } + } + } + } else if (i_tgObjInf->GetTgHitMark() != 0) { + csXyz sp8; + CalcParticleAngle(i_atObjInf, param_6, param_7, &sp8); + + u32 atType = i_atObjInf->GetAtType(); + fopAc_ac_c* ac = i_tgObjInf->GetAc(); + u16 hitmark = i_tgObjInf->GetTgHitMark(); + + i_dComIfGp_setHitMark(hitmark, ac, i_hitPos, &sp8, NULL, atType); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -375,74 +562,179 @@ asm void dCcS::ProcAtTgHitmark(bool param_0, bool param_1, cCcD_Obj* param_2, cC #include "asm/d/cc/d_cc_s/func_8008685C.s" } #pragma pop +#endif /* 80086AC0-80086D8C 081400 02CC+00 1/0 0/0 0/0 .text * SetAtTgGObjInf__4dCcSFbbP8cCcD_ObjP8cCcD_ObjP12cCcD_GObjInfP12cCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP10cCcD_GSttsP10cCcD_GSttsP4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dCcS::SetAtTgGObjInf(bool param_0, bool param_1, cCcD_Obj* param_2, cCcD_Obj* param_3, - cCcD_GObjInf* param_4, cCcD_GObjInf* param_5, cCcD_Stts* param_6, - cCcD_Stts* param_7, cCcD_GStts* param_8, cCcD_GStts* param_9, - cXyz* param_10) { - nofralloc -#include "asm/d/cc/d_cc_s/func_80086AC0.s" +void dCcS::SetAtTgGObjInf(bool i_setAt, bool i_setTg, cCcD_Obj* param_2, cCcD_Obj* param_3, + cCcD_GObjInf* i_atObjInf, cCcD_GObjInf* i_tgObjInf, cCcD_Stts* param_6, + cCcD_Stts* param_7, cCcD_GStts* param_8, cCcD_GStts* param_9, + cXyz* i_hitPos) { + dCcD_GObjInf* atObjInf = (dCcD_GObjInf*)i_atObjInf; + dCcD_GObjInf* tgObjInf = (dCcD_GObjInf*)i_tgObjInf; + dCcD_GStts* stts1 = (dCcD_GStts*)param_8; + dCcD_GStts* stts2 = (dCcD_GStts*)param_9; + + bool chk_shield = ChkShield(param_2, param_3, atObjInf, tgObjInf, i_hitPos); + + if (i_setAt) { + atObjInf->SetAtHitPos(*i_hitPos); + atObjInf->SetAtRVec(*tgObjInf->GetTgVecP()); + + if (stts1 != NULL && stts1->GetTgSpl() == 0) { + stts1->SetTgSpl(tgObjInf->GetTgSpl()); + } + + atObjInf->SetAtHitApid(param_7->GetApid()); + + if (chk_shield || tgObjInf->GetTgHitMark() == 8 && atObjInf->GetAtMtrl() != 2 && + (atObjInf->GetAtSpl() == 0 || atObjInf->GetAtSpl() == 5 || + atObjInf->GetAtSpl() == 8)) + { + atObjInf->OnAtShieldHit(); + } + + if (stts2->ChkNoActor()) { + atObjInf->OnAtHitNoActor(); + } + } + + if (i_setTg) { + tgObjInf->SetTgHitPos(*i_hitPos); + tgObjInf->SetTgRVec(*atObjInf->GetAtVecP()); + + if (stts2 != NULL && stts1->GetAtSpl() == 0) { + stts2->SetAtSpl(atObjInf->GetAtSpl()); + } + + tgObjInf->SetTgHitApid(param_6->GetApid()); + + if (chk_shield) { + tgObjInf->OnTgShieldHit(); + } else { + param_7->PlusDmg(param_2->GetAtAtp()); + } + + if (stts1->ChkNoActor()) { + tgObjInf->OnTgHitNoActor(); + } + } + + if (i_setAt) { + dCcD_HitCallback cb = atObjInf->GetAtHitCallback(); + + if (cb != NULL) { + cb(atObjInf->GetAc(), atObjInf, tgObjInf->GetAc(), tgObjInf); + } + } + + if (i_setTg) { + dCcD_HitCallback cb = tgObjInf->GetTgHitCallback(); + + if (cb != NULL) { + cb(tgObjInf->GetAc(), tgObjInf, atObjInf->GetAc(), atObjInf); + } + } + + if (i_setAt && i_setTg && (!atObjInf->ChkAtEffCounter() || !tgObjInf->ChkTgEffCounter())) { + atObjInf->SetAtEffCounterTimer(); + tgObjInf->SetTgEffCounterTimer(); + + ProcAtTgHitmark(i_setAt, i_setTg, param_2, param_3, atObjInf, tgObjInf, param_6, param_7, + stts1, stts2, i_hitPos, chk_shield); + } } -#pragma pop /* 80086D8C-80086FBC 0816CC 0230+00 0/0 2/2 0/0 .text * ChkCamera__4dCcSFR4cXyzR4cXyzfP10fopAc_ac_cP10fopAc_ac_cP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dCcS::ChkCamera(cXyz& param_0, cXyz& param_1, f32 param_2, fopAc_ac_c* param_3, - fopAc_ac_c* param_4, fopAc_ac_c* param_5) { - nofralloc -#include "asm/d/cc/d_cc_s/ChkCamera__4dCcSFR4cXyzR4cXyzfP10fopAc_ac_cP10fopAc_ac_cP10fopAc_ac_c.s" -} -#pragma pop +bool dCcS::ChkCamera(cXyz& param_0, cXyz& param_1, f32 param_2, fopAc_ac_c* param_3, + fopAc_ac_c* param_4, fopAc_ac_c* param_5) { + if (mObjCoCount == 0) { + return false; + } + + cCcD_Obj** temp_r29 = &mpObjCo[mObjCoCount]; + + cCcD_CpsAttr sp48; + sp48.Set(param_0, param_1, param_2); + sp48.CalcAabBox(); + + cCcD_DivideInfo sp18; + f32 sp14; + mDivideArea.CalcDivideInfoOverArea(&sp18, sp48.GetWorkAab()); + + for (cCcD_Obj** i = mpObjCo; i < temp_r29; i++) { + if ((*i)->ChkCoSet() && (*i)->GetAc() != param_3 && (*i)->GetAc() != param_4 && + (*i)->GetAc() != param_5) + { + if ((*i)->GetPDivideInfo()->Chk(sp18)) { + dCcD_GObjInf* obj = (dCcD_GObjInf*)(*i)->GetGObjInf(); + + if (obj == NULL || !obj->ChkCoNoCamHit()) { + cCcD_ShapeAttr* shapeAttr = (*i)->GetShapeAttr(); + + if (sp48.CrossCo(*shapeAttr, &sp14)) { + return true; + } + } + } + } + } -/* ############################################################################################## */ -/* 80452790-80452798 000D90 0004+04 1/1 0/0 0/0 .sdata2 @4336 */ -SECTION_SDATA2 static f32 lit_4336[1 + 1 /* padding */] = { - 1.0f, - /* padding */ - 0.0f, -}; + return false; +} /* 80086FBC-8008721C 0818FC 0260+00 0/0 1/1 0/0 .text * chkCameraPoint__4dCcSFRC4cXyzPQ214cCcD_ShapeAttr5ShapeP10fopAc_ac_cP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dCcS::chkCameraPoint(cXyz const& param_0, cCcD_ShapeAttr::Shape* param_1, - fopAc_ac_c* param_2, fopAc_ac_c* param_3) { - nofralloc -#include "asm/d/cc/d_cc_s/chkCameraPoint__4dCcSFRC4cXyzPQ214cCcD_ShapeAttr5ShapeP10fopAc_ac_cP10fopAc_ac_c.s" -} -#pragma pop +bool dCcS::chkCameraPoint(cXyz const& param_0, cCcD_ShapeAttr::Shape* param_1, fopAc_ac_c* param_2, + fopAc_ac_c* param_3) { + if (mObjCoCount == 0) { + return false; + } + + cCcD_Obj** temp_r29 = &mpObjCo[mObjCoCount]; + + cCcD_SphAttr sp48; + cCcD_SrcSphAttr sp1C; + + sp1C.mCenter = param_0; + sp1C.mRadius = 1.0f; + sp48.Set(sp1C); + sp48.CalcAabBox(); + + cCcD_DivideInfo sp18; + f32 sp14; + mDivideArea.CalcDivideInfoOverArea(&sp18, sp48.GetWorkAab()); + + for (cCcD_Obj** i = mpObjCo; i < temp_r29; i++) { + if ((*i)->ChkCoSet() && (*i)->GetAc() != param_2 && (*i)->GetAc() != param_3) { + if ((*i)->GetPDivideInfo()->Chk(sp18)) { + dCcD_GObjInf* obj = (dCcD_GObjInf*)(*i)->GetGObjInf(); + + if (obj == NULL || !obj->ChkCoNoCamHit()) { + cCcD_ShapeAttr* shapeAttr = (*i)->GetShapeAttr(); + + if (sp48.CrossCo(*shapeAttr, &sp14)) { + shapeAttr->getShapeAccess(param_1); + + if (param_1->_0 != 2) { + return true; + } + } + } + } + } + } -/* 8008721C-800872A8 081B5C 008C+00 0/0 2/1 0/0 .text __dt__12cCcD_SphAttrFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm cCcD_SphAttr::~cCcD_SphAttr() { -extern "C" asm void __dt__12cCcD_SphAttrFv() { - nofralloc -#include "asm/d/cc/d_cc_s/__dt__12cCcD_SphAttrFv.s" + return false; } -#pragma pop /* 800872A8-800872AC 081BE8 0004+00 1/0 0/0 0/0 .text MoveAfterCheck__4dCcSFv */ -void dCcS::MoveAfterCheck() { - /* empty function */ -} +void dCcS::MoveAfterCheck() {} /* 800872AC-800872B0 081BEC 0004+00 1/1 0/0 0/0 .text DrawAfter__4dCcSFv */ -void dCcS::DrawAfter() { - /* empty function */ -} +void dCcS::DrawAfter() {} /* 800872B0-800872D0 081BF0 0020+00 0/0 1/1 0/0 .text Move__4dCcSFv */ void dCcS::Move() { @@ -463,7 +755,7 @@ void dCcS::MassClear() { /* ############################################################################################## */ /* 803AC3A4-803AC3E4 0094C4 0040+00 1/1 0/0 0/0 .data m_mtrl_hit_tbl__4dCcS */ -SECTION_DATA u8 dCcS::m_mtrl_hit_tbl[64] = { +u8 dCcS::m_mtrl_hit_tbl[64] = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, @@ -471,44 +763,23 @@ SECTION_DATA u8 dCcS::m_mtrl_hit_tbl[64] = { }; /* 80087330-8008734C 081C70 001C+00 1/1 0/0 0/0 .text ChkAtTgMtrlHit__4dCcSFUcUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dCcS::ChkAtTgMtrlHit(u8 param_0, u8 param_1) { - nofralloc -#include "asm/d/cc/d_cc_s/ChkAtTgMtrlHit__4dCcSFUcUc.s" +int dCcS::ChkAtTgMtrlHit(u8 i_atMtrl, u8 i_tgMtrl) { + return m_mtrl_hit_tbl[i_atMtrl + i_tgMtrl * 8]; } -#pragma pop /* 8008734C-800873B0 081C8C 0064+00 1/0 0/0 0/0 .text * ChkNoHitGAtTg__4dCcSFPC12cCcD_GObjInfPC12cCcD_GObjInfP10cCcD_GSttsP10cCcD_GStts */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -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" +bool dCcS::ChkNoHitGAtTg(cCcD_GObjInf const* i_atObjInf, cCcD_GObjInf const* i_tgObjInf, + cCcD_GStts*, cCcD_GStts*) { + dCcD_GObjInf* atObjInf = (dCcD_GObjInf*)i_atObjInf; + dCcD_GObjInf* tgObjInf = (dCcD_GObjInf*)i_tgObjInf; + + if (tgObjInf->ChkTgWolfSpNoDamage() && atObjInf->GetAtMtrl() == 0 && + atObjInf->GetAtType() & + (AT_TYPE_CSTATUE_BOSS_SWING | AT_TYPE_1000 | AT_TYPE_800 | AT_TYPE_CSTATUE_SWING)) + { + return true; + } + + return ChkAtTgMtrlHit(atObjInf->GetAtMtrl(), tgObjInf->GetTgMtrl()) == 0; } -#pragma pop - -/* ############################################################################################## */ -/* 803AC3E4-803AC418 009504 0034+00 0/0 2/2 0/0 .data __vt__4dCcS */ -SECTION_DATA extern void* __vt__4dCcS[13] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CalcTgPlusDmg__4dCcSFP8cCcD_ObjP8cCcD_ObjP9cCcD_SttsP9cCcD_Stts, - (void*)SetPosCorrect__4dCcSFP8cCcD_ObjP4cXyzP8cCcD_ObjP4cXyzf, - (void*) - SetCoGObjInf__4dCcSFbbP12cCcD_GObjInfP12cCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP10cCcD_GSttsP10cCcD_GStts, - (void*) - SetAtTgGObjInf__4dCcSFbbP8cCcD_ObjP8cCcD_ObjP12cCcD_GObjInfP12cCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP10cCcD_GSttsP10cCcD_GSttsP4cXyz, - (void*)ChkNoHitGAtTg__4dCcSFPC12cCcD_GObjInfPC12cCcD_GObjInfP10cCcD_GSttsP10cCcD_GStts, - (void*) - ChkAtTgHitAfterCross__4dCcSFbbPC12cCcD_GObjInfPC12cCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP10cCcD_GSttsP10cCcD_GStts, - (void*)ChkNoHitGCo__4dCcSFP8cCcD_ObjP8cCcD_Obj, - (void*)__dt__4dCcSFv, - (void*)MoveAfterCheck__4dCcSFv, - (void*)SetCoGCorrectProc__4cCcSFP8cCcD_ObjP8cCcD_Obj, - (void*)CalcParticleAngle__4dCcSFP12dCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP5csXyz, -}; diff --git a/src/d/com/d_com_static.cpp b/src/d/com/d_com_static.cpp index aff853bd74..e5fca33ebc 100644 --- a/src/d/com/d_com_static.cpp +++ b/src/d/com/d_com_static.cpp @@ -462,10 +462,10 @@ u8 daYkgr_c::m_emitter[4]; /* 80031870-800318B4 02C1B0 0044+00 0/0 0/0 19/19 .text getArcName__12daSetBgObj_cFP10fopAc_ac_c */ -const char* daSetBgObj_c::getArcName(fopAc_ac_c* param_0) { +const char* daSetBgObj_c::getArcName(fopAc_ac_c* i_this) { static char arcName[8]; - sprintf(arcName, "@bg%04x", (u16)fopAcM_GetParam(param_0)); + sprintf(arcName, "@bg%04x", (u16)fopAcM_GetParam(i_this)); return arcName; } diff --git a/src/d/d_jnt_col.cpp b/src/d/d_jnt_col.cpp index a21ea16079..8aad481d05 100644 --- a/src/d/d_jnt_col.cpp +++ b/src/d/d_jnt_col.cpp @@ -92,13 +92,13 @@ dJntCol_c::dJntCol_c() { /* 80035CA0-80035CC8 0305E0 0028+00 0/0 2/2 8/8 .text * init__9dJntCol_cFP10fopAc_ac_cPC13dJntColData_cP8J3DModeli */ int dJntCol_c::init(fopAc_ac_c* i_actorP, dJntColData_c const* i_jntColP, J3DModel* i_modelP, - int param_3) { + int param_3) { mData = (dJntColData_c*)i_jntColP; mModel = i_modelP; field_0x8 = param_3; field_0xc = 0; if (i_actorP) { - fopAcM_SetJntCol(i_actorP,this); + fopAcM_SetJntCol(i_actorP, this); } return 1; } @@ -112,18 +112,17 @@ SECTION_SDATA2 static f32 lit_3655 = 500.0f; #ifdef NONMATCHING // regalloc, parameters are loading in wrong? void dJntCol_c::setNowLine(cM3dGLin* param_0, cXyz const* param_1, csXyz const* param_2, - cXyz* param_3) { - + cXyz* param_3) { if (param_2) { mDoMtx_stack_c::ZXYrotS(*param_2); - mDoMtx_stack_c::multVec(&cXyz::BaseZ,param_3); + mDoMtx_stack_c::multVec(&cXyz::BaseZ, param_3); } else { *param_3 = cXyz::BaseZ; } cXyz start_pos = *param_1 - *param_3 * FLOAT_LABEL(lit_3655); cXyz end_pos = *param_1 + *param_3 * FLOAT_LABEL(lit_3655); - param_0->SetStartEnd(start_pos,end_pos); + param_0->SetStartEnd(start_pos, end_pos); } #else #pragma push @@ -234,7 +233,7 @@ asm void dJntCol_c::getArrowOffsetPosAndAngle(cXyz const* param_0, csXyz const* #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dJntCol_c::getHitmarkPosAndAngle(cXyz const* param_0, csXyz const* param_1, cXyz* param_2, +asm int dJntCol_c::getHitmarkPosAndAngle(cXyz const* param_0, csXyz const* param_1, cXyz* param_2, csXyz* param_3, int param_4) const { nofralloc #include "asm/d/d_jnt_col/getHitmarkPosAndAngle__9dJntCol_cCFPC4cXyzPC5csXyzP4cXyzP5csXyzi.s" @@ -244,10 +243,10 @@ asm void dJntCol_c::getHitmarkPosAndAngle(cXyz const* param_0, csXyz const* para /* 80036FA8-80037038 0318E8 0090+00 0/0 0/0 1/1 .text * setArrowPosAndAngle__9dJntCol_cFPC4cXyzPC4cXyziP4cXyzP5csXyz */ void dJntCol_c::setArrowPosAndAngle(cXyz const* param_0, cXyz const* i_srcPos, int i_anmMtxIdx, - cXyz* param_3, csXyz* i_arrowPosP) { - cXyz dst_pos; - mDoMtx_multVecSR(mModel->i_getAnmMtx(i_anmMtxIdx),i_srcPos,&dst_pos); + cXyz* param_3, csXyz* i_arrowPosP) { + cXyz dst_pos; + mDoMtx_multVecSR(mModel->i_getAnmMtx(i_anmMtxIdx), i_srcPos, &dst_pos); i_arrowPosP->x = dst_pos.atan2sY_XZ(); i_arrowPosP->y = dst_pos.atan2sX_Z(); - mDoMtx_multVec(mModel->i_getAnmMtx(i_anmMtxIdx),param_0,param_3); + mDoMtx_multVec(mModel->i_getAnmMtx(i_anmMtxIdx), param_0, param_3); } diff --git a/src/m_Do/m_Do_machine_exception.cpp b/src/m_Do/m_Do_machine_exception.cpp index 183e64e5e5..8a3ef899bf 100644 --- a/src/m_Do/m_Do_machine_exception.cpp +++ b/src/m_Do/m_Do_machine_exception.cpp @@ -121,21 +121,4 @@ void exception_addition(JUTConsole* pConsole) { dispGameInfo(); } -/* ############################################################################################## */ -/* 80450C98-80450C9C -00001 0004+00 0/0 0/0 50/50 .sbss None */ -/* 80450C98 0001+00 data_80450C98 None */ -/* 80450C99 0001+00 data_80450C99 None */ -/* 80450C9A 0001+00 data_80450C9A None */ -/* 80450C9B 0001+00 data_80450C9B None */ -extern u8 struct_80450C98[4]; -u8 struct_80450C98[4]; - -/* 80450C9C-80450CA0 -00001 0004+00 0/0 0/0 6/6 .sbss None */ -/* 80450C9C 0001+00 data_80450C9C None */ -/* 80450C9D 0001+00 data_80450C9D None */ -/* 80450C9E 0001+00 data_80450C9E None */ -/* 80450C9F 0001+00 data_80450C9F None */ -extern u8 struct_80450C9C[4]; -u8 struct_80450C9C[4]; - /* 80374460-80374460 000AC0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ |
