OSDN Git Service

723daed13063a8025462d8e21ae6482517e67ff5
[unagi/old-svn-converted.git] / client / trunk / anago / mmc4_fkrom.ae
1 /*\r
2 HVC-2I Fireemblem Gaiden\r
3 */\r
4 board <- {\r
5         mappernum = 10, vram_mirrorfind = false, ppu_ramfind = true,\r
6         cpu_rom = {\r
7                 size_base = 1 * mega, size_max = 2 * mega,\r
8                 banksize = 0x4000,\r
9         }, \r
10         cpu_ram = {\r
11                 size_base = 0x2000, size_max = 0x2000,\r
12                 banksize = 0x2000,\r
13         },\r
14         ppu_rom = {\r
15                 size_base = 0x10000, size_max = 1 * mega,\r
16                 banksize = 0x1000\r
17         }\r
18 };\r
19 \r
20 /*\r
21 [cpu memmorymap - read]\r
22 $6000-$7fff SRAM (battery backup, optional)\r
23 $8000-$bfff program ROM bank #1\r
24 $c000-$ffff program ROM bank #2 (fixed)\r
25 \r
26 [cpu memmorymap - write]\r
27 $a000-$afff program ROM bank register #1\r
28 $b000-$bfff charcter ROM bank register #0\r
29 $c000-$cfff charcter ROM bank register #1\r
30 $d000-$dfff charcter ROM bank register #2\r
31 $d000-$dfff charcter ROM bank register #3\r
32 \r
33 [ppu memorymap - read]\r
34 0x0000-0x0fff charcter ROM bank #A (#0 or #1)\r
35 0x0fd0-0x0fdf charcter ROM bank register switch to #0\r
36 0x0fe0-0x0fef charcter ROM bank register switch to #1\r
37 0x1000-0x1fff charcter ROM bank #B (#2 or #3)\r
38 0x1fd0-0x1fdf charcter ROM bank register switch to #2\r
39 0x1fe0-0x1fef charcter ROM bank register switch to #3\r
40 */\r
41 function cpu_dump(d, pagesize, banksize)\r
42 {\r
43         for(local i = 0; i < pagesize - 1; i += 1){\r
44                 cpu_write(d, 0xa000, i);\r
45                 cpu_read(d, 0x8000, banksize);\r
46         }\r
47         cpu_read(d, 0xc000, banksize);\r
48 }\r
49 \r
50 /*\r
51 PPU の read 途中にバンクレジスタが切り替わるらしいので下記の処理で\r
52 同じデータを得るようにする。\r
53 PPU address      register\r
54 0x0000-0x0fdf -> #0\r
55 0x0fe0-0x0fff -> #1\r
56 0x1000-0x1fdf -> #2\r
57 0x1fe0-0x1fff -> #3\r
58 \r
59 ppu_read 前に #0 + #1 , #2 + #3 の内容は同じにしておく。\r
60 */\r
61 function ppu_dump(d, pagesize, banksize)\r
62 {\r
63         for(local i = 0; i < pagesize; i += 2){\r
64                 ppu_read(d, 0x0fd0, 0);\r
65                 cpu_write(d, 0xb000, i);\r
66                 ppu_read(d, 0x0fe0, 0);\r
67                 cpu_write(d, 0xc000, i);\r
68 \r
69                 ppu_read(d, 0x1fd0, 0);\r
70                 cpu_write(d, 0xd000, i + 1);\r
71                 ppu_read(d, 0x1fe0, 0);\r
72                 cpu_write(d, 0xe000, i + 1);\r
73 \r
74                 ppu_read(d, 0, banksize * 2);\r
75         }\r
76 }\r
77 \r
78 function cpu_ram_access(d, pagesize, banksize)\r
79 {\r
80         cpu_ramrw(d, 0x6000, banksize);\r
81 }\r