080c1e7518
fix(bus): don't panic on non-existent cartridge
2021-10-28 22:19:38 -03:00
293e5762c3
chore: small code-cleanup changes
2021-10-20 02:48:44 -03:00
ce121864d2
feat: implement cartridge saving
...
Implemented for MBC1, MBC2, MBC3 and MBC5
2021-09-20 04:13:25 -03:00
5882678bc5
chore: inline some functions
continuous-integration/drone/push Build was killed
2021-09-20 01:34:41 -03:00
bcd67cb317
chore: begin refactor of public api
2021-09-20 01:34:21 -03:00
aa22e93049
chore: clean up TODO messages
continuous-integration/drone/push Build is passing
2021-08-15 23:31:27 -05:00
16c2dd81fc
fix(bus): remove dead code
2021-08-14 15:02:25 -05:00
8625bec059
feat: clock bus on instruction read-write
...
continuous-integration/drone/push Build is failing
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
a549b9feef
chore(bus): suppress warning
2021-08-02 21:55:07 -05:00
7112cd15e3
chore(cpu): refactor SM83 implementation
...
continuous-integration/drone/push Build is passing
Instruction::decode no longer requires mutable access to the CPU
2021-07-31 20:29:13 -05:00
2af673d7c5
chore: remove various warnings
continuous-integration/drone/push Build is passing
2021-07-28 16:25:29 -05:00
903cfacad3
fix(apu): replace mpsc with spsc ringbuffer
continuous-integration/drone/push Build is passing
2021-07-28 02:01:04 -05:00
9d0e099a97
chore: remove unnecessary derivations from structs
2021-07-28 00:09:07 -05:00
c7e3cb5b35
fix(apu): abstract Apu read/write using BusIO trait
continuous-integration/drone/push Build is passing
2021-07-25 18:19:27 -05:00
e4d77d66ba
fix(apu): abstract wave RAM behind BusIO trait
2021-07-25 18:03:11 -05:00
9e36e86c14
fix(apu): increase accuracy of apu
...
continuous-integration/drone/push Build is passing
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
6f6c308d84
fix(apu): implement write guards for Ch1 & Ch1 when disabled
2021-07-18 22:10:32 -05:00
f429d72882
chore(bus): remove panics in IO bus read/write failures with stderr msgs
2021-07-18 21:52:22 -05:00
c1430594cf
chore(apu): change access modifiers of some methods
2021-07-18 20:58:02 -05:00
a1eadc0bc4
chore(apu): rename sound/snd to apu
continuous-integration/drone/push Build is passing
2021-07-14 23:45:01 -05:00
ea53f97312
chore(snd): refactor APU implementation
2021-07-14 23:34:00 -05:00
08bd33b4d4
fix(snd): replace Audio Sync solution with a faster one
continuous-integration/drone/push Build is passing
2021-07-14 22:35:37 -05:00
2b5926e533
chore(snd): Make AudioReceiver and AudioSender structs generic
2021-07-14 22:34:57 -05:00
44b605970f
chore(snd): rename some structs
2021-07-12 10:03:45 -05:00
b13444c885
feat(snd): simplify audio buffer
...
continuous-integration/drone/push Build is passing
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
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
91d19a7e66
chore(snd): mask unreadable bits from return values
2021-07-09 21:16:33 -05:00
ce630baa5d
feat(snd): implement audio playback using rodio
continuous-integration/drone/push Build is failing
2021-07-09 01:25:52 -05:00
0fa818a1a6
chore(snd): reimplement NR52 & implement sampling for ch2
...
Also add rodio as dependency for audio
2021-07-08 22:36:28 -05:00
39af03aebf
chore(bus): stub 0xFF4D
2021-07-01 23:09:02 -05:00
fc4a898177
chore: reorganize select parts of codebase
2021-06-27 20:28:29 -05:00
278953ab78
chore(snd): implement shift amount for channel 3 volume
2021-06-24 01:13:58 -05:00
67e2a6ad79
feat(snd): implement ch 1,2,3 and 4 length function
2021-06-24 01:00:07 -05:00
0c843b9ca9
feat(snd): implement volume envelope in ch1, 2 and 4
2021-06-23 21:49:25 -05:00
d9db3e404f
fix(ppu): stub IO address 0xFF7F
...
Tetris now runs without requiring any local modifications
2021-06-15 01:19:40 -05:00
fe8598fd61
feat(snd): implement ch4
2021-06-15 01:11:18 -05:00
5b041d4713
chore(bus): rename sound property to snd
2021-06-15 00:30:08 -05:00
909972d36e
feat(snd): implement channel 3
2021-06-15 00:29:31 -05:00
e45c13f719
feat(sound): implement NR10
2021-06-14 23:51:37 -05:00
6a7ff66274
chore(sound): implement channel 2 registers
2021-06-14 23:37:30 -05:00
17024c439a
chore(ppu): emu now properly handles VRAM and OAM write guards
2021-06-09 22:04:06 -05:00
2b7958f5f3
chore(bus): add a select few read/write guards
2021-06-09 20:48:31 -05:00
50efe12aec
chore: change how bus components are clocked
2021-06-09 19:41:10 -05:00
a904503b90
chore: document IO registers
2021-06-09 13:43:46 -05:00
1449ed3765
fix(joypad): reimplement joypad
2021-06-07 17:23:48 -05:00
dd86330e1d
fix(bus): Fix address calculation error in Echo RAM
2021-06-07 00:22:11 -05:00
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
e8e6c41dbe
fix(dma): initial version of dma transfer now works
2021-06-06 23:57:54 -05:00
d623800005
fix: apply clippy suggestions
2021-06-06 21:30:08 -05:00
c428e934d8
fix(bus): improve guards for illlegal memory IO
2021-06-06 21:18:19 -05:00