Changelog

10.6.0 (next release)

  • mGBA logging CPU usage reduced.
  • Keypad logging EWRAM and maximum CPU usage reduced.

10.5.0

10.4.0

  • Avoid data decompression in V-Blank if possible.
  • Audio updates can no longer be interrupted.

10.3.0

10.2.0

10.1.0

10.0.0

  • Custom linker flags can be specified in the project's Makefile.
  • Asserts ROM usage reduced.
  • Audio startup fixed when link-time optimization is enabled.
  • Audio stop fixed when link communication is active.
  • Parallel link-time optimization temporal files ignored and added to the list of files to clean.

9.5.0

9.4.1

BMP files colors count calculation fixed (again).

9.4.0

9.3.0

9.2.0

9.1.1

bn::calculate_sin_lut_value sine and cosine symmetry with 135 and 315 degrees fixed.

9.1.0

9.0.0

8.10.0

8.9.0

  • Hue shift palette effect added. See the palettes example to learn how to use it.
  • Brightness effect ROM usage reduced.
  • bn::sprite_item and bn::sprite_tiles_item size reduced.
  • Automatic sprite double size detection fixed.
  • bn::hbe_visible_toggle_action removed, since it was not possible to use it.
  • Clang build fixes.
  • Clang-Tidy warnings fixed.
  • New games made with Butano added to README.md.

8.8.0

  • Modified assets detection optimized.
  • Audio and graphics tools unified in order to reduce build time.
  • bn::newton_raphson_sqrt removed, since it doesn't work for bn::fixed input values.

8.7.0

  • An external bn::bg_palette_item can be specified when importing regular and affine backgrounds.
  • Colors count can be specified when importing sprite and background palettes.
  • Standard containers equality comparison optimized.
  • Asserts file name hack fixed.
  • Universal GBA Library LGPL license files removed.
  • Standard containers documentation improved.
  • Frequently asked questions (FAQ) page improved.

8.6.0

8.5.0

8.4.0

8.3.0

  • Maps commit optimized by more than 50% in some cases.
  • Integer alignment at minimum enforced in all containers.
  • BG blocks manager and sprite tiles manager commit fixed.

8.2.0

  • (Security issue) Source code files full path is not stored in output ROMs anymore.
  • Some Clang-Tidy and Cppcheck warnings removed.

8.1.0

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.