Kazzo USB rom dumper / dev cart programmer

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

Moderator: Moderators

lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq »

Kazzo doesn't use drivers - it just talks to the USB device as a normal program.

Original cartridges are not programmable at all - they had their contents physically put in when they were forged.

Some small runs of games used "UV EPROM"s. Those can be erased and programmed, but not by the Kazzo, and they're rare.

Only things using EEPROMs and/or Flash can be programmed by the Kazzo and others.
Joe
Posts: 650
Joined: Mon Apr 01, 2013 11:17 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by Joe »

DoomJedi wrote: Fri Mar 10, 2023 12:58 pm...also a quick question...I know ROM is read-only, does to mean I can burn rom to that cartridge only once?
The cartridge in your link uses flash ROMs, so you can erase and rewrite it.
User avatar
DoomJedi
Posts: 14
Joined: Fri Mar 10, 2023 12:54 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by DoomJedi »

Joe wrote: Fri Mar 10, 2023 7:30 pm The cartridge in your link uses flash ROMs, so you can erase and rewrite it.
This is fantastic news, neat! :beer: 8-)

Trying to dump a cartridge (tried to burn one too) using Anago WX, no success so far.
Any tips on proper use of that tool?
I get "reader open error" or stuff like

Code: Select all

CALLSTACK
*FUNCTION [dump()] dumpcore.nut line [22]

LOCALS
[ppuarea_memory] NULL
[vram] 0
[increase_ppu] 1
[increase_cpu] 11
[mappernum] 130
[script] "_63in1.ad"
[d] USERPOINTER
[this] TABLE
And no file is created. Not sure which script to use either.

And how to know mapper/script of pirate multicarts? I really want to dump "32 in 1" (mini version of 52 in 1), my beloved 90s cartridge that was never dumped.
User avatar
DoomJedi
Posts: 14
Joined: Fri Mar 10, 2023 12:54 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by DoomJedi »

Does anyone have anago dumping script for this one? This is my beloved multicart that I want to dump.
http://krzysiobal.com/carts/?action=view&id=3
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq »

Try this:

Code: Select all

board <- {
  mappernum = 225,
  cpu_rom = {
    size_base = 0x100000, size_max = 0x100000, banksize = 0x8000
  },
  ppu_rom = {
    size_base = 0x80000, size_max = 0x80000, banksize = 0x2000
  },
  cpu_romsize = 0x100000, cpu_banksize = 0x8000,
  ppu_romsize = 0x80000, ppu_banksize = 0x2000,
  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&31)<<7) | ((i&32)<<9), 0);
    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&63) | ((i&64)<<8), 0);
    ppu_read(d, 0, 0x2000);
  }
}
User avatar
DoomJedi
Posts: 14
Joined: Fri Mar 10, 2023 12:54 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by DoomJedi »

Thank you, will try.

This is not the exact same PCB though, this is my PCB - should the script work for it?
http://krzysiobal.com/carts/?action=view&id=499

If no - and I understand you're the expert in such scripts here - can you make me a proper script so I can dump my cartridge?
Thanking you in advance :)

BTW ordered from ebay another similar 32 in 1, waiting for it to arrive. Not sure I'll open the PCB on that one though.
Last edited by DoomJedi on Mon Mar 20, 2023 9:10 am, edited 1 time in total.
User avatar
DoomJedi
Posts: 14
Joined: Fri Mar 10, 2023 12:54 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by DoomJedi »

lidnariq wrote: Sun Mar 12, 2023 11:27 am Try this:
(Excuse me upfront being really new in this) I copied your code into a new 32in1.ad script file, and I get (trying to "Dump")
"Reader open error"
Image

Reader is on and connected to USB.
Can you help me to understand what I am doing doing wrong or need to do to setup this properly?

This is how it looks in hardware setup:
Image
User avatar
krzysiobal
Posts: 1037
Joined: Sun Jun 12, 2011 12:06 pm
Location: Poland
Contact:

Re: Kazzo USB rom dumper / dev cart programmer

Post by krzysiobal »

Try to download USB-driver reinstall Tool - Zadig:
https://github.com/pbatard/libwdi/relea ... ig-2.7.exe

And when you connect kazzo open Zadig, select "libusb=win32 (v1.2.6.0)" on the right side of green arrow and click "Reinstall driver"
Image My website: http://krzysiobal.com | Image My NES/FC flashcart: http://krzysiocart.com
User avatar
DoomJedi
Posts: 14
Joined: Fri Mar 10, 2023 12:54 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by DoomJedi »

krzysiobal wrote: Mon Mar 20, 2023 12:31 pm Try to download USB-driver reinstall Tool - Zadig:
https://github.com/pbatard/libwdi/relea ... ig-2.7.exe

And when you connect kazzo open Zadig, select "libusb=win32 (v1.2.6.0)" on the right side of green arrow and click "Reinstall driver"
Thanks, installed successfully...or so it seems.

Image

Image

Still get "reader open error" though :(
User avatar
DoomJedi
Posts: 14
Joined: Fri Mar 10, 2023 12:54 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by DoomJedi »

DoomJedi wrote: Mon Mar 20, 2023 1:31 pm Still get "reader open error" though :(
Any possible ideas?
Zoldark
Posts: 72
Joined: Sat Oct 28, 2017 10:18 am
Contact:

Re: Kazzo USB rom dumper / dev cart programmer

Post by Zoldark »

I hate to be a bother as always, but
Does anyone have a script for Mapper 86? as I bought a copy of the Famicom Bases Loaded awhile back that is like the only game that uses Mapper 86.

I tried creating a Mapper 86 script using a Mapper 140 Script that I have, as Mapper 140 seems to be a similar mapper to 86 it works for 2 of the 3 games that use that Mapper, anyway I changed it to Mapper 86 and it does dump the game but the resulting dump comes out with 128kb PRG with incorrect CRC32 that seems to work with just 32kb of CHR but the game has 64kb of CHR. So the dump runs on Mapper 86 but the graphic's are Garbled, I guess I could take it a part and join the PRG with a correct CHR from a existing dump and see if it works correctly.

Here is the code I have for my script as far as I can tell it should create 64kb of CHR but it will not increase from 32kb to 64kb when I dump my game, however if I set the size_base = 0x12000, and size_max = 0x12000 it creates 72kb of CHR that is still wrong. Also the game doesn't work as Mapper 140.

Code: Select all

board <- {
mappernum = 86,
cpu_rom = {
size_base = 0x20000, size_max = 2 * mega, banksize = 0x8000
},
ppu_rom = {
size_base = 0x10000, size_max = 0x10000, 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);
}
}
https://nescartdb.com/profile/view/1549 ... pro-yakyuu

Edit: I just looked and my resulting dump has the same Program CRC32 as the Black Cartridge Existing dump but I have The Red Cartridge. I guess I need to take it apart and look at it. I didn't know there was a Black Cartridge of it as I have never seen one. So I guess my script is working I just need to know how to set it to dump the CHR. I couldn't pop my game apart when I tried the Cart tried to crack so I just snapped it back together at least it isn't one those expensive game.

Actually I just order a Black Cartridge of it too off Ebay. lol
Last edited by Zoldark on Wed Apr 12, 2023 3:34 pm, edited 1 time in total.
Don't buy FamicomNes games WillyNilly Check the Mapper first
https://www.nesdev.org/wiki/Mapper
https://nescartdb.com/
I feel like I said something wrong even if I didn't I don't know for sure and I always feel bad about it.
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq »

As you can see, CHR bankswitching bits are inconveniently non-adjacent - the values you'd need to write are 0,1,2,3,64,65,66,67.

So you can either use bitwise math, or you can just unroll the loop, or you can split ppu_dump into two loops:

Code: Select all

function ppu_dump(d, numpages, banksize) {
  for (local i = 0; i < 4; i += 1) {
    cpu_write(d, 0x6000, i);
    ppu_read(d, 0, 0x2000);
  }
  for (local i = 64; i < 68; i += 1) {
    cpu_write(d, 0x6000, i);
    ppu_read(d, 0, 0x2000);
  }
}
As for what's the best solution? Dunno...
Zoldark
Posts: 72
Joined: Sat Oct 28, 2017 10:18 am
Contact:

Re: Kazzo USB rom dumper / dev cart programmer

Post by Zoldark »

lidnariq wrote: Wed Apr 12, 2023 3:27 pm As you can see, CHR bankswitching bits are inconveniently non-adjacent - the values you'd need to write are 0,1,2,3,64,65,66,67.

So you can either use bitwise math, or you can just unroll the loop, or you can split ppu_dump into two loops:

Code: Select all

function ppu_dump(d, numpages, banksize) {
  for (local i = 0; i < 4; i += 1) {
    cpu_write(d, 0x6000, i);
    ppu_read(d, 0, 0x2000);
  }
  for (local i = 64; i < 68; i += 1) {
    cpu_write(d, 0x6000, i);
    ppu_read(d, 0, 0x2000);
  }
}
As for what's the best solution? Dunno...
Awesome, Thank you.

That did it dumped the correct CHR I guess I have the Black version inside of a Red Cart. Maybe I'll get the Red version in my Black Cart. I'll see when I get it..


Also I didn't know about bitwise math either will have to try and learn about that, I wondered why things didn't add up or make sense.


Here is the whole code for Mapper 86.

Code: Select all

board <- {
mappernum = 86,
cpu_rom = {
size_base = 0x20000, size_max = 2 * mega, banksize = 0x8000
},
ppu_rom = {
size_base = 0x10000, size_max = 0x10000, 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, numpages, banksize) {
  for (local i = 0; i < 4; i += 1) {
    cpu_write(d, 0x6000, i);
    ppu_read(d, 0, 0x2000);
  }
  for (local i = 64; i < 68; i += 1) {
    cpu_write(d, 0x6000, i);
    ppu_read(d, 0, 0x2000);
  }
}
Don't buy FamicomNes games WillyNilly Check the Mapper first
https://www.nesdev.org/wiki/Mapper
https://nescartdb.com/
I feel like I said something wrong even if I didn't I don't know for sure and I always feel bad about it.
Zoldark
Posts: 72
Joined: Sat Oct 28, 2017 10:18 am
Contact:

Re: Kazzo USB rom dumper / dev cart programmer

Post by Zoldark »

lidnariq wrote: Thu Oct 06, 2022 10:58 am The default UNROM script tries to switch banks by writing to 0x8000.

However, Mapper 71 doesn't. For that, it needs to have those writes happen to 0xC000.
(Change cpu_write(d, 0x8000, i); to cpu_write(d, 0xC000, i);)
That does work, I did as you suggested for the UNROM Script and I was able to dump my "The Ultimate Stuntman" game on Mapper 71
I just had to use the D22 Command when dumping it to double the PRG to 256kb.

Thanks Again..

Do you have any suggestion for a Mapper 232 Script? as I have a copy of the gold Quattro Sports too..
Don't buy FamicomNes games WillyNilly Check the Mapper first
https://www.nesdev.org/wiki/Mapper
https://nescartdb.com/
I feel like I said something wrong even if I didn't I don't know for sure and I always feel bad about it.
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq »

something silly like

Code: Select all

for (local bb = 0; bb < 32; bb += 8) {
  cpu_write(d, 0x8000, bb);
  for (local pp = 0; pp < 4; pp += 1) {
    cpu_write(d, 0xc000, pp);
    cpu_read(d, 0x8000, 0x4000);
  }
}
Post Reply