mirror of
https://github.com/italicsjenga/gba.git
synced 2024-12-25 11:41:30 +11:00
65 lines
2.9 KiB
Markdown
65 lines
2.9 KiB
Markdown
# Introduction
|
|
|
|
Here's a book that'll help you program in Rust on the Game Boy Advance (GBA).
|
|
|
|
It's a work in progress of course, but so is most of everything in Rust.
|
|
|
|
## Style and Purpose
|
|
|
|
I'm out to teach you how to program in Rust on the GBA, obviously. However,
|
|
while there _is_ a [gba](https://github.com/rust-console/gba) crate, and while I
|
|
genuinely believe it to be a good and useful crate for GBA programming, we _will
|
|
not_ be using the `gba` crate within this book. In fact we won't be using any
|
|
crates at all. We can call it the [Handmade Hero](https://handmadehero.org/)
|
|
approach, if you like.
|
|
|
|
I don't want to just teach you how to use the `gba` crate, I want to teach you
|
|
what you'd need to know to write the crate from scratch if it wasn't there.
|
|
|
|
Each chapter of the book will focus on a few things you'll need to know about
|
|
GBA programming and then present a fully self-contained example that puts those
|
|
ideas into action. Just one file per example, no dependencies, no external
|
|
assets, no fuss. The examples will be in the text of the book within code
|
|
blocks, but also you can find them in the [examples
|
|
directory](https://github.com/rust-console/gba/tree/master/examples) of the repo
|
|
if you want to get them that way.
|
|
|
|
## Expected Knowledge
|
|
|
|
I will try not to ask too much of the reader ahead of time, but you are expected
|
|
to have already read [The Rust Book](https://doc.rust-lang.org/book/). Having
|
|
also read through the [Rustonomicon](https://doc.rust-lang.org/nomicon/) is
|
|
appreciated but not required.
|
|
|
|
It's very difficult to know when you've said something that someone else won't
|
|
already know about, or if you're presenting ideas out of order. If things aren't
|
|
clear please [file an issue](https://github.com/rust-console/gba/issues) and
|
|
we'll try to address it.
|
|
|
|
## Getting Help
|
|
|
|
If you want to contact us you should join the [Rust Community
|
|
Discord](https://discordapp.com/invite/aVESxV8) and ask in the `#gamedev`
|
|
channel.
|
|
|
|
* `Ketsuban` is the wizard who knows much more about how it all works
|
|
* `Lokathor` is the fool who decided to write a crate and book for it.
|
|
|
|
If it's _not_ a GBA specific question then you can probably ask any of the other
|
|
folks in the server as well (there's a few hundred folks).
|
|
|
|
## Further Reading
|
|
|
|
If you want to read more about developing on the GBA there are some other good
|
|
resources as well:
|
|
|
|
* [TONC](https://www.coranac.com/tonc/text/toc.htm), a tutorial series written
|
|
for C, but it's what I based the ordering of this book's sections on.
|
|
* [GBATEK](http://problemkaputt.de/gbatek.htm), a homebrew tech manual for
|
|
GBA/NDS/DSi. We will regularly link to parts of it when talking about various
|
|
bits of the GBA.
|
|
* [Getting Something for Nothing](https://www.youtube.com/watch?v=t99L3JHhLc0)
|
|
by James Munns. RustConf 2018. It specifically talks about zero cost
|
|
abstraction within an embedded rust context, which is exactly what we're all
|
|
about.
|