I have continued working on my NES emulator, though I haven't been putting as much time in, and have made some progress. All the code was reorganized and is a lot more condensed and easier to read now, memory mirroring is functioning now along with being able to label certain memory addresses as read only. I also worked on the PPU so I can boot legitimate ROMs now without them getting stuck polling the PPU addresses over and over. I also wrote a bit of the SDL renderer to try and get some video output going and I was moderately successful. I can draw all the tiles and all the sprites but the backgrounds and palettes are royally messed, though I didn't spend much time trying to figure out what was going wrong.
Video of awesome sprite action.
Performance is looking to be an issue I'm only getting around 50 - 55 FPS (NTSC is 60FPS) when just straight up drawing the sprites and background without worrying about the palette or attributes, though the code is far from optimized and I am using the CPU to render everything instead of OpenGL. I have been using a game called Balloon Fight as my test ROM, it is apparently one of the easiest mainstream games to emulate properly, I had never heard of it before and it seems like a joust clone. I'm pretty tickled pink with how this whole project is turning out I anticipated myself giving up on it long before now; hopefully I'll finish it someday.
Edit
I found the silly mistake I was making that broke backgrounds and sprite colors and fixed it up.

OMG so amazing.