CRM64Pro GDK  v0.97
A free cross-platform game development kit built on top of SDL 2.0
Full changelog
------------------------------------------------------------------
  CRM64Pro GDK - Roberto Prieto
  Copyright (C) 2013-2017 MegaStorm Systems
  contact@megastormsystems.com - http://www.megastormsystems.com
------------------------------------------------------------------

CRM64Pro is a free cross-platform game development kit built on top of SDL 2.0.
This software is distributed under zlib license.


31 June 2017 - 0.97 - Config Manager and setup (last stable version)
-------------------------------------------------------------------
- Config Manager:
  . added save() and load() methods for storing/loading the audio/screen configuration
  . ToDO added setup() method for opening a screen with configuration settings, there is a default one but can be customized
- Cursor Manager:
  . fix an issue with mouse coordinates on screen with different logical size than the screen size
- All projects are migrated to Visual Studio 2017.

30 April 2017 - 0.965 - Memory Manager
--------------------------------------
- Memory Manager:
  . improved stats system, output memory usage evolution and histogram to CSV files
  . use ltalloc as a low-level allocator
  . some general improvements
  . documentation and how to use

29 March 2017 - 0.96 - General improvements
-------------------------------------------
- Memory Manager:
  . added a C64 Memory Manager(CMem) to all interfaces
  . hook the CMem to all external libs
  . STL containers under CRM64Pro namespace are also using CMem
  . simple stats system
  . using default memory allocator, to be improved on next revision
- New unified Position Helpers for Cursors, Sprites, Fonts and GUI Widgets.
- Timer:
  . new getHiResTime() method
  . new microbenchmark methods
- Config Manager:
  . new getSnapshot() method for saving the snapshot to an external PNG file
  . setRenderCallback() method now accepts a second parameter, a pointer to the relevant object
- Network Manager:
  . setCoreServerCallback() method now accepts a third parameter, a pointer to the relevant object
  . ClientInfo struct now belongs to NetTCP class
- Using TinyXML-2 4.0.1 (migrated from TinyXML).
- Using xxHash 0.6.2 library.
- Using libpng 1.6.29RC library.
- Using SDL_mixer 2.0.1 (10-Jan-2017) library.
- Using MikMod 3.3.10 (31-Aug-2016) library. Enable SSE2 instruction set usage.

28 February 2017 - 0.95 - TileEngine
------------------------------------
- ABI changed on all objects: for simplicity, Obj suffixes have been removed.
- TileEngine
  . migrated and improved from MSTE
  . totally integrated inside C64
- GUI:
  . new widget feature flag for disabling the background rendering
  . fix an issue when loading WT_TEXTBOX and WT_LISTBOX
- Sprite Manager:
  . status() now return C64_STATUS_END when the one-shoot animation has finished
- Config Manager:
  . fixed a bug in getClipRect() method
- Tile Manager:
  . fixed a bug in render() method
- Tool:
  . new decodeBase64() and decompressZlib() methods

30 December 2016 - 0.946 - Maintenance 
--------------------------------------
- Using libpng 1.6.27 library.
- Using SDL 2.0.5 b10726 (28-December-2016) library.
...

30 July 2016 - 0.945 - EditorC64 
--------------------------------
- EditorC64 0.85, updated version.
- Audio Manager:
  . fixed a bug on AudioInfo methods

30 June 2016 - 0.94 - EditorC64
-------------------------------
- EditorC64 0.8, updated version.
- GUI:
  . new methods getScroll() and getVisibleItems()
  . improved drag&drop system
  . new panel type: PT_EPHEMERAL with a given TTL(time to live)
  . added two built-in fonts: white and black
  . added three built-in icons: info, warning and error
- Tool:
  . messageBox() now uses our GUI system.
- Audio Manager:
  . fixed several bugs on Music and Sounds managers/objects
- Using MikMod 3.3.8 (Nov-2015) library.

31 May 2016 - 0.936 - EditorC64 
-------------------------------
- EditorC64 0.5, updated version.
- Improve managers setName() and assignImage() methods.
- GUI:
  . new widget feature flag for reporting lost focus events
  . new WT_TEXTBOX feature flag for doing the content read-only
  . fixed an issue with TextBox and ListBox widgets
- Tool:
  . new methods fileGetAbsolutePath() and fileGetExePath().

