/chibines

NES emulator & NSF Player written in Go.

Primary LanguageGoGNU General Public License v3.0GPL-3.0

ChibiNES

Godoc Reference GitHub Release Github Actions Release Workflow Go Report Card

ChibiNES is NES emulator written by Go. This is my favorite hobby project!

Porting libretro/Mesen to Go. Priority was given to mimicking Mesen's behavior rather than refactoring.

Screenshots

cmd/chibines (NES Console)

Screenshots

cmd/chibines-nsf (NSF Player)

ToyNES_NSFPlayer_no_sound.mp4

Download

Spec

  • NTSC only
    • PAL, Dendy is not supported yet.
  • Basic APU sound only (The following sound sources are currently not supported)
    • NAMCOT 16x (N160/N163)
    • MMC5
    • SUNSOFT 5B
    • VRC
  • Mapper Support
    • Mapper 0
    • Mapper 1
    • Mapper 2
    • Mapper 3
    • Mapper 4
    • Mapper 16
    • Mapper 31
      • For NSF Player

Key binding

Player 1

NES Key
UP, DOWN, LEFT, RIGHT Arrow Keys
Start Enter
Select Right Shift
A Z
B X

Player 2

NES Key
UP, DOWN, LEFT, RIGHT I, K, J, L
Start E
Select Left Shift
A A
B S

Build & Run

  • Install Library
    • portaudio

MacOSX

brew install portaudio
  • build
go build cmd/chibines/main.go
  • or go run
go run cmd/chibines/main.go

Dependencies

FAQ

Why do you only support these mappers?

Because it's my favorite games & for nes-test-roms

ToDO

  • CPU
  • PPU
  • APU
  • NSF Player (cmd/chibines-nsf)
    • like VirtuaNES
  • 6502 compiler
    • like cc65
  • disassembler
  • Interpreter (cmd/chibines-interpreter)
  • Sprite extractor (cmd/chibines-sprites)
  • ROM info CLI (cmd/chibines-rominfo)
  • Debugger (like Mesen's Debugging tools)
  • Test

Reference

Emulator

Documents

Credit