------------------------------------------------------------------ CRM64Pro GDK - Roberto Prieto Copyright (C) 2013-2023 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. 4 May 2023 - 0.980 - Documentation (last stable version) -------------------------------------------------------- - Used doxygen 1.9.6 and fixed some docs issues. - Creation of auto deploy scripts. - Config Manager: . Added setup() method documentation describing how to customize the layout. 30 Apr 2023 - 0.975 - Config Manager III ---------------------------------------- - Config Manager: . Added setup() method for opening a screen with configuration settings, there is a default one but can be customized . Updated audioClose() and calls to audioInit() (for changing the audio features) now remove all music resources loaded so they must be reloaded. . Fixed a bug on setLogicalSize() method. - GUI Manager: . Size and position of panels on different that default screen now work fine. - Tool: . Updated messageBox() method with a new optional parameter for setting up the screen to attach it. - XML Manager: . Added loadFromBuffer() method for loading a XML from a given buffer. 1 April 2023 - 0.973 - Maintenance ---------------------------------- - TileEngine . Fixed an issue when exporting a map loaded from a CDC to Tiled format. - Used TinyXML-2 9.0.0 (Jan-2023) library. - Used libpng 1.6.39 (Nov-2022) library. - Used SDL 2.26.4 (Mar-2023) library. - Used SDL2_net 2.3.0 (Mar-2023) library. - All projects migrated to Visual Studio 2022. - Windows build used Windows SDK 10.0.22621. - Removed from SDL2 joysticks, haptic and sensor modules. - Note: Direct3D12 renderer is disabled as the performance is lower than Direct3D11. 12 Febrary 2022 - 0.972 - Memory Manager II ------------------------------------------- - Memory Manager: . Stats system fixed (Bug #0030). . Fixed an issue with the histogram values. . Method setMsgOutput() is exposed to users for increasing the versatibility of the memory stats system. . Added method setModuleName() for assigning a custom name for an user memory module. . Updated ltalloc: configured for minimizing memory fragmentation at the cost of wasting memory. - SDL2 memory leaks fixed: . Local thread storage (220 bytes) is free at termination. (Bug #0030). . Applied a memory leak fix that will be available on 2.0.22+ (mouse related). ... 31 January 2022 - 0.971 - Maintenance ------------------------------------- - Used SDL 2.0.20 (30-Jan-2022) library. - Used TinyXML-2 9.0.0 (Feb-2022) library. - Used SDL2_mixer 2.0.5 (Jan-2022) library. - Used MikMod 3.3.12 (Jan-2022) library. SSE2 instruction set enabled. - Used libogg v1.3.5 (Jun-2020) library. - Used xxHash 0.8.1 (Jan-2022) library. - Used ltalloc 2.0.2 (April 2019) library with C64 customizations. 14 May 2021 - 0.970 - Config Manager II --------------------------------------- - Updated Linux build scripts. - Used C++ 17. - zlib-ng replaced zlib. Better compression/decompression speeds and slightly better compression ratio. - Display CPU name, number of cores, CPU features and system memory. - Added static structs size checks at compiling time. This check was present at runtime for all systems but widgets. - Fixed an issue with SDL_windows_main.c. - Fixed an issue when merging all static libraries for creating the final crm64pro.dll. - Config Manager: . Initial version of setup() method but still not completed. . Added methods for enable/disable 2D batching system. By default, it is enabled. - Memory Manager: . When creating histogram and evolution memory dump files, a separator header is added (for Microsoft Excel). . In the histogram file, Direct_OS_Call requests are tagged. - GUI Manager: . Fixed an issue with the size of WIDGETv1_IO_Block. Note: this fix makes this new version incompatible with previous saved panels+widgets. . Added new methods: setGroup(), getGroup() and getValueGroup() for creating checkbox groups where only one can be enabled at the very same time. 6 February 2021 - 0.969 - Maintenance ------------------------------------- - Used SDL 2.0.14 (6-Feb-2021) library. - Used SDL2_mixer 2.0.5 (Feb-2021) library. - Used MikMod 3.3.11 (Jun-2020) library. SSE2 instruction set enabled. - Used libogg v1.3.4 (Aug-2019) library. - Used libvorbis v1.3.7 (Jul-2020) library. - Used SDL2_net 2.0.1 (Jan-2020) library. - Used AES (Sept-2020) library. - Used TinyXML-2 8.0.0 (Oct-2020) library. - Used libpng 1.6.37 (Apr-2019) library. SSE2 instruction set enabled. - All projects migrated to Visual Studio 2019. - Only 64bits is being used. 32bits can be still compiled if needed. 16 March 2019 - 0.968 - Maintenance ----------------------------------- - Used SDL 2.0.9 (16-Mar-2019) library. - Used SDL2_mixer 2.0.4 (Jan-2019) library. - Used MikMod 3.3.11 (Jan-2019) library. SSE2 instruction set enabled. - Used libvorbis v1.3.6 (Mar-2018) library. - Used SDL2_net 2.0.1 (Mar-2019) library. - Used xxHash 0.7.0 (Mar-2019) library. - Used AES (Feb-2019) library. - Used TinyXML-2 7.0.1 (Nov-2018) library. - Used libpng 1.6.36 (Dec-2018) library. SSE2 instruction set enabled. 29 March 2018 - 0.967 - Maintenance ----------------------------------- - Timer: . Maximum Logic Frame Rate increased to 20000. - Tool: . randRealWELL() now accepts pSeedState and pSeedTable parameters. - Sprite Manager: . setAnimState() now properly check low-level states. . getAnimCurrent() now works fine. . new orderAnimState() method for ordering the animation low-states. - xaudio2 backend for Windows systems replaced by WASAPI. - Used xxHash 0.6.4 (Feb-2018) library. - Used AES (Feb-2018) library. - Used TinyXML-2 6.1.0 (Feb-2018) library. - Used zlib 1.2.11 (Jan-2017) library. Using only C version, ASM is discarded. - Used SDL 2.0.8 (2-Mar-2018) library. - Used SDL2_mixer 2.0.3 (Mar-2018) library. - Used libogg 1.3.3 (Nov-2017) library. - Used MikMod 3.3.11 (Jun-2017) library. SSE2 instruction set enabled. - Used SDL2_net 2.0.1 (Mar-2018) library. - Used libpng 1.6.34 (Sept-2017) library. SSE2 instruction set enabled. 30 June 2017 - 0.966 - Config Manager I --------------------------------------- - Config Manager: . added save() and load() methods for storing/loading the audio/screen configuration - Cursor Manager: . fix an issue with mouse coordinates on screen with different logical size than the screen size - All projects 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 - Used TinyXML-2 4.0.1 (migrated from TinyXML). - Used xxHash 0.6.2 library. - Used libpng 1.6.29RC library. - Used SDL_mixer 2.0.1 (10-Jan-2017) library. - Used MikMod 3.3.10 (31-Aug-2016) library. Enable SSE2 instruction set. 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 -------------------------------------- - Used libpng 1.6.27 library. - Used 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 - Used 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. - Used xxHash 0.5.1 library. - Used 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. - Used 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+). - Used SDL 2.0.4 b9901 (29-December-2015) library. - Used 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 migrated to Visual Studio 2015. - All projects settings are using the same baseline values. - Used SDL 2.0.4 b9799 (9-August-2015) library. - Used libpng 1.6.18 library. - Used SDL_net 2.0 (26-Jun-2015) library. - Used SDL_mixer 2.0 (1-Aug-2015) library. - Used MikMod 3.3.7 (31-Aug-2014) library. - Used libvorbis 1.3.5 library. - Used 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 . Updated Textbox widget with improved with scrolling and mouse click features . Widget: listbox - Font Manager: . Added getCharacterByPixel() method 31 May 2015 - 0.886 - GUI improvements -------------------------------------- - GUI: . Only left mouse click triggers an action. Right click is reserved . Updated drag&drop feature . Fixed a small issue on mouse click detection logic . Widgets: hslider and vslider - Image Manager: . Fixed an issue when loading images with alpha values 29 March 2015 - 0.884 - GUI improvements ---------------------------------------- - GUI: . Fixed a bug on events filtering system - Used SDL 2.0.4 b9304 (15-March-2015) library. - Used 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 - Used 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: . Added intToStrDec() and intToStrHex() methods 31 July 2014 - 0.85 - GUI ------------------------- - GUI: . GUI Manager . Panel object . Widgets: label and image - Image Manager: . Added load() method for loading an image from a memory buffer - Font Manager: . Fixed a bug on render() and renderEx() methods - Config Manager: . Added 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 . Updated 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: . Added audioMixingChannels() method for modifying the number of mixing channels . Added audioHook() method - Used libpng 1.6.12 library. - Used MikMod 3.3.6 library (removed libmodplug library). - Used SDL_mixer 2.0 (27-Jun-2014) library. - Used 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 . Added strCompare(), strToLowerCase() and strToUpperCase() methods - Normalize create() methods across all the managers. - Used 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: . Added 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 . Added XOR() method - Runtime checks for struct sizes are present on debug and release modes. - Make use of void* for memory buffers. - Used 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 . Added findTex() method for allowing other modules to render into the textures for each screen . Added applyFilter() method with some color effect: noise, blur, negative, grey, B/W, wiggle and pixelate . Added rebuild() method for rebuilding existing textures . defines replaced by enum following the GDK coding standard v1.2 - Config Manager: . Added getSnapshot() method added to the Screen . Added 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 . Added 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. - Used 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. - Used zlib 1.2.8 library. - Used 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 ------------------------------------- - Used SDL 2.0 library.