Dumping Fire Emblem Gaiden with kazzo

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

Moderator: Moderators

calohtar
Posts: 12
Joined: Tue Dec 27, 2016 11:35 pm

Dumping Fire Emblem Gaiden with kazzo

Post by calohtar »

Hello everyone,

I'm new to forum, so I hope you'll pardon my ignorance. I got a copy of Fire Emblem Gaiden for the Famicom, as well as a INL Retro Kazoo device in order to dump it so I can apply a translation patch. I've downloaded the software/firmware package from here http://www.infiniteneslives.com/kazzo.php , so all of the programs/scripts I reference I found in that package. I loaded the original Kazzo firmware onto the device and I am using the cmd line anago application to dump it, and the dumping seems to be working fine - I'm getting a file at the end of it, at least - but I can't get the resulting .nes file to run in nestoptia. According to this page http://bootgod.dyndns.org:7777/profile.php?id=1266 , it used MMC4 , so I've been trying to use the mmc4.ad script that came with the anago cmd line application. However, whenever I run

Code: Select all

anago.exe d mmc4.ad fe2.nes


the result is

Code: Select all

program memory  0x040000/0x040000 |##########|##########|
charcter memory 0x020000/0x020000 |##########|##########|
mapper 10
program ROM: size 0x040000, crc32 0x75c519c5
charcter ROM: size 0x020000, crc32 0x963fd7c5
And according to http://bootgod.dyndns.org:7777/profile.php?id=1266 , that program rom crc32 value is incorrect (although the character rom crc32 value seems to be spot on). I've also tried it using the d2 and d4 arguments, and while they yield different program rom crc32 values (0xb159295d and 0xc4b026f1, respectively) they still don't match the correct value - and none of the versions I've tried have successfully booted in nestopia.

So, does anyone have any ideas as to why I'm getting a corrupted file? Any tips for getting a correct rom? I was really looking forward to playing this, so any suggestions you could offer would be greatly appreciated! Thank you very much!
zxbdragon
Posts: 498
Joined: Mon Dec 12, 2011 8:15 pm

Re: Dumping Fire Emblem Gaiden with kazzo

Post by zxbdragon »

calohtar wrote:Hello everyone,

I'm new to forum, so I hope you'll pardon my ignorance. I got a copy of Fire Emblem Gaiden for the Famicom, as well as a INL Retro Kazoo device in order to dump it so I can apply a translation patch. I've downloaded the software/firmware package from here http://www.infiniteneslives.com/kazzo.php , so all of the programs/scripts I reference I found in that package. I loaded the original Kazzo firmware onto the device and I am using the cmd line anago application to dump it, and the dumping seems to be working fine - I'm getting a file at the end of it, at least - but I can't get the resulting .nes file to run in nestoptia. According to this page http://bootgod.dyndns.org:7777/profile.php?id=1266 , it used MMC4 , so I've been trying to use the mmc4.ad script that came with the anago cmd line application. However, whenever I run

Code: Select all

anago.exe d mmc4.ad fe2.nes


the result is

Code: Select all

program memory  0x040000/0x040000 |##########|##########|
charcter memory 0x020000/0x020000 |##########|##########|
mapper 10
program ROM: size 0x040000, crc32 0x75c519c5
charcter ROM: size 0x020000, crc32 0x963fd7c5
And according to http://bootgod.dyndns.org:7777/profile.php?id=1266 , that program rom crc32 value is incorrect (although the character rom crc32 value seems to be spot on). I've also tried it using the d2 and d4 arguments, and while they yield different program rom crc32 values (0xb159295d and 0xc4b026f1, respectively) they still don't match the correct value - and none of the versions I've tried have successfully booted in nestopia.

So, does anyone have any ideas as to why I'm getting a corrupted file? Any tips for getting a correct rom? I was really looking forward to playing this, so any suggestions you could offer would be greatly appreciated! Thank you very much!
Nestopia cannot working ? Can you send me the ROM?
calohtar
Posts: 12
Joined: Tue Dec 27, 2016 11:35 pm

Re: Dumping Fire Emblem Gaiden with kazzo

Post by calohtar »

