Skip to content
screenshot from the film La polizia ha le mani legate (1975)
screenshot from the film La polizia ha le mani legate (1975) Image by Cavarrone at the Italian Wikipedia project., via Wikimedia Commons (Public domain).

GIOVANNI

GAME BOY COLOR EMULATOR

GIOVANNI

Giovanni is an open-source Game Boy / Game Boy Color emulator ported to run as an Apple Watch app with an iPhone companion. It embeds a modified Gambatte core and provides ROM transfer, on-watch caching, and basic save-state handling.

game boy colorPRIMARY SYSTEM
History documentedPROJECT BEGAN
Open sourcePROJECT MODEL

WHY IT MATTERS

Why this project exists

Giovanni packages a Game Boy/GBC emulation core for watchOS to explore the technical limits of the Apple Watch platform and to provide a portable way to run GB/GBC ROMs on watchOS devices. The project reuses and modifies the Gambatte emulator core to focus on watch-specific rendering and input.

BEST FOR

What it's good for

Running Game Boy and Game Boy Color ROMs on an Apple Watch (paired with an iPhone). Useful for developers and hobbyists who want an example of embedding an accurate Gambatte-derived core inside an Xcode watchOS/iOS project, or for curious users who want to experiment with GB/GBC games on watch hardware.

Wario Land 3 gameplay on Game Boy Color
Gameplay from Wario Land 3 on Game Boy Color.

The people behind GIOVANNI

History & status

Giovanni is hosted on GitHub and maintained as a public project that embeds a modified Gambatte emulator as a git submodule. The repository includes targets for watchOS and an iOS companion app, example assets, and build instructions in the README. Official releases have been published on the repository's Releases page (tags v0.1, v0.2 visible). The project is developed by the gabrieloc account and is actively available for cloning; issues and contributions are tracked on the GitHub repository. The README also documents known stability and rendering issues specific to running Gambatte on watchOS and explains the workaround behaviors (force-touch reset, automatic caching to device documents directory).

What GIOVANNI supports

  • watchOS (Apple Watch — empirical watchOS target present in repo)
  • iOS (iPhone companion app / ROM transfer)
  • Xcode (build from source; requires signing and Apple developer account)
  • Game Boy (DMG) ROMs (.gb)
  • Game Boy Color (GBC) ROMs (.gbc)

Download and availability

OFFICIAL DOWNLOADS

Get GIOVANNI

Official source code and binary-like release assets are published on the project's GitHub repository and Releases page. Clone the repository (see guide) or download release tarballs/zips from the GitHub Releases section.

Get GIOVANNI ↗

DOCUMENTATION

Official documentation

Read the official configuration, compatibility, and troubleshooting material before changing advanced options.

Read official documentation ↗
Broken or missing download? Emulator projects move and official links sometimes change. Please contact Retro Replay so the source can be verified and updated.

GIOVANNI setup guide

Setup note: Giovanni is distributed as an Xcode project that embeds a Gambatte submodule. Running it requires building from source in Xcode, provisioning an Apple developer signing identity, and transferring ROM files from your iPhone to the app.

  1. Get the source (clone with submodules): Clone the repository and fetch the Gambatte submodule so the emulator core is included: git clone –recursive git@github.com:gabrieloc/GIOVANNI.git. If you already cloned without –recursive, run git submodule update –init –recursive.
  2. Open in Xcode and inspect targets: Open the giovanni.xcodeproj in Xcode. The repo contains targets for giovanni_iOS, giovanni_watchOS, and a WatchKit extension. Review the included Gambatte_watchOS directory (the modified Gambatte core) and the WatchKit/UI code to understand how ROMs are loaded and rendered.
  3. Configure signing and bundle identifiers: Select a development team for each target under Signing & Capabilities (giovanni_iOS, giovanni_watchOS, giovanni WatchKit Extension, Gambatte_watchOS). Change each target's Bundle Identifier to a unique identifier (the README suggests com.YOUR_USERNAME.giovanni as an example). An Apple developer account is required to install on physical devices.
  4. Build and install to device: Choose an iPhone paired with the Apple Watch as your run destination (select the giovanni scheme) and build/run from Xcode. Watch apps generally must be installed through an iPhone paired to the watch; follow Xcode prompts if additional provisioning configuration is needed.
  5. Transfer ROMs to the app: Originally Giovanni used iTunes file sharing: place .gb or .gbc files in the Giovanni app's Documents folder on the paired iPhone and they will be visible to the watch app. The README also documents an update that allows opening ROMs natively (bypassing iTunes); inspect the app's Files handling to use that feature. The repository does not include any ROMs or BIOS files.
  6. Emulation notes and controls: Giovanni caches games to the watch's documents directory on first load; subsequent loads are faster. Emulation saving/loading is automatic on app state changes, but in-game saves are separate. If video memory corrupts or rendering glitches occur, force-touch the watch screen (while in a game) to bring up the Reset option; repeating this flow can recover the app.
  7. Troubleshooting and known issues: The README warns about watchOS constraints: crashes, graphical glitches, and occasional audio buffer issues (Gambatte requires a sound buffer even if unused). If the app becomes unresponsive, use the Apple Watch force-quit method (side button then hold Digital Crown). For graphical color issues the repository points to GameCoreSnapshots.swift where rendering is performed — modifying how the Core Graphics or SpriteKit context is created can change results.

Software reminder: You must provide your own legally obtained Game Boy / Game Boy Color ROM files. Giovanni requires Xcode and an Apple developer account to sign and install the watchOS/iOS app; no commercial games, firmware, BIOS, or keys are distributed with the project.

Sources and further reading

Detailed guides and tutorials

Explore step-by-step guides for GIOVANNI as they are published.