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.

v4.0

3 years ago
  • GBDK now requires SDCC 4.0.3 or higher, that has fully working toolchain. Old link-gbz80 linker is not used anymore, sdldgb and makebin are used to link objects and produce binary roms; maccer tool is no longer needed either

    • SDCC 4.0.3 has much better code generator which produces smaller and faster code. Code is twice faster
    • SOURCE LEVEL DEBUGGING is possible now! Native toolchain produces *.CDB files that contain detailed debug info. Look for EMULICIOUS extension for vs.code. It supports breakpoints, watches, inspection of local variables, and more!
    • SDCC 4.0.4 has fixed RGBDS support; library is not updated to support that in full yet, but it is possible to assemble and link code emitted by SDCC with RGBDS
    • New banked trampolines are used, they are faster and smaller
    • New (old) initialization for non-constant arrays do NOT require 5 times larger rom space than initialized array itself, SDCC even tries to compress the data
  • Library was improved

    • itoa/ltoa functions were rewritten, div/mod is not required now which is about 10 times faster
    • sprite functions are inline now, which is faster up to 12 times and produces the same or smaller code; .OAM symbol is renamed into _shadow_OAM that allows accessing shadow OAM directly from C code
    • interrupt handling was revised, it is now possible to make dedicated ISR's, that is important for time-sensitive handlers such as HBlank.
    • printf/sprintf were rewritten and splitted, print functions are twice faster now and also requre less rom space if you use sprintf() only, say, in bgb_emu.h
    • crash_handler.h - crash handler that allows to detect problems with ROMs after they are being released (adapted handler, originally written by ISSOtm)
    • improved and fixed string.h
    • many other improvements and fixes - thanks to all contributors!
  • Revised examples

  • Improved linux support

  • Lcc has been updated

    • it works with the latest version of sdcc
    • quoted paths with spaces are working now

v3.2

4 years ago
  • Fixed OAM initialization that was causing a bad access to VRAM
  • Interrupt handlers now wait for lcd controller mode 0 or 1 by default to prevent access to inaccessible VRAM in several functions (like set_bkg_tiles)
  • Several optimizations here and there

Download only the zip for your OS. You don't need the source code unless you are interested on recompiling the library!!

v.3.1.1b

4 years ago

Fixed issues with libgcc_s_dw2-1.dll

Download only the zip for your OS. You don't need the source code unless you are interested on recompiling the library!!

v3.1

4 years ago
  • Banked functions are working! The patcher is fully integrated in link-gbz80, no extra tools are needed. It is based on Toxa's work
    • Check this post for more info
    • Check the examples/gb/banked code for basic usage
  • USE_SFR_FOR_REG is the default now check here why
  • Fixed examples that were not compiling in the previous version and some improvements in a few of them. Removed all warnings caused by changing to the new SDCC
  • Fixed bug in lcc that was causing some files in the temp folder not being deleted
  • Removed as-gbz80 (the lib is now compiled with sdasgb thanks to this workaround)
  • Profile support with bgb emulator
    • Basic support including <gb/bgb_emu.h> and using the macros BGB_PROFILE_BEGIN and BGB_PROFILE_END. More info in this post
    • For full profiling check this repo and this post

Download only the zip for your OS. You don't need the source code unless you are interested on recompiling the library!!

3.0.1

4 years ago

Updated SDCC to v.4.0 Updated LCC to work with the new compiler