Emulator Rom ROMs Acorn Bbc Micro Amiga Amstrad Cpc Apple Ii Atari 2600 Atari 8-bit Atari 800 Atari St Commodore 64 Dos Gameboy Advance Gba Gameboy And Gbc Kawaks Mame Mame Chd Msx 1 Neo Geo Nintendo 64 Nintendo Ds Nintendo Gamecube Nintendo Nes Sega Cd Sega Dreamcast Sega Game Gear Sega Genesis Sega Master System Sinclair Zx Spectrum Sony. I'm trying to emulate a NES as a project for school. I don't have any experience with writing emulators, but I generally know how they work.
Posted by10 months ago
Archived
So after finishing a CHIP-8 emulator (which basically is a Hello World!) I decided to make a NES emulator. I really tried but I have encountered some issues.
Making CHIP-8 was not only easy because of how simple system it is, but also explicit and comprehensive reference. I was very surprised that despite how popular of a system (and still relatively simple) NES is, there is not a single guide that covers everything in detail. Just don't get me as a lazy person - previous emulator was my first experience with this kind of stuff and I'm constantly learning the low-level things I need to know for this kind of stuff. So far I managed to find these resources the best:
![Reddit Nes Emulator Reddit Nes Emulator](/uploads/1/2/5/7/125792521/818485866.png)
- Easy 6502 by skilldrick - the one I learned the most from, actually. That's the only source I actually found out what different addressing modes do.
- 6502 opcodes - list of opcodes. My biggest problem is, it's super cryptic for somebody who is new to this. It's only hex and mnemonic really. The instructions are not explained what they do (took me a while to realize ADC is
acumulator + memory address + carry flag byte
) and says which flags are influenced by the opcode but it doesn't say why or how and at the end of the day I can't implement them well. - NES Dev Wiki - information here is actually pretty scarce, doesn't even have opcodes listed. I only used it for hardware reference and memory map.
And that would be about it. While I can make some sense out of these and maybe tinker myself around, there's no way that once I finish my emulator it will be able to run or do anything. Even the simplest stuff in emulation can be broken by little errors and when it comes here to NES I have huge problems with grasping major concepts yet implement any of the opcodes so that they could work.
I Googled a lot and searched this subreddit too, but it turns out that NES despite being a very popular system doesn't have any comprehensive or begginer-friendly emulation guide. I suppose I could go on GitHub (and I have done it once, actually) to look up how things are done but not only it feels like cheating, but also I don't think I will learn anything by copying others.
Do you know any resources that cover the topic in-depth and try to be as beginner-friendly as possible? I understand basics like CPU, clock rate, registers, memory, opcodes, etc. and these have been explained in CHIP-8 tutorial in a very layman terms. But all of the NES docs are pretty technical and I struggle to close the gap there is between these two systems with very little success.
13 comments