ZXHawk: Do ULA processing every cycle

This commit is contained in:
Asnivor 2018-06-14 09:13:09 +01:00
parent 2af6965ef5
commit 76318fbc7a
10 changed files with 23 additions and 20 deletions

View File

@ -143,6 +143,9 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
/// <param name="currentCycle"></param>
public virtual void CycleClock(long totalCycles)
{
// render the screen
RenderScreen((int)_machine.CurrentFrameCycle);
// has more than one cycle past since this last ran
// (this can be true if contention has taken place)
var ticksToProcess = totalCycles - LastULATick;

View File

@ -134,7 +134,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
// RAM 0x4000 (RAM5 - Bank5 or shadow bank RAM7)
case 1:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM5[addr % 0x4000] = value;
break;
@ -163,7 +163,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
RAM4[addr % 0x4000] = value;
break;
case 5:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM5[addr % 0x4000] = value;
break;
case 6:

View File

@ -150,7 +150,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
// Border - LSB 3 bits hold the border colour
if (ULADevice.BorderColor != (value & BORDER_BIT))
{
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
ULADevice.BorderColor = value & BORDER_BIT;
}

View File

@ -236,11 +236,11 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
break;
case 1:
case 2:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM5[addr % 0x4000] = value;
break;
case 3:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM7[addr % 0x4000] = value;
break;
}
@ -267,7 +267,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
RAM3[addr % 0x4000] = value;
break;
case 1:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM7[addr % 0x4000] = value;
break;
}
@ -302,7 +302,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
// RAM 0x4000 (RAM5 - Bank5 only)
case 1:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM5[addr % 0x4000] = value;
break;
@ -331,14 +331,14 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
RAM4[addr % 0x4000] = value;
break;
case 5:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM5[addr % 0x4000] = value;
break;
case 6:
RAM6[addr % 0x4000] = value;
break;
case 7:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM7[addr % 0x4000] = value;
break;
}

View File

@ -148,7 +148,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
// Border - LSB 3 bits hold the border colour
if (ULADevice.BorderColor != (value & BORDER_BIT))
{
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
ULADevice.BorderColor = value & BORDER_BIT;
}

View File

@ -236,11 +236,11 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
break;
case 1:
case 2:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM5[addr % 0x4000] = value;
break;
case 3:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM7[addr % 0x4000] = value;
break;
}
@ -267,7 +267,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
RAM3[addr % 0x4000] = value;
break;
case 1:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM7[addr % 0x4000] = value;
break;
}
@ -302,7 +302,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
// RAM 0x4000 (RAM5 - Bank5 only)
case 1:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM5[addr % 0x4000] = value;
break;
@ -331,14 +331,14 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
RAM4[addr % 0x4000] = value;
break;
case 5:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM5[addr % 0x4000] = value;
break;
case 6:
RAM6[addr % 0x4000] = value;
break;
case 7:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM7[addr % 0x4000] = value;
break;
}

View File

@ -154,7 +154,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
// Border - LSB 3 bits hold the border colour
if (ULADevice.BorderColor != (value & BORDER_BIT))
{
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
ULADevice.BorderColor = value & BORDER_BIT;
}

View File

@ -85,7 +85,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
// cannot write to ROM
break;
case 1:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM0[index] = value;
break;
}

View File

@ -77,7 +77,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
// cannot write to ROM
break;
case 1:
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
RAM0[index] = value;
break;
case 2:

View File

@ -86,7 +86,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
// Border - LSB 3 bits hold the border colour
if (ULADevice.BorderColor != (value & BORDER_BIT))
{
ULADevice.RenderScreen((int)CurrentFrameCycle);
//ULADevice.RenderScreen((int)CurrentFrameCycle);
ULADevice.BorderColor = value & BORDER_BIT;
}