diff options
| author | Jcw87 <Jcw87@users.noreply.github.com> | 2026-02-02 23:46:39 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-02 23:46:39 -0800 |
| commit | 00bdde3b94a8fe00fe84dc0a482ec7ecfeb64ed5 (patch) | |
| tree | 25dab4285730af72d5387019015ec9a0d0aafcf6 /src/d | |
| parent | 2de91793aed42dd35d05b229a7e9af4a1974125c (diff) | |
d_com_static debug (#3082)
Diffstat (limited to 'src/d')
| -rw-r--r-- | src/d/actor/d_flower.inc | 2 | ||||
| -rw-r--r-- | src/d/actor/d_grass.inc | 2 | ||||
| -rw-r--r-- | src/d/d_com_static.cpp | 225 |
3 files changed, 179 insertions, 50 deletions
diff --git a/src/d/actor/d_flower.inc b/src/d/actor/d_flower.inc index 8f8e0b8a4e..ccd874c21f 100644 --- a/src/d/actor/d_flower.inc +++ b/src/d/actor/d_flower.inc @@ -1,4 +1,4 @@ -#include "d/actor/d_a_grass.h" +#include "d/actor/d_flower.h" #include "d/d_com_inf_game.h" #include "d/actor/d_a_player.h" #include "d/d_s_play.h" diff --git a/src/d/actor/d_grass.inc b/src/d/actor/d_grass.inc index 7f4bcda32c..11553d5e05 100644 --- a/src/d/actor/d_grass.inc +++ b/src/d/actor/d_grass.inc @@ -1,4 +1,4 @@ -#include "d/actor/d_a_grass.h" +#include "d/actor/d_grass.h" #include "d/d_com_inf_game.h" #include "d/actor/d_a_player.h" #include "d/d_s_play.h" diff --git a/src/d/d_com_static.cpp b/src/d/d_com_static.cpp index d90414e976..806efb5637 100644 --- a/src/d/d_com_static.cpp +++ b/src/d/d_com_static.cpp @@ -1,5 +1,7 @@ #include "d/d_com_static.h" +#include "d/d_debug_viewer.h" #include "d/d_demo.h" +#include "d/d_s_play.h" #include "d/actor/d_a_arrow.h" #include "d/actor/d_a_dshutter.h" #include "d/actor/d_a_grass.h" @@ -12,15 +14,24 @@ #include "d/actor/d_a_tag_magne.h" #include "d/actor/d_a_tag_mist.h" #include "d/actor/d_a_tag_stream.h" +#include "d/actor/d_grass.h" +#include "d/actor/d_flower.h" #include <cstdio> +s16 const daObjMovebox::Act_c::M_dir_base[4] = { + 0x0000, + 0x4000, + -0x8000, + -0x4000, +}; + void daSus_c::data_c::set(s8 i_roomNo, cXyz const& param_1, cXyz const& param_2, u8 param_3, u8 param_4, u8 i_type) { mRoomNo = i_roomNo; field_0x8.set(param_1.x - param_2.x, param_1.y, param_1.z - param_2.z); field_0x14.set(param_1.x + param_2.x, param_1.y + param_2.y, param_1.z + param_2.z); field_0x2 = param_3; - field_0x1 = param_4 != 0; + field_0x1 = param_4 != 0 ? true : false; field_0x3 = isSwitch() == false; mType = i_type; } @@ -65,8 +76,7 @@ u8 daSus_c::data_c::check(fopAc_ac_c* i_actor) { } if (check(i_actor->current.pos)) { - tmp |= 2; - return tmp; + return tmp | 2; } return tmp; @@ -79,6 +89,18 @@ void daSus_c::data_c::execute() { } } +void daSus_c::data_c::draw() { + if (!isSwitch()) { + cXyz local_20 = field_0x14 - field_0x8; + local_20 *= 0.5f; + cXyz local_2c = field_0x8 + local_20; + csXyz local_34(0, 0, 0); + GXColor local_38 = {0, 0, 255, 160}; + GXColor* r29 = &local_38; + dDbVw_drawCubeXlu(local_2c, local_20, local_34, *r29); + } +} + void daSus_c::room_c::add(daSus_c::data_c* i_data) { if (mpData == NULL) { mpData = i_data; @@ -93,12 +115,10 @@ void daSus_c::room_c::add(daSus_c::data_c* i_data) { } daSus_c::data_c* data1 = mpData; - daSus_c::data_c* data2 = data1->getNext(); - while (data2 != NULL) { + for (daSus_c::data_c* data2 = data1->getNext(); data2 != NULL; data2 = data1->getNext()) { if (data1->getType() != 0) break; data1 = data2; - data2 = data2->getNext(); } i_data->setNext(data1->getNext()); @@ -115,69 +135,77 @@ daSus_c::data_c daSus_c::mData[0x20]; daSus_c::room_c daSus_c::mRoom[0x40]; +#if DEBUG +daCanBall_c::Hio_c daCanBall_c::mHIO; +#endif + s16 daArrow_c::m_count; s16 daSus_c::mSetTop; int daSus_c::newData(s8 i_roomNo, cXyz const& param_1, cXyz const& param_2, u8 param_3, u8 param_4, u8 i_type) { - s16 setTop = mSetTop; - daSus_c::data_c* pData = ((daSus_c::data_c*)mData) + setTop; - for (s16 i = setTop; i < 32; pData++, i++) { - if (pData->isUsed()) { + daSus_c::data_c* pData = mData + mSetTop; + for (s16 i = mSetTop; i < 32; i++) { + if (!pData->isUsed()) { pData->set(i_roomNo, param_1, param_2, param_3, param_4, i_type); - daSus_c::room_c* pRoom = ((daSus_c::room_c*)mRoom) + i_roomNo; - pRoom->add(pData); + mRoom[i_roomNo].add(pData); mSetTop = (i + 1) % 32; return 1; } + pData++; } - pData = ((daSus_c::data_c*)mData); - for (s16 i = 0; i < setTop; pData++, i++) { - if (pData->isUsed()) { + pData = mData; + for (s16 i = 0; i < mSetTop; i++) { + if (!pData->isUsed()) { pData->set(i_roomNo, param_1, param_2, param_3, param_4, i_type); - ((daSus_c::room_c*)mRoom)[i_roomNo].add(pData); + mRoom[i_roomNo].add(pData); mSetTop = (i + 1) % 32; return 1; } + pData++; } return 0; } void daSus_c::reset() { - daSus_c::data_c* pData = (daSus_c::data_c*)mData; - for (int i = 0; i < 0x20; i++, pData++) { + daSus_c::data_c* pData = mData; + for (int i = 0; i < 0x20; i++) { pData->reset(); + pData++; } - daSus_c::room_c* pRoom = (daSus_c::room_c*)mRoom; - for (int i = 0; i < 0x40; i++, pRoom++) { + daSus_c::room_c* pRoom = mRoom; + for (int i = 0; i < 0x40; i++) { pRoom->init(); + pRoom++; } } bool daSus_c::check(s8 i_roomNo, cXyz const& i_pos) { - daSus_c::data_c* pData = (daSus_c::data_c*)mData; - for (s16 i = 0; i < 0x20; pData++, i++) { - if (!pData->isUsed() && i_roomNo == pData->getRoomNo() && pData->getType()) { + daSus_c::data_c* pData = mData; + for (s16 i = 0; i < 0x20; i++) { + if (pData->isUsed() && i_roomNo == pData->getRoomNo() && pData->getType()) { if (pData->check(i_pos)) { return true; } } + pData++; } return false; } void daSus_c::check(fopAc_ac_c* i_actor) { if (fopAcM_GetGroup(i_actor) != 1 && fopAcM_GetGroup(i_actor) != 5) { - daSus_c::data_c* pData = (daSus_c::data_c*)mData; + daSus_c::data_c* pData = mData; u8 res = 0; - for (s16 i = 0; i < 0x20; pData++, i++) { - if (!pData->isUsed() && pData->getType() == 0) { + for (s16 i = 0; i < 0x20; i++) { + if (pData->isUsed() && pData->getType() == 0) { res |= pData->check(i_actor); } + pData++; } if ((res & 0x80) != 0) { @@ -191,15 +219,75 @@ void daSus_c::check(fopAc_ac_c* i_actor) { } void daSus_c::execute() { - daSus_c::data_c* pData = (daSus_c::data_c*)mData; - for (s16 i = 0; i < 0x20; pData++, i++) { - if (!pData->isUsed()) { + daSus_c::data_c* pData = mData; + for (s16 i = 0; i < 0x20; i++) { + if (pData->isUsed()) { pData->execute(); } + pData++; + } +} + +void daSus_c::draw() { + if (!g_envHIO.mOther.mDisplayTransparentCyl) { + return; + } + daSus_c::data_c* pData = mData; + for (s16 i = 0; i < 0x20; i++) { + if (pData->isUsed()) { + pData->draw(); + } + pData++; } } +#if DEBUG +daCanBall_c::Hio_c::Hio_c() { + field_0x8 = -2.0f; + field_0xc = -20.0f; + field_0x10 = 0.5f; + field_0x14 = 0.3f; + field_0x18 = 0.2f; + field_0x1c = 0.3f; + field_0x20 = 3.0f; + field_0x24 = 0.0f; + field_0x28 = 0.1f; + field_0x2c = 30.0f; + field_0x30 = 1.8f; + field_0x38 = 250; + field_0x34 = 200.0f; + field_0x3c = 1.0f; +} + +void daCanBall_c::Hio_c::genMessage(JORMContext* mctx) { + mctx->genLabel("§ 鉄球のパラメータ設定 §\n", 0x80000001); + mctx->genSlider("鉄球の寿命", &field_0x38, 0, 500); + mctx->genSlider("重力加速度", &field_0x8, -20.0, 0.0); + mctx->genSlider("落下最高速度", &field_0xc, -50.0, 0.0); + mctx->genSlider("床の跳ね返り係数", &field_0x10, 0.0, 1.0); + mctx->genSlider("床の跳ね返り最小値", &field_0x14, 0.0, 10.0); + mctx->genSlider("壁の跳ね返り係数", &field_0x18, 0.0, 1.0); + mctx->genSlider("壁の跳ね返り最小値", &field_0x1c, 0.0, 10.0); + mctx->genSlider("画面を揺らす最小値", &field_0x20, 0.0, 10.0); + mctx->genSlider("初速度", &field_0x24, 0.0, 200.0); + mctx->genSlider("加速度", &field_0x28, 0.0, 200.0); + mctx->genSlider("最高速度", &field_0x2c, 0.0, 200.0); + mctx->genSlider("着地煙のサイズ", &field_0x30, 0.0, 20.0); + mctx->genSlider("バレルの長さ", &field_0x34, 200.0, 400.0); + mctx->genSlider("消滅する時の時間", &field_0x3c, -100.0, 100.0); +} +#endif + +static void dummy(int aLayerNum) { + JUT_ASSERT(0, 0 <= aLayerNum && aLayerNum < 256); +} + +namespace daNpc_Msg_c { + const int EVTEND_e = 43; +} + int daNpcMsg_setEvtNum(u8 iEvtNum) { + JUT_ASSERT(437, 0 <= iEvtNum && iEvtNum <= daNpc_Msg_c::EVTEND_e); dComIfGs_setTmpReg(0xFDFF, iEvtNum); return 1; } @@ -260,17 +348,19 @@ JPABaseEmitter* daYkgr_c::m_emitter; const char* daSetBgObj_c::getArcName(fopAc_ac_c* i_this) { static char arcName[8]; - sprintf(arcName, "@bg%04x", (u16)fopAcM_GetParam(i_this)); + u32 r30 = fopAcM_GetParam(i_this); + u16 r29 = fopAcM_GetParam(i_this); + sprintf(arcName, "@bg%04x", r29); + + if (DEBUG && r30 & 0x80000000) { + OS_REPORT("\e[43;30m旧仕様の地形ユニットMoveBGが残っています!!!\n\e[m"); + u16 r28 = r30 >> 12 & 0x1FF; + u16 r27 = r30 & 0xFFF; + sprintf(arcName, "@%03x%03x", r28, (u16)r27); + } return arcName; } -s16 const daObjMovebox::Act_c::M_dir_base[4] = { - 0x0000, - 0x4000, - -0x8000, - -0x4000, -}; - f32 const daDsh_c::OPEN_SIZE = 270.1f; f32 const daDsh_c::OPEN_ACCEL = 10.0f; @@ -329,9 +419,8 @@ daGrass_c* daGrass_c::m_myObj; dGrass_packet_c* daGrass_c::m_grass; void daGrass_c::deleteRoomGrass(int param_0) { - if (m_grass != NULL) { - dGrass_packet_c::deleteFunc delete_func = dGrass_packet_c::m_deleteRoom; - (m_grass->*(delete_func))(param_0); + if (m_grass) { + (m_grass->*dGrass_packet_c::getDeleteRoom())(param_0);; } } @@ -341,18 +430,19 @@ dFlower_packet_c* daGrass_c::m_flower; void daGrass_c::deleteRoomFlower(int param_0) { if (m_flower != NULL) { - dFlower_packet_c::deleteFunc delete_func = dFlower_packet_c::m_deleteRoom; - (m_flower->*(delete_func))(param_0); + (m_flower->*dFlower_packet_c::getDeleteRoom())(param_0); } } daMP_c* daMP_c::m_myObj; u32 daMP_c::daMP_c_Get_MovieRestFrame() { + JUT_ASSERT(668, m_myObj != NULL); return m_myObj->mpGetMovieRestFrame(); } void daMP_c::daMP_c_Set_PercentMovieVolume(f32 i_volume) { + JUT_ASSERT(673, m_myObj != NULL); m_myObj->mpSetPercentMovieVol(i_volume); } @@ -367,12 +457,18 @@ int daMP_c::daMP_c_THPPlayerPlay() { } void daMP_c::daMP_c_THPPlayerPause() { + JUT_ASSERT(697, m_myObj != NULL); m_myObj->mpTHPPause(); } daTagMagne_c* daTagMagne_c::mTagMagne; int daTagMagne_c::checkMagnetCode(cBgS_PolyInfo& poly) { +#if DEBUG + if (g_regHIO.mChildReg[4].mShortReg[6]) { + return true; + } +#endif if (mTagMagne == NULL) { return 0; } @@ -434,35 +530,68 @@ bool daObjCarry_c::chkSaveFlag() { cXyz daObjCarry_c::mPos[5]; const cXyz& daObjCarry_c::getPos(int param_0) { +#if DEBUG + if (param_0 < 0 || param_0 > 4) { + param_0 = 0; + } +#endif return mPos[param_0]; } void daObjCarry_c::savePos(int param_0, cXyz param_1) { - mPos[param_0].x = param_1.x; - mPos[param_0].y = param_1.y; - mPos[param_0].z = param_1.z; +#if DEBUG + if (param_0 < 0 || param_0 > 4) { + param_0 = 0; + } +#endif + mPos[param_0] = param_1; } u8 daObjCarry_c::mSttsFlag[5]; void daObjCarry_c::onSttsFlag(int idx, u8 flag) { - mSttsFlag[idx] |= flag; +#if DEBUG + if (idx < 0 || idx > 4) { + idx = 0; + } +#endif + cLib_onBit(mSttsFlag[idx], flag); } void daObjCarry_c::offSttsFlag(int idx, u8 flag) { - mSttsFlag[idx] &= ~flag; +#if DEBUG + if (idx < 0 || idx > 4) { + idx = 0; + } +#endif + cLib_offBit(mSttsFlag[idx], flag); } u8 daObjCarry_c::chkSttsFlag(int idx, u8 flag) { - return (u8)(mSttsFlag[idx] & flag) ? 1 : 0; +#if DEBUG + if (idx < 0 || idx > 4) { + idx = 0; + } +#endif + return cLib_checkBit(mSttsFlag[idx], flag) > 0; } s8 daObjCarry_c::mRoomNo[5]; void daObjCarry_c::setRoomNo(int idx, s8 roomNo) { +#if DEBUG + if (idx < 0 || idx > 4) { + idx = 0; + } +#endif mRoomNo[idx] = roomNo; } s8 daObjCarry_c::getRoomNo(int idx) { +#if DEBUG + if (idx < 0 || idx > 4) { + idx = 0; + } +#endif return mRoomNo[idx]; } |
