Awesome
NOTE! Nim and dkP's libtonc don't work together due to conflicing definitions of bool
.
This is fixed in the devel branch of Natu, so it's recommended to use that for now.
Quickstart: After installing devkitARM and Nim:
git clone https://github.com/exelotl/natu
cd natu
git checkout devel # switch to devel branch
git submodule update --init # clone libtonc and maxmod submodules
nimble install # install the lib and asset converter to ~/.nimble
cd examples/hello_world # go to an example
nim build # run the "build" nimscript task
<p align="center"><img width="200" src="https://user-images.githubusercontent.com/569607/85204175-8293f180-b30a-11ea-9fb0-66a502f740ba.png" alt="Natu GBA Logo"></p>
Natu is a package for making Game Boy Advance games in Nim.
Originally a wrapper for libtonc, we are now growing in our own direction: ditching some old conventions to be more Nim-friendly, and adding more libraries.
Features
- Full GBA memory map + flag definitions
- BIOS routines
- Interrupt manager
- A powerful text system (TTE)
- Surfaces (draw to tiles like a canvas)
- Efficient copy routines
- Sin/Cos/Div LUTs + other math functions
- Fixed-point numbers, 2D vector types
- Random number generator
- Hardware sprites, affine matrix helpers
- Color/palette utilities
- Button states (hit, down, released)
- mGBA logging functions
- Maxmod bindings for music/sfx
- Posprintf wrapper for string formatting
Usage
For docs and setup instructions go to natu.exelo.tl
The examples can be found at git.sr.ht/~exelotl/natu-examples
Happy coding! And if you need any help you can reach me (exelotl) on the gbadev discord, #natu
irc channel on EFnet, or ask a question on the natu mailing list.
Thanks
tonc + libtonc by cearn
maxmod sound system by mukunda johnson
libugba's interrupt handler by AntonioND
ACSL's malloc/free by pgimeno
mGBA by endrift
posprintf by dan posluns
natu logo by hot_pengu, based on pixel art by iamrifki