Skip to content

v0.23.0

@corwinkuiper corwinkuiper tagged this 07 Feb 19:16
### Added

- Added Joybus entrypoint to Multiboot builds.
- Added `update_with_state()` method to `ButtonController` to let you unit test things which use it.
- Added Clone, Copy, PartialEq, Eq and Hash derives on `ChannelId`.
- Added `display::utils::blit_16_colour` for dynamic generation of tiles and sprites.
- Added `TileSet::get_tile_data()` which returns the raw data for a given tile.
- Added `HashSet::get()`.
- Added an example for dynamically generated isometric tiles.
- Added the ability to draw a drop-shadow when rendering text.
- Added 256 colour dynamic tiles via `DynamicTile256`.
- Added the ability to configure which palette `RegularBackgroundTextRenderer` uses.
- Added per-file sprite size overrides to `include_aseprite!` and `include_aseprite_256!`. You can now write `32x16 "big.aseprite"` to split each frame into smaller sub-sprites.

### Fixed

- Actually fixed mGBA Multiboot binary detection.
- Removed unnecessary Multiboot Server BIOS call in Multiboot binary runtimes.
- Corrected `agb-gbafix` checksum for non zero software versions.
- Fixed compatibility with Quick Boot on the Everdrive GBA.

### Changed

- Buttons have been renamed to `PascalCase` (`SELECT -> Select` etc).
- The `num!` macro can now be used in const contexts and is forced to be evaluated at compile time.
- `TileSet` no longer has a generic parameter, and is always assumed to be `'static`.
- `Button` is now an enum which represents a single button, and `ButtonState` is the replacement to represent potentially multiple buttons at once.
- The `FixedWidthUnsignedInteger` trait is now sealed and cannot be implemented outside of `agb-fixnum`.
- `DynamicTile16::data()` is now `DynamicTile16::data_mut()` and instead `DynamicTile16::data()` returns an immutable reference.
- `Layout::new` no longer takes `max_line_length` as a parameter. Instead, use `LayoutSettings::with_max_line_length()`. A value of 0 (the default) means unlimited line length.
- Dynamic sprites are now built in a buffer in iwram.
- The save API has completely changed to use serde rather than raw bytes. Check the [book](https://agbrs.dev/book/articles/saving) for details. It now has built in
  - Serialization.
  - Automatic checksumming and error detection.
  - Multiple, independent save slots.
  - Save file corruption will only affect the one slot it happened to.
  - Safe saving which, if interrupted, will either give you the old version or new version but never corrupt.
- `TileEffect` methods now don't mutate, instead returning the modified `TileEffect` (matching `TileSetting`).
Assets 2
Loading