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 putImageData after 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.