Пример #1
0
        public static System.Drawing.Image LoadImg(string filename)
        {
            // this gives Out of Memory on Linux
            filename = PathFix(filename);
            if (!File.Exists(filename))
            {
                VbX.MsgBox("File not found:" + filename);
                return(null);
            }
            if (!IsLinux)
            {
                return(System.Drawing.Image.FromFile(filename));
            }

            // I understand this does work on linux

            //	VbX.MsgBox (filename);
            Stream sr = new FileStream(filename, FileMode.Open);

            System.Drawing.Image im = System.Drawing.Image.FromStream(sr);
            sr.Close();
            sr = null;
            return(im);
            //return null;
        }
Пример #2
0
        public static string PathFixDir(string path, string lookfor)
        {
            if (lookfor.Length == 0)
            {
                return(slash);
            }
            string path2 = "";

            if (path.Length > 0)
            {
                if (VbX.Right(path, 1) != slash)
                {
                    path += slash;
                }
                path2 = path;
            }
            else
            {
                path2 = "." + slash;
            }
            foreach (string dir in Directory.GetDirectories(path2))
            {
                if (dir.ToLower() == path + lookfor.ToLower())
                {
                    return(dir);
                }
            }
            if (path.Length > 0)
            {
                lookfor = path + slash + lookfor;
            }
            return(lookfor);
        }
Пример #3
0
        public static string PathFixFile(string path, string lookfor)
        {
            string path2 = "";

            if (path.Length > 0)
            {
                if (VbX.Right(path, 1) != slash)
                {
                    path += slash;
                }
                path2 = path;
            }
            else
            {
                path2 = "." + slash;
            }
            try
            {
                foreach (string dir in Directory.GetFiles(path2))
                {
                    if (dir.ToLower() == path + lookfor.ToLower())
                    {
                        return(dir);
                    }
                }
            }
            catch (Exception ex)
            {
                VbX.MsgBox(ex.ToString());
            }
            return(path + lookfor);
        }
Пример #4
0
        void doOnebytebatch(string bitdata)//, StringBuilder Chunk)
        {
            bitdata = bitdata.Trim();
            if (bitdata.Length == 0)
            {
                return;
            }
            int lng = bitdata.Length / 8;

            if (lng < 3)
            {
                // this code needs at least 3 bytes!
                dobytebatch(bitdata);
                return;
            }
            // Chunk.Append(nl + "defb &00,");          //Double Zero nibble is the marker for a repating byte batch
            addbytetodata(0);
            while (lng >= 0)
            {
                int pp2 = lng;
                if (pp2 > 255)
                {
                    pp2 = 255;
                }
                // Chunk.Append((pp2).ToString("x"));
                addbytetodata(pp2);
                lng -= 255;
            }
            addbytetodata(VbX.BinToHex(unnibble(bitdata.Substring(0, 8))));
        }
Пример #5
0
        private void updateinfo()
        {
            txtInfo.Text = "";
            step         = VbX.CInt(txtScale.Text);
            if (step == 0)
            {
                step = 1;
            }


            txtInfo.Text += "Input  Frequency   :" + Frequency.ToString() + nl;
            txtInfo.Text += "Filelength         :" + FileLength.ToString() + nl;

            Bitdepth = VbX.CInt(VbX.Left(cboBitDepth.Text, 1));


            if (cboBitDepth.Text == "CPC+ DMA")
            {
                Bitdepth = 16;
            }
            Single dividor = 8 / Bitdepth;

            if (dividor <= 0)
            {
                dividor = 1;
            }
            //if (cboBitDepth.Text == "CPC+ DMA") { dividor = 0.5F; }
            txtInfo.Text += "Output Frequency   :" + (Frequency / step).ToString() + nl;
            txtInfo.Text += "Output Size (bytes):" + ((FileLength / step) / dividor).ToString() + nl;
            DestFile      = txtSrc.Text.ToLower().Replace(".wav", Bitdepth.ToString() + "-" + step.ToString() + ".raw");
        }
Пример #6
0
 void addbytetodata(string b)
 {
     if (b.Length > 2)
     {
         VbX.MsgBox("Chunk too long!" + b);
     }
     RleData[RleDataPos] = (byte)VbX.HexToInt(b);
     RleDataPos++;
 }
