TapeDump v1.0 - a tool to dump carts without extra hardware

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems. See the NESdev wiki for more information.

Moderator: Moderators

Post Reply
ccovell
Posts: 1045
Joined: Sun Mar 19, 2006 9:44 pm
Location: Japan
Contact:

TapeDump v1.0 - a tool to dump carts without extra hardware

Post by ccovell »

Hi, folks. Last weekend, I received a Famicom Proto/Sample cart in the mail which had its EPROMs soldered to the game PCB, making the usual EPROM dumping a bit treacherous. So, after a little thought, I decided to write up a Famicom dumping program that sent cartridge data to a PC as an audio stream.

The dumping worked pretty well, so if this program sounds useful to anyone else, please feel free to try it out.

Image

Explanation and controls are here: http://www.chrismcovell.com/TapeDump_Controls.html

And the .NES ROMs (NTSC and PAL versions) and source are here: http://www.chrismcovell.com/data/TapeDump.zip

Comments, complaints welcome.
Last edited by ccovell on Tue Oct 11, 2011 9:44 pm, edited 2 times in total.
User avatar
cpow
NESICIDE developer
Posts: 1097
Joined: Mon Oct 13, 2008 7:55 pm
Location: Minneapolis, MN
Contact:

Re: TapeDump - a program to dump carts without extra hardwar

Post by cpow »

ccovell wrote:Hi, folks. Last weekend, I received a Famicom Proto/Sample cart in the mail which had its EPROMs soldered to the game PCB, making the usual EPROM dumping a bit treacherous. So, after a little thought, I decided to write up a Famicom dumping program that sent cartridge data to a PC as an audio stream.

The dumping worked pretty well, so if this program sounds useful to anyone else, please feel free to try it out.

Explanation and controls are here: http://www.chrismcovell.com/texts/TapeD ... trols.html

And the .NES ROMs (NTSC and (untested on hardware) PAL versions) and source are here: http://www.chrismcovell.com/data/TapeDump.zip

Comments, complaints welcome. I was considering adding a menu front-end to automate dumping of a cart, but if few people really care, maybe I won't...
What a fantastic idea. I'd love to hear some of the results! Probably a bit like playing a data CD in an audio CD player? Or, more likely, listening to a 300baud modem communicating on a voice line.

EDIT: Just noticed the example WAV in the download. Wow what memories!
Last edited by cpow on Fri Jul 15, 2011 5:02 pm, edited 1 time in total.
tepples
Posts: 22819
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples »

The Apple II cassette interface worked at about 1000 baud using frequency shift keying. I'd bet with a decent sound card, transfer rates comparable to a 56K modem would be feasible.

The page mentions the usual pak-swap gotchas:
  • Interfacing with the game's NMI handler and CHR banks in order to detect the start of vblank in order to display the UI (avoided here by using solid colors)
  • Having to cut pin 4 if using a front-loading NES
User avatar
tokumaru
Posts: 12493
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Post by tokumaru »

tepples wrote:Interfacing with the game's NMI handler in order to detect the start of vblank in order to display the UI
For such a simple program I think you can get away with just disabling NMIs and polling $2002. I mean, since you can't rely on what's mapped to the CHR area you can't have much of an UI anyway.
Having to cut pin 4 if using a front-loading NES
Yeah, no way around that, I guess. Although I imagine that if you are into activities like dumping carts you probably own a few consoles and wouldn't mind modding one of them.
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Post by thefox »

Cool idea! Now if I only had any carts to dump... :)
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
User avatar
cpow
NESICIDE developer
Posts: 1097
Joined: Mon Oct 13, 2008 7:55 pm
Location: Minneapolis, MN
Contact:

Post by cpow »

thefox wrote:Cool idea! Now if I only had any carts to dump... :)
I just dumped the dumper itself just to hear it. :D

I then thought about implementing a "Disable CIC" feature in nesicide so I could "insert a cartridge hot" and listen to dumps of some other ROMs.

Then I thought hell if I'm going that far, I mightaswell record the output of a ROM, pass it through the decoder he referenced, and see what kind of results I get.

Then I went off looking for my tape player to bring it even more retro.

Then the kids needed to go to bed so I got sidetracked.

Ahh well. ccovell, I am envious at the simplicity and beauty of your project. Nice work!
User avatar
infiniteneslives
Posts: 2104
Joined: Mon Apr 04, 2011 11:49 am
Location: WhereverIparkIt, USA
Contact:

