# Changelog

* **0.10.0:**
  * **Breaking:** Cleaned up the screenblock interface. Because they're in VRAM,
    they can't use `u8` access like they were defined to use before. Now the
    types use `u8x2`, similar to the Mode 4 bitmap.
  * Fixed the MMIO definition for the OBJ palette, so the OBJ palette should
    work now.
* **0.9.3:**
  * Added `as_u32_slice` and `as_u16_slice` to `Align4`.
  * *Removed* the requirement for inputs to `include_aligned_bytes!` to be a
    multiple of 4 bytes.
  * Added `as_usize` to all the screeblock address types.
* **0.9.2:**
  * Adds support for more BIOS functions, though not all functions are as
    clearly documented as I'd like.
  * Made much more of the `Fixed` type const friendly. Most ops now have an
    inherent method that is `const fn` as well as implementing the `core::ops`
    trait (the trait fn just calls the inherent fn). This means that you can't
    do `x + y` in a const context, but you can do `x.add(y)`. This is not the
    best system, but until const trait impls are stable this is the best middle
    ground.
* **0.9.1:**
  * Adds some randomization support directly into the crate.
  * Added more methods to the `Fixed` type.
  * Adds an `include_aligned_bytes!` macro to pull in compile time data that's
    aligned to 4.
* **0.9.0:**
  * **MSRV:** The crate now requires `compiler_builtins-0.1.81` to build. You
    will need a Nightly from 2022-10-15 or later.
  * **Break:** Quite a bit of the video interface has been replaced, but it
    should be much easier to use now.
  * **Break:** The timer interface has been updated so that fields more closely
    match the mGBA names, for ease of debugging.
* **0.8.0:**
  * **Break:** Removed the macros for `GbaCell` access in favor of just methods.
    I had at first thought that they'd assign registers and then inline, but it
    turns out that the inline phase happens way before the register assignment
    phase, so the macros were unnecessary (and clunky).
  * **Break:** The `IrqFn` type is changed to pass the function an `IrqBits`
    instead of a bare `u16`.
  * Adds functions to pick a screenblock location (one for each screenblock
    type).
  * Add `BitUnPack` BIOS function.
  * Add the `CGA_8X8_THICK` art data.
  * Greatly improved documentation.
* **0.7.4:** Adds mGBA logging support.
* **0.7.3:** Fixes "multiple definition" errors with the AEABI division functions.
  Filed a PR to fix this soon:
  https://github.com/rust-lang/compiler-builtins/pull/495
* **0.7.2:** First version that configures docs.rs properly!
