Exemplo n.º 1
0
        private void StateHistoryIntegrityCheckMenuItem_Click(object sender, EventArgs e)
        {
            if (!Emulator.DeterministicEmulation)
            {
                if (MessageBox.Show("The emulator is not deterministic. It might fail even if the difference isn't enough to cause a desync.\nContinue with check?", "Not Deterministic", MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }
            }

            GoToFrame(0);
            int lastState = 0;
            int goToFrame = CurrentTasMovie.TasStateManager.LastEmulatedFrame;

            do
            {
                Mainform.FrameAdvance();

                if (CurrentTasMovie.TasStateManager.HasState(Emulator.Frame))
                {
                    byte[] state     = (byte[])StatableEmulator.SaveStateBinary().Clone();                 // Why is this cloning it?
                    byte[] greenzone = CurrentTasMovie.TasStateManager[Emulator.Frame].Value;

                    if (!state.SequenceEqual(greenzone))
                    {
                        MessageBox.Show("Bad data between frames " + lastState + " and " + Emulator.Frame);
                        return;
                    }

                    lastState = Emulator.Frame;
                }
            }while (Emulator.Frame < goToFrame);

            MessageBox.Show("Integrity Check passed");
        }
Exemplo n.º 2
0
        public void LoadState(KeyValuePair <int, Stream> state)
        {
            StatableEmulator.LoadStateBinary(new BinaryReader(state.Value));

            if (state.Key == 0 && CurrentTasMovie.StartsFromSavestate)
            {
                Emulator.ResetCounters();
            }

            UpdateOtherTools();
        }
Exemplo n.º 3
0
        private void StartNewProjectFromNowMenuItem_Click(object sender, EventArgs e)
        {
            if (AskSaveChanges())
            {
                int index = Emulator.Frame;

                TasMovie newProject = CurrentTasMovie.ConvertToSavestateAnchoredMovie(
                    index, (byte[])StatableEmulator.SaveStateBinary().Clone());

                GlobalWin.MainForm.PauseEmulator();
                LoadFile(new FileInfo(newProject.Filename), true);
            }
        }
Exemplo n.º 4
0
        public void LoadState(KeyValuePair <int, byte[]> state)
        {
            StatableEmulator.LoadStateBinary(new BinaryReader(new MemoryStream(state.Value.ToArray())));

            if (state.Key == 0 && CurrentTasMovie.StartsFromSavestate)
            {
                Emulator.ResetCounters();
            }

            _hackyDontUpdate = true;
            GlobalWin.Tools.UpdateBefore();
            GlobalWin.Tools.UpdateAfter();
            _hackyDontUpdate = false;
        }
Exemplo n.º 5
0
        public void LoadState(KeyValuePair <int, byte[]> state)
        {
            using var ms = new MemoryStream(state.Value);
            using var br = new BinaryReader(ms);
            StatableEmulator.LoadStateBinary(br);

            if (state.Key == 0 && CurrentTasMovie.StartsFromSavestate)
            {
                Emulator.ResetCounters();
            }

            _hackyDontUpdate = true;
            Tools.UpdateBefore();
            Tools.UpdateAfter();
            _hackyDontUpdate = false;
        }
Exemplo n.º 6
0
        private void StartNewProjectFromNowMenuItem_Click(object sender, EventArgs e)
        {
            if (TasView.SelectedRows.Count() == 1 &&
                !CurrentTasMovie.StartsFromSavestate)
            {
                if (AskSaveChanges())
                {
                    int index = TasView.SelectedRows.First();
                    GoToFrame(index);

                    TasMovie newProject = CurrentTasMovie.ConvertToSavestateAnchoredMovie(
                        index, (byte[])StatableEmulator.SaveStateBinary().Clone());

                    GlobalWin.MainForm.PauseEmulator();
                    LoadFile(new FileInfo(newProject.Filename));
                }
            }
        }