• Stars
    star
    124
  • Rank 288,207 (Top 6 %)
  • Language
    Assembly
  • License
    The Unlicense
  • Created almost 6 years ago
  • Updated almost 4 years ago

Reviews

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

Repository Details

A library with some standard functions for Game Boy games written in ASM

GingerBread

A library with some standard functions for making your own Game Boy games in Assembly, written from scratch. It was made alongside the book Game Boy Assembly Programming for the Modern Game Developer which can be downloaded here.

Functionality

The GingerBread library attempts to contain a lot of basic functionality needed for most Game Boy games. It takes care of things like

  1. Defining various constants that are easier to remember than random memory addresses
  2. Defining several low-level function that most games would need, like
    • Reading key input
    • Displaying graphics
    • Writing text and numbers
    • Playing sound effects
    • Super Game Boy and Game Boy Color functionality
    • Managing save data
  3. Taking care of the boot process
  4. Defining the ROM header

The idea is to reduce the amount of boilerplate code needed to get started with Game Boy game development in Assembly. The book contains lots of examples and also serves as documentation for this library.

The library does not directly support playing background music. Instead, it is designed to be used alongside GBT-Player which is included as a git submodule. The library can also be used without GBT-Player.

Requirements

RGBDS is necessary to compile GingerBread and its example(s).

To do

  1. Make a stand-alone documentation document, specifying the constants and functions defined by GingerBread. Most of it is in the book, but having it available stand-alone is probably useful to many.

Why make this?

During the development of Rope & Bombs, the lack of any cohesive and complete introduction to Game Boy development was a major hassle. To save others from having to figure out themselves like we did, the book tries to explain things in a way that is (hopefully) easy to understand for people more used to modern programming.

Unfortunately, the amount of material needed to explain every necessary aspect of Game Boy development from the ground up would be so large that the book simply could not be finished. In order to relieve the book from having to explain absolutely everything, the GingerBread library was introduced which contains a bunch of boilerplate code. That way, new Game Boy developers can start coding their game much faster, while focusing on learning how to express their game logic, as opposed to starting with having to figure out how to write their ROM header (while simultaneously having to figure out what that is and why you need one).

We hope that, by introducing things in order of relevance, Game Boy development will be much more approachable. Once a developer has learned the basics, they may find that they no longer need, or no longer want, to use GingerBread and would rather code everything from scratch. If somebody reaches that point using our work, then we consider that a success.

Legal stuff

The library is released under the The Unlicense. It basically means you are allowed to use it for whatever purpose.

This library is written with no association or cooperation with Nintendo. The Game Boy is a trademark of Nintendo.

More Repositories

1

ensemble-objdet

A basic ensemble method for object detection. Given bounding boxes from multiple object detectors, output a single cohesive set of bounding boxes.
Python
161
star
2

gbapfomgd

Source code for the book "Game Boy Assembly Programming for the Modern Game Developer"
TeX
147
star
3

strudl

STRUDL: Surveillance Tracking Using Deep Learning
Python
11
star
4

l-veftw

A port of the Lรถve game framework to the Windows 10 UWP.
C++
10
star
5

ViratAnnotationObjectDetection

Object Detection-based annotations for some frames of the VIRAT dataset
7
star
6

sorts

Segmentation multi-target tracking in real-time
Python
5
star
7

luasocket-uwp

A VS2015 project that lets your build libluasocket for Windows 10 UWP apps.
C
4
star
8

utocs

Standard Traffic Surveillance Video Dataset for Carla Simulator
Python
4
star
9

lua-uwp

A VS2015 project that lets your build Lua for Windows 10 UWP apps.
C
4
star
10

love-uwp

A VS2015 project that lets your build Lรถve for Windows 10 UWP apps.
C++
3
star
11

pyscript-litestar-demo

Demonstration of how to use Pyscript and Litestar together, to run web software with Python on both frontend and backend
Shell
2
star
12

hatcat

The game Hat Cat and the Obvious Crimes Against the Fundamental Laws of Physics
Lua
2
star
13

physfs-uwp

A Visual Studio project for running PhysFS in Windows 10 UWP apps in C++.
C
2
star
14

libogg-uwp

A VS2015 project that lets your build libogg for Windows 10 UWP apps.
Shell
1
star
15

zlib-uwp

A VS2015 project that lets your build Zlib for Windows 10 UWP apps.
C
1
star
16

libtheora-uwp

A VS2015 project that lets your build libtheora for Windows 10 UWP apps.
C
1
star
17

rabloromi

Python
1
star
18

libmodplug-uwp

A VS2015 project that lets your build libmodplug for Windows 10 UWP apps.
C++
1
star
19

freetype-uwp

A VS2015 project that lets your build FreeType for Windows 10 UWP apps.
C
1
star
20

libvorbis-uwp

A VS2015 project that lets your build libvorbis for Windows 10 UWP apps.
C
1
star
21

hashcode2020

Our solution to the HashCode 2020 online qualification round
Python
1
star