mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 10:12:06 +00:00
170 lines
6.0 KiB
ReStructuredText
170 lines
6.0 KiB
ReStructuredText
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 <https://github.com/gbdev/rgbds>`__.
|
||
|
||
The documentation of this toolchain can be viewed online `here <https://rgbds.gbdev.io/docs/>`__.
|
||
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 <https://github.com/gbdev/rgbds-www>`__.
|
||
|
||
If you want to contribute or maintain RGBDS, and have questions regarding the code, its
|
||
organisation, etc. you can find the maintainers `on GBDev <https://gbdev.io/chat>`__ or
|
||
via mail at ``rgbds at gbdev dot io``.
|
||
|
||
1. Installing RGBDS
|
||
-------------------
|
||
|
||
The `installation procedure <https://rgbds.gbdev.io/install>`__ is available
|
||
online for various platforms. `Building from source <https://rgbds.gbdev.io/install/#building-from-source>`__
|
||
is possible using ``make`` or ``cmake``; follow the link for more detailed instructions.
|
||
|
||
.. code:: sh
|
||
|
||
make
|
||
sudo make install
|
||
|
||
.. code:: sh
|
||
|
||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
||
cmake --build build
|
||
cmake --install build
|
||
|
||
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.rst
|
||
|
||
.. |clang-format| replace:: ``clang-format``
|
||
.. _clang-format: https://clang.llvm.org/docs/ClangFormat.html
|
||
|
||
- ``.github/`` - files and scripts related to the integration of the RGBDS codebase with
|
||
GitHub.
|
||
|
||
* ``scripts/`` - 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 the respective source 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 C++ formatting with |clang-format|_.
|
||
|
||
- ``Dockerfile`` - defines how to build RGBDS with Docker.
|
||
|
||
3. History
|
||
----------
|
||
|
||
- 1996-10-01: Carsten Sørensen (a.k.a. SurfSmurf) releases
|
||
`xAsm <http://otakunozoku.com/RGBDSdocs/asm.htm>`__,
|
||
`xLink <http://otakunozoku.com/RGBDSdocs/link.htm>`__, and
|
||
`RGBFix <http://otakunozoku.com/RGBDSdocs/fix.htm>`__,
|
||
a Game Boy SM83 (GBZ80) assembler/linker system for DOS/Win32.
|
||
|
||
- 1997-07-03: Sørensen releases `ASMotor <http://otakunozoku.com/RGBDSdocs/geninfo.htm>`__,
|
||
packaging the three programs together and moving towards making them a
|
||
general-purpose target-independent system.
|
||
|
||
- 1999-08-01: Justin Lloyd (a.k.a. Otaku no Zoku) adapts ASMotor to re-focus
|
||
on SM83 assembly/machine code, and releases this version as
|
||
`RGBDS <http://otakunozoku.com/rednex-gameboy-development-system/>`__.
|
||
|
||
- 2009-06-11: Vegard Nossum adapts the code to be more UNIX-like and releases
|
||
this version as `rgbds-linux <https://github.com/vegard/rgbds-linux>`__.
|
||
|
||
- 2010-01-12: Anthony J. Bentley `forks <https://github.com/bentley>`__ Nossum's
|
||
repository. The fork becomes the reference implementation of RGBDS.
|
||
|
||
- 2015-01-18: stag019 begins implementing `rgbgfx <https://github.com/stag019/rgbgfx>`__,
|
||
a PNG‐to‐Game Boy graphics converter, for eventual integration into RGBDS.
|
||
|
||
- 2016-09-05: rgbgfx is `integrated <https://github.com/gbdev/rgbds/commit/c3c31138ddbd8680d4e67957e387f2816798a71b>`__
|
||
into Bentley's repository.
|
||
|
||
- 2017-02-23: Bentley's repository is moved to the `rednex <https://github.com/rednex>`__
|
||
organization.
|
||
|
||
- 2018-01-26: The codebase is `relicensed <https://github.com/gbdev/rgbds/issues/128>`__
|
||
under the MIT license.
|
||
|
||
- 2020-09-15: The repository is `moved <https://github.com/gbdev/rgbds/issues/567>`__
|
||
to the `gbdev <https://github.com/gbdev>`__ organization.
|
||
|
||
- 2022-05-17: The `rgbds.gbdev.io <https://rgbds.gbdev.io>`__ website for RGBDS
|
||
documentation and downloads is published.
|
||
|
||
4. Acknowledgements
|
||
-------------------
|
||
|
||
RGBGFX generates palettes using algorithms found in the paper
|
||
`"Algorithms for the Pagination Problem, a Bin Packing with Overlapping Items" <http://arxiv.org/abs/1605.00558>`__
|
||
(`GitHub <https://github.com/pagination-problem/pagination>`__, MIT license),
|
||
by Aristide Grange, Imed Kacem, and Sébastien Martin.
|