#include "assets.h" #include "Windows.h" #include Assets::Assets(QObject *parent) : QObject(parent) { } Assets::~Assets() { } QVector Assets::Load_GlyphArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { Glyph glyph; *aStream >> glyph.letter >> glyph.x0 >> glyph.y0 >> glyph.dx >> glyph.pixelWidth >> glyph.pixelHeight >> glyph.s0 >> glyph.t0 >> glyph.s1 >> glyph.t1; result << glyph; } return result; } // ?Load_GfxLightRegionAxisArray@@YAX_NH@Z at 0x822a49a0 QVector Assets::Load_GfxLightRegionAxisArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { GfxLightRegionAxis gfxLightRegionAxis; *aStream >> gfxLightRegionAxis.dir[0] >> gfxLightRegionAxis.dir[1] >> gfxLightRegionAxis.dir[2] >> gfxLightRegionAxis.midPoint >> gfxLightRegionAxis.halfSize; result << gfxLightRegionAxis; } return result; } // ?Load_GfxDrawSurfArray@@YAX_NH@Z at 0x822a49c0 QVector Assets::Load_GfxDrawSurfArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { GfxDrawSurf gfxDrawSurf; *aStream >> gfxDrawSurf.packed; result << gfxDrawSurf; } return result; } // ?Load_GfxSceneDynBrushArray@@YAX_NH@Z at 0x822a49d8 QVector Assets::Load_GfxSceneDynBrushArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { GfxSceneDynBrush gfxSceneDynBrush; *aStream >> gfxSceneDynBrush.info.surfId >> gfxSceneDynBrush.dynEntId; result << gfxSceneDynBrush; } return result; } // ?Load_GfxSceneDynModelArray@@YAX_NH@Z at 0x822a49f0 QVector Assets::Load_GfxSceneDynModelArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { GfxSceneDynModel gfxSceneDynModel; *aStream >> gfxSceneDynModel.info.lod >> gfxSceneDynModel.info.surfId >> gfxSceneDynModel.dynEntId; result << gfxSceneDynModel; } return result; } // ?Load_GfxStreamingAabbTreeArray@@YAX_NH@Z at 0x822a4a10 QVector Assets::Load_GfxStreamingAabbTreeArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { GfxStreamingAabbTree gfxStreamingAabbTree; *aStream >> gfxStreamingAabbTree.firstItem >> gfxStreamingAabbTree.itemCount >> gfxStreamingAabbTree.firstChild >> gfxStreamingAabbTree.childCount >> gfxStreamingAabbTree.mins[0] >> gfxStreamingAabbTree.mins[1] >> gfxStreamingAabbTree.mins[2] >> gfxStreamingAabbTree.maxs[0] >> gfxStreamingAabbTree.maxs[1] >> gfxStreamingAabbTree.maxs[2]; result << gfxStreamingAabbTree; } return result; } GfxLightGridColors Assets::Load_GfxLightGridColors(QDataStream *aStream) { GfxLightGridColors result; for (int j = 0; j < 56; j++) { *aStream >> result.rgb[j][0] >> result.rgb[j][1] >> result.rgb[j][2]; } return result; } // ?Load_GfxLightGridColorsArray@@YAX_NH@Z at 0x822a4a28 QVector Assets::Load_GfxLightGridColorsArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_GfxLightGridColors(aStream); } return result; } // ?Load_GfxLightGridEntryArray@@YAX_NH@Z at 0x822a4a40 QVector Assets::Load_GfxLightGridEntryArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { GfxLightGridEntry gfxLightGridEntry; for (int j = 0; j < 56; j++) { *aStream >> gfxLightGridEntry.colorsIndex >> gfxLightGridEntry.primaryLightIndex >> gfxLightGridEntry.needsTrace; } result << gfxLightGridEntry; } return result; } // ?Load_GfxCullGroupArray@@YAX_NH@Z at 0x822a4a58 QVector Assets::Load_GfxCullGroupArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { GfxCullGroup gfxCullGroup; for (int j = 0; j < 56; j++) { *aStream >> gfxCullGroup.mins[0] >> gfxCullGroup.mins[1] >> gfxCullGroup.mins[2] >> gfxCullGroup.maxs[0] >> gfxCullGroup.maxs[1] >> gfxCullGroup.maxs[2] >> gfxCullGroup.surfaceCount >> gfxCullGroup.startSurfIndex; } result << gfxCullGroup; } return result; } typedef unsigned __int16 StaticModelIndex; // ?Load_StaticModelIndexArray@@YAX_NH@Z at 0x822a4a70 QVector Assets::Load_StaticModelIndexArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { StaticModelIndex staticModelIndex; *aStream >> staticModelIndex; result << staticModelIndex; } return result; } // ?Load_GfxStaticModelInstArray@@YAX_NH@Z at 0x822a4a88 QVector Assets::Load_GfxStaticModelInstArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { GfxStaticModelInst gfxStaticModelInst; *aStream >> gfxStaticModelInst.mins[0] >> gfxStaticModelInst.mins[1] >> gfxStaticModelInst.mins[2] >> gfxStaticModelInst.maxs[0] >> gfxStaticModelInst.maxs[1] >> gfxStaticModelInst.maxs[2] >> gfxStaticModelInst.groundLighting.array[0] >> gfxStaticModelInst.groundLighting.array[1] >> gfxStaticModelInst.groundLighting.array[2] >> gfxStaticModelInst.groundLighting.array[3]; result << gfxStaticModelInst; } return result; } // ?Load_ItemKeyHandler@@YAX_N@Z at 0x822a5f68 ItemKeyHandler Assets::Load_ItemKeyHandler(QDataStream *aStream) { ItemKeyHandler result; *aStream >> result.key >> result.actionPtr >> result.nextPtr; if (result.actionPtr == -1) { result.action = Load_XStringCustom(aStream); } while (result.nextPtr == -1) { *aStream >> result.next->key >> result.next->actionPtr >> result.next->nextPtr; } return result; } typedef ItemKeyHandler ItemKeyHandlerNext; // ?Load_ItemKeyHandlerNext@@YAX_N@Z at 0x822a4aa0 ItemKeyHandler Assets::Load_ItemKeyHandlerNext(QDataStream *aStream) { return Load_ItemKeyHandler(aStream); } // ?Load_EditFieldDef@@YAX_N@Z at 0x822a4af0 EditFieldDef Assets::Load_EditFieldDef(QDataStream *aStream) { EditFieldDef result; *aStream >> result.minVal >> result.maxVal >> result.defVal >> result.range >> result.maxChars >> result.maxCharsGotoNext >> result.maxPaintChars >> result.paintOffset; return result; } // ?Load_Operator@@YAX_N@Z at 0x822a4b08 OperationEnum Assets::Load_Operator(QDataStream *aStream) { OperationEnum result; *aStream >> result; return result; } // ?Load_LeafBrushArray@@YAX_NH@Z at 0x822a4b20 QVector Assets::Load_LeafBrushArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { quint16 leafBrush; *aStream >> leafBrush; result << leafBrush; } return result; } CLeaf Assets::Load_CLeaf(QDataStream *aStream) { CLeaf result; *aStream >> result.firstCollAabbIndex >> result.collAabbCount >> result.brushContents >> result.terrainContents >> result.mins[0] >> result.mins[1] >> result.mins[2] >> result.maxs[0] >> result.maxs[1] >> result.maxs[2] >> result.leafBrushNode >> result.cluster; return result; } // ?Load_CModelArray@@YAX_NH@Z at 0x822a4b38 QVector Assets::Load_CModelArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { CModel cmodel; *aStream >> cmodel.mins[0] >> cmodel.mins[1] >> cmodel.mins[2] >> cmodel.maxs[0] >> cmodel.maxs[1] >> cmodel.maxs[2] >> cmodel.radius; cmodel.leaf = Load_CLeaf(aStream); result << cmodel; } return result; } // ?Load_CollisionAabbTreeArray@@YAX_NH@Z at 0x822a4b58 QVector Assets::Load_CollisionAabbTreeArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { CollisionAabbTree collisionAabbTree; *aStream >> collisionAabbTree.origin[0] >> collisionAabbTree.origin[1] >> collisionAabbTree.origin[2] >> collisionAabbTree.halfSize[0] >> collisionAabbTree.halfSize[1] >> collisionAabbTree.halfSize[2] >> collisionAabbTree.materialIndex >> collisionAabbTree.childCount >> collisionAabbTree.u.firstChildIndex >> collisionAabbTree.u.partitionIndex; result << collisionAabbTree; } return result; } // ?Load_CollisionBorder@@YAX_N@Z at 0x822a4b88 CollisionBorder Assets::Load_CollisionBorder(QDataStream *aStream) { CollisionBorder result; *aStream >> result.distEq[0] >> result.distEq[1] >> result.distEq[2] >> result.zBase >> result.zSlope >> result.start >> result.length; return result; } // ?Load_CollisionBorderArray@@YAX_NH@Z at 0x822a4b70 QVector Assets::Load_CollisionBorderArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_CollisionBorder(aStream); } return result; } // ?Load_cLeafBrushNodeChildren_t@@YAX_N@Z at 0x822a4ba0 CLeafBrushNodeChildren Assets::Load_cLeafBrushNodeChildren_t(QDataStream *aStream) { CLeafBrushNodeChildren result; *aStream >> result.dist >> result.range >> result.childOffset[0] >> result.childOffset[1]; return result; } // ?Load_cLeaf_tArray@@YAX_NH@Z at 0x822a4c30 QVector Assets::Load_cLeaf_tArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_CLeaf(aStream); } return result; } // ?Load_DynEntityClientArray@@YAX_NH@Z at 0x822a4c48 QVector Assets::Load_DynEntityClientArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { DynEntityClient dynEntityClient; *aStream >> dynEntityClient.physObjId >> dynEntityClient.flags >> dynEntityClient.lightingHandle >> dynEntityClient.health; result << dynEntityClient; } return result; } // ?Load_DynEntityPoseArray@@YAX_NH@Z at 0x822a4c68 QVector Assets::Load_DynEntityPoseArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { DynEntityPose dynEntityPose; *aStream >> dynEntityPose.pose.quat[0] >> dynEntityPose.pose.quat[1] >> dynEntityPose.pose.quat[2] >> dynEntityPose.pose.quat[3] >> dynEntityPose.pose.origin[0] >> dynEntityPose.pose.origin[1] >> dynEntityPose.pose.origin[2] >> dynEntityPose.radius; result << dynEntityPose; } return result; } // ?Load_DynEntityCollArray@@YAX_NH@Z at 0x822a4c80 QVector Assets::Load_DynEntityCollArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { DynEntityColl dynEntityColl; *aStream >> dynEntityColl.sector >> dynEntityColl.nextEntInSector >> dynEntityColl.linkMins[0] >> dynEntityColl.linkMins[1] >> dynEntityColl.linkMaxs[0] >> dynEntityColl.linkMaxs[1]; result << dynEntityColl; } return result; } // ?Load_FxTrailVertexArray@@YAX_NH@Z at 0x822a4ca0 QVector Assets::Load_FxTrailVertexArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { FxTrailVertex fxTrailVertex; *aStream >> fxTrailVertex.pos[0] >> fxTrailVertex.pos[1] >> fxTrailVertex.normal[0] >> fxTrailVertex.normal[1] >> fxTrailVertex.texCoord; result << fxTrailVertex; } return result; } // ?Load_FxElemVelStateSampleArray@@YAX_NH@Z at 0x822a4cc0 QVector Assets::Load_FxElemVelStateSampleArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { FxElemVelStateSample fxElemVelStateSample; *aStream >> fxElemVelStateSample.local.velocity.base[0] >> fxElemVelStateSample.local.velocity.base[1] >> fxElemVelStateSample.local.velocity.base[2] >> fxElemVelStateSample.local.velocity.amplitude[0] >> fxElemVelStateSample.local.velocity.amplitude[1] >> fxElemVelStateSample.local.velocity.amplitude[2] >> fxElemVelStateSample.local.totalDelta.base[0] >> fxElemVelStateSample.local.totalDelta.base[1] >> fxElemVelStateSample.local.totalDelta.base[2] >> fxElemVelStateSample.local.totalDelta.amplitude[0] >> fxElemVelStateSample.local.totalDelta.amplitude[1] >> fxElemVelStateSample.local.totalDelta.amplitude[2] >> fxElemVelStateSample.world.velocity.base[0] >> fxElemVelStateSample.world.velocity.base[1] >> fxElemVelStateSample.world.velocity.base[2] >> fxElemVelStateSample.world.velocity.amplitude[0] >> fxElemVelStateSample.world.velocity.amplitude[1] >> fxElemVelStateSample.world.velocity.amplitude[2] >> fxElemVelStateSample.world.totalDelta.base[0] >> fxElemVelStateSample.world.totalDelta.base[1] >> fxElemVelStateSample.world.totalDelta.base[2] >> fxElemVelStateSample.world.totalDelta.amplitude[0] >> fxElemVelStateSample.world.totalDelta.amplitude[1] >> fxElemVelStateSample.world.totalDelta.amplitude[2]; result << fxElemVelStateSample; } return result; } // ?Load_FxElemVisStateSampleArray@@YAX_NH@Z at 0x822a4ce0 QVector Assets::Load_FxElemVisStateSampleArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { FxElemVisStateSample fxElemVisStateSample; *aStream >> fxElemVisStateSample.base.color[0] >> fxElemVisStateSample.base.color[1] >> fxElemVisStateSample.base.color[2] >> fxElemVisStateSample.base.color[3] >> fxElemVisStateSample.base.rotationDelta >> fxElemVisStateSample.base.rotationTotal >> fxElemVisStateSample.base.size[0] >> fxElemVisStateSample.base.size[1] >> fxElemVisStateSample.base.scale; result << fxElemVisStateSample; } return result; } // ?Load_pathbasenode_tArray@@YAX_NH@Z at 0x822a4d60 QVector Assets::Load_pathbasenode_tArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { PathBaseNode pathbasenode; *aStream >> pathbasenode.vOrigin[0] >> pathbasenode.vOrigin[1] >> pathbasenode.vOrigin[2] >> pathbasenode.type; result << pathbasenode; } return result; } typedef PathLink pathlink_t; // ?Load_pathlink_tArray@@YAX_NH@Z at 0x822a4d78 QVector Assets::Load_pathlink_tArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { pathlink_t pathlink; *aStream >> pathlink.fDist >> pathlink.nodeNum >> pathlink.disconnectCount >> pathlink.negotiationLink >> pathlink.ubBadPlaceCount[0] >> pathlink.ubBadPlaceCount[1] >> pathlink.ubBadPlaceCount[2] >> pathlink.ubBadPlaceCount[3]; result << pathlink; } return result; } // ?Load_XModelHighMipBoundsArray@@YAX_NH@Z at 0x822a4d98 QVector Assets::Load_XModelHighMipBoundsArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { XModelHighMipBounds xModelHighMipBounds; *aStream >> xModelHighMipBounds.mins[0] >> xModelHighMipBounds.mins[1] >> xModelHighMipBounds.mins[2] >> xModelHighMipBounds.maxs[0] >> xModelHighMipBounds.maxs[1] >> xModelHighMipBounds.maxs[2]; result << xModelHighMipBounds; } return result; } typedef XModelCollSurf XModelCollSurf; // ?Load_XModelCollSurf@@YAX_N@Z at 0x822a4db8 XModelCollSurf Assets::Load_XModelCollSurf(QDataStream *aStream) { XModelCollSurf result; *aStream >> result.mins[0] >> result.mins[1] >> result.maxs[2] >> result.maxs[0] >> result.maxs[1] >> result.maxs[2] >> result.boneIdx >> result.contents >> result.surfFlags; return result; } typedef unsigned __int8 cbrushedge_t; // ?Load_cbrushedge_t@@YAX_N@Z at 0x822a4de8 cbrushedge_t Assets::Load_cbrushedge_t(QDataStream *aStream) { cbrushedge_t result; *aStream >> result; return result; } // ?Load_cbrushedge_tArray@@YAX_NH@Z at 0x822a4dd0 QVector Assets::Load_cbrushedge_tArray(QDataStream *aStream, size_t count) { QVector result; for (int i = 0; i < count; i++) { result << Load_cbrushedge_t(aStream); } return result; } typedef CPlane cplane_t; // ?Load_cplane_t@@YAX_N@Z at 0x822a4e20 cplane_t Assets::Load_cplane_t(QDataStream *aStream) { cplane_t result; *aStream >> result.normal[0] >> result.normal[1] >> result.normal[2] >> result.dist >> result.type >> result.signbits >> result.pad[0] >> result.pad[1]; return result; } // ?Load_cplane_t@@YAX_N@Z at 0x822a4e20 CPlane Assets::Load_CPlane(QDataStream *aStream) { CPlane result; *aStream >> result.normal[0] >> result.normal[1] >> result.normal[2] >> result.dist >> result.type >> result.signbits >> result.pad[0] >> result.pad[1]; return result; } // ?Load_cplane_tArray@@YAX_NH@Z at 0x822a4e00 QVector Assets::Load_cplane_tArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_cplane_t(aStream); } return result; } // ?Load_MaterialConstantDefArray@@YAX_NH@Z at 0x822a4e38 QVector Assets::Load_MaterialConstantDefArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { MaterialConstantDef materialConstantDef; *aStream >> materialConstantDef.nameHash; for (int j = 0; j < 12; j++) { *aStream >> materialConstantDef.name[j]; } for (int j = 0; j < 4; j++) { *aStream >> materialConstantDef.literal[j]; } *aStream >> materialConstantDef.literal[0] >> materialConstantDef.literal[1] >> materialConstantDef.literal[2] >> materialConstantDef.literal[3]; result << materialConstantDef; } return result; } // ?Load_GfxStateBitsArray@@YAX_NH@Z at 0x822a4e50 QVector Assets::Load_GfxStateBitsArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { GfxStateBits gfxStateBits; *aStream >> gfxStateBits.loadBits[0] >> gfxStateBits.loadBits[1]; result << gfxStateBits; } return result; } // ?Load_MaterialArgumentCodeConst@@YAX_N@Z at 0x822a4e68 MaterialArgumentCodeConst Assets::Load_MaterialArgumentCodeConst(QDataStream *aStream) { MaterialArgumentCodeConst result; *aStream >> result.index >> result.firstRow >> result.rowCount; return result; } // ?Load_MaterialVertexDeclaration@@YAX_N@Z at 0x822a4e80 MaterialVertexDeclaration Assets::Load_MaterialVertexDeclaration(QDataStream *aStream) { MaterialVertexDeclaration result; *aStream >> result.streamCount >> result.hasOptionalSource; for (int i = 0; i < 16; i++) { *aStream >> result.routing.data[i].source; *aStream >> result.routing.data[i].dest; } for (int i = 0; i < 15; i++) { quint32 declPtr; *aStream >> declPtr; &result.routing.decl[i] = declPtr; } return result; } // ?Load_byteShaderArray@@YAX_NH@Z at 0x822a4e98 QVector Assets::Load_byteShaderArray(QDataStream *aStream, size_t count) { QVector result; for (int i = 0; i < count; i++) { quint8 byteShader_; *aStream >> byteShader_; result << byteShader_; } return result; } typedef unsigned __int8 byte4; // ?Load_byte4Array@@YAX_NH@Z at 0x822a4eb0 QVector Assets::Load_byte4Array(QDataStream *aStream, size_t count) { QVector result; for (int i = 0; i < count; i++) { byte4 byte4_; *aStream >> byte4_; result << byte4_; } return result; } typedef GfxTexture GfxRawTexture; // ?Load_GfxRawTextureArray@@YAX_NH@Z at 0x822a4ec8 QVector Assets::Load_GfxRawTextureArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { GfxRawTexture gfxRawTexture; *aStream >> gfxRawTexture.basemapPtr >> gfxRawTexture.mapPtr >> gfxRawTexture.volmapPtr >> gfxRawTexture.cubemapPtr >> gfxRawTexture.loadDefPtr; result << gfxRawTexture; } return result; } // ?Load_IDirect3DCubeTexture9@@YAX_N@Z at 0x822a4ee0 D3DCubeTexture Assets::Load_IDirect3DCubeTexture9(QDataStream *aStream) { D3DCubeTexture result; *aStream >> result.MipFlush >> result.Format >> result.Common >> result.ReferenceCount >> result.Fence >> result.ReadFence >> result.Identifier >> result.BaseFlush; for (int i = 0; i < 16; i++) { *aStream >> result.routing.data[i].source; *aStream >> result.routing.data[i].dest; } for (int i = 0; i < 15; i++) { quint32 declPtr; *aStream >> declPtr; &result.routing.decl[i] = declPtr; } return result; } // ?Load_IDirect3DVolumeTexture9@@YAX_N@Z at 0x822a4ef8 D3DVolumeTexture Assets::Load_IDirect3DVolumeTexture9(QDataStream *aStream) { D3DVolumeTexture result; *aStream >> result.MipFlush >> result.Format >> result.Common >> result.ReferenceCount >> result.Fence >> result.ReadFence >> result.Identifier >> result.BaseFlush; for (int i = 0; i < 16; i++) { *aStream >> result.routing.data[i].source; *aStream >> result.routing.data[i].dest; } for (int i = 0; i < 15; i++) { quint32 declPtr; *aStream >> declPtr; &result.routing.decl[i] = declPtr; } return result; } // ?Load_IDirect3DTexture9@@YAX_N@Z at 0x822a4f10 D3DTexture Assets::Load_IDirect3DTexture9(QDataStream *aStream) { D3DTexture result; *aStream >> result.MipFlush >> result.Format; return result; } // ?Load_r_index16_tArray@@YAX_NH@Z at 0x822a4f28 QVector Assets::Load_r_index16_tArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { quint16 r_index16; *aStream >> r_index16; result << r_index16; } return result; } // ?Load_r_index_tArray@@YAX_NH@Z at 0x822a4f40 QVector Assets::Load_r_index_tArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { quint16 r_index; *aStream >> r_index; result << r_index; } return result; } // ?Load_GfxIndexBuffer@@YAX_N@Z at 0x822a4f58 D3DIndexBuffer Assets::Load_GfxIndexBuffer(QDataStream *aStream) { D3DIndexBuffer result; *aStream >> result.Address >> result.Size >> result.Common >> result.ReferenceCount >> result.Fence >> result.ReadFence >> result.Identifier >> result.BaseFlush; return result; } // ?Load_XBlendInfoArray@@YAX_NH@Z at 0x822a4f70 QVector Assets::Load_XBlendInfoArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { quint16 xBlendInfo; *aStream >> xBlendInfo; result << xBlendInfo; } return result; } typedef D3DVertexBuffer GfxVertexBuffer; // ?Load_GfxVertexBuffer@@YAX_N@Z at 0x822a4f88 GfxVertexBuffer Assets::Load_GfxVertexBuffer(QDataStream *aStream) { GfxVertexBuffer result; *aStream >> result.Format.request.Type >> result.Format.request.BaseAddress >> result.Format.request.Endian >> result.Format.request.Size >> result.Format.request.AddressClamp >> result.Format.request. >> result.Format.request.RequestSize >> result.Format.request.ClampDisable >> result.Format.dword[0] >> result.Format.dword[1] >> result.Common >> result.ReferenceCount >> result.Fence >> result.ReadFence >> result.Identifier >> result.BaseFlush; return result; } // ?Load_XSurfaceCollisionNodeArray@@YAX_NH@Z at 0x822a4fa0 QVector Assets::Load_XSurfaceCollisionNodeArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { XSurfaceCollisionNode xSurfaceCollisionNode; *aStream >> xSurfaceCollisionNode.aabb.mins[0] >> xSurfaceCollisionNode.aabb.mins[1] >> xSurfaceCollisionNode.aabb.mins[2] >> xSurfaceCollisionNode.aabb.maxs[0] >> xSurfaceCollisionNode.aabb.maxs[1] >> xSurfaceCollisionNode.aabb.maxs[2] >> xSurfaceCollisionNode.childBeginIndex >> xSurfaceCollisionNode.childCount; result << xSurfaceCollisionNode; } return result; } // ?Load_XSurfaceCollisionLeafArray@@YAX_NH@Z at 0x822a4fb8 QVector Assets::Load_XSurfaceCollisionLeafArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { XSurfaceCollisionLeaf xSurfaceCollisionLeaf; *aStream >> xSurfaceCollisionLeaf.triangleBeginIndex; result << xSurfaceCollisionLeaf; } return result; } // ?Load_GfxBrushModelArray@@YAX_NH@Z at 0x822a4fd0 QVector Assets::Load_GfxBrushModelArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { GfxBrushModel gfxBrushModel; *aStream >> gfxBrushModel.writable.mins[0] >> gfxBrushModel.writable.mins[1] >> gfxBrushModel.writable.mins[2] >> gfxBrushModel.writable.maxs[0] >> gfxBrushModel.writable.maxs[1] >> gfxBrushModel.writable.maxs[2] >> gfxBrushModel.bounds[0][0] >> gfxBrushModel.bounds[0][1] >> gfxBrushModel.bounds[0][2] >> gfxBrushModel.bounds[1][0] >> gfxBrushModel.bounds[1][1] >> gfxBrushModel.bounds[1][2] >> gfxBrushModel.surfaceCount >> gfxBrushModel.startSurfIndex; result << gfxBrushModel; } return result; } typedef GfxPackedVertex GfxPackedVertex0; // ?Load_GfxPackedVertex0Array@@YAX_NH@Z at 0x822a4fe8 QVector Assets::Load_GfxPackedVertex0Array(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { GfxPackedVertex0 gfxPackedVertex0; *aStream >> gfxPackedVertex0.xyz[0] >> gfxPackedVertex0.xyz[1] >> gfxPackedVertex0.xyz[2] >> gfxPackedVertex0.binormalSign >> gfxPackedVertex0.color.array[0] >> gfxPackedVertex0.color.array[1] >> gfxPackedVertex0.color.array[2] >> gfxPackedVertex0.color.array[3] >> gfxPackedVertex0.texCoord.packed >> gfxPackedVertex0.normal.packed >> gfxPackedVertex0.tangent.packed; result << gfxPackedVertex0; } return result; } typedef GfxWorldVertex GfxWorldVertex0; // ?Load_GfxWorldVertex0Array@@YAX_NH@Z at 0x822a5000 void Assets::Load_GfxWorldVertex0Array(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { GfxWorldVertex0 gfxWorldVertex0; *aStream >> gfxWorldVertex0.xyz[0] >> gfxWorldVertex0.xyz[1] >> gfxWorldVertex0.xyz[2] >> gfxWorldVertex0.binormalSign >> gfxWorldVertex0.color.array[0] >> gfxWorldVertex0.color.array[1] >> gfxWorldVertex0.color.array[2] >> gfxWorldVertex0.color.array[3] >> gfxWorldVertex0.texCoord[0] >> gfxWorldVertex0.texCoord[1] >> gfxWorldVertex0.lmapCoord[0] >> gfxWorldVertex0.lmapCoord[1] >> gfxWorldVertex0.normal.packed >> gfxWorldVertex0.tangent.packed; result << gfxPackedVertex0; } return result; } // ?Load_XAUDIOCHANNELMAPENTRYArray@@YAX_NH@Z at 0x822a5018 QVector Assets::Load_XAUDIOCHANNELMAPENTRYArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { XAUDIOCHANNELMAPENTRY xAUDIOCHANNELMAPENTRY; *aStream >> xAUDIOCHANNELMAPENTRY.InputChannel >> xAUDIOCHANNELMAPENTRY.OutputChannel >> xAUDIOCHANNELMAPENTRY.Volume; result << xAUDIOCHANNELMAPENTRY; } return result; } // ?Load_StreamFileNamePacked@@YAX_N@Z at 0x822a5030 StreamFileNamePacked Assets::Load_StreamFileNamePacked(QDataStream *aStream) { StreamFileNamePacked result; *aStream >> result.offset >> result.length; return result; } // ?Load_XaReverbSettingsArray@@YAX_NH@Z at 0x822a5048 QVector Assets::Load_XaReverbSettingsArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { XAudioReverbSettings xaReverbSettings; *aStream >> xaReverbSettings.presetOverridden >> xaReverbSettings.reverbSettings.ReflectionsDelay >> xaReverbSettings.reverbSettings.ReverbDelay >> xaReverbSettings.reverbSettings.RearDelay >> xaReverbSettings.reverbSettings.PositionLeft >> xaReverbSettings.reverbSettings.PositionRight >> xaReverbSettings.reverbSettings.PositionMatrixLeft >> xaReverbSettings.reverbSettings.PositionMatrixRight >> xaReverbSettings.reverbSettings.EarlyDiffusion >> xaReverbSettings.reverbSettings.LateDiffusion >> xaReverbSettings.reverbSettings.LowEQGain >> xaReverbSettings.reverbSettings.LowEQCutoff >> xaReverbSettings.reverbSettings.HighEQGain >> xaReverbSettings.reverbSettings.HighEQCutoff >> xaReverbSettings.reverbSettings.RoomFilterFreq >> xaReverbSettings.reverbSettings.RoomFilterMain >> xaReverbSettings.reverbSettings.RoomFilterHF >> xaReverbSettings.reverbSettings.ReflectionsGain >> xaReverbSettings.reverbSettings.ReverbGain >> xaReverbSettings.reverbSettings.DecayTime >> xaReverbSettings.reverbSettings.Density >> xaReverbSettings.reverbSettings.RoomSize; result << xaReverbSettings; } return result; } typedef char char2048; // ?Load_char2048Array@@YAX_NH@Z at 0x822a5060 QVector Assets::Load_char2048Array(QDataStream *aStream, size_t count) { QVector result; for (int i = 0; i < count; i++) { char2048 char2048_; *aStream >> char2048_; result << char2048_; } return result; } // ?Load_DObjAnimMatArray@@YAX_NH@Z at 0x822a5078 QVector Assets::Load_DObjAnimMatArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { DObjAnimMat dObjAnimMat; *aStream >> dObjAnimMat.quat[0] >> dObjAnimMat.quat[1] >> dObjAnimMat.quat[2] >> dObjAnimMat.quat[3] >> dObjAnimMat.trans[0] >> dObjAnimMat.trans[1] >> dObjAnimMat.trans[2] >> dObjAnimMat.transWeight; result << dObjAnimMat; } return result; } // ?Load_XBoneInfoArray@@YAX_NH@Z at 0x822a5090 QVector Assets::Load_XBoneInfoArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { XBoneInfo xBoneInfo; *aStream >> xBoneInfo.bounds[0][0] >> xBoneInfo.bounds[0][1] >> xBoneInfo.bounds[0][2] >> xBoneInfo.bounds[1][0] >> xBoneInfo.bounds[1][1] >> xBoneInfo.bounds[1][2] >> xBoneInfo.offset[0] >> xBoneInfo.offset[1] >> xBoneInfo.offset[2] >> xBoneInfo.radiusSquared; result << xBoneInfo; } return result; } typedef unsigned __int16 UShortVec[3]; // ?Load_UShortVecArray@@YAX_NH@Z at 0x822a50b0 QVector Assets::Load_UShortVecArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { UShortVec uShortVec; *aStream >> uShortVec[0] >> uShortVec[1] >> uShortVec[2]; result << uShortVec; } return result; } typedef unsigned __int8 ByteVec[3]; // ?Load_ByteVecArray@@YAX_NH@Z at 0x822a50d0 QVector Assets::Load_ByteVecArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { ByteVec byteVec; *aStream >> byteVec[0] >> byteVec[1] >> byteVec[2]; result << byteVec; } return result; } // ?Load_dmaterial_tArray@@YAX_NH@Z at 0x822a50f0 QVector Assets::Load_dmaterial_tArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { dmaterial_t dmaterial; for (int j = 0; j < 64; j++) { *aStream >> dmaterial.material[j]; } *aStream >> dmaterial.surfaceFlags >> dmaterial.contentFlags; result << dmaterial; } return result; } // ?Load_XString@@YAX_N@Z at 0x822a5110 void Assets::Load_XString(QDataStream *aStream) { const char *v3; // r11 qint32 stringPtr; *aStream >> stringPtr; if (stringPtr) { if (stringPtr == -1) { //Load_XStringCustom(v1); } else { // Resolve pointer to g_streamBlocks contents //*varXString = (const char *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(stringPtr - 1) >> 26) & 0x38)))[(stringPtr - 1) & 0x1FFFFFFF]; } } } // See if this actually needs to be const char //typedef const char ConstChar; typedef QChar ConstChar; // ?Load_ConstCharArray@@YAX_NH@Z at 0x822a51b0 QVector Assets::Load_ConstCharArray(QDataStream *aStream, size_t count) { QVector result; for (int i = 0; i < count; i++) { ConstChar constChar; *aStream >> constChar; result << constChar; } return result; } typedef unsigned __int16 ScriptString; // ?Load_ScriptString@@YAX_N@Z at 0x822a51c8 ScriptString Assets::Load_ScriptString(QDataStream *aStream) { ScriptString result; *aStream >> result; return result; // Might need to resolve contents to the value in varXAssetList? //*varScriptString = (unsigned __int16)*(const char **)((char *)varXAssetList->stringList.strings // + __ROL4__(*varScriptString, 2)); } typedef unsigned __int16 UnsignedShort; // ?Load_UnsignedShortArray@@YAX_NH@Z at 0x822a5220 QVector Assets::Load_UnsignedShortArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { UnsignedShort unsignedShort; *aStream >> unsignedShort; result << unsignedShort; } return result; } struct XQuat2 { __int16 u[2]; }; // ?Load_XQuat2@@YAX_N@Z at 0x822a5250 XQuat2 Assets::Load_XQuat2(QDataStream *aStream) { XQuat2 xQuat2; *aStream >> xQuat2.u[0] >> xQuat2.u[1]; return xQuat2; } // ?Load_XQuat2Array@@YAX_NH@Z at 0x822a5238 QVector Assets::Load_XQuat2Array(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_XQuat2(aStream); } return result; } // ?Load_ushortArray@@YAX_NH@Z at 0x822a5268 QVector Assets::Load_ushortArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { ushort ushort_; *aStream >> ushort_; result << ushort_; } return result; } // ?Load_shortArray@@YAX_NH@Z at 0x822a5280 QVector Assets::Load_shortArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { short short_; *aStream >> short_; result << short_; } return result; } struct vec3_t { float v[3]; }; // ?Load_vec3_t@@YAX_N@Z at 0x822a52b8 vec3_t Assets::Load_vec3_t(QDataStream *aStream) { vec3_t result; *aStream >> result.v[0] >> result.v[1] >> result.v[2]; return result; } // ?Load_vec3_tArray@@YAX_NH@Z at 0x822a5298 QVector Assets::Load_vec3_tArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_vec3_t(aStream); } return result; } struct vec2_t { float v[2]; }; // ?Load_vec2_tArray@@YAX_NH@Z at 0x822a52d0 QVector Assets::Load_vec2_tArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { vec2_t vec2; *aStream >> vec2.v[0] >> vec2.v[1]; result << vec2; } return result; } typedef unsigned __int8 raw_byte16; // ?Load_raw_byte16Array@@YAX_NH@Z at 0x822a52e8 QVector Assets::Load_raw_byte16Array(QDataStream *aStream, size_t count) { QVector result; for (int i = 0; i < count; i++) { raw_byte16 raw_byte16_; *aStream >> raw_byte16_; result << raw_byte16_; } return result; } typedef unsigned __int8 raw_byte; // ?Load_raw_byteArray@@YAX_NH@Z at 0x822a5300 QVector Assets::Load_raw_byteArray(QDataStream *aStream, size_t count) { QVector result; for (int i = 0; i < count; i++) { raw_byte raw_byte_; *aStream >> raw_byte_; result << raw_byte_; } return result; } typedef unsigned int raw_uint128; // ?Load_raw_uint128Array@@YAX_NH@Z at 0x822a5318 QVector Assets::Load_raw_uint128Array(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { raw_uint128 raw_uint128_; *aStream >> raw_uint128_; result << raw_uint128_; } return result; } typedef unsigned int raw_uint; // ?Load_raw_uintArray@@YAX_NH@Z at 0x822a5330 QVector Assets::Load_raw_uintArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { raw_uint raw_uint_; *aStream >> raw_uint_; result << raw_uint_; } return result; } // ?Load_float@@YAX_N@Z at 0x822a5360 float Assets::Load_float(QDataStream *aStream) { float result; *aStream >> result; return result; } // ?Load_floatArray@@YAX_NH@Z at 0x822a5348 QVector Assets::Load_floatArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_float(aStream); } return result; } // ?Load_uint@@YAX_N@Z at 0x822a5390 uint Assets::Load_uint(QDataStream *aStream) { uint result; *aStream >> result; return result; } // ?Load_uintArray@@YAX_NH@Z at 0x822a5378 QVector Assets::Load_uintArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_uint(aStream); } return result; } // ?Load_DWORDArray@@YAX_NH@Z at 0x822a53a8 QVector Assets::Load_DWORDArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { DWORD DWORD_; *aStream >> DWORD_; result << DWORD_; } return result; } typedef unsigned __int8 byte4096; // ?Load_byte4096Array@@YAX_NH@Z at 0x822a53c0 QVector Assets::Load_byte4096Array(QDataStream *aStream, size_t count) { QVector result; for (int i = 0; i < count; i++) { byte4096 byte4096_; *aStream >> byte4096_; result << byte4096_; } return result; } // ?Load_int@@YAX_N@Z at 0x822a53f0 int Assets::Load_int(QDataStream *aStream) { int result; *aStream >> result; return result; } // ?Load_intArray@@YAX_NH@Z at 0x822a53d8 QVector Assets::Load_intArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_int(aStream); } return result; } // ?Load_char@@YAX_N@Z at 0x822a5420 char Assets::Load_char(QDataStream *aStream) { char result; *aStream >> result; return result; } // ?Load_charArray@@YAX_NH@Z at 0x822a5408 QVector Assets::Load_charArray(QDataStream *aStream, size_t count) { QVector result; for (int i = 0; i < count; i++) { result << Load_char(aStream); } return result; } // ?Load_byteArray@@YAX_NH@Z at 0x822a5438 QVector Assets::Load_byteArray(QDataStream *aStream, size_t count) { QVector result; for (int i = 0; i < count; i++) { byte byte_; *aStream >> byte_; result << byte_; } return result; } // ?Load_GfxWorldDpvsPlanes@@YAX_N@Z at 0x822a5450 GfxWorldDpvsPlanes Assets::Load_GfxWorldDpvsPlanes(QDataStream *aStream, GfxWorld aGfxWorld) { GfxWorldDpvsPlanes result; *aStream >> result.cellCount >> result.planesPtr >> result.nodesPtr >> result.sceneEntCellBitsPtr; if (result.planesPtr) { if (result.planesPtr == -1) { for (int i = 0; i < aGfxWorld.planeCount; i++) { gfxWorldDpvsPlanes.planes << Load_cplane_t(aStream); } } else { // Resolve to content in g_streamBlocks //varGfxWorldDpvsPlanes->planes = (cplane_s *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)&varGfxWorldDpvsPlanes->planes[-1].pad[1] >> 26) & 0x38)))[(int)&varGfxWorldDpvsPlanes->planes[-1].pad[1] & 0x1FFFFFFF]; } } if (result.nodesPtr) { for (int i = 0; i < aGfxWorld.nodeCount; i++) { ushort ushort_; *aStream >> ushort_; result.nodes << ushort_; } } if (result.sceneEntCellBitsPtr) { for (int i = 0; i < (result.cellCount << 10); i++) { unsigned int uint_; *aStream >> uint_; result.sceneEntCellBits << uint_; } } return result; } // ?Load_GfxWorldDpvsDynamic@@YAX_N@Z at 0x822a5580 GfxWorldDpvsDynamic Assets::Load_GfxWorldDpvsDynamic(QDataStream *aStream, GfxWorld aGfxWorld) { GfxWorldDpvsDynamic result; *aStream >> result.dynEntClientWordCount[0] >> result.dynEntClientWordCount[1] >> result.dynEntClientCount[0] >> result.dynEntClientCount[1] >> result.dynEntCellBitsPtrs[0] >> result.dynEntCellBitsPtrs[1] >> result.dynEntVisDataPtrs[0][0] >> result.dynEntVisDataPtrs[0][1] >> result.dynEntVisDataPtrs[0][2] >> result.dynEntVisDataPtrs[1][0] >> result.dynEntVisDataPtrs[1][1] >> result.dynEntVisDataPtrs[1][2]; if (result.dynEntCellBitsPtrs[0]) { //for (int i = 0; i < aGfxWorld.dpvsPlanes.cellCount * gfxWorldDpvsDynamic.dynEntClientWordCount[0]; i++) { *aStream >> result.dynEntCellBits[0]; //} } if (result.dynEntCellBitsPtrs[1]) { //for (int i = 0; i < aGfxWorld.dpvsPlanes.cellCount * gfxWorldDpvsDynamic.dynEntClientWordCount[0]; i++) { *aStream >> result.dynEntCellBits[1]; //} } if (result.dynEntVisDataPtrs[0][0]) { //for (int i = 0; i < gfxWorldDpvsDynamic.dynEntClientWordCount[0]; i++) { *aStream >> result.dynEntVisData[0][0]; //} } if (result.dynEntVisDataPtrs[1][0]) { //for (int i = 0; i < gfxWorldDpvsDynamic.dynEntClientWordCount[1]; i++) { *aStream >> result.dynEntVisData[1][0]; //} } if (result.dynEntVisDataPtrs[0][1]) { //for (int i = 0; i < gfxWorldDpvsDynamic.dynEntClientWordCount[0]; i++) { *aStream >> result.dynEntVisData[0][1]; //} } if (result.dynEntVisDataPtrs[1][1]) { //for (int i = 0; i < gfxWorldDpvsDynamic.dynEntClientWordCount[1]; i++) { *aStream >> result.dynEntVisData[1][1]; //} } if (result.dynEntVisDataPtrs[0][2]) { //for (int i = 0; i < gfxWorldDpvsDynamic.dynEntClientWordCount[0]; i++) { *aStream >> result.dynEntVisData[0][2]; //} } if (result.dynEntVisDataPtrs[1][2]) { //for (int i = 0; i < gfxWorldDpvsDynamic.dynEntClientWordCount[1]; i++) { *aStream >> result.dynEntVisData[1][2]; //} } return result; } // ?Load_GfxLightRegionHull@@YAX_N@Z at 0x822a57d0 GfxLightRegionHull Assets::Load_GfxLightRegionHull(QDataStream *aStream) { unsigned int axisCount; // r11 unsigned __int8 *v2; // r4 GfxLightRegionHull result; *aStream >> result.kdopMidPoint[0] >> result.kdopMidPoint[1] >> result.kdopMidPoint[2] >> result.kdopMidPoint[3] >> result.kdopMidPoint[4] >> result.kdopMidPoint[5] >> result.kdopMidPoint[6] >> result.kdopMidPoint[7] >> result.kdopMidPoint[8] >> result.kdopHalfSize[0] >> result.kdopHalfSize[1] >> result.kdopHalfSize[2] >> result.kdopHalfSize[3] >> result.kdopHalfSize[4] >> result.kdopHalfSize[5] >> result.kdopHalfSize[6] >> result.kdopHalfSize[7] >> result.kdopHalfSize[8] >> result.axisCount >> result.axisPtr; if (result.axisPtr) { for (int i = 0; i < result.axisCount; i++) { GfxLightRegionAxis axis; *aStream >> axis.dir[0] >> axis.dir[1] >> axis.dir[2] >> axis.midPoint >> axis.halfSize; result.axis << axis; } } return result; } unsigned __int16 __ROL4__(unsigned __int16 value, unsigned __int16 bits) { // Ensure that the rotation is within bounds bits = bits % 32; // In case someone passes a value greater than 31 return (value << bits) | (value >> (8 - bits)); } // ?Load_GfxShadowGeometry@@YAX_N@Z at 0x822a5850 GfxShadowGeometry Assets::Load_GfxShadowGeometry(QDataStream *aStream) { GfxShadowGeometry result; *aStream >> result.surfaceCount >> result.smodelCount >> result.sortedSurfIndexPtr >> result.smodelIndexPtr; if (result.sortedSurfIndexPtr) { for (int i = 0; i < __ROL4__(result.surfaceCount, 1); i++) { unsigned __int16 surfIndex; *aStream >> surfIndex; result.sortedSurfIndex << surfIndex; } } if (result.smodelIndexPtr) { for (int i = 0; i < __ROL4__(result.smodelCount, 1); i++) { unsigned __int16 smodelIndex; *aStream >> smodelIndex; result.smodelIndex << smodelIndex; } } return result; } // ?Load_GfxWorldStreamInfo@@YAX_N@Z at 0x822a58f0 GfxWorldStreamInfo Assets::Load_GfxWorldStreamInfo(QDataStream *aStream) { GfxWorldStreamInfo result; *aStream >> result.aabbTreeCount >> result.aabbTreesPtr >> result.leafRefCount >> result.leafRefsPtr; if (result.aabbTreesPtr) { for (int i = 0; i < result.aabbTreeCount; i++) { GfxStreamingAabbTree aabbTree; *aStream >> aabbTree.firstItem >> aabbTree.itemCount >> aabbTree.firstChild >> aabbTree.childCount >> aabbTree.mins[0] >> aabbTree.mins[1] >> aabbTree.mins[2] >> aabbTree.maxs[0] >> aabbTree.maxs[1] >> aabbTree.maxs[2]; result.aabbTrees << aabbTree; } } if (result.leafRefsPtr) { for (int i = 0; i < result.leafRefCount; i++) { int leafRef; *aStream >> leafRef; result.leafRefs << leafRef; } } return result; } // ?Load_GfxLightGrid@@YAX_N@Z at 0x822a59b0 GfxLightGrid Assets::Load_GfxLightGrid(QDataStream *aStream) { GfxLightGrid result; *aStream >> result.hasLightRegions >> result.sunPrimaryLightIndex >> result.mins[0] >> result.mins[1] >> result.mins[2] >> result.maxs[0] >> result.maxs[1] >> result.maxs[2] >> result.rowAxis >> result.colAxis >> result.rowDataStartPtr >> result.rawRowDataSize >> result.rawRowDataPtr >> result.entryCount >> result.entriesPtr >> result.colorCount >> result.colorsPtr; if (result.rowDataStartPtr) { for (int i = 0; i < (result.maxs[result.rowAxis] - result.mins[result.rowAxis] + 1); i++) { unsigned __int16 rowDataStart; *aStream >> rowDataStart; result.rowDataStart << rowDataStart; } } if (result.rawRowDataPtr) { for (int i = 0; i < result.rawRowDataSize; i++) { unsigned __int16 rawRowData; *aStream >> rawRowData; result.rawRowData << rawRowData; } } if (result.entriesPtr) { for (int i = 0; i < result.entryCount; i++) { GfxLightGridEntry entry; *aStream >> entry.colorsIndex >> entry.primaryLightIndex >> entry.needsTrace; result.entries << entry; } } if (result.colorsPtr) { for (int i = 0; i < result.colorCount; i++) { result.colors << Load_GfxLightGridColors(aStream); } } } // ?Load_GfxWorldVertexLayerData@@YAX_N@Z at 0x822a5af8 GfxWorldVertexLayerData Assets::Load_GfxWorldVertexLayerData(QDataStream *aStream, GfxWorld aGfxWorld) { GfxWorldVertexLayerData result; *aStream >> result.dataPtr >> result.layerVb.Format.__s0.Type >> result.layerVb.Format.__s0.BaseAddress >> result.layerVb.Format.__s0.Endian >> result.layerVb.Format.__s0.Size >> result.layerVb.Format.__s0.AddressClamp //>> result.layerVb.Format.__s0.: 1; >> result.layerVb.Format.__s0.RequestSize >> result.layerVb.Format.__s0.ClampDisable >> result.layerVb.Format.dword[0] >> result.layerVb.Format.dword[1] >> result.layerVb.Common >> result.layerVb.ReferenceCount >> result.layerVb.Fence >> result.layerVb.ReadFence >> result.layerVb.Identifier >> result.layerVb.BaseFlush; if (result.dataPtr) { for (int i = 0; i < aGfxWorld.vertexLayerDataSize; i++) { unsigned __int8 dataPart; *aStream >> dataPart; result.data << dataPart; } } aStream->skipRawData(0x20); return result; } // ?Load_GfxWorldVertexData@@YAX_N@Z at 0x822a5bd0 GfxWorldVertexData Assets::Load_GfxWorldVertexData(QDataStream *aStream, GfxWorld aGfxWorld) { GfxWorldVertexData *v1; // r11 GfxWorldVertex *v2; // r4 unsigned int vertexCount; // r11 D3DVertexBuffer *p_worldVb; // r31 GfxWorldVertex *vertices; // r30 GfxWorldVertexData result; *aStream >> result.verticesPtr >> result.worldVb.Format.__s0.Type >> result.worldVb.Format.__s0.BaseAddress >> result.worldVb.Format.__s0.Endian >> result.worldVb.Format.__s0.Size >> result.worldVb.Format.__s0.AddressClamp //>> result.worldVb.Format.__s0.: 1; >> result.worldVb.Format.__s0.RequestSize >> result.worldVb.Format.__s0.ClampDisable >> result.worldVb.Format.dword[0] >> result.worldVb.Format.dword[1] >> result.worldVb.Common >> result.worldVb.ReferenceCount >> result.worldVb.Fence >> result.worldVb.ReadFence >> result.worldVb.Identifier >> result.worldVb.BaseFlush; if (result.verticesPtr) { for (int i = 0; i < aGfxWorld.vertexCount; i++) { GfxWorldVertex gfxWorldVertex; *aStream >> gfxWorldVertex.xyz[0] >> gfxWorldVertex.xyz[1] >> gfxWorldVertex.xyz[2] >> gfxWorldVertex.binormalSign >> gfxWorldVertex.color.array[0] >> gfxWorldVertex.color.array[1] >> gfxWorldVertex.color.array[2] >> gfxWorldVertex.color.array[3] >> gfxWorldVertex.texCoord[0] >> gfxWorldVertex.texCoord[1] >> gfxWorldVertex.lmapCoord[0] >> gfxWorldVertex.lmapCoord[1] >> gfxWorldVertex.normal.packed >> gfxWorldVertex.tangent.packed; result.vertices << gfxWorldVertex; } } return result; } // ?Load_GfxAabbTree@@YAX_N@Z at 0x822a5da8 GfxAabbTree Assets::Load_GfxAabbTree(QDataStream *aStream) { unsigned __int16 *smodelIndexes; // r10 size_t v2; // r5 unsigned __int8 *v3; // r4 GfxAabbTree result; *aStream >> result.mins[0] >> result.mins[1] >> result.mins[2] >> result.maxs[0] >> result.maxs[1] >> result.maxs[2] >> result.childCount >> result.surfaceCount >> result.startSurfIndex >> result.smodelIndexCount >> result.smodelIndexesPtr >> result.childrenOffset; if (result.smodelIndexesPtr) { if (result.smodelIndexesPtr == -1) { for (int i = 0; i < result.smodelIndexCount; i++) { unsigned __int16 smodelIndex; *aStream >> smodelIndex; result.smodelIndexes << smodelIndex; } } else { // Resolve contents from g_streamBlocks //varGfxAabbTree->smodelIndexes = (unsigned __int16 *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + ((((unsigned int)varGfxAabbTree->smodelIndexes // - 1) >> 26) & 0x38)))[((int)varGfxAabbTree->smodelIndexes - 1) & 0x1FFFFFFF]; } } return result; } // ?Load_GfxAabbTreeArray@@YAX_NH@Z at 0x822a75f0 QVector Assets::Load_GfxAabbTreeArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_GfxAabbTree(aStream); } return result; } // ?Load_GfxCell@@YAX_N@Z at 0x822a8af0 GfxCell Assets::Load_GfxCell(QDataStream *aStream) { GfxCell result; *aStream >> result.mins[0] >> result.mins[1] >> result.mins[2] >> result.maxs[0] >> result.maxs[1] >> result.maxs[2] >> result.aabbTreeCount >> result.aabbTreePtr >> result.portalCount >> result.portalsPtr >> result.cullGroupCount >> result.cullGroupsPtr >> result.reflectionProbeCount >> result.reflectionProbesPtr; if (result.aabbTreePtr) { result.aabbTree = Load_GfxAabbTreeArray(aStream, result.aabbTreeCount); } if (result.portalsPtr) { result.portals = Load_GfxPortalArray(1, result.portalCount); } if (result.cullGroupsPtr) { v4 = 4 * v1->cullGroupCount; v5 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v5; varint = (int *)v5; v1->cullGroups = (int *)v5; Load_Stream(1, v5, v4); v1 = varGfxCell; } if (result.reflectionProbesPtr) { v6 = g_streamPos; reflectionProbeCount = v1->reflectionProbeCount; varbyte = g_streamPos; v1->reflectionProbes = g_streamPos; Load_Stream(1, v6, reflectionProbeCount); } } // ?Load_GfxPortal@@YAX_N@Z at 0x822a5cb8 GfxPortal Assets::Load_GfxPortal(QDataStream *aStream) { GfxPortal *v1; // r11 GfxCell *cell; // r10 int vertexCount; // r10 unsigned __int8 *v4; // r4 GfxPortal result; *aStream >> result.writable.isQueued >> result.writable.isAncestor >> result.writable.recursionDepth >> result.writable.hullPointCount >> result.writable.hullPointPtrs[0] >> result.writable.hullPointPtrs[1] >> result.writable.queuedParentPtr >> result.plane.coeffs[0] >> result.plane.coeffs[1] >> result.plane.coeffs[2] >> result.plane.coeffs[3] >> result.plane.side[0] >> result.plane.side[1] >> result.plane.side[2] >> result.plane.pad >> result.cellPtr >> result.verticesPtr >> result.vertexCount >> result.hullAxis[0][0] >> result.hullAxis[0][1] >> result.hullAxis[0][2] >> result.hullAxis[1][0] >> result.hullAxis[1][1] >> result.hullAxis[1][2]; if (result.cellPtr) { if (result.cellPtr == -1) { result.cell = Load_GfxCell(aStream); } else { // Resolve contents to g_streamBlocks //varGfxPortal->cell = (GfxCell *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + ((((unsigned int)&varGfxPortal->cell[-1].reflectionProbes // + 3) >> 26) & 0x38)))[((int)&varGfxPortal->cell[-1].reflectionProbes // + 3) & 0x1FFFFFFF]; } } if (result.verticesPtr) { for (int i = 0; i < vertexCount + __ROL4__(vertexCount, 1); i++) { float vertex; *aStream >> vertex; result.vertices[i] = vertex; } } return result; } // ?Load_GfxPortalArray@@YAX_NH@Z at 0x822a7598 QVector Assets::Load_GfxPortalArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_GfxPortal(aStream); } return result; } QString Assets::Load_XStringCustom(QDataStream *aStream) { QString result; char stringChar; *aStream >> stringChar; while (stringChar != '\0') { result += stringChar; *aStream >> stringChar; } return result; } QString Assets::Load_XString(QDataStream *aStream) { QString result; qint32 stringPtr; *aStream >> stringPtr; if (stringPtr == -1) { result = Load_XStringCustom(aStream); } else { // Resolve to contents in g_streamBlocks //*varXString = (const char *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(v2 - 1) >> 26) & 0x38)))[(v2 - 1) & 0x1FFFFFFF]; } return result; } // ?Load_RawFile@@YAX_N@Z at 0x822a5e60 RawFile Assets::Load_RawFile(QDataStream *aStream) { RawFile result; *aStream >> result.namePtr >> result.len >> result.bufferPtr; result.name = Load_XString(aStream); if (result.bufferPtr) { QByteArray buffer(result.len + 1, Qt::Uninitialized); aStream->readRawData(buffer.data(), result.len + 1); result.buffer = QString::fromUtf8(buffer); } return result } // ?Load_LocalizeEntry@@YAX_N@Z at 0x822a5ef0 XLocalizeEntry Assets::Load_LocalizeEntry(QDataStream *aStream) { XLocalizeEntry result; *aStream >> result.valuePtr >> result.namePtr; if (result.valuePtr == -1) { result.value = Load_XStringCustom(aStream); } if (result.namePtr == -1) { result.name = Load_XStringCustom(aStream); } return result; } // ?Load_operandInternalDataUnion@@YAX_N@Z at 0x822a6058 void Assets::Load_operandInternalDataUnion(QDataStream *aStream) { Operand *varOperand = new Operand; QString varXString; if ( varOperand->dataType == VAL_STRING ) { varXString = (const char **)varoperandInternalDataUnion; Load_XString(0); } } // ?Load_ComPrimaryLight@@YAX_N@Z at 0x822a6098 XComPrimaryLight Assets::Load_ComPrimaryLight(QDataStream *aStream) { XComPrimaryLight result; *aStream >> result.type >> result.canUseShadowMap >> result.exponent >> result.unused >> result.color[0] >> result.color[1] >> result.color[2] >> result.dir[0] >> result.dir[1] >> result.dir[2] >> result.origin[0] >> result.origin[1] >> result.origin[2] >> result.radius >> result.cosHalfFovOuter >> result.cosHalfFovInner >> result.cosHalfFovExpanded >> result.rotationLimit >> result.translationLimit >> result.defNamePtr; if (result.defNamePtr == -1) { result.defName = Load_XStringCustom(aStream); } return result; } // ?Load_CollisionPartition@@YAX_N@Z at 0x822a60e8 CollisionPartition Assets::Load_CollisionPartition(QDataStream *aStream) { CollisionPartition result; *aStream >> result.triCount >> result.borderCount >> result.firstTri >> result.bordersPtr; if (result.bordersPtr) { if (result.bordersPtr == -1) { result.borders = Load_CollisionBorder(aStream); } else { // Resolve contents from g_streamBlock //varCollisionPartition->borders = (CollisionBorder *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + ((((unsigned int)&varCollisionPartition->borders[-1].length // + 3) >> 26) & 0x38)))[((int)&varCollisionPartition->borders[-1].length + 3) & 0x1FFFFFFF]; } } return result; } CLeafBrushNodeLeaf Assets::Load_CLeafBrushNodeLeaf(QDataStream *aStream, int leafBrushCount) { CLeafBrushNodeLeaf result; *aStream >> result.brushesPtr; if (result.brushesPtr) { if (result.brushesPtr == -1) { for (int i = 0; i < leafBrushCount; i++) { unsigned int brush; *aStream >> brush; result.brushes << brush; } } else { // Resolve contents from g_streamBlocks //varcLeafBrushNodeLeaf_t->brushes = (unsigned __int16 *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + ((((unsigned int)varcLeafBrushNodeLeaf_t->brushes // - 1) >> 26) & 0x38)))[((int)varcLeafBrushNodeLeaf_t->brushes - 1) & 0x1FFFFFFF]; } } return result; } // ?Load_CLeafBrushNodeData@@YAX_N@Z at 0x822a61a0 CLeafBrushNodeData Assets::Load_CLeafBrushNodeData(QDataStream *aStream, int aNodeCount) { CLeafBrushNodeData result; if (aNodeCount > 0) { result = Load_CLeafBrushNodeLeaf(aStream, aNodeCount); } return result; } // ?Load_MapEnts@@YAX_N@Z at 0x822a6278 MapEnts Assets::Load_MapEnts(QDataStream *aStream) { MapEnts results; *aStream >> results.namePtr >> results.entityStringPtr >> results.numEntityChars; if (results.namePtr == -1) { results.name = Assets::Load_XString(aStream); } if (results.entityStringPtr) { QByteArray entityData(results.numEntityChars, Qt::Uninitialized); aStream->readRawData(entityData.data(), results.numEntityChars); results.entityString = QString::fromUtf8(entityData); } return results; } // ?Load_FxTrailDef@@YAX_N@Z at 0x822a6308 FxTrailDef Assets::Load_FxTrailDef(QDataStream *aStream) { FxTrailDef result; *aStream >> result.scrollTimeMsec >> result.repeatDist >> result.splitDist >> result.vertCount >> result.vertsPtr >> result.indCount >> result.indsPtr; if (result.vertsPtr) { for (int i = 0; i < result.vertCount; i++) { FxTrailVertex fxTrailVertex; *aStream >> fxTrailVertex.pos[0] >> fxTrailVertex.pos[1] >> fxTrailVertex.normal[0] >> fxTrailVertex.normal[1] >> fxTrailVertex.texCoord; result.verts << fxTrailVertex; } } if (result.indsPtr) { for (int i = 0; i < result.indCount; i++) { ushort ind; *aStream >> ind; result.inds << ind; } } return result; } // ?Load_FxEffectDefRef@@YAX_N@Z at 0x822a63d0 FxEffectDefRef Assets::Load_FxEffectDefRef(QDataStream *aStream) { FxEffectDefRef result; *aStream >> result.namePtr; if (result.namePtr == -1) { Load_XStringCustom(aStream); } //if ( varFxEffectDefRef->handle ) // v2->handle = (const FxEffectDef *)DB_FindXAssetHeader( // (XAssetHeader *)0x1A, // (XAssetType)varFxEffectDefRef->handle, // v1); return result; } // ?Load_GameWorldMp@@YAX_N@Z at 0x822a6430 GameWorldMp Assets::Load_GameWorldMp(QDataStream *aStream) { GameWorldMp result; *aStream >> result.namePtr; if (result.namePtr == -1) { result.name = Load_XStringCustom(aStream); } return result; } // ?LoadPathNodeTreeArray@@YAX_NH@Z at 0x822a6488 QVector Assets::LoadPathNodeTreeArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { PathNodeTree pathnode_tree; *aStream >> pathnode_tree.axis >> pathnode_tree.dist >> pathnode_tree.infoPtr; if (pathnode_tree.infoPtr) { if (pathnode_tree.infoPtr == -1 ) { Load_PathNodeTree(1); } else { // Resolve contents from g_streamBlocks //*varpathnode_tree_ptr = (pathnode_tree_t *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(v4 - 1) >> 26) & 0x38)))[(v4 - 1) & 0x1FFFFFFF]; } } result << pathnode_tree; } return result; } // ?Load_PathNodeTreeNodes@@YAX_N@Z at 0x822a6540 PathNodeTreeNodes Assets::Load_PathNodeTreeNodes(QDataStream *aStream) { PathNodeTreeNodes result; *aStream >> result.nodeCount; for (int i = 0; i < result.nodeCount; i++) { quint16 node; *aStream >> node; result.nodes << node; } return result; } // ?Load_PathNodeConstant@@YAX_N@Z at 0x822a65b8 PathNodeConstant Assets::Load_PathNodeConstant(QDataStream *aStream) { PathNodeConstant result; *aStream >> result.type >> result.spawnflags >> result.targetname >> result.script_linkName >> result.script_noteworthy >> result.target >> result.animscript >> result.animscriptfunc >> result.vOrigin[0] >> result.vOrigin[1] >> result.vOrigin[2] >> result.fAngle >> result.forward[0] >> result.forward[1] >> result.fRadius >> result.minUseDistSq >> result.wOverlapNode[0] >> result.wOverlapNode[1] >> result.wChainId >> result.wChainDepth >> result.wChainParent >> result.totalLinkCount >> result.wChainId >> result.LinksPtr; // idfk what this does // Load_Stream(0, varpathnode_constant_t, 0x44u); // varScriptString = &varpathnode_constant_t->targetname; // Load_Stream(0, &varpathnode_constant_t->targetname, 2u); // *varScriptString = (unsigned __int16)*(const char **)((char *)varXAssetList->stringList.strings // + __ROL4__(*varScriptString, 2)); // varScriptString = &varpathnode_constant_t->script_linkName; // Load_Stream(0, &varpathnode_constant_t->script_linkName, 2u); // *varScriptString = (unsigned __int16)*(const char **)((char *)varXAssetList->stringList.strings // + __ROL4__(*varScriptString, 2)); // varScriptString = &varpathnode_constant_t->script_noteworthy; // Load_Stream(0, &varpathnode_constant_t->script_noteworthy, 2u); // *varScriptString = (unsigned __int16)*(const char **)((char *)varXAssetList->stringList.strings // + __ROL4__(*varScriptString, 2)); // varScriptString = &varpathnode_constant_t->target; // Load_Stream(0, &varpathnode_constant_t->target, 2u); // *varScriptString = (unsigned __int16)*(const char **)((char *)varXAssetList->stringList.strings // + __ROL4__(*varScriptString, 2)); // varScriptString = &varpathnode_constant_t->animscript; // Load_Stream(0, &varpathnode_constant_t->animscript, 2u); // v1 = varpathnode_constant_t; // *varScriptString = (unsigned __int16)*(const char **)((char *)varXAssetList->stringList.strings // + __ROL4__(*varScriptString, 2)); // if (result.LinksPtr) // { // totalLinkCount = v1->totalLinkCount; // v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); // v1->Links = (PathLink *)v3; // g_streamPos = v3; // varpathlink_t = (pathlink_s *)v3; // Load_Stream(1, v3, 4 * (totalLinkCount + __ROL4__(totalLinkCount, 1))); // } } // ?Load_XModelCollSurfArray@@YAX_NH@Z at 0x822a6780 QVector Assets::Load_XModelCollSurfArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { XModelCollSurf xModelCollSurf_s; *aStream >> xModelCollSurf_s.mins[0] >> xModelCollSurf_s.mins[1] >> xModelCollSurf_s.mins[2] >> xModelCollSurf_s.maxs[0] >> xModelCollSurf_s.maxs[1] >> xModelCollSurf_s.maxs[2] >> xModelCollSurf_s.boneIdx >> xModelCollSurf_s.contents >> xModelCollSurf_s.surfFlags; result << xModelCollSurf_s; } return result; } // ?Load_PhysPreset@@YAX_N@Z at 0x822a6850 PhysPreset Assets::Load_PhysPreset(QDataStream *aStream) { PhysPreset result; *aStream >> result.namePtr >> result.type >> result.mass >> result.bounce >> result.friction >> result.bulletForceScale >> result.explosiveForceScale >> result.sndAliasPrefixPtr >> result.piecesSpreadFraction >> result.piecesUpwardVelocity >> result.tempDefaultToCylinder; if (result.namePtr == -1) { result.name = Load_XStringCustom(aStream); } if (result.sndAliasPrefixPtr == -1) { result.sndAliasPrefix = Load_XStringCustom(aStream); } return result; } // ?Load_MaterialArgumentDef@@YAX_N@Z at 0x822a68c8 MaterialArgumentDef Assets::Load_MaterialArgumentDef(QDataStream *aStream, MaterialShaderArgument aArgument) { MaterialArgumentDef result; if (aArgument.type == 1 || aArgument.type == 7) { if (aArgument.u.codeSampler) { if (aArgument.u.codeSampler == -1) { //varMaterialArgumentDef->codeSampler = (unsigned int)v3; //varfloat = (float *)v3; //Load_Stream(1, v3, 0x10u); } else { // Resolve contents from g_streamBlocks //varMaterialArgumentDef->codeSampler = (unsigned int)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((codeSampler - 1) >> 26) & 0x38)))[(codeSampler - 1) & 0x1FFFFFFF]; } } } return result; } // ?Load_GfxPixelShaderLoadDef@@YAX_N@Z at 0x822a6950 GfxPixelShaderLoadDef Assets::Load_GfxPixelShaderLoadDef(QDataStream *aStream) { GfxPixelShaderLoadDef result; *aStream >> result.cachedPartPtr >> result.physicalPartPtr >> result.cachedPartSize >> result.physicalPartSize; if (result.physicalPartPtr) { for (int i = 0; i < result.physicalPartSize; i++) { unsigned __int8 physicalPart; *aStream >> physicalPart; result.physicalPart << physicalPart; } } if (result.cachedPartPtr) { for (int i = 0; i < result.cachedPartSize; i++) { unsigned __int8 cachedPart; *aStream >> cachedPart; result.cachedPart << cachedPart; } } return result; } // ?Load_GfxVertexShaderLoadDef@@YAX_N@Z at 0x822a69f8 GfxVertexShaderLoadDef Assets::Load_GfxVertexShaderLoadDef(QDataStream *aStream) { GfxVertexShaderLoadDef result; *aStream >> result.cachedPartPtr >> result.physicalPartPtr >> result.cachedPartSize >> result.physicalPartSize; if (result.physicalPartPtr) { for (int i = 0; i < result.physicalPartSize; i++) { unsigned __int8 physicalPart; *aStream >> physicalPart; result.physicalPart << physicalPart; } } if (result.cachedPartPtr) { for (int i = 0; i < result.cachedPartSize; i++) { unsigned __int8 cachedPart; *aStream >> cachedPart; result.cachedPart << cachedPart; } } return result; } // ?Load_GfxImagePixels@@YAX_N@Z at 0x822a6aa0 QVector Assets::Load_GfxImagePixels(QDataStream *aStream, GfxImage aGfxImage) { QVector result; if (aGfxImage.pixelsPtr) { aStream->skipRawData(aGfxImage.cardMemory.platform[0]); } return result; } // ?Load_GfxTexture@@YAX_N@Z at 0x822a6b28 GfxTexture Assets::Load_GfxTexture(QDataStream *aStream, GfxTexture aGfxTexture, GfxImageLoadDef aGfxImageLoadDef) { unsigned __int8 *v1; // r4 D3DBaseTexture *basemap; // r11 unsigned __int8 *v3; // r4 unsigned __int8 *v4; // r4 if ((aGfxImageLoadDef.flags & 4) != 0) { if (aGfxTexture.basemap) { v1 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v1; varGfxTexture->basemap = (D3DBaseTexture *)v1; varIDirect3DCubeTexture9 = (D3DCubeTexture *)v1; Load_Stream(1, v1, 0x34u); } } else { basemap = aGfxTexture.basemap; if ( (aGfxImageLoadDef.flags & 8) != 0 ) { if ( basemap ) { v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; aGfxTexture.basemap = (D3DBaseTexture *)v3; varIDirect3DVolumeTexture9 = (D3DVolumeTexture *)v3; Load_Stream(1, v3, 0x34u); } } else if ( basemap ) { v4 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v4; aGfxTexture.basemap = (D3DBaseTexture *)v4; varIDirect3DTexture9 = (D3DTexture *)v4; Load_Stream(1, v4, 0x34u); } } } // ?Load_XSurfaceVertexInfo@@YAX_N@Z at 0x822a6c08 XSurfaceVertexInfo Assets::Load_XSurfaceVertexInfo(QDataStream *aStream) { unsigned __int16 *vertsBlend; // r10 int v2; // r10 int v3; // r9 int v4; // r8 int v5; // r6 unsigned __int8 *v6; // r4 XSurfaceVertexInfo result; *aStream >> result.vertCount[0] >> result.vertCount[1] >> result.vertCount[2] >> result.vertCount[3] >> result.vertsBlendPtr; if (result.vertsBlendPtr) { if (result.vertsBlendPtr == -1) { aStream->skipRawData(2 * (7 * result.vertCount[3] + 5 * result.vertCount[2] + 3 * result.vertCount[1] + result.vertCount[0])); } else { // Resolve contents from g_streamBlocks //varXSurfaceVertexInfo->vertsBlend = (unsigned __int16 *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + ((((unsigned int)varXSurfaceVertexInfo->vertsBlend // - 1) >> 26) & 0x38)))[((int)varXSurfaceVertexInfo->vertsBlend - 1) & 0x1FFFFFFF]; } } } // ?Load_XSurfaceCollisionTree@@YAX_N@Z at 0x822a6d00 XSurfaceCollisionTree Assets::Load_XSurfaceCollisionTree(QDataStream *aStream) { XSurfaceCollisionTree result; *aStream >> result.trans[0] >> result.trans[1] >> result.trans[2] >> result.scale[0] >> result.scale[1] >> result.scale[2] >> result.nodeCount >> result.leafCount; for (int i = 0; i < result.nodeCount; i++) { XSurfaceCollisionNode collisionNode; *aStream >> collisionNode.aabb.mins[0] >> collisionNode.aabb.mins[1] >> collisionNode.aabb.mins[2] >> collisionNode.aabb.maxs[0] >> collisionNode.aabb.maxs[1] >> collisionNode.aabb.maxs[2] >> collisionNode.childBeginIndex >> collisionNode.childCount; result.nodes << collisionNode; } for (int i = 0; i < result.leafCount; i++) { XSurfaceCollisionLeaf collisionLeaf; *aStream >> collisionLeaf.triangleBeginIndex; result.leafs << collisionLeaf; } return result; } // ?Load_MaterialInfo@@YAX_N@Z at 0x822a6dc0 MaterialInfo Assets::Load_MaterialInfo(QDataStream *aStream) { MaterialInfo result; *aStream >> result.namePtr >> result.gameFlags >> result.sortKey >> result.textureAtlasRowCount >> result.textureAtlasColumnCount >> result.drawSurf.objectId >> result.drawSurf.reflectionProbeIndex >> result.drawSurf.customIndex >> result.drawSurf.materialSortedIndex >> result.drawSurf.prepass >> result.drawSurf.primaryLightIndex >> result.drawSurf.surfType >> result.drawSurf.primarySortKey >> result.drawSurf.unused >> result.surfaceTypeBits; result.name = Load_XStringCustom(aStream); return result; } // ?Load_XAUDIOCHANNELMAP@@YAX_N@Z at 0x822a6e10 XAUDIOCHANNELMAP Assets::Load_XAUDIOCHANNELMAP(QDataStream *aStream) { XAUDIOCHANNELMAP result; *aStream >> result.EntryCount >> result.paEntriesPtr; if (result.paEntriesPtr) { for (int i = 0; i < result.EntryCount; i++) { XAUDIOCHANNELMAPENTRY entry; *aStream >> entry.InputChannel >> entry.OutputChannel >> entry.Volume; result.paEntries << entry; } } return result; } // ?Load_SndCurve@@YAX_N@Z at 0x822a6e88 SndCurve Assets::Load_SndCurve(QDataStream *aStream) { SndCurve result; *aStream >> result.filenamePtr >> result.knotCount; for (int i = 0; i < 8; i++) { *aStream >> result.knots[i][0] >> result.knots[i][1]; } if (result.filenamePtr == -1) { result.filename = Load_XStringCustom(aStream); } return result; } // ?Load_StreamFileNameRaw@@YAX_N@Z at 0x822a6ee0 StreamFileNameRaw Assets::Load_StreamFileNameRaw(QDataStream *aStream) { StreamFileNameRaw result; *aStream >> result.dirPtr >> result.namePtr; if (result.dirPtr == -1) { result.dir = Load_XStringCustom(aStream); } if (result.namePtr == -1) { result.name = Load_XStringCustom(aStream); } return result; } // ?Load_SndDriverGlobals@@YAX_N@Z at 0x822a6f48 XSoundDriverGlobals Assets::Load_SndDriverGlobals(QDataStream *aStream) { XSoundDriverGlobals result; *aStream >> result.reverbSettingsPtr >> result.namePtr; if (result.reverbSettingsPtr) { XAudioReverbSettings xaReverbSettings; *aStream >> xaReverbSettings.presetOverridden >> xaReverbSettings.reverbSettings.ReflectionsDelay >> xaReverbSettings.reverbSettings.ReverbDelay >> xaReverbSettings.reverbSettings.RearDelay >> xaReverbSettings.reverbSettings.PositionLeft >> xaReverbSettings.reverbSettings.PositionRight >> xaReverbSettings.reverbSettings.PositionMatrixLeft >> xaReverbSettings.reverbSettings.PositionMatrixRight >> xaReverbSettings.reverbSettings.EarlyDiffusion >> xaReverbSettings.reverbSettings.LateDiffusion >> xaReverbSettings.reverbSettings.LowEQGain >> xaReverbSettings.reverbSettings.LowEQCutoff >> xaReverbSettings.reverbSettings.HighEQGain >> xaReverbSettings.reverbSettings.HighEQCutoff >> xaReverbSettings.reverbSettings.RoomFilterFreq >> xaReverbSettings.reverbSettings.RoomFilterMain >> xaReverbSettings.reverbSettings.RoomFilterHF >> xaReverbSettings.reverbSettings.ReflectionsGain >> xaReverbSettings.reverbSettings.ReverbGain >> xaReverbSettings.reverbSettings.DecayTime >> xaReverbSettings.reverbSettings.Density >> xaReverbSettings.reverbSettings.RoomSize; result.reverbSettings = xaReverbSettings; } if (result.namePtr == -1) { result.name = Load_XStringCustom(aStream); } } // ?Load_XaSeekTable@@YAX_N@Z at 0x822a6fe0 XaSeekTable Assets::Load_XaSeekTable(QDataStream *aStream) { XaSeekTable result; *aStream >> result.size >> result.dataPtr; if (result.dataPtr) { for (int i = 0; i < result.size; i++) { unsigned int data; *aStream >> data; result.data << data; } } } // ?Load_XAUDIOPACKET_ALIGNED@@YAX_N@Z at 0x822a7058 XAUDIOPACKET_ALIGNED Assets::Load_XAUDIOPACKET_ALIGNED(QDataStream *aStream) { XAUDIOPACKET_ALIGNED result; *aStream >> result.pBufferPtr >> result.BufferSize >> result.LoopCount; for (int i = 0; i < 6; i++) { *aStream >> result.XMALoop[i].LoopStart >> result.XMALoop[i].LoopEnd >> result.XMALoop[i].LoopSubframeEnd >> result.XMALoop[i].LoopSubframeSkip; } *aStream >> result.pContextPtr; if (result.pBufferPtr) { for (int i = 0; i < result.BufferSize; i++) { char bufferChar; *aStream >> bufferChar; result.pBuffer << bufferChar; } } if (result.pContextPtr) { *aStream >> result.pContext; } } // ?Load_XAnimNotifyInfo@@YAX_N@Z at 0x822a70f8 XAnimNotifyInfo Assets::Load_XAnimNotifyInfo(QDataStream *aStream) { XAnimNotifyInfo result; *aStream >> result.name >> result.time; // Fill out parsing aStream->skipRawData(2); return result; } // ?Load_XAnimDynamicFrames@@YAX_N@Z at 0x822a7168 XAnimDynamicFrames Assets::Load_XAnimDynamicFrames(QDataStream *aStream, XAnimPartTrans aXAnimPartTrans, XAnimDynamicIndices aXAnimDynamicIndices, XAnimDynamicFrames aXAnimDynamicFrames) { XAnimDynamicFrames result; if (aXAnimPartTrans.smallTrans) { if (aXAnimDynamicIndices._1[0]) // Check this should be [0] { int readSize = aXAnimPartTrans.size + 1; if (aXAnimPartTrans.size == 0) readSize = 0; // Fill out parsing aStream->skipRawData(3 * readSize); } } else if (aXAnimDynamicFrames._1) { int readSize = aXAnimPartTrans.size + 1; if (aXAnimPartTrans.size == 0) readSize = 0; // Fill out parsing aStream->skipRawData(6 * readSize); } return result; } // ?Load_XAnimDynamicIndicesTrans@@YAX_N@Z at 0x822a7228 XAnimDynamicIndices Assets::Load_XAnimDynamicIndicesTrans(QDataStream *aStream, XAnimParts aXAnimParts, XAnimPartTrans aXAnimPartTrans) { if (aXAnimParts.numframes >= 0x100u) { // Fill out parsing aStream->skipRawData(2 * (aXAnimPartTrans.size + 1)); } else { // Fill out parsing aStream->skipRawData(aXAnimPartTrans.size + 1); } } // ?Load_XAnimDynamicIndicesDeltaQuat@@YAX_N@Z at 0x822a7278 XAnimDynamicIndices Assets::Load_XAnimDynamicIndicesDeltaQuat(QDataStream *aStream, XAnimDeltaPartQuat aXAnimDeltaPartQuat, XAnimParts aXAnimParts) { XAnimDynamicIndices result; if (aXAnimParts.numframes >= 0x100u) { // Fill out parsing aStream->skipRawData(2 * (aXAnimDeltaPartQuat.size + 1)); } else { // Fill out parsing aStream->skipRawData(aXAnimDeltaPartQuat.size + 1); } return result; } // ?Load_XAnimIndices@@YAX_N@Z at 0x822a72c8 XAnimIndices Assets::Load_XAnimIndices(QDataStream *aStream, XAnimParts aXAnimParts, XAnimIndices aXAnimIndices) { XAnimIndices result; if (aXAnimParts.numframes >= 0x100u) { if (aXAnimIndices._1) { // Fill out parsing aStream->skipRawData(2 * aXAnimParts.indexCount); } } else if (aXAnimIndices._1) { // Fill out parsing aStream->skipRawData(aXAnimParts.indexCount); } return result; } // ?Load_XStringArray@@YAX_NH@Z at 0x822a73b8 QStringList Assets::Load_XStringArray(QDataStream *aStream, int count) { QStringList result; for (int i = 0; i < count; i++) { result << Load_XString(aStream); } return result; } // ?Load_ScriptStringArray@@YAX_NH@Z at 0x822a7460 QVector Assets::Load_ScriptStringArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_ScriptString(aStream); } return result; } // ?Load_GfxLightRegionHullArray@@YAX_NH@Z at 0x822a74d8 QVector Assets::Load_GfxLightRegionHullArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_GfxLightRegionHull(aStream); } return result; } // ?Load_GfxShadowGeometryArray@@YAX_NH@Z at 0x822a7538 QVector Assets::Load_GfxShadowGeometryArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_GfxShadowGeometry(aStream); } return result; } // ?Load_StringTable@@YAX_N@Z at 0x822a7650 StringTable Assets::Load_StringTable(QDataStream *aStream) { StringTable result; *aStream >> result.namePtr >> result.columnCount >> result.rowCount >> result.valuesPtr; if (result.namePtr == -1) { result.name = Load_XStringCustom(aStream); } if (result.valuesPtr) { result.values = Load_XStringArray(aStream, result.rowCount * result.columnCount); } return result; } // ?Load_RawFilePtr@@YAX_N@Z at 0x822a76e8 RawFile Assets::Load_RawFilePtr(QDataStream *aStream) { RawFile result; qint32 rawFilePtr; *aStream >> rawFilePtr; if (rawFilePtr) { if (rawFilePtr != -1 && rawFilePtr != -2) { // Resolve contents from g_streamBlocks //*varRawFilePtr = *(RawFile **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; //DB_PopStreamPos(); return result; } result = Load_RawFile(aStream); } return result; } // ?Load_LocalizeEntryPtr@@YAX_N@Z at 0x822a77d0 XLocalizeEntry Assets::Load_LocalizeEntryPtr(QDataStream *aStream) { XLocalizeEntry result; qint32 localizeEntryPtr; *aStream >> localizeEntryPtr; if (localizeEntryPtr) { if (localizeEntryPtr != -1 && localizeEntryPtr != -2) { //*varLocalizeEntryPtr = *(LocalizeEntry **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; //DB_PopStreamPos(); return result; } result = Load_LocalizeEntry(aStream); } return result; } // ?Load_MultiDef@@YAX_N@Z at 0x822a78b8 MultiDef Assets::Load_MultiDef(QDataStream *aStream) { MultiDef result; for (int i = 0; i < 32; i++) { *aStream >> result.dvarListPtrs[i]; } for (int i = 0; i < 32; i++) { *aStream >> result.dvarStrPtrs[i]; } for (int i = 0; i < 32; i++) { *aStream >> result.dvarValue[i]; } *aStream >> result.count >> result.strDef; for (int i = 0; i < 32; i++) { if (result.dvarListPtrs[i] == -1) { result.dvarList << Load_XStringCustom(aStream); } } for (int i = 0; i < 32; i++) { if (result.dvarStrPtrs[i] == -1) { result.dvarStr << Load_XStringCustom(aStream); } } return result; } // ?Load_Operand@@YAX_N@Z at 0x822a7958 Operand Assets::Load_Operand(QDataStream *aStream) { Operand result; *aStream >> result.dataType; if (result.dataType == VAL_STRING) { result.stringVal = Load_XString(aStream); } else if (result.dataType == VAL_FLOAT) { *aStream >> result.floatVal; } else if (result.dataType == VAL_INT) { *aStream >> result.intVal; } return result; } // ?Load_ComPrimaryLightArray@@YAX_NH@Z at 0x822a79d0 QVector Assets::Load_ComPrimaryLightArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { XComPrimaryLight comPrimaryLight; *aStream >> comPrimaryLight.type >> comPrimaryLight.canUseShadowMap >> comPrimaryLight.exponent >> comPrimaryLight.unused >> comPrimaryLight.color[0] >> comPrimaryLight.color[1] >> comPrimaryLight.color[2] >> comPrimaryLight.dir[0] >> comPrimaryLight.dir[1] >> comPrimaryLight.dir[2] >> comPrimaryLight.origin[0] >> comPrimaryLight.origin[1] >> comPrimaryLight.origin[2] >> comPrimaryLight.radius >> comPrimaryLight.cosHalfFovOuter >> comPrimaryLight.cosHalfFovInner >> comPrimaryLight.cosHalfFovExpanded >> comPrimaryLight.rotationLimit >> comPrimaryLight.translationLimit >> comPrimaryLight.defNamePtr; result << comPrimaryLight; } return result; } CBrushSide Assets::Load_cbrushside_t(QDataStream *aStream) { CBrushSide result; *aStream >> result.planePtr >> result.materialNum >> result.firstAdjacentSideOffset >> result.edgeCount; if (result.planePtr == -1) { result.plane = Load_CPlane(aStream); } return result; } // ?Load_CBrush@@YAX_N@Z at 0x822a7a48 CBrush Assets::Load_CBrush(QDataStream *aStream) { CBrush result; *aStream >> result.mins[0] >> result.mins[1] >> result.mins[2] >> result.contents >> result.maxs[0] >> result.maxs[1] >> result.maxs[2] >> result.numsides >> result.sidesPtr >> result.axialMaterialNum[0][0] >> result.axialMaterialNum[0][1] >> result.axialMaterialNum[0][2] >> result.axialMaterialNum[1][0] >> result.axialMaterialNum[1][1] >> result.axialMaterialNum[1][2] >> result.baseAdjacentSidePtr >> result.firstAdjacentSideOffsets[0][0] >> result.firstAdjacentSideOffsets[0][1] >> result.firstAdjacentSideOffsets[0][2] >> result.firstAdjacentSideOffsets[1][0] >> result.firstAdjacentSideOffsets[1][1] >> result.firstAdjacentSideOffsets[1][2] >> result.edgeCount[0][0] >> result.edgeCount[0][1] >> result.edgeCount[0][2] >> result.edgeCount[1][0] >> result.edgeCount[1][1] >> result.edgeCount[1][2]; if (result.sidesPtr) { if (result.sidesPtr == -1) { for (int i = 0; i < result.numsides; i++) { result.sides << Load_cbrushside_t(aStream); } } else { // Resolve from g_streamBlocks //varcbrush_t->sides = (cbrushside_t *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(&varcbrush_t->sides[-1].edgeCount + 1) >> 26) & 0x38)))[(int)(&varcbrush_t->sides[-1].edgeCount + 1) & 0x1FFFFFFF]; } } if (result.baseAdjacentSidePtr) { if (result.baseAdjacentSidePtr == -1) { *aStream >> result.baseAdjacentSide; } else { // Resolve from g_streamBlocks //v1->baseAdjacentSide = &(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(v1->baseAdjacentSide - 1) >> 26) & 0x38)))[(int)(v1->baseAdjacentSide - 1) & 0x1FFFFFFF]; } } return result; } // ?Load_CollisionPartitionArray@@YAX_NH@Z at 0x822a7b50 QVector Assets::Load_CollisionPartitionArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_CollisionPartition(aStream); } return result; } // ?Load_CLeafBrushNode@@YAX_N@Z at 0x822a7bb0 CLeafBrushNode Assets::Load_CLeafBrushNode(QDataStream *aStream) { CLeafBrushNode result; *aStream >> result.axis >> result.leafBrushCount >> result.contents >> result.data; result.data = Load_CLeafBrushNodeData(aStream); return result; } // ?Load_cNode_tArray@@YAX_NH@Z at 0x822a7c00 QVector Assets::Load_cNode_tArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { cNode_t cNode; *aStream >> cNode.planePtr >> cNode.children[0] >> cNode.children[1]; if (cNode.planePtr) { if (cNode.planePtr == -1) { cNode.plane = Assets::Load_CPlane(aStream); } else { // Resolve contents from g_streamBlocks //varcNode_t->plane = (cplane_s *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)&plane[-1].pad[1] >> 26) & 0x38)))[(unsigned int)&plane[-1].pad[1] & 0x1FFFFFFF]; } } result << cNode; } return result; } // ?Load_MapEntsPtr@@YAX_N@Z at 0x822a7cc8 void Assets::Load_MapEntsPtr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 MapEnts **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varMapEntsPtr, 4u); DB_PushStreamPos(0); v1 = (int)*varMapEntsPtr; if ( *varMapEntsPtr ) { if ( v1 != -1 && v1 != -2 ) { *varMapEntsPtr = *(MapEnts **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varMapEntsPtr = (MapEnts *)v3; varMapEnts = (MapEnts *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_MapEnts(1); v5 = varMapEntsPtr; *v5 = (MapEnts *)DB_AddXAsset((XAssetHeader *)0x10, (XAssetHeader *)*varMapEntsPtr, v6); if ( inserted ) *inserted = *varMapEntsPtr; } DB_PopStreamPos(); } // ?Load_GameWorldMpPtr@@YAX_N@Z at 0x822a7db0 void Assets::Load_GameWorldMpPtr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 GameWorldMp **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varGameWorldMpPtr, 4u); DB_PushStreamPos(0); v1 = (int)*varGameWorldMpPtr; if ( *varGameWorldMpPtr ) { if ( v1 != -1 && v1 != -2 ) { *varGameWorldMpPtr = *(GameWorldMp **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varGameWorldMpPtr = (GameWorldMp *)v3; varGameWorldMp = (GameWorldMp *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_GameWorldMp(1); v5 = varGameWorldMpPtr; *v5 = (GameWorldMp *)DB_AddXAsset((XAssetHeader *)0xF, (XAssetHeader *)*varGameWorldMpPtr, v6); if ( inserted ) *inserted = *varGameWorldMpPtr; } DB_PopStreamPos(); } // ?Load_pathnode_tree_info_t@@YAX_N@Z at 0x822a7e98 void Assets::Load_pathnode_tree_info_t(QDataStream *aStream) { if ( varpathnode_tree_t->axis < 0 ) { varpathnode_tree_nodes_t = (PathNodeTreeNodes *)varpathnode_tree_info_t; Load_PathNodeTreeNodes(0); } else { varpathnode_tree_ptr = (pathnode_tree_t **)varpathnode_tree_info_t; LoadPathNodeTreeArray(0, 2); } } // ?Load_pathnode_t@@YAX_N@Z at 0x822a7ed8 void Assets::Load_pathnode_t(QDataStream *aStream) { Load_Stream(0, varpathnode_t, 0x80u); varpathnode_constant_t = &varpathnode_t->constant; Load_PathNodeConstant(0); } // ?Load_cbrushside_tArray@@YAX_NH@Z at 0x822a7f28 void Assets::Load_cbrushside_tArray(QDataStream *aStream, int count) { int v2; // r31 CBrushSide *v3; // r30 CPlane *plane; // r11 unsigned __int8 *v5; // r4 v2 = count; Load_Stream(1, varcbrushside_t, 12 * count); v3 = varcbrushside_t; if ( v2 > 0 ) { do { varcbrushside_t = v3; Load_Stream(0, v3, 0xCu); plane = varcbrushside_t->plane; if ( varcbrushside_t->plane ) { if ( plane == (CPlane *)-1 ) { v5 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v5; varcplane_t = (cplane_s *)v5; varcbrushside_t->plane = (cplane_s *)v5; Load_Stream(1, v5, 0x14u); } else { varcbrushside_t->plane = (cplane_s *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)&plane[-1].pad[1] >> 26) & 0x38)))[(unsigned int)&plane[-1].pad[1] & 0x1FFFFFFF]; } } --v2; ++v3; } while ( v2 ); } } // ?Load_PhysPresetPtr@@YAX_N@Z at 0x822a7ff8 void Assets::Load_PhysPresetPtr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 PhysPreset **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varPhysPresetPtr, 4u); DB_PushStreamPos(0); v1 = (int)*varPhysPresetPtr; if ( *varPhysPresetPtr ) { if ( v1 != -1 && v1 != -2 ) { *varPhysPresetPtr = *(PhysPreset **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varPhysPresetPtr = (PhysPreset *)v3; varPhysPreset = (PhysPreset *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_PhysPreset(1); v5 = varPhysPresetPtr; *v5 = (PhysPreset *)DB_AddXAsset((XAssetHeader *)1, (XAssetHeader *)*varPhysPresetPtr, v6); if ( inserted ) *inserted = *varPhysPresetPtr; } DB_PopStreamPos(); } // ?Load_MaterialShaderArgument@@YAX_N@Z at 0x822a80e0 MaterialShaderArgument Assets::Load_MaterialShaderArgument(QDataStream *aStream) { MaterialShaderArgument result; *aStream >> result.type >> result.dest; result.u = Assets::Load_MaterialArgumentDef(aStream, result); } // ?Load_MaterialPixelShaderProgram@@YAX_N@Z at 0x822a8130 MaterialPixelShaderProgram Assets::Load_MaterialPixelShaderProgram(QDataStream *aStream) { MaterialPixelShaderProgram result; *aStream >> result.psPtr; result.loadDef = Load_GfxPixelShaderLoadDef(aStream); if ( varMaterialPixelShader->prog.loadDef.physicalPartSize ) { ps = varMaterialPixelShader->prog.ps; HIDWORD(v2) = varMaterialPixelShader->prog.loadDef.physicalPart; LODWORD(v2) = 0; *(_QWORD *)&ps->Common = v2; *(_QWORD *)&ps->Fence = v2; *(_QWORD *)&ps->Identifier = v2; *(_QWORD *)&ps[1].Common = v2; *(_QWORD *)&ps[1].Fence = v2; ps->Common = 7; ps->ReferenceCount = 1; ps->BaseFlush = -65536; ps[1].Common = HIDWORD(v2); } else { varMaterialPixelShader->prog.ps = 0; } return result; } // ?Load_MaterialVertexShaderProgram@@YAX_N@Z at 0x822a81e8 void Assets::Load_MaterialVertexShaderProgram(QDataStream *aStream) { Load_Stream(0, varMaterialVertexShaderProgram, 0xCu); varGfxVertexShaderLoadDef = (GfxVertexShaderLoadDef *)varMaterialVertexShaderProgram; Load_GfxVertexShaderLoadDef(0); XGRegisterVertexShader( varMaterialVertexShader->prog.vs, (unsigned int)varMaterialVertexShader->prog.loadDef.physicalPart); } // ?Load_GfxImageLoadDef@@YAX_N@Z at 0x822a8248 GfxImageLoadDef Assets::Load_GfxImageLoadDef(QDataStream *aStream) { GfxImageLoadDef result; *aStream >> result.levelCount >> result.flags >> result.dimensions[0] >> result.dimensions[1] >> result.dimensions[2] >> result.format; result.texture = Assets::Load_GfxTexture(aStream); return result; } typedef GfxTexture GfxTextureLoad; // ?Load_GfxTextureLoad@@YAX_N@Z at 0x822a82a8 GfxTextureLoad Assets::Load_GfxTextureLoad(QDataStream *aStream) { GfxTextureLoad result; *aStream >> result.basemapPtr; if (result.basemapPtr) { if (result.basemapPtr == -1 || result.basemapPtr == -2) { result.loadDef = Assets::Load_GfxImageLoadDef(aStream); } else { // Resolve contents from g_streamBlocks //varGfxTextureLoad->basemap = *(D3DBaseTexture **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + ((((unsigned int)&basemap[-1].Format.dword[5] // + 3) >> 26) & 0x38)))[((unsigned int)&basemap[-1].Format.dword[5] + 3) & 0x1FFFFFFF]; } } return result; } // ?Load_XRigidVertList@@YAX_N@Z at 0x822a83a0 XRigidVertList Assets::Load_XRigidVertList(QDataStream *aStream) { XRigidVertList result; *aStream >> result.boneOffset >> result.vertCount >> result.triOffset >> result.triCount >> result.collisionTreePtr; if (result.collisionTreePtr) { if (result.collisionTreePtr == -1) { result.collisionTree = Assets::Load_XSurfaceCollisionTree(aStream); } else { // Resolve contents from g_streamBlocks //varXRigidVertList->collisionTree = (XSurfaceCollisionTree *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + ((((unsigned int)&varXRigidVertList->collisionTree[-1].leafs // + 3) >> 26) & 0x38)))[((int)&varXRigidVertList->collisionTree[-1].leafs + 3) & 0x1FFFFFFF]; } } } // ?Load_snd_alias_list_name@@YAX_N@Z at 0x822a8450 void Assets::Load_snd_alias_list_name(QDataStream *aStream) { Load_Stream(0, varsnd_alias_list_name, 4u); Load_SndAliasCustom(varsnd_alias_list_name); } // ?Load_XAUDIOCHANNELMAPArray@@YAX_NH@Z at 0x822a8490 QVector Assets::Load_XAUDIOCHANNELMAPArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Assets::Load_XAUDIOCHANNELMAP(aStream); } return result; } // ?Load_SndCurvePtr@@YAX_N@Z at 0x822a8528 SndCurve Assets::Load_SndCurvePtr(QDataStream *aStream) { SndCurve result; qint32 sndCurvePtr; *aStream >> sndCurvePtr; if (sndCurvePtr) { if (sndCurvePtr == -1 || sndCurvePtr == -2) { result = Assets::Load_SndCurve(aStream); } else { // Resolve contents from g_streamBlocks //*varSndCurvePtr = *(SndCurve **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; } } return result; } // ?Load_StreamFileInfo@@YAX_N@Z at 0x822a8610 void Assets::Load_StreamFileInfo(QDataStream *aStream) { if ( !varStreamFileName->fileIndex ) { varStreamFileNameRaw = &varStreamFileInfo->raw; Load_StreamFileNameRaw(0); } } // ?Load_SndDriverGlobalsPtr@@YAX_N@Z at 0x822a8640 void Assets::Load_SndDriverGlobalsPtr(QDataStream *aStream) { XSoundDriverGlobals result; qint32 sndDriverGlobalsPtr; *aStream >> sndDriverGlobalsPtr; if (sndDriverGlobalsPtr) { if (sndDriverGlobalsPtr == -1 || sndDriverGlobalsPtr == -2) { result = Assets::Load_SndDriverGlobals(aStream); } else { // Resolve contents for g_streamBlocks //*varSndDriverGlobalsPtr = *(SndDriverGlobals **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; } } } // ?Load_XaSound@@YAX_N@Z at 0x822a8728 XaSound Assets::Load_XaSound(QDataStream *aStream) { XaSound result; *aStream >> result.packet.pBufferPtr >> result.packet.BufferSize >> result.packet.LoopCount; for (int i = 0; i < 6; i++) { *aStream >> result.packet.XMALoop[i].LoopStart >> result.packet.XMALoop[i].LoopEnd >> result.packet.XMALoop[i].LoopSubframeEnd >> result.packet.XMALoop[i].LoopSubframeSkip; } *aStream >> result.packet.pContextPtr >> result.packet.pContext >> result.format.SampleType >> result.format.___u1.NumStreams >> result.format.___u1.ChannelCount; for (int i = 0; i < 6; i++) { *aStream >> result.format.___u2.Stream[i].SampleRate >> result.format.___u2.Stream[i].ChannelCount >> result.format.___u2.Stream[i].DecodeBufferSize; } *aStream >> result.packet.pContextPtr >> result.xaIwXmaDataInfo.totalMsec >> result.seekTable.size >> result.seekTable.dataPtr; result.packet = Assets::Load_XAUDIOPACKET_ALIGNED(aStream); result.seekTable = Assets::Load_XaSeekTable(aStream); return result; } // ?Load_XAnimNotifyInfoArray@@YAX_NH@Z at 0x822a8790 QVector Assets::Load_XAnimNotifyInfoArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { XAnimNotifyInfo xAnimNotifyInfo; *aStream >> xAnimNotifyInfo.name >> xAnimNotifyInfo.time; result << xAnimNotifyInfo; } return result; } // ?Load_XAnimPartTransFrames@@YAX_N@Z at 0x822a8828 void Assets::Load_XAnimPartTransFrames(QDataStream *aStream) { unsigned int numframes; // r9 int size; // r11 size_t v3; // r5 Load_Stream(1, varXAnimPartTransFrames, 0x1Cu); numframes = varXAnimParts->numframes; varXAnimDynamicIndicesTrans = &varXAnimPartTransFrames->indices; size = varXAnimPartTrans->size; if ( numframes >= 0x100 ) { v3 = 2 * (size + 1); varUnsignedShort = varXAnimPartTransFrames->indices._2; } else { v3 = size + 1; varbyte = varXAnimPartTransFrames->indices._1; } Load_Stream(1, &varXAnimPartTransFrames->indices, v3); varXAnimDynamicFrames = &varXAnimPartTransFrames->frames; Load_XAnimDynamicFrames(0); } // ?Load_XAnimDeltaPartQuatDataFrames@@YAX_N@Z at 0x822a88d0 void Assets::Load_XAnimDeltaPartQuatDataFrames(QDataStream *aStream) { unsigned int numframes; // r9 int size; // r11 size_t v3; // r5 unsigned __int8 *v4; // r4 int v5; // r11 bool v6; // cr58 int v7; // r11 Load_Stream(1, varXAnimDeltaPartQuatDataFrames, 4u); numframes = varXAnimParts->numframes; varXAnimDynamicIndicesDeltaQuat = &varXAnimDeltaPartQuatDataFrames->indices; size = varXAnimDeltaPartQuat->size; if ( numframes >= 0x100 ) { v3 = 2 * (size + 1); varUnsignedShort = varXAnimDeltaPartQuatDataFrames->indices._2; } else { v3 = size + 1; varbyte = varXAnimDeltaPartQuatDataFrames->indices._1; } Load_Stream(1, &varXAnimDeltaPartQuatDataFrames->indices, v3); if ( varXAnimDeltaPartQuatDataFrames->frames ) { v4 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v4; varXAnimDeltaPartQuatDataFrames->frames = (__int16 (*)[2])v4; varXQuat2 = (__int16 (*)[2])v4; v5 = varXAnimDeltaPartQuat->size; v6 = v5 == 0; v7 = v5 + 1; if ( v6 ) v7 = 0; Load_Stream(1, v4, 4 * v7); } } // ?Load_TempStringArray@@YAX_NH@Z at 0x822a89c0 void Assets::Load_TempStringArray(QDataStream *aStream, int count) { int v2; // r31 const char **v3; // r30 const char **v4; // r3 int v5; // r11 v2 = count; Load_Stream(1, varTempString, 4 * count); v3 = varTempString; if ( v2 > 0 ) { do { varTempString = v3; Load_Stream(0, v3, 4u); v4 = varTempString; v5 = (int)*varTempString; if ( *varTempString ) { if ( v5 == -1 ) { varConstChar = (const char *)g_streamPos; *varTempString = (const char *)g_streamPos; Load_TempStringCustom(v4); } else { *varTempString = (const char *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v5 - 1) >> 26) & 0x38)))[(v5 - 1) & 0x1FFFFFFF]; } } --v2; ++v3; } while ( v2 ); } } // ?Load_GfxLightRegion@@YAX_N@Z at 0x822a8a78 GfxLightRegion Assets::Load_GfxLightRegion(QDataStream *aStream) { GfxLightRegion result; *aStream >> result.hullCount >> result.hullsPtr; if (result.hullsPtr) { result.hulls << Assets::Load_GfxLightRegionHullArray(aStream, result.hullCount); } return result; } // ?Load_StringTablePtr@@YAX_N@Z at 0x822a8c10 StringTable Assets::Load_StringTablePtr(QDataStream *aStream) { StringTable result; qint32 stringTablePtr; *aStream >> stringTablePtr; if (stringTablePtr) { if (stringTablePtr == -1) { result = Assets::Load_StringTable(aStream); } else { // Resolve contents from g_streamBlocks //*varStringTablePtr = (StringTable *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; } } } // ?Load_entryInternalData@@YAX_N@Z at 0x822a8d00 void Assets::Load_entryInternalData(QDataStream *aStream) { if ( varexpressionEntry->type ) { varOperand = (Operand *)varentryInternalData; Load_Operand(0); } } // ?Load_ComWorld@@YAX_N@Z at 0x822a8d30 ComWorld Assets::Load_ComWorld(QDataStream *aStream) { ComWorld result; *aStream >> result.namePtr >> result.isInUse >> result.primaryLightCount >> result.primaryLightsPtr; if (result.namePtr) { result.name = Assets::Load_XStringCustom(aStream); } if (result.primaryLightsPtr) { result.primaryLights << Assets::Load_ComPrimaryLightArray(aStream, result.primaryLightCount); } } // ?Load_cbrush_tArray@@YAX_NH@Z at 0x822a8dc8 QVector Assets::Load_cbrush_tArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Assets::Load_CBrush(aStream); } return result; } // ?Load_cLeafBrushNode_tArray@@YAX_NH@Z at 0x822a8e28 QVector Assets::Load_cLeafBrushNode_tArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { cLeafBrushNode_t cLeafBrushNode = Assets::Load_CLeafBrushNode(aStream); Assets::Load_CLeafBrushNode(aStream); if (cLeafBrushNode.leafBrushCount > 0) { if (cLeafBrushNode.data.leaf.brushesPtr) { cLeafBrushNode.data = Assets::Load_CLeafBrushNodeLeaf(count); } } result << cLeafBrushNode; } return result; } // ?Load_PathNodeTree@@YAX_N@Z at 0x822a8ed8 PathNodeTree Assets::Load_PathNodeTree(QDataStream *aStream) { PathNodeTree result; *aStream >> result.axis >> result.dist >> result.infoPtr; if (result.axis < 0) { varpathnode_tree_nodes_t = (PathNodeTreeNodes *)&varpathnode_tree_t->u; Load_PathNodeTreeNodes(0); } else { varpathnode_tree_ptr = varpathnode_tree_t->u.child; LoadPathNodeTreeArray(0, 2); } } // ?Load_pathnode_tArray@@YAX_NH@Z at 0x822a8f60 void Assets::Load_pathnode_tArray(QDataStream *aStream, int count) { int v2; // r30 pathnode_t *v3; // r31 v2 = count; Load_Stream(1, varpathnode_t, count << 7); v3 = varpathnode_t; if ( v2 > 0 ) { do { varpathnode_t = v3; Load_Stream(0, v3, 0x80u); varpathnode_constant_t = &varpathnode_t->constant; Load_PathNodeConstant(0); --v2; ++v3; } while ( v2 ); } } // ?Load_BrushWrapper@@YAX_N@Z at 0x822a8fd0 BrushWrapper Assets::Load_BrushWrapper(QDataStream *aStream) { BrushWrapper result; *aStream >> result.mins[0] >> result.mins[1] >> result.mins[2] >> result.contents >> result.maxs[0] >> result.maxs[1] >> result.maxs[2] >> result.numsides >> result.sidesPtr >> result.axialMaterialNum[0][0] >> result.axialMaterialNum[0][1] >> result.axialMaterialNum[0][2] >> result.axialMaterialNum[1][0] >> result.axialMaterialNum[1][1] >> result.axialMaterialNum[1][2] >> result.baseAdjacentSidePtr >> result.firstAdjacentSideOffsets[0][0] >> result.firstAdjacentSideOffsets[0][1] >> result.firstAdjacentSideOffsets[0][2] >> result.firstAdjacentSideOffsets[1][0] >> result.firstAdjacentSideOffsets[1][1] >> result.firstAdjacentSideOffsets[1][2] >> result.edgeCount[0][0] >> result.edgeCount[0][1] >> result.edgeCount[0][2] >> result.edgeCount[1][0] >> result.edgeCount[1][1] >> result.edgeCount[1][2] >> result.totalEdgeCount >> result.planesPtr; if (result.sidesPtr) { result.sides = Assets::Load_cbrushside_tArray(aStream, result.numsides); } if (result.baseAdjacentSidePtr) { result.baseAdjacentSide = Assets::Load_cbrushedge_t(aStream); } if (result.planesPtr) { if (result.planesPtr == -1) { for (int i = 0; i < result.numsides; i++) { result.planes << Assets::Load_CPlane(aStream); } } else { // Resolve contents from g_streamBlocks //v1->planes = (cplane_s *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)&v1->planes[-1].pad[1] >> 26) & 0x38)))[(int)&v1->planes[-1].pad[1] & 0x1FFFFFFF]; } } } // ?Load_MaterialShaderArgumentArray@@YAX_NH@Z at 0x822a90f0 void Assets::Load_MaterialShaderArgumentArray(QDataStream *aStream, int count) { int v2; // r30 MaterialShaderArgument *v3; // r31 v2 = count; Load_Stream(1, varMaterialShaderArgument, 8 * count); v3 = varMaterialShaderArgument; if ( v2 > 0 ) { do { varMaterialShaderArgument = v3; Load_Stream(0, v3, 8u); varMaterialArgumentDef = &varMaterialShaderArgument->u; Load_MaterialArgumentDef(0); --v2; ++v3; } while ( v2 ); } } // ?Load_MaterialPixelShader@@YAX_N@Z at 0x822a9168 MaterialPixelShader Assets::Load_MaterialPixelShader(QDataStream *aStream) { MaterialPixelShader result; Load_Stream(1, varMaterialPixelShader, 0x10u); DB_PushStreamPos(4u); varXString = &varMaterialPixelShader->name; Load_XString(0); varMaterialPixelShaderProgram = &varMaterialPixelShader->prog; Load_MaterialPixelShaderProgram(0); return result; } // ?Load_MaterialVertexShader@@YAX_N@Z at 0x822a91d8 void Assets::Load_MaterialVertexShader(QDataStream *aStream) { Load_Stream(1, varMaterialVertexShader, 0x10u); varXString = &varMaterialVertexShader->name; Load_XString(0); varMaterialVertexShaderProgram = &varMaterialVertexShader->prog; Load_MaterialVertexShaderProgram(0); } // ?Load_GfxImage@@YAX_N@Z at 0x822a9240 GfxImage Assets::Load_GfxImage(QDataStream *aStream) { GfxImage result; *aStream >> result.mapType //>> result.texture.map >> result.semantic >> result.cardMemory >> result.width >> result.height >> result.depth >> result.category >> result.delayLoadPixels >> result.pixelsPtr >> result.baseSize >> result.streamSlot >> result.streaming >> result.namePtr; if (result.namePtr == -1) { result.name = Assets::Load_XStringCustom(aStream); } if (result.pixelsPtr) { result.pixels = Assets::Load_GfxImagePixels(aStream); } result.texture = Assets::Load_GfxTextureLoad(aStream); *aStream >> result.texture varGfxTextureLoad = &varGfxImage->texture; Load_GfxTextureLoad(0); return result; } // ?Load_XRigidVertListArray@@YAX_NH@Z at 0x822a92d0 void Assets::Load_XRigidVertListArray(QDataStream *aStream, int count) { int v2; // r31 XRigidVertList *v3; // r30 v2 = count; Load_Stream(1, varXRigidVertList, 12 * count); v3 = varXRigidVertList; if ( v2 > 0 ) { do { varXRigidVertList = v3; Load_XRigidVertList(0); --v2; ++v3; } while ( v2 ); } } // ?Load_snd_alias_list_nameArray@@YAX_NH@Z at 0x822a9330 void Assets::Load_snd_alias_list_nameArray(QDataStream *aStream, int count) { SoundAliasList **v2; // r31 int v3; // r30 Load_Stream(1, varsnd_alias_list_name, 0x74u); v2 = varsnd_alias_list_name; v3 = 29; do { varsnd_alias_list_name = v2; Load_Stream(0, v2, 4u); Load_SndAliasCustom(varsnd_alias_list_name); --v3; ++v2; } while ( v3 ); } // ?Load_SpeakerMapChannel@@YAX_N@Z at 0x822a9390 void Assets::Load_SpeakerMapChannel(QDataStream *aStream) { Load_Stream(0, varSpeakerMapChannel, 0x10u); varXAUDIOCHANNELMAP = (XAUDIOCHANNELMAP *)varSpeakerMapChannel; Load_XAUDIOCHANNELMAPArray(0, 2); } // ?Load_LoadedSound@@YAX_N@Z at 0x822a93e0 void Assets::Load_LoadedSound(QDataStream *aStream) { Load_Stream(1, varLoadedSound, 0xA0u); DB_PushStreamPos(4u); varXString = &varLoadedSound->name; Load_XString(0); varXaSound = &varLoadedSound->sound; Load_XaSound(0); DB_PopStreamPos(); } // ?Load_StreamFileName@@YAX_N@Z at 0x822a9450 void Assets::Load_StreamFileName(QDataStream *aStream) { unsigned int fileIndex; // r9 Load_Stream(0, varStreamFileName, 0xCu); fileIndex = varStreamFileName->fileIndex; varStreamFileInfo = &varStreamFileName->info; if ( !fileIndex ) { varStreamFileNameRaw = &varStreamFileName->info.raw; Load_StreamFileNameRaw(0); } } // ?Load_XAnimPartTransData@@YAX_N@Z at 0x822a94b8 void Assets::Load_XAnimPartTransData(QDataStream *aStream) { if ( varXAnimPartTrans->size ) { varXAnimPartTransFrames = &varXAnimPartTransData->frames; Load_XAnimPartTransFrames(1); } else { varvec3_t = (float (*)[3])varXAnimPartTransData; Load_Stream(1, varXAnimPartTransData, 0xCu); } } // ?Load_XAnimDeltaPartQuatData@@YAX_N@Z at 0x822a94f8 void Assets::Load_XAnimDeltaPartQuatData(QDataStream *aStream) { if ( varXAnimDeltaPartQuat->size ) { varXAnimDeltaPartQuatDataFrames = &varXAnimDeltaPartQuatData->frames; Load_XAnimDeltaPartQuatDataFrames(1); } else { varXQuat2 = (__int16 (*)[2])varXAnimDeltaPartQuatData; Load_Stream(1, varXAnimDeltaPartQuatData, 4u); } } // ?Load_ScriptStringList@@YAX_N@Z at 0x822a9538 void Assets::Load_ScriptStringList(QDataStream *aStream) { int count; // r4 unsigned __int8 *v2; // r11 Load_Stream(0, varScriptStringList, 8u); DB_PushStreamPos(4u); if ( varScriptStringList->strings ) { count = varScriptStringList->count; v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v2; varScriptStringList->strings = (const char **)v2; varTempString = (const char **)v2; Load_TempStringArray(1, count); } DB_PopStreamPos(); } // ?Load_GfxLightRegionArray@@YAX_NH@Z at 0x822a95b8 void Assets::Load_GfxLightRegionArray(QDataStream *aStream, int count) { int v2; // r31 GfxLightRegion *v3; // r29 unsigned int hullCount; // r4 v2 = count; Load_Stream(1, varGfxLightRegion, 8 * count); v3 = varGfxLightRegion; if ( v2 > 0 ) { do { varGfxLightRegion = v3; Load_Stream(0, v3, 8u); if ( varGfxLightRegion->hulls ) { hullCount = varGfxLightRegion->hullCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varGfxLightRegionHull = (GfxLightRegionHull *)g_streamPos; varGfxLightRegion->hulls = (GfxLightRegionHull *)g_streamPos; Load_GfxLightRegionHullArray(1, hullCount); } --v2; ++v3; } while ( v2 ); } } // ?Load_GfxCellArray@@YAX_NH@Z at 0x822a9650 void Assets::Load_GfxCellArray(QDataStream *aStream, int count) { int v2; // r31 GfxCell *v3; // r30 v2 = count; Load_Stream(1, varGfxCell, 56 * count); v3 = varGfxCell; if ( v2 > 0 ) { do { varGfxCell = v3; Load_GfxCell(0); --v2; ++v3; } while ( v2 ); } } // ?Load_expressionEntry@@YAX_N@Z at 0x822a96a8 void Assets::Load_expressionEntry(QDataStream *aStream) { int type; // r9 Load_Stream(1, varexpressionEntry, 0xCu); type = varexpressionEntry->type; varentryInternalData = &varexpressionEntry->data; if ( type ) { varOperand = (Operand *)&varexpressionEntry->data; Load_Operand(0); } } // ?Load_ComWorldPtr@@YAX_N@Z at 0x822a9710 void Assets::Load_ComWorldPtr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 ComWorld **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varComWorldPtr, 4u); DB_PushStreamPos(0); v1 = (int)*varComWorldPtr; if ( *varComWorldPtr ) { if ( v1 != -1 && v1 != -2 ) { *varComWorldPtr = *(ComWorld **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varComWorldPtr = (ComWorld *)v3; varComWorld = (ComWorld *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_ComWorld(1); v5 = varComWorldPtr; *v5 = (ComWorld *)DB_AddXAsset((XAssetHeader *)0xD, (XAssetHeader *)*varComWorldPtr, v6); if ( inserted ) *inserted = *varComWorldPtr; } DB_PopStreamPos(); } // ?Load_pathnode_tree_tArray@@YAX_NH@Z at 0x822a97f8 void Assets::Load_pathnode_tree_tArray(QDataStream *aStream, int count) { int v2; // r31 PathNodeTree *v3; // r30 v2 = count; Load_Stream(1, varpathnode_tree_t, 16 * count); v3 = varpathnode_tree_t; if ( v2 > 0 ) { do { varpathnode_tree_t = v3; Load_PathNodeTree(0); --v2; ++v3; } while ( v2 ); } } // ?Load_MaterialPixelShaderPtr@@YAX_N@Z at 0x822a98b0 void Assets::Load_MaterialPixelShaderPtr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 MaterialPixelShader **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varMaterialPixelShaderPtr, 4u); DB_PushStreamPos(0); v1 = (int)*varMaterialPixelShaderPtr; if ( *varMaterialPixelShaderPtr ) { if ( v1 != -1 && v1 != -2 ) { *varMaterialPixelShaderPtr = *(MaterialPixelShader **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varMaterialPixelShaderPtr = (MaterialPixelShader *)v3; varMaterialPixelShader = (MaterialPixelShader *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_MaterialPixelShader(1); v5 = varMaterialPixelShaderPtr; *v5 = (MaterialPixelShader *)DB_AddXAsset((XAssetHeader *)5, (XAssetHeader *)*varMaterialPixelShaderPtr, v6); if ( inserted ) *inserted = *varMaterialPixelShaderPtr; } DB_PopStreamPos(); } // ?Load_GfxImagePtr@@YAX_N@Z at 0x822a9a40 void Assets::Load_GfxImagePtr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r31 Load_Stream(0, varGfxImagePtr, 4u); DB_PushStreamPos(0); v1 = (int)*varGfxImagePtr; if ( *varGfxImagePtr ) { if ( v1 == -1 || v1 == -2 ) { v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varGfxImagePtr = (GfxImage *)v3; varGfxImage = (GfxImage *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_GfxImage(1); Load_GfxImageAsset(varGfxImagePtr); if ( inserted ) *inserted = *varGfxImagePtr; } else { *varGfxImagePtr = *(GfxImage **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; } } DB_PopStreamPos(); } // ?Load_XSurface@@YAX_N@Z at 0x822a9b30 void Assets::Load_XSurface(QDataStream *aStream) { XSurface *v1; // r11 GfxPackedVertex *verts0; // r10 size_t v3; // r5 unsigned __int8 *v4; // r4 XSurface *v5; // r11 D3DVertexBuffer *p_vb0; // r28 GfxPackedVertex *v7; // r30 XRigidVertList *vertList; // r10 int vertListCount; // r4 unsigned __int16 *triIndices; // r10 int triCount; // r10 unsigned __int8 *v12; // r4 D3DIndexBuffer *p_indexBuffer; // r31 unsigned __int16 *v14; // r30 Load_Stream(0, varXSurface, 0x74u); varXSurfaceVertexInfo = &varXSurface->vertInfo; Load_XSurfaceVertexInfo(0); v1 = varXSurface; verts0 = varXSurface->verts0; if ( verts0 ) { if ( verts0 == (GfxPackedVertex *)-1 ) { v3 = __ROL4__(varXSurface->vertCount, 5); v4 = (unsigned __int8 *)((unsigned int)(g_streamPos + 15) & 0xFFFFFFF0); g_streamPos = v4; varGfxPackedVertex0 = (GfxPackedVertex *)v4; varXSurface->verts0 = (GfxPackedVertex *)v4; Load_Stream(1, v4, v3); v1 = varXSurface; } else { varXSurface->verts0 = (GfxPackedVertex *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&varXSurface->verts0[-1].tangent.packed + 3) >> 26) & 0x38)))[((int)&varXSurface->verts0[-1].tangent.packed + 3) & 0x1FFFFFFF]; } } varGfxVertexBuffer = &v1->vb0; Load_Stream(0, &v1->vb0, 0x20u); v5 = varXSurface; p_vb0 = &varXSurface->vb0; v7 = varXSurface->verts0; if ( v7 ) { XGSetVertexBufferHeader(__ROL4__(varXSurface->vertCount, 5), 0, 0, 0, p_vb0); XGOffsetResourceAddress(p_vb0, v7); v5 = varXSurface; } vertList = v5->vertList; if ( vertList ) { if ( vertList == (XRigidVertList *)-1 ) { vertListCount = v5->vertListCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varXRigidVertList = (XRigidVertList *)g_streamPos; v5->vertList = (XRigidVertList *)g_streamPos; Load_XRigidVertListArray(1, vertListCount); v5 = varXSurface; } else { v5->vertList = (XRigidVertList *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&v5->vertList[-1].collisionTree + 3) >> 26) & 0x38)))[((int)&v5->vertList[-1].collisionTree + 3) & 0x1FFFFFFF]; } } triIndices = v5->triIndices; if ( triIndices ) { if ( triIndices == (unsigned __int16 *)-1 ) { triCount = v5->triCount; v12 = (unsigned __int8 *)((unsigned int)(g_streamPos + 15) & 0xFFFFFFF0); v5->triIndices = (unsigned __int16 *)v12; g_streamPos = v12; varr_index16_t = (unsigned __int16 *)v12; Load_Stream(1, v12, 2 * (triCount + __ROL4__(triCount, 1))); v5 = varXSurface; } else { v5->triIndices = (unsigned __int16 *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)v5->triIndices - 1) >> 26) & 0x38)))[((int)v5->triIndices - 1) & 0x1FFFFFFF]; } } varGfxIndexBuffer = &v5->indexBuffer; Load_Stream(0, &v5->indexBuffer, 0x20u); p_indexBuffer = &varXSurface->indexBuffer; v14 = varXSurface->triIndices; XGSetIndexBufferHeader( 2 * (varXSurface->triCount + __ROL4__(varXSurface->triCount, 1)), 0, D3DFMT_INDEX16, 0, 0, &varXSurface->indexBuffer); XGOffsetResourceAddress(p_indexBuffer, v14); } // ?Load_SpeakerMapChannelArray@@YAX_NH@Z at 0x822a9d68 void Assets::Load_SpeakerMapChannelArray(QDataStream *aStream, int count) { XAUDIOCHANNELMAP *v2; // r31 int v3; // r30 Load_Stream(0, varSpeakerMapChannel, 0x20u); v2 = (XAUDIOCHANNELMAP *)varSpeakerMapChannel; v3 = 2; do { varSpeakerMapChannel = (XAUDIOCHANNELMAP (*)[2])v2; Load_Stream(0, v2, 0x10u); varXAUDIOCHANNELMAP = (XAUDIOCHANNELMAP *)varSpeakerMapChannel; Load_XAUDIOCHANNELMAPArray(0, 2); --v3; v2 += 2; } while ( v3 ); } // ?Load_StreamedSound@@YAX_N@Z at 0x822a9dd8 void Assets::Load_StreamedSound(QDataStream *aStream) { Load_Stream(0, varStreamedSound, 0xCu); varStreamFileName = &varStreamedSound->filename; Load_StreamFileName(0); } // ?Load_LoadedSoundPtr@@YAX_N@Z at 0x822a9e28 void Assets::Load_LoadedSoundPtr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 LoadedSound **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varLoadedSoundPtr, 4u); DB_PushStreamPos(0); v1 = (int)*varLoadedSoundPtr; if ( *varLoadedSoundPtr ) { if ( v1 != -1 && v1 != -2 ) { *varLoadedSoundPtr = *(LoadedSound **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varLoadedSoundPtr = (LoadedSound *)v3; varLoadedSound = (LoadedSound *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_LoadedSound(1); v5 = varLoadedSoundPtr; *v5 = (LoadedSound *)DB_AddXAsset((XAssetHeader *)0xA, (XAssetHeader *)*varLoadedSoundPtr, v6); if ( inserted ) *inserted = *varLoadedSoundPtr; } DB_PopStreamPos(); } // ?Load_XAnimPartTrans@@YAX_N@Z at 0x822a9f10 void Assets::Load_XAnimPartTrans(QDataStream *aStream) { int size; // r9 Load_Stream(1, varXAnimPartTrans, 4u); size = varXAnimPartTrans->size; varXAnimPartTransData = &varXAnimPartTrans->u; if ( size ) { varXAnimPartTransFrames = &varXAnimPartTrans->u.frames; Load_XAnimPartTransFrames(1); } else { varvec3_t = (float (*)[3])&varXAnimPartTrans->u; Load_Stream(1, &varXAnimPartTrans->u, 0xCu); } } // ?Load_XAnimDeltaPartQuat@@YAX_N@Z at 0x822a9f98 void Assets::Load_XAnimDeltaPartQuat(QDataStream *aStream) { int size; // r9 Load_Stream(1, varXAnimDeltaPartQuat, 4u); size = varXAnimDeltaPartQuat->size; varXAnimDeltaPartQuatData = &varXAnimDeltaPartQuat->u; if ( size ) { varXAnimDeltaPartQuatDataFrames = &varXAnimDeltaPartQuat->u.frames; Load_XAnimDeltaPartQuatDataFrames(1); } else { varXQuat2 = (__int16 (*)[2])&varXAnimDeltaPartQuat->u; Load_Stream(1, &varXAnimDeltaPartQuat->u, 4u); } } // ?Load_GfxReflectionProbe@@YAX_N@Z at 0x822aa020 void Assets::Load_GfxReflectionProbe(QDataStream *aStream) { Load_Stream(0, varGfxReflectionProbe, 0x10u); varGfxImagePtr = &varGfxReflectionProbe->reflectionImage; Load_GfxImagePtr(0); } // ?Load_PathData@@YAX_N@Z at 0x822aa0a0 void Assets::Load_PathData(QDataStream *aStream) { PathData *v1; // r31 unsigned int nodeCount; // r4 bool v3; // r3 size_t v4; // r5 unsigned __int8 *v5; // r4 size_t v6; // r5 unsigned __int8 *v7; // r4 size_t v8; // r5 unsigned __int8 *v9; // r4 unsigned __int8 *v10; // r4 size_t visBytes; // r5 int nodeTreeCount; // r4 Load_Stream(0, varPathData, 0x28u); v1 = varPathData; if ( varPathData->nodes ) { nodeCount = varPathData->nodeCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varpathnode_t = (pathnode_t *)g_streamPos; varPathData->nodes = (pathnode_t *)g_streamPos; Load_pathnode_tArray(1, nodeCount); v1 = varPathData; } DB_PushStreamPos(1u); if ( v1->basenodes ) { v4 = 16 * v1->nodeCount; v5 = (unsigned __int8 *)((unsigned int)(g_streamPos + 15) & 0xFFFFFFF0); g_streamPos = v5; varpathbasenode_t = (pathbasenode_t *)v5; v1->basenodes = (PathBaseNode *)v5; Load_Stream(v3, v5, v4); v1 = varPathData; } DB_PopStreamPos(); if ( v1->chainNodeForNode ) { v6 = 2 * v1->nodeCount; v7 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE); g_streamPos = v7; varUnsignedShort = (unsigned __int16 *)v7; v1->chainNodeForNode = (unsigned __int16 *)v7; Load_Stream(1, v7, v6); v1 = varPathData; } if ( v1->nodeForChainNode ) { v8 = 2 * v1->nodeCount; v9 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE); g_streamPos = v9; varUnsignedShort = (unsigned __int16 *)v9; v1->nodeForChainNode = (unsigned __int16 *)v9; Load_Stream(1, v9, v8); v1 = varPathData; } if ( v1->pathVis ) { v10 = g_streamPos; visBytes = v1->visBytes; varbyte = g_streamPos; v1->pathVis = g_streamPos; Load_Stream(1, v10, visBytes); v1 = varPathData; } if ( v1->nodeTree ) { nodeTreeCount = v1->nodeTreeCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varpathnode_tree_t = (pathnode_tree_t *)g_streamPos; v1->nodeTree = (pathnode_tree_t *)g_streamPos; Load_pathnode_tree_tArray(1, nodeTreeCount); } } // ?Load_PhysGeomInfoArray@@YAX_NH@Z at 0x822aa228 void Assets::Load_PhysGeomInfoArray(QDataStream *aStream, int count) { int v2; // r31 PhysGeomInfo *v3; // r30 BrushWrapper *brush; // r11 v2 = count; Load_Stream(1, varPhysGeomInfo, 68 * count); v3 = varPhysGeomInfo; if ( v2 > 0 ) { do { varPhysGeomInfo = v3; Load_Stream(0, v3, 0x44u); brush = varPhysGeomInfo->brush; if ( varPhysGeomInfo->brush ) { if ( brush == (BrushWrapper *)-1 ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varBrushWrapper = (BrushWrapper *)g_streamPos; varPhysGeomInfo->brush = (BrushWrapper *)g_streamPos; Load_BrushWrapper(1); } else { varPhysGeomInfo->brush = (BrushWrapper *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&brush[-1].planes + 3) >> 26) & 0x38)))[((unsigned int)&brush[-1].planes + 3) & 0x1FFFFFFF]; } } --v2; ++v3; } while ( v2 ); } } // ?Load_GfxLightmapArray@@YAX_N@Z at 0x822aa2e8 void Assets::Load_GfxLightmapArray(QDataStream *aStream) { Load_Stream(0, varGfxLightmapArray, 8u); varGfxImagePtr = &varGfxLightmapArray->primary; Load_GfxImagePtr(0); varGfxImagePtr = &varGfxLightmapArray->secondary; Load_GfxImagePtr(0); } // ?Load_GfxLightImage@@YAX_N@Z at 0x822aa350 void Assets::Load_GfxLightImage(QDataStream *aStream) { Load_Stream(0, varGfxLightImage, 8u); varGfxImagePtr = &varGfxLightImage->image; Load_GfxImagePtr(0); } // ?Load_MaterialVertexShaderPtrArray@@YAX_NH@Z at 0x822aa3a0 void Assets::Load_MaterialVertexShaderPtrArray(QDataStream *aStream, int count) { MaterialVertexShader **v2; // r31 int v3; // r29 bool v4; // r3 Load_Stream(0, varMaterialVertexShaderPtr, 0x3Cu); v2 = varMaterialVertexShaderPtr; v3 = 15; do { varMaterialVertexShaderPtr = v2; Load_Stream(0, v2, 4u); if ( *varMaterialVertexShaderPtr ) Load_MaterialVertexShaderPtr(v4); --v3; ++v2; } while ( v3 ); } // ?Load_water_t@@YAX_N@Z at 0x822aa408 void Assets::Load_water_t(QDataStream *aStream) { water_t *v1; // r11 int N; // r9 int M; // r8 unsigned __int8 *v4; // r4 int v5; // r9 int v6; // r8 unsigned __int8 *v7; // r4 int v8; // r9 int v9; // r8 unsigned __int8 *v10; // r4 Load_Stream(1, varwater_t, 0x48u); v1 = varwater_t; if ( varwater_t->H0X ) { N = varwater_t->N; M = varwater_t->M; v4 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v4; varwater_t->H0X = (float *)v4; varfloat = (float *)v4; Load_Stream(1, v4, 4 * N * M); v1 = varwater_t; } if ( v1->H0Y ) { v5 = v1->N; v6 = v1->M; v7 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v7; v1->H0Y = (float *)v7; varfloat = (float *)v7; Load_Stream(1, v7, 4 * v5 * v6); v1 = varwater_t; } if ( v1->wTerm ) { v8 = v1->N; v9 = v1->M; v10 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v10; v1->wTerm = (float *)v10; varfloat = (float *)v10; Load_Stream(1, v10, 4 * v8 * v9); v1 = varwater_t; } varGfxImagePtr = &v1->image; Load_GfxImagePtr(0); } // ?Load_XSurfaceArray@@YAX_NH@Z at 0x822aa510 void Assets::Load_XSurfaceArray(QDataStream *aStream, int count) { int v2; // r31 XSurface *v3; // r30 v2 = count; Load_Stream(1, varXSurface, 116 * count); v3 = varXSurface; if ( v2 > 0 ) { do { varXSurface = v3; Load_XSurface(0); --v2; ++v3; } while ( v2 ); } } // ?Load_SpeakerMap@@YAX_N@Z at 0x822aa568 void Assets::Load_SpeakerMap(QDataStream *aStream) { Load_Stream(1, varSpeakerMap, 0x28u); varXString = &varSpeakerMap->name; Load_XString(0); varSpeakerMapChannel = varSpeakerMap->channelMaps; Load_SpeakerMapChannelArray(0, 2); } // ?Load_SoundFileRef@@YAX_N@Z at 0x822aa5d8 void Assets::Load_SoundFileRef(QDataStream *aStream) { if ( varSoundFile->type == 1 ) { varLoadedSoundPtr = &varSoundFileRef->loadSnd; Load_LoadedSoundPtr(0); } else { varStreamedSound = (StreamedSound *)varSoundFileRef; Load_Stream(0, varSoundFileRef, 0xCu); varStreamFileName = &varStreamedSound->filename; Load_StreamFileName(0); } } // ?Load_XAnimDeltaPart@@YAX_N@Z at 0x822aa668 void Assets::Load_XAnimDeltaPart(QDataStream *aStream) { XAnimDeltaPart *v1; // r11 Load_Stream(1, varXAnimDeltaPart, 8u); v1 = varXAnimDeltaPart; if ( varXAnimDeltaPart->trans ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varXAnimPartTrans = (XAnimPartTrans *)g_streamPos; varXAnimDeltaPart->trans = (XAnimPartTrans *)g_streamPos; Load_XAnimPartTrans(1); v1 = varXAnimDeltaPart; } if ( v1->quat ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varXAnimDeltaPartQuat = (XAnimDeltaPartQuat *)g_streamPos; v1->quat = (XAnimDeltaPartQuat *)g_streamPos; Load_XAnimDeltaPartQuat(1); } } // ?Load_GfxReflectionProbeArray@@YAX_NH@Z at 0x822aa718 void Assets::Load_GfxReflectionProbeArray(QDataStream *aStream, int count) { int v2; // r30 GfxReflectionProbe *v3; // r31 v2 = count; Load_Stream(1, varGfxReflectionProbe, 16 * count); v3 = varGfxReflectionProbe; if ( v2 > 0 ) { do { varGfxReflectionProbe = v3; Load_Stream(0, v3, 0x10u); varGfxImagePtr = &varGfxReflectionProbe->reflectionImage; Load_GfxImagePtr(0); --v2; ++v3; } while ( v2 ); } } // ?Load_expressionEntry_ptrArray@@YAX_NH@Z at 0x822aa790 void Assets::Load_expressionEntry_ptrArray(QDataStream *aStream, int count) { expressionEntry **v3; // r28 int v4; // r26 unsigned __int8 *v5; // r4 int type; // r10 Load_Stream(1, varexpressionEntry_ptr, 4 * count); v3 = varexpressionEntry_ptr; if ( count > 0 ) { v4 = count; do { varexpressionEntry_ptr = v3; Load_Stream(0, v3, 4u); if ( *varexpressionEntry_ptr ) { v5 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v5; varexpressionEntry = (expressionEntry *)v5; *varexpressionEntry_ptr = (expressionEntry *)v5; Load_Stream(1, v5, 0xCu); type = varexpressionEntry->type; varentryInternalData = &varexpressionEntry->data; if ( type ) { varOperand = (Operand *)&varexpressionEntry->data; Load_Operand(0); } } --v4; ++v3; } while ( v4 ); } } // ?Load_GameWorldSp@@YAX_N@Z at 0x822aa858 void Assets::Load_GameWorldSp(QDataStream *aStream) { Load_Stream(1, varGameWorldSp, 0x2Cu); DB_PushStreamPos(4u); varXString = &varGameWorldSp->name; Load_XString(0); varPathData = &varGameWorldSp->path; Load_PathData(0); DB_PopStreamPos(); } // ?Load_PhysGeomList@@YAX_N@Z at 0x822aa8c8 void Assets::Load_PhysGeomList(QDataStream *aStream) { unsigned int count; // r4 unsigned __int8 *v2; // r11 Load_Stream(1, varPhysGeomList, 0x2Cu); if ( varPhysGeomList->geoms ) { count = varPhysGeomList->count; v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v2; varPhysGeomList->geoms = (PhysGeomInfo *)v2; varPhysGeomInfo = (PhysGeomInfo *)v2; Load_PhysGeomInfoArray(1, count); } } // ?Load_GfxLightmapArrayArray@@YAX_NH@Z at 0x822aa940 void Assets::Load_GfxLightmapArrayArray(QDataStream *aStream, int count) { int v2; // r29 GfxLightmapArray *v3; // r31 v2 = count; Load_Stream(1, varGfxLightmapArray, 8 * count); v3 = varGfxLightmapArray; if ( v2 > 0 ) { do { varGfxLightmapArray = v3; Load_Stream(0, v3, 8u); varGfxImagePtr = &varGfxLightmapArray->primary; Load_GfxImagePtr(0); varGfxImagePtr = &varGfxLightmapArray->secondary; Load_GfxImagePtr(0); --v2; ++v3; } while ( v2 ); } } // ?Load_GfxLightDef@@YAX_N@Z at 0x822aa9c8 void Assets::Load_GfxLightDef(QDataStream *aStream) { Load_Stream(1, varGfxLightDef, 0x10u); DB_PushStreamPos(4u); varXString = &varGfxLightDef->name; Load_XString(0); varGfxLightImage = &varGfxLightDef->attenuation; Load_Stream(0, &varGfxLightDef->attenuation, 8u); varGfxImagePtr = &varGfxLightImage->image; Load_GfxImagePtr(0); DB_PopStreamPos(); } // ?Load_MaterialTextureDefInfo@@YAX_N@Z at 0x822aaa50 void Assets::Load_MaterialTextureDefInfo(QDataStream *aStream) { GfxImage *image; // r11 unsigned __int8 *v2; // r11 if ( varMaterialTextureDef->semantic == 11 ) { image = varMaterialTextureDefInfo->image; if ( varMaterialTextureDefInfo->image ) { if ( image == (GfxImage *)-1 ) { v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v2; varMaterialTextureDefInfo->image = (GfxImage *)v2; varwater_t = (water_t *)v2; Load_water_t(1); } else { varMaterialTextureDefInfo->image = (GfxImage *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&image[-1].name + 3) >> 26) & 0x38)))[((unsigned int)&image[-1].name + 3) & 0x1FFFFFFF]; } } } else { varGfxImagePtr = &varMaterialTextureDefInfo->image; Load_GfxImagePtr(0); } } // ?Load_MaterialPass@@YAX_N@Z at 0x822aaae0 void Assets::Load_MaterialPass(QDataStream *aStream) { MaterialPass *v1; // r11 MaterialVertexDeclaration *vertexDecl; // r10 MaterialVertexDeclaration *v3; // r4 MaterialPass *v4; // r11 MaterialVertexShader *vertexShader; // r10 int v6; // r4 Load_Stream(0, varMaterialPass, 0x54u); v1 = varMaterialPass; vertexDecl = varMaterialPass->vertexDecl; if ( varMaterialPass->vertexDecl ) { if ( vertexDecl == (MaterialVertexDeclaration *)-1 ) { v3 = (MaterialVertexDeclaration *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = &v3->streamCount; varMaterialVertexDeclaration = v3; varMaterialPass->vertexDecl = v3; Load_Stream(1, v3, 0x40u); Load_BuildVertexDecl(&varMaterialPass->vertexDecl); v1 = varMaterialPass; } else { varMaterialPass->vertexDecl = (MaterialVertexDeclaration *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&vertexDecl[-1].routing.decl[14] + 3) >> 26) & 0x38)))[((unsigned int)&vertexDecl[-1].routing.decl[14] + 3) & 0x1FFFFFFF]; } } varMaterialVertexShaderPtr = v1->vertexShaderArray; Load_MaterialVertexShaderPtrArray(0, 15); v4 = varMaterialPass; vertexShader = varMaterialPass->vertexShader; if ( vertexShader ) { if ( vertexShader == (MaterialVertexShader *)-1 ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varMaterialVertexShader = (MaterialVertexShader *)g_streamPos; varMaterialPass->vertexShader = (MaterialVertexShader *)g_streamPos; Load_MaterialVertexShader(1); v4 = varMaterialPass; } else { varMaterialPass->vertexShader = (MaterialVertexShader *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&varMaterialPass->vertexShader[-1].prog.loadDef.physicalPartSize + 1) >> 26) & 0x38)))[((int)&varMaterialPass->vertexShader[-1].prog.loadDef.physicalPartSize + 1) & 0x1FFFFFFF]; } } varMaterialPixelShaderPtr = &v4->pixelShader; Load_MaterialPixelShaderPtr(0); if ( varMaterialPass->args ) { v6 = varMaterialPass->stableArgCount + varMaterialPass->perObjArgCount + varMaterialPass->perPrimArgCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varMaterialShaderArgument = (MaterialShaderArgument *)g_streamPos; varMaterialPass->args = (MaterialShaderArgument *)g_streamPos; Load_MaterialShaderArgumentArray(1, v6); } } // ?Load_SoundFile@@YAX_N@Z at 0x822aac58 void Assets::Load_SoundFile(QDataStream *aStream) { Load_Stream(1, varSoundFile, 0x10u); varSoundFileRef = &varSoundFile->u; Load_SoundFileRef(0); } // ?Load_XAnimParts@@YAX_N@Z at 0x822aaca8 void Assets::Load_XAnimParts(QDataStream *aStream) { XAnimParts *v1; // r11 int v2; // r4 int notifyCount; // r4 unsigned __int8 *v4; // r4 size_t dataByteCount; // r5 size_t v6; // r5 unsigned __int8 *v7; // r4 size_t v8; // r5 unsigned __int8 *v9; // r4 size_t v10; // r5 unsigned __int8 *v11; // r4 unsigned __int8 *v12; // r4 size_t randomDataByteCount; // r5 size_t v14; // r5 unsigned __int8 *v15; // r4 Load_Stream(1, varXAnimParts, 0x5Cu); // 92 DB_PushStreamPos(4u); varXString = &varXAnimParts->name; Load_XString(0); v1 = varXAnimParts; if ( varXAnimParts->names ) { v2 = varXAnimParts->boneCount[11]; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE); varScriptString = (unsigned __int16 *)g_streamPos; varXAnimParts->names = (unsigned __int16 *)g_streamPos; Load_ScriptStringArray(1, v2); v1 = varXAnimParts; } if ( v1->notify ) { notifyCount = v1->notifyCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varXAnimNotifyInfo = (XAnimNotifyInfo *)g_streamPos; v1->notify = (XAnimNotifyInfo *)g_streamPos; Load_XAnimNotifyInfoArray(1, notifyCount); v1 = varXAnimParts; } if ( v1->deltaPart ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varXAnimDeltaPart = (XAnimDeltaPart *)g_streamPos; v1->deltaPart = (XAnimDeltaPart *)g_streamPos; Load_XAnimDeltaPart(1); v1 = varXAnimParts; } if ( v1->dataByte ) { v4 = g_streamPos; dataByteCount = v1->dataByteCount; varbyte = g_streamPos; v1->dataByte = g_streamPos; Load_Stream(1, v4, dataByteCount); v1 = varXAnimParts; } if ( v1->dataShort ) { v6 = __ROL4__(v1->dataShortCount, 1); v7 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE); g_streamPos = v7; varshort = (__int16 *)v7; v1->dataShort = (__int16 *)v7; Load_Stream(1, v7, v6); v1 = varXAnimParts; } if ( v1->dataInt ) { v8 = __ROL4__(v1->dataIntCount, 2); v9 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v9; varint = (int *)v9; v1->dataInt = (int *)v9; Load_Stream(1, v9, v8); v1 = varXAnimParts; } if ( v1->randomDataShort ) { v10 = 2 * v1->randomDataShortCount; v11 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE); g_streamPos = v11; varshort = (__int16 *)v11; v1->randomDataShort = (__int16 *)v11; Load_Stream(1, v11, v10); v1 = varXAnimParts; } if ( v1->randomDataByte ) { v12 = g_streamPos; randomDataByteCount = v1->randomDataByteCount; varbyte = g_streamPos; v1->randomDataByte = g_streamPos; Load_Stream(1, v12, randomDataByteCount); v1 = varXAnimParts; } if ( v1->randomDataInt ) { v14 = __ROL4__(v1->randomDataIntCount, 2); v15 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v15; varint = (int *)v15; v1->randomDataInt = (int *)v15; Load_Stream(1, v15, v14); v1 = varXAnimParts; } varXAnimIndices = &v1->indices; Load_XAnimIndices(0); DB_PopStreamPos(); } // ?Load_statement@@YAX_N@Z at 0x822aaef8 void Assets::Load_statement(QDataStream *aStream) { int numEntries; // r4 unsigned __int8 *v2; // r11 Load_Stream(0, varstatement, 8u); if ( varstatement->entries ) { numEntries = varstatement->numEntries; v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v2; varstatement->entries = (expressionEntry **)v2; varexpressionEntry_ptr = (expressionEntry **)v2; Load_expressionEntry_ptrArray(1, numEntries); } } // ?Load_GameWorldSpPtr@@YAX_N@Z at 0x822aaf70 void Assets::Load_GameWorldSpPtr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 GameWorldSp **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varGameWorldSpPtr, 4u); DB_PushStreamPos(0); v1 = (int)*varGameWorldSpPtr; if ( *varGameWorldSpPtr ) { if ( v1 != -1 && v1 != -2 ) { *varGameWorldSpPtr = *(GameWorldSp **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varGameWorldSpPtr = (GameWorldSp *)v3; varGameWorldSp = (GameWorldSp *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_GameWorldSp(1); v5 = varGameWorldSpPtr; *v5 = (GameWorldSp *)DB_AddXAsset((XAssetHeader *)0xE, (XAssetHeader *)*varGameWorldSpPtr, v6); if ( inserted ) *inserted = *varGameWorldSpPtr; } DB_PopStreamPos(); } // ?Load_GfxLightDefPtr@@YAX_N@Z at 0x822ab058 void Assets::Load_GfxLightDefPtr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 GfxLightDef **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varGfxLightDefPtr, 4u); DB_PushStreamPos(0); v1 = (int)*varGfxLightDefPtr; if ( *varGfxLightDefPtr ) { if ( v1 != -1 && v1 != -2 ) { *varGfxLightDefPtr = *(GfxLightDef **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varGfxLightDefPtr = (GfxLightDef *)v3; varGfxLightDef = (GfxLightDef *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_GfxLightDef(1); v5 = varGfxLightDefPtr; *v5 = (GfxLightDef *)DB_AddXAsset((XAssetHeader *)0x12, (XAssetHeader *)*varGfxLightDefPtr, v6); if ( inserted ) *inserted = *varGfxLightDefPtr; } DB_PopStreamPos(); } // ?Load_MaterialTextureDef@@YAX_N@Z at 0x822ab140 void Assets::Load_MaterialTextureDef(QDataStream *aStream) { Load_Stream(0, varMaterialTextureDef, 0xCu); varMaterialTextureDefInfo = &varMaterialTextureDef->u; Load_MaterialTextureDefInfo(0); } // ?Load_MaterialPassArray@@YAX_NH@Z at 0x822ab190 void Assets::Load_MaterialPassArray(QDataStream *aStream, int count) { int v2; // r31 MaterialPass *v3; // r30 v2 = count; Load_Stream(1, varMaterialPass, 84 * count); v3 = varMaterialPass; if ( v2 > 0 ) { do { varMaterialPass = v3; Load_MaterialPass(0); --v2; ++v3; } while ( v2 ); } } // ?Load_snd_alias_t@@YAX_N@Z at 0x822ab1e8 void Assets::Load_snd_alias_t(QDataStream *aStream) { snd_alias_t *v1; // r11 SoundFile *soundFile; // r10 SpeakerMap *speakerMap; // r10 Load_Stream(0, varsnd_alias_t, 0x5Cu); varXString = &varsnd_alias_t->aliasName; Load_XString(0); varXString = &varsnd_alias_t->subtitle; Load_XString(0); varXString = &varsnd_alias_t->secondaryAliasName; Load_XString(0); varXString = &varsnd_alias_t->chainAliasName; Load_XString(0); v1 = varsnd_alias_t; soundFile = varsnd_alias_t->soundFile; if ( soundFile ) { if ( soundFile == (SoundFile *)-1 ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varSoundFile = (SoundFile *)g_streamPos; varsnd_alias_t->soundFile = (SoundFile *)g_streamPos; Load_SoundFile(1); v1 = varsnd_alias_t; } else { varsnd_alias_t->soundFile = (SoundFile *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&varsnd_alias_t->soundFile[-1].u.streamSnd.filename.info.packed.length + 3) >> 26) & 0x38)))[((int)&varsnd_alias_t->soundFile[-1].u.streamSnd.filename.info.packed.length + 3) & 0x1FFFFFFF]; } } varSndCurvePtr = &v1->volumeFalloffCurve; Load_SndCurvePtr(0); speakerMap = varsnd_alias_t->speakerMap; if ( speakerMap ) { if ( speakerMap == (SpeakerMap *)-1 ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varSpeakerMap = (SpeakerMap *)g_streamPos; varsnd_alias_t->speakerMap = (SpeakerMap *)g_streamPos; Load_SpeakerMap(1); } else { varsnd_alias_t->speakerMap = (SpeakerMap *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&varsnd_alias_t->speakerMap[-1].channelMaps[1][1].paEntries + 3) >> 26) & 0x38)))[((int)&varsnd_alias_t->speakerMap[-1].channelMaps[1][1].paEntries + 3) & 0x1FFFFFFF]; } } } // ?Load_XAnimPartsPtr@@YAX_N@Z at 0x822ab348 void Assets::Load_XAnimPartsPtr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 XAnimParts **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varXAnimPartsPtr, 4u); DB_PushStreamPos(0); v1 = (int)*varXAnimPartsPtr; if ( *varXAnimPartsPtr ) { if ( v1 != -1 && v1 != -2 ) { *varXAnimPartsPtr = *(XAnimParts **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varXAnimPartsPtr = (XAnimParts *)v3; varXAnimParts = (XAnimParts *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_XAnimParts(1); v5 = varXAnimPartsPtr; *v5 = (XAnimParts *)DB_AddXAsset((XAssetHeader *)2, (XAssetHeader *)*varXAnimPartsPtr, v6); if ( inserted ) *inserted = *varXAnimPartsPtr; } DB_PopStreamPos(); } // ?Load_GfxLight@@YAX_N@Z at 0x822ab430 void Assets::Load_GfxLight(QDataStream *aStream) { Load_Stream(1, varGfxLight, 0x40u); varGfxLightDefPtr = &varGfxLight->def; Load_GfxLightDefPtr(0); } // ?Load_MaterialTextureDefArray@@YAX_NH@Z at 0x822ab480 void Assets::Load_MaterialTextureDefArray(QDataStream *aStream, int count) { int v2; // r30 MaterialTextureDef *v3; // r31 v2 = count; Load_Stream(1, varMaterialTextureDef, 12 * count); v3 = varMaterialTextureDef; if ( v2 > 0 ) { do { varMaterialTextureDef = v3; Load_Stream(0, v3, 0xCu); varMaterialTextureDefInfo = &varMaterialTextureDef->u; Load_MaterialTextureDefInfo(0); --v2; ++v3; } while ( v2 ); } } // ?Load_MaterialTechnique@@YAX_N@Z at 0x822ab500 void Assets::Load_MaterialTechnique(QDataStream *aStream) { int passCount; // r4 Load_Stream(1, varMaterialTechnique, 8u); passCount = varMaterialTechnique->passCount; varMaterialPass = varMaterialTechnique->passArray; Load_MaterialPassArray(1, passCount); varXString = &varMaterialTechnique->name; Load_XString(0); } // ?Load_snd_alias_tArray@@YAX_NH@Z at 0x822ab568 void Assets::Load_snd_alias_tArray(QDataStream *aStream, int count) { int v2; // r31 snd_alias_t *v3; // r30 v2 = count; Load_Stream(1, varsnd_alias_t, 92 * count); v3 = varsnd_alias_t; if ( v2 > 0 ) { do { varsnd_alias_t = v3; Load_snd_alias_t(0); --v2; ++v3; } while ( v2 ); } } // ?Load_snd_alias_list_t@@YAX_N@Z at 0x822ab620 void Assets::Load_snd_alias_list_t(QDataStream *aStream) { snd_alias_t *head; // r10 int count; // r4 unsigned __int8 *v3; // r10 Load_Stream(1, varsnd_alias_list_t, 0xCu); DB_PushStreamPos(4u); varXString = &varsnd_alias_list_t->aliasName; Load_XString(0); head = varsnd_alias_list_t->head; if ( head ) { if ( head == (snd_alias_t *)-1 ) { count = varsnd_alias_list_t->count; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; varsnd_alias_list_t->head = (snd_alias_t *)v3; varsnd_alias_t = (snd_alias_t *)v3; Load_snd_alias_tArray(1, count); } else { varsnd_alias_list_t->head = (snd_alias_t *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&varsnd_alias_list_t->head[-1].speakerMap + 3) >> 26) & 0x38)))[((int)&varsnd_alias_list_t->head[-1].speakerMap + 3) & 0x1FFFFFFF]; } } DB_PopStreamPos(); } // ?Load_MaterialTechniquePtrArray@@YAX_NH@Z at 0x822ab6e8 void Assets::Load_MaterialTechniquePtrArray(QDataStream *aStream, int count) { MaterialTechnique **v2; // r31 int v3; // r26 int v4; // r11 Load_Stream(0, varMaterialTechniquePtr, 0x68u); v2 = varMaterialTechniquePtr; v3 = 26; do { varMaterialTechniquePtr = v2; Load_Stream(0, v2, 4u); v4 = (int)*varMaterialTechniquePtr; if ( *varMaterialTechniquePtr ) { if ( v4 == -1 ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varMaterialTechnique = (MaterialTechnique *)g_streamPos; *varMaterialTechniquePtr = (MaterialTechnique *)g_streamPos; Load_MaterialTechnique(1); } else { *varMaterialTechniquePtr = (MaterialTechnique *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v4 - 1) >> 26) & 0x38)))[(v4 - 1) & 0x1FFFFFFF]; } } --v3; ++v2; } while ( v3 ); } // ?Load_snd_alias_list_ptr@@YAX_N@Z at 0x822ab7a0 void Assets::Load_snd_alias_list_ptr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 SoundAliasList **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varsnd_alias_list_ptr, 4u); DB_PushStreamPos(0); v1 = (int)*varsnd_alias_list_ptr; if ( *varsnd_alias_list_ptr ) { if ( v1 != -1 && v1 != -2 ) { *varsnd_alias_list_ptr = *(snd_alias_list_t **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varsnd_alias_list_ptr = (snd_alias_list_t *)v3; varsnd_alias_list_t = (snd_alias_list_t *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_snd_alias_list_t(1); v5 = varsnd_alias_list_ptr; *v5 = (snd_alias_list_t *)DB_AddXAsset((XAssetHeader *)8, (XAssetHeader *)*varsnd_alias_list_ptr, v6); if ( inserted ) *inserted = *varsnd_alias_list_ptr; } DB_PopStreamPos(); } // ?Load_MaterialTechniqueSet@@YAX_N@Z at 0x822ab888 void Assets::Load_MaterialTechniqueSet(QDataStream *aStream) { Load_Stream(1, varMaterialTechniqueSet, 116); DB_PushStreamPos(4u); varXString = &varMaterialTechniqueSet->name; Load_XString(0); varMaterialTechniquePtr = varMaterialTechniqueSet->techniques; Load_MaterialTechniquePtrArray(0, 26); DB_PopStreamPos(); } // ?Load_MaterialTechniqueSetPtr@@YAX_N@Z at 0x822ab900 void Assets::Load_MaterialTechniqueSetPtr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 MaterialTechniqueSet **v5; // r31 XAssetHeader *v6; // r5 XAssetHeader *v7; // r3 Load_Stream(0, varMaterialTechniqueSetPtr, 4); DB_PushStreamPos(0); v1 = (int)*varMaterialTechniqueSetPtr; if ( *varMaterialTechniqueSetPtr ) { if ( v1 != -1 && v1 != -2 ) { *varMaterialTechniqueSetPtr = *(MaterialTechniqueSet **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varMaterialTechniqueSetPtr = (MaterialTechniqueSet *)v3; varMaterialTechniqueSet = (MaterialTechniqueSet *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_MaterialTechniqueSet(1); v5 = varMaterialTechniqueSetPtr; v7 = DB_AddXAsset((XAssetHeader *)6, (XAssetType)*varMaterialTechniqueSetPtr, v6); *v5 = (MaterialTechniqueSet *)v7; v7[2].xmodelPieces = (XModelPieces *)v7; if ( inserted ) *inserted = *varMaterialTechniqueSetPtr; } DB_PopStreamPos(); } // ?Load_Material@@YAX_N@Z at 0x822ab9f0 void Assets::Load_Material(QDataStream *aStream) { Material *v1; // r11 MaterialTextureDef *textureTable; // r10 int textureCount; // r4 MaterialConstantDef *constantTable; // r10 size_t v5; // r5 unsigned __int8 *v6; // r4 GfxStateBits *stateBitsTable; // r10 size_t v8; // r5 unsigned __int8 *v9; // r4 Load_Stream(1, varMaterial, 0x48u); DB_PushStreamPos(4u); varMaterialInfo = &varMaterial->info; Load_Stream(0, varMaterial, 0x18u); varXString = &varMaterialInfo->name; Load_XString(0); varMaterialTechniqueSetPtr = &varMaterial->techniqueSet; Load_MaterialTechniqueSetPtr(0); v1 = varMaterial; textureTable = varMaterial->textureTable; if ( textureTable ) { if ( textureTable == (MaterialTextureDef *)-1 ) { textureCount = varMaterial->textureCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varMaterialTextureDef = (MaterialTextureDef *)g_streamPos; varMaterial->textureTable = (MaterialTextureDef *)g_streamPos; Load_MaterialTextureDefArray(1, textureCount); v1 = varMaterial; } else { varMaterial->textureTable = (MaterialTextureDef *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&varMaterial->textureTable[-1].u.water + 3) >> 26) & 0x38)))[((int)&varMaterial->textureTable[-1].u.water + 3) & 0x1FFFFFFF]; } } constantTable = v1->constantTable; if ( constantTable ) { if ( constantTable == (MaterialConstantDef *)-1 ) { v5 = __ROL4__(v1->constantCount, 5); v6 = (unsigned __int8 *)((unsigned int)(g_streamPos + 15) & 0xFFFFFFF0); g_streamPos = v6; varMaterialConstantDef = (MaterialConstantDef *)v6; v1->constantTable = (MaterialConstantDef *)v6; Load_Stream(1, v6, v5); v1 = varMaterial; } else { v1->constantTable = (MaterialConstantDef *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&v1->constantTable[-1].literal[3] + 3) >> 26) & 0x38)))[((int)&v1->constantTable[-1].literal[3] + 3) & 0x1FFFFFFF]; } } stateBitsTable = v1->stateBitsTable; if ( stateBitsTable ) { if ( stateBitsTable == (GfxStateBits *)-1 ) { v8 = __ROL4__(v1->stateBitsCount, 3); v9 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v9; varGfxStateBits = (GfxStateBits *)v9; v1->stateBitsTable = (GfxStateBits *)v9; Load_Stream(1, v9, v8); DB_PopStreamPos(); return; } v1->stateBitsTable = (GfxStateBits *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&v1->stateBitsTable[-1].loadBits[1] + 3) >> 26) & 0x38)))[((int)&v1->stateBitsTable[-1].loadBits[1] + 3) & 0x1FFFFFFF]; } DB_PopStreamPos(); } // ?Load_MaterialHandle@@YAX_N@Z at 0x822abbb0 void Assets::Load_MaterialHandle(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 Material **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varMaterialHandle, 4u); DB_PushStreamPos(0); v1 = (int)*varMaterialHandle; if ( *varMaterialHandle ) { if ( v1 != -1 && v1 != -2 ) { *varMaterialHandle = *(Material **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varMaterialHandle = (Material *)v3; varMaterial = (Material *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_Material(1); v5 = varMaterialHandle; *v5 = (Material *)DB_AddXAsset((XAssetHeader *)4, (XAssetHeader *)*varMaterialHandle, v6); if ( inserted ) *inserted = *varMaterialHandle; } DB_PopStreamPos(); } // ?Load_Font@@YAX_N@Z at 0x822abc98 void Assets::Load_Font(QDataStream *aStream) { Glyph *glyphs; // r10 int glyphCount; // r10 Glyph *v3; // r4 Load_Stream(1, varFont, 0x18u); DB_PushStreamPos(4u); varXString = &varFont->fontName; Load_XString(0); varMaterialHandle = &varFont->material; Load_MaterialHandle(0); varMaterialHandle = &varFont->glowMaterial; Load_MaterialHandle(0); glyphs = varFont->glyphs; if ( glyphs ) { if ( glyphs == (Glyph *)-1 ) { glyphCount = varFont->glyphCount; v3 = (Glyph *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varFont->glyphs = v3; g_streamPos = (unsigned __int8 *)v3; varGlyph = v3; Load_Stream(1, v3, 24 * glyphCount); } else { varFont->glyphs = (Glyph *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&varFont->glyphs[-1].t1 + 3) >> 26) & 0x38)))[((int)&varFont->glyphs[-1].t1 + 3) & 0x1FFFFFFF]; } } DB_PopStreamPos(); } // ?Load_MaterialMemory@@YAX_N@Z at 0x822abda0 void Assets::Load_MaterialMemory(QDataStream *aStream) { Load_Stream(0, varMaterialMemory, 8u); varMaterialHandle = &varMaterialMemory->material; Load_MaterialHandle(0); } // ?Load_sunflare_t@@YAX_N@Z at 0x822abdf0 void Assets::Load_sunflare_t(QDataStream *aStream) { Load_Stream(0, varsunflare_t, 0x60u); varMaterialHandle = &varsunflare_t->spriteMaterial; Load_MaterialHandle(0); varMaterialHandle = &varsunflare_t->flareMaterial; Load_MaterialHandle(0); } // ?Load_windowDef_t@@YAX_N@Z at 0x822abe60 void Assets::Load_windowDef_t(QDataStream *aStream) { Load_Stream(0, varwindowDef_t, 0xA8u); varXString = &varwindowDef_t->name; Load_XString(0); varXString = &varwindowDef_t->group; Load_XString(0); varMaterialHandle = &varwindowDef_t->background; Load_MaterialHandle(0); } // ?Load_listBoxDef_t@@YAX_N@Z at 0x822abee0 void Assets::Load_listBoxDef_t(QDataStream *aStream) { Load_Stream(1, varlistBoxDef_t, 0x168u); varXString = &varlistBoxDef_t->doubleClick; Load_XString(0); varMaterialHandle = &varlistBoxDef_t->selectIcon; Load_MaterialHandle(0); } // ?Load_GfxSurface@@YAX_N@Z at 0x822abf48 void Assets::Load_GfxSurface(QDataStream *aStream) { Load_Stream(0, varGfxSurface, 0x48u); varMaterialHandle = &varGfxSurface->material; Load_MaterialHandle(0); } // ?Load_MaterialHandleArray@@YAX_NH@Z at 0x822abf98 void Assets::Load_MaterialHandleArray(QDataStream *aStream, int count) { int v2; // r30 Material **v3; // r31 v2 = count; Load_Stream(atStreamStart, varMaterialHandle, 4 * count); v3 = varMaterialHandle; if ( v2 > 0 ) { do { varMaterialHandle = v3; Load_MaterialHandle(0); --v2; ++v3; } while ( v2 ); } } // ?Load_FontHandle@@YAX_N@Z at 0x822abfe8 void Assets::Load_FontHandle(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 Font_s **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varFontHandle, 4u); DB_PushStreamPos(0); v1 = (int)*varFontHandle; if ( *varFontHandle ) { if ( v1 != -1 && v1 != -2 ) { *varFontHandle = *(Font_s **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varFontHandle = (Font_s *)v3; varFont = (Font_s *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_Font(1); v5 = varFontHandle; *v5 = (Font_s *)DB_AddXAsset((XAssetHeader *)0x14, (XAssetHeader *)*varFontHandle, v6); if ( inserted ) *inserted = *varFontHandle; } DB_PopStreamPos(); } // ?Load_MaterialMemoryArray@@YAX_NH@Z at 0x822ac0d0 void Assets::Load_MaterialMemoryArray(QDataStream *aStream, int count) { int v2; // r30 MaterialMemory *v3; // r31 v2 = count; Load_Stream(1, varMaterialMemory, 8 * count); v3 = varMaterialMemory; if ( v2 > 0 ) { do { varMaterialMemory = v3; Load_Stream(0, v3, 8u); varMaterialHandle = &varMaterialMemory->material; Load_MaterialHandle(0); --v2; ++v3; } while ( v2 ); } } // ?Load_Window@@YAX_N@Z at 0x822ac140 void Assets::Load_Window(QDataStream *aStream) { Load_Stream(0, varWindow, 0xA8u); varwindowDef_t = varWindow; Load_windowDef_t(0); } // ?Load_FxElemMarkVisuals@@YAX_N@Z at 0x822ac1c0 void Assets::Load_FxElemMarkVisuals(QDataStream *aStream) { Material **v1; // r30 int v2; // r31 Load_Stream(0, varFxElemMarkVisuals, 8u); varMaterialHandle = (Material **)varFxElemMarkVisuals; Load_Stream(0, varFxElemMarkVisuals, 8u); v1 = varMaterialHandle; v2 = 2; do { varMaterialHandle = v1; Load_MaterialHandle(0); --v2; ++v1; } while ( v2 ); } // ?Load_XModel@@YAX_N@Z at 0x822ac228 void Assets::Load_XModel(QDataStream *aStream) { XModel *v1; // r11 unsigned __int16 *boneNames; // r10 int numBones; // r4 unsigned __int8 *parentList; // r10 unsigned __int8 *v5; // r4 size_t v6; // r5 __int16 *quats; // r10 unsigned __int8 *v8; // r4 size_t v9; // r5 float *trans; // r10 unsigned __int8 *v11; // r4 size_t v12; // r5 unsigned __int8 *partClassification; // r10 unsigned __int8 *v14; // r4 size_t v15; // r5 DObjAnimMat *baseMat; // r10 size_t v17; // r5 unsigned __int8 *v18; // r4 int numsurfs; // r4 int v20; // r4 int numCollSurfs; // r4 int v22; // r10 unsigned __int8 *v23; // r4 XModelHighMipBounds *v24; // r4 PhysGeomList *physGeoms; // r10 Load_Stream(1, varXModel, 0xCCu); DB_PushStreamPos(4u); varXString = &varXModel->name; Load_XString(0); v1 = varXModel; boneNames = varXModel->boneNames; if ( boneNames ) { if ( boneNames == (unsigned __int16 *)-1 ) { numBones = varXModel->numBones; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE); varScriptString = (unsigned __int16 *)g_streamPos; varXModel->boneNames = (unsigned __int16 *)g_streamPos; Load_ScriptStringArray(1, numBones); v1 = varXModel; } else { varXModel->boneNames = (unsigned __int16 *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)varXModel->boneNames - 1) >> 26) & 0x38)))[((int)varXModel->boneNames - 1) & 0x1FFFFFFF]; } } parentList = v1->parentList; if ( parentList ) { if ( parentList == (unsigned __int8 *)-1 ) { v5 = g_streamPos; v6 = v1->numBones - v1->numRootBones; varbyte = g_streamPos; v1->parentList = g_streamPos; Load_Stream(1, v5, v6); v1 = varXModel; } else { v1->parentList = &(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1->parentList - 1) >> 26) & 0x38)))[(int)(v1->parentList - 1) & 0x1FFFFFFF]; } } quats = v1->quats; if ( quats ) { if ( quats == (__int16 *)-1 ) { v8 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE); v9 = 8 * (v1->numBones - v1->numRootBones); g_streamPos = v8; v1->quats = (__int16 *)v8; varshort = (__int16 *)v8; Load_Stream(1, v8, v9); v1 = varXModel; } else { v1->quats = (__int16 *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)v1->quats - 1) >> 26) & 0x38)))[((int)v1->quats - 1) & 0x1FFFFFFF]; } } trans = v1->trans; if ( trans ) { if ( trans == (float *)-1 ) { v11 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v12 = 16 * (v1->numBones - v1->numRootBones); g_streamPos = v11; v1->trans = (float *)v11; varfloat = (float *)v11; Load_Stream(1, v11, v12); v1 = varXModel; } else { v1->trans = (float *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)v1->trans - 1) >> 26) & 0x38)))[((int)v1->trans - 1) & 0x1FFFFFFF]; } } partClassification = v1->partClassification; if ( partClassification ) { if ( partClassification == (unsigned __int8 *)-1 ) { v14 = g_streamPos; v15 = v1->numBones; varbyte = g_streamPos; v1->partClassification = g_streamPos; Load_Stream(1, v14, v15); v1 = varXModel; } else { v1->partClassification = &(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1->partClassification - 1) >> 26) & 0x38)))[(int)(v1->partClassification - 1) & 0x1FFFFFFF]; } } baseMat = v1->baseMat; if ( baseMat ) { if ( baseMat == (DObjAnimMat *)-1 ) { v17 = __ROL4__(v1->numBones, 5); v18 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v18; varDObjAnimMat = (DObjAnimMat *)v18; v1->baseMat = (DObjAnimMat *)v18; Load_Stream(1, v18, v17); v1 = varXModel; } else { v1->baseMat = (DObjAnimMat *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&v1->baseMat[-1].transWeight + 3) >> 26) & 0x38)))[((int)&v1->baseMat[-1].transWeight + 3) & 0x1FFFFFFF]; } } if ( v1->surfs ) { numsurfs = v1->numsurfs; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varXSurface = (XSurface *)g_streamPos; v1->surfs = (XSurface *)g_streamPos; Load_XSurfaceArray(1, numsurfs); v1 = varXModel; } if ( v1->materialHandles ) { v20 = v1->numsurfs; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varMaterialHandle = (Material **)g_streamPos; v1->materialHandles = (Material **)g_streamPos; Load_MaterialHandleArray(1, v20); v1 = varXModel; } if ( v1->collSurfs ) { numCollSurfs = v1->numCollSurfs; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varXModelCollSurf = (XModelCollSurf_s *)g_streamPos; v1->collSurfs = (XModelCollSurf_s *)g_streamPos; Load_XModelCollSurfArray(1, numCollSurfs); v1 = varXModel; } if ( v1->boneInfo ) { v22 = v1->numBones; v23 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v1->boneInfo = (XBoneInfo *)v23; g_streamPos = v23; varXBoneInfo = (XBoneInfo *)v23; Load_Stream(1, v23, 8 * (v22 + __ROL4__(v22, 2))); v1 = varXModel; } varXModelStreamInfo = &v1->streamInfo; Load_Stream(0, &v1->streamInfo, 4u); if ( varXModelStreamInfo->highMipBounds ) { v24 = (XModelHighMipBounds *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varXModelStreamInfo->highMipBounds = v24; varXModelHighMipBounds = v24; g_streamPos = (unsigned __int8 *)v24; Load_Stream(1, v24, 8 * (varXModel->lodInfo[0].numsurfs + __ROL4__(varXModel->lodInfo[0].numsurfs, 1))); } varPhysPresetPtr = &varXModel->physPreset; Load_PhysPresetPtr(0); physGeoms = varXModel->physGeoms; if ( physGeoms ) { if ( physGeoms == (PhysGeomList *)-1 ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varPhysGeomList = (PhysGeomList *)g_streamPos; varXModel->physGeoms = (PhysGeomList *)g_streamPos; Load_PhysGeomList(1); DB_PopStreamPos(); return; } varXModel->physGeoms = (PhysGeomList *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&varXModel->physGeoms[-1].mass.productsOfInertia[2] + 3) >> 26) & 0x38)))[((int)&varXModel->physGeoms[-1].mass.productsOfInertia[2] + 3) & 0x1FFFFFFF]; } DB_PopStreamPos(); } // ?Load_GfxSurfaceArray@@YAX_NH@Z at 0x822ac6b0 void Assets::Load_GfxSurfaceArray(QDataStream *aStream, int count) { int v2; // r30 GfxSurface *v3; // r31 v2 = count; Load_Stream(1, varGfxSurface, 72 * count); v3 = varGfxSurface; if ( v2 > 0 ) { do { varGfxSurface = v3; Load_Stream(0, v3, 0x48u); varMaterialHandle = &varGfxSurface->material; Load_MaterialHandle(0); --v2; ++v3; } while ( v2 ); } } // ?Load_itemDefData_t@@YAX_N@Z at 0x822ac730 void Assets::Load_itemDefData_t(QDataStream *aStream) { int type; // r11 unsigned __int8 *v2; // r11 unsigned __int8 *v3; // r11 unsigned __int8 *v4; // r4 type = varitemDef_t->type; switch ( type ) { case 6: varlistBoxDef_ptr = &varitemDefData_t->listBox; Load_Stream(0, varitemDefData_t, 4u); if ( *varlistBoxDef_ptr ) { v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v2; *varlistBoxDef_ptr = (listBoxDef_s *)v2; varlistBoxDef_t = (listBoxDef_s *)v2; Load_listBoxDef_t(1); } break; case 4: case 9: case 16: case 18: case 11: case 14: case 10: case 0: case 17: vareditFieldDef_ptr = (editFieldDef_s **)varitemDefData_t; Load_Stream(0, varitemDefData_t, 4u); if ( *vareditFieldDef_ptr ) { v4 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v4; *vareditFieldDef_ptr = (editFieldDef_s *)v4; vareditFieldDef_t = (editFieldDef_s *)v4; Load_Stream(1, v4, 0x20u); } break; case 12: varmultiDef_ptr = (multiDef_s **)varitemDefData_t; Load_Stream(0, varitemDefData_t, 4u); if ( *varmultiDef_ptr ) { v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varmultiDef_ptr = (multiDef_s *)v3; varMultiDef = (multiDef_s *)v3; Load_MultiDef(1); } break; case 13: varXString = (const char **)varitemDefData_t; Load_XString(0); break; } } // ?Load_FxElemMarkVisualsArray@@YAX_NH@Z at 0x822ac918 void Assets::Load_FxElemMarkVisualsArray(QDataStream *aStream, int count) { int v2; // r31 FxElemMarkVisuals *v3; // r30 v2 = count; Load_Stream(1, varFxElemMarkVisuals, 8 * count); v3 = varFxElemMarkVisuals; if ( v2 > 0 ) { do { varFxElemMarkVisuals = v3; Load_FxElemMarkVisuals(0); --v2; ++v3; } while ( v2 ); } } // ?Load_XModelPtr@@YAX_N@Z at 0x822ac970 void Assets::Load_XModelPtr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 XModel **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varXModelPtr, 4u); DB_PushStreamPos(0); v1 = (int)*varXModelPtr; if ( *varXModelPtr ) { if ( v1 != -1 && v1 != -2 ) { *varXModelPtr = *(XModel **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varXModelPtr = (XModel *)v3; varXModel = (XModel *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_XModel(1); v5 = varXModelPtr; *v5 = (XModel *)DB_AddXAsset((XAssetHeader *)3, (XAssetHeader *)*varXModelPtr, v6); if ( inserted ) *inserted = *varXModelPtr; } DB_PopStreamPos(); } // ?Load_GfxStaticModelDrawInst@@YAX_N@Z at 0x822aca58 void Assets::Load_GfxStaticModelDrawInst(QDataStream *aStream) { Load_Stream(0, varGfxStaticModelDrawInst, 0x2Cu); varXModelPtr = &varGfxStaticModelDrawInst->model; Load_XModelPtr(0); } // ?Load_itemDef_t@@YAX_N@Z at 0x822acaa8 void Assets::Load_itemDef_t(QDataStream *aStream) { ItemDef *v1; // r11 unsigned __int8 *v2; // r10 Load_Stream(1, varitemDef_t, 0x1D4u); varWindow = &varitemDef_t->window; Load_Stream(0, varitemDef_t, 0xA8u); varwindowDef_t = varWindow; Load_windowDef_t(0); varXString = &varitemDef_t->text; Load_XString(0); varXString = &varitemDef_t->mouseEnterText; Load_XString(0); varXString = &varitemDef_t->mouseExitText; Load_XString(0); varXString = &varitemDef_t->mouseEnter; Load_XString(0); varXString = &varitemDef_t->mouseExit; Load_XString(0); varXString = &varitemDef_t->action; Load_XString(0); varXString = &varitemDef_t->onAccept; Load_XString(0); varXString = &varitemDef_t->onFocus; Load_XString(0); varXString = &varitemDef_t->leaveFocus; Load_XString(0); varXString = &varitemDef_t->dvar; Load_XString(0); varXString = &varitemDef_t->dvarTest; Load_XString(0); v1 = varitemDef_t; if ( varitemDef_t->onKey ) { v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v2; varitemDef_t->onKey = (ItemKeyHandler *)v2; varItemKeyHandler = (ItemKeyHandler *)v2; Load_ItemKeyHandler(1); v1 = varitemDef_t; } varXString = &v1->enableDvar; Load_XString(0); varsnd_alias_list_ptr = &varitemDef_t->focusSound; Load_snd_alias_list_ptr(0); varitemDefData_t = &varitemDef_t->typeData; Load_itemDefData_t(0); varstatement = &varitemDef_t->visibleExp; Load_statement(0); varstatement = &varitemDef_t->textExp; Load_statement(0); varstatement = &varitemDef_t->materialExp; Load_statement(0); varstatement = &varitemDef_t->rectXExp; Load_statement(0); varstatement = &varitemDef_t->rectYExp; Load_statement(0); varstatement = &varitemDef_t->rectWExp; Load_statement(0); varstatement = &varitemDef_t->rectHExp; Load_statement(0); varstatement = &varitemDef_t->forecolorAExp; Load_statement(0); } // ?Load_cStaticModel_t@@YAX_N@Z at 0x822acd18 void Assets::Load_cStaticModel_t(QDataStream *aStream) { Load_Stream(0, varcStaticModel_t, 0x50u); varXModelPtr = &varcStaticModel_t->xmodel; Load_XModelPtr(0); } // ?Load_FxElemVisuals@@YAX_N@Z at 0x822acd68 void Assets::Load_FxElemVisuals(QDataStream *aStream) { int elemType; // r11 elemType = varFxElemDef->elemType; switch ( elemType ) { case 5: varXModelPtr = (XModel **)varFxElemVisuals; Load_XModelPtr(0); break; case 10: varFxEffectDefRef = (FxEffectDefRef *)varFxElemVisuals; Load_FxEffectDefRef(0); break; case 8: varXString = (const char **)varFxElemVisuals; Load_XString(0); break; default: if ( elemType != 6 && elemType != 7 ) { varMaterialHandle = (Material **)varFxElemVisuals; Load_MaterialHandle(0); } break; } } // ?Load_XModelPiece@@YAX_N@Z at 0x822ace00 void Assets::Load_XModelPiece(QDataStream *aStream) { Load_Stream(0, varXModelPiece, 0x10u); varXModelPtr = &varXModelPiece->model; Load_XModelPtr(0); } // ?Load_XModelPtrArray@@YAX_NH@Z at 0x822ace50 void Assets::Load_XModelPtrArray(QDataStream *aStream, int count) { XModel **v2; // r30 int v3; // r31 Load_Stream(0, varXModelPtr, 0x40u); v2 = varXModelPtr; v3 = 16; do { varXModelPtr = v2; Load_XModelPtr(0); --v3; ++v2; } while ( v3 ); } // ?Load_GfxStaticModelDrawInstArray@@YAX_NH@Z at 0x822acea0 void Assets::Load_GfxStaticModelDrawInstArray(QDataStream *aStream, int count) { int v2; // r30 GfxStaticModelDrawInst *v3; // r31 v2 = count; Load_Stream(1, varGfxStaticModelDrawInst, 44 * count); v3 = varGfxStaticModelDrawInst; if ( v2 > 0 ) { do { varGfxStaticModelDrawInst = v3; Load_Stream(0, v3, 0x2Cu); varXModelPtr = &varGfxStaticModelDrawInst->model; Load_XModelPtr(0); --v2; ++v3; } while ( v2 ); } } // ?Load_cStaticModel_tArray@@YAX_NH@Z at 0x822acf48 void Assets::Load_cStaticModel_tArray(QDataStream *aStream, int count) { int v2; // r30 cStaticModel_s *v3; // r31 v2 = count; Load_Stream(1, varcStaticModel_t, 80 * count); v3 = varcStaticModel_t; if ( v2 > 0 ) { do { varcStaticModel_t = v3; Load_Stream(0, v3, 0x50u); varXModelPtr = &varcStaticModel_t->xmodel; Load_XModelPtr(0); --v2; ++v3; } while ( v2 ); } } // ?Load_FxElemVisualsArray@@YAX_NH@Z at 0x822acfc8 void Assets::Load_FxElemVisualsArray(QDataStream *aStream, int count) { int v2; // r31 FxElemVisuals *v3; // r30 v2 = count; Load_Stream(1, varFxElemVisuals, 4 * count); v3 = varFxElemVisuals; if ( v2 > 0 ) { do { varFxElemVisuals = v3; Load_FxElemVisuals(0); --v2; ++v3; } while ( v2 ); } } // ?Load_XModelPieceArray@@YAX_NH@Z at 0x822ad020 void Assets::Load_XModelPieceArray(QDataStream *aStream, int count) { int v2; // r30 XModelPiece *v3; // r31 v2 = count; Load_Stream(1, varXModelPiece, 16 * count); v3 = varXModelPiece; if ( v2 > 0 ) { do { varXModelPiece = v3; Load_Stream(0, v3, 0x10u); varXModelPtr = &varXModelPiece->model; Load_XModelPtr(0); --v2; ++v3; } while ( v2 ); } } // ?Load_GfxWorldDpvsStatic@@YAX_N@Z at 0x822ad090 void Assets::Load_GfxWorldDpvsStatic(QDataStream *aStream) { bool v1; // r3 GfxWorldDpvsStatic *v2; // r31 unsigned __int8 *v3; // r4 size_t smodelCount; // r5 bool v5; // r3 unsigned __int8 *v6; // r4 size_t v7; // r5 bool v8; // r3 unsigned __int8 *v9; // r4 size_t v10; // r5 bool v11; // r3 unsigned __int8 *v12; // r4 size_t staticSurfaceCount; // r5 bool v14; // r3 unsigned __int8 *v15; // r4 size_t v16; // r5 bool v17; // r3 unsigned __int8 *v18; // r4 size_t v19; // r5 bool v20; // r3 size_t v21; // r5 unsigned __int8 *v22; // r4 size_t v23; // r5 unsigned __int8 *v24; // r4 size_t v25; // r5 unsigned __int8 *v26; // r4 unsigned __int8 *v27; // r11 GfxCullGroup *v28; // r4 int v29; // r4 bool v30; // r3 size_t v31; // r5 unsigned __int8 *v32; // r4 bool v33; // r3 size_t v34; // r5 unsigned __int8 *v35; // r4 Load_Stream(0, varGfxWorldDpvsStatic, 0x64u); DB_PushStreamPos(1u); v2 = varGfxWorldDpvsStatic; if ( varGfxWorldDpvsStatic->smodelVisData[0] ) { v3 = g_streamPos; smodelCount = varGfxWorldDpvsStatic->smodelCount; varraw_byte = g_streamPos; varGfxWorldDpvsStatic->smodelVisData[0] = g_streamPos; Load_Stream(v1, v3, smodelCount); v2 = varGfxWorldDpvsStatic; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v2->smodelVisData[1] ) { v6 = g_streamPos; v7 = v2->smodelCount; varraw_byte = g_streamPos; v2->smodelVisData[1] = g_streamPos; Load_Stream(v5, v6, v7); v2 = varGfxWorldDpvsStatic; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v2->smodelVisData[2] ) { v9 = g_streamPos; v10 = v2->smodelCount; varraw_byte = g_streamPos; v2->smodelVisData[2] = g_streamPos; Load_Stream(v8, v9, v10); v2 = varGfxWorldDpvsStatic; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v2->surfaceVisData[0] ) { v12 = g_streamPos; staticSurfaceCount = v2->staticSurfaceCount; varraw_byte = g_streamPos; v2->surfaceVisData[0] = g_streamPos; Load_Stream(v11, v12, staticSurfaceCount); v2 = varGfxWorldDpvsStatic; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v2->surfaceVisData[1] ) { v15 = g_streamPos; v16 = v2->staticSurfaceCount; varraw_byte = g_streamPos; v2->surfaceVisData[1] = g_streamPos; Load_Stream(v14, v15, v16); v2 = varGfxWorldDpvsStatic; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v2->surfaceVisData[2] ) { v18 = g_streamPos; v19 = v2->staticSurfaceCount; varraw_byte = g_streamPos; v2->surfaceVisData[2] = g_streamPos; Load_Stream(v17, v18, v19); v2 = varGfxWorldDpvsStatic; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v2->lodData ) { v21 = 8 * v2->smodelVisDataCount; v22 = (unsigned __int8 *)((unsigned int)(g_streamPos + 127) & 0xFFFFFF80); g_streamPos = v22; varraw_uint128 = (unsigned int *)v22; v2->lodData = (unsigned int *)v22; Load_Stream(v20, v22, v21); v2 = varGfxWorldDpvsStatic; } DB_PopStreamPos(); if ( v2->sortedSurfIndex ) { v23 = 2 * v2->staticSurfaceCount; v24 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE); g_streamPos = v24; varushort = (unsigned __int16 *)v24; v2->sortedSurfIndex = (unsigned __int16 *)v24; Load_Stream(1, v24, v23); v2 = varGfxWorldDpvsStatic; } if ( v2->smodelInsts ) { v25 = 28 * v2->smodelCount; v26 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v26; v2->smodelInsts = (GfxStaticModelInst *)v26; varGfxStaticModelInst = (GfxStaticModelInst *)v26; Load_Stream(1, v26, v25); v2 = varGfxWorldDpvsStatic; } if ( v2->surfaces ) { v27 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v2->surfaces = (GfxSurface *)v27; g_streamPos = v27; varGfxSurface = (GfxSurface *)v27; Load_GfxSurfaceArray(1, varGfxWorld->surfaceCount); v2 = varGfxWorldDpvsStatic; } if ( v2->cullGroups ) { v28 = (GfxCullGroup *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v2->cullGroups = v28; varGfxCullGroup = v28; g_streamPos = (unsigned __int8 *)v28; Load_Stream(1, v28, 32 * varGfxWorld->cullGroupCount); v2 = varGfxWorldDpvsStatic; } if ( v2->smodelDrawInsts ) { v29 = v2->smodelCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varGfxStaticModelDrawInst = (GfxStaticModelDrawInst *)g_streamPos; v2->smodelDrawInsts = (GfxStaticModelDrawInst *)g_streamPos; Load_GfxStaticModelDrawInstArray(1, v29); v2 = varGfxWorldDpvsStatic; } DB_PushStreamPos(1u); if ( v2->surfaceMaterials ) { v31 = 8 * v2->staticSurfaceCount; v32 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v32; varGfxDrawSurfFields = (GfxDrawSurfFields *)v32; v2->surfaceMaterials = (GfxDrawSurfFields *)v32; Load_Stream(v30, v32, v31); v2 = varGfxWorldDpvsStatic; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v2->surfaceCastsSunShadow ) { v34 = 4 * v2->surfaceVisDataCount; v35 = (unsigned __int8 *)((unsigned int)(g_streamPos + 127) & 0xFFFFFF80); g_streamPos = v35; varraw_uint128 = (unsigned int *)v35; v2->surfaceCastsSunShadow = (unsigned int *)v35; Load_Stream(v33, v35, v34); } DB_PopStreamPos(); } // ?Load_itemDef_ptrArray@@YAX_NH@Z at 0x822ad3f0 void Assets::Load_itemDef_ptrArray(QDataStream *aStream, int count) { int v2; // r31 ItemDef **v3; // r29 v2 = count; Load_Stream(1, varitemDef_ptr, 4 * count); v3 = varitemDef_ptr; if ( v2 > 0 ) { do { varitemDef_ptr = v3; Load_Stream(0, v3, 4u); if ( *varitemDef_ptr ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varitemDef_t = (ItemDef *)g_streamPos; *varitemDef_ptr = (ItemDef *)g_streamPos; Load_itemDef_t(1); } --v2; ++v3; } while ( v2 ); } } // ?Load_FxElemDefVisuals@@YAX_N@Z at 0x822ad488 void Assets::Load_FxElemDefVisuals(QDataStream *aStream) { FxElemDef *v1; // r9 unsigned __int8 *v2; // r11 int visualCount; // r4 unsigned __int8 *v4; // r11 int v5; // r4 v1 = varFxElemDef; if ( varFxElemDef->elemType == 9 ) { if ( varFxElemDefVisuals->markArray ) { v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v2; varFxElemDefVisuals->markArray = (FxElemMarkVisuals *)v2; visualCount = v1->visualCount; varFxElemMarkVisuals = (FxElemMarkVisuals *)v2; Load_FxElemMarkVisualsArray(1, visualCount); } } else if ( varFxElemDef->visualCount > 1u ) { if ( varFxElemDefVisuals->markArray ) { v4 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v4; varFxElemDefVisuals->markArray = (FxElemMarkVisuals *)v4; v5 = v1->visualCount; varFxElemVisuals = (FxElemVisuals *)v4; Load_FxElemVisualsArray(1, v5); } } else { varFxElemVisuals = (FxElemVisuals *)varFxElemDefVisuals; Load_FxElemVisuals(0); } } // ?Load_XModelPieces@@YAX_N@Z at 0x822ad540 void Assets::Load_XModelPieces(QDataStream *aStream) { int numpieces; // r4 unsigned __int8 *v2; // r11 Load_Stream(1, varXModelPieces, 0xCu); varXString = &varXModelPieces->name; Load_XString(0); if ( varXModelPieces->pieces ) { numpieces = varXModelPieces->numpieces; v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v2; varXModelPieces->pieces = (XModelPiece *)v2; varXModelPiece = (XModelPiece *)v2; Load_XModelPieceArray(1, numpieces); } } // ?Load_GfxWorld@@YAX_N@Z at 0x822ad5c8 void Assets::Load_GfxWorld(QDataStream *aStream) { GfxWorld *v1; // r11 size_t v2; // r5 unsigned __int8 *v3; // r4 D3DIndexBuffer *p_indexBuffer; // r30 unsigned __int16 *indices; // r28 GfxWorld *v6; // r11 size_t v7; // r5 unsigned __int8 *v8; // r4 GfxWorld *v9; // r30 GfxLight *sunLight; // r11 int reflectionProbeCount; // r4 bool v12; // r3 size_t v13; // r5 unsigned __int8 *v14; // r4 GfxWorld *v15; // r11 int cellCount; // r4 int lightmapCount; // r4 bool v18; // r3 GfxWorld *v19; // r30 size_t v20; // r5 unsigned __int8 *v21; // r4 bool v22; // r3 size_t v23; // r5 unsigned __int8 *v24; // r4 size_t v25; // r5 unsigned __int8 *v26; // r4 int materialMemoryCount; // r4 bool v28; // r3 GfxWorld *v29; // r30 unsigned __int8 *v30; // r4 int v31; // r11 bool v32; // r3 unsigned int v33; // r11 unsigned __int8 *v34; // r4 bool v35; // r3 size_t v36; // r5 unsigned __int8 *v37; // r4 bool v38; // r3 unsigned __int8 *v39; // r4 size_t v40; // r5 bool v41; // r3 unsigned __int8 *v42; // r4 int v43; // r11 bool v44; // r3 unsigned __int8 *v45; // r4 int v46; // r11 bool v47; // r3 unsigned __int8 *v48; // r4 size_t v49; // r5 int primaryLightCount; // r4 int v51; // r4 Load_Stream(1, varGfxWorld, 0x33Cu); DB_PushStreamPos(4u); varXString = &varGfxWorld->name; Load_XString(0); varXString = &varGfxWorld->baseName; Load_XString(0); v1 = varGfxWorld; if ( varGfxWorld->indices ) { v2 = 2 * varGfxWorld->indexCount; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE); g_streamPos = v3; varr_index_t = (unsigned __int16 *)v3; varGfxWorld->indices = (unsigned __int16 *)v3; Load_Stream(1, v3, v2); v1 = varGfxWorld; } varGfxIndexBuffer = &v1->indexBuffer; Load_Stream(0, &v1->indexBuffer, 0x20u); p_indexBuffer = &varGfxWorld->indexBuffer; indices = varGfxWorld->indices; XGSetIndexBufferHeader(2 * varGfxWorld->indexCount, 0, D3DFMT_INDEX16, 0, 0, &varGfxWorld->indexBuffer); XGOffsetResourceAddress(p_indexBuffer, indices); varGfxWorldStreamInfo = &varGfxWorld->streamInfo; Load_GfxWorldStreamInfo(0); v6 = varGfxWorld; if ( varGfxWorld->skyStartSurfs ) { v7 = 4 * varGfxWorld->skySurfCount; v8 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v8; varint = (int *)v8; varGfxWorld->skyStartSurfs = (int *)v8; Load_Stream(1, v8, v7); v6 = varGfxWorld; } varGfxImagePtr = &v6->skyImage; Load_GfxImagePtr(0); v9 = varGfxWorld; sunLight = varGfxWorld->sunLight; if ( sunLight ) { if ( sunLight == (GfxLight *)-1 ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varGfxLight = (GfxLight *)g_streamPos; varGfxWorld->sunLight = (GfxLight *)g_streamPos; Load_GfxLight(1); v9 = varGfxWorld; } else { varGfxWorld->sunLight = (GfxLight *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + ((((unsigned int)&varGfxWorld->sunLight[-1].def + 3) >> 26) & 0x38)))[((int)&varGfxWorld->sunLight[-1].def + 3) & 0x1FFFFFFF]; } } if ( v9->reflectionProbes ) { reflectionProbeCount = v9->reflectionProbeCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varGfxReflectionProbe = (GfxReflectionProbe *)g_streamPos; v9->reflectionProbes = (GfxReflectionProbe *)g_streamPos; Load_GfxReflectionProbeArray(1, reflectionProbeCount); v9 = varGfxWorld; } DB_PushStreamPos(1u); if ( v9->reflectionProbeTextures ) { v13 = 4 * v9->reflectionProbeCount; v14 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v14; varGfxRawTexture = (GfxTexture *)v14; v9->reflectionProbeTextures = (GfxTexture *)v14; Load_Stream(v12, v14, v13); v9 = varGfxWorld; } DB_PopStreamPos(); varGfxWorldDpvsPlanes = &v9->dpvsPlanes; Load_GfxWorldDpvsPlanes(0); v15 = varGfxWorld; if ( varGfxWorld->cells ) { cellCount = varGfxWorld->dpvsPlanes.cellCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varGfxCell = (GfxCell *)g_streamPos; varGfxWorld->cells = (GfxCell *)g_streamPos; Load_GfxCellArray(1, cellCount); v15 = varGfxWorld; } if ( v15->lightmaps ) { lightmapCount = v15->lightmapCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varGfxLightmapArray = (GfxLightmapArray *)g_streamPos; v15->lightmaps = (GfxLightmapArray *)g_streamPos; Load_GfxLightmapArrayArray(1, lightmapCount); v15 = varGfxWorld; } varGfxLightGrid = &v15->lightGrid; Load_GfxLightGrid(0); DB_PushStreamPos(1u); v19 = varGfxWorld; if ( varGfxWorld->lightmapPrimaryTextures ) { v20 = 4 * varGfxWorld->lightmapCount; v21 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v21; varGfxRawTexture = (GfxTexture *)v21; varGfxWorld->lightmapPrimaryTextures = (GfxTexture *)v21; Load_Stream(v18, v21, v20); v19 = varGfxWorld; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v19->lightmapSecondaryTextures ) { v23 = 4 * v19->lightmapCount; v24 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v24; varGfxRawTexture = (GfxTexture *)v24; v19->lightmapSecondaryTextures = (GfxTexture *)v24; Load_Stream(v22, v24, v23); v19 = varGfxWorld; } DB_PopStreamPos(); if ( v19->models ) { v25 = 56 * v19->modelCount; v26 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v26; v19->models = (GfxBrushModel *)v26; varGfxBrushModel = (GfxBrushModel *)v26; Load_Stream(1, v26, v25); v19 = varGfxWorld; } if ( v19->materialMemory ) { materialMemoryCount = v19->materialMemoryCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varMaterialMemory = (MaterialMemory *)g_streamPos; v19->materialMemory = (MaterialMemory *)g_streamPos; Load_MaterialMemoryArray(1, materialMemoryCount); v19 = varGfxWorld; } varGfxWorldVertexData = &v19->vd; Load_GfxWorldVertexData(0); varGfxWorldVertexLayerData = &varGfxWorld->vld; Load_GfxWorldVertexLayerData(0); varsunflare_t = &varGfxWorld->sun; Load_sunflare_t(0); varGfxImagePtr = &varGfxWorld->outdoorImage; Load_GfxImagePtr(0); DB_PushStreamPos(1u); v29 = varGfxWorld; if ( varGfxWorld->cellCasterBits ) { v30 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v31 = ((varGfxWorld->dpvsPlanes.cellCount + 31) >> 5) * varGfxWorld->dpvsPlanes.cellCount; g_streamPos = v30; varraw_uint = (unsigned int *)v30; varGfxWorld->cellCasterBits = (unsigned int *)v30; Load_Stream(v28, v30, 4 * v31); v29 = varGfxWorld; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v29->sceneDynModel ) { v33 = v29->dpvsDyn.dynEntClientCount[0]; v34 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v34; varGfxSceneDynModel = (GfxSceneDynModel *)v34; v29->sceneDynModel = (GfxSceneDynModel *)v34; Load_Stream(v32, v34, 6 * v33); v29 = varGfxWorld; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v29->sceneDynBrush ) { v36 = 4 * v29->dpvsDyn.dynEntClientCount[1]; v37 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v37; varGfxSceneDynBrush = (GfxSceneDynBrush *)v37; v29->sceneDynBrush = (GfxSceneDynBrush *)v37; Load_Stream(v35, v37, v36); v29 = varGfxWorld; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v29->primaryLightEntityShadowVis ) { v39 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v40 = (v29->primaryLightCount - v29->sunPrimaryLightIndex - 1) << 14; g_streamPos = v39; varraw_uint = (unsigned int *)v39; v29->primaryLightEntityShadowVis = (unsigned int *)v39; Load_Stream(v38, v39, v40); v29 = varGfxWorld; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v29->primaryLightDynEntShadowVis[0] ) { v42 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v43 = (v29->primaryLightCount - v29->sunPrimaryLightIndex - 1) * v29->dpvsDyn.dynEntClientCount[0]; g_streamPos = v42; v29->primaryLightDynEntShadowVis[0] = (unsigned int *)v42; varraw_uint = (unsigned int *)v42; Load_Stream(v41, v42, 4 * v43); v29 = varGfxWorld; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v29->primaryLightDynEntShadowVis[1] ) { v45 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v46 = (v29->primaryLightCount - v29->sunPrimaryLightIndex - 1) * v29->dpvsDyn.dynEntClientCount[1]; g_streamPos = v45; v29->primaryLightDynEntShadowVis[1] = (unsigned int *)v45; varraw_uint = (unsigned int *)v45; Load_Stream(v44, v45, 4 * v46); v29 = varGfxWorld; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v29->nonSunPrimaryLightForModelDynEnt ) { v48 = g_streamPos; v49 = v29->dpvsDyn.dynEntClientCount[0]; varraw_byte = g_streamPos; v29->nonSunPrimaryLightForModelDynEnt = g_streamPos; Load_Stream(v47, v48, v49); v29 = varGfxWorld; } DB_PopStreamPos(); if ( v29->shadowGeom ) { primaryLightCount = v29->primaryLightCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varGfxShadowGeometry = (GfxShadowGeometry *)g_streamPos; v29->shadowGeom = (GfxShadowGeometry *)g_streamPos; Load_GfxShadowGeometryArray(1, primaryLightCount); v29 = varGfxWorld; } if ( v29->lightRegion ) { v51 = v29->primaryLightCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varGfxLightRegion = (GfxLightRegion *)g_streamPos; v29->lightRegion = (GfxLightRegion *)g_streamPos; Load_GfxLightRegionArray(1, v51); v29 = varGfxWorld; } varGfxWorldDpvsStatic = &v29->dpvs; Load_GfxWorldDpvsStatic(0); varGfxWorldDpvsDynamic = &varGfxWorld->dpvsDyn; Load_GfxWorldDpvsDynamic(0); DB_PopStreamPos(); } // ?Load_menuDef_t@@YAX_N@Z at 0x822adca0 void Assets::Load_menuDef_t(QDataStream *aStream) { menuDef_t *v1; // r11 int itemCount; // r4 Load_Stream(1, varmenuDef_t, 0x134u); DB_PushStreamPos(4u); varWindow = &varmenuDef_t->window; Load_Stream(0, varmenuDef_t, 0xA8u); varwindowDef_t = varWindow; Load_windowDef_t(0); varXString = &varmenuDef_t->font; Load_XString(0); varXString = &varmenuDef_t->onOpen; Load_XString(0); varXString = &varmenuDef_t->onClose; Load_XString(0); varXString = &varmenuDef_t->onESC; Load_XString(0); v1 = varmenuDef_t; if ( varmenuDef_t->onKey ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varItemKeyHandler = (ItemKeyHandler *)g_streamPos; varmenuDef_t->onKey = (ItemKeyHandler *)g_streamPos; Load_ItemKeyHandler(1); v1 = varmenuDef_t; } varstatement = &v1->visibleExp; Load_statement(0); varXString = &varmenuDef_t->allowedBinding; Load_XString(0); varXString = &varmenuDef_t->soundName; Load_XString(0); varstatement = &varmenuDef_t->rectXExp; Load_statement(0); varstatement = &varmenuDef_t->rectYExp; Load_statement(0); if ( varmenuDef_t->items ) { itemCount = varmenuDef_t->itemCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varitemDef_ptr = (ItemDef **)g_streamPos; varmenuDef_t->items = (ItemDef **)g_streamPos; Load_itemDef_ptrArray(1, itemCount); } DB_PopStreamPos(); } // ?Load_FxElemDef@@YAX_N@Z at 0x822ade30 void Assets::Load_FxElemDef(QDataStream *aStream) { FxElemDef *v1; // r11 int v2; // r10 FxElemVelStateSample *v3; // r4 int v4; // r10 FxElemVisStateSample *v5; // r4 Load_Stream(0, (void *)varFxElemDef, 0xFCu); v1 = varFxElemDef; if ( varFxElemDef->velSamples ) { v2 = varFxElemDef->velIntervalCount + 1; v3 = (FxElemVelStateSample *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varFxElemDef->velSamples = v3; g_streamPos = (unsigned __int8 *)v3; varFxElemVelStateSample = v3; Load_Stream(1, (void *)v3, 96 * v2); v1 = varFxElemDef; } if ( v1->visSamples ) { v4 = v1->visStateIntervalCount + 1; v5 = (FxElemVisStateSample *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v1->visSamples = v5; g_streamPos = (unsigned __int8 *)v5; varFxElemVisStateSample = v5; Load_Stream(1, (void *)v5, 48 * v4); v1 = varFxElemDef; } varFxElemDefVisuals = &v1->visuals; Load_FxElemDefVisuals(0); varFxEffectDefRef = &varFxElemDef->effectOnImpact; Load_FxEffectDefRef(0); varFxEffectDefRef = &varFxElemDef->effectOnDeath; Load_FxEffectDefRef(0); varFxEffectDefRef = &varFxElemDef->effectEmitted; Load_FxEffectDefRef(0); if ( varFxElemDef->trailDef ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varFxTrailDef = (FxTrailDef *)g_streamPos; varFxElemDef->trailDef = (FxTrailDef *)g_streamPos; Load_FxTrailDef(1); } } // ?Load_GfxWorldPtr@@YAX_N@Z at 0x822adfd8 void Assets::Load_GfxWorldPtr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r30 GfxWorld **v5; // r31 XAssetHeader *v6; // r5 Load_Stream(0, varGfxWorldPtr, 4u); DB_PushStreamPos(0); v1 = (int)*varGfxWorldPtr; if ( *varGfxWorldPtr ) { if ( v1 != -1 && v1 != -2 ) { *varGfxWorldPtr = *(GfxWorld **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); return; } v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varGfxWorldPtr = (GfxWorld *)v3; varGfxWorld = (GfxWorld *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_GfxWorld(1); v5 = varGfxWorldPtr; *v5 = (GfxWorld *)DB_AddXAsset((XAssetHeader *)0x11, (XAssetHeader *)*varGfxWorldPtr, v6); if ( inserted ) *inserted = *varGfxWorldPtr; } DB_PopStreamPos(); } // ?Load_menuDef_ptr@@YAX_N@Z at 0x822ae0c0 void Assets::Load_menuDef_ptr(QDataStream *aStream) { int v1; // r11 bool v2; // cr58 unsigned __int8 *v3; // r11 const void **inserted; // r31 XAssetHeader *v5; // r5 int v6; // r4 Load_Stream(0, varmenuDef_ptr, 4u); DB_PushStreamPos(0); v1 = (int)*varmenuDef_ptr; if ( *varmenuDef_ptr ) { if ( v1 == -1 || v1 == -2 ) { v2 = v1 == -2; v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v3; *varmenuDef_ptr = (menuDef_t *)v3; varmenuDef_t = (menuDef_t *)v3; if ( v2 ) inserted = DB_InsertPointer(); else inserted = 0; Load_menuDef_t(1); Load_MenuAsset(varmenuDef_ptr, v6, v5); if ( inserted ) *inserted = *varmenuDef_ptr; } else { *varmenuDef_ptr = *(menuDef_t **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; } } DB_PopStreamPos(); } // ?Load_FxElemDefArray@@YAX_NH@Z at 0x822ae1b0 void Assets::Load_FxElemDefArray(QDataStream *aStream, int count) { int v2; // r31 FxElemDef *v3; // r30 v2 = count; Load_Stream(1, (void *)varFxElemDef, 252 * count); v3 = varFxElemDef; if ( v2 > 0 ) { do { varFxElemDef = v3; Load_FxElemDef(0); --v2; ++v3; } while ( v2 ); } } // ?Load_menuDef_ptrArray@@YAX_NH@Z at 0x822ae208 QVector Assets::Load_menuDef_ptrArray(QDataStream *aStream, int count) { QVector result; QVector menuDefPtr; for (int i = 0; i < count; i++) { menuDef_t menuDef; *aStream >> menuDef. result << menuDef; } v2 = count; Load_Stream(1, varmenuDef_ptr, 4 * count); v3 = varmenuDef_ptr; if ( v2 > 0 ) { do { varmenuDef_ptr = v3; Load_menuDef_ptr(0); --v2; ++v3; } while ( v2 ); } return result; } // ?Load_FxEffectDef@@YAX_N@Z at 0x822ae260 FxEffectDef Assets::Load_FxEffectDef(QDataStream *aStream) { FxEffectDef result; *aStream >> result.namePtr >> result.flags >> result.totalSize >> result.msecLoopingLife >> result.elemDefCountLooping >> result.elemDefCountOneShot >> result.elemDefCountEmission >> result.elemDefsPtr; if (result.namePtr) { result.name = Load_XStringCustom(aStream); } if (result.elemDefsPtr) { result.elemDefs = Load_FxElemDefArray(aStream, result.elemDefCountEmission + result.elemDefCountOneShot + result.elemDefCountLooping); } return result; } // ?Load_FxEffectDefHandle@@YAX_N@Z at 0x822ae308 FxEffectDef Assets::Load_FxEffectDefHandle(QDataStream *aStream) { FxEffectDef result; qint32 fxEffectDefPtr; *aStream >> fxEffectDefPtr; if (fxEffectDefPtr) { if (fxEffectDefPtr == -1 || fxEffectDefPtr == -2) { result = Load_FxEffectDef(aStream); } else { *varFxEffectDefHandle = *(const FxEffectDef **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; DB_PopStreamPos(); } } return result } // ?Load_WeaponDef@@YAX_N@Z at 0x822ae3f0 WeaponDef Assets::Load_WeaponDef(QDataStream *aStream) { WeaponDef result; *aStream >> result.szInternalNamePtr >> result.szDisplayNamePtr >> result.szOverlayNamePtr >> result.gunXModelPtr >> result.handXModelPtr; for (int i = 0; i < 33; i++) { *aStream >> result.szXAnimsPtr[i]; } *aStream >> result.szModeNamePtr >> result.hideTags[8]; for (int i = 0; i < 8; i++) { *aStream >> result.hideTags[i]; } for (int i = 0; i < 16; i++) { *aStream >> result.notetrackSoundMapKeys[i]; } for (int i = 0; i < 16; i++) { *aStream >> result.notetrackSoundMapValues[i]; } *aStream >> result.playerAnimType >> result.weapType >> result.weapClass >> result.penetrateType >> result.impactType >> result.inventoryType >> result.fireType >> result.offhandClass >> result.stance >> result.viewFlashEffectPtr >> result.worldFlashEffectPtr >> result.pickupSoundPtr >> result.pickupSoundPlayerPtr >> result.ammoPickupSoundPtr >> result.ammoPickupSoundPlayerPtr >> result.projectileSoundPtr >> result.pullbackSoundPtr >> result.pullbackSoundPlayerPtr >> result.fireSoundPtr >> result.fireSoundPlayerPtr >> result.fireLoopSoundPtr >> result.fireLoopSoundPlayerPtr >> result.fireStopSoundPtr >> result.fireStopSoundPlayerPtr >> result.fireLastSoundPtr >> result.fireLastSoundPlayerPtr >> result.emptyFireSoundPtr >> result.emptyFireSoundPlayerPtr >> result.meleeSwipeSoundPtr >> result.meleeSwipeSoundPlayerPtr >> result.meleeHitSoundPtr >> result.meleeMissSoundPtr >> result.rechamberSoundPtr >> result.rechamberSoundPlayerPtr >> result.reloadSoundPtr >> result.reloadSoundPlayerPtr >> result.reloadEmptySoundPtr >> result.reloadEmptySoundPlayerPtr >> result.reloadStartSoundPtr >> result.reloadStartSoundPlayerPtr >> result.reloadEndSoundPtr >> result.reloadEndSoundPlayerPtr >> result.detonateSoundPtr >> result.detonateSoundPlayerPtr >> result.nightVisionWearSoundPtr >> result.nightVisionWearSoundPlayerPtr >> result.nightVisionRemoveSoundPtr >> result.nightVisionRemoveSoundPlayerPtr >> result.altSwitchSoundPtr >> result.altSwitchSoundPlayerPtr >> result.raiseSoundPtr >> result.raiseSoundPlayerPtr >> result.firstRaiseSoundPtr >> result.firstRaiseSoundPlayerPtr >> result.putawaySoundPtr >> result.putawaySoundPlayerPtr >> result.bounceSoundPtr >> result.viewShellEjectEffectPtr >> result.worldShellEjectEffectPtr >> result.viewLastShotEjectEffectPtr >> result.worldLastShotEjectEffectPtr >> result.reticleCenterPtr >> result.reticleSidePtr >> result.iReticleCenterSize >> result.iReticleSideSize >> result.iReticleMinOfs >> result.activeReticleType >> result.vStandMove[0] >> result.vStandMove[1] >> result.vStandMove[2] >> result.vStandRot[0] >> result.vStandRot[1] >> result.vStandRot[2] >> result.vDuckedOfs[0] >> result.vDuckedOfs[1] >> result.vDuckedOfs[2] >> result.vDuckedMove[0] >> result.vDuckedMove[1] >> result.vDuckedMove[2] >> result.vDuckedRot[0] >> result.vDuckedRot[1] >> result.vDuckedRot[2] >> result.vProneOfs[0] >> result.vProneOfs[1] >> result.vProneOfs[2] >> result.vProneMove[0] >> result.vProneMove[1] >> result.vProneMove[2] >> result.vProneRot[0] >> result.vProneRot[1] >> result.vProneRot[2] >> result.fPosMoveRate >> result.fPosProneMoveRate >> result.fStandMoveMinSpeed >> result.fDuckedMoveMinSpeed >> result.fProneMoveMinSpeed >> result.fPosRotRate >> result.fPosProneRotRate >> result.fStandRotMinSpeed >> result.fDuckedRotMinSpeed >> result.fProneRotMinSpeed >> result.worldModelPtr >> result.worldClipModelPtr >> result.rocketModelPtr >> result.knifeModelPtr >> result.worldKnifeModelPtr >> result.hudIconPtr >> result.hudIconRatio >> result.ammoCounterIconPtr >> result.ammoCounterIconRatio >> result.iStartAmmo >> result.szAmmoNamePtr >> result.iAmmoIndex >> result.szClipNamePtr >> result.iClipIndex >> result.iMaxAmmo >> result.iClipSize >> result.shotCount >> result.szSharedAmmoCapNamePtr >> result.iSharedAmmoCapIndex >> result.iSharedAmmoCap >> result.damage >> result.playerDamage >> result.iMeleeDamage >> result.iDamageType >> result.iFireDelay >> result.iMeleeDelay >> result.meleeChargeDelay >> result.iDetonateDelay >> result.iFireTime >> result.iRechamberTime >> result.iRechamberBoltTime >> result.iHoldFireTime >> result.iDetonateTime >> result.iMeleeTime >> result.meleeChargeTime >> result.iReloadTime >> result.reloadShowRocketTime >> result.iReloadEmptyTime >> result.iReloadAddTime >> result.iReloadStartTime >> result.iReloadStartAddTime >> result.iReloadEndTime >> result.iDropTime >> result.iRaiseTime >> result.iAltDropTime >> result.iAltRaiseTime >> result.quickDropTime >> result.quickRaiseTime >> result.iFirstRaiseTime >> result.iEmptyRaiseTime >> result.iEmptyDropTime >> result.sprintInTime >> result.sprintLoopTime >> result.sprintOutTime >> result.nightVisionWearTime >> result.nightVisionWearTimeFadeOutEnd >> result.nightVisionWearTimePowerUp >> result.nightVisionRemoveTime >> result.nightVisionRemoveTimePowerDown >> result.nightVisionRemoveTimeFadeInStart >> result.fuseTime >> result.aiFuseTime >> result.requireLockonToFire >> result.noAdsWhenMagEmpty >> result.avoidDropCleanup >> result.autoAimRange >> result.aimAssistRange >> result.aimAssistRangeAds >> result.aimPadding >> result.enemyCrosshairRange >> result.crosshairColorChange >> result.moveSpeedScale >> result.adsMoveSpeedScale >> result.sprintDurationScale >> result.fAdsZoomFov >> result.fAdsZoomInFrac >> result.fAdsZoomOutFrac >> result.overlayMaterialPtr >> result.overlayMaterialLowResPtr >> result.overlayReticle >> result.overlayInterface >> result.overlayWidth >> result.overlayHeight >> result.fAdsBobFactor >> result.fAdsViewBobMult >> result.fHipSpreadStandMin >> result.fHipSpreadDuckedMin >> result.fHipSpreadProneMin >> result.hipSpreadStandMax >> result.hipSpreadDuckedMax >> result.hipSpreadProneMax >> result.fHipSpreadDecayRate >> result.fHipSpreadFireAdd >> result.fHipSpreadTurnAdd >> result.fHipSpreadMoveAdd >> result.fHipSpreadDuckedDecay >> result.fHipSpreadProneDecay >> result.fHipReticleSidePos >> result.iAdsTransInTime >> result.iAdsTransOutTime >> result.fAdsIdleAmount >> result.fHipIdleAmount >> result.adsIdleSpeed >> result.hipIdleSpeed >> result.fIdleCrouchFactor >> result.fIdleProneFactor >> result.fGunMaxPitch >> result.fGunMaxYaw >> result.swayMaxAngle >> result.swayLerpSpeed >> result.swayPitchScale >> result.swayYawScale >> result.swayHorizScale >> result.swayVertScale >> result.swayShellShockScale >> result.adsSwayMaxAngle >> result.adsSwayLerpSpeed >> result.adsSwayPitchScale >> result.adsSwayYawScale >> result.adsSwayHorizScale >> result.adsSwayVertScale >> result.bRifleBullet >> result.armorPiercing >> result.bBoltAction >> result.aimDownSight >> result.bRechamberWhileAds >> result.adsViewErrorMin >> result.adsViewErrorMax >> result.bCookOffHold >> result.bClipOnly >> result.adsFireOnly >> result.cancelAutoHolsterWhenEmpty >> result.suppressAmmoReserveDisplay >> result.enhanced >> result.laserSightDuringNightvision >> result.killIconPtr >> result.killIconRatio >> result.flipKillIcon >> result.dpadIconPtr >> result.dpadIconRatio >> result.bNoPartialReload >> result.bSegmentedReload >> result.iReloadAmmoAdd >> result.iReloadStartAdd >> result.szAltWeaponNamePtr >> result.dpadIconRatio >> result.dpadIconRatio >> result.dpadIconRatio >> result.altWeaponIndex >> result.iDropAmmoMin >> result.iDropAmmoMax >> result.blocksProne >> result.silenced >> result.iExplosionRadius >> result.iExplosionRadiusMin >> result.iExplosionInnerDamage >> result.iExplosionOuterDamage >> result.damageConeAngle >> result.iProjectileSpeed >> result.iProjectileSpeedUp >> result.iProjectileSpeedForward >> result.iProjectileActivateDist >> result.projLifetime >> result.timeToAccelerate >> result.projectileCurvature >> result.projectileModelPtr >> result.projExplosion >> result.projExplosionEffectPtr >> result.projExplosionEffectForceNormalUp >> result.projDudEffectPtr >> result.projExplosionSoundPtr >> result.projDudSoundPtr >> result.bProjImpactExplode >> result.stickiness >> result.bProjImpactExplode >> result.hasDetonator >> result.bProjImpactExplode >> result.timedDetonation >> result.rotate >> result.holdButtonToThrow >> result.freezeMovementWhenFiring >> result.lowAmmoWarningThreshold >> result.bProjImpactExplode; for (int i = 0; i < 29; i++) { *aStream >> result.parallelBounce[i]; } for (int i = 0; i < 29; i++) { *aStream >> result.perpendicularBounce[i]; } *aStream >> result.projTrailEffectPtr >> result.vProjectileColor[0] >> result.vProjectileColor[1] >> result.vProjectileColor[2] >> result.guidedMissileType >> result.maxSteeringAccel >> result.projIgnitionDelay >> result.projIgnitionEffect >> result.projIgnitionSoundPtr >> result.fAdsAimPitch >> result.fAdsCrosshairInFrac >> result.fAdsCrosshairOutFrac >> result.adsGunKickReducedKickBullets >> result.adsGunKickReducedKickPercent >> result.fAdsGunKickPitchMin >> result.fAdsGunKickPitchMax >> result.fAdsGunKickYawMin >> result.fAdsGunKickYawMax >> result.fAdsGunKickAccel >> result.fAdsGunKickSpeedMax >> result.fAdsGunKickSpeedDecay >> result.fAdsGunKickStaticDecay >> result.fAdsViewKickPitchMin >> result.fAdsViewKickPitchMax >> result.fAdsViewKickYawMin >> result.fAdsViewKickYawMax >> result.fAdsViewKickCenterSpeed >> result.fAdsViewScatterMin >> result.fAdsViewScatterMax >> result.fAdsSpread >> result.hipGunKickReducedKickBullets >> result.hipGunKickReducedKickPercent >> result.fHipGunKickPitchMin >> result.fHipGunKickPitchMax >> result.fHipGunKickYawMin >> result.fHipGunKickYawMax >> result.fHipGunKickAccel >> result.fHipGunKickSpeedMax >> result.fHipGunKickSpeedDecay >> result.fHipGunKickStaticDecay >> result.fHipViewKickPitchMin >> result.fHipViewKickPitchMax >> result.fHipViewKickYawMin >> result.fHipViewKickYawMax >> result.fHipViewKickCenterSpeed >> result.fHipViewScatterMin >> result.fHipViewScatterMax >> result.fightDist >> result.maxDist >> result.accuracyGraphNamePtr[0] >> result.accuracyGraphNamePtr[1] >> result.accuracyGraphKnotsPtr[0] >> result.accuracyGraphKnotsPtr[1] >> result.originalAccuracyGraphKnotsPtr[0] >> result.originalAccuracyGraphKnotsPtr[1] >> result.accuracyGraphKnotCount[0] >> result.accuracyGraphKnotCount[1] >> result.originalAccuracyGraphKnotCount[0] >> result.originalAccuracyGraphKnotCount[1] >> result.iPositionReloadTransTime >> result.leftArc >> result.rightArc >> result.topArc >> result.bottomArc >> result.accuracy >> result.aiSpread >> result.playerSpread >> result.minTurnSpeed[0] >> result.minTurnSpeed[1] >> result.maxTurnSpeed[0] >> result.maxTurnSpeed[1] >> result.pitchConvergenceTime >> result.yawConvergenceTime >> result.suppressTime >> result.maxRange >> result.fAnimHorRotateInc >> result.fPlayerPositionDist >> result.szUseHintStringPtr >> result.dropHintStringPtr >> result.iUseHintStringIndex >> result.dropHintStringIndex >> result.horizViewJitter >> result.vertViewJitter >> result.szScriptPtr >> result.fOOPosAnimLength[0] >> result.fOOPosAnimLength[1] >> result.minDamage >> result.minPlayerDamage >> result.fMaxDamageRange >> result.fMinDamageRange >> result.destabilizationRateTime >> result.destabilizationCurvatureMax >> result.destabilizeDistance; for (int i = 0; i < 29; i++) { *aStream >> result.locationDamageMultipliers[i]; } *aStream >> result.fireRumblePtr >> result.meleeImpactRumblePtr >> result.adsDofStart >> result.adsDofEnd; if (result.szInternalNamePtr == -1) { result.szInternalName = Load_XStringCustom(aStream); } if (result.szDisplayNamePtr == -1) { result.szDisplayName = Load_XStringCustom(aStream); } if (result.szOverlayNamePtr == -1) { result.szOverlayName = Load_XStringCustom(aStream); } if (result.gunXModelPtr) { result.gunXModel = Load_XModelPtrArray(aStream, 16); } if (result.handXModelPtr) { result.handXModel = Load_XModelPtr(aStream); } for (int i = 0; i < 33; i++) { if (result.szXAnimsPtr[i]) { result.szXAnims[i] = Load_XStringCustom(aStream); } } if (result.szModeNamePtr) { result.szModeName = Load_XStringCustom(aStream); } if (result.hideTagsPtr) { result.hideTags = Load_ScriptStringArray(aStream, 8); } if (result.notetrackSoundMapKeysPtr) { result.notetrackSoundMapKeys = Load_ScriptStringArray(aStream, 16); } if (result.notetrackSoundMapValuesPtr) { result.notetrackSoundMapValues = Load_ScriptStringArray(aStream, 16); } if (result.viewFlashEffectPtr) { result.viewFlashEffect = Load_FxEffectDefHandle(aStream); } if (result.worldFlashEffectPtr) { result.worldFlashEffect = Load_FxEffectDefHandle(aStream); } if (result.pickupSoundPtr) { result.pickupSound = Load_SndAliasCustom(aStream); } if (result.pickupSoundPlayerPtr) { result.pickupSoundPlayer = Load_SndAliasCustom(aStream); } if (result.ammoPickupSoundPtr) { result.ammoPickupSound = Load_SndAliasCustom(aStream); } if (result.ammoPickupSoundPlayerPtr) { result.ammoPickupSoundPlayer = Load_SndAliasCustom(aStream); } if (result.projectileSoundPtr) { result.projectileSound = Load_SndAliasCustom(aStream); } if (result.pullbackSoundPtr) { result.pullbackSound = Load_SndAliasCustom(aStream); } if (result.pullbackSoundPlayerPtr) { result.pullbackSoundPlayer = Load_SndAliasCustom(aStream); } if (result.fireSoundPtr) { result.fireSound = Load_SndAliasCustom(aStream); } if (result.fireSoundPlayerPtr) { result.fireSoundPlayer = Load_SndAliasCustom(aStream); } if (result.fireLoopSoundPtr) { result.fireLoopSound = Load_SndAliasCustom(aStream); } if (result.fireLoopSoundPlayerPtr) { result.fireLoopSoundPlayer = Load_SndAliasCustom(aStream); } if (result.fireStopSoundPtr) { result.fireStopSound = Load_SndAliasCustom(aStream); } if (result.fireStopSoundPlayerPtr) { result.fireStopSoundPlayer = Load_SndAliasCustom(aStream); } if (result.fireLastSoundPtr) { result.fireLastSound = Load_SndAliasCustom(aStream); } if (result.fireLastSoundPlayerPtr) { result.fireLastSoundPlayer = Load_SndAliasCustom(aStream); } if (result.emptyFireSoundPtr) { result.emptyFireSound = Load_SndAliasCustom(aStream); } if (result.emptyFireSoundPlayerPtr) { result.emptyFireSoundPlayer = Load_SndAliasCustom(aStream); } if (result.meleeSwipeSoundPtr) { result.meleeSwipeSound = Load_SndAliasCustom(aStream); } if (result.meleeSwipeSoundPlayerPtr) { result.meleeSwipeSoundPlayer = Load_SndAliasCustom(aStream); } if (result.meleeHitSoundPtr) { result.meleeHitSound = Load_SndAliasCustom(aStream); } if (result.meleeMissSoundPtr) { result.meleeMissSound = Load_SndAliasCustom(aStream); } if (result.rechamberSoundPtr) { result.rechamberSound = Load_SndAliasCustom(aStream); } if (result.rechamberSoundPlayerPtr) { result.rechamberSoundPlayer = Load_SndAliasCustom(aStream); } if (result.reloadSoundPtr) { result.reloadSound = Load_SndAliasCustom(aStream); } if (result.reloadSoundPlayerPtr) { result.reloadSoundPlayer = Load_SndAliasCustom(aStream); } if (result.reloadEmptySoundPtr) { result.reloadEmptySound = Load_SndAliasCustom(aStream); } if (result.reloadEmptySoundPlayerPtr) { result.reloadEmptySoundPlayer = Load_SndAliasCustom(aStream); } if (result.reloadStartSoundPtr) { result.reloadStartSound = Load_SndAliasCustom(aStream); } if (result.reloadStartSoundPlayerPtr) { result.reloadStartSoundPlayer = Load_SndAliasCustom(aStream); } if (result.reloadEndSoundPtr) { result.reloadEndSound = Load_SndAliasCustom(aStream); } if (result.reloadEndSoundPlayerPtr) { result.reloadEndSoundPlayer = Load_SndAliasCustom(aStream); } if (result.nightVisionWearSoundPtr) { result.nightVisionWearSound = Load_SndAliasCustom(aStream); } if (result.detonateSoundPlayerPtr) { result.detonateSoundPlayer = Load_SndAliasCustom(aStream); } if (result.nightVisionWearSoundPtr) { result.nightVisionWearSound = Load_SndAliasCustom(aStream); } if (result.nightVisionRemoveSoundPtr) { result.nightVisionRemoveSound = Load_SndAliasCustom(aStream); } if (result.nightVisionRemoveSoundPlayerPtr) { result.nightVisionRemoveSoundPlayer = Load_SndAliasCustom(aStream); } if (result.altSwitchSoundPtr) { result.altSwitchSound = Load_SndAliasCustom(aStream); } if (result.altSwitchSoundPlayerPtr) { result.altSwitchSoundPlayer = Load_SndAliasCustom(aStream); } if (result.raiseSoundPtr) { result.raiseSound = Load_SndAliasCustom(aStream); } if (result.raiseSoundPlayerPtr) { result.raiseSoundPlayer = Load_SndAliasCustom(aStream); } if (result.firstRaiseSoundPtr) { result.firstRaiseSound = Load_SndAliasCustom(aStream); } if (result.firstRaiseSoundPlayerPtr) { result.firstRaiseSoundPlayer = Load_SndAliasCustom(aStream); } if (result.putawaySoundPtr) { result.putawaySound = Load_SndAliasCustom(aStream); } if (result.putawaySoundPlayerPtr) { result.putawaySoundPlayer = Load_SndAliasCustom(aStream); } if (result.bounceSoundPtr) { if (result.bounceSoundPtr == -1) { result.bounceSound = Load_snd_alias_list_nameArray(aStream, 29); } else { // Resolve contents from g_streamBlocks //varWeaponDef->bounceSound = (snd_alias_list_t **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + ((((unsigned int)varWeaponDef->bounceSound // - 1) >> 26) & 0x38)))[((int)varWeaponDef->bounceSound - 1) & 0x1FFFFFFF]; } } if (result.viewShellEjectEffectPtr) { result.viewShellEjectEffect = Load_FxEffectDefHandle(aStream); } if (result.worldShellEjectEffectPtr) { result.worldShellEjectEffect = Load_FxEffectDefHandle(aStream); } if (result.viewLastShotEjectEffectPtr) { result.viewLastShotEjectEffect = Load_FxEffectDefHandle(aStream); } if (result.worldLastShotEjectEffectPtr) { result.worldLastShotEjectEffect = Load_FxEffectDefHandle(aStream); } if (result.reticleCenterPtr) { result.reticleCenter = Load_MaterialHandle(aStream); } if (result.reticleSidePtr) { result.reticleSide = Load_MaterialHandle(aStream); } if (result.worldModelPtr) { result.worldModel = Load_XModelPtrArray(aStream, 16); } if (result.worldClipModelPtr) { result.worldClipModel = Load_XModelPtr(aStream); } if (result.rocketModelPtr) { result.rocketModel = Load_XModelPtr(aStream); } if (result.knifeModelPtr) { result.knifeModel = Load_XModelPtr(aStream); } if (result.worldKnifeModelPtr) { result.worldKnifeModel = Load_XModelPtr(aStream); } if (result.hudIconPtr) { result.hudIcon = Load_MaterialHandle(aStream); } if (result.ammoCounterIconPtr) { result.ammoCounterIcon = Load_MaterialHandle(aStream); } if (result.szAmmoNamePtr == -1) { result.szAmmoName = Load_XStringCustom(aStream); } if (result.szAmmoNamePtr == -1) { result.szAmmoName = Load_XStringCustom(aStream); } if (result.szSharedAmmoCapNamePtr == -1) { result.szSharedAmmoCapName = Load_XStringCustom(aStream); } if (result.overlayMaterialPtr) { result.overlayMaterial = Load_MaterialHandle(aStream); } if (result.overlayMaterialLowResPtr) { result.overlayMaterialLowRes = Load_MaterialHandle(aStream); } if (result.killIconPtr) { result.killIcon = Load_MaterialHandle(aStream); } if (result.dpadIconPtr) { result.dpadIcon = Load_MaterialHandle(aStream); } if (result.szAltWeaponNamePtr == -1) { result.szAltWeaponName = Load_XStringCustom(aStream); } if (result.projectileModelPtr) { result.projectileModel = Load_XModelPtr(aStream); } if (result.projExplosionEffectPtr) { result.projExplosionEffect = Load_FxEffectDefHandle(aStream); } if (result.projDudEffectPtr) { result.projDudEffect = Load_FxEffectDefHandle(aStream); } if (result.projExplosionSoundPtr) { result.projExplosionSound = Load_SndAliasCustom(aStream); } if (result.projDudSoundPtr) { result.projDudSound = Load_SndAliasCustom(aStream); } if (result.projTrailEffectPtr) { result.projTrailEffect = Load_FxEffectDefHandle(aStream); } if (result.projIgnitionEffectPtr) { result.projIgnitionEffect = Load_FxEffectDefHandle(aStream); } if (result.projIgnitionSoundPtr) { result.projIgnitionSound = Load_SndAliasCustom(aStream); } if (result.accuracyGraphNamePtr[0] == -1) { result.accuracyGraphName[0] = Load_XStringCustom(aStream); } if (result.accuracyGraphKnotsPtr[0]) { if (result.accuracyGraphKnotsPtr[0] == -1) { for (int i = 0; i < varWeaponDef->accuracyGraphKnotCount[0]; i++) { *aStream >> result.accaccuracyGraphKnots[i]; } } else { // Resolve contents from g_streamBlocks //varWeaponDef->accuracyGraphKnots[0] = (float (*)[2])&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + ((((unsigned int)&(*varWeaponDef->accuracyGraphKnots[0])[0] // - 1) >> 26) & 0x38)))[((int)&(*varWeaponDef->accuracyGraphKnots[0])[0] - 1) & 0x1FFFFFFF]; } } if (result.originalAccuracyGraphKnotsPtr[0]) { if (result.originalAccuracyGraphKnotsPtr[0] == -1) { for (int i = 0; i < varWeaponDef->accuracyGraphKnotCount[0]; i++) { *aStream >> result.originalAccuracyGraphKnots[i]; } } else { // Resolve contents from g_streamBlocks //v5->originalAccuracyGraphKnots[0] = (float (*)[2])&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + ((((unsigned int)&(*v5->originalAccuracyGraphKnots[0])[0] // - 1) >> 26) & 0x38)))[((int)&(*v5->originalAccuracyGraphKnots[0])[0] - 1) & 0x1FFFFFFF]; } } if (result.accuracyGraphNamePtr[1] == -1) { result.accuracyGraphName[1] = Load_XStringCustom(aStream); } if (result.accuracyGraphKnotsPtr[1]) { if (result.accuracyGraphKnotsPtr[1] == -1) { for (int i = 0; i < varWeaponDef->accuracyGraphKnotCount[1]; i++) { *aStream >> result.accuracyGraphKnots[i]; } } else { // Resolve contents from g_streamBlocks //varWeaponDef->accuracyGraphKnots[1] = (float (*)[2])&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + ((((unsigned int)&(*varWeaponDef->accuracyGraphKnots[1])[0] // - 1) >> 26) & 0x38)))[((int)&(*varWeaponDef->accuracyGraphKnots[1])[0] - 1) & 0x1FFFFFFF]; } } if (result.originalAccuracyGraphKnotsPtr[1]) { if (result.originalAccuracyGraphKnotsPtr[1] == -1) { for (int i = 0; i < varWeaponDef->accuracyGraphKnotCount[1]; i++) { *aStream >> result.originalAccuracyGraphKnots[i]; } } else { // Resolve contents from g_streamBlocks //v12->originalAccuracyGraphKnots[1] = (float (*)[2])&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + ((((unsigned int)&(*v12->originalAccuracyGraphKnots[1])[0] // - 1) >> 26) & 0x38)))[((int)&(*v12->originalAccuracyGraphKnots[1])[0] - 1) & 0x1FFFFFFF]; } } if (result.szUseHintStringPtr == -1) { result.szUseHintString = Load_XStringCustom(aStream); } if (result.dropHintStringPtr == -1) { result.dropHintString = Load_XStringCustom(aStream); } if (result.szScriptPtr == -1) { result.szScript = Load_XStringCustom(aStream); } if (result.fireRumblePtr == -1) { result.fireRumble = Load_XStringCustom(aStream); } if (result.meleeImpactRumblePtr == -1) { result.meleeImpactRumble = Load_XStringCustom(aStream); } return result; } // ?Load_MenuList@@YAX_N@Z at 0x822aeff8 MenuList Assets::Load_MenuList(QDataStream *aStream) { MenuList result; *aStream >> result.namePtr result.menuCount result.menusPtr; if (result.namePtr) { result.name = Load_XStringCustom(aStream); } if (result.menusPtr) { result.menus << Load_menuDef_ptrArray(aStream, result.menuCount); } return result; } // ?Load_DynEntityDef@@YAX_N@Z at 0x822af090 DynEntityDef Assets::Load_DynEntityDef(QDataStream *aStream) { DynEntityDef result; *aStream >> result.type >> result.pose >> result.xModelPtr >> result.brushModel >> result.physicsBrushModel >> result.destroyFxPtr >> result.destroyPiecesPtr >> result.physPresetPtr >> result.health >> result.mass >> result.contents; if (result.xModelPtr) { result.xModel = Load_XModelPtr(aStream); } if (result.destroyFxPtr) { result.destroyFx = Load_FxEffectDefHandle(aStream); } if (result.destroyPiecesPtr) { result.destroyPieces = Load_XModelPiecesPtr(aStream); } if (result.physPresetPtr) { result.physPreset = Load_PhysPresetPtr(aStream); } return result; } // ?Load_FxEffectDefHandleArray@@YAX_NH@Z at 0x822af148 QVector Assets::Load_FxEffectDefHandleArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { } v2 = count; Load_Stream(0, varFxEffectDefHandle, 4 * count); v3 = varFxEffectDefHandle; if ( v2 > 0 ) { do { varFxEffectDefHandle = v3; Load_FxEffectDefHandle(0); --v2; ++v3; } while ( v2 ); } return result; } // ?Load_WeaponDefPtr@@YAX_N@Z at 0x822af1a0 WeaponDef Assets::Load_WeaponDefPtr(QDataStream *aStream) { WeaponDef result; qint32 weaponDefPtr; *aStream >> weaponDefPtr; if (weaponDefPtr) { if (weaponDefPtr == -1 || weaponDefPtr == -2) { result = Load_WeaponDef(aStream); } else { // Resolve contents from g_streamBlocks //*varWeaponDefPtr = *(WeaponDef **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; } } return result; } // ?Load_FxImpactEntry@@YAX_N@Z at 0x822af288 FxImpactEntry Assets::Load_FxImpactEntry(QDataStream *aStream) { FxImpactEntry result; for (int i = 0; i < 29; i++) { qint32 nonFleshPtr; *aStream >> nonFleshPtr; result.nonFleshPtrs[i] = nonFleshPtr } for (int i = 0; i < 4; i++) { qint32 fleshPtr; *aStream >> fleshPtr; result.fleshPtrs[i] = fleshPtr } for (int i = 0; i < 29; i++) { qint32 nonFleshPtr; *aStream >> nonFleshPtr; result.nonFleshPtrs[i] = nonFleshPtr } for (int i = 0; i < 4; i++) { qint32 fleshPtr; *aStream >> fleshPtr; result.fleshPtrs[i] = fleshPtr } v2 = 29; do { varFxEffectDefHandle = v1; Load_FxEffectDefHandle(0); --v2; ++v1; } while ( v2 ); varFxEffectDefHandle = varFxImpactEntry->flesh; Load_Stream(0, varFxImpactEntry->flesh, 0x10u); v3 = varFxEffectDefHandle; v4 = 4; do { varFxEffectDefHandle = v3; Load_FxEffectDefHandle(0); --v4; ++v3; } while ( v4 ); return result; } // ?Load_MenuListPtr@@YAX_N@Z at 0x822af328 MenuList Assets::Load_MenuListPtr(QDataStream *aStream) { MenuList result; qint32 menuListPtr; *aStream >> menuListPtr; if (menuListPtr) { if (menuListPtr == -1 || menuListPtr == -2) { result = Load_MenuList(aStream); } else { // Resolve contents from g_streamBlocks //*varMenuListPtr = *(MenuList **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; } } return result; } // ?Load_DynEntityDefArray@@YAX_NH@Z at 0x822af410 QVector Assets::Load_DynEntityDefArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Load_DynEntityDef(aStream); } return result; } // ?Load_FxImpactEntryArray@@YAX_NH@Z at 0x822af470 QVector Assets::Load_FxImpactEntryArray(QDataStream *aStream, int count) { QVector result; for (int i = 0; i < count; i++) { result << Assets::Load_FxImpactEntry(aStream); } return result; } // ?Load_clipMap_t@@YAX_N@Z at 0x822af4c0 clipMap_t Assets::Load_clipMap_t(QDataStream *aStream) { clipMap_t result; *aStream >> result.namePtr >> result.isInUse >> result.planeCount >> result.planesPtr >> result.numStaticModels >> result.staticModelListPtr >> result.numMaterials >> result.materialsPtr >> result.numBrushSides >> result.brushsidesPtr >> result.numBrushEdges >> result.brushEdgesPtr >> result.numNodes >> result.nodesPtr >> result.leafsPtr >> result.leafbrushNodesCount >> result.leafbrushNodesPtr >> result.numLeafBrushes >> result.leafbrushesPtr >> result.numLeafSurfaces >> result.leafsurfacesPtr >> result.vertCount >> result.verts[0] >> result.verts[1] >> result.verts[2] >> result.triCount >> result.triIndicesPtr >> result.triEdgeIsWalkablePtr >> result.borderCount >> result.bordersPtr >> result.partitionCount >> result.partitionsPtr >> result.aabbTreeCount >> result.aabbTreesPtr >> result.numSubModels >> result.cmodelsPtr >> result.numBrushes >> result.brushesPtr >> result.numClusters >> result.clusterBytes >> result.visibilityPtr >> result.vised >> result.visibilityPtr >> result.visibilityPtr >> result.visibilityPtr >> result.visibilityPtr; if (result.namePtr == -1) { result.name = Assets::Load_XStringCustom(aStream); } if (result.planesPtr) { if (result.planesPtr == -1) { for (int i = 0; i < result.planeCount; i++) { result.planes << XAsset::Load_cplane_s(aStream); } } else { //varclipMap_t->planes = (cplane_s *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)&varclipMap_t->planes[-1].pad[1] >> 26) & 0x38)))[(int)&varclipMap_t->planes[-1].pad[1] & 0x1FFFFFFF]; } } if (result.staticModelListPtr) { result.staticModelList = Load_cStaticModel_tArray(aStream, result.numStaticModels); } if (result.materialsPtr) { result.materials = Load_dmaterial_tArray(aStream, result.numMaterials); } if (result.brushsidesPtr) { result.brushsides = Load_cbrushside_tArray(aStream, result.numBrushSides); } if (result.brushEdgesPtr) { result.brushEdges = Load_cbrushedge_tArray(aStream, result.numBrushEdges); } if (result.nodesPtr) { result.nodes = Load_cNode_tArray(aStream, result.numNodes); } if (result.leafsPtr) { result.leafs = Load_cLeaf_tArray(aStream, result.numLeafs); } if (result.leafbrushesPtr) { result.leafbrushes = Load_LeafBrushArray(aStream, result.numLeafBrushes); } if ( v1->leafbrushNodes ) { leafbrushNodesCount = v1->leafbrushNodesCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varcLeafBrushNode_t = (CLeafBrushNode *)g_streamPos; v1->leafbrushNodes = (CLeafBrushNode *)g_streamPos; Load_cLeafBrushNode_tArray(1, leafbrushNodesCount); v1 = varclipMap_t; } if ( v1->leafsurfaces ) { v17 = 4 * v1->numLeafSurfaces; v18 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v18; varuint = (unsigned int *)v18; v1->leafsurfaces = (unsigned int *)v18; Load_Stream(1, v18, v17); v1 = varclipMap_t; } if ( v1->verts ) { vertCount = v1->vertCount; v20 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v1->verts = (float (*)[3])v20; g_streamPos = v20; varvec3_t = (float (*)[3])v20; Load_Stream(1, v20, 12 * vertCount); v1 = varclipMap_t; } if ( v1->triIndices ) { triCount = v1->triCount; v22 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE); v1->triIndices = (unsigned __int16 *)v22; g_streamPos = v22; varUnsignedShort = (unsigned __int16 *)v22; Load_Stream(1, v22, 6 * triCount); v1 = varclipMap_t; } if ( v1->triEdgeIsWalkable ) { v23 = g_streamPos; v24 = v1->triCount; v1->triEdgeIsWalkable = g_streamPos; g_streamPos = v23; varbyte = v23; Load_Stream(1, v23, ((3 * v24 + 31) >> 3) & 0xFFFFFFFC); v1 = varclipMap_t; } if ( v1->borders ) { v25 = 28 * v1->borderCount; v26 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v1->borders = (CollisionBorder *)v26; g_streamPos = v26; varCollisionBorder = (CollisionBorder *)v26; Load_Stream(1, v26, v25); v1 = varclipMap_t; } if ( v1->partitions ) { partitionCount = v1->partitionCount; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varCollisionPartition = (CollisionPartition *)g_streamPos; v1->partitions = (CollisionPartition *)g_streamPos; Load_CollisionPartitionArray(1, partitionCount); v1 = varclipMap_t; } if ( v1->aabbTrees ) { v28 = 32 * v1->aabbTreeCount; v29 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v29; varCollisionAabbTree = (CollisionAabbTree *)v29; v1->aabbTrees = (CollisionAabbTree *)v29; Load_Stream(1, v29, v28); v1 = varclipMap_t; } if ( v1->cmodels ) { numSubModels = v1->numSubModels; v31 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v1->cmodels = (cmodel_t *)v31; g_streamPos = v31; varcmodel_t = (cmodel_t *)v31; Load_Stream(1, v31, 72 * numSubModels); v1 = varclipMap_t; } if ( v1->brushes ) { numBrushes = v1->numBrushes; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 15) & 0xFFFFFFF0); varcbrush_t = (cbrush_t *)g_streamPos; v1->brushes = (cbrush_t *)g_streamPos; Load_cbrush_tArray(1, numBrushes); v1 = varclipMap_t; } if ( v1->visibility ) { v33 = g_streamPos; v34 = v1->clusterBytes * v1->numClusters; v1->visibility = g_streamPos; varbyte = v33; Load_Stream(1, v33, v34); v1 = varclipMap_t; } varMapEntsPtr = &v1->mapEnts; Load_MapEntsPtr(0); v35 = varclipMap_t; box_brush = varclipMap_t->box_brush; if ( box_brush ) { if ( box_brush == (cbrush_t *)-1 ) { g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 15) & 0xFFFFFFF0); varcbrush_t = (cbrush_t *)g_streamPos; varclipMap_t->box_brush = (cbrush_t *)g_streamPos; Load_CBrush(1); v35 = varclipMap_t; } else { varclipMap_t->box_brush = (cbrush_t *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data + (((unsigned int)varclipMap_t->box_brush[-1].edgeCount[5] >> 26) & 0x38)))[(int)varclipMap_t->box_brush[-1].edgeCount[5] & 0x1FFFFFFF]; } } if ( v35->dynEntDefList[0] ) { v37 = v35->dynEntCount[0]; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varDynEntityDef = (DynEntityDef *)g_streamPos; v35->dynEntDefList[0] = (DynEntityDef *)g_streamPos; Load_DynEntityDefArray(1, v37); v35 = varclipMap_t; } if ( v35->dynEntDefList[1] ) { v38 = v35->dynEntCount[1]; g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); varDynEntityDef = (DynEntityDef *)g_streamPos; v35->dynEntDefList[1] = (DynEntityDef *)g_streamPos; Load_DynEntityDefArray(1, v38); v35 = varclipMap_t; } DB_PushStreamPos(1u); if ( v35->dynEntPoseList[0] ) { v40 = __ROL4__(v35->dynEntCount[0], 5); v41 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v41; varDynEntityPose = (DynEntityPose *)v41; v35->dynEntPoseList[0] = (DynEntityPose *)v41; Load_Stream(v39, v41, v40); v35 = varclipMap_t; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v35->dynEntPoseList[1] ) { v43 = __ROL4__(v35->dynEntCount[1], 5); v44 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); g_streamPos = v44; varDynEntityPose = (DynEntityPose *)v44; v35->dynEntPoseList[1] = (DynEntityPose *)v44; Load_Stream(v42, v44, v43); v35 = varclipMap_t; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v35->dynEntClientList[0] ) { v46 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v47 = 4 * (v35->dynEntCount[0] + __ROL4__(v35->dynEntCount[0], 1)); g_streamPos = v46; varDynEntityClient = (DynEntityClient *)v46; v35->dynEntClientList[0] = (DynEntityClient *)v46; Load_Stream(v45, v46, v47); v35 = varclipMap_t; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v35->dynEntClientList[1] ) { v49 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v50 = 4 * (v35->dynEntCount[1] + __ROL4__(v35->dynEntCount[1], 1)); g_streamPos = v49; varDynEntityClient = (DynEntityClient *)v49; v35->dynEntClientList[1] = (DynEntityClient *)v49; Load_Stream(v48, v49, v50); v35 = varclipMap_t; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v35->dynEntCollList[0] ) { v52 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v53 = 4 * (v35->dynEntCount[0] + __ROL4__(v35->dynEntCount[0], 2)); g_streamPos = v52; varDynEntityColl = (DynEntityColl *)v52; v35->dynEntCollList[0] = (DynEntityColl *)v52; Load_Stream(v51, v52, v53); v35 = varclipMap_t; } DB_PopStreamPos(); DB_PushStreamPos(1u); if ( v35->dynEntCollList[1] ) { v55 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC); v56 = 4 * (v35->dynEntCount[1] + __ROL4__(v35->dynEntCount[1], 2)); g_streamPos = v55; varDynEntityColl = (DynEntityColl *)v55; v35->dynEntCollList[1] = (DynEntityColl *)v55; Load_Stream(v54, v55, v56); } DB_PopStreamPos(); DB_PopStreamPos(); } // ?Load_FxImpactTable@@YAX_N@Z at 0x822afc40 FxImpactTable Assets::Load_FxImpactTable(QDataStream *aStream) { FxImpactTable result; *aStream >> result.namePtr >> result.tablePtr; if (result.namePtr == -1) { result.name = Assets::Load_XStringCustom(aStream); } if (result.tablePtr) { result.table = Assets::Load_FxImpactEntryArray(1, 12); } DB_PopStreamPos(); } // ?Load_clipMap_ptr@@YAX_N@Z at 0x822afcd8 clipMap_t Assets::Load_clipMap_ptr(QDataStream *aStream) { clipMap_t result; qint32 clipMapPtr; *aStream >> clipMapPtr; if (clipMapPtr) { if (clipMapPtr != -1 || clipMapPtr != -2) { result = Assets::Load_clipMap_t(aStream); } else { // Resolve contents to g_streamBlocks //*varclipMap_ptr = *(clipMap_t **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; } } } // ?Load_FxImpactTablePtr@@YAX_N@Z at 0x822afdc0 FxImpactTable Assets::Load_FxImpactTablePtr(QDataStream *aStream) { FxImpactTable result; qint32 fxImpactTablePtr; *aStream >> fxImpactTablePtr; if (fxImpactTablePtr) { if (fxImpactTablePtr == -1 || fxImpactTablePtr != -2) { result = Assets::Load_FxImpactTable(aStream); } else { // Resolve contents to g_streamBlocks //*varFxImpactTablePtr = *(FxImpactTable **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data // + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF]; } } return result; } struct XAsset { XAssetType type; XAssetHeader header; }; // ?Load_XAssetHeader@@YAX_N@Z at 0x822afea8 XAssetHeader Assets::Load_XAssetHeader(QDataStream *aStream, XAsset aAsset) { XAssetHeader result; switch (aAsset.type) { case ASSET_TYPE_PHYSPRESET: result = Assets::Load_PhysPresetPtr(aStream); break; case ASSET_TYPE_XANIMPARTS: result = Assets::Load_XAnimPartsPtr(aStream); break; case ASSET_TYPE_XMODEL: result = Assets::Load_XModelPtr(aStream); break; case ASSET_TYPE_MATERIAL: result = Assets::Load_MaterialHandle(aStream); break; case ASSET_TYPE_PIXELSHADER: result = Assets::Load_MaterialPixelShaderPtr(aStream); break; case ASSET_TYPE_TECHNIQUE_SET: result = Assets::Load_MaterialTechniqueSetPtr(aStream); break; case ASSET_TYPE_IMAGE: varGfxImagePtr = (GfxImage **)varXAssetHeader; result = Assets::Load_GfxImagePtr(aStream); break; case ASSET_TYPE_SOUND: result = Assets::Load_snd_alias_list_ptr(aStream); break; case ASSET_TYPE_SOUND_CURVE: result = Assets::Load_SndCurvePtr(aStream); break; case ASSET_TYPE_LOADED_SOUND: result = Assets::Load_LoadedSoundPtr(aStream); break; case ASSET_TYPE_CLIPMAP: case ASSET_TYPE_CLIPMAP_PVS: varclipMap_ptr = (clipMap_t **)varXAssetHeader; result = Assets::Load_clipMap_ptr(aStream); break; case ASSET_TYPE_COMWORLD: result = Assets::Load_ComWorldPtr(aStream); break; case ASSET_TYPE_GAMEWORLD_SP: result = Assets::Load_GameWorldSpPtr(aStream); break; case ASSET_TYPE_GAMEWORLD_MP: result = Assets::Load_GameWorldMpPtr(aStream); break; case ASSET_TYPE_MAP_ENTS: result = Assets::Load_MapEntsPtr(aStream); break; case ASSET_TYPE_GFXWORLD: result = Assets::Load_GfxWorldPtr(aStream); break; case ASSET_TYPE_LIGHT_DEF: result = Assets::Load_GfxLightDefPtr(aStream); break; case ASSET_TYPE_FONT: result = Assets::Load_FontHandle(aStream); break; case ASSET_TYPE_MENULIST: result = Assets::Load_MenuListPtr(aStream); break; case ASSET_TYPE_MENU: result = Assets::Load_menuDef_ptr(aStream); break; case ASSET_TYPE_LOCALIZE_ENTRY: result = Assets::Load_LocalizeEntryPtr(aStream); break; case ASSET_TYPE_WEAPON: result = Assets::Load_WeaponDefPtr(aStream); break; case ASSET_TYPE_SNDDRIVER_GLOBALS: result = Assets::Load_SndDriverGlobalsPtr(aStream); break; case ASSET_TYPE_FX: result = Assets::Load_FxEffectDefHandle(aStream); break; case ASSET_TYPE_IMPACT_FX: result = Assets::Load_FxImpactTablePtr(aStream); break; case ASSET_TYPE_RAWFILE: result = Assets::Load_RawFilePtr(aStream); break; case ASSET_TYPE_STRINGTABLE: result = Assets::Load_StringTablePtr(aStream); break; } return result; } // ?Load_XAsset@@YAX_N@Z at 0x822b0220 XAsset Assets::Load_XAsset(QDataStream *aStream) { XAsset result; *aStream >> result.type >> result.header result.header = Load_XAssetHeader(aStream, result); return result; }