Releases: Stephane-D/SGDK
Releases · Stephane-D/SGDK
SGDK 1.40 (may 2019)
COMPILER
- RESCOMP
- rewrote from scratch in java for easier evolution and easy multi OS support.
- added smart sprite cutting (detect empty space in sprite)
- many changes on SPRITE resource, don't forget to read the rescomp.txt file to see changes about this resource.
- can now disable map optimization for IMAGE resources (see rescomp.txt for more information)
- LZ4W
- added code sources (java)
- fixed compression using previous data block in ROM (updated packer to version 1.4)
- BINTOS
- fixed a stupid bug on path.
- added XGM ROM builder tool sources.
- removed RESCOMP (C version), WAVTORAW, TFMCOM and Z80DASM tools.
- added Visual Studio template.
LIBRARY
- SYS
- added SYS_setVIntAligned(..) method to force V-Int callback to align process on VBlank.
IMPORTANT: by default now SGDK does align the V-Int processing to VBlank so you need to disable it if you don't want it ! - added SYS_getCPULoad() to return CPU load estimation.
- added SYS_resetMissedFrames() / SYS_getMissedFrames() methods.
- added SYS_setVIntAligned(..) method to force V-Int callback to align process on VBlank.
- DMA
- simplified DMA over capacity strategy
- minor change in debug log message
- SPRITE
- renamed SPR_init(..) to SPR_initEx(..) so now SPR_init() doesn't require any parameters by default.
- removed 'maxSprite' parameter from Sprite Engine initialization (alays use max available).
- added delayed frame update support.
- added SPR_FLAG_DISABLE_DELAYED_FRAME_UPDATE flag to disable the delayed frame update (when we are running out of DMA capacity).
- added SPR_setDelayedFrameUpdate() to change the delayed frame update state for a sprite.
- added SPR_FLAG_INSERT_HEAD flag to allow adding new sprite in first position (instead of last position by default)
- added SPR_defragVRAM() method to force VRAM defragmentation
- added SPR_addSpriteSafe(..) and SPR_addSpriteExSafe(..) methods (automatically do VRAM defrag if needed)
- fixed a bug where the last VDP sprite attribute weren't always correctly updated with visibility set to AUTO_SLOW.
- fixed a bug a sprite couldn't be allocated.
- fixed sprite visibility state when the number of used sprite changed.
- many changes to sprite structures (better handling of flip info, better ROM usage...)
- VDP
- added VDP_showCPULoad() method to display CPU load
- added VDP_waitVInt() method to wait until next VInt to happen.
- removed 'waitvsync' parameter for VDP_initFading(..) and VDP_doStepFading(..) methods (we always want VSync here)
- simplified / tweaked macros for VDP control writes
- VRAM
- added VRAM_getAllocated(..) and VRAM_getLargestFreeBlock(..) methods
- TYPE
- added bool type
- replaced u16 by bool where it needs to be
- MATHS
- updated fix32Mul() and fix32Div() definition (again, trying to find the best compromize)
- added new missing structures as Vect2D_f32, Mat2D_f32, Vect3D_xx...
- added f16 and f32 as shorcut of fix16 and fix32 types.
- added short typedefs (V2u16 = Vect2D_u16, V2f32 = Vect2D_f32, M2f16 = Mat2D_f16, M3f32 = Mat3D_f32)
- PALETTE
- removed index field from Palette structure
- JOY
- added checking for mouse / multipad read operation to avoid timeout operation when mouse or multipad is not present.
- Z80
- added volatile access for safety
- TIMER
- improved waitMs(..) method to be more accurate on small wait.
- tweaked getSubTick() method (need testing, possible regression)
- STRING
- fixed and optimized uintToStr() method
- TOOL
- memory allocation methods for unpacking now always use deep allocation regardless of the compression used (simpler and less bug prone)
- fixed LZ4W decompression using previous data block
- fixed variable initialization (last byte was not always properly initialized)
- added HALT_Z80_ON_IO define (config.h) to force Z80 halt on IO port access.
- new awesome SGDK logo (Thanks a tons to Lizardrive for making it !)
- removed useless sound drivers (MVS, TFM and VGM)
- removed old TILE_CACHE unit (replaced by VRAM unit)
- removed useless zlib
- many refactoring (sorry for that, you will need to update your old code)
- many tweaks / cleanup
SAMPLE
- updated all samples to take care of last changes made in SGDK
- BENCHMARK
- tweaked big sprite test to disable the delayed sprite update (new sprite engine feature)
- fixed sheet size (new rescomp don't allow it)
SGDK 1.34 (January 2018)
LIBRARY
- DMA
- added DMA queue support for all (or almost all) methods supporting DMA operation
- SPRITE
- fixed timing issue when changing FRAME or ANIMATION manually.
- fixed sprite sorting when multiple depth were modified in a single SPR_update(..).
- safer sprite allocation / release.
- MEMORY
- added MEM_getLargestFreeBlock() to get the largest available block of memory.
- improved LZ4W compression (better compression rate, faster compression...)
- minors changes on method updating tilemap through X,Y position (safer)
- some cleanup
SAMPLE
- reworked benchmark sample to avoid out of memory error (^^)
SGDK 1.33 (November 2017)
LIBRARY
- DMA
- added HALT_Z80_ON_DMA flag in config.h to enable Z80 halt on DMA (avoid corruptions or sound issues on Tectoy MD).
- deprecated 'vdp_dma' unit now forward calls to 'dma' unit.
- added wait DMA checking (DMA fill or DMA copy operation) before doing a DMA operation.
- SPRITE
- simplified sprite sorting (always enabled, just need to use SPR_setDepth(..) method if needed)
- fixed a regression which was causing 1 frame latency in sprite update.
SAMPLE
- minor change to sound sample
SGDK 1.32 (October 2017)
COMPILER
- added VS project for easier compilation with Visual Studio (thanks to lab313)
LIBRARY
- TIMER
- fixed getSubTick() method (no more possible rollback)
- minor fix in getFPS() and getFPS_f() methods
- VDP
- tweaked default VRAM memory layout
- BITMAP
- changed get/setPixelXXX(..) methods so they now work on single pixel (not anymore doubled X pixel resolution)
- changed drawLine(..) method so it now work on single pixel (not anymore doubled X pixel resolution).
WARNING: drawLine(..) is not anymore doing clipping, use BMP_clipLine(..) first for that. - added get/setPixelXXXFast(..) methods for fast get/set pixel operation (no clipping check)
- SOUND
- fixed auto PCM selection when playing sample with driver 2ADPCM and 4PCM.
- fixed default tempo for PAL system with XGM driver
- SPRITE
WARNING: you now require to set the sprite depth to use depth sorting (not anymore using the sprite Y position).- replaced SPR_FLAG_AUTO_YSORTING by SPR_FLAG_AUTO_DEPTH_SORTING
- replaced SPR_setYSorting(..) method by SPR_setDepthSorting(..) / SPR_setZSorting(..)
- replaced SPR_sortOnYPos() by SPR_sortOnDepth()
- added void SPR_setDepth(..) / SPR_setZ(..) methods to set sprite depth
- fixed VDP_updateSprites() with DMA queue operation (prevent sprite table modifications before DMA occurs).
- STRING
- added int16ToStr(..) and uint16ToStr(..) methods (faster than intToStr(..) or uintToStr(..) for 16 bit integer, thanks to clbr)
- optimized intToStr(..) and uintToStr(..) methods (thanks to clbr for that)
SAMPLE
- added XGM Player sample :)
- Bench
- added some pixels / line draw tests
- Donuts
- updated for new depth sorting refactoring
SGDK 1.31 (July 2017)
DOCUMENTATION
- minor fix and updated to last version
COMPILER
- fixed debug build in 'build_lib' batch
LIBRARY
- JOY:
- fixed joy state variables declaration to avoid issues when GCC -O3 optimization level is used.
- SPRITE:
- added ALWAYS_ON_TOP flag to keep a sprite above others sprites whatever is sorting order.
- minor fix on sprite sort
SGDK 1.30 (June 2017)
DOCUMENTATION
- updated to last version
COMPILER
- Updated to GCC 6.3 (thanks a tons to Gligli for that !)
- many bugs fix and new features compared to old GCC 3.4.6
- much better assembly code generation :)
- added LTO (Linker Time Optimization) support
- Modified makefile to enable LTO and improve optimization level.
- Rescomp:
- updated to handle structure changes in the Sprite Engine.
LIBRARY
- DMA:
- minor optimization to DMA_queue(..) method (thanks to HpMan)
- Memory:
- default stack size increased to 0x800 bytes (GCC 6.3 requires more stack memory :p)
- Sprite Engine:
- added automatic Y sorting (per sprite)
- added SPR_sort(..) for generic sorting on whole sprite list
- added SPR_sortOnY(..) to sort the whole sprite list on Y coordinate
- by default now sprite visibility is set to always ON (faster than automatic visibility)
- updated 'Collision' structure (hierarchical structure)
- some changes to internal structures to provide better performance
- VDP BG/Tile:
- fixed a minor bug in VDP_setTileMapDataEx(..) and VDP_setTileMapDataRectEx(..) methods (thanks to Alekmaul for reporting it)
- minors fixes...
SAMPLE
- Bench:
- fixed math tests for GCC 6.3
SGDK 1.22a (September 2016)
(September 2016)
LIBRARY
- VDP: reintroduced the 16 plain system tiles.
SGDK 1.22 (September 2016)
DOCUMENTATION
- minors improvements and fixes
COMPILER
- Rescomp: fixed a minor issue in sprite resource
- XGMTool:
- added duration information to XD3 tag
- improved loop
- added the XGM ROM builder tool.
- removed GenRes from makefile
LIBRARY
- Sprite Engine:
- fixed sprite attribut update for non visible sprite
- fixed sprite list update in certain condition
- Sound:
- moved XGM driver method in a specific unit (xgm.c)
- added XGM_getElapsed(..) method to retrieve elapsed XGM music playing time (in number of frame)
- added XGM_setLoopNumber(..) to set the wanted number of loop in XGM music play.
- added interrupt protection for Z80 access
- Maths:
- reverted fix32Mul() and fix32Div() to previous version to avoid cumulative error
- added getApproximatedLog2(..) method for fast Log2 calculation (approximated)
- added getLog2Int(..) method for integer Log2 calculation
- Misc:
- moved QSort methods to tools
- added generic qsort with custom comparator callback
- VDP: more flexible VRAM tilemap configuration (window plan don't have to be first map).
- Bitmap mode: can now set bitmap mode in window plan
- changed to MIT license
- refactoring
SAMPLE
- Bench: added sprite donut animation test.