OSDN Git Service

スクリプトファイルの属性を変更
[unagi/old-svn-converted.git] / client / trunk / anago / sunsoft_fme.ad
index 1b0bfda..48991c2 100644 (file)
-board <- {\r
-       mappernum = 69, vram_mirrorfind = false, ppu_ramfind = false,\r
-       cpu_rom = {\r
-               size_base = 1 * mega, size_max = 2 * mega,\r
-               banksize = 0x2000\r
-       }, cpu_ram = {\r
-               size_base = 0x2000, size_max = 0x2000, \r
-               banksize = 0x2000\r
-       }, ppu_rom = {\r
-               size_base = 1 * mega, size_max = 2 *mega,\r
-               banksize = 0x0400\r
-       }\r
-};\r
-\r
-/*\r
-SUNSOFT-5A, SUNSOFT-5B, FME-7\r
-[CPU writemap]\r
-$6000-$7fff 7:0 RAM data (if RAM is enabled)\r
-$8000-$9fff 3:0 memory register address\r
-$a000-$bfff 7:0 memory register data\r
-$c000-$dfff 3:0 audio register address\r
-$e000-$ffff 7:0 audio register data\r
-\r
-[CPU readmap]\r
-$6000-$7fff 7:0 Program ROM bank #0 or RAM\r
-$8000-$9fff 7:0 Program ROM bank #1\r
-$a000-$bfff 7:0 Program ROM bank #2\r
-$c000-$dfff 7:0 Program ROM bank #3\r
-$e000-$ffff 7:0 Program ROM bank #4 (fixed to bottom page)\r
-\r
-[PPU readmap] (PPU write map is undefined)\r
-0x0000-0x03ff Charcter ROM bank #0|0x1000-0x13ff Charcter ROM bank #4\r
-0x0400-0x07ff Charcter ROM bank #1|0x1400-0x17ff Charcter ROM bank #5\r
-0x0800-0x0bff Charcter ROM bank #2|0x1800-0x1bff Charcter ROM bank #6\r
-0x0c00-0x0fff Charcter ROM bank #3|0x1c00-0x1fff Charcter ROM bank #7\r
-\r
-[FME-7 memory register]\r
-adr bit assignments\r
--------------------------\r
-0-7 7:0 Charcter ROM bank #0 to #7\r
-8   7   RAM enable bit 0:disable 1:enable\r
-    6   memory select at $6000-$7fff 0:ROM 1:RAM\r
-    4:0 CPU ROM page for bank #0\r
-9-b 4:0 CPU ROM page for bank #1 to #3\r
-c   1:0 PPU area VRAM control\r
-d   7   φ2 counter decrement 0:disable 1:enable\r
-    0   φ2 counter overflow IRQ 0:disable 1:enable\r
-e   7:0 φ2 counter value bit7:0\r
-f   7:0 φ2 counter value bit15:8\r
-\r
-address 8, bit7:6 behave on FME-7\r
-00 enabled ROM\r
-01 disabled ROM and RAM\r
-10 disabled ROM and RAM\r
-11 enabled RAM\r
-\r
-audio register\r
-(not analysed yet)\r
-\r
-*/\r
-function sunsoft5_write(d, register_address, data)\r
-{\r
-       cpu_write(d, 0x8000, register_address);\r
-       cpu_write(d, 0xa000, data);\r
-}\r
-\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-/*\r
-       //dump ROM data via $6000-$7fff\r
-       for(local i = 0; i < pagesize; i++){\r
-               sunsoft5_write(d, 8, i);\r
-               cpu_read(d, 0x6000, banksize);\r
-       }\r
-*/\r
-       for(local i = 0; i < pagesize - 1; i++){\r
-               sunsoft5_write(d, 9, i);\r
-               cpu_read(d, 0x8000, banksize);\r
-       }\r
-       cpu_read(d, 0xe000, banksize);\r
-}\r
-\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       local mul = 8;\r
-       for(local i = 0; i < pagesize; i+= mul){\r
-               for(local j = 0; j < mul; j++){\r
-                       sunsoft5_write(d, j, i + j);\r
-               }\r
-               ppu_read(d, 0, banksize * mul);\r
-       }\r
-}\r
-\r
-function cpu_ram_access(d, pagesize, banksize)\r
-{\r
-       sunsoft5_write(d, 8, 0xc0);\r
-       cpu_ramrw(d, 0x6000, banksize);\r
-       cpu_write(d, 0xa000, 0x00);\r
-}\r
-\r
-/*\r
-CPU memory bank\r
-cpu address|rom address    |page|task\r
-$8000-$9fff|0x02000-0x03fff|1   |write 0x2aaa\r
-$a000-$bfff|0x04000-0x05fff|2   |write 0x5555\r
-$c000-$dfff|n * 0x2000     |n   |program area\r
-$e000-$ffff|0x3c000-0x3ffff|fix |program last page\r
-\r
-PPU memory bank\r
-ppu address  |rom address    |page|task\r
-0x0000-0x03ff|0x02800-0x02fff|0x0a|write 0x2aaa\r
-0x0400-0x07ff|0x05000-0x057ff|0x14|write 0x5555\r
-0x0800-0x0fff|未使用\r
-0x1000-0x1fff|n * 0x1000     |n   |program area\r
-*/\r
-function program_initalize(d, cpu_banksize, ppu_banksize)\r
-{\r
-       sunsoft5_write(d, 8, 0x40); //disable W-RAM\r
-\r
-       cpu_command(d, 0x2aaa, 0xe000, cpu_banksize);\r
-       cpu_command(d, 0x5555, 0xe000, cpu_banksize);\r
-       sunsoft5_write(d, 0xa,1);\r
-       sunsoft5_write(d, 0xb,2);\r
-\r
-       ppu_command(d, 0x2aaa, 0x1000, ppu_banksize);\r
-       ppu_command(d, 0x5555, 0x1400, ppu_banksize);\r
-       ppu_command(d, 0x0000, 0x1800, ppu_banksize);\r
-       sunsoft5_write(d, 4, 0x0a);\r
-       sunsoft5_write(d, 5, 0x15);\r
-       sunsoft5_write(d, 6, 0);\r
-}\r
-\r
-function cpu_transfer(d, start, end, cpu_banksize)\r
-{\r
-       for(local i = start; i < end - 1; i += 1){\r
-               sunsoft5_write(d, 0xb, 3);\r
-               cpu_program(d, 0x8000, cpu_banksize);\r
-       }\r
-       cpu_program(d, 0xe000, cpu_banksize);\r
-}\r
-\r
-function ppu_transfer(d, start, end, ppu_banksize)\r
-{\r
-/*     local mul = 1;\r
-       for(local i = start; i < end; i += mul){\r
-               for(local j = 0; j < mul; j++){\r
-                       sunsoft5_write(d, j, i + j);\r
-               }\r
-               ppu_program(d, 0x0000, ppu_banksize * mul);\r
-       }*/\r
-       for(local i = start; i < end; i += 1){\r
-               sunsoft5_write(d, 4, i);\r
-               ppu_program(d, 0x1000, ppu_banksize);\r
-       }\r
-}\r
+board <- {
+       mappernum = 69, vram_mirrorfind = false, ppu_ramfind = false,
+       cpu_rom = {
+               size_base = 1 * mega, size_max = 2 * mega,
+               banksize = 0x2000
+       }, cpu_ram = {
+               size_base = 0x2000, size_max = 0x2000, 
+               banksize = 0x2000
+       }, ppu_rom = {
+               size_base = 1 * mega, size_max = 2 *mega,
+               banksize = 0x0400
+       }
+};
+
+/*
+SUNSOFT-5A, SUNSOFT-5B, FME-7
+[CPU writemap]
+$6000-$7fff 7:0 RAM data (if RAM is enabled)
+$8000-$9fff 3:0 memory register address
+$a000-$bfff 7:0 memory register data
+$c000-$dfff 3:0 audio register address
+$e000-$ffff 7:0 audio register data
+
+[CPU readmap]
+$6000-$7fff 7:0 Program ROM bank #0 or RAM
+$8000-$9fff 7:0 Program ROM bank #1
+$a000-$bfff 7:0 Program ROM bank #2
+$c000-$dfff 7:0 Program ROM bank #3
+$e000-$ffff 7:0 Program ROM bank #4 (fixed to bottom page)
+
+[PPU readmap] (PPU write map is undefined)
+0x0000-0x03ff Charcter ROM bank #0|0x1000-0x13ff Charcter ROM bank #4
+0x0400-0x07ff Charcter ROM bank #1|0x1400-0x17ff Charcter ROM bank #5
+0x0800-0x0bff Charcter ROM bank #2|0x1800-0x1bff Charcter ROM bank #6
+0x0c00-0x0fff Charcter ROM bank #3|0x1c00-0x1fff Charcter ROM bank #7
+
+[FME-7 memory register]
+adr bit assignments
+-------------------------
+0-7 7:0 Charcter ROM bank #0 to #7
+8   7   RAM enable bit 0:disable 1:enable
+    6   memory select at $6000-$7fff 0:ROM 1:RAM
+    4:0 CPU ROM page for bank #0
+9-b 4:0 CPU ROM page for bank #1 to #3
+c   1:0 PPU area VRAM control
+d   7   φ2 counter decrement 0:disable 1:enable
+    0   φ2 counter overflow IRQ 0:disable 1:enable
+e   7:0 φ2 counter value bit7:0
+f   7:0 φ2 counter value bit15:8
+
+address 8, bit7:6 behave on FME-7
+00 enabled ROM
+01 disabled ROM and RAM
+10 disabled ROM and RAM
+11 enabled RAM
+
+audio register
+(not analysed yet)
+
+*/
+function sunsoft5_write(d, register_address, data)
+{
+       cpu_write(d, 0x8000, register_address);
+       cpu_write(d, 0xa000, data);
+}
+
+function cpu_dump(d, pagesize, banksize)
+{
+/*
+       //dump ROM data via $6000-$7fff
+       for(local i = 0; i < pagesize; i++){
+               sunsoft5_write(d, 8, i);
+               cpu_read(d, 0x6000, banksize);
+       }
+*/
+       for(local i = 0; i < pagesize - 1; i++){
+               sunsoft5_write(d, 9, i);
+               cpu_read(d, 0x8000, banksize);
+       }
+       cpu_read(d, 0xe000, banksize);
+}
+
+function ppu_dump(d, pagesize, banksize)
+{
+       local mul = 8;
+       for(local i = 0; i < pagesize; i+= mul){
+               for(local j = 0; j < mul; j++){
+                       sunsoft5_write(d, j, i + j);
+               }
+               ppu_read(d, 0, banksize * mul);
+       }
+}
+
+function cpu_ram_access(d, pagesize, banksize)
+{
+       sunsoft5_write(d, 8, 0xc0);
+       cpu_ramrw(d, 0x6000, banksize);
+       cpu_write(d, 0xa000, 0x00);
+}
+
+/*
+CPU memory bank
+cpu address|rom address    |page|task
+$8000-$9fff|0x02000-0x03fff|1   |write 0x2aaa
+$a000-$bfff|0x04000-0x05fff|2   |write 0x5555
+$c000-$dfff|n * 0x2000     |n   |program area
+$e000-$ffff|0x3c000-0x3ffff|fix |program last page
+
+PPU memory bank
+ppu address  |rom address    |page|task
+0x0000-0x03ff|0x02800-0x02fff|0x0a|write 0x2aaa
+0x0400-0x07ff|0x05000-0x057ff|0x14|write 0x5555
+0x0800-0x0fff|未使用
+0x1000-0x1fff|n * 0x1000     |n   |program area
+*/
+function program_initalize(d, cpu_banksize, ppu_banksize)
+{
+       sunsoft5_write(d, 8, 0x40); //disable W-RAM
+
+       cpu_command(d, 0x2aaa, 0xe000, cpu_banksize);
+       cpu_command(d, 0x5555, 0xe000, cpu_banksize);
+       sunsoft5_write(d, 0xa,1);
+       sunsoft5_write(d, 0xb,2);
+
+       ppu_command(d, 0x2aaa, 0x1000, ppu_banksize);
+       ppu_command(d, 0x5555, 0x1400, ppu_banksize);
+       ppu_command(d, 0x0000, 0x1800, ppu_banksize);
+       sunsoft5_write(d, 4, 0x0a);
+       sunsoft5_write(d, 5, 0x15);
+       sunsoft5_write(d, 6, 0);
+}
+
+function cpu_transfer(d, start, end, cpu_banksize)
+{
+       for(local i = start; i < end - 1; i += 1){
+               sunsoft5_write(d, 0xb, 3);
+               cpu_program(d, 0x8000, cpu_banksize);
+       }
+       cpu_program(d, 0xe000, cpu_banksize);
+}
+
+function ppu_transfer(d, start, end, ppu_banksize)
+{
+/*     local mul = 1;
+       for(local i = start; i < end; i += mul){
+               for(local j = 0; j < mul; j++){
+                       sunsoft5_write(d, j, i + j);
+               }
+               ppu_program(d, 0x0000, ppu_banksize * mul);
+       }*/
+       for(local i = start; i < end; i += 1){
+               sunsoft5_write(d, 4, i);
+               ppu_program(d, 0x1000, ppu_banksize);
+       }
+}