Skip to content

Releases: gbdk-2020/gbdk-2020

gbdk-4.3.0

15 Mar 09:33
a12e334
Compare
Choose a tag to compare

GBDK-4.3.0 (Full Release notes)

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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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

4.0.3

25 Mar 19:15
Compare
Choose a tag to compare

gbdk-4.0.3

  • Updated documentation, including the PDF version
  • Library was improved
    • Metasprites support (see example)
    • GBCompress decompressor included (see example)
    • Large map scrolling helper functions (see example)
    • Multiple minor improvements
  • New tools
    • png2mtspr converts png images into metasprite structs
    • gbcompress compression utility, compatible with GBTD/GBMB

4.0.2

17 Jan 10:08
da0fdfb
Compare
Choose a tag to compare

gbdk3-4.0.2

  • Updated documentation
  • Library was improved
    • Linking with stdio.h does not require that much rom now
    • Default font is changed to the smaller one (102 characters), that leaves space for user tiles
    • Fixed broken support for multiplying longs
    • Multiple minor improvements
  • New bankpack feature, allows automatic bank allocation for data and code, see banks_autobank example, feature is in beta state, use with care
  • Lcc improvements

4.0.1

14 Nov 20:03
3ac816e
Compare
Choose a tag to compare

gbdk3-4.0.1

  • Updated documentation
  • IHX is checked for correctness before the makebin stage. That allows to warn about overwriting the same ROM addresses (SDCC toolchain does not check this anymore).
  • Library was improved
    • set_*_tiles() now wrap maps around horizontal and vertical boundaries correctly
    • new fill_*_rect() functions to clear rectangle areas
    • runtime initialization code now does not initialize whole WRAM with zeros anymore, that allows BGB to raise exceptions when code tries to read WRAM that was not written before.
    • enhanced SGB support
      • joypad_init()/joypad_ex() support for multiple joypads
      • SGB border example
    • _current_bank variable is updated when use bank switching macros
  • Reorganized examples: each example is in separate folder now, that simplifies understanding.
  • Lcc improvements