diff --git a/butano/include/documentation/bn_documentation_ab_getting_started_wt.h b/butano/include/documentation/bn_documentation_ab_getting_started_wt.h index b0ef481a..3cbccada 100644 --- a/butano/include/documentation/bn_documentation_ab_getting_started_wt.h +++ b/butano/include/documentation/bn_documentation_ab_getting_started_wt.h @@ -48,10 +48,11 @@ * * @code{.cpp} * pacman -S make + * wf-pacman -Syu wf-tools + * wf-config repo enable blocksds * wf-pacman -Syu - * wf-pacman -S toolchain-gcc-arm-none-eabi - * wf-pacman -S thirdparty-blocksds-toolchain * wf-pacman -S target-gba + * wf-pacman -S blocksds-toolchain * @endcode * * @image html wt_pacman.png diff --git a/butano/include/documentation/bn_documentation_g_changelog.h b/butano/include/documentation/bn_documentation_g_changelog.h index 50a12624..fb14b54c 100644 --- a/butano/include/documentation/bn_documentation_g_changelog.h +++ b/butano/include/documentation/bn_documentation_g_changelog.h @@ -20,6 +20,7 @@ * * bn::utf8_character validation improved. * * @ref faq_delta_time, @ref faq_sprites_metasprites and @ref faq_backgrounds_animated questions * added to the @ref faq page. + * * @ref getting_started_wt guide updated. * * Some spelling mistakes fixed. * * diff --git a/docs/changelog.html b/docs/changelog.html index 5d19b32e..eeef2956 100644 --- a/docs/changelog.html +++ b/docs/changelog.html @@ -218,7 +218,7 @@
operator<<
added.operator<<
added.create_new
map methods are deprecated.create
methods is now optional.timer
example added.README.md
.Tools no longer crash on Windows with more than 60 logical CPU cores.
BN_UNREACHABLE
deprecated.nullptr
is disallowed (thanks C++23).nullptr
char array is disallowed.constexpr
.constexpr
anymore (it didn't work before).nullptr
constructor and method overloads added to bn::new
and delete
supported.bn::is_constant_evaluated
replaced with consteval
.operator!=
implementations removed.hdma_palette
example added.README.md
.random
example added.log
example improved.profiler
coroutine test.Makefile
.friend
operators allow different levels of precision.profiler
coroutine test improved.profiler
test.README.md
.profiler
test.log
example to see how to log the current stack trace.bn::pair
is now a std::pair
alias.profiler
example simplified.profiler
test.README.md
.bn::
world_map
example.blending
example to learn how to do it.__FILE_NAME__
macro is no longer required.profiler
example.STACKTRACE
makefile variable.GRAPHICS
, AUDIO
and DMGAUDIO
makefile variables accept file and folder paths.bn::audio::dmg_sync_enabled
and bn::audio::set_dmg_sync_enabled
removed as they don't work properly.dynamic_regular_bg
example shows how to deal with multiple palette ids.dynamic_regular_bg
and dynamic_affine_bg
examples.date_time
example to learn how to deal with the RTC.memcmp
optimized.*.gba
file is rebuilt when the target *.elf
file isn't present.audio
example to learn how to stop, release and setup sound effects with them.bn::
Python 2 support restored.
BN_DATA_EWRAM_BSS
added.bn::
*.vgm
extension thanks to VGM player. See the DMG music import guide and the dmg_audio
example to learn how to import and play it.BG blocks commit fixed.
Slow game pak detection fixed (again).
map_collision
example added.memcmp
optimized.Makefile
.height
field.height
field is now optional.bn::
protected
to allow child classes to access them.compile_commands.json
generation support.Tonclib linking error fixed.
world_map
example fixed.memset
undefined references with link-time optimization fixed.
memset
moved to IWRAM.memset
fixed.README.md
.bn::
memset
fixed.dynamic_regular_bg
and dynamic_affine_bg
examples are imported without using a map.bn::
sram
example.Recovery of deleted background maps fixed.
dynamic_regular_bg
example.README.md
.README.md
.BN_CODE_IWRAM
macro can be used for thumb code too._ptr
suffix ROM usage reduced.bn::
Huffman images compression support (make sure to update devkitARM before using it).
bn::
__FILE_NAME__
macro check added.memcpy
and memset
optimized thanks to agbabi.Makefile
.world_map
example.Makefile
.mod2gbt
executable is no longer necessary for importing DMG music with *.mod
extension.BMP files colors count calculation fixed (again).
dmg_audio
example to learn how to import and play it.README.md
.bn::
README.md
.BN_CFG_SPRITE_TEXT_MAX_UTF8_CHARACTERS
removed..elf
files No$gba support restored.-O0
builds support restored.palettes
example to learn how to use it.README.md
.inline
keyword usages removed.uncompress
methods renamed to decompress
.bn_graphics
to bn_gfx
. Remember to rebuild your project after updating.Audio and HDMA issues when updating at less than 60FPS fixed.
Makefile
.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.readme.txt
file for details).dynamic_regular_bg
example added.dynamic_bg
example renamed to dynamic_affine_bg
and improved.bn::
README.md
.bn::
common
namespace.constexpr inline
to avoid being copied to every translation unit.*.elfbin
output files renamed to *.elf
as it should.constexpr
.constexpr const
replaced with constexpr
where it makes sense.Makefile
. See the external_tool
example to learn how to call it.dynamic_bg
example added.noexcept
.texture_polygons
example affine parameters fixed.world_map
example.Automatic sprite double size detection fixed.
BG blocks manager use after move fixed.
world_map
example frame rate back to 60FPS.texture_polygons
example added.rumble
example.bn::
butano-graphics-tool.py
errors reporting improved.butano-graphics-tool.py
now uses all CPU cores.<cstddef>
is always included (bn_cstddef.h
header file removed).world_map
example flickering).affine_bgs
, mode_7
and world_map
examples for more.hdma_polygons
example for more.bn::
bn::constexpr
.
Thanks to the awesome gba-link-connection, multiplayer support has been implemented! See bn::link
example for more.
bpp_mode()
methods have been renamed to bpp()
.btn
renamed to bn
. No more API breaks will be made between minor releases after 1.0.0, promise.-flto
thanks to using less build translation units.First release.
operator<<
added.operator<<
added.create_new
map methods are deprecated.create
methods is now optional.timer
example added.README.md
.Tools no longer crash on Windows with more than 60 logical CPU cores.
BN_UNREACHABLE
deprecated.nullptr
is disallowed (thanks C++23).nullptr
char array is disallowed.constexpr
.constexpr
anymore (it didn't work before).nullptr
constructor and method overloads added to bn::new
and delete
supported.bn::is_constant_evaluated
replaced with consteval
.operator!=
implementations removed.hdma_palette
example added.README.md
.random
example added.log
example improved.profiler
coroutine test.Makefile
.friend
operators allow different levels of precision.profiler
coroutine test improved.profiler
test.README.md
.profiler
test.log
example to see how to log the current stack trace.bn::pair
is now a std::pair
alias.profiler
example simplified.profiler
test.README.md
.bn::
world_map
example.blending
example to learn how to do it.__FILE_NAME__
macro is no longer required.profiler
example.STACKTRACE
makefile variable.GRAPHICS
, AUDIO
and DMGAUDIO
makefile variables accept file and folder paths.bn::audio::dmg_sync_enabled
and bn::audio::set_dmg_sync_enabled
removed as they don't work properly.dynamic_regular_bg
example shows how to deal with multiple palette ids.dynamic_regular_bg
and dynamic_affine_bg
examples.date_time
example to learn how to deal with the RTC.memcmp
optimized.*.gba
file is rebuilt when the target *.elf
file isn't present.audio
example to learn how to stop, release and setup sound effects with them.bn::
Python 2 support restored.
BN_DATA_EWRAM_BSS
added.bn::
*.vgm
extension thanks to VGM player. See the DMG music import guide and the dmg_audio
example to learn how to import and play it.BG blocks commit fixed.
Slow game pak detection fixed (again).
map_collision
example added.memcmp
optimized.Makefile
.height
field.height
field is now optional.bn::
protected
to allow child classes to access them.compile_commands.json
generation support.Tonclib linking error fixed.
world_map
example fixed.memset
undefined references with link-time optimization fixed.
memset
moved to IWRAM.memset
fixed.README.md
.bn::
memset
fixed.dynamic_regular_bg
and dynamic_affine_bg
examples are imported without using a map.bn::
sram
example.Recovery of deleted background maps fixed.
dynamic_regular_bg
example.README.md
.README.md
.BN_CODE_IWRAM
macro can be used for thumb code too._ptr
suffix ROM usage reduced.bn::
Huffman images compression support (make sure to update devkitARM before using it).
bn::
__FILE_NAME__
macro check added.memcpy
and memset
optimized thanks to agbabi.Makefile
.world_map
example.Makefile
.mod2gbt
executable is no longer necessary for importing DMG music with *.mod
extension.BMP files colors count calculation fixed (again).
dmg_audio
example to learn how to import and play it.README.md
.bn::
README.md
.BN_CFG_SPRITE_TEXT_MAX_UTF8_CHARACTERS
removed..elf
files No$gba support restored.-O0
builds support restored.palettes
example to learn how to use it.README.md
.inline
keyword usages removed.uncompress
methods renamed to decompress
.bn_graphics
to bn_gfx
. Remember to rebuild your project after updating.Audio and HDMA issues when updating at less than 60FPS fixed.
Makefile
.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.readme.txt
file for details).dynamic_regular_bg
example added.dynamic_bg
example renamed to dynamic_affine_bg
and improved.bn::
README.md
.bn::
common
namespace.constexpr inline
to avoid being copied to every translation unit.*.elfbin
output files renamed to *.elf
as it should.constexpr
.constexpr const
replaced with constexpr
where it makes sense.Makefile
. See the external_tool
example to learn how to call it.dynamic_bg
example added.noexcept
.texture_polygons
example affine parameters fixed.world_map
example.Automatic sprite double size detection fixed.
BG blocks manager use after move fixed.
world_map
example frame rate back to 60FPS.texture_polygons
example added.rumble
example.bn::
butano-graphics-tool.py
errors reporting improved.butano-graphics-tool.py
now uses all CPU cores.<cstddef>
is always included (bn_cstddef.h
header file removed).world_map
example flickering).affine_bgs
, mode_7
and world_map
examples for more.hdma_polygons
example for more.bn::
bn::constexpr
.
Thanks to the awesome gba-link-connection, multiplayer support has been implemented! See bn::link
example for more.
bpp_mode()
methods have been renamed to bpp()
.btn
renamed to bn
. No more API breaks will be made between minor releases after 1.0.0, promise.-flto
thanks to using less build translation units.First release.
Downloading Butano and building their games and examples is easy and doesn't take too much time, pinky promise.
Wonderful Toolchain supports Windows and Unix-like platforms.
If you want to develop on macOS, you should try to use a Linux virtual machine or devkitARM instead.
Before anything, it is convenient to have a GBA emulator at hand, so you don't have to test in real hardware each change you make in your project.
For developing GBA games, mGBA, NanoBoyAdvance, Mesen and the debug version of No$gba are recommended.
The next step is to download and install Wonderful Toolchain using this tutorial.
From now on, this guide assumes a Windows environment, but the steps to take for Unix-like platforms should be similar.
Once installed, open the Wonderful Toolchain Shell and run the following commands, accepting the default options when prompted:
pacman -S make +wf-pacman -Syu wf-tools +wf-config repo enable blocksds wf-pacman -Syu -wf-pacman -S toolchain-gcc-arm-none-eabi -wf-pacman -S thirdparty-blocksds-toolchain -wf-pacman -S target-gba
To execute some of the tools needed to include image and audio files in your project, you are going to need Python.
If you are going to install Python on Windows, remember to add it to the PATH
and to close all system console windows before installing it:
Both Python 2 and Python 3 are supported for now, but Python 2 is not going to be supported for too long. Make sure you can execute Python from the Wonderful Toolchain Shell:
If you have an Ubuntu/Debian based system with python3
instead of python
, you can:
python3
as the Python interpreter path in the Makefile
of the project you are trying to build.python-is-python3
: sudo apt-get install python-is-python3
.Download or clone the latest Butano release from GitHub and put it in a path without spaces or anything weird, please.
Butano contains multiple examples of most aspects of the engine.
Make sure that you are able to build and run some of them:
/path/to/butano/examples/
.cd
to the folder of the example you want to build and type make -j8
if your CPU has 8 cores, make -j16
if it has 16 and so on.When trying to build the sprites
example, if everything went as expected, a sprites.gba
file should have been generated in the sprites
folder, and the system console should show something like this:
If you were able to build and run some examples, congrats! Now you can make your own GBA game with Butano. To do that:
/path/to/butano/template/
to a path without spaces or weird characters.Makefile
the path in which Butano library folder is located. For example, if Butano is located in /path/to/butano/
, LIBBUTANO
variable should be set to /path/to/butano/butano
.Makefile
.cd
to the new folder.make -j#cpu_cores#
again.If everything went as expected, a *.gba
file should have been generated in the project folder!
Now learn how to import your assets in the game and also take a look at the modules page. It's always a good idea to play around with the examples as they cover most of what Butano offers. The frequently asked questions (FAQ) are worth a look too, as they answer most of the initial questions.
To execute some of the tools needed to include image and audio files in your project, you are going to need Python.
If you are going to install Python on Windows, remember to add it to the PATH
and to close all system console windows before installing it:
Both Python 2 and Python 3 are supported for now, but Python 2 is not going to be supported for too long. Make sure you can execute Python from the Wonderful Toolchain Shell:
If you have an Ubuntu/Debian based system with python3
instead of python
, you can:
python3
as the Python interpreter path in the Makefile
of the project you are trying to build.python-is-python3
: sudo apt-get install python-is-python3
.Download or clone the latest Butano release from GitHub and put it in a path without spaces or anything weird, please.
Butano contains multiple examples of most aspects of the engine.
Make sure that you are able to build and run some of them:
/path/to/butano/examples/
.cd
to the folder of the example you want to build and type make -j8
if your CPU has 8 cores, make -j16
if it has 16 and so on.When trying to build the sprites
example, if everything went as expected, a sprites.gba
file should have been generated in the sprites
folder, and the system console should show something like this:
If you were able to build and run some examples, congrats! Now you can make your own GBA game with Butano. To do that:
/path/to/butano/template/
to a path without spaces or weird characters.Makefile
the path in which Butano library folder is located. For example, if Butano is located in /path/to/butano/
, LIBBUTANO
variable should be set to /path/to/butano/butano
.Makefile
.cd
to the new folder.make -j#cpu_cores#
again.If everything went as expected, a *.gba
file should have been generated in the project folder!
Now learn how to import your assets in the game and also take a look at the modules page. It's always a good idea to play around with the examples as they cover most of what Butano offers. The frequently asked questions (FAQ) are worth a look too, as they answer most of the initial questions.