In a recent post I discussed the viability of developing new games for old platforms as a vehicle to liberate the gaming from the repetitive titles that currently plague the industry.
In order to get started on such a campaign, developers would need to be armed with the proper tools to do start writing a new generation of titles efficiently and at minimum cost.
1) Development Environment
The NES games would likely be programmed in 6502 assembly, and there should be no reason why a modern computer couldn’t be used to test the games via an emulator. For this task, I would propose developing a plugin for the popular Eclipse development environment which would include all the required tools in one convenient place.
The plugin would include tools to do syntax highlighting and checking of the assembly code, an Emulator tied to the compile/run command that would launch windowed inside of eclipse, and also most likely rudimentary sound and image editors for composing the media aspects of the game. Powerful modern software development tools already compatible with eclipse would be of great assistance here such as source control, static analysis and performance profiling. Another valuable feature found in some plugins would be code assist, to provide code snippets for common tasks such as probing the controller buttons. An Eclipse plugin with these features would be a godsend to any potential NES developer, especially because these tools would ideally be open source and free - providing for community improvements and widespread usage (Not to mention inherently cross platform, supporting Windows, Linux and OS X!).
2) Development Cartridge
After testing in the development environment, a game would need to be tested on native hardware as well. For this task I propose the construction of a development cartridge that includes the basic functionality of a NES cartridge but uses cheap modern microcontrollers and flash ram in order to have reprogrammable ROM and Mapper components. The cartridge would feature a speedy USB link for dumping new software to the cartridge and also possibly for in-circuit debugging, both of course in conjunction with the Eclipse plugin. Having a cartridge like this would also be handy in transporting games in progress to demo for others, being playable in any Nintendo system in the world. One major technical hurdle would be in defeating the 10NES authentication system present in all licensed Nintendo cartridges.
As these development carts would initially be fairly limited in production, a quick solution could be to harvest 10NES chips from existing NES cartridges - an ideal candidate for this being the dime a dozen Super Mario / Duck Hunt cartridge which came with almost every NES every made (wikipedia says that about 40 million of them exist). Better methods for handling this will be the topic of a future post!
3) Test controllers
In order to test on a PC as authentically as possible, real NES hardware must be interfaced with the computer. Around the internet, tons of people have taken the lazy route in doing this via a parallel port conversion. However, this is 2008 and a more ideal solution is to create a NES to USB adapter that would probably require the the connectors off the front of a NES system, a microcontroller for usb encoding and a female usb jack to connect to the computer using a standard usb cable. This solution would be ideal because the microcontroller could be powered over USB, and almost every modern machine has usb ports, whereas classic printer/parallel ports are beginning to be phased out. In particular, this would allow for portable development on laptops.
4) Production Cartridge
In order to distribute finished games in manners other than rom files, assuming the Nintendo and other heavyweights have not seen the light and allowed for digital distribution - is to produce homebrew cartridges. The first thought to come to mind would be to use a cheap modern microcontroller with decent storage capacity to reproduce the cartridge’s internal functionality. These could be programmed using traditional techniques, most likely with some eclipse automation again. The cartridge board itself would be designed via a publicly distributed eagle pcb schematic file so that 3rd party vendors such as freepcbs.com could mass produce them with professional results at minimal cost. The cartridge shells themselves would be created via homebrew vacuum forming techniques, and lack the obnoxious security bits holding them together featured by every original cartridge on the planet. Additionally, in game saves would be accomplished via modern flash ram, as opposed to the CR2032 batteries found in games like Dragon Warrior and Legend of Zelda, that die and then need to be replaced periodically with tedious soldering. Again, the authentication system would create a problem and this initial solution would include a socket on the pcb to drop in a 10NES chip harvested from another cartridge.
With these four bullet points taken care of, the major technical hurdles in launching a new wave of 8-bit games would be complete and all that would remain would be traditional simple ones such as packaging and marketing. Stores that specialize in classic gaming that are starting to popup would probably happily carry these new games on consignment until significant momentum could be gained for traditional distribution.
I intend to begin work on this plan shortly, and welcome any questions, comments or suggestions you may have!