chore: reccomend stable Zig v0.10.0
This commit is contained in:
parent
f774256c42
commit
9eb4f8f191
95
README.md
95
README.md
|
@ -1,15 +1,15 @@
|
||||||
# ZBA (working title)
|
# ZBA (working title)
|
||||||
|
|
||||||
A Game Boy Advance Emulator written in Zig ⚡!
|
A Game Boy Advance Emulator written in Zig ⚡!
|
||||||
|
|
||||||
## Scope
|
## 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](https://github.com/mgba-emu) or [NanoBoyAdvance](https://github.com/nba-emu/NanoBoyAdvance). There aren't any interesting
|
|
||||||
ideas either like in [DSHBA](https://github.com/DenSinH/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
|
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](https://github.com/mgba-emu) or [NanoBoyAdvance](https://github.com/nba-emu/NanoBoyAdvance). There aren't any interesting ideas either like in [DSHBA](https://github.com/DenSinH/DSHBA).
|
||||||
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:
|
|
||||||
|
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
|
||||||
|
|
||||||
### TODO
|
|
||||||
- [ ] Affine Sprites
|
- [ ] Affine Sprites
|
||||||
- [ ] Windowing (see [this branch](https://git.musuka.dev/paoda/zba/src/branch/window))
|
- [ ] Windowing (see [this branch](https://git.musuka.dev/paoda/zba/src/branch/window))
|
||||||
- [ ] Audio Resampler (Having issues with SDL2's)
|
- [ ] Audio Resampler (Having issues with SDL2's)
|
||||||
|
@ -17,6 +17,7 @@ features and the set of possible improvements would be in memory timing or in UI
|
||||||
- [ ] Refactoring for easy-ish perf boosts
|
- [ ] Refactoring for easy-ish perf boosts
|
||||||
|
|
||||||
## Usage
|
## 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.
|
As it currently exists, ZBA is run from the terminal. In your console of choice, type `./zba --help` to see what you can do.
|
||||||
|
|
||||||
I typically find myself typing `./zba -b ./bin/bios.bin ./bin/test/suite.gba` to see how badly my "cool new feature" broke everything else.
|
I typically find myself typing `./zba -b ./bin/bios.bin ./bin/test/suite.gba` to see how badly my "cool new feature" broke everything else.
|
||||||
|
@ -25,65 +26,71 @@ Need a BIOS? Why not try using the open-source [Cult-Of-GBA BIOS](https://github
|
||||||
|
|
||||||
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.
|
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
|
## Tests
|
||||||
|
|
||||||
- [x] [jsmolka's GBA Test Collection](https://github.com/jsmolka/gba-tests)
|
- [x] [jsmolka's GBA Test Collection](https://github.com/jsmolka/gba-tests)
|
||||||
- [x] `arm.gba` and `thumb.gba`
|
- [x] `arm.gba` and `thumb.gba`
|
||||||
- [x] `flash64.gba`, `flash128.gba`, `none.gba`, and `sram.gba`
|
- [x] `flash64.gba`, `flash128.gba`, `none.gba`, and `sram.gba`
|
||||||
- [x] `hello.gba`, `shades.gba`, and `stripes.gba`
|
- [x] `hello.gba`, `shades.gba`, and `stripes.gba`
|
||||||
- [x] `memory.gba`
|
- [x] `memory.gba`
|
||||||
- [x] `bios.gba`
|
- [x] `bios.gba`
|
||||||
- [x] `nes.gba`
|
- [x] `nes.gba`
|
||||||
- [ ] [DenSinH's GBA ROMs](https://github.com/DenSinH/GBARoms)
|
- [ ] [DenSinH's GBA ROMs](https://github.com/DenSinH/GBARoms)
|
||||||
- [x] `eeprom-test` and `flash-test`
|
- [x] `eeprom-test` and `flash-test`
|
||||||
- [x] `midikey2freq`
|
- [x] `midikey2freq`
|
||||||
- [ ] `swi-tests-random`
|
- [ ] `swi-tests-random`
|
||||||
- [ ] [destoer's GBA Tests](https://github.com/destoer/gba_tests)
|
- [ ] [destoer's GBA Tests](https://github.com/destoer/gba_tests)
|
||||||
- [x] `cond_invalid.gba`
|
- [x] `cond_invalid.gba`
|
||||||
- [x] `dma_priority.gba`
|
- [x] `dma_priority.gba`
|
||||||
- [x] `hello_world.gba`
|
- [x] `hello_world.gba`
|
||||||
- [x] `if_ack.gba`
|
- [x] `if_ack.gba`
|
||||||
- [ ] `line_timing.gba`
|
- [ ] `line_timing.gba`
|
||||||
- [ ] `lyc_midline.gba`
|
- [ ] `lyc_midline.gba`
|
||||||
- [ ] `window_midframe.gba`
|
- [ ] `window_midframe.gba`
|
||||||
- [x] [ladystarbreeze's GBA Test Collection](https://github.com/ladystarbreeze/GBA-Test-Collection)
|
- [x] [ladystarbreeze's GBA Test Collection](https://github.com/ladystarbreeze/GBA-Test-Collection)
|
||||||
- [x] `retAddr.gba`
|
- [x] `retAddr.gba`
|
||||||
- [x] `helloWorld.gba`
|
- [x] `helloWorld.gba`
|
||||||
- [x] `helloAudio.gba`
|
- [x] `helloAudio.gba`
|
||||||
- [x] [`armwrestler-gba-fixed.gba`](https://github.com/destoer/armwrestler-gba-fixed)
|
- [x] [`armwrestler-gba-fixed.gba`](https://github.com/destoer/armwrestler-gba-fixed)
|
||||||
- [x] [FuzzARM](https://github.com/DenSinH/FuzzARM)
|
- [x] [FuzzARM](https://github.com/DenSinH/FuzzARM)
|
||||||
|
|
||||||
## Resources
|
## Resources
|
||||||
* [GBATEK](https://problemkaputt.de/gbatek.htm)
|
|
||||||
* [TONC](https://coranac.com/tonc/text/toc.htm)
|
- [GBATEK](https://problemkaputt.de/gbatek.htm)
|
||||||
* [ARM Architecture Reference Manual](https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/third-party/ddi0100e_arm_arm.pdf)
|
- [TONC](https://coranac.com/tonc/text/toc.htm)
|
||||||
* [ARM7TDMI Data Sheet](https://www.dca.fee.unicamp.br/cursos/EA871/references/ARM/ARM7TDMIDataSheet.pdf)
|
- [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
|
## Compiling
|
||||||
Most recently built on Zig [0.10.0-dev.4720+9b54c9dee](https://github.com/ziglang/zig/tree/9b54c9dee)
|
|
||||||
|
Most recently built on Zig [v0.10.0](https://github.com/ziglang/zig/tree/0.10.0)
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
* [SDL.zig](https://github.com/MasterQ32/SDL.zig)
|
|
||||||
* [SDL2](https://www.libsdl.org/download-2.0.php)
|
- [SDL.zig](https://github.com/MasterQ32/SDL.zig)
|
||||||
* [zig-clap](https://github.com/Hejsil/zig-clap)
|
- [SDL2](https://www.libsdl.org/download-2.0.php)
|
||||||
* [known-folders](https://github.com/ziglibs/known-folders)
|
- [zig-clap](https://github.com/Hejsil/zig-clap)
|
||||||
* [zig-toml](https://github.com/aeronavery/zig-toml)
|
- [known-folders](https://github.com/ziglibs/known-folders)
|
||||||
* [zig-datetime](https://github.com/frmdstryr/zig-datetime)
|
- [zig-toml](https://github.com/aeronavery/zig-toml)
|
||||||
* [`bitfields.zig`](https://github.com/FlorenceOS/Florence/blob/aaa5a9e568/lib/util/bitfields.zig)
|
- [zig-datetime](https://github.com/frmdstryr/zig-datetime)
|
||||||
|
- [`bitfields.zig`](https://github.com/FlorenceOS/Florence/blob/aaa5a9e568/lib/util/bitfields.zig)
|
||||||
|
|
||||||
`bitfields.zig` from [FlorenceOS](https://github.com/FlorenceOS) is included under `lib/util/bitfield.zig`.
|
`bitfields.zig` from [FlorenceOS](https://github.com/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`
|
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:
|
Be sure to provide SDL2 using:
|
||||||
* Linux: Your distro's package manager
|
|
||||||
* MacOS: ¯\\\_(ツ)_/¯
|
|
||||||
* Windows: [`vcpkg`](https://github.com/Microsoft/vcpkg) (install `sdl2:x64-windows`)
|
|
||||||
|
|
||||||
`SDL.zig` will provide a helpful compile error if the zig compiler is unable to find SDL2.
|
- Linux: Your distro's package manager
|
||||||
|
- MacOS: ¯\\\_(ツ)_/¯
|
||||||
|
- Windows: [`vcpkg`](https://github.com/Microsoft/vcpkg) (install `sdl2:x64-windows`)
|
||||||
|
|
||||||
Once you've got all the dependencies, execute `zig build -Drelease-fast`. The executable is located at `zig-out/bin/`.
|
`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
|
## Controls
|
||||||
|
|
||||||
Key | Button
|
Key | Button
|
||||||
--- | ---
|
--- | ---
|
||||||
<kbd>X</kbd> | A
|
<kbd>X</kbd> | A
|
||||||
|
|
Loading…
Reference in New Issue