OSDN Git Service

スクリプトファイルの属性を変更
authornaruko <naruko@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Fri, 21 Mar 2014 11:17:54 +0000 (11:17 +0000)
committernaruko <naruko@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Fri, 21 Mar 2014 11:17:54 +0000 (11:17 +0000)
git-svn-id: svn+ssh://svn.osdn.net/svnroot/unagi@418 24ea1065-a21e-4ca1-99c9-f5125deb0858

27 files changed:
client/trunk/anago/bandai_fcg1.ad
client/trunk/anago/bandai_lz93d50_jump2.ae
client/trunk/anago/irem_g101.ad
client/trunk/anago/konami_vrc1.ad
client/trunk/anago/konami_vrc2a.ad
client/trunk/anago/konami_vrc2b.ad
client/trunk/anago/konami_vrc3.ad
client/trunk/anago/konami_vrc4a.ad
client/trunk/anago/konami_vrc4d.ad
client/trunk/anago/konami_vrc7.ag
client/trunk/anago/lz93d50.ai
client/trunk/anago/mmc1.ai
client/trunk/anago/namcot_108_3433.ad
client/trunk/anago/namcot_108_34xx_nintendo_derom.ad
client/trunk/anago/namcot_163.ag
client/trunk/anago/namcot_175.ae
client/trunk/anago/namcot_19.ai
client/trunk/anago/namcot_340.ad
client/trunk/anago/nintendo_mmc1_skrom.ag
client/trunk/anago/nintendo_mmc1_surom.ag
client/trunk/anago/nintendo_mmc4_fkrom.ae
client/trunk/anago/nrom.ad
client/trunk/anago/sunsoft-4.ae
client/trunk/anago/sunsoft-4.ag
client/trunk/anago/sunsoft-4s.ad
client/trunk/anago/sunsoft_fme.ad
client/trunk/anago/taito_x1_005.ae

