Up

Scol 4.6 Alpha updates
Last update: 2006/01/06 (Version 4.6 Alpha 4)
Latest updates are described as *NEW*.

List of source code modifications can be found in '_blg.txt' files in root directories of APIs.
To find precise source code modifications, edit code files and look for functions, key names or:
- $BLG : modifications made by A.Fombaron
- $LB : code upgrade from v4.0 to v4.5, and SerialIO modifications made by Loïc Berthelot
- $JI : new ftoa5d( ) and similar functions originally developped by Asim Tahir


New alpha version

Kernel
  • _versionname( ) now returns: 4.6alpha.
  • _version( ) now returns: 2001.
  • The return code of LaunchMachine( ) in web pages is of course: 2001.
  • As for v4.5, the name of the main program is scol.exe, no more usmwin.exe.


  • Fixes

    Kernel
  • *NEW*  _loadS( ): The function is no more based on temporary files at all.
  • *NEW*  nth_char( ): Fixed returned value.
  • zip( ): Fixed a buffer overflow problem.
  • unzip( ): Fixed a buffer overflow problem.

  • 2D
  • *NEW*  _CRfont( ): Fixed font rotation as well as missing requested font.
  • *NEW*  _SHOWwindow( ): Fixed some vanishing Flags bug.
  • _FILEbitmap( ): Fixed some memory offset corruption.
  • _DLGOpenDir( ): Fixed the management of the root directory and the returned directory.

  • 2D Graphic
  • *NEW*  _SETcontainerName( ): Fixed some vanishing Flags bug.
  • *NEW*  _SETcompText( ): Fixed shadowing.
  • *NEW*  _ADDcompText( ): Fixed shadowing.

  • 3D
  • M3blitTexture16( ): Fixed an offset bug (texture shift on precise cases).
  • M3filter( ): Now filters 100% of the filtered bitmap. Fixed the filters too.
  • Surface2Bitmap( ): Fixed a pixel offset bug.
  • M3shiftTextureXY( ): The function now accepts parameters with value of -1. Do NOT use nil values.

  • Serial Port Communication
  • *NEW*  _writeSIO( ): Fixed binary content management.
  • _openSIO( ): Data loss due to heavy CPU use fixed.

  • Web integration
  • Web integration works again. Version 4.5 problem fixed.


  • Updated functions

    Kernel
  • *NEW*  _starttimer( ): Minimum period on client can be set to 1ms (cf new Kernel functions below for details).
    General note regarding Timers: Their precision, evaluation and reliability have been greatly improved.

  • 2D
  • *NEW*  _CRwindow( ): New WN_NOSCOL flag that removes the "(Scol)" word in windows titles.
  • *NEW*  _SETwindowName( ): The function is compatible with the new WN_NOSCOL flag.
  • _BlendBitmap2Surface[ObjSurface I I ObjBitmap I I I I I I I] ObjSurface:
    A new parameter (the one just before the last one) has been added to allow background color transparency customization (0 to 255).
    Note: The transparency color uses BGR format.
    This supersedes the description in the "New functions" chapter (v4.6a1).
  • _BlendSurface2Surface[ObjSurface I I ObjBitmap I I I I I I I] ObjSurface:
    A new parameter (the one just before the last one) has been added to allow background color transparency customization (0 to 255).
    Note: The transparency color uses BGR format.
    This supersedes the description in the "New functions" chapter (v4.6a1).
  • _DLGOpenDir[Chn ObjWin S S] OpenDirBox: The new 4th parameter lets you choose/localize the selection box's message.

  • 2D Graphic
  • *NEW*  _CRcontainerFromObjWin( ): New CO_NOSCOL flag that removes the "(Scol)" word in containers titles.
  • *NEW*  _SETcontainerName( ): The function is compatible with the new CO_NOSCOL flag.

  • 3D
  • *NEW*  M3blitTexture16( ):
    - Accepted texture dimensions that require no stretching are: 64, 128, 256, 512 and 1024.
    - Optimized stretching and pure blitting: up to 25% performance saving.
  • _MX3renderEx( ) and all other rendering functions:
    These functions are now able to detect Sprites. Returned data, when possible, include Mesh, Material and Integer distance between Sprite and Camera (not the z data as described in Rendering documentation).
    Note: Have a look at the New Functions for Sprite detection.
  • M3textureGetType( ), M3textureSetType( ), M3textureSetGeneralDefaultType( ), M3textureGetGeneralDefaultType( ) and M3createTexture( ):
    All these functions now accept texture distance filtering parameters ranging from 0 to 3 (instead of values 0 - in fact 1 - or 2).
    Note: For upward compatibility, open the Dms/3d/C3d3/C3d3EngineExtension and modify the '0' parameter of the first function to '1'.
    Note: M3filter( ), which is applied on Bitmaps, hasn't been updated regarding this kind of OpenGL hardware filter.
    Note: Basic texture filtering, i.e. M3createTexture( ), accepts a new additional 'On' filter, with n ranging from 0 to3 being the OpenGL texture distance filtering.
  • For VM developers only: I introduced a ZBLG_ObjSpr class and modified many functions to implement clickable Sprites. Have a look at the _blg.txt file related to the ZooEngine (3D) API.
  • _Surface2Surface( ): Optimized. 10% performance saving.


  • New functions

    Kernel
  • *NEW*  Implementation of Windows Registry Access functions:
    General notes:
    - Registry access is limited to HKEY_LOCAL_MACHINE\SOFTWARE\Scol-Technologies\ and below.
    - All access paths are relative to this registry key.
    - Note that management of Values is accepted directly at the above Scol root Key (relative path coded as "").
    But we recommend you to create your own personal/application SubKeys and to work with your own Values in these SubKeys.
    - For Windows compatibility issues, we recommend to limit the size of Key or Value names to 255 characters, and the content of Values to 2048 characters. This last limit is hardcoded. As explained in MSDN, bigger content should be stored in files and the file names stored in the registry.
    - Most new functions return a I value: 0 if the action was successful, NIL otherwise.
    _winreg_createkey [S] I:
    parameters: Key name
    example: _winreg_createkey "Kyrien\\Scol-Voyager\\Infos\\ToDel\\SubKey";
    _winreg_deletekey [S] I:
    parameters: Key name
    example: _winreg_deletekey "Kyrien\\Scol-Voyager\\Infos\\ToDel";
    _winreg_setvalue [S S I S] I:
    parameters: Key name, Value name and then Value content (I or S, other one set to NIL)
    example: _winreg_setvalue "Kyrien\\Scol-Voyager\\Infos" "INT" 0xffff00 nil;
    example: _winreg_setvalue "Kyrien\\Scol-Voyager\\Infos" "STR" nil "0xffffff";
    _winreg_getvalue [S S] [I S]:
    parameters: Key name, Value name
    returns: Tuple if successful, NIL otherwise. The tuple contains the content of the Value (I or S, other tuple member set to NIL)
    example: let _winreg_getvalue "Kyrien\\Scol-Voyager\\Infos" "INT" -> val in     let val -> [int str] in     ...
    _winreg_delvalue [S S] I:
    parameters: Key name, Value name
    example: _winreg_delvalue "Kyrien\\Scol-Voyager\\Infos" "STR";
  • *NEW*  _isCacheActivated [] I: Returns 1 if Cache is activated, 0 if not.
  • *NEW*  _gettimerscapabilities [] [I I]: Retrieves the minimum and maximum periods accepted by the client system.
  • *NEW*  _settimerperiod [Timer I] I: Dynamically updates a Timer's period. Returns 0 or NIL if problem occured.
  • *NEW*  ftoa5d [F] S, ftoa4d [F] S, ftoa3d [F] S, ftoa2d [F] S and ftoa1d [F] S:
    As ftoa( ) but with chosen precision (number of digits behind '.') and no rounding up for last digit.
  • _fooId [I] S: As _fooI( ) but with decimal output. The output is limited to 9 characters (not including '-' sign) as for other _foo( ) functions.

  • 2D
  • _joystickExt [I] [I I I I I]: This function, compatible with old (3 axis) joysticks, lets you retrieve the values for X,Y,Z and R axis (recent 4 axis joysticks, pads...). Last returned value is the buttons' status. Parameter of the function is the joystick number (generally 0).

  • 3D
  • *NEW*  M3setSpriteClickability[S3d H3d I] I: Sets Sprite clickability: 0 if not clickable (default status), 1 (or any other value different from 0) if clickable.
  • *NEW*  M3getSpriteClickability[S3d H3d] I: Returns 0 if the Sprite isn't clickable, 1 if it is.
  • *NEW*  M3isExtensionSupported[S] I: Allows you to check if an OpenGL Extension is available or not on client. Returns 0 or 1 if the extension is available.
  • M3getTextureSize[S3d HTx3d] [I I]: Returns the dimensions of a stored texture (not the ones from the original bitmap).
  • _BlendBitmap2Surface[ObjSurface I I ObjBitmap I I I I I I] ObjSurface: As _Bitmap2Surface, but a transparency factor (Last and added parameter: 0-255) is applied to the blitted bitmap. Note: The "former" (100%) transparency color parameter is applied too.
  • _BlendSurface2Surface[ObjSurface I I ObjSurface I I I I I I] ObjSurface: As _Surface2Surface, but a transparency factor (Last and added parameter: 0-255) is applied to the blitted surface. Note: The "former" (100%) transparency color parameter is applied too.
  • M3blitSurface2Texture[S3d HTx3d ObjSurface] I: As _Surface2Bitmap( ) followed by M3blitTexture16( ). Performance saving isn't really significant.
  • _CRforcedSurface[Chn I I] ObjSurface: As _CRsurface but without control for existing fullscreen surface.
  • _CRforcedFullscreenSurface[Chn I I] ObjSurface: As _CRfullscreenSurface but without control for existing windowed surfaces.
  • Note: These two functions were adapted for specific and concurrent use, for example with _BlendSurface2Surface( ) in fullscreen mode. Both of them can only be used in hardware rendering mode. However, this seems to bring some rendering problems on different configurations. To use with care or on tested PCs.