Commit graph

65 commits

Author SHA1 Message Date
Daniel Prilik
9b1446e4b2 memory map ppu registers + tweaks to logs 2017-10-29 19:32:50 -07:00
Daniel Prilik
d72fb7ffc6 ppu register outline and dma rework 2017-10-29 16:11:10 -07:00
Daniel Prilik
015c2e5277 start work on PPU 2017-10-29 13:13:01 -07:00
Daniel Prilik
22b9eac6c6 ppu_mmu + tons of refactoring
I kind of went down a deep rebbit hole.

As I started to implement the ppu_mmu, I realized that I needed to
finish my mapper, and when I did that, I realized that I didn't
fully understand how VRAM worked, and once I figured that out I
realized that to make my life simpler, I had to rework how some
interfaces works.

I could keep going, but you get the point.

But hey, I think the code is a lot more robust now, so that's good!
2017-10-28 21:20:45 -07:00
Daniel Prilik
f5c442cea0 add proper CPU interrupts
honestly, this is just procrastination before I start the PPU.
Golly, that's going to be difficuly, er, that is... fun! Yeah!
It's gonna be so fun! so much fun...
2017-10-28 16:03:19 -07:00
Daniel Prilik
27b7ada386 frame limit to 60 fups 2017-10-26 18:08:39 -07:00
Daniel Prilik
6e895dac67 better pixel rendering + proper scaling 2017-10-26 14:11:07 -07:00
Daniel Prilik
911d36f23f add SDL dependency 2017-10-25 21:17:58 -07:00
Daniel Prilik
f32acdec49 clean addressing mode decoder 2017-10-25 10:00:24 -07:00
Daniel Prilik
b0700cd5f9 cpu bugfixes and nestest harness 2017-10-20 14:55:21 -07:00
Daniel Prilik
c577cd2c22 switch to lookup based cpu design
Yeah, the fancy way of handling instructions looked annoying to
deal with. Maybe i'll revisit the concept at a later date, but
for now, using a classic instruction lookup table aughta do fine.

In terms of CPU architecture, I think i'm pretty happy with how I
set things up. Sure, there are some parts of the code that i'm not
super happy about, but as a first draft, I think it's not bad. I'm
sure that after implementing more of the 6502, i'll get a better
idea of how to clean up the code.

What's left to do with the CPU?
- Implement the rest of the instructions (duh)
- Implement interruprs (aaaahhh)

And hopefully, once the CPU is passing nestest.nes, I can start
working on the rest of the NES 😄
2017-10-20 00:45:22 -07:00
Daniel Prilik
0528392bf0 switch to cmake 2017-10-18 17:03:52 -07:00
Daniel Prilik
00193f1e0e restructure project files 2017-10-15 11:51:03 -07:00
Daniel Prilik
4f95b10882 Add System Core Class + CPU Memory Map
Also, added a unified Memory interface.
It's pretty basic (just two read / write methods), but it lets me
do some pretty neat stuff with polymorphism.

Eg: I added a Debug object called Memory_Sniffer, which can wrap
any Memory* compliant object, and it will transparently log all
memory operations going across it! Pretty useful IMHO!
2017-10-14 21:01:27 -07:00
Daniel Prilik
2238090a05 *initial commit
Setting up the project. Also, iNES parsing
2017-10-13 20:18:31 -07:00