Skip to content

Roadmap

Retro Jack edited this page Jun 9, 2026 · 53 revisions

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.

The scope rule: 8-bit era only

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.


✅ Shipped (19 emulator engines, 28 sub-systems)

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.


⏳ Still to go

Plausible (8-bit era, browser emulator exists, would need an integration pass)

  • 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)

Out of scope under the 8-bit-era rule

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

❌ Rejected (don't re-investigate without new information)

Quality / hosting / library size

  • 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-zx8x works 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.

Out of scope (16-bit, removed)

  • 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

Maintenance threads (shipped systems, open follow-ups)

  • Menu reformat sweep — ✅ done 05/06/2026. Every game menu is a 4-column # Title (Year) CODE layout, year-sorted ascending, alphabetical within year. All 609 echo rows across fs.js verify 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._genxGameKey before 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.

Clone this wiki locally