My first attempt at a Gameboy Advance Emulator
Go to file
Rekai Nyangadzayi Musuka c0e026b9a8 chore: update git submodules 2022-05-05 18:21:59 -03:00
.vscode chore: remove reccomended extension 2022-01-23 23:13:16 -04:00
lib chore: update git submodules 2022-05-05 18:21:59 -03:00
src chore: resolve incorrect memory mirror in VRAM 2022-05-05 16:44:48 -03:00
.gitignore chore: don't commit *.sh files 2022-02-05 15:53:30 -04:00
.gitmodules feat: implement SRAM saving and loading 2022-03-22 14:41:18 -03:00
README.md chore: pass destoer's cond_invalid test 2022-04-30 20:42:47 -05:00
build.zig feat: implement SRAM saving and loading 2022-03-22 14:41:18 -03:00

README.md

ZBA (working title)

An in-progress Gameboy Advance Emulator written in Zig !

Tests

  • jsmolka GBA Test Collection
    • arm.gba and thumb.gba
    • flash64.gba, flash128.gba, none.gba, and sram.gba
    • hello.gba, shades.gba, and stripes.gba
    • memory.gba
    • bios.gba
    • nes.gba
  • DenSinH's GBA ROMs
    • eeprom-test
    • flash-test
    • midikey2freq
    • swi-tests-random
  • destoer's GBA Tests
    • cond_invalid.gba
    • dma_priority.gba
    • hello_world.gba
    • if_ack.gba
    • line_timing.gba
    • lyc_midline.gba
    • window_midframe.gba
  • [ladystarbreeze's GBA Test Collection]
    • retAddr.gba
    • helloWorld.gba
    • helloAudio.gba
  • armwrestler-gba-fixed.gba
  • FuzzARM

Resources

Compiling

Most recently built on Zig 0.10.0-dev.1933+5f2d0d414

Dependencies

bitfields.zig from FlorenceOS is included under lib/util/bitfield.zig.

Use git submodule update --init from the project root to pull the git submodules SDL.zig, zig-clap, and known-folders

Be sure to provide SDL2 using:

  • Linux: Your distro's package manager
  • MacOS: ¯\_(ツ)_/¯
  • Windows: vcpkg (install sdl2:x64-windows)

SDL.zig will provide a helpful compile error if the zig compiler is unable to find SDL2.

Once you've got all the dependencies, execute zig build -Drelease-fast. The executable is located at zig-out/bin/.

Controls

Key Button
X A
Z B
A Left Shoulder
S Right Shoulder
Return Start
RShift Select
Arrow Keys D-Pad