mirror of
https://github.com/italicsjenga/agb.git
synced 2024-12-24 00:31:34 +11:00
ebd5f308e0
Failable objects |
||
---|---|---|
.github | ||
.vscode | ||
agb | ||
agb-fixnum | ||
agb-image-converter | ||
agb-macros | ||
agb-sound-converter | ||
book | ||
examples | ||
mgba-test-runner | ||
template | ||
.gitignore | ||
justfile | ||
LICENSE | ||
logo-original.png | ||
README.md | ||
release.sh |
Rust for the Game Boy Advance
This is a library for making games on the Game Boy Advance using the Rust programming language. It attempts to be a high level abstraction over the internal workings of the Game Boy Advance whilst still being high performance and memory efficient.
The documentation for the latest release can be found on docs.rs. Note that this repository does not necessarily contain the latest release, but in development versions. Further work is needed to improve the documentation.
Build Requirements
- Recent rustup, see the rust website
for instructions for your operating system.
- You can update rustup with
rustup update
, or using your package manager if you obtained rustup in this way.
- You can update rustup with
- arm eabi binutils
- Debian and derivatives:
sudo apt install binutils-arm-none-eabi
- Arch Linux and derivatives:
pacman -S arm-none-eabi-binutils
- Windows can apparently use the GNU Arm Embedded Toolchain. Make sure to select "Add path to environment variable" during the install.
- This process has only been tested on Ubuntu and Arch Linux.
- Debian and derivatives:
Test Requirements
- libelf and cmake
- Debian and derivatives:
sudo apt install libelf-dev cmake
- Arch Linux and derivatives:
pacman -S libelf cmake
- Debian and derivatives:
- mgba-test-runner
- Run
cargo install --path mgba-test-runner
inside this directory
- Run
Real Hardware Build
- Need gbafix, rust implementation can be installed with
cargo install gbafix
. - On compiled elf file, additionally need to
arm-none-eabi-objcopy -O binary {input-elf} {output-gba}
gbafix {output-gba}
Stability
0% stable, I have no problems making drastic changes in the API in order to make something nice to work with.