Skip to content

Releases: gbdk-2020/gbdk-2020

gbdk-4.5.0

28 Dec 02:07
5d955df

Choose a tag to compare

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_metafile option 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
    • 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()
  • Examples
    • Added MegaDuck and Game Gear support to Game Boy Printer example
    • Fixed Platformer example incorrectly using -keep_duplicate_tiles flag
    • Fixed Text Advanced Dialogue example printing
  • Toolchain / Utilities
    • bankpack: Changed Linkerfile output for use with asm .bndry alignment in rom banks
    • gbcompress: 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

19 May 21:22
ebd57c2

Choose a tag to compare

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 makenes utility for finalizing NES rom headers (called automatically by lcc)

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() and reset()
      • 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()
    • 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
  • Toolchain / Utilities
    • lcc: Changed use --no-optsdcc-in-asm for 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_tileset option
    • bankpack: Added support for MBC7, fixed incorrect allocation sizes (@RodrigoCard)
    • romusage
      • Added support NES (-p:NES1) .noi/.map files
    • png2hicolorgb
      • Added -s to specify variable/symbol name in C output
    • Examples

gbdk-next

16 Jan 22:41
bc9429d

Choose a tag to compare

gbdk-next Pre-release
Pre-release

Pre-release builds of GBDK

For development purposes, not officially supported. May be changed without notice

gbdk-4.3.0

15 Mar 09:33
a12e334

Choose a tag to compare

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 similar EMU_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_REG emulation, 6 button controller support in joypad()
      • 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)
    • Game Boy
      • Added HBlank copy routines: hblank_copy_vram(), hblank_cpy_vram(), hblank_copy()
      • Fixed 8-bit signed modulus
  • 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)
    • makebin: Fixed crash when using -yS (-Wm-yS with lcc)
    • bankpack: Added -banktype= to allow forcing a bank type to CODE or LIT before packing starts
  • 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

09 Aug 20:22
d7c6be4

Choose a tag to compare

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() replaces wait_vbl_done()
      • set_default_palette() replaces cgb_compatibility()
      • move_metasprite_flipx/y/xy() replace move_metasprite_h/v/hvflip(), move_metasprite_ex() replaces move_metasprite()
    • metasprites: added metasprite functions which can set base sprite property
  • 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(), Fixed hide_sprites_range(39u, 40u) overflow shadow OAM
    • Refactored interrupts to use less space
  • lccminor fixes
  • png2asset: 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)

05 Nov 04:15
0c860c6

Choose a tag to compare

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

29 Oct 02:11
7b7e0ef

Choose a tag to compare

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 gbz80 port was renamed to to sm83. Some projects may require updates
    • The default calling convention changed in SDCC 4.2
  • 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() when LCDCF_BG8000 bit of LCDC_REG is set
  • Toolchain
    • png2asset: Many new tileset and processing features (See full release notes in docs)
    • lcc: Add -yoA if no ROM size specified with -autobank, Fixed broken -E Preprocess 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

02 Feb 16:01

Choose a tag to compare

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 offset
    • add_low_priority_TIM() set timer ISR handler that allows nested interrupts
    • rename gb/BGB_emu.h into gb/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
  • Updated documentation

gbdk-4.0.5

24 Sep 21:08
7b76eb1

Choose a tag to compare

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
  • New examples
    • cross-platform examples
    • INCBIN example
    • on-the-fly RLE data decompression example
  • Updated documentation

gbdk-4.0.4

15 Jun 19:48
8f2a928

Choose a tag to compare

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