git.y1.nz

gbdk-2020

GameBoy Development Kit
download: https://git.y1.nz/archives/gbdk.tar.gz
README | Files | Log | Refs | LICENSE

docs/ChangeLog

      1 gbdk-4.5.0
      2     - Library
      3       - Added dynamic HRAM variable allocation for GB/AP/Duck
      4       - Added zx0 decompression support for sm83, z80: zx0_decompress()
      5       - Fixed escaping % symbol in printf() and sprintf()
      6       - GB/AP/Duck
      7         - Improved get_bkg_xy_addr(), get_win_xy_addr()
      8         - Improved performance for banked calls
      9       - SMS/GG
     10         - Changed GG "not interrrupt" link port control bit constant from GGEXT_NINIT to GGEXT_NINT
     11         - Removed legacy ___sdcc_bcall trampoline
     12         - Fixed parameter order of set_tile_submap(), set_tile_submap_compat()
     13         - Fixed tilemap width not set correctly in set_tile_submap_compat()
     14       - NES/SMS/GG: Remove broken and unused FAST_DIV8 macro
     15       - NES: Fixed fill_bkg_rect() to wrap correctly at screen edges, now calls set_bkg_tile_xy()
     16     - Examples
     17       - Added HRAM variable example for GB/AP/Duck
     18       - Added SRAM bank example for new #pragma dataseg DATA_<N>
     19       - Added Game Boy MBC5 Rumble example
     20       - Added SMS NMI handler example
     21       - Added MegaDuck Laptop Printer example
     22       - Added MegaDuck and Game Gear support to Game Boy Printer example
     23       - Improved RLE compress example to convert and compress map at build time
     24       - Fixed Platformer example incorrectly using -keep_duplicate_tiles flag
     25       - Fixed Text Advanced Dialogue example printing
     26       - Fixed Sound example not writing length when length bit enabled and triggering channel
     27     - Toolchain / Utilities
     28       - png2asset
     29         - Added binary palette export for -bin mode
     30         - Added logging of conversion arguments to .c and .h output files
     31           - Path is stripped to avoid potential unwanted username/etc disclosure
     32         - Added -use_metafile option to load arguments from <inputfile>.meta
     33         - Changed to separate attribute array for -use_map_attributes + -use_structs with SMS/GG
     34         - Fixed broken transparency for SGB borders with more than one 16 color palette
     35         - Fixed missing error for -bin requiring -map
     36         - Fixed incorrect line breaks and trailing spaces in output
     37       - bankpack
     38         - Changed Linkerfile output order to match packing order for use with asm .bndry alignment in rom banks
     39         - Improved bank assignment printout
     40       - gbcompress
     41         - Added include guards for header file output (Rodrigo Card)
     42         - Added zx0 compression and decompression mode: --alg=zx0
     43       - romusage: Fixed missing error when filename not present
     44     - Docs: Improved html style and mobile web formatting
     45 
     46 gbdk-4.4.0
     47     - Library
     48       - NES
     49         - Added delay() and reset() functions for compatibility
     50         - Added Timer interrupt emulation: add_TIM(), remove_TIM()
     51         - Improved LCD ISR support for less graphics glitches
     52         - Improved palette function code size (smaller)
     53         - Changed LCD bkg_scroll_y to be relative to the current scanline for higher compatibility with Game Boy SCY_REG and LCD handlers
     54         - Fixed bug with set_bkg_1bpp_data() not working in buffered mode
     55         - Fixed bug with multiple column attribute updates
     56         - Fixed bugs with non-multiple-of-2 (/4) map width in set_bkg_submap_attributes()
     57       - SMS/GG
     58         - Added Timer interrupt emulation: add_TIM(), remove_TIM()
     59         - Improved metasprite Y clipping
     60         - Changed from unsigned (uint16_t) to signed int16 (int16_t) for coordinates with the family of ...metasprite...() functions
     61       - MegaDuck
     62         - Added header files: duck/laptop_io.h, duck/model.h, duck/laptop_keycodes.h
     63     - Toolchain / Utilities
     64       - lcc
     65         - Changed use --no-optsdcc-in-asm for building user programs and the GBDK library
     66           - This removes some "O line" meta-data from object files to avoid false-positive linker errors
     67           - It is a workaround for SDCC now appending the calling convention to the "O Line" in the object files by default
     68         - Changed to warn about some deprecated flags: A,b, B, -dn, -g, -n, -O, P, -p, -static, -t, -w
     69       - Added makenes utility for finalizing NES rom headers (called automatically by lcc)
     70       - png2asset
     71         - Added -area option to specify linker area name (such as -area LIT for SMS/GG)
     72         - Added support for 512 tiles via alternate tile bank on GBC
     73         - Fixed Palette Generation broken when using -source_tileset option
     74       - bankpack:
     75         - Added support for MBC7
     76         - Fixed bugs with large number of object files      
     77       - romusage
     78         - Added Set hex bytes treated as Empty in ROM files (.gb/etc) -b:HEXVAL:[...]
     79         - Added option to Hide memory regions (ex hide all RAM: -nMEM:RAM)
     80         - Added support NES (-p:NES1) .noi/.map files
     81         - Changed to allow filename at any location in option arguments
     82         - Fixed detecting areas with leading underscores for .noi/.map files
     83         - Fixed Brief/summarized mode counting overlapped header areas multiple times
     84       - png2hicolorgb
     85         - Added --palendbit for indicating end of data
     86         - Added --addendcolor=N for appending color to clear the background on non-full height images
     87         - Added --precompiled mode
     88         - Added -s to specify variable/symbol name in C output
     89       - ihxcheck: Fixed check on max bank to prevent crash
     90     - Examples
     91       - Added Game Boy MBC7 Accelerometer, MBC3 Real Time Clock (RTC)
     92       - Added Mega Duck Laptop Keyboard, RTC, Speech
     93       - Added Text and Dialog example
     94       - Changed irq example to be cross-platform
     95       - Improved emu_debug example
     96 
     97 gbdk-4.3.0
     98     - Library
     99       - Added get_system() which indicates system speed
    100       - Changed EMU_printf() to remove dependency on stdio.h added similar EMU_fmtbuf()
    101       - Fixed emu_debug.h macros missing a trailing space
    102       - NES
    103         - Many library improvements
    104         - Added PAL support
    105         - Fixed _map_tile_offset for set_bkg_based_tiles(), VRAM transfer buffer bug
    106         - Fixed support for 4-player controllers using fourscore
    107       - SMS/GG
    108         - Added SHOW_SPRITES, HIDE_SPRITES (no hiding mid-frame), DIV_REG emulation, 6 button controller support in joypad()
    109         - Added bcd.h implementation
    110         - Added Game Gear registers and definitions
    111           - GG_STATE, GG_EXT_7BIT, GG_EXT_CTL, GG_SIO_SEND, GG_SIO_RECV, GG_SIO_CTL, GG_SOUND_PAN
    112         - Changed VDP to reduce chances of dangerous ISR nesting (also for MSX)
    113         - Fixed tilemap wrapping over the low bound of the VDP name table
    114         - Fixed waitpad(), scroll_sprite(), __WRITE_VDP_REG_UNSAFE() VDP macro
    115         - Fixed return result of "set_tile x, y" family functions (also for MSX)
    116       - Game Boy
    117         - Added HBlank copy routines: hblank_copy_vram(), hblank_cpy_vram(), hblank_copy()
    118         - Fixed 8-bit signed modulus
    119     - Toolchain / Utilities
    120       - Added romusage utility for viewing free/used ROM and RAM in compiled programs
    121       - lcc: Changed -debug to add the following flags: -Wa-l -Wl-u -Wl-w
    122       - png2asset
    123         - Added -sprite_no_optimize, -entity_tileset, -rel_paths
    124         - Various crashes and output fixes
    125       - makebin: Fixed crash when using -yS (-Wm-yS with lcc)
    126       - bankpack: Added -banktype= to allow forcing a bank type to CODE or LIT before packing starts
    127     - Examples
    128       - Added HBlank copy, Read SNES joypads on NES, Game Boy Printer, Joypad test, Display System, Platformer
    129       - Wav sample: play waveforms on the SMS/GG PSG
    130       - Fixes for SMS/GG: Fonts, Large Map, gbdecompress
    131       - Removed Analogue Pocket examples that were just duplicates of Game Boy ones
    132     - Updated documentation and fixed search
    133 
    134 gbdk-4.2.0
    135     - Library fixes/improvements
    136       - Added set_bkg_attributes(), set_bkg_submap_attributes(), set_bkg_attribute_xy()
    137       - Some functions renamed (old names will work for now)
    138         - vsync(): replaces wait_vbl_done()
    139         - set_default_palette(): replaces cgb_compatibility()
    140         - move_metasprite_flipy(): replaces move_metasprite_hflip()
    141         - move_metasprite_flipx(): replaces move_metasprite_vflip()
    142         - move_metasprite_flipxy(): replaces move_metasprite_hvflip()
    143         - move_metasprite_ex(): (replaces move_metasprite()
    144       - metasprites: added metasprite functions which can set base sprite property parameter
    145     - NES
    146       - Added support for much of the GBDK API
    147       - Banking support (library and sdcc toolchain)
    148       - Added set_bkg_attributes_nes16x16(), set_bkg_submap_attributes_nes16x16(), set_bkg_attribute_xy_nes16x16()
    149     - SMS/GG
    150       - Swapped A and B buttons to match game boy buttons
    151       - X coordinate metasprite clipping on the screen edges
    152     - Game Boy
    153       - Faster vmemcpy(), set_data(), get_data()
    154       - Fixed hide_sprites_range(39u, 40u) overflow shadow OAM
    155       - Removed legacy MBC register definitions `.MBC1_ROM_PAGE` and `.MBC_ROM_PAGE`
    156       - Workaround for possible HALT bug in Crash Handler
    157     - Refactored interrupts to use less space
    158     - lcc "lcc"
    159       - Fixed `--sdccbindir`
    160     - png2asset
    161       - Added `-repair_index_pal`: Tries to repair tile palettes
    162       - Added `-no_palettes`: Do not export palette data
    163       - Fixed support for indexed color pngs with less than 8 bits color depth
    164       - Fixed incorrect palettes when different colors have same luma value
    165       - Fixed -keep_duplicate_tiles not working with -source_tileset
    166     - Added png2hicolorgb + example project
    167     - Added sdld6808 (for NES)
    168     - Examples
    169       - Wav Playback: Improved support on AGB/AGS hardware
    170       - Large Map: Added color for supported platforms
    171       - Added GB-Type example
    172     - Updated documentation and improved search
    173 
    174 gbdk-4.1.1
    175     - Library fixes/improvements
    176       - Fixed RGB() and RGB8() macros
    177 
    178 gbdk-4.1.0
    179     - Experimental Support for MSXDOS and NES. These are not yet fully functional
    180     - SDCC
    181       - The `gbz80` port was renamed to to `sm83`. Some projects may require updates
    182       - The default calling convention changed in SDCC 4.2
    183          - See 4.1.0 Release in "Migrating to new GBDK Versions" in the docs
    184     - Library fixes/improvements
    185       - SGB: Use longer wait between the SGB packet transfers
    186       - SMS/GG: less screen artifacts on startup, cgb_compatibility()
    187       - Fixed: get_sprite_data(), get_bkg_data(), get_win_data() when @LCDCF_BG8000 bit of LCDC_REG is set
    188     - Toolchain
    189       - png2asset: Many new tileset and processing features
    190         -tiles_only, -maps_only, -metasprites_only, -source_tileset, -keep_duplicate_tiles, -bin, -transposed, -spr16x16msx, -use_nes_attributes, -use_nes_colors
    191       - gbcompress
    192         - Bug fixes and added --bank=<num>
    193       - lcc
    194         - Add -yoA if no ROM size specified with -autobank
    195         - Fixed broken `-E` Preprocess only flag
    196       - Added makecom for post-processing msxdos binaries
    197       - bankpack
    198         - Added -reserve=<bank>:<size> to reserve space during packing
    199       - ihxcheck
    200         - Check and warn for bank overflows under specific conditions
    201     - Examples
    202       - Added example for APA image mode with more than 256 tiles
    203       - Added SGB Sound Effects example
    204       - Changed to new WAV sound example
    205     - Updated documentation
    206     - Licensing
    207       - Status of licensing clarified with consent from GBDK original authors, added licensing folder
    208 
    209 gbdk-4.0.6
    210     - Support for MegaDuck
    211     - Library fixes/improvements
    212         - fix RNG for SMS/GG
    213         - check for overflow in metasprites handling routines
    214         - set_*_based_tiles() / set_*_based_submap() set tilemaps using tile offset
    215         - add_low_priority_TIM() set timer ISR handler that allows nested interrupts
    216         - rename gb/BGB_emu.h into gb/EMU_debug.h
    217         - Intellisense-friendly headers (hide SDCC dialect features)
    218         - other minor fixes
    219     - Toolchain
    220         - png2mtspr
    221             - support for 4bpp graphics and SGB borders
    222             - new -tile_origin parameter
    223     - Updated documentation
    224 
    225 gbdk-4.0.5
    226     - Support for Sega Master Sysyem/Sega Game Gear
    227         - z80 library which provide compatibility layer as well as platform-specific functions
    228         - support for the new targets on the toolchain side
    229         - cross-platform examples (gnu make is required)
    230     - Library fixes/improvements
    231         - low level register/constant definitions for all targets
    232         - DEVICE_* constants
    233         - BANK* macros
    234         - some headers were moved from gb/* into gbdk/*
    235             - bcd.h, console.h, far_ptr.h, font.h, gbdecompress.h, metasprites.h
    236         - new headers:
    237             - gbdk/platform.h: includes specific platform headers depending on the target
    238             - gbdk/incbin.h: INCBIN* macros for including of raw binary data
    239             - gbdk/rledecompress.h: RLE decompression functions
    240         - itoa()/uitoa()/ltoa()/ultoa() require radix parameter (GB target ignores it and assumes radix is 10)
    241         - fixed get_bkg_tile_xy()
    242         - other minor fixes/enhancements
    243     - Toolchain
    244         - lcc
    245             - ability to pass target port/platform
    246             - support for linker files
    247         - bankpack
    248             - support for linker files
    249             - support for SMS/GG specifics
    250         - png2mtspr was renamed to png2asset
    251             - tilemaps/tiledata export without metasprite descriptors
    252             - CGB support
    253         - support for RLE compression in gbcompress
    254     - New examples
    255         - cross-platform examples
    256         - INCBIN example
    257         - on-the-fly RLE data decompression example
    258     - Updated documentation
    259 
    260 gbdk-4.0.4
    261     - Updated documentation
    262     - Library was improved
    263         - Switch to standard types declared in stdint.h and stdbool.h
    264         - separate cgb.h and sgb.h from gb.h (possible breaking change)
    265         - get_vram_byte(), get_win_tile_xy(), get_bkg_tile_xy(), set_tile_data()
    266         - fix broken decompression to VRAM routines
    267         - Multiple minor improvements
    268     - png2mtspr improvements and bug fixes
    269     - support for code relocation with bankpack
    270     - support for link scripts in lcc
    271     - support for C input into gbcompress
    272     - other lcc frontend improvements
    273 
    274 gbdk-4.0.3
    275     - Updated documentation, including the PDF version
    276     - Library was improved
    277         - Metasprites support (see example)
    278         - GBCompress decompressor included (see example)
    279         - Large map scrolling helper functions (see example)
    280         - Multiple minor improvements
    281     - New tools
    282         - png2mtspr converts png images into metasprite structs
    283         - gbcompress compression utility, compatible with GBTD/GBMB
    284 
    285 gbdk-4.0.2
    286     - Updated documentation
    287     - Library was improved
    288         - Linking with stdio.h does not require that much rom now
    289         - Default font is changed to the smaller one (102 characters), that leaves space for user tiles
    290         - Fixed broken support for multiplying longs
    291         - Multiple minor improvements
    292     - New bankpack feature, allows automatic bank allocation for data and code, see banks_autobank example, feature is in beta state, use with care
    293     - Lcc improvements
    294 
    295 gbdk-4.0.1
    296     - Updated documentation
    297     - 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).
    298     - Library was improved
    299         - set_*_tiles() now wrap maps around horizontal and vertical boundaries correctly
    300         - new fill_*_rect() functions to clear rectangle areas
    301         - 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.
    302         - enhanced SGB support
    303             - joypad_init()/joypad_ex() support for multiple joypads
    304             - SGB border example
    305         - _current_bank variable is updated when use bank switching macros
    306     - Reorganized examples: each example is in separate folder now, that simplifies understanding.
    307     - Lcc improvements
    308 
    309 gbdk-4.0
    310     - 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
    311         - SDCC 4.0.3 has much better code generator which produces smaller and faster code. Code is twice faster
    312         - 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!
    313         - 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
    314         - New banked trampolines are used, they are faster and smaller
    315         - 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
    316     - Library was improved
    317         - itoa/ltoa functions were rewritten, div/mod is not required now which is about 10 times faster
    318         - 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
    319         - interrupt handling was revised, it is now possible to make dedicated ISR's, that is important for time-sensitive handlers such as HBlank.
    320         - 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
    321         - crash_handler.h - crash handler that allows to detect problems with ROMs after they are being released (adapted handler, originally written by ISSOtm)
    322         - improved and fixed string.h
    323         - many other improvements and fixes - thanks to all contributors!
    324     - Revised examples
    325     - Improved linux support
    326     - Lcc has been updated
    327         - it works with the latest version of sdcc
    328         - quoted paths with spaces are working now
    329 
    330 gbdk-3.2
    331     - support for BCD numbers
    332     - support for far pointers, that allow to call functions in other banks by pointer
    333     - some useful parts of native SDCC library are merged into GBDK (stdint, limits, stdbool, setjmp, stdatomic and so on)
    334 
    335 gbdk-3.1
    336     - Banked functions are working!
    337         - Check this [post](https://gbdev.gg8.se/forums/viewtopic.php?id=700) for more info
    338         - Check the examples/gb/banked code for basic usage
    339     - USE_SFR_FOR_REG is the default now [check here why](https://gbdev.gg8.se/forums/viewtopic.php?id=697)
    340     - 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
    341     - Fixed bug in lcc that was causing some files in the temp folder not being deleted
    342     - Removed as-gbz80 (the lib is now compiled with sdasgb thanks to this [workaround](https://github.com/Zal0/gbdk-2020/commit/d2caafa4a66eb08998a14b258cb66af041a0e5c8))
    343     - Profile support with bgb emulator
    344         - Basic support including <gb/bgb_emu.h> and using the macros BGB_PROFILE_BEGIN and BGB_PROFILE_END. More info in this [post](https://gbdev.gg8.se/forums/viewtopic.php?id=703)
    345         - For full profiling [check this repo](https://github.com/untoxa/bgb_profiling_toolkit/blob/master/readme.md) and this [post](https://gbdev.gg8.se/forums/viewtopic.php?id=710)
    346 
    347 gbdk-3.00
    348     Updated SDCC to v4.0
    349     The new linker is not working so the old version is still there
    350     There is an issue with sdagb compiling drawing.s (the JP in
    351     line 32 after ".org .MODE_TABLE+4*.G_MODE" it's writing more
    352     than 4 bytes invading some addresses required by input.s:41)
    353     Because of this, all .s files in libc have been assembled
    354     with the old as-gbz80 and that's why it is still included
    355 
    356 gbdk-2.96
    357     * Many changes.  Code generated is now much more reliable and
    358     passes all of sdcc's regression suite.  Added support for large
    359     sets of local variables (>127 bytes).  Added full 32 bit long
    360     support.  Still no floating pt support.
    361 
    362 gbdk-2.95-3
    363     * Stopped lcc with sdcc from leaking .cdb files all across
    364       /tmp.
    365     * Optimised < and > for 16 bit varibles.
    366     * Added a new lexer to sdcc.  Compiling files with large
    367       initalised arrays takes 31% of the time (well, at least
    368       samptest.c does :)
    369 
    370 gbdk-2.95-2
    371     * Added model switching support
    372        --model-medium uses near (16 bit) pointers for data, and
    373        banked calls for anything not declared as 'nonbanked'
    374        --model-small uses near (16 bit) pointers for data and
    375        calls.  Nothing uses banked calls.  'nonbanked' functions
    376        are still placed in HOME.  Libraries are under lib/medium
    377        and lib/small.
    378     * Added the gbdk version to 'sdcc --version'
    379     * Changed the ways globals are exported, reducing the amount
    380       of extra junk linked in.
    381     * Turned on the optimisations in flex.  Large constant arrays
    382       like tile data should compile a bit faster.
    383 
    384 gbdk-2.95
    385     * Fixed 'a >> c' for c = [9..15]
    386     * Fixed 'a << c' for c = [9..15]
    387     * no$gmb doesn't support labels of > 32 chars.  The linker now
    388     trims all labels to 31 chars long.
    389     * Fixed wait_vbl for the case where you miss a vbl
    390     * Fixed + and - for any type where sizeof == 2 and one of the
    391     terms was on the stack.  This includes pointers and ints. Fixes
    392     the text output bug in the examples.  Should be faster now as
    393     well.  Note that + and - for longs is still broken.
    394     * Fixed the missing */ in gb.h
    395     * Added basic far function support.  Currently only works for isas
    396     and rgbasm.  See examples/gb/far/*
    397     * bc is now only pushed if the function uses it.  i.e. something
    398     like:
    399         int silly(int i)
    400         {
    401         return i;
    402         }
    403     will not have the push bc; pop bc around it.
    404     * Better rgbasm support.  Basically:
    405            o Use "sdcc -mgbz80 --asm=rgbds file.c" for each file.c
    406            o Use "sdcc -mgbz80 --asm=rgbds crt0.o gbz80.lib gb.lib file1.o file2.o..."
    407 
    408     to link everything together.  The .lib files are generated using
    409     astorgb.pl and sdcc to turn the gbdk libraries into something
    410     rgbds compatible.
    411     The libraries are _not_ fully tested.  Trust nothing.  But give it
    412     a go :)
    413     * Ran a spell checker across the README and ChangeLog
    414 
    415 gbdk-2.94
    416     * Fixed
    417         #define BLAH  7  // Unterminated ' error
    418       in sdcpp
    419     * Fixed
    420         SCY_REG += 2, SCY_REG -= 5
    421       (add and subtract in indirect space) as they were both quite broken.
    422     * externs and static's now work as expected.
    423     * You can now specify which bank code should be put into using a
    424       #pragma e.g:
    425         #pragma bank=HOME
    426     Under rgbds and asxxxx putting code in the HOME bank will force
    427     the code into bank 0 - useful for library functions.  The most
    428     recent #pragma bank= will be the one used for the whole file.
    429     * Fixed an interesting bug in the caching of lit addresses
    430     * Added support for accessing high registers directly using the
    431     'sfr' directive.  See libc/gb/sfr.s and gb/hardware.h for an
    432     example.  It should be possible with a bit of work to make high
    433     ram directly usable by the compiler; at the moment it is
    434     experimental.  You can test sfr's by enabling USE_SFR_FOR_REG=1
    435     * Added remove_VBL etc functions.
    436     * Documented the libs - see the gbdk-doc tarball distributed
    437     seperatly.
    438     * Two dimensional arrays seem to be broken.
    439 
    440 gbdk-2.93
    441     * Added multi-bank support into the compiler - The old -Wf-boxx
    442     and -Wf-baxx options now work
    443     * Has preliminary support for generating rgbds and ISAS compatible
    444     assembler.  Try -W--asm=rgbds or -W--asm=isas.  The ISAS code is
    445     untested as I dont have access to the real assembler.
    446     * RSH is fixed
    447     * AND is fixed
    448     * The missing parts of 2.1.0's libs are there.  Note: They are
    449     untested.
    450     * The dscan demo now fully works (with a hack :)
    451     * There is a bug with cached computed values which are later used
    452     as pointers.  When the value is first used as a BYTE arg, then
    453     later as a pointer the pointer fails as the high byte was never
    454     computed and is now missing.  A temporary fix is to declare
    455     something appropriate as 'volatile' to stop the value being
    456     cached.  See dscan.c/bombs() for an example.
    457 
    458 gbdk-2.92-2:
    459     * win32 only.  Takes care of some of the install bugs, including:
    460        - Now auto detects where it is installed.
    461         This can be overridden using set GBDKDIR=...
    462        - Problems with the installer (now uses WinZip)
    463        - Problems with the temp directory
    464         Now scans TMP, TEMP, TMPDIR and finally c:\tmp
    465        - cygwin1.dll and 'make' are no longer required
    466         gbdk is now built using mingw32 which is win32 native
    467         make.bat is automagically generated from the Makefile
    468        - I've reverted to using WORD for signed 16 bit etc.
    469         GBDK_2_COMPAT is no longer required.
    470 
    471 gbdk-2.92:
    472     * All the examples now work (with a little bit of patching :)
    473     * Fixed problem with registers being cached instead of being
    474     marked volatile.
    475     * More register packing - should be a bit faster.
    476     * You can now install somewhere except c:\gbdk | /usr/lib/gbdk
    477     * Arrays initialised with constant addresses a'la galaxy.c now
    478     work.
    479     * Fixed minor bug with 104$: labels in as.
    480     * Up to 167d/s...
    481 
    482 ...
    483 
    484 gbdk-2.15:
    485 MLH
    486     Fixed memset() for when the length is zero
    487     Optimised memset() - now 75% faster (see examples/tests/test-memset.c)
    488     Did the same thing to memcpy()
    489     Re-wrote the malloc() routines
    490     Added support for native (ie assembly) malloc() replacements
    491     Few changes to .mul16, .asl16 etc (Sam Nova)
    492 
    493 ...
    494 
    495 gbdk-2.0b11:
    496     Changes in GBDK 2.0b11 (DOS binary only) - 24 Nov 97
    497     • Fixed another bug in code generation, that could happen when performing logical operations on 1-byte variables.
    498 
    499 gbdk-2.0b10:
    500     Changes in GBDK 2.0b10 (DOS binary only) - 6 Nov 97
    501     • Fixed a nasty bug in code generation, that could happen when performing arithmetic operations on 1-byte variables.
    502     • Changed the name of same files of the gb-dtmf example so that it compiles on DOS.
    503 
    504 gbdk-2.0b9:
    505     Changes in GBDK 2.0b9 (DOS binary only)
    506     • Several bug fixes in the compiler and in the libraries.
    507 
    508 gbdk-2.0b8:
    509     Changes in GBDK 2.0b8 (DOS binary only)
    510     • Limited all file names to 8 characters to solve problems on DOS.
    511     • Added communication routines that enable to send data through the link port of the GameBoy. Unfortunately, these routines do not always work; so use them with care until the next GBDK release.
    512     • Added the comm.c example which illustrates how to use communication routines.
    513     • It is possible to specify the name of the program (to be written in the image header) at link time using the -Wl-yn="XXX" flag (where X is the name of the program, which can contain up to 16 characters in quotes, including spaces; on Unix, depending on your shell, you must add backslashes before quotes and spaces like in -Wl-yn=\"My\ Game\").
    514     • Several bug fixes in the compiler.
    515 
    516 gbdk-2.0b7:
    517     Changes in GBDK 2.0b7 (DOS binary only)
    518     • GBDK now uses a pre-release of lcc 4.1 (DOS binary only), that fixes a couple of problems in code generation.
    519     • A couple of important points have been documented in the GBDK Programming Guidelines and Known Problems sections.
    520     • Several improvements and optimizations to the code generator.
    521 
    522 gbdk-2.0b6:
    523     Changes in GBDK 2.0b6
    524     • Added a peephole optimizer (with few rules at the moment).
    525     • Changed the name of the hardware registers to match the "official" names.
    526     • Added support for copying complete functions to RAM or HIRAM (memcpy() and hiramcpy() functions). The compiler now automatically generates two symbol for the start and the end of each function, named start_X and end_X (where X is the name of the function). This enables to calculate the length of a function when copying it to RAM.
    527     • Added the ram_fn.c example which illustrates how to copy functions to RAM and HIRAM.
    528     • Added support for installing IRQ handlers.
    529     • Added the irq.c example which illustrates how to install IRQ handlers.
    530     • Added RAM banks support (switch_ram_bank() function). The switch_bank() function
    531     has been renamed to switch_rom_bank(). The banks.c example has been updated. The flags for generating multiple bank images have been modified.
    532     • It is possible to set the sprite ram location at link time using the -Wl-g.OAM=# flag (where # is the address of the sprite ram). The sprite ram address must begin at an address multiple of 0x100, and is 0xA0 bytes long.
    533 
    534 gbdk-2.0b5:
    535     Changes in GBDK 2.0b5
    536     • New documentation (not finished yet).
    537     • Fixed a bug that could generate wrong code in switch statements.
    538     • Fixed a bug in int comparison.
    539     • Added a DTMF program written by Osamu Ohashi.
    540     • Added a game (Deep Scan) written by a friend of Osamu.
    541     • Modified the delay() function so that it takes a long parameter. It can be used to wait between 1 and 65536 milliseconds (0 = 65536). The pause() function has been removed.
    542 
    543 gbdk-2.0b4:
    544     Changes in GBDK 2.0b4
    545     • Fixed a bug that could generate wrong code when using hexadecimal constants.
    546     • A new example (galaxy.c) has been added. It is the C version of the space.s
    547     example. sprite.c has been removed.
    548     • Most of the libraries have been split into small modules for reducing final code size.
    549 
    550 gbdk-2.0b3:
    551     Changes in GBDK 2.0b3
    552     • GBDK can generate multiple-banks images, i.e. images greater than 32kB (see the banks example).
    553     • It is possible to set the stack pointer at link time using the -Wl-g.STACK=# flag (where # is the address of the stack pointer).
    554     • Several functions (e.g. show_bkg()) have been changed into macros (e.g. SHOW_BKG).
    555     • The delay() function waits exactly 1 millisecond, and the pause() waits 256 milliseconds.
    556     • Linking with the standard libraries is no more required. The lib/gb.lib (lib\gb.lib on DOS) text file contains a list of modules in which to look for undefined symbols. The linker will parse this file, and link your code with the required modules only. The stdio library has been split in several object files, and only necessary modules will be added to your code, thus reducing its size.
    557     • The GBDK distribution can be located anywhere in your system if you use the -Wo-lccdir=GBDK-DIR flag when invoking lcc.
    558     • Bug fixes.
    559 
    560 gbdk-2.0b2:
    561     Changes in GBDK 2.0b2
    562     • Lots of bug fixes.
    563     • GBDK has to be in the \GBDK-2.0 directory on DOS machines.
    564 
    565 gbdk-2.0b1:
    566     Changes in GBDK 2.0b1
    567     • The code generator has been completely rewritten with the new version of lcc. It produces much smaller and more efficient code. The size of the code is generally between 20 and 50% smaller. A number of small optimizations are still to be done.
    568     • The size of basic types has been changed:
    569         ◦ An int is 8 bits.
    570         ◦ A long is 16 bits.
    571         This change was required for the code generator to produce better code,
    572         because the Z80 is actually an 8-bit processor.
    573         • The linker generates the complement checksum correctly now.
    574         • The libraries and example programs have been modified for the new code generator.
    575 
    576 gbdk-1.1:
    577     Changes in GBDK 1.1
    578     • Removed Xloadimage from the GBDK distribution. It is now available as a
    579     separate archive.
    580     • A compiled DOS version is now available (cross-compiled on my Sun
    581     Workstation!).
    582     • The libraries and the example programs have been improved.
    583     • The make script has been improved. Compiling on UNIX should be easier.
    584     • Many bugfixes.

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.