It has been another couple of days and I've made a wee bit of progress on my emulator. It now allows for player 1 controller input which is nice and meant I could actually start playing some games, I could add support for a 2nd player in no time I just didn't feel like bothering with it. Also added turbo buttons for A and B just for funzies took about 2 lines of code and they are neat to play with. I finally got around to supporting hardware scroll which opened up a TON of games, it isn't a perfect implementation but it seems to get the job done. You can pause and soft reset games now, which I really should have added much earlier as it can really help when debugging issues in games. You can now save and load game states which are a pretty key feature of any emulator. And finally there have been all around performance increases though it still isn't what I would call "fast".
Little demo of Emu-o-Tron in action.
With all that done I think I am pretty much finished working on this project, I may come back to it time to time to add minor features (support for UNROM and CNROM games would be lovely) but I won't be spending days in a row working on it. It was an extremely fun project and very educational even though I didn't work on it for very long. I know it sucks that it won't run 80% of NES games but that is just a flaw with my entire approach to the project and I was aware of this limitation from the get go, I am rendering everything frame by frame to get a massive performance increase at the cost of killing game compatibility. I just really did not want to spend weeks pouring over the code of a spare time project looking for speed tweaks. Still I do not regret my choice to make and emulator and would recommend it as something every programmer should make one day. NickMass OUT!