Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
翻譯準備中
在瀏覽器中重製 1985 年 Commodore 64 GameMaker。載入舊磁碟,製作新遊戲,編輯精靈與場景,將結果以連結或自包含的 HTML 檔案分享。
AI 翻譯
A browser recreation of the 1985 Commodore 64 GameMaker. Load old disks, make new games, edit sprites and scenes, share the result as a link or a self-contained HTML file.
遊戲JavaScript · HTMLGitHub @needlestack上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證一個使用 JavaScript 重製的經典 C64 GameMaker
AI 翻譯
A JavaScript recreation of the classic C64 GameMaker
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
gmc64 is a JavaScript reimplementation of Garry Kitchen’s GameMaker for the Commodore 64. This project documents the graphic and sound formats, virtual machine, instruction set and runtime behavior, and includes a browser-based version that works with original GameMaker projects.
Intro Demo
Sprite Maker
Scene Maker
Sound Maker
Music Maker
Program Editor
You probably remember the fun of animating sprites pixel by pixel, drawing
background scenes, coding up little games and demos, tweaking SID sounds, and
writing music.檢視完整 README ↗gmc64 is a JavaScript reimplementation of Garry Kitchen’s GameMaker for the Commodore 64. This project documents the graphic and sound formats, virtual machine, instruction set and runtime behavior, and includes a browser-based version that works with original GameMaker projects.
You probably remember the fun of animating sprites pixel by pixel, drawing background scenes, coding up little games and demos, tweaking SID sounds, and writing music.
If you tried to relive that fun on a C64 emulator, you probably noticed the joystick based UI on the original is a tough sell today, and the slow disk operations are a drag.
gmc64 solves this. It's a fully modern JavaScript recreation of GameMaker with modern convenience: use your mouse or trackpad, instantly preview, load, and save files, copy, paste, undo, and more. Import and export GIF, PNG, and MIDI files.
It's not an emulator, it's a recreation, with the stumbling blocks gone.
Do you have your original work on a disk? gmc64 reads .d64 disk images and all
GameMaker file formats. Drag and drop a disk or use the built-in file browser.
Then you can open the editor, add a sprite, change the music, and save it back to the disk image. You can even export your creations as a single self-contained HTML file that you can post online.
gmc64 can save files back to .d64 images as well, and you can even import them
back to the original GameMaker.
GameMaker was a game-creation tool for the Commodore 64 created by Garry Kitchen and published by Activision in 1985. It let users build real, runnable C64 games without learning assembly or having to hand code graphics and sounds. An early graphical IDE, you drew sprites and backgrounds, composed music, recorded sound effects, and wrote game logic from a list of simple instructions.
sprite 1 is player
sprite 1 x position = 160
sprite 1 y position = 100
if joystick 1 is left then
sprite 1 direction = left
endif
Many people who grew up to be game developers got their start here. It's been largely inaccessible in the modern age, and even through emulation the usability suffers from the limitations of the original C64.
gmc64 brings it back. The same sprites, same instructions, same sounds, all instantly in your browser.
gmc64 doesn't just open old files. It implements the same formats: /PRG,
/SPR, /PIC, /SND, and /SNG — and they round-trip cleanly in both
directions.
A game built here saves to a real disk image that loads on an actual Commodore 64 running the original 1985 GameMaker disk. Anything authored on that hardware loads here without translation. New creations can ship to a 1541. Old creations can ship to the web.
Click any of the image links at the top of this page to dive in.
Then:
disks/gmc64-demo.d64 ships with the project and
includes runnable programs and editable sprites, scenes, sounds, and songs.d64 into any gmc64 tool - editor, sprite-maker, scene-maker,
sound-maker, and music-maker will all open a pop-up file picker..d64 - you can point to an online d64 as
well: program-editor.html?disk=https://your-host/game.d64 opens the same file pickerWhen your game is ready, hit Export Game to HTML to get a single HTML file of your creation.
Every editor takes URL parameters, so you can hand someone a direct link to a
specific program or drop the player into a page you're building. And every
editor accepts a .d64 dropped onto its window — the file picker will open
filtered to that tool's file type (.PRG in the editor, .SPR in
sprite-maker, etc.).
play.html) — chrome-free, iframe-friendly| Param | Purpose |
|---|---|
disk | .d64 URL, or the magic value demo for the bundled demo disk |
file | Program name on the disk (case-insensitive) |
nocredit=1 | Hide the gmc64.com corner link |
poster_seconds | How many seconds to simulate the game for the preview frame behind the play button. Default 2, max 10, 0 skips the poster entirely. Decimals allowed. |
Example — direct link:
https://gmc64.com/play.html?disk=demo&file=aliens/prg&nocredit=1
program-editor.html) — loads into the editor, optionally plays| Param | Purpose |
|---|---|
disk | Same as above |
file | Same as above |
play=1 | Show a play-button overlay with a poster preview when the page opens. Visitor clicks play to run, clicks the stop button to drop into the editor. Without this flag the file just opens for editing. |
poster_seconds | Same as above; only meaningful with play=1 |
play_demo=1 | Alias — expands to disk=demo&file=gmc64i/prg&play=1&poster_seconds=8.5 |
Example — send someone a runnable link that still lets them drop into the editor and see the code:
https://gmc64.com/program-editor.html?disk=https://your-host.com/game.d64&file=GAME/PRG&play=1
The other editors (sprite-maker.html, scene-maker.html, sound-maker.html,
music-maker.html) accept disk and file too, deep-linking straight to a
specific asset for editing.
Two ways to get an embeddable game, depending on what you're willing to host.
Option A — self-contained HTML. Use the editor's Export Game to HTML button under file. It downloads a single HTML file containing your program, the disk image, and the runtime. Host it anywhere (GitHub Pages, Netlify, S3, your own server), then embed it. The Export dialog also generates the iframe snippet for you — just paste the URL where you'll host the file:
<iframe src="https://your-site.com/mygame.html"
width="640" height="500"
allow="autoplay" loading="lazy"
frameborder="0"></iframe>
Option B — play.html + a hosted .d64. Skip export. If your disk image
is already at a public URL, point play.html at it directly:
<iframe src="https://gmc64.com/play.html?disk=https://your-host.com/game.d64&file=GAME/PRG"
width="640" height="500"
allow="autoplay" loading="lazy"
frameborder="0"></iframe>
Note: disk=demo is a special case that loads from the bundled demo disk.
Cross-origin disks: for option B, if your .d64 lives on a different
domain than the page hosting play.html, that origin needs to allow
cross-origin fetches (CORS). Option A avoids this entirely — the disk is inside
the HTML.
| File | What it edits |
|---|---|
program-editor.html | Program instructions + runtime + asset assignment |
sprite-maker.html | Sprites (multi-color, multi-frame, multi-part) |
scene-maker.html | Backgrounds (160×200 4 indexed-color scenes) |
sound-maker.html | Sound effects (SID-style) |
music-maker.html | Songs (3 channels, score-style staff editor) |
All five editors read and write to the same in-browser .d64 image, so your
sprites flow into scenes flow into programs the same way they did on the C64.
To play and edit: none. It's static HTML and JavaScript. Just
open the files in a browser and use them. They also run locally from
file://.
To rebuild the standalone bundle: Node.js. Pure built-ins, no npm install
needed. After editing play.html or any file it loads from js/, run:
node tools/bundle-standalone.js
This regenerates js/standalone-source.js — a snapshot of play.html with
every <script src> inlined, used by the editor's "Export Game to HTML" flow to
produce a self-contained playable HTML file.
To run the test suite: the test tooling lives in dev/ (kept out of the
project root so static hosts don't mistake this for a Node project). One-time
setup:
cd dev
npm install
Then from dev/:
npm test # run the full suite
npm run generate-golden # regenerate golden files after intentional changes
This pulls in vitest (test runner) and puppeteer (headless browser). Only contributors need this.
Ready for use. Most games run faithfully. Tested on GameMaker's included demo games Archer, Chopper, and Pitfall. (Note: these are not included in gmc64 for copyright reasons.) Sprites, scenes, sound effects, music, and program logic all reproduce the original behavior. Reports of edge cases are welcome.
The overall user experience should be significantly better than running GameMaker under an emulator.
Known limitations:
.D64, /PRG, /SPR, /SND, /SNG, /PIC)All documented in CLAUDE.md — written for both humans and AI coding assistants.
gmc64 is an independent, unaffiliated, re-implementation made for preservation, education, and fun. It is not affiliated with, endorsed by, or connected to Activision, Activision Blizzard, Microsoft, or any other rights holder. "GameMaker" and any related marks are property of their respective owners. None of the original 1985 code is used or included.
The repository does not contain any commercial disk images or programs. If you have an original GameMaker disk, you can use it with gmc64 yourself; obtain disk images through legal channels.
MIT. Do what you like with the engine and editors.
The included demos (disks/gmc64-demo.d64) are original work, also under MIT.