![]() |
CRM64Pro GDK v0.980
A free cross-platform game development kit built on top of SDL 2.0
|
![]() |
------------------------------------------------------------------
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.
|