SGDK Versions Save

SGDK - A free and open development kit for the Sega Mega Drive

v1.40

4 years ago

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

1.34

6 years ago

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 (^^)

v1.33

6 years ago

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

v1.32

6 years ago

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

v1.31

6 years ago

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

v1.30

6 years ago

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

1.22a

7 years ago

(September 2016)

LIBRARY

  • VDP: reintroduced the 16 plain system tiles.

1.22

7 years ago

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.