go get github.com/retroenv/retrogolibRetroGoLib is a Go library for building retro computing tools such as emulators, debuggers, disassemblers, and system-specific utilities. It focuses on small dependencies, reusable CPU and system components, and clean APIs that compose well in standalone tools.
- Go 1.22 or later
- Single external dependency:
ebitengine/purego - No CGO dependencies, including SDL support for easier cross-compilation
- Reusable CPU emulation packages with tests and system helpers
- Supporting utility packages for CLI apps, configuration, logging, input, and assertions
These packages are currently implemented in the repository:
arch/cpu/chip8: Chip-8 virtual machinearch/cpu/m6502: MOS 6502, including 65C02-related supportarch/cpu/x86: x86 instruction definitions for 8086 through 80486arch/cpu/z80: Zilog Z80, including prefixed and undocumented opcode support
Concrete system helper packages currently include:
arch/system/nes: NES cartridge, mapper, register, and parameter helpers
├─ app common application and service helpers
├─ arch shared architecture and system identifiers
├─ arch/cpu/* CPU emulation and virtual-machine packages
├─ arch/system/* system-specific constants and helpers
├─ assert test assertion helpers
├─ buildinfo version metadata helpers
├─ cli command-line parsing and related utilities
├─ config configuration loading, parsing, and persistence
├─ gui graphical interface helpers with CGO-free SDL integration
├─ input keyboard and controller input helpers
├─ log structured logging helpers built on slog
└─ set generic set data structures and operations
For detailed package documentation, visit pkg.go.dev.
This project is licensed under the Apache License Version 2.0 - see the LICENSE file for details.