95 Commits

Author SHA1 Message Date
e72b11f946 feat: add more debug tools to gui 2021-12-09 05:21:05 -04:00
409314a4e5 fix(dbg): don't crash when attempting to read data as executable code 2021-12-06 13:33:22 -04:00
90d2da9272 chore(gui): implement basic disassembler
Also implement CPU and Interrupt debug information.

Of note:
1. IE and IRQ status boxes are slightly misaligned
2. Whenever the disassembler accidentally reads into game data rather
   than executable code the emulator crashes
   * Thus I should turn Instruction decoding into a Result<> rather than
     panic on failure
2021-11-30 10:23:06 -04:00
a0e3c7c602 chore: remove useless default implementations 2021-11-25 04:07:45 -04:00
2405fd027f chore: remove Emulator struct 2021-11-21 05:27:04 -04:00
7dfcd44820 chore(emu): remove bus and bus_mut from cpu 2021-11-01 17:56:42 +09:00
01278ca83f chore: reduce size of public interface 2021-10-30 10:28:20 +09:00
293e5762c3 chore: small code-cleanup changes 2021-10-20 02:48:44 -03:00
dbbf87af52 chore: add a creative-commons boot rom for compat 2021-09-24 16:15:55 -03:00
71ce3f43e0 chore: satisfy clippy 2021-09-20 04:15:05 -03:00
5882678bc5 chore: inline some functions
Some checks reported errors
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
6087e3b20b chore: remove Cycle struct and begin scheduler design 2021-09-12 04:56:34 -03:00
01064bab69 chore(cpu): comment out blargg-specific code
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-22 01:49:01 -05:00
6215eccb2f chore(cpu): merge halted and state properties 2021-08-15 23:26:01 -05:00
1b78b248a3 chore: minor edits to documentation 2021-08-14 17:51:09 -05:00
5d6df46a2d fix(cpu): reimplement instruction handling
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-14 17:23:45 -05:00
7e65d82fef chore(cpu): document fetch, decode, execute 2021-08-14 16:42:38 -05:00
8c9567b610 chore(cpu): rename discriminants of ImeState enum 2021-08-14 16:42:15 -05:00
8625bec059 feat: clock bus on instruction read-write
Some checks failed
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
7112cd15e3 chore(cpu): refactor SM83 implementation
All checks were successful
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
e43cac8041 fix(apu): don't spin if ringbuf is full 2021-07-28 16:23:31 -05:00
903cfacad3 fix(apu): replace mpsc with spsc ringbuffer
All checks were successful
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
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
All checks were successful
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
All checks were successful
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
1e27875dc3 fix(cpu): fix timing issue involving when the bus is clocked 2021-07-14 21:15:52 -05:00
ab99e24f64 chore: modify commented out debug statement 2021-07-14 21:10:44 -05:00
afdfcfce2c chore: add _debug_log function to cpu.rs 2021-07-12 21:08:38 -05:00
44b605970f chore(snd): rename some structs 2021-07-12 10:03:45 -05:00
b13444c885 feat(snd): simplify audio buffer
All checks were successful
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
ce630baa5d feat(snd): implement audio playback using rodio
Some checks failed
continuous-integration/drone/push Build is failing
2021-07-09 01:25:52 -05:00
fc4a898177 chore: reorganize select parts of codebase 2021-06-27 20:28:29 -05:00
50efe12aec chore: change how bus components are clocked 2021-06-09 19:41:10 -05:00
e8e6c41dbe fix(dma): initial version of dma transfer now works 2021-06-06 23:57:54 -05:00
ef4e54aba6 chore: restrict what should be pub or not 2021-06-06 20:47:11 -05:00
878edd4082 chore: replace pub with pub(crate) when possible 2021-06-06 19:14:28 -05:00
b7b213b6b9 chore(bus): implement read/write blocks when dma is active 2021-06-05 20:53:35 -05:00
b1bf6c5868 feat: integrate eui and pixels-rs for debug info 2021-06-02 01:50:35 -05:00
4ab59007f9 chore(cpu): disable logging by default 2021-04-23 23:31:16 -05:00
b43c8ac7c9 feat(cartridge): grab title from the ROM 2021-04-14 01:21:45 -05:00
cf3b79f0dc chore(cpu): move RST behaviour to a method 2021-04-07 23:05:22 -05:00
067ed03de3 feat: comply with test 03 of blargg's cpu_instrs test rom 2021-04-07 20:12:05 -05:00
9b77d6c6c3 fix(cpu): ensure that timer, lcd and sound runs regardless of HALT 2021-04-05 01:20:18 -05:00
9d2fbd2427 chore: remove unecessary print statements 2021-04-05 01:20:03 -05:00
748c32c446 fix(cpu): use enums only of maintaining IME register state 2021-04-05 01:10:03 -05:00