public override void UseSZX(SZXFile szx) { lock (lockThis) { base.UseSZX(szx); aySound.SelectedRegister = szx.ayState.currentRegister; //Possible if loading a 48k snapshot into 128ke if (szx.ayState.chRegs != null) { aySound.SetRegisters(szx.ayState.chRegs); } PageReadPointer[2] = RAMpage[(int)RAM_BANK.FIVE_LOW]; PageReadPointer[3] = RAMpage[(int)RAM_BANK.FIVE_HIGH]; PageReadPointer[4] = RAMpage[(int)RAM_BANK.TWO_LOW]; PageReadPointer[5] = RAMpage[(int)RAM_BANK.TWO_HIGH]; PageReadPointer[6] = RAMpage[(int)RAM_BANK.ZERO_LOW]; PageReadPointer[7] = RAMpage[(int)RAM_BANK.ZERO_HIGH]; PageWritePointer[2] = RAMpage[(int)RAM_BANK.FIVE_LOW]; PageWritePointer[3] = RAMpage[(int)RAM_BANK.FIVE_HIGH]; PageWritePointer[4] = RAMpage[(int)RAM_BANK.TWO_LOW]; PageWritePointer[5] = RAMpage[(int)RAM_BANK.TWO_HIGH]; PageWritePointer[6] = RAMpage[(int)RAM_BANK.ZERO_LOW]; PageWritePointer[7] = RAMpage[(int)RAM_BANK.ZERO_HIGH]; Out(0x7ffd, szx.specRegs.x7ffd); //Perform a dummy Out to setup the remaining stuff! borderColour = szx.specRegs.Border; totalTStates = (int)szx.z80Regs.CyclesStart; } }
public override void UseSZX(SZXFile szx) { lock (lockThis) { base.UseSZX(szx); aySound.SelectedRegister = szx.ayState.currentRegister; aySound.SetRegisters(szx.ayState.chRegs); LateTiming = szx.header.Flags & 0x1; PageReadPointer[2] = RAMpage[(int)RAM_BANK.FIVE_LOW]; PageReadPointer[3] = RAMpage[(int)RAM_BANK.FIVE_HIGH]; PageReadPointer[4] = RAMpage[(int)RAM_BANK.TWO_LOW]; PageReadPointer[5] = RAMpage[(int)RAM_BANK.TWO_HIGH]; PageReadPointer[6] = RAMpage[(int)RAM_BANK.ZERO_LOW]; PageReadPointer[7] = RAMpage[(int)RAM_BANK.ZERO_HIGH]; PageWritePointer[2] = RAMpage[(int)RAM_BANK.FIVE_LOW]; PageWritePointer[3] = RAMpage[(int)RAM_BANK.FIVE_HIGH]; PageWritePointer[4] = RAMpage[(int)RAM_BANK.TWO_LOW]; PageWritePointer[5] = RAMpage[(int)RAM_BANK.TWO_HIGH]; PageWritePointer[6] = RAMpage[(int)RAM_BANK.ZERO_LOW]; PageWritePointer[7] = RAMpage[(int)RAM_BANK.ZERO_HIGH]; Out(0x7ffd, szx.specRegs.x7ffd); //Perform a dummy Out to setup the remaining stuff! borderColour = szx.specRegs.Border; totalTStates = (int)szx.z80Regs.CyclesStart; } }
public override void UseSZX(SZXFile szx) { lock (lockThis) { base.UseSZX(szx); aySound.SelectedRegister = szx.ayState.currentRegister; aySound.SetRegisters(szx.ayState.chRegs); Out(0x0ffe, szx.specRegs.Fe); PageReadPointer[2] = RAMpage[(int)RAM_BANK.FIVE_LOW]; PageReadPointer[3] = RAMpage[(int)RAM_BANK.FIVE_HIGH]; PageReadPointer[4] = RAMpage[(int)RAM_BANK.TWO_LOW]; PageReadPointer[5] = RAMpage[(int)RAM_BANK.TWO_HIGH]; PageReadPointer[6] = RAMpage[(int)RAM_BANK.ZERO_LOW]; PageReadPointer[7] = RAMpage[(int)RAM_BANK.ZERO_HIGH]; PageWritePointer[2] = RAMpage[(int)RAM_BANK.FIVE_LOW]; PageWritePointer[3] = RAMpage[(int)RAM_BANK.FIVE_HIGH]; PageWritePointer[4] = RAMpage[(int)RAM_BANK.TWO_LOW]; PageWritePointer[5] = RAMpage[(int)RAM_BANK.TWO_HIGH]; PageWritePointer[6] = RAMpage[(int)RAM_BANK.ZERO_LOW]; PageWritePointer[7] = RAMpage[(int)RAM_BANK.ZERO_HIGH]; contendedBankPagedIn = false; Out(0x7ffd, szx.specRegs.x7ffd); //Perform a dummy Out to setup the remaining stuff! Out(0x1ffd, szx.specRegs.pagePort); borderColour = szx.specRegs.Border; totalTStates = (int)szx.z80Regs.CyclesStart; } }
public override void UseSZX(SZXFile szx) { lock (lockThis) { base.UseSZX(szx); Out(0x0ffe, szx.specRegs.Fe); borderColour = szx.specRegs.Border; LateTiming = szx.header.Flags & 0x1; PageReadPointer[2] = RAMpage[(int)RAM_BANK.FIVE_LOW]; PageReadPointer[3] = RAMpage[(int)RAM_BANK.FIVE_HIGH]; PageReadPointer[4] = RAMpage[(int)RAM_BANK.TWO_LOW]; PageReadPointer[5] = RAMpage[(int)RAM_BANK.TWO_HIGH]; PageReadPointer[6] = RAMpage[(int)RAM_BANK.ZERO_LOW]; PageReadPointer[7] = RAMpage[(int)RAM_BANK.ZERO_HIGH]; PageWritePointer[2] = RAMpage[(int)RAM_BANK.FIVE_LOW]; PageWritePointer[3] = RAMpage[(int)RAM_BANK.FIVE_HIGH]; PageWritePointer[4] = RAMpage[(int)RAM_BANK.TWO_LOW]; PageWritePointer[5] = RAMpage[(int)RAM_BANK.TWO_HIGH]; PageWritePointer[6] = RAMpage[(int)RAM_BANK.ZERO_LOW]; PageWritePointer[7] = RAMpage[(int)RAM_BANK.ZERO_HIGH]; if (szx.paletteLoaded) { if (szx.palette.flags == 1) { ULAPlusEnabled = true; ULAPaletteEnabled = true; } else { ULAPaletteEnabled = false; } ULAPaletteGroup = szx.palette.currentRegister; for (int f = 0; f < 64; f++) { byte val = szx.palette.paletteRegs[f]; int bl = val & 0x01; int bm = bl; int bh = (val & 0x02) >> 1; val >>= 2; int rl = val & 0x01; int rm = (val & 0x02) >> 1; int rh = (val & 0x04) >> 2; val >>= 3; int gl = val & 0x01; int gm = (val & 0x02) >> 1; int gh = (val & 0x04) >> 2; int bgr = ( //each byte built as hmlhmlml bits from original 3 bit colour value (((rh << 7) | (rm << 6) | (rl << 5) | (rh << 4) | (rm << 3) | (rl << 2) | (rm << 1) | (rl)) << 16) | (((gh << 7) | (gm << 6) | (gl << 5) | (gh << 4) | (gm << 3) | (gl << 2) | (gm << 1) | (gl)) << 8) | (((bh << 7) | (bm << 6) | (bl << 5) | (bh << 4) | (bm << 3) | (bl << 2) | (bm << 1) | (bl))) ); ULAPlusColours[f] = bgr; Out(0xbf3b, szx.specRegs.Fe); } } totalTStates = (int)szx.z80Regs.CyclesStart; } }