30 April 2016 - 0.93 - EditorC64 
--------------------------------
- EditorC64 0.3, first working version of the new resource manager.
- Managers than can save object to CDC files now also have a method for removing them.
- Improved unified error codes.
- GUI:
  . event handling code was reworked fixing all known issues
  . new widget feature flag for reporting mouseover events
  . improved WT_LISTBOX widget, now can add and select an item and can check the items are unique
  . fixed an issue with TextBox widgets on PT_MODAL panels  
  . minimum widget size is 8x8 and the default one is 15x15
- Tool:
  . new methods fileOpenDialog(), fileSaveDialog() and messageBox() using native calls on Windows, Linux and MacOS X

29 March 2016 - 0.91 - General improvements 
-------------------------------------------
- Archive CDC v1.1:
  . improved blockAdd() method: check if the block of data already exists and if it's the same(do nothing) or can be overwritten
  . new blockUndelete() method for recovering a "soft" deleted block of data
  . variable number of data blocks defined at creating time. defrag() method can resize it
- Config Manager:
  . XAudio2 2.7 is now available as a Windows audio driver
  . Screen functionality has been greatly improved: vsync, size, mode and even renderer drivers can be modified at any time
  . methods for changing between window, fullscreen and new fullscreen-window modes
  . new method for enabling/disabling the border decoration of a window
  . new methods for setting logical size allowing a resolution independent rendering (letterbox and overscan)
  . fixed known bug #0016
  . fixed known bug #0018
- Static code analysis performed. 
- Using xxHash 0.5.1 library.
- Using SDL 2.0.4 b10002 (28-March-2016) library.

19 March 2016 - 0.90 - GUI improvements 
---------------------------------------
- GUI:
  . new Panel::save() method for saving the panel and all its widgets
  . new GUI::load() method for loading a panel
  . ToDO: documentation
  . default console is enabled by default on debug mode
- Direct3D v11 renderer uses a triple-buffer.
- Using doxygen 1.8.11 and fixing some docs issues.

29 February 2016 - 0.898 - GUI improvements 
-------------------------------------------
- GUI:
  . console object with 3 commands 'con', 'dw' and 'help'
- Tool:  
  . new vStrToFile() and fileTovStr() methods
- Support Direct3D v11 renderer (only for Windows 8+).
- Using SDL 2.0.4 b9901 (29-December-2015) library.
- Using libpng 1.6.20 library.

30 November 2015 - 0.896 - General improvements 
-----------------------------------------------
- Unified error codes on all modules.
- Fixed an issue when loading an unsupported object version on all modules.

31 October 2015 - 0.895 - General improvements 
----------------------------------------------
- SDK is signed using MegaStorm Systems CA.
- All projects are migrated to Visual Studio 2015.
- All projects settings are using the same baseline values.
- Using SDL 2.0.4 b9799 (9-August-2015) library.
- Using libpng 1.6.18 library.
- Using SDL_net 2.0 (26-Jun-2015) library.
- Using SDL_mixer 2.0 (1-Aug-2015) library.
- Using MikMod 3.3.7 (31-Aug-2014) library.
- Using libvorbis 1.3.5 library.
- Using AES (27-Sep-2015) library.

21 July 2015 - 0.89 - GUI improvements
--------------------------------------
- GUI:
  . GUI manager supports new auto focus system
  . GUI objects support fading effects
  . Panel can be modal or modeless
  . GUI objects support multiscreen configuration
  . DebugWindow object

29 June 2015 - 0.888 - GUI improvements 
---------------------------------------
- GUI:  
  . fixed a bug on events filtering system when mouse wheel is used
  . Textbox widget improved with scrolling and mouse click features
  . Widget: listbox
- Font Manager:
  . new getCharacterByPixel() method

31 May 2015 - 0.886 - GUI improvements
--------------------------------------
- GUI:
  . only left mouse click triggers an action. Right click is reserved
  . improved drag&drop feature
  . fix a small issue on mouse click detection logic
  . Widgets: hslider and vslider
- Image Manager:
  . fix an issue when loading images with alpha values

29 March 2015 - 0.884 - GUI improvements 
----------------------------------------
- GUI:
  . fixed a bug on events filtering system
- Using SDL 2.0.4 b9304 (15-March-2015) library.
- Using libpng 1.6.16 library.

27 September 2014 - 0.883 - Android is supported
------------------------------------------------
- Android is supported but some tasks are still pending.
- GUI:
  . Widgets: textbox and progressbar
- Using SDL 2.0.4 9134 (12-Sept-2014) library.

