Kazzo USB rom dumper / dev cart programmer

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

Moderators: B00daW, Moderators

werewolfslayr925
Posts: 39
Joined: Sat Oct 02, 2010 5:49 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by werewolfslayr925 » Wed Jun 27, 2018 6:16 pm

lidnariq wrote:Mapper 101 is an erroneously-assigned duplicate of Mapper 87.
That's the mapper 87 definition. If it's working correctly in your emulator, either your emulator has a patch list that's fixing the header for you, or you haven't gotten to any part of the game that requires that banks 1 or 2 be shown.
Shoot. Turns out that the third stage does, in fact, have some scrambled sprites. Any ideas on how to get them unscrambled?

Also, I have a copy of GeGeGe no Kitarou 2 for which I have no leads for a script. Are there any scripts out there for dumping Bandai carts with mapper 152?

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

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq » Wed Jun 27, 2018 6:30 pm

Just change the header to mapper 87, instead of mapper 101. (What emulator are you using?)

Basically:
mappernum = 87 [...] cpu_write(d, 0x6000, ((i & 2) >> 1) | ((i & 1) << 1));
mappernum = 101 [...] cpu_write(d, 0x6000, i);




Mappers 152 and 70 are basically hybrids of GNROM with UNROM. Try this:

Code: Select all

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

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

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