zxbdragon wrote:
Nestopia cannot working ? Can you send me the ROM?
Sorry, I won't be able to send the ROM, but here's a screen video of me trying to open it. I'm away from the kazzo now, so I can't try a new dump this morning, but here's what happens when I try to open my dump from last night. This dump was created with the command

Code: Select all

anago.exe d2 mmc4.ad fe2.nes
Attachments
fe2_dump_attempt.mp4
(992.89 KiB) Downloaded 3742 times
zxbdragon
Posts: 498
Joined: Mon Dec 12, 2011 8:15 pm

Re: Dumping Fire Emblem Gaiden with kazzo

Post by zxbdragon »

Your CHR Data is correct, but PRG Data may have a problem, there is no data, I can't go to help you!

The official licensed FEG cart?
calohtar
Posts: 12
Joined: Tue Dec 27, 2016 11:35 pm

Re: Dumping Fire Emblem Gaiden with kazzo

Post by calohtar »

So, you don't think it's a problem with the anago arguments I'm using?

Yes, as far as I am aware, it's an authentic retail copy
User avatar
Zepper
Formerly Fx3
Posts: 3262
Joined: Fri Nov 12, 2004 4:59 pm
Location: Brazil
Contact:

Re: Dumping Fire Emblem Gaiden with kazzo

Post by Zepper »

@calohtar
Try this script. Filename should be mmc4_fkrom.ae

Code: Select all

/*
HVC-2I Fire Emblem Gaiden
command line option
./anago d22 mmc4_fkrom.ae hvc_2i.nes b
*/
board <- {
	mappernum = 10, vram_mirrorfind = false, ppu_ramfind = false,
	cpu_rom = {
		size_base = 1 * mega, size_max = 2 * mega,
		banksize = 0x4000,
	}, 
	cpu_ram = {
		size_base = 0x2000, size_max = 0x2000,
		banksize = 0x2000,
	},
	ppu_rom = {
		size_base = 0x10000, size_max = 1 * mega,
		banksize = 0x1000
	}
};

/*
[cpu memmorymap - read]
$6000-$7fff SRAM (battery backuped, optional)
$8000-$bfff program ROM bank #0
$c000-$ffff program ROM bank #1 (fixed)

[cpu memmorymap - write]
$a000-$afff program ROM bank register #0
$b000-$bfff charcter ROM bank register #0
$c000-$cfff charcter ROM bank register #1
$d000-$dfff charcter ROM bank register #2
$d000-$dfff charcter ROM bank register #3

[ppu memorymap - read]
0x0000-0x0fff charcter ROM bank #A (#0 or #1)
0x0fd0-0x0fdf charcter ROM bank register switch to #0
0x0fe0-0x0fef charcter ROM bank register switch to #1
0x1000-0x1fff charcter ROM bank #B (#2 or #3)
0x1fd0-0x1fdf charcter ROM bank register switch to #2
0x1fe0-0x1fef charcter ROM bank register switch to #3
*/
function cpu_dump(d, pagesize, banksize)
{
	for(local i = 0; i < pagesize - 1; i += 1){
		cpu_write(d, 0xa000, i);
		cpu_read(d, 0x8000, banksize);
	}
	cpu_read(d, 0xc000, banksize);
}

/*
PPU の read 途中にバンクレジスタが切り替わるらしいので下記の処理で
同じデータを得るようにする。
PPU address      register
0x0000-0x0fdf -> #0
0x0fe0-0x0fff -> #1
0x1000-0x1fdf -> #2
0x1fe0-0x1fff -> #3

ppu_read 前に #0 + #1 , #2 + #3 の内容は同じにしておく。
*/
function ppu_dump(d, pagesize, banksize)
{
	for(local i = 0; i < pagesize; i += 2){
		ppu_read(d, 0x0fd0, 0);
		cpu_write(d, 0xb000, i);
		ppu_read(d, 0x0fe0, 0);
		cpu_write(d, 0xc000, i);

		ppu_read(d, 0x1fd0, 0);
		cpu_write(d, 0xd000, i + 1);
		ppu_read(d, 0x1fe0, 0);
		cpu_write(d, 0xe000, i + 1);

		ppu_read(d, 0, banksize * 2);
	}
}

