Page 1 of 1

Dumping "Batman - Return Of The Joker" using Kazzo NES Dumper

Posted: Sat Mar 07, 2020 5:03 am
by LGN-76
I'd like to dump "Batman - Return Of The Joker" (The NES Version) so I can legally add it to my portable Batman archive.
I've got Kazzo NES Dumper, I've got the drivers and everything installed and set up, but the problem I run into is that when I try to dump the cartridge using anago, using what should be the correct mapper (fme7.ad), I always get the following error:
m_database not found

AN ERROR HAS OCCURED [the index 'ppu_rom' does not exist]

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

LOCALS
[ppuarea_memory] NULL
[vram] 0
[increase_ppu] 1
[increase_cpu] 11
[mappernum] 69
[script] "fme7.ad"
[d] USERPOINTER
[this] TABLE
Any suggestions on what to do?

EDIT: I DID IT!
Here's what I had to do:
-Download "sunsoft_fme.ad" and "sunsoft_fme.ag" from here: https://github.com/arantius/anago-scripts
-Place them in the same folder as anago
-In anago_wx, select "sunsoft_fme.ad" as script
-THIS IS THE IMPORTANT PART!: Set BOTH Program ROM and Character ROM to 2x
-To make sure it's a good dump, download "NesToy32" from here: https://www.zophar.net/utilities/nesaud/nestoy32.html
-Place the dumped ROM in the same folder as NesToy32
-Run command prompt, go to NesToy32's folder, and type these commands in order:
1. nestoy -c
2. nestoy -rep
3. nestoy -c
IT WORKS!

Re: Dumping "Batman - Return Of The Joker" using Kazzo NES Dumper

Posted: Sat Mar 07, 2020 7:06 am
by Ice Man
The script is probably incorrect.
Try this:

Code: Select all

board <- {
	mappernum = 69, vram_mirrorfind = false, ppu_ramfind = false,
	cpu_rom = {
		size_base = 1 * mega, size_max = 2 * mega,
		banksize = 0x2000
	}, cpu_ram = {
		size_base = 0x2000, size_max = 0x2000, 
		banksize = 0x2000
	}, ppu_rom = {
		size_base = 1 * mega, size_max = 2 *mega,
		banksize = 0x0400
	}
};


function sunsoft5_write(d, register_address, data)
{
	cpu_write(d, 0x8000, register_address);
	cpu_write(d, 0xa000, data);
}

function cpu_dump(d, pagesize, banksize)
{
	local regaddress = 9
	local cpuaddress = 0x8000

	for(local i = 0; i < pagesize - 1; i++){
		sunsoft5_write(d, regaddress, i);
		cpu_read(d, cpuaddress, banksize);
	}
	cpu_read(d, 0xe000, banksize);
}

function ppu_dump(d, pagesize, banksize)
{
	local mul = 8;
	for(local i = 0; i < pagesize; i+= mul){
		for(local j = 0; j < mul; j++){
			sunsoft5_write(d, j, i + j);
		}
		ppu_read(d, 0, banksize * mul);
	}
}

function cpu_ram_access(d, pagesize, banksize)
{
	sunsoft5_write(d, 8, 0xc0);
	cpu_ramrw(d, 0x6000, banksize);
	cpu_write(d, 0xa000, 0x00);
}


function program_initalize(d, cpu_banksize, ppu_banksize)
{
	sunsoft5_write(d, 8, 1 << 6); //disable W-RAM

	cpu_command(d, 0x2aaa, 0xa000, cpu_banksize);
	cpu_command(d, 0x5555, 0xc000, cpu_banksize);
	sunsoft5_write(d, 0xa,1);
	sunsoft5_write(d, 0xb,2);

	ppu_command(d, 0x2aaa, 0x1000, ppu_banksize);
	ppu_command(d, 0x5555, 0x1400, ppu_banksize);
	ppu_command(d, 0x0000, 0x1800, ppu_banksize);

	sunsoft5_write(d, 4, 0x0a);
	sunsoft5_write(d, 5, 0x15);
	sunsoft5_write(d, 6, 0);
}

function cpu_transfer(d, start, end, cpu_banksize)
{
	for(local i = start; i < end - 1; i += 1){
		sunsoft5_write(d, 9, i);
		cpu_program(d, 0x8000, cpu_banksize);
	}
	sunsoft5_write(d, 9, 0xff & 0x1f);
	cpu_program(d, 0x8000, cpu_banksize);
}

function ppu_transfer(d, start, end, ppu_banksize)
{
	local mul = 4
	for(local i = start; i < end; i += mul){
		for(local j = 0; j < mul; j++){
			sunsoft5_write(d, j, i + j);
		}
		ppu_program(d, 0x0000, ppu_banksize * mul);
	}
}
Also NesToy is not needed. To confirm you have a good dump download the database found here:
http://bootgod.dyndns.org:7777/download ... 08-21).rar

Put it in the same folder as anago_wx.exe and add this line to anago.cfg:
dump.database=NesCarts (2017-08-21).xml