<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sl0pboy.git/README.md, branch master</title>
<subtitle>sl0pboy - a Game Boy Color emulator (companion to the gbos OS)</subtitle>
<id>https://git.sl0p.foo/sl0pboy.git/atom/README.md?h=master</id>
<link rel='self' href='https://git.sl0p.foo/sl0pboy.git/atom/README.md?h=master'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/'/>
<updated>2026-07-18T20:47:08Z</updated>
<entry>
<title>docs: document the SL0PBOY boot-logo patcher (tools/mk_sl0pboy_bios.py)</title>
<updated>2026-07-18T20:47:08Z</updated>
<author>
<name>gbc dev</name>
<email>gbc@localhost</email>
</author>
<published>2026-07-18T20:47:08Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/commit/?id=27359b442c139e5cec1ac36b50b427fb828e73e6'/>
<id>urn:sha1:27359b442c139e5cec1ac36b50b427fb828e73e6</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>hooks: clang-format pre-commit (changed lines only) + .clang-format</title>
<updated>2026-07-18T18:57:37Z</updated>
<author>
<name>gbc dev</name>
<email>gbc@localhost</email>
</author>
<published>2026-07-18T18:57:37Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/commit/?id=4901afc59a43841a7cd9e5aee5fbdbd5966a8171'/>
<id>urn:sha1:4901afc59a43841a7cd9e5aee5fbdbd5966a8171</id>
<content type='text'>
git-clang-format scopes formatting to the lines each commit touches -
a full-file reformat would destroy the deliberately dense hand
formatting (opcode tables, multi-statement helpers). The hook re-adds
formatted files (git-clang-format --staged fixes the worktree, not the
index) and refuses partially-staged C files rather than mixing staged
and unstaged changes. Enable once: git config core.hooksPath hooks
</content>
</entry>
<entry>
<title>README: fix source paths in Architecture table (src/ prefix)</title>
<updated>2026-07-18T18:53:17Z</updated>
<author>
<name>gbc dev</name>
<email>gbc@localhost</email>
</author>
<published>2026-07-18T18:53:17Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/commit/?id=e281b0dc76f20163a8bbaafa082aa54a81a5c65b'/>
<id>urn:sha1:e281b0dc76f20163a8bbaafa082aa54a81a5c65b</id>
<content type='text'>
The Architecture table listed the core sources as bare filenames
(types.h, cart.c, ...), but they live under src/. Prefix them with
src/ so the paths actually point at the files.
</content>
</entry>
<entry>
<title>readme: mention sixel in the intro, drop the diffing brag</title>
<updated>2026-07-16T23:12:27Z</updated>
<author>
<name>gbc dev</name>
<email>gbc@localhost</email>
</author>
<published>2026-07-16T23:12:27Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/commit/?id=d1a5eaf27111e08a689910f4a2c195f8ba5f05f2'/>
<id>urn:sha1:d1a5eaf27111e08a689910f4a2c195f8ba5f05f2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>readme: trim the fluff, loosen the tone</title>
<updated>2026-07-16T23:11:07Z</updated>
<author>
<name>gbc dev</name>
<email>gbc@localhost</email>
</author>
<published>2026-07-16T23:11:07Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/commit/?id=4aa4df2687cb350fb4c7717bd9298b70e9b0dab6'/>
<id>urn:sha1:4aa4df2687cb350fb4c7717bd9298b70e9b0dab6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>rebrand: gbc -&gt; sl0pboy (binary, README, tooling)</title>
<updated>2026-07-16T23:08:48Z</updated>
<author>
<name>gbc dev</name>
<email>gbc@localhost</email>
</author>
<published>2026-07-16T23:08:48Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/commit/?id=c714fc8927c454b5cf4735429b4cc9cde7aa5760'/>
<id>urn:sha1:c714fc8927c454b5cf4735429b4cc9cde7aa5760</id>
<content type='text'>
</content>
</entry>
<entry>
<title>main: options-first CLI with --help, and wire up display/boot flags</title>
<updated>2026-07-16T22:27:46Z</updated>
<author>
<name>gbc dev</name>
<email>gbc@localhost</email>
</author>
<published>2026-07-16T22:27:46Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/commit/?id=6c906a750675910323710b293f939a5f26dadd58'/>
<id>urn:sha1:6c906a750675910323710b293f939a5f26dadd58</id>
<content type='text'>
- Rewrite argument handling: the ROM is now the final argument and options
  precede it (parsed in argv[1..argc-2] so optional-value flags never swallow
  the ROM). Add grouped --help/-h, unknown-option errors, and clear 'missing
  value'/'no ROM' diagnostics.
