whatisgithub

What is gameboy-emulator?

nicollasrezende/gameboy-emulator — explained in plain English

Analysis updated 2026-05-18

0HTMLAudience · developerComplexity · 4/5LicenseSetup · moderate

In one sentence

A Game Boy, NES, and Super Nintendo emulator built from scratch in Kotlin, tested against 641 community accuracy tests and able to boot real commercial games.

Mindmap

mindmap
  root((gameboy-emulator))
    What it does
      Emulates Game Boy
      Emulates NES
      Emulates SNES
    Tech stack
      Kotlin
      JDK 21
    Use cases
      Play old cartridge games
      Study emulator accuracy
      Run homebrew ROMs
    Audience
      Emulator developers
      Retro gaming fans
    Validation
      641 automated tests
      Pixel perfect graphics checks
      Boots commercial games

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Play classic Game Boy, NES, or Super Nintendo game cartridges on a modern computer.

USE CASE 2

Study a cycle-accurate emulator implementation as a learning reference.

USE CASE 3

Run the included homebrew CINZA ROM to see the emulator in action.

USE CASE 4

Verify emulator accuracy using the same community test ROM suites the project uses.

What is it built with?

KotlinJDK 21

How does it compare?

nicollasrezende/gameboy-emulator100/rutgers-pbl-dining-2015a15n/a15n_old
Stars0
LanguageHTMLHTMLHTML
Last pushed2015-12-012016-06-18
MaintenanceDormantDormant
Setup difficultymoderateeasyeasy
Complexity4/51/51/5
Audiencedevelopergeneralgeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires JDK 21 installed before building or running the emulator.

So what is it?

This project is a Game Boy and Game Boy Color emulator built entirely from scratch in the Kotlin programming language, meaning it recreates the original hardware in software so old game cartridges can run on a modern computer. Alongside the emulator, the author also wrote an original homebrew game called CINZA, a small game made specifically to run on this emulator, so the project covers both sides of the cartridge: the machine and the game. The emulator aims for hardware level accuracy. Its processor emulation advances in the same small steps as the real chip, its graphics system rebuilds the screen the way the original pixel pipeline did, and it includes sound emulation with four channels. It supports several types of Game Boy cartridge memory chips, battery save data, and save states so you can pause and resume exactly where you left off. Beyond the Game Boy, the project has grown into a multi system emulator. It also emulates the NES, matching its processor instruction by instruction against a reference log, and includes support for several NES cartridge types along with games that rely on special interrupt timing tricks. It goes further still with a Super Nintendo emulator, covering both of its processors and enough of its graphics modes to boot real commercial games like Super Mario World, though it notes that games needing exact cycle by cycle timing are not yet supported. All of this accuracy is checked, not just claimed. The project runs 641 automated tests using well known community test programs that check processor instructions, timing, interrupts, and graphics output pixel by pixel, across all three supported systems. There is also a desktop application that ties everything together: a library for organizing your game files by console, adjustable playback speed, fullscreen mode, visual filters, cheat support, and gamepad input. To run it, you need version 21 of the Java Development Kit installed on your computer.

Copy-paste prompts

Prompt 1
Explain how this emulator achieves cycle-accurate CPU timing for the Game Boy.
Prompt 2
Walk me through building and running this multi-system emulator on my computer with JDK 21.
Prompt 3
Help me understand how the automated test suites validate this emulator's accuracy.
Prompt 4
Describe how the homebrew CINZA ROM was made to run on this emulator.

Frequently asked questions

What is gameboy-emulator?

A Game Boy, NES, and Super Nintendo emulator built from scratch in Kotlin, tested against 641 community accuracy tests and able to boot real commercial games.

What language is gameboy-emulator written in?

Mainly HTML. The stack also includes Kotlin, JDK 21.

How hard is gameboy-emulator to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is gameboy-emulator for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.