I've been working for a number of years now on a NES IDE. The  genesis of this project goes waaay back to junior high school. My friend  Stephen and I would spend hours, noses inches away from the television  screen, transfixed by Mario, then Link, then Samus, etc. Part of that  trance was induced by gameplay; most of it, at least for me, was induced  by a desire to know how these games worked. We'd sit with our noses to  the screen and graph paper at the ready, eager to trace out what we  thought was the correct outline for a particular frame of a character's  movement.  We even made relatively good stabs at capturing the musical  melodies of some games, with a Casio keyboard and a quick pause reflex.
We  didn't have access to logic analyzers, ROM readers, or any other tool  that would have made our task seem less dorky than it sounds to me now,  describing it some 20+ years later. I had a two-fold scheme in mind;  one, to replicate the NES games on my Commodore Amiga; two, to add my  own twists and ideas to the games in the process.
It  went fairly well. I had a walkable Zelda map implemented in Commodore  Amiga BASIC (yes, this was even before I learned C). I still have the  disks and my original Amiga in my basement but haven't tried to get back  into it...too dusty and probably doesn't work any more.
Needless to say, my love of 2D videogaming began with my exposure to NES.
Fast  forward a few years. Include: a degree in Computer Engineering with an  emphasis on digital logic design and software architecture; interest in  legacy hardware/firmware emulation; availability of information on-line  -- people with similar interest that actually had access to hardware  analysis tools (and a NES--I never owned one!) and could document the  NES design quite readily; and a desire to create a NES game of my own.
It  was the desire to create a NES game of my own that has brought me to  create NESICIDE. Indirectly. I started by gathering lots of tools that I  found online. Some tools let you peek at existing dumped NES ROMs  (naughty naughty, but I figure not so much if you're not planning on  burning and selling ROMs). Other tools let you create tilesets for  playfields or sprites. There's a NES BASIC interpreter (for writing NES  game logic in high-level language), NES assemblers (6502), NES music  file players/creators, NES emulators/debuggers, etc.  Quite an endless  list of tailored tools with seemingly singular purpose and little  collaboration.
I started out trying to just create  tilesets and static playfields. I got pretty far with this but had to  jig-together quite a few different tools in a Cygwin (UNIX-on-Windows)  environment on my PC. Then I could actually write a Makefile that would  take lots of individually created files as inputs and generate a NES ROM  binary image that I could load into a NES emulator of my choosing and  try out. This was cool...I could generate my own ROMs!
But  it left me unsatisfied. I wasn't happy having to switch between many  different Windows-based and UNIX-based tools to get the job done. I knew  there was a better way.
Then it hit me. Integrated  Development Environment. I spend most of my day-job working in  Integrated Development Environments of one flavor or another. I've  worked in DSP IDEs, C++ IDEs, etc. What about a NES IDE.  I am, after  all, an engineer.
I did a quick search on-line and  didn't come up with much more than a few people suggesting there be one  and a few others saying they would get to it after they finished  such-and-so.
Then I took it upon myself. It has been  one of the most rewarding projects I have ever embarked upon under my  own steam. I decided to do the framework in Microsoft Visual C++ using  MFC/GDI. I tend to throw everything I can think of into projects like  these because I can then use them as springboards to learn more about  things like MFC/GDI, Visual C++, etc.  It's even taken me beyond MFC into the cross-platformy world of Qt Creator, OpenGL, and SDL!
The NES IDE I am creating (it is, of course, nowhere near done), is intended to be the one-stop-shop for NES ROM creation.
This blog is just my way of describing what I've done and what I'm doing. I intend to complete this project, yet have no idea when.
This blog is just my way of describing what I've done and what I'm doing. I intend to complete this project, yet have no idea when.
