Skip to main content

Software licences: what the sold console may contain

The hardware design is ours. The firmware is not, for the most part: it is a fork of Retro-Go with emulator cores from many projects, each under its own licence. Some of those licences allow selling at no cost; others forbid any commercial use. The console cannot be sold with the firmware as it is today. This page lists, core by core, what can ship, what cannot, and how to replace each part that cannot, without paying licence fees.

Status (2026-10-16)

Audit of the licence files in the fork (retro-go master 7ef3b710 and the xtensa-68000-dynarec submodule). It is read from the licence texts, not a legal opinion: have it confirmed by a lawyer who knows open-source licences before the first sale. SNES, CPS1 and Neo Geo, the systems with the most work in them, are in the cannot ship list; the SNES already runs on its replacement (SNESticle, MIT), the launcher's default.

Rule 1: GPL code may be sold, and its source goes with it​

Retro-Go is GPL v2, and most cores are GPL too. The GPL costs nothing and allows selling, on these conditions:

  • every buyer receives the complete source of the firmware we ship (in the box, as a download link, or as a written offer valid for 3 years), with the build scripts, and may modify and redistribute it;
  • the licence texts and copyright notices ship with the product (manual or a "Licences" screen);
  • we add no terms that take those rights away (no "do not modify" clauses on GPL firmware).

Our repositories can stay private while we develop. What is released in a sold console must have its source published at the same time.

Our own apps. The MP3 player (media-go) and the e-book reader (ebook-go) are our code, but both are built with the retro-go library (set(COMPONENTS "main retro-go")), which is GPL. Linked that way, the shipped binaries are GPL too. To keep them closed they must be rebuilt on our own UI/system library with no GPL code in it. A separate closed program next to the GPL ones on the same flash is allowed (mere aggregation).

Can ship (no fee; source published)​

SystemCoreLicence
Launcher and shared codeRetro-GoGPL v2
NESnofrendoGPL v2
Game Boy / ColorgnuboyGPL v2
Master System / Game GearsmsplusGPL v2
PC Enginepce-goGPL v2
Mega DrivegwenesisAGPL v3 (same duty as GPL; also covers network use)
Game Boy AdvancegpSP + our Xtensa dynarec (gbsp-libretro, xjit)GPL v2
Atari 2600StellaGPL v2
Atari 5200Atari800GPL v2 or later
Atari 7800ProSystemGPL v2
Commodore 64Teensy64 + reSIDGPL v3 or later (makes retro-home GPL v3)
Virtual Boybeetle-vb (Mednafen)GPL v2
Neo Geo PocketRACEGPL v2
Atari LynxHandyzlib (acknowledgement in the documentation)
Doom, Quake, Duke Nukem 3D, OpenTyrianenginesGPL; only free game data ships (Freedoom; the OpenTyrian data under its own terms)
MP3 player, e-book readerours + minimp3 (CC0), Noto Serif (SIL OFL 1.1)GPL while linked with retro-go, see above

Cannot ship (licence forbids commercial use)​

ComponentSystemsWhat the licence saysWay out without fees
Snes9x 2005 (retro-core/components/snes9x)SNESSnes9x is non-commercial. The GPL v2 file in our copy comes from a port (ndssfc) whose authors could not relicense Snes9x code.Replaced by SNESticle (see below), the launcher's default; Snes9x is only a hidden fallback. The sale build ships SNESticle and no Snes9x.
MAME 0.37b5 (mame-go/components/mame2000)CPS1, Neo Geo (and every other mame-go driver)"The source code cannot be used in a commercial product without the written authorization of the authors."Neo Geo: Geolith (believed BSD; verify). CPS1: a new driver written from current MAME, relicensed GPL/BSD in 2016. Our speed work (bands, cover, flash ROM cache) is our code and moves over.
Musashi 3.1 (68000 CPU in mame-go; the reference of our 68000 dynarec)CPS1, Neo Geo"May be freely used for non-commercial purposes... commercial ventures must contact the author."Move to Musashi 4.x (MIT, verify). Small job.
fMSX 6.0 (fmsx/)MSXFree for non-commercial use; the author sells commercial licences.Drop MSX, or buy the licence.
Wolf4SDL / Wolfenstein 3D (wolf3d-go)Wolfenstein 3Did Software "Limited Use" licence.Drop.
SM64 / MK64 ports (sm64-go, mk64-go)Nintendo 64 gamesDecompiled Nintendo code.Drop, no way to ship.
Cannonball (cannonball/)OutRunNeeds Sega's ROMs; engine licence to verify.Drop.

SNES replacement: SNESticle​

snesticle-go (fork master, core in the private repo pjcau/snesticle-esp32) runs SNES games on a core that can be sold. It is the SNES tab's default and much faster than Snes9x (game-by-game table in emulators):

PartSourceLicence
65816 CPU, SPC700, S-DSP, PPUSNESticle (Icer Addis, released 2022)MIT
ESP32 port and speed work (RGB565 blender on core 1, idle-loop skip, ...)oursMIT
DSP-1 / DSP-1B (Super Mario Kart, Pilotwings)ours, written from public documentation (fullsnes, SnesLab); no Snes9x code, no Nintendo dataMIT
SuperFX / GSU (Star Fox, Yoshi's Island)ours, behaviour following aresMIT + ares ISC notice
SA-1, Cx4, S-DD1, SPC7110, OBC1, S-RTC, NEC DSP (DSP-2/3/4, ST010/011)ours, from ares and public documentationMIT + ares ISC notice

Rules kept for every chip: no Snes9x code (not even rewritten while reading it), no GPL code, no Nintendo firmware or data ROM in the firmware. Chips that only work with a Nintendo program or data ROM (DSP-2/3/4, ST010/011, the Cx4's internal data ROM) can only run with a file the user supplies, like the console BIOS files.

SNESticle's original DSP-1 file included Snes9x code (sn9x/dsp1emu.c, not part of the MIT release); it was removed, and the DSP-1 above replaces it.

To check before the first sale: retro-extra/components/arcade3d (no licence stated in the upstream README) and every piece of art imported into the launcher (system backgrounds, logos, themes).

No ROMs, no BIOS​

Nothing in the firmware, on a bundled card or in a download: no game ROMs, no console BIOS (C64 KERNAL/BASIC, Atari 5200, Neo Geo, GBA). The code already reads every BIOS from /retro-go/bios/ on the user's card and embeds none. The MAME licence adds one more rule: whoever sells or advertises media with illegal ROM images may not distribute MAME at all.

What this means for the plan​

StepWorkSize
1. Sale firmware builda build with only the "can ship" cores, licence screen, source archive per releasedays
2. Musashi 4swap the 68000 core and the dynarec's referencedays
3. Neo Geoport Geolith (or write our own driver) with our renderer workweeks
4. CPS1new driver from current MAME (GPL/BSD) with our band/cover rendererweeks
5. SNESSNESticle in place of Snes9x: done, every chip; drop Snes9x from the sale builddays
6. Closed apps (optional)MP3 and e-book rebuilt without the retro-go libraryweeks

Shipping the non-commercial cores as a separate "community firmware" download is a grey area: the seller still profits from it. It is not part of this plan.

Related: Launch compliance (CE, WEEE, batteries, trademark) and Business plan.