Update README.md
Former-commit-id: e1ff263d66abf91ebedc7863148b9203466f424d
This commit is contained in:
parent
c96fa38a2d
commit
1a382b4cee
115
README.md
115
README.md
|
@ -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.
|
||||
|
|
Reference in a new issue