Example #1
0
        public void SaveState()
        {
            // We stop pause the simulation
            Pause();

            SaveStateFileFormat saveState = new SaveStateFileFormat();

            // We ge the states
            saveState.MemoryState    = _memory.GetState();
            saveState.DisplayState   = _display.GetState();
            saveState.InterruptState = _interruptController.GetState();
            saveState.CPUState       = _cpu.GetState();
            saveState.APUState       = _apu.GetState();

            FileStream saveStateStream;
            string     filename = "save_state.stt";

            if (!File.Exists(filename))
            {
                saveStateStream = File.Create(filename);
            }
            else
            {
                try
                {
                    saveStateStream = File.Open(filename, FileMode.Truncate);
                }
                catch (IOException)
                {
                    Run();
                    return;
                }
            }

            // We compress the state
            using (GZipStream compressStream = new GZipStream(saveStateStream, CompressionMode.Compress))
            {
                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Serialize(compressStream, saveState);
            }
            saveStateStream.Close();

            Run();
        }