I recently created my own NES emulator. I did it mostly for fun and to learn about how the NES worked. I learned some interesting things, so I wrote this article to share. There is a lot of documentation already out there, so this is just meant to highlight some interesting tidbits.
Quite interesting.
I’m sure he ran in to all sorts of interesting issues that typically only show up with a long history of compatibility testing with different games.
One thing emulators teach you is that there’s what the system is documented to do, there is what the system actually does, and there is the software out there that exploits these discrepancies, meaning it’s very difficult to discover what a system does do until a piece of legacy software doesn’t actually work.
If you want to read a fascinating hardware manual for an emulator, I suggest the Altirra Hardware Reference Manual[1] for an Atari 800 emulator is just great reading. The creativity of 8 bit authors back in the day was just legion.
I myself wrote a 6502 simulator, but in fact it was more an interpreter than anything else. I never got down to the cycle and trace level of the hardware, which is what it really necessary to write a proper simulator.
[1] http://www.virtualdub.org/downloads/Altirra%20Hardware%20Re…
I wrote an Apple][ emulator more than 10 years ago (yet another 6502).
Writing an emulator is an interesting experience, and a fun one, as with one simple program, you get access to hundreds of softwares, games.
I think that’s generally true of hardware in general. Doubly so when you have multiple vendors all working on the same “standard”.
Cartridges were cool tech – the ability to add functionality by adding chips to the cartridge is awesome.
Interesting, there were a couple significant differences between the Famicom (Japan) and the NES. The Famicom, for example, allowed cartridges to have expanded audio hardware – Castlevania III had an audio chip that added three extra audio channels. Sadly, the American version of the game didn’t have this capability (The American NES didn’t allow for this), so the music was downgraded. Otherwise, Japanese games could be played on American consoles with help of an adapter, since the cartridges were physically different in shape.
Also, the NES wasn’t really designed for battery-backed storage on the cartridges. The power switch would actually short the cartridge, erasing the memory (exactly like clearing the CMOS on a motherboard by moving the jumper). That is why you were required to hold in the reset button when turning off the game. This was fixed with the top-loading NES redesign.
The redesigned hardware also did without the 10NES copy protection chip, and used brass pins instead of the softer tin pins that wore out on the older system. The combination of the lower-quality tin pins and the 10NES chip is why you get the flashing grey screen when you try to load a game.
(If you have an NES, and are frustrated by this, here’s how to fix it: http://bit.ly/1F9R0JX )
In the case of the Super Nintendo, the SuperFX chip was used to great effect in Star Fox, and others. It even allowed Doom to run reasonably well on it’s 3.58MHz CPU. Pilotwings had it’s own DSP chip on the cartridge, too, and that was a launch title.
Yoshi’s Island used the SuperFX 2 chip, which was identical to the FX chip, but clocked twice as fast. It is a beautiful game, by any standard.