diff --git a/README.md b/README.md index 7a0bac0..5d2b368 100644 --- a/README.md +++ b/README.md @@ -19,66 +19,15 @@ This is a simple (read: incomplete) for-fun long-term project. I hope to get "mo ## Usage -As it currently exists, ZBA is run from the terminal. In your console of choice, type `./zba --help` to see what you can do. +ZBA supports both a CLI and a GUI. If running from the terminal, try using `zba --help` to see what you can do. If you want to use the GUI, feel free to just run `zba` without any arguments. -I typically find myself typing `./zba -b ./bin/bios.bin` and then going to File -> Insert ROM to load the title of my choice. - -Need a BIOS? Why not try using the open-source [Cult-Of-GBA BIOS](https://github.com/Cult-of-GBA/BIOS) written by [fleroviux](https://github.com/fleroviux) and [DenSinH](https://github.com/DenSinH)? +ZBA does not feature any BIOS HLE, so providing one will be necessary if a ROM makes use of it. Need one? Why not try using the open-source [Cult-Of-GBA BIOS](https://github.com/Cult-of-GBA/BIOS) written by [fleroviux](https://github.com/fleroviux) and [DenSinH](https://github.com/DenSinH)? Finally it's worth noting that ZBA uses a TOML config file it'll store in your OS's data directory. See `example.toml` to learn about the defaults and what exactly you can mess around with. -## Tests - -GBA Tests | [jsmolka](https://github.com/jsmolka/) ---- | --- -`arm.gba`, `thumb.gba` | PASS -`memory.gba`, `bios.gba` | PASS -`flash64.gba`, `flash128.gba` | PASS -`sram.gba` | PASS -`none.gba` | PASS -`hello.gba`, `shades.gba`, `stripes.gba` | PASS -`nes.gba` | PASS - -GBARoms | [DenSinH](https://github.com/DenSinH/) ---- | --- -`eeprom-test`, `flash-test` | PASS -`midikey2freq` | PASS -`swi-tests-random` | FAIL - -gba_tests | [destoer](https://github.com/destoer/) ---- | --- -`cond_invalid.gba` | PASS -`dma_priority.gba` | PASS -`hello_world.gba` | PASS -`if_ack.gba` | PASS -`line_timing.gba` | FAIL -`lyc_midline.gba` | FAIL -`window_midframe.gba` | FAIL - -GBA Test Collection | [ladystarbreeze](https://github.com/ladystarbreeze) ---- | --- -`retAddr.gba` | PASS -`helloWorld.gba` | PASS -`helloAudio.gba` | PASS - -FuzzARM | [DenSinH](https://github.com/DenSinH/) ---- | --- -`main.gba` | PASS - -arm7wrestler GBA Fixed | [destoer](https://github.com/destoer) ---- | --- -`armwrestler-gba-fixed.gba` | PASS - -## 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 -Most recently built on Zig [v0.11.0-dev.3299+34865d693](https://github.com/ziglang/zig/tree/34865d693) +Most recently built on Zig [v0.11.0-dev.3395+1e7dcaa3a](https://github.com/ziglang/zig/tree/1e7dcaa3a) ### Dependencies @@ -106,16 +55,42 @@ Be sure to provide SDL2 using: `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 -Doptimize=ReleaseSafe`. The executable is located at `zig-out/bin/`. +Once you've got all the dependencies, execute `zig build -Doptimize=ReleaseSafe`. The executable will be under `zig-out/bin` and the shared libraries (if enabled) under `zig-out/lib`. If working with shared libraries on windows, be sure to add all artifacts to the same directory. On Unix, you'll want to make use of `LD_PRELOAD`. ## Controls -Key | Button ---- | --- -X | A -Z | B -A | L -S | R -Return | Start -RShift | Select +Key | Button | | Key | Button +--- | --- | --- | --- | --- +A | L | | S | R +X | A | | Z | B +Return | Start | | RShift | Select Arrow Keys | D-Pad + +## Tests + +GBA Tests | [jsmolka](https://github.com/jsmolka/) | gba_tests | [destoer](https://github.com/destoer/) +--- | --- | --- | --- +`arm.gba`, `thumb.gba` | PASS | `cond_invalid.gba` | PASS +`memory.gba`, `bios.gba` | PASS | `dma_priority.gba` | PASS +`flash64.gba`, `flash128.gba` | PASS | `hello_world.gba` | PASS +`sram.gba` | PASS | `if_ack.gba` | PASS +`none.gba` | PASS | `line_timing.gba` | FAIL +`hello.gba`, `shades.gba`, `stripes.gba` | PASS | `lyc_midline.gba` | FAIL +`nes.gba` | PASS | `window_midframe.gba` | FAIL + +GBARoms | [DenSinH](https://github.com/DenSinH/) | GBA Test Collection | [ladystarbreeze](https://github.com/ladystarbreeze) +--- | --- | --- | --- +`eeprom-test`, `flash-test` | PASS | `retAddr.gba` | PASS +`midikey2freq` | PASS | `helloWorld.gba` | PASS +`swi-tests-random` | FAIL | `helloAudio.gba` | PASS + +FuzzARM | [DenSinH](https://github.com/DenSinH/) | arm7wrestler GBA Fixed | [destoer](https://github.com/destoer) +--- | --- | --- | --- +`main.gba` | PASS | `armwrestler-gba-fixed.gba` | PASS + +## 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) diff --git a/build.zig b/build.zig index 3e04ad6..ad7fcea 100644 --- a/build.zig +++ b/build.zig @@ -6,7 +6,7 @@ const zgui = @import("lib/zgui/build.zig"); pub fn build(b: *std.Build) void { // Minimum Zig Version - const min_ver = std.SemanticVersion.parse("0.11.0-dev.3299+34865d693") catch return; // https://github.com/ziglang/zig/commit/34865d693 + const min_ver = std.SemanticVersion.parse("0.11.0-dev.3395+1e7dcaa3a") catch return; // https://github.com/ziglang/zig/commit/34865d693 if (builtin.zig_version.order(min_ver).compare(.lt)) { std.log.err("{s}", .{b.fmt("Zig v{} does not meet the minimum version requirement. (Zig v{})", .{ builtin.zig_version, min_ver })}); std.os.exit(1);