NES Emulator Information

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
NES Emulator Information
by on (#68211)
I can't find a thing on the site. I might try my hand at an emulator just for the sake of trying. Do ya'll have anything that I can read as a starting off point?

by on (#68213)
An accurate NES emulator is a huge undertaking. What programs have you already made? Have you written a PC game in C or C++ before?

That said, http://wiki.nesdev.com/

by on (#68215)
I'm not so much aiming to write a fully accurate emulator. I'm just doing this to screw around and get a hopefully get a better understanding of the NES. I have a C++/Java background. I have not written any games simply for the fact that game development is one of those things I hate (ironically enough) but I do it for some fun when it comes to the NES.

by on (#68221)
67726e wrote:
I'm just doing this to screw around and get a hopefully get a better understanding of the NES.

And why do you want to get a better understanding of the NES?

Quote:
I have not written any games simply for the fact that game development is one of those things I hate (ironically enough) but I do it for some fun when it comes to the NES.

You hate it? Well, this is bad, because game programming on the NES is not much different from every other platform.

If your ultimate goal is to write games for the NES, and you are not good with game programming, I'm sorry to say that writing an emulator won't help you much. Yes, you will get a good understanding of the platform you'll be working with, but that's maybe only 10% of what makes a game. Very little of a game has to do with interacting with the hardware, most of it is game logic, so you have to be familiar with concepts such as collision detection, artificial intelligence, map compression, etc., which won't differ much from platform to platform.

by on (#68222)
I knew if I didn't extrapolate I would be questioned. I also probably should have worded that a bit better.

I do not like developing games because we are surrounded by these visual masterpieces. If I were to set out to make a shooter game, no matter how long I work at it, it will always come up short compared with what is out there. I really cannot top what exists. The games created are done so by studios full of artists and programmers working for years. I just really cannot compete and in the end, what I could come up with seems like a half-baked pile of crud.

When working with the NES, it is just for a sense of what things were like 'back in the day'. I find it interesting to program in 6502 assembly both for the challenge of coding in assembly and working with a processor that is like a slug compared to the cheetah's that are the processors of today.

I hope that clarifies what I meant by 'hating game development'.

My reason for wanting to get a better understanding of the NES is simple: I want to learn the system better. I know 6502 (to an extent) and I wish to further my knowledge about the system itself which should also help me in understanding programming for the system. It is merely a hobby. I know I will not find a job working as a 6502 software developer.

Hope you enjoyed my book ;)

By the way, I really must thank you guys for all the help you give on the forums. I remember when I didn't know ADC from a hole in the ground.

by on (#68245)
67726e wrote:
I do not like developing games because we are surrounded by these visual masterpieces.

So you're running into the asset complexity problem. Try making one or two demo levels, doing your best with the programmer art. Then show it off on a suitable pixel art forum or ROM hacking forum and ask for volunteers to help reskin it.

by on (#69722)
67726e wrote:
If I were to set out to make a shooter game, no matter how long I work at it, it will always come up short compared with what is out there.

That is a valid reason to not do anything at all in life.
Why study physics if there will be always Einstein and Hawking? Why bother practicing any sport? painting? why even try to work and earn money if you're not gonna ever be as rich as Bill Gates?

Not to name that you probably won't make a better emulator than those already available? But you may make a different one, original, with something no one else has done and won't do, as I'm trying to do with mine :)

PS: actually our avatars look very similar

by on (#69732)
All you really need to start writing and come up with an emulator that is accurate enough to run many games is the ancient NESTech document telling you about the memory map and registers, and the 6502 document about the CPU. As it was said, if you want to be very precise and accurate to the hardware it will be a tough task. But say you want to come up wih an emulator matching atleast Nesticle in compatibility, that won't be very hard.

The best place to start would be to search this forum for others asking for help getting started with emulation. Generally it's recommended to build your 6502 CPU core first and try to get it as debugged as possible. Bugs in the CPU will make bugs occur in other places like graphics or just random crashes in general. When the CPU core is working well enough you can probably implement a few NES registers and a memory map to run a NES CPU test ROM and then from there if all goes well start working on NES specific hardware stuff such as the PPU.

Writing a NES emulator can be alot of fun. You get to know the system very well. After writing an emulator you should be quite informed about the NES and development is not so much of an issue of the platform as it is just your standard development issues you have on any platform.

by on (#69746)
MottZilla wrote:
Writing a NES emulator can be alot of fun. You get to know the system very well. After writing an emulator you should be quite informed about the NES and development is not so much of an issue of the platform as it is just your standard development issues you have on any platform.


- Translating it: you need passion. ^_^;;