My 6502 implementation now has all instruction sets and addressing modes. In addition, there is intentional bugs coded in like the JMP indirect page boundary bug.
Basically, If you tell the 6502 to jump using an address ending in FF, it messes up: instead of looking at the next byte on the next page, it wraps around and grabs the byte from the start of the same page. So JMP ($xxFF) jumps to the wrong place. This was implemented originally to save transistors and cycle time, and some NES games rely on it.
I'm working on the PPU currently, which displays the graphics, I'm coding all of this in Python which isn't the greatest language for this but it's easier to make progress, or atleast for me. I was thinking of doing this in Rust but I'm not a real woman and I'm not very well versed in it.