https://github.com/ioncodes/ayyboy-advance
GameBoy Advance emulator and debugger
https://github.com/ioncodes/ayyboy-advance
emulator gameboy-advance gba nintendo
Last synced: about 1 month ago
JSON representation
GameBoy Advance emulator and debugger
- Host: GitHub
- URL: https://github.com/ioncodes/ayyboy-advance
- Owner: ioncodes
- Created: 2024-07-22T20:35:12.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-08-10T16:50:50.000Z (8 months ago)
- Last Synced: 2025-12-13T09:54:58.335Z (3 months ago)
- Topics: emulator, gameboy-advance, gba, nintendo
- Language: Rust
- Homepage: https://ayyadvance.layle.dev/
- Size: 13 MB
- Stars: 54
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ayyboy advance
ayyboy's big brother
| Kirby - Nightmare in Dream Land | Wario Land 4 | Fire Emblem - The Sacred Stones | Debugger |
| :------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------: |
|  |  |  |  |
## Setup
```bash
# place BIOS in external/gba_bios.bin
cargo build --release # full optimizations
cargo build --profile dev # opt-level 3, retains debug checks - nice to debug overflows, etc.
```
## Usage
```
Usage: ayydbg.exe [OPTIONS] --rom
Options:
--trace Enable trace-level logging (highest verbosity, incl. cpu dump and mmio events)
--debug Enable debug-level logging (mostly just cpu instructions)
--targets Targets to enable logging for [default: cpu,mmio,storage,ppu,irq,pipeline,rhai]
--script Path to a custom script file
--rom <ROM> Path to the ROM file
-h, --help Print help
```
### Scripting
ayyboy advance support's [Rhai](https://rhai.rs/) scripts. These scripts allow you to execute a given "handler" on certain events, namely:
* Whenever the CPU executes an instruction at a given address
* Whenever the MMIO writes to or reads from a given address (janky implementation)
Refer to the [`scripts` folder](https://github.com/ioncodes/ayyboy-advance/tree/master/scripts) for examples. In particular, `dump_swi.rhai` is noteworthy as it logs every BIOS call.
### Screenshot Database
`rom-db` runs a given `.zip` or `.gba` and takes a few screenshots every now and then. Collection can be performed with:
```bash
bash external/collect_screemshots.sh <rom-folder> # edit script to change max process number
bash external/clean_screenshots.sh rom-db-ui/public/screenshots # delete duplicates, white and black images
```
The screenshots are saved in `rom-db-ui/public/screenshots`. Build the frontend using:
```bash
# inside of rom-db-ui
npm install
npm run build # prod build is recommended for speed
npx serve@latest out
```
A snapshot of screenshots can be found in `external/screenshots.zip`. You can unpack these in the aforementioned folder.
## Compatibility
Currently passes [`armwrestler`](https://github.com/destoer/armwrestler-gba-fixed/tree/master) and a good number of [jsmolka's `gba-tests`](https://github.com/jsmolka/gba-tests). For game specific compatibility refer to the [screenshot database](https://ayyadvance.layle.dev/) (updated on milestones).