Help and Resources
Help
So you're stuck on a problem and the book doesn't say what to do. Where can you find out more?
The first place I would suggest is the Rust Community
Discord. If it's a general Rust question
then you can ask anyone in any channel you feel is appropriate. If it's GBA
specific then you can try asking me (Lokathor
) or Ketsuban
in the #gamedev
channel.
Emulators
You certainly might want to eventually write a game that you can put on a flash cart and play on real hardware, but for most of your development you'll probably want to be using an emulator for testing, because you don't have to fiddle with cables and all that.
In terms of emulators, you want to be using mGBA, and you want to be using the 0.7 Beta 1 or later. This update lets you run raw ELF files, which means that you can have full debug symbols available while you're debugging problems.
Information Resources
First, if I fail to describe something related to Rust, you can always try checking in The Rust Reference to see if they cover it. You can mostly ignore that big scary red banner at the top, things are a lot better documented than they make it sound.
If you need help trying to fiddle your math down as hard as you can, there are resources such as the Bit Twiddling Hacks page.
As to GBA related lore, Ketsuban and I didn't magically learn this all from nowhere, we read various technical manuals and guides ourselves and then distilled those works oriented around C and C++ into a book for Rust.
We have personally used some or all of the following:
- GBATEK: This is the resource. It
covers not only the GBA, but also the DS and DSi, and also a run down of ARM
assembly (32-bit and 16-bit opcodes). The link there is to the 2.9b version on
problemkaputt.de
(the official home of the document), but if you just google for gbatek the top result is for the 2.5 version onakkit.org
, so make sure you're looking at the newest version. Sometimesproblemkaputt.de
is a little sluggish so I've also mirrored the 2.9b version on my own site as well. GBATEK is rather large, over 2mb of text, so if you're on a phone or similar you might want to save an offline copy to go easy on your data usage. - TONC: While GBATEK is basically just a huge tech specification, TONC is an actual guide on how to make sense of the GBA's abilities and organize it into a game. It's written for C of course, but as a Rust programmer you should always be practicing your ability to read C code anyway. It's the programming equivalent of learning Latin because all the old academic books are written in Latin.
- CowBite: This is more like GBATEK, and it's less complete, but it mixes in a little more friendly explanation of things in between the hardware spec parts.
And I haven't had time to look at it myself, The Audio Advance seems to be very good. It explains in depth how you can get audio working on the GBA. Note that the table of contents for each page goes along the top instead of down the side.
Non-Rust GBA Community
There's also the GBADev.org site, which has a forum and everything. They're coding in C and C++, but you can probably overcome that difference with a little work on your part.
I also found a place called GBATemp, which seems to have a more active forum but less of a focus on actual coding.