Exemple #1
0
        public void LoadState()
        {
            Pause();

            string filename = "save_state.stt";

            if (File.Exists(filename))
            {
                FileStream loadStateStream;
                try
                {
                    loadStateStream = File.Open(filename, FileMode.Open);
                }
                catch (IOException)
                {
                    Run();
                    return;
                }

                SaveStateFileFormat loadedState;
                using (GZipStream decompressStream = new GZipStream(loadStateStream, CompressionMode.Decompress))
                {
                    BinaryFormatter formatter = new BinaryFormatter();
                    loadedState = formatter.Deserialize(decompressStream) as SaveStateFileFormat;
                }
                loadStateStream.Close();

                _memory.SetState(loadedState.MemoryState);
                _display.SetState(loadedState.DisplayState);
                _interruptController.SetState(loadedState.InterruptState);
                _cpu.SetState(loadedState.CPUState);
                _apu.SetState(loadedState.APUState);
            }

            Run();
        }