private bool FloppyScrollFlirt()
{
var scrollScreen = new byte[FrameSize * 2];
Array.Copy(_skyScreen.Current, 0, scrollScreen, FrameSize, FrameSize);
var scrollPos = FrameSize;
var vgaData = _skyDisk.LoadFile(60100);
var diffData = _skyDisk.LoadFile(60101);
var frameNum = diffData.ToUInt16();
var diffPtr = 2;
var vgaPtr = 0;
bool doContinue = true;
for (ushort frameCnt = 1; (frameCnt < frameNum) && doContinue; frameCnt++)
{
var scrollVal = diffData[diffPtr++];
if (scrollVal != 0)
scrollPos -= scrollVal * Screen.GameScreenWidth;
ushort scrPos = 0;
while (scrPos < FrameSize)
{
byte nrToDo, nrToSkip;
do
{
nrToSkip = diffData[diffPtr++];
scrPos += nrToSkip;
} while (nrToSkip == 255);
do
{
nrToDo = diffData[diffPtr++];
Array.Copy(vgaData, vgaPtr, scrollScreen, scrollPos + scrPos, nrToDo);
scrPos += nrToDo;
vgaPtr += nrToDo;
} while (nrToDo == 255);
}
_system.GraphicsManager.CopyRectToScreen(scrollScreen, scrollPos, Screen.GameScreenWidth, 0, 0, Screen.GameScreenWidth, Screen.GameScreenHeight);
_system.GraphicsManager.UpdateScreen();
if (!EscDelay(60))
doContinue = false;
}
Array.Copy(scrollScreen, scrollPos, _skyScreen.Current, 0, FrameSize);
return doContinue;
}