# humpheh/goboy

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/humpheh-goboy).**

2,637 stars · 121 forks · Go · mit

## Links

- GitHub: https://github.com/Humpheh/goboy
- Homepage: https://humpheh.github.io/goboy/
- awesome-repositories: https://awesome-repositories.com/repository/humpheh-goboy.md

## Topics

`emulator` `gameboy` `gameboy-emulator` `go` `golang` `macos` `windows`

## Description

Goboy is a GameBoy emulator written in Go that allows original handheld game ROMs to run on modern computer hardware. It supports both monochromatic and color display modes.

The project includes specialized tools for retro game debugging and graphics inspection. These capabilities allow for the analysis of game logic by stepping through opcodes, profiling processor execution in real time, and inspecting background palettes, sprite data, and map layouts.

The emulator provides game state preservation by writing cartridge RAM to local files. It also implements pixel-buffer rasterization for rendering and memory-mapped I/O for coordinating data exchange between the CPU and peripherals.

## Tags

### Game Development

- [Retro Game Emulation](https://awesome-repositories.com/f/game-development/retro-game-emulation.md) — Runs original GameBoy ROMs on modern hardware with monochromatic and color display support. ([source](https://cdn.jsdelivr.net/gh/humpheh/goboy@master/README.md))
- [Real-time State Debugging](https://awesome-repositories.com/f/game-development/game-memory-modifiers/real-time-state-debugging.md) — Provides tools to view real-time background palettes, sprite data, and opcode execution. ([source](https://humpheh.github.io/goboy/))

### Development Tools & Productivity

- [Instruction-To-Function Mappings](https://awesome-repositories.com/f/development-tools-productivity/code-translation-mappings/opcode-mappings/instruction-to-function-mappings.md) — Simulates the processor by mapping machine instructions to internal Go functions.
- [Graphics State Inspection](https://awesome-repositories.com/f/development-tools-productivity/debugging-profiling-testing/debugging-diagnostics/debugging-inspection-tools/debugging-and-inspection-tools/graphics-state-inspection.md) — Allows debugging of visuals by toggling sprite visibility and inspecting palette and map data. ([source](https://cdn.jsdelivr.net/gh/humpheh/goboy@master/README.md))
- [CPU Profilers](https://awesome-repositories.com/f/development-tools-productivity/debugging-profiling-testing/debugging-diagnostics/performance-resource-profilers/cpu-profilers.md) — Analyzes game logic and performance by stepping through opcodes and profiling processor speed. ([source](https://cdn.jsdelivr.net/gh/humpheh/goboy@master/README.md))
- [Emulator CPU Debuggers](https://awesome-repositories.com/f/development-tools-productivity/debugging-profiling-testing/debugging-diagnostics/performance-resource-profilers/cpu-profilers/emulator-cpu-debuggers.md) — Analyzes game logic and performance by stepping through opcodes and profiling processor execution.
- [Opcode Profilers](https://awesome-repositories.com/f/development-tools-productivity/real-time-performance-profilers/opcode-profilers.md) — Provides real-time profiling of opcode execution frequency and timing to analyze game logic.
- [Retro Game Debuggers](https://awesome-repositories.com/f/development-tools-productivity/retro-game-debuggers.md) — Provides specialized tools for analyzing game logic by stepping through opcodes and profiling processor execution in real time.
- [Graphics State Inspection](https://awesome-repositories.com/f/development-tools-productivity/retro-game-debuggers/graphics-state-inspection.md) — Allows for the diagnosis of visual behavior by inspecting background palettes, sprite data, and map layouts.

### Operating Systems & Systems Programming

- [Instruction-Level Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/computer-architecture/instruction-execution-models/instruction-level-emulators.md) — Simulates the processor by mapping opcodes to Go functions that manage registers and memory.
- [Memory-Mapped I/O](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-mapped-i-o.md) — Coordinates data exchange between the CPU and peripherals via memory-mapped hardware control registers.
- [Instruction-Level Profiling](https://awesome-repositories.com/f/operating-systems-systems-programming/instruction-level-profiling.md) — Tracks execution frequency and timing of CPU instructions to monitor emulator performance.

### Part of an Awesome List

- [Cartridge RAM Persistence](https://awesome-repositories.com/f/awesome-lists/data/file-storage-and-sync/game-save-managers/cartridge-ram-persistence.md) — Writes cartridge memory to local files at regular intervals to preserve game progress. ([source](https://cdn.jsdelivr.net/gh/humpheh/goboy@master/README.md))
- [Software Tools](https://awesome-repositories.com/f/awesome-lists/more/software-tools.md) — Nintendo Game Boy Color emulator.

### Business & Productivity Software

- [Game State Serializers](https://awesome-repositories.com/f/business-productivity-software/cloud-synced-managers/playback-state-syncing/game-state-serializers.md) — Persists game progress by serializing virtual cartridge RAM into binary save states.

### Data & Databases

- [Game State Persistences](https://awesome-repositories.com/f/data-databases/game-state-persistences.md) — Preserves game progress by writing virtual cartridge RAM to local files.

### System Administration & Monitoring

- [Sprite and Palette Inspections](https://awesome-repositories.com/f/system-administration-monitoring/diagnostic-tools/visual-debugging-overlays/layout-inspection-overlays/sprite-and-palette-inspections.md) — Enables visual debugging through the inspection of background palettes, sprite data, and map layouts during runtime.

### User Interface & Experience

- [Pixel Buffer Rendering](https://awesome-repositories.com/f/user-interface-experience/virtual-drawing-planes/pixel-buffer-rendering.md) — Renders graphics by calculating pixel colors and writing them to a shared memory buffer.
