OSDN Git Service

ram dump 対応
[unagi/old-svn-converted.git] / client / trunk / anago / vrc7.ag
1 /*VRC7 FLASH MEMORY WRITE\r
2 generic CPU memory bank\r
3 cpu address|rom address    |page|task\r
4 $8000-$9fff|0x02000-0x03fff|1   |write (0x2aaa & 0x1fff) + 0x8000\r
5 $a000-$bfff|0x04000-0x05fff|2   |write (0x5555 & 0x1fff) + 0xa000\r
6 $c000-$dfff|n * 0x2000     |n   |write area\r
7 $e000-$efff|末尾           |fix |boot area, 未使用*/\r
8 board <- {\r
9         mappernum = 85, vram_mirrorfind = false, ppu_ramfind = true,\r
10         cpu_rom = {banksize = 0x2000, size_max = 4 * mega, size_base = 1 * mega},\r
11         cpu_ram = {banksize = 0x2000, size_max = 0x2000, size_base = 0x2000},\r
12         ppu_rom = {banksize = 0x2000 / 8, size_max = 2 * mega, size_base = 1* mega}\r
13 };\r
14 function cpu_dump(d, pagesize, banksize)\r
15 {\r
16         for(local i = 0; i < pagesize - 2; i += 2){\r
17                 cpu_write(d, 0x8000, i);\r
18                 cpu_write(d, 0x8018, i | 1);\r
19                 cpu_read(d, 0x8000, banksize * 2);\r
20         }\r
21         cpu_write(d, 0x9000, 0x3e);\r
22         cpu_read(d, 0xc000, banksize * 2);\r
23 }\r
24 \r
25 function ppu_dump(d, pagesize, banksize)\r
26 {\r
27         cpu_write(d, 0xa000, 0);\r
28         for(local i = 0; i < pagesize; i += 8){\r
29                 local t = i;\r
30                 for(local j = 0xa000; j < 0xe000; j += 0x1000){\r
31                         cpu_write(d, j, t++);\r
32                         cpu_write(d, j+0x18, t++);\r
33                 }\r
34                 ppu_read(d, 0, banksize * 8);\r
35         }\r
36 }\r
37 \r
38 function cpu_ram_access(d, pagesize, banksize)\r
39 {\r
40         cpu_write(d, 0xe000, 0x80);\r
41         cpu_ramrw(d, 0x6000, banksize);\r
42         cpu_write(d, 0xe000, 0x00);\r
43 }\r
44 \r
45 /*\r
46 this is RC851/352402 style. RV051/353429 style is not supported.\r
47 352402: Program ROM/ Charcter RAM/ Backup RAM/ R1 = A5, R0 = A4/ Extra Sound\r
48 353429: Program ROM/ Charcter ROM/ R1 = A3, R0 = ?\r
49 */\r
50 function initalize(d, cpu_banksize, ppu_banksize)\r
51 {\r
52         cpu_command(d, 0, 0xc000, cpu_banksize);\r
53         cpu_command(d, 0x2aaa, 0x8000, cpu_banksize);\r
54         cpu_command(d, 0x5555, 0xa000, cpu_banksize);\r
55         cpu_write(d, 0x8000, 1);\r
56         cpu_write(d, 0x8010, 2);\r
57         cpu_write(d, 0x9000, 0);\r
58 }\r
59 function cpu_transfer(d, start, end, banksize)\r
60 {\r
61         for(local i = start; i < end - 1; i += 1){\r
62                 cpu_write(d, 0x9000, i);\r
63                 cpu_program(d, 0xc000, banksize);\r
64         }\r
65         cpu_program(d, 0xe000, banksize);\r
66 }\r
67 function ppu_transfer(d, start, end, size)\r
68 {\r
69 }\r