diff --git a/configure.py b/configure.py index e70416c7d..f1ddb5271 100644 --- a/configure.py +++ b/configure.py @@ -565,7 +565,7 @@ config.libs = [ Object(NonMatching, "JSystem/JParticle/JPAExTexShape.cpp"), Object(NonMatching, "JSystem/JParticle/JPADynamicsBlock.cpp"), Object(NonMatching, "JSystem/JParticle/JPAFieldBlock.cpp"), - Object(NonMatching, "JSystem/JParticle/JPAKeyBlock.cpp"), + Object(Matching, "JSystem/JParticle/JPAKeyBlock.cpp"), Object(Matching, "JSystem/JParticle/JPATexture.cpp"), Object(NonMatching, "JSystem/JParticle/JPAResourceManager.cpp"), Object(NonMatching, "JSystem/JParticle/JPAEmitterLoader.cpp"), diff --git a/include/JSystem/JParticle/JPAKeyBlock.h b/include/JSystem/JParticle/JPAKeyBlock.h new file mode 100644 index 000000000..5eed0a1dd --- /dev/null +++ b/include/JSystem/JParticle/JPAKeyBlock.h @@ -0,0 +1,36 @@ +#ifndef JPAKEYBLOCK_H +#define JPAKEYBLOCK_H + +#include "dolphin/types.h" + +struct JPAKeyBlockData { + /* 0x00 */ u8 mID; + /* 0x01 */ u8 m01[0x04 - 0x01]; + /* 0x04 */ u8 mNumber; + /* 0x05 */ u8 m05[0x06 - 0x05]; + /* 0x06 */ u8 mbLoopEnable; +}; + +class JPAKeyBlock { +public: + virtual ~JPAKeyBlock() {} + virtual u8 getID() = 0; + virtual bool isLoopEnable() = 0; + virtual u8 getNumber() = 0; + virtual const f32* getKeyDataPtr() = 0; + + const JPAKeyBlockData* mpData; + const f32* mpKeyData; +}; + +class JPAKeyBlockArc : public JPAKeyBlock { +public: + JPAKeyBlockArc(const u8*); + virtual ~JPAKeyBlockArc() {} + virtual u8 getID() { return mpData->mID; } + virtual bool isLoopEnable() { return mpData->mbLoopEnable != 0; } + virtual u8 getNumber() { return mpData->mNumber; } + virtual const f32* getKeyDataPtr() { return mpKeyData; } +}; + +#endif /* JPAKEYBLOCK_H */ diff --git a/src/JSystem/JParticle/JPAKeyBlock.cpp b/src/JSystem/JParticle/JPAKeyBlock.cpp index 057f17a1d..df90565fa 100644 --- a/src/JSystem/JParticle/JPAKeyBlock.cpp +++ b/src/JSystem/JParticle/JPAKeyBlock.cpp @@ -4,39 +4,9 @@ // #include "JSystem/JParticle/JPAKeyBlock.h" -#include "dolphin/types.h" /* 8025855C-80258588 .text __ct__14JPAKeyBlockArcFPCUc */ -JPAKeyBlockArc::JPAKeyBlockArc(const unsigned char*) { - /* Nonmatching */ -} - -/* 80258588-802585D0 .text __dt__11JPAKeyBlockFv */ -JPAKeyBlock::~JPAKeyBlock() { - /* Nonmatching */ -} - -/* 802585D0-8025862C .text __dt__14JPAKeyBlockArcFv */ -JPAKeyBlockArc::~JPAKeyBlockArc() { - /* Nonmatching */ -} - -/* 8025862C-80258638 .text getID__14JPAKeyBlockArcFv */ -void JPAKeyBlockArc::getID() { - /* Nonmatching */ -} - -/* 80258638-8025864C .text isLoopEnable__14JPAKeyBlockArcFv */ -void JPAKeyBlockArc::isLoopEnable() { - /* Nonmatching */ -} - -/* 8025864C-80258658 .text getNumber__14JPAKeyBlockArcFv */ -void JPAKeyBlockArc::getNumber() { - /* Nonmatching */ -} - -/* 80258658-80258660 .text getKeyDataPtr__14JPAKeyBlockArcFv */ -void JPAKeyBlockArc::getKeyDataPtr() { - /* Nonmatching */ +JPAKeyBlockArc::JPAKeyBlockArc(const u8* data) { + mpData = reinterpret_cast(data+0x0C); + mpKeyData = reinterpret_cast(data+0x20); }