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"

Ref

USERDATA - 0x02

USERDATA "%s"

Ref

FRAME - 0x03

FRAME "%s.bmp" "%s"

Ref

BMINFO - 0x03

BMINFO "%s" "%s.bmp"

Ref

SIMPLESPRITEDEF - 0x04

SIMPLESPRITEDEF
  SIMPLESPRITETAG "%s"
  NUMFRAMES %d
  FRAME "%s.bmp" "%s"
  CURRENTFRAME %d
  SLEEP %d
  SKIPFRAMES ON
ENDSIMPLESPRITEDEF

Ref

SIMPLESPRITEINST - 0x05

Unverified
// SIMPLESPRITEINST
//   TAG "PIZZA_SPRITE"
// ENDSIMPLESPRITEINST

SIMPLESPRITEINST
  DEFINITION "%s"
  SKIPFRAMES ON
ENDSIMPLESPRITEINST

Ref

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

Ref

0x07

Unverified
Might be related to 2DSPRITEDEF

Ref

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

Ref

0x09

Unverified
Related to 3DSPRITEDEF, Maybe the 3DSPRITETAG to map the string. When I added a second ACTION to ACTORINST test, a second 0x09 was added. maybe from the 3DSPRITE %s. bodies are both compressed to 0 1 0

Ref

4DSPRITEDEF - 0xa

Unverified

Ref

0xb

FUN_004079a0

Unverified

Ref

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

Ref

0xd

Unverified

Ref

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

Ref

0xf

Unverified

Ref

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

Ref

0x11

Unverified

Ref

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

Ref

TRACKINSTANCE - 0x13

Unverified
TRACKINSTANCE
  TAG "%s"
  DEFINITION "%s"
  REVERSE
  INTERPOLATE
  SLEEP %d
ENDTRACKINSTANCE

Examples

  • oldeq/EQUIP.t3d/*.SPH

Ref

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

Ref

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

Ref

0x16

Generated from ACTORINST test

Unverified

Ref

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

Ref

0x18

Unverified

Ref

SPHERELISTDEFINITION - 0x19

Unverified
SPHERELISTDEFINITION
  TAG "%s"
  BOUNDINGRADIUS %f
  SCALEFACTOR %f
  NUMSPHERES %d
  SPHERE %f %f %f %f
ENDSPHERELISTDEFINITION

Ref

0x1a

Added by 3DSPRITEDEF

Unverified

Ref

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

Ref

0x1c

Unverified

Ref

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

Ref

0x1e

Unverified

Ref

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

Ref

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

Ref

WORLDTREE - 0x21

Unverified
WORLDTREE
  NUMWORLDNODES %d
    WORLDNODE
      NORMALABCD %f %f %f %f
      WORLDREGIONTAG %d
      FRONTTREE %d
      BACKTREE %d
    ENDWORLDNODE
ENDWORLDTREE

Ref

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

Ref

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

Ref

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

Ref

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

Ref

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

Ref

0x27

Unverified

Ref

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

Ref

ZONE - 0x29

Unverified
ZONE
  TAG "%s"
  NUMREGIONS %d
  REGIONS %d ...%d
  USERDATA "%s"
ENDZONE

Ref

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

Ref

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

Ref

0x2c+

I believe WLDCOM.EXE stops at 0x2b
Edit this page on GitHub Updated at Tue, Aug 1, 2023