--- /dev/null
+/*\r
+IREM G-101 based cartridge\r
+\r
+$8000-$9fff bank#0, switchable or last - 2\r
+$a000-$bfff bank#1, switchable\r
+$c000-$dfff bank#2, last - 2 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
+*/\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(1){\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
/*\r
-HVC-2I Fireemblem Gaiden\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 = true,\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
/*\r
[cpu memmorymap - read]\r
-$6000-$7fff SRAM (battery backup, optional)\r
-$8000-$bfff program ROM bank #1\r
-$c000-$ffff program ROM bank #2 (fixed)\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 #1\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
size_base = 2 * mega, size_max = 4 * mega,\r
banksize = 0x2000\r
}, \r
- cpu_rom = {\r
+ cpu_ram = {\r
size_base = 0x0800, size_max = 0x0800,\r
banksize = 0x2000\r
}, \r
}
function ppu_dump(d, pagesize, banksize)
{
+ local security = 0; //0,1,2,3 or don't care
+ security = security << 4;
for(local i = 0; i < pagesize; i++){
- cpu_write(d, 0x8000, 0xf0 | i);
+ cpu_write(d, 0x8000, security | i);
ppu_read(d, 0, banksize);
}
}
--- /dev/null
+#ifndef _SCRIPT_WORKRAM_H_
+#define _SCRIPT_WORKRAM_H_
+struct workram_config{
+ const wgChar *script, *target;
+ const struct reader_handle *handle;
+ const struct reader_control *control;
+ struct textcontrol log;
+ void (*except)(const wgChar *str);
+
+ const struct reader_memory_access *access;
+ struct memory memory;
+ long read_count, increase;
+ struct gauge gauge;
+};
+#endif
l->append(l->object, wgT("address range must be 0x%06x to 0x%06x"), (int) range_address->start, (int) range_address->end);
return sq_throwerror(v, wgT("script logical error"));;
}
+#ifdef DEBUG
+ if(address >= 0x6000 && (address + length) < 0x8000){
+ static int e = 0;
+ if(e == 0){
+ l->append(l->object, wgT("warning: 0x6000-0x7fff dump as ROM"));
+ }
+ e++;
+ }
+#endif
t->read_count_byte += length;
return 0;
}