diff --git a/configure.py b/configure.py index 445fe6d6e..b4b306d7a 100644 --- a/configure.py +++ b/configure.py @@ -343,7 +343,7 @@ config.libs = [ Object(Matching, "d/d_save_init.cpp"), Object(Matching, "d/d_shop.cpp", extra_cflags=['-pragma "nosyminline on"']), Object(NonMatching, "d/d_jnt_hit.cpp"), - Object(NonMatching, "d/d_chain.cpp"), + Object(Matching, "d/d_chain.cpp"), Object(NonMatching, "d/d_cloth_packet.cpp"), Object(NonMatching, "d/d_a_obj.cpp"), Object(NonMatching, "d/d_a_obj_tribox_static.cpp"), diff --git a/include/d/d_cloth_packet.h b/include/d/d_cloth_packet.h index f28fa8f16..689c55469 100644 --- a/include/d/d_cloth_packet.h +++ b/include/d/d_cloth_packet.h @@ -9,8 +9,44 @@ class dKy_tevstr_c; class dCloth_packet_c : public J3DPacket { - typedef int (*FactorCheck)(dCloth_packet_c*, int, int); +public: + dCloth_packet_c(ResTIMG*, int, int, float, float, dKy_tevstr_c*, cXyz**); + ~dCloth_packet_c(); + virtual void init(); + virtual void cloth_move(); + virtual void cloth_draw(); + virtual void TexObjInit(ResTIMG*); + virtual void TexObjLoad(); + virtual void TevSetting(); + void draw(); + void setGlobalWind(cXyz*); + void getFactor(cXyz*, cXyz*, cXyz*, float, float, float, int, int); + void setNrm(); + void plot(); + + void setScale(cXyz scale) { mScale = scale; } + void setMtx(Mtx mtx); + typedef int (*FactorCheck)(dCloth_packet_c*, int, int); + void setFactorCheckCB(FactorCheck cb) { mpFactorCheckCB = cb; } + void setWindPower(f32 wind, f32 windWave) { + mWindSpeed = wind; + mWindSpeedWave = windWave; + } + void setParam(f32 spring, f32 grav, f32 drag, f32 flyFlex, f32 hoistFlex, s16 wave, s16 param_1, s16 ripple, s16 rotate, f32 wind, f32 windWave) { + mSpring = spring; + mGravity = grav; + mDrag = drag; + mFlyFlex = flyFlex; + mHoistFlex = hoistFlex; + mWaveSpeed = wave; + field_0xF2 = param_1; + mRipple = ripple; + mRotateY = rotate; + setWindPower(wind, windWave); + } + +private: /* 0x10 */ s32 mFlyGridSize; /* 0x14 */ s32 mHoistGridSize; /* 0x18 */ f32 mFlyLength; @@ -41,45 +77,77 @@ class dCloth_packet_c : public J3DPacket { /* 0xF4 */ s16 mRipple; /* 0xF6 */ s16 mRotateY; /* 0xF8 */ u8 mCurArr; +}; // Size: 0xFC -public: - void draw(); - ~dCloth_packet_c() {} +class dCloth_packetXlu_c : public dCloth_packet_c { virtual void init(); virtual void cloth_move(); virtual void cloth_draw(); virtual void TexObjInit(ResTIMG*); virtual void TexObjLoad(); virtual void TevSetting(); +}; - void setScale(cXyz scale) { mScale = scale; } - void setMtx(Mtx mtx); - void setFactorCheckCB(FactorCheck cb) { mpFactorCheckCB = cb; } - void setWindPower(f32 wind, f32 windWave) { - mWindSpeed = wind; - mWindSpeedWave = windWave; - } - void setParam(f32 spring, f32 grav, f32 drag, f32 flyFlex, f32 hoistFlex, s16 wave, s16 param_1, s16 ripple, s16 rotate, f32 wind, f32 windWave) { - mSpring = spring; - mGravity = grav; - mDrag = drag; - mFlyFlex = flyFlex; - mHoistFlex = hoistFlex; - mWaveSpeed = wave; - field_0xF2 = param_1; - mRipple = ripple; - mRotateY = rotate; - setWindPower(wind, windWave); - } +class dClothVobj03_c : public dCloth_packet_c { + virtual void init(); + virtual void cloth_move(); + virtual void cloth_draw(); + virtual void TexObjInit(ResTIMG*); + virtual void TexObjLoad(); + virtual void TevSetting(); + void cloth_copy(); - void setGlobalWind(cXyz*); -}; // Size: 0xFC +public: + static void* top_pointer; + static const s32 cloth_counter; +}; +dClothVobj03_c* dClothVobj03_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**); -dCloth_packet_c* dClothVobj03_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**); -dCloth_packet_c* dClothVobj04_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**); -dCloth_packet_c* dClothVobj05_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**); -dCloth_packet_c* dClothVobj07_0_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**); +class dClothVobj04_c : public dCloth_packet_c { + virtual void init(); + virtual void cloth_move(); + virtual void cloth_draw(); + virtual void TexObjInit(ResTIMG*); + virtual void TexObjLoad(); + virtual void TevSetting(); + void cloth_copy(); -dCloth_packet_c* dCloth_packetXlu_create(ResTIMG*, ResTIMG*, int, int, float, float, dKy_tevstr_c*, cXyz**); +public: + static void* top_pointer; + static const s32 cloth_counter; +}; +dClothVobj04_c* dClothVobj04_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**); + +class dClothVobj05_c : public dCloth_packet_c { + virtual void init(); + virtual void cloth_move(); + virtual void cloth_draw(); + virtual void TexObjInit(ResTIMG*); + virtual void TexObjLoad(); + virtual void TevSetting(); + void cloth_copy(); + +public: + static void* top_pointer; + static const s32 cloth_counter; +}; +dClothVobj05_c* dClothVobj05_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**); + +class dClothVobj07_0_c : public dCloth_packet_c { + virtual void init(); + virtual void cloth_move(); + virtual void cloth_draw(); + virtual void TexObjInit(ResTIMG*); + virtual void TexObjLoad(); + virtual void TevSetting(); + void cloth_copy(); + +public: + static void* top_pointer; + static const s32 cloth_counter; +}; +dClothVobj07_0_c* dClothVobj07_0_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**); + +dCloth_packetXlu_c* dCloth_packetXlu_create(ResTIMG*, ResTIMG*, int, int, float, float, dKy_tevstr_c*, cXyz**); #endif /* D_A_CLOTH_PACKET_H */ diff --git a/include/d/d_kankyo.h b/include/d/d_kankyo.h index caa856b8c..0f5b022a9 100644 --- a/include/d/d_kankyo.h +++ b/include/d/d_kankyo.h @@ -427,6 +427,7 @@ void dKy_setLight_init(); void dKy_setLight(); void dKy_GxFog_set(); void dKy_GxFog_sea_set(); +void dKy_GxFog_tevstr_set(dKy_tevstr_c*); void GxXFog_set(); void dKy_set_actcol_ratio(f32 ratio); void dKy_set_bgcol_ratio(f32 ratio); diff --git a/src/d/d_chain.cpp b/src/d/d_chain.cpp index a6a0028f2..200acec49 100644 --- a/src/d/d_chain.cpp +++ b/src/d/d_chain.cpp @@ -3,26 +3,125 @@ // Translation Unit: d_chain.cpp // -#include "d_chain.h" -#include "dolphin/types.h" +#include "d/d_kankyo.h" +#include "d/d_a_obj.h" +#include "d/d_s_play.h" +#include "m_Do/m_Do_mtx.h" +#include "JSystem/J3DGraphBase/J3DPacket.h" + +class dChain_packet_c : public J3DPacket { +public: + dChain_packet_c(int, dKy_tevstr_c*, f32); + ~dChain_packet_c(); + void draw(); + +public: + /* 0x10 */ dKy_tevstr_c* mpTevStr; + /* 0x14 */ cXyz mScale; + /* 0x20 */ s32 mNum; + /* 0x24 */ cXyz* mPt; +}; + +static Vec dummy0 = { 1.0f, 1.0f, 1.0f }; +static Vec dummy1 = { 1.0f, 1.0f, 1.0f }; + +static u8 l_chainS3TCTex[] __attribute__((aligned(32))) = { 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xDB, 0xB5, 0xB6, 0x00, 0x55, 0x55, 0x55, 0xDE, 0xDB, 0xB5, 0xB6, 0x00, 0x55, 0x55, 0x55, 0xB5, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xDB, 0xB5, 0xB6, 0x00, 0x55, 0x55, 0x55, 0xDE, 0xDB, 0xB5, 0xB6, 0x00, 0x55, 0x55, 0x55, 0xB5, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xDB, 0xB5, 0xB6, 0x00, 0x55, 0x55, 0x55, 0xDE, 0xDB, 0xB5, 0xB6, 0x00, 0x55, 0x55, 0x55, 0xB5, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xDB, 0xB5, 0xB6, 0x00, 0x55, 0x55, 0x55, 0xDE, 0xDB, 0xB5, 0xB6, 0x00, 0x55, 0x55, 0x55, 0xB5, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xB6, 0x94, 0x92, 0x00, 0x55, 0x55, 0x55, 0xB5, 0xB6, 0x94, 0x92, 0x00, 0x55, 0x55, 0x55, 0x8C, 0x31, 0x6B, 0x2D, 0x00, 0x55, 0x55, 0x55, 0x8C, 0x31, 0x6B, 0x2D, 0x00, 0x55, 0x55, 0x55, 0xB5, 0xB6, 0x94, 0x92, 0x00, 0x55, 0x55, 0x55, 0xB5, 0xB6, 0x94, 0x92, 0x00, 0x55, 0x55, 0x55, 0x8C, 0x31, 0x6B, 0x2D, 0x00, 0x55, 0x55, 0x55, 0x8C, 0x31, 0x6B, 0x2D, 0x00, 0x55, 0x55, 0x55, 0xB5, 0xB6, 0x94, 0x92, 0x00, 0x55, 0x55, 0x55, 0xB5, 0xB6, 0x94, 0x92, 0x00, 0x55, 0x55, 0x55, 0x8C, 0x31, 0x6B, 0x2D, 0x00, 0x55, 0x55, 0x55, 0x8C, 0x31, 0x6B, 0x2D, 0x00, 0x55, 0x55, 0x55, 0xB5, 0xB6, 0x94, 0x92, 0x00, 0x55, 0x55, 0x55, 0xB5, 0xB6, 0x94, 0x92, 0x00, 0x55, 0x55, 0x55, 0x8C, 0x31, 0x6B, 0x2D, 0x00, 0x55, 0x55, 0x55, 0x8C, 0x31, 0x6B, 0x2D, 0x00, 0x55, 0x55, 0x55, 0x94, 0x92, 0x6B, 0x2D, 0x55, 0x55, 0xAA, 0x00, 0x94, 0x92, 0x6B, 0x2D, 0x55, 0x55, 0xAA, 0x00, 0xB5, 0xB6, 0x94, 0x92, 0x55, 0x55, 0x00, 0x00, 0xB5, 0xB6, 0x94, 0x92, 0x55, 0x55, 0x00, 0x00, 0x94, 0x92, 0x6B, 0x2D, 0x55, 0x55, 0xAA, 0x00, 0x94, 0x92, 0x6B, 0x2D, 0x55, 0x55, 0xAA, 0x00, 0xB5, 0xB6, 0x94, 0x92, 0x55, 0x55, 0x00, 0x00, 0xB5, 0xB6, 0x94, 0x92, 0x55, 0x55, 0x00, 0x00, 0x94, 0x92, 0x6B, 0x2D, 0x55, 0x55, 0xAA, 0x00, 0x94, 0x92, 0x6B, 0x2D, 0x55, 0x55, 0xAA, 0x00, 0xB5, 0xB6, 0x94, 0x92, 0x55, 0x55, 0x00, 0x00, 0xB5, 0xB6, 0x94, 0x92, 0x55, 0x55, 0x00, 0x00, 0x94, 0x92, 0x6B, 0x2D, 0x55, 0x55, 0xAA, 0x00, 0x94, 0x92, 0x6B, 0x2D, 0x55, 0x55, 0xAA, 0x00, 0xB5, 0xB6, 0x94, 0x92, 0x55, 0x55, 0x00, 0x00, 0xB5, 0xB6, 0x94, 0x92, 0x55, 0x55, 0x00, 0x00 }; +static Vec l_pos[12] = { + { -2.0f, 1.522254f, -0.0f }, + { -2.0f, 1.522254f, 7.0f }, + { 2.0f, 1.522254f, -0.0f }, + { -3.5f, 0.0f, -1.5f }, + { -3.5f, 0.0f, 8.5f }, + { 3.5f, 0.0f, -1.5f }, + { -2.0f, -1.522254f, -0.0f }, + { -2.0f, -1.522254f, 7.0f }, + { 2.0f, -1.522254f, -0.0f }, + { 2.0f, 1.522254f, 7.0f }, + { 3.5f, 0.0f, 8.5f }, + { 2.0f, -1.522254f, 7.0f }, + +}; +static f32 l_texCoord[24] = { + 0.02736, 0.041406, + 0.97264, 0.041406, + 0.830848, 0.40324, + 0.169152, 0.40324, + 0.03125, 0.0, + 0.96875, 0.0, + 0.767857, 0.494086, + 0.232143, 0.494086, + 0.038462, 0.48226, + 0.038462, 0.983522, + 0.961538, 0.48226, + 0.961538, 0.983522, +}; +static u8 l_chainDL[0x7a] __attribute__((aligned(32))) = { 0x98, 0x00, 0x06, 0x01, 0x0A, 0x07, 0x0B, 0x09, 0x08, 0x0B, 0x09, 0x02, 0x08, 0x08, 0x09, 0x98, 0x00, 0x06, 0x0B, 0x07, 0x07, 0x06, 0x0A, 0x04, 0x04, 0x05, 0x09, 0x07, 0x01, 0x06, 0x98, 0x00, 0x06, 0x08, 0x03, 0x0B, 0x02, 0x05, 0x00, 0x0A, 0x01, 0x02, 0x03, 0x09, 0x02, 0x98, 0x00, 0x06, 0x02, 0x0A, 0x08, 0x0B, 0x00, 0x08, 0x06, 0x09, 0x01, 0x08, 0x07, 0x09, 0x98, 0x00, 0x06, 0x06, 0x07, 0x08, 0x06, 0x03, 0x04, 0x05, 0x05, 0x00, 0x07, 0x02, 0x06, 0x98, 0x00, 0x06, 0x07, 0x03, 0x06, 0x02, 0x04, 0x00, 0x03, 0x01, 0x01, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; +static u8 l_matDL[0xa8] __attribute__((aligned(32))) = { + 0x61, 0x80, 0x00, 0x01, 0x3A, 0x61, 0x84, 0x00, 0x00, 0x00, 0x61, 0x88, 0xE0, 0x7C, 0x1F, 0x61, 0x94, + // probably some macro for this + ((u32)(&l_chainS3TCTex) >> 21) & 0xFF, + ((u32)(&l_chainS3TCTex) >> 13) & 0xFF, + ((u32)(&l_chainS3TCTex) >> 5) & 0xFF, + 0x61, 0x30, 0x00, 0x00, 0x20, 0x61, 0x31, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x40, 0xFF, 0xFF, 0x42, 0x80, 0x08, 0x30, 0x3C, 0xF3, 0xCF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x18, 0x3C, 0xF3, 0xCF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x05, 0x43, 0x61, 0x28, 0x3C, 0x00, 0x00, 0x61, 0xC0, 0x08, 0x24, 0xAF, 0x61, 0xC1, 0x08, 0xFF, 0xF0, 0x61, 0x28, 0x3C, 0x00, 0x00, 0x61, 0xC2, 0x08, 0xF0, 0x8F, 0x61, 0xC3, 0x08, 0xFF, 0xC0, 0x61, 0x43, 0x00, 0x00, 0x01, 0x61, 0x40, 0x00, 0x00, 0x17, 0x61, 0x41, 0x00, 0x01, 0x0C, 0x61, 0xF3, 0x64, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x04, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 800628B4-80062954 .text __ct__15dChain_packet_cFiP12dKy_tevstr_cf */ -dChain_packet_c::dChain_packet_c(int, dKy_tevstr_c*, float) { - /* Nonmatching */ +dChain_packet_c::dChain_packet_c(int num, dKy_tevstr_c* tevstr, f32 scale) { + mNum = num; + mScale.setall(scale); + mpTevStr = tevstr; + mPt = new cXyz[mNum]; } /* 80062954-800629B0 .text __dt__15dChain_packet_cFv */ dChain_packet_c::~dChain_packet_c() { - /* Nonmatching */ } /* 800629B0-80062CB0 .text draw__15dChain_packet_cFv */ void dChain_packet_c::draw() { - /* Nonmatching */ + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_POS, l_pos, sizeof(*l_pos)); + GXSetArray(GX_VA_TEX0, l_texCoord, 8); + dKy_GxFog_tevstr_set(mpTevStr); + GXCallDisplayList(l_matDL, 0xa0); + GXSetTevColorS10(GX_TEVREG0, mpTevStr->mColorC0); + GXSetTevColor(GX_TEVREG1, mpTevStr->mColorK0); + GXSetCurrentMtx(GX_PNMTX0); + + cXyz* points = mPt; + f32 segmentLen = (g_regHIO.mChild[10].mFloatRegs[11] + 6.75f) * mScale.z; + s16 angle = 0; + cXyz pos = *points; + for (s32 i = 0; i < mNum - 1; i++) { + cXyz dir = points[i+1] - pos; + f32 len = dir.abs(); + if (!dir.normalizeRS()) + continue; + + Quaternion quat; + daObj::quat_rotBaseZ(&quat, dir); + while (len > 0.0f) { + mDoMtx_stack_c::transS(pos); + mDoMtx_stack_c::quatM(&quat); + mDoMtx_stack_c::ZrotM(angle); + mDoMtx_stack_c::scaleM(mScale); + mDoMtx_stack_c::revConcat(j3dSys.getViewMtx()); + GXLoadPosMtxImm(mDoMtx_stack_c::get(), GX_PNMTX0); + GXCallDisplayList(l_chainDL, 0x60); + len -= segmentLen; + pos += dir * segmentLen; + angle += 0x4000; + } + } } /* 80062CB0-80062D30 .text dChain_packet_create__FiP12dKy_tevstr_cf */ -void dChain_packet_create(int, dKy_tevstr_c*, float) { - /* Nonmatching */ +dChain_packet_c* dChain_packet_create(int p0, dKy_tevstr_c* tevstr, f32 f0) { + dChain_packet_c* chain = new dChain_packet_c(p0, tevstr, f0); + if (chain != NULL && chain->mPt == NULL) + chain = NULL; + return chain; } - diff --git a/src/d/d_cloth_packet.cpp b/src/d/d_cloth_packet.cpp index 904c1bfc6..4dd3c2553 100644 --- a/src/d/d_cloth_packet.cpp +++ b/src/d/d_cloth_packet.cpp @@ -3,17 +3,14 @@ // Translation Unit: d_cloth_packet.cpp // -#include "d_cloth_packet.h" -#include "dolphin/types.h" +#include "d/d_cloth_packet.h" /* 80062D5C-800630B0 .text __ct__15dCloth_packet_cFP7ResTIMGiiffP12dKy_tevstr_cPP4cXyz */ dCloth_packet_c::dCloth_packet_c(ResTIMG*, int, int, float, float, dKy_tevstr_c*, cXyz**) { /* Nonmatching */ } -/* 800630B0-8006310C .text __dt__15dCloth_packet_cFv */ dCloth_packet_c::~dCloth_packet_c() { - /* Nonmatching */ } /* 8006310C-8006313C .text default_factor_checkCB__FP15dCloth_packet_cii */ @@ -57,7 +54,7 @@ void dCloth_packet_c::setNrm() { } /* 800642D0-800642FC .text setMtx__15dCloth_packet_cFPA4_f */ -void dCloth_packet_c::setMtx(float(*)[4]) { +void dCloth_packet_c::setMtx(Mtx) { /* Nonmatching */ } @@ -102,10 +99,20 @@ void dCloth_packetXlu_c::cloth_draw() { } /* 80064CF8-80064E48 .text dCloth_packetXlu_create__FP7ResTIMGP7ResTIMGiiffP12dKy_tevstr_cPP4cXyz */ -void dCloth_packetXlu_create(ResTIMG*, ResTIMG*, int, int, float, float, dKy_tevstr_c*, cXyz**) { +dCloth_packetXlu_c* dCloth_packetXlu_create(ResTIMG*, ResTIMG*, int, int, float, float, dKy_tevstr_c*, cXyz**) { /* Nonmatching */ } +void* dClothVobj03_c::top_pointer; +void* dClothVobj04_c::top_pointer; +void* dClothVobj05_c::top_pointer; +void* dClothVobj07_0_c::top_pointer; + +const s32 dClothVobj03_c::cloth_counter = -1; +const s32 dClothVobj04_c::cloth_counter = -1; +const s32 dClothVobj05_c::cloth_counter = -1; +const s32 dClothVobj07_0_c::cloth_counter = -1; + /* 80064E48-80064F0C .text cloth_copy__14dClothVobj03_cFv */ void dClothVobj03_c::cloth_copy() { /* Nonmatching */ @@ -132,7 +139,7 @@ void dClothVobj03_c::TexObjLoad() { } /* 800652A8-800653F4 .text dClothVobj03_create__FP7ResTIMGP7ResTIMGP12dKy_tevstr_cPP4cXyz */ -void dClothVobj03_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**) { +dClothVobj03_c* dClothVobj03_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**) { /* Nonmatching */ } @@ -162,7 +169,7 @@ void dClothVobj04_c::TexObjLoad() { } /* 8006584C-80065998 .text dClothVobj04_create__FP7ResTIMGP7ResTIMGP12dKy_tevstr_cPP4cXyz */ -void dClothVobj04_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**) { +dClothVobj04_c* dClothVobj04_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**) { /* Nonmatching */ } @@ -197,7 +204,7 @@ void dClothVobj05_VtxFactorCB(dCloth_packet_c*, int, int) { } /* 80065DF8-80065F50 .text dClothVobj05_create__FP7ResTIMGP7ResTIMGP12dKy_tevstr_cPP4cXyz */ -void dClothVobj05_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**) { +dClothVobj05_c* dClothVobj05_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**) { /* Nonmatching */ } @@ -232,32 +239,6 @@ void dClothVobj07_0_VtxFactorCB(dCloth_packet_c*, int, int) { } /* 800663B4-8006650C .text dClothVobj07_0_create__FP7ResTIMGP7ResTIMGP12dKy_tevstr_cPP4cXyz */ -void dClothVobj07_0_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**) { +dClothVobj07_0_c* dClothVobj07_0_create(ResTIMG*, ResTIMG*, dKy_tevstr_c*, cXyz**) { /* Nonmatching */ } - -/* 8006650C-8006656C .text __dt__16dClothVobj07_0_cFv */ -dClothVobj07_0_c::~dClothVobj07_0_c() { - /* Nonmatching */ -} - -/* 8006656C-800665CC .text __dt__14dClothVobj05_cFv */ -dClothVobj05_c::~dClothVobj05_c() { - /* Nonmatching */ -} - -/* 800665CC-8006662C .text __dt__14dClothVobj04_cFv */ -dClothVobj04_c::~dClothVobj04_c() { - /* Nonmatching */ -} - -/* 8006662C-8006668C .text __dt__14dClothVobj03_cFv */ -dClothVobj03_c::~dClothVobj03_c() { - /* Nonmatching */ -} - -/* 8006668C-800666EC .text __dt__18dCloth_packetXlu_cFv */ -dCloth_packetXlu_c::~dCloth_packetXlu_c() { - /* Nonmatching */ -} -