Commit Graph

136 Commits

Author SHA1 Message Date
Rekai Nyangadzayi Musuka 4a1a21a08f chore: satisfy clippy 2021-11-30 04:13:12 -04:00
Rekai Nyangadzayi Musuka c10816c048 chore: imrpove private and public APIs 2021-11-24 22:12:26 -04:00
Rekai Nyangadzayi Musuka 2405fd027f chore: remove Emulator struct 2021-11-21 05:27:04 -04:00
Rekai Nyangadzayi Musuka 6f5e863645 chore: drop pixels-rs and add egui w/ wgpu backend 2021-11-15 21:34:24 -04:00
Rekai Nyangadzayi Musuka 6f76571d6c chore: update README 2021-11-05 22:40:31 -03:00
Rekai Nyangadzayi Musuka 55da5a29d8 chore: remove more getters 2021-11-01 18:04:22 +09:00
Rekai Nyangadzayi Musuka 548945a4ee chore: remove imports of tracing macros 2021-10-30 16:41:06 +09:00
Rekai Nyangadzayi Musuka b9519d9b7a chore(bus): stub some CGB IO registers 2021-10-30 14:02:05 +09:00
Rekai Nyangadzayi Musuka 01278ca83f chore: reduce size of public interface 2021-10-30 10:28:20 +09:00
Rekai Nyangadzayi Musuka 080c1e7518 fix(bus): don't panic on non-existent cartridge 2021-10-28 22:19:38 -03:00
Rekai Nyangadzayi Musuka 293e5762c3 chore: small code-cleanup changes 2021-10-20 02:48:44 -03:00
Rekai Nyangadzayi Musuka ce121864d2 feat: implement cartridge saving
Implemented for MBC1, MBC2, MBC3 and MBC5
2021-09-20 04:13:25 -03:00
Rekai Nyangadzayi Musuka 5882678bc5 chore: inline some functions
continuous-integration/drone/push Build was killed Details
2021-09-20 01:34:41 -03:00
Rekai Nyangadzayi Musuka bcd67cb317 chore: begin refactor of public api 2021-09-20 01:34:21 -03:00
Rekai Nyangadzayi Musuka aa22e93049 chore: clean up TODO messages
continuous-integration/drone/push Build is passing Details
2021-08-15 23:31:27 -05:00
Rekai Nyangadzayi Musuka 16c2dd81fc fix(bus): remove dead code 2021-08-14 15:02:25 -05:00
Rekai Nyangadzayi Musuka 8625bec059 feat: clock bus on instruction read-write
continuous-integration/drone/push Build is failing Details
Commit also includes general work towards passing mem-timings.

