Kazzo USB rom dumper / dev cart programmer

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

Moderator: Moderators

Jim VanDeventer
Posts: 4
Joined: Tue Apr 02, 2013 7:00 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by Jim VanDeventer »

I did manage to get Tetris working with a bit of, uhh, hackery. I examined the file with a hex editor and noticed it seems to start over at line 4010. I deleted lines 4010 through 1C010 and now it works as expected. I would like to figure out what exactly has been shoehorned in the middle of an otherwise good ROM but that will probably have to wait until the new year. Happy Holidays, y'all!
Attachments
twofer.png
darthvedder
Posts: 10
Joined: Sat Feb 20, 2016 7:41 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by darthvedder »

I just recently entered the kazzo world and I've been having fun dumping games.

I used the SEROM script found on page 14 of this thread to dump Tetris. It worked just fine:
viewtopic.php?f=9&t=7912&start=195#p118387

The only game I am having trouble with is Bases Loaded. It is the only SFROM game I have. I've tried the SLROM script (mmc1_slrom.ad) because I thought it would be similar. The 64 KB CHR ROM dumps fine, but the PRG ROM is giving me problems. Bases Loaded's PRG ROM is 256 KB. I've been reading up about the MMC1 mapper on nesdev's wiki and I see that it has to be accessed serially with a shift register. I also see that the banks can be switched. If I'm reading it right, the SLROM script sets the PRG ROM configuration to switch banks at 0x8000 while keeping the last bank fixed at 0xc000. When I use 'd2' in the command (anago.exe d2 mmc1_slrom.ad "Bases Loaded.nes"), the cpu pagesize gets set to 16, so it reads 15 banks of PRG ROM (15 x 16 KB = 240 KB) from 0x8000 and then the last bank at 0xc000, for a total of 256 KB. However, the crc32 does not match any of the ones found in bootgod's database.

Has anybody been able to dump Bases Loaded successfully? Does it have a different switching configuration?

I am a total newbie to all of this, so I hope I am reading the scripts correctly.
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq »

You're right; SFROM should be identical to SLROM in terms of the script used.

I'm not really clear why you're having problems. If you take the dumped PRG, and split it into sixteen 16 KiB slices, are any of them identical? (Apparently the 9th, 11th, 13th, and 15th slices are. But only those.)
darthvedder
Posts: 10
Joined: Sat Feb 20, 2016 7:41 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by darthvedder »

lidnariq wrote:You're right; SFROM should be identical to SLROM in terms of the script used.

I'm not really clear why you're having problems. If you take the dumped PRG, and split it into sixteen 16 KiB slices, are any of them identical? (Apparently the 9th, 11th, 13th, and 15th slices are. But only those.)
Thanks for the response! None are identical except the ones you mentioned:

Bank crc32
1 B5241D95
2 C38065E3
3 35B01235
4 2AADA651
5 D6AF8977
6 BEB66FC2
7 E279FE5B
8 97F8314E
9 A7828A1D
10 43236FF7
11 A7828A1D
12 3F38BBDC
13 A7828A1D
14 733DB4BD
15 A7828A1D
16 6E653217

So, the script appears to be working correctly? I am baffled...

It's interesting to look at the different profiles for Bases Loaded on bootgod's site. Between the first release and revision A, the hardware changed from MMC1A to MMC1B2. My copy has the black Nintendo trademark circle, so it's one of the first versions. Does the fact that it's MMC1A hardware make a difference?
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq »

Nah, MMC1 revisions only how the PRG-RAM protect bit works. ( nesdevwiki:MMC1#Hardware )

Comparing your CRC32s to the values from the PRG0 image in GoodNES, I noticed something interesting:
a79ef47f 0 Bases Loaded (U) (PRG0) [!].nes.prg
c38065e3 1 Bases Loaded (U) (PRG0) [!].nes.prg

270afbdf 2 Bases Loaded (U) (PRG0) [!].nes.prg
2aada651 3 Bases Loaded (U) (PRG0) [!].nes.prg

c415609d 4 Bases Loaded (U) (PRG0) [!].nes.prg
beb66fc2 5 Bases Loaded (U) (PRG0) [!].nes.prg

f0c317b1 6 Bases Loaded (U) (PRG0) [!].nes.prg
97f8314e 7 Bases Loaded (U) (PRG0) [!].nes.prg

b53863f7 8 Bases Loaded (U) (PRG0) [!].nes.prg
43236ff7 9 Bases Loaded (U) (PRG0) [!].nes.prg

b53863f7 10 Bases Loaded (U) (PRG0) [!].nes.prg
3f38bbdc 11 Bases Loaded (U) (PRG0) [!].nes.prg

b53863f7 12 Bases Loaded (U) (PRG0) [!].nes.prg
733db4bd 13 Bases Loaded (U) (PRG0) [!].nes.prg

b53863f7 14 Bases Loaded (U) (PRG0) [!].nes.prg
6e653217 15 Bases Loaded (U) (PRG0) [!].nes.prg


Something's trashing each lower 16 KiB. As to where exactly that's breaking ... who knows?
darthvedder
Posts: 10
Joined: Sat Feb 20, 2016 7:41 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by darthvedder »

Very interesting, indeed! I guess having a half working ROM is better than having a completely wrong one...

Thanks for posting those crcs...now I have something to work toward.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Kazzo USB rom dumper / dev cart programmer

Post by tepples »

Anything to do with SFEXPROM, essentially an official counterpart to the Game Genie to fix a bug in the game after the mask ROMs had already been fabricated?
darthvedder
Posts: 10
Joined: Sat Feb 20, 2016 7:41 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by darthvedder »

tepples wrote:Anything to do with SFEXPROM, essentially an official counterpart to the Game Genie to fix a bug in the game after the mask ROMs had already been fabricated?
Oh wow, I was wondering about that extra chip and what it did. That must be the version I have.

edit: That is the version I have! I went through and changed each value from 0x60 to to 0x05 at offset 0x180 and now the crc32s match up and the ROM works! Thank you so much for the help!
BlinksTale
Posts: 1
Joined: Fri Mar 04, 2016 2:10 am

Re: Kazzo USB rom dumper / dev cart programmer

Post by BlinksTale »

PatHawks wrote:I am looking for an .ad/.ag script for Gumshoe, iNES Mapper 66. I believe this is the same mapper used for the combo Super Mario Bros / Duck Hunt.

On that note, it might be helpful to setup a GitHub/SourceForge repository or something for all of the mapper scripts. It seems many exist, but they are not all in one place.
18 months later...

I just got my kazzo in the mail today (thanks Paul!) and have been fussing with it all night. Had to switch to the old kazzo firmware and anago command line to get my games dumping (I'm used to the phrase "ripping", so excuse any transitional slang misuse) and have had most problems solved by trying variations on mmc1 through mmc3 for my anago scripts (.ad/.ag files) but my Mapper 66 game in particular, Super Mario Bros. / Duck Hunt, was not giving me any solutions.

I then found arantius's anago-scripts repo which I think PatHawks is the same type of aggregate repo you are interested in. Not sure if arantius is you by another name, as I'm brand new to the NesDev community, with only light emulation/ripping work.

Anyways, there's a script for Mapper 66 games there! _gnrom.ad, but it doesn't seem to work with the version of anago in infiniteneslives' kazzo zip - so I tweaked it to address the error it was throwing ("the index 'cpu_romsize' does not exist") by copying bits of code from mmc3.ad, and it seems to work!

So if anyone is trying to address 74161/32 (66) being the listed requirement for a Mapper in the nesmapper.txt file, my tweak on the _gnrom file seems to work with the latest anago from infiniteneslives. Let me know if there are any issues, or feel free to just modify it yourself!

EDIT: Y'know, I really should pay attention when there are only two contributors on a project to who the second guy is... looks like you are not arantius, but pathawks on github. Go figure!
Werrock
Posts: 44
Joined: Mon Mar 28, 2016 9:40 am
Location: Sweden

Re: Kazzo USB rom dumper / dev cart programmer

Post by Werrock »

Hello,

I just got into dumping NES games using the Kazzo and so far so good. I have been dumping a lot of my regular games but now I would like to dump some Gluk games. Specifically Gluk the Thunder Warrior. Since this is a hack if you will of the TXC original Thunder Warrior that used the Mapper 189 (http://wiki.nesdev.com/w/index.php/INES_Mapper_189) I was wondering if anyone have done a dumper script supporting this? I anyone can help I would very much appreciate it and share the dumps with you.
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq »

... Could you pretty please take a picture of the back of the PCB? NesCartDB only has the front. - http://bootgod.dyndns.org:7777/profile.php?id=4266

Anyway, you should be able to dump the CHR of the game as though it were mapper 4/MMC3, and you should be able to adapt the dumper script for BNROM to dump the PRG.
Werrock
Posts: 44
Joined: Mon Mar 28, 2016 9:40 am
Location: Sweden

Re: Kazzo USB rom dumper / dev cart programmer

Post by Werrock »

Yes no problem! I took a picture on the front as well in case there are any confusions:
Image
Image

I do not have the knowledge on how to adapt the mapper scripts. I would like to learn (I tried to look at the script and compare it to the mapper 4 documentation) but I think and hope there are people out there that could help me with this resulting in this going faster.

Anyway, with no luck I will try get more information on how to make dump scripts on my own. I have several games I cannot find roms too which I would like to dump sharing with other collectors.
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq »

You should be able to start with the GNROM script here: https://github.com/arantius/anago-scrip ... /_gnrom.ad

and change this line in cpu_dump:

Code: Select all

    cpu_write(d, 0x8000, i << 4);
to

Code: Select all

    cpu_write(d, 0x4120, i | (i<<4)); 
to get the PRG out of the cartridge.

Naruko's provided mmc3 script is complex enough that I'm a little afraid of it, but as I said, you should just be able to dump it twice once using each technique, split the resulting files and reassemble into something functional.
Joe
Posts: 650
Joined: Mon Apr 01, 2013 11:17 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by Joe »

If it works (no promises!), this script should be the easiest way to dump that cartridge.

Code: Select all

board <- {
	mappernum = 189,
	cpu_rom = {
		size_base = 0x80000, size_max = 0x80000,
		banksize = 0x8000
	},
	ppu_rom = {
		size_base = 0x40000, size_max = 0x40000,
		banksize = 0x400
	},
	ppu_ramfind = false, vram_mirrorfind = false
};


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

function ppu_dump(d, pagesize, banksize)
{
	for(local i = 0; i < pagesize; i+=4){
		cpu_write(d, 0x8000, 2);
		cpu_write(d, 0x8001, i);
		cpu_write(d, 0x8000, 3);
		cpu_write(d, 0x8001, i | 1);
		cpu_write(d, 0x8000, 4);
		cpu_write(d, 0x8001, i | 2);
		cpu_write(d, 0x8000, 5);
		cpu_write(d, 0x8001, i | 3);
		ppu_read(d, 0x1000, banksize * 4);
	}
}
Werrock
Posts: 44
Joined: Mon Mar 28, 2016 9:40 am
Location: Sweden

Re: Kazzo USB rom dumper / dev cart programmer

Post by Werrock »

I got this error:
ength range must be 0x000000 to 0x004000
AN ERROR HAS OCCURED [script logical error]

CALLSTACK
*FUNCTION [cpu_dump()] 189.ad line [19]
*FUNCTION [dump()] dumpcore.nut line [43]

LOCALS
0
[banksize] 32768
[pagesize] 16
[d] USERPOINTER
[this] TABLE
[ppu_dumpsize] 262144
[cpu_dumpsize] 524288
[ppuarea_memory] 0
[vram] 0
[increase_ppu] 1
[increase_cpu] 1
[mappernum] 189
[script] "189.ad"
[d] USERPOINTER
[this] TABLE
Post Reply