cscg22-gearboy

CSCG 2022 Challenge 'Gearboy'
git clone https://git.sinitax.com/sinitax/cscg22-gearboy
Log | Files | Refs | sfeed.txt

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