31 August 2014 - 0.88 - Linux is supported 
------------------------------------------
- Makefiles and VS2010 projects have a common configuration settings.
- Check for SDL library version 2.0.3 or newer.
- Linux 64bits is supported:
  . makefile can build, install or uninstall
  . external libraries can be build at once using a custom script
  . validation tests
- All methods that manage files, support as directory separators '/' and '\'.
- Fixed known bug #0011.

22 August 2014 - 0.87 - GUI improvements
----------------------------------------
- GUI:
  . Widgets: button and checkbox
  . border width now is properly rendered
  . function associated to each widget state is called if present
  . action state is reported using a C64_EVENT_WIDGET where data1 is the ID and data2 the optional value
  . associated key enables the widget action state
  . deactivate widget state is now fully functional
  . improved event handling
  . images are supported as widget background and only two are needed:
	normal is used for normal, hover and deactivate states (by default)
	pressed is used for pressed and action states (by default)
  . sprites are supported as widget background which are the most powerful and efficient method
- Tool:
  . new intToStrDec() and intToStrHex() methods

31 July 2014 - 0.85 - GUI 
-------------------------
- GUI:
  . GUI Manager
  . Panel object
  . Widgets: label and image
- Image Manager:
  . new load() method for loading an image from a memory buffer
- Font Manager:
  . fixed a bug on render() and renderEx() methods
- Config Manager:
  . new setClipRect() and getClipRect() methods
- Normalize status methods across all the managers.
- Managers signatures adjusted for using 8bits leaving 24bits for the objects.

7 July 2014 - 0.81 - Audio tuning and general improvements
----------------------------------------------------------
- Image Manager:
  . fixed known bug #0000
  . fixed known bug #0001
- Audio Manager:
  . fixed known bug #0006
  . fixed known bug #0007
  . fixed known bug #0008
  . improved info() methods
  . better audio type detection on load/save methods
  . replaced libmodplug by libmikmod
  . add sound effects: panning, position and distance
  . known bug #0009: wav/ogg music playback at 48khz produces some audio glitches but works using sound playback
- Config Manager:
  . new audioMixingChannels() method for modifying the number of mixing channels
  . new audioHook() method
- Using libpng 1.6.12 library.
- Using MikMod 3.3.6 library (removed libmodplug library).
- Using SDL_mixer 2.0 (27-Jun-2014) library.
- Using SDL 2.0.4 8924 (4-Jul-2014) library.

30 June 2014 - 0.80 - Audio
---------------------------
- Audio Manager:
  . sound
  . music
  . validation test
  . known bug #0006: ogg playback is not supported at 48khz
  . known bug #0007: modules playback is not supported at 32bits
  . known bug #0008: libmodplug does not work on DLL mode
- Config Manager:
  . Audio support
  . info() method displays audio and general information
- Tool Interface:
  . added more useful file/directory methods
  . new strCompare(), strToLowerCase() and strToUpperCase() methods
- Normalize create() methods across all the managers.
- Using SDL_mixer 2.0 (2-Jun-2014) library.

29 May 2014 - 0.76 - Network tuning 
-----------------------------------
- NetTCP Interface:
  . fixed known bug #0004
  . fixed known bug #0005
  . improved security of transmitted data using xxHash + sequencer
  . added documentation and diagram
- Tool Interface:
  . new xxHash methods

15 May 2014 - 0.75 - Network  
----------------------------
- NetTCP Interface:
  . server arquitecture very robust and stable with support up to 8 clients
  . client arquitecture with a great performance
  . it is based on old CRM32Pro INetwork interface but with several improvements
  . validation test including a torture test
- Tool Interface:
  . Mersenne Twister algorithm replaced by Multiply-with-carry and WELL512
	They are faster and produce better results
  . new XOR() method
- Runtime checks for struct sizes are present on debug and release modes.
- Make use of void* for memory buffers.
- Using SDL_net 2.0 (2-Feb-2014) library.

30 April 2014 - 0.70 - Sprite module
------------------------------------
- Sprite Manager:
  . first working prototype
  . validation test
- Font Manager:
  . setting a position is moved to a method (as with Tile and Sprite) separating the logic from the graphic part
  . known bug #0002: disabling the colorkey of a stand-alone font will render 'garbage'
  
29 March 2014 - 0.65 - GFX module and some improvements 
-------------------------------------------------------
- Image Manager:  
  . render() and renderEx() methods can render to a screen or to another image
  . new findTex() method for allowing other modules to render into the textures for each screen
  . new applyFilter() method with some color effect: noise, blur, negative, grey, B/W, wiggle and pixelate
  . new rebuild() method for rebuilding existing textures
  . defines replaced by enum following the GDK coding standard v1.2
