Download Latest Version sgdk211.7z (55.1 MB)
Email in envelope

Get an email when there's a new version of SGDK 1.90

Home / v2.10
Name Modified Size InfoDownloads / Week
Parent folder
sgdk210.7z 2025-04-01 55.1 MB
README.md 2025-04-01 6.2 kB
SGDK 2.10 (april 2025) source code.tar.gz 2025-04-01 73.5 MB
SGDK 2.10 (april 2025) source code.zip 2025-04-01 75.1 MB
Totals: 4 Items   203.8 MB 0

COMPILER * updated GCC to version 13.2 (sometime throw error messages about cached files which can be ignored) * removed Docker files (see notes about Docker in readme.md file) * removed vstudio template * removed 'sjasm' and 'musicg' git submodules (version fixed in SGDK) * added VSCode template * automated doxygen documentation generation with GitHub Action (doxygen is now online, see readme.md for more info) * XGM2TOOL - fixed max frame limit - fixed special mode / frequencies preservation - fixed keys op packing - fixed a bug with loop point - fixed a bug where START/STOP PCM commands could be swapped - fixed a bug in initial PSG state - integrated 'musicg' library sources in XGM2Tool * XGMTOOL - added support to recognize commands from RF5C68 and RF5C164 chips (Sega-CD PCM chip) * RESCOMP - added special marker to enable optimization for specific single VDP sprite - added array format support for the animation 'time' field for SPRITE resource (allow defining time on a frame basis) - added new 'ordering' option for TILESET, TILEMAP and MAP resources - added new 'export' option for TILESET resource - added new 'sortby' option for OBJECTS resource (thanks Iratahack) - fixed Object boolean fields export - improved (again) sprite cutting process - avoid re-processing sprite cutting process on duplicated frames - now also export binary array size (label form) - added support for ProMotion NG JASC .pal file - fixed cutting PNG export - keep class loader open when loading rescomp_ext.jar extensions to allow correct import of dependencies * MAKEFILE - re-introduced deps + added '-ffunction-sections' and '-fdata-sections' flags - fixed default targets - cleanup and small fixes * README - updated notes about Doxygen documentation, Docker and VSCode - fixed broken links - added AWS tutorial link

LIBRARY * SPRITE - added SPR_setAutoAnimation(..)/SPR_getAutoAnimation(..) to enable/disable auto animation. - optimized handling of simple sprite (sprite using only a single hardware sprite which fit frame size) - renamed SPR_getAnimationDone() --> SPR_isAnimationDone() and changed a bit the logic behind it - SPR_loadAllFrame(..) now detects duplicated tilesets and only load them once in VRAM (make the method a bit slower though) - fixed auto loop - updated legacy sprite engine to include the new features of the new sprite engine - minors tweaks * DMA - fixed transfer size of 0 (do not transfer anything instead of transferring 65536 words) * MAP - added MapDataPatchCallback(..) allowing easier map data patching / dynamic map - fixed a bug in MAP_getMetaTilemapRect(..) when crossing block in X dimension - added MAP_overridePlaneSize(..) methods to allow overriding plane size internally - added 'COLUMN_AHEAD' and 'ROW_AHEAD' definitions so we can easily customize them if needed * SOUND - fixed a small bug with half rate PCM play (XGM2) - fixed DAC state on start play music (XGM2) - adjust music tempo depending PAL or NTSC track info (XGM2) - many bug fixes in XGM2 sound driver - fix YM2612 reset * PAL - simplified / improved a bit palette fading process to avoid palette transfer outside vblank - added PAL_isManualFadeDone() method (let you know if manual fading process is complete) - fixed color overflow in PAL_doFadeStep(..) - fixed synchronous palette fading (last palette update was sometime missing) - protect from interrupts on palette read operation (often cause issues with raster effects) * VDP - added user friendly setWindowXXX(...), VDP_setWindowOff() and VDP_setWindowFullScreen() methods - added coordinates parameters for VDP_showFPS(), VDP_showCPULoad() and BMP_showFPS() methods - added VDP_drawTextFill(..) function * SYS - new error handler with backtrace and symbol support (thanks to Vic for it) ! - tried to mitigate as much as possible HALT_Z80_ON_IO effect on PCM playback (shortened Z80 interruptions time) - SYS_die(..) function supports an extra message parameter - halt Z80 on SYS_reset() / SYS_hardReset() * MATH - WARNING: major revamping (thanks to Daniel Moura the initial PR) - all fix16, fix32, fastfix16, fastfix32 functions has been renamed and are now prefixed with F16_, F32_ , FF16_, FF32_ - M3D_setRotation(..) is now taking rotation angles in degree - added new F16_tan(..), F16_atan(..) and F16_atan2(..) trigonometric functions - added F16_getAngle(..) function to find angle between 2 points - added F16_computePosition(..) to compute point position from 'origin', 'angle' and 'distance' - added conversion functions between fastfix16, fastfix32, fix16 and fix32 types (thanks werton) - added typedef structures: Vect2D_ff16, Vect2D_ff32, Mat2D_ff16, Mat2D_ff32, V2ff16, V2ff32, M2ff16 and M2ff32 (thanks werton) * MODULE / ENTENSION - added support for MegaWifi everdrive x7 - fixed a bug with flash-save * optimized a bit LZ4W decompressor (thanks Malachi) * vsprintf(..) function is now visible * added string conversion functions for ff16 and ff32 types * added RAM_SECT definition (used to force a function to be located in RAM) * smalls tweaks, optimizations and cleanup

SAMPLE * added MAP patching example (press button Y to enable / disable it) in 'sonic' sample * added sprite tiles sharing and tile animation examples in 'sample/advanced' folder (thanks werton) * added sprite masking example in 'sample/fx' folder (thanks werton) * updated MegaWifi samples * updated samples to last SGDK

MIGRATION NOTE * SPR_getAnimationDone() --> SPR_isAnimationDone() (the logic changed quite a bit, don't forget to read the documentation) * All fix16, fix32, fastfix16, fastfix32 functions has been renamed and are now prefixed with F16_, F32_ , FF16_, FF32_ - intToFix16(x) is simply replaced by FIX16(x) or F16(x) - fix16ToInt(x) --> F16_toInt(..) - fix16Rount(x) --> F16_round(..) - fix16ToFix32(x) --> F16_toFix32(..) - fix32ToFix16(x) --> F32_toFix16(..) - ... * M3D_setRotation(..) is now taking rotation angles in degree (fix16 format)

Source: README.md, updated 2025-04-01