• Stars
    star
    1,153
  • Rank 40,166 (Top 0.8 %)
  • Language
    C++
  • License
    MIT License
  • Created about 15 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Rednex Game Boy Development System - An assembly toolchain for the Nintendo Game Boy & Game Boy Color

RGBDS

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

  • rgbasm (assembler)
  • rgblink (linker)
  • rgbfix (checksum/header fixer)
  • rgbgfx (PNGโ€toโ€Game Boy graphics converter)

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 here, 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 repo rgbds-www.

If you want to contribute or maintain RGBDS, and have questions regarding the code, its organisation, etc. you can find me on GBDev or via mail at rgbds at eldred dot fr.

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

2. RGBDS Folder Organization

The RGBDS source code file structure somewhat resembles the following:

.
โ”œโ”€โ”€ .github/
โ”‚   โ”œโ”€โ”€ actions/
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ””โ”€โ”€ workflows/
โ”‚       โ””โ”€โ”€ ...
โ”œโ”€โ”€ contrib/
โ”‚   โ”œโ”€โ”€ zsh_compl/
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ include/
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ man/
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ asm/
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”œโ”€โ”€ extern/
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”œโ”€โ”€ fix/
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”œโ”€โ”€ gfx/
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”œโ”€โ”€ link/
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”œโ”€โ”€ CMakeLists.txt
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ test/
โ”‚   โ”œโ”€โ”€ ...
โ”‚   โ””โ”€โ”€ run-tests.sh
โ”œโ”€โ”€ .clang-format
โ”œโ”€โ”€ CMakeLists.txt
โ”œโ”€โ”€ Makefile
โ””โ”€โ”€ README.rst
  • .github/ - files and scripts related to the integration of the RGBDS codebase with GitHub.
    • actions/ - scripts used by workflow files.
    • workflows/ - CI workflow description files.
  • contrib/ - scripts and other resources which may be useful to users and developers of RGBDS.
    • zsh_compl contains tab completion scripts for use with zsh. Put them somewhere in your fpath, and they should auto-load.
    • bash_compl contains tab completion scripts for use with bash. Run them with source somewhere in your .bashrc, and they should load every time you open a shell.
  • include/ - header files for each respective C files in src.
  • man/ - manual pages.
  • src/ - source code of RGBDS.
    • Note that the code unique to each RGBDS tool is stored in its respective subdirectory (rgbasm -> src/asm/, for example). src/extern/ contains code imported from external sources.
  • test/ - testing framework used to verify that changes to the code don't break or modify the behavior of RGBDS.
  • .clang-format - code style for automated formatting with clang-format. The C code does not currently follow this style, but all C++ code should.

3. History

  • Around 1997, Carsten Sรธrensen (AKA SurfSmurf) writes ASMotor as a general-purpose assembler/linker system for DOS/Win32
  • Around 1999, Justin Lloyd (AKA Otaku no Zoku) adapts ASMotor to read and produce GBZ80 assembly/machine code, and releases this version as RGBDS.
  • 2009, Vegard Nossum adapts the code to be more UNIX-like and releases this version as rgbds-linux on GitHub.
  • 2010, Anthony J. Bentley forks that repository. The fork becomes the reference implementation of rgbds.
  • 2017, Bentley's repository is moved to a neutral name.
  • 2018, codebase relicensed under the MIT license.
  • 2020, repository is moved to the gbdev organisation. The rgbds.gbdev.io website serving documentation and downloads is created.

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.

More Repositories

1

awesome-gbdev

A curated list of Game Boy development resources such as tools, docs, emulators, related projects and open-source ROMs.
3,916
star
2

pandocs

The single, most comprehensive Game Boy technical reference.
Rust
589
star
3

hardware.inc

RGBDS include file for Game Boy hardware definitions
Assembly
112
star
4

gb-asm-tutorial

Learn to create games for the Game Boy using Assembly
Assembly
104
star
5

database

JSON database of every Homebrew Hub entries. Propose here additions, improvements and fixes, every change propagates to Homebrew Hub.
C
80
star
6

homebrewhub

A digital repository of of homebrews, patches, hackroms for old consoles. Provides community submission, tagging and rating features.
Python
44
star
7

rgbds-live

A live Gameboy programming environment in the browser, allowing for realtime assembly programming for the gameboy.
JavaScript
31
star
8

gbdev.github.io

gbdev institutional website: showcases projects and hosts some community content
Assembly
23
star
9

gb-opcodes

SCSS
20
star
10

gbadoc

Community initiated GBA Technical documentation effort
CSS
16
star
11

gbcompo21

An OG gbdev game jam! Create original games, demos or homebrews for the original Game Boy (Color) and compete for glory (and a lot of prizes)!
JavaScript
7
star
12

virens

Homebrew Hub web frontend, in Nuxt 3. Powered by webassembly builds of binjgb and mGBA.
JavaScript
6
star
13

rgbenv

RGBDS version manager
Shell
6
star
14

rgbds-www

RGBDS website, hosting documentation and install instructions. Built with Docusaurus, content from RGBDS man pages.
HTML
6
star
15

highlightjs-rgbasm

A RGBASM language grammar for highlight.js
JavaScript
5
star
16

rgbobj

A Rust program for humans to inspect RGBDS object files
Rust
3
star
17

GBSoundSystem

A system-wide refactor (modernization) of the GameBoy Tracker (aka the Paragon 5) replayer created by Stephane Hockenhull.
Assembly
3
star
18

DeadCScroll

An assembly tutorial for Game Boy showing how the scroll registers can be exploited to create some nice and interesting effects.
Assembly
2
star
19

cameraclub-www

Home page of the Gameboy camera club, showing off some community content and curated zines
HTML
1
star
20

rgbds-www2

Experimental new RGBDS documentation website powered by React/Docusaurus
Roff
1
star
21

snippet-bot

A discord bot archiving code blocks and links to pastebin-like snippets
JavaScript
1
star
22

rgbds-deb

Alright, let's get RGBDS into Debian repositories
C++
1
star