예제 #1
0
        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;
            }
        }
예제 #2
0
        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;
            }
        }
예제 #3
0
        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;
            }
        }
예제 #4
0
        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;
            }
        }