nesdev.com
http://forums.nesdev.com/

Dumping Code Masters and Fire Emblem
http://forums.nesdev.com/viewtopic.php?f=9&t=15762
Page 1 of 1

Author:  werewolfslayr925 [ Tue Apr 04, 2017 2:33 pm ]
Post subject:  Dumping Code Masters and Fire Emblem

Hello, all!

I'm looking for a way to finish dumping my NES/FamiCom collection and am having trouble with two particularly difficult sets of games.

The first set consists of two Codemasters games, Big Nose the Caveman and Big Nose Freaks Out. I've not seen anything like them and have yet to find a script for them.

The second set of games consists of the two FamiCom Fire Emblem games. With the help of the people on this thread, I managed to tweak this script found on Arantius' GitHub to get the following script:

Code:
/*
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_romsize=0x40000, ppu_romsize=0x02000, cpu_banksize=0x2000, ppu_banksize=0x1000
   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-1; i+=2){
      //just set both banks so we don't have to worry about auto-switching
      cpu_write(d, 0xB000, i);   //4KB bank @ $0000   
      cpu_write(d, 0xC000, i);   //4KB bank @ $0000
      cpu_write(d, 0xD000, i | 1);   //4KB bank @ $1000
      cpu_write(d, 0xE000, i | 1);   //4KB bank @ $1000
      ppu_read(d, 0x0000, banksize * 2);   //Read 8KB (entire CHR space $0000-1FFF
   }
}

function cpu_ram_access(d, pagesize, banksize)
{
   cpu_ramrw(d, 0x6000, banksize);
}


It dumps successfully (i.e. without errors), but, even when doubling or quadrupling the size of the dump, it consistently yields a program ROM and charcter ROM that don't work in FCEUX and which are, according to BootGod's database, too small:

program ROM: size 0x020000, crc32 0xc6916a25
charcter ROM: size 0x004000, crc32 0xd74b3527

Would anyone be able to help with these two things?

Page 1 of 1 All times are UTC - 7 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/