public void BizFrameAdvance(IEnumerable <string> buttons) { Lagged = true; DriveLight = false; Keyboard.SetKeys(buttons); //frame begins at vsync.. beginning of vblank while (Video.IsVBlank) { /* * var sb = new System.Text.StringBuilder(); * sb.AppendFormat("{0} ", Cpu); * for (int i = 0; i < 256; i++) * sb.AppendFormat("{0:x2} ", Memory.Read(i)); * tw.WriteLine(sb.ToString());*/ Events.HandleEvents(Cpu.Execute()); } //now, while not vblank, we're in a frame while (!Video.IsVBlank) { /* * var sb = new System.Text.StringBuilder(); * sb.AppendFormat("{0} ", Cpu); * for (int i = 0; i < 256; i++) * sb.AppendFormat("{0:x2} ", Memory.Read(i)); * tw.WriteLine(sb.ToString()); */ Events.HandleEvents(Cpu.Execute()); } }
private void Run() // machine thread { Initialize(); Reset(); LoadState(); _debugService.WriteMessage("Running machine"); State = MachineState.Running; do { do { Events.HandleEvents(Cpu.Execute()); }while (State == MachineState.Running); if (State == MachineState.Pausing) { _pauseEvent.Set(); _unpauseEvent.WaitOne(); } }while (State != MachineState.Stopping); SaveState(); Uninitialize(); }
public void BizFrameAdvance() { Services.GetService <KeyboardService>().Update(); Services.GetService <GamePortService>().Update(); //frame begins at vsync.. beginning of vblank while (Video.IsVBlank) { Events.HandleEvents(Cpu.Execute()); } //now, while not vblank, we're in a frame while (!Video.IsVBlank) { Events.HandleEvents(Cpu.Execute()); } }