Okay, here's a newer version that dumps entire carts, but it's a work-in-progress. (NROM, AxROM, MMC1, MMC3 supported.)
http://www.chrismcovell.com/data/TapeDump_V050.zip
I used Kevin Horton & BootGod's CopyNES plugins for mapper dumping. It's possible simply to jump to the CopyNES code for a full dump from my program, but the dumping format would be the CopyNES' one. Since I wanted to be able to dump just PRG, just CHR, just a header & vectors, or also a proper iNES file, I had to make each part into a subroutine. Also, since figuring out an iNES header means calculating PRG/CHR/SRAM size before dumping anything, I had to move those off into separate subroutines too.
But anyway, my dumping program sends these requests by jumping to a jump table at $0400, and the rewritten CopyNES code does the rest, accessing a couple of my functions in turn. So anyone could add another mapper if they're in a real hurry; just remember to move things around as in the example mappers.
The controls are explained on-screen, basically. Choose a mapper with U,D, and press A to continue. After swapping carts, you can press A several times to check that the program is still running normally.
Next, you might want to check that the cart is inserted correctly by pressing B, which sends a 16-byte iNES header with PRG, CHR count, and 48 bytes from $FFD0-$FFFF showing the cart vectors (and even the name in many cases). If it all looks good, press Start to dump the whole cart. If the integrity is intact, the resulting dump can be run as a regular .NES ROM.
Dumping times for the average cartridge:
________300_600_1200_2400_5200 bps
128K ROM 80m 40m 20m 10m 4m41s
256K ROM 160m 80m 40m 20m 9m
Note about the bps rate: 300-1200 bps are "standard" in the KCS format, and can be recorded at 22050 Hz, 8-bit, as the KCS08 program requires. The 2400 and 5200 bps rates are
experimental and thus less reliable. For 2400, you should record at 44100 Hz and save the audio file at that sample rate (save as 8-bit for the KCS program.) KCS08 requires a 22050 Hz file, but at twice the pitch and twice the sample rate, it's fooled into thinking it's a regular 1200 bps dump. Same goes for the 5200 bps. Record at 96000 Hz, and save the file at that rate.
The 2400 and 5200 bps audio quality is not optimal, due to the frequency response of the NES, so you will probably have to have a nice, quiet audio line for recording. Watch out (in a waveform editor) for spikes in amplitude between the 5-second continuous tone and the data stream, as this might introduce unwanted bits in the data. Also, if KCS gives you a big fat error, try using the
-G2 switch to help with the pitch adjustment, and
-F10 or
-F20 to help readjust the DC offset.
Let me know how dumping works for you.