OSDN Git Service

vram mirroring が正しくとれないバグを修正
[unagi/old-svn-converted.git] / client / trunk / anago / anago_cui.c
index 46ac003..a09724a 100644 (file)
@@ -10,6 +10,7 @@
 #include "romimage.h"
 #include "reader_master.h"
 #include "reader_kazzo.h"
+#include "reader_dummy.h"
 #include "script_dump.h"
 #include "flash_device.h"
 #include "script_program.h"
@@ -88,12 +89,8 @@ static void program(int c, wgChar **v, const struct reader_driver *r)
        config.cpu.access = &r->cpu;
        config.ppu.access = &r->ppu;
        config.compare = false;
-       config.testrun = false;
        switch(v[1][0]){
-       case 'a':
-               config.testrun = true;
-               break;
-       case 'F':
+       case wgT('F'): case wgT('X'):
                config.compare = true;
                break;
        }
@@ -148,15 +145,28 @@ static void dump(int c, wgChar **v, const struct reader_driver *r)
                PUTS(wgT("argument error"));
                return;
        }
-       config.cpu.increase = 1;
+       config.cpu.increase = INCREASE_AUTO;
        config.ppu.increase = 1;
        config.progress = true;
        switch(v[1][0]){
+       case wgT('d'): case wgT('z'):
+               config.mode = MODE_ROM_DUMP;
+               break;
        case wgT('D'):
+               config.mode = MODE_ROM_DUMP;
                config.progress = false;
                break;
+       case wgT('r'): case wgT('R'):
+               config.mode = MODE_RAM_READ;
+               break;
+       case wgT('w'): case wgT('W'):
+               config.mode = MODE_RAM_WRITE;
+               break;
        }
        switch(v[1][1]){
+       case wgT('1'):
+               config.cpu.increase = 1;
+               break;
        case wgT('2'):
                config.cpu.increase = 2;
                break;
@@ -179,7 +189,11 @@ static void dump(int c, wgChar **v, const struct reader_driver *r)
        config.control = &r->control;
        config.cpu.access = &r->cpu;
        config.ppu.access = &r->ppu;
-       cui_gauge_new(&config.cpu.gauge, wgT("Program  ROM"), 2, -2);
+       if(config.mode == MODE_ROM_DUMP){
+               cui_gauge_new(&config.cpu.gauge, wgT("Program  ROM"), 2, -2);
+       }else{
+               cui_gauge_new(&config.cpu.gauge, wgT("Work RAM"), 2, -2);
+       }
        cui_gauge_new(&config.ppu.gauge, wgT("Charcter ROM"), 1, -1);
        config.except = except;
        config.mappernum = -1;
@@ -192,7 +206,11 @@ static void dump(int c, wgChar **v, const struct reader_driver *r)
        }
        config.battery = false;
        log_set(&config.log);
-       script_dump_execute(&config);
+       if(config.mode == MODE_ROM_DUMP){
+               script_dump_execute(&config);
+       }else{
+               script_workram_execute(&config);
+       }
        cui_gauge_destory(&config.cpu.gauge);
        cui_gauge_destory(&config.ppu.gauge);
 }
@@ -201,12 +219,18 @@ static void usage(const wgChar *v)
 {
        PUTS(wgT("famicom bus simluator 'anago'"));
        PRINTF(wgT("%s [mode] [script] [target] ....\n"), v);
+       PUTS(wgT("d - ROM dump with kazzo"));
+       PUTS(wgT("fF- flash program with kazzo"));
+       PUTS(wgT("r - workram read with kazzo"));
+       PUTS(wgT("w - workram write with kazzo"));
+       if(DEBUG == 1){
+               PUTS(wgT("z - ROM dump for test"));
+               PUTS(wgT("xX- flash program for test"));
+               PUTS(wgT("R - workram read for test"));
+               PUTS(wgT("W - workram write for test"));
+       }
 }
 
-#if DEBUG==1
-extern const struct reader_driver DRIVER_DUMMY;
-#endif
-
 #ifdef WIN32
 int main(int c, char **vv)
 #else
@@ -227,18 +251,15 @@ int anago_cui(int c, wgChar **v)
                }
 #endif
                switch(v[1][0]){
-#if DEBUG==1
-               case wgT('x'):
-                       r = &DRIVER_DUMMY;
-#endif
+               case wgT('x'): case wgT('X'):
+                       r = &DRIVER_DUMMY; //though down
                case wgT('f'): case wgT('F'):
                        program(c, v, r);
                        break;
-#if DEBUG==1
-               case wgT('z'): 
-                       r = &DRIVER_DUMMY;
-#endif
+               case wgT('z'): case wgT('R'): case wgT('W'): 
+                       r = &DRIVER_DUMMY; //though down
                case wgT('d'): case wgT('D'):
+               case wgT('r'): case wgT('w'):
                        dump(c,v, r);
                        break;
                default: