Rekai Nyangadzayi Musuka
22f96a10e7
fix(apu): increase accuracy of apu emulation
...
Reintroduce the Frame Sequencer and it's state enum (needed so that we
can reset the FS on NR52 enable)
2021-08-17 22:18:40 -05:00
Rekai Nyangadzayi Musuka
8fea8eb1ff
fix(apu): better emulate behaviour of apu channel DACs
2021-08-17 21:26:22 -05:00
Rekai Nyangadzayi Musuka
9b2c91445a
chore: enable audio by default
...
even if it sounds really bad right now
2021-08-17 21:25:55 -05:00
Rekai Nyangadzayi Musuka
b9046bceba
fix(apu): disable channel if DAC is disabled
2021-08-17 20:42:41 -05: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
6215eccb2f
chore(cpu): merge halted and state properties
2021-08-15 23:26:01 -05:00
Rekai Nyangadzayi Musuka
a77d0a0f62
fix(apu): clock frame sequencer at correct Hz
continuous-integration/drone/push Build is passing
Details
2021-08-15 02:46:20 -05:00
Rekai Nyangadzayi Musuka
c2f2e2194b
chore(ppu): improve accuracy of pixel fifo
2021-08-14 23:47:16 -05:00
Rekai Nyangadzayi Musuka
d68257bb29
fix(ppu): improve accuracy of SCX discard
2021-08-14 22:03:01 -05:00
Rekai Nyangadzayi Musuka
e27d6dc25b
chore(ppu): rename discriminants of fetcher state
2021-08-14 22:02:41 -05:00
Rekai Nyangadzayi Musuka
1acb5de19d
fix(main): GB frametime should be 59.73 Hz
2021-08-14 17:59:59 -05:00
Rekai Nyangadzayi Musuka
1b78b248a3
chore: minor edits to documentation
2021-08-14 17:51:09 -05:00
Rekai Nyangadzayi Musuka
5d6df46a2d
fix(cpu): reimplement instruction handling
continuous-integration/drone/push Build is passing
Details
2021-08-14 17:23:45 -05:00
Rekai Nyangadzayi Musuka
7e65d82fef
chore(cpu): document fetch, decode, execute
2021-08-14 16:42:38 -05:00
Rekai Nyangadzayi Musuka
8c9567b610
chore(cpu): rename discriminants of ImeState enum
2021-08-14 16:42:15 -05:00
Rekai Nyangadzayi Musuka
53dfaf0de2
fix(apu): increase size of the audio buffer
continuous-integration/drone/push Build is passing
Details
2021-08-14 15:29:35 -05:00
Rekai Nyangadzayi Musuka
16c2dd81fc
fix(bus): remove dead code
2021-08-14 15:02:25 -05:00
Rekai Nyangadzayi Musuka
79be38a1e6
fix(main): rename constant SCALE to WINDOW_SCALE
continuous-integration/drone/push Build is passing
Details
2021-08-14 01:02:18 -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
0637b771e3
chore(instr): implement copy and clone on instruction enum
continuous-integration/drone/push Build is failing
Details
2021-08-05 20:04:39 -05:00
Rekai Nyangadzayi Musuka
0107fa04c9
chore(apu): remove implemtation of register that always returns 0xFF
2021-08-05 16:39:04 -05:00
Rekai Nyangadzayi Musuka
6265c8af04
chore(joypad): poll input every frame instead of every instruction
continuous-integration/drone/push Build is failing
Details
2021-08-03 20:36:55 -05:00
Rekai Nyangadzayi Musuka
5482a8e75f
fix(apu): fix out of bounds error with channel 3 wave ram
2021-08-03 20:35:22 -05:00
Rekai Nyangadzayi Musuka
002dae6826
fix(joypad): improve handling of keyboard input
2021-08-03 20:23:43 -05:00
Rekai Nyangadzayi Musuka
c863dc835c
fix(apu): fix index out of bounds error on channel 3 write
2021-08-03 20:23:08 -05:00
Rekai Nyangadzayi Musuka
d4407cf849
fix(apu): implement NR50 volume controls
2021-08-03 19:33:27 -05:00
Rekai Nyangadzayi Musuka
de0d147685
fix(cartridge): put a bit more detail into the MBC3 RTC stub
continuous-integration/drone/push Build is failing
Details
2021-08-03 15:19:08 -05:00
Rekai Nyangadzayi Musuka
dd8339e8de
chore(cartridge): consistently capitalize MBC
2021-08-03 15:06:06 -05:00
Rekai Nyangadzayi Musuka
05d6475015
fix(cartridge): Use default title instead of empty string
2021-08-03 14:53:30 -05:00
Rekai Nyangadzayi Musuka
32b597a328
fix(apu): incremental improvements to APU accuracy
continuous-integration/drone/push Build is failing
Details
2021-08-03 14:10:08 -05:00
Rekai Nyangadzayi Musuka
33be2e0e83
fix(main): tie emulation to 60Hz on host machine
2021-08-03 14:09:16 -05:00
Rekai Nyangadzayi Musuka
832e1b7633
fix(apu): implement WAVE RAM blocking
2021-08-02 22:38:00 -05:00
Rekai Nyangadzayi Musuka
a549b9feef
chore(bus): suppress warning
2021-08-02 21:55:07 -05:00
Rekai Nyangadzayi Musuka
4d6fc95130
chore: remove premature optimizations
2021-08-02 21:52:12 -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
e43cac8041
fix(apu): don't spin if ringbuf is full
2021-07-28 16:23:31 -05:00
Rekai Nyangadzayi Musuka
8724da824e
chore: inline some methods
2021-07-28 14:53:52 -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
1a4546f4a4
chore: remove egui from project
...
I want to re-implement this later.
2021-07-27 22:38:21 -05:00
Rekai Nyangadzayi Musuka
31abd6dc5c
chore(apu): change default sample rate
continuous-integration/drone/push Build is passing
Details
2021-07-25 18:29:19 -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
4fda7587ce
chore(main): disable vsync
2021-07-18 21:33:52 -05:00
Rekai Nyangadzayi Musuka
3fb182b9cb
fix(apu): have send_samples block main thraed
continuous-integration/drone/push Build is passing
Details
2021-07-18 21:18:04 -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
8e2ef58b81
chore(main): remove rodio sink
2021-07-18 20:42:36 -05:00
Rekai Nyangadzayi Musuka
b4b84d0cc5
fix(main): Allow emu to work on windows and linux
continuous-integration/drone/push Build is passing
Details
2021-07-16 21:07:00 -05:00
Rekai Nyangadzayi Musuka
1d8fb8d32a
fix(ppu): delay ppu by one cycle on scx fifo discard
continuous-integration/drone/push Build is passing
Details
2021-07-16 21:01:52 -05:00
Rekai Nyangadzayi Musuka
cc0cb0dd8a
chore(apu): satisfy clippy
continuous-integration/drone/push Build is passing
Details
2021-07-15 22:58:23 -05:00
Rekai Nyangadzayi Musuka
fd9a5b51ba
chore(ppu): reimplement background/window/sprite priority
2021-07-15 22:29:51 -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
1e27875dc3
fix(cpu): fix timing issue involving when the bus is clocked
2021-07-14 21:15:52 -05:00
Rekai Nyangadzayi Musuka
1566d60fd4
fix(ppu): add fifo delay when BG fifo is not empty
2021-07-14 21:11:31 -05:00
Rekai Nyangadzayi Musuka
ab99e24f64
chore: modify commented out debug statement
2021-07-14 21:10:44 -05:00
Rekai Nyangadzayi Musuka
192bdffd64
fix(ppu): PPU cycle count increases even if LCDC bit 7 says otherwise
continuous-integration/drone/push Build is passing
Details
2021-07-12 21:32:50 -05:00
Rekai Nyangadzayi Musuka
afdfcfce2c
chore: add _debug_log function to cpu.rs
2021-07-12 21:08:38 -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
3754325e30
chore(cartridge): silence warning
2021-07-11 23:47:05 -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
45dc27301c
chore: enable/disable gamepad input at compile time
2021-07-11 15:45:37 -05:00
Rekai Nyangadzayi Musuka
db421c58f8
chore(snd): Don't repeat yourself
continuous-integration/drone/push Build is passing
Details
2021-07-11 13:15:55 -05:00
Rekai Nyangadzayi Musuka
ce6a83425f
feat(snd): implement channel 3
2021-07-11 00:16:25 -05:00
Rekai Nyangadzayi Musuka
d145ae44f3
feat(snd): implement channel 4
2021-07-10 22:36:48 -05:00
Rekai Nyangadzayi Musuka
3dbf026d33
fix(snd): increase accuracy of when to sample from APU
2021-07-10 22:35:54 -05:00
Rekai Nyangadzayi Musuka
7ab6e120f9
feat(snd): implement ch1 & envelopes for ch1 and ch2
2021-07-10 18:56:54 -05:00
Rekai Nyangadzayi Musuka
3c28dd7a6b
fix(snd): clock channel 2 every T-cycle
2021-07-10 14:00:22 -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
40ca0abb72
feat: implement keyboard controls
2021-07-09 19:19:52 -05:00
Rekai Nyangadzayi Musuka
548f3867d4
chore(main): remove windows-specific code
2021-07-09 17:25:38 -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
9b3a5d49d2
chore: update error messages in expect() calls
2021-07-08 18:50:58 -05:00
Rekai Nyangadzayi Musuka
4f3fc3136d
chore: print cartridge info in stderr
continuous-integration/drone/push Build is passing
Details
2021-07-05 01:10:10 -05:00
Rekai Nyangadzayi Musuka
48e81ff426
fix(cartridge): fix bug preventing MBC1 from working
continuous-integration/drone/push Build is passing
Details
2021-07-05 00:43:02 -05:00
Rekai Nyangadzayi Musuka
18b790a777
chore(cartridge): update MBC1 (still broken)
continuous-integration/drone/push Build is passing
Details
2021-07-05 00:14:56 -05:00
Rekai Nyangadzayi Musuka
39af03aebf
chore(bus): stub 0xFF4D
2021-07-01 23:09:02 -05:00
Rekai Nyangadzayi Musuka
559cb54385
chore(snd): add enabled property to all channels
...
Also, rename lsfr property to shift_register
2021-07-01 22:27:42 -05:00
Rekai Nyangadzayi Musuka
fd7f0655ef
chore: satisfy clippy
2021-06-27 20:31:59 -05:00
Rekai Nyangadzayi Musuka
fc4a898177
chore: reorganize select parts of codebase
2021-06-27 20:28:29 -05:00
Rekai Nyangadzayi Musuka
c5aafab3ef
feat(snd): implement trigger event behaviour for lfsr
2021-06-24 01:28:00 -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
b8b3563bca
chore(snd): tighten use of access modifiers
2021-06-24 00:40:10 -05:00
Rekai Nyangadzayi Musuka
249d96b443
chore(snd): update select bitfield names
2021-06-24 00:00:28 -05:00
Rekai Nyangadzayi Musuka
d2e37da2b0
feat(snd): implement sweep behaviour
2021-06-23 23:51:30 -05:00
Rekai Nyangadzayi Musuka
29237f0a2c
chore(timer): clean up if let statement
2021-06-23 21:49:46 -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
1bc5de7cff
chore(cartridge): incremental improvements to MBC1
2021-06-23 17:12:54 -05:00
Rekai Nyangadzayi Musuka
b89515a0c1
fix(ppu): calculating window position is now signed
...
This allows for the window to display properly in Link's Awakening
2021-06-17 18:48:04 -05:00
Rekai Nyangadzayi Musuka
0b50e4eae9
fix(ppu): implement slightly better SCX discarding
2021-06-17 18:29:22 -05:00
Rekai Nyangadzayi Musuka
aa0e3399f6
chore(ppu): fix integer overflow
2021-06-17 17:43:04 -05:00