This is a rudimentary program (but it works!!) that allows you to dump NES/FC cartridges to computer without anything more than an NES devcart (like the PowerPak, of course!) and a regular PC or digital audio player with sound recording function.
DOWNLOAD TapeDump version 1.0b
Mappers supported: NROM,
SxROM (MMC1), UxROM, CNROM, TxROM (MMC3), AxROM, Konami VRC 2a 2b 4a-e,
VRC 6a 6b, and FDS Disks |
Its basic method of operation is this: boot up TapeDump from a cartridge, swap the cartridge (slightly risky) with the one you want to dump, and then record the digital dump as a 300-5200 bps stream of audio shrieks.
I programmed it up when faced with a Famicom proto that had its EPROMs soldered to the PCB. Did I want to desolder the chips and risk frying them? Or, send the cart to someone else and wait a week for the ROM dump? No -- I was too impatient for that. This is actually the 5th or 6th "poor-man's" dumper that I have made which itself runs on the FC/NES. Earlier dumpers of mine tried saving to the FDS via FDSLoader cable, or dumped ROM data to the screen for digitization. The former (and earlier programs) needed special hardware for dumping; the latter one worked well but of course required a game that had CHR-RAM. How stupid I was to not consider the NES' audio circuitry for output, something there to be used no matter what weird cartridge is inserted for dumping!
You need a way to get this program loaded onto the NES or Famicom, of course. Typical ways include running it on a PowerPak cartridge, or on an EPROM or EEPROM devcart. Once the program starts up, you need to choose a compatible mapper (or "NROM" for a generic cartridge.) One that's done, my program loads its main code into RAM and runs from there, meaning it will (ideally) keep running even after you have removed the devcart and inserted your target cartridge for dumping.
When the program has loaded and is running in RAM, it will show some basic instructions. You can remove your EPROM/Dev cartridge and insert the cart to be dumped. Safety Notes: *1: Removal or insertion of cartridges while the NES/FC power is on runs the risk of damaging either the cartridge, its save RAM or the console. Do so at your own risk! *2: NES units that don't have their lockout chips disabled will reset when cartridges are removed. You need to have a lockout-disabled NES in order to dump carts. *3: To reduce the occurrence of CPU crashes, remove and insert your cartridges quickly. My program also flashes the screen slowly as a way of showing it's still running. *4: When dumping FDS disks, keep the disk OUT of the drive when swapping the FDS RAM adaptor in. Basically, you don't want to risk erasing a disk or a save file out of carelessness. |
After inserting the cartridge to be dumped, check the sanity of the program by tapping the A button to cycle the background colours (which also changes the bps settings.) The NES CPU can often crash when a cartridge is inserted too gradually.
If the dumping program appears to be running normally, don't worry about garbled graphics; proceed to the controls below.
|
Since removing and inserting cartridges changes CHR graphics between ROMs, open buses, and possibly empty RAM chips, there is no sure way to display graphics on-screen after a cartridge has been swapped in. Therefore, settings and dumping steps will be indicated through the background colour on-screen only.
Explanation
of initial controls |
|||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|
If you have any experience with old home computers, the following won't be a surprise. If you don't, you might be amused at how low-tech it is. Old '70s and '80s home computers used audio cassette tapes as a storage device, saving files at rates of 300-1200 baud by sending each byte serially as 11 bits encoded into loops of 1200/2400 Hz tones. A standard was set for this method, known as the "Kansas City Standard" or "Byte" (the magazine, not the data size) standard. My program should conform more or less to this standard as well, meaning you can use KCS decoding programs on the PC to retrieve cartridge dumps from the NES. When dumping starts, the NES/FC screen will go black, a ~6 sec. leader tone will sound, and the program will dump data at the selected bps rate, as a high-pitched screech through the digital audio channel of the NES/Famicom. Record this audio output to your PC sound card... or an old cassette tape if you really want to be retro. |
|||||||
|
|||||||
Record the audio on your computer at 22050 Hz or higher, and be sure to save it in a lossless format, such as WAV or AIFF. (Lossy formats such as MP3 and others apparently introduce too many overtones and distortion in the signal to be useful for anything over 300 bps.) You can then use software to decode the audio file back into binary data. I recommend the simple and effective KCS program for decoding on PCs. 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 and at 8-bit. (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. Try recording in 16-bit then boosting or normalizing the entire recording before saving at 8-bit. Also, if KCS gives you a big fat error, try using the -G2 switch to help with the pitch adjustment, and -F10 or -F-10 to help readjust the DC offset. |
|||||||
Other Gotchas: * If you're using a Famicom to dump games from (as I am), remember to shut off the 2nd controller's microphone! Buzzy or scratchy mic sliders or mics turned on recording ambient room noise are likely to ruin the dump! * Since the audio path of the Famicom travels through the cartridge slot, a FC unit with no cartridge will produce no sound. Similarly, dirty connectors can introduce scratching. Finally, cartridges with additional sound chips (such as the VRC6 or FDS) mix their own audio in, making for a slightly quieter recording. Also make sure that the expansion sound chip is silent after you have inserted the cartridge. |
FDS Disk Dumping |
Yes,
I've whipped up a little mapper file that interfaces with the FDS RAM
adaptor and dumps valid .FDS files (with 16-byte FWNES header at the
beginning.) It probably won't be able to dump nonconforming disks like
Hacker copiers, Game Doctor disks, or somesuch, but it is able
to read the full disk content of valid disks, including hidden files.
As of this time, no disk writing is possible. |
|||||||
Different
controls:
|
|||||||
Since this program depends on a correctly-inserted FDS RAM adaptor (or FDS enable switch on a Twin Famicom), it will test for correct insertion before dumping. If this test fails, you will see the background colour turn a wine red colour, indicating a fatal error. Even with the RAM adaptor inserted, numerous errors could still happen, such as no power to the FDS drive, disk not inserted, drive not ready, blank or malformatted disk, etc. These errors will be reported by a yellow background colour. Check all wiring, recheck the disk or use a different, working game to test first, or try turning off the power and reloading TapeDump. Alternately, I'd recommend using a Twin Famicom, as once you remove the TapeDump cartridge, all you have to do is slide a switch to get the FDS ROM in correct working order. Dumping a single side will take a few passes of the drive read head, so don't be surprised to see the motor start up a few times in the middle of the whole process. TapeDump loads as much as it can into the 32K FDS RAM and dumps it as audio before rereading the disk and starting where it had left off before. |
Other Gotchas: * The FDS drive uses at least two motors in its operation, which can cause voltage spikes when they power up. Unfortunately, these spikes carry directly over to the audio output of the Famicom and show up on recordings. After recording a dump of a FDS disk, I recommend going into an audio editing program and cutting out these spikes (visible in the silence preceding the 6 second lead-in tone) for each time the disk is started up for reading. * The dumping program keeps reading a disk until an error is encountered. If it's a minor error like "end of disk" or "bad file" (which also usually means the end of disk contents) then it will dump whatever it had read up to that point. If it's a major error, nothing gets dumped and you might have a hardware problem or simply a bad disk. |
* This program is still a work-in-progress with a few bugs here and there. Please remember that TapeDump basically runs inside of the NES' meagre RAM space from $0140 to $06FF or so; thus it can never be a full-featured dumping solution with graphics and sound and whatnot.
* Thanks must go to Kevin Horton, BootGod, et al, since I used their CopyNES plugins as a basis for the interchangeable mapper plugins that run from $0400-$06FF. Thanks also to the folks at NESDev for various code help or comments.
Chris Covell |