Пример #7
0
 void addbytetodata(int b)
 {
     if (b > 255)
     {
         VbX.MsgBox("Int too high!" + b);
     }
     RleData[RleDataPos] = (byte)b;
     RleDataPos++;
 }
Пример #8
0
 public static string addslash(string lin)
 {
     if (lin.Length == 0)
     {
         return("");
     }
     if (VbX.Right(lin, 1) == "/" || VbX.Right(lin, 1) == "\\")
     {
         return(lin);
     }
     return(lin + slash);
 }
Пример #9
0
        /*
         *
         * private string GetPair(int y, int x)
         * {
         *  int transpcount = 0;
         *  if (x < 0) return "Bad!";
         *  string thispair = "";
         *  for (int pair = 0; pair < 2; pair++)
         *  {
         *      int thisbyte = 0;
         *      for (int bit = 0; bit < 4; bit++)
         *      {
         *          int tx = x + (3 - bit) + (pair * 4);
         *          int dot = spritepixel[tx, y];
         *          if (dot > 15)
         *          {
         *              transpcount++;
         *              dot = 0;
         *          }
         *          else if (dot > 3) {
         *              dot = 3;
         *          }
         *          string binary = VbX.Right("00" + Convert.ToString(dot, 2), 2);
         *          string Binary2 = binary.Substring(1, 1) + "000" + binary.Substring(0, 1);
         *
         *          thisbyte = thisbyte + (Convert.ToInt32(Binary2, 2) << bit);
         *          // if (dot == 3) VbX.MsgBox(Binary2 + "   " + bit.ToString() + "  " + thisbyte.ToString());
         *      }
         *      thispair = VbX.Right("00" + thisbyte.ToString("X"), 2) + thispair;
         *  }
         *  if (transpcount == 8) { return "ZZZZ"; }
         *  return thispair;
         * }
         */

        private string GetPair(int y, int x)
        {
            int transpcount = 0;

            if (x < 0)
            {
                return("Bad!");
            }
            string thispair = "";

            for (int pair = 0; pair < 2; pair++)
            {
                int thisbyte = 0;
                for (int bit = 0; bit < 2; bit++)
                {
                    int tx = x + (bit) + (pair * 2);

                    int dot = spritepixel[tx, y];

                    if (dot > 15)
                    {
                        transpcount++;
                        dot = 0;
                    }
                    //   else if (dot > 1) {
                    //      dot = 1;
                    //  }
                    string binary  = VbX.Right("0000" + Convert.ToString(dot, 2), 4);
                    string Binary2 = binary;//binary.Substring(1, 1) + "000" + binary.Substring(0, 1);

                    thisbyte = thisbyte + (Convert.ToInt32(Binary2, 2) << (1 - bit) * 4);
                    // if (dot == 3) VbX.MsgBox(Binary2 + "   " + bit.ToString() + "  " + thisbyte.ToString());
                }

                thispair = thispair + VbX.Right("00" + thisbyte.ToString("X"), 2);
            }
            // VbX.MsgBox(thispair);
            if (transpcount == 8)
            {
                return("ZZZZ");
            }

            return(thispair);
        }
Пример #10
0
        void donibblebatch(string nibblename, int nibblecount)//, StringBuilder Chunk)
        {
            int lineitem = 0;
            //while (nibblecount > 0)
            // {
            //if (lineitem > 0)
            //{ Chunk.Append(","); }
            //else
            //{ Chunk.Append(nl + "defb "); }

            int nc = nibblecount;

            if (nibblecount > 15)
            {
                nc = 15;
            }
            //nibblecount -= nc;
            string ct = VbX.IntToBin(nc).Substring(4, 4);

            addbytetodata(VbX.BinToHex(nibblename + ct));
            nibblecount -= 15;
            while (nibblecount >= 0)
            {
                int pp2 = nibblecount;
                if (pp2 > 255)
                {
                    pp2 = 255;
                }
                //Chunk.Append(",&" + (pp2).ToString("x"));
                addbytetodata(pp2);
                nibblecount -= 255;
            }

            lineitem++;
            //    }
        }
Пример #11
0
 public static string IntToBin(int i)
 {
     return(VbX.Right("00000000" + Convert.ToString(i, 2), 8));
 }
