Update README.md

Former-commit-id: e1ff263d66abf91ebedc7863148b9203466f424d
This commit is contained in:
MishMish 2020-02-17 23:57:51 +02:00 committed by GitHub
parent c96fa38a2d
commit 1a382b4cee

115
README.md
View file

@ -6,16 +6,86 @@
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
1. set-up rust *nightly*
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`
The following instructions build the `rba-sdl2` target which is currently the main platform. (`rba-minifb` is also available without audio support)
4. Build and run in release mode (performance is terrible in the `dev` profile)
```bash
$ cargo run --release -- path/to/rom
```
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
$ 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 ?
@ -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.
You know what they say, *third time's a charm*.
# Progress
## 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)
## More Screenshots
![Kirby - Nightmare in Dreamland](media/screenshot2.png) ![Dragon Ball - Legacy of Goku 2](media/screenshot3.png)
# Links and attribution
@ -71,4 +116,4 @@ No issues so far
A GameBoy Advance emulator written in C++17 by a nice person called fleroviux.
I've used this for debugging.
- [Eggvance gba-suite](https://github.com/jsmolka/gba-suite)
Incredible test suite for the arm7tdmi interpreter that I'm using, written by Julian Smolka.
Incredible test suite for the arm7tdmi interpreter that I'm using, written by Julian Smolka.