This is an experimental project, created to learn how emulation works from inside.
It includes the emulator and some debugging tools like console and register view.
You can check the demo here.
To run this project, you have to use a modern browser.
Features:
- blinking reduction (configurable)
- key binding
- offline-mode & cache management
- loadable screen & register states
- instructions are translated into human-readable language (in debug mode)
Emulator object
Emulator and all it's components are available from window.emu
object
Technologies used in this project:
JS ES6+ syntax:
- arrow functions + let variables
- imports / exports
- promises
- generators / iterators
- Sets
- Methods
HTML/CSS syntax:
- Web Components
- CSS Grid
TODO:
- WebGL renderer
- make different UI's with frameworks
- game specific keyboards / configs
- Gamepad support
Special thanks to:
mir3z/chip8-emu for extra ROMs & ROM description,
Wikipedia article about CHIP-8
Chip-8 manual
The article about writing an emulator
for the information and /r/emulation & /r/emudev for inspiring me to do this project.