Nintendo™ Game Boy Advance emulator and debugger.
This repository has been archived on 2024-06-01. You can view files and clone it, but cannot push or open issues or pull requests.
Find a file
Michel Heily acd0e4f338 cpu: Refactor instructions to use explicit cycle counting.
The way cycles were counted up untill now was not accurate enough,
I've avoided doing so because the instruction implementation looks
bloated this way, but I've had problems with cycle accuracy with tonc's
timer demo.

This is not entirely correct though, and I'm 100% sure there are some
mistakes, but works good enough for now.


Former-commit-id: 748faaf99fe2f42925c0a2110192c6a01e5d27d4
2019-08-08 20:05:09 +03:00
.vscode Update .launch.json 2019-07-04 01:36:41 +03:00
img Add demo gif to README.md 2019-06-28 15:32:21 +03:00
src cpu: Refactor instructions to use explicit cycle counting. 2019-08-08 20:05:09 +03:00
.gitignore Initial commit 2019-06-24 16:36:20 +03:00
.travis.yml Fix typo in .travis.yml 2019-06-27 13:16:00 +03:00
Cargo.lock The big ioregs refactoring. 2019-08-03 00:24:15 +03:00
Cargo.toml The big ioregs refactoring. 2019-08-03 00:24:15 +03:00
LICENSE Create LICENSE 2019-06-24 16:36:20 +03:00
README.md Update README.md 2019-07-03 02:23:36 +03:00

RustBoyAdvance-NG

Build Status

RustBoyAdvance-NG aims to be a Nintendo GameBoy Advance emulator and debugger, written in the rust programming language.

RustBoyAdvance-NG currently has implemented

  • Dumbed-down ARM/THUMB mode disassembling
  • Some ARM/THUMB instruction are implemented, but not all of them.
  • A neat debugger REPL

But the way for full emulation is way far ahead, because most of the ARM/THUMB instructions are not yet implemented.

Using the REPL

You need to have rust installed, and somehow legally obtain a gba bios binary. Currently to test the debugger, any binary file containing arm mode instructions will do.

$ cargo run -- debug

Debugger REPL Demo

Why is this project needed ?

It's actually not. There are quite a lot of GBA emulators, and even some written in rust. Actually, I couldn't find any game capable emulators written in rust.

I'm only doing this as a side project intended for learning rust.

This is my third take on this project. My first go at this was about 3 years ago, but I didn't like rust much at the time so it got abandoned. I tried to resurrect it a year ago but didn't have the time to get invested in a side-project, let alone learning rust.

I've grown to like rust a lot since then, so here we go again. You know what they say, third time's a charm.

Links