Releases: gbdk-2020/gbdk-2020
Releases · gbdk-2020/gbdk-2020
gbdk-4.3.0
GBDK-4.3.0 (Full Release notes)
Upgrading
If upgrading, please review 4.3.0
section in "Migrating to new GBDK Versions" in the docs.
Highlights
- Improved NES support
- Updated compiler to SDCC 4.4.0
- Added macOS ARM binaries (SDCC building by @chrismaltby)
- New Examples: HBlank copy, Platformer (by @LaroldsJubilantJunkyard), SNES joypads on NES, Game Boy Printer, Joypad test, Display System
- Added romusage utility for estimating used/free ROM and RAM space
Changes
- Library improvements
- Added
get_system()
which indicates system speed - Changed
EMU_printf()
to remove dependency on stdio.h added similarEMU_fmtbuf()
- Fixed emu_debug.h macros missing a trailing space
- NES
- Added PAL support
- Fixed _map_tile_offset for
set_bkg_based_tiles()
, VRAM transfer buffer bug - Fixed support for 4-player controllers using fourscore
- SMS/GG
- Added
SHOW_SPRITES
,HIDE_SPRITES
(no hiding mid-frame),DIV_REG
emulation, 6 button controller support injoypad()
- Added bcd.h implementation
- Added Game Gear registers and definitions
GG_STATE
,GG_EXT_7BIT
,GG_EXT_CTL
,GG_SIO_SEND
,GG_SIO_RECV
,GG_SIO_CTL
,GG_SOUND_PAN
- Changed VDP to reduce chances of dangerous ISR nesting (also for MSX)
- Fixed tilemap wrapping over the low bound of the VDP name table
- Fixed
waitpad()
,scroll_sprite()
,__WRITE_VDP_REG_UNSAFE()
VDP macro - Fixed return result of "set_tile x, y" family functions (also for MSX)
- Added
- Game Boy
- Added HBlank copy routines:
hblank_copy_vram()
,hblank_cpy_vram()
,hblank_copy()
- Fixed 8-bit signed modulus
- Added HBlank copy routines:
- Added
- Toolchain / Utilities
- lcc: Changed -debug to add the following flags:
-Wa-l -Wl-u -Wl-w
- png2asset
- Added
-sprite_no_optimize
,-entity_tileset
,-rel_paths
- Various crashes and output fixes (+ refactor by @LaroldsJubilantJunkyard)
- Added
- makebin: Fixed crash when using
-yS
(-Wm-yS
with lcc) - bankpack: Added
-banktype=
to allow forcing a bank type toCODE
orLIT
before packing starts
- lcc: Changed -debug to add the following flags:
- Examples
- Wav sample: play waveforms on the SMS/GG PSG
- Fixes for SMS/GG: Fonts, Large Map, gbdecompress
- Updated documentation and fixed search
gbdk-4.2.0
gbdk-4.2.0 (Full Release notes)
Upgrading
If upgrading, please review 4.2.0
section in "Migrating to new GBDK Versions" in the docs.
Highlights
- NES support for much of the GBDK API (a big undertaking by @michel-iwaniec)
- Updated compiler to SDCC 4.3 with up to 10% performance/size gains and many fixes
- Game Boy Color Hi-Color conversion utility and display example
Changes
- Library improvements
- Added
set_bkg_attributes()
,set_bkg_submap_attributes()
,set_bkg_attribute_xy()
- Some functions renamed (old names will work for now)
vsync()
replaceswait_vbl_done()
set_default_palette()
replacescgb_compatibility()
move_metasprite_flipx/y/xy()
replacemove_metasprite_h/v/hvflip()
,move_metasprite_ex()
replacesmove_metasprite()
- metasprites: added metasprite functions which can set base sprite property
- Added
- NES
- NES support for much of the GBDK API + banking in the library and toolchain (a big undertaking by @michel-iwaniec)
- Added
set_bkg_attributes_nes16x16()
,set_bkg_submap_attributes_nes16x16()
,set_bkg_attribute_xy_nes16x16()
- SMS/GG
- Swapped A and B buttons to match game boy, X coordinate metasprite clipping on the screen edges
- Game Boy:
- Faster
vmemcpy()
,set_data()
,get_data()
, Fixedhide_sprites_range(39u, 40u)
overflow shadow OAM - Refactored interrupts to use less space
- Faster
lcc
minor fixespng2asset
: several fixes and a couple new features for palettes- Added
png2hicolorgb
+ example project - Examples
- Improved wav support on AGB/AGS hardware, Added color for Large Map Example, Added GB-Type example
- Updated documentation and improved search
gbdk-4.1.1 (service release)
gbdk-4.1.1 is a service release for 4.1.0
- Fixed RGB() and RGB8() macros
For details about gbdk-4.1.0 see the (Full 4.1.0 Release Notes)
gbdk-4.1.0
gbdk-4.1.0 (Full Release notes)
- Experimental Support for MSXDOS and NES. These are not yet fully functional
- Upgrading: See 4.1.0 section in "Migrating to new GBDK Versions" in the docs for the following.
- The
gbz80
port was renamed to tosm83
. Some projects may require updates - The default calling convention changed in SDCC 4.2
- The
- 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()
whenLCDCF_BG8000
bit ofLCDC_REG
is set
- Toolchain
- png2asset: Many new tileset and processing features (See full release notes in docs)
- lcc: Add
-yoA
if no ROM size specified with-autobank
, Fixed broken-E
Preprocess only flag - bankpack: Added
-reserve=<bank>:<size>
to reserve space during packing - gbcompress: Bug fixes, added
--bank=<num>
- ihxcheck: Check and warn for bank overflows under specific conditions
- Added makecom for post-processing msxdos binaries
- Examples: Added APA image 256+ tiles, SGB Sound Effects, new WAV sound example
- Updated documentation
gbdk-4.0.6
gbdk-4.0.6
- Support for MegaDuck
- Library fixes/improvements
- fix RNG for SMS/GG
- check for overflow in metasprites handling routines
set_*_based_tiles()
/set_*_based_submap()
set tilemaps using tile offsetadd_low_priority_TIM()
set timer ISR handler that allows nested interrupts- rename
gb/BGB_emu.h
intogb/EMU_debug.h
- Intellisense-friendly headers (hide SDCC dialect features)
- other minor fixes
- Toolchain
- png2mtspr
- support for 4bpp graphics and SGB borders
- new -tile_origin parameter
- png2mtspr
- Updated documentation
gbdk-4.0.5
gbdk-4.0.5
- Support for Sega Master System/Sega Game Gear, Analogue Pocket
- z80 library which provide compatibility layer as well as platform-specific functions
- support for the new targets on the toolchain side.
- cross-platform examples (gnu make is required)
- See Supported Consoles & Cross Compiling for more details
- Library fixes/improvements
- low level register/constant definitions for all targets
- 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
- new headers:
- gbdk/platform.h: includes specific platform headers depending on the target
- gbdk/incbin.h: INCBIN* macros for including of raw binary data
- gbdk/rledecompress.h: RLE decompression functions
- itoa()/uitoa()/ltoa()/ultoa() require radix parameter (GB target ignores it and assumes radix is 10)
- fixed get_bkg_tile_xy()
- other minor fixes/enhancements
- Toolchain
- lcc
- ability to pass target port/platform
- support for linker files
- bankpack
- support for linker files
- support for SMS/GG specifics
- png2mtspr was renamed to png2asset
- tilemaps/tiledata export without metasprite descriptors
- CGB support
- support for RLE compression in gbcompress
- lcc
- New examples
- cross-platform examples
- INCBIN example
- on-the-fly RLE data decompression example
- Updated documentation
gbdk-4.0.4
gbdk-4.0.4
- Updated documentation
- Library was improved
- Switch to standard types declared in stdint.h and stdbool.h
- Separate cgb.h and sgb.h from gb.h (possible breaking change)
- get_vram_byte(), get_win_tile_xy(), get_bkg_tile_xy(), set_tile_data()
- Fix broken decompression to VRAM routines
- Multiple minor improvements
- png2mtspr improvements and bug fixes
- Support for code relocation with bankpack
- Support for link scripts in lcc
- Support for C input into gbcompress
- Other lcc frontend improvements
4.0.3
gbdk-4.0.3
- Updated documentation, including the PDF version
- Library was improved
- Metasprites support (see example)
- GBCompress decompressor included (see example)
- Large map scrolling helper functions (see example)
- Multiple minor improvements
- New tools
- png2mtspr converts png images into metasprite structs
- gbcompress compression utility, compatible with GBTD/GBMB
4.0.2
gbdk3-4.0.2
- Updated documentation
- Library was improved
- Linking with stdio.h does not require that much rom now
- Default font is changed to the smaller one (102 characters), that leaves space for user tiles
- Fixed broken support for multiplying longs
- Multiple minor improvements
- New bankpack feature, allows automatic bank allocation for data and code, see banks_autobank example, feature is in beta state, use with care
- Lcc improvements
4.0.1
gbdk3-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).
- Library was improved
- set_*_tiles() now wrap maps around horizontal and vertical boundaries correctly
- new fill_*_rect() functions to clear rectangle areas
- 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.
- enhanced SGB support
- joypad_init()/joypad_ex() support for multiple joypads
- SGB border example
- _current_bank variable is updated when use bank switching macros
- Reorganized examples: each example is in separate folder now, that simplifies understanding.
- Lcc improvements