Overview of host apps¶
The emulator runs in several host apps. Some run natively on the desktop; some run entirely in the browser via WebAssembly (no install, just open the URL). Avalonia does both — the Avalonia Browser and Desktop apps share almost all code, including the UI, so they are documented together as one app with two runtimes.
| App | Runtime | UI / rendering | Audio | Use case |
|---|---|---|---|---|
| Avalonia | Browser + Desktop | Avalonia UI (Skia-based) | NAudio (OpenAL on desktop, WebAudio interop in the browser). C64 sample-based (default) and command-stream providers. | Default app; most features (scripting, debugger, remote control on desktop; URL automation in the browser). |
| Blazor WebAssembly | Browser | Blazor WebAssembly + Highbyte.DotNet6502.Impl.Skia (SkiaSharp on canvas) |
Highbyte.DotNet6502.Impl.AspNet (WebAudio JS interop). C64 command-stream provider only. |
SkiaSharp-rendered browser alternative. |
| SadConsole | Desktop | SadConsole (terminal/ASCII engine) | NAudio + OpenAL. | Console-style retro UI. |
| SilkNetNative | Desktop | Silk.NET + ImGui + OpenGL/SkiaSharp | NAudio + OpenAL. | OpenGL/shader rendering paths, incl. a custom GPU-packet C64 renderer. |
| Terminal (TUI) | Desktop / CLI | Terminal.Gui v2 — renders the emulated text-mode screen as colored Unicode cells in a real terminal (works over SSH, in tmux). | none | Interactive emulator inside a real terminal. C64, VIC-20, Apple II Plus, and Oric Atmos (text mode); no audio. |
| Console Monitor | Desktop | Plain .NET console | none | Stand-alone 6502 machine code monitor; no system emulation UI. |
| Headless | Desktop / CLI | none | none | Automation, scripting, CI workflows. Driven entirely by CLI args and Lua. |
Avalonia: one app, two runtimes¶
The Avalonia Browser and Desktop apps share the same emulator core and almost all UI code, so the same UI is validated on both targets. Their feature documentation is shared on the per-system pages for C64, VIC-20, Apple II Plus, Oric Atmos, and Generic, with the few Browser-vs-Desktop differences called out inline. The Blazor app predates the Avalonia browser target and remains as the SkiaSharp-rendered alternative.
Installation¶
Pre-built binaries for the desktop apps are available via Homebrew, Scoop, or manual download. See Installation (covers Avalonia Desktop, Terminal (TUI), and Headless). The browser apps need no install — just open the live version.
For automation and scripting features available across these apps, see Tools.
Platform support¶
See per-app troubleshooting pages for platform-specific notes:
- Avalonia Desktop troubleshooting — Windows / macOS / Linux all working (Linux ARM64 needs a freetype workaround).
- SilkNetNative troubleshooting — requires OpenGL; ARM64 Linux/Windows not currently working.
- SadConsole troubleshooting — ARM64 Linux/Windows not currently working.
- Terminal (TUI) — cross-platform; needs a terminal with Unicode and 24-bit ("true color") support. Runs over SSH and in
tmux/screen.
Limitations specific to browser runtimes¶
- Lua TCP client (
tcpglobal) is unavailable —System.Net.Sockets.TcpClientis not supported in WebAssembly. - Lua filesystem access (
file/emu.load) is sandboxed; the key/valuestorefalls back tolocalStorage. - No CLI arguments, no VS Code debug adapter, no remote control endpoint — those are desktop-only features. The Avalonia Browser app does support URL query parameters for automated startup and script injection; see Avalonia Browser app.
For general project limitations, see Limitations.