264 Commits

Author SHA1 Message Date
74cda6a1d0 fix: resolve relative sprite priority issues 2022-10-21 05:12:27 -03:00
d7354cca33 chore: improve accuracy of frame limiter 2022-10-21 05:12:27 -03:00
7684cf0f4a chore: improve accuracy of thread sleep in emu thread 2022-10-21 05:12:27 -03:00
3994c2c7c8 feat: implement video sync 2022-10-21 05:12:26 -03:00
a768d28e7c chore: organize io switch statements 2022-10-21 05:12:26 -03:00
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
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
e3e45cd129 feat: implement Timers 2022-10-21 05:12:26 -03:00
15191aedca fix: implement sprite coord overflow behaviour 2022-10-21 05:12:26 -03:00
63486f13f2 fix: resolve issues with sprite mirroring 2022-10-21 05:12:25 -03:00
17455e40d1 feat: Implement MVP of Mode 0 Sprites 2022-10-21 05:12:25 -03:00
d54e593276 chore: clean up io 2022-10-21 05:12:25 -03:00
c6a544a824 feat: fix tile flipping issue 2022-10-21 05:12:25 -03:00
e3ae3635bc chore: add some type definitions for sprites 2022-10-21 05:12:25 -03:00
6723bfb364 feat: improve DMA Transfer support 2022-10-21 05:12:25 -03:00
12c628e82c chore(ppu): resolve integer overflow regression 2022-10-21 05:12:24 -03:00
5f9abf69d3 feat(ppu): implement bg priority and transparency 2022-10-21 05:12:24 -03:00
351a687a2d chore: update README.md 2022-10-21 05:12:24 -03:00
68b0601a42 chore: replace unnecessarily complex sign extension implementation 2022-10-21 05:12:24 -03:00
9455ffe837 feat: pass beeg yoshi 2022-10-21 05:12:24 -03:00
02d2ff3e0c fix: palette id is a u16 not a u8 2022-10-21 05:12:24 -03:00
02572dd15c feat: DMA Transfer MVP 2022-10-21 05:12:23 -03:00
6d253cc74e feat(ppu): implement transparency + backdrop in mode 0 2022-10-21 05:12:23 -03:00
4885a86833 chore(io): replace some bitfields with enums 2022-10-21 05:12:23 -03:00
fd9ffb20b4 fix: better emulate behaviour of IO reads 2022-10-21 05:12:23 -03:00
56ef2b077a chore: document select unimplmented I/O registers
These registers are written to / read from Kirby: Nightmare in Dream Land
2022-10-21 05:12:23 -03:00
d4c7cfdf8b feat: impelement a barebones SRAM 2022-10-21 05:12:23 -03:00
4d75d156e5 feat: pass retAddr.gba 2022-10-21 05:12:22 -03:00
d30a4d7ee5 feat: implement Hblank and Vcount Interrupts
Also implemented unique behaviour when writing to IF
2022-10-21 05:12:22 -03:00
d1fce8ba75 chore: improve Bus log + panic messages 2022-10-21 05:12:22 -03:00
0f74e4fcf9 chore: improve io.zig 2022-10-21 05:12:22 -03:00
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
50dc31447d fix: resolve integer overflow in BG0 Drawing 2022-10-21 05:12:22 -03:00
acf1a10f91 chore: don't panic on 32-bit I/O 2022-10-21 05:12:21 -03:00
606f9b959a chore: stub CPU HALTing 2022-10-21 05:12:21 -03:00
f19b42baf3 chore: correct logic errors in map size 1 and 3 2022-10-21 05:12:21 -03:00
2a3d0c8b0d chore: properly write to VOFS and HOFS in 32-bit bus 2022-10-21 05:12:21 -03:00
4405fa6bbf feat: implement hofs and vofs on io bus 2022-10-21 05:12:21 -03:00
e2b2bf882a feat: implement scrolling 2022-10-21 05:12:21 -03:00
08e4eb1bf1 feat: add support for multiple BGs in Mode 0 2022-10-21 05:12:20 -03:00
f4b176a813 feat: document mode 0 2022-10-21 05:12:20 -03:00
efc7d817db feat: Mode 0 MVP 2022-10-21 05:12:20 -03:00
1b17b1eb0c chore: use zig slices for fun 2022-10-21 05:12:20 -03:00
fab6d4c2a2 chore: give DISPCNT DISPSTAT and VCOUNT to PPU struct 2022-10-21 05:12:20 -03:00
223a3403c0 chore: give io read/write functions access to the entire Bus 2022-10-21 05:12:20 -03:00
dfd0d064de feat: implement BG Scrolling Registers 2022-10-21 05:12:19 -03:00
0c4882e658 feat: impelemnt BG0,1,2CNT and IF 2022-10-21 05:12:19 -03:00
bfdad9fa32 feat: implement OAM 2022-10-21 05:12:19 -03:00
37fd8dab84 chore: squash bugs preventing swi_demo.gba from working 2022-10-21 05:12:19 -03:00
c143aefb01 chore(cpu): reimplement bank switching logic 2022-10-21 05:12:19 -03:00