Пример #12
0
    public static string GetItem(string lin, string ch, int pos, string brackets)
    {
        if (lin.Length == 0 || ch.Length == 0)
        {
            return("");
        }
        string bracketarray = "";
        string part         = "";
        int    foundnum     = 0;

        for (int i = 1; i <= lin.Length; i++)
        {
            string c = VbX.Mid(lin, i, 1);
            if (c == ch & string.IsNullOrEmpty(bracketarray))
            {
                if (foundnum == pos)
                {
                    return(part);
                }
                else
                {
                    part = ""; foundnum = foundnum + 1;
                }
            }
            else
            {
                part = part + c;
            }

            //    MsgBox(c)
            if (c == VbX.Chr(34) & VbX.InStr(brackets, VbX.Chr(34)) > 0)
            {
                if (VbX.Right(bracketarray, 1) == VbX.Chr(34) & !string.IsNullOrEmpty(bracketarray))
                {
                    bracketarray = VbX.Left(bracketarray, VbX.Len(bracketarray) - 1);
                }
                else
                {
                    bracketarray = bracketarray + VbX.Chr(34);
                }
                //part = part + c
            }
            else if ((c == "(" | c == ")") & VbX.InStr(brackets, "(") > 0)
            {
                if (VbX.Right(bracketarray, 1) == "(" & c == ")" & !string.IsNullOrEmpty(bracketarray))
                {
                    bracketarray = VbX.Left(bracketarray, VbX.Len(bracketarray) - 1);
                }
                else
                {
                    bracketarray = bracketarray + "(";
                }
                //part = part + c
            }
            else if ((c == "{" | c == "}") & VbX.InStr(brackets, "{") > 0)
            {
                if (VbX.Right(bracketarray, 1) == "{" & c == "}" & !string.IsNullOrEmpty(bracketarray))
                {
                    bracketarray = VbX.Left(bracketarray, VbX.Len(bracketarray) - 1);
                }
                else
                {
                    bracketarray = bracketarray + "{";
                }
                //part = part + c
            }
        }
        if (foundnum == pos)
        {
            return(part);
        }
        if (pos == -1)
        {
            return(foundnum.ToString());
        }
        return("");
    }
Пример #13
0
        void dobytebatch(string bitdata)//, StringBuilder Chunk)
        {
            bitdata = bitdata.Trim();
            if (bitdata.Length == 0)
            {
                return;
            }
            int lng     = bitdata.Length / 8;
            int partnum = 0;

            for (int i = 0; i < bitdata.Length; i += 8)
            {
                //;
                string part = VbX.Mid(bitdata + "    ", i + 1, 8).Trim();

                if (part.Length == 8)
                {
                    //if (i > 0)
                    //{
                    //Chunk.Append(",");

                    //}
                    //else
                    //{
                    //Chunk.Append(nl + "defb ");

                    //}
                    // if (partnum == 14) partnum = 0;
                    if (partnum == 0)
                    {
                        int pp = (lng - (i / 8));
                        if (pp > 15)
                        {
                            pp = 15;
                        }
                        //Chunk.Append("&" + (16 * pp).ToString("x") + ",");
                        addbytetodata((16 * pp));
                        if (pp == 15)
                        {
                            pp  = (lng - (i / 8));
                            pp -= 15;
                            while (pp >= 0)
                            {
                                int pp2 = pp;
                                if (pp2 > 255)
                                {
                                    pp2 = 255;
                                }
                                //Chunk.Append("&" + (pp2).ToString("x") + ",");
                                addbytetodata(pp2);
                                pp -= 255;
                            }
                        }
                    }
                    partnum = partnum + 1;

                    addbytetodata(VbX.BinToHex(unnibble(part)));
                    // VbX.MsgBox("&" + globals.BinToHex(part));
                    // donibblebatch(part, 1, Chunk);
                }
                else
                {
                    //Chunk.Append(nl);
                    donibblebatch(part, 1);
                }
            }
        }