(edit: For mapper 70, change "mappernum" to 70, increase cpu_rom's size_max to 0x40000, and change vram_mirrorfind to true)

werewolfslayr925
Posts: 39
Joined: Sat Oct 02, 2010 5:49 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by werewolfslayr925 » Thu Jun 28, 2018 9:06 pm

Thanks so much for your help, lidnariq!

Unfortunately, the script for mapper 152 didn't yield a working ROM. Here are the results:

Code: Select all

Program ROM: size 0x010000, crc32 0x4377a06f
Character ROM: size 0x0040000, crc32 0x4f46913b

As for fixing the script for Lum...

edit: ...maybe I should try actually reading your post. Doy. Jussasec...



...

Bingo! That did it. Wow. Silly me. lidnariq, you lidnaroq.

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

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq » Thu Jun 28, 2018 10:38 pm

werewolfslayr925 wrote:Program ROM: size 0x010000, crc32 0x4377a06f
That's half the PRG you should have gotten...
Character ROM: size 0x0040000, crc32 0x4f46913b
That's twice as big as the CHR you should have gotten... How did that even happen? The script I provided shouldn't have been able to make a dump that big.
you lidnaroq.
<guffaw> That's a new one on me.

werewolfslayr925
Posts: 39
Joined: Sat Oct 02, 2010 5:49 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by werewolfslayr925 » Fri Jun 29, 2018 3:16 pm

lidnariq wrote:
werewolfslayr925 wrote:Program ROM: size 0x010000, crc32 0x4377a06f
That's half the PRG you should have gotten...
Character ROM: size 0x0040000, crc32 0x4f46913b
That's twice as big as the CHR you should have gotten... How did that even happen? The script I provided shouldn't have been able to make a dump that big.
I retried it just now to test and make sure I used the right script and everything. I did use your script and got the same results. Then I tried a "d22" command to see if doubling the PRG dump would make a difference (and threw in doubling the CHR just for kicks/out of habit). I got a PRG that matches bootgod's database, but the CHR is still off:

Code: Select all

Program ROM: size 0x020000, crc32 0x48f8d55e
Character ROM: size 0x008000, crc32 0x6853bd7c
The ROM doesn't work in FCEUX either :?
you lidnaroq.
<guffaw> That's a new one on me.
I'm simultaneously glad and surprised that nobody's used that before :P

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

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq » Fri Jun 29, 2018 4:47 pm

werewolfslayr925 wrote:Then I tried a "d22" command to see if doubling the PRG dump would make a difference (and threw in doubling the CHR just for kicks/out of habit). I got a PRG that matches bootgod's database
That doesn't seem right. The dump in GoodNES has 128KiB PRG but this same CRC32, and it's not a duplicate in the first and second halves.
While it's possible to get an accidental collision with CRC32s —it's 1 in 2**16 odds, per the birthday paradox—I'd be surprised every time it does happen.
Character ROM: size 0x008000, crc32 0x6853bd7c
Uh. Why don't you PM me your smaller dump and I'll see if I can figure out what's going on.

werewolfslayr925
Posts: 39
Joined: Sat Oct 02, 2010 5:49 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by werewolfslayr925 » Mon Jul 02, 2018 12:15 pm

Thanks to lidnariq, I was able to dump GeGeGe no Kitarou 2 with the following script:

Code: Select all

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

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

function ppu_dump(d, pagesize, banksize) {
  for (local i = 0; i < pagesize; i += 1) {
    cpu_write(d, 0x8000, i);
    ppu_read(d, 0, 0x2000);
  }
}
If I understand bootgod's database correctly, this script might also work with Arkanoid II, Pocket Zaurus: Juu Ouken no Nazo, and Saint Seiya: Ougon Densetsu.

EDIT: I also modified the script for Quinty on Arantius's GitHub. It didn't work for me: it gave an incorrect CPU dump and my faulty script gave an incorrect PPU dump, so I combined the working parts of each and got a successful script. The following can be used to dump Quinty:

Code: Select all

/*

Namcot 118/119 chip with Charcter ROM A16 wired PPU A12



Quinty

*/

board <- {

	mappernum = 88, vram_mirrorfind = true, ppu_ramfind = false,

   cpu_rom = {

      size_base = 0x20000, size_max = 1*mega,

      banksize = 0x2000

   },

	cpu_ram = {

		size_base = 0, size_max = 0, banksize = 0

	}

	ppu_rom = {

		size_base = 0x20000, size_max = 0x20000,

		banksize = 0x0400

	}

};



function cpu_dump(d, pagesize, banksize)

{

	for(local i = 0; i < pagesize - 2; i += 2){

		cpu_write(d, 0x8000, [6, i, 7, i+1]);

		cpu_read(d, 0x8000, banksize * 2);

	}

	cpu_read(d, 0xc000, banksize * 2);

}



function ppu_dump(d, pagesize, banksize)

{

	local i;

	//ROM offset 0x00000-0x0ffff can access from PPU address 0x0000-0x0fff

	for(i = 0; i < (pagesize >> 1); i += 4){

		cpu_write(d, 0x8000, [0, i, 1, i+2]);

		ppu_read(d, 0x0000, banksize * 4);

	}

	

	//ROM offset 0x10000-0x1ffff can access from PPU address 0x1000-0x1fff

	for(; i < pagesize; i += 4){

		cpu_write(d, 0x8000, [2, i, 3, i+1, 4, i+2, 5, i+3]);

		ppu_read(d, 0x1000, banksize * 4);

	}

}

werewolfslayr925
Posts: 39
Joined: Sat Oct 02, 2010 5:49 pm

Re: Kazzo USB rom dumper / dev cart programmer

Post by werewolfslayr925 » Fri Sep 14, 2018 3:17 pm

Apologies to the mods for the double post. lidnariq managed to craft another script, this time for Ninja JaJamaru: Ginga Daisakusen (i.e. JF-25 and/or iNES mapper 18). We thought it should go here. If an edit is preferable, please let me know.

Code: Select all

board <- {
   mappernum = 18, vram_mirrorfind = false, ppu_ramfind = false,
   cpu_rom = {
      size_base = 1 * mega, size_max = 2 * mega,
      banksize = 0x2000
   },
   ppu_rom = {
      size_base = 1 * mega, size_max = 2 * mega,
      banksize = 0x2000 / 8
   }
};

function cpu_dump(d, pagesize, banksize)
{
   for(local i = 0; i < pagesize - 2; i += 2){
      cpu_write(d, 0x8000, i);
      cpu_write(d, 0x8001, i >> 4);
      cpu_write(d, 0x8002, i | 1);
      cpu_write(d, 0x8003, i >> 4);
      cpu_read(d, 0x8000, banksize * 2);
   }
   cpu_write(d, 0x9000, 0xE);
   cpu_write(d, 0x9001, 0xF);
   cpu_read(d, 0xc000, banksize * 2);
}

function ppu_dump(d, pagesize, banksize)
{
   for(local i = 0; i < pagesize; i += 8) {
      cpu_write(d, 0xa000, i);
      cpu_write(d, 0xa001, i >> 4);
      cpu_write(d, 0xa002, i|1);
      cpu_write(d, 0xa003, i >> 4);
      cpu_write(d, 0xb000, i|2);
      cpu_write(d, 0xb001, i >> 4);
      cpu_write(d, 0xb002, i|3);
      cpu_write(d, 0xb003, i >> 4);
      cpu_write(d, 0xc000, i|4);
      cpu_write(d, 0xc001, i >> 4);
      cpu_write(d, 0xc002, i|5);
      cpu_write(d, 0xc003, i >> 4);
      cpu_write(d, 0xd000, i|6);
      cpu_write(d, 0xd001, i >> 4);
      cpu_write(d, 0xd002, i|7);
      cpu_write(d, 0xd003, i >> 4);
      ppu_read(d, 0x0000, banksize * 8);
   }
}

Zoldark
Posts: 28
Joined: Sat Oct 28, 2017 10:18 am

Re: Kazzo USB rom dumper / dev cart programmer

Post by Zoldark » Wed Sep 19, 2018 9:57 pm

lidnariq wrote:Just change the header to mapper 87, instead of mapper 101. (What emulator are you using?)

Basically:
mappernum = 87 [...] cpu_write(d, 0x6000, ((i & 2) >> 1) | ((i & 1) << 1));
mappernum = 101 [...] cpu_write(d, 0x6000, i);

Thank You.. I Couldn't figure out how to Dump my Mapper 87 games til I saw this dumped all 3 my games Argus, Jajamaru no Daibouken, and Ninja Jajamaru-kun, just by changing the CNROM Script.

I do have a question I was thinking of buying some more Programmable Flash Boards, One particular Board or the Other, I think what I need is a MMC1 Flash Board that has 512kb Program and No Char Rom, So was looking at MMC1 SUROM or MMC1 SXROM. Except I don't know which one I need, I want it to program my own Multi-Carts on it that I made or well put together on to a Rom using the Code by Mottzilla that uses MMC1 and only has 512KB of Program https://thegaminguniverse.org/ninjagaid ... ebrew.html Does anyone Know if either of those Boards can be Programed with a Code By Mottzilla Rom? Then does anyone know if it would work?

I have about 3 or 4 Multi-Carts I put together for my own use and I hope to play and test them on real Hardware if possible.

Edit: Looking at Bootgods database I am thinking of going with SXROM as there are not many games that used it so it will be fun to try, and is a combination of SOROM and SUROM so probably would be best. Then I have to have that New Mapper 30 UNROM512 Board too. The Best..

Germansnake
Posts: 6
Joined: Wed Sep 26, 2018 8:03 am

Post by Germansnake » Wed Sep 26, 2018 8:30 am

Is there a script for Mapper 78 ? Received my Copy of Holy Diver from Dragonshop today and there is no script in anago for mapper 78. Spend hours today to dump the game with no success. Hope someone can help me :)