Post by infiniteneslives »

This is a crazy awesome idea. I may just have to try it out when I get a simple dev cart running.
User avatar
e5frog
Posts: 13
Joined: Sat Jul 16, 2011 7:27 am
Location: Älvängen, Sweden
Contact:

Post by e5frog »

I can confirm that the PAL-version works well on a PAL machine, just tried dumping Excitebike on my PAL NES and registered here just to tell about it.

With a cable connected directly to the stationary PC the 1200 bps option didn't work very well in the conversion process, had no problems at all with 600 or 300. Well, it's not hooked directly... there's some gadgets on the same line so if I had hooked it directly maybe the 1200 would have worked as well.

Just to make sure I got it out right I had another dump to compare with, the dumper then gave me four parts of PRG before repeating (as expected), I didn't really have to do anything. Assembling them though needed to be done 4+1+2+3 and the 8kB CHR part was dumped in one piece and added last - it ended up as an exact match to the dump I already had.

Nice to know that it works, I guess you would need to be somewhat of an expert to make good use of it if the cart you want to dump has any kind of a mapper or maybe some work could be done on the interface so you could choose a mapper before starting the dump with automatic switching of the areas getting all the data out at once would also be nice.

Super-great idea that requires almost no modification to the unit (I already had the CIC disabled and also a PowerPak) - I wish I had something odd to dump - I guess I can check if my own carts are the same as other known versions of course...

Very good idea and extremely well executed, works like a charm!
I agree that this may help dumping some of those rare carts that noone wants to open, solder on or send away. I'm not much of a NES-guy myself but it's a small part of my overall collection - and hacking is always fun!

EDIT:
Tried it again and pushed out all four parts of the PRG into the sampler program on the PC without stopping in between and then ran all of them through KCS08. Apart from the $C0, 00 first I got the entire 16kB in one go.
User avatar
MottZilla
Posts: 2837
Joined: Wed Dec 06, 2006 8:18 pm

Post by MottZilla »

This is a pretty nifty creation. Could it be combined with the Game Genie hack that was made awhile back to avoid swapping and the need to disable the lockout?
User avatar
e5frog
Posts: 13
Joined: Sat Jul 16, 2011 7:27 am
Location: Älvängen, Sweden
Contact:

Post by e5frog »

Tried the 1200 bps again on my PAL-machine, no problem at all with a direct connection. The entire Excitebike cart dumped in less than 5 minutes.
User avatar
marvelus10
Posts: 243
Joined: Fri Feb 09, 2007 5:01 pm
Location: Nanaimo, BC Canada

Post by marvelus10 »

This is brilliant, thank you.
User avatar
infiniteneslives
Posts: 2104
Joined: Mon Apr 04, 2011 11:49 am
Location: WhereverIparkIt, USA
Contact:

Post by infiniteneslives »

Does it support any mappers?
User avatar
e5frog
Posts: 13
Joined: Sat Jul 16, 2011 7:27 am
Location: Älvängen, Sweden
Contact:

Post by e5frog »

It says in the texts that it's built for the "Konami VRC2" mapper so I guess it supports that and similar ones (if any). Currently you have to add other mappers yourself, let's hope ccovell wants to add a nice front end and some mappers in a future version.
tepples
Posts: 22819
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples »

Such a "nice front end" would probably have to involve autodetecting the mapper and then searching CHR ROM for a blank tile and a solid tile in order to write messages directly in the nametable. Then sprite 0 could be used to build a ghetto vblank detector.
User avatar
e5frog
Posts: 13
Joined: Sat Jul 16, 2011 7:27 am
Location: Älvängen, Sweden
Contact:

Post by e5frog »

Sounds like you know what to to tepples, go right ahead.

Is there enough room in the NES internal RAM to do all that?

You can have any graphics you want until you swap carts, selecting mapper manually perhaps and so on, maybe set and be able to test dumping speeds instead of doing it blindly and then send the whole cart out in a single sweep maybe including a proper iNES header as well. Everything would be set in RAM and then you'd swap carts.
That rudimentary text by using a filled or the most filled char could be used after that I guess for better information in case someone has trouble seeing colors. ;-)

Great start here anyway, the idea is brilliant, I hope it's developed further and that everyone who likes it also registers here and leaves a comment.
Post Reply