Kazzo USB rom dumper / dev cart programmer

Discuss hardware-related topics, such as development cartridges, CopyNES, PowerPak, EPROMs, or whatever.

Moderators: B00daW, Moderators

Fiskbit
Posts: 267
Joined: Sat Nov 18, 2017 9:15 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by Fiskbit » Tue Dec 15, 2020 8:17 pm

What sort of output do you get when you try to dump Mei Tantei Holmes? It looks like a pretty standard MMC1 game, with 256 KB ROM and CHR-RAM. The current MMC1 script is definitely not comprehensive, but I'm pretty sure it should handle that just fine.

prfsnl_gmr
Posts: 21
Joined: Tue Dec 15, 2020 7:51 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by prfsnl_gmr » Tue Dec 15, 2020 9:21 pm

lidnariq wrote:
Tue Dec 15, 2020 8:11 pm
What mapper #s have you successfully dumped?

I've already written Kazzo (i.e. squirrel, not lua) scripts for ... at least some of the ones you've mentioned, but you can use the search interface as well as I can.
Ive dumped a lot of games. I didn’t have much trouble with:

0, 1, 2, 3, 4, 7, 22, 23, 32, 66, 75, 80, 87, 118, 152, 184, 206, 210

Mapper 19 gave me a lot of trouble, but I was able to get the games to dump using a Namco 340 script. (I’m sure that affected the quality of the ROMs, and I’ll probably know that for sure when I try to patch them.)
Fiskbit wrote:
Tue Dec 15, 2020 8:17 pm
What sort of output do you get when you try to dump Mei Tantei Holmes? It looks like a pretty standard MMC1 game, with 256 KB ROM and CHR-RAM. The current MMC1 script is definitely not comprehensive, but I'm pretty sure it should handle that just fine.
I thought that the MMC1 script would work too, and it generates a ROM. When I try to play it, however, the emulator I’m using to test these (NEStopia) just gives me a blank screen. Not sure what’s going on there, and I’ve tried dumping it with both my INLRetro and Kazzo using both GUIs and command lines. Always the same result, though.

I was able to dump a few mapper 23 games like Dragon Scroll, Gambare Goemon 2, and Getsu Fuma Den, but Kid Dracula and Parodius still elude me. I was able to get Kid Niki 2 with a mapper 32 script, but I can’t get Major League to dump for some reason. (Well...it dumps. It’s just a garbled screen, though.) Likewise, I was able to get several games to dump with a mapper 184 script, but the backgrounds in Kanshakudama... come out scrambled. Maybe there’s something going on with these carts? (Should I clean them again?)

The rest, I think, are just games with unique mappers, and as someone without a background in either electrical engineering or programming, I’m not sure I’ll be able to write scripts for them.

I really appreciate the quick responses! If there’s anything I can do to help with the very cool Famicom and NES cart research conducted on this site, please let me know.

lidnariq
Posts: 10459
Joined: Sun Apr 13, 2008 11:12 am
Location: Seattle

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq » Tue Dec 15, 2020 9:59 pm

prfsnl_gmr wrote:
Tue Dec 15, 2020 9:21 pm
Mapper 19 gave me a lot of trouble, but I was able to get the games to dump using a Namco 340 script. (I’m sure that affected the quality of the ROMs, and I’ll probably know that for sure when I try to patch them.)
No, Namco 340 (mapper 210) is very closely related to Namco 163 (mapper 19), and for the purpose of dumping (but not emulating) they're completely compatible.
a mapper 32 script, but I can’t get Major League to dump for some reason. (Well...it dumps. It’s just a garbled screen, though.)
Major League is an obnoxious exception, and requires a NES 2.0 header.
See our page on the wiki: https://wiki.nesdev.com/w/index.php/INES_Mapper_032

Feel free to PM me your bad dump of Mei Tantei Holmes and I'll see if I can figure out what's going wrong.

Fiskbit
Posts: 267
Joined: Sat Nov 18, 2017 9:15 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by Fiskbit » Tue Dec 15, 2020 10:10 pm

I've been using the INL dumper primarily for Famicom modem carts, which all use MMC1 and mostly dumped fine with the existing MMC1 script. However, a handful of carts didn't dump correctly and would come out different each time, being mostly correct but with bit flips in bytes at certain address offsets. I figured out a workaround for it, so if that's your problem for the MMC1 game (maybe check by comparing checksums for multiple dumps), I can put together a script that should fix it.

