Demonstrates how a Game Boy program can boot custom SNES code on Super Game Boy, then stream additional data to the SNES as needed
  • Assembly 67.9%
  • Python 24.7%
  • Makefile 7.1%
  • Pawn 0.3%
Find a file
2026-04-03 13:30:27 -04:00
gb Ask Game Boy to do an addition, then show result 2026-04-03 13:25:25 -04:00
snes Ask Game Boy to do an addition, then show result 2026-04-03 13:25:25 -04:00
.gitmodules Add hardware.inc as a submodule 2026-04-02 23:53:01 -04:00
LICENSE Initial commit 2026-04-02 20:46:16 +02:00
README.md Add note about what the text on the top of the screen is 2026-04-03 13:30:27 -04:00
SNES to GB commands.txt Add very basic version of the Game Boy code 2026-04-02 23:28:29 -04:00

SuperGameBoyStorageServer

Demonstrates how a Game Boy program can boot custom SNES code on Super Game Boy, then stream additional data to the SNES as needed. The same source code is used to build a version of the game that runs standalone, for easier debugging. A real Super Game Boy or an emulator with low-level Super Game Boy emulation is required, such as Mesen2 or Ares.

Building the demo

SNES side builds with ca65 and the Game Boy side builds with rgbds. See nrom-template for information on how to set up the other required build tools (Python, Make, etc.)

Run make in the gb directory once you have the required tools. make super in the gb directory will build the SNES portion.

Demo details

This demo uses Tiny 16: Basic by Lanea Zimmerman, licensed under CC-BY 3.0. The tileset has been modified to use one fewer color. Font is based on Chicago by Susan Kare.

In addition to requests to load files from the Game Boy ROM, the Game Boy program in this demo can perform other tasks like simple math or playing sound effects in response to the SNES's commands. The demo shows the result of adding $AA to $BB, calculated by the Game Boy. The sound effects in this demo and the sound effect driver are from PinoBatch's port of Magic Floor.

Use the L and R buttons to switch between characters, which loads new character graphics from the Game Boy ROM. The X button switches out foreground and background tilemaps, which also load from the Game Boy ROM. The D-pad can be used to move the character around. Most other buttons play sound effects.

The graphics in this demo are not compressed. With how quickly the Game Boy seems to be able to send new data to the SNES, adding compression to cut down on how much data needs to be sent would probably actually make it slower to load a file, especially if the data already fits within a single 4 KiB transfer.