Note: while cpu_instrs.gb passes, instr_timing.gb and mem_timing.gb both
are stuck in infinite loops (Currently, it seems like a timing issue).
This is a major regression that hopefully shouldn't last for too long.
2021-08-14 00:10:51 -05:00
Rekai Nyangadzayi Musuka a549b9feef chore(bus): suppress warning 2021-08-02 21:55:07 -05:00
Rekai Nyangadzayi Musuka 7112cd15e3 chore(cpu): refactor SM83 implementation
continuous-integration/drone/push Build is passing Details
Instruction::decode no longer requires mutable access to the CPU
2021-07-31 20:29:13 -05:00
Rekai Nyangadzayi Musuka 2af673d7c5 chore: remove various warnings
continuous-integration/drone/push Build is passing Details
2021-07-28 16:25:29 -05:00
Rekai Nyangadzayi Musuka 903cfacad3 fix(apu): replace mpsc with spsc ringbuffer
continuous-integration/drone/push Build is passing Details
2021-07-28 02:01:04 -05:00
Rekai Nyangadzayi Musuka 9d0e099a97 chore: remove unnecessary derivations from structs 2021-07-28 00:09:07 -05:00
Rekai Nyangadzayi Musuka c7e3cb5b35 fix(apu): abstract Apu read/write using BusIO trait
continuous-integration/drone/push Build is passing Details
2021-07-25 18:19:27 -05:00
Rekai Nyangadzayi Musuka e4d77d66ba fix(apu): abstract wave RAM behind BusIO trait 2021-07-25 18:03:11 -05:00
Rekai Nyangadzayi Musuka 9e36e86c14 fix(apu): increase accuracy of apu
continuous-integration/drone/push Build is passing Details
Due to this, not all instruments work. This is a regression and will be
fixed in a later commit when presumably the implementation of the APU is
a bit more correct
2021-07-25 17:42:09 -05:00
Rekai Nyangadzayi Musuka 6f6c308d84 fix(apu): implement write guards for Ch1 & Ch1 when disabled 2021-07-18 22:10:32 -05:00
Rekai Nyangadzayi Musuka f429d72882 chore(bus): remove panics in IO bus read/write failures with stderr msgs 2021-07-18 21:52:22 -05:00
Rekai Nyangadzayi Musuka c1430594cf chore(apu): change access modifiers of some methods 2021-07-18 20:58:02 -05:00
Rekai Nyangadzayi Musuka a1eadc0bc4 chore(apu): rename sound/snd to apu
continuous-integration/drone/push Build is passing Details
2021-07-14 23:45:01 -05:00
Rekai Nyangadzayi Musuka ea53f97312 chore(snd): refactor APU implementation 2021-07-14 23:34:00 -05:00
Rekai Nyangadzayi Musuka 08bd33b4d4 fix(snd): replace Audio Sync solution with a faster one
continuous-integration/drone/push Build is passing Details
2021-07-14 22:35:37 -05:00
Rekai Nyangadzayi Musuka 2b5926e533 chore(snd): Make AudioReceiver and AudioSender structs generic 2021-07-14 22:34:57 -05:00
Rekai Nyangadzayi Musuka 44b605970f chore(snd): rename some structs 2021-07-12 10:03:45 -05:00
Rekai Nyangadzayi Musuka b13444c885 feat(snd): simplify audio buffer
continuous-integration/drone/push Build is passing Details
The audio buffer now is held by crossbeam. The developers of said
library could write a batter queue than I could anyday
2021-07-11 23:48:16 -05:00
Rekai Nyangadzayi Musuka 3b772c7c49 feat(snd): synchronize audio with rest of system
In it's current form I think this is actually rather inefficient. It's
also not very accurate since I throw away a lot of samples for no real
good reason. More improvements to thiss will be coming henceforth
2021-07-11 23:22:17 -05:00
Rekai Nyangadzayi Musuka 91d19a7e66 chore(snd): mask unreadable bits from return values 2021-07-09 21:16:33 -05:00
Rekai Nyangadzayi Musuka ce630baa5d feat(snd): implement audio playback using rodio
continuous-integration/drone/push Build is failing Details
2021-07-09 01:25:52 -05:00
Rekai Nyangadzayi Musuka 0fa818a1a6 chore(snd): reimplement NR52 & implement sampling for ch2
Also add rodio as dependency for audio
2021-07-08 22:36:28 -05:00
Rekai Nyangadzayi Musuka 39af03aebf chore(bus): stub 0xFF4D 2021-07-01 23:09:02 -05:00
Rekai Nyangadzayi Musuka fc4a898177 chore: reorganize select parts of codebase 2021-06-27 20:28:29 -05:00
Rekai Nyangadzayi Musuka 278953ab78 chore(snd): implement shift amount for channel 3 volume 2021-06-24 01:13:58 -05:00
Rekai Nyangadzayi Musuka 67e2a6ad79 feat(snd): implement ch 1,2,3 and 4 length function 2021-06-24 01:00:07 -05:00
Rekai Nyangadzayi Musuka 0c843b9ca9 feat(snd): implement volume envelope in ch1, 2 and 4 2021-06-23 21:49:25 -05:00
Rekai Nyangadzayi Musuka d9db3e404f fix(ppu): stub IO address 0xFF7F
Tetris now runs without requiring any local modifications
2021-06-15 01:19:40 -05:00
Rekai Nyangadzayi Musuka fe8598fd61 feat(snd): implement ch4 2021-06-15 01:11:18 -05:00
Rekai Nyangadzayi Musuka 5b041d4713 chore(bus): rename sound property to snd 2021-06-15 00:30:08 -05:00
Rekai Nyangadzayi Musuka 909972d36e feat(snd): implement channel 3 2021-06-15 00:29:31 -05:00
Rekai Nyangadzayi Musuka e45c13f719 feat(sound): implement NR10 2021-06-14 23:51:37 -05:00
Rekai Nyangadzayi Musuka 6a7ff66274 chore(sound): implement channel 2 registers 2021-06-14 23:37:30 -05:00
Rekai Nyangadzayi Musuka 17024c439a chore(ppu): emu now properly handles VRAM and OAM write guards 2021-06-09 22:04:06 -05:00