Termingamer2-JD wrote:
Also, I'm pretty aware that there's about 562946 mappers for the NES. What are the main ones used for NES games? I'll mainly focus on those like the early releases on the system first and mappers used by homebrew developers.
The majority of games official licensed titles use a very small number of the total mappers. Very few mappers being supported will still allow for supporting the vast majority of titles. The discrete logic mappers like UxROM, AxROM, NROM, CNROM, cover a large portion of titles. Then MMC-1 and MMC-3 cover the next big groups. After those however you have a lot of mappers that are used in relatively few games by comparison.
Quote:
Also, I plan to make this usable on other OS's (unofficial builds) so I'll probably use C, but I don't know the best for sound. Obviously sound isn't one of my concerns right now, though.
If you aren't already familiar with any programming language then you need to learn one first. You also need to realize that the programming language doesn't provide things like sound or graphics output. You have to link to a library to have those things available to you generally. On the PC you have multiple OS to choose from and many different libraries. SDL is a library that is supported on many platforms. However there are different versions which may not be fully compatible between eachother so you need to be sure whatever platforms you intend to port to have an appropriate version of your library choice.
I started using C in combination with Allegro which I like using. I use Allegro 4.x however there are newer versions. Ofcourse you can choose to use whatever you want for whatever you want. I've used Allegro for input and graphics while using FMOD for sound. You could use Direct X if you wanted but that limits you to Windows platforms. You'll just have to look and see but if you have no programming experience you have a lot to work out before worrying too much about making any emulator.
Quote:
Oh, and it might be a waste of time but it can help me learn stuff, also I don't know what I could make before the emulator. I don't care whether it's useful for 6502 debugging or hex editing, besides other things, all I would need is reasonable accuracy and speed, I don't care for other features.
It's not a waste of time if you learn from it. Before making an emulator you could make a simple interactive game or demo. For example one of the first "game" programs I made was just 2 player Pong with a high resolution background I found appealing and some hand drawn paddles and ball. I added some sounds and music too. That taught me a lot of key things for programming. Then you can go further, maybe program a simple shooter game like Space Invaders or Galaga. Or try to do a Tetris clone.
Quote:
So yeah it will be an average NES emulator which will be built on most likely.
Making even an average NES emulator for someone with no programming experience is not an easy goal to reach. But you certainly can reach it if you put in the time and effort. The biggest task and first task is getting the 6502 type CPU emulated. This is a long process that will take a lot of time and debugging to get right. It's not terribly exciting work but it's the heart of the system. Once you get it solid, you can work on graphics display to actually see something going on. But that's getting ahead of yourself if you have no programming experience and don't understand 6502 ASM code.
If the whole idea of writing your own emulator appeals to you, do it. All I am telling you is that it's going to take significant time and effort to achieve if you have no experience so far. But as far as systems go, the NES is not hard to emulate decently. This is likely part of why there are more emulators for NES than any other system I bet.