Exemplo n.º 1
0
        private void DepactPK()
        {
            byte[] Palette = new byte[0x100];

            // Valeurs par défaut
            cpcPlus = false;
            nbCol   = 80;
            nbLig   = 200;

            //
            //PKSL -> 320x200 STD
            //PKS3 -> 320x200 Mode 3
            //PKSP -> 320x200 PLUS
            //PKVL -> Overscan STD
            //PKVP -> Overscan PLUS
            //

            cpcPlus = (bmpCpc[3] == 'P') || (bmpCpc[2] == 'O');
            bool Overscan = (bmpCpc[2] == 'V') || (bmpCpc[3] == 'V');
            bool Std      = (bmpCpc[2] == 'S' && bmpCpc[3] == 'L');

            if (Std)
            {
                for (int i = 0; i < 17; i++)
                {
                    Palette[i] = bmpCpc[i + 4];
                }
            }

            PackDepack.Depack(bmpCpc, Std ? 21 : 4, bufTmp);
            System.Array.Copy(bufTmp, bmpCpc, 0x10000);
            if (Overscan)
            {
                nbCol = maxColsCpc;
                nbLig = maxLignesCpc;
                SetPalette(bmpCpc, 0x600, cpcPlus);
            }
            else
            {
                if (Std)
                {
                    SetPalette(Palette, 0, cpcPlus);
                }
                else
                {
                    SetPalette(bmpCpc, 0x17D0, cpcPlus);
                }
            }
        }
Exemplo n.º 2
0
        public void GetImage(byte[] dest, int[] p)
        {
            int l = data.Length;

            if (data[0] == (byte)'P' && data[1] == (byte)'K' && data[2] == (byte)l && data[3] == (byte)(l >> 8))
            {
                PackDepack.Depack(data, 4, dest);
            }
            else
            {
                Array.Copy(data, dest, data.Length);
            }

            pal.SendPalette(p);
        }