JPAEmitterLoader match, JPAEmitterManager almost

This commit is contained in:
LagoLunatic
2023-11-11 20:25:04 -05:00
parent bd412feae7
commit 997bc54d6d
6 changed files with 43 additions and 20 deletions
+1 -1
View File
@@ -568,7 +568,7 @@ config.libs = [
Object(Matching, "JSystem/JParticle/JPAKeyBlock.cpp"),
Object(Matching, "JSystem/JParticle/JPATexture.cpp"),
Object(Matching, "JSystem/JParticle/JPAResourceManager.cpp"),
Object(NonMatching, "JSystem/JParticle/JPAEmitterLoader.cpp"),
Object(Matching, "JSystem/JParticle/JPAEmitterLoader.cpp"),
Object(NonMatching, "JSystem/JParticle/JPAMath.cpp"),
Object(NonMatching, "JSystem/JParticle/JPAField.cpp"),
Object(NonMatching, "JSystem/JParticle/JPAEmitter.cpp"),
+2 -1
View File
@@ -131,7 +131,8 @@ public:
class JPABaseEmitter {
public:
JPABaseEmitter();
JPABaseEmitter() : mLink(this), mRandomSeed(0), mTick(0.0f), mTime(0.0f) {}
~JPABaseEmitter() {}
typedef void (JPABaseEmitter::*VolumeFunc)();
+2 -2
View File
@@ -27,8 +27,8 @@ public:
class JPAFieldData {
public:
JPAFieldData();
virtual ~JPAFieldData();
JPAFieldData() : mLink(this) {}
virtual ~JPAFieldData() {}
JSULink<JPAFieldData>* getLinkBufferPtr() { return &mLink; }
static JPAEmitterInfo * pEmtrInfo;
+2 -2
View File
@@ -31,8 +31,8 @@ public:
bool checkCreateChild();
JSULink<JPABaseParticle>* getLinkBufferPtr() { return &mLink; }
~JPABaseParticle();
JPABaseParticle();
~JPABaseParticle() {}
JPABaseParticle() : mLink(this), mCurFrame(0.0f) {}
public:
/* 0x00 */ JSULink<JPABaseParticle> mLink;
+27 -2
View File
@@ -30,6 +30,31 @@ public:
/* 0x0C */ JPATextureResource* mpTexRes;
};
static void dummy() {
OSReport("JPAEmitterLoader.cpp");
OSReport("%s");
OSReport("This is WRONG Version File\n");
OSReport("This is NO JPA File\n");
OSReport("pEmtrRes");
OSReport("Halt");
OSReport("pEmtrRes->pLinkInfoArray");
OSReport("pLinkInfo");
OSReport("pLinkInfo->keyBlocks || pLinkInfo->keyNum == 0");
OSReport("pLinkInfo->fldBlocks || pLinkInfo->fldNum == 0");
OSReport("pLinkInfo->texDataBase || texNum == 0");
OSReport("pLinkInfo->fldBlocks[fldCntr]");
OSReport("pLinkInfo->keyBlocks[keyCntr]");
OSReport("pLinkInfo->dynBlock");
OSReport("pLinkInfo->bspBlock");
OSReport("pLinkInfo->espBlock");
OSReport("pLinkInfo->sspBlock");
OSReport("pLinkInfo->etxBlock");
OSReport("This is WRONG File\n");
OSReport("pLinkInfo->fldBlocks[fld_cntr]");
OSReport("pLinkInfo->keyBlocks[key_cntr]");
OSReport("pTex");
}
/* 802590B4-8025917C .text load__31JPAEmitterArchiveLoaderDataBaseFPCUcP7JKRHeapPP18JPAEmitterResourcePP18JPATextureResource */
void JPAEmitterArchiveLoaderDataBase::load(const u8* data, JKRHeap* heap, JPAEmitterResource** dstEmtrRes, JPATextureResource** dstTexRes) {
u32 magic = ((const u32*)data)[0];
@@ -107,7 +132,7 @@ void JPAEmitterArchiveLoader_v10::load() {
break;
case 'KFA1':
pLinkInfo->keyBlocks[key_cntr] = (JPAKeyBlock*) new(pHeap, 0) JPAKeyBlockArc(pData + blockOffs);
JUT_ASSERT(278, pLinkInfo->keyBlocks[key_cntr]);
JUT_ASSERT(279, pLinkInfo->keyBlocks[key_cntr]);
key_cntr++;
break;
case 'BEM1':
@@ -144,7 +169,7 @@ void JPAEmitterArchiveLoader_v10::load() {
for (s32 i = 0; i < header->texResNum; i++) {
u32 size = *(u32*)(pData + offs + 0x04);
JPATextureArc* pTex = new(pHeap, 0) JPATextureArc(pData + offs);
JPATexture* pTex = new(pHeap, 0) JPATextureArc(pData + offs);
JUT_ASSERT(319, pTex);
getTextureResource()->registration(pTex);
offs += size;
+9 -12
View File
@@ -12,26 +12,26 @@
/* 8025EE44-8025F0E4 .text __ct__17JPAEmitterManagerFP18JPAResourceManagerUlUlUlP7JKRHeap */
JPAEmitterManager::JPAEmitterManager(JPAResourceManager* resMgr, u32 ptclNum, u32 emtrNum, u32 fieldNum, JKRHeap* heap) {
/* Nonmatching */
heap = heap != NULL ? heap : JKRHeap::getCurrentHeap();
mPtclNum = ptclNum;
mEmtrNum = emtrNum;
mFieldNum = fieldNum;
pResMgrArray[0] = resMgr;
for (u32 i = 1; i < 8; i++)
u32 i;
for (i = 1; i < 8; i++)
pResMgrArray[i] = 0;
JPABaseParticle* pPtclArray = new(heap, 0) JPABaseParticle[mPtclNum];
JUT_ASSERT(0x2e, pPtclArray);
for (u32 i = 0; i < mPtclNum; i++) {
for (i = 0; i < mPtclNum; i++) {
JPABaseParticle* ptcl = &pPtclArray[i];
mPtclPool.prepend(ptcl->getLinkBufferPtr());
}
JPABaseEmitter* pEmtrArray = new(heap, 0) JPABaseEmitter[mEmtrNum];
JUT_ASSERT(0x35, pEmtrArray);
for (u32 i = 0; i < mEmtrNum; i++) {
for (i = 0; i < mEmtrNum; i++) {
JPABaseEmitter* emtr = &pEmtrArray[i];
emtr->setParticleList(&mPtclPool);
emtr->setFieldList(&mFieldPool);
@@ -40,7 +40,7 @@ JPAEmitterManager::JPAEmitterManager(JPAResourceManager* resMgr, u32 ptclNum, u3
JPAFieldData* pFieldArray = new(heap, 0) JPAFieldData[mFieldNum];
JUT_ASSERT(0x3e, pFieldArray);
for (u32 i = 0; i < mFieldNum; i++) {
for (i = 0; i < mFieldNum; i++) {
JPAFieldData* field = &pFieldArray[i];
mFieldPool.prepend(field->getLinkBufferPtr());
}
@@ -48,7 +48,7 @@ JPAEmitterManager::JPAEmitterManager(JPAResourceManager* resMgr, u32 ptclNum, u3
/* 8025F0E4-8025F2F4 .text createSimpleEmitterID__17JPAEmitterManagerFRCQ29JGeometry8TVec3<f>UsUcUcP34JPACallBackBase<P14JPABaseEmitter>P54JPACallBackBase2<P14JPABaseEmitter,P15JPABaseParticle> */
JPABaseEmitter* JPAEmitterManager::createSimpleEmitterID(const JGeometry::TVec3<float>& pos, u16 userID, u8 groupID, u8 rmID, JPACallBackBase<JPABaseEmitter*>* pEmtrCallBack, JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*>* pPtclCallBack) {
/* Nonmatching */
/* Nonmatching - regalloc */
JUT_ASSERT(0x56, groupID < 16);
JUT_ASSERT(0x57, rmID < 8);
JUT_ASSERT(0x58, pResMgrArray[rmID] != 0);
@@ -127,12 +127,10 @@ void JPAEmitterManager::forceDeleteEmitter(JPABaseEmitter* emtr) {
/* 8025F53C-8025F5B4 .text forceDeleteAllEmitter__17JPAEmitterManagerFv */
void JPAEmitterManager::forceDeleteAllEmitter() {
/* Nonmatching */
for (u32 i = 0; i < 16; i++) {
for (u8 i = 0; i < 16; i++) {
for (JSULink<JPABaseEmitter>* link = mEmtrGroup[i].getFirst(); link != NULL;) {
JSULink<JPABaseEmitter>* next = link->getNext();
JPABaseEmitter* emtr = link->getObject();
forceDeleteEmitter(emtr);
forceDeleteEmitter(link->getObject());
link = next;
}
}
@@ -140,9 +138,8 @@ void JPAEmitterManager::forceDeleteAllEmitter() {
/* 8025F5B4-8025F68C .text clearResourceManager__17JPAEmitterManagerFUc */
void JPAEmitterManager::clearResourceManager(u8 rmID) {
/* Nonmatching */
JUT_ASSERT(0x14b, rmID < 8);
for (u32 i = 0; i < 16; i++) {
for (u8 i = 0; i < 16; i++) {
for (JSULink<JPABaseEmitter>* link = mEmtrGroup[i].getFirst(); link != NULL;) {
JSULink<JPABaseEmitter>* next = link->getNext();
JPABaseEmitter* emtr = link->getObject();