Installed and tested with a few projects, no problems with those so far
Changelog
Upgrade 6.0
===========
PUBLIC BETA 3 - 150306
Information
-----------
* Updated all DLLs to use the new December 2005 runtime version of DirectX
* On average 250% smaller executables on builds that include 3D commands (when exclusions used)
* Open the SETUP.INI in the compiler folder to specify which DLLs to exclude to reduce your executable size
* If you have problems double clicking DBPRO files to indirectly open the editor, simply re-associate the file to the IDE
* If you want to load 'ADPCM' based WAV files, use LOAD MUSIC and PLAY MUSIC/STOP MUSIC (as it is codec based)
* The standard DBPro Windows Mode is 32-bit by default. Use SET DISPLAY MODE to change this default setting
* Some changes have been made to the window creation and display updating code to allow for cleaner operations
* Executables are now compatible with igLoader, so as long as the original initial window size is maintained
Add-On Information
------------------
* The AdvancecTerrain Plug-in DLL is included with this Upgrade, as it internally requires new DBO structure to function
Help System
-----------
* Improved Help System in CHM format
* Replaced 'functionality' examples with 'practical example' of a simple technique per command set
* Fixed filenames of #constant and #include so they link correctly for HTML viewing. Changes to keywords.ini and keywords105
Compiler
--------
* Assignment operators that accidently have a comma delimited R-value will produce the correct error message
* When global var1 as integer = 2 : global var2 as integer = 5 used, the second global declaration was ignored
* To further support legacy behaviour, DIM and GLOBAL DIM inside functions are treated as global (LOCAL DIM is local)
* Can no longer accept $#£ and other strange names as variables, confusing the compiler
* CONSTANT command can now handle ' comments after the declaration of the value
* The NOT condition operator no longer operates on the first bit. It acts in reverse of IF X, so X=0 is true, else false
* Compiler no longer confuses CALL DLL with and without brackets, allowing no possible return value corruption
* Compiler will no longer allow type B to be part of type A declaration if type B declaration is below type A
* Using arrays for subscripts into other arrays no longer gets confused with multi-dimensional subscript arrays
* Icon management overhauled to use 256 colour icons only (32x32 and 16x16) - no icon corruption now
* Conditional X XOR Y operand now parses okay
* Sometimes the compiler would crash from memory-read-failure when making the executable, now fixed
* Error is produced when duplicated CONSTANT name is used
* If ENDTYPE not terminating TYPE declaration, the compiler will report its absense rather than continue compiling
* Declaring a variable twice in a function will now result in a compiler error
* Comment symbol or REMARK inside speech marks whilst traversing for constant replacements no longer errors
* Using an open bracket inside a speech mark of a condition that comprises of other brackets no longer confuses compiler
* If your program hits a FUNCTION declaration mid-execution, an error will now report to warn you of this illegal activity
* Have updated the activation code use a new MD5.DLL in the compiler folder, and is not longer MFC80 dependent
* Added extra check to ensure FOR NEXT variables are not complex data types, which are not allowed to be used in this way
* Can no longer add #CONSTANTINE without the compiler detecting it and reporting an error
* Added more error trapping around the executable creation area to detail bug reports in this regard
* Removed dependence on any class or window name for the compiler to provide feedback throug the "DBPROEDITORMESSAGE" filemap
* Speech marks in code comments using '`' symbol no longer confuse the compiler declaration section
* Error reporting for duplicate commands in two compiler DLLs improved to show the two DLLs conflicting, and full command description
* Two new error traps added in cast left and right operands throw a low-level error via the 'DoValue::' internal message
General
-------
* New Compiler supporting new licensed plugins
* DBO Format Changed - Variety of small bugfixes may impact on prior program functionality
* Fixed INPUT command to detect BACKSPACE key to restore it to correct functionality
* when DIM twice (redim) the size of the array remains the same if an identical size is passed in
* If try to create a LOCAL DIM, sometimes corrupt stack data can cause a crash, now fixed
* EXECUTE FILE last parameter now continues without waiting for end of process if set to zero
* READ BYTE, READ WORD and READ LONG can now accept byte, word and dword arrays respectively
* Updated the SETUP.INI so that no DLLs are added to the EXCLUSION group
* MOD operator now allows floating point values to be passed in as parameters (internally uses the FMOD function)
* CEIL() and FLOOR() functions added for greater math management
* SET DISPLAY MODE now has an additional property to force VSYNC on or off (cap to 60fps or not)
* DBPro Executables now check whether DirectX has been installed, and reports an error if not present or old version
* Updated KEYWORDS.INI in original editor keywords file (since updated in keywords105.ini) for the NET MESSAGE STRING$()
* Changed DBO writer to correct the size of the DWORDS for tokens 117, 118 and 119 (no functional impact)
* Added SYNC SLEEP Flag command, where a Flag of one will force a Sleep(1) command within the DBP windows message pump
* Added runtime error to prevent multidimensional arrays from being used by stacks and queue based commands
Basic3D
-------
* Fixed Shader Parser to recognise RESOURCENAME and RESOURCETYPE fields adding more compatibility with DXSAS
* MAKE MESH FROM OBJECT no longer crashes randomly (fixed in ResizeRawMeshList)
* OBJECT SIZE (x/y/z) reverts to the original behaviour
* ADD/REMOVE LIMB no longer leakes 8K per transaction - such applications will not slow down due to this
* Commands which modify the UV data of objects does so perminantly - so CLONE OBJECT will reflect the latest UV data
* Officially added SaveAnimation, AppendAnimation and SetAnimationMode to the 'obsolete commands' list
* Fixed collision bug causing loaded offset objects to collide/hit even if rescaled
* Loading X files now supports two additional UV layers through the FVFData token (for lightmap/detail mapping)
* Extended the SCALE AND SCROLL TEXTURE commands to include a stage parameter for access to the UV data at stages 1 and 2
* Added additional parameter to TEXTURE OBJECT called 'Ignore Sorting' - TEXTURE OBJECT Obj,Stage,Tex,NoSort
* CHANGE MESH no longer destroys texture and material information
* Shadows improved for more accurate CPU shadows and added a stencil shadow shader for animated meshes
* CLONE OBJECT now handles multi-material meshes as well as regular single texture per mesh structures
* SET OBJECT DIFFUSE can now be used on INSTANCED OBJECTS, but if ALPHA MAPPING used, carry alpha in diffuse value
* Extra optional added to SET OBJECT DIFFUSE Obj,RGB,Mode, where a mode of 1 will force vertex data diffuse change
* Fixed collision so that POLYGON vs SPHERE works correctly, even if polygon is second and sphere is first object specified
* Repeated SCALE OBJECT commands no longer interfere with object radius max size and culling operations
* LOCK VERTEXDATA FOR LIMB now has an extra mode 2, which will update the internal 'good' copy of the data (for saving DBO)
* LOAD OBJECT has an additional parameter to control whether the textures internally load are a reduced size than original
* EXCLUDE OBJECT can make DELETE OBJECT fail, now deletes the object completely
* Added new error to warn if an object creation attempt resulted an object that was too large (MAKE OBJECT SPHERE 1,1,200,200)
* MAKE OBJECT can now handle raw meshes passed in that exceed the 65535 vertex index limit (by not using an index buffer)
* SCROLL and SCALE OBJECT TEXTURE no longer affects texture stage data that does not exist, causing strange scaling issues
* SET SHADOW ON now handled the Mesh Number and casts a shadow using the passed in mesh as the original casting geometry
* Two optional new parameter additions to GET LIMB TEXTURE and LIMB TEXTURE NAME to specify the texture stage
* Fixed leak in INSTANCE OBJECT which failed to release a memory allocation used for storing mesh visibility
* OBJECT HIT command would get confused and constantly report a HIT if two collision hit checks happened in the same cycle
* SAVE MESH now reports an error if a mesh greater than 65535 vertices are used for a single mesh
* LOAD MESH is almost direct wrap to the DirectX function 'D3DXLoadMeshFromX', and any failures in loading is the fault of DirectX
* PICK OBJECT now has an additional parameter to ignore the current camera view and position (ideal for locked object picking)
* SMOOTHING an OBJECT no longer interferes with the vertex positions of the geometry
* When models are loaded, the animation based keyframed bounds (mostly skipped by earlier speed-up), is not filled with viable data
* When use the MAKE OBJECT COLLISION BOX command on an animated model, the box specified is retained for collision use
* Added new command SYNC MASK which acts as a filter to render or ignore any of the first 32 cameras starting with camera zero
* Fixed several Basic3D Example bugs, including the sticking automatic camera and object collision from the added rotation-bug-fix
* Fixed the creation of the 3D pyramid from automatic effect loading of shaders that pre-date the declaration of the vertex format
Input
-----
* ENTRY$() command reverts to pre-U58 state where backspaces are treated as regular asc characters
* Added ENTRY$(1) new parameter which switches the entry$() command to automatically delete if backspace pressed
* When using INPUT commands, expect a 32K chunk of memory to be consumed every few seconds while the buffers fill up
* SET CONTROL DEVICE now has an additional parameter to select based on index as well as name (same-name joysticks)
* STR$(x,decimal places) additional parameter to control how many decimal places should be returned in the value string
Adbaced Matrix
--------------
* Restored position functions (by removing legacy EX additions to the decorated names in the string table)
Memblock
--------
* Fixed a bug that caused MAKE MEMBLOCK FROM X not release the last memblock if it existed at the time
Multiplayer
-----------
* Fixed bug caused by checklist that cannot find net sessions crashing whilst attempting to fill a null string
Music
-----
* SET MUSIC VOLUME now works fine with CD Music (by controlling the master mixer volume of the primary device)
Matrix
------
* Fixed SCROLL MATRIX commands to wrap height data perfectly in all four directions, does not skip a line of data now
Particles
---------
* Changed particle size attenuation, now works with distance from camera, may cause size change behaviour in U59 programs
* SET PARTICLE EMISSIONS now works with drift particles such as FIRE and SNOW effects
Terrain
-------
* Added new command DESTROY TERRAIN (the inverse of BUILD TERRAIN), not to be confused with DELETE TERRAIN
* Added new command called UPDATE TERRAIN 1 (optional parameter which switches off the high-level culling of terrain) for multiple camera use
Sprite
------
* SPRITE WIDTH/HEIGHT now report correct size if SIZE SPRITE used, and also if GET IMAGE changes image used by sprite
Sound
-----
* Added support for ADPCM WAV format (microsoft compressed WAV) using ACM conversion (other formats too)
* Added internal debug markers to the LOAD SOUND command in case the DMEM issue surfaces in the future
System
------
* When using SYSTEM DMEM AVAILABLE(), be aware that it uses the DXDIAG framework, which can be slow to initialise
* Added extra error checks in SYSTEM DMEM AVAILABLE() in case DXDIAG info not availabe
Enhancement Pack
----------------
* The Speech and EAX commands of the free expansion pack DLL are not supported, and will result in a missing function if used
* When installing the full expansion pack/upgrade, ensure the free expansion pack is removed from the plugins-user folder
Advanced Terrain
----------------
* Important change/fix. Texture Map and Height Map where not aligned. In U59, you had to rotate your heightmap 90 degrees anticlockwise!
* When making a lightweight terrain and saving it (minus detail map index), no longer crashes on reloading it
* Additional parameter for BUILD TERRAIN allows the automatica filtering to be switched off (no smoothing) - good for tiling terrains
Cloth & Particle
----------------
* AddKey to size effector returns the correct index of the created keyframe, no longer 0, 0, 1, 2, etc
* POSITION OBJECT when used on an emitter could be reset, because a vecPosition field was not being fully transported back
* Fixed SET RADIAL EMISSIONS command by uncommenting the code that sets the flags - not sure why it was excluded
* Added code to ensure the object world matrix is used in the emitter object, such as the ZROTATE OBJECT intermitent bug
* Code exited to reset position, scale and rotation on the first update physics call, not disabled to retain obj positions
MIKE
----
* Can you update the DBO documentation if anything for Upgrade 6.0 (look at object/mesh/frame structures)
* Can you write the updated documentation for the MEMBLOCK FROM SOUND using code extract below:
// mike - 300305 - updated sound layout
*((DWORD*)gpMemblock[mbi]+0)=wfx.wFormatTag;
*((DWORD*)gpMemblock[mbi]+1)=wfx.nChannels;
*((DWORD*)gpMemblock[mbi]+2)=wfx.nSamplesPerSec;
*((DWORD*)gpMemblock[mbi]+3)=wfx.nAvgBytesPerSec;
*((DWORD*)gpMemblock[mbi]+4)=wfx.nBlockAlign;
*((DWORD*)gpMemblock[mbi]+5)=wfx.wBitsPerSample;
*((DWORD*)gpMemblock[mbi]+6)=wfx.cbSize;
* Terrain Pack - new command requires documentation DESTROY TERRAIN
HELP ADDITIONS FOR RICH GENERAL
-------------------------------
FAQ FOR BEGINNERS:
File Association : If you have problems double clicking DBPRO files to indirectly open the editor, simply re-associate the file to the IDE by right clicking the file, selecting properties, click CHANGE and select the DBPro Editor Application
To save too many iterations, the compiler will process TYPE declarations and FUNCTION declarations in the same sweep, so if you place the TYPE ENDTYPE command after the function, the function will not be able to compile as it will not know what the TYPE is. Other compilers to process TYPEs before FUNCTIONs. Make sure you declare all your types before declaring any functions that use them.
Comments can be created as an appendage to an existing line, or as a command in itself. To append a comment to a line, simply use the ` symbol before adding the descriptive text you wish to apply. Comments can also be created as standalone commands using the REM statement, which you can abbreviate to the ` symbol if you wish. You should only place 'appendage' comments inside type declarations or select statements. You can place a command comment anywhere a normal command can go. Common mistakes is to try and place REM commands inside TYPE or SELECT statements, which the compiler finds illegal.
The compiler only supports the creation of executables that contain the following icon formats; 16x16 with 16 colours, 32x32 with 16 colours and 32x32 with 256 colours. Icons which are either specified through the IDE for use as an executable icon, or imported from a third party icon replacing utility must be aware of these basic icon requirements. Moving outside of these three icon slots may produce undesirable results.
The compiler will treat an ambiguous name as an array before a user function, which can share similar syntax. A name will be treated as a user function call only if there is a FUNCTION declaration elsewhere in the program.
TYPE declarations must precede code that uses those types. In the case of included files, you must make sure the type declaration is encountered before any of the included files subroutines or functions are called.
Error messages can sometimes be confusing if read out of context. Here is an explanation of an error that might cause confusion;
CODE: print "X: " + camera position x() + " Y:"
ERROR: Types '$$1' and '@$F0' are incompatible at line X.
EXPLANATION: This means the string and value returned from the command cannot be added. The $$ symbol refers to a string, the @ refers to a temporary variable internally required by the compiler and the $F0 is a temporary float value also generated internally by the compiler.
Literals are only defined as integer, float or string. If you wish to perform maths on other data types such as double integer or double float, you must store your literal values inside a variable of the desired type. For example instead of the code X AS DOUBLE INTEGER : X=10^10 you must code X AS DOUBLE INTEGER : A AS DOUBLE INTEGER : A=10 : X=A^A
When assigning a literal value to a variable in one command such as GLOBAL VAR = 42, this is acceptable. You cannot however feed a value from an expression to initialise a variable in this way. Instead break the code apart, such as GLOBAL VAR : VAR=RGB(0,0,0)
Variable Declarations, when used by advanced users may wish to know that by using the $ dollar sign, you can access internal temporary variables used by the program to conduct intermediate calculations. For example $L0 would give you the first intermediate temporary integer of any calculation that required it, such as IF (A+B)=3 then PRINT "OK". The calculation result of A+B is stored in $L0. The full specifications of these methods are not published and unsupported, though can provide some useful alternatives.
Be aware that multidimensional arrays cannot be accessed by stack and queue commands. Use single dimension arrays for these type of commands.
HELP ADDITIONS FOR RICH FOR COMMANDS
------------------------------------
3DMaths: Specify where ANGLES are specified, that these angles are specified in RADIANS, not DEGREES!
AUTOMATIC CAMERA COLLISION:
Spheres and boxes are solid objects, and so collision can only occur when they collide together. When an object is entirely within another object, even though the geometry is not touching, the collision is still valid as the larger object would be a solid construct.
EXCLUDE OBJECT ON and OFF : This will remove the object physically from any loops involving multi-object checking, used to increase performance in scenes that use a large quantity of redundant objects in memory.
LOAD OBJECT:
The optional load object parameter controls how the data loaded from the model is handled, and which behaviour is required:
// 0-DBV1 legacy behaviour
// 1-DBPro : out of the box new pro standard
// 2-Leave states alone to keep material/diffuse effects
// 3-Leave states alone to keep material/texture effects
An additional parameter to control whether the textures that load internally are automatically reduced by a specified factor:
// 0-No Reduction
// N-Divide By N
SAVE OBJECT:
It is worth noting that before saving, the vertex data is restored to the last god copy before animation changed the data, so that the model can be saved out correctly. Unless you used the special mode 2 for the 'lock vertexdata for limb' command, any changes with this command will not appear.
SET SHADOW SHADING ON:
Shader based shadows cannot be used in combination with animated bone models. You must use CPU based shadow rendering for this.
To change the offset to reduce/increase self-shadowing artifact described above, simply copy the stencilshadow.fx from the effects folder of the compiler directory, and paste it into your project folder. Open it up and you can change the shader near the bottom to a value other than 0.1 to choose your own value.
MAKE OBJECT SPHERE:
Ensure what specifying additional resolution to the object, you do not exceed the maximum size allowed, which depends on the resulting vertex data required to create the object. Normally, a single limb within an object has a maximum size of 21845 polygons.
TEXTURE OBJECT:
If the object contains material information from a loading event, this command will erase that material information in favour of a clean texturing of the object. Ensure material settings are applied after the the texture command to retain them, or ensure the object is loaded with both texture and material information pre-set.
An additional property TEXTURE OBJECT Obj,Stage,Tex,NoSort - which skips the texture resorting for quicker RT execution
TURN/PITCH/ROLL OBJECT:
Be aware that you cannot use EULER ANGLES in combination with this command. Euler angles are accessed with the ROTATE OBJECT command, whereas Freeflight commands are accessed with the TURN, PITCH and ROLL commands.
GET IMAGE:
You cannot grab an image while the target pixels are being locked by the LOCK PIXELS command, as it is not possible to read from a surface that is using the fast write only lock method on the pixels.
SET CONTROL DEVICE:
Additional parameter can be used to select the secondary joysticks attached to the computer with the same name.
POINTERS in PRINCIPALS:
Add that the indirect assigning only works with DWORD values as limited functionality for memory access.
LOAD IMAGE:
If the parameter is set to two, the image is loaded as a cubemap texture, useful for shader implementation.
ENTRY$() COMMAND:
The entry buffer command automatically handles the collection of text typed in by the end user. By proving the extra parameter in the command ENTRY$(1) the system will automatically delete characters if the backspace key is pressed.
OBJECT SIZE X/Y/Z:
Additional parameter OBJECT SIZE ( ID, ActualSize ) - If ActualSize is set to one, the scale of the object is taken into account when returning the size of the object.
SET OBJECT DIFFUSE:
Can now be used on INSTANCED OBJECTS, but if ALPHA MAPPING used, carry alpha in diffuse value.
SET OBJECT TRANSPARENCY:
The transparency modes are used to control when and how the object is drawn into the scene, and are described below:
// Transparency Modes
// 0 - first-phase no alpha
// 1 - first-phase with alpha masking
// 2 and 3 - second-phase which overlaps solid geometry
// 4 - alpha test (only render beyond 0x000000CF alpha values)
// 5 - water line object (seperates depth sort automatically)
// 6 - combination of 3 and 4 (second phase render with alpha blend AND alpha test, used for fading LOD leaves)
LOCK OBJECT:
Be aware that locking objects performs a relationship between the object and the screen, not to a specific camera. Moving the camera, or creating new cameras will not affect the visibility and placement of a locked object, nor will the object return world space coordinates when locked to the screen.
MAKE OBJECT FROM LIMB:
It is important to note than when you extract a limb from an object, any shared scaling or rotating from the parent frames will be lost, and you will have the pure frame, without any shared influences.
LINK LIMB:
Add that when you ADD LIMB, all limb index values are re-ordered to reflect the new hierarchy, so old limb numbers will not be the same as they where before the LINK LIMB command.
GET LIMB TEXTURE:
LIMB TEXTURE NAME:
Optional parameter will let you specify the texture stage of the limb you have specified
GLUE OBJECT TO LIMB:
An additional parameter allows a specific type of glue operation:
// mode 0 - regular glue object to a limb (default behaviour)
// mode 1 - wipe out frame orient, leaving position only (avoid hierarchy frame problems)
// mode 2 - wipe out child object position for accurate limb location placement
SET BLEND MAPPING ON Command:
// BLEND MODE PARAMS
// iStage 0-7
// iImage Index
// iTexCoordMode
// 0 - Regular UV Stage Match
// 1 - Sphere Mapping UV Data
// 2 - Cube Mapping UV Data
// 3 - Steal UV Data From Stage Zero
// 10-17 - Take UV Data From Stage.. (10=0,11-1,etc)
// iBlendMode
// D3DTOP_DISABLE = 1,
// D3DTOP_SELECTARG1 = 2,
// D3DTOP_SELECTARG2 = 3,
// D3DTOP_MODULATE = 4,
// D3DTOP_MODULATE2X = 5,
// D3DTOP_MODULATE4X = 6,
// D3DTOP_ADD = 7,
// D3DTOP_ADDSIGNED = 8,
// D3DTOP_ADDSIGNED2X = 9,
// D3DTOP_SUBTRACT = 10,
// D3DTOP_ADDSMOOTH = 11,
// D3DTOP_BLENDDIFFUSEALPHA = 12,
// D3DTOP_BLENDTEXTUREALPHA = 13,
// D3DTOP_BLENDFACTORALPHA = 14,
// D3DTOP_BLENDTEXTUREALPHAPM = 15,
// D3DTOP_BLENDCURRENTALPHA = 16,
// D3DTOP_PREMODULATE = 17,
// D3DTOP_MODULATEALPHA_ADDCOLOR = 18,
// D3DTOP_MODULATECOLOR_ADDALPHA = 19,
// D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
// D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
// D3DTOP_BUMPENVMAP = 22,
// D3DTOP_BUMPENVMAPLUMINANCE = 23,
// D3DTOP_DOTPRODUCT3 = 24,
// D3DTOP_MULTIPLYADD = 25,
// D3DTOP_LERP = 26,
LOAD MESH:
This command is almost a direct wrapper to the DirectX function 'D3DXLoadMeshFromX', and this function will not load all forms of X file. If you experience problems loading a mesh using this command, try the alternative method of LOAD OBJECT "mesh.x",1 : MAKE MESH FROM OBJECT 1,1 : DELETE OBJECT 1
SET GRAPHICS CARD:
This command has been perminantly discontinued from Upgrade 6.0 onwards (in fact it has never worked and never will). It
was a legacy command from YEARS ago - when two graphics cards (not SLI) was common.
CEIL() and FLOOR():
Rounds down to the nearest whole, or rounds up to the nearest whole.
Force Water Effect:
This command is NOT an action forced on the controller, but an influence against the natural movement of the main joypad by the end user. Only some devices offer this counterforce. Counterforce will not be available in such devices as rumble pack gamepads.
DELETE OBJECT:
When you delete an object, or create for that matter, the engine must recalculate an internal list used for texture sorting, which will make a performance hit on the CPU. It is therefore recommended that you avoid creation/deletion code in your time critical loops such as the main game loop.
PICK OBJECT:
Be aware that there may be multiple cameras when picking objects. To make sure you are selecting the correct screen object, use the SET CURRENT CAMERA command for the screen being rendered by that camera view.
Do not use extreme camera range or object distances with this command, as this increases the inaccuracy of the raycast line being used internally.
CREATE ANIMATED SPRITE:
Add 'frames' to parameter description; Sprite Number, Filename, Frames Across, Frames Down, Image Number
PLAY SPRITE: The frame number is incremented with each iteration of the PLAY SPRITE command. Therefore Play Sprite must be called for each frame of the animation to be displayed
SET DISPLAY MODE:
It is vital to know that when this command is called, everything is deleted, including music and sound, so you must re-load all your assets after a call to this command.
Now has an additional property to force VSYNC on or off (cap to 60fps or not). Using SYNC RATE is something of a hack when compared to this new feature which creates a perfect VSYNC between the render and the monitor. The downside is that the VSYNC is fixed to the refresh of the monitor.
Be aware that if the rendering area is stretched (usually via window desktop and window fullscreen modes), then it will not be a true framerate returned by 'screen fps()'
SET WINDOW OFF:
The standard DBPro Windows Mode is 32-bit by default, so using the SET WINDOW OFF command will default to a 32-bit resolution.
SET MUSIC SPEED:
Set music speed does not work with CD devices, such as music CD's played using the music commands, as the operation of the CD player is through limited set of Multimedia Control Interface commands via the operating system.
DELETE DIRECTORY:
You cannot delete a directory if there are files contained inside it, this is a precaution against accidental deleting of important files on your hard drive.
SET CONTROL DEVICE:
Only two devices are supported to run simultaniously. The standard JOYSTICK commands, and the additional CONTROL DEVICE assigned by this command. Use CONTROL DEVICE commands to obtain the data from the set device, not the JOYSTICK commands.
SYNC SLEEP Flag:
This command will allow the executable to become friendly Windows application. Setting a flag of one will force a Sleep(1) command within the DBP windows message pump.
SYNC MASK dwMask:
This command will set the engine to ignore certain cameras, thus saving performance when the cameras are not needed. The parameter is a DWORD mask, which by default is set to 0xFFFFFFFF. You can adjust this mask to filter out the cameras you do not wish to render. Camera zero is represented in bit 1, camera one in bit 2, and so on. A bit state of zero means the camera will not be rendered, and a bit state of 1 means the camera will be rendered, as is the default behaviour.
PRINT:
TEXT:
CENTER TEXT:
This command can only produce text on a single line, so you should refrain from using carriage return characters in the text string. Any carriage return symbols will be ignored.
PERFORM CSG INTERSECT/DIFFERENCE/UNION:
This command can only be used with models that use a tri-list mesh format, which excludes the default primitives provided for spheres and cylinders.
PERFORM CHECKLIST FOR OBJECT LIMBS:
Be aware that most objects have at least one limb, usually the root limb that holds the initial mesh you see on screen. When referencing the limbs by number, the limb index starts at zero. This index differs from the index used to search the checklist, which has an index starting at one.
SET IMAGE COLORKEY:
Be aware that setting the color key for the purpose of transparency will not work on images based on the PNG, TGA and DDS file format as these carry their own alpha channel and describe their own pattern of transparency.
DISABLE SYSTEMKEYS:
Be aware that this is not supported on Windows XP, and is not recommended for use on Windows 98 and ME.
For game/demo music for YOUR PC productions visit:-www.futuredevelopments.org.uk