	LUA

--	local namefSCR = "ObjScr/object_#"
--	local namefbin = "!bin/obj_grf.dat"
	local fbin = nil
	local NumScr = nil
	local Start = nil

--расчет смещения в файле экране по координатам Xznk, Ypix
	function GetDeltaScr(crdX, crdY)
	  if crdY < 64 then
	    dcY =crdY%8
	    cY = ((crdY-dcY)/8)*32 + dcY*256 + crdX
	  end
	  if ((crdY > 63) and (crdY < 128)) then
	    cY = 2048 + GetDeltaScr(crdX, crdY-64)
	  end
	  if crdY > 127 then
	    cY = 4096 + GetDeltaScr(crdX, crdY-128)
	  end
	  return cY
	end

--получение количества установленных бит в байте
	function GetNumPix(ByteSCR)
	  Pix = 0
	  for i=1,8,1 do
	    x2 = ByteSCR%2
  	    if x2 == 1 then
	     Pix = Pix + 1
	    end
	    ByteSCR = (ByteSCR-x2)/2
	  end
	  return Pix
	end

--получение длины одной линии объекта с координатой Ypix
	function GetLineScr(crdY)
	  Delta = GetDeltaScr(0, crdY) + 1
	  DataS = screen:byte(Delta)
          Flash = 0
	  if DataS > 128 then
	    Flash = 128
	    DataS = DataS - 128
	  end
	  if DataS > 64 then
	    Flash = 128
	    DataS = DataS - 64
	  end
	  PixInLine = 0
	  PixInLine = PixInLine + GetNumPix(DataS) --первый байт
	  for i=1,31,1 do                          --остальные 31 байт в строке
	    DataS = screen:byte(Delta+i)
	    PixInLine = PixInLine + GetNumPix(DataS)
	  end
	  PixInLine = ((PixInLine - (PixInLine%2))/2) + Flash
	  return PixInLine
	end
	
--преобразование числа в hex строку
	function NumToHex(Num)
	  local SymHex={}
	  local HexN
	  SymHex[0] ="0"
	  SymHex[1] ="1"
	  SymHex[2] ="2"
	  SymHex[3] ="3"
	  SymHex[4] ="4"
	  SymHex[5] ="5"
	  SymHex[6] ="6"
	  SymHex[7] ="7"
	  SymHex[8] ="8"
	  SymHex[9] ="9"
	  SymHex[10]="A"
	  SymHex[11]="B"
	  SymHex[12]="C"
	  SymHex[13]="D"
	  SymHex[14]="E"
	  SymHex[15]="F"

	  HexN = ""
--	  if Num > 15 then
	    x2 = (Num-(Num%16))/16
	    HexN = HexN..SymHex[x2]
--	  end
	  x2 = Num%16
	  HexN = HexN..SymHex[x2]
	  return HexN
	end

--сохранение преобразованного объекта в файл *.bin
	function SaveScrBin(Num)
	  local fscr
	  fnamedat = "!Bin/cocpit_"..NumToHex(Num).."_dat.bin"
	  fnameatr = "!Bin/cocpit_"..NumToHex(Num).."_atr.bin"
	  fnamescr = "cocpit_"..NumToHex(Num)..".scr"
	  fdat = assert(io.open(fnamedat, "wb"))
	  fatr = assert(io.open(fnameatr, "wb"))
	  fscr = io.open(fnamescr, "rb")

	  if fscr==Nil then
	    fscr = io.open("cocpit_base.scr", "rb")
	  end
	  screen = fscr:read("*a")

	  for i=1,128,1 do
            Line = GetLineScr(192-i)
	    assert(fbin:write(string.pack("b", Line)))
	  end
	  assert(fbin:flush())
	  assert(fbin:close())
	  assert(fscr:close())
	end


	for i=0,19,1 do
	  SaveScrBin(i)
	end

	fnamedat = "!Bin/obj_grf.dat"
	fdat = assert(io.open(fnamedat, "wb"))
	for i=0,123,1 do
	  fnamebin = "ObjBin/object_"..NumToHex(i)..".bin"
--	  fnamebin = "!Bin/object_"..NumToHex(i)..".bin"
	  fbin = io.open(fnamebin, "rb")
	  databin = fbin:read("*a")
	  for j=1,128,1 do
	    DatBin = databin:byte(j)
	    assert(fdat:write(string.pack("b", DatBin)))
	  end
	  assert(fbin:close())
	end
	assert(fdat:flush())
	assert(fdat:close())




	ENDLUA

