> I'm new to this area of emulation and was hoping someone could clear some things
> up for me.
> How exactly do I go about writing an emulator, I understand I need to first
> emulate the chips of the system I will be emulating. I'm not gonna be stupid so
> have opted for something along the lines of the Genesis. All the chips for this
> have already been emulated to my knowledge so what exactly comes next?
> Advice on what steps I should follow to construct an emulator would be cool,
> also advice on what languages I should be looking to use. A reasonable time
> frame for the project would be good also and a level of difficulty. I'm looking
> to do it as a 3rd year project in University and have 9 months to complete a
> large project.
This might be a useful link:
I would suggest to look at sources from a few open-source emulators like MAME or Final Burn.
If you are going to re-use existing CPU emulators and sound emulators as components for your own project, Genesis could be a good choice for the final project if you like a challange. Maybe a NES or SMS emulator is a little bit more realistic though if it's your first emulation project.
I'd first start with something simpler though. After you finished a space invaders emulator, you'll have a general understanding of how emulators work and it will have you on your way on something like Genesis much easier. A space invaders emulator should take a small amount of time in comparison.
As for choice of language, C or C++ is probably the best bet if you're already familiar with them. Most emulator development is done with those languages, so you'll find it's easier to reuse existing CPU and sound chip emulators.
I myself use java, which saves me from some C related headaches, but introduces a few new ones too:
* if I want to reuse components which are not availble in java, I have to either port them or write them new from scratch
* in emulators, being able to go a little bit more low level can really help sometimes.