A self-contained Coleco ADAM (and ColecoVision) with built-in
FujiNet, for users and developers who want the
whole experience in one app: the adamcore emulator, the FujiNet-PC ADAM
firmware running in-process (joined over AdamNet Bus-over-IP on loopback),
the FujiNet web configuration UI, and a full native debugger.
The desktop sibling of the Android app (fujinet-go-adam). Every target is a native frontend built from one shared core:
| Frontend | Toolkit | Binary | Status |
|---|---|---|---|
| GNOME | GTK4 + libadwaita (+ WebKitGTK) | fujinet-go-adam-gnome |
complete |
| KDE | Qt6 Widgets (+ QtWebEngine) | fujinet-go-adam-kde |
complete |
| macOS | AppKit (+ WKWebView) | FujiNet Go Adam.app |
complete (incl. debugger + bundled FujiNet) |
| Windows | Win32 (GDI + DwmFlush) | fujinet-go-adam-windows.exe |
app complete; debugger + FujiNet DLL pending; CI-built, needs Windows testers |
The maintainer develops on Linux without Mac or Windows hardware: those builds are compiled and tested on CI's macOS and Windows runners (each uploads a ready-to-run artifact), and reports from real users on those platforms are very welcome.
- ADAM / ColecoVision emulation (adamcore, clean-room GPLv3) at 59.922 Hz, phase-locked to your display's vsync whenever a ~60 Hz frame clock is available, wall-clock paced otherwise.
- The main view scales with correct aspect ratio (square-pixel 256:212, TV 4:3, or integer scaling) in tiling and floating window managers alike.
- In-process FujiNet: disk/DDP mounting, TNFS hosts, and network config
through the embedded FujiNet web UI (
FujiNet ▸ Configuration), plus a live console-log window. - Automatic gamepad support with hotplug (SDL3; A/X = left fire,
B/Y = right fire, left stick or d-pad).
Ctrl+digitpresses the game controller's keypad (game select on cartridges and tape games). - Import
.dsk/.ddpimages into the FujiNet SD folder; load.rom/.col/.bincartridges (boots in ColecoVision mode). - Shared settings: palette, expansion module, joystick mode, aspect mode…
are stored once (
~/.config/fujinet-go-adam/settings.ini) and shared by both frontends. - No on-screen input panels appear unless you ask for them.
Breakpoints, pause/step into/over/out, run-to, instruction history
(trace), a Z80 disassembler annotated with EOS and OS7 symbols
(generated from Richard F. Drushel's EOS-5 disassembly, the eoslib
jump-table names, and the os7lib listing — see tools/symbols/), memory
and register editing while paused, and live VDP views: nametable, pattern
banks, sprites (with SAT decode), and palette.
Keys: F5 pause/continue · F7 step into · F8 step over ·
Shift+F8 step out · click a disassembly line to toggle a breakpoint.
ADAM_OPEN_DEBUGGER=1 opens the debugger at launch.
Dependencies: CMake ≥ 3.20, a C/C++17 toolchain, SDL3, and per frontend:
GTK4 ≥ 4.10 + libadwaita ≥ 1.4 (+ webkitgtk-6.0, optional), or Qt6 ≥ 6.4
Widgets/OpenGLWidgets (+ WebEngine, optional). Frontends are
found-or-skipped; -DFRONTEND=gnome|kde|all selects explicitly and
-DWITH_WEBVIEW=OFF swaps the embedded web UI for the system browser.
-
System ROMs: bundled in
tools/adamcore/roms/(public domain; see COMPLIANCE.md) and embedded into the binaries at build time. -
adamcore sources: staged automatically at configure time from
~/Workspace/adamcore(override withADAMCORE_SRC=…). -
FujiNet runtime (optional but the point of the app):
./tools/fujinet/build-fujinet-desktop.shbuildslibfujinet.soand the runtime tree from a local fujinet-pc-adam checkout (FUJINET_SRC=…to override) intotools/fujinet/work/out/. -
Build and test:
cmake -B build-all -G Ninja cmake --build build-all ctest --test-dir build-all ./build-all/frontends/gnome/fujinet-go-adam-gnome # or …-kde
On first start the app provisions ~/.local/share/fujinet-go-adam/fujinet
(fnconfig.ini, data/, SD/) from the build output or the installed
share directory, and finds libfujinet.so via $FUJINET_LIB, the install
libdir, or the dev build output.
Select the frontend at configure time and install (build the FujiNet runtime first so it gets installed alongside):
cmake -B build-gnome -G Ninja -DFRONTEND=gnome # or kde, or all
cmake --build build-gnome
sudo cmake --install build-gnomeThis installs the binary, desktop entry, icon, and the FujiNet runtime
(libfujinet.so into <prefix>/lib/fujinet-go-adam, the pristine
runtime tree into <prefix>/share/fujinet-go-adam/fujinet). For a
sudo-free user install add -DCMAKE_INSTALL_PREFIX=$HOME/.local at
configure time (the FujiNet search paths bake in the prefix, so choose
it before building). Uninstall with
xargs rm < build-gnome/install_manifest.txt. GNOME and KDE installs
coexist: they share one settings store and FujiNet runtime.
Useful environment switches: ADAM_PACE_LOG=1 (per-second frame pacing
diagnostics), FUJINET_QUIET_BLOCKS=1 (suppress per-block disk log
lines), FUJINET_WEBUI_BIND=addr:port (web UI bind, default
127.0.0.1:65214), ADAM_OPEN_DEBUGGER=1,
ADAM_DEBUGGER_TAB=vdp|trace (debugger start tab).
brew install cmake ninja sdl3
git clone https://github.com/tschak909/adamcore.git ~/Workspace/adamcore
cmake -B build -G Ninja && cmake --build build
open "build/frontends/macos/FujiNet Go Adam.app"Or skip building: every CI run uploads a ready-to-run
FujiNet-Go-Adam-macos app-bundle artifact with SDL statically linked
(no Homebrew needed to run it). It is unsigned: unzip, then
right-click ▸ Open the first time to get past Gatekeeper.
Build in an MSYS2 UCRT64 shell (native Win32
frontend; SDL3 and the MinGW runtime are linked statically for a
dependency-free .exe):
pacman -S --needed git mingw-w64-ucrt-x86_64-{gcc,cmake,ninja,python,SDL3}
git clone https://github.com/tschak909/adamcore.git ~/Workspace/adamcore
cmake -B build -G Ninja && cmake --build build
./build/frontends/windows/fujinet-go-adam-windows.exeEvery CI run also uploads a ready-to-run FujiNet-Go-Adam-windows
artifact. FujiNet itself (the fujinet.dll runtime) and the native
debugger window are not wired up on Windows yet, so the app currently
boots and runs the machine standalone; the display, input, gamepads,
media import, and menus are all in place.
(ADAMCORE_SRC=/path/to/adamcore overrides the default checkout
location.) The FujiNet runtime build for macOS (libfujinet.dylib) is not
scripted yet; the app runs without it, minus the FujiNet drive.
packaging/flatpak/online.fujinet.go.adam.gnome.yml builds the GNOME app
from the local tree (stage adamcore, drop in ROMs, and build the FujiNet
runtime first — see the manifest's header comments):
flatpak-builder --user --install --force-clean build-flatpak \
packaging/flatpak/online.fujinet.go.adam.gnome.ymlcore/ libadamsession: session, audio/gamepad (SDL3),
FujiNet runtime control, settings, debugger engine
core/adamcore-generated/ staged adamcore sources (git-ignored)
frontends/gnome/ GTK4/libadwaita app
frontends/kde/ Qt6 app
tools/adamcore/ staging + ROM embedding
tools/fujinet/ libfujinet.so build (desktop entry wrapper, patches)
tools/symbols/ EOS/OS7 debug-symbol extraction
GPL-3.0-or-later (see LICENSE). Third-party provenance and the ROM policy are documented in COMPLIANCE.md.