7e5ab99329
remove Cycle struct and begin scheduler design
continuous-integration/drone/push Build is passing
2021-09-12 04:55:14 -03:00
c2f2e2194b
chore(ppu): improve accuracy of pixel fifo
2021-08-14 23:47:16 -05:00
d68257bb29
fix(ppu): improve accuracy of SCX discard
2021-08-14 22:03:01 -05:00
e27d6dc25b
chore(ppu): rename discriminants of fetcher state
2021-08-14 22:02:41 -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
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
9d0e099a97
chore: remove unnecessary derivations from structs
2021-07-28 00:09:07 -05:00
1d8fb8d32a
fix(ppu): delay ppu by one cycle on scx fifo discard
continuous-integration/drone/push Build is passing
2021-07-16 21:01:52 -05:00
fd9a5b51ba
chore(ppu): reimplement background/window/sprite priority
2021-07-15 22:29:51 -05:00
1566d60fd4
fix(ppu): add fifo delay when BG fifo is not empty
2021-07-14 21:11:31 -05:00
192bdffd64
fix(ppu): PPU cycle count increases even if LCDC bit 7 says otherwise
continuous-integration/drone/push Build is passing
2021-07-12 21:32:50 -05:00
9b3a5d49d2
chore: update error messages in expect() calls
2021-07-08 18:50:58 -05:00
fc4a898177
chore: reorganize select parts of codebase
2021-06-27 20:28:29 -05:00
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
0b50e4eae9
fix(ppu): implement slightly better SCX discarding
2021-06-17 18:29:22 -05:00
aa0e3399f6
chore(ppu): fix integer overflow
2021-06-17 17:43:04 -05:00
8149352e63
fix(ppu): Discard SCX mod 8 pixels from fifo
...
As of right now, the implementation of this is rudimentary. There are
currently some visual bugs that still need to get worked out
2021-06-12 13:42:57 -05:00
daeb02f7c9
fix(ppu): DMA takes priority over OAM Scan
2021-06-12 13:41:27 -05:00
482d226cd6
fix(ppu): properly implement $8800 addressing mode
2021-06-10 00:37:49 -05:00
17024c439a
chore(ppu): emu now properly handles VRAM and OAM write guards
2021-06-09 22:04:06 -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
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
811a9f9cc9
feat(dma): implement non-working dma transfer
2021-06-04 13:47:06 -05:00
778e04e645
feat(ppu): account for OBJ ENABLE bit in LCDC
2021-06-03 02:16:03 -05:00
aeaaee8c6c
fix(ppu): fix bugs in code that grabs sprite tiles
...
PPU now supports 8x16 tiles
2021-06-03 02:14:59 -05:00
138aba52c1
fix(ppu): fix integer overflow error in bg fetcher
2021-06-03 00:41:21 -05:00
66c2b51e10
chore(ppu): fix silly spelling mistake
2021-06-03 00:16:25 -05:00
be39c249e1
chore(ppu): reimplement WindowLineCounter behaviour
2021-06-03 00:13:51 -05:00
112454aa59
chore(ppu): reimplement fifo pixel merging logic
2021-06-02 23:32:39 -05:00
cd21c90722
chore(ppu): rename ppu/registers.rs to ppu/types.rs
2021-06-02 23:31:57 -05:00
e89e89df5b
chore(ppu): refactor small part of bg fetcher
2021-05-08 15:52:43 -05:00
fd2b64496c
chore(ppu): refactor reset behaviour in fetchers
...
and other components like window_stat and the window line counter
2021-05-08 15:35:16 -05:00
705194eced
chore(ppu): rename PixelFetcher properties
2021-05-08 15:13:26 -05:00
5917ca203f
chore(ppu): rename pixel fetcher and background fetcher variables
2021-05-08 14:31:20 -05:00
48abc97505
chore(ppu): add bytes() method to Pixels
2021-05-08 14:06:41 -05:00
a67aec55e2
chore(ppu): rename ppu property
2021-05-05 20:25:15 -05:00
f6cf5393b6
chore(ppu): fix logic error in shifter
2021-05-05 20:24:09 -05:00
af3edde2ab
chore(ppu): rearrange/reimplement some behaviour
2021-05-05 17:47:06 -05:00
abdff1251e
fix: properly implement LY==LYC behaviour
2021-05-05 08:29:39 -05:00
b36f4441fa
chore(ppu): change signature of get_obj_low_addr
2021-05-05 00:14:14 -05:00
2cf85b0add
fix(ppu): fix off by one error when grabbing sprite address
2021-05-05 00:01:19 -05:00
b57df3d2a7
chore(ppu): rename Pixel to Pixels
...
Since the Pixel struct represents 8 pixels in a 2BPP format, I felt like
the name of the type needed to represent this
2021-05-04 22:55:34 -05:00
2a7377c724
chore(ppu): reimplement offset calculation for obj fetcher
2021-05-04 22:11:03 -05:00
834b1bd9fd
chore(cpu): remove branching code in instructions
...
also, rename a couple of methods
2021-05-04 00:50:22 -05:00
66414075da
fix(ppu): fix bug when loading sprite pixels into FIFO
2021-05-01 16:22:44 -05:00
b251efcc7d
fix(ppu): reimplement the pixel fifo shifter
2021-04-30 17:44:02 -05:00