gbdk-2020 | GameBoy Development Kit |
| download: https://git.y1.nz/archives/gbdk.tar.gz | |
| README | Files | Log | Refs | LICENSE |
commit 761897e385ea06de05a227b96e91c78c6db723b9 parent d7e303fc03b75b8a6ac0b70208801cdfd5781a68 Author: bbbbbr <bbbbbr@users.noreply.github.com> Date: Thu, 27 Oct 2022 19:49:36 -0700 Merge pull request #432 from bbbbbr/docs_4_1_0 Docs: updates for 4.1.0 Diffstat:
| M | docs/ChangeLog | 70 | +++++++++++++++++++++++++++++++++++++++++++++++++++------------------- |
| M | docs/gbdk_manual.pdf | 0 | |
| M | docs/pages/08_faq.md | 2 | +- |
| M | docs/pages/10_release_notes.md | 11 | ++++++----- |
| M | docs/pages/docs_index.md | 2 | ++ |
| M | gbdk-lib/include/gb/isr.h | 4 | ++++ |
| M | gbdk-lib/include/nes/metasprites.h | 1 | - |
7 files changed, 64 insertions(+), 26 deletions(-)
diff --git a/docs/ChangeLog b/docs/ChangeLog @@ -1,3 +1,35 @@ + +gbdk-4.1.0 + - Experimental Support for MSXDOS and NES. These are not yet fully functional + - SDCC + - The `gbz80` port was renamed to to `sm83`. Some projects may require updates + - The default calling convention changed in SDCC 4.2 + - See 4.1.0 Release in "Migrating to new GBDK Versions" in the docs + - 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 + -tiles_only, -maps_only, -metasprites_only, -source_tileset, -keep_duplicate_tiles, -bin, -transposed, -spr16x16msx, -use_nes_attributes, -use_nes_colors + - gbcompress + - Bug fixes and added --bank=<num> + - lcc + - Add -yoA if no ROM size specified with -autobank + - Fixed broken `-E` Preprocess only flag + - Added makecom for post-processing msxdos binaries + - bankpack + - Added -reserve=<bank>:<size> to reserve space during packing + - ihxcheck + - Check and warn for bank overflows under specific conditions + - Examples + - Added example for APA image mode with more than 256 tiles + - Added SGB Sound Effects example + - Changed to new WAV sound example + - Updated documentation + - Licensing + - Status of licensing clarified with consent from GBDK original authors, added licensing folder + gbdk-4.0.6 - Support for MegaDuck - Library fixes/improvements @@ -24,7 +56,7 @@ gbdk-4.0.5 - 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 + - 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 @@ -39,7 +71,7 @@ gbdk-4.0.5 - bankpack - support for linker files - support for SMS/GG specifics - - png2mtspr was renamed to png2asset + - png2mtspr was renamed to png2asset - tilemaps/tiledata export without metasprite descriptors - CGB support - support for RLE compression in gbcompress @@ -47,8 +79,8 @@ gbdk-4.0.5 - cross-platform examples - INCBIN example - on-the-fly RLE data decompression example - - Updated documentation - + - Updated documentation + gbdk-4.0.4 - Updated documentation - Library was improved @@ -86,7 +118,7 @@ gbdk-4.0.2 gbdk-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). + - 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 @@ -97,7 +129,7 @@ gbdk-4.0.1 - _current_bank variable is updated when use bank switching macros - Reorganized examples: each example is in separate folder now, that simplifies understanding. - Lcc improvements - + gbdk-4.0 - 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 @@ -122,27 +154,27 @@ gbdk-4.0 gbdk-3.2 - support for BCD numbers - support for far pointers, that allow to call functions in other banks by pointer - - some useful parts of native SDCC library are merged into GBDK (stdint, limits, stdbool, setjmp, stdatomic and so on) + - some useful parts of native SDCC library are merged into GBDK (stdint, limits, stdbool, setjmp, stdatomic and so on) gbdk-3.1 - - Banked functions are working! + - Banked functions are working! - Check this [post](https://gbdev.gg8.se/forums/viewtopic.php?id=700) for more info - Check the examples/gb/banked code for basic usage - USE_SFR_FOR_REG is the default now [check here why](https://gbdev.gg8.se/forums/viewtopic.php?id=697) - 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](https://github.com/Zal0/gbdk-2020/commit/d2caafa4a66eb08998a14b258cb66af041a0e5c8)) - - Profile support with bgb emulator + - 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](https://gbdev.gg8.se/forums/viewtopic.php?id=703) - - 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) + - 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) gbdk-3.00 Updated SDCC to v4.0 The new linker is not working so the old version is still there - There is an issue with sdagb compiling drawing.s (the JP in + There is an issue with sdagb compiling drawing.s (the JP in line 32 after ".org .MODE_TABLE+4*.G_MODE" it's writing more than 4 bytes invading some addresses required by input.s:41) - Because of this, all .s files in libc have been assembled + Because of this, all .s files in libc have been assembled with the old as-gbz80 and that's why it is still included gbdk-2.96 @@ -158,7 +190,7 @@ gbdk-2.95-3 * Added a new lexer to sdcc. Compiling files with large initalised arrays takes 31% of the time (well, at least samptest.c does :) - + gbdk-2.95-2 * Added model switching support --model-medium uses near (16 bit) pointers for data, and @@ -172,7 +204,7 @@ gbdk-2.95-2 of extra junk linked in. * Turned on the optimisations in flex. Large constant arrays like tile data should compile a bit faster. - + gbdk-2.95 * Fixed 'a >> c' for c = [9..15] * Fixed 'a << c' for c = [9..15] @@ -188,15 +220,15 @@ gbdk-2.95 and rgbasm. See examples/gb/far/* * bc is now only pushed if the function uses it. i.e. something like: - int silly(int i) + int silly(int i) { return i; - } + } will not have the push bc; pop bc around it. * Better rgbasm support. Basically: o Use "sdcc -mgbz80 --asm=rgbds file.c" for each file.c o Use "sdcc -mgbz80 --asm=rgbds crt0.o gbz80.lib gb.lib file1.o file2.o..." - + to link everything together. The .lib files are generated using astorgb.pl and sdcc to turn the gbdk libraries into something rgbds compatible. @@ -205,7 +237,7 @@ gbdk-2.95 * Ran a spell checker across the README and ChangeLog gbdk-2.94 - * Fixed + * Fixed #define BLAH 7 // Unterminated ' error in sdcpp * Fixed @@ -246,7 +278,7 @@ gbdk-2.93 computed and is now missing. A temporary fix is to declare something appropriate as 'volatile' to stop the value being cached. See dscan.c/bombs() for an example. - + gbdk-2.92-2: * win32 only. Takes care of some of the install bugs, including: - Now auto detects where it is installed. diff --git a/docs/gbdk_manual.pdf b/docs/gbdk_manual.pdf Binary files differ. diff --git a/docs/pages/08_faq.md b/docs/pages/08_faq.md @@ -43,7 +43,7 @@ "-mgbz80" in module "_____".` mean? - One object file was compiled with the PORT setting as `gbz80` (meaning a version of SDCC / GBDK-2020 __OLDER than GBDK-2020 4.1.0__). - The other had the PORT setting as `sm83` (meaning __GBDK-2020 4.1.0 or LATER__). - - You must rebuild the object files using `gbz80` with GBDK-2020 4.1.0 or later so that the linker is able to use them with the other object files. Additional details in the @ref console_port_plat_settings "Console Port and Platform Settings" section. <!-- --> + - You must rebuild the object files using `sm83` with GBDK-2020 4.1.0 or later so that the linker is able to use them with the other object files. Additional details in the @ref console_port_plat_settings "Console Port and Platform Settings" section. <!-- --> @anchor faq_sdcc_peephole_instruction_error - What does `z80instructionSize() failed to parse line node, assuming 999 bytes` mean? diff --git a/docs/pages/10_release_notes.md b/docs/pages/10_release_notes.md @@ -1,4 +1,4 @@ -@page docs_releases GBDK Releases +@page docs_releases GBDK Release Notes The GBDK-2020 releases can be found on Github: https://github.com/gbdk-2020/gbdk-2020/releases @@ -7,13 +7,13 @@ https://github.com/gbdk-2020/gbdk-2020/releases # GBDK-2020 Release Notes ## GBDK-2020 4.1.0 - 2022 + 2022/10 - Building GBDK - The linux port of SDCC is custom built on Ubuntu 16.04 due to reduced GLIBC compatibility issues in more recent SDCC project builds. - Added Windows 32-Bit build - Platforms - SDCC has renamed the `gbz80` port to `sm83` see @ref faq_gbz80_sm83_old_port_name_error - - Added initial support for MSXDOS (`msxdos`) and NES (`nes`). These platforms are not fully supported at this time. See @ref docs_supported_consoles + - Added experimental support for MSXDOS (`msxdos`) and NES (`nes`). These platforms are not fully functional at this time. See @ref docs_supported_consoles - Licensing - Clarified licensing status with consent from GBDK original authors, added licensing folder to distribution - Library @@ -54,13 +54,14 @@ https://github.com/gbdk-2020/gbdk-2020/releases - When `-autobank` is specified `lcc` will automatically add `-yoA` for @ref makebin if no `-yo*` entry is present - Fixed broken `-E` Preprocess only flag - @ref utility_makecom "makecom" - - Added `makecom` for post-processing msxdos binary + - Added `makecom` for post-processing msxdos binaries - @ref makebin - Fixed (via sdcc) bug with `-yp` not always working correctly - https://sourceforge.net/p/sdcc/code/12975/ - @ref bankpack - Added support for the Game Boy Camera MBC - - Added `-reserve=<bank>:<size>` option + - Added `-reserve=<bank>:<size>` option to reserve space during autobank packing + - Workaround for libraries that contain objects in banks (such as gbt-player) - @ref ihxcheck - Check and warn for bank overflows under specific conditions - A multiple write to the same address must occur. The address where the overlap ends is used as BANK. diff --git a/docs/pages/docs_index.md b/docs/pages/docs_index.md @@ -19,6 +19,8 @@ # Introduction Welcome to GBDK-2020! The best thing to do is head over to the @ref docs_getting_started "Getting Started" section to get up and running. +If you are upgrading please check @ref docs_releases and @ref docs_migrating_versions + # About the Documentation This documentation is partially based on material written by the original GBDK authors in 1999 and updated for GBDK-2020. The API docs are automatically generated from the C header files using Doxygen. diff --git a/gbdk-lib/include/gb/isr.h b/gbdk-lib/include/gb/isr.h @@ -65,6 +65,10 @@ typedef struct isr_nested_vector_t { This cannot be used with the VBLANK interrupt + The LCD STAT vector (@ref VECTOR_STAT) cannot be used + in the same program as `stdio.h` since they install + an ISR vector to the same location. + @see ISR_VECTOR */ #define ISR_NESTED_VECTOR(ADDR, FUNC) \ diff --git a/gbdk-lib/include/nes/metasprites.h b/gbdk-lib/include/nes/metasprites.h @@ -38,7 +38,6 @@ for (uint8_t i = hiwater; i < 64; i++) shadow_OAM[i].y = 0; \endcode - @anchor metasprite_and_sprite_properties # Metasprites and sprite properties (including cgb palette) When the move_metasprite_*() functions are called they
This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.