zba/README.md

70 lines
2.7 KiB
Markdown
Raw Normal View History

2022-02-11 01:21:34 +00:00
# ZBA (working title)
2022-09-10 10:34:52 +00:00
An in-progress Game Boy Advance Emulator written in Zig ⚡!
2022-02-11 01:21:34 +00:00
## Tests
2022-09-09 08:37:13 +00:00
- [x] [jsmolka's GBA Test Collection](https://github.com/jsmolka/gba-tests)
2022-04-12 02:13:25 +00:00
- [x] `arm.gba` and `thumb.gba`
- [x] `flash64.gba`, `flash128.gba`, `none.gba`, and `sram.gba`
- [x] `hello.gba`, `shades.gba`, and `stripes.gba`
- [x] `memory.gba`
2022-05-27 23:04:45 +00:00
- [x] `bios.gba`
2022-09-09 08:37:13 +00:00
- [x] `nes.gba`
2022-04-26 15:52:56 +00:00
- [ ] [DenSinH's GBA ROMs](https://github.com/DenSinH/GBARoms)
2022-09-10 10:34:52 +00:00
- [x] `eeprom-test` and `flash-test`
2022-04-26 15:52:56 +00:00
- [x] `midikey2freq`
- [ ] `swi-tests-random`
- [ ] [destoer's GBA Tests](https://github.com/destoer/gba_tests)
- [x] `cond_invalid.gba`
2022-04-26 15:52:56 +00:00
- [x] `dma_priority.gba`
- [x] `hello_world.gba`
- [x] `if_ack.gba`
- [ ] `line_timing.gba`
- [ ] `lyc_midline.gba`
- [ ] `window_midframe.gba`
2022-06-19 03:02:33 +00:00
- [x] [ladystarbreeze's GBA Test Collection](https://github.com/ladystarbreeze/GBA-Test-Collection)
2022-04-26 15:52:56 +00:00
- [x] `retAddr.gba`
- [x] `helloWorld.gba`
2022-06-19 03:02:33 +00:00
- [x] `helloAudio.gba`
2022-02-11 01:21:34 +00:00
- [x] [`armwrestler-gba-fixed.gba`](https://github.com/destoer/armwrestler-gba-fixed)
2022-04-12 02:13:25 +00:00
- [x] [FuzzARM](https://github.com/DenSinH/FuzzARM)
2022-02-11 01:21:34 +00:00
## Resources
* [GBATEK](https://problemkaputt.de/gbatek.htm)
* [TONC](https://coranac.com/tonc/text/toc.htm)
* [ARM Architecture Reference Manual](https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/third-party/ddi0100e_arm_arm.pdf)
* [ARM7TDMI Data Sheet](https://www.dca.fee.unicamp.br/cursos/EA871/references/ARM/ARM7TDMIDataSheet.pdf)
## Compiling
2022-09-10 10:34:52 +00:00
Most recently built on Zig [0.10.0-dev.3900+ab4b26d8a](https://github.com/ziglang/zig/tree/ab4b26d8a)
2022-02-11 01:21:34 +00:00
### Dependencies
* [SDL.zig](https://github.com/MasterQ32/SDL.zig)
* [SDL2](https://www.libsdl.org/download-2.0.php)
* [zig-clap](https://github.com/Hejsil/zig-clap)
2022-03-29 21:52:09 +00:00
* [known-folders](https://github.com/ziglibs/known-folders)
2022-09-10 10:34:52 +00:00
* [`bitfields.zig`](https://github.com/FlorenceOS/Florence/blob/aaa5a9e568197ad24780ec9adb421217530d4466/lib/util/bitfields.zig)
2022-03-01 02:10:32 +00:00
`bitfields.zig` from [FlorenceOS](https://github.com/FlorenceOS) is included under `lib/util/bitfield.zig`.
2022-03-29 21:52:09 +00:00
Use `git submodule update --init` from the project root to pull the git submodules `SDL.zig`, `zig-clap`, and `known-folders`
2022-03-01 02:10:32 +00:00
2022-03-29 21:52:09 +00:00
Be sure to provide SDL2 using:
* Linux: Your distro's package manager
* MacOS: ¯\\\_(ツ)_/¯
* Windows: [`vcpkg`](https://github.com/Microsoft/vcpkg) (install `sdl2:x64-windows`)
2022-03-01 02:10:32 +00:00
2022-03-29 21:52:09 +00:00
`SDL.zig` will provide a helpful compile error if the zig compiler is unable to find SDL2.
2022-03-01 02:10:32 +00:00
2022-03-29 21:52:09 +00:00
Once you've got all the dependencies, execute `zig build -Drelease-fast`. The executable is located at `zig-out/bin/`.
2022-02-11 01:21:34 +00:00
2022-03-01 02:10:32 +00:00
## Controls
Key | Button
--- | ---
<kbd>X</kbd> | A
<kbd>Z</kbd> | B
2022-06-19 03:02:33 +00:00
<kbd>A</kbd> | L
<kbd>S</kbd> | R
2022-03-01 02:10:32 +00:00
<kbd>Return</kbd> | Start
<kbd>RShift</kbd> | Select
Arrow Keys | D-Pad