Demo
Features
- 24-bit halfblock renderer
Two NES pixels per terminal cell, full color, diff redraw. - Adaptive sizing
Scales to fit any terminal ≥ 64×33 while preserving NES aspect. - Headless determinism
--headless --frames=Nfor CI / regression checks. - Mednafen-style keymap
Z/X for B/A, arrows for D-pad, Enter for Start. - Pure Rust workspace
Four small crates,tetanes-corebackend, nounsafe. - Permissive license
MIT OR Apache-2.0, your pick.
Install & Run
cargo install --path crates/glyph8-cli
# Or run from the workspace without installing:
cargo run -p glyph8-cli -- path/to/your.nes
Quick start
glyph8 tests/roms/nestest.nes # bundled CPU validation ROM
glyph8 tests/roms/boing.nes # bundled CC BY 4.0 demo (Brad Smith)
glyph8 path/to/your.nes # any standard iNES file
glyph8 --headless --frames=60 your.nes # CI / determinism check
Controls
| Key | NES |
|---|---|
| ↑ ↓ ← → | D-pad |
| Z | B |
| X | A |
| Enter | Start |
| Tab | Select (beta — RightShift in 1.C) |
| R | Reset |
| Esc / Ctrl+C | Quit |
Roadmap
- 1.A CPU/PPU core via
tetanes-core, halfblock encoder. - 1.B Adaptive halfblock renderer, interactive runloop, status line. (current)
- 1.C Kitty keyboard protocol — real key-release, RightShift Select.
- 1.D Audio output via
cpal. - 1.E Per-pixel braille + ASCII renderer modes.
- 1.F ratatui status bar + pause modal.
Status & limitations
- No audio yet (1.D).
- No key-release events without the Kitty keyboard protocol — held keys read as repeated taps. Stage 1.C fixes this.
- Halfblock-only renderer; per-pixel braille / ASCII modes come in 1.E.
- Plain-text status line; ratatui status bar arrives in 1.F.
- Commercial ROMs not bundled. Bring your own legally-acquired ROM.
License & credits
Dual-licensed under MIT or Apache-2.0, at your option. See LICENSE-MIT and LICENSE-APACHE.
Bundled ROMs:
nestest.nes— public domain CPU validation ROM by kevtris.boing.nes— © Brad Smith, distributed under CC BY 4.0.