Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lucas-akira/chip8-emu
CHIP-8 interpreter in C
https://github.com/lucas-akira/chip8-emu
Last synced: 2 months ago
JSON representation
CHIP-8 interpreter in C
- Host: GitHub
- URL: https://github.com/lucas-akira/chip8-emu
- Owner: lucas-akira
- License: gpl-3.0
- Created: 2019-04-25T18:50:25.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2019-05-08T16:08:25.000Z (over 5 years ago)
- Last Synced: 2024-04-24T16:14:43.000Z (9 months ago)
- Language: C
- Size: 190 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- AwesomeInterpreter - chip8-emu
README
# chip8-emu
![screenshot1](/imgs/screenshot1.png)
![screenshot2](/imgs/screenshot2.png)CHIP-8 emulator written in C, using OpenGL.
## Brief description
From Wikipedia: CHIP-8 is an interpreted programming language developed by Joseph Weisbecker, initially used in the mid 1970s to allow easier programming of games. There are a number of classic video games ported to CHIP-8 such as Pong, Space Invaders and Tetris.
It is considered one of the easiest emulation projects to undertake, given its simplicity.
## Input
CHIP-8 uses a hexadecimal keyboard:| **1** | **2** | **3** | **C** |
|---|---|---|---|
| **4** | **5** | **6** | **D** |
| **7** | **8** | **9** | **E** |
| **A** | **0** | **B** | **F** |Which this emulator maps to:
#### QWERTY
| **1** | **2** | **3** | **4** |
|---|---|---|---|
| **Q** | **W** | **E** | **R** |
| **A** | **S** | **D** | **F** |
| **Z** | **X** | **C** | **V** |or
#### AZERTY
| **1** | **2** | **3** | **4** |
|---|---|---|---|
| **A** | **Z** | **E** | **R** |
| **Q** | **S** | **D** | **F** |
| **W** | **X** | **C** | **V** |Default combination on startup is QWERTY. Press TAB to change between QWERTY and AZERTY, if needed.
## Current state
Right now the emulator can boot some ROMs successfully, like Pong (1 player), Tetris, Tic-tac-toe and Breakout. Some demos and programs don't execute correctly (like the clock by Bill Fisher).
## TODO:
* ~~Fix freezes on some ROMs;~~ *Done. This was due to a wrong implementation of the 0xFX0A opcode.*
* Clear and organize code; (*Partially done*)
* Implement sound effect (beep) and delay timer;
* ~~Optimize code to run better on higher resolutions.~~ *Done. While maximized some games reach 290 FPS.*
* ~~Make an FPS cap to slow down the programs.~~ *Program runs at 60 FPS with updated graphics driver.*## Used references
* https://en.wikipedia.org/wiki/CHIP-8
* http://www.multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/
* http://devernay.free.fr/hacks/chip8/C8TECH10.HTM## Acknowledgements
* [Tiago Toledo Junior](https://github.com/TNanukem), a good friend, he gave the original idea of this project;
* [David Jowett](https://github.com/DavidJowett): The OpenGL implementation is based on his CHIP-8 emulator
(https://github.com/DavidJowett/chip8-emulator).