diff options
| author | gbc dev <gbc@localhost> | 2026-07-18 22:47:08 +0200 |
|---|---|---|
| committer | gbc dev <gbc@localhost> | 2026-07-18 22:47:08 +0200 |
| commit | 27359b442c139e5cec1ac36b50b427fb828e73e6 (patch) | |
| tree | 9936a6f09761fa03d72cdfdf62b34630b9e2ed97 | |
| parent | tools: mk_sl0pboy_bios.py - fork the CGB boot ROM's GAME BOY -> SL0PBOY (diff) | |
| download | sl0pboy-master.tar.gz sl0pboy-master.tar.xz sl0pboy-master.zip | |
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.md | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -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 |
