Another Chip8 Emulator(ACE) made using Rust

Overview

ACE(Another Chip8 Emulator)


ace ace
ACE(Another Chip8 Emulator)

This is a chip8 emulator created using Rust programming Language. It's purpose is to learn Rust at the same time, graphic API's and GUI libraries. I am planning to add JIT, Vulkan support and WEBGPU support in the future.

Setup Emulator

  1. Download the emulator
  2. Unzip it
  3. Edit config/config.ini
  4. Launch the emulator from the folder with arguments ./ace_cli [GAME LOC]
    You can also change the config file location and execute it using ./ace-cli [GAME LOC] [CONFIG LOC]

Config.ini

It handles basic settings in code. It handles basic settings in code. Run the emulator once to create it.(In config folder in project repo)

[Theme]
bg = 3 //Sets background Colour
fg = 4 //Sets Foreground Colour

[Hack]
delay = 100 //Sets delay
clock = 700 //Sets clock speed(700 is the optimal. Recommended range 500 - 1000)

[Screen]
scale = 10 //Sets scaling

[Audio]
enable = true //Sets Audio

[Shader] //To Specify Shader Location
v_shader = config/shader/triangle.vert
f_shader = config/shader/triangle.frag
  1. Red 1. Green 2. Blue 3. Black 4. White 5. Light Pink 6. Light Blue 7. Blue Violet 8. Yellow 9. Lawn Green

Things to be Done

  • Boot Games
  • Add OpenGL Backend
  • Add Audio Support
  • Add Keyboard Support
  • Emulate VM
  • Add Vulkan Backend
  • Add wgpu Backend
  • Add dynamic(jit) recompiler
  • Add a intermediate GUI library

Imperfections in Code

  • Find the bad or missing instruction(causing troubles in INVADERS)
  • Hunt the bug that causes stack overflow in Invaders
You might also like...
A Gameboy Emulator in Rust

RBoy A Gameboy Color Emulator written in Rust Implemented CPU All instructions correct All timings correct Double speed mode GPU Normal mode Color mod

RGB (Rust Game Boy) is a simple emulator for the original game boy
RGB (Rust Game Boy) is a simple emulator for the original game boy

RGB RGB (Rust Game Boy) is a simple emulator for the original game boy and the color game boy. Warning: This no longer compiles in the latest versions

Full featured Cross-platform GameBoy emulator by Rust. Forever boys!.
Full featured Cross-platform GameBoy emulator by Rust. Forever boys!.

Gameboy Full featured Cross-platform GameBoy emulator. Forever boys!. You can start a game with the following command, here with a built-in game "Boxe

RustBoyAdvance-NG is a Nintendo™ Game Boy Advance emulator and debugger, written in the rust programming language.
RustBoyAdvance-NG is a Nintendo™ Game Boy Advance emulator and debugger, written in the rust programming language.

RustBoyAdvance-NG Nintendo GameBoy Advance ™ emulator and debugger, written in rust. WebAssembly Demo: https://michelhe.github.io/rustboyadvance-ng/ P

An NES emulator written in Rust

Pinky Pinky is an NES emulator written in Rust completely from scratch based only on publicly available documentation. You can run it in your Web brow

NES emulator written in Rust

sprocketnes is an emulator for the Nintendo Entertainment System written in the Rust programming language. Its purpose is to serve as a technology dem

NES emulator in rust
NES emulator in rust

NES emulator in Rust plastic is a NES emulator built from scratch using Rust. This is a personal project for fun and to experience emulating hardware

ZX Spectrum emulator written in Rust
ZX Spectrum emulator written in Rust

rustzx ZX Spectrum emulator which I writing in rust. I develop this project just for fun and for learning the basics of computer architecture. License

Intel 8080 cpu emulator by Rust
Intel 8080 cpu emulator by Rust

i8080 i8080 is a emulator for Intel 8080 cpu. 8080 Programmers Manual 8080 opcodes [dependencies] i8080 = { git = "https://github.com/mohanson/i8080"

Releases(1.3.2)
Owner
Sakura
A big fan of Avril Lavigne and Rust
Sakura
Spaghetti Chip8 Emulator Written In Rust

How to run? Command is simple: cargo run FILENAME. files are stored in the /c8games folder, use one of them. Example: cargo run INVADERS Keymap use 1

Can 5 Apr 15, 2022
A Chip8 Emulator written in Rust

Chipper: Chipper is a Chip8 Emulator written in Rust. It currently supports a few known quirks of the Chip8 varieties. I intend on making it support t

Elijah Hartvigsen 4 Aug 20, 2022
Learn emulator and programming languages, target chip8, nes, gbc, gba ...

[WIP]learn emulator go-chip8 go run main.go source https://en.wikipedia.org/wiki/CHIP-8 http://devernay.free.fr/hacks/chip8/C8TECH10.HTM https://githu

早晨海风 4 Apr 30, 2021
Assured Confidential Execution (ACE) for RISC-V

Assured Confidential Execution (ACE) for RISC-V ACE-RISCV is an open-source project, whose goal is to deliver a confidential computing framework with

International Business Machines 12 Oct 6, 2023
Nes-emulator - A NES emulator made to learn the Rust programming language

nes-emulator Building $ rustc --version rustc 1.32.0 (9fda7c223 2019-01-16) $ cargo --version cargo 1.32.0 (8610973aa 2019-01-02) $ cargo build --rel

Michael Burge 225 Dec 23, 2022
🍊 WIP: Yet another implementation of MikanOS for aarch64 CPUs, written in Rust.

?? mikan Yet another implementation of MikanOS for aarch64 CPUs, written in Rust. MikanOS (uchan-nos/mikanos) was originally created by @uchan-nos, wh

Naoki Ikeguchi 2 Aug 16, 2022
NES emulator written in Rust to learn Rust

OxideNES A NES emulator in Rust. CPU should be accurate, PPU is mostly accurate, timing between the 2 is off for some corner cases and hardware qui

null 37 Nov 7, 2022
Commodore 64 emulator written in Rust

Rust64 - a C64 emulator written in Rust This is my attempt to study the Rust programming language and have fun at the same time. The goal is to presen

Krzysztof Kondrak 214 Dec 27, 2022
A Flash Player emulator written in Rust

website | demo | nightly builds | wiki Ruffle Ruffle is an Adobe Flash Player emulator written in the Rust programming language. Ruffle targets both t

Ruffle 11.2k Jan 8, 2023
A Game Boy research project and emulator written in Rust

Mooneye GB Mooneye GB is a Game Boy research project and emulator written in Rust. The main goals of this project are accuracy and documentation. Some

Joonas Javanainen 802 Dec 28, 2022