From: naruko Date: Thu, 30 May 2013 06:19:50 +0000 (+0000) Subject: ram dump 対応 X-Git-Url: http://git.osdn.net/view?p=unagi%2Fold-svn-converted.git;a=commitdiff_plain;h=3621e2e4e3161c5f2e5c448d590f2e666df18270 ram dump 対応 git-svn-id: svn+ssh://svn.osdn.net/svnroot/unagi@411 24ea1065-a21e-4ca1-99c9-f5125deb0858 --- diff --git a/client/trunk/anago/mmc4_fkrom.ad b/client/trunk/anago/mmc4_fkrom.ad deleted file mode 100644 index c29cb1a..0000000 --- a/client/trunk/anago/mmc4_fkrom.ad +++ /dev/null @@ -1,41 +0,0 @@ -board <- { - mappernum = 10, vram_mirrorfind = false, ppu_ramfind = true, - 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 - } -}; - -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); -} - -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); - } -} diff --git a/client/trunk/anago/mmc4_fkrom.ae b/client/trunk/anago/mmc4_fkrom.ae new file mode 100644 index 0000000..723daed --- /dev/null +++ b/client/trunk/anago/mmc4_fkrom.ae @@ -0,0 +1,81 @@ +/* +HVC-2I Fireemblem Gaiden +*/ +board <- { + mappernum = 10, vram_mirrorfind = false, ppu_ramfind = true, + 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 backup, optional) +$8000-$bfff program ROM bank #1 +$c000-$ffff program ROM bank #2 (fixed) + +[cpu memmorymap - write] +$a000-$afff program ROM bank register #1 +$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); +}