An open API service indexing awesome lists of open source software.

https://github.com/omrawaley/chip8-go

CHIP-8 emulator written in Go, featuring a TUI interface.
https://github.com/omrawaley/chip8-go

chip8 chip8-emulator chip8-interpreter emulation emulation-library emulator emulator-development go golang terminal-app terminal-game tui tui-app

Last synced: 4 days ago
JSON representation

CHIP-8 emulator written in Go, featuring a TUI interface.

Awesome Lists containing this project

README

          

# chip-8 go

A CHIP-8 emulator written in Go, featuring a TUI interface.

This project was mostly written for myself so that I could learn Go and how to build TUI apps. I also built this for Hack Club Macondo.

## Demo

https://github.com/user-attachments/assets/0aaba8f6-857f-4ec8-8881-251a7e12c83a

## Features

- Blazing fast terminal rendering using only Unicode characters
- Virtual keypad support for both legacy terminals (e.g. `xterm`) and modern terminals (e.g. `kitty`)
- Built-in file browser for selecting ROMs
- Pause functionality
- Interactive help menu
- Customizable display palette

## Installation

Firstly, install [Go](https://go.dev/doc/install) on your machine.

Then, to compile chip8-go, run `go build ./cmd/tui`.

## Usage

Now you can execute the binary to launch the program (e.g. `./chip-8`).

It takes an optional argument specifying the path to a ROM.

## Custom Frontends

The `internal` folder contains all core CHIP-8 logic and data. You can use the `chip8` package to implement any type of frontend you want (not limited to just TUI).

See `cmd/tui/main.go` to understand how to implement your own frontend.

## Authors

- [@omrawaley](https://www.github.com/omrawaley)

## Related

Here are some related projects of mine:

- [Game Boy Emulator (C++)](https://github.com/omrawaley/gameboy-emulator)
- [CHIP-8 emulator, debugger, and disassembler (C++)](https://github.com/omrawaley/chip-8-emulator)
- [CHIP-8 emulator rewrite (Rust)](https://github.com/omrawaley/chip8-emulator-rust)

## License

[MIT](https://choosealicense.com/licenses/mit/)