Update README.md
Former-commit-id: e1ff263d66abf91ebedc7863148b9203466f424d
This commit is contained in:
parent
c96fa38a2d
commit
1a382b4cee
107
README.md
107
README.md
|
@ -6,17 +6,87 @@
|
||||||
|
|
||||||
Nintendo GameBoy Advance ™ emulator and debugger, written in rust.
|
Nintendo GameBoy Advance ™ emulator and debugger, written in rust.
|
||||||
|
|
||||||
|
# Progress
|
||||||
|
|
||||||
|
![Pokemon Emerald](media/screenshot1.png)
|
||||||
|
|
||||||
|
## Supported features:
|
||||||
|
* Display modes 0,1,2,3,4
|
||||||
|
* PCM Audio channels
|
||||||
|
* Snapshots (AKA savestates)
|
||||||
|
* Cartridge backup saves
|
||||||
|
|
||||||
|
## Todo:
|
||||||
|
* CGB audio (4 wave generator channels)
|
||||||
|
* web.asm frontend
|
||||||
|
* Andriod & IOS applications
|
||||||
|
* color correction
|
||||||
|
* Configurable keybindings
|
||||||
|
* Controller support
|
||||||
|
|
||||||
|
|
||||||
# Build and usage
|
# Build and usage
|
||||||
|
|
||||||
1. set-up rust *nightly*
|
The following instructions build the `rba-sdl2` target which is currently the main platform. (`rba-minifb` is also available without audio support)
|
||||||
2. Obtain a gba bios binary. you can get an [open source GBA bios](https://github.com/Nebuleon/ReGBA/blob/master/bios/gba_bios.bin)
|
|
||||||
3. Place the bios file in the repository root and name it `gba_bios.bin`
|
|
||||||
|
|
||||||
4. Build and run in release mode (performance is terrible in the `dev` profile)
|
To get started, you need to get a [stable rust toolchain](https://rustup.rs).
|
||||||
|
|
||||||
|
## Linux build dependencies
|
||||||
|
Install SDL2 dependencies
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt-get -y install libsdl2-dev libsdl2-image-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
## Windows build dependencies
|
||||||
|
Download SDL2 runtime binaries for windows (either 32bit or 64bit depending on the target machine)
|
||||||
|
https://www.libsdl.org/download-2.0.php
|
||||||
|
https://www.libsdl.org/projects/SDL_image/
|
||||||
|
|
||||||
|
Extract all the DLLs into the project root (Yeah, its dirty and a build script will be written in the future to automate this)
|
||||||
|
|
||||||
|
## Build & Usage
|
||||||
|
You need to obtain a gba bios binary.
|
||||||
|
An [open source GBA bios](https://github.com/Nebuleon/ReGBA/blob/master/bios/gba_bios.bin) is also available and supported.
|
||||||
|
|
||||||
|
|
||||||
|
Place the bios file in the repository root and name it `gba_bios.bin` (or alternatively use the `-b` command line option)
|
||||||
|
|
||||||
|
|
||||||
|
Build and run in release mode (performance is terrible in the `dev` profile)
|
||||||
```bash
|
```bash
|
||||||
$ cargo run --release -- path/to/rom
|
$ cargo run --release -- path/to/rom
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
You can also drag&drop rom files or any zip files containing `.gba` files inside into the emulator window and a new rom will be loaded.
|
||||||
|
|
||||||
|
# Key bindings
|
||||||
|
|
||||||
|
> Currently the key bindings are not configureable.
|
||||||
|
|
||||||
|
GBA key bindings:
|
||||||
|
|
||||||
|
| Keyboard | GBA |
|
||||||
|
|----------- |---------- |
|
||||||
|
| Up | Up |
|
||||||
|
| Down | Down |
|
||||||
|
| Left | Right |
|
||||||
|
| Right | Right |
|
||||||
|
| Z | B Button |
|
||||||
|
| X | A Button |
|
||||||
|
| Return | Start |
|
||||||
|
| Backspace | Select |
|
||||||
|
| A | L |
|
||||||
|
| S | R |
|
||||||
|
|
||||||
|
Special key bindings
|
||||||
|
| Key | Function |
|
||||||
|
|-------------- |-------------------- |
|
||||||
|
| Space (hold) | Disable 60fps cap |
|
||||||
|
| F5 | Save snapshot file |
|
||||||
|
| F9 | Load snapshot file |
|
||||||
|
|
||||||
# Why is this project needed ?
|
# 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.
|
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.
|
||||||
|
@ -29,33 +99,8 @@ I tried to resurrect it a year ago but didn't have the time to get invested in a
|
||||||
I've grown to like rust a lot since then, so here we go again.
|
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*.
|
You know what they say, *third time's a charm*.
|
||||||
|
|
||||||
# Progress
|
## More Screenshots
|
||||||
|
![Kirby - Nightmare in Dreamland](media/screenshot2.png) ![Dragon Ball - Legacy of Goku 2](media/screenshot3.png)
|
||||||
## Supported features:
|
|
||||||
* Display modes 0,4,5
|
|
||||||
* PCM Audio channels
|
|
||||||
|
|
||||||
## Todo:
|
|
||||||
* Display modes 2,3 (affine backgrounds)
|
|
||||||
* Flash(backup) support
|
|
||||||
* CGB audio (4 wave generator channels)
|
|
||||||
* web.asm frontend
|
|
||||||
* color correction
|
|
||||||
|
|
||||||
## Tested games status
|
|
||||||
|
|
||||||
### Kirby - Nightmare in Dreamland*
|
|
||||||
No issues so far
|
|
||||||
|
|
||||||
### Pokemon - Emerald
|
|
||||||
~~Won't boot unless binary patched to remove a loop querying the flash chip~~
|
|
||||||
|
|
||||||
### Dragon Ball - Legacy of Goku 2
|
|
||||||
~~crashes when entering in-game menu, other than that works fine.~~
|
|
||||||
|
|
||||||
## Screenshots
|
|
||||||
|
|
||||||
![Pokemon Emerald](media/screenshot1.png) ![Kirby - Nightmare in Dreamland](media/screenshot2.png) ![Dragon Ball - Legacy of Goku 2](media/screenshot3.png)
|
|
||||||
|
|
||||||
# Links and attribution
|
# Links and attribution
|
||||||
|
|
||||||
|
|
Reference in a new issue