Пример #14
0
        public void NewRLE()
        {
            string lastnibble  = "";
            string Randombytes = "";
            int    nibblecount = 1;

            int FirstY = height; // intentionally backwards!
            int LastY  = 0;

            LastY  = height;    // intentionally backwards!
            FirstY = 0;
            //}



            int    CurrentMode    = 0; //1=nibble . 2=byte 3=repeatingbytes
            int    lineitem       = 0;
            String RepeatingBytes = "";


            // MSX Version has two literal bytes at the start
            string thispair2 = GetPair(0, 0);

            addbytetodata(VbX.HexToInt(thispair2.Substring(0, 2)));
            addbytetodata(VbX.HexToInt(thispair2.Substring(2, 2)));
            // MSX Version has two literal bytes at the start


            for (int y = FirstY; y < LastY; y++)
            {
                int fx = 0;
                if (y == 0)
                {
                    fx = 4;         // MSX Version has two literal bytes at the start
                }
                for (int x = fx; x <= width - 4; x += 4)
                {
                    string thispair = GetPair(y, x);

                    for (int by = 0; by < 2; by++)
                    {
                        string ThisByte = "";
                        switch (by)
                        {
                        case 0:
                            ThisByte = thispair.Substring(0, 2);
                            break;

                        case 1:
                            ThisByte = thispair.Substring(2, 2);
                            break;
                        }


                        string nibble = "";
                        for (int n = 0; n < 2; n++)
                        {
                            switch (n)
                            {
                            case 0:
                                //nibble = VbX.BinAnd(VbX.HexToBin(ThisByte), "11001100");
                                //nibble = nibble.Substring(0, 2) + nibble.Substring(4, 2);

                                nibble = VbX.BinAnd(VbX.HexToBin(ThisByte), "11110000");
                                nibble = nibble.Substring(0, 4);

                                break;

                            case 1:
                                //nibble = VbX.BinAnd(VbX.HexToBin(ThisByte), "00110011");
                                //nibble = nibble.Substring(2 + 0, 2) + nibble.Substring(2 + 4, 2);

                                nibble = VbX.BinAnd(VbX.HexToBin(ThisByte), "00001111");
                                nibble = nibble.Substring(4, 4);

                                break;
                            }

                            if (nibble == lastnibble)
                            {
                                nibblecount++;
                                CurrentMode = 1;
                            }
                            else if (lastnibble == "")
                            {
                                lastnibble  = nibble;
                                nibblecount = 1;
                            }
                            else
                            {
                                if (nibblecount > 1)
                                {
                                    if (Randombytes.Length > 1)
                                    {
                                        if (Randombytes.Length == 4)
                                        {
                                            donibblebatch(Randombytes, 1);
                                            donibblebatch(lastnibble, nibblecount);
                                            lastnibble = "";
                                        }
                                        else
                                        {
                                            dobytebatchWithRepeater(Randombytes);
                                            donibblebatch(lastnibble, nibblecount);
                                        }
                                        Randombytes = "";
                                    }
                                    else
                                    {
                                        {
                                            donibblebatch(lastnibble, nibblecount);
                                        }
                                    }
                                }
                                else
                                {
                                    if (VbX.Len(Randombytes) == 4 && n == 1)  //
                                    {
                                        //finish the last byte
                                        donibblebatch(Randombytes, nibblecount);
                                        nibblecount = 0;
                                        Randombytes = lastnibble;
                                        CurrentMode = 2;
                                    }
                                    else
                                    {
                                        Randombytes = Randombytes + lastnibble;
                                        CurrentMode = 2;
                                        nibblecount = 0;
                                    }
                                }
                                nibblecount = 1;
                                lastnibble  = nibble;
                            }
                        }
                    }
                }
            }
            dobytebatchWithRepeater(Randombytes);
            donibblebatch(lastnibble, nibblecount);



            /*
             * FirstY = FirstY + VbX.CInt(txtYpos.Text);
             *
             * globals.imagedata.Append(Filename + ":" + nl);
             * globals.imagedata.Append("ld hl," + Filename + "_rledata-1" + nl);
             * globals.imagedata.Append("ld de," + Filename + "_rledataEnd-1" + nl);
             * globals.imagedata.Append("ld b," + FirstY.ToString() + nl);
             * int thiswidth = b.Width / 4;
             * globals.imagedata.Append("ld ixh," + thiswidth.ToString() + nl);
             *
             *
             * thiswidth = VbX.CInt(txtXpos.Text) + thiswidth - 1;
             *
             * globals.imagedata.Append("ld IXL," + thiswidth.ToString() + nl);
             *
             * globals.imagedata.Append("di" + nl);
             * globals.imagedata.Append("exx " + nl);
             * globals.imagedata.Append("push bc" + nl);
             * globals.imagedata.Append("exx" + nl);
             * globals.imagedata.Append("jp RLE_Draw" + nl);
             * globals.imagedata.Append(Filename + "_rledata:" + nl);
             * globals.imagedata.Append(Chunk.ToString() + nl);
             * globals.imagedata.Append(Filename + "_rledataEnd: defb 0" + nl);
             * textBox1.Text = globals.initdata + nl + globals.imagedata.ToString() + nl + globals.globaldata.ToString();
             */
        }
