<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sl0pboy.git/gbctl, branch master</title>
<subtitle>sl0pboy - a Game Boy Color emulator (companion to the gbos OS)</subtitle>
<id>https://git.sl0p.foo/sl0pboy.git/atom/gbctl?h=master</id>
<link rel='self' href='https://git.sl0p.foo/sl0pboy.git/atom/gbctl?h=master'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/'/>
<updated>2026-07-16T23:08:48Z</updated>
<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>gbctl: 'hud' kills any existing HUD pane before spawning (no double-HUD)</title>
<updated>2026-07-15T08:10:16Z</updated>
<author>
<name>gbc dev</name>
<email>gbc@localhost</email>
</author>
<published>2026-07-15T08:10:16Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/commit/?id=d52d92092d98ed2d6c48e6433cacb899582f617e'/>
<id>urn:sha1:d52d92092d98ed2d6c48e6433cacb899582f617e</id>
<content type='text'>
gbctl hud now scans tmux for panes started with gbhud.py and kills them before
spawning, so there's never more than one HUD (fixes the double-spawn flicker).
Added 'gbctl hud --kill' to just tear the HUD down.
</content>
</entry>
<entry>
<title>tools: live debug HUD (gbhud.py) + 'gbctl hud'</title>
<updated>2026-07-14T23:32:57Z</updated>
<author>
<name>gbc dev</name>
<email>gbc@localhost</email>
</author>
<published>2026-07-14T23:32:57Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0pboy.git/commit/?id=f36200458ef8d4c698c41c3543b51f3235a25d19'/>
<id>urn:sha1:f36200458ef8d4c698c41c3543b51f3235a25d19</id>
<content type='text'>
Reads WRAM over the control socket, resolves addresses from pokeyellow.sym, and
pretty-prints game state (location, player pos/facing, movement+collision debug,
player name/money/badges, party nicknames/levels/HP bars) refreshing ~5Hz.
'gbctl hud' spawns it in a tmux split bound to the live instance.
</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>