function cpu_ram_access(d, pagesize, banksize)
{
	cpu_ramrw(d, 0x6000, banksize);
}
calohtar
Posts: 12
Joined: Tue Dec 27, 2016 11:35 pm

Re: Dumping Fire Emblem Gaiden with kazzo

Post by calohtar »

@Zepper

Thanks so much for the reply! Unfortunately, that script gave an error:

Code: Select all

C:\Users\jeffr\Documents\kazzo\kazzo original\unagi_client_windows_060_commandline\anago>anago d22 mmc4_fkrom.ae hvc_2i.nes b

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

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

LOCALS
[vram] 0
[increase_ppu] 2
[increase_cpu] 2
[mappernum] 0
[d] USERPOINTER
[this] TABLE
Did I do something wrong?
calohtar
Posts: 12
Joined: Tue Dec 27, 2016 11:35 pm

Re: Dumping Fire Emblem Gaiden with kazzo

Post by calohtar »

Wait, I tried copy/pasting it again to be sure I didn't miss a character or something, and it gave me a different error....

Code: Select all

C:\Users\jeffr\Documents\kazzo\kazzo original\unagi_client_windows_060_commandline\anago>anago d22 mmc4_fkrom.ae hvc_2i.nes b
mmc4_fkrom.ae line = (53) column = (18) : error Invalid character
mmc4_fkrom.ae open error
Now I'm really confused :P

edit: code marking correction
User avatar
Zepper
Formerly Fx3
Posts: 3262
Joined: Fri Nov 12, 2004 4:59 pm
Location: Brazil
Contact:

Re: Dumping Fire Emblem Gaiden with kazzo

Post by Zepper »

Here's the file. Try again, please.
Don't you own/like the anago_wx version (with GUI)???
Attachments
nintendo_mmc4_fkrom.zip
(985 Bytes) Downloaded 181 times
calohtar
Posts: 12
Joined: Tue Dec 27, 2016 11:35 pm

Re: Dumping Fire Emblem Gaiden with kazzo

Post by calohtar »

@Zepper

Thanks again for your time and efforts. I was using the cmd line version simply because the mmc4.ad script wasn't working in the gui. I copied the provided file into both my GUI anago directory and the cmd line directory, and tried it with both. Attached is a screen vid of my attempts, and here is the output.

cmd line anago results:

Code: Select all

C:\Users\jeffr\Documents\kazzo\kazzo\kazzo original\unagi_client_windows_060_commandline\anago>anago d22 nintendo_mmc4_fkrom.ae hvc_2i.nes b

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

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

LOCALS
[vram] 0
[increase_ppu] 2
[increase_cpu] 2
[mappernum] 0
[d] USERPOINTER
[this] TABLE
GUI anago_wx results:

Code: Select all

length range must be 0x000001 to 0x002000
AN ERROR HAS OCCURED [script logical error]

CALLSTACK
*FUNCTION [ppu_dump()] nintendo_mmc4_fkrom.ae line [66]
*FUNCTION [dump()] dumpcore.nut line [45]

LOCALS
[i] 0
[banksize] 4096
[pagesize] 32
[d] USERPOINTER
[this] TABLE
[ppu_dumpsize] 131072
[cpu_dumpsize] 262144
[ppuarea_memory] 0
[vram] 0
[increase_ppu] 2
[increase_cpu] 2
[mappernum] 10
[script] "nintendo_mmc4_fkrom.ae"
[d] USERPOINTER
[this] TABLE
Both of these attempts were with Program Rom and Character Rom x2 and with the Battery option selected, since you specified the d22 and b arguments in the original version of the code you provided. I also tried it without these options, however, and still no luck. From comparing the file you sent to the code you posted earlier, am I correct in understanding that the only difference is that the Japanese characters weren't being encoded properly? That would explain why I was getting the invalid character error before.

Also, the callstack mentioned dumpcore.nut, so I wondering if I had somehow messed up that file. I restored all files from the original kazoo.zip file, and it didn't make a difference. Is there an updated version of that dumpcore.nut file I need to find somewhere?

