Exemple #1
0
        public override void SyncState(Serializer ser)
        {
            ser.BeginSection("Disk");
            if (_disk != null)
            {
                _disk.SyncState(ser);
            }
            ser.EndSection();

            ser.Sync("BitHistory", ref _bitHistory);
            ser.Sync("BitsRemainingInLatchedByte", ref _bitsRemainingInLatchedByte);
            ser.Sync("Sync", ref _sync);
            ser.Sync("ByteReady", ref _byteReady);
            ser.Sync("DriveCpuClockNumerator", ref _driveCpuClockNum);
            ser.Sync("TrackNumber", ref _trackNumber);
            ser.Sync("MotorEnabled", ref _motorEnabled);
            ser.Sync("LedEnabled", ref _ledEnabled);
            ser.Sync("MotorStep", ref _motorStep);

            ser.BeginSection("Disk6502");
            _cpu.SyncState(ser);
            ser.EndSection();

            ser.Sync("RAM", ref _ram, useNull: false);

            ser.BeginSection("VIA0");
            Via0.SyncState(ser);
            ser.EndSection();

            ser.BeginSection("VIA1");
            Via1.SyncState(ser);
            ser.EndSection();

            ser.Sync("SystemCpuClockNumerator", ref _cpuClockNum);
            ser.Sync("SystemDriveCpuRatioDifference", ref _ratioDifference);
            ser.Sync("DriveLightOffTime", ref _driveLightOffTime);
            // feos: drop 400KB of ROM data from savestates
            //ser.Sync("TrackImageData", ref _trackImageData, useNull: false);

            ser.Sync("DiskDensityCounter", ref _diskDensityCounter);
            ser.Sync("DiskSupplementaryCounter", ref _diskSupplementaryCounter);
            ser.Sync("DiskFluxReversalDetected", ref _diskFluxReversalDetected);
            ser.Sync("DiskBitsRemainingInDataEntry", ref _diskBitsLeft);
            ser.Sync("DiskDataEntryIndex", ref _diskByteOffset);
            ser.Sync("DiskDataEntry", ref _diskBits);
            ser.Sync("DiskCurrentCycle", ref _diskCycle);
            ser.Sync("DiskDensityConfig", ref _diskDensity);
            ser.Sync("PreviousCA1", ref _previousCa1);
            ser.Sync("CountsBeforeRandomTransition", ref _countsBeforeRandomTransition);
            ser.Sync("CurrentRNG", ref _rngCurrent);
            ser.Sync("Clocks", ref _clocks);
            ser.Sync("CpuClocks", ref _cpuClocks);
            ser.Sync("OverflowFlagDelayShiftRegister", ref _overflowFlagDelaySr);
            ser.Sync("DiskWriteBitsRemaining", ref _diskWriteBitsRemaining);
            ser.Sync("DiskWriteEnabled", ref _diskWriteEnabled);
            ser.Sync("DiskWriteLatch", ref _diskWriteLatch);
            ser.Sync("DiskOutputBits", ref _diskOutputBits);
            ser.Sync("DiskWriteProtected", ref _diskWriteProtected);
        }