/*\r
IREM G-101 based cartridge\r
\r
-$8000-$9fff bank#0, switchable or last - 2\r
+$8000-$9fff bank#0, switchable or last - 1\r
$a000-$bfff bank#1, switchable\r
-$c000-$dfff bank#2, last - 2 or 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 -2 and VRAM A10 = high\r
+$9000-$9fff write register are fixed to bank #2 = last -1\r
*/\r
\r
board <- {\r
\r
function cpu_dump(d, pagesize, banksize)\r
{\r
- if(1){\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
}\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