Thanks again!
Attachments
mmc4_fkrom_attempt.mp4
(523.29 KiB) Downloaded 3600 times
User avatar
Zepper
Formerly Fx3
Posts: 3262
Joined: Fri Nov 12, 2004 4:59 pm
Location: Brazil
Contact:

Re: Dumping Fire Emblem Gaiden with kazzo

Post by Zepper »

You must play a bit with the script... until it works.
Let's go. Try to change this line for(local i = 0; i < pagesize - 1; i += 1) into this for(local i = 0; i < pagesize; i += 1).

If it still doesn't work, modify the 1* mega or 2 * mega values, like 1 * mega and 1 * mega.
Somehow, the dumper checks the board and compares with the cartridge board - any bad info results in errors.

Try again and let me know. A few attempts may be required.
This script should dump that game without mods! I'm surprised.
calohtar
Posts: 12
Joined: Tue Dec 27, 2016 11:35 pm

Re: Dumping Fire Emblem Gaiden with kazzo

Post by calohtar »

Alas, no luck. The cpu_dump function now looks like this:

Code: Select all

function cpu_dump(d, pagesize, banksize)
{
	for(local i = 0; i < pagesize; i += 1){
		cpu_write(d, 0xa000, i);
		cpu_read(d, 0x8000, banksize);
	}
	cpu_read(d, 0xc000, banksize);
}
But the [the index 'cpu_romsize' does not exist] error still appears

When you talked about changed the 1 * mega and 2 * mega arguments, what should I try changing them to? I tried changing them both to 1 * mega, changing them both to 2 * mega, and changing them to 1 * mega and 2 * mega. Did you mean something else?

Thanks!
User avatar
Zepper
Formerly Fx3
Posts: 3262
Joined: Fri Nov 12, 2004 4:59 pm
Location: Brazil
Contact:

Re: Dumping Fire Emblem Gaiden with kazzo

Post by Zepper »

Strange. Other scripts with cpu_rom context don't bring the cpu_romsize, cpu_banksize or ppu_romsize values.
Try this change... see if it works.

Code: Select all

	mappernum = 10, vram_mirrorfind = false, ppu_ramfind = false, cpu_romsize=0x40000, ppu_romsize=0x20000,
calohtar
Posts: 12
Joined: Tue Dec 27, 2016 11:35 pm

Re: Dumping Fire Emblem Gaiden with kazzo

Post by calohtar »

Alright, I tried that and it gave me a different error:

Code: Select all

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

CALLSTACK
*FUNCTION [dump()] dumpcore.nut line [9]
So, I tried to follow your example and add a cpu_banksize argurment. It then gave me the same error, but for ppu_banksize, so I added one of those too. Now the line looks like

Code: Select all

mappernum = 10, vram_mirrorfind = false, ppu_ramfind = false, cpu_romsize=0x40000, ppu_romsize=0x20000, cpu_banksize = 0x4000, ppu_banksize = 0x1000,
Not sure if those values are correct, but it got rid of the errors. Now the error I'm getting is:

Code: Select all

C:\Users\jeffr\Documents\kazzo\kazzo\kazzo original\unagi_client_windows_060_commandline\anago>anago.exe d mmc4_fkrom.ae fe2.nes
length range must be 0x000001 to 0x002000
AN ERROR HAS OCCURED [script logical error]

CALLSTACK
*FUNCTION [ppu_dump()] mmc4_fkrom.ae line [66]
*FUNCTION [dump()] dumpcore.nut line [17]

LOCALS
[i] 0
[banksize] 4096
[pagesize] 32
[d] USERPOINTER
[this] TABLE
[vram] 0
[increase_ppu] 1
[increase_cpu] 1
[mappernum] 10
[d] USERPOINTER
[this] TABLE
Any ideas for that one? Thanks!
lidnariq
Posts: 11429
Joined: Sun Apr 13, 2008 11:12 am

Re: Dumping Fire Emblem Gaiden with kazzo

Post by lidnariq »

calohtar wrote:ppu_romsize=0x20000
[...]
length range must be 0x000001 to 0x002000
See above typo... This was entirely wrong, nevermind
Last edited by lidnariq on Thu Dec 29, 2016 11:35 pm, edited 1 time in total.
Post Reply