示例#1
0
 private void Run(object sender, RoutedEventArgs e)
 {
     OpenFileDialog dialog = new OpenFileDialog();
     dialog.DefaultExt = ".gb";
     dialog.Filter = "Gameboy ROM (.gb)|*.gb";
     bool? res = dialog.ShowDialog();
     if (res == true)
     {
         emu = new GBLib();
         gbdisplay.GBemu = emu;
         emu.onDisplayUpdate += new OnDisplayUpdate(this.gbdisplay.OnDisplayUpdate);
         emu.LoadRom(dialog.FileName);
         emu.Start();
         DispatcherTimer t = new DispatcherTimer();
         Int64 ticks_per_mhz = 10;
         t.Interval = new TimeSpan(ticks_per_mhz);
         t.Tick += HandleTick;
         t.Start();
     }
 }
示例#2
0
 public static void Run(String filename)
 {
     fn = filename;
     sys = new GBLib();
     //sys.onSerialDataReady += new OnSerialDataReady(CheckResult);
     sys.LoadRom(filename);
     sys.Start();
     int test_status = sys.Inspect((int)GBLocations.MEM, (ushort)0xA000);
     int pc = sys.Inspect((int)GBLocations.PC, 0);
     //while (test_status == 0x80 || sys.Inspect((int)GBLocations.PC, 0) < 0x200)
     while(true)
     {
         //Debug.WriteLine("PC: {0}", sys.Inspect((int)GBLocations.PC, 0));
         sys.Step();
         test_status = sys.Inspect((int)GBLocations.MEM, (ushort)0xA000);
         pc = sys.Inspect((int)GBLocations.PC, 0);
         Debug.WriteLine("PC: 0x{0:X}", pc);
         Debug.WriteLine("Test Status: 0x{0:X}", test_status);
     }
     String result = "";
     int character = '\0';
     for(ushort start_addr = 0xA004; character != '\0'; ++start_addr)
     {
         result += (char)character;
     }
     result += '\0';
     Debug.WriteLine(result);
     if (test_status != 0x00)
     {
         Debug.WriteLine("Test " + fn + " Failed:");
         Assert.Fail();
     }
     else
     {
         Debug.WriteLine("Test " + fn + " Passed:");
     }
 }