The SweetNES Project

SweetNES (pronounced “sweetness”) is my new pet project. It is an 8-bit Nintendo Entertainment System® emulator. Ya, the old one from 1985. For some reason I’ve always enjoyed that original Nintendo. Call it nostalgia, but there was something so entertaining about those first games that I still find many of them just as enjoyable to play now as I did then.

I’ve been throwing around the idea of writing my own emulator for some time now. As far back as two years. A question that I’ve asked myself many times and that readers may be asking now is “Why make another emulator when there are already so many available?” I assure you it’s not because I have an ego and think that I can do it better than anyone else has ever done. In fact I usually work on projects that teach me new skills and that’s a primary reason I’ve decided on this project. I’ve always found the principles of emulation fascinating. I’m comfortable with the fact that SweetNES may never gain widespread popularity.

One thing about this project that is definitely different than anything I’ve done before is letting the world’s eyes look over my shoulder. For the first time I’m going to share make my work and host it on CodePlex. I chose CodePlex not just because it seems like the trendy place to host projects these days but because it integrates well into my development tool chain, namely Visual Studio 2005.

One of the unique things about the project is that it will be written in .NET/C#. This goes against the popular thinking that emulators need to be written in the fastest C and assembly language possible. I don’t agree with that. Part of this effort will be to prove to others (and myself) that managed code is just as capable in this role. My intention, at least at the start, is to have excellent separation between the core engine and the user interface. My hope is that the core engine will then be the choice for other emulators on other platforms, although, that objective is secondary to getting a working application on Windows™. There are one or two Nintendo emulators already written for .NET, but from what I can tell these efforts have stalled.

I also want to share the project source code so that others can learn from it. As I’ve done background work on Nintendo emulators I’ve found the information to be fairly scattered across the net and difficult to understand. Frequently, information contradicts other information or itself; sometimes information is written in poor English or in other languages; sometimes there’s no information at all. Hopefully this effort will result in more consolidated documentation. As I always seem to enjoy playing the role of teacher, I plan to detail some of the principles of emulation here on this blog as they are added to the project. I also plan to keep the coded extremely well commented and organized to further aid those who want to learn.

At the time of this writing, the project site is empty. A rather inglorious start to what I hope is a glorious ending. Also I don’t intend to bring on any other developers and will be doing the work myself. This is partly because I’m anal and also because of the reasons mentioned above: I want to expand my own skills.

That’s it for now. I just wanted to grab the killer project name before someone else did. :) Check back soon for updates.

Resources:

3 Responses to “The SweetNES Project”

  1. Daryl Milne Says:

    Do you intend to write this in C#? If so, count me in & and I you want help, please, email me some details.

  2. Jacob Says:

    Yes, C#/.NET will be the platform. I’m hard at work on it now. I appreciate the offer to help, but as I mentioned above, I’ll be going solo for the time being. If I decide to open it up to other developers in the future I will keep you in mind.

    Cheers,
    Jacob

  3. jacobslusser.com » Blog Archive » SweetNES Baby-Steps Says:

    […] jacobslusser.com .NET, Reversing, Usability… and Desperately Trying Not to be Lame « The SweetNES Project […]

Leave a Reply