Rekai Nyangadzayi Musuka
ff002f18c6
feat: handle DMA IRQs (maybe?)
2022-10-21 05:12:42 -03:00
Rekai Nyangadzayi Musuka
5d5d3827fb
chore: contain Timers in a tuple rather than a struct
2022-10-21 05:12:42 -03:00
Rekai Nyangadzayi Musuka
8826242bf3
chore: contain DMA Controllers in a tuple rather than a struct
2022-10-21 05:12:41 -03:00
Rekai Nyangadzayi Musuka
746c28004f
feat: implement EEPROM
2022-10-21 05:12:38 -03:00
Rekai Nyangadzayi Musuka
7a670c6ed9
feat: panic on unimplemented I/O in ReleaseSafe/Debug but not ReleaseFast
2022-10-21 05:12:38 -03:00
Rekai Nyangadzayi Musuka
e690f88cda
chore: misc improvements
2022-10-21 05:12:37 -03:00
Rekai Nyangadzayi Musuka
c7f537959b
fix: improper lifetime for *Arm7tdmi ptr in Bus
...
*Arm7tdmi ptr is now assigned one scope up so that it lives as least
as long as Bus does
2022-10-21 05:12:37 -03:00
Rekai Nyangadzayi Musuka
af1887e0a6
feat: schedule audio sampling on scheduler
...
DMA sound in games like Pokemon Emerald, Chobits, Love Hina, and Kirby:
Nightmare in Dream Land sound great save for conerns about resampling
2022-10-21 05:12:36 -03:00
Rekai Nyangadzayi Musuka
eecd78a008
feat: impelemt THUMB open bus
2022-10-21 05:12:35 -03:00
Rekai Nyangadzayi Musuka
c03c142b14
feat: implement ARM read open bus
2022-10-21 05:12:35 -03:00
Rekai Nyangadzayi Musuka
27ad8772ea
feat: pass jsmolka memory.gba
2022-10-21 05:12:34 -03:00
Rekai Nyangadzayi Musuka
f039c891c7
feat: Initial Implementation of DMA Audio
2022-10-21 05:12:33 -03:00
Rekai Nyangadzayi Musuka
e69f4cfafe
chore: tick scheduler on memory access
2022-10-21 05:12:33 -03:00
Rekai Nyangadzayi Musuka
d4aac22e34
chore: rewrite I/O read/writes
2022-10-21 05:12:33 -03:00
Rekai Nyangadzayi Musuka
601e717850
chore: reimplement bus read/writes
2022-10-21 05:12:33 -03:00
Rekai Nyangadzayi Musuka
886b9abf3d
fix: force align reads/writes in memory bus rather than in CPU
2022-10-21 05:12:32 -03:00
Rekai Nyangadzayi Musuka
9c87b9820e
fix: pass none.gba and kind of sram.gba from jsmolka test suite
2022-10-21 05:12:32 -03:00
Rekai Nyangadzayi Musuka
677eecad41
chore: rewrite read/write methods for remainig Bus devices
2022-10-21 05:12:32 -03:00
Rekai Nyangadzayi Musuka
74b6fa2ecc
chore: mirror VRAM
2022-10-21 05:12:31 -03:00
Rekai Nyangadzayi Musuka
effb6315e9
chore: write generic read/write for VRAM
2022-10-21 05:12:31 -03:00
Rekai Nyangadzayi Musuka
147f6ac9ec
Revert "chore: tick on memory access instead of 1cpi"
...
This reverts commit 7f555095f2
.
2022-10-21 05:12:30 -03:00
Rekai Nyangadzayi Musuka
84273cbdad
chore: tick on memory access instead of 1cpi
2022-10-21 05:12:30 -03:00
Rekai Nyangadzayi Musuka
f12800f2d0
chore: stub more apu I/O addresses
2022-10-21 05:12:30 -03:00
Rekai Nyangadzayi Musuka
ad9463dcb9
feat: implement SRAM saving and loading
2022-10-21 05:12:29 -03:00
Rekai Nyangadzayi Musuka
5ecbcc9f33
fix: implement proper SRAM mirroring and stub Flash
2022-10-21 05:12:28 -03:00
Rekai Nyangadzayi Musuka
2d16e4a4e6
chore: move DMA and Timers from io to bus
2022-10-21 05:12:28 -03:00
Rekai Nyangadzayi Musuka
bb9dc45e0c
feat: define APU registers
2022-10-21 05:12:27 -03:00
Rekai Nyangadzayi Musuka
a768d28e7c
chore: organize io switch statements
2022-10-21 05:12:26 -03:00
Rekai Nyangadzayi Musuka
efd99f16e0
fix: mirror SRAM
...
SRAM is mirrored in 64K chunks
TODO: According to GBATEK SRAM chips are 32K and mirrored
2022-10-21 05:12:26 -03:00
Rekai Nyangadzayi Musuka
61d6288fec
chore: don't panic on unknown bus and io writes/reads
...
This will lead to emulation bugs due to devices I've yet to implement but by
doing this a lot of games become playable "by default" such as Doom or
Kirby: Nightmare in Dream Land.
When implementing feature and/or debuggin make sure to set:
panic_on_und_bus and panic_on_und_io to true so that the emu crashes
on unknown reads/writes
2022-10-21 05:12:26 -03:00
Rekai Nyangadzayi Musuka
e3e45cd129
feat: implement Timers
2022-10-21 05:12:26 -03:00
Rekai Nyangadzayi Musuka
d54e593276
chore: clean up io
2022-10-21 05:12:25 -03:00
Rekai Nyangadzayi Musuka
d4c7cfdf8b
feat: impelement a barebones SRAM
2022-10-21 05:12:23 -03:00
Rekai Nyangadzayi Musuka
d1fce8ba75
chore: improve Bus log + panic messages
2022-10-21 05:12:22 -03:00
Rekai Nyangadzayi Musuka
4afcbd0957
feat: implement mirroring for IWRAM EWRAM, OAM and PALRAM
...
Also realized I confused IWRAM and EWRAM. This is also fixed
TODO: Implemnt Mirroring for VRRAM
2022-10-21 05:12:22 -03:00
Rekai Nyangadzayi Musuka
acf1a10f91
chore: don't panic on 32-bit I/O
2022-10-21 05:12:21 -03:00
Rekai Nyangadzayi Musuka
223a3403c0
chore: give io read/write functions access to the entire Bus
2022-10-21 05:12:20 -03:00
Rekai Nyangadzayi Musuka
bfdad9fa32
feat: implement OAM
2022-10-21 05:12:19 -03:00
Rekai Nyangadzayi Musuka
603e4b6fdf
chore: make use of scoped logging
2022-10-21 05:12:18 -03:00
Rekai Nyangadzayi Musuka
8006ca31e6
chore: remove unnecessary @as calls
2022-10-21 05:12:16 -03:00
Rekai Nyangadzayi Musuka
17b91db2ef
feat: integrate zig-clap with ZBA
2022-10-21 05:12:13 -03:00
Rekai Nyangadzayi Musuka
52493831cc
chore(io): implement IE and IME
2022-10-21 05:11:54 -03:00
Rekai Nyangadzayi Musuka
97e663febf
fix(bus): remove accidental recursion
2022-10-21 05:11:54 -03:00
Rekai Nyangadzayi Musuka
670347d4a0
feat(bus): implement IWRAM and EWRAM
2022-10-21 05:11:53 -03:00
Rekai Nyangadzayi Musuka
2cec8d9f70
chore: improve code clarity
2022-10-21 05:11:51 -03:00
Rekai Nyangadzayi Musuka
036b861b05
chore: code cleanup
2022-10-21 05:11:50 -03:00
Rekai Nyangadzayi Musuka
880546468c
chore(bus): refactor bus.zig
2022-10-21 05:11:50 -03:00