I've decided I'm going to try and build a NES emulator! It's something I've always wanted to do (just for fun/learning) but never gotten around to. I've never done anything like this at all; I am a complete noob. All of my programming experience is in fairly high-level languages like C# (which is what I'm doing this in, for now...).
I've made a quick start and implemented a few basic LDA instructions and created some tests:
http://imgur.com/EKDXmZv
These seem to work, though I don't know if I'm doing this in a good way.. Since I'm a noob, there's a danger I'll implement both my code and tests wrong, but everything will look good. I figured maybe I should try and use someones existing test suite instead.
I came across the Emulator Tests page which has a lot of links on it, including:
This sounds quite promising, but it's just a binary file. It leaves me with some questions!
Any pointers would be greatly appreciated
I've made a quick start and implemented a few basic LDA instructions and created some tests:
http://imgur.com/EKDXmZv
These seem to work, though I don't know if I'm doing this in a good way.. Since I'm a noob, there's a danger I'll implement both my code and tests wrong, but everything will look good. I figured maybe I should try and use someones existing test suite instead.
I came across the Emulator Tests page which has a lot of links on it, including:
Quote:
nestest fairly thoroughly tests CPU operation. This is the best test to start with when getting a CPU emulator working for the first time. Start execution at $C000 and compare execution with a log from Nintendulator, whose CPU works (apart from some details of the power-up state).
This sounds quite promising, but it's just a binary file. It leaves me with some questions!
- Is it as simple as reading the bytes from this file to replace my hard-coded bytes, or is there more to this format? (I'm guess it's not this simple, as the page says "Start execution at $C000", which my maths says is 49152 bytes in, yet the fie is only 25k?)
- Will this thing work at all without an already-complete set of opcode implementations?
- Is there any info on that log file format anywhere? Some of it looks obvious, but some of it less so!
Any pointers would be greatly appreciated