Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bemxio/c8oa
CHIP-8 interpreter written in C++ with SDL
https://github.com/bemxio/c8oa
chip8 cpp emulator interpreter sdl2
Last synced: 11 days ago
JSON representation
CHIP-8 interpreter written in C++ with SDL
- Host: GitHub
- URL: https://github.com/bemxio/c8oa
- Owner: bemxio
- License: mit
- Created: 2024-07-03T07:03:44.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-07-05T15:51:04.000Z (7 months ago)
- Last Synced: 2024-11-15T15:16:07.868Z (2 months ago)
- Topics: chip8, cpp, emulator, interpreter, sdl2
- Language: C++
- Homepage:
- Size: 24.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# C8OA (CHIP-8 Once Again)
C8OA is yet another CHIP-8 ~~emulator~~ interpreter written in C++ using SDL2. Made for fun and learning purposes, to potentially be used as a reference for future projects.It is a work-in-progress, and as such, is not unstable and probably won't run most games/programs correctly.
## Building
You will need to have GCC and SDL2 installed on your system. You can install both using your package manager, or using MSYS2 on Windows.Once you have them installed, you can build the project by simply running `make` in the root directory of the project. This will create an executable called `c8oa` in the `build` directory.
To delete the build directory, invoke `make clean`.
## Usage
To run a CHIP-8 program, you can just run the executable with the path to the ROM file as an argument. Here's an example:
```sh
./build/c8oa /path/to/rom.ch8
```## Tests
Here is a list of tests from the [CHIP-8 test suite](https://github.com/Timendus/chip8-test-suite) and their working status:
- ✅ **CHIP-8 splash screen** ([`1-chip8-logo.ch8`](roms/1-chip8-logo.ch8))
- ✅ **IBM logo** ([`2-ibm-logo.ch8`](roms/2-ibm-logo.ch8))
- ✅ **Corax+ opcode test** ([`3-corax.ch8`](roms/3-corax.ch8))
- ✅ **Flags test** ([`4-flags.ch8`](roms/4-flags.ch8))
- ❌ **Quirks test** ([`5-quirks.ch8`](roms/5-quirks.ch8)) - after choosing the platform, interpreter exits out with a SEGFAULT
- ❌ **Keypad test** ([`6-keypad.ch8`](roms/6-keypad.ch8)) - not correctly showing the key presses
- ❌ **Beep test** ([`7-beep.ch8`](roms/7-beep.ch8)) - sound not implemented
- ❌ **Scrolling test** ([`8-scrolling.ch8`](roms/8-scrolling.ch8)) - scrolling not implemented## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.