My first attempt at a Gameboy Advance Emulator
Go to file
Rekai Nyangadzayi Musuka 250ff25ed7 Merge pull request 'Configure SDL2 to use OpenGL' (#4) from opengl into main
Reviewed-on: #4
2022-10-20 01:41:50 +00:00
.vscode chore: remove reccomended extension 2022-01-23 23:13:16 -04:00
lib chore: replace OpenGL 4.5 bindings with OpenGL 3.3 2022-10-17 20:31:42 -03:00
src fix(opengl): properly control whether vsync is enabled 2022-10-17 20:31:42 -03:00
.gitignore chore: don't commit *.sh files 2022-02-05 15:53:30 -04:00
.gitmodules chore: add zig-toml dependency 2022-10-13 00:27:18 -03:00
README.md chore: Update README.md 2022-10-17 17:00:54 -03:00
build.zig chore: replace OpenGL 4.5 bindings with OpenGL 3.3 2022-10-17 20:31:42 -03:00
example.toml feat(config): add option to skip BIOS 2022-10-17 17:31:07 -03:00

README.md

ZBA (working title)

A Game Boy Advance Emulator written in Zig !

Scope

I'm hardly the first to write a Game Boy Advance Emulator nor will I be the last. This project isn't going to compete with the GOATs like mGBA or NanoBoyAdvance. There aren't any interesting ideas either like in DSHBA.

This is a simple (read: incomplete) for-fun long-term project. I hope to get "mostly there", which to me means that I'm not missing any major hardware features and the set of possible improvements would be in memory timing or in UI/UX. With respect to that goal, here's what's outstanding:

TODO

  • Affine Sprites
  • Windowing (see this branch)
  • Shaders (see this branch)
  • Audio Resampler (Having issues with SDL2's)
  • Immediate Mode GUI
  • Refactoring for easy-ish perf boosts

Tests

Resources

Compiling

Most recently built on Zig 0.10.0-dev.4324+c23b3e6fd

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, known-folders, zig-toml and zig-datetime

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 L
S R
Return Start
RShift Select
Arrow Keys D-Pad