Overview
CPIWORLD
CPI may refer to PyroTechnix's former name, Computer Presentations, Inc.
CPIWORLD "%s"
ENDCPIWORLD "%s
INCLUDE
INCLUDE "%s"
DEFAULTPALETTEFILE - 0x01
DEFAULTPALETTEFILE "%s.bmp"
USERDATA - 0x02
USERDATA "%s"
FRAME - 0x03
FRAME "%s.bmp" "%s"
BMINFO - 0x03
BMINFO "%s" "%s.bmp"
SIMPLESPRITEDEF - 0x04
SIMPLESPRITEDEF
SIMPLESPRITETAG "%s"
NUMFRAMES %d
FRAME "%s.bmp" "%s"
CURRENTFRAME %d
SLEEP %d
SKIPFRAMES ON
ENDSIMPLESPRITEDEF
SIMPLESPRITEINST - 0x05
Unverified
// SIMPLESPRITEINST
// TAG "PIZZA_SPRITE"
// ENDSIMPLESPRITEINST
SIMPLESPRITEINST
DEFINITION "%s"
SKIPFRAMES ON
ENDSIMPLESPRITEINST
2DSPRITEDEF - 0x06
Unverified
2DSPRITEDEF
2DSPRITETAG "%s"
CENTEROFFSET %f %f %f
NUMFRAMES %d
// I assume it needs a FRAME as well?
CURRENTFRAME %d
SLEEP %d
SKIPFRAMES ON
SPRITESIZE %f %f
DEPTHSCALE %f
NUMPITCHES %d
PITCH
PITCHCAP %d
TOPORBOTTOMVIEW
NUMHEADINGS %d
HEADING
HEADINGCAP %d
ENDHEADING
ENDPITCH
// FUN_0040b3e0
// Example: oldeq/EQUEST.T3D/EQUEST.WLD
// TODO: figure out the list of render types; this might be a large list.
// TEXTURE3AMBIENT
// TRANSPARENT
// USERDEFINED %d
RENDERMETHOD %s
RENDERINFO
PEN %d
BRIGHTNESS %f
SCALEDAMBIENT %f
// Unsure if something besides SIMPLESPRITEINST can go here
SIMPLESPRITEINST
TAG "%s"
ENDSIMPLESPRITEINST
UVORIGIN %f %f %f
UAXIS 1.0 %f %f %f
VAXIS 1.0 %f %f %f
UV %f %f
TWOSIDED
ENDRENDERINFO
// FUN_0040b720
SPHERE %f
SPHERELIST
DEFINITION "%s"
TAG "%s"
SCALEFACTOR %f
ENDSPHERELIST
POLYHEDRON
DEFINITION "%s"
TAG "%s"
SCALEFACTOR %f
ENDPOLYHEDRON
BOUNDINGRADIUS %f
END2DSPRITEDEF
0x07
Unverified
3DSPRITEDEF - 0x08
Unverified
3DSPRITEDEF
3DSPRITETAG "%s"
ENABLEGOURAUD2
CENTEROFFSET %f %f %f
NUMVERTICES %d
XYZ %f %f %f
NUMBSPNODES %d
BSPNODE
NORMALABCD %f %f %f %f
NUMVERTICES %d
VERTEXLIST %d ...%d
// FUN_0040b3e0
// Example: oldeq/EQUEST.T3D/EQUEST.WLD
// TODO: figure out the list of render types; this might be a large list.
// TEXTURE3AMBIENT
// TRANSPARENT
// USERDEFINED %d
RENDERMETHOD %s
RENDERINFO
PEN %d
BRIGHTNESS %f
SCALEDAMBIENT %f
// Unsure if something besides SIMPLESPRITEINST can go here
SIMPLESPRITEINST
TAG "%s"
ENDSIMPLESPRITEINST
UVORIGIN %f %f %f
UAXIS 1.0 %f %f %f
VAXIS 1.0 %f %f %f
UV %f %f
TWOSIDED
ENDRENDERINFO
FRONTTREE %d
BACKTREE %d
ENDBSPNODE
// FUN_0040b720
SPHERE %f
SPHERELIST
DEFINITION "%s"
TAG "%s"
SCALEFACTOR %f
ENDSPHERELIST
POLYHEDRON
DEFINITION "%s"
TAG "%s"
SCALEFACTOR %f
ENDPOLYHEDRON
BOUNDINGRADIUS %f
END3DSPRITEDEF
0x09
Unverified
4DSPRITEDEF - 0xa
Unverified
0xb
FUN_004079a0
Unverified
PARTICLESPRITEDEF - 0xc
Unverified
PARTICLESPRITEDEF
PARTICLESPRITETAG "%s"
CENTEROFFSET %f %f %f
LARGEDOTS ON
NUMVERTICES %d
XYZPEN %f %f %f %d
// FUN_0040b3e0
// Example: oldeq/EQUEST.T3D/EQUEST.WLD
// TODO: figure out the list of render types; this might be a large list.
// TEXTURE3AMBIENT
// TRANSPARENT
// USERDEFINED %d
RENDERMETHOD %s
RENDERINFO
PEN %d
BRIGHTNESS %f
SCALEDAMBIENT %f
// Unsure if something besides SIMPLESPRITEINST can go here
SIMPLESPRITEINST
TAG "%s"
ENDSIMPLESPRITEINST
UVORIGIN %f %f %f
UAXIS 1.0 %f %f %f
VAXIS 1.0 %f %f %f
UV %f %f
TWOSIDED
ENDRENDERINFO
ENDPARTICLESPRITEDEF
Example: oldeq/EQUIP.t3d/COLLDISP.SPR
0xd
Unverified
COMPOSITESPRITEDEF - 0xe
Unverified
COMPOSITESPRITEDEF
COMPOSITESPRITETAG "%s"
NUMFRAMES %d
NUMCOMPONENTS %d
COMPONENT
// Sprite Type; FUN_00407ec0
// One of these:
// SIMPLESPRITE "%s"
// 2DSPRITE "%s"
// 3DSPRITE "%s"
// 4DSPRITE "%s"
// PARTICLESPRITE "%s"
// COMPOSITESPRITE "%s"
// HIERARCHICALSPRITE "%s"
// BLITSPRITE "%s" %f %f %f %f %f %f
// NULLSPRITE
FRAMETRANSFORM %f %d %d %d %f %f %f
ENDCOMPONENT
CURRENTFRAME %d
SLEEP %d
SKIPFRAMES ON
CENTEROFFSET %f %f %f
// FUN_0040b720
SPHERE %f
SPHERELIST
DEFINITION "%s"
TAG "%s"
SCALEFACTOR %f
ENDSPHERELIST
POLYHEDRON
DEFINITION "%s"
TAG "%s"
SCALEFACTOR %f
ENDPOLYHEDRON
BOUNDINGRADIUS %f
ENDCOMPOSITESPRITEDEF
0xf
Unverified
HIERARCHICALSPRITEDEF - 0x10
Unverified
HIERARCHICALSPRITEDEF
TAG "%s"
NUMDAGS %d
DAG
TAG "%s"
// Sprite Type; FUN_00407ec0
// One of these:
// SIMPLESPRITE "%s"
// 2DSPRITE "%s"
// 3DSPRITE "%s"
// 4DSPRITE "%s"
// PARTICLESPRITE "%s"
// COMPOSITESPRITE "%s"
// HIERARCHICALSPRITE "%s"
// BLITSPRITE "%s" %f %f %f %f %f %f
// NULLSPRITE
TRACK "%s"
NUMSUBDAGS %d
SUBDAGLIST %d... // might have args like 2 4 6
ENDDAG
CENTEROFFSET %f %f %f
// FUN_0040b720
SPHERE %f
SPHERELIST
DEFINITION "%s"
TAG "%s"
SCALEFACTOR %f
ENDSPHERELIST
POLYHEDRON
DEFINITION "%s"
TAG "%s"
SCALEFACTOR %f
ENDPOLYHEDRON
BOUNDINGRADIUS %f
ENDHIERARCHICALSPRITEDEF
Examples
- oldeq/EQUIP.t3d/*.SPH
0x11
Unverified
TRACKDEFINITION- 0x12
Unverified
Functions for calculating the tranform are interesting.
TRACKDEFINITION
TAG "%s"
NUMFRAMES %d
FRAMETRANSFORM %f %d %d %d %f %f %f
ENDTRACKDEFINITION
Examples
- oldeq/EQUIP.t3d/*.SPH
TRACKINSTANCE - 0x13
Unverified
TRACKINSTANCE
TAG "%s"
DEFINITION "%s"
REVERSE
INTERPOLATE
SLEEP %d
ENDTRACKINSTANCE
Examples
- oldeq/EQUIP.t3d/*.SPH
ACTORDEF - 0x14
Unverified
ACTORDEF
ACTORTAG "%s"
ACTIVEGEOMETRY
CALLBACK "%s"
NUMACTIONS %d
ACTION
NUMLEVELSOFDETAIL %d
LEVELOFDETAIL
// Sprite Type; FUN_00407ec0
// One of these:
// SIMPLESPRITE "%s"
// 2DSPRITE "%s"
// 3DSPRITE "%s"
// 4DSPRITE "%s"
// PARTICLESPRITE "%s"
// COMPOSITESPRITE "%s"
// HIERARCHICALSPRITE "%s"
// BLITSPRITE "%s" %f %f %f %f %f %f
// NULLSPRITE
MINDISTANCE %f
MAXDISTANCE %f
ENDLEVELOFDETAIL
ENDACTION
CURRENTACTION %d
LOCATION %d %f %f %f %d %d %d
SPRITEVOLUMEONLY
// FUN_0040b720
SPHERE %f
SPHERELIST
DEFINITION "%s"
TAG "%s"
SCALEFACTOR %f
ENDSPHERELIST
POLYHEDRON
DEFINITION "%s"
TAG "%s"
SCALEFACTOR %f
ENDPOLYHEDRON
USERDATA "%s"
ENDACTORDEF
Examples
- oldeq/EQUEST.t3d/EQUEST.WLD
ACTORINST - 0x15
Unverified
ACTORINST
DEFINITION "%s"
TAG "%s"
ACTIVE
CURRENTACTION %d
LOCATION %d %f %f %f %d %d %d
SPRITEVOLUMEONLY
// FUN_0040b720
SPHERE %f
SPHERELIST
DEFINITION "%s"
TAG "%s"
SCALEFACTOR %f
ENDSPHERELIST
POLYHEDRON
DEFINITION "%s"
TAG "%s"
SCALEFACTOR %f
ENDPOLYHEDRON
// It appears that spritesize can be used instead of boundingradius and scalefactor
// trying both returns "sprite size illegal with bounding radius & scale factor"
// SPRITESIZE %f %f
BOUNDINGRADIUS %f
SCALEFACTOR %f
SOUND "%s"
USERDATA "%s"
ENDACTORINST
Examples
- oldeq/EQUEST.t3d/EQUEST.WLD
0x16
Generated from ACTORINST test
Unverified
POLYHEDRONDEFINITION - 0x17
Unverified
POLYHEDRONDEFINITION
TAG "%s"
BOUNDINGRADIUS %f
SCALEFACTOR %f
NUMVERTICES %d
XYZ %f %f %f
NUMFACES %d
FACE
NORMALABCD %f %f %f %f
NUMVERTICES %d
VERTEXLIST %d ...%d
ENDFACE
ENDPOLYHEDRONDEFINITION
0x18
Unverified
SPHERELISTDEFINITION - 0x19
Unverified
SPHERELISTDEFINITION
TAG "%s"
BOUNDINGRADIUS %f
SCALEFACTOR %f
NUMSPHERES %d
SPHERE %f %f %f %f
ENDSPHERELISTDEFINITION
0x1a
Added by 3DSPRITEDEF
Unverified
LIGHTDEFINITION - 0x1b
Unverified
LIGHTDEFINITION
TAG "%s"
NUMFRAMES %d
LIGHTLEVELS %f ...%f
CURRENTFRAME %d
SLEEP %d
SKIPFRAMES ON
// Repeated for each light level
COLOR %f %f %f
ENDLIGHTDEFINITION
0x1c
Unverified
POINTLIGHT - 0x1d
Unverified
POINTLIGHT
TAG "%s"
XYZ %f %f %f
// FUN_0040ba70 // maybe this is loading the name for the following LIGHT call?
LIGHT "%s"
RADIUSOFINFLUENCE %f
ENDPOINTLIGHT
Examples
- oldeq/EQUEST.t3d/EQUEST.WLD
0x1e
Unverified
SOUNDDEFINITION - 0x1f
Lots of strings around here that arnt in the decompile.
Unverified
SOUNDDEFINITION
TAG "%s"
DRYWAVE unknown // FUN_0040a290
WETWAVE unknown // FUN_0040a290
NUMBUFFERS %d
VOLUME %f %s // maybe CONSTANT or POSITIONBASED
PAN POSITIONBASED
// PAN %f
DOPPLER %f %s
IMMEDIATE ON
UPDATE ON
TEMPORARY ON
INTERRUPT ON
SYNC ON
REVERB ON
LOOP ON
DELTATIME %d
DESTROYTIME %d
ENDSOUNDDEFINITION
SOUNDINSTANCE - 0x20
Unverified
SOUNDINSTANCE
DEFINITION "%s"
TAG "%s"
XYZ %f %f %f
BEGINTIME %d
VOLUME %f %s
PAN POSITIONBASED
// PAN %f
DOPPLER %f %s
IMMEDIATE %s
UPDATE %s
TEMPORARY %s
INTERRUPT %s
SYNC %s
REVERB %s
LOOP %s
DELTATIME %d
DESTROYTIME %d
ENDSOUNDINSTANCE
WORLDTREE - 0x21
Unverified
WORLDTREE
NUMWORLDNODES %d
WORLDNODE
NORMALABCD %f %f %f %f
WORLDREGIONTAG %d
FRONTTREE %d
BACKTREE %d
ENDWORLDNODE
ENDWORLDTREE
REGION - 0x22
Unverified
NUMREGIONS %d
REGION
// FUN_0040aa90
REGIONTAG "%s"
AMBIENTLIGHT "%s"
NUMPROXIMALREGIONS %d
PROXIMALREGION %d %f
NUMREGIONVERTEX %d
NUMRENDERVERTICES %d
XYZ %f %f %f
NUMWALLS %d
WALL
FLOOR
NORMALABCD %f %f %f %f
NUMVERTICES %d
VERTEXLIST %d ...%d
ENDWALL
NUMOBSTACLES %d
NUMCUTTINGOBSTACLES %d
OBSTACLE
GEOMETRYCUTTINGOBSTACLE
XY_VERTEX 0 %d
XYZ_VERTEX 0 %d
XY_LINE 0 %d %d
XY_EDGE 0 %d %d
XYZ_EDGE 0 %d %d
PLANE 0 %d
EDGEWALL 0 %d
EDGEPOLYGON 0
NORMALABCD %f %f %f %f
NUMVERTICES %d
VERTEXLIST %d+
NEXTREGION %d
FLOOR
USERDATA "%s"
ENDOBSTACLE
VISTREE
NUMVISNODE %d
VISNODE
NORMALABCD %f %f %f %f
VISLISTINDEX %d
FRONTTREE %d
BACKTREE %d
ENDVISNODE
NUMVISLIST %d
VISIBLELIST
RANGE %d ...%d
ENDVISIBLELIST
ENDVISTREE
ENCODEDVISIBILITY
REGIONFOG
SPHERE %f %f %f %f
ENABLEGOURAUD2
REVERBVOLUME %f
REVERBOFFSET %d
USERDATA "%s"
ENDREGION
Examples
- oldeq/EQUEST.t3d/EQUEST.WLD
ACTIVEGEOMETRYREGION- 0x23
Unverified
NUMREGIONS %d
ACTIVEGEOMETRYREGION
// FUN_0040aa90
REGIONTAG "%s"
AMBIENTLIGHT "%s"
NUMPROXIMALREGIONS %d
PROXIMALREGION %d %f
NUMREGIONVERTEX %d
NUMRENDERVERTICES %d
XYZ %f %f %f
NUMWALLS %d
WALL
FLOOR
NORMALABCD %f %f %f %f
NUMVERTICES %d
VERTEXLIST %d ...%d
ENDWALL
NUMOBSTACLES %d
NUMCUTTINGOBSTACLES %d
OBSTACLE
GEOMETRYCUTTINGOBSTACLE
XY_VERTEX 0 %d
XYZ_VERTEX 0 %d
XY_LINE 0 %d %d
XY_EDGE 0 %d %d
XYZ_EDGE 0 %d %d
PLANE 0 %d
EDGEWALL 0 %d
EDGEPOLYGON 0
NORMALABCD %f %f %f %f
NUMVERTICES %d
VERTEXLIST %d+
NEXTREGION %d
FLOOR
USERDATA "%s"
ENDOBSTACLE
VISTREE
NUMVISNODE %d
VISNODE
NORMALABCD %f %f %f %f
VISLISTINDEX %d
FRONTTREE %d
BACKTREE %d
ENDVISNODE
NUMVISLIST %d
VISIBLELIST
RANGE %d ...%d
ENDVISIBLELIST
ENDVISTREE
ENCODEDVISIBILITY
REGIONFOG
SPHERE %f %f %f %f
ENABLEGOURAUD2
REVERBVOLUME %f
REVERBOFFSET %d
USERDATA "%s"
ENDREGION
Examples
- oldeq/EQUEST.t3d/EQUEST.WLD
SKYREGION - 0x24
Unverified
NUMREGIONS %d
SKYREGION
REGIONTAG "%s"
AMBIENTLIGHT "%s"
NUMREGIONVERTEX %d
XYZ %f %f %f
NUMACTIONS %d
ACTION
NUMLEVELSOFDETAIL %d
LEVELOFDETAIL
// FUN_0040b3e0
// Example: oldeq/EQUEST.T3D/EQUEST.WLD
// TODO: figure out the list of render types; this might be a large list.
// TEXTURE3AMBIENT
// TRANSPARENT
// USERDEFINED %d
RENDERMETHOD %s
RENDERINFO
PEN %d
BRIGHTNESS %f
SCALEDAMBIENT %f
// Unsure if something besides SIMPLESPRITEINST can go here
SIMPLESPRITEINST
TAG "%s"
ENDSIMPLESPRITEINST
UVORIGIN %f %f %f
UAXIS 1.0 %f %f %f
VAXIS 1.0 %f %f %f
UV %f %f
TWOSIDED
ENDRENDERINFO
MINDISTANCE %f
MAXDISTANCE %f
ENDLEVELOFDETAIL
ENDACTION
CURRENTACTION %d
FOGDISTANCE %f
SPHERE %f %f %f %f
USERDATA "%s"
ENDREGION
DIRECTIONALLIGHT - 0x25
Unverified
DIRECTIONALLIGHT
TAG "%s"
NORMAL %f %f %f
// FUN_0040ba70 // maybe this is loading the name for the following LIGHT call?
LIGHT "%s"
NUMREGIONS %d
REGIONS %d ...%d
ENDDIRECTIONALLIGHT
BLITSPRITEDEFINITION - 0x26
Unverified
BLITSPRITEDEFINITION
TAG "%s"
// Sprite Type; FUN_00407ec0
// One of these:
// SIMPLESPRITE "%s"
// 2DSPRITE "%s"
// 3DSPRITE "%s"
// 4DSPRITE "%s"
// PARTICLESPRITE "%s"
// COMPOSITESPRITE "%s"
// HIERARCHICALSPRITE "%s"
// BLITSPRITE "%s" %f %f %f %f %f %f
// NULLSPRITE
TRANSPARENT ON
ENDBLITSPRITEDEFINITION
0x27
Unverified
POINTLIGHT (regions) - 0x28
A second POINTLIGHT. Adds STATIC, STATICINFLUENCE, NUMREGIONS, REGIONS
Unverified
POINTLIGHT
TAG "%s"
XYZ %f %f %f
// FUN_0040ba70 // maybe this is loading the name for the following LIGHT call?
LIGHT "%s"
RADIUSOFINFLUENCE %f
STATIC
STATICINFLUENCE
NUMREGIONS %d
REGIONS %d ...%d
ENDPOINTLIGHT
ZONE - 0x29
Unverified
ZONE
TAG "%s"
NUMREGIONS %d
REGIONS %d ...%d
USERDATA "%s"
ENDZONE
AMBIENTLIGHT - 0x2a
Unverified
AMBIENTLIGHT
TAG "%s"
// FUN_0040ba70 // maybe this is loading the name for the following LIGHT call?
LIGHT "%s"
NUMREGIONS %d
REGIONS %d ...%d
ENDAMBIENTLIGHT
DIRECTIONALLIGHT (static flag) - 0x2b
A second DIRECTIONALLIGHT with flag for STATIC
Unverified
DIRECTIONALLIGHT
TAG "%s"
NORMAL %f %f %f
// FUN_0040ba70 // maybe this is loading the name for the following LIGHT call?
LIGHT "%s"
STATIC
NUMREGIONS %d
REGIONS %d ...%d
ENDDIRECTIONALLIGHT
0x2c+
I believe WLDCOM.EXE stops at 0x2b