------------------------------------------------------------------ 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.