Skip to content

SadConsole app

Cross-platform desktop app written with SadConsole terminal/ascii/console/game engine.

SadConsole native app, C64 Basic SadConsole native app, C64 Monitor

Technologies:

Installation

Manual download, see section in installation.md

Features

System: C64

  • A directory containing the C64 ROM files (Kernal, Basic, Chargen) is supplied by the user. When no directory override is set, the default is the shared user content directory ~/Documents/Highbyte/DotNet6502/roms/C64 (or the Windows Documents equivalent). The directory can be changed in the UI; user changes are saved to this host's appsettings.user.json under the OS local application data directory. An auto-download option also exists (license required).

  • Renderer provider Video commands -> target Skia commands

    • Character mode (normal).
    • Only video mode that works in C64 character mode (not multicolor) with built-in characters set from ROM is supported.
  • Input using SadConsole (MonoGame). Letters, digits and navigation keys work, but punctuation on non-US keyboard layouts is unreliable — MonoGame's Keys enum is layout-dependent and the C64 KeyboardLayout config setting has no effect here. Prefer the Avalonia, SilkNet or Blazor WASM hosts for non-US keyboards. See SadConsole troubleshooting — non-US keyboard layouts and Systems / C64 / Keyboard mapping.

  • Audio via NAudio. Defaults to the sample-based SID provider; switch to the command-stream provider in the C64 config dialog if you need lower CPU. The SID emulation mode (Auto / Fast) is selectable in the same dialog.

System: Generic computer

TODO

Monitor

Press button or toggle with F12.

Stats

Press button or toggle with F11.

How to run locally for development

For development system requirements, see details under Development.

Prerequisites, compatibility, and troubleshooting

See SadConsole troubleshooting.

Visual Studio 2026 or 2022 (Windows)

Open solution dotnet-6502.slnx. Set project Highbyte.DotNet6502.App.SadConsole as startup, and start with F5.

VSCode

TODO