Commit Graph

477 Commits

Author SHA1 Message Date
Rekai Nyangadzayi Musuka fa3b9c21b9 chore: move Gpio and Clock structs to separate file 2022-09-18 00:37:45 -03:00
Rekai Nyangadzayi Musuka 50adb5fbac feat: add option to force-enable RTC 2022-09-17 20:27:17 -03:00
Rekai Nyangadzayi Musuka 19d78b9292 feat: auto-detect RTC in commercial ROMS 2022-09-17 20:23:49 -03:00
Rekai Nyangadzayi Musuka a2e702c366 fix: account for lateness in RTC scheduler event 2022-09-17 09:07:31 -03:00
Rekai Nyangadzayi Musuka 12c138364d fix: RTC day is 6 bits wide, not 3 2022-09-16 10:59:41 -03:00
Rekai Nyangadzayi Musuka 7783c11fac feat: put RTC Sync on Scheduler
TODO: Database to see what games have what GPIO devices
2022-09-16 10:39:02 -03:00
Rekai Nyangadzayi Musuka 3fc3366c8a chore: import datetime library + default time for RTC 2022-09-16 10:39:02 -03:00
Rekai Nyangadzayi Musuka d6b182f245 fix: ignore RTC Time/DateTime writes
this falls in-line with better emulators
2022-09-16 10:39:02 -03:00
Rekai Nyangadzayi Musuka 3857c44e68 chore: use Clock.Writer for Command parsing, delete Clock.Command 2022-09-16 10:39:02 -03:00
Rekai Nyangadzayi Musuka 089c5fa025 feat: implement RTC Read/Writes 2022-09-16 10:39:02 -03:00
Rekai Nyangadzayi Musuka c977f3f965 feat: implement force irqs for GPIO/RTC 2022-09-16 10:38:51 -03:00
Rekai Nyangadzayi Musuka 92417025e9 fix: properly resovle stack UAF 2022-09-16 02:10:41 -03:00
Rekai Nyangadzayi Musuka 1c52c0bf91 chore: shorten `orelse @panic` to `.?` 2022-09-16 02:10:41 -03:00
Rekai Nyangadzayi Musuka 617f7f4690 fix: update GpioData extern union
u4's are no longer supported in extern unions :\
2022-09-16 02:10:41 -03:00
Rekai Nyangadzayi Musuka 434a0dfac9 tmp: incomplete impl of GPIO + RTC 2022-09-16 02:10:41 -03:00
Rekai Nyangadzayi Musuka 4ec8dab460 chore: Guilty Gear X expects these I/O Registers 2022-09-14 11:38:26 -03:00
Rekai Nyangadzayi Musuka 59c9ff910e feat: implement open bus for unmapped i/o 2022-09-12 23:18:29 -03:00
Rekai Nyangadzayi Musuka 0027d3f8a3 chore: comment open bus impl 2022-09-11 07:38:55 -03:00
Rekai Nyangadzayi Musuka 65cfc97f28 feat: reimplement audio sync
APU will now drop samples if the Audio Queue is already full, therefore
creating a "sped-up" effect when the emulator runs faster than 100%
2022-09-08 20:38:42 -03:00
Rekai Nyangadzayi Musuka fa862f095a chore: move arm/thumb lut idx functions 2022-09-06 23:58:24 -03:00
Rekai Nyangadzayi Musuka 3fb7f2f814 chore: better conform to zig idioms 2022-09-03 18:30:48 -03:00
Rekai Nyangadzayi Musuka 59669ba3a5 chore: rename arm7tdmi variables to just cpu
Less verbose, specifying arm7tdmi doesn't really do much when there's
no other CPU in the system
2022-09-03 17:56:37 -03:00
Rekai Nyangadzayi Musuka 6a798d2c9d chore: allocate sprite array on heap
Each Sprite optional is 10 bytes meaning I'm allocating 1.28Kb on the
stack which isn't necessary.
2022-08-29 01:07:25 -05:00
Rekai Nyangadzayi Musuka 5f8c6833f4 chore: improve init/deinit methods 2022-08-29 01:07:25 -05:00
Rekai Nyangadzayi Musuka aa52bb5917 chore: reorganize some code 2022-08-26 14:13:49 -05:00
Rekai Nyangadzayi Musuka e57f918856 chore: pass the allocator as an argument more often
As of right now, I think the only cases where I shouldn't explicitly pass an allocator
are in read/write functions and deinits
2022-08-26 13:54:38 -05:00
Rekai Nyangadzayi Musuka e5b7441740 fix: resolve use-afer-free in backup.zig
This worked fine on stage1, and works fine in debug in stage3.
However, stage3 ReleaseSafe would panic due to what I assume must
have been an undefined behaviour optimization.

While I'm happy that I was quickly made aware of the issue thanks to
the safety checks in ReleaseSafe I do wish that this issue showed itself
in Debug, since I *am* using the GPA
2022-08-26 13:04:09 -05:00
Rekai Nyangadzayi Musuka 2ab8769b7a feat: Get ZBA working on Zig's new stage2/stage3 compiler 2022-08-21 12:28:31 -05:00
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