2 HVC-2I Fire Emblem Gaiden
\r
4 ./anago d22 mmc4_fkrom.ae hvc_2i.nes b
\r
7 mappernum = 10, vram_mirrorfind = false, ppu_ramfind = false,
\r
9 size_base = 1 * mega, size_max = 2 * mega,
\r
13 size_base = 0x2000, size_max = 0x2000,
\r
17 size_base = 0x10000, size_max = 1 * mega,
\r
23 [cpu memmorymap - read]
\r
24 $6000-$7fff SRAM (battery backuped, optional)
\r
25 $8000-$bfff program ROM bank #0
\r
26 $c000-$ffff program ROM bank #1 (fixed)
\r
28 [cpu memmorymap - write]
\r
29 $a000-$afff program ROM bank register #0
\r
30 $b000-$bfff charcter ROM bank register #0
\r
31 $c000-$cfff charcter ROM bank register #1
\r
32 $d000-$dfff charcter ROM bank register #2
\r
33 $d000-$dfff charcter ROM bank register #3
\r
35 [ppu memorymap - read]
\r
36 0x0000-0x0fff charcter ROM bank #A (#0 or #1)
\r
37 0x0fd0-0x0fdf charcter ROM bank register switch to #0
\r
38 0x0fe0-0x0fef charcter ROM bank register switch to #1
\r
39 0x1000-0x1fff charcter ROM bank #B (#2 or #3)
\r
40 0x1fd0-0x1fdf charcter ROM bank register switch to #2
\r
41 0x1fe0-0x1fef charcter ROM bank register switch to #3
\r
43 function cpu_dump(d, pagesize, banksize)
\r
45 for(local i = 0; i < pagesize - 1; i += 1){
\r
46 cpu_write(d, 0xa000, i);
\r
47 cpu_read(d, 0x8000, banksize);
\r
49 cpu_read(d, 0xc000, banksize);
\r
53 PPU の read 途中にバンクレジスタが切り替わるらしいので下記の処理で
\r
55 PPU address register
\r
61 ppu_read 前に #0 + #1 , #2 + #3 の内容は同じにしておく。
\r
63 function ppu_dump(d, pagesize, banksize)
\r
65 for(local i = 0; i < pagesize; i += 2){
\r
66 ppu_read(d, 0x0fd0, 0);
\r
67 cpu_write(d, 0xb000, i);
\r
68 ppu_read(d, 0x0fe0, 0);
\r
69 cpu_write(d, 0xc000, i);
\r
71 ppu_read(d, 0x1fd0, 0);
\r
72 cpu_write(d, 0xd000, i + 1);
\r
73 ppu_read(d, 0x1fe0, 0);
\r
74 cpu_write(d, 0xe000, i + 1);
\r
76 ppu_read(d, 0, banksize * 2);
\r
80 function cpu_ram_access(d, pagesize, banksize)
\r
82 cpu_ramrw(d, 0x6000, banksize);
\r