gbdev / rgbds

Rednex Game Boy Development System - An assembly toolchain for the Nintendo Game Boy and Game Boy Color
https://rgbds.gbdev.io
MIT License
1.35k stars 172 forks source link
asm assembly assembly-language assembly-sm83 cplusplus game-boy game-development gameboy gamedev gbdev gbz80 sm83

RGBDS

RGBDS (Rednex Game Boy Development System) is a free assembler/linker package for the Game Boy and Game Boy Color. It consists of:

This is a fork of the original RGBDS which aims to make the programs more like other UNIX tools.

This toolchain is maintained on GitHub.

The documentation of this toolchain can be viewed online. It is generated from the man pages found in this repository. The source code of the website itself is on GitHub as well under the repository rgbds-www.

If you want to contribute or maintain RGBDS, or you have questions regarding the code, its organization, etc. you can find the maintainers on the gbdev community channels or via mail at rgbds at gbdev dot io.

1. Installing RGBDS

The installation procedure is available online for various platforms. Building from source is possible using make or cmake; follow the link for more detailed instructions.

make
sudo make install
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build

Two parameters available when building are a prefix (e.g. to put the executables in a directory) and a suffix (e.g. to append the version number or commit ID).

make
sudo make install PREFIX=install_dir/ SUFFIX=-$(git rev-parse --short HEAD)
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DSUFFIX=-$(git rev-parse --short HEAD)
cmake --build build
cmake --install build --prefix install_dir

(If you set a SUFFIX, it should include the .exe extension on Windows.)

2. RGBDS Folder Organization

The RGBDS source code file structure is as follows:

.
├── .github/
│   ├── scripts/
│   │   └── ...
│   └── workflows/
│       └── ...
├── contrib/
│   ├── zsh_compl/
│   │   └── ...
│   └── ...
├── include/
│   └── ...
├── man/
│   └── ...
├── src/
│   ├── asm/
│   │   └── ...
│   ├── extern/
│   │   └── ...
│   ├── fix/
│   │   └── ...
│   ├── gfx/
│   │   └── ...
│   ├── link/
│   │   └── ...
│   ├── CMakeLists.txt
│   └── ...
├── test/
│   ├── ...
│   └── run-tests.sh
├── .clang-format
├── CMakeLists.txt
├── Dockerfile
├── Makefile
└── README.md

3. History

4. Acknowledgements

RGBGFX generates palettes using algorithms found in the paper "Algorithms for the Pagination Problem, a Bin Packing with Overlapping Items" (GitHub, MIT license), by Aristide Grange, Imed Kacem, and Sébastien Martin.

RGBGFX's color palette was taken from SameBoy, with permission and help by LIJI.