gbaid 0.1.0-alpha
A GameBoy Advance emulator in D.
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
GBAiD
GBAiD stands for <strong>G</strong>ame<strong>B</strong>oy <strong>A</strong>dvance <strong>i</strong>n <strong>D</strong>. I've started this project as an effort to learn the D programing language. The goal of this emulator is light CPU usage.
This emulator is writen mostly in pure D, with some inline x86_64 assembly in the graphics to help with performance.
I haven't tried compiling it on Windows or Linux yet, only on OS X, but it doesn't use any platform specific features, so it should work.
Current state
All of the GameBoy's built-in hardware has been implemented, with the exception of sound.
I've tested 4 games so far:
- Super Mario Advance
- Mario kart
- Pokemon Emerald
- Legend of Zelda: a link to the past
Mario Kart exhibits some light graphical glitches due problems with timings in the graphics (this also affects the world map in LoZ).
Optimization isn't complete, but the emulator works fine at 60FPS on my 2.66GHz dual core i7 (4GB RAM), using just under 50% CPU. Most of this usage comes from the graphics, which still need optimization.
Pokemon Emerald complains that the save file is corrupted, but that's a lie, it works just fine.
Building
Dependencies
GBAiD uses SDL2 for input, OpenGL graphics, sound (eventually) and controller support (planned). Support for OpenGL 2.0 or greater is also required.
DUB
First install the DUB package manager if you haven't already.
GBAiD is officially built using LDC, which should also be installed.
Then use:
dub build --compiler=ldc2 --build=release
Running
Use:
dub run --compiler=ldc2 --build=release -- (arguments)
Or get the binary from the bin folder after building and use:
./gbaid (arguments)
Arguments
At minimum, you must specify the path to the bios and rom images with
-b (path to bios) (path to rom)
The following arguments are also recognized:
Long form | Short form | Argument | Usage |
---|---|---|---|
--bios | -b | path to bios | Specify bios image |
--save | -s | path to save | Specify path for loading and saving saves |
--noload | -n | none | Don't load the save |
--nosave | -N | none | Don't save the save |
--scale | -r | scaling factor (float) | Draw the display at "factor" times the original resolution |
--filtering | -f | LINEAR or NEAREST | What technique to use to filter the output texture to be drawn to the screen |
Note that these arguments are case sensitive and that bundling is only supported by the noload and nosave switches.
Saves
Saves use a custom format and .sav extension that is not compatible with other emulators. If no save path is specified, the same path as the ROM is used, but with the .sav extension instead of whatever the ROM image is using. If no save is found matching either the given or default path, then a new save is created using that path. Saves are overwritten on exit, unless the --nosave argument is used.
License
GBAiD is licensed under MIT
Useful information
This page for a whole lot of detailed information on the hardware.
This and this for a list of all instructions supported by the ARM7TDMI CPU.
- 0.1.0-alpha released 10 years ago
- DDoS/GBAiD
- MIT
- Authors:
- Dependencies:
- derelict-gl3, derelict-sdl2
- Versions:
-
0.3.0-beta 2017-Jul-19 0.2.1-alpha 2017-Mar-16 0.2.0-alpha 2016-Dec-26 0.1.2-alpha 2015-Mar-25 0.1.1-alpha 2014-Dec-27 - Download Stats:
-
-
0 downloads today
-
0 downloads this week
-
0 downloads this month
-
366 downloads total
-
- Score:
- 2.3
- Short URL:
- gbaid.dub.pm