ChangeLog (14180B)
1gbdk-4.0.6 2 - Support for MegaDuck 3 - Library fixes/improvements 4 - fix RNG for SMS/GG 5 - check for overflow in metasprites handling routines 6 - set_*_based_tiles() / set_*_based_submap() set tilemaps using tile offset 7 - add_low_priority_TIM() set timer ISR handler that allows nested interrupts 8 - rename gb/BGB_emu.h into gb/EMU_debug.h 9 - Intellisense-friendly headers (hide SDCC dialect features) 10 - other minor fixes 11 - Toolchain 12 - png2mtspr 13 - support for 4bpp graphics and SGB borders 14 - new -tile_origin parameter 15 - Updated documentation 16 17gbdk-4.0.5 18 - Support for Sega Master Sysyem/Sega Game Gear 19 - z80 library which provide compatibility layer as well as platform-specific functions 20 - support for the new targets on the toolchain side 21 - cross-platform examples (gnu make is required) 22 - Library fixes/improvements 23 - low level register/constant definitions for all targets 24 - DEVICE_* constants 25 - BANK* macros 26 - some headers were moved from gb/* into gbdk/* 27 - bcd.h, console.h, far_ptr.h, font.h, gbdecompress.h, metasprites.h 28 - new headers: 29 - gbdk/platform.h: includes specific platform headers depending on the target 30 - gbdk/incbin.h: INCBIN* macros for including of raw binary data 31 - gbdk/rledecompress.h: RLE decompression functions 32 - itoa()/uitoa()/ltoa()/ultoa() require radix parameter (GB target ignores it and assumes radix is 10) 33 - fixed get_bkg_tile_xy() 34 - other minor fixes/enhancements 35 - Toolchain 36 - lcc 37 - ability to pass target port/platform 38 - support for linker files 39 - bankpack 40 - support for linker files 41 - support for SMS/GG specifics 42 - png2mtspr was renamed to png2asset 43 - tilemaps/tiledata export without metasprite descriptors 44 - CGB support 45 - support for RLE compression in gbcompress 46 - New examples 47 - cross-platform examples 48 - INCBIN example 49 - on-the-fly RLE data decompression example 50 - Updated documentation 51 52gbdk-4.0.4 53 - Updated documentation 54 - Library was improved 55 - Switch to standard types declared in stdint.h and stdbool.h 56 - separate cgb.h and sgb.h from gb.h (possible breaking change) 57 - get_vram_byte(), get_win_tile_xy(), get_bkg_tile_xy(), set_tile_data() 58 - fix broken decompression to VRAM routines 59 - Multiple minor improvements 60 - png2mtspr improvements and bug fixes 61 - support for code relocation with bankpack 62 - support for link scripts in lcc 63 - support for C input into gbcompress 64 - other lcc frontend improvements 65 66gbdk-4.0.3 67 - Updated documentation, including the PDF version 68 - Library was improved 69 - Metasprites support (see example) 70 - GBCompress decompressor included (see example) 71 - Large map scrolling helper functions (see example) 72 - Multiple minor improvements 73 - New tools 74 - png2mtspr converts png images into metasprite structs 75 - gbcompress compression utility, compatible with GBTD/GBMB 76 77gbdk-4.0.2 78 - Updated documentation 79 - Library was improved 80 - Linking with stdio.h does not require that much rom now 81 - Default font is changed to the smaller one (102 characters), that leaves space for user tiles 82 - Fixed broken support for multiplying longs 83 - Multiple minor improvements 84 - New bankpack feature, allows automatic bank allocation for data and code, see banks_autobank example, feature is in beta state, use with care 85 - Lcc improvements 86 87gbdk-4.0.1 88 - Updated documentation 89 - 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). 90 - Library was improved 91 - set_*_tiles() now wrap maps around horizontal and vertical boundaries correctly 92 - new fill_*_rect() functions to clear rectangle areas 93 - 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. 94 - enhanced SGB support 95 - joypad_init()/joypad_ex() support for multiple joypads 96 - SGB border example 97 - _current_bank variable is updated when use bank switching macros 98 - Reorganized examples: each example is in separate folder now, that simplifies understanding. 99 - Lcc improvements 100 101gbdk-4.0 102 - 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 103 - SDCC 4.0.3 has much better code generator which produces smaller and faster code. Code is twice faster 104 - 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! 105 - 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 106 - New banked trampolines are used, they are faster and smaller 107 - 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 108 - Library was improved 109 - itoa/ltoa functions were rewritten, div/mod is not required now which is about 10 times faster 110 - 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 111 - interrupt handling was revised, it is now possible to make dedicated ISR's, that is important for time-sensitive handlers such as HBlank. 112 - 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 113 - crash_handler.h - crash handler that allows to detect problems with ROMs after they are being released (adapted handler, originally written by ISSOtm) 114 - improved and fixed string.h 115 - many other improvements and fixes - thanks to all contributors! 116 - Revised examples 117 - Improved linux support 118 - Lcc has been updated 119 - it works with the latest version of sdcc 120 - quoted paths with spaces are working now 121 122gbdk-3.2 123 - support for BCD numbers 124 - support for far pointers, that allow to call functions in other banks by pointer 125 - some useful parts of native SDCC library are merged into GBDK (stdint, limits, stdbool, setjmp, stdatomic and so on) 126 127gbdk-3.1 128 - Banked functions are working! 129 - Check this [post](https://gbdev.gg8.se/forums/viewtopic.php?id=700) for more info 130 - Check the examples/gb/banked code for basic usage 131 - USE_SFR_FOR_REG is the default now [check here why](https://gbdev.gg8.se/forums/viewtopic.php?id=697) 132 - 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 133 - Fixed bug in lcc that was causing some files in the temp folder not being deleted 134 - Removed as-gbz80 (the lib is now compiled with sdasgb thanks to this [workaround](https://github.com/Zal0/gbdk-2020/commit/d2caafa4a66eb08998a14b258cb66af041a0e5c8)) 135 - Profile support with bgb emulator 136 - 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) 137 - 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) 138 139gbdk-3.00 140 Updated SDCC to v4.0 141 The new linker is not working so the old version is still there 142 There is an issue with sdagb compiling drawing.s (the JP in 143 line 32 after ".org .MODE_TABLE+4*.G_MODE" it's writing more 144 than 4 bytes invading some addresses required by input.s:41) 145 Because of this, all .s files in libc have been assembled 146 with the old as-gbz80 and that's why it is still included 147 148gbdk-2.96 149 * Many changes. Code generated is now much more reliable and 150 passes all of sdcc's regression suite. Added support for large 151 sets of local variables (>127 bytes). Added full 32 bit long 152 support. Still no floating pt support. 153 154gbdk-2.95-3 155 * Stopped lcc with sdcc from leaking .cdb files all across 156 /tmp. 157 * Optimised < and > for 16 bit varibles. 158 * Added a new lexer to sdcc. Compiling files with large 159 initalised arrays takes 31% of the time (well, at least 160 samptest.c does :) 161 162gbdk-2.95-2 163 * Added model switching support 164 --model-medium uses near (16 bit) pointers for data, and 165 banked calls for anything not declared as 'nonbanked' 166 --model-small uses near (16 bit) pointers for data and 167 calls. Nothing uses banked calls. 'nonbanked' functions 168 are still placed in HOME. Libraries are under lib/medium 169 and lib/small. 170 * Added the gbdk version to 'sdcc --version' 171 * Changed the ways globals are exported, reducing the amount 172 of extra junk linked in. 173 * Turned on the optimisations in flex. Large constant arrays 174 like tile data should compile a bit faster. 175 176gbdk-2.95 177 * Fixed 'a >> c' for c = [9..15] 178 * Fixed 'a << c' for c = [9..15] 179 * no$gmb doesn't support labels of > 32 chars. The linker now 180 trims all labels to 31 chars long. 181 * Fixed wait_vbl for the case where you miss a vbl 182 * Fixed + and - for any type where sizeof == 2 and one of the 183 terms was on the stack. This includes pointers and ints. Fixes 184 the text output bug in the examples. Should be faster now as 185 well. Note that + and - for longs is still broken. 186 * Fixed the missing */ in gb.h 187 * Added basic far function support. Currently only works for isas 188 and rgbasm. See examples/gb/far/* 189 * bc is now only pushed if the function uses it. i.e. something 190 like: 191 int silly(int i) 192 { 193 return i; 194 } 195 will not have the push bc; pop bc around it. 196 * Better rgbasm support. Basically: 197 o Use "sdcc -mgbz80 --asm=rgbds file.c" for each file.c 198 o Use "sdcc -mgbz80 --asm=rgbds crt0.o gbz80.lib gb.lib file1.o file2.o..." 199 200 to link everything together. The .lib files are generated using 201 astorgb.pl and sdcc to turn the gbdk libraries into something 202 rgbds compatible. 203 The libraries are _not_ fully tested. Trust nothing. But give it 204 a go :) 205 * Ran a spell checker across the README and ChangeLog 206 207gbdk-2.94 208 * Fixed 209 #define BLAH 7 // Unterminated ' error 210 in sdcpp 211 * Fixed 212 SCY_REG += 2, SCY_REG -= 5 213 (add and subtract in indirect space) as they were both quite broken. 214 * externs and static's now work as expected. 215 * You can now specify which bank code should be put into using a 216 #pragma e.g: 217 #pragma bank=HOME 218 Under rgbds and asxxxx putting code in the HOME bank will force 219 the code into bank 0 - useful for library functions. The most 220 recent #pragma bank= will be the one used for the whole file. 221 * Fixed an interesting bug in the caching of lit addresses 222 * Added support for accessing high registers directly using the 223 'sfr' directive. See libc/gb/sfr.s and gb/hardware.h for an 224 example. It should be possible with a bit of work to make high 225 ram directly usable by the compiler; at the moment it is 226 experimental. You can test sfr's by enabling USE_SFR_FOR_REG=1 227 * Added remove_VBL etc functions. 228 * Documented the libs - see the gbdk-doc tarball distributed 229 seperatly. 230 * Two dimensional arrays seem to be broken. 231 232gbdk-2.93 233 * Added multi-bank support into the compiler - The old -Wf-boxx 234 and -Wf-baxx options now work 235 * Has preliminary support for generating rgbds and ISAS compatible 236 assembler. Try -W--asm=rgbds or -W--asm=isas. The ISAS code is 237 untested as I dont have access to the real assembler. 238 * RSH is fixed 239 * AND is fixed 240 * The missing parts of 2.1.0's libs are there. Note: They are 241 untested. 242 * The dscan demo now fully works (with a hack :) 243 * There is a bug with cached computed values which are later used 244 as pointers. When the value is first used as a BYTE arg, then 245 later as a pointer the pointer fails as the high byte was never 246 computed and is now missing. A temporary fix is to declare 247 something appropriate as 'volatile' to stop the value being 248 cached. See dscan.c/bombs() for an example. 249 250gbdk-2.92-2: 251 * win32 only. Takes care of some of the install bugs, including: 252 - Now auto detects where it is installed. 253 This can be overridden using set GBDKDIR=... 254 - Problems with the installer (now uses WinZip) 255 - Problems with the temp directory 256 Now scans TMP, TEMP, TMPDIR and finally c:\tmp 257 - cygwin1.dll and 'make' are no longer required 258 gbdk is now built using mingw32 which is win32 native 259 make.bat is automagically generated from the Makefile 260 - I've reverted to using WORD for signed 16 bit etc. 261 GBDK_2_COMPAT is no longer required. 262 263gbdk-2.92: 264 * All the examples now work (with a little bit of patching :) 265 * Fixed problem with registers being cached instead of being 266 marked volatile. 267 * More register packing - should be a bit faster. 268 * You can now install somewhere except c:\gbdk | /usr/lib/gbdk 269 * Arrays initialised with constant addresses a'la galaxy.c now 270 work. 271 * Fixed minor bug with 104$: labels in as. 272 * Up to 167d/s...