Skip to content

Chip 8 virtual machine implemented in Java with support for quirks and customization.

Notifications You must be signed in to change notification settings

narenragu/Chip8Emu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chip8 Virtual Machine / Emulator

Background

I created this virtual machine/emulator as an exercise, and to familiarize myself with JavaFX, emulator design, and machine code.

Features

  • Emulation of the original Chip8 specification
  • Clean JavaFX-based user interface
  • Ability to enable and disable "quirks"
    • Implemented quirks:
      • Shift Quirk
      • Memory Increment by X Quirk
      • Leave I Unchanged Quirk
      • Jump Quirk
      • Wrap Quirk
      • Math VF Reset Quirk
  • Save States
  • Sound (simple beeper)
  • Pausing
  • Configuration of emulation as well as emulator itself
    • Saved to system using Java Preferences API, persistent when reopening
    • Configurable screen size multiplication factor
    • Configurable emulation speed
    • Configurable keybinds for hexadecimal keypad
    • Configurable colors

Limitations

  • SuperChip and other specifications are not implemented
  • Save states made on older versions are not compatible with newer releases of the emulator
    • Limitation of Java serialization
  • Beeper may not sound properly on certain devices
    • Was a hasty modification of an existing sound implementation from Michael Arnauts
  • Emulator is only compatible with compiled binaries in .rom format, not chip8 assembly files
  • Emulation speed may not be consistent
    • Keypad input may cause a momentary stutter in emulation

Notes

The "LOAD GAME" screen that shows when opening the emulator is actually a Chip8 ROM that I programmed myself in hex! The emulator loads it up by default and runs it after starting up.

Project was created and tested on an M2 Macbook Pro 14 running MacOS.

Screenshots and Videos

ezgif-7-7c68fc0bcb

Resources

Below is a short list of resources I referenced in order to create this implementation:

About

Chip 8 virtual machine implemented in Java with support for quirks and customization.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages