My chip8 Architecture. In the first pic you can see it passing https://github.com/corax89/chip8-test-rom (Even though not all instructions are properly implented yet) By far the biggest pain were the register dump and load opcodes (FX55 and FX65) Which I wanted to implent without adding 16 extra load and store ports to ram and registers (seen on pic 2, mirrored for the ram, not shown). It uses n hight sprites to draw to the screen, which I implented by expanding the loaded bits (10101010 becomes 0xFF 0x00 0xFF 0x00 etc) so the color is white and I XOR them onto the screen keeping in mind the width and hight (pic 3+4). What I've yet to do is add wrapping and Im not sure its possible without changing the design.
TODO:
Random instruction (Cxnn)
Keyboard instructions (Ex9E, ExA1, Fx0A)
Timer instructions (Fx07, Fx15, Fx18)