- Add --chrome, --palette/--green, and --bios flags; set the display/capture
  options before the --shot and recording paths so screenshots and recordings
  honor them. Make --shot dump the composited capture frame.
- gbctl: pass the ROM last when spawning the emulator.
- gitignore the (copyrighted) bios/ directory; document all new flags.
</content>
</entry>
<entry>
<title>serial: headless mode tying serial port to stdio for OS debugging</title>
<updated>2026-07-15T21:44:28Z</updated>
<author>
<name>gbc dev</name>
<email>gbc@localhost</email>
</author>
<published>2026-07-15T21:44:28Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/commit/?id=24a015ff047d4b7bb955ba4bc61d5793d7492878'/>
<id>urn:sha1:24a015ff047d4b7bb955ba4bc61d5793d7492878</id>
<content type='text'>
- --headless: no rendering/TUI; serial TX -&gt; stdout, RX &lt;- stdin (nonblocking)
- generalize serial: serial_out_fd/serial_in_fd on the GB; internal-clock
  transfer now shifts in a real RX byte (from stdin) instead of always 0xFF
- paced to native speed by default, --uncapped for turbo; pipes/scripts cleanly
- README: document headless serial console
</content>
</entry>
<entry>
<title>control: video frame capture + deterministic input-movie replay</title>
<updated>2026-07-15T14:53:28Z</updated>
<author>
<name>gbc dev</name>
<email>gbc@localhost</email>
</author>
<published>2026-07-15T14:53:28Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/commit/?id=95fa3f0095d6f383840992cab6833cac92493a60'/>
<id>urn:sha1:95fa3f0095d6f383840992cab6833cac92493a60</id>
<content type='text'>
Two socket features for building reproducible showcase clips:

- record start &lt;path&gt; [everyN] / record stop: append the RGB888 framebuffer of
  each produced frame to a flat 'GBCV' capture file (downsample with everyN).
  tools/gbgif.py turns it into a GIF (or PNG frames). Capture is decoupled from
  wall-clock/turbo/frameskip, so timing is always correct.

- input play &lt;path&gt; [reset] / input stop: drive the joypad from a synthesized
  TAS-style movie (text: '&lt;frames&gt; [buttons...]' per line), frame-locked so
  replay is deterministic. 'reset' does an exact power-on (preserve cart
  ROM+SRAM, zero all other state) so a movie replays byte-identically -- verified
  by hashing two runs. tools/gbmovie.py is a Python builder for movies.
</content>
</entry>
<entry>
<title>control: socket-based debug channel + gbctl CLI driver</title>
<updated>2026-07-14T21:26:49Z</updated>
<author>
<name>gbc dev</name>
<email>gbc@localhost</email>
</author>
<published>2026-07-14T21:26:49Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/commit/?id=c879adc43b91a53eb7e76f232a39abb56d8144c1'/>
<id>urn:sha1:c879adc43b91a53eb7e76f232a39abb56d8144c1</id>
<content type='text'>
Replace the input-only FIFO's limitations with a Unix-domain socket control
channel (--sock) that is a superset of the button vocabulary plus emulator
introspection: read/write bus memory, get/set CPU context, single-step, PC
breakpoints, value-change watchpoints, run/pause. Being a socket it replies to
each command and broadcasts async 'event stop ...' lines; a stored last-stop
record (stopinfo) lets per-request clients recover a missed event.

Add gbctl: a stdlib-python CLI that spawns a tmux pane running the emulator on
a ROM, auto-resolves the socket, and drives it with terse verbs (cpu/read/write/
reg/step/break/watch/continue/pause/press/hold/screen/stop). The FIFO stays as
legacy input-only.
</content>
</entry>
</feed>
