Retro Boy: simple Game Boy emulator written in Rust, can be played on the web
Project & Licensing
- Thread is broadly positive on the emulator as a clean, well‑organized Rust Game Boy core with a web front‑end.
- Initial concern about missing open‑source license was resolved when an Apache 2.0 license was added.
Rust, WASM, and Web Deployment
- Multiple commenters highlight Rust+WASM as a great combo for bringing traditionally desktop‑only emulators into the browser.
- Running entirely client‑side is praised for easy sharing (just a URL) without extra tools or untrusted sites.
- Some compare approaches: wasm-bindgen + canvas vs adding heavier GUI/game-engine layers.
Audio Emulation & WebAudio Challenges
- Several users notice clicks and glitches in audio.
- People note this is common with WASM+WebAudio, especially on single‑threaded setups or with small buffers.
- Suggested mitigations:
- Use larger audio buffers (~100ms on the web vs ~20ms native).
- Run audio graphs/decoding on a separate thread and just enqueue buffers on the main JS thread.
- Avoid certain Emscripten/OpenAL stacks.
- Others emphasize that Game Boy/NES audio is inherently tricky and highly timing‑sensitive, with hardware quirks and revision differences.
Performance & Browser Differences
- Reports of slow speed and worse audio on Firefox, but good performance on Chrome; others see full speed on Firefox too.
- Profiling notes that a framebuffer sync and
putImageDataafter every opcode consumes a large share of time and may be redundant. - There’s mention that recent Firefox WebRender regressions could contribute.
- A side thread devolves into a contentious debate over Firefox’s market position, funding priorities, and DEI spending, with disagreement over how much these affect product quality.
Emulation Difficulty & “Yet Another GB Emulator”
- One commenter questions value given “millions” of GB emulators; others respond that:
- Accurate emulation, especially audio, is not a weekend project.
- Different emulators optimize for accuracy, speed, tooling, or web deployment.
- Writing emulators is a valuable learning exercise in low‑level systems and hardware behavior.
- Rust brings memory safety and modern tooling to this space.
Homebrew & Game Recommendations
- Strong interest in homebrew ROMs: links to new GB games, chip‑8-on-GB, music tools (e.g., LSDj), and curated itch.io collections.
- Original GB homebrew devs note their games mostly work but reveal emulator audio bugs, reinforcing how demanding accurate sound is.
- Extensive recommendations for classic Game Boy/Color titles for newcomers (Tetris, Mario Land series, Link’s Awakening/DX, Pokémon, Wario Land, Donkey Kong ‘94, Kirby, etc.), with discussion of design constraints and impressive feats within tiny ROM sizes.
Retro Hardware & Handhelds
- Several comments branch into modern retro handhelds from AliExpress, Anbernic, Miyoo, Analogue Pocket, and using Steam Deck/mini PCs for emulation.
- People trade notes on custom firmware, controller latency, power-supply quirks, and configuration guides.
Meta: Rust Branding & PWAs
- Question about why “written in Rust” is in so many titles; responses say language choice is interesting to many, and Rust in particular draws attention as “bleeding edge.”
- Someone notices the site is installable as an Android “app”; others explain Progressive Web Apps, web app manifests, and tools to wrap arbitrary sites.
Resources for Game Boy Development
- A closing comment collects Game Boy dev resources: gbdev portals, technical references (PanDocs, PDFs), GBDK‑2020 toolchain and examples, and homebrew galleries—useful both for emulator authors and homebrew game creators.