Welcome to the Web-Based CHIP-8 Emulator! This project is an interactive emulator that allows you to create, edit, and run CHIP-8 programs directly in your browser. With a built-in assembly-like editor, you can write your own CHIP-8 programs, load external ROMs, and explore the world of retro gaming and low-level programming.
Or simply import existing ROMs
I built this as a hello world to emulators. Once that was working, I wanted to experiment with writing an assembler, and now this project exists!
However.. as this was a learning project, it's not perfect, so expect there to be some bugs, or missing documentation etc. If you see anything which you'd like to fix, contributions are welcome!
To start using the emulator:
- Open the Emulator: Visit the CHIP-8 emulator in your web browser.
- Create or Load a Program: Use the built-in editor to write your own CHIP-8 program, or load an existing ROM.
- Run Your Program: Click the "Run" button to execute your program. Use the debug tools to pause, step through code, and inspect memory and registers.
- Explore & Learn: Experiment with different instructions and see how they affect the program's behavior.
CHIP-8 programs are written using simple assembly-like syntax. The emulator supports a wide range of instructions, including:
- Control Flow:
JP
,CALL
,RET
,SE
,SNE
- Math Operations:
ADD
,SUB
,SHL
,SHR
- Bitwise Operations:
OR
,AND
,XOR
- Graphics:
DRW
- Timers and Sound:
LD
,ST
,DT
For a complete list of supported mnemonics and their usage, refer to the Assembly Language Guide.
The emulator provides tools to inspect the state of memory and registers during program execution. You can:
- View Memory: See the contents of memory and how it changes as your program runs.
- Inspect Registers: Monitor the values stored in the CHIP-8's registers (V0-VF, I, etc.).
For a detailed explanation of the CHIP-8 assembly language, visit this Documentation Page. This guide includes a breakdown of each mnemonic, its usage, and examples.
Contributions are welcome! If you encounter any issues, have suggestions, or want to contribute to the project, feel free to open an issue or submit a pull request.
See also the list of contributors who participated in this project.
This project is licensed under the MIT License. See the LICENSE file for details.