diff --git a/Library/CustomDictionary.xml b/Library/CustomDictionary.xml index de0462e..2a83b12 100644 --- a/Library/CustomDictionary.xml +++ b/Library/CustomDictionary.xml @@ -5,4 +5,4 @@ Alloc - \ No newline at end of file + diff --git a/Virtu/CustomDictionary.xml b/Virtu/CustomDictionary.xml index 2691c8d..eba5ec1 100644 --- a/Virtu/CustomDictionary.xml +++ b/Virtu/CustomDictionary.xml @@ -21,4 +21,4 @@ UpRight - \ No newline at end of file + diff --git a/Virtu/Memory.cs b/Virtu/Memory.cs index 9e78321..8417e6a 100644 --- a/Virtu/Memory.cs +++ b/Virtu/Memory.cs @@ -356,7 +356,7 @@ private int ReadIoRegionC3C3(int address) { SetRomC8CF(true); // $C3XX sets IntC8Rom; inhibits I/O Strobe' [5-28, 7-21] } - return _noSlotClock.Read(address, (IsRomC1CFInternal || !IsRomC3C3External) ? _romInternalRegionC1CF[address - 0xC100] : Machine.Slot3.ReadIoRegionC1C7(address)); + return (IsRomC1CFInternal || !IsRomC3C3External) ? _noSlotClock.Read(address, _romInternalRegionC1CF[address - 0xC100]) : Machine.Slot3.ReadIoRegionC1C7(address); } private int ReadIoRegionC8CF(int address) @@ -365,7 +365,7 @@ private int ReadIoRegionC8CF(int address) { SetRomC8CF(false); // $CFFF resets IntC8Rom [5-28, 7-21] } - return (IsRomC1CFInternal || IsRomC8CFInternal) ? _romInternalRegionC1CF[address - 0xC100] : Machine.Slots[_slotRegionC8CF].ReadIoRegionC8CF(address); + return (IsRomC1CFInternal || IsRomC8CFInternal) ? _noSlotClock.Read(address, _romInternalRegionC1CF[address - 0xC100]) : Machine.Slots[_slotRegionC8CF].ReadIoRegionC8CF(address); } [SuppressMessage("Microsoft.Usage", "CA2233:OperationsShouldNotOverflow", MessageId = "address-512")] @@ -548,11 +548,14 @@ private void WriteIoRegionC3C3(int address, byte data) { SetRomC8CF(true); // $C3XX sets IntC8Rom; inhibits I/O Strobe' [5-28, 7-21] } - else if (!IsRomC1CFInternal) + if (IsRomC1CFInternal || !IsRomC3C3External) + { + _noSlotClock.Write(address); + } + else { Machine.Slot3.WriteIoRegionC1C7(address, data); } - _noSlotClock.Write(address); } private void WriteIoRegionC8CF(int address, byte data) @@ -561,7 +564,11 @@ private void WriteIoRegionC8CF(int address, byte data) { SetRomC8CF(false); // $CFFF resets IntC8Rom [5-28, 7-21] } - if (!IsRomC1CFInternal && !IsRomC8CFInternal) + if (IsRomC1CFInternal || IsRomC8CFInternal) + { + _noSlotClock.Write(address); + } + else { Machine.Slots[_slotRegionC8CF].WriteIoRegionC8CF(address, data); }