Releases: gbdk-2020/gbdk-2020
gbdk-4.5.0
GBDK-4.5.0
Upgrading
If upgrading, please review 4.5.0 section in "Migrating to new GBDK Versions" in the docs.
Build OSes (May alter OS compatibility)
- Changed from building on MacOS 13 to MacOS 15 for 64 bit Intel
Highlights
- Added HRAM variable allocation and example (sm83)
- Added SRAM bank
#pragma dataseg DATA_<N>and example (sm83, z80) - Added zx0 compression support and
zx0_decompress()(sm83, z80) png2asset:- Added logging of conversion arguments to .c and .h output files
- Added
-use_metafileoption to load arguments from<inputfile>.meta
- New Examples:
- Game Boy MBC5 Rumble (@EV3lindaboi)
- SMS NMI handler
- MegaDuck Laptop Printer
Other Notable Changes
- See Full Release notes in the online docs
- Library
- GB/AP/Duck
- Improved
get_bkg_xy_addr(),get_win_xy_addr() - Improved performance for banked calls
- Improved
- SMS/GG
- Changed GG "not interrrupt" link port control bit constant from GGEXT_NINIT to GGEXT_NINT
- Fixed parameter order of
set_tile_submap(),set_tile_submap_compat() - Fixed tilemap width not set correctly in
set_tile_submap_compat()
- NES: Fixed fill_bkg_rect() screen edge wrap, now calls set_bkg_tile_xy()
- GB/AP/Duck
- Examples
- Added MegaDuck and Game Gear support to Game Boy Printer example
- Fixed Platformer example incorrectly using
-keep_duplicate_tilesflag - Fixed Text Advanced Dialogue example printing
- Toolchain / Utilities
bankpack: Changed Linkerfile output for use with asm.bndryalignment in rom banksgbcompress: added include guards for header file output (@RodrigoCard)png2asset- Added binary palette export for -bin mode
- Fixed SGB borders with more than one 16 color palette
- Docs: Improved html style, section links and mobile web formatting
gbdk-4.4.0
GBDK-4.4.0
Upgrading
If upgrading, please review 4.4.0 section in "Migrating to new GBDK Versions" in the docs.
Build OSes (May alter OS compatibility)
- Changed from building on MacOS 11 to MacOS 13 for 64 bit Intel
- Changed from building on Ubuntu Linux 20.04 to 22.04 for 64 bit Intel
Highlights
- Improved NES support
- Updated compiler to SDCC 4.5.0
- Added Linux ARM 64 build
- New Examples:
- Game Boy MBC7 Accelerometer, MBC3 Real Time Clock (RTC)
- Mega Duck Laptop Keyboard, RTC, Speech
- Added
makenesutility for finalizing NES rom headers (called automatically bylcc)
Other Notable Changes
- See Full Release notes in the online docs
- Library improvements
- Timer interrupt emulation:
add_TIM(),remove_TIM()for NES/SMS/GG - NES
- Added
delay()andreset() - Improved LCD ISR support, palette function code size (smaller)
- Changed LCD bkg_scroll_y to be relative to the current scanline for higher compatibility with Game Boy SCY_REG and LCD handlers
- Fixed bugs with
set_bkg_1bpp_data()in buffered mode, multiple column attribute updates - Fixed bugs with non-multiple-of-2 (/4) map width in
set_bkg_submap_attributes()
- Added
- SMS/GG: Improved metasprite Y clipping, 16 bit coordinates for
...metasprite...()functions - MegaDuck: Added header files:
duck/laptop_io.h,duck/model.h,duck/laptop_keycodes.h
- Timer interrupt emulation:
- Toolchain / Utilities
lcc: Changed use--no-optsdcc-in-asmfor building user programs and the GBDK library (avoid SDCC linker issues)- png2asset
- Added support for 512 tiles via alternate tile bank on GBC
- Fixed Palette Generation broken when using
-source_tilesetoption
bankpack: Added support for MBC7, fixed incorrect allocation sizes (@RodrigoCard)romusage- Added support NES (
-p:NES1) .noi/.map files
- Added support NES (
png2hicolorgb- Added
-sto specify variable/symbol name in C output
- Added
- Examples
- Added Text and Dialog example (@LaroldsJubilantJunkyard )
- Changed irq example to be cross-platform
gbdk-next
Pre-release builds of GBDK
For development purposes, not officially supported. May be changed without notice
Current binaries: 2025-01-16, 4.3.0+ at bc44ef1Current binaries: 2025-04-21, 4.4.0 at dd8568bCurrent binaries: 2025-05-19, 4.4.0 at 62de8abCurrent binaries: 2025-09-21, 4.5.0 at f4f2cecCurrent binaries: 2025-09-21, 4.5.5 (15614) at 113000b- ~~Current binaries: ~~
GBDK: 2025-10-2 at 5aa4559SDCC: with sdcc 4.5.5 (15614) at 1865dbe563f6c64b161e5432ea51c8750153bf04
GBDK: 2025-11-23 at 778f233SDCC: with sdcc 4.5.5 (15614) at 1865dbe563f6c64b161e5432ea51c8750153bf04
GBDK: 2025-12-19 at 802f092SDCC: with 4.5.0 (15267) + dataseg pragma and sfr patched backported 11d1f650459df85f1011106a7ce65e08222b413f
- Current binaries:
gbdk-4.3.0
GBDK-4.3.0 (Full Release notes)
Release Date: June 8, 2024
Upgrading
If upgrading, please review 4.3.0 section in "Migrating to new GBDK Versions" in the docs.
Highlights
- Improved NES support
- Updated compiler to SDCC 4.4.0
- Added macOS ARM binaries (SDCC building by @chrismaltby)
- New Examples: HBlank copy, Platformer (by @LaroldsJubilantJunkyard), SNES joypads on NES, Game Boy Printer, Joypad test, Display System
- Added romusage utility for estimating used/free ROM and RAM space
Changes
- Library improvements
- Added
get_system()which indicates system speed - Changed
EMU_printf()to remove dependency on stdio.h added similarEMU_fmtbuf() - Fixed emu_debug.h macros missing a trailing space
- NES
- Added PAL support
- Fixed _map_tile_offset for
set_bkg_based_tiles(), VRAM transfer buffer bug - Fixed support for 4-player controllers using fourscore
- SMS/GG
- Added
SHOW_SPRITES,HIDE_SPRITES(no hiding mid-frame),DIV_REGemulation, 6 button controller support injoypad() - Added bcd.h implementation
- Added Game Gear registers and definitions
GG_STATE,GG_EXT_7BIT,GG_EXT_CTL,GG_SIO_SEND,GG_SIO_RECV,GG_SIO_CTL,GG_SOUND_PAN
- Changed VDP to reduce chances of dangerous ISR nesting (also for MSX)
- Fixed tilemap wrapping over the low bound of the VDP name table
- Fixed
waitpad(),scroll_sprite(),__WRITE_VDP_REG_UNSAFE()VDP macro - Fixed return result of "set_tile x, y" family functions (also for MSX)
- Added
- Game Boy
- Added HBlank copy routines:
hblank_copy_vram(),hblank_cpy_vram(),hblank_copy() - Fixed 8-bit signed modulus
- Added HBlank copy routines:
- Added
- Toolchain / Utilities
- lcc: Changed -debug to add the following flags:
-Wa-l -Wl-u -Wl-w - png2asset
- Added
-sprite_no_optimize,-entity_tileset,-rel_paths - Various crashes and output fixes (+ refactor by @LaroldsJubilantJunkyard)
- Added
- makebin: Fixed crash when using
-yS(-Wm-ySwith lcc) - bankpack: Added
-banktype=to allow forcing a bank type toCODEorLITbefore packing starts
- lcc: Changed -debug to add the following flags:
- Examples
- Wav sample: play waveforms on the SMS/GG PSG
- Fixes for SMS/GG: Fonts, Large Map, gbdecompress
- Updated documentation and fixed search
gbdk-4.2.0
gbdk-4.2.0 (Full Release notes)
Upgrading
If upgrading, please review 4.2.0 section in "Migrating to new GBDK Versions" in the docs.
Highlights
- NES support for much of the GBDK API (a big undertaking by @michel-iwaniec)
- Updated compiler to SDCC 4.3 with up to 10% performance/size gains and many fixes
- Game Boy Color Hi-Color conversion utility and display example
Changes
- Library improvements
- Added
set_bkg_attributes(),set_bkg_submap_attributes(),set_bkg_attribute_xy() - Some functions renamed (old names will work for now)
vsync()replaceswait_vbl_done()set_default_palette()replacescgb_compatibility()move_metasprite_flipx/y/xy()replacemove_metasprite_h/v/hvflip(),move_metasprite_ex()replacesmove_metasprite()
- metasprites: added metasprite functions which can set base sprite property
- Added
- NES
- NES support for much of the GBDK API + banking in the library and toolchain (a big undertaking by @michel-iwaniec)
- Added
set_bkg_attributes_nes16x16(),set_bkg_submap_attributes_nes16x16(),set_bkg_attribute_xy_nes16x16()
- SMS/GG
- Swapped A and B buttons to match game boy, X coordinate metasprite clipping on the screen edges
- Game Boy:
- Faster
vmemcpy(),set_data(),get_data(), Fixedhide_sprites_range(39u, 40u)overflow shadow OAM - Refactored interrupts to use less space
- Faster
lccminor fixespng2asset: several fixes and a couple new features for palettes- Added
png2hicolorgb+ example project - Examples
- Improved wav support on AGB/AGS hardware, Added color for Large Map Example, Added GB-Type example
- Updated documentation and improved search
gbdk-4.1.1 (service release)
gbdk-4.1.1 is a service release for 4.1.0
- Fixed RGB() and RGB8() macros
For details about gbdk-4.1.0 see the (Full 4.1.0 Release Notes)
gbdk-4.1.0
gbdk-4.1.0 (Full Release notes)
- Experimental Support for MSXDOS and NES. These are not yet fully functional
- Upgrading: See 4.1.0 section in "Migrating to new GBDK Versions" in the docs for the following.
- The
gbz80port was renamed to tosm83. Some projects may require updates - The default calling convention changed in SDCC 4.2
- The
- Library fixes/improvements
- SGB: Use longer wait between the SGB packet transfers
- SMS/GG: less screen artifacts on startup,
cgb_compatibility() - Fixed:
get_sprite_data(),get_bkg_data(),get_win_data()whenLCDCF_BG8000bit ofLCDC_REGis set
- Toolchain
- png2asset: Many new tileset and processing features (See full release notes in docs)
- lcc: Add
-yoAif no ROM size specified with-autobank, Fixed broken-EPreprocess only flag - bankpack: Added
-reserve=<bank>:<size>to reserve space during packing - gbcompress: Bug fixes, added
--bank=<num> - ihxcheck: Check and warn for bank overflows under specific conditions
- Added makecom for post-processing msxdos binaries
- Examples: Added APA image 256+ tiles, SGB Sound Effects, new WAV sound example
- Updated documentation
gbdk-4.0.6
gbdk-4.0.6
- Support for MegaDuck
- Library fixes/improvements
- fix RNG for SMS/GG
- check for overflow in metasprites handling routines
set_*_based_tiles()/set_*_based_submap()set tilemaps using tile offsetadd_low_priority_TIM()set timer ISR handler that allows nested interrupts- rename
gb/BGB_emu.hintogb/EMU_debug.h - Intellisense-friendly headers (hide SDCC dialect features)
- other minor fixes
- Toolchain
- png2mtspr
- support for 4bpp graphics and SGB borders
- new -tile_origin parameter
- png2mtspr
- Updated documentation
gbdk-4.0.5
gbdk-4.0.5
- Support for Sega Master System/Sega Game Gear, Analogue Pocket
- z80 library which provide compatibility layer as well as platform-specific functions
- support for the new targets on the toolchain side.
- cross-platform examples (gnu make is required)
- See Supported Consoles & Cross Compiling for more details
- Library fixes/improvements
- low level register/constant definitions for all targets
- DEVICE_* constants
- BANK* macros
- some headers were moved from gb/* into gbdk/*
- bcd.h, console.h, far_ptr.h, font.h, gbdecompress.h, metasprites.h
- new headers:
- gbdk/platform.h: includes specific platform headers depending on the target
- gbdk/incbin.h: INCBIN* macros for including of raw binary data
- gbdk/rledecompress.h: RLE decompression functions
- itoa()/uitoa()/ltoa()/ultoa() require radix parameter (GB target ignores it and assumes radix is 10)
- fixed get_bkg_tile_xy()
- other minor fixes/enhancements
- Toolchain
- lcc
- ability to pass target port/platform
- support for linker files
- bankpack
- support for linker files
- support for SMS/GG specifics
- png2mtspr was renamed to png2asset
- tilemaps/tiledata export without metasprite descriptors
- CGB support
- support for RLE compression in gbcompress
- lcc
- New examples
- cross-platform examples
- INCBIN example
- on-the-fly RLE data decompression example
- Updated documentation
gbdk-4.0.4
gbdk-4.0.4
- Updated documentation
- Library was improved
- Switch to standard types declared in stdint.h and stdbool.h
- Separate cgb.h and sgb.h from gb.h (possible breaking change)
- get_vram_byte(), get_win_tile_xy(), get_bkg_tile_xy(), set_tile_data()
- Fix broken decompression to VRAM routines
- Multiple minor improvements
- png2mtspr improvements and bug fixes
- Support for code relocation with bankpack
- Support for link scripts in lcc
- Support for C input into gbcompress
- Other lcc frontend improvements