- -- Export Tiles as BMPs 
-   
- function num_to_char ( number ) 
-  return ( string.char ( math.mod ( math.mod ( number, 256 ) + 256, 256 ) ) ) 
- end 
-   
- function writeIntLSB ( file, number ) 
-  file:write ( num_to_char( number )) -- x>>0 
-  file:write ( num_to_char( number / 256 )) -- x>>8 
-  file:write ( num_to_char( number / 65536 )) -- x>>16 
-  file:write ( num_to_char( number / 16777216 )) -- x>>24 
- end 
-   
- function main () 
-  if mappy.msgBox ("Export Tiles as BMPs", "This saves the graphics tiles as individual BMP files. Enter the filename WITHOUT the .BMP extension (T???.BMP is added).\n\nRun the script (you will be prompted for a filename to save as)?", mappy.MMB_OKCANCEL, mappy.MMB_ICONQUESTION) == mappy.MMB_OK then 
-   
-   local w = mappy.getValue(mappy.BLOCKWIDTH) 
-   local h = mappy.getValue(mappy.BLOCKHEIGHT) 
-   local wp = mappy.andVal(w,-4) 
-   
-   if (mappy.getValue(mappy.MAPWIDTH) == 0) then 
-    mappy.msgBox ("Export Tiles as BMPs", "You need to load or create a map first", mappy.MMB_OK, mappy.MMB_ICONINFO) 
-   else 
-   
-    local isok,asname = mappy.fileRequester (".", "BMP files (*.bmp)", "*.bmp", mappy.MMB_SAVE) 
-    if isok == mappy.MMB_OK then 
-   
-     local isok,tstrt,tend = mappy.doDialogue ("Export Tiles as BMPs", "Range:", "0,"..(mappy.getValue(mappy.NUMBLOCKGFX)-1), mappy.MMB_DIALOGUE2) 
-     if isok == mappy.MMB_OK then 
-   
-     tstrt = tonumber (tstrt) 
-     tend = tonumber (tend) 
-     local tnum = tstrt 
-     while (tnum <= tend) do 
- -- open file as binary 
-      outas = io.open (asname..string.format("T%03d",tnum)..".BMP", "wb") 
-   
- -- BITMAPFILEHEADER 
-      outas:write ('B') 
-      outas:write ('M') 
-      writeIntLSB (outas, 0) 
-      writeIntLSB (outas, 0) 
-      if (mappy.getValue(mappy.BLOCKDEPTH) == 8) then  
-       writeIntLSB (outas, 54+1024) 
-      else 
-       writeIntLSB (outas, 54) 
-      end 
-   
- -- BITMAPINFOHEADER 
-      writeIntLSB (outas, 40) 
-      writeIntLSB (outas, mappy.getValue(mappy.BLOCKWIDTH)) 
-      writeIntLSB (outas, mappy.getValue(mappy.BLOCKHEIGHT)) 
-      if (mappy.getValue(mappy.BLOCKDEPTH) == 8) then  
-       writeIntLSB (outas, 8*65536+1) 
-      else 
-       writeIntLSB (outas, 24*65536+1) 
-      end 
-      writeIntLSB (outas, 0) 
-      writeIntLSB (outas, 0) 
-      writeIntLSB (outas, 1000) 
-      writeIntLSB (outas, 1000) 
-      writeIntLSB (outas, 0) 
-      writeIntLSB (outas, 0) 
-   
- -- Palette for 8bit 
-      if (mappy.getValue(mappy.BLOCKDEPTH) == 8) then  
-       local x = 0 
-       while x < 256 do 
-        local a,r,g,b = mappy.getValue(mappy.PALETTEARGB+x) 
-        outas:write (num_to_char(b)) 
-        outas:write (num_to_char(g)) 
-        outas:write (num_to_char(r)) 
-        outas:write (num_to_char(0)) 
-        x = x + 1 
-       end 
-      end 
-   
-      local y = 0 
-      while y < h do 
-       local x = 0 
-       while x < w do 
- -- getPixel returns an index for 8bit, or a,r,g,b for other depths 
-        local i,r,g,b = mappy.getPixel (x, mappy.getValue(mappy.BLOCKHEIGHT)-(y+1), tnum) 
-        if (mappy.getValue(mappy.BLOCKDEPTH) == 8) then  
-         outas:write (num_to_char(i)) 
-        else 
-         outas:write (num_to_char(b)) 
-         outas:write (num_to_char(g)) 
-         outas:write (num_to_char(r)) 
-        end 
-        x = x + 1 
-       end 
- -- end of row BMP padding 
-       if (mappy.getValue(mappy.BLOCKDEPTH) > 8) then  
-        x = x * 3 
-       end 
-       if (mappy.andVal (x, 3) > 0) then 
-        outas:write (0) 
-        x = x + 1 
-       end 
-       if (mappy.andVal (x, 3) > 0) then 
-        outas:write (0) 
-        x = x + 1 
-       end 
-       if (mappy.andVal (x, 3) > 0) then 
-        outas:write (0) 
-       end 
-       y = y + 1 
-      end 
-      outas:close () 
-      tnum = tnum + 1 
-   
-     end 
-     end 
-    end 
-   end 
-  end 
- end 
-   
- test, errormsg = pcall( main ) 
- if not test then 
-     mappy.msgBox("Error ...", errormsg, mappy.MMB_OK, mappy.MMB_ICONEXCLAMATION) 
- end 
-