CoOp:Anything
Search any game and see how much of it you can play with friends: every co-op mod, its stage, quality and community rating.
Play classic Sierra AGI & SCI0 adventure games in the browser (bring your own game files)
GamesGitHub @eduardosternOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Play classic Sierra adventure games (King's Quest, Space Quest, Police Quest...) in the browser. From-scratch TypeScript reimplementations of the AGI v2 and SCI0 interpreters.
No game data is included: load your own copy of the game files (or drop the original floppy images) on the page. Tested with Space Quest I (AGI 2.089 and 2.917), Space Quest II (AGI 2.936) and Space Quest III (SCI0 0.000.685).
QuestPort is licensed under GPL-3.0-or-later (see LICENSE). The SCI0 engine (src/sci/) closely follows
ScummVM's GPL-licensed SCI engine (algorithms and lookup tables such as picture brush patterns).
Sierra's game data is copyrighted and is not part of this project; neither are AI repaints made from it.
Not affiliated with Sierra or its current owners; game names are trademarks of their owners.
npm install
npm run dev # open the printed URL (e.g. http://localhost:5173)
Game files in public/games/sq1/ load automatically. Without them, the page asks you to pick or drop
files: either the extracted AGI files (LOGDIR, PICDIR, VIEWDIR, SNDDIR, VOL.*, OBJECT, WORDS.TOK)
or the original .ima floppy images, which are read directly.
Other AGI v2 games may work; pass ?version=2440 (hex interpreter version) if their scripts need
a newer opcode table. AGI v3 games (compressed resources, combined DIR file) are not supported yet.
| File | What it does |
|---|---|
src/resources.ts | Directory + VOL resource loading |
src/picture.ts | Vector picture renderer (visual + priority screens) |
src/view.ts | Sprite (view/loop/cel) decoder |
src/logic.ts | Logic scripts, opcode table, disassembler |
src/interpreter.ts | The VM: main cycle, motion, collision, all commands, save/restore |
src/words.ts | WORDS.TOK dictionary and text parser |
src/sound.ts | 3-voice + noise (PCjr/Tandy) sound renderer |
src/screen.ts | 320x200 compositor, text, message windows |
src/main.ts | Browser glue: canvas, keyboard, audio, file loading |
src/sci/)| File | What it does |
|---|---|
resource.ts | RESOURCE.MAP / RESOURCE.00n loading, LZW + Huffman decompression |
picture.ts, screen.ts | Vector pictures (visual/priority/control screens, EGA dithering), priority bands |
gfx.ts | Views, fonts, ports/windows, painting primitives |
vm.ts | Script VM: segments, objects/classes, bytecode, sends, save/restore of the heap |
kernel/core.ts | Lists, strings, math, time, misc kernel calls |
kernel/windows.ts, text.ts, controls.ts, menu.ts | Windows, text, dialogs, menu bar, status line |
kernel/animate.ts, movement.ts, transitions.ts | Pictures, cast animation, collision, movement, transitions |
kernel/input.ts, parser.ts | Events and the SCI0 text parser / Said matching |
kernel/sound.ts, sound.ts | kDoSound and the SCI0 sound renderer (AdLib FM / PCjr) |
kernel/files.ts | Virtual files and save games (localStorage) |
engine.ts | Wires everything together and runs the game loop |
npx tsx tools/pics.ts <outdir> [n...] # render pictures to PNG
npx tsx tools/views.ts <outdir> n... # render view sprite sheets
npx tsx tools/disasm.ts [n] # disassemble logic scripts
npx tsx tools/play.ts <outdir> steps... # headless play: w<cycles> t<text> k<key> s<shot>
npx tsx tools/scipics.ts <outdir> [n...] # render SCI pictures
npx tsx tools/sci-play.ts <outdir> steps... # headless SCI play: w<ms> k<key> t<text> c<x>,<y> s<shot>
npx tsx tools/parsertest.ts # SCI parser tests
Saves are stored in the browser's localStorage.
"Space Quest III — AI Images" shows the same game with repainted art:
tools/sci-ai-pics.ts) and sprites (tools/sci-ai-views.ts) are repainted with
xAI's image editor (key in .env.local as XAI_API_KEY) and stored in public/games/sq3/ai.
Mostly empty pictures use STRICT=1 so empty space stays empty.src/sci/ai-compose.ts takes room pixels from the repainted background and sprite pixels from the
repainted sprite sheet, so walking behind things and all game logic are unchanged.public/fonts/text.ttf, Source Sans 3, OFL) by src/sci/ai-text.ts.public/games/sq3/ai/index.json.AI=1 tsx tools/sci-play.ts ... also writes the blended 1280x800 frame for each screenshot.Live at https://questport.stern.workers.dev (Cloudflare Workers, npm run deploy). Players load their own game
files; nothing is uploaded anywhere.
AI art packs are published encrypted (tools/ai-pack.ts <game dir> writes packs/<id>/, which is not in git).
The key is derived from the original game files (src/ai-pack.ts), so a pack only opens for someone who loads
that exact game release. Available packs: Space Quest II v2.0F (AGI 2.936) and Space Quest III v1.018 (SCI0).