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
Rekai Nyangadzayi Musuka
2b7958f5f3
chore(bus): add a select few read/write guards
2021-06-09 20:48:31 -05:00
Rekai Nyangadzayi Musuka
50efe12aec
chore: change how bus components are clocked
2021-06-09 19:41:10 -05:00
Rekai Nyangadzayi Musuka
a904503b90
chore: document IO registers
2021-06-09 13:43:46 -05:00
Rekai Nyangadzayi Musuka
1449ed3765
fix(joypad): reimplement joypad
2021-06-07 17:23:48 -05:00
Rekai Nyangadzayi Musuka
dd86330e1d
fix(bus): Fix address calculation error in Echo RAM
2021-06-07 00:22:11 -05:00
Rekai Nyangadzayi Musuka
d5e67568dd
chore(bus): temporarily disable VRAM and OAM gates
...
There appears to be severe timing issues in the ppu which result in
regressions with these gates enabled. They are commented out for now,
but will be re-enabled once the timing issues in the PPU are fixed
2021-06-07 00:01:40 -05:00
Rekai Nyangadzayi Musuka
e8e6c41dbe
fix(dma): initial version of dma transfer now works
2021-06-06 23:57:54 -05:00
Rekai Nyangadzayi Musuka
d623800005
fix: apply clippy suggestions
2021-06-06 21:30:08 -05:00
Rekai Nyangadzayi Musuka
c428e934d8
fix(bus): improve guards for illlegal memory IO
2021-06-06 21:18:19 -05:00
Rekai Nyangadzayi Musuka
ef4e54aba6
chore: restrict what should be pub or not
2021-06-06 20:47:11 -05:00
Rekai Nyangadzayi Musuka
878edd4082
chore: replace pub with pub(crate) when possible
2021-06-06 19:14:28 -05:00
Rekai Nyangadzayi Musuka
b7b213b6b9
chore(bus): implement read/write blocks when dma is active
2021-06-05 20:53:35 -05:00
Rekai Nyangadzayi Musuka
811a9f9cc9
feat(dma): implement non-working dma transfer
2021-06-04 13:47:06 -05:00
Rekai Nyangadzayi Musuka
86f3a897f1
feat(egui): add timer window
2021-06-02 02:44:32 -05:00