prfsnl_gmr
Posts: 21
Joined: Tue Dec 15, 2020 7:51 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by prfsnl_gmr » Wed Dec 16, 2020 7:22 am

It worked! I dumped Sherlock Holmes: Fog of London Murder Case [J] this morning using the anago GUI and the MMC1_skrom mapper script. I could have sworn I tried that earlier, but maybe not? Regardless, I’m happy to have the cart backed up in a versatile digital format, and I’ll cross it off my list:

1 - Meitantei Holmes: Kiri no London Satsujin...
23 - Akamajou Special, Parodius Da!

25 - Ganbare Goemon Gaiden
32 - Major League
33 - Don Doko Don
67 - Fantasy Zone II
76 - Megami Tensei
77 - Napoleon Senki
93 - Fantasy Zone

95 - Dragon Buster
140 - Bio Senshi Dan, Murder on the Mississippi, Youkai Club
184 - Kanshakudama Nage Kantarou no Toukaidou Gojuusan-tsugi
207 - Fudo Myouu Den

I’ll take a look at the information on Major League too, and I’ll see if I can get that up and running. Thank you to everyone for the help!
Last edited by prfsnl_gmr on Thu Dec 17, 2020 4:01 pm, edited 5 times in total.

lidnariq
Posts: 10459
Joined: Sun Apr 13, 2008 11:12 am
Location: Seattle

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq » Wed Dec 16, 2020 12:46 pm

prfsnl_gmr wrote:
Wed Dec 16, 2020 7:22 am
23 - Akamajou Special, Parodius Da
25 - Ganbare Goemon Gaiden
VRC2 and 4 both came in a wide variety of boards, and dumping them requires the correct script for the PCB. Which ones did you try?

Also, where have you been looking for dumper scripts?

prfsnl_gmr
Posts: 21
Joined: Tue Dec 15, 2020 7:51 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by prfsnl_gmr » Wed Dec 16, 2020 1:52 pm

lidnariq wrote:
Wed Dec 16, 2020 12:46 pm
prfsnl_gmr wrote:
Wed Dec 16, 2020 7:22 am
23 - Akamajou Special, Parodius Da
25 - Ganbare Goemon Gaiden
VRC2 and 4 both came in a wide variety of boards, and dumping them requires the correct script for the PCB. Which ones did you try?

Also, where have you been looking for dumper scripts?
I have tried the following scripts:

vrc2a.ad
vrc2b.ad
vrc4a.ad
vrc4b.af
vrc4c.ag
vrc4d.ad

I think the vrc4 scripts all link to a vrc4.ai file. All of these were included with the unagi software package.

I have been getting additional dumper scripts by searching this thread, a few other random threads on this site, and on a github page: https://github.com/arantius/anago-scripts. Are there any other places I should be looking for them?

.....

Also, I successfully dumped Murder on the Mississippi and Youkai Club by modifying my mapper 66 script. Here's the script I used to dump them with my Kazzo:

Code: Select all

board <- {
mappernum = 140,
cpu_rom = {
size_base = 0x20000, size_max = 2 * mega, banksize = 0x8000
},
ppu_rom = {
size_base = 0x8000, size_max = 0x8000, banksize = 0x2000
},
cpu_romsize = 2 * mega, cpu_banksize = 0x8000,
ppu_romsize = 2 * mega, ppu_banksize = 0x2000,
ppu_ramfind = false, vram_mirrorfind = true
};

function cpu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0x6000, i << 4);
cpu_read(d, 0x8000, 0x4000);
cpu_read(d, 0xc000, 0x4000);
}
}

function ppu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0x6000, i);
ppu_read(d, 0, 0x2000);
}
}
This is exactly the same as my mapper 66 script, except that I changed the mappernum to 140 and the values after cpu_write from (d, 0x8000, i) to (d, 0x6000, i). Again, this dumped Murder on the Mississippi and Youkai Club, but I get a garbled mess when I try to dump Bio Senshi Dan. It looks like BIo Senshi Dan uses a slightly different board. Any idea what's going on with that one?

lidnariq
Posts: 10459
Joined: Sun Apr 13, 2008 11:12 am
Location: Seattle

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq » Wed Dec 16, 2020 2:06 pm

prfsnl_gmr wrote:
Wed Dec 16, 2020 1:52 pm
23 - Akamajou Special, Parodius Da
25 - Ganbare Goemon Gaiden
Akumajou Special and Parodius Da! should be VRC4e. Make a copy of VRC4a.ad and change the , 1, 2); to , 2, 3)

