Changelog

8.1.0 (next release)

  • bn::memory::decompress added.
  • All uncompress methods renamed to decompress.
  • Palettes update and search optimized.

8.0.0

7.8.0

7.7.0

7.6.0

7.5.1

Audio and HDMA issues when updating at less than 60FPS fixed.

7.5.0

7.4.0

  • Run-length is preferred to LZ77 when choosing best compression mode.
  • Sprites automatic double size mode and affine matrix management fixed.
  • Frequently asked questions (FAQ) page improved.

7.3.0

  • bn::sprite_text_generator now can plot multiple 16x16 variable width characters in a single sprite.
  • bn::sprite_text_generator IWRAM usage reduced.
  • Third party libraries to link can be specified in the project's Makefile.
  • Project's Makefile allows to build source files generated with an external tool. See the external_tool example to learn how to do it.
  • butano-audio-tool.py generates a list of all available music and sound items with their name.
  • audio_player example added.
  • Varooom 3D improved (check its readme.txt file for details).

7.2.0

7.1.1

bn::vector, bn::unordered_map and bn::unordered_set move constructors and assignment operators fixed.

7.1.0

7.0.1

bn::format build fix.

7.0.0

  • Varooom 3D source code and assets added.
  • Maximum number of active H-Blank effects reduced to 6.
  • Common files moved to common namespace.

6.18.0

  • Generated items are now constexpr inline to avoid being copied to every translation unit.
  • Sprites EWRAM usage reduced.
  • Different type backgrounds sorting fixed.

6.17.1

  • bn::sort with 128bit sort keys fixed.
  • IRQs setup during startup improved.

6.17.0

6.16.0

6.15.0

6.14.0

6.13.1

6.13.0

6.12.0

6.11.0

  • An external tool can be called from the project's Makefile. See the external_tool example to learn how to call it.
  • Affine background tiles offset optimized.
  • Big numbers to string conversion optimized.
  • 32bit integer division optimized.
  • 64bit integer division by 0 assert added.
  • Big maps maximum valid position fixed.
  • Compressed tiles warning fixed.
  • GCC11 warning fixed.
  • Some 8x8 sprite text characters fixed.
  • Qt Creator setup guide added.
  • More questions added to Frequently asked questions (FAQ) page.

6.10.0

  • dynamic_bg example added.
  • Affine background tiles offset fixed.

6.9.0

  • bn::sprite_font supports all sprite shapes and sizes.
  • Trivial type containers destruction optimized.
  • Container destructors are always noexcept.
  • Redundant container asserts removed.
  • GPIO direction register setup.

6.8.0

  • Sprites optimized.
  • Blending optimized.
  • Mosaic optimized.
  • Internal memory transfers optimized.
  • texture_polygons example affine parameters fixed.
  • Clouds removed from world_map example.

6.7.0

  • Automatic sprite double size detection improved.
  • Butano Fighter allows to disable rumble in the title menu.

6.6.2

Automatic sprite double size detection fixed.

6.6.1

BG blocks manager use after move fixed.

6.6.0

  • SRAM memory usage reduced.
  • Sprite animate actions memory usage reduced.
  • Missing asserts added to some actions.
  • bn::random is now a trivial class.
  • BG blocks manager search fixed.
  • world_map example frame rate back to 60FPS.

6.5.0

6.4.0

6.3.0

6.2.0

6.1.0

  • Sprite tiles generation outputs sprite shape and size.
  • BN_ASSERT and BN_ERROR can be modified or disabled for specific code sections.
  • Sprites IWRAM usage reduced.
  • Some internal asserts removed.
  • Profiler screen fixed.
  • Documentation explains how to place data in ROM.

6.0.0

5.3.1

bn::atan2 and bn::degrees_atan2 fixed.

5.3.0

5.2.0

5.1.0

5.0.0

4.4.0

  • bn::sprite_font allows to specify space between characters.
  • Background palettes bits per pixel mode can be specified by the user.
  • Palettes change optimized.
  • Unused palette colors are not exported anymore.
  • bn::sprite_ptr::set_tiles() validation fixed.

4.3.0

  • H-Blank effects EWRAM usage reduced (more than 2KB by default).
  • Optimization level changed to -O2 to avoid another No$gba crash.
  • SRAM code moved back from ROM to EWRAM, since doing that doesn't make No$gba crash anymore.
  • Redundant reset code removed.

4.2.0

  • Sprite and background palettes can be generated from images alone, without tiles nor maps.
  • <cstddef> is always included (bn_cstddef.h header file removed).
  • bn::unordered_map and bn::unordered_set assignment fixed.

4.1.0

  • H-Blank effects optimized (it fixes world_map example flickering).
  • SRAM code moved from EWRAM to ROM to avoid a No$gba crash.

4.0.0

3.3.0

  • HDMA properly supported (now it works at less than 60fps). See bn::hdma and the hdma_polygons example for more.
  • gba-link-connection remote timeout detection fixed.

3.2.1

bn::optional build fix.

3.2.0

bn::optional is now constexpr.

3.1.0

3.0.0

Thanks to the awesome gba-link-connection, multiplayer support has been implemented! See bn::link and the link example for more.

2.0.0

  • By removing some method overloads, lots of runtime asserts when creating resources have been removed.
  • bn::palette_bpp_mode has been renamed to bn::bpp_mode and bpp_mode() methods have been renamed to bpp().
  • 8 bits per pixel background tiles allocation fixed.

1.0.0

0.4.0

  • btn renamed to bn. No more API breaks will be made between minor releases after 1.0.0, promise.
  • Background tiles manager status can be printed in the log with bn::bg_tiles::log_status(). This is done automatically when a non-optional background tiles allocation fails too.
  • Background regular maps manager status can be printed in the log with bn::bg_maps::log_status(). This is done automatically when a non-optional regular background map allocation fails too.
  • Sprite tiles manager status can be printed in the log with bn::sprite_tiles::log_status(). This is done automatically when a non-optional sprite tiles allocation fails too.
  • Color palettes managers status can be printed in the log with bn::bg_palettes::log_status() and bn::sprite_palettes::log_status(). This is done automatically when a non-optional color palette allocation fails too.
  • Sprites destruction optimized.
  • Setters with an optional parameter added to some classes.
  • Optional components documentation fixed.
  • Other documentation improvements.

0.3.0

  • Sprites update performance improved up to 30% in Butano Fighter thanks to avoid rebuilding sprites list as much as possible.
  • Profiler can show the maximum measured ticks per entry.
  • Assets tools print output binaries size.

0.2.0

  • Performance improved up to 12% in Butano Fighter without -flto thanks to using less build translation units.
  • Documentation improved.

0.1.0

First release.