jawline/rustgameboy

A Gameboy emulator written in Rust

Can launch and play simple games

RustGameboy

. . Can use the terminal as an output device.

Usage

cargo run --release "PATH_TO_BIOS" "PATH_TO_ROM"

Working

  • System memory map
  • Core instruction set
  • Pixel-processing unit
  • Background rendering
  • Sprite rendering
  • Interrupts
  • Input

TODO

  • Sound
  • Memory Banking
  • Timing
  • The emulator will not run in Debug mode because Rust errors on unsigned integer arithmetic over/underflow. This can be alleviated using the Wrapping struct but requires explicit wrapping of every literal value. wrapping_add and wrapping_sub could be used on every instruction, but neither solution leads to readable code and I would prefer a solution that leaves the base logic understandable.
Issues

Collection of the latest Issues

heycitizen

heycitizen

Comment Icon1

hey cool project. Currently it doesn't compile.


error[E0432]: unresolved import clap::Clap --> src/main.rs:24:25 | 24 | use clap::{AppSettings, Clap}; | ^^^^ no Clap in the root

error: cannot determine resolution for the derive macro Clap --> src/main.rs:28:10 | 28 | #[derive(Clap)] | ^^^^ | = note: import resolution is stuck, try simplifying macro imports

error: cannot find attribute clap in this scope --> src/main.rs:29:3 | 29 | #[clap(version = "1.0", author = "Blake Loring clap is in scope, but it is a crate, not an attribute

error: cannot find attribute clap in this scope --> src/main.rs:30:3 | 30 | #[clap(setting = AppSettings::ColoredHelp)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

error: cannot find attribute clap in this scope --> src/main.rs:33:5 | 33 | #[clap(short, long)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

error: cannot find attribute clap in this scope --> src/main.rs:35:5 | 35 | #[clap(short, long)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

error: cannot find attribute clap in this scope --> src/main.rs:37:5 | 37 | #[clap(short, long)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

error: cannot find attribute clap in this scope --> src/main.rs:39:5 | 39 | #[clap(long)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

error: cannot find attribute clap in this scope --> src/main.rs:41:5 | 41 | #[clap(long)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

error: cannot find attribute clap in this scope --> src/main.rs:43:5 | 43 | #[clap(short, long)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

error: cannot find attribute clap in this scope --> src/main.rs:45:5 | 45 | #[clap(short, long)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

error: cannot find attribute clap in this scope --> src/main.rs:47:5 | 47 | #[clap(long, default_value = "4")] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

warning: unused import: AppSettings --> src/main.rs:24:12 | 24 | use clap::{AppSettings, Clap}; | ^^^^^^^^^^^ | = note: #[warn(unused_imports)] on by default

error[E0599]: no function or associated item named parse found for struct Opts in the current scope --> src/main.rs:53:26 | 31 | struct Opts { | ----------- function or associated item parse not found for this ... 53 | let opts: Opts = Opts::parse(); | ^^^^^ function or associated item not found in Opts | = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item parse, perhaps you need to implement it: candidate #1: Parser

warning: unused import: Write --> src/terminal.rs:12:29 | 12 | use std::io::{self, stdout, Write}; | ^^^^^

Some errors have detailed explanations: E0432, E0599. For more information about an error, try rustc --explain E0432. warning: gb_int (bin "gb_int") generated 2 warnings error: failed to compile gb_int v0.1.0 (https://github.com/jawline/Mimic.git#9c1ff27d), intermediate artifacts can be found at /tmp/cargo-installzK8Jhy

Caused by: could not compile gb_int due to 13 previous errors; 2 warnings emitted


If it makes any difference i am installing by:

cargo install --git https://github.com/jawline/Mimic.git

Information - Updated May 12, 2022

Stars: 220
Forks: 8
Issues: 2

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

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

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

An open source Gameboy emulator written in Rust that can use a command line interface...

An open source Gameboy emulator written in Rust that can use a command line interface as a screen and input device

An open source Gameboy emulator written in Rust that can use a command line interface...

Frosty is a GameBoy emulator written in rust

You can also hold TAB to enable turbo, which will disable the frame limiter

Frosty is a GameBoy emulator written in rust

🕹️ A work-in-progress GameBoy emulator written in Rust

This project is just a work-in-progress

🕹️ A work-in-progress GameBoy emulator written in Rust

Mizu is an accurate Gameboy emulator built in Rust

Emulating The original gameboy (DMG) and gameboy color hardware

Mizu is an accurate Gameboy emulator built in Rust

Rust GameBoy Advanced Emulator

Building this project on linux requires cmake and gtk3

Rust GameBoy Advanced Emulator

A Rust GameBoy emulator!

TetrisZelda: Link's Awakening

A Rust GameBoy emulator!

CorrodedBoy, a Gameboy Emulator written in Rust

Try out the emulator online here!

CorrodedBoy, a Gameboy Emulator written in Rust
Facebook Instagram Twitter GitHub Dribbble
Privacy