Ganbare Goemon Gaiden is VRC2c, but that should be dumpable as VRC4b.
Are there any other places I should be looking for them?
As far as I know, those are the only collections.
but I get a garbled mess when I try to dump Bio Senshi Dan. It looks like BIo Senshi Dan uses a slightly different board. Any idea what's going on with that one?
Bio Senshi Dan is the only one with 128KB CHR ROM instead of just 32KB. Change
ppu_rom = {
size_base = 0x8000, size_max = 0x8000, banksize = 0x2000
},
size_max to 131072.

prfsnl_gmr
Posts: 21
Joined: Tue Dec 15, 2020 7:51 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by prfsnl_gmr » Wed Dec 16, 2020 2:28 pm

Thanks for the tips. I'll look around a bit for those vrc mappers. (Unfortunately, the vrc4b.ag script did not work for Ganbare Goemon Gaiden. When I tried it in NEStopia, it game me a "malformed mapper" message.)

I tried the following for Bio Senshi Dan:

Code: Select all

board <- {
mappernum = 140,
cpu_rom = {
size_base = 0x20000, size_max = 2 * mega, banksize = 0x8000
},
ppu_rom = {
size_base = 0x8000, size_max = 131072, banksize = 0x2000
},
cpu_romsize = 2 * mega, cpu_banksize = 0x8000,
ppu_romsize = 2 * mega, ppu_banksize = 0x2000,
ppu_ramfind = false, vram_mirrorfind = true
};

function cpu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0x6000, i << 4);
cpu_read(d, 0x8000, 0x4000);
cpu_read(d, 0xc000, 0x4000);
}
}

function ppu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0x6000, i);
ppu_read(d, 0, 0x2000);
}
}
Unfortunately, it still comes out garbled. This my first attempt at modifying a script, and I am certain I am missing something. Are there some other values I should be changing?

lidnariq
Posts: 10459
Joined: Sun Apr 13, 2008 11:12 am
Location: Seattle

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq » Wed Dec 16, 2020 2:38 pm

prfsnl_gmr wrote:
Wed Dec 16, 2020 2:28 pm
I tried the following for Bio Senshi Dan:
Unfortunately, it still comes out garbled. This my first attempt at modifying a script, and I am certain I am missing something. Are there some other values I should be changing?
... the resulting file is 160KB, isn't it?
I forgot you'll need to change size_base in the same way also.

prfsnl_gmr
Posts: 21
Joined: Tue Dec 15, 2020 7:51 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by prfsnl_gmr » Wed Dec 16, 2020 2:57 pm

You rock. I never would have figured that out on my own. That change did it, and the ROM works perfectly. (The file size on the working ROM is 256 kb, BTW.) I confirmed the mapper also dumped Murder on the Mississippi and Youkai Club; so, for posterity, here is an all-purpose mapper 140 script:

Code: Select all

board <- {
mappernum = 140,
cpu_rom = {
size_base = 0x20000, size_max = 2 * mega, banksize = 0x8000
},
ppu_rom = {
size_base = 131072, size_max = 131072, banksize = 0x2000
},
cpu_romsize = 2 * mega, cpu_banksize = 0x8000,
ppu_romsize = 2 * mega, ppu_banksize = 0x2000,
ppu_ramfind = false, vram_mirrorfind = true
};

function cpu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0x6000, i << 4);
cpu_read(d, 0x8000, 0x4000);
cpu_read(d, 0xc000, 0x4000);
}
}

function ppu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0x6000, i);
ppu_read(d, 0, 0x2000);
}
}

lidnariq
Posts: 10459
Joined: Sun Apr 13, 2008 11:12 am
Location: Seattle

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq » Wed Dec 16, 2020 3:15 pm

prfsnl_gmr wrote:
Wed Dec 16, 2020 7:22 am
77 - Napoleon Senki
Napoleon Senki is very similar to the Color Dreams mapper, except that there's only 2KB of CHR instead of 8KB of CHR per bank.

... oh, but there isn't already a color dreams dumper. Well. Uh, it's similar to the GNROM script, except that the command for PRG and CHR are swapped:

Code: Select all

