Upgrade 5.8
Information
-----------
* Created a series of snippet examples that demonstrate all the fixes from the MAR05BUGLIST
General
-------
* Fixed debugger crashes so that large programs can be traced and stepped through
* Sured up compiler to allow better integration with debugger
Compiler
--------
* Booleans and other sub-DWORD sized varaibles can now be used as condition parameters
* Indirect addressing now allows you to assign, read and print the value, ie print *ptr
* Indirect addressing such as *ptr now also works for basic conditions
* Better parsing of conditions where brackets are used inside speed marks
* You can now have speech marks, of an odd number in the REMSTART/REMEND block
* Speed improvements - open setup.ini in the compiler folder, add a group named "[DIRECTIVES]", and an item below this "RemoveSafetyCode=Yes", recompile your program, this solves problems where loops may cause slow down and may significantly increase frame rates
* Host of fixes centered around comments beig parsed, variable handling and error runtime data
* Quotes allowed in REMSTART REMEND block, and REMBLOCK also allowed in SELECT CASE statement
* Changed compiler error 57 to better describe the need to have same function return types
* Can now place comments onto the end of a function declaration
* Fixed parsing of declarations so initialisation values are retained
Basic3D
-------
* Collision against sphere objects (tristrips fixed), no longer crashes out
* SAVE OBJECT no longer saves animated vertex data - uses original data
* LOAD OBJECT no longer crashes if the file contains some forms of invalid data
* X Files can now be loaded with their vertex colours taken into account
* Setting the material diffuse/ambient/etc components will now affect models using multimaterial data
* When transparency is used, zwrite is no longer reset (ignored)
* Instances that use animating bone objects now animate even when source object is not visible
* Deleting objects that are used as shadows or reflections no longer lingers
* Fixed problem of NOZDEPTH object causing ghostMatrix to render with no Zbuffer information
* In respect of the above command DOTPRODUCT3 bump mapping once again possible
* OBJECT IN SCREEN commands now account for the multiple camera viewport settings
* When mesh bounds are created their buffers are updated straight away meaning they will be drawn instantly
* Textures are now allowed if the shader does not specify the useTexture flag in LOAD EFFECT
* Animation now updates the boundbox from pre-created boundsarray (for speed), and fixed from B2
* Added extra code which uses the new exclusion flag of objects to skip code to speed up program
* Pick object now ignores culled polygons unless the CULL flag is set to zero
* CONVX now loads meshes even if the materiallist has only a single material entry (X file fix)
* Put back ability for shaders using PS and not specifying internal textures to work again!
* Additional commands upgraded to public release, undocumented for U58.
For help, examine the NewU58Commands.DBA example provided:
rem Vertex Data Commands
LOCK VERTEXDATA FOR LIMB ObjectNumber, LimbNumber
LOCK VERTEXDATA FOR LIMB ObjectNumber, LimbNumber, LockMode
LOCK VERTEXDATA FOR MESH MeshNumber
ADD MESH TO VERTEXDATA MeshNumber
DELETE MESH FROM VERTEXDATA VertexStart, VertexEnd, IndexStart, IndexEnd
SET VERTEXDATA UV VertexIndex, U, V
SET VERTEXDATA UV VertexIndex, Stage Number, U, V
SET VERTEXDATA NORMALS VertexIndex, NX, NY, NZ
SET VERTEXDATA POSITION VertexIndex, X, Y, Z
SET VERTEXDATA DIFFUSE VertexIndex, RGBValue
n=GET VERTEXDATA VERTEX COUNT()
n=GET VERTEXDATA INDEX COUNT()
n=GET VERTEXDATA POSITION X(VertexIndex)
n=GET VERTEXDATA POSITION Y(VertexIndex)
n=GET VERTEXDATA POSITION Z(VertexIndex)
n=GET VERTEXDATA NORMALS X(VertexIndex)
n=GET VERTEXDATA NORMALS Y(VertexIndex)
n=GET VERTEXDATA NORMALS Z(VertexIndex)
n=GET VERTEXDATA U(VertexIndex)
n=GET VERTEXDATA V(VertexIndex)
n=GET VERTEXDATA U(VertexIndex, Stage Number)
n=GET VERTEXDATA V(VertexIndex, Stage Number)
n=GET VERTEXDATA DIFFUSE(VertexIndex)
UNLOCK VERTEXDATA
rem CSG Commands
PERFORM CSG UNION TargetObject, BrushObject
PERFORM CSG DIFFERENCE TargetObject, BrushObject
PERFORM CSG INTERSECTION TargetObject, BrushObject
PERFORM CSG UNION ON VERTEXDATA BrushMesh
PERFORM CSG DIFFERENCE ON VERTEXDATA BrushMesh
PERFORM CSG INTERSECTION ON VERTEXDATA BrushMesh
rem New Object Commands
SET GLOBAL OBJECT CREATION SharedVBMode
SAVE OBJECT Filename$, ObjectNumber
CLONE OBJECT ObjectNumber, SourceObject, ShareOriginalData
EXCLUDE OBJECT ON ObjectID
EXCLUDE OBJECT OFF ObjectID
rem Texture Stage Management
SET OBJECT TEXTURE ObjectNumber, StageNumber, TexturingMode, MipmapFlag
SET OBJECT FILTER ObjectNumber, StageNumber, Flag
SET BLEND MAPPING ON ObjectNumber, StageIndex, ImageNumber, TexCoordMode, BlendMode
rem Shadow Commands
SET SHADOW SHADING ON ObjectNumber, MeshNumber, ShadowRange, UseShader
SET SHADOW SHADING OFF ObjectNumber
SET SHADOW POSITION Mode, X, Y, Z
rem Extra Collision Support
SET OBJECT FRAME ObjectNumber, Frame, RecalculateBounds
CALCULATE AUTOMATIC COLLISION
Image
-----
* Confirmed that you cannot save successful BMP files in FullScreen mode (DX9.0c bug)
* Texture Flag of 2 in LOAD IMAGE will now allow CUBE maps to be loaded directly
* Updated Image DLL to save out all sizes of bitmaps, including those not to a power of two
* LOAD IMAGE now brings back alpha of images using SET IMAGE COLORKEY during pixel perfect
Camera
------
* MAKE CAMERA now sets the camera ID internally so SET CURRENT CAMERA is not depended upon
* Fixed camera angle readout so it matches the way the object freeflight angles read out
Animation
---------
* Animation - the set animation speed command only applies to mpg and avi, wmv is currently not supported
* Animation - set animation volume command, help is incorrect, full volume is 0 and lowest volume is -10000
Sprite
------
* Sprite - when using animated sprites the image dimensions are retained resulting in no more stretching
* Sprite - alpha testing disabled with sprites, stops problems with sprites not showing when objects are in certain transparent modes
* Sprite - animated sprites updated to use correct transparency
Light
-----
* Lights - fixed a problem with fog colour
Music
-----
* Music - no error shown when volume is above 100, also note that the maximum volume value is 100, anything over this makes no difference
Input
-----
* Input - mouse z value no longer reset when the mouse is positioned manually
Basic2D
-------
* Basic 2D - dot and point commands can now be used on bitmaps that are larger than the screen resolution
* Basic 2D - and modified so the draw commands do not overwrite memory of bitmap zero (screen)
Sound
-----
* Sound & Memblocks - when creating memblocks from sounds and sounds from memblocks the data format is retained so the sounds are played back correctly. this has altered the memblock format
Text
----
* Text no longer corrupts when change the text size and text size texture plate use improved
Multiplayer
-----------
* Multiplayer - fixed problem with net buffer not moving onto the next message in the queue
System
------
* Setting the windows layout to a caption and popup no longer leaves corrupt window borders
Multiformat Support
-------------------
* HL BSP - tested object and bsp collision working together
* Q3 BSP - number of polygons drawn is updated for global statistics
* MD2 - updated animation handling code
* MD3 - updated animation handling code
* MDL - updated animation code
* 3DS - improved loading code
Advanced Terrain Expansion Pack
-------------------------------
* Terrain - multiple cameras now supported
* Terrain - if you want to hide limbs manually then don't call the update terrain command
* Terrain - save terrain command implemented
* Terrain - load terrain command fully implemented
* Terrain - culling now takes into account terrain position
* Terrain - collision data is updated when a terrain has been repositioned
* Terrain - tested shaders with terrain, not come across any problems
* Terrain - fixed a crash when display mode was changed
* Terrain - default values now applied, no longer crashes if all functions are not called
* Terrain - when loading a saved terrain note that you cannot adjust it's properties and rebuild, calling "build terrain" on a loaded terrain will casue an error message
* Terrain - error message shown on "load terrain" command if non standard extension used
Cloth & Particles
-----------------
* The color effector add key command now returns the correct value
Enhancement Pack
----------------
* Speech - the speech commands no longer pause until finished allowing programs to continue with execution
* Ogg Vorbis - volume can now be set correctly
* Ogg Vorbis - get state returns the right value
* File Blocks - if you add a file to a block and the file already exists it will be overwritten, previously the behaviour was to create an additional copy
* File Blocks - new command called "remove file from block ( id, file )"
DBO
---
* DBO - updated DBO documentation
Upgrade 5.9
Information
-----------
* Released two new and unsupported DLLs called ODE and MultiplayerPlus (FPSC support)
* New commands added to U5.9 but undocumented for this release (FPSC support only)
* In the event of a message about duplicated terrain commands then delete AdvancedTerrain.dll from the plugins-user folder
* New examples in the projectsu59examples folder - demonstrates collision and ODE
Information about Extras (supplimentary release)
----------------------------
* Released the DBPRO DLL source code to the ODE, making it open source to the community
* Included latest header files for the DBO format and GlobStruct
FPS Creator Game Engine Source Code
-----------------------------------
* Released the FPSC game engine source code fully compatible with U5.9 upgrade
* Note that the FPSC game engine relies on functionality provided by the Enhancements expansion pack, if you do not have this pack the source code will not compile, you can find out more information about the expansion pack here http://darkbasicpro.thegamecreators.com/?f=enhancementpack
* For those who already own the Enhancements pack you will need to update to the latest version, this can be found in your order history on the web site
General
-------
* Numerous small fixes and changes within several DLLs due to FPSC development
* New command named "calculate object bounds ID", this can be used to calculate an objects bounds for collision and visibility etc.
* Alpha mapping an instanced object no longer forces loss of transparency
* Fog no longer interferes with shaders
* Radius of objects are now updated when "offset limb" is used, this solves the problem of objects disappearing that have been offset
* Deleted lights are now removed completely
* Fixed an issue with "set object" when wireframe state was ignored
* Point camera will revert to Euler rotation automatically
* Instanced objects can now be cloned
* Fixed a problem where cloned objects did not correctly match position data of source object
* Copy bitmap command now updates size correctly on both axis
* Resolved a potential crash on "make memblock from file"
* The command "create animated sprite" no longer crashes when an invalid image is used
* Animated sprites now use the 1 texture flag by default ( 1 to 1 pixel mapping )
* Error message now displayed on "open to write" if invalid index is used
* When setting an object to another objects orientation the pivot is now retained, you can specify an extra parameter 1 to ignore to ensure the pivot matches the other object
* The command "make mesh from object" no longer crashes after a resolution change
* Instanced objects can now have their own independant alpha settings
* Resolved a crash with certain shader settings
* The size of a sprite can now be updated automatically when their image is changed to match the dimensions of the image by using "set sprite resize 1", this can be disabled with "set sprite resize 0"
* Stopped a possible crash with "sprite collision" not checking for existence of both sprites
* Object looping property correctly updated when animation has stopped
* Alternative "make object plain" command, add extra parameter of 1 to use this
* Instanced objects will use pivot data from source object
* Object size values now take into account any pivot data
* Basic 2D pixel plotter now adds an extra check to ensure not drawing outside of surface bounds
* Changed ink mode on Basic 2D box
* Height of stretch sprite is now updated correctly
* New command for retrieving the priority of a sprite - return integer = sprite priority ( sprite number )
* Sprites no longer cause a crash if the image they reference has been deleted
* Alt tab no longer results in losing meshes
* New bitmap function "set bitmap format" to let you control the format of a bitmap, this is useful for saving alpha data for instance, takes one parameter, -1 will default to normal format, other values refer to D3DFORMAT structure e.g. use format 21 for A8R8G8B8
* Solved a slow down issue on copy bitmap
* Modified some sprite code for animations
* 3D sounds now updated correctly when fastsync is used
* Excluded objects can now be deleted
Upgrade 6.0
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 (no exclusions by default)
* 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
* Be aware that if you are using Windows XP, you must have the Service Pack 2 installed for correct functionality
* Due to changes in DirectX shaders, VSH and PSH files are no longer encouraged for use (removed from Basci3D-2 example)
* The 3DS parser and loader now restricts the texture filename to 255 character max to avoid buffer overruns in related systems
* Added new SETUP.INI directive field called 'LocalTempFolder' when when set to 'Yes', causes the executable to create all TEMP files locally
* Recompiled the new MD5.DLL under Win98 to increase compatibility to that platform
* Registry information improved on install, removed associator from install process (DBPRO files can now be fully double clicked)
* Compiler now prevents trial versions from being used if upgraded by U6 onwards
Help System
-----------
* Improved Help System and updated text to U6.0 commands
* Fixed filenames of #constant and #include so they link correctly for HTML viewing. Changes to keywords.ini and keywords105
* KEYWORDS file updated in the Editor folders FRONTEND and KEYWORDS
* Extra V100 commands added to keyword files to cover such highlights as 'AS STRING'
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. Conditional operator ONLY!
* 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
* 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
* Types are incompatible strings reformatted to mark temp variables using 'TEMP' and removed the confusing @ symbol
* Compiler can handle more aggressive use of REM and REMARK comments, for example inside CASE statements
* Added extra check for numerical first character of function name which is not allowed
* Added support to detect if RESTORE and other label parameter commands, and report the need for a label type
* Fixed bug which caused the executable icon to only copy the first half of the 16x16 version mask, fixed now
* Increased compiler checks to stop UDT arrays from being passed into functions that declare UDT datatypes. Can only pass UDT variables.
* Obscure and deep bug causing some literals of -1 not to be converted to 0xFFFFFFFF (as it used the atoi - possible MSVC8 symptom)
* DWORD conditional operator comparisons re-introduced so that 0xFF < 0x00 returns false
* Compiler now throws error when two ENDCASE statements found in SELECT statement, rather than freezing inside the compiler
* Made sure colon inside speech marks used for the initialization value of a global declaration compiles okay
* Line number error integrity restored when using REMSTART and REMEND in your programs
* TYPE declarations saturated with REM and comment markers no longer fails to construct a valid type when compiling
* Compiler throws a compiler error now if strings are attempted to be subtracted from each other, or other math operations excluding addition
* FOR NEXT loop step value now codes a fast ASM for literal step values and a slower, double-expression ASM for dynamic step values
* Added extra code to protect against icon replacement code not supported in Win98/ME native operating systems (BeginUpdateResource)
* Colons can now seperate constant declarations again
* Array names can no longer be the same as functions, commands or reserved words
* DATA statements now support HEX, OCT and BIN
* Compiler no longer parses a DATA item twice if they match multiple data type formats
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
* DBP no longer tries to decrypt local files if mixed with encrypted files attached to an executable
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
* Added error and avoided crash where extremely large object numbers are used (22 million plus)
* APPEND OBJECT now handles Matrix Data as well as position, scale and rotation. Code missing before and including U59
* Shadow for a stencil rendering no longer is affected by a FOG setting, which causes visual artifacts
* LIMB TEXTURE NAME now returns a blank string rather than NULL when nothing found (better print formatting)
* LIMB TEXTURE NAME returns texture name data for each material within the mesh if multi-material texturing used
* Fixed GHOST OBJECT ON command so that ghost mode 1 now works exactly like DB Classic (src=None and Dst=SRCOLOR)
* Fixed cartoon shading command so that if boned model was animating, the model does not corrupt and distort
* Prevented bump mapping command from crashing when specify a bone based model where the bone vertex data was scewed when the mesh was converted
* LOAD IMAGE now places resources in MANAGED memory, rather than the default
* Amended the automatic collision system so that rotate does not try to assume a sliding logic, and prevents the rotate for clean collision
* Added extra runtime error if the user tries to save a DBPro object without the .DBO extension so vital in allowing the object to be reload okay
* When restoring the mesh of a former object under an effect influence, the old orig-data is released to avoid re-effect corruption
* MAKE OBJECT FROM LIMB now handles the correct mesh from the correct source frame, rather than the biggest mesh from the object
* CHANGE MESH now has new runtime error which does not allow limbs to be specified that do not carry their own mesh data
* The LOAD OBJECT command can now handle very old DBO files saved before the introduction of the additional custom data token (caused crashes)
* Added code for object creation which allows an object with bone information to apply those bone modifications initially (bone stretching by default)
* Resources deallocated when object deleted more aggressively performed to detect and release stray mesh references (make object from limb issue)
* All objects now have instance check so only appropriate commands will work with instanced objects - RE-CHECK YOUR INSTANCE OBJECT code
* Unrotated collision box checks now account for scale, so MAKE OBJECT COLLISION BOX will be affected by SCALE OBJECT
* Bounds calculated on animated models that have a scaling inside the frame hierarhcy now report the accurate size on the X, Y and Z
* Models with a large number of multimaterials and texture stages no longer corrupts the internal render states (causing culling problems)
* No restriction in using Excluded Objects with regular commands, it now only affects the actual rendering of the objects.
* Some 3DS files contain material names that are illegal in X files, converted correctly so more 3DS files can be imported
* Layers for ghosts and locked objects are now seperated so that ghosts can be rendered inside a reflection, for shiny floor trick
* When objects casting shadows are culled off-screen, SCALE OBJECT no longer removes the additional radius factor for shadows cast out of view
* OBJECT SIZE now reports its values as positive, irrespective of whether pivot object transforms the dimensions of the object
* The MAKE OBJECT FROM LIMB command now copies all the texture data information from the source object
* INSTANCED OBJECTS can now again be affected by GHOST OBJECT and ZDEPTH commands
* Models that contain bone information that does not completely tally with frame name data, no longer crashes loader
* CLONE OBJECT now clones all collision and visibility data from the original, including any scale adjusted radius for visibility
* SHOW OBJECT BOUNDS can now revert to box only representation after being used to represent the sphere bounds previously
* EXCLUDED objects no longer receive collision, or interfere with the collision system
* Once more instance and clone objects can be part of the collision system
Image
-----
* The LOAD IMAGE now uses the D3D FORMAT specified in the DDS file, rather than converting to A8R8G8B8 (or equvil)
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
Advanced Matrix
---------------
* Restored position functions (by removing legacy EX additions to the decorated names in the string table)
Animation
---------
* Restored the SET ANIMATION VOLUME to the original code (0-100) - remember that only a range of 85-100 is audiable
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
* Passing an unitialised sting to several MP commands no longer crashes the program
Light
-----
* When SET DISPLAY MODE used, the light default settings where different, now fixed to align to the Basic3D light setting
* Added default value of 1.0 to th falloff, which corrects an error in spot lights in the latest DX version
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
* An error is now produced if a particle is created with no emission value
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
Setup
-----
* SET WINDOW ON and OFF now only change the entire screen resolution if transitioning from FULL to WINDOW or back to FULL
* Default changed to ON, allowing the SET DISPLAY MODE to be used to switch off the VSYNC mode, window modes are VSYNC OFF by default
* When SET WINDOW ON and SET DISPLAY MODE used to change the window mode to regular, this behaviour is retained even if wasnt in fullscreen mode
* Windows own resolution (non-32bit) is now stored in the screendepth field in case a task switch or set window on forces a re-capture of device
Sprite
------
* SPRITE WIDTH/HEIGHT now report correct size if SIZE SPRITE used, and also if GET IMAGE changes image used by sprite
* SPRITE 'blue' backdrop can now be changed colour using the COLOR BACKDROP command to increase this functionality
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
Text
----
* MID, LEFT and RIGHT commands now throw a runtime error if a negative or zero value is provided
Advanced Terrain (free plugin)
----------------
* The AdvancecTerrain Plug-in DLL is included with this Upgrade, as it internally requires new DBO structure to function
* 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
* GET TERRAIN SIZE X and Z now function normally, and reports the correct width and depth of the terrain
* Make sure that your old AdvancedTerrain DLL in uninstalled and removed from the plugins-user folder, and placed in the licensed folder
Enhancement Pack (add-on plugin upgrade)
----------------
* ENSURE FOR SURE that the installer does not mess up the V1.06 version number in the editor, and that the free FPSC enhancement DLL DO NOT CONFLICT!
* 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
* ADD IMAGE TO BLOCK no longer duplicates the file and instead overwrites to form a single copy in the ZIP file
* OPEN FILE BLOCK no longer crashes if given a non-ZIP filename, provides graceful error
* Added GET DATA FILE EXISTS(FileID) command to round off this functionality
* GET CD LETTER$() now returns the correct sequence of CD drive letters
* Fixed linkage of the GETCOMPUTERNAMEEX function so it does not report a missinf export
Cloth & Particle (add-on plugin upgrade)
----------------
* AddKey to size effector returns the correct index of the created keyframe, no longer 0, 0, 1, 2, etc
* 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
* Added corrections for Make Wrapround Effector and Set Wrapround Effector in keyword file and help CHM
* POSITION OBJECT when used on an emitter could be reset, because a vecPosition field was using a local structure, not the latest DBO structure
GameFX Extraction
-----------------
The following unsupported commands have been extracted from the Basic3D command set and placed in a new freely available GameFX plugin distributed along with U6. There have been no functional changes to these commands:
IDS_STRING101 "SET STATIC UNIVERSE%FFF%?CreateNodeTree@@YAXMMM@Z%X, Y, Z"
IDS_STRING102 "MAKE STATIC OBJECT%LLLLL%?AddNodeTreeObject@@YAXHHHHH@Z%Object Number, Collision, Arbitary Value, Cast Shadow, Portal Blocker"
IDS_STRING103 "MAKE STATIC LIMB%LLLLLL%?AddNodeTreeLimb@@YAXHHHHHH@Z%Object Number, Limb Number, Collision, Arbitary Value, Cast Shadow, Portal Blocker"
IDS_STRING104 "DELETE STATIC OBJECTS%0%?DeleteNodeTree@@YAXXZ"
IDS_STRING105 "DELETE STATIC OBJECT%L%?RemoveNodeTreeObject@@YAXH@Z%Object Number"
IDS_STRING106 "SET STATIC PORTALS ON%0%?SetNodeTreePortalsOn@@YAXXZ%"
IDS_STRING107 "SET STATIC PORTALS OFF%0%?SetNodeTreePortalsOff@@YAXXZ%"
IDS_STRING108 "BUILD STATIC PORTALS%0%?BuildNodeTreePortals@@YAXXZ%"
IDS_STRING109 "SET STATIC OBJECTS WIREFRAME ON%0%?SetNodeTreeWireframeOn@@YAXXZ"
IDS_STRING110 "SET STATIC OBJECTS WIREFRAME OFF%0%?SetNodeTreeWireframeOff@@YAXXZ"
IDS_STRING111 "STATIC LINE OF SIGHT[%LFFFFFFFF%?GetStaticLineOfSight@@YAHMMMMMMMM@Z%X1, Y1, Z1, X2, Y2, Z2, Width, Accuracy"
IDS_STRING112 "GET STATIC COLLISION HIT[%LFFFFFFFFFFFF%?GetStaticHit@@YAHMMMMMMMMMMMM@Z%OX1, OY1, OZ1, OX2, OY2, OZ2, NX1, NY1, NZ1, NX2, NY2, NZ2"
IDS_STRING113 "STATIC RAYCAST[%LFFFFFF%?GetStaticRayCast@@YAHMMMMMM@Z%X1, Y1, Z1, X2, Y2, Z2"
IDS_STRING114 "STATIC VOLUME[%LFFFFFFF%?GetStaticVolumeCast@@YAHMMMMMMM@Z%X1, Y1, Z1, X2, Y2, Z2, Size"
IDS_STRING115 "GET STATIC COLLISION X[%F%?GetStaticX@@YAKXZ"
IDS_STRING116 "GET STATIC COLLISION Y[%F%?GetStaticY@@YAKXZ"
IDS_STRING117 "GET STATIC COLLISION Z[%F%?GetStaticZ@@YAKXZ"
IDS_STRING118 "GET STATIC COLLISION COUNT[%L%?GetStaticColCount@@YAHXZ"
IDS_STRING119 "GET STATIC COLLISION VALUE[%L%?GetStaticColValue@@YAHXZ"
IDS_STRING120 "GET STATIC COLLISION FLOOR[%L%?GetStaticFloor@@YAHXZ"
IDS_STRING121 "ADD STATIC OBJECTS TO LIGHT MAP POOL%0%?AddStaticObjectsToLightMapPool@@YAXXZ%"
IDS_STRING122 "ADD OBJECT TO LIGHT MAP POOL%L%?AddObjectToLightMapPool@@YAXH@Z%Object Number"
IDS_STRING123 "ADD LIGHT MAP LIGHT%FFFFFFFFL%?AddLightMapLight@@YAXMMMMMMMMH@Z%X, Y, Z, Radius, Red, Green, Blue, Brightness, Shadow"
IDS_STRING124 "CREATE LIGHT MAPS%LLS%?CreateLightMaps@@YAXHHK@Z%Texture Size, Texture Quality, LightMapSavePath"
IDS_STRING125 "FLUSH LIGHT MAPS%0%?FlushLightMaps@@YAXXZ%"
IDS_STRING126 "ADD LIMB TO LIGHT MAP POOL%LL%?AddLimbToLightMapPool@@YAXHH@Z%"
IDS_STRING127 "DELETE LIGHT MAP LIGHTS%0%?FlushLightMapLights@@YAXXZ%"
IDS_STRING128 "ADD STATIC SCORCH%FL%?AddNodeTreeScorch@@YAXMH@Z%Scorch Size, Scorch Type"
IDS_STRING129 "LOAD STATIC OBJECTS%SL%?LoadNodeTreeObjects@@YAXKH@Z%Filename, Divide Texture Size"
IDS_STRING130 "SET STATIC SCORCH%LLL%?SetNodeTreeScorchTexture@@YAXHHH@Z%Image Number, Width, Height"
IDS_STRING131 "SET SHADOW LIGHT%LFFFF%?AddNodeTreeLight@@YAXHMMMM@Z%Light Number, X, Y, Z, Range"
IDS_STRING132 "SET GLOBAL SHADOWS OFF%0%?SetGlobalShadowsOff@@YAXXZ"
IDS_STRING133 "SET GLOBAL SHADOWS ON%0%?SetGlobalShadowsOn@@YAXXZ"
IDS_STRING134 "SET GLOBAL SHADOW SHADES%L%?SetShadowShades@@YAXH@Z%Number Of Shades"
IDS_STRING135 "SET GLOBAL SHADOW COLOR%LLLL%?SetShadowColor@@YAXHHHH@Z%Red, Green, Blue, Alpha"
IDS_STRING136 "SET SHADOW POSITION%LFFF%?SetShadowPosition@@YAXHMMM@Z%Mode, X, Y, Z"
IDS_STRING137 "PERFORM CSG UNION%LL%?PeformCSGUnion@@YAXHH@Z%Target Object, Brush Object"
IDS_STRING138 "PERFORM CSG DIFFERENCE%LL%?PeformCSGDifference@@YAXHH@Z%Target Object, Brush Object"
IDS_STRING139 "PERFORM CSG INTERSECTION%LL%?PeformCSGIntersection@@YAXHH@Z%Target Object, Brush Object"
IDS_STRING140 "PERFORM CSG CLIP%LL%?PeformCSGClip@@YAXHH@Z%Target Object, Brush Object"
IDS_STRING141 "PERFORM CSG UNION ON VERTEXDATA%L%?PeformCSGUnionOnVertexData@@YAXH@Z%Brush Mesh"
IDS_STRING142 "PERFORM CSG DIFFERENCE ON VERTEXDATA%L%?PeformCSGDifferenceOnVertexData@@YAXH@Z%Brush Mesh"
IDS_STRING143 "PERFORM CSG INTERSECTION ON VERTEXDATA%L%?PeformCSGIntersectionOnVertexData@@YAXH@Z%Brush Mesh"
IDS_STRING144 "REDUCE MESH%LLLLLL%?ReduceMesh@@YAXHHHHHH@Z%Mesh Number, Block Mode, Near Mode, GX, GY, GZ"
IDS_STRING145 "ATTACH OBJECT TO STATIC%L%?AttachObjectToNodeTree@@YAXH@Z%Object Number"
IDS_STRING146 "OBJECT BLOCKING[%LLFFFFFF%?ObjectBlocking@@YAHHMMMMMM@Z%Object, X1, Y1, Z1, X2, Y2, Z2"
IDS_STRING147 "DETACH OBJECT FROM STATIC%L%?DetachObjectFromNodeTree@@YAXH@Z%Object Number"
IDS_STRING148 "ADD LOD TO OBJECT%LLLF%?AddLODToObject@@YAXHHHM@Z%Object Number, LOD Object, LOD Level, LOD Distance"
IDS_STRING149 "SAVE STATIC OBJECTS%S%?SaveNodeTreeObjects@@YAXK@Z%Filename"
Upgrade 6.1
Information
-----------
* Primary purpose of this upgrade is to make the compiler compatible with new licensed plugins
Compiler
--------
* Added support for DarkAI and DarkPHYSICS as licensed plugins
Basic3D
-------
* GetObjectPtr (internal call) now accepts INSTANCED OBJECTS as valid objects to use
* ATTACH, DETATCH, OBJECT IN SCREEN, X and Y can now be used with instanced objects again
* OBJECT VISIBLE() now works with instanced objects
Upgrade 6.2c
Information
-----------
* Modifications and corrections to permit FPSC source code to compile fully for U6.X
* Requires DLLs to be updated; Cloth&Particle, DarkAI, DarkPHYSICS (anything using DBO ptr)
* Updated Advanced Terrain and GameFX in the licensed folder
Core
----
* Changed timing precision of TIMER() to just one millisecond, whether vsync active or not
Basic3D
-------
* New DBO structure to provide future-proof fields (reduce minor update incompatibilities)
* Optimized SET SHADOW SHADING ON when employing shader conversion = 8 times faster
* Fixed erro causing a runtime error to prompt when using SHOW LIMB on an instanced object
* Added LIMB COLLISION to be used with instanced objects (CSG now okay in FPSC code)
* FX shader files can now be added as media, and detected as an available internal file
Camera
------
* Added ONE new command for the creation and removal of an optional camera clipping plane
* SET CAMERA CLIP Camera Number, ClipOnOff, X, Y, Z, NX, NY, NZ
Text
----
* unpopular negative-value runtime error removed (allows original FPSC code to compile)