Gbdk 2020 Versions Save

An updated version of GBDK, C compiler, assembler, linker and set of libraries for the Nintendo Gameboy, Nintendo Entertainment System, Sega Master System, Sega Game Gear.

pre-release

2 months ago

Pre-release for development testing, not for general purpose use

Build: Develop: d7bdbf9, GBDK Build and Package

4.2.0

9 months ago

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

4.1.1

1 year ago

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)

4.1.0

1 year ago

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

4.0.6

2 years ago

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

4.0.5

2 years ago

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

4.0.4

2 years ago

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

3 years ago

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

3 years ago

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

3 years ago

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