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 ??