/gbdev

Game Boy Development

Primary LanguageAssemblyBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

== GB DEVELOPMENT - Avik Das ===========================================

A collection of programs written for the Nintendo Game Boy (GB). The
Game Boy Color may also be targetted in the future, though the current
state of the project targets only the original Game Boy. Due to the
limitations of the hardware, all the programs must be relatively small,
so it makes sense to keep them all in the same repository.

The included programs are described briefly below, while more elaborate
descriptions are provided inside the corresponding directories.

~~ PREREQUISITES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The programs are written in the appropriate variant of Z80 assembly,
using the RGBDS Assembler and Linker. The version of the toolkit used
for these programs may be found at https://github.com/bentley/rgbds .
The Makefiles assume that the toolkit is on the PATH.

To run the program after assembly, a GB emulator is required. The next
section outlines possible suitable emulators.

The programs are written in vim, and a modeline is present in the source
files that gives them the appropriate syntax highlighting. The syntax
file is available on the vim scripts website as rgbasm.vim
(https://github.com/vim-scripts/rgbasm.vim).

~~ EMULATOR COMPATIBILITY ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The programs are tested on a number of emulators:

* gambatte (http://sourceforge.net/projects/gambatte/)
  This emulator aims to be as accurate as possible, and is therefore the
  most suitable for testing. This will be the primary target for these
  programs.

* VisualBoy Advance (http://vba-m.com/).
  The VBA-M fork is preferred, as the original project is now inactive.
  This emulator is very popular, so it makes sense to ensure
  compatibility.

Additionally, there are some other emulators to note:

* mednafen (http://mednafen.sourceforge.net/)
  This emulator intends to emulate multiple platforms. These programs
  may not be tested extensively on this emulator, but it remains an
  option, and the programs may occasionally be tested on it.

* JS GameBoy Color Game Center (http://www.grantgalitz.org/gameboy/)
  This emulator runs in the browser using HTML5 and Javascript. The
  programs may not be tested extensively on this, but given that the
  lack of proper checksums caused this emulator to reject older versions
  of some of the programs when even gambatte did not, it has its place
  as an additional check.

~~ INCLUDED PROGRAMS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

More detailed descriptions are available in the README files inside the
directory containing each program.

buttons - A simple test program that shows which button (or multiple
  buttons) is currently being pressed. This functionality allows testing
  controllers on emulators.

sprite - A simple test program that demonstrates a wide variety of
  hardware-provided functionality and general programming techniques.

stat-interrupt - A program to demonstrate the use of the LCDC Status
  interrupt in order to achieve some graphical effects that would
  otherwise be difficult or impossible using the video system in the
  Game Boy.

money-run - An actual game, applying the techniques in the above
  programs to a fully-playable game.