board <- {
mappernum = 77,
cpu_rom = { size_base = 131072, size_max = 131072, banksize = 0x8000 },
ppu_rom = { size_base = 32768, size_max = 32768, banksize = 0x800 },
cpu_romsize = 131072, cpu_banksize = 0x8000,
ppu_romsize = 32768, ppu_banksize = 0x800,
ppu_ramfind = false, vram_mirrorfind = false
};

function cpu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0x8000, i);
cpu_read(d, 0x8000, 0x4000);
cpu_read(d, 0xc000, 0x4000);
}
}

function ppu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0x8000, i << 4);
ppu_read(d, 0, 0x800);
}
}

prfsnl_gmr
Posts: 21
Joined: Tue Dec 15, 2020 7:51 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by prfsnl_gmr » Wed Dec 16, 2020 5:30 pm

Awesome. I dumped Kid Dracula, Napoleon, and Parodius! Thank you all so much! Only nine games to go, and I will have dumped my entire Famicom collection!

Up next, I’m going to mess around with a draft mapper 93 to see if I can dump Fantasy Zone. I will also try to figure out what’s going on with Kanshakudama . . . . That game looks identical to Wing of Madoola, which I dumped without issue. Why that one is not dumping properly is a mystery to me.

lidnariq
Posts: 10459
Joined: Sun Apr 13, 2008 11:12 am
Location: Seattle

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq » Wed Dec 16, 2020 6:11 pm

prfsnl_gmr wrote:
Wed Dec 16, 2020 7:22 am
33 - Don Doko Don
Oh, wacky, we (I) have never posted a TC0190 script.

Try this:

Code: Select all

board <- {
mappernum = 33,
cpu_rom = { size_base = 262144, size_max = 524288, banksize = 0x2000 },
ppu_rom = { size_base = 262144, size_max = 524288, banksize = 0x800 },
cpu_romsize = 262144, cpu_banksize = 0x2000,
ppu_romsize = 262144, ppu_banksize = 0x800,
ppu_ramfind = false, vram_mirrorfind = false
};

function cpu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0x8000, i);
cpu_read(d, 0x8000, 0x2000);
}
}

function ppu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0x8002, i);
ppu_read(d, 0, 0x800);
}
}
This script should also work for any mapper 48 game; just change the header.
67 - Fantasy Zone II
A SS3 dumper script could dump a SS4 cart, but not vice versa. Too bad we already have a SS4 script but not a SS3 script.
Try this:

Code: Select all

board <- {
mappernum = 67,
cpu_rom = { size_base = 262144, size_max = 262144, banksize = 0x4000 },
ppu_rom = { size_base = 262144, size_max = 262144, banksize = 0x800 },
cpu_romsize = 262144, cpu_banksize = 0x4000,
ppu_romsize = 262144, ppu_banksize = 0x800,
ppu_ramfind = false, vram_mirrorfind = false
};

function cpu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0xF800, i);
cpu_read(d, 0x8000, 0x4000);
}
}

function ppu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0x8800, i);
ppu_read(d, 0, 0x800);
}
}
This script should also work for mapper 68; again, just change the header.
76 - Megami Tensei
Maybe you'll begin to see a pattern here:

Code: Select all

board <- {
mappernum = 76,
cpu_rom = { size_base = 131072, size_max = 131072, banksize = 0x2000 },
ppu_rom = { size_base = 131072, size_max = 131072, banksize = 0x800 },
cpu_romsize = 131072, cpu_banksize = 0x2000,
ppu_romsize = 131072, ppu_banksize = 0x800,
ppu_ramfind = false, vram_mirrorfind = true
};

function cpu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0x8000, 6);
cpu_write(d, 0x8001, i);
cpu_read(d, 0x8000, 0x2000);
}
}

function ppu_dump(d, pagesize, banksize) {
for (local i = 0; i < pagesize; i += 1) {
cpu_write(d, 0x8000, 2);
cpu_write(d, 0x8001, i);
ppu_read(d, 0, 0x800);
}
}
93 - Fantasy Zone
viewtopic.php?p=215828#p215828

prfsnl_gmr
Posts: 21
Joined: Tue Dec 15, 2020 7:51 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by prfsnl_gmr » Wed Dec 16, 2020 6:24 pm

:D

I AM sensing a pattern there. I’m not sure I understand why it will work- or how you came up with these - but I’m going to see if I can figure that out too...It has been a lot of fun learning how to dump these cartridges. I am well outside my areas of expertise, and it is fun learning new things.

I’ll give each of these a shot tomorrow, and I’ll let you know how they work.

Post Reply