index dcbefa2..a8e6bc4 100644 (file)
@@ -1,32 +1,32 @@
-/*\r
-BANDAI FCG-1, FCG-2\r
-FCG-1 + Program ROM + Charcter ROM\r
-       ドラゴンボール 大魔王復活\r
-       西村京太郎ミステリー ブルートレイン殺人事件 (Irem)\r
-FCG-2 + Program ROM + Charcter ROM\r
-       ファミコンジャンプ\r
-       魁!!男塾\r
-       名門!第三野球部\r
-       ドラゴンボール3\r
-       悪魔くん\r
-*/\r
-board <- {\r
-       mappernum = 16, \r
-       cpu_rom = {\r
-               size_base = 2 * mega, size_max = 2 * mega,\r
-               banksize = 0x4000\r
-       }, \r
-       cpu_ram = {\r
-               size_base = 0x0000, size_max = 0x0000,\r
-               banksize = 0x2000\r
-       },\r
-       ppu_rom = {\r
-               size_base = 2 * mega, size_max = 2 * mega,\r
-               banksize = 0x0400\r
-       },\r
-       ppu_ramfind = false,\r
-       vram_mirrorfind = false\r
-};\r
-\r
-const register_offset = 0x6000;\r
-dofile("fcg3.ai");\r
+/*
+BANDAI FCG-1, FCG-2
+FCG-1 + Program ROM + Charcter ROM
+       ドラゴンボール 大魔王復活
+       西村京太郎ミステリー ブルートレイン殺人事件 (Irem)
+FCG-2 + Program ROM + Charcter ROM
+       ファミコンジャンプ
+       魁!!男塾
+       名門!第三野球部
+       ドラゴンボール3
+       悪魔くん
+*/
+board <- {
+       mappernum = 16, 
+       cpu_rom = {
+               size_base = 2 * mega, size_max = 2 * mega,
+               banksize = 0x4000
+       }, 
+       cpu_ram = {
+               size_base = 0x0000, size_max = 0x0000,
+               banksize = 0x2000
+       },
+       ppu_rom = {
+               size_base = 2 * mega, size_max = 2 * mega,
+               banksize = 0x0400
+       },
+       ppu_ramfind = false,
+       vram_mirrorfind = false
+};
+
+const register_offset = 0x6000;
+dofile("fcg3.ai");
index 0c46d21..2ec6934 100644 (file)
@@ -1,35 +1,35 @@
-//Famicom Jump II\r
-board <- {\r
-       mappernum = 153, vram_mirrorfind = false, ppu_ramfind = false,\r
-       cpu_rom = {\r
-               size_base = 4 * mega, size_max = 4 * mega,\r
-               banksize = 0x4000\r
-       },\r
-       cpu_ram = {\r
-               size_base = 0x2000, size_max = 0x2000, banksize = 0x2000\r
-       }\r
-       ppu_rom = {\r
-               size_base = 0, size_max = 0,\r
-               banksize = 0x2000\r
-       }\r
-};\r
-\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize; i += 0x10){\r
-               local v = i >> 4\r
-               cpu_write(d, 0x8000, [v, v, v, v]);\r
-               for(local j = 0; j < 0x10 - 1; j += 1){\r
-                       cpu_write(d, 0x8008, j);\r
-                       cpu_read(d, 0x8000, banksize);\r
-               }\r
-               cpu_read(d, 0xc000, banksize);\r
-       }\r
-}\r
-\r
-function cpu_ram_access(d, pagesize, banksize)\r
-{\r
-       cpu_write(d, 0x800d, 1 << 5);\r
-       cpu_ramrw(d, 0x6000, banksize);\r
-       cpu_write(d, 0x800d, 0);\r
-}\r
+//Famicom Jump II
+board <- {
+       mappernum = 153, vram_mirrorfind = false, ppu_ramfind = false,
+       cpu_rom = {
+               size_base = 4 * mega, size_max = 4 * mega,
+               banksize = 0x4000
+       },
+       cpu_ram = {
+               size_base = 0x2000, size_max = 0x2000, banksize = 0x2000
+       }
+       ppu_rom = {
+               size_base = 0, size_max = 0,
+               banksize = 0x2000
+       }
+};
+
+function cpu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize; i += 0x10){
+               local v = i >> 4
+               cpu_write(d, 0x8000, [v, v, v, v]);
+               for(local j = 0; j < 0x10 - 1; j += 1){
+                       cpu_write(d, 0x8008, j);
+                       cpu_read(d, 0x8000, banksize);
+               }
+               cpu_read(d, 0xc000, banksize);
+       }
+}
+
+function cpu_ram_access(d, pagesize, banksize)
+{
+       cpu_write(d, 0x800d, 1 << 5);
+       cpu_ramrw(d, 0x6000, banksize);
+       cpu_write(d, 0x800d, 0);
+}
index 1d80ab4..a38a9fc 100644 (file)
@@ -1,88 +1,88 @@
-/*\r
-IREM G-101 based cartridge\r
-\r
-$8000-$9fff bank#0, switchable or last - 1\r
-$a000-$bfff bank#1, switchable\r
-$c000-$dfff bank#2, last - 1 or switchable\r
-$e000-$ffff \r
-note:\r
-Major League PCB maybe ignore write operation to $9000-$9fff\r
-$9000-$9fff write register are fixed to bank #2 = last -1\r
-*/\r
-\r
-board <- {\r
-       mappernum = 32,\r
-       cpu_rom = {\r
-               size_base = 1 * mega, size_max = 2 * mega,\r
-               banksize = 0x2000\r
-       },\r
-       ppu_rom = {\r
-               size_base = 1 * mega, size_max = 1 * mega,\r
-               banksize = 0x0400\r
-       },\r
-       ppu_ramfind = false,\r
-       vram_mirrorfind = false\r
-};\r
-\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       if(false){\r
-               cpu_write(d, 0x9000, 0);\r
-               for(local i = 0; i < pagesize - 2; i += 2){\r
-                       cpu_write(d, 0x8000, i);\r
-                       cpu_write(d, 0xa000, i | 1);\r
-                       cpu_read(d, 0x8000, banksize * 2);\r
-               }\r
-               cpu_read(d, 0xc000, banksize);\r
-               cpu_read(d, 0xe000, banksize);\r
-       }else{\r
-               cpu_write(d, 0x9000, 2);\r
-               for(local i = 0; i < pagesize - 2; i += 2){\r
-                       cpu_write(d, 0x8000, i);\r
-                       cpu_write(d, 0xa000, i | 1);\r
-                       cpu_read(d, 0xc000, banksize);\r
-                       cpu_read(d, 0xa000, banksize);\r
-               }\r
-               cpu_read(d, 0x8000, banksize);\r
-               cpu_read(d, 0xe000, banksize);\r
-       }\r
-}\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize ; i += 8){\r
-               for(local j = 0; j < 8; j += 1){\r
-                       cpu_write(d, 0xb000 + j, i + j);\r
-               }\r
-               ppu_read(d, 0, banksize * 8);\r
-       }\r
-}\r
-\r
-function program_initalize(d, cpu_banksize, ppu_banksize)\r
-{\r
-       cpu_write(d, 0x9000, 0);\r
-       cpu_write(d, 0x8000, 0);\r
-       cpu_command(d, 0, 0x8000, cpu_banksize);\r
-       cpu_command(d, 0x02aa, 0xc000, cpu_banksize);\r
-       cpu_command(d, 0x0555, 0xc000, cpu_banksize);\r
-       cpu_write(d, 0xb000, [0xa, 0x15, 0]);\r
-       cpu_command(d, 0x2aaa, 0x0000, ppu_banksize);\r
-       cpu_command(d, 0x5555, 0x0400, ppu_banksize);\r
-       cpu_command(d, 0, 0x0800, ppu_banksize);\r
-}\r
-\r
-function cpu_transfer(d, start, end, cpu_banksize)\r
-{\r
-       for(local i = start; i < end - 1; i += 1){\r
-               cpu_write(d, 0x8000, i);\r
-               cpu_program(d, 0x8000, cpu_banksize);\r
-       }\r
-       cpu_program(d, 0xc000, cpu_banksize);\r
-}\r
-\r
-function ppu_transfer(d, start, end, ppu_banksize)\r
-{\r
-       for(local i = start; i < end; i +=4){\r
-               cpu_write(d, 0xb004, [i, i+1, i+2, i+3]);\r
-               ppu_program(d, 0x1000, ppu_banksize * 4);\r
-       }\r
-}\r
+/*
+IREM G-101 based cartridge
+
+$8000-$9fff bank#0, switchable or last - 1
+$a000-$bfff bank#1, switchable
+$c000-$dfff bank#2, last - 1 or switchable
+$e000-$ffff 
+note:
+Major League PCB maybe ignore write operation to $9000-$9fff
+$9000-$9fff write register are fixed to bank #2 = last -1
+*/
+
+board <- {
+       mappernum = 32,
+       cpu_rom = {
+               size_base = 1 * mega, size_max = 2 * mega,
+               banksize = 0x2000
+       },
+       ppu_rom = {
+               size_base = 1 * mega, size_max = 1 * mega,
+               banksize = 0x0400
+       },
+       ppu_ramfind = false,
+       vram_mirrorfind = false
+};
+
+function cpu_dump(d, pagesize, banksize)
+{
+       if(false){
+               cpu_write(d, 0x9000, 0);
+               for(local i = 0; i < pagesize - 2; i += 2){
+                       cpu_write(d, 0x8000, i);
+                       cpu_write(d, 0xa000, i | 1);
+                       cpu_read(d, 0x8000, banksize * 2);
+               }
+               cpu_read(d, 0xc000, banksize);
+               cpu_read(d, 0xe000, banksize);
+       }else{
+               cpu_write(d, 0x9000, 2);
+               for(local i = 0; i < pagesize - 2; i += 2){
+                       cpu_write(d, 0x8000, i);
+                       cpu_write(d, 0xa000, i | 1);
+                       cpu_read(d, 0xc000, banksize);
+                       cpu_read(d, 0xa000, banksize);
+               }
+               cpu_read(d, 0x8000, banksize);
+               cpu_read(d, 0xe000, banksize);
+       }
+}
+function ppu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize ; i += 8){
+               for(local j = 0; j < 8; j += 1){
+                       cpu_write(d, 0xb000 + j, i + j);
+               }
+               ppu_read(d, 0, banksize * 8);
+       }
+}
+
+function program_initalize(d, cpu_banksize, ppu_banksize)
+{
+       cpu_write(d, 0x9000, 0);
+       cpu_write(d, 0x8000, 0);
+       cpu_command(d, 0, 0x8000, cpu_banksize);
+       cpu_command(d, 0x02aa, 0xc000, cpu_banksize);
+       cpu_command(d, 0x0555, 0xc000, cpu_banksize);
+       cpu_write(d, 0xb000, [0xa, 0x15, 0]);
+       cpu_command(d, 0x2aaa, 0x0000, ppu_banksize);
+       cpu_command(d, 0x5555, 0x0400, ppu_banksize);
+       cpu_command(d, 0, 0x0800, ppu_banksize);
+}
+
+function cpu_transfer(d, start, end, cpu_banksize)
+{
+       for(local i = start; i < end - 1; i += 1){
+               cpu_write(d, 0x8000, i);
+               cpu_program(d, 0x8000, cpu_banksize);
+       }
+       cpu_program(d, 0xc000, cpu_banksize);
+}
+
+function ppu_transfer(d, start, end, ppu_banksize)
+{
+       for(local i = start; i < end; i +=4){
+               cpu_write(d, 0xb004, [i, i+1, i+2, i+3]);
+               ppu_program(d, 0x1000, ppu_banksize * 4);
+       }
+}
index 1a063f2..123ad52 100644 (file)
@@ -1,35 +1,35 @@
-//konami VRC(I)\r
-board <- {\r
-       mappernum = 75,\r
-       cpu_rom = {\r
-               size_base = 1 * mega, size_max = 1 * mega,\r
-               banksize = 0x2000\r
-       },\r
-       ppu_rom= {\r
-               size_base = 1 * mega, size_max = 1 * mega,\r
-               banksize = 0x1000\r
-       },\r
-       ppu_ramfind = false, vram_mirrorfind = false\r
-};\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       local i;\r
-       for(i = 0; i < pagesize - 2; i += 2){\r
-               cpu_write(d, 0x8000, i);\r
-               cpu_write(d, 0xa000, i | 1);\r
-               cpu_read(d, 0x8000, banksize * 2);\r
-       }\r
-       cpu_write(d, 0xc000, i);\r
-       cpu_read(d, 0xc000, banksize * 2);\r
-}\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize; i += 0x10){\r
-               cpu_write(d, 0x9000, i == 0 ? 0 : (0x3 << 1));\r
-               for(local j = 0; j < 0x10; j += 2){\r
-                       cpu_write(d, 0xe000, j);\r
-                       cpu_write(d, 0xf000, j | 1);\r
-                       ppu_read(d, 0, banksize * 2);\r
-               }\r
-       }\r
-}\r
+//konami VRC(I)
+board <- {
+       mappernum = 75,
+       cpu_rom = {
+               size_base = 1 * mega, size_max = 1 * mega,
+               banksize = 0x2000
+       },
+       ppu_rom= {
+               size_base = 1 * mega, size_max = 1 * mega,
+               banksize = 0x1000
+       },
+       ppu_ramfind = false, vram_mirrorfind = false
+};
+function cpu_dump(d, pagesize, banksize)
+{
+       local i;
+       for(i = 0; i < pagesize - 2; i += 2){
+               cpu_write(d, 0x8000, i);
+               cpu_write(d, 0xa000, i | 1);
+               cpu_read(d, 0x8000, banksize * 2);
+       }
+       cpu_write(d, 0xc000, i);
+       cpu_read(d, 0xc000, banksize * 2);
+}
+function ppu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize; i += 0x10){
+               cpu_write(d, 0x9000, i == 0 ? 0 : (0x3 << 1));
+               for(local j = 0; j < 0x10; j += 2){
+                       cpu_write(d, 0xe000, j);
+                       cpu_write(d, 0xf000, j | 1);
+                       ppu_read(d, 0, banksize * 2);
+               }
+       }
+}
index bde2932..ae57242 100644 (file)
@@ -1,52 +1,52 @@
-/*\r
-VRCII A0,A1 swap + charcter ROM address bus shiftx1\r
-051744 jumper G?\r
-VRC-CPU|databus \r
-A0 - A1|A0: xxxx210x\r
-A1 - A0|A1: xxxx6543\r
-VRC-CHRCTER ROM\r
-A11-A17 = A10-A16\r
-*/\r
-board <- {\r
-       mappernum = 22, vram_mirrorfind = false, ppu_ramfind = false,\r
-       cpu_rom = {\r
-               size_base = 1 * mega, size_max = 1 * mega, \r
-               banksize = 0x2000\r
-       },\r
-       ppu_rom = {\r
-               size_base = 1 * mega, size_max = 1 * mega, \r
-               banksize = 0x2000 / 8\r
-       }\r
-};\r
-dofile("vrc4.ai");\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       vrc4_cpu_dump(d, pagesize, banksize, 1, 0);\r
-}\r
-\r
-\r
-function vrc2a_ppubank_set(d, addr, i, j, r0, r1)\r
-{\r
-       local a1 = 1 << r0;\r
-       local a2 = 1 << r1;\r
-       local a3 = a1|a2;\r
-\r
-       cpu_write(d, addr | a1, i >> 3);\r
-       cpu_write(d, addr, i << 1);\r
-       cpu_write(d, addr | a3, j >> 3);\r
-       cpu_write(d, addr | a2, j << 1);\r
-}\r
-\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       local r0 = 1;\r
-       local r1 = 0;\r
-\r
-       for(local i = 0; i < pagesize; i += 8){\r
-               vrc2a_ppubank_set(d, 0xb000, i | 0, i | 1, r0, r1);\r
-               vrc2a_ppubank_set(d, 0xc000, i | 2, i | 3, r0, r1);\r
-               vrc2a_ppubank_set(d, 0xd000, i | 4, i | 5, r0, r1);\r
-               vrc2a_ppubank_set(d, 0xe000, i | 6, i | 7, r0, r1);\r
-               ppu_read(d, 0x0000, banksize * 8);\r
-       }\r
-}\r
+/*
+VRCII A0,A1 swap + charcter ROM address bus shiftx1
+051744 jumper G?
+VRC-CPU|databus 
+A0 - A1|A0: xxxx210x
+A1 - A0|A1: xxxx6543
+VRC-CHRCTER ROM
+A11-A17 = A10-A16
+*/
+board <- {
+       mappernum = 22, vram_mirrorfind = false, ppu_ramfind = false,
+       cpu_rom = {
+               size_base = 1 * mega, size_max = 1 * mega, 
+               banksize = 0x2000
+       },
+       ppu_rom = {
+               size_base = 1 * mega, size_max = 1 * mega, 
+               banksize = 0x2000 / 8
+       }
+};
+dofile("vrc4.ai");
+function cpu_dump(d, pagesize, banksize)
+{
+       vrc4_cpu_dump(d, pagesize, banksize, 1, 0);
+}
+
+
+function vrc2a_ppubank_set(d, addr, i, j, r0, r1)
+{
+       local a1 = 1 << r0;
+       local a2 = 1 << r1;
+       local a3 = a1|a2;
+
+       cpu_write(d, addr | a1, i >> 3);
+       cpu_write(d, addr, i << 1);
+       cpu_write(d, addr | a3, j >> 3);
+       cpu_write(d, addr | a2, j << 1);
+}
+
+function ppu_dump(d, pagesize, banksize)
+{
+       local r0 = 1;
+       local r1 = 0;
+
+       for(local i = 0; i < pagesize; i += 8){
+               vrc2a_ppubank_set(d, 0xb000, i | 0, i | 1, r0, r1);
+               vrc2a_ppubank_set(d, 0xc000, i | 2, i | 3, r0, r1);
+               vrc2a_ppubank_set(d, 0xd000, i | 4, i | 5, r0, r1);
+               vrc2a_ppubank_set(d, 0xe000, i | 6, i | 7, r0, r1);
+               ppu_read(d, 0x0000, banksize * 8);
+       }
+}
index 0326b44..5e57094 100644 (file)
@@ -1,26 +1,26 @@
-/*\r
-VRC2B; R0=A0, R1=A1\r
-じゃんン子チエ のみ d12 で dump すること。\r
-*/\r
-board <- {\r
-       mappernum = 23,\r
-       cpu_rom = {\r
-               size_base = 1 * mega, size_max = 2 * mega,\r
-               banksize = 0x2000\r
-       },\r
-       ppu_rom= {\r
-               size_base = 1 * mega, size_max = 2 * mega,\r
-               banksize = 0x2000 / 8\r
-       },\r
-       ppu_ramfind = false, vram_mirrorfind = false\r
-};\r
-dofile("vrc4.ai");\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       vrc4_cpu_dump(d, pagesize, banksize, 0, 1);\r
-}\r
-\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       vrc4_ppu_dump(d, pagesize, banksize, 0, 1);\r
-}\r
+/*
+VRC2B; R0=A0, R1=A1
+じゃんン子チエ のみ d12 で dump すること。
+*/
+board <- {
+       mappernum = 23,
+       cpu_rom = {
+               size_base = 1 * mega, size_max = 2 * mega,
+               banksize = 0x2000
+       },
+       ppu_rom= {
+               size_base = 1 * mega, size_max = 2 * mega,
+               banksize = 0x2000 / 8
+       },
+       ppu_ramfind = false, vram_mirrorfind = false
+};
+dofile("vrc4.ai");
+function cpu_dump(d, pagesize, banksize)
+{
+       vrc4_cpu_dump(d, pagesize, banksize, 0, 1);
+}
+
+function ppu_dump(d, pagesize, banksize)
+{
+       vrc4_ppu_dump(d, pagesize, banksize, 0, 1);
+}
index f60bd58..01a7443 100644 (file)
@@ -1,41 +1,41 @@
-/*\r
-konami VRCIII\r
-RC821\r
-各レジスタは4bit\r
-write\r
-$8000 IRQ cpu clock count, bit0-3??\r
-$9000 IRQ cpu clock count, bit4-7??\r
-$a000 IRQ cpu clock count, bit8-11\r
-$b000 IRQ cpu clock count, bit12-15\r
-$c000 IRQ enable\r
-$d000 IRQ Acknowledge\r
-$f000 bit0-2 pagenumber at CPU address $8000-$bfff\r
-      bit3 1: ROM address 0x1c000-0x1cfff map CPU address $c000-$cfff\r
-           0: IRQ status? at CPU address $c000-$cfff\r
-read\r
-$8000-$bfff 可変エリア, write $f000 bit0-2\r
-$c000-$cfff 可変エリア, write $f000 bit3\r
-$d000-$ffff 固定エリア, ROM address 0x1d000-0x1ffff\r
-*/\r
-\r
-board <- {\r
-       mappernum = 73,\r
-       cpu_rom = {\r
-               size_base = 1 * mega, size_max = 1 * mega,\r
-               banksize = 0x4000\r
-       },\r
-       ppu_rom= {\r
-               size_base = 0, size_max = 0,\r
-               banksize = 0x2000\r
-       },\r
-       ppu_ramfind = false, vram_mirrorfind = true\r
-};\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize - 1; i += 1){\r
-               cpu_write(d, 0xf000, i);\r
-               cpu_read(d, 0x8000, banksize);\r
-       }\r
-       cpu_write(d, 0xf000, 1 << 3);\r
-       cpu_read(d, 0xc000, banksize);\r
-}\r
+/*
+konami VRCIII
+RC821
+各レジスタは4bit
+write
+$8000 IRQ cpu clock count, bit0-3??
+$9000 IRQ cpu clock count, bit4-7??
+$a000 IRQ cpu clock count, bit8-11
+$b000 IRQ cpu clock count, bit12-15
+$c000 IRQ enable
+$d000 IRQ Acknowledge
+$f000 bit0-2 pagenumber at CPU address $8000-$bfff
+      bit3 1: ROM address 0x1c000-0x1cfff map CPU address $c000-$cfff
+           0: IRQ status? at CPU address $c000-$cfff
+read
+$8000-$bfff 可変エリア, write $f000 bit0-2
+$c000-$cfff 可変エリア, write $f000 bit3
+$d000-$ffff 固定エリア, ROM address 0x1d000-0x1ffff
+*/
+
+board <- {
+       mappernum = 73,
+       cpu_rom = {
+               size_base = 1 * mega, size_max = 1 * mega,
+               banksize = 0x4000
+       },
+       ppu_rom= {
+               size_base = 0, size_max = 0,
+               banksize = 0x2000
+       },
+       ppu_ramfind = false, vram_mirrorfind = true
+};
+function cpu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize - 1; i += 1){
+               cpu_write(d, 0xf000, i);
+               cpu_read(d, 0x8000, banksize);
+       }
+       cpu_write(d, 0xf000, 1 << 3);
+       cpu_read(d, 0xc000, banksize);
+}
index f19e27f..29e16e7 100644 (file)
@@ -1,21 +1,21 @@
-board <- {\r
-       mappernum = 21, ppu_ramfind = false, vram_mirrorfind = false,\r
-       cpu_rom = {\r
-               size_base = 2 * mega, size_max = 2 * mega,\r
-               banksize = 0x2000\r
-       },\r
-       ppu_rom = {\r
-               size_base = 1 * mega, size_max = 2 * mega,\r
-               banksize = 0x2000 / 8,\r
-       }\r
-};\r
-dofile("vrc4.ai");\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       vrc4_cpu_dump(d, pagesize, banksize, 1, 2);\r
-}\r
-\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       vrc4_ppu_dump(d, pagesize, banksize, 1, 2);\r
-}\r
+board <- {
+       mappernum = 21, ppu_ramfind = false, vram_mirrorfind = false,
+       cpu_rom = {
+               size_base = 2 * mega, size_max = 2 * mega,
+               banksize = 0x2000
+       },
+       ppu_rom = {
+               size_base = 1 * mega, size_max = 2 * mega,
+               banksize = 0x2000 / 8,
+       }
+};
+dofile("vrc4.ai");
+function cpu_dump(d, pagesize, banksize)
+{
+       vrc4_cpu_dump(d, pagesize, banksize, 1, 2);
+}
+
+function ppu_dump(d, pagesize, banksize)
+{
+       vrc4_ppu_dump(d, pagesize, banksize, 1, 2);
+}
index 09a31c2..7487855 100644 (file)
@@ -1,22 +1,22 @@
-board <- {\r
-       mappernum = 25,\r
-       cpu_rom = {\r
-               size_base = 2 * mega, size_max = 2 * mega,\r
-               banksize = 0x2000\r
-       },\r
-       ppu_rom = {\r
-               size_base = 2 * mega, size_max = 2 * mega,\r
-               banksize = 0x2000 / 8\r
-       },\r
-       ppu_ramfind = false, vram_mirrorfind = false\r
-};\r
-dofile("vrc4.ai");\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       vrc4_cpu_dump(d, pagesize, banksize, 3, 2);\r
-}\r
-\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       vrc4_ppu_dump(d, pagesize, banksize, 3, 2);\r
-}\r
+board <- {
+       mappernum = 25,
+       cpu_rom = {
+               size_base = 2 * mega, size_max = 2 * mega,
+               banksize = 0x2000
+       },
+       ppu_rom = {
+               size_base = 2 * mega, size_max = 2 * mega,
+               banksize = 0x2000 / 8
+       },
+       ppu_ramfind = false, vram_mirrorfind = false
+};
+dofile("vrc4.ai");
+function cpu_dump(d, pagesize, banksize)
+{
+       vrc4_cpu_dump(d, pagesize, banksize, 3, 2);
+}
+
+function ppu_dump(d, pagesize, banksize)
+{
+       vrc4_ppu_dump(d, pagesize, banksize, 3, 2);
+}
index 0ebb3af..1150017 100644 (file)
@@ -1,69 +1,69 @@
-/*VRC7 FLASH MEMORY WRITE\r
-generic CPU memory bank\r
-cpu address|rom address    |page|task\r
-$8000-$9fff|0x02000-0x03fff|1   |write (0x2aaa & 0x1fff) + 0x8000\r
-$a000-$bfff|0x04000-0x05fff|2   |write (0x5555 & 0x1fff) + 0xa000\r
-$c000-$dfff|n * 0x2000     |n   |write area\r
-$e000-$efff|末尾           |fix |boot area, 未使用*/\r
-board <- {\r
-       mappernum = 85, vram_mirrorfind = false, ppu_ramfind = true,\r
-       cpu_rom = {banksize = 0x2000, size_max = 4 * mega, size_base = 1 * mega},\r
-       cpu_ram = {banksize = 0x2000, size_max = 0x2000, size_base = 0x2000},\r
-       ppu_rom = {banksize = 0x2000 / 8, size_max = 2 * mega, size_base = 1* mega}\r
-};\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize - 2; i += 2){\r
-               cpu_write(d, 0x8000, i);\r
-               cpu_write(d, 0x8018, i | 1);\r
-               cpu_read(d, 0x8000, banksize * 2);\r
-       }\r
-       cpu_write(d, 0x9000, 0x3e);\r
-       cpu_read(d, 0xc000, banksize * 2);\r
-}\r
-\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       cpu_write(d, 0xa000, 0);\r
-       for(local i = 0; i < pagesize; i += 8){\r
-               local t = i;\r
-               for(local j = 0xa000; j < 0xe000; j += 0x1000){\r
-                       cpu_write(d, j, t++);\r
-                       cpu_write(d, j+0x18, t++);\r
-               }\r
-               ppu_read(d, 0, banksize * 8);\r
-       }\r
-}\r
-\r
-function cpu_ram_access(d, pagesize, banksize)\r
-{\r
-       cpu_write(d, 0xe000, 0x80);\r
-       cpu_ramrw(d, 0x6000, banksize);\r
-       cpu_write(d, 0xe000, 0x00);\r
-}\r
-\r
-/*\r
-this is RC851/352402 style. RV051/353429 style is not supported.\r
-352402: Program ROM/ Charcter RAM/ Backup RAM/ R1 = A5, R0 = A4/ Extra Sound\r
-353429: Program ROM/ Charcter ROM/ R1 = A3, R0 = ?\r
-*/\r
-function initalize(d, cpu_banksize, ppu_banksize)\r
-{\r
-       cpu_command(d, 0, 0xc000, cpu_banksize);\r
-       cpu_command(d, 0x2aaa, 0x8000, cpu_banksize);\r
-       cpu_command(d, 0x5555, 0xa000, cpu_banksize);\r
-       cpu_write(d, 0x8000, 1);\r
-       cpu_write(d, 0x8010, 2);\r
-       cpu_write(d, 0x9000, 0);\r
-}\r
-function cpu_transfer(d, start, end, banksize)\r
-{\r
-       for(local i = start; i < end - 1; i += 1){\r
-               cpu_write(d, 0x9000, i);\r
-               cpu_program(d, 0xc000, banksize);\r
-       }\r
-       cpu_program(d, 0xe000, banksize);\r
-}\r
-function ppu_transfer(d, start, end, size)\r
-{\r
-}\r
+/*VRC7 FLASH MEMORY WRITE
+generic CPU memory bank
+cpu address|rom address    |page|task
+$8000-$9fff|0x02000-0x03fff|1   |write (0x2aaa & 0x1fff) + 0x8000
+$a000-$bfff|0x04000-0x05fff|2   |write (0x5555 & 0x1fff) + 0xa000
+$c000-$dfff|n * 0x2000     |n   |write area
+$e000-$efff|末尾           |fix |boot area, 未使用*/
+board <- {
+       mappernum = 85, vram_mirrorfind = false, ppu_ramfind = true,
+       cpu_rom = {banksize = 0x2000, size_max = 4 * mega, size_base = 1 * mega},
+       cpu_ram = {banksize = 0x2000, size_max = 0x2000, size_base = 0x2000},
+       ppu_rom = {banksize = 0x2000 / 8, size_max = 2 * mega, size_base = 1* mega}
+};
+function cpu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize - 2; i += 2){
+               cpu_write(d, 0x8000, i);
+               cpu_write(d, 0x8018, i | 1);
+               cpu_read(d, 0x8000, banksize * 2);
+       }
+       cpu_write(d, 0x9000, 0x3e);
+       cpu_read(d, 0xc000, banksize * 2);
+}
+
+function ppu_dump(d, pagesize, banksize)
+{
+       cpu_write(d, 0xa000, 0);
+       for(local i = 0; i < pagesize; i += 8){
+               local t = i;
+               for(local j = 0xa000; j < 0xe000; j += 0x1000){
+                       cpu_write(d, j, t++);
+                       cpu_write(d, j+0x18, t++);
+               }
+               ppu_read(d, 0, banksize * 8);
+       }
+}
+
+function cpu_ram_access(d, pagesize, banksize)
+{
+       cpu_write(d, 0xe000, 0x80);
+       cpu_ramrw(d, 0x6000, banksize);
+       cpu_write(d, 0xe000, 0x00);
+}
+
+/*
+this is RC851/352402 style. RV051/353429 style is not supported.
+352402: Program ROM/ Charcter RAM/ Backup RAM/ R1 = A5, R0 = A4/ Extra Sound
+353429: Program ROM/ Charcter ROM/ R1 = A3, R0 = ?
+*/
+function initalize(d, cpu_banksize, ppu_banksize)
+{
+       cpu_command(d, 0, 0xc000, cpu_banksize);
+       cpu_command(d, 0x2aaa, 0x8000, cpu_banksize);
+       cpu_command(d, 0x5555, 0xa000, cpu_banksize);
+       cpu_write(d, 0x8000, 1);
+       cpu_write(d, 0x8010, 2);
+       cpu_write(d, 0x9000, 0);
+}
+function cpu_transfer(d, start, end, banksize)
+{
+       for(local i = start; i < end - 1; i += 1){
+               cpu_write(d, 0x9000, i);
+               cpu_program(d, 0xc000, banksize);
+       }
+       cpu_program(d, 0xe000, banksize);
+}
+function ppu_transfer(d, start, end, size)
+{
+}
index a9e9e19..5b4854e 100644 (file)
-//cpu_dump, ppu_dump 内で同名の関数を呼んではいけない\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       \r
-       for(local i = 0; i < pagesize - 1; i += 1){\r
-               cpu_write(d, register_offset + 8, i);\r
-               cpu_read(d, 0x8000, banksize);\r
-       }\r
-       cpu_read(d, 0xc000, banksize);\r
-}\r
-\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize; i += 8){\r
-               for(local j = 0; j < 8; j += 1){\r
-                       cpu_write(d, register_offset + j, i + j);\r
-                       ppu_read(d, j * banksize, banksize);\r
-               }\r
-       }\r
-}\r
-\r
-function program_initalize(d, cpu_banksize, ppu_banksize)\r
-{\r
-       cpu_write(d, 0x8008, 0x00);\r
-       cpu_command(d, 0x0000, 0x8000, cpu_banksize);\r
-       cpu_command(d, 0x02aa, 0xc000, cpu_banksize);\r
-       cpu_command(d, 0x0555, 0xc000, cpu_banksize);\r
-       cpu_write(d, 0x8000, [0x0a, 0x15, 0]);\r
-       ppu_command(d, 0x2aaa, 0, ppu_banksize);\r
-       ppu_command(d, 0x5555, 0x0400, ppu_banksize);\r
-       ppu_command(d, 0, 0x0800, ppu_banksize);\r
-}\r
-\r
-function cpu_transfer(d, start, end, cpu_banksize)\r
-{\r
-       for(local i = start; i < end - 1; i +=1){\r
-               cpu_write(d, 0x8008, i);\r
-               cpu_program(d, 0x8000, cpu_banksize);\r
-       }\r
-       cpu_program(d, 0xc000, cpu_banksize);\r
-}\r
-\r
-function ppu_transfer(d, start, end, ppu_banksize)\r
-{\r
-       for(local i = start; i < end; i +=4){\r
-               cpu_write(d, 0x8004, [i, i+1, i+2, i+3]);\r
-               ppu_program(d, 0x1000, ppu_banksize * 4);\r
-       }\r
-}\r
-/*\r
-$800d\r
-7 data direction 0:FCG3->EEPROM (write), 1:EEPROM->FCG3 (read)\r
-6 data, FCG3 -> EEPROM\r
-5 clock\r
-\r
-$6000-$7fff\r
-4 data, EEPROM -> FCG3\r
-*/\r
-const I2C_READBIT = 4;\r
-const I2C_DIRBIT = 7;\r
-const I2C_WRITEBIT = 6;\r
-const I2C_CLOCKBIT = 5;\r
-\r
-I2C_DIR_READ <- 1 << I2C_DIRBIT;\r
-I2C_DIR_WRITE <- 0 << I2C_DIRBIT;\r
-I2C_SEND_H <- 1 << I2C_WRITEBIT;\r
-I2C_SEND_L <- 0 << I2C_WRITEBIT;\r
-I2C_CLOCK_H <- 1 << I2C_CLOCKBIT;\r
-I2C_CLOCK_L <- 0 << I2C_CLOCKBIT;\r
-\r
-function i2c_start(d)\r
-{\r
-       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_L);\r
-       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_H);\r
-       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_H | I2C_SEND_H);\r
-       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_H | I2C_SEND_L);\r
-       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_L);\r
-}\r
-\r
-function i2c_stop(d)\r
-{\r
-       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_L);\r
-       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_H | I2C_SEND_L);\r
-       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_H | I2C_SEND_H);\r
-       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_H);\r
-       cpu_write(d, 0x800d, I2C_DIR_READ | I2C_CLOCK_L | I2C_SEND_H);\r
-}\r
-\r
-function i2c_ack_wait(d)\r
-{\r
-       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_H);\r
-       cpu_write(d, 0x800d, I2C_DIR_READ | I2C_CLOCK_H | I2C_SEND_L);\r
-       local n = cpu_read_register(d, 0x6000, 0);\r
-       n = n & (1 << I2C_READBIT);\r
-       return n == 0;\r
-}\r
-\r
-\r
-function send_bit(d, v)\r
-{\r
-       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_L);\r
-       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | v);\r
-       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_H | v);\r
-}\r
-\r
-function i2c_address_set(d, address, rw)\r
-{\r
-       do{\r
-               local a = address;\r
-               i2c_start(d);\r
-               for(local i = 0; i < 7; i++){\r
-                       send_bit(d, a & I2C_SEND_H);\r
-                       a = a << 1;\r
-               }\r
-               send_bit(d, rw);\r
-       }while(i2c_ack_wait(d) != true);\r
-}\r
-\r
-function eeprom_address_set(d, address)\r
-{\r
-       for(local i = 0; i < 8; i++){\r
-               local n = I2C_SEND_L;\r
-               if(address & 0x80){\r
-                       n = I2C_SEND_H;\r
-               }\r
-               send_bit(d, n);\r
-               address = address << 1;\r
-       }\r
-       i2c_ack_wait(d);\r
-}\r
+//cpu_dump, ppu_dump 内で同名の関数を呼んではいけない
+function cpu_dump(d, pagesize, banksize)
+{
+       
+       for(local i = 0; i < pagesize - 1; i += 1){
+               cpu_write(d, register_offset + 8, i);
+               cpu_read(d, 0x8000, banksize);
+       }
+       cpu_read(d, 0xc000, banksize);
+}
+
+function ppu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize; i += 8){
+               for(local j = 0; j < 8; j += 1){
+                       cpu_write(d, register_offset + j, i + j);
+                       ppu_read(d, j * banksize, banksize);
+               }
+       }
+}
+
+function program_initalize(d, cpu_banksize, ppu_banksize)
+{
+       cpu_write(d, 0x8008, 0x00);
+       cpu_command(d, 0x0000, 0x8000, cpu_banksize);
+       cpu_command(d, 0x02aa, 0xc000, cpu_banksize);
+       cpu_command(d, 0x0555, 0xc000, cpu_banksize);
+       cpu_write(d, 0x8000, [0x0a, 0x15, 0]);
+       ppu_command(d, 0x2aaa, 0, ppu_banksize);
+       ppu_command(d, 0x5555, 0x0400, ppu_banksize);
+       ppu_command(d, 0, 0x0800, ppu_banksize);
+}
+
+function cpu_transfer(d, start, end, cpu_banksize)
+{
+       for(local i = start; i < end - 1; i +=1){
+               cpu_write(d, 0x8008, i);
+               cpu_program(d, 0x8000, cpu_banksize);
+       }
+       cpu_program(d, 0xc000, cpu_banksize);
+}
+
+function ppu_transfer(d, start, end, ppu_banksize)
+{
+       for(local i = start; i < end; i +=4){
+               cpu_write(d, 0x8004, [i, i+1, i+2, i+3]);
+               ppu_program(d, 0x1000, ppu_banksize * 4);
+       }
+}
+/*
+$800d
+7 data direction 0:FCG3->EEPROM (write), 1:EEPROM->FCG3 (read)
+6 data, FCG3 -> EEPROM
+5 clock
+
+$6000-$7fff
+4 data, EEPROM -> FCG3
+*/
+const I2C_READBIT = 4;
+const I2C_DIRBIT = 7;
+const I2C_WRITEBIT = 6;
+const I2C_CLOCKBIT = 5;
+
+I2C_DIR_READ <- 1 << I2C_DIRBIT;
+I2C_DIR_WRITE <- 0 << I2C_DIRBIT;
+I2C_SEND_H <- 1 << I2C_WRITEBIT;
+I2C_SEND_L <- 0 << I2C_WRITEBIT;
+I2C_CLOCK_H <- 1 << I2C_CLOCKBIT;
+I2C_CLOCK_L <- 0 << I2C_CLOCKBIT;
+
+function i2c_start(d)
+{
+       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_L);
+       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_H);
+       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_H | I2C_SEND_H);
+       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_H | I2C_SEND_L);
+       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_L);
+}
+
+function i2c_stop(d)
+{
+       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_L);
+       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_H | I2C_SEND_L);
+       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_H | I2C_SEND_H);
+       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_H);
+       cpu_write(d, 0x800d, I2C_DIR_READ | I2C_CLOCK_L | I2C_SEND_H);
+}
+
+function i2c_ack_wait(d)
+{
+       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_H);
+       cpu_write(d, 0x800d, I2C_DIR_READ | I2C_CLOCK_H | I2C_SEND_L);
+       local n = cpu_read_register(d, 0x6000, 0);
+       n = n & (1 << I2C_READBIT);
+       return n == 0;
+}
+
+
+function send_bit(d, v)
+{
+       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | I2C_SEND_L);
+       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_L | v);
+       cpu_write(d, 0x800d, I2C_DIR_WRITE | I2C_CLOCK_H | v);
+}
+
+function i2c_address_set(d, address, rw)
+{
+       do{
+               local a = address;
+               i2c_start(d);
+               for(local i = 0; i < 7; i++){
+                       send_bit(d, a & I2C_SEND_H);
+                       a = a << 1;
+               }
+               send_bit(d, rw);
+       }while(i2c_ack_wait(d) != true);
+}
+
+function eeprom_address_set(d, address)
+{
+       for(local i = 0; i < 8; i++){
+               local n = I2C_SEND_L;
+               if(address & 0x80){
+                       n = I2C_SEND_H;
+               }
+               send_bit(d, n);
+               address = address << 1;
+       }
+       i2c_ack_wait(d);
+}
index 5081efb..619d8bf 100644 (file)
@@ -1,14 +1,14 @@
-//send 1bit serial 5 times\r
-function mmc1_write(d, address, data)\r
-{\r
-       local ar = [];\r
-       for(local i = 0; i < 5; i++){\r
-               ar.append(data);\r
-               data = data >> 1;\r
-       }\r
-       cpu_write(d, address, ar);\r
-\r
-/*     for(local i = 0; i < 5; i++){\r
-               cpu_write(d, address, data >> i);\r
-       }*/\r
-}\r
+//send 1bit serial 5 times
+function mmc1_write(d, address, data)
+{
+       local ar = [];
+       for(local i = 0; i < 5; i++){
+               ar.append(data);
+               data = data >> 1;
+       }
+       cpu_write(d, address, ar);
+
+/*     for(local i = 0; i < 5; i++){
+               cpu_write(d, address, data >> i);
+       }*/
+}
index c28ea04..a165675 100644 (file)
@@ -1,44 +1,44 @@
-/*\r
-Namcot 118/119 chip with Charcter ROM A16 wired PPU A12\r
-\r
-Quinty\r
-*/\r
-board <- {\r
-       mappernum = 88, vram_mirrorfind = true, ppu_ramfind = false,\r
-       cpu_rom = {\r
-               size_base = 0x10000, size_max = 1*mega,\r
-               banksize = 0x2000\r
-       },\r
-       cpu_ram = {\r
-               size_base = 0, size_max = 0, banksize = 0\r
-       }\r
-       ppu_rom = {\r
-               size_base = 0x20000, size_max = 0x20000,\r
-               banksize = 0x0400\r
-       }\r
-};\r
-\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize - 2; i += 2){\r
-               cpu_write(d, 0x8000, [6, i, 7, i+1]);\r
-               cpu_read(d, 0x8000, banksize * 2);\r
-       }\r
-       cpu_read(d, 0xc000, banksize * 2);\r
-}\r
-\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       local i;\r
-       //ROM offset 0x00000-0x0ffff can access from PPU address 0x0000-0x0fff\r
-       for(i = 0; i < (pagesize >> 1); i += 4){\r
-               cpu_write(d, 0x8000, [0, i, 1, i+2]);\r
-               ppu_read(d, 0x0000, banksize * 4);\r
-       }\r
-       \r
-       //ROM offset 0x10000-0x1ffff can access from PPU address 0x1000-0x1fff\r
-       for(; i < pagesize; i += 4){\r
-               cpu_write(d, 0x8000, [2, i, 3, i+1, 4, i+2, 5, i+3]);\r
-               ppu_read(d, 0x1000, banksize * 4);\r
-       }\r
-}\r
+/*
+Namcot 118/119 chip with Charcter ROM A16 wired PPU A12
+
+Quinty
+*/
+board <- {
+       mappernum = 88, vram_mirrorfind = true, ppu_ramfind = false,
+       cpu_rom = {
+               size_base = 0x10000, size_max = 1*mega,
+               banksize = 0x2000
+       },
+       cpu_ram = {
+               size_base = 0, size_max = 0, banksize = 0
+       }
+       ppu_rom = {
+               size_base = 0x20000, size_max = 0x20000,
+               banksize = 0x0400
+       }
+};
+
+function cpu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize - 2; i += 2){
+               cpu_write(d, 0x8000, [6, i, 7, i+1]);
+               cpu_read(d, 0x8000, banksize * 2);
+       }
+       cpu_read(d, 0xc000, banksize * 2);
+}
+
+function ppu_dump(d, pagesize, banksize)
+{
+       local i;
+       //ROM offset 0x00000-0x0ffff can access from PPU address 0x0000-0x0fff
+       for(i = 0; i < (pagesize >> 1); i += 4){
+               cpu_write(d, 0x8000, [0, i, 1, i+2]);
+               ppu_read(d, 0x0000, banksize * 4);
+       }
+       
+       //ROM offset 0x10000-0x1ffff can access from PPU address 0x1000-0x1fff
+       for(; i < pagesize; i += 4){
+               cpu_write(d, 0x8000, [2, i, 3, i+1, 4, i+2, 5, i+3]);
+               ppu_read(d, 0x1000, banksize * 4);
+       }
+}
index 0d25983..fea88fc 100644 (file)
@@ -1,47 +1,47 @@
-/*\r
-Namcot 108/109/118/119 chip with generic wiring.\r
-PCB 3401/34[01]5/34[01]6/34[01]7/3451/3413/3414\r
-    NES-DEROM/DE1ROM/DRROM\r
-\r
-この IC は MMC3 より先に登場し、 MMC3 に仕様が似ている。\r
-仕様が似ている点で,古いエミュレータでは mapper 4 と定義されている。\r
-\r
-古くて曖昧な仕様は Namco IC と MMC3 との明確な区別が再定義され、 mapper\r
-番号も 206 へ分離された。それにも関わらず Namco のゲームは MMC3 \r
-(mapper 4)という認識と古い ROM image が消えないのはユーザーにとって\r
-たいした違いがないからだ。\r
-\r
-NAMCOT-MC, NAMCOT-SX で動作確認済み\r
-*/\r
-\r
-board <- {\r
-       mappernum = 206, vram_mirrorfind = true, ppu_ramfind = false,\r
-       cpu_rom = {\r
-               size_base = 0x10000, size_max = 1*mega,\r
-               banksize = 0x2000\r
-       },\r
-       cpu_ram = {\r
-               size_base = 0, size_max = 0, banksize = 0\r
-       }\r
-       ppu_rom = {\r
-               size_base = 0x8000, size_max = 0x10000,\r
-               banksize = 0x0400\r
-       }\r
-};\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize - 2; i += 2){\r
-               cpu_write(d, 0x8000, [6, i, 7, i+1]);\r
-               cpu_read(d, 0x8000, banksize * 2);\r
-       }\r
-       cpu_read(d, 0xc000, banksize * 2);\r
-}\r
-\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize; i += 8){\r
-               cpu_write(d, 0x8000, [0, i, 1, i+2]);\r
-               cpu_write(d, 0x8000, [2, i+4, 3, i+5, 4, i+6, 5, i+7]);\r
-               ppu_read(d, 0x0000, banksize * 8);\r
-       }\r
-}\r
+/*
+Namcot 108/109/118/119 chip with generic wiring.
+PCB 3401/34[01]5/34[01]6/34[01]7/3451/3413/3414
+    NES-DEROM/DE1ROM/DRROM
+
+この IC は MMC3 より先に登場し、 MMC3 に仕様が似ている。
+仕様が似ている点で,古いエミュレータでは mapper 4 と定義されている。
+
+古くて曖昧な仕様は Namco IC と MMC3 との明確な区別が再定義され、 mapper
+番号も 206 へ分離された。それにも関わらず Namco のゲームは MMC3 
+(mapper 4)という認識と古い ROM image が消えないのはユーザーにとって
+たいした違いがないからだ。
+
+NAMCOT-MC, NAMCOT-SX で動作確認済み
+*/
+
+board <- {
+       mappernum = 206, vram_mirrorfind = true, ppu_ramfind = false,
+       cpu_rom = {
+               size_base = 0x10000, size_max = 1*mega,
+               banksize = 0x2000
+       },
+       cpu_ram = {
+               size_base = 0, size_max = 0, banksize = 0
+       }
+       ppu_rom = {
+               size_base = 0x8000, size_max = 0x10000,
+               banksize = 0x0400
+       }
+};
+function cpu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize - 2; i += 2){
+               cpu_write(d, 0x8000, [6, i, 7, i+1]);
+               cpu_read(d, 0x8000, banksize * 2);
+       }
+       cpu_read(d, 0xc000, banksize * 2);
+}
+
+function ppu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize; i += 8){
+               cpu_write(d, 0x8000, [0, i, 1, i+2]);
+               cpu_write(d, 0x8000, [2, i+4, 3, i+5, 4, i+6, 5, i+7]);
+               ppu_read(d, 0x0000, banksize * 8);
+       }
+}
index 8a4649a..540aa3d 100644 (file)
@@ -1,46 +1,46 @@
-/*\r
-Namcot 129/163\r
-\r
-No battery, no external RAM:\r
-  Star Wars (129), Namco Classic, Youkai Douchuki, Final Lap, \r
-  Erika to Satoru no Yumebouken, Rolling Thunder, Dragon Ninja, \r
-  Mappy Kids, Namco Classic II\r
-\r
-Battery-backuped Memory is used by an external RAM:\r
-  Sangokushi, King of Kings, Juvei Quest,\r
-  Megami Tensei II, Sangokushi II (uses IRQ)\r
-\r
-Battery-backuped Memory is used by an internal RAM:\r
-  Dokuganryu Masamune, Kaiju Monogatari, Mindseeker, Hydride3, \r
-  Famista '90, Battle Fleet\r
-*/\r
-board <- {\r
-       mappernum = 19, \r
-       cpu_rom = {\r
-               size_base = 2 * mega, size_max = 4 * mega,\r
-               banksize = 0x2000\r
-       }, \r
-       cpu_ram = {\r
-               size_base = 0x0080, size_max = 0x2000,\r
-               banksize = 0x2000\r
-       },\r
-       ppu_rom = {\r
-               size_base = 2 * mega, size_max = 2 * mega,\r
-               banksize = 0x0400\r
-       },\r
-       ppu_ramfind = false,\r
-       vram_mirrorfind = false\r
-};\r
-dofile("namcot_19.ai");\r
-\r
-function cpu_ram_access(d, pagesize, banksize)\r
-{\r
-       if(pagesize == 0){ //internal RAM\r
-               cpu_write(d, 0xf800, 0x80); //autoinrement on\r
-               cpu_ramrw(d, 0x4800, 0x80);\r
-       }else{ //external RAM\r
-               cpu_write(d, 0xf800, 0x40);\r
-               cpu_ramrw(d, 0x6000, banksize);\r
-               cpu_write(d, 0xf800, 0x4f);\r
-       }\r
-}\r
+/*
+Namcot 129/163
+
+No battery, no external RAM:
+  Star Wars (129), Namco Classic, Youkai Douchuki, Final Lap, 
+  Erika to Satoru no Yumebouken, Rolling Thunder, Dragon Ninja, 
+  Mappy Kids, Namco Classic II
+
+Battery-backuped Memory is used by an external RAM:
+  Sangokushi, King of Kings, Juvei Quest,
+  Megami Tensei II, Sangokushi II (uses IRQ)
+
+Battery-backuped Memory is used by an internal RAM:
+  Dokuganryu Masamune, Kaiju Monogatari, Mindseeker, Hydride3, 
+  Famista '90, Battle Fleet
+*/
+board <- {
+       mappernum = 19, 
+       cpu_rom = {
+               size_base = 2 * mega, size_max = 4 * mega,
+               banksize = 0x2000
+       }, 
+       cpu_ram = {
+               size_base = 0x0080, size_max = 0x2000,
+               banksize = 0x2000
+       },
+       ppu_rom = {
+               size_base = 2 * mega, size_max = 2 * mega,
+               banksize = 0x0400
+       },
+       ppu_ramfind = false,
+       vram_mirrorfind = false
+};
+dofile("namcot_19.ai");
+
+function cpu_ram_access(d, pagesize, banksize)
+{
+       if(pagesize == 0){ //internal RAM
+               cpu_write(d, 0xf800, 0x80); //autoinrement on
+               cpu_ramrw(d, 0x4800, 0x80);
+       }else{ //external RAM
+               cpu_write(d, 0xf800, 0x40);
+               cpu_ramrw(d, 0x6000, banksize);
+               cpu_write(d, 0xf800, 0x4f);
+       }
+}
index 5bcf11c..14630b2 100644 (file)
@@ -1,34 +1,34 @@
-/*\r
-Namcot 175\r
-\r
-Wagan Land 2, Famista'91, Family Circuit '91, Chibimaruko chan, \r
-Heisei Tensai Bakabon\r
-\r
-Family Circuit '91 has Program ROM(4M), Charcter ROM and external \r
-Battery Backuped WorkRAM.\r
-*/\r
-board <- {\r
-       mappernum = 19, //210, \r
-       cpu_rom = {\r
-               size_base = 2 * mega, size_max = 4 * mega,\r
-               banksize = 0x2000\r
-       }, \r
-       cpu_ram = {\r
-               size_base = 0x0800, size_max = 0x0800,\r
-               banksize = 0x2000\r
-       }, \r
-       ppu_rom = {\r
-               size_base = 2 * mega, size_max = 2 * mega,\r
-               banksize = 0x0400\r
-       },\r
-       ppu_ramfind = false,\r
-       vram_mirrorfind = true\r
-};\r
-dofile("namcot_19.ai");\r
-\r
-function cpu_ram_access(d, pagesize, banksize)\r
-{\r
-       cpu_write(d, 0xc000, 0x01);\r
-       cpu_ramrw(d, 0x6000, 0x0800);\r
-       cpu_write(d, 0xc000, 0x00);\r
-}\r
+/*
+Namcot 175
+
+Wagan Land 2, Famista'91, Family Circuit '91, Chibimaruko chan, 
+Heisei Tensai Bakabon
+
+Family Circuit '91 has Program ROM(4M), Charcter ROM and external 
+Battery Backuped WorkRAM.
+*/
+board <- {
+       mappernum = 19, //210, 
+       cpu_rom = {
+               size_base = 2 * mega, size_max = 4 * mega,
+               banksize = 0x2000
+       }, 
+       cpu_ram = {
+               size_base = 0x0800, size_max = 0x0800,
+               banksize = 0x2000
+       }, 
+       ppu_rom = {
+               size_base = 2 * mega, size_max = 2 * mega,
+               banksize = 0x0400
+       },
+       ppu_ramfind = false,
+       vram_mirrorfind = true
+};
+dofile("namcot_19.ai");
+
+function cpu_ram_access(d, pagesize, banksize)
+{
+       cpu_write(d, 0xc000, 0x01);
+       cpu_ramrw(d, 0x6000, 0x0800);
+       cpu_write(d, 0xc000, 0x00);
+}
index 21a330a..07b5c69 100644 (file)
@@ -1,76 +1,76 @@
-/*\r
-iNES mapper #19\r
-\r
-Many cartridges uses epoxies for ROM, RAM and mapper. Few cartridges \r
-uses discrete parts. Other functions are various though the memory \r
-mapping is common. \r
-\r
-The mistake of an old document is an etymology of 'namcot 106'. I have\r
-seen mapper IC with 163 (well known chip), 129, 175 and 340 for #19. \r
-I have never seen labeled IC with '106'. \r
-'106' is informal virtual name, and the relic of old emulators. \r
-*/\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize - 2; i += 2){\r
-               cpu_write(d, 0xe000, i);\r
-               cpu_write(d, 0xe800, i | 1);\r
-               cpu_read(d, 0x8000, banksize * 2);\r
-       }\r
-       cpu_write(d, 0xf000, 0x3e);\r
-       cpu_read(d, 0xc000, banksize * 2);\r
-}\r
-\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       cpu_write(d, 0xe800, 0xe0);\r
-       for(local i = 0; i < pagesize; i += 8){\r
-               local address = 0x8000;\r
-               for(local j = 0; j < 8; j++){\r
-                       cpu_write(d, address, i | j);\r
-                       address += 0x0800;\r
-               }\r
-               ppu_read(d, 0, banksize * 8);\r
-       }\r
-}\r
-\r
-function program_initalize(d, cpu_banksize, ppu_banksize)\r
-{\r
-       cpu_command(d, 0x0000, 0xa000, cpu_banksize);\r
-       cpu_command(d, 0x2aaa, 0x8000, cpu_banksize);\r
-       cpu_command(d, 0x5555, 0xa000, cpu_banksize);\r
-       cpu_write(d, 0xe000, 0x41);\r
-       cpu_write(d, 0xe800, 0xe2);\r
-\r
-       ppu_command(d, 0x0000, 0x0000, ppu_banksize);\r
-       ppu_command(d, 0x2aaa, 0x0400, ppu_banksize);\r
-       ppu_command(d, 0x5555, 0x0800, ppu_banksize);\r
-       cpu_write(d, 0x8000, 0x00);\r
-       cpu_write(d, 0x8800, 0x0a);\r
-       cpu_write(d, 0x9000, 0x15);\r
-       //map 0x2000-0x2fff is RAM\r
-       cpu_write(d, 0xc000, 0xe0);\r
-       cpu_write(d, 0xc800, 0xe0);\r
-       cpu_write(d, 0xd000, 0xe1);\r
-       cpu_write(d, 0xd800, 0xe1);\r
-}\r
-\r
-function cpu_transfer(d, start, end, cpu_banksize)\r
-{\r
-       for(local i = start; i < end - 1; i += 1){\r
-               cpu_write(d, 0xf000, i | 0xe0);\r
-               cpu_program(d, 0xc000, cpu_banksize);\r
-       }\r
-       cpu_program(d, 0xe000, cpu_banksize)\r
-}\r
-\r
-function ppu_transfer(d, start, end, ppu_banksize)\r
-{\r
-       for(local i = start; i < end; i += 4){\r
-               cpu_write(d, 0xa000, i);\r
-               cpu_write(d, 0xa800, i | 1);\r
-               cpu_write(d, 0xb000, i | 2);\r
-               cpu_write(d, 0xb800, i | 3);\r
-               ppu_program(d, 0x1000, ppu_banksize * 4);\r
-       }\r
-}\r
+/*
+iNES mapper #19
+
+Many cartridges uses epoxies for ROM, RAM and mapper. Few cartridges 
+uses discrete parts. Other functions are various though the memory 
+mapping is common. 
+
+The mistake of an old document is an etymology of 'namcot 106'. I have
+seen mapper IC with 163 (well known chip), 129, 175 and 340 for #19. 
+I have never seen labeled IC with '106'. 
+'106' is informal virtual name, and the relic of old emulators. 
+*/
+function cpu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize - 2; i += 2){
+               cpu_write(d, 0xe000, i);
+               cpu_write(d, 0xe800, i | 1);
+               cpu_read(d, 0x8000, banksize * 2);
+       }
+       cpu_write(d, 0xf000, 0x3e);
+       cpu_read(d, 0xc000, banksize * 2);
+}
+
+function ppu_dump(d, pagesize, banksize)
+{
+       cpu_write(d, 0xe800, 0xe0);
+       for(local i = 0; i < pagesize; i += 8){
+               local address = 0x8000;
+               for(local j = 0; j < 8; j++){
+                       cpu_write(d, address, i | j);
+                       address += 0x0800;
+               }
+               ppu_read(d, 0, banksize * 8);
+       }
+}
+
+function program_initalize(d, cpu_banksize, ppu_banksize)
+{
+       cpu_command(d, 0x0000, 0xa000, cpu_banksize);
+       cpu_command(d, 0x2aaa, 0x8000, cpu_banksize);
+       cpu_command(d, 0x5555, 0xa000, cpu_banksize);
+       cpu_write(d, 0xe000, 0x41);
+       cpu_write(d, 0xe800, 0xe2);
+
+       ppu_command(d, 0x0000, 0x0000, ppu_banksize);
+       ppu_command(d, 0x2aaa, 0x0400, ppu_banksize);
+       ppu_command(d, 0x5555, 0x0800, ppu_banksize);
+       cpu_write(d, 0x8000, 0x00);
+       cpu_write(d, 0x8800, 0x0a);
+       cpu_write(d, 0x9000, 0x15);
+       //map 0x2000-0x2fff is RAM
+       cpu_write(d, 0xc000, 0xe0);
+       cpu_write(d, 0xc800, 0xe0);
+       cpu_write(d, 0xd000, 0xe1);
+       cpu_write(d, 0xd800, 0xe1);
+}
+
+function cpu_transfer(d, start, end, cpu_banksize)
+{
+       for(local i = start; i < end - 1; i += 1){
+               cpu_write(d, 0xf000, i | 0xe0);
+               cpu_program(d, 0xc000, cpu_banksize);
+       }
+       cpu_program(d, 0xe000, cpu_banksize)
+}
+
+function ppu_transfer(d, start, end, ppu_banksize)
+{
+       for(local i = start; i < end; i += 4){
+               cpu_write(d, 0xa000, i);
+               cpu_write(d, 0xa800, i | 1);
+               cpu_write(d, 0xb000, i | 2);
+               cpu_write(d, 0xb800, i | 3);
+               ppu_program(d, 0x1000, ppu_banksize * 4);
+       }
+}
index 4c5e4a9..e46437e 100644 (file)
@@ -1,24 +1,24 @@
-/*\r
-Namcot 340\r
-\r
-Splatter House, Top Striker, Famista '92, Dream Master, \r
-Wagan Land3, Famista '93, Famista '94\r
-*/\r
-board <- {\r
-       mappernum = 19, //210, \r
-       cpu_rom = {\r
-               size_base = 2 * mega, size_max = 4 * mega,\r
-               banksize = 0x2000\r
-       }, \r
-       cpu_ram = {\r
-               size_base = 0x0800, size_max = 0x0800,\r
-               banksize = 0x2000\r
-       }, \r
-       ppu_rom = {\r
-               size_base = 2 * mega, size_max = 2 * mega,\r
-               banksize = 0x0400\r
-       },\r
-       ppu_ramfind = false,\r
-       vram_mirrorfind = false\r
-};\r
-dofile("namcot_19.ai");\r
+/*
+Namcot 340
+
+Splatter House, Top Striker, Famista '92, Dream Master, 
+Wagan Land3, Famista '93, Famista '94
+*/
+board <- {
+       mappernum = 19, //210, 
+       cpu_rom = {
+               size_base = 2 * mega, size_max = 4 * mega,
+               banksize = 0x2000
+       }, 
+       cpu_ram = {
+               size_base = 0x0800, size_max = 0x0800,
+               banksize = 0x2000
+       }, 
+       ppu_rom = {
+               size_base = 2 * mega, size_max = 2 * mega,
+               banksize = 0x0400
+       },
+       ppu_ramfind = false,
+       vram_mirrorfind = false
+};
+dofile("namcot_19.ai");
index 99476ae..6230d5c 100644 (file)
-board <- {\r
-       mappernum = 1, vram_mirrorfind = false, ppu_ramfind = true,\r
-       cpu_rom = {\r
-               size_base = 1 * mega, size_max = 2 * mega,\r
-               banksize = 0x4000, \r
-       }, \r
-       cpu_ram = {\r
-               size_base = 0x2000, size_max = 0x2000,\r
-               banksize = 0x2000\r
-       },\r
-       ppu_rom = {\r
-               size_base = 1 * mega, size_max = 1 * mega,\r
-               banksize = 0x1000, \r
-       }\r
-};\r
-\r
-dofile("mmc1.ai");\r
-\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       cpu_write(d, 0x8000, 0x80); //serial count reset\r
-       mmc1_write(d, 0x8000, 0x0c); //CPU/PPU bank configuration\r
-       for(local i = 0; i < pagesize - 1; i += 1){\r
-               mmc1_write(d, 0xe000, i | 0x10);\r
-               cpu_read(d, 0x8000, banksize);\r
-       }\r
-       cpu_read(d, 0xc000, banksize);\r
-}\r
-\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize; i += 2){\r
-               mmc1_write(d, 0xa000, i);\r
-               mmc1_write(d, 0xc000, i | 1);\r
-               ppu_read(d, 0, banksize * 2);\r
-       }\r
-}\r
-\r
-function cpu_ram_access(d, pagesize, banksize)\r
-{\r
-       mmc1_write(d, 0x8000, 1 << 3);\r
-       mmc1_write(d, 0xe000, 0);\r
-       mmc1_write(d, 0xa000, 0);\r
-       cpu_ramrw(d, 0x6000, banksize);\r
-       mmc1_write(d, 0xe000, 0xff);\r
-}\r
-\r
-/*\r
-MMC1 ROM 2M + (ROM 1M or RAM) board\r
-CPU memory bank for SLROM, SKROM, SGROM, SNROM\r
-cpu address|rom address    |page|task\r
-$8000-$bfff|n * 0x4000|even 0x00|write 0x2aaa + write area\r
-$c000-$ffff|0x3c000-0x3ffff|fix |write 0x5555\r
----------------------------------\r
-$8000-$bfff|0x00000-0x03fff|fix |write 0x2aaa\r
-$c000-$ffff|n * 0x4000|odd  0x01|write 0x5555 + write area\r
-\r
-PPU memory bank for SLROM, SKROM\r
-ppu area use command only mask A0-A10 device\r
-ppu address|rom address    |page|task\r
-$0000-$0fff|0x00000 * n    |n   |write area + 0x2aa + 0x555\r
-$0000-$1fff|0x01000 * n    |n+1 |write area\r
-*/\r
-function program_initalize(d, cpu_banksize, ppu_banksize)\r
-{\r
-       cpu_write(d, 0x8000, 0x80);\r
-       mmc1_write(d, 0xa000, 0x10); //SNROM + MMC1A disable W-RAM\r
-       mmc1_write(d, 0x8000, 0x1c);\r
-       mmc1_write(d, 0xe000, 0x10); //MMC1B disable W-RAM\r
-       cpu_command(d, 0x0000, 0x8000, cpu_banksize);\r
-       cpu_command(d, 0x2aaa, 0x8000, cpu_banksize);\r
-       cpu_command(d, 0x5555, 0xc000, cpu_banksize);\r
-\r
-       ppu_command(d, 0x0000, 0, ppu_banksize);\r
-       ppu_command(d, 0x02aa, 0, ppu_banksize);\r
-       ppu_command(d, 0x0555, 0, ppu_banksize);\r
-}\r
-\r
-function cpu_transfer(d, start, end, cpu_banksize)\r
-{\r
-       local i = 0;\r
-       local wram = 1 << 4; //W-RAM disable flag\r
-       for(i = start; i < end - 2; i += 2){\r
-               mmc1_write(d, 0x8000, 0x1c);\r
-               mmc1_write(d, 0xe000, i | 0 | wram);\r
-               cpu_program(d, 0x8000, cpu_banksize);\r
-               \r
-               mmc1_write(d, 0x8000, 0x18);\r
-               mmc1_write(d, 0xe000, i | 1 | wram);\r
-               cpu_program(d, 0xc000, cpu_banksize);\r
-       }\r
-       mmc1_write(d, 0x8000, 0x1c);\r
-       mmc1_write(d, 0xe000, i | wram);\r
-       cpu_program(d, 0x8000, cpu_banksize);\r
-       cpu_program(d, 0xc000, cpu_banksize);\r
-}\r
-\r
-function ppu_transfer(d, start, end, ppu_banksize)\r
-{\r
-       for(local i = start; i < end; i+=2){\r
-               mmc1_write(d, 0xa000, i)\r
-               mmc1_write(d, 0xc000, i | 1);\r
-               ppu_program(d, 0x0000, ppu_banksize * 2);\r
-       }\r
-}\r
-\r
+board <- {
+       mappernum = 1, 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 = 1 * mega, size_max = 1 * mega,
+               banksize = 0x1000, 
+       }
+};
+
+dofile("mmc1.ai");
+
+function cpu_dump(d, pagesize, banksize)
+{
+       cpu_write(d, 0x8000, 0x80); //serial count reset
+       mmc1_write(d, 0x8000, 0x0c); //CPU/PPU bank configuration
+       for(local i = 0; i < pagesize - 1; i += 1){
+               mmc1_write(d, 0xe000, i | 0x10);
+               cpu_read(d, 0x8000, banksize);
+       }
+       cpu_read(d, 0xc000, banksize);
+}
+
+function ppu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize; i += 2){
+               mmc1_write(d, 0xa000, i);
+               mmc1_write(d, 0xc000, i | 1);
+               ppu_read(d, 0, banksize * 2);
+       }
+}
+
+function cpu_ram_access(d, pagesize, banksize)
+{
+       mmc1_write(d, 0x8000, 1 << 3);
+       mmc1_write(d, 0xe000, 0);
+       mmc1_write(d, 0xa000, 0);
+       cpu_ramrw(d, 0x6000, banksize);
+       mmc1_write(d, 0xe000, 0xff);
+}
+
+/*
+MMC1 ROM 2M + (ROM 1M or RAM) board
+CPU memory bank for SLROM, SKROM, SGROM, SNROM
+cpu address|rom address    |page|task
+$8000-$bfff|n * 0x4000|even 0x00|write 0x2aaa + write area
+$c000-$ffff|0x3c000-0x3ffff|fix |write 0x5555
+---------------------------------
+$8000-$bfff|0x00000-0x03fff|fix |write 0x2aaa
+$c000-$ffff|n * 0x4000|odd  0x01|write 0x5555 + write area
+
+PPU memory bank for SLROM, SKROM
+ppu area use command only mask A0-A10 device
+ppu address|rom address    |page|task
+$0000-$0fff|0x00000 * n    |n   |write area + 0x2aa + 0x555
+$0000-$1fff|0x01000 * n    |n+1 |write area
+*/
+function program_initalize(d, cpu_banksize, ppu_banksize)
+{
+       cpu_write(d, 0x8000, 0x80);
+       mmc1_write(d, 0xa000, 0x10); //SNROM + MMC1A disable W-RAM
+       mmc1_write(d, 0x8000, 0x1c);
+       mmc1_write(d, 0xe000, 0x10); //MMC1B disable W-RAM
+       cpu_command(d, 0x0000, 0x8000, cpu_banksize);
+       cpu_command(d, 0x2aaa, 0x8000, cpu_banksize);
+       cpu_command(d, 0x5555, 0xc000, cpu_banksize);
+
+       ppu_command(d, 0x0000, 0, ppu_banksize);
+       ppu_command(d, 0x02aa, 0, ppu_banksize);
+       ppu_command(d, 0x0555, 0, ppu_banksize);
+}
+
+function cpu_transfer(d, start, end, cpu_banksize)
+{
+       local i = 0;
+       local wram = 1 << 4; //W-RAM disable flag
+       for(i = start; i < end - 2; i += 2){
+               mmc1_write(d, 0x8000, 0x1c);
+               mmc1_write(d, 0xe000, i | 0 | wram);
+               cpu_program(d, 0x8000, cpu_banksize);
+               
+               mmc1_write(d, 0x8000, 0x18);
+               mmc1_write(d, 0xe000, i | 1 | wram);
+               cpu_program(d, 0xc000, cpu_banksize);
+       }
+       mmc1_write(d, 0x8000, 0x1c);
+       mmc1_write(d, 0xe000, i | wram);
+       cpu_program(d, 0x8000, cpu_banksize);
+       cpu_program(d, 0xc000, cpu_banksize);
+}
+
+function ppu_transfer(d, start, end, ppu_banksize)
+{
+       for(local i = start; i < end; i+=2){
+               mmc1_write(d, 0xa000, i)
+               mmc1_write(d, 0xc000, i | 1);
+               ppu_program(d, 0x0000, ppu_banksize * 2);
+       }
+}
+
index 87c5853..0c14363 100644 (file)
-/*\r
-SUROM:\r
-Dragon Quest IV, Dragon Warrior III, Dragon Warrior IV, Ninjara Hoi!\r
-SXROM:\r
-Best Play Pro Yakyuu Special, Final Fantasy I & II\r
-*/\r
-board <- {\r
-       mappernum = 1, vram_mirrorfind = false, ppu_ramfind = false,\r
-       cpu_rom = {\r
-               size_base = 4 * mega, size_max = 4 * mega,\r
-               banksize = 0x4000, \r
-       }, \r
-       cpu_ram = {\r
-               size_base = 0x2000, size_max = 0x8000,\r
-               banksize = 0x2000\r
-       },\r
-       ppu_rom = {\r
-               size_base = 0, size_max = 0,\r
-               banksize = 0x1000, \r
-       }\r
-};\r
-\r
-dofile("mmc1.ai");\r
-\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       cpu_write(d, 0x8000, 0x80); //serial count reset\r
-       mmc1_write(d, 0x8000, 0x0c); //CPU/PPU bank configuration\r
-       for(local i = 0; i < pagesize; i += 0x10){\r
-               mmc1_write(d, 0xa000, (i & 0x10) | 1);\r
-               for(local j = 0; j < 0x10 - 1; j += 1){\r
-                       mmc1_write(d, 0xe000, j | 0x10);\r
-                       cpu_read(d, 0x8000, banksize);\r
-               }\r
-               cpu_read(d, 0xc000, banksize);\r
-       }\r
-}\r
-\r
-/*\r
-http://nesdevwiki.org/wiki/SXROM\r
- CHR bank 0 (internal, $A000-$BFFF)\r
-4bit0\r
------\r
-PSSxC\r
-||| |\r
-||| +- Select 4 KB CHR RAM bank at PPU $0000 (ignored in 8 KB mode)\r
-|++--- Select 8 KB PRG RAM bank\r
-+----- Select 256 KB PRG ROM bank\r
-*/\r
-\r
-function cpu_ram_access(d, pagesize, banksize)\r
-{\r
-       local sxrom_page = [0, 2 << 2, 1 << 2, 3 << 2];\r
-       cpu_write(d, 0x8000, 0x80); //serial count reset\r
-       mmc1_write(d, 0x8000, 1 << 3);\r
-       mmc1_write(d, 0xe000, 0);\r
-       for(local i = 0; i < pagesize; i += 1){\r
-//             mmc1_write(d, 0xa000, (i & 0x03) << 2);\r
-               mmc1_write(d, 0xa000, sxrom_page[i]);\r
-               cpu_ramrw(d, 0x6000, banksize);\r
-       }\r
-       mmc1_write(d, 0xe000, 0xff);\r
-}\r
-\r
-/*\r
-SUROM SXROM CPU memory bank\r
-cpu address|rom address    |page|task\r
---SNROM area -- even ----------------\r
-$8000-$bfff|n * 0x4000|even 0x00|write 0x2aaa + write area\r
-$c000-$ffff|0x3c000-0x3ffff|fix |write 0x5555\r
---SNROM area -- odd -----------------\r
-$8000-$bfff|0x00000-0x03fff|fix |write 0x2aaa\r
-$c000-$ffff|n * 0x4000|odd  0x01|write 0x5555 + write area\r
---SUROM area -- even ----------------\r
-$8000-$bfff|n * 0x4000|even 0x20|write 0x2aaa + write area\r
-$c000-$ffff|0x7c000-0x7ffff|fix |write 0x5555\r
---SUROM area -- odd -----------------\r
-$8000-$bfff|0x40000-0x43fff|fix |write 0x2aaa\r
-$c000-$ffff|n * 0x4000|odd  0x21|write 0x5555 + write area\r
-*/\r
-function program_initalize(d, cpu_banksize, ppu_banksize)\r
-{\r
-       cpu_write(d, 0x8000, 0x80);\r
-       cpu_command(d, 0, 0x8000, cpu_banksize);\r
-       cpu_command(d, 0x2aaa, 0x8000, cpu_banksize);\r
-       cpu_command(d, 0x5555, 0xc000, cpu_banksize);\r
-       mmc1_write(d, 0x8000, 0x0c);\r
-       mmc1_write(d, 0xe000, 0x10); //cpubank #0\r
-       mmc1_write(d, 0xa000, 0); //ROM area 1st 2M\r
-}\r
-\r
-function cpu_transfer(d, start, end, cpu_banksize)\r
-{\r
-       local wram = 1 << 4; //W-RAM disable flag\r
-       for(local k = 0; k < 0x20; k += 0x10){\r
-               mmc1_write(d, 0xa000, k);\r
-               for(local i = 0; i < 0x10; i += 2){\r
-                       //even page\r
-                       mmc1_write(d, 0x8000, 0x0c);\r
-                       mmc1_write(d, 0xe000, i | 0 | wram);\r
-                       cpu_program(d, 0x8000, cpu_banksize);\r
-                       \r
-                       //odd page\r
-                       mmc1_write(d, 0x8000, 0x08);\r
-                       mmc1_write(d, 0xe000, i | 1 | wram);\r
-                       cpu_program(d, 0xc000, cpu_banksize);\r
-               }\r
-       }\r
-}\r
-\r
-function ppu_transfer(d, start, end, bank)\r
-{\r
-}\r
+/*
+SUROM:
+Dragon Quest IV, Dragon Warrior III, Dragon Warrior IV, Ninjara Hoi!
+SXROM:
+Best Play Pro Yakyuu Special, Final Fantasy I & II
+*/
+board <- {
+       mappernum = 1, vram_mirrorfind = false, ppu_ramfind = false,
+       cpu_rom = {
+               size_base = 4 * mega, size_max = 4 * mega,
+               banksize = 0x4000, 
+       }, 
+       cpu_ram = {
+               size_base = 0x2000, size_max = 0x8000,
+               banksize = 0x2000
+       },
+       ppu_rom = {
+               size_base = 0, size_max = 0,
+               banksize = 0x1000, 
+       }
+};
+
+dofile("mmc1.ai");
+
+function cpu_dump(d, pagesize, banksize)
+{
+       cpu_write(d, 0x8000, 0x80); //serial count reset
+       mmc1_write(d, 0x8000, 0x0c); //CPU/PPU bank configuration
+       for(local i = 0; i < pagesize; i += 0x10){
+               mmc1_write(d, 0xa000, (i & 0x10) | 1);
+               for(local j = 0; j < 0x10 - 1; j += 1){
+                       mmc1_write(d, 0xe000, j | 0x10);
+                       cpu_read(d, 0x8000, banksize);
+               }
+               cpu_read(d, 0xc000, banksize);
+       }
+}
+
+/*
+http://nesdevwiki.org/wiki/SXROM
+ CHR bank 0 (internal, $A000-$BFFF)
+4bit0
+-----
+PSSxC
+||| |
+||| +- Select 4 KB CHR RAM bank at PPU $0000 (ignored in 8 KB mode)
+|++--- Select 8 KB PRG RAM bank
++----- Select 256 KB PRG ROM bank
+*/
+
+function cpu_ram_access(d, pagesize, banksize)
+{
+       local sxrom_page = [0, 2 << 2, 1 << 2, 3 << 2];
+       cpu_write(d, 0x8000, 0x80); //serial count reset
+       mmc1_write(d, 0x8000, 1 << 3);
+       mmc1_write(d, 0xe000, 0);
+       for(local i = 0; i < pagesize; i += 1){
+//             mmc1_write(d, 0xa000, (i & 0x03) << 2);
+               mmc1_write(d, 0xa000, sxrom_page[i]);
+               cpu_ramrw(d, 0x6000, banksize);
+       }
+       mmc1_write(d, 0xe000, 0xff);
+}
+
+/*
+SUROM SXROM CPU memory bank
+cpu address|rom address    |page|task
+--SNROM area -- even ----------------
+$8000-$bfff|n * 0x4000|even 0x00|write 0x2aaa + write area
+$c000-$ffff|0x3c000-0x3ffff|fix |write 0x5555
+--SNROM area -- odd -----------------
+$8000-$bfff|0x00000-0x03fff|fix |write 0x2aaa
+$c000-$ffff|n * 0x4000|odd  0x01|write 0x5555 + write area
+--SUROM area -- even ----------------
+$8000-$bfff|n * 0x4000|even 0x20|write 0x2aaa + write area
+$c000-$ffff|0x7c000-0x7ffff|fix |write 0x5555
+--SUROM area -- odd -----------------
+$8000-$bfff|0x40000-0x43fff|fix |write 0x2aaa
+$c000-$ffff|n * 0x4000|odd  0x21|write 0x5555 + write area
+*/
+function program_initalize(d, cpu_banksize, ppu_banksize)
+{
+       cpu_write(d, 0x8000, 0x80);
+       cpu_command(d, 0, 0x8000, cpu_banksize);
+       cpu_command(d, 0x2aaa, 0x8000, cpu_banksize);
+       cpu_command(d, 0x5555, 0xc000, cpu_banksize);
+       mmc1_write(d, 0x8000, 0x0c);
+       mmc1_write(d, 0xe000, 0x10); //cpubank #0
+       mmc1_write(d, 0xa000, 0); //ROM area 1st 2M
+}
+
+function cpu_transfer(d, start, end, cpu_banksize)
+{
+       local wram = 1 << 4; //W-RAM disable flag
+       for(local k = 0; k < 0x20; k += 0x10){
+               mmc1_write(d, 0xa000, k);
+               for(local i = 0; i < 0x10; i += 2){
+                       //even page
+                       mmc1_write(d, 0x8000, 0x0c);
+                       mmc1_write(d, 0xe000, i | 0 | wram);
+                       cpu_program(d, 0x8000, cpu_banksize);
+                       
+                       //odd page
+                       mmc1_write(d, 0x8000, 0x08);
+                       mmc1_write(d, 0xe000, i | 1 | wram);
+                       cpu_program(d, 0xc000, cpu_banksize);
+               }
+       }
+}
+
+function ppu_transfer(d, start, end, bank)
+{
+}
index 3a347e2..468ffa2 100644 (file)
@@ -1,83 +1,83 @@
-/*\r
-HVC-2I Fire Emblem Gaiden\r
-command line option\r
-./anago d22 mmc4_fkrom.ae hvc_2i.nes b\r
-*/\r
-board <- {\r
-       mappernum = 10, vram_mirrorfind = false, ppu_ramfind = false,\r
-       cpu_rom = {\r
-               size_base = 1 * mega, size_max = 2 * mega,\r
-               banksize = 0x4000,\r
-       }, \r
-       cpu_ram = {\r
-               size_base = 0x2000, size_max = 0x2000,\r
-               banksize = 0x2000,\r
-       },\r
-       ppu_rom = {\r
-               size_base = 0x10000, size_max = 1 * mega,\r
-               banksize = 0x1000\r
-       }\r
-};\r
-\r
-/*\r
-[cpu memmorymap - read]\r
-$6000-$7fff SRAM (battery backuped, optional)\r
-$8000-$bfff program ROM bank #0\r
-$c000-$ffff program ROM bank #1 (fixed)\r
-\r
-[cpu memmorymap - write]\r
-$a000-$afff program ROM bank register #0\r
-$b000-$bfff charcter ROM bank register #0\r
-$c000-$cfff charcter ROM bank register #1\r
-$d000-$dfff charcter ROM bank register #2\r
-$d000-$dfff charcter ROM bank register #3\r
-\r
-[ppu memorymap - read]\r
-0x0000-0x0fff charcter ROM bank #A (#0 or #1)\r
-0x0fd0-0x0fdf charcter ROM bank register switch to #0\r
-0x0fe0-0x0fef charcter ROM bank register switch to #1\r
-0x1000-0x1fff charcter ROM bank #B (#2 or #3)\r
-0x1fd0-0x1fdf charcter ROM bank register switch to #2\r
-0x1fe0-0x1fef charcter ROM bank register switch to #3\r
-*/\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize - 1; i += 1){\r
-               cpu_write(d, 0xa000, i);\r
-               cpu_read(d, 0x8000, banksize);\r
-       }\r
-       cpu_read(d, 0xc000, banksize);\r
-}\r
-\r
-/*\r
-PPU の read 途中にバンクレジスタが切り替わるらしいので下記の処理で\r
-同じデータを得るようにする。\r
-PPU address      register\r
-0x0000-0x0fdf -> #0\r
-0x0fe0-0x0fff -> #1\r
-0x1000-0x1fdf -> #2\r
-0x1fe0-0x1fff -> #3\r
-\r
-ppu_read 前に #0 + #1 , #2 + #3 の内容は同じにしておく。\r
-*/\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize; i += 2){\r
-               ppu_read(d, 0x0fd0, 0);\r
-               cpu_write(d, 0xb000, i);\r
-               ppu_read(d, 0x0fe0, 0);\r
-               cpu_write(d, 0xc000, i);\r
-\r
-               ppu_read(d, 0x1fd0, 0);\r
-               cpu_write(d, 0xd000, i + 1);\r
-               ppu_read(d, 0x1fe0, 0);\r
-               cpu_write(d, 0xe000, i + 1);\r
-\r
-               ppu_read(d, 0, banksize * 2);\r
-       }\r
-}\r
-\r
-function cpu_ram_access(d, pagesize, banksize)\r
-{\r
-       cpu_ramrw(d, 0x6000, banksize);\r
-}\r
+/*
+HVC-2I Fire Emblem Gaiden
+command line option
+./anago d22 mmc4_fkrom.ae hvc_2i.nes b
+*/
+board <- {
+       mappernum = 10, vram_mirrorfind = false, ppu_ramfind = false,
+       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 backuped, optional)
+$8000-$bfff program ROM bank #0
+$c000-$ffff program ROM bank #1 (fixed)
+
+[cpu memmorymap - write]
+$a000-$afff program ROM bank register #0
+$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);
+}
index 2995d62..7ae38fa 100644 (file)
@@ -1,21 +1,21 @@
-board <- {\r
-       mappernum = 0,\r
-       cpu_rom = {\r
-               size_base = 0x8000, size_max = 0x8000\r
-               banksize = 0x8000\r
-       },\r
-       ppu_rom= {\r
-               size_base = 0x8000, size_max = 0x2000,\r
-               banksize = 0x2000\r
-       },\r
-       ppu_ramfind = false, vram_mirrorfind = true\r
-};\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       cpu_read(d, 0x8000, 0x4000);\r
-       cpu_read(d, 0xc000, 0x4000);\r
-}\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       ppu_read(d, 0, banksize);\r
-}\r
+board <- {
+       mappernum = 0,
+       cpu_rom = {
+               size_base = 0x8000, size_max = 0x8000
+               banksize = 0x8000
+       },
+       ppu_rom= {
+               size_base = 0x8000, size_max = 0x2000,
+               banksize = 0x2000
+       },
+       ppu_ramfind = false, vram_mirrorfind = true
+};
+function cpu_dump(d, pagesize, banksize)
+{
+       cpu_read(d, 0x8000, 0x4000);
+       cpu_read(d, 0xc000, 0x4000);
+}
+function ppu_dump(d, pagesize, banksize)
+{
+       ppu_read(d, 0, banksize);
+}
index 13b1e99..044542d 100644 (file)
@@ -1,63 +1,63 @@
-board <- {\r
-       mappernum = 68, ppu_ramfind = false, vram_mirrorfind = false,\r
-       cpu_rom = {\r
-               size_base = 1 * mega, size_max = 2 * mega,\r
-               banksize = 0x4000\r
-       },\r
-       cpu_ram = {\r
-               size_base = 0x2000, size_max = 0x2000, banksize = 0x2000\r
-       },\r
-       ppu_rom = {\r
-               size_base = 1 * mega, size_max = 2 * mega,\r
-               banksize = 0x0800\r
-       }\r
-};\r
-\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize - 1; i += 1){\r
-               cpu_write(d, 0xf000, i);\r
-               cpu_read(d, 0x8000, banksize);\r
-       }\r
-       cpu_read(d, 0xc000, banksize);\r
-}\r
-\r
-/*\r
-After Burner CRC32 list\r
-0x88f202f0 Program ROM\r
-0x10935d10 Charcter ROM #0\r
-0x0bc56f7a Charcter ROM #1\r
-0xa75cb06d Charcter ROM #0+#1\r
-0xf2ce3641 total\r
-*/\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       //dump uses 0x0000-0x1fff\r
-/*     for(local i = 0; i < pagesize; i += 4){\r
-               cpu_write(d, 0x8000, i);\r
-               cpu_write(d, 0x9000, i | 1);\r
-               cpu_write(d, 0xa000, i | 2);\r
-               cpu_write(d, 0xb000, i | 3);\r
-               ppu_read(d, 0, banksize * 4);\r
-       }\r
-       //dump uses 0x2000-0x27ff*/\r
-/*     cpu_write(d, 0xe000, 0x10);\r
-       for(local i = 0; i < pagesize*2; i += 2){\r
-               cpu_write(d, 0xc000, i);\r
-               cpu_write(d, 0xd000, i | 1);\r
-               ppu_read(d, 0x2000, banksize);\r
-       }*/\r
-       //dump uses 0x2000-0x23ff*/\r
-       cpu_write(d, 0xe000, 0x13);\r
-       for(local i = 0; i < pagesize*2; i += 1){\r
-               cpu_write(d, 0xd000, i);\r
-               ppu_read(d, 0x2000, 0x400);\r
-       }\r
-}\r
-\r
-function cpu_ram_access(d, pagesize, banksize)\r
-{\r
-       cpu_write(d, 0xf000, 0x10);\r
-       cpu_ramrw(d, 0x6000, banksize);\r
-       cpu_write(d, 0xf000, 0);\r
-}\r
+board <- {
+       mappernum = 68, ppu_ramfind = false, vram_mirrorfind = false,
+       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 = 1 * mega, size_max = 2 * mega,
+               banksize = 0x0800
+       }
+};
+
+function cpu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize - 1; i += 1){
+               cpu_write(d, 0xf000, i);
+               cpu_read(d, 0x8000, banksize);
+       }
+       cpu_read(d, 0xc000, banksize);
+}
+
+/*
+After Burner CRC32 list
+0x88f202f0 Program ROM
+0x10935d10 Charcter ROM #0
+0x0bc56f7a Charcter ROM #1
+0xa75cb06d Charcter ROM #0+#1
+0xf2ce3641 total
+*/
+function ppu_dump(d, pagesize, banksize)
+{
+       //dump uses 0x0000-0x1fff
+/*     for(local i = 0; i < pagesize; i += 4){
+               cpu_write(d, 0x8000, i);
+               cpu_write(d, 0x9000, i | 1);
+               cpu_write(d, 0xa000, i | 2);
+               cpu_write(d, 0xb000, i | 3);
+               ppu_read(d, 0, banksize * 4);
+       }
+       //dump uses 0x2000-0x27ff*/
+/*     cpu_write(d, 0xe000, 0x10);
+       for(local i = 0; i < pagesize*2; i += 2){
+               cpu_write(d, 0xc000, i);
+               cpu_write(d, 0xd000, i | 1);
+               ppu_read(d, 0x2000, banksize);
+       }*/
+       //dump uses 0x2000-0x23ff*/
+       cpu_write(d, 0xe000, 0x13);
+       for(local i = 0; i < pagesize*2; i += 1){
+               cpu_write(d, 0xd000, i);
+               ppu_read(d, 0x2000, 0x400);
+       }
+}
+
+function cpu_ram_access(d, pagesize, banksize)
+{
+       cpu_write(d, 0xf000, 0x10);
+       cpu_ramrw(d, 0x6000, banksize);
+       cpu_write(d, 0xf000, 0);
+}
index f7f7f80..a3cc6a2 100644 (file)
-board <- {\r
-       mappernum = 68, ppu_ramfind = false, vram_mirrorfind = false,\r
-       cpu_rom = {\r
-               size_base = 1 * mega, size_max = 2 * mega,\r
-               banksize = 0x4000\r
-       },\r
-       cpu_ram = {\r
-               size_base = 0x2000, size_max = 0x2000, banksize = 0x2000\r
-       },\r
-       ppu_rom = {\r
-               size_base = 1 * mega, size_max = 2 * mega,\r
-               banksize = 0x0800\r
-       }\r
-};\r
-\r
-/*\r
-SUNSOFT-4 manages, banksize:0x4000, pagesize:0x10\r
-[Nantetatte Baseball]\r
-page 0 to 7:\r
-uses subcartridge + SUNSOFT-6 controller\r
-page 8 to F:\r
-main PCB ROM data, data size is 0x20000\r
-\r
-[other games] \r
-ROM size is 0x20000, page 0 to 7 and page 8 to f are same data (mirrored).\r
-*/\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       local i;\r
-       if(pagesize == 8){\r
-               i = 8;\r
-               pagesize += 8;\r
-       }else{\r
-               i = 0;\r
-       }\r
-       //page 0 to 7 uses via Nanntettate! Baseball Subcartridge\r
-       for(; i < 8; i += 1){\r
-               cpu_write(d, 0xf000, i); //set page and enable SUNSOFT-6 (disable Workram)\r
-               cpu_write(d, 0x6000, 0); //active ROM\r
-               cpu_read(d, 0x8000, banksize);\r
-       }\r
-       //page 8 to 0xe uses normal ROM\r
-       for(; i < pagesize - 1; i += 1){\r
-               cpu_write(d, 0xf000, i);\r
-               cpu_read(d, 0x8000, banksize);\r
-       }\r
-       cpu_read(d, 0xc000, banksize);\r
-}\r
-\r
-/*\r
-SUNSOFT-4 can map Charcter ROM to nametable area.\r
-\r
-Charcter data (0x0000 to 0x1fff) banksize is 0x0800\r
-Nametable data (0x2000 to 0x2fff) banksize is 0x0400\r
-\r
-Charcter data\r
-A[17:11] = reg[6:0]\r
-A[10:0] = PPU A[10:0]\r
-\r
-Nametable data\r
-A[17] = 1\r
-A[16:10] = reg[6:0]\r
-A[9:0] = PPU A[9:0]\r
-\r
-After Burner CRC32 list\r
-0x88f202f0 Program ROM\r
-0x10935d10 Charcter ROM #0\r
-0x0bc56f7a Charcter ROM #1\r
-0xa75cb06d Charcter ROM #0+#1\r
-0xf2ce3641 total\r
-*/\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize; i += 4){\r
-               cpu_write(d, 0x8000, i);\r
-               cpu_write(d, 0x9000, i | 1);\r
-               cpu_write(d, 0xa000, i | 2);\r
-               cpu_write(d, 0xb000, i | 3);\r
-               ppu_read(d, 0, banksize * 4);\r
-       }\r
-}\r
-\r
-function cpu_ram_access(d, pagesize, banksize)\r
-{\r
-       cpu_write(d, 0xf000, 0x10); //enable Workram, disable SUNSOFT-6\r
-       cpu_ramrw(d, 0x6000, banksize);\r
-       cpu_write(d, 0xf000, 0);\r
-}\r
-\r
-/*\r
-SUNSOFT-4 has single switchable CPU bank. flash memory program address bit can uses A10:0 type.\r
-[CPU]\r
-$8000-$ffff -> programming area\r
-\r
-[PPU]\r
-0x0000-0x07ff -> 0x02800-0x02fff, uses 0x2aaa\r
-0x0800-0x0fff -> 0x05000-0x05800, uses 0x5555\r
-0x1000-0x17ff -> ID area (reserved)\r
-0x1800-0x1fff -> programming area\r
-*/\r
-function program_initalize(d, cpu_banksize, ppu_banksize)\r
-{\r
-       cpu_command(d, 0x0000, 0x8000, cpu_banksize);\r
-       cpu_command(d, 0x2aaa, 0x8000, cpu_banksize);\r
-       cpu_command(d, 0x5555, 0xc000, cpu_banksize);\r
-       cpu_write(d, 0xf000, 0); //disable Workram\r
-\r
-       ppu_command(d, 0x2aaa, 0x0000, ppu_banksize);\r
-       cpu_write(d, 0x8000, 0x05);\r
-       ppu_command(d, 0x5555, 0x0800, ppu_banksize);\r
-       cpu_write(d, 0x9000, 0x0a);\r
-       ppu_command(d, 0x0000, 0x1000, ppu_banksize);\r
-       cpu_write(d, 0xa000, 0);\r
-}\r
-\r
-function cpu_transfer(d, start, end, banksize)\r
-{\r
-       for(local i = start; i < end - 1; i += 1){\r
-               cpu_write(d, 0xf000, i);\r
-               cpu_program(d, 0x8000, banksize);\r
-       }\r
-       cpu_program(d, 0xc000, banksize)\r
-}\r
-\r
-function ppu_transfer(d, start, end, banksize)\r
-{\r
-       for(local i = start; i < end; i += 1){\r
-               cpu_write(d, 0xb000, i);\r
-               ppu_program(d, 0x1800, banksize);\r
-       }\r
-}\r
+board <- {
+       mappernum = 68, ppu_ramfind = false, vram_mirrorfind = false,
+       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 = 1 * mega, size_max = 2 * mega,
+               banksize = 0x0800
+       }
+};
+
+/*
+SUNSOFT-4 manages, banksize:0x4000, pagesize:0x10
+[Nantetatte Baseball]
+page 0 to 7:
+uses subcartridge + SUNSOFT-6 controller
+page 8 to F:
+main PCB ROM data, data size is 0x20000
+
+[other games] 
+ROM size is 0x20000, page 0 to 7 and page 8 to f are same data (mirrored).
+*/
+function cpu_dump(d, pagesize, banksize)
+{
+       local i;
+       if(pagesize == 8){
+               i = 8;
+               pagesize += 8;
+       }else{
+               i = 0;
+       }
+       //page 0 to 7 uses via Nanntettate! Baseball Subcartridge
+       for(; i < 8; i += 1){
+               cpu_write(d, 0xf000, i); //set page and enable SUNSOFT-6 (disable Workram)
+               cpu_write(d, 0x6000, 0); //active ROM
+               cpu_read(d, 0x8000, banksize);
+       }
+       //page 8 to 0xe uses normal ROM
+       for(; i < pagesize - 1; i += 1){
+               cpu_write(d, 0xf000, i);
+               cpu_read(d, 0x8000, banksize);
+       }
+       cpu_read(d, 0xc000, banksize);
+}
+
+/*
+SUNSOFT-4 can map Charcter ROM to nametable area.
+
+Charcter data (0x0000 to 0x1fff) banksize is 0x0800
+Nametable data (0x2000 to 0x2fff) banksize is 0x0400
+
+Charcter data
+A[17:11] = reg[6:0]
+A[10:0] = PPU A[10:0]
+
+Nametable data
+A[17] = 1
+A[16:10] = reg[6:0]
+A[9:0] = PPU A[9:0]
+
+After Burner CRC32 list
+0x88f202f0 Program ROM
+0x10935d10 Charcter ROM #0
+0x0bc56f7a Charcter ROM #1
+0xa75cb06d Charcter ROM #0+#1
+0xf2ce3641 total
+*/
+function ppu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize; i += 4){
+               cpu_write(d, 0x8000, i);
+               cpu_write(d, 0x9000, i | 1);
+               cpu_write(d, 0xa000, i | 2);
+               cpu_write(d, 0xb000, i | 3);
+               ppu_read(d, 0, banksize * 4);
+       }
+}
+
+function cpu_ram_access(d, pagesize, banksize)
+{
+       cpu_write(d, 0xf000, 0x10); //enable Workram, disable SUNSOFT-6
+       cpu_ramrw(d, 0x6000, banksize);
+       cpu_write(d, 0xf000, 0);
+}
+
+/*
+SUNSOFT-4 has single switchable CPU bank. flash memory program address bit can uses A10:0 type.
+[CPU]
+$8000-$ffff -> programming area
+
+[PPU]
+0x0000-0x07ff -> 0x02800-0x02fff, uses 0x2aaa
+0x0800-0x0fff -> 0x05000-0x05800, uses 0x5555
+0x1000-0x17ff -> ID area (reserved)
+0x1800-0x1fff -> programming area
+*/
+function program_initalize(d, cpu_banksize, ppu_banksize)
+{
+       cpu_command(d, 0x0000, 0x8000, cpu_banksize);
+       cpu_command(d, 0x2aaa, 0x8000, cpu_banksize);
+       cpu_command(d, 0x5555, 0xc000, cpu_banksize);
+       cpu_write(d, 0xf000, 0); //disable Workram
+
+       ppu_command(d, 0x2aaa, 0x0000, ppu_banksize);
+       cpu_write(d, 0x8000, 0x05);
+       ppu_command(d, 0x5555, 0x0800, ppu_banksize);
+       cpu_write(d, 0x9000, 0x0a);
+       ppu_command(d, 0x0000, 0x1000, ppu_banksize);
+       cpu_write(d, 0xa000, 0);
+}
+
+function cpu_transfer(d, start, end, banksize)
+{
+       for(local i = start; i < end - 1; i += 1){
+               cpu_write(d, 0xf000, i);
+               cpu_program(d, 0x8000, banksize);
+       }
+       cpu_program(d, 0xc000, banksize)
+}
+
+function ppu_transfer(d, start, end, banksize)
+{
+       for(local i = start; i < end; i += 1){
+               cpu_write(d, 0xb000, i);
+               ppu_program(d, 0x1800, banksize);
+       }
+}
index 113c6dd..703b305 100644 (file)
@@ -1,23 +1,23 @@
-board <- {\r
-       mappernum = 68, ppu_ramfind = false, vram_mirrorfind = false,\r
-       cpu_rom = {\r
-               size_base = 0x4000, size_max = 2 * mega,\r
-               banksize = 0x4000\r
-       },\r
-       cpu_ram = {\r
-               size_base = 0x2000, size_max = 0x2000, banksize = 0x2000\r
-       },\r
-       ppu_rom = {\r
-               size_base = 0, size_max = 0,\r
-               banksize = 0x0800\r
-       }\r
-};\r
-\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       cpu_write(d, 0xf000, 7);\r
-       cpu_write(d, 0x6000, 0x0d);\r
-//     cpu_write(d, 0x6000, 0xb0);\r
-       cpu_read(d, 0x8000, 0x2000);\r
-       cpu_read(d, 0xa000, 0x2000);\r
-}\r
+board <- {
+       mappernum = 68, ppu_ramfind = false, vram_mirrorfind = false,
+       cpu_rom = {
+               size_base = 0x4000, size_max = 2 * mega,
+               banksize = 0x4000
+       },
+       cpu_ram = {
+               size_base = 0x2000, size_max = 0x2000, banksize = 0x2000
+       },
+       ppu_rom = {
+               size_base = 0, size_max = 0,
+               banksize = 0x0800
+       }
+};
+
+function cpu_dump(d, pagesize, banksize)
+{
+       cpu_write(d, 0xf000, 7);
+       cpu_write(d, 0x6000, 0x0d);
+//     cpu_write(d, 0x6000, 0xb0);
+       cpu_read(d, 0x8000, 0x2000);
+       cpu_read(d, 0xa000, 0x2000);
+}
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);
+       }
+}
index b70aa6b..5c07924 100644 (file)
@@ -1,57 +1,57 @@
-/*\r
-Taito X1-005\r
-TFC-FM-5900 不動明王伝のみ Program ROM size は 2M\r
-\r
-Minelvaton Saga\r
-$7f00-$7f7f save RAM area\r
-$7f80-$7fff save RAM area, mirror\r
-*/\r
-board <- {\r
-       mappernum = 80, ppu_ramfind = false, vram_mirrorfind = false,\r
-       cpu_rom = {\r
-               size_base = 1 * mega, size_max = 2 * mega,\r
-               banksize = 0x2000\r
-       },\r
-       cpu_ram = {\r
-               size_base = 0x100 * 0x20, size_max = 0x100 * 0x20,\r
-               banksize = 0x2000\r
-       }\r
-       ppu_rom = {\r
-               size_base = 1 * mega, size_max = 1 * mega,\r
-               banksize = 0x2000 / 8 //0x0800*2 + 0x0400 * 4\r
-       }\r
-};\r
-\r
-function cpu_dump(d, pagesize, banksize)\r
-{\r
-       local i;\r
-       for(i = 0; i < pagesize - 2; i += 2){\r
-               cpu_write(d, 0x7efa, i);\r
-               cpu_write(d, 0x7efc, i | 1);\r
-               cpu_read(d, 0x8000, banksize * 2);\r
-       }\r
-       cpu_write(d, 0x7efe, i);\r
-       cpu_read(d, 0xc000, banksize * 2);\r
-}\r
-\r
-function ppu_dump(d, pagesize, banksize)\r
-{\r
-       for(local i = 0; i < pagesize; i += 8){\r
-               local ar = [i, i|2, i|4, i|5, i|6, i|7];\r
-               cpu_write(d, 0x7ef0, ar);\r
-               ppu_read(d, 0x0000, banksize * 8);\r
-       }\r
-}\r
-\r
-/*\r
-0x2000 byte のデータの offset 0x1f00-0x1f7f のみ有効\r
-*/\r
-function cpu_ram_access(d, pagesize, banksize)\r
-{\r
-       cpu_write(d, 0x7ef8, 0xa3);\r
-       for(local i = 0; i < 0x1f80; i += 0x80){\r
-               cpu_ramrw(d, 0x7f00, 0x0080);\r
-       }\r
-       cpu_ramrw(d, 0x6000, 0x0080); //offset 0x1f80-0x1fff を捨てる\r
-       cpu_write(d, 0x7ef8, 0x00);\r
-}\r
+/*
+Taito X1-005
+TFC-FM-5900 不動明王伝のみ Program ROM size は 2M
+
+Minelvaton Saga
+$7f00-$7f7f save RAM area
+$7f80-$7fff save RAM area, mirror
+*/
+board <- {
+       mappernum = 80, ppu_ramfind = false, vram_mirrorfind = false,
+       cpu_rom = {
+               size_base = 1 * mega, size_max = 2 * mega,
+               banksize = 0x2000
+       },
+       cpu_ram = {
+               size_base = 0x100 * 0x20, size_max = 0x100 * 0x20,
+               banksize = 0x2000
+       }
+       ppu_rom = {
+               size_base = 1 * mega, size_max = 1 * mega,
+               banksize = 0x2000 / 8 //0x0800*2 + 0x0400 * 4
+       }
+};
+
+function cpu_dump(d, pagesize, banksize)
+{
+       local i;
+       for(i = 0; i < pagesize - 2; i += 2){
+               cpu_write(d, 0x7efa, i);
+               cpu_write(d, 0x7efc, i | 1);
+               cpu_read(d, 0x8000, banksize * 2);
+       }
+       cpu_write(d, 0x7efe, i);
+       cpu_read(d, 0xc000, banksize * 2);
+}
+
+function ppu_dump(d, pagesize, banksize)
+{
+       for(local i = 0; i < pagesize; i += 8){
+               local ar = [i, i|2, i|4, i|5, i|6, i|7];
+               cpu_write(d, 0x7ef0, ar);
+               ppu_read(d, 0x0000, banksize * 8);
+       }
+}
+
+/*
+0x2000 byte のデータの offset 0x1f00-0x1f7f のみ有効
+*/
+function cpu_ram_access(d, pagesize, banksize)
+{
+       cpu_write(d, 0x7ef8, 0xa3);
+       for(local i = 0; i < 0x1f80; i += 0x80){
+               cpu_ramrw(d, 0x7f00, 0x0080);
+       }
+       cpu_ramrw(d, 0x6000, 0x0080); //offset 0x1f80-0x1fff を捨てる
+       cpu_write(d, 0x7ef8, 0x00);
+}