public void Load(string FileName)
        {
            int caracter;
            int i;

            if (FileName.Length == 0)
            {
                return;
            }

            FileStream handle = File.OpenRead(FileName);

            caracter = handle.ReadByte();
            for (i = 0; i < getNumElements() - 1 && caracter >= 0; i++)
            {
                ElementoOSD elem = (ElementoOSD)getElement(i);
                elem.tipo  = (byte)caracter;
                elem.fila  = (sbyte)handle.ReadByte();
                elem.col   = (sbyte)handle.ReadByte();
                elem.param = (byte)handle.ReadByte();
                caracter   = handle.ReadByte();
            }

            caracter = handle.ReadByte();

            for (i = 0; i < 16 && caracter >= 0; i++)
            {
                StrNombreHUD += (char)caracter;
                caracter      = handle.ReadByte();
            }

            handle.Close();
        }
        public void setByte(int idx, byte dato)
        {
            int numelem = getNumElements() - 1;
            int dir     = idx / 4;

            if (dir >= numelem)
            {
                dir = idx - numelem * 4;
                if (dir < 16)
                {
                    if (dir < StrNombreHUD.Length)
                    {
                        StrNombreHUD += (char)dato;
                    }
                    else
                    {
                        StrNombreHUD = StrNombreHUD.Substring(0, dir) + (char)dato;
                    }
                }
                return;
            }
            else
            {
                ElementoOSD elem = (ElementoOSD)getElement(dir);
                switch (idx % 4)
                {
                case 0:
                    elem.tipo = dato;
                    break;

                case 1:
                    elem.fila = (sbyte)dato;
                    break;

                case 2:
                    elem.col = (sbyte)dato;
                    break;

                case 3:
                    elem.param = dato;
                    break;
                }
            }
        }
        public byte getByte(int idx)
        {
            int numelem = getNumElements() - 1;
            int dir     = idx / 4;

            if (dir >= numelem)
            {
                dir = idx - numelem * 4;
                if (dir < StrNombreHUD.Length)
                {
                    return((byte)StrNombreHUD[dir]);
                }
                else
                {
                    return(0);
                }
            }
            else
            {
                ElementoOSD elem = (ElementoOSD)getElement(dir);
                switch (idx % 4)
                {
                case 0:
                    return(elem.tipo);

                case 1:
                    return((byte)elem.fila);

                case 2:
                    return((byte)elem.col);

                case 3:
                    return(elem.param);

                default:
                    return(0);
                }
            }
        }