aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgbc dev <gbc@localhost>2026-07-18 22:47:08 +0200
committergbc dev <gbc@localhost>2026-07-18 22:47:08 +0200
commit27359b442c139e5cec1ac36b50b427fb828e73e6 (patch)
tree9936a6f09761fa03d72cdfdf62b34630b9e2ed97
parenttools: mk_sl0pboy_bios.py - fork the CGB boot ROM's GAME BOY -> SL0PBOY (diff)
downloadsl0pboy-master.tar.gz
sl0pboy-master.tar.xz
sl0pboy-master.zip
docs: document the SL0PBOY boot-logo patcher (tools/mk_sl0pboy_bios.py)HEADmaster
Add a BIOS subsection covering usage (Pillow dep, SL0P_TEXT/SL0P_FONT knobs, the preview PNG), how the in-place $0607 blob patch works, and why the forked binary stays out of git while the generator ships.
-rw-r--r--README.md29
1 files changed, 29 insertions, 0 deletions
diff --git a/README.md b/README.md
index d53f728..e0e5f80 100644
--- a/README.md
+++ b/README.md
@@ -47,6 +47,35 @@ pokes `0xFF50`, just like hardware. 256 bytes → boots as DMG; 2304 bytes (like
the bundled `bios/gbc_bios.bin`) → boots as CGB, which also colorizes plain DMG
games via the boot ROM's compatibility palette.
+### SL0PBOY boot logo (`tools/mk_sl0pboy_bios.py`)
+
+Fork the CGB boot ROM so the power-on animation reads **SL0PBOY** instead of
+**GAME BOY** — same italic drop, colorize and chime:
+
+```sh
+pip install pillow # needs Pillow + a bold-italic TTF
+tools/mk_sl0pboy_bios.py # bios/gbc_bios.bin -> bios/sl0pboy_bios.bin
+./build/sl0pboy --bios bios/sl0pboy_bios.bin --sixel 3 --chrome roms/pky.gbc
+SL0P_TEXT='SL0P' tools/mk_sl0pboy_bios.py # or brand it whatever you like
+```
+
+It also drops a `bios/sl0pboy_bios.bin.preview.png` so you can eyeball the
+wordmark before booting. Env knobs: `SL0P_TEXT` (default `SL0PBOY`), `SL0P_FONT`
+(default LiberationSans-BoldItalic).
+
+**How it works.** The stock CGB boot ROM draws its GAME BOY wordmark from a
+192-byte blob at `0x0607` — the routine at `0x03F0` copies it to VRAM tiles
+`0x08-0x37`: 48 tiles (16×3, tile-sequential), 4 bytes each, every byte one
+8-px row that the copy loop doubles vertically (plane 1 stays 0). The script
+re-encodes that blob from a bold-italic bitmap and patches it **in place** —
+no code moves, and the cart's own Nintendo logo (`0x0104`) is untouched, so the
+boot ROM's integrity check still passes and it hands off to the game normally.
+
+> `bios/` is git-ignored (the stock boot ROM is copyrighted Nintendo material),
+> so the forked binary lives only in your working tree — regenerate it any time
+> from your local `bios/gbc_bios.bin`. The script itself ships only our original
+> logo art + the patch offset.
+
## Headless serial console (`--headless`)
Bringing up an OS/monitor on the emulated Game Boy? `--headless` kills all