diff options
| -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 |