Пример #15
0
        public void NewRLE()
        {
            //string Filename = DoFilename(txtFilename.Text);//"Pic" + ss.GetItem(txtFilename.Text, "\\", ss.CountItems(txtFilename.Text, "\\")).Replace(".", "");

            //            addheader();

            //          globals.PicNumber += 3 ;


            string lastnibble  = "";
            string Randombytes = "";
            int    nibblecount = 1;


            int FirstY = height; // intentionally backwards!
            int LastY  = 0;

            LastY  = height;    // intentionally backwards!
            FirstY = 0;
            //}



            int    CurrentMode    = 0; //1=nibble . 2=byte 3=repeatingbytes
            int    lineitem       = 0;
            String RepeatingBytes = "";

            for (int y = FirstY; y < LastY; y++)
            {
                for (int x = width - 16; x >= 0; x -= 16)
                {
                    string thispair = GetPair(y, x);

                    for (int by = 0; by < 2; by++)
                    {
                        string ThisByte = "";
                        switch (by)
                        {
                        case 0:
                            ThisByte = thispair.Substring(0, 2);
                            break;

                        case 1:
                            ThisByte = thispair.Substring(2, 2);
                            break;
                        }


                        string nibble = "";
                        for (int n = 0; n < 2; n++)
                        {
                            switch (n)
                            {
                            case 1:
                                //nibble = VbX.BinAnd(VbX.HexToBin(ThisByte), "11001100");
                                //nibble = nibble.Substring(0, 2) + nibble.Substring(4, 2);

                                nibble = VbX.BinAnd(VbX.HexToBin(ThisByte), "11110000");
                                nibble = nibble.Substring(0, 4);

                                break;

                            case 0:
                                //nibble = VbX.BinAnd(VbX.HexToBin(ThisByte), "00110011");
                                //nibble = nibble.Substring(2 + 0, 2) + nibble.Substring(2 + 4, 2);

                                nibble = VbX.BinAnd(VbX.HexToBin(ThisByte), "00001111");
                                nibble = nibble.Substring(4, 4);

                                break;
                            }

                            if (nibble == lastnibble)
                            {
                                nibblecount++;
                                CurrentMode = 1;
                            }
                            else if (lastnibble == "")
                            {
                                lastnibble  = nibble;
                                nibblecount = 1;
                            }
                            else
                            {
                                if (nibblecount > 1)
                                {
                                    if (Randombytes.Length > 1)
                                    {
                                        if (Randombytes.Length == 4)
                                        {
                                            donibblebatch(Randombytes, 1);
                                            donibblebatch(lastnibble, nibblecount);
                                            lastnibble = "";
                                        }
                                        else
                                        {
                                            dobytebatchWithRepeater(Randombytes);
                                            donibblebatch(lastnibble, nibblecount);
                                        }
                                        Randombytes = "";
                                    }
                                    else
                                    {
                                        {
                                            donibblebatch(lastnibble, nibblecount);
                                        }
                                    }
                                }
                                else
                                {
                                    if (VbX.Len(Randombytes) == 4 && n == 1)  //
                                    {
                                        //finish the last byte
                                        donibblebatch(Randombytes, nibblecount);
                                        nibblecount = 0;
                                        Randombytes = lastnibble;
                                        CurrentMode = 2;
                                    }
                                    else
                                    {
                                        Randombytes = Randombytes + lastnibble;
                                        CurrentMode = 2;
                                        nibblecount = 0;
                                    }
                                }
                                nibblecount = 1;
                                lastnibble  = nibble;
                            }
                        }
                    }
                }
            }
            dobytebatchWithRepeater(Randombytes);
            donibblebatch(lastnibble, nibblecount);



            /*
             * FirstY = FirstY + VbX.CInt(txtYpos.Text);
             *
             * globals.imagedata.Append(Filename + ":" + nl);
             * globals.imagedata.Append("ld hl," + Filename + "_rledata-1" + nl);
             * globals.imagedata.Append("ld de," + Filename + "_rledataEnd-1" + nl);
             * globals.imagedata.Append("ld b," + FirstY.ToString() + nl);
             * int thiswidth = b.Width / 4;
             * globals.imagedata.Append("ld ixh," + thiswidth.ToString() + nl);
             *
             *
             * thiswidth = VbX.CInt(txtXpos.Text) + thiswidth - 1;
             *
             * globals.imagedata.Append("ld IXL," + thiswidth.ToString() + nl);
             *
             * globals.imagedata.Append("di" + nl);
             * globals.imagedata.Append("exx " + nl);
             * globals.imagedata.Append("push bc" + nl);
             * globals.imagedata.Append("exx" + nl);
             * globals.imagedata.Append("jp RLE_Draw" + nl);
             * globals.imagedata.Append(Filename + "_rledata:" + nl);
             * globals.imagedata.Append(Chunk.ToString() + nl);
             * globals.imagedata.Append(Filename + "_rledataEnd: defb 0" + nl);
             * textBox1.Text = globals.initdata + nl + globals.imagedata.ToString() + nl + globals.globaldata.ToString();
             */
        }
