Butano is built on top of the devkitARM toolchain, we can obtain this toolchain from devkitpro. DevKitPro is an organization that provides 3 toolchains, devkitARM, devkitPPC, and devkitA64. If you need additional help, try GValiente’s butano tutorials, the devkitPro Getting Started Page, or the GBADev Discord Server
Installing DevKit Pro
Follow the instructions for your operating sytstem here: Devkitpro.org – Getting Started.
- For windows users: make sure you install the GBA Development component
- For non-windows users: install everything in the ‘gba-dev’ group
Once you’ve installed DevKitPro, you’ll need to install python.
Installing Python
“Python is a programming language that lets you work quickly and integrate systems more effectively.” ~ Python.org Homepage
Primary development for GBA games via Butano will utilize the C++ programming language, but the Butano engine will need python installed for some internal scripts.
Python comes pre-installed on many systems. To see if python is already installed on your computer, open a command prompt or terminal and run this command:
python
If you don’t see an error message, you have python installed.
If you don’t have python installed, Download the latest stable version of python for your operating system. You can find that download here: Python – Downloads.
IMPORTANT NOTE: if you are a windows user, make sure python is added to the PATH.
With python installed, we can finally install Butano.
Installing Butano
Butano doesn’t have a installer or pacman like devkitpro or python. To get Butano, we just clone or download from it’s Github repository. You can download butano from GitHub here: Butano.
Make sure you download the latest release, from the releases section. At the time this tutorial was written the latest release was 18.2.1. You should use the latest release.
Clone or unzip the latest release to a location you can remember.
IMPORTANT NOTE: Unzip or clone the repo in a path without any spaces or special characters, to avoid weird issues with the engine.
You should now be able to build and run the examples included with Butano. To compile the examples, you’ll need “make”. Mac & linux users should already have this installed, devkitARM for windows should also comes with a make.exe (check your installation location, and envrionment path if it doesnt work)
If we run the ‘make‘ command in the ‘dynamic_regular_bg’ example, the output will look like this. (i’m running on windows, my butano release was put on the C drive)
NOTE: The first build will always take a long time, the subsequence builds will be faster. To improve build time, you should call “make -j8
” if your pc has 8 cores, for example
C:\butano\examples\dynamic_regular_bg>make
music_items_info file written in build/bn_music_items_info.h
sound_items_info file written in build/bn_sound_items_info.h
Processed audio size: 12 bytes
cursor.bmp
palette.bmp
tiles.bmp
common_fixed_8x16_font.bmp
common_fixed_8x8_font.bmp
common_variable_16x16_font.bmp
common_variable_8x16_font.bmp
common_variable_8x8_font.bmp
cursor.bmp item header written in build/bn_sprite_items_cursor.h (graphics size: 64 bytes)
palette.bmp item header written in build/bn_bg_palette_items_palette.h (graphics size: 32 bytes)
tiles.bmp item header written in build/bn_regular_bg_tiles_items_tiles.h (graphics size: 224 bytes)
common_fixed_8x16_font.bmp item header written in build/bn_sprite_items_common_fixed_8x16_font.h (graphics size: 7072 bytes)
common_fixed_8x8_font.bmp item header written in build/bn_sprite_items_common_fixed_8x8_font.h (graphics size: 3552 bytes)
common_variable_16x16_font.bmp item header written in build/bn_sprite_items_common_variable_16x16_font.h (graphics size: 14112 bytes)
common_variable_8x16_font.bmp item header written in build/bn_sprite_items_common_variable_8x16_font.h (graphics size: 7072 bytes)
common_variable_8x8_font.bmp item header written in build/bn_sprite_items_common_variable_8x8_font.h (graphics size: 3552 bytes)
Processed graphics size: 35680 bytes
_bn_audio_soundbank.bin
cursor_bn_gfx.s
... a lot of .c and .s files
huffman.s
lz77.s
running_length.s
Linking ROM...
Fixing dynamic_regular_bg.gba ...
ROM fixed!
In a GBA Emulator, we can see the result: (move around with the keyboard arrow keys to update)
That’s everything for now. If my instructions weren’t clear and you’re having troubles, check out the devkitPro Starter Page: https://devkitpro.org/wiki/Getting_Started, and/or GValiente’s getting started page: Butano – Getting Started.