A private, offline library for classic game systems, organised into three shelves — Videopac / Magnavox Odyssey², Commodore 64 and MS-DOS PC — each with its own box art, manuals, history and gameplay clips, and its games playable straight in the browser. One shelf is visible at a time, each with its own count.
(Previously "Videopac Odyssey Vault" — the folder keeps that name.)
Vault by @donmiguel2.0 · code by Claude
Watch the five-minute tour → Subtitled in English, Portuguese, Dutch, German and French.
This repository carries the Vault itself — the catalogue, the box art, the
translations — but no ROMs and no BIOS. Those aren't ours to distribute;
you supply your own. The same goes for the per-title manual scans in
manuals/ (a handful of extras ship in extras/ — see Use it responsibly).
They belong in three folders that arrive empty:
emulator/bios/ the console BIOS (g7400.bin)
emulator/roms/ the cartridge dumps
manuals/ manual page scans, one folder per title
If you were given a videopac-odyssey-dumps.zip, it already has those three
paths inside it, so extract it at the top level of this folder and
everything lands in place.
Windows: watch the destination box. "Extract All" defaults to creating a new subfolder named after the zip, which buries
emulator\andmanuals\one level too deep. Delete the trailing\videopac-odyssey-dumpsfrom the destination path before clicking Extract. On a Mac, double-clicking the zip does the same thing — unzip it, then move the three folders up yourself.
If the folders end up nested, you'll know: the Vault loads, the covers show, and every game fails to start.
Unzip the download first — the launcher has to run from inside the extracted folder, not from the zip itself. Then:
- Mac: double-click
Retro Vault.app— it has its own icon, so you can drag it to your Desktop, your Applications folder, or the Dock and launch it from there any time. Prefer a plain script instead?Start Retro Vault.commanddoes exactly the same thing, no icon. - Windows: double-click
Start Retro Vault.bat.
Either way it checks whether Python is installed (and installs it if not — official python.org build, or Homebrew/winget if you already have those), starts the Vault's local server, and opens http://localhost:8000/ in your browser (Chrome if you have it). Leave the window it opens in the background while you play; close it or press Control+C to stop. Run it again any time — if the Vault is already running it just opens the browser, and if port 8000 is busy it picks the next free one.
Two one-time prompts you may see:
- Mac: "cannot be opened because it is from an unidentified developer" —
right-click
Retro Vault.app(orStart Retro Vault.command) → Open → Open. macOS remembers after that. - Windows: "Windows protected your PC" — click More info → Run anyway. A Windows Firewall prompt for Python may follow; Cancel is fine, the Vault only talks to your own browser.
The launcher also works on its own: copy just Retro Vault.app (or
Start Retro Vault.command/.bat) to a friend's machine, double-click it, and
it downloads the latest release into RetroVault in their home folder and
starts it from there.
Prefer to do it by hand? Read on.
The Vault needs it to run its little local server. Mac: open Terminal and
type xcode-select --install. Windows: download it from
python.org. If the installer offers
"Add python.exe to PATH", tick it — without it the terminal won't find
Python.
Firefox runs the Vault fine, but puts an extra click between you and the game. Avoid Safari: it wipes stored data for a site you haven't visited in a week, and that's where your favourites and save games live.
Mac: Finder → find VIDEOPAC ODYSSEY VAULT → right-click it → New
Terminal at Folder.
Windows: File Explorer → open VIDEOPAC ODYSSEY VAULT → click the
address bar → type cmd → Enter.
On a Mac:
python3 serve.py
On Windows:
python serve.py
It will look frozen. That's correct — it's waiting for the browser. Leave the window open while you play.
Go to http://localhost:8000/ and click a game.
Done playing? Click the terminal window and press Control + C.
| What you see | What to do |
|---|---|
command not found: python3 |
Python isn't installed. Mac: type xcode-select --install and press Return. Windows: install from python.org and be sure to tick "Add Python to PATH". |
Address already in use |
A server is already running. Use the tab you already have open, or pick another port: python3 serve.py 8080, then open http://localhost:8080/. |
No such file or directory |
The terminal isn't pointing at the right folder. Redo Step 1 and make sure you pick the folder that contains serve.py. |
| The page won't load | Check the terminal window is still open — it's easy to close it by accident. |
| A change you made doesn't show up | Refresh the page. If it still doesn't, you're not using serve.py (see below). |
The console had two joysticks and an alphanumeric keyboard, and every game picks and chooses between them. Each game's page lists its own controls; the common ones are:
| Key | What it does |
|---|---|
0–9 |
Pick a game variant on the SELECT GAME screen |
Arrow keys + G |
Joystick 1 — move and fire |
W A S D + Q |
Joystick 2 — move and fire |
A–Z, Space, Enter |
The console's own keyboard |
F5 |
The console's RESET key (also in the emulator's More menu) |
| Right Shift | Show/hide a picture of the console keyboard |
Two things that catch everyone out:
- Arrow keys do nothing in some games. Several titles only listen to the
second joystick, even in one-player mode — Race and Flipper among them. Use
W A S DandQinstead. - Some carts hide modes on the keyboard. K.C. Munchkin's create-a-maze
editor is one: press
Pat the SELECT GAME screen. And noteF5is the console's RESET key, but macOS claims it for Dictation — on a Mac use the emulator's More › Console RESET key instead.
index.html |
The library — the page you actually open |
game.html |
A single game's page: art, manual, history, video, controls |
serve.py |
The little local server from Step 2 |
games.js |
The catalogue: every cartridge, its platform and its ROM file |
gamepages.js |
Per-game manual, history, video and control style |
packaging.js |
Which carts came with a board, overlay or workbook in the box |
extras.js |
Your own scans (see below) |
covers/ |
Box art, one image per game id |
manuals/ |
Manual page scans from the archive.org Videopac collection |
extras/ |
Your own scans of manuals, maps and boards |
emulator/ |
webretro + the O2EM/VICE cores and js-dos (DOSBox), the BIOS, and the ROMs |
Drop a PDF or image into extras/, then add a line to extras.js:
"vp_41": { "map": "conquest-map.jpg" }It'll appear as an Extras section on that game's page. The game ids are in
games.js.
The library now has a Commodore 64 shelf — the C64 chip in the filter bar,
28 curated classics to start with, playable through the VICE core (in
emulator/cores/). VICE brings its own KERNAL, BASIC and CHARGEN, so unlike
the Videopac shelf there is no BIOS to supply — a game needs only its dump.
Drop the file named on the game's page (e.g. Boulder Dash.d64) into
emulator/roms/ and START appears on that page by itself; until then the page
says exactly which file it is waiting for.
The placeholder covers in covers/c64_*.png are generated art, not scans —
replace any of them with your own box or cassette-inlay scans under the same
filename (then bump COVER_V, see below). Or let the fetcher find them for you: python3 tools/fetch_c64_assets.py --covers pulls box art from Wikipedia, --roms pulls disk images from the c64.com set on archive.org, and --manuals pulls manual PDFs. Run python3 tools/fetch_c64_assets.py with no arguments for the options. The files it fetches stay out of git.
To add more C64 titles, give them an id starting with
c64_, platform "C64" and category "Commodore 64" in games.js, plus a
matching entry in genres.js and (optionally) a history in gamepages.js.
The library also has an MS-DOS shelf — the PC chip in the filter bar,
playable through js-dos (a self-hosted DOSBox, in
emulator/dos/), not the RetroArch/webretro cores the other two shelves use.
Each game is a single zip in emulator/roms/. Drop the file named on the
game's page into emulator/roms/ and START appears by itself, exactly like
the C64 shelf. A plain zip of the game's DOS files is enough — the kind
you download from the Internet Archive's MS-DOS collection, top-level folder
and all: emulator/dos.html looks inside before starting, unpacks it in the
browser, strips that folder, and adds the DOSBox config js-dos needs with
the launch command from emulator/dos-launch.js (or a sensible guess: the
Sierra loader, an .EXE matching the zip's name, the only executable there).
A ready-made js-dos bundle (files plus .jsdos/dosbox.conf) still works
unchanged and is what the Vault's own file host serves.
To add another DOS title yourself: zip the game's files, drop the zip into
emulator/roms/, and if the game doesn't start with the right command add a
line for it in emulator/dos-launch.js. Then give it an id starting with pc_, platform
"PC" and category "MS-DOS" in games.js, plus a matching entry in
genres.js and (optionally) a history in gamepages.js.
Doom ships as id Software's free 1993 shareware episode (DOOM1.WAD) — if you
own a full copy, its DOOM.WAD can replace the shareware WAD in a rebuilt
DOOM.zip to unlock all three episodes. Leisure Suit Larry, Wolfenstein 3D,
Commander Keen and Prince of Persia ship as-is; see tools/ notes for where
each came from.
Save the image as covers/<game id>.jpg, then open app.js and bump the
COVER_V number near the top by one. That last step matters: without it your
browser keeps showing the blank it cached before the file existed.
This is a personal archive for cartridges you own. No ROMs and no BIOS images are distributed with the project — you supply your own dumps.
A small number of scanned manuals, maps and keyboard overlays for
long-out-of-print Videopac titles do ship in extras/, on the same
abandonware footing this project applies to the C64 and PC shelves. The
per-title manuals/ collection is not distributed — you add those scans
yourself, as with the ROMs. If you hold rights to anything in
extras/ and would rather it were not here, open an issue on the official
repository and it will be taken down.
Emulation is the open-source O2EM and VICE libretro cores running in webretro, and DOSBox running in js-dos for the PC shelf. Manual scans come from the Internet Archive's Videopac/Odyssey² manuals collection. Not affiliated with Philips, Magnavox, Commodore, id Software, Sierra or Broderbund.
Retro Vault includes Cloudflare Web Analytics, which counts page views so I can see roughly how many people use the Vault. It is deliberately the least-invasive option available:
- No cookies and no browser storage used for tracking.
- No personal data, no IP logging, no device fingerprinting.
- No cross-site tracking and no advertising network involved.
- It never runs from an offline (
file://) copy.
Your game files, saves, favourites and settings never leave your machine — they are not uploaded anywhere, and nothing about which games you own or play is transmitted.
To opt out completely, open your browser's developer console (F12) on the Vault page and run:
localStorage.setItem('rv-no-analytics', '1')That setting is permanent for that browser. Alternatively, delete the
<script> block marked "anonymous usage counting" from index.html and
game.html — the Vault works identically without it.
Retro Vault is free. It always will be. But it isn't open source in the usual sense — it's released under the Retro Vault License, which in everyday terms comes down to this:
You may:
- Download the Vault and run it on anything you like, at no cost.
- Add your own game files — that's the whole idea. The Vault ships with no ROMs, no BIOS files, and no manuals; you bring your own dumps of the games you own.
- Modify it for yourself: reskin it, translate it, rearrange the shelves, hack on it to your heart's content — privately.
- Keep backups, and tell everyone about it (please do). Link to this repository or to the official website wherever you like.
You may not:
- Put the Vault — or a modified version of it — online anywhere else. No mirrors, no rehosts, no "inspired by" clones built from this code, no app store uploads, no bundles.
- Sell it, charge for access to it, or build a paid product on top of it.
- Use the Retro Vault name or look for a derivative project.
The fine print that matters:
- The emulator cores (VICE, O2EM, DOSBox) are separate projects with their own licenses (GPL); those licenses fully apply to those files and nothing here overrides them.
- Forking on GitHub itself is fine — that's how GitHub works. Deploying that fork anywhere is not.
- Want to do something the license doesn't allow — a museum installation, a mirror, a translation hosted elsewhere, a commercial idea? Just ask — via the contact address on the official website, or by opening an issue here. The answer is usually yes; the license exists so that the asking happens.
Why this license? The Vault is an archive and a labour of love. Keeping one official home for it means fixes, new games, cheats, and history write-ups reach everyone — instead of scattering across half-maintained copies. If you'd like to contribute, do it here, where everyone benefits.
Vault by @donmiguel2.0 · code by Claude