Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/matej-g/yarchi
Yet another Rust CHIP-8 interpreter!
https://github.com/matej-g/yarchi
chip-8 chip-8-interpreter emulator interpreter
Last synced: about 1 month ago
JSON representation
Yet another Rust CHIP-8 interpreter!
- Host: GitHub
- URL: https://github.com/matej-g/yarchi
- Owner: matej-g
- License: mit
- Created: 2021-02-03T21:29:03.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2021-02-03T22:38:08.000Z (almost 4 years ago)
- Last Synced: 2024-10-13T02:49:28.924Z (3 months ago)
- Topics: chip-8, chip-8-interpreter, emulator, interpreter
- Language: Rust
- Homepage:
- Size: 14.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Yarchi
### **Y**et **A**nother **R**ust **C**HIP-8 **I**nterpreter!Yarchi is a simple yet functional CHIP-8 interpreter (emulator).
## Features
- Runs CHIP-8 programs and games (obviously!)
- Adjustable screen size
- Adjustable emulation speed
- Adjustable fore- and background color
- Possibility to run in CHIP-48 mode (required for some games to function properly)
- Debug mode## Prerequisites
The interpreter depends on SDL2 library in order to handle video, audio and inputs. It must be therefore installed on your system.On GNU/Linux operating systems this can be as simple as installing (example from Ubuntu 20.04):
```
apt install libsdl2-2.0-0
```or on a MacOS (with `brew`):
```
brew install sdl2
```
For more information please see https://formulae.brew.sh/formula/sdl2.## Running the interpreter
Simply run from your command line, while specifying the ROM path and passing arguments / flags.For example, to run a program in debug mode with large screen:
```
./yarchi -d --screen-size large path/to/your/program.rom
```## Building the interpreter
Yarchi depends only on a handful of dependencies and can be built very simply with the standard Rust toolchain by running from within the root directory:```
cargo build
```## Controls
Controls use the 'typical' mapping which is the following:*(left: mapped on keyboard, right: original controls)*
| | | | | | | | | |
|-|-|-|-|-|-|-|-|-|
|1|2|3|4| |1|2|3|C|
|Q|W|E|R| |4|5|6|D|
|A|S|D|F| |7|8|9|E|
|Z|X|C|V| |A|B|C|D|*the mapping is independent of your keyboard layout (i.e. bottom left key, whether `Z` or `Y`, is always `A`)
## Debug Mode
The interpreter also contains a debug mode, which can be 'activated' by passing `-d` or `--debug`. This mode makes it possible to inspect CHIP-8's state (program counter value, register values etc.), to pause / resume emulation and to execute emulation cycles one by one (when paused).The described actions are available upon pressing:
- `P` - prints current state of CHIP-8
- `End` - pause/resume emulation
- `PgDown` - executes next cycle (4 instructions; possible only if emulation is paused)## Contributions and collaboration
Something's not working right? Do you want to add a feature to the interpreter? Are you building one yourself and have questions?Pull requests as well as opening an issue is more than welcome!