Very rough notes on the effect format. struct CPSCRenderMesh { char cpcsrendermesh[15]; dword StringChecksum_MeshRenderer; byte unk2; dword meshID; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; word unk1; dword unk1; dword unk1; dword unk1; word unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; word unk1; dword unk1; byte bools[5]; byte terminator; }; struct CPSCRendeSprite { char CPSCRenderSprite[17]; dword CRC; //Sprite Renderer byte Boolean; dword TextureID; dword TrailID; dword Unknown; //Radius/Scale?? dword Unknown; //Radius/Scale?? dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; //StartRenderSize Y? dword unk1; //StartRenderSize Z? dword unk1; //EndRenderSize Y? dword unk1; //EndRenderSize Z? dword unk1; dword unk1; dword unk1; dword unk1; byte bools[7]; byte terminator; }; struct CPSCSingleSprite { char CPSCSingleSprite[17]; dword CRC; //Single Sprite byte Boolean; dword TextureID; dword unk1; dword unk1; dword unk1; float unk1; float unk1; float unk1; float unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; float unk1; dword unk1; dword unk1; dword unk1; byte bools[10]; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; word unk1; byte terminator; }; struct CPSCUpdateNormal { char CPSCUpdateNormal[17]; dword CRC; //"Generic Particle System" String byte Boolean; dword unk1; dword unk1; dword unk1; word unk1; dword unk1; byte unk1; dword unk1; float floats[32]; byte terminator; }; struct OrbitDimension { dword unk1; dword unk1; float Radius; // ?? dword unk1; dword unk1; float float1; // doesnt do shit? always 5? float RadiusAgain; // ?? always 1? float float3; // always 0 ? float AngularVelocity; // value*Pi rps dword unk1; dword unk1; dword unk1; }OrbitDimension; struct CPSCOrbit { char CPSCOrbit[10]; dword CRC; //"Orbit" String byte Boolean; dword CRC; //"System Offset" String OrbitDimension XOrbit; // North/South OrbitDimension YOrbit; // up/down OrbitDimension ZOrbit; byte Terminator; }; struct CPSCEmitterGeneric { char CPSCEmitterGeneric[19]; dword CRC; //"Generic Emitter" String byte Boolean; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; byte bools[10]; //?? dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; word unk3; dword unk1; dword unk1; dword unk1; byte unk2; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; dword unk1; byte unk2; byte terminator; }; struct CPSCAttractor { char CPSCAttractor[14]; dword CRC; //"Attractor" String byte Boolean; word Unknown; dword Unknown; dword Unknown; //Maybe Float?? float Floats[3]; dword FloatArray; //3 floats per float Floats[FloatArray*3]; byte Terminator }; struct CPSCSpline { char CPSCSpline[11]; dword CRC; //"Spline" String byte Boolean; word Unknown; float Unknown; dword FloatArray; //3 floats per float Floats[FloatArray*3]; word Unknown; byte Terminator; }; struct CPSCLight { char CPSCLight[10]; dword CRC; //"Light" String byte Boolean; dword CRC; //"System Offset" String float Floats[6]; dword Unknown[5]; word Unknown; byte Unknown[3]; word Unknown; dword Unknown[4]; byte Terminator; }; struct CPSCDecalRenderer { char CPSCDecalRenderer[18]; dword CRC; //"Decal Renderer" String byte Boolean; float Unknown; dword TextureID; dword Unknown[13]; byte Unknown; word Unknown; byte Unknown; word Unknown; dword Unknown[3]; byte Unknown; dword Unknown; byte Unknown[4]; float Unknown; byte Unknown; float Unknown; byte Unknown; float Unknown; byte Unknown; float Unknown; dword Unknown; byte Terminator; }; Misc CRC strings pulled from the main executable: CPSCRenderSprite? TrailWidth <--- seems odd in IDA / used? FlickerBias FlickerSpeed EndRenderSize StartRenderSize AnimationTimeSecs SizeFadeMinimum AlphaFadeMinimum TrailLengthInteger FlickerMinSizeInteger FlickerMinAlphaInteger FlickerEnable SizeFadeEnable AlphaFadeEnable FadeOutBeginInteger FadeInEndInteger NoCrossedSprites TrailBlendOp TrailBlendMode BlendOp BlendMode EndColour MidColour StartColour UseEndColour UseMidColour UseStartColour ForceAnimationTime SpriteAlignment SelfIlluminating RotateAroundCentre CrossedSprites FaceMe3D FaceMe2D SpriteFlags TrailName SpriteName EEngineGraphic CPSCRenderMesh? EndRenderSizeZ EndRenderSizeY StartRenderSizeZ StartRenderSizeY TrailUseEndColour TrailUseMidColour TrailUseStartColour CentredOnPos UseRenderSizeParam TrailEndColour TrailMidColour TrailStartColour EndMeshAlpha MidMeshAlpha StartMeshAlpha RenderSizeParam BankIndexName EMeshType2 CPSCAttractor? AttractorUserPointsArray AttractorUserPointsArraySize AttractorInfluenceFallOffType AttractorInfluenceForce AttractorInfluenceRadius AttractorPositionParamName AttractorPositionParam AttractorUseParamPosition AttractorEnabled CPSCLight? LightUserPointsArray LightUserPointsArraySize LightTimelineSecs LightStartTime LightUseTimelineSecs LightEndColour LightMidColour LightStartColour LightUseEndColour LightUseMidColour LightUseStartColour LightColourFadeMinimum LightColourFadeEnable LightUseFadeColour LightWorldRadiusFadeMinimum LightWorldRadiusFadeEnable LightFadeOutBeginInteger LightFadeInEndInteger LightAttenuationFactor LightEndRenderWorldRadius LightStartRenderWorldRadius LightRespawnDelaySecs LightRespawns LightLifeSecs LightUseLifeSecs LightPositionParam LightEnabled CPSCSpline SplinePosOffsetLimit EmitterSplineTension SplinePosOffsetSpeed SplineTension UseSplinePoints EmitterSplineUserPointsArray SplineUserPointsArray SplinePosOffsetLimitsSize ScaleSplineSpeed EmitterSplineUserPointsArraySize EmitterSplineUserPointsArraySize_BugFixed ?? SplineConnectedEndPoints MaintainSplineShape SplinePosParamSize SplineBounce SplineAnimSpeed SplineUserPointsArraySize SplineUserPointsArraySize_BugFixed ??