diff --git a/configure.py b/configure.py index a52563ea7..3a918e8a4 100644 --- a/configure.py +++ b/configure.py @@ -351,7 +351,7 @@ config.libs = [ Object(Matching, "d/d_a_bomb_static.cpp"), Object(NonMatching, "d/d_a_branch_static.cpp"), Object(NonMatching, "d/d_a_mgameboard_static.cpp"), - Object(NonMatching, "d/d_a_itembase_static.cpp"), + Object(Matching, "d/d_a_itembase_static.cpp"), Object(NonMatching, "d/d_a_item_static.cpp"), Object(Matching, "d/d_a_shop_item_static.cpp"), Object(NonMatching, "d/d_a_race_item_static.cpp"), diff --git a/include/d/actor/d_a_itembase.h b/include/d/actor/d_a_itembase.h index a5e15b626..beb9b591a 100644 --- a/include/d/actor/d_a_itembase.h +++ b/include/d/actor/d_a_itembase.h @@ -22,14 +22,13 @@ struct daItemBase_c_m_data { /* 0x18 */ s16 field_0x18; /* 0x1A */ s16 field_0x1A; /* 0x1C */ s16 mNumFramesPerFullSpin; - /* 0x1E */ u8 field_0x1E[0x20 - 0x1E]; /* 0x20 */ f32 field_0x20; /* 0x24 */ f32 field_0x24; /* 0x28 */ s16 field_0x28; /* 0x2A */ s16 mHeartMaxRandomZRot; /* 0x2C */ f32 field_0x2C; /* 0x30 */ f32 field_0x30; - /* 0x34 */ u8 field_0x34[0x38 - 0x34]; + /* 0x34 */ f32 field_0x34; /* 0x38 */ f32 mPickedUpInitialSpeedY; /* 0x3C */ f32 mPickedUpGravity; /* 0x40 */ s16 field_0x40; @@ -65,9 +64,9 @@ public: bool chkDead(); void setLoadError(); - daItemBase_c_m_data* getData(); + const daItemBase_c_m_data* getData(); - static daItemBase_c_m_data m_data; + static const daItemBase_c_m_data m_data; public: /* 0x294 */ request_of_phase_process_class mPhs; diff --git a/src/d/actor/d_a_item.cpp b/src/d/actor/d_a_item.cpp index 2e7b567f1..a4b3a42d2 100644 --- a/src/d/actor/d_a_item.cpp +++ b/src/d/actor/d_a_item.cpp @@ -24,7 +24,7 @@ static f32 dummy2[3] = {1.0f, 1.0f, 1.0f}; s32 daItem_c::m_timer_max = 10000; /* 800F4BC8-800F4BD4 .text getData__12daItemBase_cFv */ -daItemBase_c_m_data* daItemBase_c::getData() { +const daItemBase_c_m_data* daItemBase_c::getData() { return &daItemBase_c::m_data; } diff --git a/src/d/d_a_itembase_static.cpp b/src/d/d_a_itembase_static.cpp index bc9ad0103..a518f9f5a 100644 --- a/src/d/d_a_itembase_static.cpp +++ b/src/d/d_a_itembase_static.cpp @@ -6,8 +6,35 @@ #include "d/actor/d_a_itembase_static.h" #include "d/actor/d_a_itembase.h" #include "d/d_item_data.h" +#include "SSystem/SComponent/c_lib.h" #include "dolphin/types.h" +const daItemBase_c_m_data daItemBase_c::m_data = { + /* mFieldItemGravity */ -7.0f, + /* field_0x04 */ 0.62f, + /* field_0x08 */ 50.0f, + /* mScaleAnimSpeed */ 20.0f, + /* field_0x10 */ 5.0f, + /* field_0x14 */ 1, + /* mDuration */ 8*30, + /* field_0x18 */ 2*30, + /* field_0x1A */ 0x2000, + /* mNumFramesPerFullSpin */ 82, + /* field_0x20 */ -4.0f, + /* field_0x24 */ 3.5f, + /* field_0x28 */ 1100, + /* mHeartMaxRandomZRot */ 0x0BB8, + /* field_0x2C */ 30.0f, + /* field_0x30 */ 10.0f, + /* field_0x34 */ 1.5f, + /* mPickedUpInitialSpeedY */ 23.0f, + /* mPickedUpGravity */ -6.0f, + /* field_0x40 */ 13, + /* field_0x42 */ 16, + /* field_0x44 */ 50.0f, + /* mVelocityScale */ 7.0f, +}; + /* 80068650-80068658 .text getItemNo__12daItemBase_cFv */ u8 daItemBase_c::getItemNo() { return m_itemNo; @@ -25,12 +52,12 @@ u8 daItemBase_c::getR() { /* 80068690-800686A0 .text hide__12daItemBase_cFv */ void daItemBase_c::hide() { - mDrawFlags &= ~0x01; + cLib_offBit(mDrawFlags, (u8)0x01); } /* 800686A0-800686B0 .text show__12daItemBase_cFv */ void daItemBase_c::show() { - mDrawFlags |= 0x01; + cLib_onBit(mDrawFlags, (u8)0x01); } /* 800686B0-800686F8 .text changeDraw__12daItemBase_cFv */ @@ -43,24 +70,22 @@ void daItemBase_c::changeDraw() { /* 800686F8-80068710 .text chkDraw__12daItemBase_cFv */ bool daItemBase_c::chkDraw() { - /* Nonmatching */ - return ((mDrawFlags & 0x01) == 0x01); + return cLib_checkBit(mDrawFlags, (u8)0x01); } /* 80068710-80068720 .text dead__12daItemBase_cFv */ void daItemBase_c::dead() { - mDrawFlags |= 0x02; + cLib_onBit(mDrawFlags, (u8)0x02); } /* 80068720-80068738 .text chkDead__12daItemBase_cFv */ bool daItemBase_c::chkDead() { - /* Nonmatching */ - return ((mDrawFlags & 0x02) == 0x02); + return cLib_checkBit(mDrawFlags, (u8)0x02); } /* 80068738-80068748 .text setLoadError__12daItemBase_cFv */ void daItemBase_c::setLoadError() { - mDrawFlags |= 0x04; + cLib_onBit(mDrawFlags, (u8)0x04); } /* 80068748-800687B4 .text CheckItemCreateHeap__FP10fopAc_ac_c */