Product · Gaming

SmurfVillage

Same 90s kid, different itch. The Game Boy was my childhood, and I wanted that whole library back — in my pocket, on any screen, with no cartridge to dig out and no app store in the way. SmurfVillage is that: a browser-first arcade that turns any device into a handheld, with Game Boy, Color, Advance, and DS emulation plus a from-scratch Tetris, real controls, and saves that follow you everywhere.

SmurfVillage emulator
Live route proof

Current enough to cite.

This case page checks its own route brief, public freshness score, and visitor-route signal before asking anyone to trust the story.

Loading the citation-safe case brief.

Snapshot pending
RoleSolo build
TypeBrowser PWA
SystemsGB · GBC · GBA · DS
StatusLive
InstallYes — PWA
Overview

The handheld that raised me, anywhere I am.

Pokémon and Minecraft taught me to love games; the Game Boy is where it started. SmurfVillage is me building the way I actually want to revisit that — not hunting down old hardware, not installing anything, just opening a tab. It turns any device into a handheld: Game Boy, Color, Advance, and DS, plus a Tetris I wrote from scratch, with saves that follow you between devices when you sign in.

It’s a personal arcade that refuses to feel like a tech demo: install it to the home screen, pick up a gamepad, and it behaves like a real device.

The problem

Emulation in the browser usually feels like a toy.

Web emulators tend to be clunky: awkward controls, no save persistence, and a UI that screams “tech demo.” On a phone they’re nearly unplayable, and the moment you close the tab your progress is gone.

The goal was a browser arcade that doesn’t apologize for being in a browser — real input options, real saves, and a polished shell that works as well on a phone as on a desktop.

What I built

A real handheld experience on the web.

Multi-system emulation

GB, GBC, GBA, and DS cores running client-side via WebAssembly, plus a native Tetris — a whole library from one tab.

Real input

On-screen touch controls with haptic feedback, full Gamepad API support for physical controllers, and keyboard play on desktop.

Saves that sync

Local-first saves in IndexedDB, with optional sync to a tinyblue account so progress carries across every device you sign in on.

Installable PWA

A service worker and manifest make it installable to the home screen and usable offline — it launches and feels like an app, not a website.

The SmurfVillage emulator arcade
The live arcade — pick a system and play, right in the browser.
The hard parts

The browser fights you.

iOS is the final boss

Touch controls, haptics, audio unlocking, and home-screen install all behave differently on iOS Safari — getting a console-grade experience there is most of the work.

Save integrity

Local-first saves that optionally reconcile with an account means handling conflicts and offline edits without ever losing someone’s progress.

Performance budget

Running emulator cores in WebAssembly while keeping the glass UI smooth means careful attention to the frame budget on mid-range phones.

Results

A polished personal arcade.

4
Console systems + Tetris
Touch + Pad
Input methods
Cross-device
Account save sync
Installable
PWA, offline-capable
Stack & why

Web platform, all the way down.

Emulation
WebAssemblyEmulatorJS coresNative Tetris

Client-side cores mean zero server cost per play and instant start — the browser does the work.

Platform
PWAService workerIndexedDBGamepad API

Web-native install, offline support, and persistence so it behaves like an installed app.

Shell
JavaScriptLiquid Glass UItinyblue accounts

An Apple-style glass shell and shared account layer tie it into the rest of the tinyblue network.

What’s next

More systems, more polish.

The arcade keeps growing — more emulated systems, smoother mobile play, and richer save management (cloud slots, per-game states) so it keeps closing the gap with a real handheld.

Pick up a controller.

SmurfVillage is live — install it and play.