]> www.vanbest.org Git - sasc-ng.git/commitdiff
improve runEmu test tool
authorleslie <unknown>
Thu, 7 Feb 2008 09:38:02 +0000 (10:38 +0100)
committerleslie <unknown>
Thu, 7 Feb 2008 09:38:02 +0000 (10:38 +0100)
systems/nagra/nagra2-0101.c
systems/nagra/nagra2-0501.c
testing/testN2RunEmu.c

index 1bb8431b083972dfbd7bb3010c076d65c080bcfa..aa4b14e705c9dfb61d162429bbc1bd6c9fbb9b4a 100644 (file)
@@ -562,7 +562,7 @@ public:
   virtual bool PostProcAU(int id, unsigned char *data);
   virtual int ProcessBx(unsigned char *data, int len, int pos);
   virtual int ProcessEx(unsigned char *data, int len, int pos);
-  int RunEmu(unsigned char *data, int len, unsigned short load, unsigned short run, unsigned short stop, unsigned short fetch, int fetch_len);
+  virtual int RunEmu(unsigned char *data, int len, unsigned short load, unsigned short run, unsigned short stop, unsigned short fetch, int fetch_len);
   };
 
 static cN2ProvLinkReg<cN2Prov0101,0x0101,(N2FLAG_MECM|N2FLAG_POSTAU|N2FLAG_Bx|N2FLAG_Ex)> staticPL0101;
@@ -1001,7 +1001,6 @@ int cN2Prov0101::RunEmu(unsigned char *data, int len, unsigned short load, unsig
         return 1;
         }
       else if(!RomCallbacks()) break;
-      break;
       }
     }
   return -1;
index cc7b557365dd612b98312449fcf96eae52f570e7..9faab7225a3a83fa83dea998b43d137cfb7df3d4 100644 (file)
@@ -79,6 +79,7 @@ protected:
 public:
   cN2Prov0501(int Id, int Flags);
   virtual int ProcessBx(unsigned char *data, int len, int pos);
+  virtual int RunEmu(unsigned char *data, int len, unsigned short load, unsigned short run, unsigned short stop, unsigned short fetch, int fetch_len);
   };
 
 static cN2ProvLinkReg<cN2Prov0501,0x0501,(N2FLAG_MECM|N2FLAG_INV|N2FLAG_Bx)> staticPL0501;
@@ -244,6 +245,27 @@ int cN2Prov0501::ProcessBx(unsigned char *data, int len, int pos)
   return -1;
 }
 
+int cN2Prov0501::RunEmu(unsigned char *data, int len, unsigned short load, unsigned short run, unsigned short stop, unsigned short fetch, int fetch_len)
+{
+  if(Init(id,120)) {
+    SetSp(0x0FFF,0x0EF8);
+    SetMem(load,data,len);
+    SetPc(run);
+    ClearBreakpoints();
+    AddBreakpoint(stop);
+    if(stop!=0x0000) AddBreakpoint(0x0000);
+    AddRomCallbacks();
+    while(!Run(100000)) {
+      if(GetPc()==0x0000 || GetPc()==stop) {
+        GetMem(fetch,data,fetch_len);
+        return 1;
+        }
+      else if(!RomCallbacks()) break;
+      }
+    }
+  return -1;
+}
+
 void cN2Prov0501::TimerHandler(unsigned int num)
 {
   if(hwMapper) hwMapper->AddCycles(num);
index 8fbc70da4e5e19325f23e61a55dc4673b5c9c9b2..d745fa67c25dc8494c3aa36d74eda13c54e6e11f 100644 (file)
 int main(int argc, char *argv[])
 {
   if(argc<4) {
-    printf("usage: %s <plugin-dir> <id> <cmd>\n",argv[0]);
+    printf("usage: %s <plugin-dir> <id> <cmd> [LOG]\n",argv[0]);
     return 1;
     }
 
   InitAll(argv[1]);
   LogAll();
-  cLogging::SetModuleOption(LCLASS(L_SYS,L_SYS_DISASM),false);
+  if(argc<=4 || strcasecmp(argv[4],"LOG"))
+    cLogging::SetModuleOption(LCLASS(L_SYS,L_SYS_DISASM),false);
   unsigned char data[1024];
   unsigned int len = 0;
   char *p = argv[3];
@@ -43,7 +44,7 @@ int main(int argc, char *argv[])
     }
   int id=strtol(argv[2],0,0);
   cN2Prov *emmP=cN2Providers::GetProv(id,N2FLAG_NONE);
-  HEXDUMP(0, data, len, "Input");
-  if(emmP->RunEmu(data, len, 0x90, 0x90, 0x00, 0x00, 0x300)>=0)
-    HEXDUMP(0, data, 0x300, "Output");
+  HEXDUMP(L_SYS_EMU,data,len,"Input");
+  if(emmP->RunEmu(data,len,0x90,0x90,0x00,0x00,0x300)>=0)
+    HEXDUMP(L_SYS_EMU,data,0x300,"Output");
 }