Пример #16
0
        public void NewRLE()
        {
            string lastnibble  = "";
            string Randombytes = "";
            int    nibblecount = 1;

            int FirstY = height; // intentionally backwards!
            int LastY  = 0;

            LastY  = height;    // intentionally backwards!
            FirstY = 0;
            //}



            int    CurrentMode    = 0; //1=nibble . 2=byte 3=repeatingbytes
            int    lineitem       = 0;
            String RepeatingBytes = "";

            for (int y = FirstY; y < LastY; y++)
            {
                for (int x = width - 8; x >= 0; x -= 8)
                {
                    string thispair = GetPair(y, x);

                    for (int by = 0; by < 2; by++)
                    {
                        string ThisByte = "";
                        switch (by)
                        {
                        case 0:
                            ThisByte = thispair.Substring(0, 2);
                            break;

                        case 1:
                            ThisByte = thispair.Substring(2, 2);
                            break;
                        }


                        string nibble = "";
                        for (int n = 0; n < 2; n++)
                        {
                            switch (n)
                            {
                            case 1:
                                nibble = VbX.BinAnd(VbX.HexToBin(ThisByte), "11001100");

                                nibble = nibble.Substring(0, 2) + nibble.Substring(4, 2);

                                break;

                            case 0:
                                nibble = VbX.BinAnd(VbX.HexToBin(ThisByte), "00110011");

                                nibble = nibble.Substring(2 + 0, 2) + nibble.Substring(2 + 4, 2);

                                break;
                            }

                            if (nibble == lastnibble)
                            {
                                nibblecount++;
                                CurrentMode = 1;
                            }
                            else if (lastnibble == "")
                            {
                                lastnibble  = nibble;
                                nibblecount = 1;
                            }
                            else
                            {
                                if (nibblecount > 1)
                                {
                                    if (Randombytes.Length > 1)
                                    {
                                        if (Randombytes.Length == 4)
                                        {
                                            donibblebatch(Randombytes, 1);
                                            donibblebatch(lastnibble, nibblecount);
                                            lastnibble = "";
                                        }
                                        else
                                        {
                                            dobytebatchWithRepeater(Randombytes);
                                            donibblebatch(lastnibble, nibblecount);
                                        }
                                        Randombytes = "";
                                    }
                                    else
                                    {
                                        {
                                            donibblebatch(lastnibble, nibblecount);
                                        }
                                    }
                                }
                                else
                                {
                                    if (VbX.Len(Randombytes) == 4 && n == 1)  //
                                    {
                                        //finish the last byte
                                        donibblebatch(Randombytes, nibblecount);
                                        nibblecount = 0;
                                        Randombytes = lastnibble;
                                        CurrentMode = 2;
                                    }
                                    else
                                    {
                                        Randombytes = Randombytes + lastnibble;
                                        CurrentMode = 2;
                                        nibblecount = 0;
                                    }
                                }
                                nibblecount = 1;
                                lastnibble  = nibble;
                            }
                        }
                    }
                }
            }
            dobytebatchWithRepeater(Randombytes);
            donibblebatch(lastnibble, nibblecount);
        }