Changelog
Contents
7.0.1
bn::
7.0.0
- Varooom 3D source code and assets added.
- Maximum number of active H-Blank effects reduced to 6.
- Common files moved to
commonnamespace.
6.18.0
- Generated items are now
constexpr inlineto 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
- bn::
memory:: used_stack_iwram added. - bn::sort optimized.
- VRAM allocation error messages improved.
- bn::
optional:: emplace copy avoided. - Importing assets guide improved.
- More questions added to Frequently asked questions (FAQ) page.
6.16.0
- bn::
sin_lut is not copied to every translation unit. - bn::
reciprocal_lut is not copied to every translation unit. - GBA keypad is read after playing all keypad commands.
- bn::
degrees_lut_cos assert added.
6.15.0
- bn::
rect:: top_right, bn:: rect:: bottom_left, bn:: fixed_rect:: top_right and bn:: fixed_rect:: bottom_left added. - GPIO register is not setup unless needed (avoids mGBA warning at startup).
- SRAM code moved from EWRAM to ROM in order to avoid a No$gba error.
- bn::
abs for unsigned arguments improved. *.elfbinoutput files renamed to*.elfas it should.- bn::
unordered_map:: erase and bn:: unordered_set:: erase fixed.
6.14.0
- Asserts ROM usage reduced.
- bn::
deque:: push_front, bn:: deque:: emplace_front and bn:: deque:: insert fixed.
6.13.1
- bn::
to_array fixed. - bn::
sprite_text_generator documentation fixed.
6.13.0
- EWRAM wait states count can be specified with BN_
CFG_ EWRAM_ WAIT_ STATE. - bn::
fixed_t:: floor_integer and bn:: fixed_t:: ceil_integer added. - bn::
keypad:: any_held, bn:: keypad:: any_pressed and bn:: keypad:: any_released added. - Unnecessary GPIO register writes avoided.
- bn::
type_id marked as constexpr. - Background move actions fixed.
constexpr constreplaced withconstexprwhere it makes sense.
6.12.0
- Multiplication and division methods added to bn::
fixed_point, bn:: fixed_size and bn:: fixed_rect. - Colors count added to palettes manager status log.
- Invalid bn::
fixed_t unsigned operator overloads removed.
6.11.0
- An external tool can be called from the project's Makefile. See the
external_toolexample 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_bgexample 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_polygonsexample affine parameters fixed.- Clouds removed from
world_mapexample.
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_mapexample frame rate back to 60FPS.
6.5.0
- bn::
bitset and bn:: ibitset added. - BG blocks manager and sprite tiles manager allocation fixed.
6.4.0
- Sprites and affine backgrounds support horizontal and vertical shear.
- bn::
affine_mat_attributes:: unsafe_set_register_values added. texture_polygonsexample added.- More questions added to Frequently asked questions (FAQ) page.
6.3.0
- BN_
VERSION_ MAJOR, BN_ VERSION_ MINOR and BN_ VERSION_ PATCH added. - bn::
core:: current_cpu_usage, bn:: core:: last_cpu_usage and bn:: core:: last_vblank_usage accuracy improved. - Signed division fixed and optimized.
- BG blocks manager and sprite tiles manager allocation fixed.
- BG blocks manager prints requested blocks count when an allocation fails.
6.2.0
- bn::
core:: skip_frames and bn:: core:: set_skip_frames added. - bn::
sprite_font usability improved. - bn::
reciprocal_lut and bn:: lut_reciprocal fixed.
6.1.0
6.0.0
- Rumble support (if your cart supports it). See Rumble and the
rumbleexample. - bn::
sprites:: reload added. - bn::
hdma:: high_priority_start and bn:: hdma:: high_priority_stop added. - bn::
hdma:: running and bn:: hdma:: high_priority_running added. - Sprite tiles can be generated from images alone, without palettes.
- Graphics and audio subfolders supported.
- bn::
core:: reset fixed. - HDMA disable when an assert or the profiler are shown fixed.
- HDMA first screen horizontal line fixed.
- bn::
newton_raphson_sqrt recursion avoided. - Python install guide improved.
5.3.1
bn::
5.3.0
- bn::
sin, bn:: cos, bn:: atan2 and bn:: degrees_atan2 added. - H-Blank effects optimized (thanks JoaoBaptMG).
- bn::
calculate_sin_lut_value optimized. - bn::
lut_reciprocal optimized. - Frequently asked questions (FAQ) page improved.
5.2.0
- bn::
sprite_ptr:: put_below, bn:: regular_bg_ptr:: put_below and bn:: affine_bg_ptr:: put_below added. - H-Blank effects IWRAM usage reduced.
- butano-graphics-tool.py errors reporting improved.
5.1.0
- Automatic game pak wait states setup (see BN_
GAME_ PAK_ WAIT_ STATE_ FIRST_ AUTO and BN_ GAME_ PAK_ WAIT_ STATE_ SECOND_ AUTO for more information). - bn::
format and bn:: format_ref functions added. - Some methods to indicate if a background or a background map are big or not have been added.
- bn::
calculate_sin_lut_value precision improved. - Frequently asked questions (FAQ) page added.
- butano-graphics-tool.py now uses all CPU cores.
- Missing third party license files included.
5.0.0
- Compressed sprites and backgrounds support (see Importing assets to learn how to generate them).
- bn::
degrees_sin and bn:: degrees_cos don't use a LUT anymore, they are replaced by bn:: degrees_lut_sin and bn:: degrees_lut_cos. - bn::
lut_sin and bn:: lut_cos input angle range increased to [0, 2048]. - Enum classes size reduced.
- Required fields when importing assets are not defaulted anymore.
- bn::
rule_of_three_approximation overflow fixed.
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
-O2to 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.hheader file removed).- bn::
unordered_map and bn:: unordered_set assignment fixed.
4.1.0
- H-Blank effects optimized (it fixes
world_mapexample flickering). - SRAM code moved from EWRAM to ROM to avoid a No$gba crash.
4.0.0
- Affine backgrounds support. See Affine backgrounds and the
affine_bgs,mode_7andworld_mapexamples for more. - bn::hblank_effect_ptr renamed to bn::
hbe_ptr (all child classes have been renamed too). - bn::sprite_affine_mat_attributes renamed to bn::
affine_mat_attributes. - bn::bg_tiles_ptr renamed to bn::
regular_bg_tiles_ptr. - bn::bg_tiles_item renamed to bn::
regular_bg_tiles_item. - bn::affine_mat_scale_lut replaced with bn::
reciprocal_lut. - bn::core::cpu_usage() and bn::core::vblank_usage() renamed to bn::
core:: last_cpu_usage() and bn:: core:: last_vblank_usage(). - bn::
lut_reciprocal() added. - bn::
core:: current_cpu_usage() added. - gba-link-connection updated to v2.1.4.
- bn::
hdma is disabled when needed, like before sleeping or before an assert screen. - bn::
regular_bg_tiles_item:: valid_tiles_count() fixed. - bn::
nullopt documentation links fixed.
3.3.0
- HDMA properly supported (now it works at less than 60fps). See bn::
hdma and the hdma_polygonsexample for more. - gba-link-connection remote timeout detection fixed.
3.2.1
bn::
3.2.0
bn::
3.1.0
- bn::
regular_bg_map_ptr:: tiles_offset() and bn:: regular_bg_map_ptr:: palette_banks_offset() methods added. - Allocated background tiles and maps commit fixed.
3.0.0
Thanks to the awesome gba-link-connection, multiplayer support has been implemented! See bn::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_methods have been renamed tomode() bpp(). - 8 bits per pixel background tiles allocation fixed.
1.0.0
- Regular maps bigger than 512x512 supported.
- 32bit integer division by 0 assert added.
- bn::
regular_bg_item maximum tiles check added. - bn::
regular_bg_item generation options fixed.
0.4.0
btnrenamed tobn. 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
-fltothanks to using less build translation units. - Documentation improved.
0.1.0
First release.