tepples
Posts: 21752
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 » Wed Sep 26, 2018 8:37 am

Try this: Dump the PRG ROM with the UNROM script, then dump the CHR ROM with the Color Dreams script, and stitch them up and set the mapper to 78.3.

Germansnake
Posts: 6
Joined: Wed Sep 26, 2018 8:03 am

Re: Kazzo USB rom dumper / dev cart programmer

Post by Germansnake » Wed Sep 26, 2018 8:44 am

you can dump the PRG & CHR Rom separately ? I must say I am a total noob, when it comes to anago scripts. Have to search for the color Dreams script. Feel dump for asking but how do I stitch them up ? I know how to change the mapper in the GUI

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

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq » Wed Sep 26, 2018 10:03 am

Let me just copy and paste the two scripts together, it'll be easier than explaining how to do the same thing with the resulting files:

Code: Select all

board <- {
  mappernum = 78,
	cpu_rom = {
		size_base = 1 * mega, size_max = 1 * mega, banksize = 0x4000
	}, 
  ppu_rom = {
    size_base = 1 * mega, size_max = 1 * mega, banksize = 0x2000
  },
  ppu_ramfind = false, vram_mirrorfind = false
};

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

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

Germansnake
Posts: 6
Joined: Wed Sep 26, 2018 8:03 am

Re: Kazzo USB rom dumper / dev cart programmer

Post by Germansnake » Wed Sep 26, 2018 3:42 pm

Was able to dump it, but only a gray screen or nothing in any emulator

https://www.dragonbox.de/en/789-holy-di ... 36733.html

is that version different then the original one from 89 ?

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

Re: Kazzo USB rom dumper / dev cart programmer

Post by lidnariq » Wed Sep 26, 2018 3:52 pm

It's certainly possible that their unlicensed reproduction isn't mapper 78. Comparing the dump you got from a known good dump is the easiest way to find out ... comparing the part numbers on the PCB inside with those of the official release is the other.

Post Reply