-
Notifications
You must be signed in to change notification settings - Fork 0
Roadmap
What we've shipped, what's next, and what we've ruled out. This page is the project's running ledger — when a candidate comes up, the answer is here.
Every shipped system belongs to the 8-bit microcomputing/console era — roughly 1975 to 1990. The cutoff is era, not strict CPU bit-width.
In: anything from the 8-bit era — Apple I/II, Atari 2600 / 400 / 800XL / 7800, BBC Micro / Master / Electron, Commodore PET / VIC-20 / MAX / 64 / 16 / Plus/4 / 128, MSX1 / MSX2, NES, Vectrex, ColecoVision, Intellivision, ZX81 / Spectrum, Amstrad CPC, Tandy CoCo, TI-99/4A.
Out: systems that defined the 16-bit GUI/console leap (Atari ST, Amiga, Macintosh, Archimedes, Sega Genesis, SNES, PC-Engine), and anything 32-bit+ (Saturn, N64, PlayStation, Neo Geo). The era rule is about the kind of system, not the calendar year — Genesis (1988) overlaps the calendar 8-bit era but represents the jump to 16-bit hardware and is out.
Intellivision (CP1610, 16-bit ALU) is the technical edge case the era framing handles cleanly: Mattel marketed it as "the first 16-bit console", but it's universally grouped with 8-bit-era consoles (1979 launch, Atari 2600 contemporary). In.
| Category | Platform | Year | Dir | Engine | Notes |
|---|---|---|---|---|---|
| Console | Atari 2600 | 1977 | javatari/ |
ppeccin/javatari.js | |
| Console | Magnavox Odyssey² | 1978 | odyssey2/ |
libretro-o2em → WASM + custom SDL2 frontend | EJS path dead; o2rom.bin BIOS bundled |
| Console | Intellivision | 1979 | intellivision/ |
jzIntv WASM (custom loader) | exec.bin + grom.bin BIOS bundled |
| Console | ColecoVision | 1982 | coleco/ |
EmulatorJS + gearcoleco | RetroPad → numpad keypad remap |
| Console | Vectrex | 1982 | jsvecx/ |
DrSnuggles/jsvecx | Mine Storm in BASIC slot |
| Console | NES | 1983 | jsnes/ |
EmulatorJS + FCEUmm libretro | dir name predates migration |
| Console | Atari 7800 | 1986 | js7800/ |
raz0red/JS7800 | |
| Apple | Apple I | 1976 | apple1/ |
scullin/apple1js | 10 tapes (Integer BASIC + 6502 asm) |
| Apple | Apple ][+ | 1977 | apple2/ |
whscullin/apple2js (webpack) | URL rewrite ?game= → ?disk=
|
| Acorn | BBC Micro | 1981 | jsbeeb/ |
mattgodbolt/jsbeeb | |
| Acorn | Acorn Electron | 1983 | electron/ |
dmcoles/elkjs | row-doubling display fix |
| Acorn | BBC Master 128 | 1986 | jsbeeb/ |
jsbeeb ?model=Master
|
shares build with BBC |
| Atari | Atari 400 | 1979 | atari800/ |
atari800 WASM (self-built) | ?machine=atari |
| Atari | Atari 800XL | 1983 | atari800/ |
atari800 WASM (self-built) | default; shares core |
| Commodore | PET | 1977 | pet/ |
EmulatorJS + VICE xpet | 3032 default, per-game 4032 override |
| Commodore | VIC-20 | 1980 | vic20/ |
EmulatorJS + VICE xvic | memory_expansions='all' |
| Commodore | MAX Machine | 1982 | max/ |
EmulatorJS + VICE x64 (Ultimax mode) | Japan-only |
| Commodore | C64 | 1982 | c64/ |
EmulatorJS + VICE x64 | |
| Commodore | C16 | 1984 | c16/ |
EmulatorJS + VICE xplus4 (c16pal mode) |
shares xplus4 core |
| Commodore | Plus/4 | 1984 | plus4/ |
EmulatorJS + VICE xplus4 | |
| Commodore | C128 | 1985 | c128/ |
EmulatorJS + VICE x128 (native mode) | per-game VICII/VDC; scaleY hack |
| MSX | MSX1 | 1983 | webmsx/ |
ppeccin/WebMSX | shared core, ?M=MSX1 flag |
| MSX | MSX2 | 1986 | webmsx/ |
ppeccin/WebMSX | shared core, default machine |
| Sinclair | ZX81 | 1981 | jtyone/ |
Simon Holdsworth/JtyOne | |
| Sinclair | ZX Spectrum | 1982 | jsspeccy/ |
gasman/JSSpeccy 3 | WASM Z80 |
| Amstrad | CPC | 1984 | amstradcpc/ |
floooh/chips-test tiny8bit | sokol_args URL params |
| Tandy | Color Computer (CoCo) | 1980 | xroar/ |
Ciaran Anscomb/XRoar | |
| TI | TI-99/4A | 1981 | js99er/ |
Rasmus-M/js99er (vanilla JS) |
.rpk carts |
Shared infrastructure:
-
_shared/— controls.css, frame.css, NumLock JS, VICE softkeys, gamedocs link JS -
_shared-ejs/— one EmulatorJS framework + 5 VICE cores + gearcoleco + FCEUmm cores (9 bundles share; ~25 MB saved vs per-bundle copies)
See Emulators for the per-platform integration stories.
- Sega Master System (multiple WASM/JS cores) — 1985, Z80
- Sega Game Gear (same cores as SMS) — 1990, Z80
- Atari Lynx (Handy.js / libretro handy) — 1989, 65C02
- Nintendo Game Boy / Color (many JS options) — 1989, Sharp LR35902 (Z80-derived)
Listed for clarity — these are the 16-bit/32-bit transition and beyond.
- NEC PC-Engine / TurboGrafx-16 — 16-bit-era console
- Nintendo SNES — 16-bit-era console
- Sega Saturn / Nintendo 64 / PlayStation / Neo Geo AES — 32-bit and beyond
- Sinclair QL (1984) — no turn-key bundle; sQLux build is ~4h project
-
Sinclair ZX80 (1980) — re-investigated 07/06/2026. ROMs OK. JtyOne ZX80 mode is broken (display-sync state machine never fires the keyboard scan). zame-dev's
js-zx8xworks correctly but ships without an SPDX licence header. Door stays open if either gets fixed. - Cambridge Z88 (1988) — OZvm is Java/C++ desktop only
- Sinclair NewBrain (1982) — MAME driver broken (VFD doesn't get data)
- Sinclair MK14 (1977) — MAME-only, very obscure (256-byte RAM kit)
- Microvision (1979) — split-CPU emulators don't pair with available ROMs
- Commodore CBM-II / B-series (1982-84) — VICE cores exist but the library is ~5 commercial games + business productivity. Not enough content for a 10-entry bundle.
- Acorn Atom — investigated, didn't meet quality bar.
-
Macintosh Plus (
macplus/) — removed 25/05/2026 -
Acorn Archimedes (
archimedes-live/) — removed 25/05/2026 -
Atari ST (
estyjs/) — removed 25/05/2026 -
Commodore Amiga 500 (
amiga/) — removed 25/05/2026 - Atari 5200 — removed from menu tree
-
Sega Genesis (
genesis/) — removed 05/06/2026; Motorola 68000 16-bit
-
Menu reformat sweep — ✅ done 05/06/2026. Every game menu is a 4-column
# Title (Year) CODElayout, year-sorted ascending, alphabetical within year. All 609 echo rows acrossfs.jsverify at exactly 45 chars. - Per-game gamedocs pages — ✅ done 09/06/2026. 281 pages across all 28 sub-systems.
-
Controls-link URL wiring — emulators that rewrite their URL on load (jtyone, amstradcpc, jsbeeb Master) stash
window._genxGameKeybefore the rewrite so the corner controls link can resolve the right gamedocs page. - C128 indie dates — 4 of 7 homebrews (Phazer, Rockfall 128, Wumpus 2.0, World at War) have no internal version stamp anywhere; fall back to zimmers.net file mtimes (one definitive, one fuzzy).
- MAX Multimax-extracted carts — 7 games extracted from the MultiMax EasyFlash compilation (CSDb release 210760). Remaining unknown banks (Sea Wolf, Le Mans, Avenger, etc.) lack identifiable strings; would need empirical VICE testing or menu-table decode to extract.
- PET: 3 games skipped — Microchess 2.0, 3D Star Trek, Cosmiads load at non-standard addresses VICE doesn't autostart. Recoverable with manual cleanup.
-
CRT 4:3 bezels — planned for every emulator page; staging at
emulators/_shared/bezels/. 8 of 9 still need source verification per ATTRIBUTION.md — integration blocker until resolved.