- Config Manager:
  . new getSnapshot() method added to the Screen
  . new fadeToColor() and fadeToImage() methods added to the Screen
- GFX Interface:
  . first working prototype
  . validation test
  . uses ImageMgr::findTex() for rendering to images

20 March 2014 - 0.60 - Tile and Font modules
--------------------------------------------
- Image Manager:
  . diagram included on the docs
  . improve image docs
  . known bug #0000: reported on SDL as #2424 and while it is fixed, RLE is disabled
  . known bug #0001: Direct3D and target textures does not work
- Tile Manager:
  . first working prototype
  . diagram included on the docs
  . validation test
- Font Manager:
  . first working prototype
  . diagram included on the docs
  . validation test
- Config Manager:
  . Screen objects has a render callback
  . new renderCallbacks() and render() private methods
- Main Interface:
  . preliminary keyboard input system
  . update() method implement the fixed virtual logic frame rate with interpolation
  . rendering your graphics: standard and advance methods 
- Updated SDL 2.0.2 8610 library.
- Updated libpng 1.6.9 library.
- Updated AES 18-Feb-2014 implementation.

22 February 2014 - 0.55 - Image and Cursor modules 
--------------------------------------------------
- Redesign of Image manager for reach better functionality.
- Cursor manager is adapted to the new Image paradigm.
- _C64RET() macro integrated on all Interfaces, Managers and Objects.
- Global GDK arquitecture diagram included on the docs.
- Main Interface diagram included on the docs.
- Validation tests for Image and Cursor managers.
- Updated SDL 2.0.2 8147 library.

31 January 2014 - 0.54 - Improve of classes hierarchy
-----------------------------------------------------
- GDK classes hierarchy and docs improved.
  Due to these improvement tasks, the API has been rewritten for all modules.
  There are two different types of modules:
  . Interface
  . Manager/Objects
  Both of them work with id handlers. Internally they use an unordered_map instead of a map.
- Documentation improved.
- Updated SDL 2.0.1 build 8054 library.

15 September 2013 - 0.53 - Image and Cursor modules
---------------------------------------------------
- Image manager module is ready (pending textures management).
- Cursor manager module is ready.
- Image and Cursor managers only open the same resource once and share the resource on next open/load calls.

31 August 2013 - 0.50 - Image and Cursor modules
------------------------------------------------
- Image manager module in development.
- Cursor manager module in development.
- Improved managers:
  . info() method for displaying information
  . at closing time it will warn in case any resource is still opened
  . Config manager can create any number of screen with the same name
  . XML manager can open the same file as many times as needed
  . Log manager can only create a Logger per unique name
  . Archive manager only open the same resource once and share the resource on next open/load calls
- Config module:
  . internally, uses a map instead of a vector.
  . implemented as interface
  . fixed some bugs when using more than one screen
- Log module:
  . LogMgr owns the default logger
- Archive module:
  . improved error checking
  . cleaned-up the interface
- Applied GDK coding standard v1.2.
- Updated SDL 2.0 build 7635 library.
- Using libpng 1.5.17 library.

3 August 2013 - 0.41 - 64bits support
-------------------------------------
- The GDK is built on 64bits by default:
  . all external libs have been modified to produce 64bits and 32bits versions
  . all modules are tested and working on both modes
- Fixed some bugs on all modules when using DLLs.

31 July 2013 - 0.40 - Archive, Tool and XML modules
---------------------------------------------------
- Archive module is ready using new CDC files.  
- Tool module with some generic and useful methods:
  . true random number generator
  . CRC32 methods
  . OS-level files management (check if a file exists, check file extension, etc.)
  . round values
  . string-zero methods
- XML module is ready.
- Creation of a module validation tests.
- Improve the main library header.
- Using zlib 1.2.8 library.
- Using tinyXML 2.6.2 library.

30 April 2013 - 0.30 - Config module
------------------------------------
- Config module is ready.
- All modules are fully documented, tested and all known bugs fixed.
	 
19 April 2013 - 0.20 - Timer module
-----------------------------------
- Timer module is ready.
- Created and applied the GDK coding standard.

11 April 2013 - 0.10 - API definition
-------------------------------------
- Main is designed with basic components.
- LogSystem module is ready.

1 April 2013 - 0.01 - First prototype
-------------------------------------
- Using SDL 2.0 library.