Commit Graph

449 Commits

Author SHA1 Message Date
Rekai Nyangadzayi Musuka 3c3c0d32dd chore: move window scale const to emu.zig 2022-08-08 11:03:23 +02:00
Rekai Nyangadzayi Musuka 739db99c83 fix: reimpl debug reads w/out throwing away *const Self 2022-08-07 05:11:29 -05:00
Rekai Nyangadzayi Musuka 2c8616f610 feat: reimplement cpu logging 2022-07-27 14:50:28 -03:00
Rekai Nyangadzayi Musuka 53eec5c3ff chore: don't init bus in Arm7tdmi init 2022-07-27 13:44:24 -03:00
Rekai Nyangadzayi Musuka c397b7069d feat: move arm instr decoding to module 2022-07-27 13:23:29 -03:00
Rekai Nyangadzayi Musuka 9d037fdc3e feat: move thumb instr decoding to module 2022-07-27 13:10:58 -03:00
Rekai Nyangadzayi Musuka 53191b0eeb chore: change directory structure 2022-07-22 21:11:19 -03:00
Rekai Nyangadzayi Musuka c7c4a90948 fix: reimplement halt fast-forwarding 2022-07-21 11:25:49 -03:00
Rekai Nyangadzayi Musuka 03ded099d2 chore: move audio sync, video sync variables 2022-07-21 11:05:49 -03:00
Rekai Nyangadzayi Musuka 3b3eb52c48 feat: impl WININ, WINOUT, WIN{N}H and WIN{N}V 2022-06-29 14:56:48 -03:00
Rekai Nyangadzayi Musuka d798aea6ea fix: force align DMA transfers 2022-06-29 04:31:02 -03:00
Rekai Nyangadzayi Musuka 5d37c212e2 fix: resolve bugs in VRAM unpredictable read/writes 2022-06-29 03:59:14 -03:00
Rekai Nyangadzayi Musuka 887bd89668 fix: don't start HDMA in vblank 2022-06-23 05:45:52 -03:00
Rekai Nyangadzayi Musuka 81c669fe64 feat: implement brightness increase/decrease 2022-06-23 04:50:04 -03:00
Rekai Nyangadzayi Musuka 265234ee97 feat: implement object blending 2022-06-23 02:49:56 -03:00
Rekai Nyangadzayi Musuka 02534c5c19 feat: implement background alpha blending 2022-06-19 22:10:56 -03:00
Rekai Nyangadzayi Musuka 5e4fb7b952 feat: implement BLDCNT, BLDALPHA, BLDY 2022-06-19 01:27:14 -03:00
Rekai Nyangadzayi Musuka c9ea80e03b chore: rename + remove some code 2022-06-18 22:01:17 -03:00
Rekai Nyangadzayi Musuka 4cd722e447 fix: properly fire DMA IRQs
This resolves Sound DMA Timing issues present in DOOM
2022-06-18 21:13:12 -03:00
Rekai Nyangadzayi Musuka adfb23fab4 chore: rename Dma.active to Dma.in_progress 2022-06-18 19:15:34 -03:00
Rekai Nyangadzayi Musuka 5bbbdc3469 chore: rewrite info log message 2022-06-18 18:46:40 -03:00
Rekai Nyangadzayi Musuka 47adc0c5ae feat: implement NR10 obscure behaviour 2022-06-18 18:16:29 -03:00
Rekai Nyangadzayi Musuka 601b0b2aae feat: handle all I/O when using Cult-Of-GBA BIOS 2022-06-18 17:50:11 -03:00
Rekai Nyangadzayi Musuka 3becd790cf chore: 32-bit reads for PSG audio 2022-06-18 17:35:52 -03:00
Rekai Nyangadzayi Musuka 460f8308a7 chore: implement more than just 1 cycle per mem access 2022-06-16 22:35:42 -03:00
Rekai Nyangadzayi Musuka cc8c1c1e21 fix: implement register reads for Yoshi's Island 2022-06-16 02:32:31 -03:00
Rekai Nyangadzayi Musuka f5e401a4ee fix: reimplement DMA ticking 2022-06-16 01:46:37 -03:00
Rekai Nyangadzayi Musuka dba8873f76 chore(cpu): add inline fn isHalted() 2022-06-16 00:49:37 -03:00
Rekai Nyangadzayi Musuka db08edbdb9 chore: attempt to debug Rhythm Heaven 2022-06-16 00:03:51 -03:00
Rekai Nyangadzayi Musuka 35dba63b94 fix: impl BG?{X,Y} RefPoint write behaviour outside of Vblank
With this fix Mode 7-like games now properly render their backgrounds
2022-06-15 01:34:34 -03:00
Rekai Nyangadzayi Musuka a753912cb5 chore: change priority of some logs 2022-06-15 01:18:45 -03:00
Rekai Nyangadzayi Musuka 7441af9582 chore: mess with debug statements + mask APU I/O reads 2022-06-15 01:08:43 -03:00
Rekai Nyangadzayi Musuka 708f64035f chore: move timer, apu and dma i/o addr matching outside of io.zig 2022-06-15 00:05:36 -03:00
Rekai Nyangadzayi Musuka e4bbd33a49 chore: separate render code for affine sprites 2022-06-04 20:07:20 -03:00
Rekai Nyangadzayi Musuka 25d13722f7 chore: reimplement object rendering
TODO: implement affine sprites
2022-06-04 13:55:31 -03:00
Rekai Nyangadzayi Musuka 4eb0d469b3 chore: small changes to normal background drawing code 2022-06-04 10:21:03 -03:00
Rekai Nyangadzayi Musuka ce2271100b feat: implement affine backgrounds 2022-06-04 09:49:34 -03:00
Rekai Nyangadzayi Musuka e226a59a2f chore: stub 8-bit window registers 2022-06-04 09:48:59 -03:00
Rekai Nyangadzayi Musuka 7ff5f3b8e7 chore: remove code that pretends to remove DC offset 2022-06-04 09:47:58 -03:00
Rekai Nyangadzayi Musuka b6f5517c89 fix: replace affine bg register bitfields with signed integers 2022-06-03 19:26:52 -03:00
Rekai Nyangadzayi Musuka 2dc3864dca chore: use stdlib endian-aware integer read/write functions 2022-06-03 13:26:55 -03:00
Rekai Nyangadzayi Musuka 38afb567b9 chore: misc style improvements 2022-05-27 22:09:15 -03:00
Rekai Nyangadzayi Musuka 4006888629 chore: rename method in FpsTracker 2022-05-27 21:50:16 -03:00
Rekai Nyangadzayi Musuka 413ff02ad9 fix(backup): resolve banking issue in flash impl 2022-05-27 21:17:50 -03:00
Rekai Nyangadzayi Musuka 517ed7a835 chore: remove awful ptr casts in backup.zig and bios.zig 2022-05-27 20:24:09 -03:00
Rekai Nyangadzayi Musuka d4bc1f2cd0 feat: pass jsmolka's bios.gba 2022-05-27 20:08:09 -03:00
Rekai Nyangadzayi Musuka c6ce810afe fix: play right samples in right channel 2022-05-27 18:47:34 -03:00
Rekai Nyangadzayi Musuka 1170673447 fix: resolve issue when handling event sooner than expected 2022-05-26 17:11:02 -03:00
Rekai Nyangadzayi Musuka c007bf4d8e fix: remove DC offset from audio output 2022-05-26 17:10:10 -03:00
Rekai Nyangadzayi Musuka 697ec46cf1 chore: add debug keybinds for scheduler capacity + event count 2022-05-25 15:13:57 -03:00
Rekai Nyangadzayi Musuka 41ee32b118 perf: don't check scheduler every iteration of runFrame loop
~20fps gain in Pokemon Emerald, nice
2022-05-25 14:17:44 -03:00
Rekai Nyangadzayi Musuka 8f5d054195 chore: simplify 4bpp palette code 2022-05-25 10:10:57 -03:00
Rekai Nyangadzayi Musuka c907552864 perf: convert BGR555 to RGBA8888 at compile-time, access w/ lookup table
Compile speed isn't slowed down by that much + there's a ~20fps gain in
Pokemon emerald, though this isn't anything exact
2022-05-24 13:55:50 -03:00
Rekai Nyangadzayi Musuka ff3f79801c chore: modify type signature of util.sext 2022-05-23 14:48:52 -03:00
Rekai Nyangadzayi Musuka f130d1991c chore: cleanup main 2022-05-23 12:50:01 -03:00
Rekai Nyangadzayi Musuka 24a8905c29 chore: emu audio sync code to emu.zig 2022-05-23 12:05:57 -03:00
Rekai Nyangadzayi Musuka e70fe73899 chore: redo apu sampling 2022-05-23 11:25:28 -03:00
Rekai Nyangadzayi Musuka a2d2a84850 chore: implement apu u16 reads 2022-05-21 15:09:32 -03:00
Rekai Nyangadzayi Musuka 109561310e fix: clean up frequency timer implementations 2022-05-21 14:21:50 -03:00
Rekai Nyangadzayi Musuka 5164aa961d Revert "fix: resolve off-by-one errors when scheduling freq timer expirations"
This reverts commit c9b0030b4b.
2022-05-21 13:46:46 -03:00
Rekai Nyangadzayi Musuka c9b0030b4b fix: resolve off-by-one errors when scheduling freq timer expirations 2022-05-21 13:34:14 -03:00
Rekai Nyangadzayi Musuka af2ad6c924 chore: improve APU accuracy + scheduler refactoring 2022-05-20 16:01:12 -03:00
Rekai Nyangadzayi Musuka c40cc2ba30 feat: stub Affine BG registers 2022-05-18 15:50:40 -03:00
Rekai Nyangadzayi Musuka 8dddb865cc fix: resolve out-of-bounds error with 8bpp tall / horizontal sprites
Boot ROM is now enabled by default as well
2022-05-17 12:16:30 -03:00
Rekai Nyangadzayi Musuka 2e821ab79c chore: improve audio accuracy 2022-05-17 11:28:05 -03:00
Rekai Nyangadzayi Musuka a667269d26 chore: reintroduce thread sleeping + simplify fps counter 2022-05-17 08:55:23 -03:00
Rekai Nyangadzayi Musuka daf977ef06 feat: implement double buffering 2022-05-17 06:53:37 -03:00
Rekai Nyangadzayi Musuka 660c8a2d62 chore: clean up DMA code 2022-05-05 22:36:11 -03:00
Rekai Nyangadzayi Musuka 9d590b099a feat: handle DMA IRQs (maybe?) 2022-05-05 22:04:59 -03:00
Rekai Nyangadzayi Musuka d5443d9c2f chore: contain Timers in a tuple rather than a struct 2022-05-05 20:09:00 -03:00
Rekai Nyangadzayi Musuka f0ce39230b chore: contain DMA Controllers in a tuple rather than a struct 2022-05-05 19:53:12 -03:00
Rekai Nyangadzayi Musuka 208e88e869 chore: resolve incorrect memory mirror in VRAM
+ stub GPIO registers on ROM Write
2022-05-05 16:44:48 -03:00
Rekai Nyangadzayi Musuka 5df023fb41 chore: stub a few I/O registers 2022-05-03 22:41:05 -03:00
Rekai Nyangadzayi Musuka 46ac1542a6 chore: allow 8-bit IO to BG0CNT and BG1CNT
BG0CNT and and BG1CNT now work properly in mario kart
2022-05-01 20:41:00 -03:00
Rekai Nyangadzayi Musuka c2f55e0bfb chore: define affine sprite attributes 2022-05-01 19:15:56 -03:00
Rekai Nyangadzayi Musuka 12f9bb51c1 feat: stub mode 1 and 2 2022-05-01 18:53:11 -03:00
Rekai Nyangadzayi Musuka 41558c9103 feat: implement mode 5
I wonder which obscure game makes heavy use of this mode
2022-05-01 18:10:52 -03:00
Rekai Nyangadzayi Musuka 68012f84d3 chore: comment ARM MSR code + Audio issues 2022-04-30 22:17:34 -05:00
Rekai Nyangadzayi Musuka 640b1f7c5d chore: pass destoer's cond_invalid test 2022-04-30 20:42:47 -05:00
Rekai Nyangadzayi Musuka f2f4bb205a chore: misc print message improvements 2022-04-29 12:41:05 -05:00
Rekai Nyangadzayi Musuka 6c88a0aec2 chore: improvements to APU accuracy 2022-04-29 12:19:31 -05:00
Rekai Nyangadzayi Musuka 002287ecfe fix: incorrect order-of-operations in ARM BL impl 2022-04-27 23:15:39 -05:00
Rekai Nyangadzayi Musuka a87b46898b chore: special case saving for ROMS without titles 2022-04-27 18:08:44 -05:00
Rekai Nyangadzayi Musuka d9c9105449 feat: pass DenSinH's eeprom-test 2022-04-25 17:20:43 -05:00
Rekai Nyangadzayi Musuka 05a432f1c1 feat: implement EEPROM 2022-04-25 16:23:24 -05:00
Rekai Nyangadzayi Musuka f4a48d536c chore: implement I/O regsister for Minish Cap 2022-04-25 08:01:34 -05:00
Rekai Nyangadzayi Musuka 81db06d2fc chore: change default window scale to 4x 2022-04-24 08:33:28 -04:00
Rekai Nyangadzayi Musuka 1812fb8008 chore: write more debug log messages for unimplemented registers 2022-04-22 22:19:26 -03:00
Rekai Nyangadzayi Musuka 762494453f chore: only sync to audio for now 2022-04-22 20:56:52 -03:00
Rekai Nyangadzayi Musuka e3553bcbd6 feat: panic on unimplemented I/O in ReleaseSafe/Debug but not ReleaseFast 2022-04-22 20:56:52 -03:00
Rekai Nyangadzayi Musuka 9cce4d9859 chore: misc improvements 2022-04-21 10:15:52 -03:00
Rekai Nyangadzayi Musuka 75ba9a4bf9 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-04-21 07:56:17 -03:00
Rekai Nyangadzayi Musuka 85e8ca9146 feat: implement Noise
Kirby & The Amazing Mirror crashes only in ReleaseSafe / ReleaseBug.

TODO: Figure out why
2022-04-21 02:40:02 -03:00
Rekai Nyangadzayi Musuka 2f07c18f0b feat: implement ch3 2022-04-21 00:21:55 -03:00
Rekai Nyangadzayi Musuka ed3d275974 feat: implement ch2 2022-04-20 21:33:46 -03:00
Rekai Nyangadzayi Musuka 0184ec3e5e feat: implement ch1
TODO: It's really loud
2022-04-20 20:52:50 -03:00
Rekai Nyangadzayi Musuka 97a689ab55 chore: broken impl of ch1 2022-04-20 09:39:12 -03:00
Rekai Nyangadzayi Musuka c3611a0f00 feat: add audio resampler
Also implement extremely naive audio sync
2022-04-20 06:27:06 -03:00
Rekai Nyangadzayi Musuka d270ec711f chore: calculate apu sample rate a bit better 2022-04-20 02:36:32 -03:00
Rekai Nyangadzayi Musuka 172a59aefb 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-04-14 05:58:32 -03:00