C64: Use write protection on G64 images (which are often copy protected), and disable it on D64 images.
This commit is contained in:
parent
4e1892d094
commit
7fbccb7a46
|
@ -58,7 +58,7 @@
|
||||||
case 0x0:
|
case 0x0:
|
||||||
return _port.ReadPrb(_prb, _ddrb);
|
return _port.ReadPrb(_prb, _ddrb);
|
||||||
case 0x1:
|
case 0x1:
|
||||||
return _port.ReadPra(_pra, _ddra);
|
return _port.ReadExternalPra();
|
||||||
case 0x2:
|
case 0x2:
|
||||||
return _ddrb;
|
return _ddrb;
|
||||||
case 0x3:
|
case 0x3:
|
||||||
|
@ -86,7 +86,7 @@
|
||||||
case 0xE:
|
case 0xE:
|
||||||
return _ier | 0x80;
|
return _ier | 0x80;
|
||||||
case 0xF:
|
case 0xF:
|
||||||
return _port.ReadPra(_pra, _ddra);
|
return _port.ReadExternalPra();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0xFF;
|
return 0xFF;
|
||||||
|
@ -238,7 +238,7 @@
|
||||||
|
|
||||||
public int EffectivePrB => _prb | ~_ddrb;
|
public int EffectivePrB => _prb | ~_ddrb;
|
||||||
|
|
||||||
public int ActualPrA => _acrPaLatchEnable ? _paLatch : _port.ReadPra(_pra, _ddra);
|
public int ActualPrA => _acrPaLatchEnable ? _paLatch : _port.ReadExternalPra();
|
||||||
|
|
||||||
public int ActualPrB => _acrPbLatchEnable ? _pbLatch : _port.ReadPrb(_prb, _ddrb);
|
public int ActualPrB => _acrPbLatchEnable ? _pbLatch : _port.ReadPrb(_prb, _ddrb);
|
||||||
}
|
}
|
||||||
|
|
|
@ -248,9 +248,9 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.Media
|
||||||
trackDensities.Add(DensityTable[i]);
|
trackDensities.Add(DensityTable[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Disk(trackDatas, trackNumbers, trackDensities, 84);
|
return new Disk(trackDatas, trackNumbers, trackDensities, 84) {WriteProtected = false};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,10 +57,10 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.Media
|
||||||
throw new Exception("Byte-level speeds are not yet supported in the G64 loader.");
|
throw new Exception("Byte-level speeds are not yet supported in the G64 loader.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Disk(trackDatas, trackNumbers, trackDensities, 84);
|
return new Disk(trackDatas, trackNumbers, trackDensities, 84) {WriteProtected = true};
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Disk(84);
|
return new Disk(84) {WriteProtected = false};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.Serial
|
||||||
}
|
}
|
||||||
_diskOutputBits >>= 1;
|
_diskOutputBits >>= 1;
|
||||||
|
|
||||||
if (_diskWriteEnabled)
|
if (_diskWriteEnabled && !_diskWriteProtected)
|
||||||
_countsBeforeRandomTransition = 0;
|
_countsBeforeRandomTransition = 0;
|
||||||
|
|
||||||
if ((_diskBits & 1) != 0)
|
if ((_diskBits & 1) != 0)
|
||||||
|
|
|
@ -214,6 +214,11 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.Serial
|
||||||
{
|
{
|
||||||
_trackImageData = _disk.GetDataForTrack(_trackNumber);
|
_trackImageData = _disk.GetDataForTrack(_trackNumber);
|
||||||
_diskBits = _trackImageData[_diskByteOffset] >> (Disk.FluxBitsPerEntry - _diskBitsLeft);
|
_diskBits = _trackImageData[_diskByteOffset] >> (Disk.FluxBitsPerEntry - _diskBitsLeft);
|
||||||
|
_diskWriteProtected = _disk.WriteProtected;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_diskWriteProtected = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue