// // J2DAnmLoader // #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/J2DGraph/J2DAnmLoader.h" #include "JSystem/JSupport/JSupport.h" J2DAnmBase* J2DAnmLoaderDataBase::load(void const* p_data) { const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)p_data; J3D_PANIC(38, p_data, "Error : null pointer."); if (p_data == NULL) { return NULL; } else if (hdr->mMagic == 'J3D1') { switch (hdr->mType) { case 'bck1': { J2DAnmKeyLoader_v15 loader; loader.mpResource = new J2DAnmTransformKey(); return (J2DAnmBase*)loader.load(p_data); break; } case 'bpk1': { J2DAnmKeyLoader_v15 loader; loader.mpResource = new J2DAnmColorKey(); return (J2DAnmBase*)loader.load(p_data); break; } case 'blk1': OS_REPORT("J2DAnmLoader: this is a J3D Binary that cannot use J2D.\n"); return NULL; case 'btk1': { J2DAnmKeyLoader_v15 loader; loader.mpResource = new J2DAnmTextureSRTKey(); return (J2DAnmBase*)loader.load(p_data); break; } case 'brk1': { J2DAnmKeyLoader_v15 loader; loader.mpResource = new J2DAnmTevRegKey(); return (J2DAnmBase*)loader.load(p_data); break; } case 'bxk1': { J2DAnmKeyLoader_v15 loader; loader.mpResource = new J2DAnmVtxColorKey(); return (J2DAnmBase*)loader.load(p_data); break; } case 'bca1': { J2DAnmFullLoader_v15 loader; loader.mpResource = new J2DAnmTransformFull(); return (J2DAnmBase*)loader.load(p_data); break; } case 'bpa1': { J2DAnmFullLoader_v15 loader; loader.mpResource = new J2DAnmColorFull(); return (J2DAnmBase*)loader.load(p_data); break; } case 'btp1': { J2DAnmFullLoader_v15 loader; loader.mpResource = new J2DAnmTexPattern(); return (J2DAnmBase*)loader.load(p_data); } case 'bva1': { J2DAnmFullLoader_v15 loader; loader.mpResource = new J2DAnmVisibilityFull(); return (J2DAnmBase*)loader.load(p_data); break; } case 'bla1': OS_REPORT("J2DAnmLoader: this is a J3D Binary that cannot use J2D.\n"); return NULL; case 'bxa1': { J2DAnmFullLoader_v15 loader; loader.mpResource = new J2DAnmVtxColorFull(); return (J2DAnmBase*)loader.load(p_data); } default: OS_REPORT("J2DAnmLoader: this is not a J3D Binary.\n"); return NULL; } } else { return NULL; } } static void dummy() { OS_REPORT("J3DAnmLoader: this is not a J3D Binary.\n"); } J2DAnmKeyLoader_v15::J2DAnmKeyLoader_v15() {} J2DAnmKeyLoader_v15::~J2DAnmKeyLoader_v15() {} void* J2DAnmKeyLoader_v15::load(void const* p_data) { J3D_PANIC(317, p_data, "Error : null pointer."); const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)p_data; const J3DAnmDataBlockHeader* dataPtr = &hdr->mFirst; for (s32 i = 0; i < hdr->mCount; i++) { switch (dataPtr->mType) { case 'ANK1': readAnmTransform((J3DAnmTransformKeyData*)dataPtr); break; case 'PAK1': readAnmColor((J3DAnmColorKeyData*)dataPtr); break; case 'TTK1': readAnmTextureSRT((J3DAnmTextureSRTKeyData*)dataPtr); break; case 'VCK1': readAnmVtxColor((J3DAnmVtxColorKeyData*)dataPtr); break; case 'TRK1': readAnmTevReg((J3DAnmTevRegKeyData*)dataPtr); break; default: OS_REPORT("Unknown data block\n"); break; } dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); } return mpResource; } void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* p_anm, void const* p_data) { J3D_PANIC(355, p_data, "Error : null pointer."); const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)p_data; const J3DAnmDataBlockHeader* dataPtr = &hdr->mFirst; for (s32 i = 0; i < hdr->mCount; i++) { switch (dataPtr->mType) { case 'ANK1': if (p_anm->getKind() == KIND_TRANSFORM) { setAnmTransform((J2DAnmTransformKey*)p_anm, (J3DAnmTransformKeyData*)dataPtr); } break; case 'PAK1': if (p_anm->getKind() == KIND_COLOR) { setAnmColor((J2DAnmColorKey*)p_anm, (J3DAnmColorKeyData*)dataPtr); } break; case 'TTK1': if (p_anm->getKind() == KIND_TEXTURE_SRT) { setAnmTextureSRT((J2DAnmTextureSRTKey*)p_anm, (J3DAnmTextureSRTKeyData*)dataPtr); } break; case 'TRK1': if (p_anm->getKind() == KIND_TEV_REG) { setAnmTevReg((J2DAnmTevRegKey*)p_anm, (J3DAnmTevRegKeyData*)dataPtr); } break; case 'VCK1': if (p_anm->getKind() == KIND_VTX_COLOR) { setAnmVtxColor((J2DAnmVtxColorKey*)p_anm, (J3DAnmVtxColorKeyData*)dataPtr); } break; default: OS_REPORT("Unknown data block\n"); break; } dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); } } void J2DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* p_data) { J2DAnmTransformKey* p_anm = (J2DAnmTransformKey*)mpResource; setAnmTransform(p_anm, p_data); } void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* p_anm, J3DAnmTransformKeyData const* p_data) { J3D_PANIC(439, p_anm, "Error : null pointer."); J3D_PANIC(440, p_data, "Error : null pointer."); p_anm->field_0x22 = p_data->field_0xc; p_anm->mFrameMax = p_data->mFrameMax; p_anm->field_0x4 = p_data->field_0x8; p_anm->field_0x24 = p_data->field_0x9; p_anm->mFrame = 0; p_anm->mInfoTable = JSUConvertOffsetToPtr(p_data, (void*)p_data->mTableOffset); p_anm->mScaleValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->field_0x18); p_anm->mRotationValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->field_0x1c); p_anm->mTranslateValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->field_0x20); } void J2DAnmKeyLoader_v15::readAnmTextureSRT(J3DAnmTextureSRTKeyData const* p_data) { J2DAnmTextureSRTKey* p_anm = (J2DAnmTextureSRTKey*)mpResource; setAnmTextureSRT(p_anm, p_data); } void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* p_anm, J3DAnmTextureSRTKeyData const* p_data) { J3D_PANIC(480, p_anm, "Error : null pointer."); J3D_PANIC(481, p_data, "Error : null pointer."); p_anm->mUpdateMaterialNum = p_data->field_0xc; p_anm->mFrameMax = p_data->field_0xa; p_anm->field_0x4 = p_data->field_0x8; p_anm->field_0x10 = p_data->field_0x9; p_anm->mFrame = 0; p_anm->mUpdateMaterialNum = p_data->field_0xc; p_anm->field_0x1a = p_data->field_0xe; p_anm->field_0x1c = p_data->field_0x10; p_anm->field_0x1e = p_data->field_0x12; p_anm->mInfoTable = JSUConvertOffsetToPtr(p_data, (void*)p_data->mTableOffset); p_anm->mUpdateMaterialID = JSUConvertOffsetToPtr(p_data, (void*)p_data->mUpdateMatIDOffset); p_anm->field_0x34.setResource( JSUConvertOffsetToPtr(p_data, (void*)p_data->mNameTab1Offset)); p_anm->mUpdateTexMtxID = JSUConvertOffsetToPtr(p_data, p_data->mUpdateTexMtxIDOffset); p_anm->field_0x44 = JSUConvertOffsetToPtr(p_data, (void*)p_data->unkOffset); p_anm->mScaleValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mScaleValOffset); p_anm->mRotationValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mRotValOffset); p_anm->mTranslationValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mTransValOffset); if (p_data->mNameTab2Offset != 0) { p_anm->field_0x68.setResource( JSUConvertOffsetToPtr(p_data, (void*)p_data->mNameTab2Offset)); } p_anm->field_0x4e = p_data->field_0x34; p_anm->field_0x48 = p_data->field_0x36; p_anm->field_0x4a = p_data->field_0x38; p_anm->field_0x4c = p_data->field_0x3a; p_anm->field_0x5c = JSUConvertOffsetToPtr(p_data, (void*)p_data->mInfoTable2Offset); p_anm->field_0x64 = JSUConvertOffsetToPtr(p_data, (void*)p_data->field_0x40); p_anm->field_0x60 = JSUConvertOffsetToPtr(p_data, p_data->field_0x48); p_anm->field_0x78 = JSUConvertOffsetToPtr(p_data, (void*)p_data->field_0x4c); p_anm->field_0x50 = JSUConvertOffsetToPtr(p_data, (void*)p_data->field_0x50); p_anm->field_0x54 = JSUConvertOffsetToPtr(p_data, (void*)p_data->field_0x54); p_anm->field_0x58 = JSUConvertOffsetToPtr(p_data, (void*)p_data->field_0x58); switch (p_data->field_0x5c) { case 0: p_anm->field_0x7c = 0; break; case 1: p_anm->field_0x7c = 1; break; default: p_anm->field_0x7c = 0; break; } } void J2DAnmKeyLoader_v15::readAnmColor(J3DAnmColorKeyData const* p_data) { J2DAnmColorKey* p_anm = (J2DAnmColorKey*)mpResource; setAnmColor(p_anm, p_data); } void J2DAnmKeyLoader_v15::setAnmColor(J2DAnmColorKey* p_anm, J3DAnmColorKeyData const* p_data) { J3D_PANIC(573, p_anm, "Error : null pointer."); J3D_PANIC(574, p_data, "Error : null pointer."); p_anm->mFrameMax = p_data->mFrameMax; p_anm->field_0x4 = p_data->field_0x8; p_anm->mFrame = 0; p_anm->mUpdateMaterialNum = p_data->mUpdateMaterialNum; p_anm->field_0x10 = p_data->field_0x10; p_anm->field_0x12 = p_data->field_0x12; p_anm->field_0x14 = p_data->field_0x14; p_anm->field_0x16 = p_data->field_0x16; p_anm->mInfoTable = JSUConvertOffsetToPtr(p_data, (void*)p_data->mTableOffset); p_anm->mRValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mRValOffset); p_anm->mGValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mGValOffset); p_anm->mBValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mBValOffset); p_anm->mAValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mAValOffset); p_anm->mUpdateMaterialID = JSUConvertOffsetToPtr(p_data, (void*)p_data->mUpdateMaterialIDOffset); p_anm->field_0x20.setResource( JSUConvertOffsetToPtr(p_data, (void*)p_data->mNameTabOffset)); } void J2DAnmKeyLoader_v15::readAnmVtxColor(J3DAnmVtxColorKeyData const* p_data) { J2DAnmVtxColorKey* p_anm = (J2DAnmVtxColorKey*)mpResource; setAnmVtxColor(p_anm, p_data); } void J2DAnmKeyLoader_v15::setAnmVtxColor(J2DAnmVtxColorKey* p_anm, J3DAnmVtxColorKeyData const* p_data) { J3D_PANIC(628, p_anm, "Error : null pointer."); J3D_PANIC(629, p_data, "Error : null pointer."); p_anm->mFrameMax = p_data->mFrameMax; p_anm->field_0x4 = p_data->field_0x8; p_anm->mFrame = 0; p_anm->mAnmTableNum[0] = p_data->mAnmTableNum[0]; p_anm->mAnmTableNum[1] = p_data->mAnmTableNum[1]; p_anm->mInfoTable[0] = JSUConvertOffsetToPtr(p_data, (void*)p_data->mTableOffsets[0]); p_anm->mInfoTable[1] = JSUConvertOffsetToPtr(p_data, (void*)p_data->mTableOffsets[1]); p_anm->mVtxColorIndexData[0] = JSUConvertOffsetToPtr( p_data, (void*)p_data->mVtxColoIndexDataOffset[0]); p_anm->mVtxColorIndexData[1] = JSUConvertOffsetToPtr( p_data, (void*)p_data->mVtxColoIndexDataOffset[1]); p_anm->mVtxColorIndexPointer[0] = JSUConvertOffsetToPtr(p_data, (void*)p_data->mVtxColoIndexPointerOffset[0]); p_anm->mVtxColorIndexPointer[1] = JSUConvertOffsetToPtr(p_data, (void*)p_data->mVtxColoIndexPointerOffset[1]); p_anm->mRValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mRValOffset); p_anm->mGValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mGValOffset); p_anm->mBValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mBValOffset); p_anm->mAValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mAValOffset); } void* J2DAnmFullLoader_v15::load(void const* p_data) { J3D_PANIC(670, p_data, "Error : null pointer."); const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)p_data; const J3DAnmDataBlockHeader* dataPtr = &hdr->mFirst; for (s32 i = 0; i < hdr->mCount; i++) { switch (dataPtr->mType) { case 'ANF1': readAnmTransform((J3DAnmTransformFullData*)dataPtr); break; case 'PAF1': readAnmColor((J3DAnmColorFullData*)dataPtr); break; case 'TPT1': readAnmTexPattern((J3DAnmTexPatternFullData*)dataPtr); break; case 'VAF1': readAnmVisibility((J3DAnmVisibilityFullData*)dataPtr); break; case 'VCF1': readAnmVtxColor((J3DAnmVtxColorFullData*)dataPtr); break; default: OS_REPORT("Unknown data block\n"); break; } dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); } return mpResource; } void J2DAnmFullLoader_v15::setResource(J2DAnmBase* p_anm, void const* p_data) { J3D_PANIC(710, p_data, "Error : null pointer."); const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)p_data; const J3DAnmDataBlockHeader* dataPtr = &hdr->mFirst; for (s32 i = 0; i < hdr->mCount; i++) { switch (dataPtr->mType) { case 'ANF1': if (p_anm->getKind() == KIND_TRANSFORM) setAnmTransform((J2DAnmTransformFull*)p_anm, (J3DAnmTransformFullData*)dataPtr); break; case 'PAF1': if (p_anm->getKind() == KIND_COLOR) setAnmColor((J2DAnmColorFull*)p_anm, (J3DAnmColorFullData*)dataPtr); break; case 'TPT1': if (p_anm->getKind() == KIND_TEX_PATTERN) setAnmTexPattern((J2DAnmTexPattern*)p_anm, (J3DAnmTexPatternFullData*)dataPtr); break; case 'VAF1': if (p_anm->getKind() == KIND_VISIBILITY) setAnmVisibility((J2DAnmVisibilityFull*)p_anm, (J3DAnmVisibilityFullData*)dataPtr); break; case 'VCF1': if (p_anm->getKind() == KIND_VTX_COLOR) setAnmVtxColor((J2DAnmVtxColorFull*)p_anm, (J3DAnmVtxColorFullData*)dataPtr); break; default: OS_REPORT("Unknown data block\n"); break; } dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); } } J2DAnmFullLoader_v15::J2DAnmFullLoader_v15() {} J2DAnmFullLoader_v15::~J2DAnmFullLoader_v15() {} void J2DAnmFullLoader_v15::readAnmTransform(J3DAnmTransformFullData const* p_data) { J2DAnmTransformFull* p_anm = (J2DAnmTransformFull*)mpResource; setAnmTransform(p_anm, p_data); } void J2DAnmFullLoader_v15::setAnmTransform(J2DAnmTransformFull* p_anm, J3DAnmTransformFullData const* p_data) { J3D_PANIC(813, p_anm, "Error : null pointer."); J3D_PANIC(814, p_data, "Error : null pointer."); p_anm->field_0x22 = p_data->field_0xc; p_anm->mFrameMax = p_data->mFrameMax; p_anm->field_0x4 = p_data->field_0x8; p_anm->mFrame = 0; p_anm->mTableInfo = JSUConvertOffsetToPtr(p_data, (void*)p_data->mTableOffset); p_anm->mScaleValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mScaleValOffset); p_anm->mRotationValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mRotValOffset); p_anm->mTranslateValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mTransValOffset); } void J2DAnmFullLoader_v15::readAnmColor(J3DAnmColorFullData const* p_data) { J2DAnmColorFull* p_anm = (J2DAnmColorFull*)mpResource; setAnmColor(p_anm, p_data); } void J2DAnmFullLoader_v15::setAnmColor(J2DAnmColorFull* p_anm, J3DAnmColorFullData const* p_data) { J3D_PANIC(857, p_anm, "Error : null pointer."); J3D_PANIC(858, p_data, "Error : null pointer."); p_anm->mFrameMax = p_data->mFrameMax; p_anm->field_0x4 = p_data->field_0x8; p_anm->mFrame = 0; p_anm->mUpdateMaterialNum = p_data->mUpdateMaterialNum; p_anm->mInfoTable = JSUConvertOffsetToPtr(p_data, (void*)p_data->mTableOffset); p_anm->mRValues = JSUConvertOffsetToPtr(p_data, p_data->mRValuesOffset); p_anm->mGValues = JSUConvertOffsetToPtr(p_data, p_data->mGValuesOffset); p_anm->mBValues = JSUConvertOffsetToPtr(p_data, p_data->mBValuesOffset); p_anm->mAValues = JSUConvertOffsetToPtr(p_data, p_data->mAValuesOffset); p_anm->mUpdateMaterialID = JSUConvertOffsetToPtr(p_data, (void*)p_data->mUpdateMaterialIDOffset); p_anm->field_0x20.setResource( JSUConvertOffsetToPtr(p_data, (void*)p_data->mNameTabOffset)); } void J2DAnmFullLoader_v15::readAnmTexPattern(J3DAnmTexPatternFullData const* p_data) { J2DAnmTexPattern* p_anm = (J2DAnmTexPattern*)mpResource; setAnmTexPattern(p_anm, p_data); } void J2DAnmFullLoader_v15::setAnmTexPattern(J2DAnmTexPattern* p_anm, J3DAnmTexPatternFullData const* p_data) { J3D_PANIC(906, p_anm, "Error : null pointer."); J3D_PANIC(907, p_data, "Error : null pointer."); p_anm->mFrameMax = p_data->mFrameMax; p_anm->field_0x4 = p_data->field_0x8; p_anm->mFrame = 0; p_anm->mUpdateMaterialNum = p_data->field_0xc; p_anm->field_0x18 = p_data->field_0xe; p_anm->mAnmTable = JSUConvertOffsetToPtr(p_data, (void*)p_data->mTableOffset); p_anm->mValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mValuesOffset); p_anm->mUpdateMaterialID = JSUConvertOffsetToPtr(p_data, (void*)p_data->mUpdateMaterialIDOffset); p_anm->field_0x20.setResource( JSUConvertOffsetToPtr(p_data, (void*)p_data->mNameTabOffset)); } void J2DAnmKeyLoader_v15::readAnmTevReg(J3DAnmTevRegKeyData const* p_data) { J2DAnmTevRegKey* p_anm = (J2DAnmTevRegKey*)mpResource; setAnmTevReg(p_anm, p_data); } void J2DAnmKeyLoader_v15::setAnmTevReg(J2DAnmTevRegKey* p_anm, J3DAnmTevRegKeyData const* p_data) { J3D_PANIC(955, p_anm, "Error : null pointer."); J3D_PANIC(956, p_data, "Error : null pointer."); p_anm->mFrameMax = p_data->mFrameMax; p_anm->field_0x4 = p_data->field_0x8; p_anm->mFrame = 0; p_anm->mCRegUpdateMaterialNum = p_data->mCRegUpdateMaterialNum; p_anm->mAnmCRegKeyTable = JSUConvertOffsetToPtr(p_data, (void*)p_data->mCRegTableOffset); p_anm->mCRegUpdateMaterialID = JSUConvertOffsetToPtr(p_data, (void*)p_data->mCRegUpdateMaterialIDOffset); p_anm->mCRegNameTab.setResource( JSUConvertOffsetToPtr(p_data, (void*)p_data->mCRegNameTabOffset)); p_anm->mKRegUpdateMaterialNum = p_data->mKRegUpdateMaterialNum; p_anm->mAnmKRegKeyTable = JSUConvertOffsetToPtr(p_data, (void*)p_data->mKRegTableOffset); p_anm->mKRegUpdateMaterialID = JSUConvertOffsetToPtr(p_data, (void*)p_data->mKRegUpdateMaterialIDOffset); p_anm->mKRegNameTab.setResource( JSUConvertOffsetToPtr(p_data, (void*)p_data->mKRegNameTabOffset)); p_anm->field_0x14 = p_data->field_0x10; p_anm->field_0x16 = p_data->field_0x12; p_anm->field_0x18 = p_data->field_0x14; p_anm->field_0x1a = p_data->field_0x16; p_anm->mCRValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mCRValuesOffset); p_anm->mCGValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mCGValuesOffset); p_anm->mCBValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mCBValuesOffset); p_anm->mCAValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mCAValuesOffset); p_anm->field_0x1c = p_data->field_0x18; p_anm->field_0x1e = p_data->field_0x1a; p_anm->field_0x20 = p_data->field_0x1c; p_anm->field_0x22 = p_data->field_0x1e; p_anm->mKRValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mKRValuesOffset); p_anm->mKGValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mKGValuesOffset); p_anm->mKBValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mKBValuesOffset); p_anm->mKAValues = JSUConvertOffsetToPtr(p_data, (void*)p_data->mKAValuesOffset); } void J2DAnmFullLoader_v15::readAnmVisibility(J3DAnmVisibilityFullData const* p_data) { J2DAnmVisibilityFull* p_anm = (J2DAnmVisibilityFull*)mpResource; setAnmVisibility(p_anm, p_data); } void J2DAnmFullLoader_v15::setAnmVisibility(J2DAnmVisibilityFull* p_anm, J3DAnmVisibilityFullData const* p_data) { J3D_PANIC(1025, p_anm, "Error : null pointer."); J3D_PANIC(1026, p_data, "Error : null pointer."); p_anm->mFrameMax = p_data->mFrameMax; p_anm->field_0x4 = p_data->field_0x8; p_anm->mFrame = 0; p_anm->field_0x10 = p_data->field_0xc; p_anm->field_0x12 = p_data->field_0xe; p_anm->mTable = JSUConvertOffsetToPtr(p_data, (void*)p_data->mTableOffset); p_anm->mValues = JSUConvertOffsetToPtr(p_data, p_data->mValuesOffset); } void J2DAnmFullLoader_v15::readAnmVtxColor(J3DAnmVtxColorFullData const* p_data) { J2DAnmVtxColorFull* p_anm = (J2DAnmVtxColorFull*)mpResource; setAnmVtxColor(p_anm, p_data); } void J2DAnmFullLoader_v15::setAnmVtxColor(J2DAnmVtxColorFull* p_anm, J3DAnmVtxColorFullData const* p_data) { J3D_PANIC(1070, p_anm, "Error : null pointer."); J3D_PANIC(1071, p_data, "Error : null pointer."); p_anm->mFrameMax = p_data->mFrameMax; p_anm->field_0x4 = p_data->field_0x8; p_anm->mFrame = 0; p_anm->mAnmTableNum[0] = p_data->mAnmTableNum[0]; p_anm->mAnmTableNum[1] = p_data->mAnmTableNum[1]; p_anm->mInfoTable[0] = JSUConvertOffsetToPtr(p_data, (void*)p_data->mTableOffsets[0]); p_anm->mInfoTable[1] = JSUConvertOffsetToPtr(p_data, (void*)p_data->mTableOffsets[1]); p_anm->mVtxColorIndexData[0] = JSUConvertOffsetToPtr( p_data, (void*)p_data->mVtxColorIndexDataOffsets[0]); p_anm->mVtxColorIndexData[1] = JSUConvertOffsetToPtr( p_data, (void*)p_data->mVtxColorIndexDataOffsets[1]); p_anm->mVtxColorIndexPointer[0] = JSUConvertOffsetToPtr(p_data, (void*)p_data->mVtxColorIndexPointerOffsets[0]); p_anm->mVtxColorIndexPointer[1] = JSUConvertOffsetToPtr(p_data, (void*)p_data->mVtxColorIndexPointerOffsets[1]); p_anm->mRValues = JSUConvertOffsetToPtr(p_data, p_data->mRValuesOffset); p_anm->mGValues = JSUConvertOffsetToPtr(p_data, p_data->mGValuesOffset); p_anm->mBValues = JSUConvertOffsetToPtr(p_data, p_data->mBValuesOffset); p_anm->mAValues = JSUConvertOffsetToPtr(p_data, p_data->mAValuesOffset); }