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
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A Game Boy and Game Boy Color emulator written in Rust, running in the browser through WebAssembly.
▶ Play it in your browser: drop in a .gb or .gbc
file (free, legal homebrew games are on Homebrew Hub, e.g. Tobu Tobu Girl,
or its Color edition, Tobu Tobu Girl Deluxe).查看完整 README ↗A Game Boy and Game Boy Color emulator written in Rust, running in the browser through WebAssembly.
▶ Play it in your browser: drop in a .gb or .gbc
file (free, legal homebrew games are on Homebrew Hub, e.g. Tobu Tobu Girl,
or its Color edition, Tobu Tobu Girl Deluxe).
Status: plays original Game Boy (DMG) and Game Boy Color games with sound, battery saves, save states, rewind and a debugger, in the browser or headless. Games that support the Color run in color; original games run as on the original Game Boy, or in color on a Game Boy Color with the palette of your choice. Next up: docs/ROADMAP.md.
Install Rust: https://rustup.rs
Add the WebAssembly target and the bindings tool (the version must match crates/gb-wasm/Cargo.toml):
rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli --version 0.2.129 --locked
Download test ROMs from https://github.com/c-sp/game-boy-test-roms/releases and unzip into roms/.
cargo test --workspace # tests
cargo run --release -p gb-cli -- <rom.gb> # headless, prints test results
Browser version (Windows):
powershell -ExecutionPolicy Bypass -File scripts/build-web.ps1
node scripts/serve.js
macOS / Linux: ./scripts/build-web.sh, then node scripts/serve.js.
Open http://localhost:8765 and drop a .gb file onto the screen.
Every push runs the tests on GitHub Actions (.github/workflows/ci.yml); pushes to main also
build the browser version and publish it to GitHub Pages, which is where the Play it link points.
(serve.js needs only Node. Any static server works, e.g. python -m http.server 8765 -d web;
avoid port 8080 on Windows, which is often reserved.)
Controls: arrows = d-pad, X = A, Z = B, Enter = Start, Shift = Select.
Gamepads work too (standard layout): d-pad or left stick, right face button = A,
bottom face button = B, Start, Select (Back). Press a button once so the browser exposes it.
On phones and tablets, on-screen controls appear under the screen (multi-touch, slide between
buttons). Add ?touch to the URL to show them on a desktop.
Pause, Reset and a speed button (1×/2×/4×) sit under the screen. Keys: P pause, R reset, F speed, hold Space to fast-forward at 8×.
Battery saves are kept in the browser (localStorage, per ROM) and stored a moment after the game saves and when the page closes. Export .sav / Import .sav move them to and from other emulators (BGB/VBA-M format, including the MBC3 clock, which catches up on time that passed).
Rewind: hold Backspace (or the ⏪ button) to run time backwards at double speed, up to 30 seconds; let go and play on from there. While paused, each press steps back two frames. The button shows how much history there is.
Console: original Game Boy games run as on the original (green screen) unless you pick Game Boy Color in the Console panel. The Color colors them with the palette its startup ROM picks for the game, or one of the 12 it offers for button combinations held at startup, which you can choose there too. Both choices are remembered in the browser, the palette per game.
Save states: four slots per game under the screen, each with a picture and when it was saved, kept in the browser (IndexedDB) between visits. Keys: 1-4 pick a slot, S saves, L loads. A state is the whole machine, so loading one also puts the battery save (and the MBC3 clock) back to how they were then.
Link cable: two-player games can link two copies of the emulator. Both players load the game and open Link cable, then:
To try it, there's Link Pong, a two-player Pong written for this emulator (in Game Boy
assembly, homebrew/link-pong): press try Link Pong on the
screen in both browsers, link up, and press START on one (it becomes player 1). SELECT plays
the computer instead. Up and down move your paddle; first to 9 wins. Building it locally needs
RGBDS: node scripts/build-homebrew.js puts it in web/games/.
Sound starts with your first click, tap or key press (browsers require one). The Sound button or M mutes it. Fast-forward is silent.
The Debugger panel under the screen shows the CPU registers, flags and the next instructions.
Step (or N) pauses and runs one instruction; while the CPU sleeps in HALT, one step runs until
an interrupt wakes it. Step frame runs one frame.
Click an instruction to set a breakpoint there (or type an address under Breakpoints): the game
pauses just before running it. Resume runs on to the next one. Breakpoints are CPU addresses, so
one in $4000-$7FFF stops in whichever ROM bank is mapped there.
Under that, a memory view shows 256 bytes at a time, live: type an address (C000, PC, LY)
and press Enter, jump to a region, or follow PC, SP or HL. Bytes the game just wrote light up;
click one to see its value and what it is.
The VRAM view shows all 384 tiles and a whole 256×256 tile map, with the part on screen outlined
(and the window's part, when it's on). Hover to see a tile's number and address; click to open
it in the memory view.
CLAUDE.md describes the project for Claude Code. Some good ways to start:
/test-rom roms/blargg/cpu_instrs/individual/06-ld r,r.gb runs a test ROM and investigates whatever it reports.MIT; see LICENSE. Game ROMs are not included and are not covered by it.
The Game Boy Color's palettes for original games (crates/gb-core/src/compat.rs) come from
SameBoy's open-source boot ROM, © Lior Halphon, under
the MIT (Expat) license; its notice is next to the tables.