aboutsummaryrefslogtreecommitdiffstats
path: root/src/render.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* render: Game Boy chrome, LCD palette recolor, and frame capturegbc dev12 days1-39/+332
| | | | | | | | | | | | | - --chrome: draw a DMG-style 'sl0pboy' shell around the LCD in sixel mode, with a bitmap-font silk-screen (logo, labels), speaker grille, power LED, and buttons that light up while held. - LCD palette recolor (render_set_palette): remap the LCD to a 4-shade palette by luminance for the classic monochrome look ('dmg'/'green' pea green, 'pocket'/'gray'); applies to every render path. - Refactor the sixel encoder into generic build_palette_buf/encode_sixel_buf operating on any RGB888 buffer, shared by the bare LCD and the chrome canvas. - render_capture_size/frame: produce the exact displayed frame (recolor + chrome) as an RGB buffer, for screenshots and video recording.
* render: no status line in sixel mode (pure graphics output only)gbc dev13 days1-6/+2
| | | | | In --sixel mode the emulator drew a status line (title/skip/[f]ast/q:quit) under the image; drop it so sixel output is nothing but the game graphics.
* control: socket-based debug channel + gbctl CLI drivergbc dev14 days1-0/+135
| | | | | | | | | | | | | | 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.
* speed control: frame skipping to decouple terminal draw from emulationgbc dev2026-07-041-2/+27
| | | | | | | Emulation always runs at native rate (correct game speed); --frameskip N draws only 1 of every N+1 frames so a slow terminal no longer bottlenecks the loop. Adds --fps cap, --uncapped/--turbo, live [ ] and f keys, HUD readout, and an exit summary of emulated-vs-drawn fps. Replaces the confusing --render-fps.
* input: external control channel via FIFOgbc dev2026-07-041-22/+113
| | | | | | | Adds --fifo [path] opening a named pipe that accepts button commands from any process. Supports momentary taps (a, start, name:N), deterministic hold/release (+name / -name), and 'release'. Merges with keyboard input; held state carries true key-up semantics the terminal can't provide. GBC_INPUT_DEBUG traces state.
* renderer: inter-frame diffing to minimize terminal outputgbc dev2026-07-041-9/+51
| | | | | | | Only cells that changed since the previous frame are redrawn, using cursor positioning to skip unchanged runs. Static screens write nothing after the first frame (~108x reduction on acid2). SIGWINCH forces a full repaint. Verified pixel-exact against the framebuffer (11520/11520 cells, 0 mismatch).
* add status line HUD, README with architecture and test statusgbc dev2026-07-041-0/+3
|
* terminal renderer (truecolor half-block), input, screenshot modegbc dev2026-07-041-0/+112