You probably didn't expect this to happen anymore, but ...
With some help from
JonY,
Muzer, and of course
Matthias, and using lots of information from the
Nesdev website and similar sources, I designed and built a
prototype of a NES plug-in for the Retrode. I also implemented experimental firmware support for this prototype. (Right now, it only exists as a branch and is not included in the standard firmware.)
I have attached a text file describing the pin assignments and an archive containing the PCB layout and schematics.
WARNING: My prototype uses a
NES 72-pin connector. The PCB must be exactly
1.2 mm thick to fit into that connector.
(Warning added 2015-11-08)Firmware FeaturesThe experimental firmware has built-in support for NES cartridges with the following boards/mappers:
NROM, AxROM, CNROM, UxROM, SxROM/MMC1, TxROM/MMC3, HKROM/MMC6.I have successfully tested it with all of my NES games.
Auto-detection of the above boards/mappers as well as the ROM/RAM sizes is working for all tested games.
Support of many
other mappers is possible by implementing small
"mapper drivers", which you can load at runtime by overwriting a particular file on the Retrode's file system (retained until the Retrode is disconnected/reset).
The
ROM is presented in two ways:
- As an emulator-friendly
".nes" file (original iNES format, not NES 2.0). The information in the header is incomplete (and the battery flag isn't 100% reliable), but emulators should be able to deal with it. Some homebrew or pirate carts may be too large for this format.
- As
separate files for PRG ROM and CHR ROM (which may also be RAM).
Detection of whether CHR is ROM or RAM is based on the frequency of the byte values (hex) F0, E0, C0, 03, 07, 0F. This is relevant for the ".nes" file, which only includes CHR ROM, not CHR RAM, for obvious reasons.
Savegame SRAM reading and writing is supported.
Status2016-12-11: As stated previously, everything that is possible with the plug-in prototype is implemented in the experimental firmware and works quite well, and NES plug-in development retains its slow and irregular pace. However, my hopes that I could complete it in 2016 have proven illusory. It looks like it will still take months.
If I'll manage to do anything NES plug-in related in the few days this year has remaining, I will most probably be working on the improved PCB design.
To-do ListThese are the major remaining items on my to-do list:
- Design an improved PCB, aiming to simplify assembly and use of the plug-in.
- Try to integrate NES plug-in support into the standard firmware.
- Maybe build another prototype with some modifications.
- Maybe improve detection of SRAM battery, if possible.
Update 2015-01-08: PCB and schematics added; formatting.
Update 2015-04-16: MMC6 (StarTropics) now supported, including SRAM reading.
Update 2015-11-08: Warning added; to-do list updated; spelling; new features: iNES file support, CNROM tested, SEROM now auto-detected like other SxROM.
Update 2016-03-20: Status, to-do list.
Update 2016-07-03: SRAM writing is now supported, size detection and CHR RAM detection improved; battery flag issue; status, to-do list.
Update 2016-12-11: Status.