Author Topic: fastest way to draw a 2-color 8x8 tile (with variable colors)?  (Read 10673 times)

0 Members and 1 Guest are viewing this topic.

Offline madscijr

  • Seasoned Forum Regular
  • Posts: 295
    • View Profile
fastest way to draw a 2-color 8x8 tile (with variable colors)?
« on: February 19, 2022, 04:48:42 pm »
I'm looking to find the fastest way to draw 2-color tiles to the screen,
where the tiles are 8x8, and the 2 colors can be changed for each tile.
Here is my test code, comparing various methods,
like line, pset, putimage w/color swap,
pre-calculated screen & tileset coordinates,
alongside various square and circle routines.
I even tried a version that uses pre-calculated bit patterns for each of the 8 lines in a tile.
That version was slightly slower than the putimage with swap colors.

The fastest drawing method by far is the simple
Code: QB64: [Select]
  1. Line (iX, iY)-(iX2, iY2), fgColor, BF ' Draw a solid box
which is 10-20x faster than the various tile drawing methods.
The plain circle command was pretty fast too.
The fastest method to draw a shape (a vector shape, not a raster tile)
was with the line command, however I am looking to draw 8x8 raster tiles.

The version which pre-calculates the tilesheet position and screen coordinates was surprisingly NOT much faster than without.

Any thoughts on a faster way to achieve drawing an 8x8 2-color tile (with variable colors)?

Here is the test program in case you want to see it in action:

Code: QB64: [Select]
  1. ' What is the fastest way to draw a 2-color 8x8 tile,
  2. ' where the 2 colors (foreground, background)
  3. ' are variable?
  4.  
  5. ' ################################################################################################################################################################
  6. ' #CONSTANTS = GLOBAL CONSTANTS
  7.  
  8. ' BOOLEAN VALUES
  9. Const FALSE = 0
  10. Const TRUE = Not FALSE
  11.  
  12. ' ################################################################################################################################################################
  13. ' #UDT #TYPES = USER DEFINED TYPES
  14.  
  15. ' UDT TO HOLD COLOR CODE INFO
  16. Type ColorType
  17.     name As String
  18.     value As _Unsigned Long
  19. End Type ' ColorType
  20.  
  21. ' UDT FOR PRECALCULATED TILESHEET
  22. Type TileSheetMapType
  23.     xStart As Integer
  24.     xEnd As Integer
  25.     yStart As Integer
  26.     yEnd As Integer
  27.  
  28. ' UDT FOR PRECALCULATED TILE MAP
  29. Type TileMapType
  30.     xPos As Integer
  31.     yPos As Integer
  32.  
  33. ' ################################################################################################################################################################
  34. ' #VARS = GLOBAL VARIABLES
  35.  
  36. ' ENABLE / DISABLE DEBUG CONSOLE
  37. Dim Shared m_bDebug As Integer: m_bDebug = TRUE
  38.  
  39. ' BASIC PROGRAM METADATA
  40. Dim Shared m_ProgramPath$: m_ProgramPath$ = Left$(Command$(0), _InStrRev(Command$(0), "\"))
  41. Dim Shared m_ProgramName$: m_ProgramName$ = Mid$(Command$(0), _InStrRev(Command$(0), "\") + 1)
  42.  
  43. ' USED BY TIMER
  44. Dim Shared m_iTimerCount As Long
  45.  
  46. ' =============================================================================
  47. ' LOCAL VARIABLES
  48. Dim in$
  49.  
  50. ' ****************************************************************************************************************************************************************
  51. ' ACTIVATE DEBUGGING WINDOW
  52. If m_bDebug = TRUE Then
  53.     $Console
  54.     _Delay 4
  55.     _Console On
  56.     _Echo "Started " + m_ProgramName$
  57.     _Echo "Debugging on..."
  58. ' ****************************************************************************************************************************************************************
  59.  
  60. ' =============================================================================
  61. ' START THE MAIN ROUTINE
  62. main
  63. 'GeneratePset8BitPatternCode
  64.  
  65. ' =============================================================================
  66. ' FINISH
  67. 'Print m_ProgramName$ + " finished."
  68. 'Input "Press <ENTER> to continue", in$
  69.  
  70. ' ****************************************************************************************************************************************************************
  71. ' DEACTIVATE DEBUGGING WINDOW
  72. If m_bDebug = TRUE Then
  73. ' ****************************************************************************************************************************************************************
  74.  
  75. System ' return control to the operating system
  76.  
  77. ' /////////////////////////////////////////////////////////////////////////////
  78.  
  79. Sub Main
  80.     Dim sError As String : sError = ""
  81.         Dim bContinue As Integer : bContinue = TRUE
  82.        
  83.         ' FOR SCREEN AND GRAPHICS
  84.         Dim imgScreen&
  85.     Dim imgTiles&
  86.    
  87.         ' FOR PRECALCULATED TILESHEET
  88.         ReDim arrTileSheet8Map(255) As TileSheetMapType
  89.         ReDim arrTile8Map(128, 96) As TileMapType
  90.         dim TileCount%
  91.         dim TilesheetCols%
  92.         dim TilesheetRows%
  93.         dim tileWidthPx%
  94.         dim tileHeightPx%
  95.         dim xOffset%
  96.         dim yOffset%
  97.         dim numTilesX%
  98.         dim numTilesY%
  99.        
  100.         ' TEST COUNTS
  101.         Dim iDrawBoxLineCount As Long : iDrawBoxLineCount = 0
  102.         Dim iDrawBoxDrawCount As Long : iDrawBoxDrawCount = 0
  103.         Dim iDrawBoxPsetCount As Long : iDrawBoxPsetCount = 0
  104.         Dim iCircleCount1 As Long : iCircleCount1 = 0
  105.         Dim iCircleCount2 As Long : iCircleCount2 = 0
  106.         Dim iCircleCount3 As Long : iCircleCount3 = 0
  107.         Dim iDraw1Count As Long : iDraw1Count = 0
  108.         Dim iDraw2Count As Long : iDraw2Count = 0
  109.         Dim iPsetCount As Long : iPsetCount = 0
  110.         Dim iLineCount As Long : iLineCount = 0
  111.         Dim iDrawColorTileCount As Long : iDrawColorTileCount = 0
  112.         Dim iDrawPrecalcColorTileCount As Long : iDrawPrecalcColorTileCount = 0
  113.         Dim iTileCount3 As Long : iTileCount3 = 0
  114.         Dim iTileCount4 As Long : iTileCount4 = 0
  115.         Dim iTileCount5 As Long : iTileCount5 = 0
  116.        
  117.         ' OTHER TEST VARIABLES
  118.         Dim iMS As Integer : iMS = 0
  119.         Dim iStartX As Integer : iStartX = 0
  120.         Dim iMaxX As Integer : iMaxX = 1024-8
  121.         Dim iStartY As Integer : iStartY = 0
  122.         Dim iMaxY As Integer : iMaxY = 1
  123.         Dim iX As Integer : iX = iStartX
  124.         Dim iY As Integer : iY = iStartY
  125.         Dim arrColor(0 To 12) As _UNSIGNED Long
  126.         Dim iColor As Integer : iColor = 1
  127.         Dim iStartColor As Integer
  128.         Dim iEndColor As Integer
  129.         Dim timerhandle%
  130.         Dim iStartLine As Integer
  131.         Dim bgColor As _UNSIGNED Long
  132.         Dim iTestLines As Integer
  133.         Dim iTimerMax As Integer
  134.         Dim iNumTests As Integer: iNumTests = 14
  135.         Dim iDiameter As Integer : iDiameter = 7
  136.         Dim iNextTile As Integer : iNextTile = 65
  137.         Dim iOffsetX As Integer : iOffsetX = 0
  138.         Dim iOffsetY As Integer : iOffsetY = 0
  139.         Dim iRows As Integer
  140.         Dim iCols As Integer
  141.         Dim iRow As Integer
  142.         Dim iCol As Integer
  143.         Dim iStartRow As Integer
  144.         Dim iStartCol As Integer
  145.         Dim iMaxRow As Integer
  146.         Dim iMaxCol As Integer
  147.         ReDim arrColor2(-1) As ColorType
  148.        
  149.         ' TILE V2 VERSION
  150.         ReDim arrTileData(0 to 255, 0 To 7, 0 To 7) As Integer
  151.        
  152.         ' TILE V3 VERSION
  153.         ReDim arrTileBytes(0 to 255, 0 To 7) As Integer
  154.        
  155.         ' ================================================================================================================================================================
  156.         ' INIT VALUES
  157.         ' ================================================================================================================================================================
  158.         if len(sError)=0 then
  159.                 iTestLines = 3
  160.                 iTimerMax = 3
  161.                 arrColor(0) = cBlack
  162.                 arrColor(1) = cRed
  163.                 arrColor(2) = cLime
  164.                 arrColor(3) = cBlue
  165.                 arrColor(4) = cMagenta
  166.                 arrColor(5) = cYellow
  167.                 arrColor(6) = cOrange
  168.                 arrColor(7) = cGray
  169.                 arrColor(8) = cSilver
  170.                 arrColor(9) = cWhite
  171.                 arrColor(10) = cDodgerBlue
  172.                 arrColor(11) = cCyan
  173.                 arrColor(12) = cDeepPurple
  174.                 bgColor = arrColor(0)
  175.         end if
  176.    
  177.         ' ================================================================================================================================================================
  178.     ' INITIALIZE GRAPHICS TILES
  179.     ' ================================================================================================================================================================
  180.     if len(sError)=0 then
  181.         ' LOAD TILES (16 cols x 16 rows of 8x8 tiles)
  182.         ' LOAD TILES FROM TEXT DEFINITIONS IN Sub GetTileText
  183.         sError = GetTiles$(imgTiles&, cBlack, cEmpty)
  184.     end if
  185.        
  186.         ' ================================================================================================================================================================
  187.     ' INITIALIZE GRAPHICS TILES v2
  188.     ' ================================================================================================================================================================
  189.         if len(sError)=0 then
  190.                 sError = GetTiles2$(arrTileData())
  191.         end if
  192.        
  193.         ' ================================================================================================================================================================
  194.     ' INITIALIZE GRAPHICS TILES v3
  195.     ' ================================================================================================================================================================
  196.         if len(sError)=0 then
  197.                 sError = GetTiles3$(arrTileBytes())
  198.         end if
  199.        
  200.         ' ================================================================================================================================================================
  201.     ' PRECALCULATE TILESHEET AND SCREEN POSITIONS
  202.     ' ================================================================================================================================================================
  203.     if len(sError)=0 then
  204.                 ' COMPUTE LOCATIONS FOR 16X16 TILESHEET + SCREEN (FOR GRAPHICS)
  205.                 TileCount% = 256 ' # OF TILES
  206.                 TilesheetCols% = 16 ' # OF COLUMNS ON SOURCE TILE SHEET
  207.                 TilesheetRows% = 16 ' # OF ROWS    ON SOURCE TILE SHEET
  208.                 tileWidthPx% = 8 ' TILE WIDTH
  209.                 tileHeightPx% = 8 ' TILE HEIGHT
  210.                 xOffset% = 0 ' SCREEN OFFSET FROM LEFT
  211.                 yOffset% = 0 ' CREEN OFFSET FROM TOP
  212.                 numTilesX% = 128 ' HOW MANY TILES ACROSS
  213.                 numTilesY% = 96 ' HOW MANY TILES UP/DOWN
  214.                 ComputeTileLocations arrTileSheet8Map(), arrTile8Map(), TileCount%, TilesheetCols%, TilesheetRows%, tileWidthPx%, tileHeightPx%, xOffset%, yOffset%, numTilesX%, numTilesY%
  215.         end if
  216.        
  217.         ' ================================================================================================================================================================
  218.     ' LOAD BACKGROUND IMAGE
  219.     ' ================================================================================================================================================================
  220.     if len(sError)=0 then
  221.         imgScreen& = _NewImage(1024, 768, 32)
  222.         Screen imgScreen& : _ScreenMove 0, 0
  223.         Cls , bgColor ' set the background color
  224.     end if
  225.        
  226.         ' ================================================================================================================================================================
  227.         ' TILE TEST 2
  228.         ' ================================================================================================================================================================
  229.     IF TRUE=FALSE THEN
  230.         'if len(sError)=0 then
  231.         AddColors arrColor2()
  232.                 iColor = lbound(arrColor2)+2
  233.                
  234.                 iCols = _Width(0) \ _FontWidth
  235.         iRows = _Height(0) \ _FontHeight
  236.                 iStartX = iCols * 0.25
  237.                 iMaxX = iCols * 0.75
  238.                 iStartY = iRows * 0.25
  239.                 iMaxY = iRows * 0.75
  240.                 iX = iStartX
  241.                 iY = iStartY
  242.                 for iNextTile = 0 to 255
  243.                         'DrawColorTile imgScreen&, imgTiles&, iNextTile, _
  244.                         '       arrColor2(iColor).value, bgColor, _
  245.                         '       iX, iY, _
  246.                         '       iOffsetX, iOffsetY
  247.                        
  248.                         DrawTileBoxLine imgScreen&, arrTileData(), _
  249.                             iNextTile, iX, iY, arrColor2(iColor).value, bgColor
  250.                        
  251.                         iX = iX + 1
  252.                         if iX > iMaxX then
  253.                                 iX = iStartX
  254.                                 iY = iY + 1
  255.                                 if iY > iMaxY then Exit For
  256.                         end if
  257.                         iColor = iColor + 1
  258.                         if iColor >= ubound(arrColor2) then iColor = lbound(arrColor2)+2
  259.                 next iNextTile
  260.                
  261.                 bContinue = FALSE
  262.     end if
  263.        
  264.         ' ================================================================================================================================================================
  265.         ' BEGIN RUN TESTS
  266.         ' ================================================================================================================================================================
  267.         if len(sError)=0 and bContinue = TRUE then
  268.         'if len(sError)=0 then
  269.                 ' SETUP TIMER + INITIALIZE TESTS
  270.                 timerhandle% = _FreeTimer ' get a timer number from _FREETIMER ONLY!
  271.                 On Timer(timerhandle%, 1) CheckTime
  272.                 Timer(timerhandle%) On
  273.                
  274.                 iStartLine = 0
  275.                 iCols = _Width(0) \ _FontWidth
  276.         iRows = _Height(0) \ _FontHeight
  277.                 iStartX = _Width(0) * 0.25 ' iCols * 0.25
  278.                 iMaxX = _Width(0) * 0.75 ' iCols * 0.75
  279.                 'iStartY = iRows * 0.25
  280.                 'iMaxY = iRows * 0.75
  281.                
  282.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  283.                 ' OTHER METHODS?
  284.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  285.                 ' TO TRY:
  286.                 ' 4-bit pattern (hexidecimal)?
  287.                 ' 64-bit pattern (would be lots of code, 4096 routines!)
  288.                
  289.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  290.                 ' TEST COLOR TILES - PSET 8 BYTE 8-BIT PATTERN
  291.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  292.                 iStartLine = iStartLine + 1
  293.                 Locate iStartLine, 1: Print "Testing DrawTileBitPattern8PSET..."
  294.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  295.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  296.         iStartColor = 1: iEndColor = 3 : iColor = iStartColor
  297.                
  298.                 iNextTile = 65
  299.                 iStartRow = (iStartY \ 8)
  300.                 iStartCol = (iStartX \ 8)
  301.                 iMaxRow = (iMaxY \ 8)
  302.                 iMaxCol = (iMaxX \ 8)
  303.                 iRow = iStartRow
  304.                 iCol = iStartCol
  305.                
  306.                 Do
  307.                         DrawTileBitPattern8PSET imgScreen&, arrTileBytes(), _
  308.                             iNextTile, iCol, iRow, arrColor(iColor), bgColor
  309.                         iTileCount5 = iTileCount5 + 1
  310.                         iCol = iCol + 1 : if iCol > iMaxCol then iCol = iStartCol : iRow = iRow + 1 : if iRow > iMaxRow then iRow = iStartRow
  311.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  312.                 Loop Until m_iTimerCount > iTimerMax
  313.                
  314.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  315.                 ' TEST COLOR TILES - PSET PIXEL-BY-PIXEL
  316.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  317.                 iStartLine = iStartLine + 1
  318.                 Locate iStartLine, 1: Print "Testing DrawTilePSET..."
  319.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  320.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  321.         iStartColor = 10: iEndColor = 12 : iColor = iStartColor
  322.                
  323.                 iNextTile = 65
  324.                 iStartRow = (iStartY \ 8)
  325.                 iStartCol = (iStartX \ 8)
  326.                 iMaxRow = (iMaxY \ 8)
  327.                 iMaxCol = (iMaxX \ 8)
  328.                 iRow = iStartRow
  329.                 iCol = iStartCol
  330.                
  331.                 Do
  332.                         DrawTilePSET imgScreen&, arrTileData(), _
  333.                             iNextTile, iCol, iRow, arrColor(iColor), bgColor
  334.                         iTileCount4 = iTileCount4 + 1
  335.                         iCol = iCol + 1 : if iCol > iMaxCol then iCol = iStartCol : iRow = iRow + 1 : if iRow > iMaxRow then iRow = iStartRow
  336.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  337.                 Loop Until m_iTimerCount > iTimerMax
  338.                
  339.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  340.                 ' TEST COLOR TILES - LINE PIXEL-BY-PIXEL
  341.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  342.                 iStartLine = iStartLine + 1
  343.                 Locate iStartLine, 1: Print "Testing DrawTileBoxLine..."
  344.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  345.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  346.         iStartColor = 4: iEndColor = 6 : iColor = iStartColor
  347.                
  348.                 iNextTile = 65
  349.                 iStartRow = (iStartY \ 8)
  350.                 iStartCol = (iStartX \ 8)
  351.                 iMaxRow = (iMaxY \ 8)
  352.                 iMaxCol = (iMaxX \ 8)
  353.                 iRow = iStartRow
  354.                 iCol = iStartCol
  355.                
  356.                 Do
  357.                         DrawTileBoxLine imgScreen&, arrTileData(), _
  358.                             iNextTile, iCol, iRow, arrColor(iColor), bgColor
  359.                         iTileCount3 = iTileCount3 + 1
  360.                         iCol = iCol + 1 : if iCol > iMaxCol then iCol = iStartCol : iRow = iRow + 1 : if iRow > iMaxRow then iRow = iStartRow
  361.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  362.                 Loop Until m_iTimerCount > iTimerMax
  363.                
  364.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  365.                 ' TEST COLOR TILES - PRECALCULATED
  366.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  367.                 iStartLine = iStartLine + 1
  368.                 Locate iStartLine, 1: Print "Testing DrawColorTileFast..."
  369.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  370.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  371.                
  372.         AddColors arrColor2()
  373.                 iStartColor = lbound(arrColor2)+2
  374.                 iEndColor = ubound(arrColor2)-2
  375.                 iColor = iStartColor
  376.                
  377.                 iNextTile = 65
  378.                 iStartRow = (iStartY \ 8) + 1
  379.                 iStartCol = (iStartX \ 8) + 1
  380.                 iMaxRow = (iMaxY \ 8) + 1
  381.                 iMaxCol = (iMaxX \ 8) + 1
  382.                 iRow = iStartRow
  383.                 iCol = iStartCol
  384.                 iStartColor = 10: iEndColor = 12 : iColor = iStartColor
  385.                
  386.                 Do
  387.                         DrawColorTileFast imgScreen&, imgTiles&, _
  388.                                 arrTileSheet8Map(), arrTile8Map(), _
  389.                                 tileWidthPx%, tileHeightPx%, _
  390.                                 iNextTile, arrColor2(iColor).value, bgColor, _
  391.                                 iCol, iRow
  392.                         iDrawPrecalcColorTileCount = iDrawPrecalcColorTileCount + 1
  393.                         iCol = iCol + 1 : if iCol > iMaxCol then iCol = iStartCol : iRow = iRow + 1 : if iRow > iMaxRow then iRow = iStartRow
  394.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  395.                 Loop Until m_iTimerCount > iTimerMax
  396.                
  397.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  398.                 ' TEST COLOR TILES
  399.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  400.                 iStartLine = iStartLine + 1
  401.                 Locate iStartLine, 1: Print "Testing DrawColorTile..."
  402.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  403.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  404.                
  405.         AddColors arrColor2()
  406.                 iStartColor = lbound(arrColor2)+2
  407.                 iEndColor = ubound(arrColor2)-2
  408.                 iColor = iStartColor
  409.                
  410.                 iNextTile = 65
  411.                 iStartRow = iStartY \ 8
  412.                 iStartCol = iStartX \ 8
  413.                 iMaxRow = iMaxY \ 8
  414.                 iMaxCol = iMaxX \ 8
  415.                 iRow = iStartRow
  416.                 iCol = iStartCol
  417.                 iStartColor = 1: iEndColor = 3 : iColor = iStartColor
  418.                
  419.                 Do
  420.                         DrawColorTile imgScreen&, imgTiles&, iNextTile, _
  421.                                 arrColor2(iColor).value, bgColor, _
  422.                                 iCol, iRow, _
  423.                                 iOffsetX, iOffsetY
  424.                         iDrawColorTileCount = iDrawColorTileCount + 1
  425.                         iCol = iCol + 1 : if iCol > iMaxCol then iCol = iStartCol : iRow = iRow + 1 : if iRow > iMaxRow then iRow = iStartRow
  426.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  427.                 Loop Until m_iTimerCount > iTimerMax
  428.                
  429.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  430.                 ' TEST BOXES - PSET
  431.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  432.                 iStartLine = iStartLine + 1
  433.                 Locate iStartLine, 1: Print "Testing DrawBoxPset..."
  434.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  435.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  436.                 iStartColor = 4: iEndColor = 6 : iColor = iStartColor
  437.                 Do
  438.                         DrawBoxPset iX, iY, 8, arrColor(iColor)
  439.                         iDrawBoxPsetCount = iDrawBoxPsetCount + 1
  440.                         iX = iX + 8 : if iX > iMaxX then iX = iStartX : iY = iY + 8 : if iY > iMaxY then iY = iStartY
  441.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  442.                 Loop Until m_iTimerCount > iTimerMax
  443.                
  444.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  445.                 ' TEST BOXES - DRAW
  446.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  447.                 iStartLine = iStartLine + 1
  448.                 Locate iStartLine, 1: Print "Testing DrawBoxDraw..."
  449.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  450.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  451.                 iStartColor = 1: iEndColor = 3 : iColor = iStartColor
  452.                 Do
  453.                         DrawBoxDraw iX, iY, 8, arrColor(iColor)
  454.                         iDrawBoxDrawCount = iDrawBoxDrawCount + 1
  455.                         iX = iX + 8 : if iX > iMaxX then iX = iStartX : iY = iY + 8 : if iY > iMaxY then iY = iStartY
  456.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  457.                 Loop Until m_iTimerCount > iTimerMax
  458.                
  459.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  460.                 ' TEST BOXES - LINE
  461.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  462.                 iStartLine = iStartLine + 1
  463.                 Locate iStartLine, 1: Print "Testing DrawBoxLine..."
  464.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  465.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  466.                 iStartColor = 7: iEndColor = 9 : iColor = iStartColor
  467.                 Do
  468.                         DrawBoxLine iX, iY, 8, arrColor(iColor)
  469.                         iDrawBoxLineCount = iDrawBoxLineCount + 1
  470.                         iX = iX + 8 : if iX > iMaxX then iX = iStartX : iY = iY + 8 : if iY > iMaxY then iY = iStartY
  471.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  472.                 Loop Until m_iTimerCount > iTimerMax
  473.                
  474.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  475.                 ' TEST CIRCLES fcircTopLeft
  476.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  477.                 iStartLine = iStartLine + 1
  478.                 Locate iStartLine, 1: Print "Testing fcircTopLeft..."
  479.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  480.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  481.                 iStartColor = 1: iEndColor = 3 : iColor = iStartColor
  482.                 Do
  483.                         fcircTopLeft iX, iY, iDiameter, arrColor(iColor)
  484.                         iCircleCount1 = iCircleCount1 + 1
  485.                         iX = iX + 8 : if iX > iMaxX then iX = iStartX : iY = iY + 8 : if iY > iMaxY then iY = iStartY
  486.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  487.                 Loop Until m_iTimerCount > iTimerMax
  488.                
  489.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  490.                 ' TEST BOXES - DrawCircleOutlineTopLeft
  491.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  492.                 iStartLine = iStartLine + 1
  493.                 Locate iStartLine, 1: Print "Testing DrawCircleOutlineTopLeft..."
  494.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  495.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  496.                 iStartColor = 4: iEndColor = 6 : iColor = iStartColor
  497.                 Do
  498.                         DrawCircleOutlineTopLeft iX, iY, iDiameter, arrColor(iColor), bgColor, 2
  499.                         iCircleCount2 = iCircleCount2 + 1
  500.                         iX = iX + 8 : if iX > iMaxX then iX = iStartX : iY = iY + 8 : if iY > iMaxY then iY = iStartY
  501.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  502.                 Loop Until m_iTimerCount > iTimerMax
  503.                
  504.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  505.                 ' TEST BOXES - DrawCircleTopLeft
  506.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  507.                 iStartLine = iStartLine + 1
  508.                 Locate iStartLine, 1: Print "Testing DrawCircleTopLeft..."
  509.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  510.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  511.                 iStartColor = 7: iEndColor = 9 : iColor = iStartColor
  512.                 Do
  513.                         DrawCircleTopLeft iX, iY, iDiameter, arrColor(iColor)
  514.                         iCircleCount3 = iCircleCount3 + 1
  515.                         iX = iX + 8 : if iX > iMaxX then iX = iStartX : iY = iY + 8 : if iY > iMaxY then iY = iStartY
  516.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  517.                 Loop Until m_iTimerCount > iTimerMax
  518.                
  519.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  520.                 ' TEST ARROWS - PSET
  521.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  522.                 iStartLine = iStartLine + 1
  523.                 Locate iStartLine, 1: Print "Testing PsetLeftArrow..."
  524.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  525.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  526.                 iStartColor = 1: iEndColor = 3 : iColor = iStartColor
  527.                 Do
  528.                         PsetLeftArrow iX, iY, arrColor(iColor)
  529.                         iPsetCount = iPsetCount + 1
  530.                         iX = iX + 8 : if iX > iMaxX then iX = iStartX : iY = iY + 8 : if iY > iMaxY then iY = iStartY
  531.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  532.                 Loop Until m_iTimerCount > iTimerMax
  533.                
  534.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  535.                 ' TEST ARROWS - DrawLeftArrow1
  536.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  537.                 iStartLine = iStartLine + 1
  538.                 Locate iStartLine, 1: Print "Testing DrawLeftArrow1..."
  539.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  540.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  541.                 iStartColor = 4: iEndColor = 6 : iColor = iStartColor
  542.                 Do
  543.                         DrawLeftArrow1 iX, iY, arrColor(iColor)
  544.                         iDraw1Count = iDraw1Count + 1
  545.                         iX = iX + 8 : if iX > iMaxX then iX = iStartX : iY = iY + 8 : if iY > iMaxY then iY = iStartY
  546.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  547.                 Loop Until m_iTimerCount > iTimerMax
  548.                
  549.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  550.                 ' TEST ARROWS - DrawLeftArrow2
  551.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  552.                 iStartLine = iStartLine + 1
  553.                 Locate iStartLine, 1: Print "Testing DrawLeftArrow2..."
  554.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  555.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  556.                 iStartColor = 7: iEndColor = 9 : iColor = iStartColor
  557.                 Do
  558.                         DrawLeftArrow2 iX, iY, arrColor(iColor)
  559.                         iDraw2Count = iDraw2Count + 1
  560.                         iX = iX + 8 : if iX > iMaxX then iX = iStartX : iY = iY + 8 : if iY > iMaxY then iY = iStartY
  561.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  562.                 Loop Until m_iTimerCount > iTimerMax
  563.                
  564.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  565.                 ' TEST ARROWS - LINE
  566.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  567.                 iStartLine = iStartLine + 1
  568.                 Locate iStartLine, 1: Print "Testing DrawLeftArrowLine..."
  569.                 iStartY = (iNumTests*16)+(iStartLine*( (iTestLines+1)*8)): iMaxY = iStartY + (iTestLines*8)
  570.                 m_iTimerCount = 0 : iX = iStartX : iY = iStartY
  571.                 iStartColor = 10: iEndColor = 12 : iColor = iStartColor
  572.                 Do
  573.                         DrawLeftArrowLine iX, iY, arrColor(iColor)
  574.                         'DrawA iX, iY, arrColor(iColor)
  575.                         iLineCount = iLineCount + 1
  576.                         iX = iX + 8 : if iX > iMaxX then iX = iStartX : iY = iY + 8 : if iY > iMaxY then iY = iStartY
  577.                         iColor = iColor + 1 : if iColor > iEndColor then iColor = iStartColor
  578.                 Loop Until m_iTimerCount > iTimerMax
  579.                
  580.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  581.                 ' CONCLUDE TEST + SHOW RESULTS
  582.                 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  583.                 Timer(timerhandle%) Off
  584.                 Timer(timerhandle%) Free ' release timer
  585.                
  586.                 Color cWhite, cBlack
  587.                 iRow = 1
  588.                
  589.                  
  590.                 Locate iRow, 1 : Print "DrawTileBitPattern8PSET : " + right$("          " + _Trim$(Str$(iTileCount5)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  591.                 Locate iRow, 1 : Print "DrawTilePSET            : " + right$("          " + _Trim$(Str$(iTileCount4)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  592.                 Locate iRow, 1 : Print "DrawTileBoxLine         : " + right$("          " + _Trim$(Str$(iTileCount3)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  593.                 Locate iRow, 1 : Print "DrawColorTileFast       : " + right$("          " + _Trim$(Str$(iDrawPrecalcColorTileCount)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  594.                 Locate iRow, 1 : Print "DrawColorTile           : " + right$("          " + _Trim$(Str$(iDrawColorTileCount)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  595.                 Locate iRow, 1 : Print "DrawBoxPset             : " + right$("          " + _Trim$(Str$(iDrawBoxPsetCount)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  596.                 Locate iRow, 1 : Print "DrawBoxDraw             : " + right$("          " + _Trim$(Str$(iDrawBoxDrawCount)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  597.                 Locate iRow, 1 : Print "DrawBoxLine             : " + right$("          " + _Trim$(Str$(iDrawBoxLineCount)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  598.                 Locate iRow, 1 : Print "fcircTopLeft            : " + right$("          " + _Trim$(Str$(iCircleCount1)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  599.                 Locate iRow, 1 : Print "DrawCircleOutlineTopLeft: " + right$("          " + _Trim$(Str$(iCircleCount2)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  600.                 Locate iRow, 1 : Print "DrawCircleTopLeft       : " + right$("          " + _Trim$(Str$(iCircleCount3)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  601.                 Locate iRow, 1 : Print "PsetLeftArrow           : " + right$("          " + _Trim$(Str$(iPSetCount)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  602.                 Locate iRow, 1 : Print "DrawLeftArrow1          : " + right$("          " + _Trim$(Str$(iDraw1Count)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  603.                 Locate iRow, 1 : Print "DrawLeftArrow2          : " + right$("          " + _Trim$(Str$(iDraw2Count)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  604.                 Locate iRow, 1 : Print "DrawLeftArrowLine       : " + right$("          " + _Trim$(Str$(iLineCount)), 10) + " in " + cstr$(iTimerMax) + " seconds." : iRow = iRow + 1
  605.         end if
  606.         ' ================================================================================================================================================================
  607.         ' END RUN TESTS
  608.         ' ================================================================================================================================================================
  609.        
  610.         ' SHOW ERRORS
  611.         if len(sError) > 0 then
  612.                 print sError
  613.         end if
  614.        
  615.         ' WAIT FOR USER TO PRESS A KEY
  616.         Sleep
  617.        
  618.     ' =============================================================================
  619.     ' FREE MEMORY
  620.     ' =============================================================================
  621.     'if len(sError)=0 then
  622.         Screen 0
  623.         IF imgScreen& < -1 OR imgScreen& > 0 THEN _FreeImage imgScreen&
  624.         IF imgTiles& < -1 OR imgTiles& > 0 THEN _FreeImage imgTiles&
  625.     'end if
  626.        
  627. End Sub ' Main
  628.  
  629. ' /////////////////////////////////////////////////////////////////////////////
  630.  
  631. Sub Main2
  632.         Cls
  633.         GetTilesTest2
  634.  
  635. ' /////////////////////////////////////////////////////////////////////////////
  636.  
  637. Sub GenerateBitPatterns8Bit
  638.         Dim iByte As Integer
  639.         Dim iBit As Integer
  640.         Dim sLine As String
  641.         Dim iCount As Integer: iCount = 0
  642.         Dim iPagesize As Integer: iPagesize = 23
  643.        
  644.         For iByte = 0 To 255
  645.                 sLine = ""
  646.                 For iBit = 7 To 0 Step -1
  647.                         If iByte And 2 ^ iBit Then
  648.                                 sLine = sLine + "1"
  649.                         Else
  650.                                 sLine = sLine + "0"
  651.                         End If
  652.                 Next iBit
  653.                 Print sLine
  654.                 iCount = iCount + 1
  655.                 If iCount = iPagesize Then
  656.                         iCount = 0
  657.                         Sleep
  658.                 End If
  659.         Next iByte
  660. End Sub ' GenerateBitPatterns8Bit
  661.  
  662. ' /////////////////////////////////////////////////////////////////////////////
  663.  
  664. Sub GeneratePset8BitPatternCode
  665.         Dim iByte As Integer
  666.         Dim iBit As Integer
  667.         Dim sTemplate1 As String
  668.         Dim sTemplate2 As String
  669.         Dim sCode1 As String
  670.         Dim sCode2 As String
  671.         Dim sLine As String
  672.         Dim iByte
  673.         Dim iCount As Integer: iCount = 0
  674.         Dim iPagesize As Integer: iPagesize = 64
  675.        
  676.         sTemplate1 = ""
  677.         sTemplate1 = sTemplate1 + "Sub DrawBitPatternPSET{byte}(  _ " + chr$(13)
  678.         sTemplate1 = sTemplate1 + "    imgScreen&, iCol As Integer, iRow As Integer, _ " + chr$(13)
  679.         sTemplate1 = sTemplate1 + "    iLine As Integer, _ " + chr$(13)
  680.         sTemplate1 = sTemplate1 + "    fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _ " + chr$(13)
  681.         sTemplate1 = sTemplate1 + "    )" + chr$(13)
  682.         sTemplate1 = sTemplate1 + "    Dim iX As Integer : iX = iCol * 8" + chr$(13)
  683.         sTemplate1 = sTemplate1 + "    Dim iY As Integer : iY = (iRow * 8) + iLine" + chr$(13)
  684.         sTemplate1 = sTemplate1 + "{template2}"
  685.         sTemplate1 = sTemplate1 + "End Sub ' DrawBitPatternPSET{byte}" + chr$(13)
  686.        
  687.         'sTemplate1 = ""
  688.         'sTemplate1 = sTemplate1 + "Sub DrawBitPatternPSET{byte}(imgScreen&, iCol As Integer, iRow As Integer, iLine As Integer, fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long)" + chr$(13)
  689.         'sTemplate1 = sTemplate1 + "    Dim iX As Integer : iX = iCol * 8" + chr$(13)
  690.         'sTemplate1 = sTemplate1 + "    Dim iY As Integer : iY = (iRow * 8) + iLine" + chr$(13)
  691.         'sTemplate1 = sTemplate1 + "{template2}"
  692.         'sTemplate1 = sTemplate1 + "End Sub ' DrawBitPatternPSET{byte}" + chr$(13)
  693.        
  694.         sTemplate2 = ""
  695.         sTemplate2 = sTemplate2 + "    PSET (iX+{bit}, iY), {color}" + chr$(13)
  696.        
  697.         sTemplate1 = Replace$(sTemplate1, chr$(13), "<br/>")
  698.         sTemplate2 = Replace$(sTemplate2, chr$(13), "<br/>")
  699.        
  700.         For iByte = 0 To 255
  701.                 sCode1 = sTemplate1
  702.                 sCode1 = Replace$(sCode1, "{byte}", right$("000" + cstr$(iByte), 3))
  703.                
  704.                 sCode2 = ""
  705.                 For iBit = 7 To 0 Step -1
  706.                         sLine = sTemplate2
  707.                         sLine = Replace$(sLine, "{bit}", cstr$(iBit))
  708.                         If iByte And 2 ^ iBit Then
  709.                                 sLine = Replace$(sLine, "{color}", "fgColor")
  710.                         Else
  711.                                 sLine = Replace$(sLine, "{color}", "bgColor")
  712.                         End If
  713.                         sCode2 = sCode2 + sLine
  714.                 Next iBit
  715.                
  716.                 sCode1 = Replace$(sCode1, "{template2}", sCode2)
  717.                
  718.                 DebugPrint sCode1
  719.                 DebugPrint ""
  720.                
  721.                 iCount = iCount + 1
  722.                 If iCount = iPagesize Then
  723.                         iCount = 0
  724.                         Print "Press any key to continue"
  725.                         Sleep
  726.                 End If
  727.         Next iByte
  728.        
  729.         Print "Press any key to continue"
  730.         Sleep
  731. End Sub ' GeneratePset8BitPatternCode
  732.  
  733. ' /////////////////////////////////////////////////////////////////////////////
  734. ' TEMPLATE:
  735. 'Sub DrawBitPatternPSET{byte}(  _
  736. '    imgScreen&, iCol As Integer, iRow As Integer, _
  737. '    iLine As Integer_
  738. '    fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  739. '    )
  740. '    Dim iX As Integer : iX = iCol * 8
  741. '    Dim iY As Integer : iY = (iRow * 8) + iLine
  742. ''    PSET (iX+{bit}, iY), {color}
  743. '    PSET (iX+0, iY), {color}
  744. '    PSET (iX+1, iY), {color}
  745. '    PSET (iX+2, iY), {color}
  746. '    PSET (iX+3, iY), {color}
  747. '    PSET (iX+4, iY), {color}
  748. '    PSET (iX+5, iY), {color}
  749. '    PSET (iX+6, iY), {color}
  750. '    PSET (iX+7, iY), {color}
  751. 'End Sub ' DrawBitPatternPSET{byte}
  752.  
  753. ' /////////////////////////////////////////////////////////////////////////////
  754. ' DrawTilePSET imgScreen&, arrTileData(), _
  755. '     iTileNum, iCol, iRow, fgColor, bgColor
  756.  
  757. Sub DrawTilePSET(  _
  758.         imgScreen&, arrTileData() As Integer, _
  759.         iTileNum As Integer, iCol As Integer, iRow As Integer, _
  760.         fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  761.         )
  762.        
  763.         Dim iStartX As Integer : iStartX = iCol * 8
  764.         Dim iStartY As Integer : iStartY = iRow * 8
  765.         Dim iX As Integer
  766.         Dim iY As Integer
  767.        
  768.         for iY = 0 to 7
  769.                 for iX = 0 to 7
  770.                         if arrTileData(iTileNum, iY, iX) = 1 then
  771.                                 'Line (iStartX+iX, iStartY+iY)-(iStartX+iX, iStartY+iY), fgColor, BF ' Draw a solid box
  772.                                 PSET (iStartX+iX, iStartY+iY), fgColor
  773.                         else
  774.                                 'Line (iStartX+iX, iStartY+iY)-(iStartX+iX, iStartY+iY), bgColor, BF ' Draw a solid box
  775.                                 PSET (iStartX+iX, iStartY+iY), bgColor
  776.                         end if
  777.                 next iX
  778.         next iY
  779. End Sub ' DrawTilePSET
  780.  
  781. ' /////////////////////////////////////////////////////////////////////////////
  782. ' DrawTileBoxLine imgScreen&, arrTileData(), _
  783. '     iTileNum, iCol, iRow, fgColor, bgColor
  784.  
  785. Sub DrawTileBoxLine(  _
  786.         imgScreen&, arrTileData() As Integer, _
  787.         iTileNum As Integer, iCol As Integer, iRow As Integer, _
  788.         fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  789.         )
  790.        
  791.         Dim iStartX As Integer : iStartX = iCol * 8
  792.         Dim iStartY As Integer : iStartY = iRow * 8
  793.         Dim iX As Integer
  794.         Dim iY As Integer
  795.        
  796.         for iY = 0 to 7
  797.                 for iX = 0 to 7
  798.                         if arrTileData(iTileNum, iY, iX) = 1 then
  799.                                 Line (iStartX+iX, iStartY+iY)-(iStartX+iX, iStartY+iY), fgColor, BF ' Draw a solid box
  800.                                 'Line -(iStartX+iX, iStartY+iY), fgColor, BF ' Draw a solid box
  801.                         else
  802.                                 Line (iStartX+iX, iStartY+iY)-(iStartX+iX, iStartY+iY), bgColor, BF ' Draw a solid box
  803.                                 'Line -(iStartX+iX, iStartY+iY), bgColor, BF ' Draw a solid box
  804.                         end if
  805.                 next iX
  806.         next iY
  807. End Sub ' DrawTileBoxLine
  808.  
  809. ' /////////////////////////////////////////////////////////////////////////////
  810. ' Tile method v2, test #2
  811.  
  812. Sub GetTilesTest2()
  813.         Dim RoutineName As String : RoutineName = "GetTilesTest"
  814.         ReDim arrTileData(0 to 255, 0 To 7, 0 To 7) As Integer
  815.         Dim sError As String
  816.         Dim iLoop As Integer
  817.         Dim iRow As Integer
  818.         Dim iCol As Integer
  819.         Dim sLine As String
  820.        
  821.         if len(sError)=0 then
  822.                 sError = GetTiles2$(arrTileData())
  823.         end if
  824.        
  825.         if len(sError)=0 then
  826.                 for iLoop = 65 to 71
  827.                         print "Char #" + cstr$(iLoop) + ":"
  828.                         print "##########"
  829.                         for iRow = 0 to 7
  830.                                 sLine = "#"
  831.                                 for iCol = 0 to 7
  832.                                         if arrTileData(iLoop, iRow, iCol) = 1 then
  833.                                                 sLine = sLine + "*"
  834.                                         elseif arrTileData(iLoop, iRow, iCol) = 0 then
  835.                                                 sLine = sLine + " "
  836.                                         else
  837.                                                 sLine = sLine + "?"
  838.                                         end if
  839.                                 next iCol
  840.                                 sLine = sLine + "#"
  841.                                 print sLine
  842.                         next iRow
  843.                         print "##########"
  844.                         print
  845.                         print "Press any key to continue"
  846.                         sleep
  847.                 next iLoop
  848.         else
  849.                 print RoutineName + " failed: " + sError
  850.         end if
  851. End Sub ' GetTilesTest2
  852.  
  853. ' /////////////////////////////////////////////////////////////////////////////
  854. ' Tile method v2
  855.  
  856. Sub GetTilesTest1()
  857.         Dim RoutineName As String : RoutineName = "GetTilesTest"
  858.         ReDim arrTileData(65 to 71, 0 To 7, 0 To 7) As Integer
  859.         Dim sError As String
  860.         Dim iLoop As Integer
  861.         Dim iRow As Integer
  862.         Dim iCol As Integer
  863.         Dim sLine As String
  864.        
  865.         if len(sError)=0 then
  866.                 sError = GetTiles2$(arrTileData())
  867.         end if
  868.        
  869.         if len(sError)=0 then
  870.                 for iLoop = 65 to 71
  871.                         print "Char #" + cstr$(iLoop) + ":"
  872.                         print "##########"
  873.                         for iRow = 0 to 7
  874.                                 sLine = "#"
  875.                                 for iCol = 0 to 7
  876.                                         if arrTileData(iLoop, iRow, iCol) = 1 then
  877.                                                 sLine = sLine + "*"
  878.                                         elseif arrTileData(iLoop, iRow, iCol) = 0 then
  879.                                                 sLine = sLine + " "
  880.                                         else
  881.                                                 sLine = sLine + "?"
  882.                                         end if
  883.                                 next iCol
  884.                                 sLine = sLine + "#"
  885.                                 print sLine
  886.                         next iRow
  887.                         print "##########"
  888.                         print
  889.                         print "Press any key to continue"
  890.                         sleep
  891.                 next iLoop
  892.         else
  893.                 print RoutineName + " failed: " + sError
  894.         end if
  895. End Sub ' GetTilesTest1
  896.  
  897. ' /////////////////////////////////////////////////////////////////////////////
  898. ' Tile method v3
  899. ' Retrieves tile data and returns it by ref in
  900. ' arrTileBytes(tile#, line#) containing 0-255,
  901. ' corresponding to the 8-bit byte pattern for that line #
  902. ' Returns empty string if successful, else error message if not.
  903.  
  904. Function GetTiles3$(arrTileBytes() As Integer)
  905.         Dim sError As String : sError = ""
  906.         dim sNextError As String : sNextError = ""
  907.     ReDim arrTileText(0 to 255) As String
  908.         ReDim MyArray(-1,-1) AS INTEGER
  909.         Dim iRowCount AS INTEGER
  910.         Dim iColCount AS INTEGER
  911.         Dim iLoop As Integer
  912.         Dim iRowNum As Integer
  913.         Dim iColNum As Integer
  914.         Dim iByte As Integer
  915.        
  916.         if len(sError) = 0 then
  917.                 'GetTileText2 arrTileText()
  918.                 GetTileText arrTileText()
  919.         end if
  920.        
  921.         if len(sError) = 0 then
  922.                 for iLoop = 0 to 255
  923.                         sNextError = CharStringToArray$ ( _
  924.                                 arrTileText(iLoop), _
  925.                                 "2", _
  926.                                 ".", _
  927.                                 8, _
  928.                                 8, _
  929.                                 1, _
  930.                                 0, _
  931.                                 -1, _
  932.                                 MyArray(), _
  933.                                 iRowCount, _
  934.                                 iColCount)
  935.                         if len(sNextError)=0 then
  936.                                 for iRowNum = 1 to 8
  937.                                         arrTileBytes(iLoop, iRowNum-1) = 0
  938.                                         for iColNum = 1 to 8
  939.                                                 if MyArray(iRowNum, iColNum)=1 then
  940.                                                         iByte = iColNum-1
  941.                                                         arrTileBytes(iLoop, iRowNum-1) = arrTileBytes(iLoop, iRowNum-1) + 2 ^ iByte
  942.                                                 end if
  943.                                         next iColNum
  944.                                 next iRowNum
  945.                         else
  946.                                 print "Error at " + cstr$(iLoop) + ": " + sError
  947.                         end if
  948.                 next iLoop
  949.         end if
  950.        
  951.         GetTiles3$ = sError
  952. End Function ' GetTiles3$
  953.  
  954. ' /////////////////////////////////////////////////////////////////////////////
  955. ' Tile method v2
  956. ' Retrieves tile data and returns it by ref in
  957. ' arrTileData(tile#, x pixel, y pixel) containing 1 or 0 for each pixel.
  958. ' Returns empty string if successful, else error message if not.
  959.  
  960. Function GetTiles2$(arrTileData() As Integer)
  961.         Dim sError As String : sError = ""
  962.         dim sNextError As String : sNextError = ""
  963.     ReDim arrTileText(0 to 255) As String
  964.         ReDim MyArray(-1,-1) AS INTEGER
  965.         Dim iRowCount AS INTEGER
  966.         Dim iColCount AS INTEGER
  967.         Dim iLoop As Integer
  968.         Dim iRowNum As Integer
  969.         Dim iColNum As Integer
  970.        
  971.         if len(sError) = 0 then
  972.                 'GetTileText2 arrTileText()
  973.                 GetTileText arrTileText()
  974.         end if
  975.        
  976.         if len(sError) = 0 then
  977.                 for iLoop = 0 to 255
  978.                         sNextError = CharStringToArray$ ( _
  979.                                 arrTileText(iLoop), _
  980.                                 "2", _
  981.                                 ".", _
  982.                                 8, _
  983.                                 8, _
  984.                                 1, _
  985.                                 0, _
  986.                                 -1, _
  987.                                 MyArray(), _
  988.                                 iRowCount, _
  989.                                 iColCount)
  990.                         if len(sNextError)=0 then
  991.                                 for iRowNum = 1 to 8
  992.                                         for iColNum = 1 to 8
  993.                                                 arrTileData(iLoop, iRowNum-1, iColNum-1) = MyArray(iRowNum, iColNum)
  994.                                         next iColNum
  995.                                 next iRowNum
  996.                         else
  997.                                 print "Error at " + cstr$(iLoop) + ": " + sError
  998.                         end if
  999.                 next iLoop
  1000.         end if
  1001.        
  1002.         GetTiles2$ = sError
  1003. End Function ' GetTiles2$
  1004.  
  1005. ' /////////////////////////////////////////////////////////////////////////////
  1006.  
  1007. 'CharStringToArray  MyString, MyArray(-1,-1), iRowCount, iColCount
  1008.  
  1009. Function CharStringToArray$ ( _
  1010.     sInput AS STRING, _
  1011.         sPixel AS STRING, _
  1012.         sEmpty AS STRING, _
  1013.         iMaxRows AS INTEGER, _
  1014.         iMaxCols AS INTEGER, _
  1015.     iPixel AS INTEGER, _
  1016.         iEmpty AS INTEGER, _
  1017.         iUnknown AS INTEGER, _
  1018.     MyArray(-1,-1) AS INTEGER, _
  1019.     iRowCount AS INTEGER, _
  1020.         iColCount AS INTEGER)
  1021.    
  1022.     REDIM arrLines$(0)
  1023.     DIM iRow As Integer
  1024.     DIM iCol As Integer
  1025.     DIM sNextChar As String
  1026.     Dim sDelim AS STRING : sDelim = CHR$(13)
  1027.     DIM sError AS String : sError = ""
  1028.    
  1029.     ' SPLIT GRAPHIC INTO LINES
  1030.     if len(sError)=0 then
  1031.         split sInput, sDelim, arrLines$()
  1032.     end if
  1033.    
  1034.     ' COUNT ROWS, COLUMNS
  1035.     if len(sError)=0 then
  1036.         iRowCount = 0
  1037.         iColCount = 0
  1038.         FOR iRow = 0 TO UBOUND(arrLines$) ' LBOUND(arrLines$) TO UBOUND(arrLines$)
  1039.             IF iRow <= iMaxRows THEN
  1040.                 iRowCount = iRowCount + 1
  1041.                 FOR iCol = 1 TO LEN(arrLines$(iRow))
  1042.                     IF iCol <= iMaxCols THEN
  1043.                         IF iRowCount = 1 THEN
  1044.                             iColCount = iColCount + 1
  1045.                         END IF
  1046.                     ELSE
  1047.                         ' Exit if out of bounds
  1048.                         sError = "ERROR: Column " + cstr$(iCol) + " exceeds max specified columns " + cstr$(iMaxCols) + "."
  1049.                         EXIT FOR
  1050.                     END IF
  1051.                 NEXT iCol
  1052.             ELSE
  1053.                 ' Exit if out of bounds
  1054.                 sError = "ERROR: Row " + cstr$(iRow) + " exceeds max specified rows " + cstr$(iMaxRows) + "."
  1055.                 EXIT FOR
  1056.             END IF
  1057.         NEXT iRow
  1058.     end if
  1059.    
  1060.     ' POPULATE ARRAY
  1061.     if len(sError)=0 then
  1062.         ' SIZE ARRAY TO ACCOMODATE DATA
  1063.         REDIM MyArray(iRowCount, iColCount) AS INTEGER
  1064.        
  1065.         FOR iRow = 0 TO UBOUND(arrLines$) ' LBOUND(arrLines$) TO UBOUND(arrLines$)
  1066.             FOR iCol = 1 TO LEN(arrLines$(iRow))
  1067.                 sNextChar = MID$(arrLines$(iRow), iCol, 1)
  1068.                 IF (sNextChar = sPixel) THEN
  1069.                     MyArray(iRow+1, iCol) = iPixel
  1070.                 ELSEIF (sNextChar = sEmpty) THEN
  1071.                     MyArray(iRow+1, iCol) = iEmpty
  1072.                 ELSE
  1073.                     MyArray(iRow+1, iCol) = iUnknown
  1074.                 END IF
  1075.             NEXT iCol
  1076.         NEXT iRow
  1077.     ELSE
  1078.         ' RETURN ZERO ROW / COLUMN COUNT IF ERROR
  1079.         iRowCount = 0
  1080.         iColCount = 0
  1081.     END IF
  1082.        
  1083.         ' RETURN RESULT
  1084.         CharStringToArray$ = sError
  1085. END Function ' CharStringToArray$
  1086.  
  1087. ' /////////////////////////////////////////////////////////////////////////////
  1088.  
  1089. Sub CheckTime
  1090.     m_iTimerCount = m_iTimerCount + 1
  1091. End Sub ' CheckTime
  1092.  
  1093. ' /////////////////////////////////////////////////////////////////////////////
  1094.  
  1095. Sub DrawBoxLine(iX As Integer, iY As Integer, iSize As Integer, fgColor As _UNSIGNED Long)
  1096.         Dim iX2 As Integer : iX2 = iX + (iSize-1)
  1097.         Dim iY2 As Integer : iY2 = iY + (iSize-1)
  1098.         Line (iX, iY)-(iX2, iY2), fgColor, BF ' Draw a solid box
  1099. End Sub ' DrawBoxLine
  1100.  
  1101. ' /////////////////////////////////////////////////////////////////////////////
  1102. ' Syntax: DRAW drawString$
  1103.  
  1104. ' -----------------------------------------------------------------------------
  1105. ' * The drawString$ can be DRAW instructions in quotation marks or a STRING variable using DRAW instructions.
  1106. ' * DRAW starting coordinates can be set using PSET, PRESET, CIRCLE or LINE ending positions.
  1107. ' * Other graphic objects can be located at or relative to the last DRAW position using STEP.
  1108. ' * DRAW can inherit colors from other graphic statements such as PSET, LINE and CIRCLE.
  1109. ' * Draw strings use letters followed by the number of pixels to move, an angle, coordinate or a color value.
  1110. ' * Draw strings are flexible with spacing. Spacing is not required. DRAW will look for a number value after a valid letter.
  1111. ' * DRAW statements are not case sensitive.
  1112. '   - "B" (blind) before a line move designates that the line move will be hidden. Use to offset from a "P" or PAINT border.
  1113. '   - "C n" designates the color attribute or _RGB string numerical color value to be used in the draw statement immediately after.
  1114. '   - "M x, y" can move to another coordinate area of the screen. When a + or - sign is used before a coordinate,
  1115. '              it is a relative coordinate move similar to using the STEP graphics keyword. DRAW "M+=" + VARPTR$(variable%)
  1116. '   - "N" before a line move designates that the graphic cursor will return to the starting position after the line is drawn.
  1117. '   - "P f [, b]" is used to paint enclosed objects. f denotes the fill color and b the border color, if needed.
  1118. '   - "S n" changes the pixel move size of the lines. Default is 4 (1 pixel) minimum. "S8" would double the pixel line moves.
  1119. '   - "X" + VARPTR$(value) can draw another substring.
  1120. ' * Certain letter designations create line moves on the SCREEN. Each move is followed by the number of pixels:
  1121. '   - "D n" draws a line vertically DOWN n pixels.
  1122. '   - "E n" draws a diagonal / line going UP and RIGHT n pixels each direction.
  1123. '   - "F n" draws a diagonal \ line going DOWN and RIGHT n pixels each direction.
  1124. '   - "G n" draws a diagonal / LINE going DOWN and LEFT n pixels each direction.
  1125. '   - "H n" draws a diagonal \ LINE going UP and LEFT n pixels each direction.
  1126. '   - "L n" draws a line horizontally LEFT n pixels.
  1127. '   - "R n" draws a line horizontally RIGHT n pixels.
  1128. '   - "U n" draws a line vertically UP n pixels.
  1129. ' * Angles are used to rotate all subsequent draw moves.
  1130. '   - "A n" can use values of 1 to 3 to rotate up to 3 90 degree(270) angles.
  1131. '   - TA n" can use any n angle from -360 to 0 to 360 to rotate a DRAW (Turn Angle). "TA0" resets to normal.
  1132. '   - When VARPTR$ is used, DRAW functions such as TA angles use an equal sign: "TA=" + VARPTR$(angle%)
  1133. ' * The graphic cursor is set to the center of the program window on program start for STEP relative coordinates.
  1134. ' * DRAW can be used in any graphic screen mode, but cannot be used in the default screen mode 0 as it is text only.
  1135.  
  1136. '   - "B" (blind) before a line move designates that the line move will be hidden. Use to offset from a "P" or PAINT border.
  1137. '   - "M x, y" can move to another coordinate area of the screen. When a + or - sign is used before a coordinate,
  1138. '   - "R n" draws a line horizontally RIGHT n pixels.
  1139. '   - "D n" draws a line vertically DOWN n pixels.
  1140. '   - "L n" draws a line horizontally LEFT n pixels.
  1141. '   - "U n" draws a line vertically UP n pixels.
  1142. '   - "N" before a line move designates that the graphic cursor will return to the starting position after the line is drawn.
  1143. '   - "P f [, b]" is used to paint enclosed objects. f denotes the fill color and b the border color, if needed.
  1144.  
  1145. Sub DrawBoxDraw(iX As Integer, iY As Integer, iSize As Integer, fgColor As _UNSIGNED Long)
  1146.         Dim sDraw As String : sDraw = ""
  1147.         'Dim iSizeMinus1 As Integer : iSizeMinus1 = iSize - 1
  1148.        
  1149.         ' set color
  1150.         sDraw = sDraw + "C " + STR$(fgColor)
  1151.        
  1152.         ' lift pen + go to start
  1153.         sDraw = sDraw + " BM" + cstr$(iX) + "," + cstr$(iY)
  1154.        
  1155.         ' draw horizontal line right
  1156.         sDraw = sDraw + " R" + cstr$(iSize)
  1157.        
  1158.         ' draw vertical line down
  1159.         sDraw = sDraw + " D" + cstr$(iSize)
  1160.        
  1161.         ' draw horizontal line left
  1162.         sDraw = sDraw + " L" + cstr$(iSize)
  1163.        
  1164.         ' draw vertical line up
  1165.         sDraw = sDraw + " U" + cstr$(iSize)
  1166.        
  1167.         '' lift pen + move inside box outline
  1168.         'sDraw = sDraw + "BM" + cstr$(iX + 1) + "," + cstr$(iY + 1)
  1169.        
  1170.         ' fill box
  1171.         ' ERRORS OUT FOR SOME REASON:
  1172.         'sDraw = sDraw + " P" + cstr$(fgColor)
  1173.        
  1174.         'locate 1,1 : print sDraw
  1175.         DRAW sDraw
  1176. End Sub ' DrawBoxDraw
  1177.  
  1178. ' /////////////////////////////////////////////////////////////////////////////
  1179. ' PSET (X, Y), Color
  1180. ' draw will start where pset leaves off
  1181.  
  1182. Sub DrawBoxPset(iX As Integer, iY As Integer, iSize As Integer, fgColor As _UNSIGNED Long)
  1183.         Dim iSizeMinus1 As Integer : iSizeMinus1 = iSize - 1
  1184.         Dim iLoopX As Integer
  1185.         Dim iLoopY As Integer
  1186.         For iLoopY = iY to iY + iSizeMinus1
  1187.                 For iLoopX = iX to iX + iSizeMinus1
  1188.                         PSET (iLoopX, iLoopY), fgColor
  1189.                 Next iLoopX
  1190.         Next iLoopY
  1191.         PSET (iX+3, iY+3), fgColor
  1192. End Sub ' DrawBoxPset
  1193.  
  1194. ' /////////////////////////////////////////////////////////////////////////////
  1195. ' Uses built-in circle routine to draw a circle outline with line thickness 1.
  1196.  
  1197. ' DrawCircleTopLeft iTopLeftX, iTopLeftY, iDiameter, fgColor
  1198.  
  1199. Sub DrawCircleTopLeft (iTopLeftX As Integer, iTopLeftY As Integer, iDiameter As Integer, fgColor As _Unsigned Long)
  1200.     Dim iRadius As Integer: iRadius = iDiameter \ 2
  1201.     Circle (iTopLeftX + iRadius, iTopLeftY + iRadius), iRadius, fgColor 'circle with radius of 110 and dark gray
  1202. End Sub ' DrawCircle1
  1203.  
  1204. ' /////////////////////////////////////////////////////////////////////////////
  1205. ' Uses fcirc routine to draw a circle outline
  1206. ' of the specified line thickness.
  1207. '
  1208. ' Works but you have to supply a background color and the inside of the
  1209. ' circle is not transparent (background color covers what's underneath).
  1210.  
  1211. ' TODO: copy only the fgColor to the target image
  1212. '       to preserve background inside the circle.
  1213.  
  1214. ' DrawCircleOutlineTopLeft iTopLeftX, iTopLeftY, iDiameter, fgColor, bgColor, iThickness
  1215.  
  1216. Sub DrawCircleOutlineTopLeft (iTopLeftX As Integer, iTopLeftY As Integer, iDiameter As Integer, fgColor As _Unsigned Long, bgColor As _Unsigned Long, iThickness As Integer)
  1217.     Dim iRadius As Integer: iRadius = iDiameter \ 2
  1218.     Dim iCX As Integer: iCX = iTopLeftX + iRadius
  1219.     Dim iCY As Integer: iCY = iTopLeftY + iRadius
  1220.     fcirc iCX, iCY, iRadius, fgColor
  1221.        
  1222.         if iThickness <= 1 then
  1223.                 fcirc iCX, iCY, iRadius, fgColor
  1224.                 fcirc iCX, iCY, iRadius-1, bgColor
  1225.         elseif iThickness >= iRadius then
  1226.                 fcirc iCX, iCY, iRadius, fgColor
  1227.         else
  1228.                 fcirc iCX, iCY, iRadius, fgColor
  1229.                 fcirc iCX, iCY, iRadius-iThickness, bgColor
  1230.         end if
  1231. End Sub ' DrawCircleOutlineTopLeft
  1232.  
  1233. ' /////////////////////////////////////////////////////////////////////////////
  1234. ' bplus: The Gold Standard is even better than THE QB64 CIRCLE sub in this respect!
  1235. ' https://qb64forum.alephc.xyz/index.php?topic=1044.135
  1236.  
  1237. ' from Steve Gold standard
  1238.  
  1239. ' Example:
  1240. ' Screen _NewImage(800, 600, 32)
  1241. ' _ScreenMove 250, 60
  1242. ' For r = 250 To 0 Step -60
  1243. '     fcirc 400, 300, r, _RGBA(255, 255, 255, 100)
  1244. ' Next r
  1245.  
  1246. Sub fcirc (CX As Integer, CY As Integer, R As Integer, C As _Unsigned Long)
  1247.     Dim Radius As Integer, RadiusError As Integer
  1248.     Dim X As Integer, Y As Integer
  1249.  
  1250.     Radius = Abs(R)
  1251.     RadiusError = -Radius
  1252.     X = Radius
  1253.     Y = 0
  1254.  
  1255.     If Radius = 0 Then PSet (CX, CY), C: Exit Sub
  1256.  
  1257.     ' Draw the middle span here so we don't draw it twice in the main loop,
  1258.     ' which would be a problem with blending turned on.
  1259.     Line (CX - X, CY)-(CX + X, CY), C, BF
  1260.  
  1261.     While X > Y
  1262.         RadiusError = RadiusError + Y * 2 + 1
  1263.         If RadiusError >= 0 Then
  1264.             If X <> Y + 1 Then
  1265.                 Line (CX - Y, CY - X)-(CX + Y, CY - X), C, BF
  1266.                 Line (CX - Y, CY + X)-(CX + Y, CY + X), C, BF
  1267.             End If
  1268.             X = X - 1
  1269.             RadiusError = RadiusError - X * 2
  1270.         End If
  1271.         Y = Y + 1
  1272.         Line (CX - X, CY - Y)-(CX + X, CY - Y), C, BF
  1273.         Line (CX - X, CY + Y)-(CX + X, CY + Y), C, BF
  1274.     Wend
  1275. End Sub ' fcirc
  1276.  
  1277. ' /////////////////////////////////////////////////////////////////////////////
  1278. ' Same as fcirc but accepts coordinates for top left point instead of center
  1279. ' and diameter for size, instead of radius.
  1280.  
  1281. ' Example:
  1282. ' Screen _NewImage(800, 600, 32)
  1283. ' _ScreenMove 250, 60
  1284. ' For iLoop = 5 To 1 Step -1
  1285. '     fcircTopLeft 10, 10, iLoop * 10, _RGBA(255, 255, 255, 100)
  1286. ' Next iLoop
  1287.  
  1288. ' fcircTopLeft iTopLeftX, iTopLeftY, iDiameter, fgColor
  1289. Sub fcircTopLeft (iTopLeftX As Integer, iTopLeftY As Integer, iDiameter As Integer, fgColor As _Unsigned Long)
  1290.     Dim iRadius As Integer: iRadius = iDiameter \ 2
  1291.     Dim iCX As Integer: iCX = iTopLeftX + iRadius
  1292.     Dim iCY As Integer: iCY = iTopLeftY + iRadius
  1293.     fcirc iCX, iCY, iRadius, fgColor
  1294. End Sub ' fcircTopLeft
  1295.  
  1296. ' /////////////////////////////////////////////////////////////////////////////
  1297.  
  1298. Sub DrawA(iX As Integer, iY As Integer, fgColor As _UNSIGNED Long)
  1299.         DrawBoxLine iX, iY, 8, fgColor
  1300.         Line (iX+4, iY+1)-(iX+1, iY+4), fgColor ', B ' B=outline, BF=solid
  1301.         Line (iX+4, iY+1)-(iX+6, iY+4), fgColor ', B ' B=outline, BF=solid
  1302.         Line (iX+1, iY+4)-(iX+6, iY+4), fgColor ', B ' B=outline, BF=solid
  1303.         Line (iX+1, iY+4)-(iX+1, iY+6), fgColor ', B ' B=outline, BF=solid
  1304.         Line (iX+6, iY+4)-(iX+6, iY+6), fgColor ', B ' B=outline, BF=solid
  1305. End Sub ' DrawA
  1306.  
  1307. ' /////////////////////////////////////////////////////////////////////////////
  1308.  
  1309. Sub DrawLeftArrowLine(iX As Integer, iY As Integer, fgColor As _UNSIGNED Long)
  1310.         Dim iStartY As Integer : iStartY = iY + 3
  1311.         Line (iX, iStartY)-(iX+7, iStartY), fgColor ', B ' B=outline, BF=solid
  1312.         Line (iX, iStartY)-(iX+3, iY), fgColor ', B ' B=outline, BF=solid
  1313.         Line (iX, iStartY)-(iX+3, iStartY+3), fgColor ', B ' B=outline, BF=solid
  1314. End Sub ' DrawLeftArrowLine
  1315.  
  1316. ' /////////////////////////////////////////////////////////////////////////////
  1317. ' This uses draw with "BM" to move to the start of each line
  1318.  
  1319. Sub DrawLeftArrow1(iX As Long, iY As Long, fgColor As _UNSIGNED Long)
  1320.         Dim sDraw As String
  1321.         sDraw = ""
  1322.         sDraw = sDraw + "C" + STR$(fgColor)
  1323.         sDraw = sDraw + "BM" + cstr$(iX) + "," + cstr$(iY)
  1324.         sDraw = sDraw + "R8"
  1325.         sDraw = sDraw + "BM" + cstr$(iX) + "," + cstr$(iY)
  1326.         sDraw = sDraw + "F3"
  1327.         sDraw = sDraw + "BM" + cstr$(iX) + "," + cstr$(iY)
  1328.         sDraw = sDraw + "E3"
  1329.         DRAW sDraw
  1330. End Sub ' DrawLeftArrow1
  1331.  
  1332. ' /////////////////////////////////////////////////////////////////////////////
  1333. ' This uses draw with "N" to return the cursor to the start of each line
  1334. ' - "N" before a line move designates that the graphic cursor will return to the starting position after the line is drawn.
  1335.  
  1336. Sub DrawLeftArrow2(iX As Long, iY As Long, fgColor As _UNSIGNED Long)
  1337.         Dim sDraw As String
  1338.         sDraw = ""
  1339.         ' select color
  1340.         sDraw = sDraw + "C" + STR$(fgColor)
  1341.        
  1342.         ' lift pen + go to start
  1343.         sDraw = sDraw + "BM" + cstr$(iX) + "," + cstr$(iY)
  1344.        
  1345.         ' draw horizontal line + return to start
  1346.         sDraw = sDraw + "NR8"
  1347.        
  1348.         ' draw diagonal down + return to start
  1349.         sDraw = sDraw + "NF3"
  1350.        
  1351.         ' draw diagonal up
  1352.         sDraw = sDraw + "E3"
  1353.         DRAW sDraw
  1354. End Sub ' DrawLeftArrow2
  1355.  
  1356. ' /////////////////////////////////////////////////////////////////////////////
  1357. ' This uses PSET to draw the arrow pixel-by-pixel
  1358.  
  1359. ' PSET (X, Y), Color
  1360. ' draw will start where pset leaves off
  1361.  
  1362. Sub PsetLeftArrow(iX As Long, iY As Long, fgColor As _UNSIGNED Long)
  1363.         Dim iLoopX As Integer
  1364.         Dim iLoopY As Integer
  1365.         For iLoopX = iX to iX + 7 : PSET (iLoopX, iY), fgColor : Next iLoopX
  1366.         PSET (iX+1, iY-1), fgColor
  1367.         PSET (iX+2, iY-2), fgColor
  1368.         PSET (iX+3, iY-3), fgColor
  1369.         PSET (iX+1, iY+1), fgColor
  1370.         PSET (iX+2, iY+2), fgColor
  1371.         PSET (iX+3, iY+3), fgColor
  1372. End Sub ' PsetLeftArrow
  1373.  
  1374. ' /////////////////////////////////////////////////////////////////////////////
  1375. ' Convert a value to string and trim it (because normal Str$ adds spaces)
  1376.  
  1377. Function cstr$ (myValue)
  1378.     'cstr$ = LTRIM$(RTRIM$(STR$(myValue)))
  1379.     cstr$ = _Trim$(Str$(myValue))
  1380. End Function ' cstr$
  1381.  
  1382. ' /////////////////////////////////////////////////////////////////////////////
  1383. ' Does a _PrintString at the specified row+column.
  1384.  
  1385. ' iRow and iCol are 0-based.
  1386.  
  1387. Sub PrintString (iRow As Integer, iCol As Integer, MyString As String)
  1388.     Dim iX As Integer
  1389.     Dim iY As Integer
  1390.     iX = _FontWidth * iCol
  1391.     iY = _FontHeight * iRow ' (iRow + 1)
  1392.     _PrintString (iX, iY), MyString
  1393. End Sub ' PrintString
  1394.  
  1395. ' /////////////////////////////////////////////////////////////////////////////
  1396. ' Does a _PrintString at the specified row+column.
  1397.  
  1398. ' iRow and iCol are 1-based.
  1399.  
  1400. Sub PrintString1 (iRow As Integer, iCol As Integer, MyString As String)
  1401.     Dim iX As Integer
  1402.     Dim iY As Integer
  1403.     iX = _FontWidth * (iCol-1)
  1404.     iY = _FontHeight * (iRow-1)
  1405.     _PrintString (iX, iY), MyString
  1406. End Sub ' PrintString1
  1407.  
  1408. ' /////////////////////////////////////////////////////////////////////////////
  1409. ' FROM: String Manipulation
  1410. ' found at abandoned, outdated and now likely malicious qb64 dot net website
  1411. ' http://www.qb64.[net]/forum/index_topic_5964-0/
  1412. '
  1413. 'SUMMARY:
  1414. '   Purpose:  A library of custom functions that transform strings.
  1415. '   Author:   Dustinian Camburides (dustinian@gmail.com)
  1416. '   Platform: QB64 (www.qb64.org)
  1417. '   Revision: 1.6
  1418. '   Updated:  5/28/2012
  1419.  
  1420. 'SUMMARY:
  1421. '[Replace$] replaces all instances of the [Find] sub-string with the [Add] sub-string within the [Text] string.
  1422. 'INPUT:
  1423. 'Text: The input string; the text that's being manipulated.
  1424. 'Find: The specified sub-string; the string sought within the [Text] string.
  1425. 'Add: The sub-string that's being added to the [Text] string.
  1426.  
  1427. Function Replace$ (Text1 As String, Find1 As String, Add1 As String)
  1428.     ' VARIABLES:
  1429.     Dim Text2 As String
  1430.     Dim Find2 As String
  1431.     Dim Add2 As String
  1432.     Dim lngLocation As Long ' The address of the [Find] substring within the [Text] string.
  1433.     Dim strBefore As String ' The characters before the string to be replaced.
  1434.     Dim strAfter As String ' The characters after the string to be replaced.
  1435.  
  1436.     ' INITIALIZE:
  1437.     ' MAKE COPIESSO THE ORIGINAL IS NOT MODIFIED (LIKE ByVal IN VBA)
  1438.     Text2 = Text1
  1439.     Find2 = Find1
  1440.     Add2 = Add1
  1441.  
  1442.     lngLocation = InStr(1, Text2, Find2)
  1443.  
  1444.     ' PROCESSING:
  1445.     ' While [Find2] appears in [Text2]...
  1446.     While lngLocation
  1447.         ' Extract all Text2 before the [Find2] substring:
  1448.         strBefore = Left$(Text2, lngLocation - 1)
  1449.  
  1450.         ' Extract all text after the [Find2] substring:
  1451.         strAfter = Right$(Text2, ((Len(Text2) - (lngLocation + Len(Find2) - 1))))
  1452.  
  1453.         ' Return the substring:
  1454.         Text2 = strBefore + Add2 + strAfter
  1455.  
  1456.         ' Locate the next instance of [Find2]:
  1457.         lngLocation = InStr(1, Text2, Find2)
  1458.  
  1459.         ' Next instance of [Find2]...
  1460.     Wend
  1461.  
  1462.     ' OUTPUT:
  1463.     Replace$ = Text2
  1464. End Function ' Replace$
  1465.  
  1466. ' /////////////////////////////////////////////////////////////////////////////
  1467. ' Split and join strings
  1468. ' https://www.qb64.org/forum/index.php?topic=1073.0
  1469. '
  1470. ' FROM luke, QB64 Developer
  1471. ' Date: February 15, 2019, 04:11:07 AM »
  1472. '
  1473. ' Given a string of words separated by spaces (or any other character),
  1474. ' splits it into an array of the words. I've no doubt many people have
  1475. ' written a version of this over the years and no doubt there's a million
  1476. ' ways to do it, but I thought I'd put mine here so we have at least one
  1477. ' version. There's also a join function that does the opposite
  1478. ' array -> single string.
  1479. '
  1480. ' Code is hopefully reasonably self explanatory with comments and a little demo.
  1481. ' Note, this is akin to Python/JavaScript split/join, PHP explode/implode.
  1482.  
  1483. 'Split in$ into pieces, chopping at every occurrence of delimiter$. Multiple consecutive occurrences
  1484. 'of delimiter$ are treated as a single instance. The chopped pieces are stored in result$().
  1485. '
  1486. 'delimiter$ must be one character long.
  1487. 'result$() must have been REDIMmed previously.
  1488.  
  1489. ' Modified to handle multi-character delimiters
  1490.  
  1491. Sub split (in$, delimiter$, result$())
  1492.     Dim start As Integer
  1493.     Dim finish As Integer
  1494.     Dim iDelimLen As Integer
  1495.     ReDim result$(-1)
  1496.  
  1497.     iDelimLen = Len(delimiter$)
  1498.  
  1499.     start = 1
  1500.     Do
  1501.         'While Mid$(in$, start, 1) = delimiter$
  1502.         While Mid$(in$, start, iDelimLen) = delimiter$
  1503.             'start = start + 1
  1504.             start = start + iDelimLen
  1505.             If start > Len(in$) Then
  1506.                 Exit Sub
  1507.             End If
  1508.         Wend
  1509.         finish = InStr(start, in$, delimiter$)
  1510.         If finish = 0 Then
  1511.             finish = Len(in$) + 1
  1512.         End If
  1513.  
  1514.         ReDim _Preserve result$(0 To UBound(result$) + 1)
  1515.  
  1516.         result$(UBound(result$)) = Mid$(in$, start, finish - start)
  1517.         start = finish + 1
  1518.     Loop While start <= Len(in$)
  1519. End Sub ' split
  1520.  
  1521. ' /////////////////////////////////////////////////////////////////////////////
  1522. ' CIRCLE.BI
  1523. ' https://wiki.qb64.org/wiki/Alternative_circle_routine
  1524. '**
  1525. '** QB64 replacement CIRCLE command.
  1526. '**
  1527. '** The CIRCLE command in QB64 has a few issues:
  1528. '**
  1529. '** - radian end points are not calculate properly when creating arcs
  1530. '** - center line to radian end points do not close properly due to previous bug listed
  1531. '**
  1532. '** This circle command replacement works very similiarly to the native CIRCLE command:
  1533. '**
  1534. '** SYNTAX: CIRCLES x%, y%, radius!, color~&, start_radian!, end_radian!, aspect_ratio!
  1535. '**
  1536. '**   x%            - center X coordinate of circle
  1537. '**   y%            - center Y coordinate of circle
  1538. '**   radius!       - the radius of the circle
  1539. '**   color~&       - the circle's color
  1540. '**   start_radian! - the radian on circle curcunference to begin drawing at
  1541. '**   end_radian!   - the radian on circle circumference to end drawing at
  1542. '**   aspect_ratio! - the aspect ratio of the circle
  1543. '**
  1544. '** NOTE: unlike the native CIRCLE command, all arguments MUST be supplied. For example,
  1545. '**       with the native command this will draw a perfect circle with the default color,
  1546. '**       start radian, end radian and aspect ratio:
  1547. '**
  1548. '**       CIRCLE (319, 239), 100
  1549. '**
  1550. '**       To do the same thing with this replacement command you must supply everything:
  1551. '**
  1552. '**       CIRCLES 319, 239, 100, _RGB32(255, 255, 255), 0, 0, 0
  1553. '**
  1554. '** ACKNOWLEGEMENTS: The FOR/NEXT step formula was was written by Codeguy for Unseen
  1555. '**                  Machine's Visual library EllipseXS command. Specifically:
  1556. '**                         MinStep! = 1 / (2 * 3.1415926535 * Radius!)
  1557. '**
  1558. '**
  1559. '** Includes performance tweaks made by SMcNeill on 02/02/13 - specifically removing a few redundant * -1
  1560. '** statements and converting the FOR/NEXT loop to a DO loop for a ~3% increase in performance.
  1561. '**
  1562. '** Corrected bug in which variables being passed in were being modified and passed back - 02/02/13
  1563. '**
  1564. SUB CIRCLES (cx%, cy%, r!, c~&, s!, e!, a!)
  1565.         DIM s%, e%, nx%, ny%, xr!, yr!, st!, en!, asp! '     local variables used
  1566.        
  1567.         st! = s! '                                           copy start radian to local variable
  1568.         en! = e! '                                           copy end radian to local variable
  1569.         asp! = a! '                                          copy aspect ratio to local variable
  1570.         IF asp! <= 0 THEN asp! = 1 '                         keep aspect ratio between 0 and 4
  1571.         IF asp! > 4 THEN asp! = 4
  1572.         IF asp! < 1 THEN xr! = r! * asp! * 4 ELSE xr! = r! ' calculate x/y radius based on aspect ratio
  1573.         IF asp! > 1 THEN yr! = r! * asp! ELSE yr! = r!
  1574.         IF st! < 0 THEN s% = -1: st! = -st! '                remember if line needs drawn from center to start radian
  1575.         IF en! < 0 THEN e% = -1: en! = -en! '                remember if line needs drawn from center to end radian
  1576.         IF s% THEN '                                         draw line from center to start radian?
  1577.                 nx% = cx% + xr! * COS(st!) '                     yes, compute starting point on circle's circumference
  1578.                 ny% = cy% + yr! * -SIN(st!)
  1579.                 LINE (cx%, cy%)-(nx%, ny%), c~& '                draw line from center to radian
  1580.         END IF
  1581.         IF en! <= st! THEN en! = en! + 6.2831852 '           come back around to proper location (draw counterclockwise)
  1582.         stepp! = 0.159154945806 / r!
  1583.         c! = st! '                                           cycle from start radian to end radian
  1584.         DO
  1585.                 nx% = cx% + xr! * COS(c!) '                      compute next point on circle's circumfrerence
  1586.                 ny% = cy% + yr! * -SIN(c!)
  1587.                 PSET (nx%, ny%), c~& '                           draw the point
  1588.                 c! = c! + stepp!
  1589.         LOOP UNTIL c! >= en!
  1590.         IF e% THEN LINE -(cx%, cy%), c~& '                   draw line from center to end radian if needed
  1591. END SUB ' CIRCLES
  1592.  
  1593. ' /////////////////////////////////////////////////////////////////////////////
  1594.  
  1595. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1596. ' BEGIN COLOR ARRAY FUNCTIONS
  1597. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1598.  
  1599. ' /////////////////////////////////////////////////////////////////////////////
  1600.  
  1601. Sub AddColor (ColorValue As _Unsigned Long, ColorName As String, arrColor() As ColorType)
  1602.     ReDim _Preserve arrColor(0 To UBound(arrColor) + 1) As ColorType
  1603.     arrColor(UBound(arrColor)).name = ColorName
  1604.     arrColor(UBound(arrColor)).value = ColorValue
  1605. End Sub ' AddColor
  1606.  
  1607. ' /////////////////////////////////////////////////////////////////////////////
  1608.  
  1609. Sub AddColors (arrColor() As ColorType)
  1610.     AddColor cBlack, "cBlack", arrColor()
  1611.     ''AddColor cDarkGray, "cDarkGray", arrColor()
  1612.     ''AddColor cDimGray, "cDimGray", arrColor()
  1613.     AddColor cGray, "cGray", arrColor()
  1614.     AddColor cSilver, "cSilver", arrColor()
  1615.     ''AddColor cLightGray, "cLightGray", arrColor()
  1616.     AddColor cWhite, "cWhite", arrColor()
  1617.  
  1618.     AddColor cRed, "cRed", arrColor()
  1619.     AddColor cOrangeRed, "cOrangeRed", arrColor()
  1620.     'AddColor cDarkOrange, "cDarkOrange", arrColor()
  1621.     'AddColor cOrange, "cOrange", arrColor()
  1622.     'AddColor cGold, "cGold", arrColor()
  1623.     AddColor cYellow, "cYellow", arrColor()
  1624.     'AddColor cOliveDrab1, "cOliveDrab1", arrColor()
  1625.     AddColor cLime, "cLime", arrColor()
  1626.     'AddColor cMediumSpringGreen, "cMediumSpringGreen", arrColor()
  1627.     AddColor cCyan, "cCyan", arrColor()
  1628.     'AddColor cDeepSkyBlue, "cDeepSkyBlue", arrColor()
  1629.     AddColor cDodgerBlue, "cDodgerBlue", arrColor()
  1630.     'AddColor cSeaBlue, "cSeaBlue", arrColor()
  1631.     AddColor cBlue, "cBlue", arrColor()
  1632.     'AddColor cBluePurple, "cBluePurple", arrColor()
  1633.     AddColor cDeepPurple, "cDeepPurple", arrColor()
  1634.     'AddColor cPurple, "cPurple", arrColor()
  1635.     'AddColor cPurpleRed, "cPurpleRed", arrColor()
  1636.  
  1637.     ''AddColor cGainsboro, "cGainsboro", arrColor()
  1638.     ''AddColor cWhiteSmoke, "cWhiteSmoke", arrColor()
  1639.  
  1640.     'AddColor cDarkRed, "cDarkRed", arrColor()
  1641.     ''AddColor cBrickRed, "cBrickRed", arrColor()
  1642.  
  1643.     AddColor cDarkGreen, "cDarkGreen", arrColor()
  1644.     'AddColor cGreen, "cGreen", arrColor()
  1645.     ''AddColor cOliveDrab, "cOliveDrab", arrColor()
  1646.     ''AddColor cLightPink, "cLightPink", arrColor()
  1647.     AddColor cMagenta, "cMagenta", arrColor()
  1648.     AddColor cHotPink, "cHotPink", arrColor()
  1649.     'AddColor cDeepPink, "cDeepPink", arrColor()
  1650.  
  1651.     AddColor cDarkBrown, "cDarkBrown", arrColor()
  1652.     'AddColor cLightBrown, "cLightBrown", arrColor()
  1653.     'AddColor cKhaki, "cKhaki", arrColor()
  1654.  
  1655.     AddColor cEmpty, "cEmpty", arrColor()
  1656. End Sub ' AddColors
  1657.  
  1658. ' /////////////////////////////////////////////////////////////////////////////
  1659.  
  1660. Sub AddGrayscaleColors (arrColor() As ColorType)
  1661.     'AddColor cBlack, "cBlack", arrColor()
  1662.     AddColor cDimGray, "cDimGray", arrColor()
  1663.     AddColor cGray, "cGray", arrColor()
  1664.     AddColor cDarkGray, "cDarkGray", arrColor()
  1665.     AddColor cSilver, "cSilver", arrColor()
  1666.     AddColor cLightGray, "cLightGray", arrColor()
  1667.     AddColor cWhite, "cGainsboro", arrColor()
  1668.     AddColor cWhite, "cWhiteSmoke", arrColor()
  1669.     AddColor cWhite, "cWhite", arrColor()
  1670. End Sub ' AddGrayscaleColors
  1671.  
  1672. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1673. ' END COLOR ARRAY FUNCTIONS
  1674. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1675.  
  1676. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1677. ' BEGIN COLOR FUNCTIONS
  1678. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1679.  
  1680. Function cRed~& ()
  1681.     cRed = _RGB32(255, 0, 0)
  1682.  
  1683. Function cOrangeRed~& ()
  1684.     cOrangeRed = _RGB32(255, 69, 0)
  1685. End Function ' cOrangeRed~&
  1686.  
  1687. Function cDarkOrange~& ()
  1688.     cDarkOrange = _RGB32(255, 140, 0)
  1689. End Function ' cDarkOrange~&
  1690.  
  1691. Function cOrange~& ()
  1692.     cOrange = _RGB32(255, 165, 0)
  1693. End Function ' cOrange~&
  1694.  
  1695. Function cGold~& ()
  1696.     cGold = _RGB32(255, 215, 0)
  1697. End Function ' cGold~&
  1698.  
  1699. Function cYellow~& ()
  1700.     cYellow = _RGB32(255, 255, 0)
  1701. End Function ' cYellow~&
  1702.  
  1703. ' LONG-HAIRED FRIENDS OF JESUS OR NOT,
  1704. ' THIS IS NOT YELLOW ENOUGH (TOO CLOSE TO LIME)
  1705. ' TO USE FOR OUR COMPLEX RAINBOW SEQUENCE:
  1706. Function cChartreuse~& ()
  1707.     cChartreuse = _RGB32(127, 255, 0)
  1708. End Function ' cChartreuse~&
  1709.  
  1710. ' WE SUBSTITUTE THIS CSS3 COLOR FOR INBETWEEN LIME AND YELLOW:
  1711. Function cOliveDrab1~& ()
  1712.     cOliveDrab1 = _RGB32(192, 255, 62)
  1713. End Function ' cOliveDrab1~&
  1714.  
  1715. Function cLime~& ()
  1716.     cLime = _RGB32(0, 255, 0)
  1717. End Function ' cLime~&
  1718.  
  1719. Function cMediumSpringGreen~& ()
  1720.     cMediumSpringGreen = _RGB32(0, 250, 154)
  1721. End Function ' cMediumSpringGreen~&
  1722.  
  1723. Function cCyan~& ()
  1724.     cCyan = _RGB32(0, 255, 255)
  1725. End Function ' cCyan~&
  1726.  
  1727. Function cDeepSkyBlue~& ()
  1728.     cDeepSkyBlue = _RGB32(0, 191, 255)
  1729. End Function ' cDeepSkyBlue~&
  1730.  
  1731. Function cDodgerBlue~& ()
  1732.     cDodgerBlue = _RGB32(30, 144, 255)
  1733. End Function ' cDodgerBlue~&
  1734.  
  1735. Function cSeaBlue~& ()
  1736.     cSeaBlue = _RGB32(0, 64, 255)
  1737. End Function ' cSeaBlue~&
  1738.  
  1739. Function cBlue~& ()
  1740.     cBlue = _RGB32(0, 0, 255)
  1741. End Function ' cBlue~&
  1742.  
  1743. Function cBluePurple~& ()
  1744.     cBluePurple = _RGB32(64, 0, 255)
  1745. End Function ' cBluePurple~&
  1746.  
  1747. Function cDeepPurple~& ()
  1748.     cDeepPurple = _RGB32(96, 0, 255)
  1749. End Function ' cDeepPurple~&
  1750.  
  1751. Function cPurple~& ()
  1752.     cPurple = _RGB32(128, 0, 255)
  1753. End Function ' cPurple~&
  1754.  
  1755. Function cPurpleRed~& ()
  1756.     cPurpleRed = _RGB32(128, 0, 192)
  1757. End Function ' cPurpleRed~&
  1758.  
  1759. Function cDarkRed~& ()
  1760.     cDarkRed = _RGB32(160, 0, 64)
  1761. End Function ' cDarkRed~&
  1762.  
  1763. Function cBrickRed~& ()
  1764.     cBrickRed = _RGB32(192, 0, 32)
  1765. End Function ' cBrickRed~&
  1766.  
  1767. Function cDarkGreen~& ()
  1768.     cDarkGreen = _RGB32(0, 100, 0)
  1769. End Function ' cDarkGreen~&
  1770.  
  1771. Function cGreen~& ()
  1772.     cGreen = _RGB32(0, 128, 0)
  1773. End Function ' cGreen~&
  1774.  
  1775. Function cOliveDrab~& ()
  1776.     cOliveDrab = _RGB32(107, 142, 35)
  1777. End Function ' cOliveDrab~&
  1778.  
  1779. Function cLightPink~& ()
  1780.     cLightPink = _RGB32(255, 182, 193)
  1781. End Function ' cLightPink~&
  1782.  
  1783. Function cHotPink~& ()
  1784.     cHotPink = _RGB32(255, 105, 180)
  1785. End Function ' cHotPink~&
  1786.  
  1787. Function cDeepPink~& ()
  1788.     cDeepPink = _RGB32(255, 20, 147)
  1789. End Function ' cDeepPink~&
  1790.  
  1791. Function cMagenta~& ()
  1792.     cMagenta = _RGB32(255, 0, 255)
  1793. End Function ' cMagenta~&
  1794.  
  1795. Function cBlack~& ()
  1796.     cBlack = _RGB32(0, 0, 0)
  1797. End Function ' cBlack~&
  1798.  
  1799. Function cDimGray~& ()
  1800.     cDimGray = _RGB32(105, 105, 105)
  1801. End Function ' cDimGray~&
  1802.  
  1803. Function cGray~& ()
  1804.     cGray = _RGB32(128, 128, 128)
  1805. End Function ' cGray~&
  1806.  
  1807. Function cDarkGray~& ()
  1808.     cDarkGray = _RGB32(169, 169, 169)
  1809. End Function ' cDarkGray~&
  1810.  
  1811. Function cSilver~& ()
  1812.     cSilver = _RGB32(192, 192, 192)
  1813. End Function ' cSilver~&
  1814.  
  1815. Function cLightGray~& ()
  1816.     cLightGray = _RGB32(211, 211, 211)
  1817. End Function ' cLightGray~&
  1818.  
  1819. Function cGainsboro~& ()
  1820.     cGainsboro = _RGB32(220, 220, 220)
  1821. End Function ' cGainsboro~&
  1822.  
  1823. Function cWhiteSmoke~& ()
  1824.     cWhiteSmoke = _RGB32(245, 245, 245)
  1825. End Function ' cWhiteSmoke~&
  1826.  
  1827. Function cWhite~& ()
  1828.     cWhite = _RGB32(255, 255, 255)
  1829.     'cWhite = _RGB32(254, 254, 254)
  1830. End Function ' cWhite~&
  1831.  
  1832. Function cDarkBrown~& ()
  1833.     cDarkBrown = _RGB32(128, 64, 0)
  1834. End Function ' cDarkBrown~&
  1835.  
  1836. Function cLightBrown~& ()
  1837.     cLightBrown = _RGB32(196, 96, 0)
  1838. End Function ' cLightBrown~&
  1839.  
  1840. Function cKhaki~& ()
  1841.     cKhaki = _RGB32(240, 230, 140)
  1842. End Function ' cKhaki~&
  1843.  
  1844. Function cEmpty~& ()
  1845.     'cEmpty~& = -1
  1846.     cEmpty = _RGB32(0, 0, 0, 0)
  1847. End Function ' cEmpty~&
  1848.  
  1849. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1850. ' END COLOR FUNCTIONS
  1851. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1852.  
  1853. ' ################################################################################################################################################################
  1854. ' BEGIN TEST 8X8 COLOR FONT
  1855. ' ################################################################################################################################################################
  1856.  
  1857. ' /////////////////////////////////////////////////////////////////////////////
  1858. ' BASED ON DetectPixelTest3, ReShrinkImage$
  1859.  
  1860. Function CustomColorFontTest1$
  1861.     ' -----------------------------------------------------------------------------
  1862.     ' DECLARATIONS
  1863.     Dim sResult As String
  1864.  
  1865.     Dim imgScreen&
  1866.     Dim imgBackground&
  1867.     Dim imgCharset&
  1868.     Dim iX As Integer
  1869.     Dim iY As Integer
  1870.     Dim iOffsetX As Integer
  1871.     Dim iOffSetY As Integer
  1872.     Dim iTileNum As Integer
  1873.     Dim MyString As String
  1874.     Dim iLoop1 As Integer
  1875.     Dim iForeColor As Integer
  1876.     Dim iBackColor As Integer
  1877.     Dim fgColor As _Unsigned Long
  1878.     Dim bgColor As _Unsigned Long
  1879.     Dim bHaveForeColor As Integer
  1880.     Dim bHaveBackColor As Integer
  1881.     Dim iPos1 As Integer
  1882.     ReDim arrColor(-1) As ColorType
  1883.     Dim iCols As Integer
  1884.     Dim iRows As Integer
  1885.     Dim bFinished As Integer
  1886.  
  1887.     ' -----------------------------------------------------------------------------
  1888.     ' INITIALIZE
  1889.  
  1890.     ' LOAD BACKGROUND IMAGE
  1891.     imgBackground& = _NewImage(1024, 768, 32)
  1892.     Screen imgBackground&
  1893.     Cls , cBlack ' set the background color
  1894.  
  1895.     ' COPY BACKGROUND TO SCREEN
  1896.     imgScreen& = _CopyImage(imgBackground&, 32)
  1897.  
  1898.     ' LOAD TEXT FONT (16 cols x 16 rows of 8x8 tiles)
  1899.     sFile$ = m_ProgramPath$ + "Font_8x8_#1_128x128.png" ' 128x128 total, 16x16 of 8x8 tiles
  1900.     imgCharset& = _LoadImage(sFile$, 32)
  1901.  
  1902.     ' DISPLAY SCREEN
  1903.     Screen imgScreen&
  1904.  
  1905.     ' -----------------------------------------------------------------------------
  1906.     ' PLOT TO SCREEN
  1907.     'iCols = _Width(0) \ _FontWidth
  1908.     'iRows = _Height(0) \ _FontHeight
  1909.     iCols = _Width(0) \ 8
  1910.     iRows = _Height(0) \ 8
  1911.    
  1912.     'DebugPrint "iCols = " + cstr$(iCols)
  1913.     'DebugPrint "iRows = " + cstr$(iRows)
  1914.    
  1915.     MyString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()-=_+[]{}\|;:'" + Chr$(34) + ",./<>?`~"
  1916.     AddColors arrColor()
  1917.     iOffsetX = 0
  1918.     iOffSetY = 0
  1919.     iForeColor = LBound(arrColor)
  1920.     iBackColor = LBound(arrColor)
  1921.     'iPos1 = 0
  1922.     iY = -1
  1923.     iX = -1
  1924.     iTileNum = 32
  1925.     bHaveBackColor = TRUE
  1926.     bFinished = FALSE
  1927.     Do
  1928.         iX = iX + 1
  1929.         If iX >= iCols Then
  1930.             iX = 0
  1931.             iY = iY + 1
  1932.             If iY >= iRows Then bFinished = TRUE
  1933.         End If
  1934.         If bFinished = FALSE Then
  1935.             ' GET TILE
  1936.             'iPos1 = iPos1 + 1
  1937.             'If iPos1 > Len(MyString) Then iPos1 = 1
  1938.             'iTileNum = Asc(Mid$(MyString, iPos1, 1))
  1939.             iTileNum = iTileNum + 1
  1940.             If iTileNum > 255 Then iTileNum = 33
  1941.            
  1942.             ' GET FORE COLOR
  1943.             bHaveForeColor = FALSE
  1944.             Do
  1945.                 iForeColor = iForeColor + 1
  1946.                 If iForeColor > UBound(arrColor) Then
  1947.                     iForeColor = LBound(arrColor)
  1948.                     bHaveBackColor = FALSE
  1949.                 End If
  1950.                 If iForeColor <> iBackColor Then
  1951.                     If arrColor(iForeColor).value <> cEmpty Then
  1952.                         bHaveForeColor = TRUE
  1953.                     End If
  1954.                 End If
  1955.             Loop Until bHaveForeColor = TRUE
  1956.            
  1957.             ' GET BACK COLOR
  1958.             If bHaveBackColor = FALSE Then
  1959.                 Do
  1960.                     iBackColor = iBackColor + 1
  1961.                     If iBackColor > UBound(arrColor) Then
  1962.                         'bFinished = TRUE
  1963.                         'Exit Do
  1964.                         iBackColor = LBound(arrColor)
  1965.                     End If
  1966.                     If iBackColor <> iForeColor Then
  1967.                         'If arrColor(iBackColor).value <> cEmpty Then
  1968.                             bHaveBackColor = TRUE
  1969.                         'End If
  1970.                     End If
  1971.                 Loop Until bHaveBackColor = TRUE
  1972.             End If
  1973.            
  1974.             ' DRAW TILE
  1975.             If bFinished = FALSE Then
  1976.                 'DebugPrint _
  1977.                 '    "Tile " + _Trim$(Str$(iTileNum)) + " " + _
  1978.                 '    "at (" + _Trim$(Str$(iX)) + "," + _Trim$(Str$(iY)) + ") " + _
  1979.                 '    "fgcolor = " + arrColor(iForeColor).name + " " + _
  1980.                 '    "bgcolor = " + arrColor(iBackColor).name
  1981.                
  1982.                 DrawColorTile imgScreen&, imgCharset&, iTileNum, _
  1983.                     arrColor(iForeColor).value, arrColor(iBackColor).value, _
  1984.                     iX, iY, iOffsetX, iOffsetY
  1985.             End If
  1986.         End If
  1987.     Loop Until bFinished = TRUE
  1988.    
  1989. IF TRUE=FALSE THEN
  1990.     iTileNum = ASC("#")
  1991.     fgColor = cWhite
  1992.     For iX = 0 To iCols-1
  1993.         bgColor = cBlue
  1994.         iY = 0: DrawColorTile imgScreen&, imgCharset&, iTileNum, _
  1995.                     fgColor, bgColor, _
  1996.                     iX, iY, iOffsetX, iOffsetY
  1997.         bgColor = cRed
  1998.         iY = iRows-1: DrawColorTile imgScreen&, imgCharset&, iTileNum, _
  1999.                     fgColor, bgColor, _
  2000.                     iX, iY, iOffsetX, iOffsetY
  2001.     Next iX
  2002.     For iY = 0 To iRows-1
  2003.         bgColor = cYellow
  2004.         iX = 0: DrawColorTile imgScreen&, imgCharset&, iTileNum, _
  2005.                     fgColor, bgColor, _
  2006.                     iX, iY, iOffsetX, iOffsetY
  2007.         bgColor = cLime
  2008.         iX = iCols-1: DrawColorTile imgScreen&, imgCharset&, iTileNum, _
  2009.                     fgColor, bgColor, _
  2010.                     iX, iY, iOffsetX, iOffsetY
  2011.     Next iY
  2012.    
  2013.     ' -----------------------------------------------------------------------------
  2014.     ' UPDATE SCREEN
  2015.     _Display ' update screen with changes
  2016.  
  2017.     ' -----------------------------------------------------------------------------
  2018.     ' DONE
  2019.     LOCATE 10,10
  2020.     'Input "Press ENTER to continue"; in$
  2021.     SLEEP
  2022.    
  2023.     ' -----------------------------------------------------------------------------
  2024.     ' FREE MEMORY
  2025.     Screen 0
  2026.     IF imgScreen& < -1 OR imgScreen& > 0 THEN _FreeImage imgScreen&
  2027.     IF imgBackground& < -1 OR imgBackground& > 0 THEN _FreeImage imgBackground&
  2028.     IF imgCharset& < -1 OR imgCharset& > 0 THEN _FreeImage imgCharset&
  2029.  
  2030.     ' -----------------------------------------------------------------------------
  2031.     ' RETURN RESULT
  2032.     CustomColorFontTest1 = ""
  2033. End Function ' CustomColorFontTest1$
  2034.  
  2035. ' ################################################################################################################################################################
  2036. ' END TEST 8X8 COLOR FONT
  2037. ' ################################################################################################################################################################
  2038.  
  2039. ' ################################################################################################################################################################
  2040. ' BEGIN GRAPHIC TILE FUNCTIONS
  2041. ' ################################################################################################################################################################
  2042.  
  2043. ' /////////////////////////////////////////////////////////////////////////////
  2044. ' Draw entire array on screen.
  2045.  
  2046. Sub PlotTiles (arrTiles() As Integer, imgTiles&, imgScreen&)
  2047.     Dim dx%
  2048.     Dim dy%
  2049.     Dim TileNum%
  2050.        
  2051.     Screen imgScreen&
  2052.        
  2053.     For dx% = 1 To UBound(arrTiles, 1)
  2054.         For dy% = 1 To UBound(arrTiles, 2)
  2055.             TileNum% = arrTiles(dx%, dy%)
  2056.             DrawTile imgTiles&, TileNum%, imgScreen&, dx% - 1, dy% - 1
  2057.         Next dy%
  2058.     Next dx%
  2059.        
  2060.     '_Display ' update screen with changes
  2061. End Sub ' PlotTiles
  2062.  
  2063. ' /////////////////////////////////////////////////////////////////////////////
  2064. ' DIV and MOD:
  2065. ' c% = a% \ b% ' DIV (INTEGER DIVISION)
  2066. ' d% = a% MOD b% ' MODULO (DIVISION REMAINDER)
  2067.  
  2068. ' tw% = tile width/height (in pixels)
  2069.  
  2070. Sub DrawTile (imgTiles&, TileNum%, imgScreen&, dx%, dy%)
  2071.     '_PUTIMAGE (0, 0), i ' places image at upper left corner of window w/o stretching it
  2072.     '_PUTIMAGE (dx1, dy1), sourceHandle&, destHandle&, (sx1, sy1)-(sx2, sy2) ' portion of source to the top-left corner of the destination page
  2073.     '_PUTIMAGE (64,  128), imgTiles&,      imgScreen&,   (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  2074.     '_PutImage (64, 128), imgTiles&, imgScreen&, (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  2075.        
  2076.     ' # OF COLUMNS / ROWS ON SOURCE TILE SHEET
  2077.     cols% = 16
  2078.     rows% = 16
  2079.        
  2080.     ' GET THE COLUMN/ROW OF TILE # TileNum% ON THE SOURCE TILE SHEET
  2081.     sc% = TileNum% Mod rows%
  2082.     sr% = TileNum% \ rows%
  2083.        
  2084.     'Print "Tile#" + cstr$(TileNum%) + " at sc%=" + cstr$(sc%) + ",sr%=" + cstr$(sr%)
  2085.        
  2086.     ' GET THE START X COORDINATE ON THE SOURCE TILE SHEET
  2087.     'sx1% = sc% * tw%
  2088.     sx1% = sc% * 32
  2089.        
  2090.     ' GET THE START Y COORDINATE ON THE SOURCE TILE SHEET
  2091.     'sy1% = sr% * tw%
  2092.     sy1% = sr% * 32
  2093.        
  2094.     ' GET THE END X COORDINATE ON THE SOURCE TILE SHEET
  2095.     'sx2% = sx1% + (tw% - 1)
  2096.     sx2% = sx1% + 31
  2097.        
  2098.     ' GET THE END y COORDINATE ON THE SOURCE TILE SHEET
  2099.     'sy2% = sy1% + (tw% - 1)
  2100.     sy2% = sy1% + 31
  2101.        
  2102.     ' GET THE DESTINATION X COORDINATE ON THE SCREEN
  2103.     'xDest% = dx% * tw%
  2104.     xDest% = dx% * 32
  2105.        
  2106.     ' GET THE DESTINATION Y COORDINATE ON THE SCREEN
  2107.     'yDest% = (dy% * tw%) + 64
  2108.     yDest% = (dy% * 32) + 64
  2109.        
  2110.     'DebugPrint "Tile#" + cstr$(TileNum%) + " at r" + cstr$(sr%) + "c" + cstr$(sc%) + " pixel location r" + cstr$(sy1%) + "c" + cstr$(sx1%) + " through r" + cstr$(sy2%) + "c" + cstr$(sx2%)
  2111.        
  2112.     _Dest imgScreen&
  2113.     _PutImage (xDest%, yDest%), imgTiles&, imgScreen&, (sx1%, sy1%)-(sx2%, sy2%) ' portion of source to the top-left corner of the destination page
  2114.        
  2115. End Sub ' DrawTile
  2116.  
  2117. ' ################################################################################################################################################################
  2118. ' END GRAPHIC TILE FUNCTIONS
  2119. ' ################################################################################################################################################################
  2120.  
  2121. ' ################################################################################################################################################################
  2122. ' BEGIN TILE DEFINITIONS
  2123. ' ################################################################################################################################################################
  2124.  
  2125. ' /////////////////////////////////////////////////////////////////////////////
  2126. ' Loads tileset of 256 8x8 tiles into a 128x128 image (16 columns x 16 rows)
  2127. ' where tiles are a single color.
  2128.  
  2129. ' Parameters:
  2130. ' imgTiles& = contains the resulting tileset image
  2131. ' fgColor = tile color
  2132. ' bgColor = tile background color
  2133.  
  2134. Function GetTiles$(imgTiles&, fgColor AS _UNSIGNED Long, bgColor AS _UNSIGNED Long)
  2135.     Dim RoutineName As String : RoutineName = "GetTiles$"
  2136.     Dim sResult As String : sResult = ""
  2137.     ReDim arrTileText(0 to 255) As String
  2138.    
  2139.     Dim iTileNum As Integer
  2140.    
  2141.     ReDim arrLines(-1) As String
  2142.     DIM iFromX AS INTEGER
  2143.     DIM iFromY AS INTEGER
  2144.     Dim sLine As String
  2145.     Dim sChar As String
  2146.    
  2147.     Dim iTileX As Integer
  2148.     Dim iTileY As Integer
  2149.     Dim iToX As Integer
  2150.     Dim iToY As Integer
  2151.     Dim pixelColor As _UNSIGNED Long
  2152.     Dim bFinished As Integer
  2153.    
  2154.     ' Do not try to free image handles currently being used as the active SCREEN. Change screen modes first.
  2155.     ' _DISPLAY turns off the auto refresh screen default _AUTODISPLAY behavior. Prevents screen flickering.
  2156.     IF imgTiles& < -1 OR imgTiles& > 0 THEN _FREEIMAGE imgTiles&
  2157.     imgTiles& = _NewImage(128, 128, 32)
  2158. '    Cls , cEmpty ' set the background color as transparent
  2159.    
  2160.     'Screen imgTiles&
  2161.     'Cls , bgColor ' set the background color as transparent
  2162.     _Dest imgTiles&
  2163.     'DrawRect 0, 0, 128, 128, cEmpty
  2164.     'DrawBox 0, 0, 128, cWhite
  2165.     Cls , cEmpty ' set the background color as transparent
  2166.    
  2167.     GetTileText arrTileText()
  2168.     iTileX = 0
  2169.     iTileY = 0
  2170.     bFinished = FALSE
  2171.     For iTileNum = 0 to 255
  2172.         split arrTileText(iTileNum), chr$(13), arrLines()
  2173.         iToY = iTileY * 8
  2174.         if (iToY > _Height(imgTiles&)) then
  2175.             sResult = "iToY value " + cstr$(iToY) + " " + _
  2176.                 "exceeded image height " + cstr$(_Height(imgTiles&)) + ". " + _
  2177.                 "Exiting " + RoutineName + " at iTileNum=" + cstr$(iTileNum) + "."
  2178.             bFinished = TRUE
  2179.             Exit For
  2180.         end if
  2181.        
  2182.         For iFromY = lbound(arrLines) to ubound(arrLines)
  2183.             sLine = arrLines(iFromY)
  2184.             if len(sLine) > 0 then
  2185.                 iToX = iTileX * 8
  2186.                 for iFromX = 1 to len(sLine)
  2187.                     sChar = mid$(sLine, iFromX, 1)
  2188.                     if sChar = "." then
  2189.                         pixelColor = bgColor ' cEmpty ' POINT(iFromX, iFromY)
  2190.                     else
  2191.                         pixelColor = fgColor ' cBlack
  2192.                     end if
  2193.                     PSET(iToX, iToY), pixelColor
  2194.                     iToX = iToX + 1
  2195.                     if (iToX > _Width(imgTiles&)) then
  2196.                         sResult = "iToX value " + cstr$(iToX) + " " + _
  2197.                             "exceeded image width " + cstr$(_Width(imgTiles&)) + ". " + _
  2198.                             "Exiting " + RoutineName + " at iTileNum=" + cstr$(iTileNum) + "."
  2199.                         bFinished = TRUE
  2200.                         Exit For
  2201.                     end if
  2202.                 next iFromX
  2203.                 iToY = iToY + 1
  2204.                 If bFinished = TRUE Then Exit For
  2205.             end if
  2206.         Next iFromY
  2207.         If bFinished = TRUE Then Exit For
  2208.                
  2209.         iTileX = iTileX + 1
  2210.         if iTileX > 15 then
  2211.             iTileX = 0
  2212.             iTileY = iTileY + 1
  2213.             'if iTileY > 15 then
  2214.             '    sResult = "Exceeded max 16 rows of tiles." + _
  2215.             '        "Exiting " + RoutineName + " at iTileNum=" + cstr$(iTileNum) + "."
  2216.             '    bFinished = TRUE
  2217.             '    exit for
  2218.             'end if
  2219.         end if
  2220.     Next iTileNum
  2221.    
  2222.     GetTiles$ = sResult
  2223. End Function ' GetTiles$
  2224.  
  2225. ' /////////////////////////////////////////////////////////////////////////////
  2226. ' Returns an array of 256 8x8 tiles defined in text
  2227. ' where each tile is defined by "." as blank and anything else is a pixel
  2228. ' and each row is delimited by chr$(13)
  2229.  
  2230. Sub GetTileText(arrTileText() As String)
  2231.     ReDim arrTileText(0 to 255) As String
  2232.    
  2233.     m$ = ""
  2234.     m$ = m$ + "22....22" + chr$(13)
  2235.     m$ = m$ + "2..22..2" + chr$(13)
  2236.     m$ = m$ + "2..2...2" + chr$(13)
  2237.     m$ = m$ + "2...2..2" + chr$(13)
  2238.     m$ = m$ + "2..22..2" + chr$(13)
  2239.     m$ = m$ + "2..22..2" + chr$(13)
  2240.     m$ = m$ + "22....22" + chr$(13)
  2241.     m$ = m$ + "22222222" + chr$(13)
  2242.     arrTileText(0) = m$
  2243.  
  2244.     m$ = ""
  2245.     m$ = m$ + "........" + chr$(13)
  2246.     m$ = m$ + "........" + chr$(13)
  2247.     m$ = m$ + "........" + chr$(13)
  2248.     m$ = m$ + "........" + chr$(13)
  2249.     m$ = m$ + "........" + chr$(13)
  2250.     m$ = m$ + "........" + chr$(13)
  2251.     m$ = m$ + "........" + chr$(13)
  2252.     m$ = m$ + "........" + chr$(13)
  2253.     arrTileText(1) = m$
  2254.  
  2255.     m$ = ""
  2256.     m$ = m$ + "........" + chr$(13)
  2257.     m$ = m$ + "........" + chr$(13)
  2258.     m$ = m$ + "........" + chr$(13)
  2259.     m$ = m$ + "........" + chr$(13)
  2260.     m$ = m$ + "........" + chr$(13)
  2261.     m$ = m$ + "........" + chr$(13)
  2262.     m$ = m$ + "........" + chr$(13)
  2263.     m$ = m$ + "........" + chr$(13)
  2264.     arrTileText(2) = m$
  2265.  
  2266.     m$ = ""
  2267.     m$ = m$ + "........" + chr$(13)
  2268.     m$ = m$ + "........" + chr$(13)
  2269.     m$ = m$ + "........" + chr$(13)
  2270.     m$ = m$ + "........" + chr$(13)
  2271.     m$ = m$ + "........" + chr$(13)
  2272.     m$ = m$ + "........" + chr$(13)
  2273.     m$ = m$ + "........" + chr$(13)
  2274.     m$ = m$ + "........" + chr$(13)
  2275.     arrTileText(3) = m$
  2276.  
  2277.     m$ = ""
  2278.     m$ = m$ + "........" + chr$(13)
  2279.     m$ = m$ + "........" + chr$(13)
  2280.     m$ = m$ + "........" + chr$(13)
  2281.     m$ = m$ + "........" + chr$(13)
  2282.     m$ = m$ + "........" + chr$(13)
  2283.     m$ = m$ + "........" + chr$(13)
  2284.     m$ = m$ + "........" + chr$(13)
  2285.     m$ = m$ + "........" + chr$(13)
  2286.     arrTileText(4) = m$
  2287.  
  2288.     m$ = ""
  2289.     m$ = m$ + "........" + chr$(13)
  2290.     m$ = m$ + "........" + chr$(13)
  2291.     m$ = m$ + "........" + chr$(13)
  2292.     m$ = m$ + "........" + chr$(13)
  2293.     m$ = m$ + "........" + chr$(13)
  2294.     m$ = m$ + "........" + chr$(13)
  2295.     m$ = m$ + "........" + chr$(13)
  2296.     m$ = m$ + "........" + chr$(13)
  2297.     arrTileText(5) = m$
  2298.  
  2299.     m$ = ""
  2300.     m$ = m$ + "........" + chr$(13)
  2301.     m$ = m$ + "........" + chr$(13)
  2302.     m$ = m$ + "........" + chr$(13)
  2303.     m$ = m$ + "........" + chr$(13)
  2304.     m$ = m$ + "........" + chr$(13)
  2305.     m$ = m$ + "........" + chr$(13)
  2306.     m$ = m$ + "........" + chr$(13)
  2307.     m$ = m$ + "........" + chr$(13)
  2308.     arrTileText(6) = m$
  2309.  
  2310.     m$ = ""
  2311.     m$ = m$ + "........" + chr$(13)
  2312.     m$ = m$ + "........" + chr$(13)
  2313.     m$ = m$ + "........" + chr$(13)
  2314.     m$ = m$ + "........" + chr$(13)
  2315.     m$ = m$ + "........" + chr$(13)
  2316.     m$ = m$ + "........" + chr$(13)
  2317.     m$ = m$ + "........" + chr$(13)
  2318.     m$ = m$ + "........" + chr$(13)
  2319.     arrTileText(7) = m$
  2320.  
  2321.     m$ = ""
  2322.     m$ = m$ + "........" + chr$(13)
  2323.     m$ = m$ + "........" + chr$(13)
  2324.     m$ = m$ + "........" + chr$(13)
  2325.     m$ = m$ + "........" + chr$(13)
  2326.     m$ = m$ + "........" + chr$(13)
  2327.     m$ = m$ + "........" + chr$(13)
  2328.     m$ = m$ + "........" + chr$(13)
  2329.     m$ = m$ + "........" + chr$(13)
  2330.     arrTileText(8) = m$
  2331.  
  2332.     m$ = ""
  2333.     m$ = m$ + "........" + chr$(13)
  2334.     m$ = m$ + "........" + chr$(13)
  2335.     m$ = m$ + "........" + chr$(13)
  2336.     m$ = m$ + "........" + chr$(13)
  2337.     m$ = m$ + "........" + chr$(13)
  2338.     m$ = m$ + "........" + chr$(13)
  2339.     m$ = m$ + "........" + chr$(13)
  2340.     m$ = m$ + "........" + chr$(13)
  2341.     arrTileText(9) = m$
  2342.  
  2343.     m$ = ""
  2344.     m$ = m$ + "........" + chr$(13)
  2345.     m$ = m$ + "........" + chr$(13)
  2346.     m$ = m$ + "........" + chr$(13)
  2347.     m$ = m$ + "........" + chr$(13)
  2348.     m$ = m$ + "........" + chr$(13)
  2349.     m$ = m$ + "........" + chr$(13)
  2350.     m$ = m$ + "........" + chr$(13)
  2351.     m$ = m$ + "........" + chr$(13)
  2352.     arrTileText(10) = m$
  2353.  
  2354.     m$ = ""
  2355.     m$ = m$ + "........" + chr$(13)
  2356.     m$ = m$ + "........" + chr$(13)
  2357.     m$ = m$ + "........" + chr$(13)
  2358.     m$ = m$ + "........" + chr$(13)
  2359.     m$ = m$ + "........" + chr$(13)
  2360.     m$ = m$ + "........" + chr$(13)
  2361.     m$ = m$ + "........" + chr$(13)
  2362.     m$ = m$ + "........" + chr$(13)
  2363.     arrTileText(11) = m$
  2364.  
  2365.     m$ = ""
  2366.     m$ = m$ + "........" + chr$(13)
  2367.     m$ = m$ + "........" + chr$(13)
  2368.     m$ = m$ + "........" + chr$(13)
  2369.     m$ = m$ + "........" + chr$(13)
  2370.     m$ = m$ + "........" + chr$(13)
  2371.     m$ = m$ + "........" + chr$(13)
  2372.     m$ = m$ + "........" + chr$(13)
  2373.     m$ = m$ + "........" + chr$(13)
  2374.     arrTileText(12) = m$
  2375.  
  2376.     m$ = ""
  2377.     m$ = m$ + "........" + chr$(13)
  2378.     m$ = m$ + "........" + chr$(13)
  2379.     m$ = m$ + "........" + chr$(13)
  2380.     m$ = m$ + "........" + chr$(13)
  2381.     m$ = m$ + "........" + chr$(13)
  2382.     m$ = m$ + "........" + chr$(13)
  2383.     m$ = m$ + "........" + chr$(13)
  2384.     m$ = m$ + "........" + chr$(13)
  2385.     arrTileText(13) = m$
  2386.  
  2387.     m$ = ""
  2388.     m$ = m$ + "........" + chr$(13)
  2389.     m$ = m$ + "........" + chr$(13)
  2390.     m$ = m$ + "........" + chr$(13)
  2391.     m$ = m$ + "........" + chr$(13)
  2392.     m$ = m$ + "........" + chr$(13)
  2393.     m$ = m$ + "........" + chr$(13)
  2394.     m$ = m$ + "........" + chr$(13)
  2395.     m$ = m$ + "........" + chr$(13)
  2396.     arrTileText(14) = m$
  2397.  
  2398.     m$ = ""
  2399.     m$ = m$ + "........" + chr$(13)
  2400.     m$ = m$ + "........" + chr$(13)
  2401.     m$ = m$ + "........" + chr$(13)
  2402.     m$ = m$ + "........" + chr$(13)
  2403.     m$ = m$ + "........" + chr$(13)
  2404.     m$ = m$ + "........" + chr$(13)
  2405.     m$ = m$ + "........" + chr$(13)
  2406.     m$ = m$ + "........" + chr$(13)
  2407.     arrTileText(15) = m$
  2408.  
  2409.     m$ = ""
  2410.     m$ = m$ + "........" + chr$(13)
  2411.     m$ = m$ + "........" + chr$(13)
  2412.     m$ = m$ + "........" + chr$(13)
  2413.     m$ = m$ + "........" + chr$(13)
  2414.     m$ = m$ + "........" + chr$(13)
  2415.     m$ = m$ + "........" + chr$(13)
  2416.     m$ = m$ + "........" + chr$(13)
  2417.     m$ = m$ + "........" + chr$(13)
  2418.     arrTileText(16) = m$
  2419.  
  2420.     m$ = ""
  2421.     m$ = m$ + "........" + chr$(13)
  2422.     m$ = m$ + "........" + chr$(13)
  2423.     m$ = m$ + "........" + chr$(13)
  2424.     m$ = m$ + "........" + chr$(13)
  2425.     m$ = m$ + "........" + chr$(13)
  2426.     m$ = m$ + "........" + chr$(13)
  2427.     m$ = m$ + "........" + chr$(13)
  2428.     m$ = m$ + "........" + chr$(13)
  2429.     arrTileText(17) = m$
  2430.  
  2431.     m$ = ""
  2432.     m$ = m$ + "........" + chr$(13)
  2433.     m$ = m$ + "........" + chr$(13)
  2434.     m$ = m$ + "........" + chr$(13)
  2435.     m$ = m$ + "........" + chr$(13)
  2436.     m$ = m$ + "........" + chr$(13)
  2437.     m$ = m$ + "........" + chr$(13)
  2438.     m$ = m$ + "........" + chr$(13)
  2439.     m$ = m$ + "........" + chr$(13)
  2440.     arrTileText(18) = m$
  2441.  
  2442.     m$ = ""
  2443.     m$ = m$ + "........" + chr$(13)
  2444.     m$ = m$ + "........" + chr$(13)
  2445.     m$ = m$ + "........" + chr$(13)
  2446.     m$ = m$ + "........" + chr$(13)
  2447.     m$ = m$ + "........" + chr$(13)
  2448.     m$ = m$ + "........" + chr$(13)
  2449.     m$ = m$ + "........" + chr$(13)
  2450.     m$ = m$ + "........" + chr$(13)
  2451.     arrTileText(19) = m$
  2452.  
  2453.     m$ = ""
  2454.     m$ = m$ + "........" + chr$(13)
  2455.     m$ = m$ + "........" + chr$(13)
  2456.     m$ = m$ + "........" + chr$(13)
  2457.     m$ = m$ + "........" + chr$(13)
  2458.     m$ = m$ + "........" + chr$(13)
  2459.     m$ = m$ + "........" + chr$(13)
  2460.     m$ = m$ + "........" + chr$(13)
  2461.     m$ = m$ + "........" + chr$(13)
  2462.     arrTileText(20) = m$
  2463.  
  2464.     m$ = ""
  2465.     m$ = m$ + "........" + chr$(13)
  2466.     m$ = m$ + "........" + chr$(13)
  2467.     m$ = m$ + "........" + chr$(13)
  2468.     m$ = m$ + "........" + chr$(13)
  2469.     m$ = m$ + "........" + chr$(13)
  2470.     m$ = m$ + "........" + chr$(13)
  2471.     m$ = m$ + "........" + chr$(13)
  2472.     m$ = m$ + "........" + chr$(13)
  2473.     arrTileText(21) = m$
  2474.  
  2475.     m$ = ""
  2476.     m$ = m$ + "........" + chr$(13)
  2477.     m$ = m$ + "........" + chr$(13)
  2478.     m$ = m$ + "........" + chr$(13)
  2479.     m$ = m$ + "........" + chr$(13)
  2480.     m$ = m$ + "........" + chr$(13)
  2481.     m$ = m$ + "........" + chr$(13)
  2482.     m$ = m$ + "........" + chr$(13)
  2483.     m$ = m$ + "........" + chr$(13)
  2484.     arrTileText(22) = m$
  2485.  
  2486.     m$ = ""
  2487.     m$ = m$ + "........" + chr$(13)
  2488.     m$ = m$ + "........" + chr$(13)
  2489.     m$ = m$ + "........" + chr$(13)
  2490.     m$ = m$ + "........" + chr$(13)
  2491.     m$ = m$ + "........" + chr$(13)
  2492.     m$ = m$ + "........" + chr$(13)
  2493.     m$ = m$ + "........" + chr$(13)
  2494.     m$ = m$ + "........" + chr$(13)
  2495.     arrTileText(23) = m$
  2496.  
  2497.     m$ = ""
  2498.     m$ = m$ + "........" + chr$(13)
  2499.     m$ = m$ + "........" + chr$(13)
  2500.     m$ = m$ + "........" + chr$(13)
  2501.     m$ = m$ + "........" + chr$(13)
  2502.     m$ = m$ + "........" + chr$(13)
  2503.     m$ = m$ + "........" + chr$(13)
  2504.     m$ = m$ + "........" + chr$(13)
  2505.     m$ = m$ + "........" + chr$(13)
  2506.     arrTileText(24) = m$
  2507.  
  2508.     m$ = ""
  2509.     m$ = m$ + "........" + chr$(13)
  2510.     m$ = m$ + "........" + chr$(13)
  2511.     m$ = m$ + "........" + chr$(13)
  2512.     m$ = m$ + "........" + chr$(13)
  2513.     m$ = m$ + "........" + chr$(13)
  2514.     m$ = m$ + "........" + chr$(13)
  2515.     m$ = m$ + "........" + chr$(13)
  2516.     m$ = m$ + "........" + chr$(13)
  2517.     arrTileText(25) = m$
  2518.  
  2519.     m$ = ""
  2520.     m$ = m$ + "........" + chr$(13)
  2521.     m$ = m$ + "........" + chr$(13)
  2522.     m$ = m$ + "........" + chr$(13)
  2523.     m$ = m$ + "........" + chr$(13)
  2524.     m$ = m$ + "........" + chr$(13)
  2525.     m$ = m$ + "........" + chr$(13)
  2526.     m$ = m$ + "........" + chr$(13)
  2527.     m$ = m$ + "........" + chr$(13)
  2528.     arrTileText(26) = m$
  2529.  
  2530.     m$ = ""
  2531.     m$ = m$ + "........" + chr$(13)
  2532.     m$ = m$ + "........" + chr$(13)
  2533.     m$ = m$ + "........" + chr$(13)
  2534.     m$ = m$ + "........" + chr$(13)
  2535.     m$ = m$ + "........" + chr$(13)
  2536.     m$ = m$ + "........" + chr$(13)
  2537.     m$ = m$ + "........" + chr$(13)
  2538.     m$ = m$ + "........" + chr$(13)
  2539.     arrTileText(27) = m$
  2540.  
  2541.     m$ = ""
  2542.     m$ = m$ + "........" + chr$(13)
  2543.     m$ = m$ + "........" + chr$(13)
  2544.     m$ = m$ + "........" + chr$(13)
  2545.     m$ = m$ + "........" + chr$(13)
  2546.     m$ = m$ + "........" + chr$(13)
  2547.     m$ = m$ + "........" + chr$(13)
  2548.     m$ = m$ + "........" + chr$(13)
  2549.     m$ = m$ + "........" + chr$(13)
  2550.     arrTileText(28) = m$
  2551.  
  2552.     m$ = ""
  2553.     m$ = m$ + "........" + chr$(13)
  2554.     m$ = m$ + "........" + chr$(13)
  2555.     m$ = m$ + "........" + chr$(13)
  2556.     m$ = m$ + "........" + chr$(13)
  2557.     m$ = m$ + "........" + chr$(13)
  2558.     m$ = m$ + "........" + chr$(13)
  2559.     m$ = m$ + "........" + chr$(13)
  2560.     m$ = m$ + "........" + chr$(13)
  2561.     arrTileText(29) = m$
  2562.  
  2563.     m$ = ""
  2564.     m$ = m$ + "........" + chr$(13)
  2565.     m$ = m$ + "........" + chr$(13)
  2566.     m$ = m$ + "........" + chr$(13)
  2567.     m$ = m$ + "........" + chr$(13)
  2568.     m$ = m$ + "........" + chr$(13)
  2569.     m$ = m$ + "........" + chr$(13)
  2570.     m$ = m$ + "........" + chr$(13)
  2571.     m$ = m$ + "........" + chr$(13)
  2572.     arrTileText(30) = m$
  2573.  
  2574.     m$ = ""
  2575.     m$ = m$ + "........" + chr$(13)
  2576.     m$ = m$ + "........" + chr$(13)
  2577.     m$ = m$ + "........" + chr$(13)
  2578.     m$ = m$ + "........" + chr$(13)
  2579.     m$ = m$ + "........" + chr$(13)
  2580.     m$ = m$ + "........" + chr$(13)
  2581.     m$ = m$ + "........" + chr$(13)
  2582.     m$ = m$ + "........" + chr$(13)
  2583.     arrTileText(31) = m$
  2584.  
  2585.     m$ = ""
  2586.     m$ = m$ + "........" + chr$(13)
  2587.     m$ = m$ + "........" + chr$(13)
  2588.     m$ = m$ + "........" + chr$(13)
  2589.     m$ = m$ + "........" + chr$(13)
  2590.     m$ = m$ + "........" + chr$(13)
  2591.     m$ = m$ + "........" + chr$(13)
  2592.     m$ = m$ + "........" + chr$(13)
  2593.     m$ = m$ + "........" + chr$(13)
  2594.     arrTileText(32) = m$
  2595.  
  2596.     m$ = ""
  2597.     m$ = m$ + "...22..." + chr$(13)
  2598.     m$ = m$ + "...22..." + chr$(13)
  2599.     m$ = m$ + "...22..." + chr$(13)
  2600.     m$ = m$ + "...22..." + chr$(13)
  2601.     m$ = m$ + "........" + chr$(13)
  2602.     m$ = m$ + "........" + chr$(13)
  2603.     m$ = m$ + "...22..." + chr$(13)
  2604.     m$ = m$ + "........" + chr$(13)
  2605.     arrTileText(33) = m$
  2606.  
  2607.     m$ = ""
  2608.     m$ = m$ + ".22..22." + chr$(13)
  2609.     m$ = m$ + ".22..22." + chr$(13)
  2610.     m$ = m$ + ".22..22." + chr$(13)
  2611.     m$ = m$ + "........" + chr$(13)
  2612.     m$ = m$ + "........" + chr$(13)
  2613.     m$ = m$ + "........" + chr$(13)
  2614.     m$ = m$ + "........" + chr$(13)
  2615.     m$ = m$ + "........" + chr$(13)
  2616.     arrTileText(34) = m$
  2617.  
  2618.     m$ = ""
  2619.     m$ = m$ + ".22..22." + chr$(13)
  2620.     m$ = m$ + ".22..22." + chr$(13)
  2621.     m$ = m$ + "22222222" + chr$(13)
  2622.     m$ = m$ + ".22..22." + chr$(13)
  2623.     m$ = m$ + "22222222" + chr$(13)
  2624.     m$ = m$ + ".22..22." + chr$(13)
  2625.     m$ = m$ + ".22..22." + chr$(13)
  2626.     m$ = m$ + "........" + chr$(13)
  2627.     arrTileText(35) = m$
  2628.  
  2629.     m$ = ""
  2630.     m$ = m$ + "...22..." + chr$(13)
  2631.     m$ = m$ + "..22222." + chr$(13)
  2632.     m$ = m$ + ".22....." + chr$(13)
  2633.     m$ = m$ + "..2222.." + chr$(13)
  2634.     m$ = m$ + ".....22." + chr$(13)
  2635.     m$ = m$ + ".22222.." + chr$(13)
  2636.     m$ = m$ + "...22..." + chr$(13)
  2637.     m$ = m$ + "........" + chr$(13)
  2638.     arrTileText(36) = m$
  2639.  
  2640.     m$ = ""
  2641.     m$ = m$ + ".22...2." + chr$(13)
  2642.     m$ = m$ + ".22..22." + chr$(13)
  2643.     m$ = m$ + "....22.." + chr$(13)
  2644.     m$ = m$ + "...22..." + chr$(13)
  2645.     m$ = m$ + "..22...." + chr$(13)
  2646.     m$ = m$ + ".22..22." + chr$(13)
  2647.     m$ = m$ + ".2...22." + chr$(13)
  2648.     m$ = m$ + "........" + chr$(13)
  2649.     arrTileText(37) = m$
  2650.  
  2651.     m$ = ""
  2652.     m$ = m$ + "..2222.." + chr$(13)
  2653.     m$ = m$ + ".22..22." + chr$(13)
  2654.     m$ = m$ + "..2222.." + chr$(13)
  2655.     m$ = m$ + "..222..." + chr$(13)
  2656.     m$ = m$ + ".22..222" + chr$(13)
  2657.     m$ = m$ + ".22..22." + chr$(13)
  2658.     m$ = m$ + "..222222" + chr$(13)
  2659.     m$ = m$ + "........" + chr$(13)
  2660.     arrTileText(38) = m$
  2661.  
  2662.     m$ = ""
  2663.     m$ = m$ + ".....22." + chr$(13)
  2664.     m$ = m$ + "....22.." + chr$(13)
  2665.     m$ = m$ + "...22..." + chr$(13)
  2666.     m$ = m$ + "........" + chr$(13)
  2667.     m$ = m$ + "........" + chr$(13)
  2668.     m$ = m$ + "........" + chr$(13)
  2669.     m$ = m$ + "........" + chr$(13)
  2670.     m$ = m$ + "........" + chr$(13)
  2671.     arrTileText(39) = m$
  2672.  
  2673.     m$ = ""
  2674.     m$ = m$ + "....22.." + chr$(13)
  2675.     m$ = m$ + "...22..." + chr$(13)
  2676.     m$ = m$ + "..22...." + chr$(13)
  2677.     m$ = m$ + "..22...." + chr$(13)
  2678.     m$ = m$ + "..22...." + chr$(13)
  2679.     m$ = m$ + "...22..." + chr$(13)
  2680.     m$ = m$ + "....22.." + chr$(13)
  2681.     m$ = m$ + "........" + chr$(13)
  2682.     arrTileText(40) = m$
  2683.  
  2684.     m$ = ""
  2685.     m$ = m$ + "..22...." + chr$(13)
  2686.     m$ = m$ + "...22..." + chr$(13)
  2687.     m$ = m$ + "....22.." + chr$(13)
  2688.     m$ = m$ + "....22.." + chr$(13)
  2689.     m$ = m$ + "....22.." + chr$(13)
  2690.     m$ = m$ + "...22..." + chr$(13)
  2691.     m$ = m$ + "..22...." + chr$(13)
  2692.     m$ = m$ + "........" + chr$(13)
  2693.     arrTileText(41) = m$
  2694.  
  2695.     m$ = ""
  2696.     m$ = m$ + "........" + chr$(13)
  2697.     m$ = m$ + ".22..22." + chr$(13)
  2698.     m$ = m$ + "..2222.." + chr$(13)
  2699.     m$ = m$ + "22222222" + chr$(13)
  2700.     m$ = m$ + "..2222.." + chr$(13)
  2701.     m$ = m$ + ".22..22." + chr$(13)
  2702.     m$ = m$ + "........" + chr$(13)
  2703.     m$ = m$ + "........" + chr$(13)
  2704.     arrTileText(42) = m$
  2705.  
  2706.     m$ = ""
  2707.     m$ = m$ + "........" + chr$(13)
  2708.     m$ = m$ + "...22..." + chr$(13)
  2709.     m$ = m$ + "...22..." + chr$(13)
  2710.     m$ = m$ + ".222222." + chr$(13)
  2711.     m$ = m$ + "...22..." + chr$(13)
  2712.     m$ = m$ + "...22..." + chr$(13)
  2713.     m$ = m$ + "........" + chr$(13)
  2714.     m$ = m$ + "........" + chr$(13)
  2715.     arrTileText(43) = m$
  2716.  
  2717.     m$ = ""
  2718.     m$ = m$ + "........" + chr$(13)
  2719.     m$ = m$ + "........" + chr$(13)
  2720.     m$ = m$ + "........" + chr$(13)
  2721.     m$ = m$ + "........" + chr$(13)
  2722.     m$ = m$ + "........" + chr$(13)
  2723.     m$ = m$ + "...22..." + chr$(13)
  2724.     m$ = m$ + "...22..." + chr$(13)
  2725.     m$ = m$ + "..22...." + chr$(13)
  2726.     arrTileText(44) = m$
  2727.  
  2728.     m$ = ""
  2729.     m$ = m$ + "........" + chr$(13)
  2730.     m$ = m$ + "........" + chr$(13)
  2731.     m$ = m$ + "........" + chr$(13)
  2732.     m$ = m$ + ".222222." + chr$(13)
  2733.     m$ = m$ + "........" + chr$(13)
  2734.     m$ = m$ + "........" + chr$(13)
  2735.     m$ = m$ + "........" + chr$(13)
  2736.     m$ = m$ + "........" + chr$(13)
  2737.     arrTileText(45) = m$
  2738.  
  2739.     m$ = ""
  2740.     m$ = m$ + "........" + chr$(13)
  2741.     m$ = m$ + "........" + chr$(13)
  2742.     m$ = m$ + "........" + chr$(13)
  2743.     m$ = m$ + "........" + chr$(13)
  2744.     m$ = m$ + "........" + chr$(13)
  2745.     m$ = m$ + "...22..." + chr$(13)
  2746.     m$ = m$ + "...22..." + chr$(13)
  2747.     m$ = m$ + "........" + chr$(13)
  2748.     arrTileText(46) = m$
  2749.  
  2750.     m$ = ""
  2751.     m$ = m$ + "........" + chr$(13)
  2752.     m$ = m$ + "......22" + chr$(13)
  2753.     m$ = m$ + ".....22." + chr$(13)
  2754.     m$ = m$ + "....22.." + chr$(13)
  2755.     m$ = m$ + "...22..." + chr$(13)
  2756.     m$ = m$ + "..22...." + chr$(13)
  2757.     m$ = m$ + ".22....." + chr$(13)
  2758.     m$ = m$ + "........" + chr$(13)
  2759.     arrTileText(47) = m$
  2760.  
  2761.     m$ = ""
  2762.     m$ = m$ + "..2222.." + chr$(13)
  2763.     m$ = m$ + ".22..22." + chr$(13)
  2764.     m$ = m$ + ".22.222." + chr$(13)
  2765.     m$ = m$ + ".222.22." + chr$(13)
  2766.     m$ = m$ + ".22..22." + chr$(13)
  2767.     m$ = m$ + ".22..22." + chr$(13)
  2768.     m$ = m$ + "..2222.." + chr$(13)
  2769.     m$ = m$ + "........" + chr$(13)
  2770.     arrTileText(48) = m$
  2771.  
  2772.     m$ = ""
  2773.     m$ = m$ + "...22..." + chr$(13)
  2774.     m$ = m$ + "...22..." + chr$(13)
  2775.     m$ = m$ + "..222..." + chr$(13)
  2776.     m$ = m$ + "...22..." + chr$(13)
  2777.     m$ = m$ + "...22..." + chr$(13)
  2778.     m$ = m$ + "...22..." + chr$(13)
  2779.     m$ = m$ + ".222222." + chr$(13)
  2780.     m$ = m$ + "........" + chr$(13)
  2781.     arrTileText(49) = m$
  2782.  
  2783.     m$ = ""
  2784.     m$ = m$ + "..2222.." + chr$(13)
  2785.     m$ = m$ + ".22..22." + chr$(13)
  2786.     m$ = m$ + ".....22." + chr$(13)
  2787.     m$ = m$ + "....22.." + chr$(13)
  2788.     m$ = m$ + "..22...." + chr$(13)
  2789.     m$ = m$ + ".22....." + chr$(13)
  2790.     m$ = m$ + ".222222." + chr$(13)
  2791.     m$ = m$ + "........" + chr$(13)
  2792.     arrTileText(50) = m$
  2793.  
  2794.     m$ = ""
  2795.     m$ = m$ + "..2222.." + chr$(13)
  2796.     m$ = m$ + ".22..22." + chr$(13)
  2797.     m$ = m$ + ".....22." + chr$(13)
  2798.     m$ = m$ + "...222.." + chr$(13)
  2799.     m$ = m$ + ".....22." + chr$(13)
  2800.     m$ = m$ + ".22..22." + chr$(13)
  2801.     m$ = m$ + "..2222.." + chr$(13)
  2802.     m$ = m$ + "........" + chr$(13)
  2803.     arrTileText(51) = m$
  2804.  
  2805.     m$ = ""
  2806.     m$ = m$ + ".....22." + chr$(13)
  2807.     m$ = m$ + "....222." + chr$(13)
  2808.     m$ = m$ + "...2222." + chr$(13)
  2809.     m$ = m$ + ".22..22." + chr$(13)
  2810.     m$ = m$ + ".2222222" + chr$(13)
  2811.     m$ = m$ + ".....22." + chr$(13)
  2812.     m$ = m$ + ".....22." + chr$(13)
  2813.     m$ = m$ + "........" + chr$(13)
  2814.     arrTileText(52) = m$
  2815.  
  2816.     m$ = ""
  2817.     m$ = m$ + ".222222." + chr$(13)
  2818.     m$ = m$ + ".22....." + chr$(13)
  2819.     m$ = m$ + ".22222.." + chr$(13)
  2820.     m$ = m$ + ".....22." + chr$(13)
  2821.     m$ = m$ + ".....22." + chr$(13)
  2822.     m$ = m$ + ".22..22." + chr$(13)
  2823.     m$ = m$ + "..2222.." + chr$(13)
  2824.     m$ = m$ + "........" + chr$(13)
  2825.     arrTileText(53) = m$
  2826.  
  2827.     m$ = ""
  2828.     m$ = m$ + "..2222.." + chr$(13)
  2829.     m$ = m$ + ".22..22." + chr$(13)
  2830.     m$ = m$ + ".22....." + chr$(13)
  2831.     m$ = m$ + ".22222.." + chr$(13)
  2832.     m$ = m$ + ".22..22." + chr$(13)
  2833.     m$ = m$ + ".22..22." + chr$(13)
  2834.     m$ = m$ + "..2222.." + chr$(13)
  2835.     m$ = m$ + "........" + chr$(13)
  2836.     arrTileText(54) = m$
  2837.  
  2838.     m$ = ""
  2839.     m$ = m$ + ".222222." + chr$(13)
  2840.     m$ = m$ + ".22..22." + chr$(13)
  2841.     m$ = m$ + "....22.." + chr$(13)
  2842.     m$ = m$ + "...22..." + chr$(13)
  2843.     m$ = m$ + "...22..." + chr$(13)
  2844.     m$ = m$ + "...22..." + chr$(13)
  2845.     m$ = m$ + "...22..." + chr$(13)
  2846.     m$ = m$ + "........" + chr$(13)
  2847.     arrTileText(55) = m$
  2848.  
  2849.     m$ = ""
  2850.     m$ = m$ + "..2222.." + chr$(13)
  2851.     m$ = m$ + ".22..22." + chr$(13)
  2852.     m$ = m$ + ".22..22." + chr$(13)
  2853.     m$ = m$ + "..2222.." + chr$(13)
  2854.     m$ = m$ + ".22..22." + chr$(13)
  2855.     m$ = m$ + ".22..22." + chr$(13)
  2856.     m$ = m$ + "..2222.." + chr$(13)
  2857.     m$ = m$ + "........" + chr$(13)
  2858.     arrTileText(56) = m$
  2859.  
  2860.     m$ = ""
  2861.     m$ = m$ + "..2222.." + chr$(13)
  2862.     m$ = m$ + ".22..22." + chr$(13)
  2863.     m$ = m$ + ".22..22." + chr$(13)
  2864.     m$ = m$ + "..22222." + chr$(13)
  2865.     m$ = m$ + ".....22." + chr$(13)
  2866.     m$ = m$ + ".22..22." + chr$(13)
  2867.     m$ = m$ + "..2222.." + chr$(13)
  2868.     m$ = m$ + "........" + chr$(13)
  2869.     arrTileText(57) = m$
  2870.  
  2871.     m$ = ""
  2872.     m$ = m$ + "........" + chr$(13)
  2873.     m$ = m$ + "........" + chr$(13)
  2874.     m$ = m$ + "...22..." + chr$(13)
  2875.     m$ = m$ + "........" + chr$(13)
  2876.     m$ = m$ + "........" + chr$(13)
  2877.     m$ = m$ + "...22..." + chr$(13)
  2878.     m$ = m$ + "........" + chr$(13)
  2879.     m$ = m$ + "........" + chr$(13)
  2880.     arrTileText(58) = m$
  2881.  
  2882.     m$ = ""
  2883.     m$ = m$ + "........" + chr$(13)
  2884.     m$ = m$ + "........" + chr$(13)
  2885.     m$ = m$ + "...22..." + chr$(13)
  2886.     m$ = m$ + "........" + chr$(13)
  2887.     m$ = m$ + "........" + chr$(13)
  2888.     m$ = m$ + "...22..." + chr$(13)
  2889.     m$ = m$ + "...22..." + chr$(13)
  2890.     m$ = m$ + "..22...." + chr$(13)
  2891.     arrTileText(59) = m$
  2892.  
  2893.     m$ = ""
  2894.     m$ = m$ + "....222." + chr$(13)
  2895.     m$ = m$ + "...22..." + chr$(13)
  2896.     m$ = m$ + "..22...." + chr$(13)
  2897.     m$ = m$ + ".22....." + chr$(13)
  2898.     m$ = m$ + "..22...." + chr$(13)
  2899.     m$ = m$ + "...22..." + chr$(13)
  2900.     m$ = m$ + "....222." + chr$(13)
  2901.     m$ = m$ + "........" + chr$(13)
  2902.     arrTileText(60) = m$
  2903.  
  2904.     m$ = ""
  2905.     m$ = m$ + "........" + chr$(13)
  2906.     m$ = m$ + "........" + chr$(13)
  2907.     m$ = m$ + ".222222." + chr$(13)
  2908.     m$ = m$ + "........" + chr$(13)
  2909.     m$ = m$ + ".222222." + chr$(13)
  2910.     m$ = m$ + "........" + chr$(13)
  2911.     m$ = m$ + "........" + chr$(13)
  2912.     m$ = m$ + "........" + chr$(13)
  2913.     arrTileText(61) = m$
  2914.  
  2915.     m$ = ""
  2916.     m$ = m$ + ".222...." + chr$(13)
  2917.     m$ = m$ + "...22..." + chr$(13)
  2918.     m$ = m$ + "....22.." + chr$(13)
  2919.     m$ = m$ + ".....22." + chr$(13)
  2920.     m$ = m$ + "....22.." + chr$(13)
  2921.     m$ = m$ + "...22..." + chr$(13)
  2922.     m$ = m$ + ".222...." + chr$(13)
  2923.     m$ = m$ + "........" + chr$(13)
  2924.     arrTileText(62) = m$
  2925.  
  2926.     m$ = ""
  2927.     m$ = m$ + "..2222.." + chr$(13)
  2928.     m$ = m$ + ".22..22." + chr$(13)
  2929.     m$ = m$ + ".....22." + chr$(13)
  2930.     m$ = m$ + "....22.." + chr$(13)
  2931.     m$ = m$ + "...22..." + chr$(13)
  2932.     m$ = m$ + "........" + chr$(13)
  2933.     m$ = m$ + "...22..." + chr$(13)
  2934.     m$ = m$ + "........" + chr$(13)
  2935.     arrTileText(63) = m$
  2936.  
  2937.     m$ = ""
  2938.     m$ = m$ + "..2222.." + chr$(13)
  2939.     m$ = m$ + ".22..22." + chr$(13)
  2940.     m$ = m$ + ".22.222." + chr$(13)
  2941.     m$ = m$ + ".22.222." + chr$(13)
  2942.     m$ = m$ + ".22....." + chr$(13)
  2943.     m$ = m$ + ".22...2." + chr$(13)
  2944.     m$ = m$ + "..2222.." + chr$(13)
  2945.     m$ = m$ + "........" + chr$(13)
  2946.     arrTileText(64) = m$
  2947.  
  2948.     m$ = ""
  2949.     m$ = m$ + "...22..." + chr$(13)
  2950.     m$ = m$ + "..2222.." + chr$(13)
  2951.     m$ = m$ + ".22..22." + chr$(13)
  2952.     m$ = m$ + ".222222." + chr$(13)
  2953.     m$ = m$ + ".22..22." + chr$(13)
  2954.     m$ = m$ + ".22..22." + chr$(13)
  2955.     m$ = m$ + ".22..22." + chr$(13)
  2956.     m$ = m$ + "........" + chr$(13)
  2957.     arrTileText(65) = m$
  2958.  
  2959.     m$ = ""
  2960.     m$ = m$ + ".22222.." + chr$(13)
  2961.     m$ = m$ + ".22..22." + chr$(13)
  2962.     m$ = m$ + ".22..22." + chr$(13)
  2963.     m$ = m$ + ".22222.." + chr$(13)
  2964.     m$ = m$ + ".22..22." + chr$(13)
  2965.     m$ = m$ + ".22..22." + chr$(13)
  2966.     m$ = m$ + ".22222.." + chr$(13)
  2967.     m$ = m$ + "........" + chr$(13)
  2968.     arrTileText(66) = m$
  2969.  
  2970.     m$ = ""
  2971.     m$ = m$ + "..2222.." + chr$(13)
  2972.     m$ = m$ + ".22..22." + chr$(13)
  2973.     m$ = m$ + ".22....." + chr$(13)
  2974.     m$ = m$ + ".22....." + chr$(13)
  2975.     m$ = m$ + ".22....." + chr$(13)
  2976.     m$ = m$ + ".22..22." + chr$(13)
  2977.     m$ = m$ + "..2222.." + chr$(13)
  2978.     m$ = m$ + "........" + chr$(13)
  2979.     arrTileText(67) = m$
  2980.  
  2981.     m$ = ""
  2982.     m$ = m$ + ".2222..." + chr$(13)
  2983.     m$ = m$ + ".22.22.." + chr$(13)
  2984.     m$ = m$ + ".22..22." + chr$(13)
  2985.     m$ = m$ + ".22..22." + chr$(13)
  2986.     m$ = m$ + ".22..22." + chr$(13)
  2987.     m$ = m$ + ".22.22.." + chr$(13)
  2988.     m$ = m$ + ".2222..." + chr$(13)
  2989.     m$ = m$ + "........" + chr$(13)
  2990.     arrTileText(68) = m$
  2991.  
  2992.     m$ = ""
  2993.     m$ = m$ + ".222222." + chr$(13)
  2994.     m$ = m$ + ".22....." + chr$(13)
  2995.     m$ = m$ + ".22....." + chr$(13)
  2996.     m$ = m$ + ".2222..." + chr$(13)
  2997.     m$ = m$ + ".22....." + chr$(13)
  2998.     m$ = m$ + ".22....." + chr$(13)
  2999.     m$ = m$ + ".222222." + chr$(13)
  3000.     m$ = m$ + "........" + chr$(13)
  3001.     arrTileText(69) = m$
  3002.  
  3003.     m$ = ""
  3004.     m$ = m$ + ".222222." + chr$(13)
  3005.     m$ = m$ + ".22....." + chr$(13)
  3006.     m$ = m$ + ".22....." + chr$(13)
  3007.     m$ = m$ + ".2222..." + chr$(13)
  3008.     m$ = m$ + ".22....." + chr$(13)
  3009.     m$ = m$ + ".22....." + chr$(13)
  3010.     m$ = m$ + ".22....." + chr$(13)
  3011.     m$ = m$ + "........" + chr$(13)
  3012.     arrTileText(70) = m$
  3013.  
  3014.     m$ = ""
  3015.     m$ = m$ + "..2222.." + chr$(13)
  3016.     m$ = m$ + ".22..22." + chr$(13)
  3017.     m$ = m$ + ".22....." + chr$(13)
  3018.     m$ = m$ + ".22.222." + chr$(13)
  3019.     m$ = m$ + ".22..22." + chr$(13)
  3020.     m$ = m$ + ".22..22." + chr$(13)
  3021.     m$ = m$ + "..2222.." + chr$(13)
  3022.     m$ = m$ + "........" + chr$(13)
  3023.     arrTileText(71) = m$
  3024.  
  3025.     m$ = ""
  3026.     m$ = m$ + ".22..22." + chr$(13)
  3027.     m$ = m$ + ".22..22." + chr$(13)
  3028.     m$ = m$ + ".22..22." + chr$(13)
  3029.     m$ = m$ + ".222222." + chr$(13)
  3030.     m$ = m$ + ".22..22." + chr$(13)
  3031.     m$ = m$ + ".22..22." + chr$(13)
  3032.     m$ = m$ + ".22..22." + chr$(13)
  3033.     m$ = m$ + "........" + chr$(13)
  3034.     arrTileText(72) = m$
  3035.  
  3036.     m$ = ""
  3037.     m$ = m$ + "..2222.." + chr$(13)
  3038.     m$ = m$ + "...22..." + chr$(13)
  3039.     m$ = m$ + "...22..." + chr$(13)
  3040.     m$ = m$ + "...22..." + chr$(13)
  3041.     m$ = m$ + "...22..." + chr$(13)
  3042.     m$ = m$ + "...22..." + chr$(13)
  3043.     m$ = m$ + "..2222.." + chr$(13)
  3044.     m$ = m$ + "........" + chr$(13)
  3045.     arrTileText(73) = m$
  3046.  
  3047.     m$ = ""
  3048.     m$ = m$ + "...2222." + chr$(13)
  3049.     m$ = m$ + "....22.." + chr$(13)
  3050.     m$ = m$ + "....22.." + chr$(13)
  3051.     m$ = m$ + "....22.." + chr$(13)
  3052.     m$ = m$ + "....22.." + chr$(13)
  3053.     m$ = m$ + ".22.22.." + chr$(13)
  3054.     m$ = m$ + "..222..." + chr$(13)
  3055.     m$ = m$ + "........" + chr$(13)
  3056.     arrTileText(74) = m$
  3057.  
  3058.     m$ = ""
  3059.     m$ = m$ + ".22..22." + chr$(13)
  3060.     m$ = m$ + ".22.22.." + chr$(13)
  3061.     m$ = m$ + ".2222..." + chr$(13)
  3062.     m$ = m$ + ".222...." + chr$(13)
  3063.     m$ = m$ + ".2222..." + chr$(13)
  3064.     m$ = m$ + ".22.22.." + chr$(13)
  3065.     m$ = m$ + ".22..22." + chr$(13)
  3066.     m$ = m$ + "........" + chr$(13)
  3067.     arrTileText(75) = m$
  3068.  
  3069.     m$ = ""
  3070.     m$ = m$ + ".22....." + chr$(13)
  3071.     m$ = m$ + ".22....." + chr$(13)
  3072.     m$ = m$ + ".22....." + chr$(13)
  3073.     m$ = m$ + ".22....." + chr$(13)
  3074.     m$ = m$ + ".22....." + chr$(13)
  3075.     m$ = m$ + ".22....." + chr$(13)
  3076.     m$ = m$ + ".222222." + chr$(13)
  3077.     m$ = m$ + "........" + chr$(13)
  3078.     arrTileText(76) = m$
  3079.  
  3080.     m$ = ""
  3081.     m$ = m$ + ".22...22" + chr$(13)
  3082.     m$ = m$ + ".222.222" + chr$(13)
  3083.     m$ = m$ + ".2222222" + chr$(13)
  3084.     m$ = m$ + ".22.2.22" + chr$(13)
  3085.     m$ = m$ + ".22...22" + chr$(13)
  3086.     m$ = m$ + ".22...22" + chr$(13)
  3087.     m$ = m$ + ".22...22" + chr$(13)
  3088.     m$ = m$ + "........" + chr$(13)
  3089.     arrTileText(77) = m$
  3090.  
  3091.     m$ = ""
  3092.     m$ = m$ + ".22..22." + chr$(13)
  3093.     m$ = m$ + ".222.22." + chr$(13)
  3094.     m$ = m$ + ".222222." + chr$(13)
  3095.     m$ = m$ + ".222222." + chr$(13)
  3096.     m$ = m$ + ".22.222." + chr$(13)
  3097.     m$ = m$ + ".22..22." + chr$(13)
  3098.     m$ = m$ + ".22..22." + chr$(13)
  3099.     m$ = m$ + "........" + chr$(13)
  3100.     arrTileText(78) = m$
  3101.  
  3102.     m$ = ""
  3103.     m$ = m$ + "..2222.." + chr$(13)
  3104.     m$ = m$ + ".22..22." + chr$(13)
  3105.     m$ = m$ + ".22..22." + chr$(13)
  3106.     m$ = m$ + ".22..22." + chr$(13)
  3107.     m$ = m$ + ".22..22." + chr$(13)
  3108.     m$ = m$ + ".22..22." + chr$(13)
  3109.     m$ = m$ + "..2222.." + chr$(13)
  3110.     m$ = m$ + "........" + chr$(13)
  3111.     arrTileText(79) = m$
  3112.  
  3113.     m$ = ""
  3114.     m$ = m$ + ".22222.." + chr$(13)
  3115.     m$ = m$ + ".22..22." + chr$(13)
  3116.     m$ = m$ + ".22..22." + chr$(13)
  3117.     m$ = m$ + ".22222.." + chr$(13)
  3118.     m$ = m$ + ".22....." + chr$(13)
  3119.     m$ = m$ + ".22....." + chr$(13)
  3120.     m$ = m$ + ".22....." + chr$(13)
  3121.     m$ = m$ + "........" + chr$(13)
  3122.     arrTileText(80) = m$
  3123.  
  3124.     m$ = ""
  3125.     m$ = m$ + "..2222.." + chr$(13)
  3126.     m$ = m$ + ".22..22." + chr$(13)
  3127.     m$ = m$ + ".22..22." + chr$(13)
  3128.     m$ = m$ + ".22..22." + chr$(13)
  3129.     m$ = m$ + ".22..22." + chr$(13)
  3130.     m$ = m$ + "..2222.." + chr$(13)
  3131.     m$ = m$ + "....222." + chr$(13)
  3132.     m$ = m$ + "........" + chr$(13)
  3133.     arrTileText(81) = m$
  3134.  
  3135.     m$ = ""
  3136.     m$ = m$ + ".22222.." + chr$(13)
  3137.     m$ = m$ + ".22..22." + chr$(13)
  3138.     m$ = m$ + ".22..22." + chr$(13)
  3139.     m$ = m$ + ".22222.." + chr$(13)
  3140.     m$ = m$ + ".2222..." + chr$(13)
  3141.     m$ = m$ + ".22.22.." + chr$(13)
  3142.     m$ = m$ + ".22..22." + chr$(13)
  3143.     m$ = m$ + "........" + chr$(13)
  3144.     arrTileText(82) = m$
  3145.  
  3146.     m$ = ""
  3147.     m$ = m$ + "..2222.." + chr$(13)
  3148.     m$ = m$ + ".22..22." + chr$(13)
  3149.     m$ = m$ + ".22....." + chr$(13)
  3150.     m$ = m$ + "..2222.." + chr$(13)
  3151.     m$ = m$ + ".....22." + chr$(13)
  3152.     m$ = m$ + ".22..22." + chr$(13)
  3153.     m$ = m$ + "..2222.." + chr$(13)
  3154.     m$ = m$ + "........" + chr$(13)
  3155.     arrTileText(83) = m$
  3156.  
  3157.     m$ = ""
  3158.     m$ = m$ + ".222222." + chr$(13)
  3159.     m$ = m$ + "...22..." + chr$(13)
  3160.     m$ = m$ + "...22..." + chr$(13)
  3161.     m$ = m$ + "...22..." + chr$(13)
  3162.     m$ = m$ + "...22..." + chr$(13)
  3163.     m$ = m$ + "...22..." + chr$(13)
  3164.     m$ = m$ + "...22..." + chr$(13)
  3165.     m$ = m$ + "........" + chr$(13)
  3166.     arrTileText(84) = m$
  3167.  
  3168.     m$ = ""
  3169.     m$ = m$ + ".22..22." + chr$(13)
  3170.     m$ = m$ + ".22..22." + chr$(13)
  3171.     m$ = m$ + ".22..22." + chr$(13)
  3172.     m$ = m$ + ".22..22." + chr$(13)
  3173.     m$ = m$ + ".22..22." + chr$(13)
  3174.     m$ = m$ + ".22..22." + chr$(13)
  3175.     m$ = m$ + "..2222.." + chr$(13)
  3176.     m$ = m$ + "........" + chr$(13)
  3177.     arrTileText(85) = m$
  3178.  
  3179.     m$ = ""
  3180.     m$ = m$ + ".22..22." + chr$(13)
  3181.     m$ = m$ + ".22..22." + chr$(13)
  3182.     m$ = m$ + ".22..22." + chr$(13)
  3183.     m$ = m$ + ".22..22." + chr$(13)
  3184.     m$ = m$ + ".22..22." + chr$(13)
  3185.     m$ = m$ + "..2222.." + chr$(13)
  3186.     m$ = m$ + "...22..." + chr$(13)
  3187.     m$ = m$ + "........" + chr$(13)
  3188.     arrTileText(86) = m$
  3189.  
  3190.     m$ = ""
  3191.     m$ = m$ + ".22...22" + chr$(13)
  3192.     m$ = m$ + ".22...22" + chr$(13)
  3193.     m$ = m$ + ".22...22" + chr$(13)
  3194.     m$ = m$ + ".22.2.22" + chr$(13)
  3195.     m$ = m$ + ".2222222" + chr$(13)
  3196.     m$ = m$ + ".222.222" + chr$(13)
  3197.     m$ = m$ + ".22...22" + chr$(13)
  3198.     m$ = m$ + "........" + chr$(13)
  3199.     arrTileText(87) = m$
  3200.  
  3201.     m$ = ""
  3202.     m$ = m$ + ".22..22." + chr$(13)
  3203.     m$ = m$ + ".22..22." + chr$(13)
  3204.     m$ = m$ + "..2222.." + chr$(13)
  3205.     m$ = m$ + "...22..." + chr$(13)
  3206.     m$ = m$ + "..2222.." + chr$(13)
  3207.     m$ = m$ + ".22..22." + chr$(13)
  3208.     m$ = m$ + ".22..22." + chr$(13)
  3209.     m$ = m$ + "........" + chr$(13)
  3210.     arrTileText(88) = m$
  3211.  
  3212.     m$ = ""
  3213.     m$ = m$ + ".22..22." + chr$(13)
  3214.     m$ = m$ + ".22..22." + chr$(13)
  3215.     m$ = m$ + ".22..22." + chr$(13)
  3216.     m$ = m$ + "..2222.." + chr$(13)
  3217.     m$ = m$ + "...22..." + chr$(13)
  3218.     m$ = m$ + "...22..." + chr$(13)
  3219.     m$ = m$ + "...22..." + chr$(13)
  3220.     m$ = m$ + "........" + chr$(13)
  3221.     arrTileText(89) = m$
  3222.  
  3223.     m$ = ""
  3224.     m$ = m$ + ".222222." + chr$(13)
  3225.     m$ = m$ + ".....22." + chr$(13)
  3226.     m$ = m$ + "....22.." + chr$(13)
  3227.     m$ = m$ + "...22..." + chr$(13)
  3228.     m$ = m$ + "..22...." + chr$(13)
  3229.     m$ = m$ + ".22....." + chr$(13)
  3230.     m$ = m$ + ".222222." + chr$(13)
  3231.     m$ = m$ + "........" + chr$(13)
  3232.     arrTileText(90) = m$
  3233.  
  3234.     m$ = ""
  3235.     m$ = m$ + "..2222.." + chr$(13)
  3236.     m$ = m$ + "..22...." + chr$(13)
  3237.     m$ = m$ + "..22...." + chr$(13)
  3238.     m$ = m$ + "..22...." + chr$(13)
  3239.     m$ = m$ + "..22...." + chr$(13)
  3240.     m$ = m$ + "..22...." + chr$(13)
  3241.     m$ = m$ + "..2222.." + chr$(13)
  3242.     m$ = m$ + "........" + chr$(13)
  3243.     arrTileText(91) = m$
  3244.  
  3245.     m$ = ""
  3246.     m$ = m$ + "........" + chr$(13)
  3247.     m$ = m$ + ".22....." + chr$(13)
  3248.     m$ = m$ + "..22...." + chr$(13)
  3249.     m$ = m$ + "...22..." + chr$(13)
  3250.     m$ = m$ + "....22.." + chr$(13)
  3251.     m$ = m$ + ".....22." + chr$(13)
  3252.     m$ = m$ + "......22" + chr$(13)
  3253.     m$ = m$ + "........" + chr$(13)
  3254.     arrTileText(92) = m$
  3255.  
  3256.     m$ = ""
  3257.     m$ = m$ + "..2222.." + chr$(13)
  3258.     m$ = m$ + "....22.." + chr$(13)
  3259.     m$ = m$ + "....22.." + chr$(13)
  3260.     m$ = m$ + "....22.." + chr$(13)
  3261.     m$ = m$ + "....22.." + chr$(13)
  3262.     m$ = m$ + "....22.." + chr$(13)
  3263.     m$ = m$ + "..2222.." + chr$(13)
  3264.     m$ = m$ + "........" + chr$(13)
  3265.     arrTileText(93) = m$
  3266.  
  3267.     m$ = ""
  3268.     m$ = m$ + "...22..." + chr$(13)
  3269.     m$ = m$ + "..2222.." + chr$(13)
  3270.     m$ = m$ + ".22..22." + chr$(13)
  3271.     m$ = m$ + "........" + chr$(13)
  3272.     m$ = m$ + "........" + chr$(13)
  3273.     m$ = m$ + "........" + chr$(13)
  3274.     m$ = m$ + "........" + chr$(13)
  3275.     m$ = m$ + "........" + chr$(13)
  3276.     arrTileText(94) = m$
  3277.  
  3278.     m$ = ""
  3279.     m$ = m$ + "........" + chr$(13)
  3280.     m$ = m$ + "........" + chr$(13)
  3281.     m$ = m$ + "........" + chr$(13)
  3282.     m$ = m$ + "........" + chr$(13)
  3283.     m$ = m$ + "........" + chr$(13)
  3284.     m$ = m$ + ".222222." + chr$(13)
  3285.     m$ = m$ + "........" + chr$(13)
  3286.     m$ = m$ + "........" + chr$(13)
  3287.     arrTileText(95) = m$
  3288.  
  3289.     m$ = ""
  3290.     m$ = m$ + "........" + chr$(13)
  3291.     m$ = m$ + "........" + chr$(13)
  3292.     m$ = m$ + "........" + chr$(13)
  3293.     m$ = m$ + "........" + chr$(13)
  3294.     m$ = m$ + "........" + chr$(13)
  3295.     m$ = m$ + "........" + chr$(13)
  3296.     m$ = m$ + "........" + chr$(13)
  3297.     m$ = m$ + "........" + chr$(13)
  3298.     arrTileText(96) = m$
  3299.  
  3300.     m$ = ""
  3301.     m$ = m$ + "........" + chr$(13)
  3302.     m$ = m$ + "..2222.." + chr$(13)
  3303.     m$ = m$ + ".....22." + chr$(13)
  3304.     m$ = m$ + "..22222." + chr$(13)
  3305.     m$ = m$ + ".22..22." + chr$(13)
  3306.     m$ = m$ + "..22222." + chr$(13)
  3307.     m$ = m$ + "........" + chr$(13)
  3308.     m$ = m$ + "........" + chr$(13)
  3309.     arrTileText(97) = m$
  3310.  
  3311.     m$ = ""
  3312.     m$ = m$ + ".22....." + chr$(13)
  3313.     m$ = m$ + ".22....." + chr$(13)
  3314.     m$ = m$ + ".22222.." + chr$(13)
  3315.     m$ = m$ + ".22..22." + chr$(13)
  3316.     m$ = m$ + ".22..22." + chr$(13)
  3317.     m$ = m$ + ".22222.." + chr$(13)
  3318.     m$ = m$ + "........" + chr$(13)
  3319.     m$ = m$ + "........" + chr$(13)
  3320.     arrTileText(98) = m$
  3321.  
  3322.     m$ = ""
  3323.     m$ = m$ + "........" + chr$(13)
  3324.     m$ = m$ + "..2222.." + chr$(13)
  3325.     m$ = m$ + ".22....." + chr$(13)
  3326.     m$ = m$ + ".22....." + chr$(13)
  3327.     m$ = m$ + ".22....." + chr$(13)
  3328.     m$ = m$ + "..2222.." + chr$(13)
  3329.     m$ = m$ + "........" + chr$(13)
  3330.     m$ = m$ + "........" + chr$(13)
  3331.     arrTileText(99) = m$
  3332.  
  3333.     m$ = ""
  3334.     m$ = m$ + ".....22." + chr$(13)
  3335.     m$ = m$ + ".....22." + chr$(13)
  3336.     m$ = m$ + "..22222." + chr$(13)
  3337.     m$ = m$ + ".22..22." + chr$(13)
  3338.     m$ = m$ + ".22..22." + chr$(13)
  3339.     m$ = m$ + "..22222." + chr$(13)
  3340.     m$ = m$ + "........" + chr$(13)
  3341.     m$ = m$ + "........" + chr$(13)
  3342.     arrTileText(100) = m$
  3343.  
  3344.     m$ = ""
  3345.     m$ = m$ + "........" + chr$(13)
  3346.     m$ = m$ + "..2222.." + chr$(13)
  3347.     m$ = m$ + ".22..22." + chr$(13)
  3348.     m$ = m$ + ".222222." + chr$(13)
  3349.     m$ = m$ + ".22....." + chr$(13)
  3350.     m$ = m$ + "..2222.." + chr$(13)
  3351.     m$ = m$ + "........" + chr$(13)
  3352.     m$ = m$ + "........" + chr$(13)
  3353.     arrTileText(101) = m$
  3354.  
  3355.     m$ = ""
  3356.     m$ = m$ + "....222." + chr$(13)
  3357.     m$ = m$ + "...22..." + chr$(13)
  3358.     m$ = m$ + "..22222." + chr$(13)
  3359.     m$ = m$ + "...22..." + chr$(13)
  3360.     m$ = m$ + "...22..." + chr$(13)
  3361.     m$ = m$ + "...22..." + chr$(13)
  3362.     m$ = m$ + "........" + chr$(13)
  3363.     m$ = m$ + "........" + chr$(13)
  3364.     arrTileText(102) = m$
  3365.  
  3366.     m$ = ""
  3367.     m$ = m$ + "........" + chr$(13)
  3368.     m$ = m$ + "..22222." + chr$(13)
  3369.     m$ = m$ + ".22..22." + chr$(13)
  3370.     m$ = m$ + ".22..22." + chr$(13)
  3371.     m$ = m$ + "..22222." + chr$(13)
  3372.     m$ = m$ + ".....22." + chr$(13)
  3373.     m$ = m$ + ".22222.." + chr$(13)
  3374.     m$ = m$ + "........" + chr$(13)
  3375.     arrTileText(103) = m$
  3376.  
  3377.     m$ = ""
  3378.     m$ = m$ + ".22....." + chr$(13)
  3379.     m$ = m$ + ".22....." + chr$(13)
  3380.     m$ = m$ + ".22222.." + chr$(13)
  3381.     m$ = m$ + ".22..22." + chr$(13)
  3382.     m$ = m$ + ".22..22." + chr$(13)
  3383.     m$ = m$ + ".22..22." + chr$(13)
  3384.     m$ = m$ + "........" + chr$(13)
  3385.     m$ = m$ + "........" + chr$(13)
  3386.     arrTileText(104) = m$
  3387.  
  3388.     m$ = ""
  3389.     m$ = m$ + "...22..." + chr$(13)
  3390.     m$ = m$ + "........" + chr$(13)
  3391.     m$ = m$ + "..222..." + chr$(13)
  3392.     m$ = m$ + "...22..." + chr$(13)
  3393.     m$ = m$ + "...22..." + chr$(13)
  3394.     m$ = m$ + "..2222.." + chr$(13)
  3395.     m$ = m$ + "........" + chr$(13)
  3396.     m$ = m$ + "........" + chr$(13)
  3397.     arrTileText(105) = m$
  3398.  
  3399.     m$ = ""
  3400.     m$ = m$ + ".....22." + chr$(13)
  3401.     m$ = m$ + "........" + chr$(13)
  3402.     m$ = m$ + ".....22." + chr$(13)
  3403.     m$ = m$ + ".....22." + chr$(13)
  3404.     m$ = m$ + ".....22." + chr$(13)
  3405.     m$ = m$ + ".....22." + chr$(13)
  3406.     m$ = m$ + "..2222.." + chr$(13)
  3407.     m$ = m$ + "........" + chr$(13)
  3408.     arrTileText(106) = m$
  3409.  
  3410.     m$ = ""
  3411.     m$ = m$ + ".22....." + chr$(13)
  3412.     m$ = m$ + ".22....." + chr$(13)
  3413.     m$ = m$ + ".22.22.." + chr$(13)
  3414.     m$ = m$ + ".2222..." + chr$(13)
  3415.     m$ = m$ + ".22.22.." + chr$(13)
  3416.     m$ = m$ + ".22..22." + chr$(13)
  3417.     m$ = m$ + "........" + chr$(13)
  3418.     m$ = m$ + "........" + chr$(13)
  3419.     arrTileText(107) = m$
  3420.  
  3421.     m$ = ""
  3422.     m$ = m$ + "..222..." + chr$(13)
  3423.     m$ = m$ + "...22..." + chr$(13)
  3424.     m$ = m$ + "...22..." + chr$(13)
  3425.     m$ = m$ + "...22..." + chr$(13)
  3426.     m$ = m$ + "...22..." + chr$(13)
  3427.     m$ = m$ + "..2222.." + chr$(13)
  3428.     m$ = m$ + "........" + chr$(13)
  3429.     m$ = m$ + "........" + chr$(13)
  3430.     arrTileText(108) = m$
  3431.  
  3432.     m$ = ""
  3433.     m$ = m$ + "........" + chr$(13)
  3434.     m$ = m$ + ".22..22." + chr$(13)
  3435.     m$ = m$ + ".2222222" + chr$(13)
  3436.     m$ = m$ + ".2222222" + chr$(13)
  3437.     m$ = m$ + ".22.2.22" + chr$(13)
  3438.     m$ = m$ + ".22...22" + chr$(13)
  3439.     m$ = m$ + "........" + chr$(13)
  3440.     m$ = m$ + "........" + chr$(13)
  3441.     arrTileText(109) = m$
  3442.  
  3443.     m$ = ""
  3444.     m$ = m$ + "........" + chr$(13)
  3445.     m$ = m$ + ".22222.." + chr$(13)
  3446.     m$ = m$ + ".22..22." + chr$(13)
  3447.     m$ = m$ + ".22..22." + chr$(13)
  3448.     m$ = m$ + ".22..22." + chr$(13)
  3449.     m$ = m$ + ".22..22." + chr$(13)
  3450.     m$ = m$ + "........" + chr$(13)
  3451.     m$ = m$ + "........" + chr$(13)
  3452.     arrTileText(110) = m$
  3453.  
  3454.     m$ = ""
  3455.     m$ = m$ + "........" + chr$(13)
  3456.     m$ = m$ + "..2222.." + chr$(13)
  3457.     m$ = m$ + ".22..22." + chr$(13)
  3458.     m$ = m$ + ".22..22." + chr$(13)
  3459.     m$ = m$ + ".22..22." + chr$(13)
  3460.     m$ = m$ + "..2222.." + chr$(13)
  3461.     m$ = m$ + "........" + chr$(13)
  3462.     m$ = m$ + "........" + chr$(13)
  3463.     arrTileText(111) = m$
  3464.  
  3465.     m$ = ""
  3466.     m$ = m$ + "........" + chr$(13)
  3467.     m$ = m$ + ".22222.." + chr$(13)
  3468.     m$ = m$ + ".22..22." + chr$(13)
  3469.     m$ = m$ + ".22..22." + chr$(13)
  3470.     m$ = m$ + ".22222.." + chr$(13)
  3471.     m$ = m$ + ".22....." + chr$(13)
  3472.     m$ = m$ + ".22....." + chr$(13)
  3473.     m$ = m$ + "........" + chr$(13)
  3474.     arrTileText(112) = m$
  3475.  
  3476.     m$ = ""
  3477.     m$ = m$ + "........" + chr$(13)
  3478.     m$ = m$ + "..22222." + chr$(13)
  3479.     m$ = m$ + ".22..22." + chr$(13)
  3480.     m$ = m$ + ".22..22." + chr$(13)
  3481.     m$ = m$ + "..22222." + chr$(13)
  3482.     m$ = m$ + ".....22." + chr$(13)
  3483.     m$ = m$ + ".....22." + chr$(13)
  3484.     m$ = m$ + "........" + chr$(13)
  3485.     arrTileText(113) = m$
  3486.  
  3487.     m$ = ""
  3488.     m$ = m$ + "........" + chr$(13)
  3489.     m$ = m$ + ".22222.." + chr$(13)
  3490.     m$ = m$ + ".22..22." + chr$(13)
  3491.     m$ = m$ + ".22....." + chr$(13)
  3492.     m$ = m$ + ".22....." + chr$(13)
  3493.     m$ = m$ + ".22....." + chr$(13)
  3494.     m$ = m$ + "........" + chr$(13)
  3495.     m$ = m$ + "........" + chr$(13)
  3496.     arrTileText(114) = m$
  3497.  
  3498.     m$ = ""
  3499.     m$ = m$ + "........" + chr$(13)
  3500.     m$ = m$ + "..22222." + chr$(13)
  3501.     m$ = m$ + ".22....." + chr$(13)
  3502.     m$ = m$ + "..2222.." + chr$(13)
  3503.     m$ = m$ + ".....22." + chr$(13)
  3504.     m$ = m$ + ".22222.." + chr$(13)
  3505.     m$ = m$ + "........" + chr$(13)
  3506.     m$ = m$ + "........" + chr$(13)
  3507.     arrTileText(115) = m$
  3508.  
  3509.     m$ = ""
  3510.     m$ = m$ + "...22..." + chr$(13)
  3511.     m$ = m$ + ".222222." + chr$(13)
  3512.     m$ = m$ + "...22..." + chr$(13)
  3513.     m$ = m$ + "...22..." + chr$(13)
  3514.     m$ = m$ + "...22..." + chr$(13)
  3515.     m$ = m$ + "....222." + chr$(13)
  3516.     m$ = m$ + "........" + chr$(13)
  3517.     m$ = m$ + "........" + chr$(13)
  3518.     arrTileText(116) = m$
  3519.  
  3520.     m$ = ""
  3521.     m$ = m$ + "........" + chr$(13)
  3522.     m$ = m$ + ".22..22." + chr$(13)
  3523.     m$ = m$ + ".22..22." + chr$(13)
  3524.     m$ = m$ + ".22..22." + chr$(13)
  3525.     m$ = m$ + ".22..22." + chr$(13)
  3526.     m$ = m$ + "..22222." + chr$(13)
  3527.     m$ = m$ + "........" + chr$(13)
  3528.     m$ = m$ + "........" + chr$(13)
  3529.     arrTileText(117) = m$
  3530.  
  3531.     m$ = ""
  3532.     m$ = m$ + "........" + chr$(13)
  3533.     m$ = m$ + ".22..22." + chr$(13)
  3534.     m$ = m$ + ".22..22." + chr$(13)
  3535.     m$ = m$ + ".22..22." + chr$(13)
  3536.     m$ = m$ + "..2222.." + chr$(13)
  3537.     m$ = m$ + "...22..." + chr$(13)
  3538.     m$ = m$ + "........" + chr$(13)
  3539.     m$ = m$ + "........" + chr$(13)
  3540.     arrTileText(118) = m$
  3541.  
  3542.     m$ = ""
  3543.     m$ = m$ + "........" + chr$(13)
  3544.     m$ = m$ + ".22...22" + chr$(13)
  3545.     m$ = m$ + ".22.2.22" + chr$(13)
  3546.     m$ = m$ + ".2222222" + chr$(13)
  3547.     m$ = m$ + "..22222." + chr$(13)
  3548.     m$ = m$ + "..22.22." + chr$(13)
  3549.     m$ = m$ + "........" + chr$(13)
  3550.     m$ = m$ + "........" + chr$(13)
  3551.     arrTileText(119) = m$
  3552.  
  3553.     m$ = ""
  3554.     m$ = m$ + "........" + chr$(13)
  3555.     m$ = m$ + ".22..22." + chr$(13)
  3556.     m$ = m$ + "..2222.." + chr$(13)
  3557.     m$ = m$ + "...22..." + chr$(13)
  3558.     m$ = m$ + "..2222.." + chr$(13)
  3559.     m$ = m$ + ".22..22." + chr$(13)
  3560.     m$ = m$ + "........" + chr$(13)
  3561.     m$ = m$ + "........" + chr$(13)
  3562.     arrTileText(120) = m$
  3563.  
  3564.     m$ = ""
  3565.     m$ = m$ + "........" + chr$(13)
  3566.     m$ = m$ + ".22..22." + chr$(13)
  3567.     m$ = m$ + ".22..22." + chr$(13)
  3568.     m$ = m$ + ".22..22." + chr$(13)
  3569.     m$ = m$ + "..22222." + chr$(13)
  3570.     m$ = m$ + "....22.." + chr$(13)
  3571.     m$ = m$ + ".2222..." + chr$(13)
  3572.     m$ = m$ + "........" + chr$(13)
  3573.     arrTileText(121) = m$
  3574.  
  3575.     m$ = ""
  3576.     m$ = m$ + "........" + chr$(13)
  3577.     m$ = m$ + ".222222." + chr$(13)
  3578.     m$ = m$ + "....22.." + chr$(13)
  3579.     m$ = m$ + "...22..." + chr$(13)
  3580.     m$ = m$ + "..22...." + chr$(13)
  3581.     m$ = m$ + ".222222." + chr$(13)
  3582.     m$ = m$ + "........" + chr$(13)
  3583.     m$ = m$ + "........" + chr$(13)
  3584.     arrTileText(122) = m$
  3585.  
  3586.     m$ = ""
  3587.     m$ = m$ + "...222.." + chr$(13)
  3588.     m$ = m$ + "..22...." + chr$(13)
  3589.     m$ = m$ + "..2....." + chr$(13)
  3590.     m$ = m$ + ".22....." + chr$(13)
  3591.     m$ = m$ + "..2....." + chr$(13)
  3592.     m$ = m$ + "..22...." + chr$(13)
  3593.     m$ = m$ + "...222.." + chr$(13)
  3594.     m$ = m$ + "........" + chr$(13)
  3595.     arrTileText(123) = m$
  3596.  
  3597.     m$ = ""
  3598.     m$ = m$ + "....2..." + chr$(13)
  3599.     m$ = m$ + "....2..." + chr$(13)
  3600.     m$ = m$ + "....2..." + chr$(13)
  3601.     m$ = m$ + "....2..." + chr$(13)
  3602.     m$ = m$ + "....2..." + chr$(13)
  3603.     m$ = m$ + "....2..." + chr$(13)
  3604.     m$ = m$ + "....2..." + chr$(13)
  3605.     m$ = m$ + "........" + chr$(13)
  3606.     arrTileText(124) = m$
  3607.  
  3608.     m$ = ""
  3609.     m$ = m$ + "..222..." + chr$(13)
  3610.     m$ = m$ + "....22.." + chr$(13)
  3611.     m$ = m$ + ".....2.." + chr$(13)
  3612.     m$ = m$ + ".....22." + chr$(13)
  3613.     m$ = m$ + ".....2.." + chr$(13)
  3614.     m$ = m$ + "....22.." + chr$(13)
  3615.     m$ = m$ + "..222..." + chr$(13)
  3616.     m$ = m$ + "........" + chr$(13)
  3617.     arrTileText(125) = m$
  3618.  
  3619.     m$ = ""
  3620.     m$ = m$ + "........" + chr$(13)
  3621.     m$ = m$ + ".22....2" + chr$(13)
  3622.     m$ = m$ + "2..2..2." + chr$(13)
  3623.     m$ = m$ + "....22.." + chr$(13)
  3624.     m$ = m$ + "........" + chr$(13)
  3625.     m$ = m$ + "........" + chr$(13)
  3626.     m$ = m$ + "........" + chr$(13)
  3627.     m$ = m$ + "........" + chr$(13)
  3628.     arrTileText(126) = m$
  3629.  
  3630.     m$ = ""
  3631.     m$ = m$ + "........" + chr$(13)
  3632.     m$ = m$ + "........" + chr$(13)
  3633.     m$ = m$ + "........" + chr$(13)
  3634.     m$ = m$ + "........" + chr$(13)
  3635.     m$ = m$ + "........" + chr$(13)
  3636.     m$ = m$ + "........" + chr$(13)
  3637.     m$ = m$ + "........" + chr$(13)
  3638.     m$ = m$ + "........" + chr$(13)
  3639.     arrTileText(127) = m$
  3640.  
  3641.     m$ = ""
  3642.     m$ = m$ + "........" + chr$(13)
  3643.     m$ = m$ + "........" + chr$(13)
  3644.     m$ = m$ + "........" + chr$(13)
  3645.     m$ = m$ + "22222222" + chr$(13)
  3646.     m$ = m$ + "22222222" + chr$(13)
  3647.     m$ = m$ + "........" + chr$(13)
  3648.     m$ = m$ + "........" + chr$(13)
  3649.     m$ = m$ + "........" + chr$(13)
  3650.     arrTileText(128) = m$
  3651.  
  3652.     m$ = ""
  3653.     m$ = m$ + "....2..." + chr$(13)
  3654.     m$ = m$ + "...222.." + chr$(13)
  3655.     m$ = m$ + "..22222." + chr$(13)
  3656.     m$ = m$ + ".2222222" + chr$(13)
  3657.     m$ = m$ + ".2222222" + chr$(13)
  3658.     m$ = m$ + "...222.." + chr$(13)
  3659.     m$ = m$ + "..22222." + chr$(13)
  3660.     m$ = m$ + "........" + chr$(13)
  3661.     arrTileText(129) = m$
  3662.  
  3663.     m$ = ""
  3664.     m$ = m$ + "...22..." + chr$(13)
  3665.     m$ = m$ + "...22..." + chr$(13)
  3666.     m$ = m$ + "...22..." + chr$(13)
  3667.     m$ = m$ + "...22..." + chr$(13)
  3668.     m$ = m$ + "...22..." + chr$(13)
  3669.     m$ = m$ + "...22..." + chr$(13)
  3670.     m$ = m$ + "...22..." + chr$(13)
  3671.     m$ = m$ + "...22..." + chr$(13)
  3672.     arrTileText(130) = m$
  3673.  
  3674.     m$ = ""
  3675.     m$ = m$ + "........" + chr$(13)
  3676.     m$ = m$ + "........" + chr$(13)
  3677.     m$ = m$ + "........" + chr$(13)
  3678.     m$ = m$ + "22222222" + chr$(13)
  3679.     m$ = m$ + "22222222" + chr$(13)
  3680.     m$ = m$ + "........" + chr$(13)
  3681.     m$ = m$ + "........" + chr$(13)
  3682.     m$ = m$ + "........" + chr$(13)
  3683.     arrTileText(131) = m$
  3684.  
  3685.     m$ = ""
  3686.     m$ = m$ + "........" + chr$(13)
  3687.     m$ = m$ + "........" + chr$(13)
  3688.     m$ = m$ + "22222222" + chr$(13)
  3689.     m$ = m$ + "22222222" + chr$(13)
  3690.     m$ = m$ + "........" + chr$(13)
  3691.     m$ = m$ + "........" + chr$(13)
  3692.     m$ = m$ + "........" + chr$(13)
  3693.     m$ = m$ + "........" + chr$(13)
  3694.     arrTileText(132) = m$
  3695.  
  3696.     m$ = ""
  3697.     m$ = m$ + "........" + chr$(13)
  3698.     m$ = m$ + "22222222" + chr$(13)
  3699.     m$ = m$ + "22222222" + chr$(13)
  3700.     m$ = m$ + "........" + chr$(13)
  3701.     m$ = m$ + "........" + chr$(13)
  3702.     m$ = m$ + "........" + chr$(13)
  3703.     m$ = m$ + "........" + chr$(13)
  3704.     m$ = m$ + "........" + chr$(13)
  3705.     arrTileText(133) = m$
  3706.  
  3707.     m$ = ""
  3708.     m$ = m$ + "........" + chr$(13)
  3709.     m$ = m$ + "........" + chr$(13)
  3710.     m$ = m$ + "........" + chr$(13)
  3711.     m$ = m$ + "........" + chr$(13)
  3712.     m$ = m$ + "22222222" + chr$(13)
  3713.     m$ = m$ + "22222222" + chr$(13)
  3714.     m$ = m$ + "........" + chr$(13)
  3715.     m$ = m$ + "........" + chr$(13)
  3716.     arrTileText(134) = m$
  3717.  
  3718.     m$ = ""
  3719.     m$ = m$ + "..22...." + chr$(13)
  3720.     m$ = m$ + "..22...." + chr$(13)
  3721.     m$ = m$ + "..22...." + chr$(13)
  3722.     m$ = m$ + "..22...." + chr$(13)
  3723.     m$ = m$ + "..22...." + chr$(13)
  3724.     m$ = m$ + "..22...." + chr$(13)
  3725.     m$ = m$ + "..22...." + chr$(13)
  3726.     m$ = m$ + "..22...." + chr$(13)
  3727.     arrTileText(135) = m$
  3728.  
  3729.     m$ = ""
  3730.     m$ = m$ + "....22.." + chr$(13)
  3731.     m$ = m$ + "....22.." + chr$(13)
  3732.     m$ = m$ + "....22.." + chr$(13)
  3733.     m$ = m$ + "....22.." + chr$(13)
  3734.     m$ = m$ + "....22.." + chr$(13)
  3735.     m$ = m$ + "....22.." + chr$(13)
  3736.     m$ = m$ + "....22.." + chr$(13)
  3737.     m$ = m$ + "....22.." + chr$(13)
  3738.     arrTileText(136) = m$
  3739.  
  3740.     m$ = ""
  3741.     m$ = m$ + "........" + chr$(13)
  3742.     m$ = m$ + "........" + chr$(13)
  3743.     m$ = m$ + "........" + chr$(13)
  3744.     m$ = m$ + "222....." + chr$(13)
  3745.     m$ = m$ + "2222...." + chr$(13)
  3746.     m$ = m$ + "..222..." + chr$(13)
  3747.     m$ = m$ + "...22..." + chr$(13)
  3748.     m$ = m$ + "...22..." + chr$(13)
  3749.     arrTileText(137) = m$
  3750.  
  3751.     m$ = ""
  3752.     m$ = m$ + "...22..." + chr$(13)
  3753.     m$ = m$ + "...22..." + chr$(13)
  3754.     m$ = m$ + "...222.." + chr$(13)
  3755.     m$ = m$ + "....2222" + chr$(13)
  3756.     m$ = m$ + ".....222" + chr$(13)
  3757.     m$ = m$ + "........" + chr$(13)
  3758.     m$ = m$ + "........" + chr$(13)
  3759.     m$ = m$ + "........" + chr$(13)
  3760.     arrTileText(138) = m$
  3761.  
  3762.     m$ = ""
  3763.     m$ = m$ + "...22..." + chr$(13)
  3764.     m$ = m$ + "...22..." + chr$(13)
  3765.     m$ = m$ + "..222..." + chr$(13)
  3766.     m$ = m$ + "2222...." + chr$(13)
  3767.     m$ = m$ + "222....." + chr$(13)
  3768.     m$ = m$ + "........" + chr$(13)
  3769.     m$ = m$ + "........" + chr$(13)
  3770.     m$ = m$ + "........" + chr$(13)
  3771.     arrTileText(139) = m$
  3772.  
  3773.     m$ = ""
  3774.     m$ = m$ + "22......" + chr$(13)
  3775.     m$ = m$ + "22......" + chr$(13)
  3776.     m$ = m$ + "22......" + chr$(13)
  3777.     m$ = m$ + "22......" + chr$(13)
  3778.     m$ = m$ + "22......" + chr$(13)
  3779.     m$ = m$ + "22......" + chr$(13)
  3780.     m$ = m$ + "22222222" + chr$(13)
  3781.     m$ = m$ + "22222222" + chr$(13)
  3782.     arrTileText(140) = m$
  3783.  
  3784.     m$ = ""
  3785.     m$ = m$ + "22......" + chr$(13)
  3786.     m$ = m$ + "222....." + chr$(13)
  3787.     m$ = m$ + ".222...." + chr$(13)
  3788.     m$ = m$ + "..222..." + chr$(13)
  3789.     m$ = m$ + "...222.." + chr$(13)
  3790.     m$ = m$ + "....222." + chr$(13)
  3791.     m$ = m$ + ".....222" + chr$(13)
  3792.     m$ = m$ + "......22" + chr$(13)
  3793.     arrTileText(141) = m$
  3794.  
  3795.     m$ = ""
  3796.     m$ = m$ + "......22" + chr$(13)
  3797.     m$ = m$ + ".....222" + chr$(13)
  3798.     m$ = m$ + "....222." + chr$(13)
  3799.     m$ = m$ + "...222.." + chr$(13)
  3800.     m$ = m$ + "..222..." + chr$(13)
  3801.     m$ = m$ + ".222...." + chr$(13)
  3802.     m$ = m$ + "222....." + chr$(13)
  3803.     m$ = m$ + "22......" + chr$(13)
  3804.     arrTileText(142) = m$
  3805.  
  3806.     m$ = ""
  3807.     m$ = m$ + "22222222" + chr$(13)
  3808.     m$ = m$ + "22222222" + chr$(13)
  3809.     m$ = m$ + "22......" + chr$(13)
  3810.     m$ = m$ + "22......" + chr$(13)
  3811.     m$ = m$ + "22......" + chr$(13)
  3812.     m$ = m$ + "22......" + chr$(13)
  3813.     m$ = m$ + "22......" + chr$(13)
  3814.     m$ = m$ + "22......" + chr$(13)
  3815.     arrTileText(143) = m$
  3816.  
  3817.     m$ = ""
  3818.     m$ = m$ + "22222222" + chr$(13)
  3819.     m$ = m$ + "22222222" + chr$(13)
  3820.     m$ = m$ + "......22" + chr$(13)
  3821.     m$ = m$ + "......22" + chr$(13)
  3822.     m$ = m$ + "......22" + chr$(13)
  3823.     m$ = m$ + "......22" + chr$(13)
  3824.     m$ = m$ + "......22" + chr$(13)
  3825.     m$ = m$ + "......22" + chr$(13)
  3826.     arrTileText(144) = m$
  3827.  
  3828.     m$ = ""
  3829.     m$ = m$ + "........" + chr$(13)
  3830.     m$ = m$ + "..2222.." + chr$(13)
  3831.     m$ = m$ + ".222222." + chr$(13)
  3832.     m$ = m$ + ".222222." + chr$(13)
  3833.     m$ = m$ + ".222222." + chr$(13)
  3834.     m$ = m$ + ".222222." + chr$(13)
  3835.     m$ = m$ + "..2222.." + chr$(13)
  3836.     m$ = m$ + "........" + chr$(13)
  3837.     arrTileText(145) = m$
  3838.  
  3839.     m$ = ""
  3840.     m$ = m$ + "........" + chr$(13)
  3841.     m$ = m$ + "........" + chr$(13)
  3842.     m$ = m$ + "........" + chr$(13)
  3843.     m$ = m$ + "........" + chr$(13)
  3844.     m$ = m$ + "........" + chr$(13)
  3845.     m$ = m$ + "22222222" + chr$(13)
  3846.     m$ = m$ + "22222222" + chr$(13)
  3847.     m$ = m$ + "........" + chr$(13)
  3848.     arrTileText(146) = m$
  3849.  
  3850.     m$ = ""
  3851.     m$ = m$ + "..22.22." + chr$(13)
  3852.     m$ = m$ + ".2222222" + chr$(13)
  3853.     m$ = m$ + ".2222222" + chr$(13)
  3854.     m$ = m$ + ".2222222" + chr$(13)
  3855.     m$ = m$ + "..22222." + chr$(13)
  3856.     m$ = m$ + "...222.." + chr$(13)
  3857.     m$ = m$ + "....2..." + chr$(13)
  3858.     m$ = m$ + "........" + chr$(13)
  3859.     arrTileText(147) = m$
  3860.  
  3861.     m$ = ""
  3862.     m$ = m$ + ".22....." + chr$(13)
  3863.     m$ = m$ + ".22....." + chr$(13)
  3864.     m$ = m$ + ".22....." + chr$(13)
  3865.     m$ = m$ + ".22....." + chr$(13)
  3866.     m$ = m$ + ".22....." + chr$(13)
  3867.     m$ = m$ + ".22....." + chr$(13)
  3868.     m$ = m$ + ".22....." + chr$(13)
  3869.     m$ = m$ + ".22....." + chr$(13)
  3870.     arrTileText(148) = m$
  3871.  
  3872.     m$ = ""
  3873.     m$ = m$ + "........" + chr$(13)
  3874.     m$ = m$ + "........" + chr$(13)
  3875.     m$ = m$ + "........" + chr$(13)
  3876.     m$ = m$ + ".....222" + chr$(13)
  3877.     m$ = m$ + "....2222" + chr$(13)
  3878.     m$ = m$ + "...222.." + chr$(13)
  3879.     m$ = m$ + "...22..." + chr$(13)
  3880.     m$ = m$ + "...22..." + chr$(13)
  3881.     arrTileText(149) = m$
  3882.  
  3883.     m$ = ""
  3884.     m$ = m$ + "22....22" + chr$(13)
  3885.     m$ = m$ + "222..222" + chr$(13)
  3886.     m$ = m$ + ".222222." + chr$(13)
  3887.     m$ = m$ + "..2222.." + chr$(13)
  3888.     m$ = m$ + "..2222.." + chr$(13)
  3889.     m$ = m$ + ".222222." + chr$(13)
  3890.     m$ = m$ + "222..222" + chr$(13)
  3891.     m$ = m$ + "22....22" + chr$(13)
  3892.     arrTileText(150) = m$
  3893.  
  3894.     m$ = ""
  3895.     m$ = m$ + "........" + chr$(13)
  3896.     m$ = m$ + "..2222.." + chr$(13)
  3897.     m$ = m$ + ".222222." + chr$(13)
  3898.     m$ = m$ + ".22..22." + chr$(13)
  3899.     m$ = m$ + ".22..22." + chr$(13)
  3900.     m$ = m$ + ".222222." + chr$(13)
  3901.     m$ = m$ + "..2222.." + chr$(13)
  3902.     m$ = m$ + "........" + chr$(13)
  3903.     arrTileText(151) = m$
  3904.  
  3905.     m$ = ""
  3906.     m$ = m$ + "...22..." + chr$(13)
  3907.     m$ = m$ + "...22..." + chr$(13)
  3908.     m$ = m$ + ".22..22." + chr$(13)
  3909.     m$ = m$ + ".22..22." + chr$(13)
  3910.     m$ = m$ + "...22..." + chr$(13)
  3911.     m$ = m$ + "...22..." + chr$(13)
  3912.     m$ = m$ + "..2222.." + chr$(13)
  3913.     m$ = m$ + "........" + chr$(13)
  3914.     arrTileText(152) = m$
  3915.  
  3916.     m$ = ""
  3917.     m$ = m$ + ".....22." + chr$(13)
  3918.     m$ = m$ + ".....22." + chr$(13)
  3919.     m$ = m$ + ".....22." + chr$(13)
  3920.     m$ = m$ + ".....22." + chr$(13)
  3921.     m$ = m$ + ".....22." + chr$(13)
  3922.     m$ = m$ + ".....22." + chr$(13)
  3923.     m$ = m$ + ".....22." + chr$(13)
  3924.     m$ = m$ + ".....22." + chr$(13)
  3925.     arrTileText(153) = m$
  3926.  
  3927.     m$ = ""
  3928.     m$ = m$ + "....2..." + chr$(13)
  3929.     m$ = m$ + "...222.." + chr$(13)
  3930.     m$ = m$ + "..22222." + chr$(13)
  3931.     m$ = m$ + ".2222222" + chr$(13)
  3932.     m$ = m$ + "..22222." + chr$(13)
  3933.     m$ = m$ + "...222.." + chr$(13)
  3934.     m$ = m$ + "....2..." + chr$(13)
  3935.     m$ = m$ + "........" + chr$(13)
  3936.     arrTileText(154) = m$
  3937.  
  3938.     m$ = ""
  3939.     m$ = m$ + "...22..." + chr$(13)
  3940.     m$ = m$ + "...22..." + chr$(13)
  3941.     m$ = m$ + "...22..." + chr$(13)
  3942.     m$ = m$ + "22222222" + chr$(13)
  3943.     m$ = m$ + "22222222" + chr$(13)
  3944.     m$ = m$ + "...22..." + chr$(13)
  3945.     m$ = m$ + "...22..." + chr$(13)
  3946.     m$ = m$ + "...22..." + chr$(13)
  3947.     arrTileText(155) = m$
  3948.  
  3949.     m$ = ""
  3950.     m$ = m$ + "22......" + chr$(13)
  3951.     m$ = m$ + "22......" + chr$(13)
  3952.     m$ = m$ + "..22...." + chr$(13)
  3953.     m$ = m$ + "..22...." + chr$(13)
  3954.     m$ = m$ + "22......" + chr$(13)
  3955.     m$ = m$ + "22......" + chr$(13)
  3956.     m$ = m$ + "..22...." + chr$(13)
  3957.     m$ = m$ + "..22...." + chr$(13)
  3958.     arrTileText(156) = m$
  3959.  
  3960.     m$ = ""
  3961.     m$ = m$ + "...22..." + chr$(13)
  3962.     m$ = m$ + "...22..." + chr$(13)
  3963.     m$ = m$ + "...22..." + chr$(13)
  3964.     m$ = m$ + "...22..." + chr$(13)
  3965.     m$ = m$ + "...22..." + chr$(13)
  3966.     m$ = m$ + "...22..." + chr$(13)
  3967.     m$ = m$ + "...22..." + chr$(13)
  3968.     m$ = m$ + "...22..." + chr$(13)
  3969.     arrTileText(157) = m$
  3970.  
  3971.     m$ = ""
  3972.     m$ = m$ + "........" + chr$(13)
  3973.     m$ = m$ + "........" + chr$(13)
  3974.     m$ = m$ + "......22" + chr$(13)
  3975.     m$ = m$ + "..22222." + chr$(13)
  3976.     m$ = m$ + ".222.22." + chr$(13)
  3977.     m$ = m$ + "..22.22." + chr$(13)
  3978.     m$ = m$ + "..22.22." + chr$(13)
  3979.     m$ = m$ + "........" + chr$(13)
  3980.     arrTileText(158) = m$
  3981.  
  3982.     m$ = ""
  3983.     m$ = m$ + "22222222" + chr$(13)
  3984.     m$ = m$ + ".2222222" + chr$(13)
  3985.     m$ = m$ + "..222222" + chr$(13)
  3986.     m$ = m$ + "...22222" + chr$(13)
  3987.     m$ = m$ + "....2222" + chr$(13)
  3988.     m$ = m$ + ".....222" + chr$(13)
  3989.     m$ = m$ + "......22" + chr$(13)
  3990.     m$ = m$ + ".......2" + chr$(13)
  3991.     arrTileText(159) = m$
  3992.  
  3993.     m$ = ""
  3994.     m$ = m$ + "........" + chr$(13)
  3995.     m$ = m$ + "........" + chr$(13)
  3996.     m$ = m$ + "........" + chr$(13)
  3997.     m$ = m$ + "........" + chr$(13)
  3998.     m$ = m$ + "........" + chr$(13)
  3999.     m$ = m$ + "........" + chr$(13)
  4000.     m$ = m$ + "........" + chr$(13)
  4001.     m$ = m$ + "........" + chr$(13)
  4002.     arrTileText(160) = m$
  4003.  
  4004.     m$ = ""
  4005.     m$ = m$ + "2222...." + chr$(13)
  4006.     m$ = m$ + "2222...." + chr$(13)
  4007.     m$ = m$ + "2222...." + chr$(13)
  4008.     m$ = m$ + "2222...." + chr$(13)
  4009.     m$ = m$ + "2222...." + chr$(13)
  4010.     m$ = m$ + "2222...." + chr$(13)
  4011.     m$ = m$ + "2222...." + chr$(13)
  4012.     m$ = m$ + "2222...." + chr$(13)
  4013.     arrTileText(161) = m$
  4014.  
  4015.     m$ = ""
  4016.     m$ = m$ + "........" + chr$(13)
  4017.     m$ = m$ + "........" + chr$(13)
  4018.     m$ = m$ + "........" + chr$(13)
  4019.     m$ = m$ + "........" + chr$(13)
  4020.     m$ = m$ + "22222222" + chr$(13)
  4021.     m$ = m$ + "22222222" + chr$(13)
  4022.     m$ = m$ + "22222222" + chr$(13)
  4023.     m$ = m$ + "22222222" + chr$(13)
  4024.     arrTileText(162) = m$
  4025.  
  4026.     m$ = ""
  4027.     m$ = m$ + "22222222" + chr$(13)
  4028.     m$ = m$ + "........" + chr$(13)
  4029.     m$ = m$ + "........" + chr$(13)
  4030.     m$ = m$ + "........" + chr$(13)
  4031.     m$ = m$ + "........" + chr$(13)
  4032.     m$ = m$ + "........" + chr$(13)
  4033.     m$ = m$ + "........" + chr$(13)
  4034.     m$ = m$ + "........" + chr$(13)
  4035.     arrTileText(163) = m$
  4036.  
  4037.     m$ = ""
  4038.     m$ = m$ + "........" + chr$(13)
  4039.     m$ = m$ + "........" + chr$(13)
  4040.     m$ = m$ + "........" + chr$(13)
  4041.     m$ = m$ + "........" + chr$(13)
  4042.     m$ = m$ + "........" + chr$(13)
  4043.     m$ = m$ + "........" + chr$(13)
  4044.     m$ = m$ + "........" + chr$(13)
  4045.     m$ = m$ + "22222222" + chr$(13)
  4046.     arrTileText(164) = m$
  4047.  
  4048.     m$ = ""
  4049.     m$ = m$ + "22......" + chr$(13)
  4050.     m$ = m$ + "22......" + chr$(13)
  4051.     m$ = m$ + "22......" + chr$(13)
  4052.     m$ = m$ + "22......" + chr$(13)
  4053.     m$ = m$ + "22......" + chr$(13)
  4054.     m$ = m$ + "22......" + chr$(13)
  4055.     m$ = m$ + "22......" + chr$(13)
  4056.     m$ = m$ + "22......" + chr$(13)
  4057.     arrTileText(165) = m$
  4058.  
  4059.     m$ = ""
  4060.     m$ = m$ + "22..22.." + chr$(13)
  4061.     m$ = m$ + "22..22.." + chr$(13)
  4062.     m$ = m$ + "..22..22" + chr$(13)
  4063.     m$ = m$ + "..22..22" + chr$(13)
  4064.     m$ = m$ + "22..22.." + chr$(13)
  4065.     m$ = m$ + "22..22.." + chr$(13)
  4066.     m$ = m$ + "..22..22" + chr$(13)
  4067.     m$ = m$ + "..22..22" + chr$(13)
  4068.     arrTileText(166) = m$
  4069.  
  4070.     m$ = ""
  4071.     m$ = m$ + "......22" + chr$(13)
  4072.     m$ = m$ + "......22" + chr$(13)
  4073.     m$ = m$ + "......22" + chr$(13)
  4074.     m$ = m$ + "......22" + chr$(13)
  4075.     m$ = m$ + "......22" + chr$(13)
  4076.     m$ = m$ + "......22" + chr$(13)
  4077.     m$ = m$ + "......22" + chr$(13)
  4078.     m$ = m$ + "......22" + chr$(13)
  4079.     arrTileText(167) = m$
  4080.  
  4081.     m$ = ""
  4082.     m$ = m$ + "........" + chr$(13)
  4083.     m$ = m$ + "........" + chr$(13)
  4084.     m$ = m$ + "........" + chr$(13)
  4085.     m$ = m$ + "........" + chr$(13)
  4086.     m$ = m$ + "22..22.." + chr$(13)
  4087.     m$ = m$ + "22..22.." + chr$(13)
  4088.     m$ = m$ + "..22..22" + chr$(13)
  4089.     m$ = m$ + "..22..22" + chr$(13)
  4090.     arrTileText(168) = m$
  4091.  
  4092.     m$ = ""
  4093.     m$ = m$ + "22222222" + chr$(13)
  4094.     m$ = m$ + "2222222." + chr$(13)
  4095.     m$ = m$ + "222222.." + chr$(13)
  4096.     m$ = m$ + "22222..." + chr$(13)
  4097.     m$ = m$ + "2222...." + chr$(13)
  4098.     m$ = m$ + "222....." + chr$(13)
  4099.     m$ = m$ + "22......" + chr$(13)
  4100.     m$ = m$ + "2......." + chr$(13)
  4101.     arrTileText(169) = m$
  4102.  
  4103.     m$ = ""
  4104.     m$ = m$ + "......22" + chr$(13)
  4105.     m$ = m$ + "......22" + chr$(13)
  4106.     m$ = m$ + "......22" + chr$(13)
  4107.     m$ = m$ + "......22" + chr$(13)
  4108.     m$ = m$ + "......22" + chr$(13)
  4109.     m$ = m$ + "......22" + chr$(13)
  4110.     m$ = m$ + "......22" + chr$(13)
  4111.     m$ = m$ + "......22" + chr$(13)
  4112.     arrTileText(170) = m$
  4113.  
  4114.     m$ = ""
  4115.     m$ = m$ + "...22..." + chr$(13)
  4116.     m$ = m$ + "...22..." + chr$(13)
  4117.     m$ = m$ + "...22..." + chr$(13)
  4118.     m$ = m$ + "...22222" + chr$(13)
  4119.     m$ = m$ + "...22222" + chr$(13)
  4120.     m$ = m$ + "...22..." + chr$(13)
  4121.     m$ = m$ + "...22..." + chr$(13)
  4122.     m$ = m$ + "...22..." + chr$(13)
  4123.     arrTileText(171) = m$
  4124.  
  4125.     m$ = ""
  4126.     m$ = m$ + "........" + chr$(13)
  4127.     m$ = m$ + "........" + chr$(13)
  4128.     m$ = m$ + "........" + chr$(13)
  4129.     m$ = m$ + "........" + chr$(13)
  4130.     m$ = m$ + "....2222" + chr$(13)
  4131.     m$ = m$ + "....2222" + chr$(13)
  4132.     m$ = m$ + "....2222" + chr$(13)
  4133.     m$ = m$ + "....2222" + chr$(13)
  4134.     arrTileText(172) = m$
  4135.  
  4136.     m$ = ""
  4137.     m$ = m$ + "...22..." + chr$(13)
  4138.     m$ = m$ + "...22..." + chr$(13)
  4139.     m$ = m$ + "...22..." + chr$(13)
  4140.     m$ = m$ + "...22222" + chr$(13)
  4141.     m$ = m$ + "...22222" + chr$(13)
  4142.     m$ = m$ + "........" + chr$(13)
  4143.     m$ = m$ + "........" + chr$(13)
  4144.     m$ = m$ + "........" + chr$(13)
  4145.     arrTileText(173) = m$
  4146.  
  4147.     m$ = ""
  4148.     m$ = m$ + "........" + chr$(13)
  4149.     m$ = m$ + "........" + chr$(13)
  4150.     m$ = m$ + "........" + chr$(13)
  4151.     m$ = m$ + "22222..." + chr$(13)
  4152.     m$ = m$ + "22222..." + chr$(13)
  4153.     m$ = m$ + "...22..." + chr$(13)
  4154.     m$ = m$ + "...22..." + chr$(13)
  4155.     m$ = m$ + "...22..." + chr$(13)
  4156.     arrTileText(174) = m$
  4157.  
  4158.     m$ = ""
  4159.     m$ = m$ + "........" + chr$(13)
  4160.     m$ = m$ + "........" + chr$(13)
  4161.     m$ = m$ + "........" + chr$(13)
  4162.     m$ = m$ + "........" + chr$(13)
  4163.     m$ = m$ + "........" + chr$(13)
  4164.     m$ = m$ + "........" + chr$(13)
  4165.     m$ = m$ + "22222222" + chr$(13)
  4166.     m$ = m$ + "22222222" + chr$(13)
  4167.     arrTileText(175) = m$
  4168.  
  4169.     m$ = ""
  4170.     m$ = m$ + "........" + chr$(13)
  4171.     m$ = m$ + "........" + chr$(13)
  4172.     m$ = m$ + "........" + chr$(13)
  4173.     m$ = m$ + "...22222" + chr$(13)
  4174.     m$ = m$ + "...22222" + chr$(13)
  4175.     m$ = m$ + "...22..." + chr$(13)
  4176.     m$ = m$ + "...22..." + chr$(13)
  4177.     m$ = m$ + "...22..." + chr$(13)
  4178.     arrTileText(176) = m$
  4179.  
  4180.     m$ = ""
  4181.     m$ = m$ + "...22..." + chr$(13)
  4182.     m$ = m$ + "...22..." + chr$(13)
  4183.     m$ = m$ + "...22..." + chr$(13)
  4184.     m$ = m$ + "22222222" + chr$(13)
  4185.     m$ = m$ + "22222222" + chr$(13)
  4186.     m$ = m$ + "........" + chr$(13)
  4187.     m$ = m$ + "........" + chr$(13)
  4188.     m$ = m$ + "........" + chr$(13)
  4189.     arrTileText(177) = m$
  4190.  
  4191.     m$ = ""
  4192.     m$ = m$ + "........" + chr$(13)
  4193.     m$ = m$ + "........" + chr$(13)
  4194.     m$ = m$ + "........" + chr$(13)
  4195.     m$ = m$ + "22222222" + chr$(13)
  4196.     m$ = m$ + "22222222" + chr$(13)
  4197.     m$ = m$ + "...22..." + chr$(13)
  4198.     m$ = m$ + "...22..." + chr$(13)
  4199.     m$ = m$ + "...22..." + chr$(13)
  4200.     arrTileText(178) = m$
  4201.  
  4202.     m$ = ""
  4203.     m$ = m$ + "...22..." + chr$(13)
  4204.     m$ = m$ + "...22..." + chr$(13)
  4205.     m$ = m$ + "...22..." + chr$(13)
  4206.     m$ = m$ + "22222..." + chr$(13)
  4207.     m$ = m$ + "22222..." + chr$(13)
  4208.     m$ = m$ + "...22..." + chr$(13)
  4209.     m$ = m$ + "...22..." + chr$(13)
  4210.     m$ = m$ + "...22..." + chr$(13)
  4211.     arrTileText(179) = m$
  4212.  
  4213.     m$ = ""
  4214.     m$ = m$ + "22......" + chr$(13)
  4215.     m$ = m$ + "22......" + chr$(13)
  4216.     m$ = m$ + "22......" + chr$(13)
  4217.     m$ = m$ + "22......" + chr$(13)
  4218.     m$ = m$ + "22......" + chr$(13)
  4219.     m$ = m$ + "22......" + chr$(13)
  4220.     m$ = m$ + "22......" + chr$(13)
  4221.     m$ = m$ + "22......" + chr$(13)
  4222.     arrTileText(180) = m$
  4223.  
  4224.     m$ = ""
  4225.     m$ = m$ + "222....." + chr$(13)
  4226.     m$ = m$ + "222....." + chr$(13)
  4227.     m$ = m$ + "222....." + chr$(13)
  4228.     m$ = m$ + "222....." + chr$(13)
  4229.     m$ = m$ + "222....." + chr$(13)
  4230.     m$ = m$ + "222....." + chr$(13)
  4231.     m$ = m$ + "222....." + chr$(13)
  4232.     m$ = m$ + "222....." + chr$(13)
  4233.     arrTileText(181) = m$
  4234.  
  4235.     m$ = ""
  4236.     m$ = m$ + ".....222" + chr$(13)
  4237.     m$ = m$ + ".....222" + chr$(13)
  4238.     m$ = m$ + ".....222" + chr$(13)
  4239.     m$ = m$ + ".....222" + chr$(13)
  4240.     m$ = m$ + ".....222" + chr$(13)
  4241.     m$ = m$ + ".....222" + chr$(13)
  4242.     m$ = m$ + ".....222" + chr$(13)
  4243.     m$ = m$ + ".....222" + chr$(13)
  4244.     arrTileText(182) = m$
  4245.  
  4246.     m$ = ""
  4247.     m$ = m$ + "22222222" + chr$(13)
  4248.     m$ = m$ + "22222222" + chr$(13)
  4249.     m$ = m$ + "........" + chr$(13)
  4250.     m$ = m$ + "........" + chr$(13)
  4251.     m$ = m$ + "........" + chr$(13)
  4252.     m$ = m$ + "........" + chr$(13)
  4253.     m$ = m$ + "........" + chr$(13)
  4254.     m$ = m$ + "........" + chr$(13)
  4255.     arrTileText(183) = m$
  4256.  
  4257.     m$ = ""
  4258.     m$ = m$ + "22222222" + chr$(13)
  4259.     m$ = m$ + "22222222" + chr$(13)
  4260.     m$ = m$ + "22222222" + chr$(13)
  4261.     m$ = m$ + "........" + chr$(13)
  4262.     m$ = m$ + "........" + chr$(13)
  4263.     m$ = m$ + "........" + chr$(13)
  4264.     m$ = m$ + "........" + chr$(13)
  4265.     m$ = m$ + "........" + chr$(13)
  4266.     arrTileText(184) = m$
  4267.  
  4268.     m$ = ""
  4269.     m$ = m$ + "........" + chr$(13)
  4270.     m$ = m$ + "........" + chr$(13)
  4271.     m$ = m$ + "........" + chr$(13)
  4272.     m$ = m$ + "........" + chr$(13)
  4273.     m$ = m$ + "........" + chr$(13)
  4274.     m$ = m$ + "22222222" + chr$(13)
  4275.     m$ = m$ + "22222222" + chr$(13)
  4276.     m$ = m$ + "22222222" + chr$(13)
  4277.     arrTileText(185) = m$
  4278.  
  4279.     m$ = ""
  4280.     m$ = m$ + "......22" + chr$(13)
  4281.     m$ = m$ + "......22" + chr$(13)
  4282.     m$ = m$ + "......22" + chr$(13)
  4283.     m$ = m$ + "......22" + chr$(13)
  4284.     m$ = m$ + "......22" + chr$(13)
  4285.     m$ = m$ + "......22" + chr$(13)
  4286.     m$ = m$ + "22222222" + chr$(13)
  4287.     m$ = m$ + "22222222" + chr$(13)
  4288.     arrTileText(186) = m$
  4289.  
  4290.     m$ = ""
  4291.     m$ = m$ + "........" + chr$(13)
  4292.     m$ = m$ + "........" + chr$(13)
  4293.     m$ = m$ + "........" + chr$(13)
  4294.     m$ = m$ + "........" + chr$(13)
  4295.     m$ = m$ + "2222...." + chr$(13)
  4296.     m$ = m$ + "2222...." + chr$(13)
  4297.     m$ = m$ + "2222...." + chr$(13)
  4298.     m$ = m$ + "2222...." + chr$(13)
  4299.     arrTileText(187) = m$
  4300.  
  4301.     m$ = ""
  4302.     m$ = m$ + "....2222" + chr$(13)
  4303.     m$ = m$ + "....2222" + chr$(13)
  4304.     m$ = m$ + "....2222" + chr$(13)
  4305.     m$ = m$ + "....2222" + chr$(13)
  4306.     m$ = m$ + "........" + chr$(13)
  4307.     m$ = m$ + "........" + chr$(13)
  4308.     m$ = m$ + "........" + chr$(13)
  4309.     m$ = m$ + "........" + chr$(13)
  4310.     arrTileText(188) = m$
  4311.  
  4312.     m$ = ""
  4313.     m$ = m$ + "...22..." + chr$(13)
  4314.     m$ = m$ + "...22..." + chr$(13)
  4315.     m$ = m$ + "...22..." + chr$(13)
  4316.     m$ = m$ + "22222..." + chr$(13)
  4317.     m$ = m$ + "22222..." + chr$(13)
  4318.     m$ = m$ + "........" + chr$(13)
  4319.     m$ = m$ + "........" + chr$(13)
  4320.     m$ = m$ + "........" + chr$(13)
  4321.     arrTileText(189) = m$
  4322.  
  4323.     m$ = ""
  4324.     m$ = m$ + "2222...." + chr$(13)
  4325.     m$ = m$ + "2222...." + chr$(13)
  4326.     m$ = m$ + "2222...." + chr$(13)
  4327.     m$ = m$ + "2222...." + chr$(13)
  4328.     m$ = m$ + "........" + chr$(13)
  4329.     m$ = m$ + "........" + chr$(13)
  4330.     m$ = m$ + "........" + chr$(13)
  4331.     m$ = m$ + "........" + chr$(13)
  4332.     arrTileText(190) = m$
  4333.  
  4334.     m$ = ""
  4335.     m$ = m$ + "2222...." + chr$(13)
  4336.     m$ = m$ + "2222...." + chr$(13)
  4337.     m$ = m$ + "2222...." + chr$(13)
  4338.     m$ = m$ + "2222...." + chr$(13)
  4339.     m$ = m$ + "....2222" + chr$(13)
  4340.     m$ = m$ + "....2222" + chr$(13)
  4341.     m$ = m$ + "....2222" + chr$(13)
  4342.     m$ = m$ + "....2222" + chr$(13)
  4343.     arrTileText(191) = m$
  4344.  
  4345.     m$ = ""
  4346.     m$ = m$ + "........" + chr$(13)
  4347.     m$ = m$ + ".2222222" + chr$(13)
  4348.     m$ = m$ + ".2.....2" + chr$(13)
  4349.     m$ = m$ + ".2.....2" + chr$(13)
  4350.     m$ = m$ + ".2.....2" + chr$(13)
  4351.     m$ = m$ + ".2.....2" + chr$(13)
  4352.     m$ = m$ + ".2.....2" + chr$(13)
  4353.     m$ = m$ + ".2222222" + chr$(13)
  4354.     arrTileText(192) = m$
  4355.  
  4356.     m$ = ""
  4357.     m$ = m$ + "........" + chr$(13)
  4358.     m$ = m$ + ".2222222" + chr$(13)
  4359.     m$ = m$ + ".2222222" + chr$(13)
  4360.     m$ = m$ + ".2222222" + chr$(13)
  4361.     m$ = m$ + ".2222222" + chr$(13)
  4362.     m$ = m$ + ".2222222" + chr$(13)
  4363.     m$ = m$ + ".2222222" + chr$(13)
  4364.     m$ = m$ + ".2222222" + chr$(13)
  4365.     arrTileText(193) = m$
  4366.  
  4367.     m$ = ""
  4368.     m$ = m$ + "........" + chr$(13)
  4369.     m$ = m$ + "...22..." + chr$(13)
  4370.     m$ = m$ + "..2222.." + chr$(13)
  4371.     m$ = m$ + ".222222." + chr$(13)
  4372.     m$ = m$ + "...22..." + chr$(13)
  4373.     m$ = m$ + "...22..." + chr$(13)
  4374.     m$ = m$ + "...22..." + chr$(13)
  4375.     m$ = m$ + "...22..." + chr$(13)
  4376.     arrTileText(194) = m$
  4377.  
  4378.     m$ = ""
  4379.     m$ = m$ + "........" + chr$(13)
  4380.     m$ = m$ + "...22..." + chr$(13)
  4381.     m$ = m$ + "...22..." + chr$(13)
  4382.     m$ = m$ + "...22..." + chr$(13)
  4383.     m$ = m$ + "...22..." + chr$(13)
  4384.     m$ = m$ + ".222222." + chr$(13)
  4385.     m$ = m$ + "..2222.." + chr$(13)
  4386.     m$ = m$ + "...22..." + chr$(13)
  4387.     arrTileText(195) = m$
  4388.  
  4389.     m$ = ""
  4390.     m$ = m$ + "........" + chr$(13)
  4391.     m$ = m$ + "...2...." + chr$(13)
  4392.     m$ = m$ + "..22...." + chr$(13)
  4393.     m$ = m$ + ".2222222" + chr$(13)
  4394.     m$ = m$ + ".2222222" + chr$(13)
  4395.     m$ = m$ + "..22...." + chr$(13)
  4396.     m$ = m$ + "...2...." + chr$(13)
  4397.     m$ = m$ + "........" + chr$(13)
  4398.     arrTileText(196) = m$
  4399.  
  4400.     m$ = ""
  4401.     m$ = m$ + "........" + chr$(13)
  4402.     m$ = m$ + ".....2.." + chr$(13)
  4403.     m$ = m$ + ".....22." + chr$(13)
  4404.     m$ = m$ + ".2222222" + chr$(13)
  4405.     m$ = m$ + ".2222222" + chr$(13)
  4406.     m$ = m$ + ".....22." + chr$(13)
  4407.     m$ = m$ + ".....2.." + chr$(13)
  4408.     m$ = m$ + "........" + chr$(13)
  4409.     arrTileText(197) = m$
  4410.  
  4411.     m$ = ""
  4412.     m$ = m$ + "........" + chr$(13)
  4413.     m$ = m$ + "........" + chr$(13)
  4414.     m$ = m$ + "........" + chr$(13)
  4415.     m$ = m$ + "........" + chr$(13)
  4416.     m$ = m$ + "........" + chr$(13)
  4417.     m$ = m$ + "........" + chr$(13)
  4418.     m$ = m$ + "........" + chr$(13)
  4419.     m$ = m$ + "........" + chr$(13)
  4420.     arrTileText(198) = m$
  4421.  
  4422.     m$ = ""
  4423.     m$ = m$ + ".222222." + chr$(13)
  4424.     m$ = m$ + "2......2" + chr$(13)
  4425.     m$ = m$ + "2.2..2.2" + chr$(13)
  4426.     m$ = m$ + "2......2" + chr$(13)
  4427.     m$ = m$ + "2.2..2.2" + chr$(13)
  4428.     m$ = m$ + "2.2222.2" + chr$(13)
  4429.     m$ = m$ + "2......2" + chr$(13)
  4430.     m$ = m$ + ".222222." + chr$(13)
  4431.     arrTileText(199) = m$
  4432.  
  4433.     m$ = ""
  4434.     m$ = m$ + ".222222." + chr$(13)
  4435.     m$ = m$ + "2......2" + chr$(13)
  4436.     m$ = m$ + "2.2..2.2" + chr$(13)
  4437.     m$ = m$ + "2......2" + chr$(13)
  4438.     m$ = m$ + "2.2222.2" + chr$(13)
  4439.     m$ = m$ + "2.2..2.2" + chr$(13)
  4440.     m$ = m$ + "2......2" + chr$(13)
  4441.     m$ = m$ + ".222222." + chr$(13)
  4442.     arrTileText(200) = m$
  4443.  
  4444.     m$ = ""
  4445.     m$ = m$ + "........" + chr$(13)
  4446.     m$ = m$ + "........" + chr$(13)
  4447.     m$ = m$ + "........" + chr$(13)
  4448.     m$ = m$ + "........" + chr$(13)
  4449.     m$ = m$ + "........" + chr$(13)
  4450.     m$ = m$ + "........" + chr$(13)
  4451.     m$ = m$ + "........" + chr$(13)
  4452.     m$ = m$ + "........" + chr$(13)
  4453.     arrTileText(201) = m$
  4454.  
  4455.     m$ = ""
  4456.     m$ = m$ + ".222222." + chr$(13)
  4457.     m$ = m$ + ".....22." + chr$(13)
  4458.     m$ = m$ + "....22.." + chr$(13)
  4459.     m$ = m$ + "...22..." + chr$(13)
  4460.     m$ = m$ + "..22...." + chr$(13)
  4461.     m$ = m$ + ".22....." + chr$(13)
  4462.     m$ = m$ + ".222222." + chr$(13)
  4463.     m$ = m$ + "........" + chr$(13)
  4464.     arrTileText(202) = m$
  4465.  
  4466.     m$ = ""
  4467.     m$ = m$ + "...22..." + chr$(13)
  4468.     m$ = m$ + "...22..." + chr$(13)
  4469.     m$ = m$ + "...22..." + chr$(13)
  4470.     m$ = m$ + "22222222" + chr$(13)
  4471.     m$ = m$ + "22222222" + chr$(13)
  4472.     m$ = m$ + "...22..." + chr$(13)
  4473.     m$ = m$ + "...22..." + chr$(13)
  4474.     m$ = m$ + "...22..." + chr$(13)
  4475.     arrTileText(203) = m$
  4476.  
  4477.     m$ = ""
  4478.     m$ = m$ + "22......" + chr$(13)
  4479.     m$ = m$ + "22......" + chr$(13)
  4480.     m$ = m$ + "..22...." + chr$(13)
  4481.     m$ = m$ + "..22...." + chr$(13)
  4482.     m$ = m$ + "22......" + chr$(13)
  4483.     m$ = m$ + "22......" + chr$(13)
  4484.     m$ = m$ + "..22...." + chr$(13)
  4485.     m$ = m$ + "..22...." + chr$(13)
  4486.     arrTileText(204) = m$
  4487.  
  4488.     m$ = ""
  4489.     m$ = m$ + "...22..." + chr$(13)
  4490.     m$ = m$ + "...22..." + chr$(13)
  4491.     m$ = m$ + "...22..." + chr$(13)
  4492.     m$ = m$ + "...22..." + chr$(13)
  4493.     m$ = m$ + "...22..." + chr$(13)
  4494.     m$ = m$ + "...22..." + chr$(13)
  4495.     m$ = m$ + "...22..." + chr$(13)
  4496.     m$ = m$ + "...22..." + chr$(13)
  4497.     arrTileText(205) = m$
  4498.  
  4499.     m$ = ""
  4500.     m$ = m$ + "..22..22" + chr$(13)
  4501.     m$ = m$ + "..22..22" + chr$(13)
  4502.     m$ = m$ + "22..22.." + chr$(13)
  4503.     m$ = m$ + "22..22.." + chr$(13)
  4504.     m$ = m$ + "..22..22" + chr$(13)
  4505.     m$ = m$ + "..22..22" + chr$(13)
  4506.     m$ = m$ + "22..22.." + chr$(13)
  4507.     m$ = m$ + "22..22.." + chr$(13)
  4508.     arrTileText(206) = m$
  4509.  
  4510.     m$ = ""
  4511.     m$ = m$ + "..22..22" + chr$(13)
  4512.     m$ = m$ + "2..22..2" + chr$(13)
  4513.     m$ = m$ + "22..22.." + chr$(13)
  4514.     m$ = m$ + ".22..22." + chr$(13)
  4515.     m$ = m$ + "..22..22" + chr$(13)
  4516.     m$ = m$ + "2..22..2" + chr$(13)
  4517.     m$ = m$ + "22..22.." + chr$(13)
  4518.     m$ = m$ + ".22..22." + chr$(13)
  4519.     arrTileText(207) = m$
  4520.  
  4521.     m$ = ""
  4522.     m$ = m$ + "........" + chr$(13)
  4523.     m$ = m$ + "........" + chr$(13)
  4524.     m$ = m$ + "........" + chr$(13)
  4525.     m$ = m$ + "........" + chr$(13)
  4526.     m$ = m$ + "........" + chr$(13)
  4527.     m$ = m$ + "........" + chr$(13)
  4528.     m$ = m$ + "........" + chr$(13)
  4529.     m$ = m$ + "........" + chr$(13)
  4530.     arrTileText(208) = m$
  4531.  
  4532.     m$ = ""
  4533.     m$ = m$ + "2222...." + chr$(13)
  4534.     m$ = m$ + "2222...." + chr$(13)
  4535.     m$ = m$ + "2222...." + chr$(13)
  4536.     m$ = m$ + "2222...." + chr$(13)
  4537.     m$ = m$ + "2222...." + chr$(13)
  4538.     m$ = m$ + "2222...." + chr$(13)
  4539.     m$ = m$ + "2222...." + chr$(13)
  4540.     m$ = m$ + "2222...." + chr$(13)
  4541.     arrTileText(209) = m$
  4542.  
  4543.     m$ = ""
  4544.     m$ = m$ + "........" + chr$(13)
  4545.     m$ = m$ + "........" + chr$(13)
  4546.     m$ = m$ + "........" + chr$(13)
  4547.     m$ = m$ + "........" + chr$(13)
  4548.     m$ = m$ + "22222222" + chr$(13)
  4549.     m$ = m$ + "22222222" + chr$(13)
  4550.     m$ = m$ + "22222222" + chr$(13)
  4551.     m$ = m$ + "22222222" + chr$(13)
  4552.     arrTileText(210) = m$
  4553.  
  4554.     m$ = ""
  4555.     m$ = m$ + "22222222" + chr$(13)
  4556.     m$ = m$ + "........" + chr$(13)
  4557.     m$ = m$ + "........" + chr$(13)
  4558.     m$ = m$ + "........" + chr$(13)
  4559.     m$ = m$ + "........" + chr$(13)
  4560.     m$ = m$ + "........" + chr$(13)
  4561.     m$ = m$ + "........" + chr$(13)
  4562.     m$ = m$ + "........" + chr$(13)
  4563.     arrTileText(211) = m$
  4564.  
  4565.     m$ = ""
  4566.     m$ = m$ + "........" + chr$(13)
  4567.     m$ = m$ + "........" + chr$(13)
  4568.     m$ = m$ + "........" + chr$(13)
  4569.     m$ = m$ + "........" + chr$(13)
  4570.     m$ = m$ + "........" + chr$(13)
  4571.     m$ = m$ + "........" + chr$(13)
  4572.     m$ = m$ + "........" + chr$(13)
  4573.     m$ = m$ + "22222222" + chr$(13)
  4574.     arrTileText(212) = m$
  4575.  
  4576.     m$ = ""
  4577.     m$ = m$ + "22......" + chr$(13)
  4578.     m$ = m$ + "22......" + chr$(13)
  4579.     m$ = m$ + "22......" + chr$(13)
  4580.     m$ = m$ + "22......" + chr$(13)
  4581.     m$ = m$ + "22......" + chr$(13)
  4582.     m$ = m$ + "22......" + chr$(13)
  4583.     m$ = m$ + "22......" + chr$(13)
  4584.     m$ = m$ + "22......" + chr$(13)
  4585.     arrTileText(213) = m$
  4586.  
  4587.     m$ = ""
  4588.     m$ = m$ + "22..22.." + chr$(13)
  4589.     m$ = m$ + "22..22.." + chr$(13)
  4590.     m$ = m$ + "..22..22" + chr$(13)
  4591.     m$ = m$ + "..22..22" + chr$(13)
  4592.     m$ = m$ + "22..22.." + chr$(13)
  4593.     m$ = m$ + "22..22.." + chr$(13)
  4594.     m$ = m$ + "..22..22" + chr$(13)
  4595.     m$ = m$ + "..22..22" + chr$(13)
  4596.     arrTileText(214) = m$
  4597.  
  4598.     m$ = ""
  4599.     m$ = m$ + "......22" + chr$(13)
  4600.     m$ = m$ + "......22" + chr$(13)
  4601.     m$ = m$ + "......22" + chr$(13)
  4602.     m$ = m$ + "......22" + chr$(13)
  4603.     m$ = m$ + "......22" + chr$(13)
  4604.     m$ = m$ + "......22" + chr$(13)
  4605.     m$ = m$ + "......22" + chr$(13)
  4606.     m$ = m$ + "......22" + chr$(13)
  4607.     arrTileText(215) = m$
  4608.  
  4609.     m$ = ""
  4610.     m$ = m$ + "........" + chr$(13)
  4611.     m$ = m$ + "........" + chr$(13)
  4612.     m$ = m$ + "........" + chr$(13)
  4613.     m$ = m$ + "........" + chr$(13)
  4614.     m$ = m$ + "22..22.." + chr$(13)
  4615.     m$ = m$ + "22..22.." + chr$(13)
  4616.     m$ = m$ + "..22..22" + chr$(13)
  4617.     m$ = m$ + "..22..22" + chr$(13)
  4618.     arrTileText(216) = m$
  4619.  
  4620.     m$ = ""
  4621.     m$ = m$ + "22..22.." + chr$(13)
  4622.     m$ = m$ + "2..22..2" + chr$(13)
  4623.     m$ = m$ + "..22..22" + chr$(13)
  4624.     m$ = m$ + ".22..22." + chr$(13)
  4625.     m$ = m$ + "22..22.." + chr$(13)
  4626.     m$ = m$ + "2..22..2" + chr$(13)
  4627.     m$ = m$ + "..22..22" + chr$(13)
  4628.     m$ = m$ + ".22..22." + chr$(13)
  4629.     arrTileText(217) = m$
  4630.  
  4631.     m$ = ""
  4632.     m$ = m$ + "......22" + chr$(13)
  4633.     m$ = m$ + "......22" + chr$(13)
  4634.     m$ = m$ + "......22" + chr$(13)
  4635.     m$ = m$ + "......22" + chr$(13)
  4636.     m$ = m$ + "......22" + chr$(13)
  4637.     m$ = m$ + "......22" + chr$(13)
  4638.     m$ = m$ + "......22" + chr$(13)
  4639.     m$ = m$ + "......22" + chr$(13)
  4640.     arrTileText(218) = m$
  4641.  
  4642.     m$ = ""
  4643.     m$ = m$ + "...22..." + chr$(13)
  4644.     m$ = m$ + "...22..." + chr$(13)
  4645.     m$ = m$ + "...22..." + chr$(13)
  4646.     m$ = m$ + "...22222" + chr$(13)
  4647.     m$ = m$ + "...22222" + chr$(13)
  4648.     m$ = m$ + "...22..." + chr$(13)
  4649.     m$ = m$ + "...22..." + chr$(13)
  4650.     m$ = m$ + "...22..." + chr$(13)
  4651.     arrTileText(219) = m$
  4652.  
  4653.     m$ = ""
  4654.     m$ = m$ + "........" + chr$(13)
  4655.     m$ = m$ + "........" + chr$(13)
  4656.     m$ = m$ + "........" + chr$(13)
  4657.     m$ = m$ + "........" + chr$(13)
  4658.     m$ = m$ + "....2222" + chr$(13)
  4659.     m$ = m$ + "....2222" + chr$(13)
  4660.     m$ = m$ + "....2222" + chr$(13)
  4661.     m$ = m$ + "....2222" + chr$(13)
  4662.     arrTileText(220) = m$
  4663.  
  4664.     m$ = ""
  4665.     m$ = m$ + "...22..." + chr$(13)
  4666.     m$ = m$ + "...22..." + chr$(13)
  4667.     m$ = m$ + "...22..." + chr$(13)
  4668.     m$ = m$ + "...22222" + chr$(13)
  4669.     m$ = m$ + "...22222" + chr$(13)
  4670.     m$ = m$ + "........" + chr$(13)
  4671.     m$ = m$ + "........" + chr$(13)
  4672.     m$ = m$ + "........" + chr$(13)
  4673.     arrTileText(221) = m$
  4674.  
  4675.     m$ = ""
  4676.     m$ = m$ + "........" + chr$(13)
  4677.     m$ = m$ + "........" + chr$(13)
  4678.     m$ = m$ + "........" + chr$(13)
  4679.     m$ = m$ + "22222..." + chr$(13)
  4680.     m$ = m$ + "22222..." + chr$(13)
  4681.     m$ = m$ + "...22..." + chr$(13)
  4682.     m$ = m$ + "...22..." + chr$(13)
  4683.     m$ = m$ + "...22..." + chr$(13)
  4684.     arrTileText(222) = m$
  4685.  
  4686.     m$ = ""
  4687.     m$ = m$ + "........" + chr$(13)
  4688.     m$ = m$ + "........" + chr$(13)
  4689.     m$ = m$ + "........" + chr$(13)
  4690.     m$ = m$ + "........" + chr$(13)
  4691.     m$ = m$ + "........" + chr$(13)
  4692.     m$ = m$ + "........" + chr$(13)
  4693.     m$ = m$ + "22222222" + chr$(13)
  4694.     m$ = m$ + "22222222" + chr$(13)
  4695.     arrTileText(223) = m$
  4696.  
  4697.     m$ = ""
  4698.     m$ = m$ + "........" + chr$(13)
  4699.     m$ = m$ + "........" + chr$(13)
  4700.     m$ = m$ + "........" + chr$(13)
  4701.     m$ = m$ + "...22222" + chr$(13)
  4702.     m$ = m$ + "...22222" + chr$(13)
  4703.     m$ = m$ + "...22..." + chr$(13)
  4704.     m$ = m$ + "...22..." + chr$(13)
  4705.     m$ = m$ + "...22..." + chr$(13)
  4706.     arrTileText(224) = m$
  4707.  
  4708.     m$ = ""
  4709.     m$ = m$ + "...22..." + chr$(13)
  4710.     m$ = m$ + "...22..." + chr$(13)
  4711.     m$ = m$ + "...22..." + chr$(13)
  4712.     m$ = m$ + "22222222" + chr$(13)
  4713.     m$ = m$ + "22222222" + chr$(13)
  4714.     m$ = m$ + "........" + chr$(13)
  4715.     m$ = m$ + "........" + chr$(13)
  4716.     m$ = m$ + "........" + chr$(13)
  4717.     arrTileText(225) = m$
  4718.  
  4719.     m$ = ""
  4720.     m$ = m$ + "........" + chr$(13)
  4721.     m$ = m$ + "........" + chr$(13)
  4722.     m$ = m$ + "........" + chr$(13)
  4723.     m$ = m$ + "22222222" + chr$(13)
  4724.     m$ = m$ + "22222222" + chr$(13)
  4725.     m$ = m$ + "...22..." + chr$(13)
  4726.     m$ = m$ + "...22..." + chr$(13)
  4727.     m$ = m$ + "...22..." + chr$(13)
  4728.     arrTileText(226) = m$
  4729.  
  4730.     m$ = ""
  4731.     m$ = m$ + "...22..." + chr$(13)
  4732.     m$ = m$ + "...22..." + chr$(13)
  4733.     m$ = m$ + "...22..." + chr$(13)
  4734.     m$ = m$ + "22222..." + chr$(13)
  4735.     m$ = m$ + "22222..." + chr$(13)
  4736.     m$ = m$ + "...22..." + chr$(13)
  4737.     m$ = m$ + "...22..." + chr$(13)
  4738.     m$ = m$ + "...22..." + chr$(13)
  4739.     arrTileText(227) = m$
  4740.  
  4741.     m$ = ""
  4742.     m$ = m$ + "22......" + chr$(13)
  4743.     m$ = m$ + "22......" + chr$(13)
  4744.     m$ = m$ + "22......" + chr$(13)
  4745.     m$ = m$ + "22......" + chr$(13)
  4746.     m$ = m$ + "22......" + chr$(13)
  4747.     m$ = m$ + "22......" + chr$(13)
  4748.     m$ = m$ + "22......" + chr$(13)
  4749.     m$ = m$ + "22......" + chr$(13)
  4750.     arrTileText(228) = m$
  4751.  
  4752.     m$ = ""
  4753.     m$ = m$ + "222....." + chr$(13)
  4754.     m$ = m$ + "222....." + chr$(13)
  4755.     m$ = m$ + "222....." + chr$(13)
  4756.     m$ = m$ + "222....." + chr$(13)
  4757.     m$ = m$ + "222....." + chr$(13)
  4758.     m$ = m$ + "222....." + chr$(13)
  4759.     m$ = m$ + "222....." + chr$(13)
  4760.     m$ = m$ + "222....." + chr$(13)
  4761.     arrTileText(229) = m$
  4762.  
  4763.     m$ = ""
  4764.     m$ = m$ + ".....222" + chr$(13)
  4765.     m$ = m$ + ".....222" + chr$(13)
  4766.     m$ = m$ + ".....222" + chr$(13)
  4767.     m$ = m$ + ".....222" + chr$(13)
  4768.     m$ = m$ + ".....222" + chr$(13)
  4769.     m$ = m$ + ".....222" + chr$(13)
  4770.     m$ = m$ + ".....222" + chr$(13)
  4771.     m$ = m$ + ".....222" + chr$(13)
  4772.     arrTileText(230) = m$
  4773.  
  4774.     m$ = ""
  4775.     m$ = m$ + "22222222" + chr$(13)
  4776.     m$ = m$ + "22222222" + chr$(13)
  4777.     m$ = m$ + "........" + chr$(13)
  4778.     m$ = m$ + "........" + chr$(13)
  4779.     m$ = m$ + "........" + chr$(13)
  4780.     m$ = m$ + "........" + chr$(13)
  4781.     m$ = m$ + "........" + chr$(13)
  4782.     m$ = m$ + "........" + chr$(13)
  4783.     arrTileText(231) = m$
  4784.  
  4785.     m$ = ""
  4786.     m$ = m$ + "22222222" + chr$(13)
  4787.     m$ = m$ + "22222222" + chr$(13)
  4788.     m$ = m$ + "22222222" + chr$(13)
  4789.     m$ = m$ + "........" + chr$(13)
  4790.     m$ = m$ + "........" + chr$(13)
  4791.     m$ = m$ + "........" + chr$(13)
  4792.     m$ = m$ + "........" + chr$(13)
  4793.     m$ = m$ + "........" + chr$(13)
  4794.     arrTileText(232) = m$
  4795.  
  4796.     m$ = ""
  4797.     m$ = m$ + "........" + chr$(13)
  4798.     m$ = m$ + "........" + chr$(13)
  4799.     m$ = m$ + "........" + chr$(13)
  4800.     m$ = m$ + "........" + chr$(13)
  4801.     m$ = m$ + "........" + chr$(13)
  4802.     m$ = m$ + "22222222" + chr$(13)
  4803.     m$ = m$ + "22222222" + chr$(13)
  4804.     m$ = m$ + "22222222" + chr$(13)
  4805.     arrTileText(233) = m$
  4806.  
  4807.     m$ = ""
  4808.     m$ = m$ + ".......2" + chr$(13)
  4809.     m$ = m$ + "......22" + chr$(13)
  4810.     m$ = m$ + ".....22." + chr$(13)
  4811.     m$ = m$ + ".22.22.." + chr$(13)
  4812.     m$ = m$ + ".2222..." + chr$(13)
  4813.     m$ = m$ + ".222...." + chr$(13)
  4814.     m$ = m$ + ".22....." + chr$(13)
  4815.     m$ = m$ + "........" + chr$(13)
  4816.     arrTileText(234) = m$
  4817.  
  4818.     m$ = ""
  4819.     m$ = m$ + "........" + chr$(13)
  4820.     m$ = m$ + "........" + chr$(13)
  4821.     m$ = m$ + "........" + chr$(13)
  4822.     m$ = m$ + "........" + chr$(13)
  4823.     m$ = m$ + "2222...." + chr$(13)
  4824.     m$ = m$ + "2222...." + chr$(13)
  4825.     m$ = m$ + "2222...." + chr$(13)
  4826.     m$ = m$ + "2222...." + chr$(13)
  4827.     arrTileText(235) = m$
  4828.  
  4829.     m$ = ""
  4830.     m$ = m$ + "....2222" + chr$(13)
  4831.     m$ = m$ + "....2222" + chr$(13)
  4832.     m$ = m$ + "....2222" + chr$(13)
  4833.     m$ = m$ + "....2222" + chr$(13)
  4834.     m$ = m$ + "........" + chr$(13)
  4835.     m$ = m$ + "........" + chr$(13)
  4836.     m$ = m$ + "........" + chr$(13)
  4837.     m$ = m$ + "........" + chr$(13)
  4838.     arrTileText(236) = m$
  4839.  
  4840.     m$ = ""
  4841.     m$ = m$ + "...22..." + chr$(13)
  4842.     m$ = m$ + "...22..." + chr$(13)
  4843.     m$ = m$ + "...22..." + chr$(13)
  4844.     m$ = m$ + "22222..." + chr$(13)
  4845.     m$ = m$ + "22222..." + chr$(13)
  4846.     m$ = m$ + "........" + chr$(13)
  4847.     m$ = m$ + "........" + chr$(13)
  4848.     m$ = m$ + "........" + chr$(13)
  4849.     arrTileText(237) = m$
  4850.  
  4851.     m$ = ""
  4852.     m$ = m$ + "2222...." + chr$(13)
  4853.     m$ = m$ + "2222...." + chr$(13)
  4854.     m$ = m$ + "2222...." + chr$(13)
  4855.     m$ = m$ + "2222...." + chr$(13)
  4856.     m$ = m$ + "........" + chr$(13)
  4857.     m$ = m$ + "........" + chr$(13)
  4858.     m$ = m$ + "........" + chr$(13)
  4859.     m$ = m$ + "........" + chr$(13)
  4860.     arrTileText(238) = m$
  4861.  
  4862.     m$ = ""
  4863.     m$ = m$ + "2222...." + chr$(13)
  4864.     m$ = m$ + "2222...." + chr$(13)
  4865.     m$ = m$ + "2222...." + chr$(13)
  4866.     m$ = m$ + "2222...." + chr$(13)
  4867.     m$ = m$ + "....2222" + chr$(13)
  4868.     m$ = m$ + "....2222" + chr$(13)
  4869.     m$ = m$ + "....2222" + chr$(13)
  4870.     m$ = m$ + "....2222" + chr$(13)
  4871.     arrTileText(239) = m$
  4872.  
  4873.     m$ = ""
  4874.     m$ = m$ + "........" + chr$(13)
  4875.     m$ = m$ + "........" + chr$(13)
  4876.     m$ = m$ + "........" + chr$(13)
  4877.     m$ = m$ + "........" + chr$(13)
  4878.     m$ = m$ + "........" + chr$(13)
  4879.     m$ = m$ + "........" + chr$(13)
  4880.     m$ = m$ + "........" + chr$(13)
  4881.     m$ = m$ + "........" + chr$(13)
  4882.     arrTileText(240) = m$
  4883.  
  4884.     m$ = ""
  4885.     m$ = m$ + "22222.22" + chr$(13)
  4886.     m$ = m$ + "22222.22" + chr$(13)
  4887.     m$ = m$ + "22222.22" + chr$(13)
  4888.     m$ = m$ + "........" + chr$(13)
  4889.     m$ = m$ + "22.22222" + chr$(13)
  4890.     m$ = m$ + "22.22222" + chr$(13)
  4891.     m$ = m$ + "22.22222" + chr$(13)
  4892.     m$ = m$ + "........" + chr$(13)
  4893.     arrTileText(241) = m$
  4894.  
  4895.     m$ = ""
  4896.     m$ = m$ + "........" + chr$(13)
  4897.     m$ = m$ + "........" + chr$(13)
  4898.     m$ = m$ + "........" + chr$(13)
  4899.     m$ = m$ + ".222222." + chr$(13)
  4900.     m$ = m$ + "........" + chr$(13)
  4901.     m$ = m$ + "........" + chr$(13)
  4902.     m$ = m$ + "........" + chr$(13)
  4903.     m$ = m$ + "........" + chr$(13)
  4904.     arrTileText(242) = m$
  4905.  
  4906.     m$ = ""
  4907.     m$ = m$ + "........" + chr$(13)
  4908.     m$ = m$ + "...2...." + chr$(13)
  4909.     m$ = m$ + "...2...." + chr$(13)
  4910.     m$ = m$ + "...2...." + chr$(13)
  4911.     m$ = m$ + "...2...." + chr$(13)
  4912.     m$ = m$ + "...2...." + chr$(13)
  4913.     m$ = m$ + "...2...." + chr$(13)
  4914.     m$ = m$ + "........" + chr$(13)
  4915.     arrTileText(243) = m$
  4916.  
  4917.     m$ = ""
  4918.     m$ = m$ + "........" + chr$(13)
  4919.     m$ = m$ + "........" + chr$(13)
  4920.     m$ = m$ + "........" + chr$(13)
  4921.     m$ = m$ + "...2222." + chr$(13)
  4922.     m$ = m$ + "...2...." + chr$(13)
  4923.     m$ = m$ + "...2...." + chr$(13)
  4924.     m$ = m$ + "...2...." + chr$(13)
  4925.     m$ = m$ + "........" + chr$(13)
  4926.     arrTileText(244) = m$
  4927.  
  4928.     m$ = ""
  4929.     m$ = m$ + "........" + chr$(13)
  4930.     m$ = m$ + "........" + chr$(13)
  4931.     m$ = m$ + "........" + chr$(13)
  4932.     m$ = m$ + ".222...." + chr$(13)
  4933.     m$ = m$ + "...2...." + chr$(13)
  4934.     m$ = m$ + "...2...." + chr$(13)
  4935.     m$ = m$ + "...2...." + chr$(13)
  4936.     m$ = m$ + "........" + chr$(13)
  4937.     arrTileText(245) = m$
  4938.  
  4939.     m$ = ""
  4940.     m$ = m$ + "........" + chr$(13)
  4941.     m$ = m$ + "...2...." + chr$(13)
  4942.     m$ = m$ + "...2...." + chr$(13)
  4943.     m$ = m$ + "...2222." + chr$(13)
  4944.     m$ = m$ + "........" + chr$(13)
  4945.     m$ = m$ + "........" + chr$(13)
  4946.     m$ = m$ + "........" + chr$(13)
  4947.     m$ = m$ + "........" + chr$(13)
  4948.     arrTileText(246) = m$
  4949.  
  4950.     m$ = ""
  4951.     m$ = m$ + "........" + chr$(13)
  4952.     m$ = m$ + "...2...." + chr$(13)
  4953.     m$ = m$ + "...2...." + chr$(13)
  4954.     m$ = m$ + ".222...." + chr$(13)
  4955.     m$ = m$ + "........" + chr$(13)
  4956.     m$ = m$ + "........" + chr$(13)
  4957.     m$ = m$ + "........" + chr$(13)
  4958.     m$ = m$ + "........" + chr$(13)
  4959.     arrTileText(247) = m$
  4960.    
  4961.     m$ = ""
  4962.     m$ = m$ + "........" + chr$(13)
  4963.     m$ = m$ + "........" + chr$(13)
  4964.     m$ = m$ + "........" + chr$(13)
  4965.     m$ = m$ + "........" + chr$(13)
  4966.     m$ = m$ + "........" + chr$(13)
  4967.     m$ = m$ + "........" + chr$(13)
  4968.     m$ = m$ + "........" + chr$(13)
  4969.     m$ = m$ + "........" + chr$(13)
  4970.     arrTileText(248) = m$
  4971.  
  4972.     m$ = ""
  4973.     m$ = m$ + "........" + chr$(13)
  4974.     m$ = m$ + "........" + chr$(13)
  4975.     m$ = m$ + "........" + chr$(13)
  4976.     m$ = m$ + "........" + chr$(13)
  4977.     m$ = m$ + "........" + chr$(13)
  4978.     m$ = m$ + "........" + chr$(13)
  4979.     m$ = m$ + "........" + chr$(13)
  4980.     m$ = m$ + "........" + chr$(13)
  4981.     arrTileText(249) = m$
  4982.  
  4983.     m$ = ""
  4984.     m$ = m$ + "........" + chr$(13)
  4985.     m$ = m$ + "........" + chr$(13)
  4986.     m$ = m$ + "........" + chr$(13)
  4987.     m$ = m$ + "........" + chr$(13)
  4988.     m$ = m$ + "........" + chr$(13)
  4989.     m$ = m$ + "........" + chr$(13)
  4990.     m$ = m$ + "........" + chr$(13)
  4991.     m$ = m$ + "........" + chr$(13)
  4992.     arrTileText(250) = m$
  4993.  
  4994.     m$ = ""
  4995.     m$ = m$ + "........" + chr$(13)
  4996.     m$ = m$ + "........" + chr$(13)
  4997.     m$ = m$ + "........" + chr$(13)
  4998.     m$ = m$ + "........" + chr$(13)
  4999.     m$ = m$ + "........" + chr$(13)
  5000.     m$ = m$ + "........" + chr$(13)
  5001.     m$ = m$ + "........" + chr$(13)
  5002.     m$ = m$ + "........" + chr$(13)
  5003.     arrTileText(251) = m$
  5004.  
  5005.     m$ = ""
  5006.     m$ = m$ + "........" + chr$(13)
  5007.     m$ = m$ + "........" + chr$(13)
  5008.     m$ = m$ + "........" + chr$(13)
  5009.     m$ = m$ + "........" + chr$(13)
  5010.     m$ = m$ + "........" + chr$(13)
  5011.     m$ = m$ + "........" + chr$(13)
  5012.     m$ = m$ + "........" + chr$(13)
  5013.     m$ = m$ + "........" + chr$(13)
  5014.     arrTileText(252) = m$
  5015.  
  5016.     m$ = ""
  5017.     m$ = m$ + "........" + chr$(13)
  5018.     m$ = m$ + "........" + chr$(13)
  5019.     m$ = m$ + "........" + chr$(13)
  5020.     m$ = m$ + "........" + chr$(13)
  5021.     m$ = m$ + "........" + chr$(13)
  5022.     m$ = m$ + "........" + chr$(13)
  5023.     m$ = m$ + "........" + chr$(13)
  5024.     m$ = m$ + "........" + chr$(13)
  5025.     arrTileText(253) = m$
  5026.  
  5027.     m$ = ""
  5028.     m$ = m$ + "22222222" + chr$(13)
  5029.     m$ = m$ + "2......2" + chr$(13)
  5030.     m$ = m$ + "2......2" + chr$(13)
  5031.     m$ = m$ + "2......2" + chr$(13)
  5032.     m$ = m$ + "2......2" + chr$(13)
  5033.     m$ = m$ + "2......2" + chr$(13)
  5034.     m$ = m$ + "2......2" + chr$(13)
  5035.     m$ = m$ + "22222222" + chr$(13)
  5036.     arrTileText(254) = m$
  5037.        
  5038.     m$ = ""
  5039.     m$ = m$ + "22222222" + chr$(13)
  5040.     m$ = m$ + "22222222" + chr$(13)
  5041.     m$ = m$ + "22222222" + chr$(13)
  5042.     m$ = m$ + "22222222" + chr$(13)
  5043.     m$ = m$ + "22222222" + chr$(13)
  5044.     m$ = m$ + "22222222" + chr$(13)
  5045.     m$ = m$ + "22222222" + chr$(13)
  5046.     m$ = m$ + "22222222" + chr$(13)
  5047.     arrTileText(255) = m$
  5048.        
  5049. End Sub ' GetTileText
  5050.  
  5051. ' ################################################################################################################################################################
  5052. ' END TILE DEFINITIONS
  5053. ' ################################################################################################################################################################
  5054.  
  5055.  
  5056. ' ################################################################################################################################################################
  5057. ' BEGIN COLOR TEXT TILE FUNCTIONS
  5058. ' ################################################################################################################################################################
  5059.  
  5060. ' /////////////////////////////////////////////////////////////////////////////
  5061. ' Calculates the tile locations ahead of time to save time copying them
  5062. ' to the screen.
  5063.  
  5064. ' TileSheetMapType
  5065. '   xStart
  5066. '   xEnd
  5067. '   yStart
  5068. '   yEnd
  5069.  
  5070. ' TileMapType
  5071. '   xPos
  5072. '   yPos
  5073.  
  5074. '' DECLARATIONS
  5075. 'Dim TileCount%
  5076. 'Dim TilesheetCols%
  5077. 'Dim TilesheetRows%
  5078. 'Dim tileHeightPx%
  5079. 'Dim tileWidthPx%
  5080. 'Dim xOffset%
  5081. 'Dim yOffset%
  5082. 'Dim numTilesX%
  5083. 'Dim numTilesY%
  5084.  
  5085. 'REDIM arrTileSheetMap(255) AS TileSheetMapType
  5086. 'REDIM arrTileMap(20, 20) AS TileMapType
  5087.  
  5088. '' # OF TILES
  5089. 'TileCount% = 256
  5090.  
  5091. '' # OF COLUMNS / ROWS ON SOURCE TILE SHEET
  5092. 'TilesheetCols% = 16
  5093. 'TilesheetRows% = 16
  5094.  
  5095. '' TILE HEIGHT/WIDTH
  5096. 'tileHeightPx% = 32
  5097. 'tileWidthPx% = 32
  5098.  
  5099. '' SCREEN OFFSET
  5100. 'xOffset% = 0
  5101. 'yOffset% = 64
  5102.  
  5103. '' HOW MANY TILES ACROSS
  5104. 'numTilesX% = 20
  5105. 'numTilesY% = 20
  5106.  
  5107. 'ComputeTileLocations arrTileSheetMap(), arrTileMap(), TileCount%, TilesheetCols%, TilesheetRows%, tileWidthPx%, tileHeightPx%, xOffset%, yOffset%, numTilesX%, numTilesY%
  5108.  
  5109. Sub ComputeTileLocations (arrTileSheetMap() AS TileSheetMapType, arrTileMap() AS TileMapType, TileCount%, TilesheetCols%, TilesheetRows%, tileWidthPx%, tileHeightPx%, xOffset%, yOffset%, numTilesX%, numTilesY%)
  5110.     DIM TileNum%
  5111.     DIM sc%
  5112.     DIM sr%
  5113.     DIM sx1%
  5114.     DIM sx2%
  5115.     DIM sy1%
  5116.     DIM sy2%
  5117.  
  5118.     DIM dx%
  5119.     DIM dy%
  5120.     DIM xDest%
  5121.     DIM yDest%
  5122.  
  5123.     ' -----------------------------------------------------------------------------
  5124.     ' CALCULATE TILE SHEET COORDINATES FOR TILES 0-255
  5125.  
  5126.     FOR TileNum% = 0 TO (TileCount% - 1)
  5127.  
  5128.         ' GET THE COLUMN/ROW OF TILE # TileNum% ON THE SOURCE TILE SHEET
  5129.         sc% = TileNum% Mod TilesheetCols%
  5130.         sr% = TileNum% \ TilesheetRows%
  5131.  
  5132.         'Print "Tile#" + cstr$(TileNum%) + " at sc%=" + cstr$(sc%) + ",sr%=" + cstr$(sr%)
  5133.  
  5134.         ' GET THE START X COORDINATE ON THE SOURCE TILE SHEET
  5135.         'sx1% = sc% * tw%
  5136.         sx1% = sc% * tileWidthPx%
  5137.  
  5138.         ' GET THE START Y COORDINATE ON THE SOURCE TILE SHEET
  5139.         'sy1% = sr% * tw%
  5140.         sy1% = sr% * tileHeightPx%
  5141.  
  5142.         ' GET THE END X COORDINATE ON THE SOURCE TILE SHEET
  5143.         'sx2% = sx1% + (tw% - 1)
  5144.         sx2% = sx1% + (tileWidthPx% - 1)
  5145.  
  5146.         ' GET THE END y COORDINATE ON THE SOURCE TILE SHEET
  5147.         'sy2% = sy1% + (tw% - 1)
  5148.         sy2% = sy1% + (tileHeightPx% - 1)
  5149.  
  5150.         ' SAVE THE COORDINATES FOR TileNum% IN THE ARRAY
  5151.         arrTileSheetMap(TileNum%).xStart = sx1%
  5152.         arrTileSheetMap(TileNum%).xEnd = sx2%
  5153.         arrTileSheetMap(TileNum%).yStart = sy1%
  5154.         arrTileSheetMap(TileNum%).yEnd = sy2%
  5155.  
  5156.     NEXT TileNum%
  5157.  
  5158.     ' -----------------------------------------------------------------------------
  5159.     ' CALCULATE SCREEN COORDINATES FOR TILES
  5160.  
  5161.     FOR dx% = 0 TO (numTilesX% - 1)
  5162.         FOR dy% = 0 TO (numTilesY% - 1)
  5163.  
  5164.             ' GET THE DESTINATION X COORDINATE ON THE SCREEN
  5165.             'xDest% = dx% * tw%
  5166.             xDest% = (dx% * tileWidthPx%) + xOffset%
  5167.  
  5168.             ' GET THE DESTINATION Y COORDINATE ON THE SCREEN
  5169.             'yDest% = (dy% * tw%) + 64
  5170.             yDest% = (dy% * tileHeightPx%) + yOffset%
  5171.  
  5172.             'Print "Tile#" + cstr$(TileNum%) + " at r" + cstr$(sr%) + "c" + cstr$(sc%) + " pixel location r" + cstr$(sy1%) + "c" + cstr$(sx1%) + " through r" + cstr$(sy2%) + "c" + cstr$(sx2%)
  5173.  
  5174.             ' SAVE THE SCREEN PIXEL COORDINATES FOR dx%, dy% IN THE ARRAY
  5175.             ' WHERE dx% and dy% ARE 1-BASED
  5176.             arrTileMap(dx%+1, dy%+1).xPos = xDest%
  5177.             arrTileMap(dx%+1, dy%+1).yPos = yDest%
  5178.  
  5179.         NEXT dy%
  5180.     NEXT dx%
  5181.  
  5182. End Sub ' ComputeTileLocations
  5183.  
  5184. ' /////////////////////////////////////////////////////////////////////////////
  5185. ' Like DrawColorTile but faster because it uses precalculated coordinates
  5186. ' to find the tile on the tile sheet, and the destination on the screen.
  5187.  
  5188. ' Receives:
  5189. ' imgScreen& = handle to screen to draw tile on
  5190. ' imgTiles& = handle to 16x16 tile sheet of 16x16 pixel tiles colored black (256 tiles)
  5191. ' arrTileSheetMap() = array of TileSheetMapType which holds precalculated positions of tiles on tilesheet
  5192. ' arrTileMap() = array of TileMapType which holds precalculated positions where tiles go on screen
  5193. ' tileWidthPx% = width of tiles in pixels
  5194. ' tileHeightPx% = height of tiles in pixels
  5195. ' TileNum% = ordinal number of tile on tile sheet to draw (0-255)
  5196. ' TileColor~& = color to use for tile
  5197. ' BackColor~& = color to use for background
  5198. ' dx% = column # to draw tile at (where each column is 16 pixels wide)
  5199. ' dy% = row # to draw tile at (where each row is 16 pixels high)
  5200.  
  5201. ' *** QUESTION
  5202. ' *** IF THE SUB RECEIVES IMAGE HANDLE PARAMETERS imgScreen&, imgTiles&
  5203. ' *** ARE THESE BY REFERENCE?
  5204. ' *** IF NOT, DO THESE LOCAL COPIES HAVE TO BE RELEASED WITH _FREEIMAGE ?
  5205.  
  5206. ' TODO: support transparency?
  5207. '       Colors returned are always opaque as the transparency value is always 255. Use _ALPHA or _CLEARCOLOR to change it.
  5208.  
  5209. 'DrawColorTileFast imgScreen&, imgTiles&, arrTileSheet8Map(), arrTile8Map(), tileWidthPx%, tileHeightPx%, TileNum%, TileColor~&, BackColor~&, dx%, dy%
  5210.  
  5211. Sub DrawColorTileFast (imgScreen&, imgTiles&, arrTileSheetMap() AS TileSheetMapType, arrTileMap() AS TileMapType, tileWidthPx%, tileHeightPx%, TileNum%, TileColor~&, BackColor~&, dx%, dy%)
  5212.     DIM ColorSprite&
  5213.     DIM UniversalSprite&
  5214.  
  5215.     ' -----------------------------------------------------------------------------
  5216.     ' PART 1: DRAW BACKGROUND COLOR
  5217.     IF BackColor~& <> cEmpty THEN
  5218.  
  5219.         ' CREATE A TEMPORARY TILE
  5220.         ColorSprite& = _NewImage(tileWidthPx%, tileHeightPx%, 32)
  5221.         _Dest ColorSprite&
  5222.  
  5223.         ' AND FILL IT WITH THE BACKGROUND COLOR
  5224.         CLS, BackColor~&
  5225.  
  5226.         ' COPY THE TEMPORARY BACKGROUND TILE TO THE SCREEN imgScreen&
  5227.         _SOURCE ColorSprite&
  5228.         _Dest imgScreen&
  5229.  
  5230.         '_PUTIMAGE (0  , 0  ), sourceHandle& ' places image at upper left corner of window w/o stretching it
  5231.         '_PUTIMAGE (dx1, dy1), sourceHandle&, destHandle&, (sx1, sy1)-(sx2, sy2) ' portion of source to the top-left corner of the destination page
  5232.         '_PUTIMAGE (64,  128), imgTiles&,     imgScreen&,  (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  5233.         '_PutImage (64,  128), imgTiles&,     imgScreen&,  (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  5234.         _PutImage (arrTileMap(dx%, dy%).xPos, arrTileMap(dx%, dy%).yPos), ColorSprite&, imgScreen&, (0, 0)-(tileWidthPx% - 1, tileHeightPx% - 1) ' portion of source to the top-left corner of the destination page
  5235.     END IF
  5236.  
  5237.     ' -----------------------------------------------------------------------------
  5238.     ' PART 2: DRAW FOREGROUND TILE IN SPECIFIED COLOR
  5239.  
  5240.     ' CREATE A TEMPORARY TILE TO COLOR
  5241.     UniversalSprite& = _NewImage(tileWidthPx%, tileHeightPx%, 32)
  5242.  
  5243.     ' COPY THE SOURCE (MASK) TILE TO THE TEMPORARY ONE
  5244.     _SOURCE imgTiles&
  5245.     _Dest UniversalSprite&
  5246.  
  5247.     '_PutImage(dx, dy)  sourceHandle&, destHandle&     , (sx1                             , sy1                             )-(sx2                           , sy2                           )
  5248.     _PutImage (0 , 0 ), imgTiles&,     UniversalSprite&, (arrTileSheetMap(TileNum%).xStart, arrTileSheetMap(TileNum%).yStart)-(arrTileSheetMap(TileNum%).xEnd, arrTileSheetMap(TileNum%).yEnd)
  5249.  
  5250.     ' COLOR IN THE TEMPORARY TILE
  5251.     ' REPLACING BLACK (THE SOURCE COLOR) WITH THE TILE COLOR
  5252. '    IF ColorSprite& < -1 THEN _FreeImage ColorSprite&
  5253.     IF ColorSprite& < -1 OR ColorSprite& > 0 THEN _FreeImage ColorSprite&
  5254.     DoColorSwap UniversalSprite&, cBlack, TileColor~&, ColorSprite&
  5255.     'ColorSprite& = swapcolor&(UniversalSprite&, cBlack, TileColor~&)
  5256.     ' ^^^
  5257.     ' PROGRAM CRASHED HERE, BEFORE FIXING swapcolor& AND CHANGING FROM FUNCTION TO SUB DoColorSwap
  5258.  
  5259.     ' COPY THE TEMPORARY TILE TO THE SCREEN imgScreen&
  5260.     _SOURCE ColorSprite&
  5261.     _Dest imgScreen&
  5262.     '_PutImage(dx                       , dy                       ), sourceHandle&, destHandle&, (sx1, sy1)-(sx2,              sy2              )
  5263.     _PutImage (arrTileMap(dx%, dy%).xPos, arrTileMap(dx%, dy%).yPos), ColorSprite&,  imgScreen&,  (0,   0  )-(tileWidthPx% - 1, tileHeightPx% - 1) ' portion of source to the top-left corner of the destination page
  5264.  
  5265.     ' -----------------------------------------------------------------------------
  5266.     ' PART 3: CLEANUP
  5267.  
  5268.     ' ADDED PER FellipeHeitor
  5269.     IF ColorSprite& < -1 OR ColorSprite& > 0 THEN _FREEIMAGE ColorSprite&
  5270.     IF UniversalSprite& < -1 OR UniversalSprite& > 0 THEN _FREEIMAGE UniversalSprite&
  5271.  
  5272. End Sub ' DrawColorTileFast
  5273.  
  5274. ' /////////////////////////////////////////////////////////////////////////////
  5275. ' Like DrawTile but faster because it uses precalculated coordinates
  5276. ' to find the tile on the tile sheet, and the destination on the screen.
  5277.  
  5278. 'OLD: DrawTileFast imgTiles&, TileNum%, imgScreen&, arrTileSheetMap(), arrTileMap(), dx%, dy%
  5279. 'NEW: DrawTileFast dx%, dy%, TileNum%, imgScreen&, imgTiles&, arrTileSheetMap(), arrTileMap()
  5280.  
  5281. Sub DrawTileFast (dx%, dy%, TileNum%, imgScreen&, imgTiles&, arrTileSheetMap() AS TileSheetMapType, arrTileMap() AS TileMapType)
  5282.     _Dest imgScreen&
  5283.     ' portion of source to the top-left corner of the destination page
  5284.     _PutImage (arrTileMap(dx%, dy%).xPos, arrTileMap(dx%, dy%).yPos), imgTiles&, imgScreen&, (arrTileSheetMap(TileNum%).xStart, arrTileSheetMap(TileNum%).yStart)-(arrTileSheetMap(TileNum%).xEnd, arrTileSheetMap(TileNum%).yEnd)
  5285. End Sub ' DrawTileFast
  5286.  
  5287. ' /////////////////////////////////////////////////////////////////////////////
  5288. ' Draw entire array on screen.
  5289.  
  5290. ' Like PlotTilesToScreen but faster because it uses precalculated coordinates
  5291. ' to find the tile on the tile sheet, and the destination on the screen.
  5292.  
  5293. 'PlotTilesToScreenFast imgScreen&, imgTiles&, arrTileSheetMap(), arrTileMap(), arrTiles()
  5294. Sub PlotTilesToScreenFast(imgScreen&, imgTiles&, arrTileSheetMap() AS TileSheetMapType, arrTileMap() AS TileMapType, arrTiles() AS INTEGER)
  5295.     Dim dx%
  5296.     Dim dy%
  5297.     Dim TileNum%
  5298.    
  5299.     'Screen imgScreen&
  5300.     For dx% = 1 To UBound(arrTiles, 1)
  5301.         For dy% = 1 To UBound(arrTiles, 2)
  5302.             TileNum% = arrTiles(dx%, dy%)
  5303.             'DrawTile imgTiles&, TileNum%, imgScreen&, dx%-1, dy%-1
  5304.             'DrawTileFast imgTiles&, TileNum%, imgScreen&, arrTileSheetMap(), arrTileMap(), dx%, dy%
  5305.             DrawTileFast dx%, dy%, TileNum%, imgScreen&, imgTiles&, arrTileSheetMap(), arrTileMap()
  5306.         Next dy%
  5307.     Next dx%
  5308.     '_Display ' update screen with changes
  5309. End Sub ' PlotTilesToScreenFast
  5310.  
  5311. ' /////////////////////////////////////////////////////////////////////////////
  5312. ' Original version which calculates coordinates on tile sheet and destination
  5313. ' screen every time. For a faster version uses precalculated coordinates,
  5314. ' see DrawColorTileFast.
  5315.  
  5316. ' Receives:
  5317. ' imgTiles& = handle to 16x16 tile sheet of 16x16 pixel tiles colored black (256 tiles)
  5318. ' TileNum% = ordinal number of tile on tile sheet to draw (0-255)
  5319. ' TileColor~& = color to use for tile
  5320. ' imgScreen& = handle to screen to draw tile on
  5321. ' dx% = column # to draw tile at (where each column is 16 pixels wide)
  5322. ' dy% = row # to draw tile at (where each row is 16 pixels high)
  5323. ' xOffset% = offset tile this many columns over
  5324. ' yOffset% = offset tile this many rows down
  5325.  
  5326. ' TODO: support background color bcolor&
  5327.  
  5328. ' TODO: support transparency?
  5329. '       Colors returned are always opaque as the transparency value is always 255. Use _ALPHA or _CLEARCOLOR to change it.
  5330.  
  5331. Sub DrawColorTile (imgScreen&, imgTiles&, TileNum%, TileColor~&, BackColor~&, dx%, dy%, xOffset%, yOffset%)
  5332.     Dim cols%
  5333.     Dim rows%
  5334.     Dim sc%
  5335.     Dim sr%
  5336.     Dim sx1%
  5337.     Dim sy1%
  5338.     Dim sx2%
  5339.     Dim sy2%
  5340.     Dim xDest%
  5341.     Dim yDest%
  5342.     Dim ColorSprite&
  5343.     Dim UniversalSprite&
  5344.  
  5345.     '_PUTIMAGE (0, 0), i ' places image at upper left corner of window w/o stretching it
  5346.     '_PUTIMAGE (dx1, dy1), sourceHandle&, destHandle&, (sx1, sy1)-(sx2, sy2) ' portion of source to the top-left corner of the destination page
  5347.     '_PUTIMAGE (64,  128), imgTiles&,      imgScreen&,   (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  5348.     '_PutImage (64, 128), imgTiles&, imgScreen&, (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  5349.  
  5350.     ' # OF COLUMNS / ROWS ON SOURCE TILE SHEET
  5351.     cols% = 16
  5352.     rows% = 16
  5353.  
  5354.     ' GET THE COLUMN/ROW OF TILE # TileNum% ON THE SOURCE TILE SHEET
  5355.     sc% = TileNum% Mod rows%
  5356.     sr% = TileNum% \ rows%
  5357.  
  5358.     'Print "Tile#" + cstr$(TileNum%) + " at sc%=" + cstr$(sc%) + ",sr%=" + cstr$(sr%)
  5359.  
  5360.     ' GET THE START X COORDINATE ON THE SOURCE TILE SHEET
  5361.     'sx1% = sc% * tw%
  5362.     sx1% = sc% * 8
  5363.  
  5364.     ' GET THE START Y COORDINATE ON THE SOURCE TILE SHEET
  5365.     'sy1% = sr% * tw%
  5366.     sy1% = sr% * 8
  5367.  
  5368.     ' GET THE END X COORDINATE ON THE SOURCE TILE SHEET
  5369.     'sx2% = sx1% + (tw% - 1)
  5370.     sx2% = sx1% + 7
  5371.  
  5372.     ' GET THE END y COORDINATE ON THE SOURCE TILE SHEET
  5373.     'sy2% = sy1% + (tw% - 1)
  5374.     sy2% = sy1% + 7
  5375.  
  5376.     ' GET THE DESTINATION X COORDINATE ON THE SCREEN
  5377.     'xDest% = dx% * tw%
  5378.     xDest% = dx% * 8 + (8 * xOffset%)
  5379.  
  5380.     ' GET THE DESTINATION Y COORDINATE ON THE SCREEN
  5381.     ''yDest% = (dy% * tw%) + 64
  5382.     'yDest% = (dy% * 8) + 64 + (8 * yOffset%)
  5383.     yDest% = (dy% * 8) + (8 * yOffset%)
  5384.  
  5385.     ' IS THERE A BACKGROUND COLOR?
  5386.     If BackColor~& <> cEmpty Then
  5387.         ColorSprite& = _NewImage(8, 8, 32)
  5388.         _Dest ColorSprite&
  5389.         'SCREEN ColorSprite&
  5390.         'CLS , _RGB(0, 0, 0) ' makes the background opaque black
  5391.         Cls , BackColor~&
  5392.  
  5393.         'SCREEN imgScreen& ' SHIFT FOCUS BACK TO THE SCREEN
  5394.  
  5395.         ' COPY THE TEMPORARY TILE TO THE SCREEN imgScreen&
  5396.         _Source ColorSprite&
  5397.         _Dest imgScreen&
  5398.         'TODO: SHOULDN'T THIS BE 7,7 NOT 15,15 ?
  5399.         '_PutImage (xDest%, yDest%), ColorSprite&, imgScreen&, (0, 0)-(15, 15) ' portion of source to the top-left corner of the destination page
  5400.         _PutImage (xDest%, yDest%), ColorSprite&, imgScreen&, (0, 0)-(7, 7) ' portion of source to the top-left corner of the destination page
  5401.     End If
  5402.  
  5403.     ' CREATE A TEMPORARY TILE TO COLOR
  5404.     'UniversalSprite& = _NewImage(tw%, tw%, 32)
  5405.     UniversalSprite& = _NewImage(8, 8, 32)
  5406.  
  5407.     ' COPY THE TILE TO THE TEMPORARY ONE
  5408.     _Source imgTiles&
  5409.     _Dest UniversalSprite&
  5410.     _PutImage (0, 0), imgTiles&, UniversalSprite&, (sx1%, sy1%)-(sx2%, sy2%)
  5411.  
  5412.     ' COLOR IN THE TEMPORARY TILE
  5413.     ' REPLACING BLACK (THE SOURCE COLOR) WITH THE TILE COLOR
  5414.     'If ColorSprite& < -1 Then _FreeImage ColorSprite&
  5415.     IF ColorSprite& < -1 OR ColorSprite& > 0 THEN _FreeImage ColorSprite&
  5416.     'ColorSprite& = swapcolor&(UniversalSprite&, cBlack, TileColor~&)
  5417.     DoColorSwap UniversalSprite&, cBlack, TileColor~&, ColorSprite&
  5418.  
  5419.     ' COPY THE TEMPORARY TILE TO THE SCREEN imgScreen&
  5420.     _Source ColorSprite&
  5421.     _Dest imgScreen&
  5422.     _PutImage (xDest%, yDest%), ColorSprite&, imgScreen&, (0, 0)-(7, 7) ' portion of source to the top-left corner of the destination page
  5423.  
  5424.     ' ADDED PER FellipeHeitor
  5425.     IF ColorSprite& < -1 OR ColorSprite& > 0 THEN _FreeImage ColorSprite&
  5426.     IF UniversalSprite& < -1 OR UniversalSprite& > 0 THEN _FreeImage UniversalSprite&
  5427.  
  5428. End Sub ' DrawColorTile
  5429.  
  5430. '' /////////////////////////////////////////////////////////////////////////////
  5431. '' Like DrawColorTile but faster because it uses precalculated coordinates
  5432. '' to find the tile on the tile sheet, and the destination on the screen.
  5433. '
  5434. '' Receives:
  5435. '' imgScreen& = handle to screen to draw tile on
  5436. '' imgTiles& = handle to 16x16 tile sheet of 16x16 pixel tiles colored black (256 tiles)
  5437. '' arrTileSheetMap() = array of TileSheetMapType which holds precalculated positions of tiles on tilesheet
  5438. '' arrTileMap() = array of TileMapType which holds precalculated positions where tiles go on screen
  5439. '' tileWidthPx% = width of tiles in pixels
  5440. '' tileHeightPx% = height of tiles in pixels
  5441. '' TileNum% = ordinal number of tile on tile sheet to draw (0-255)
  5442. '' TileColor~& = color to use for tile
  5443. '' BackColor~& = color to use for background
  5444. '' dx% = column # to draw tile at (where each column is 16 pixels wide)
  5445. '' dy% = row # to draw tile at (where each row is 16 pixels high)
  5446. '
  5447. '' *** QUESTION
  5448. '' *** IF THE SUB RECEIVES IMAGE HANDLE PARAMETERS imgScreen&, imgTiles&
  5449. '' *** ARE THESE BY REFERENCE?
  5450. '' *** IF NOT, DO THESE LOCAL COPIES HAVE TO BE RELEASED WITH _FREEIMAGE ?
  5451. '
  5452. '' TODO: support transparency?
  5453. ''       Colors returned are always opaque as the transparency value is always 255. Use _ALPHA or _CLEARCOLOR to change it.
  5454. '
  5455. ''DrawColorTileFast imgScreen&, imgTiles&, arrTileSheet16Map(), arrTile16Map(), tileWidthPx%, tileHeightPx%, TileNum%, TileColor~&, BackColor~&, dx%, dy%
  5456. '
  5457. 'Sub DrawColorTileFast (imgScreen&, imgTiles&, arrTileSheetMap() AS TileSheetMapType, arrTileMap() AS TileMapType, tileWidthPx%, tileHeightPx%, TileNum%, TileColor~&, BackColor~&, dx%, dy%)
  5458. '    DIM ColorSprite&
  5459. '    DIM UniversalSprite&
  5460. '
  5461. '    ' -----------------------------------------------------------------------------
  5462. '    ' PART 1: DRAW BACKGROUND COLOR
  5463. '    IF BackColor~& <> cEmpty& THEN
  5464. '
  5465. '        ' CREATE A TEMPORARY TILE
  5466. '        ColorSprite& = _NewImage(tileWidthPx%, tileHeightPx%, 32)
  5467. '        _Dest ColorSprite&
  5468. '
  5469. '        ' AND FILL IT WITH THE BACKGROUND COLOR
  5470. '        CLS, BackColor~&
  5471. '
  5472. '        ' COPY THE TEMPORARY BACKGROUND TILE TO THE SCREEN imgScreen&
  5473. '        _SOURCE ColorSprite&
  5474. '        _Dest imgScreen&
  5475. '
  5476. '        '_PUTIMAGE (0  , 0  ), sourceHandle& ' places image at upper left corner of window w/o stretching it
  5477. '        '_PUTIMAGE (dx1, dy1), sourceHandle&, destHandle&, (sx1, sy1)-(sx2, sy2) ' portion of source to the top-left corner of the destination page
  5478. '        '_PUTIMAGE (64,  128), imgTiles&,     imgScreen&,  (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  5479. '        '_PutImage (64,  128), imgTiles&,     imgScreen&,  (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  5480. '        _PutImage (arrTileMap(dx%, dy%).xPos, arrTileMap(dx%, dy%).yPos), ColorSprite&, imgScreen&, (0, 0)-(tileWidthPx% - 1, tileHeightPx% - 1) ' portion of source to the top-left corner of the destination page
  5481. '    END IF
  5482. '
  5483. '    ' -----------------------------------------------------------------------------
  5484. '    ' PART 2: DRAW FOREGROUND TILE IN SPECIFIED COLOR
  5485. '
  5486. '    ' CREATE A TEMPORARY TILE TO COLOR
  5487. '    UniversalSprite& = _NewImage(tileWidthPx%, tileHeightPx%, 32)
  5488. '
  5489. '    ' COPY THE SOURCE (MASK) TILE TO THE TEMPORARY ONE
  5490. '    _SOURCE imgTiles&
  5491. '    _Dest UniversalSprite&
  5492. '
  5493. '    '_PutImage(dx, dy)  sourceHandle&, destHandle&     , (sx1                             , sy1                             )-(sx2                           , sy2                           )
  5494. '    _PutImage (0 , 0 ), imgTiles&,     UniversalSprite&, (arrTileSheetMap(TileNum%).xStart, arrTileSheetMap(TileNum%).yStart)-(arrTileSheetMap(TileNum%).xEnd, arrTileSheetMap(TileNum%).yEnd)
  5495. '
  5496. '    ' COLOR IN THE TEMPORARY TILE
  5497. '    ' REPLACING BLACK (THE SOURCE COLOR) WITH THE TILE COLOR
  5498. ''    IF ColorSprite& < -1 THEN _FreeImage ColorSprite&
  5499. '    IF ColorSprite& < -1 OR ColorSprite& > 0 THEN _FreeImage ColorSprite&
  5500. '    DoColorSwap UniversalSprite&, cBlack, TileColor~&, ColorSprite&
  5501. '    'ColorSprite& = swapcolor&(UniversalSprite&, cBlack, TileColor~&)
  5502. '    ' ^^^
  5503. '    ' PROGRAM CRASHED HERE, BEFORE FIXING swapcolor& AND CHANGING FROM FUNCTION TO SUB DoColorSwap
  5504. '
  5505. '    ' COPY THE TEMPORARY TILE TO THE SCREEN imgScreen&
  5506. '    _SOURCE ColorSprite&
  5507. '    _Dest imgScreen&
  5508. '    '_PutImage(dx                       , dy                       ), sourceHandle&, destHandle&, (sx1, sy1)-(sx2,              sy2              )
  5509. '    _PutImage (arrTileMap(dx%, dy%).xPos, arrTileMap(dx%, dy%).yPos), ColorSprite&,  imgScreen&,  (0,   0  )-(tileWidthPx% - 1, tileHeightPx% - 1) ' portion of source to the top-left corner of the destination page
  5510. '
  5511. '    ' -----------------------------------------------------------------------------
  5512. '    ' PART 3: CLEANUP
  5513. '
  5514. '    ' ADDED PER FellipeHeitor
  5515. '    IF ColorSprite& < -1 OR ColorSprite& > 0 THEN _FREEIMAGE ColorSprite&
  5516. '    IF UniversalSprite& < -1 OR UniversalSprite& > 0 THEN _FREEIMAGE UniversalSprite&
  5517. '
  5518. 'End Sub ' DrawColorTileFast
  5519.  
  5520. ' /////////////////////////////////////////////////////////////////////////////
  5521. ' Latest version with NOVARSEG's changes.
  5522.  
  5523. ' Based on code from:
  5524.  
  5525. ' Image color swap?
  5526. ' https://www.qb64.org/forum/index.php?topic=2312.0
  5527.  
  5528. ' Like Function swapcolor& except returns new image in a parameter
  5529. ' in case being a function causes a memory leak?
  5530.  
  5531. Sub DoColorSwap (imgOriginal&, oldcolor~&, newcolor~&, imgNew&)
  5532.     Dim m As _MEM
  5533.     Dim a As _Offset
  5534.     a = 0
  5535.     imgNew& = _CopyImage(imgOriginal&, 32)
  5536.     m = _MemImage(imgNew&)
  5537.     Do Until a = m.SIZE - 4
  5538.         a = a + 4
  5539.         c = _MemGet(m, m.OFFSET + a, _Unsigned Long)
  5540.         If c = oldcolor~& Then
  5541.             _MemPut m, m.OFFSET + a, newcolor~&
  5542.         End If
  5543.     Loop
  5544.     _MemFree m
  5545. End Sub ' DoColorSwap&
  5546.  
  5547. ' ################################################################################################################################################################
  5548. ' END COLOR TEXT TILE FUNCTIONS
  5549. ' ################################################################################################################################################################
  5550.  
  5551. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  5552. ' BEGIN DEBUGGING ROUTINES #DEBUGGING
  5553. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  5554.  
  5555. Sub DebugPrint (s$)
  5556.     If m_bDebug = TRUE Then
  5557.         _Echo s$
  5558.         'ReDim arrLines$(0)
  5559.         'dim delim$ : delim$ = Chr$(13)
  5560.         'split MyString, delim$, arrLines$()
  5561.     End If
  5562. End Sub ' DebugPrint
  5563.  
  5564. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  5565. ' END DEBUGGING ROUTINES @DEBUGGING
  5566. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  5567.  
  5568. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  5569. ' BEGIN PSET 8-BIT PATTERN PLOTTING CODE
  5570. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  5571.  
  5572. ' /////////////////////////////////////////////////////////////////////////////
  5573. ' DrawTileBitPattern8PSET imgScreen&, arrTileBytes(), _
  5574. '     iTileNum, iCol, iRow, fgColor, bgColor
  5575. ' where arrTileBytes is
  5576. ' arrTileBytes(0 to 255, 0 To 7) As Integer
  5577.  
  5578. Sub DrawTileBitPattern8PSET(  _
  5579.         imgScreen&, arrTileBytes() As Integer, _
  5580.         iTileNum As Integer, iCol As Integer, iRow As Integer, _
  5581.         fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  5582.         )
  5583.        
  5584.         Dim iByte As Integer
  5585.         for iByte = 0 to 7
  5586.                 Select Case arrTileBytes(iTileNum, iByte)
  5587.                         Case 0:
  5588.                                 DrawBitPatternPSET000 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5589.                         Case 1:
  5590.                                 DrawBitPatternPSET001 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5591.                         Case 2:
  5592.                                 DrawBitPatternPSET002 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5593.                         Case 3:
  5594.                                 DrawBitPatternPSET003 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5595.                         Case 4:
  5596.                                 DrawBitPatternPSET004 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5597.                         Case 5:
  5598.                                 DrawBitPatternPSET005 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5599.                         Case 6:
  5600.                                 DrawBitPatternPSET006 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5601.                         Case 7:
  5602.                                 DrawBitPatternPSET007 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5603.                         Case 8:
  5604.                                 DrawBitPatternPSET008 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5605.                         Case 9:
  5606.                                 DrawBitPatternPSET009 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5607.                         Case 10:
  5608.                                 DrawBitPatternPSET010 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5609.                         Case 11:
  5610.                                 DrawBitPatternPSET011 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5611.                         Case 12:
  5612.                                 DrawBitPatternPSET012 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5613.                         Case 13:
  5614.                                 DrawBitPatternPSET013 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5615.                         Case 14:
  5616.                                 DrawBitPatternPSET014 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5617.                         Case 15:
  5618.                                 DrawBitPatternPSET015 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5619.                         Case 16:
  5620.                                 DrawBitPatternPSET016 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5621.                         Case 17:
  5622.                                 DrawBitPatternPSET017 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5623.                         Case 18:
  5624.                                 DrawBitPatternPSET018 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5625.                         Case 19:
  5626.                                 DrawBitPatternPSET019 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5627.                         Case 20:
  5628.                                 DrawBitPatternPSET020 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5629.                         Case 21:
  5630.                                 DrawBitPatternPSET021 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5631.                         Case 22:
  5632.                                 DrawBitPatternPSET022 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5633.                         Case 23:
  5634.                                 DrawBitPatternPSET023 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5635.                         Case 24:
  5636.                                 DrawBitPatternPSET024 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5637.                         Case 25:
  5638.                                 DrawBitPatternPSET025 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5639.                         Case 26:
  5640.                                 DrawBitPatternPSET026 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5641.                         Case 27:
  5642.                                 DrawBitPatternPSET027 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5643.                         Case 28:
  5644.                                 DrawBitPatternPSET028 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5645.                         Case 29:
  5646.                                 DrawBitPatternPSET029 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5647.                         Case 30:
  5648.                                 DrawBitPatternPSET030 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5649.                         Case 31:
  5650.                                 DrawBitPatternPSET031 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5651.                         Case 32:
  5652.                                 DrawBitPatternPSET032 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5653.                         Case 33:
  5654.                                 DrawBitPatternPSET033 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5655.                         Case 34:
  5656.                                 DrawBitPatternPSET034 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5657.                         Case 35:
  5658.                                 DrawBitPatternPSET035 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5659.                         Case 36:
  5660.                                 DrawBitPatternPSET036 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5661.                         Case 37:
  5662.                                 DrawBitPatternPSET037 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5663.                         Case 38:
  5664.                                 DrawBitPatternPSET038 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5665.                         Case 39:
  5666.                                 DrawBitPatternPSET039 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5667.                         Case 40:
  5668.                                 DrawBitPatternPSET040 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5669.                         Case 41:
  5670.                                 DrawBitPatternPSET041 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5671.                         Case 42:
  5672.                                 DrawBitPatternPSET042 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5673.                         Case 43:
  5674.                                 DrawBitPatternPSET043 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5675.                         Case 44:
  5676.                                 DrawBitPatternPSET044 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5677.                         Case 45:
  5678.                                 DrawBitPatternPSET045 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5679.                         Case 46:
  5680.                                 DrawBitPatternPSET046 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5681.                         Case 47:
  5682.                                 DrawBitPatternPSET047 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5683.                         Case 48:
  5684.                                 DrawBitPatternPSET048 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5685.                         Case 49:
  5686.                                 DrawBitPatternPSET049 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5687.                         Case 50:
  5688.                                 DrawBitPatternPSET050 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5689.                         Case 51:
  5690.                                 DrawBitPatternPSET051 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5691.                         Case 52:
  5692.                                 DrawBitPatternPSET052 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5693.                         Case 53:
  5694.                                 DrawBitPatternPSET053 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5695.                         Case 54:
  5696.                                 DrawBitPatternPSET054 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5697.                         Case 55:
  5698.                                 DrawBitPatternPSET055 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5699.                         Case 56:
  5700.                                 DrawBitPatternPSET056 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5701.                         Case 57:
  5702.                                 DrawBitPatternPSET057 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5703.                         Case 58:
  5704.                                 DrawBitPatternPSET058 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5705.                         Case 59:
  5706.                                 DrawBitPatternPSET059 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5707.                         Case 60:
  5708.                                 DrawBitPatternPSET060 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5709.                         Case 61:
  5710.                                 DrawBitPatternPSET061 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5711.                         Case 62:
  5712.                                 DrawBitPatternPSET062 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5713.                         Case 63:
  5714.                                 DrawBitPatternPSET063 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5715.                         Case 64:
  5716.                                 DrawBitPatternPSET064 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5717.                         Case 65:
  5718.                                 DrawBitPatternPSET065 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5719.                         Case 66:
  5720.                                 DrawBitPatternPSET066 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5721.                         Case 67:
  5722.                                 DrawBitPatternPSET067 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5723.                         Case 68:
  5724.                                 DrawBitPatternPSET068 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5725.                         Case 69:
  5726.                                 DrawBitPatternPSET069 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5727.                         Case 70:
  5728.                                 DrawBitPatternPSET070 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5729.                         Case 71:
  5730.                                 DrawBitPatternPSET071 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5731.                         Case 72:
  5732.                                 DrawBitPatternPSET072 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5733.                         Case 73:
  5734.                                 DrawBitPatternPSET073 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5735.                         Case 74:
  5736.                                 DrawBitPatternPSET074 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5737.                         Case 75:
  5738.                                 DrawBitPatternPSET075 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5739.                         Case 76:
  5740.                                 DrawBitPatternPSET076 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5741.                         Case 77:
  5742.                                 DrawBitPatternPSET077 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5743.                         Case 78:
  5744.                                 DrawBitPatternPSET078 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5745.                         Case 79:
  5746.                                 DrawBitPatternPSET079 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5747.                         Case 80:
  5748.                                 DrawBitPatternPSET080 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5749.                         Case 81:
  5750.                                 DrawBitPatternPSET081 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5751.                         Case 82:
  5752.                                 DrawBitPatternPSET082 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5753.                         Case 83:
  5754.                                 DrawBitPatternPSET083 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5755.                         Case 84:
  5756.                                 DrawBitPatternPSET084 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5757.                         Case 85:
  5758.                                 DrawBitPatternPSET085 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5759.                         Case 86:
  5760.                                 DrawBitPatternPSET086 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5761.                         Case 87:
  5762.                                 DrawBitPatternPSET087 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5763.                         Case 88:
  5764.                                 DrawBitPatternPSET088 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5765.                         Case 89:
  5766.                                 DrawBitPatternPSET089 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5767.                         Case 90:
  5768.                                 DrawBitPatternPSET090 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5769.                         Case 91:
  5770.                                 DrawBitPatternPSET091 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5771.                         Case 92:
  5772.                                 DrawBitPatternPSET092 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5773.                         Case 93:
  5774.                                 DrawBitPatternPSET093 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5775.                         Case 94:
  5776.                                 DrawBitPatternPSET094 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5777.                         Case 95:
  5778.                                 DrawBitPatternPSET095 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5779.                         Case 96:
  5780.                                 DrawBitPatternPSET096 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5781.                         Case 97:
  5782.                                 DrawBitPatternPSET097 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5783.                         Case 98:
  5784.                                 DrawBitPatternPSET098 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5785.                         Case 99:
  5786.                                 DrawBitPatternPSET099 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5787.                         Case 100:
  5788.                                 DrawBitPatternPSET100 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5789.                         Case 101:
  5790.                                 DrawBitPatternPSET101 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5791.                         Case 102:
  5792.                                 DrawBitPatternPSET102 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5793.                         Case 103:
  5794.                                 DrawBitPatternPSET103 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5795.                         Case 104:
  5796.                                 DrawBitPatternPSET104 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5797.                         Case 105:
  5798.                                 DrawBitPatternPSET105 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5799.                         Case 106:
  5800.                                 DrawBitPatternPSET106 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5801.                         Case 107:
  5802.                                 DrawBitPatternPSET107 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5803.                         Case 108:
  5804.                                 DrawBitPatternPSET108 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5805.                         Case 109:
  5806.                                 DrawBitPatternPSET109 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5807.                         Case 110:
  5808.                                 DrawBitPatternPSET110 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5809.                         Case 111:
  5810.                                 DrawBitPatternPSET111 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5811.                         Case 112:
  5812.                                 DrawBitPatternPSET112 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5813.                         Case 113:
  5814.                                 DrawBitPatternPSET113 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5815.                         Case 114:
  5816.                                 DrawBitPatternPSET114 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5817.                         Case 115:
  5818.                                 DrawBitPatternPSET115 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5819.                         Case 116:
  5820.                                 DrawBitPatternPSET116 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5821.                         Case 117:
  5822.                                 DrawBitPatternPSET117 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5823.                         Case 118:
  5824.                                 DrawBitPatternPSET118 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5825.                         Case 119:
  5826.                                 DrawBitPatternPSET119 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5827.                         Case 120:
  5828.                                 DrawBitPatternPSET120 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5829.                         Case 121:
  5830.                                 DrawBitPatternPSET121 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5831.                         Case 122:
  5832.                                 DrawBitPatternPSET122 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5833.                         Case 123:
  5834.                                 DrawBitPatternPSET123 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5835.                         Case 124:
  5836.                                 DrawBitPatternPSET124 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5837.                         Case 125:
  5838.                                 DrawBitPatternPSET125 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5839.                         Case 126:
  5840.                                 DrawBitPatternPSET126 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5841.                         Case 127:
  5842.                                 DrawBitPatternPSET127 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5843.                         Case 128:
  5844.                                 DrawBitPatternPSET128 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5845.                         Case 129:
  5846.                                 DrawBitPatternPSET129 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5847.                         Case 130:
  5848.                                 DrawBitPatternPSET130 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5849.                         Case 131:
  5850.                                 DrawBitPatternPSET131 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5851.                         Case 132:
  5852.                                 DrawBitPatternPSET132 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5853.                         Case 133:
  5854.                                 DrawBitPatternPSET133 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5855.                         Case 134:
  5856.                                 DrawBitPatternPSET134 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5857.                         Case 135:
  5858.                                 DrawBitPatternPSET135 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5859.                         Case 136:
  5860.                                 DrawBitPatternPSET136 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5861.                         Case 137:
  5862.                                 DrawBitPatternPSET137 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5863.                         Case 138:
  5864.                                 DrawBitPatternPSET138 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5865.                         Case 139:
  5866.                                 DrawBitPatternPSET139 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5867.                         Case 140:
  5868.                                 DrawBitPatternPSET140 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5869.                         Case 141:
  5870.                                 DrawBitPatternPSET141 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5871.                         Case 142:
  5872.                                 DrawBitPatternPSET142 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5873.                         Case 143:
  5874.                                 DrawBitPatternPSET143 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5875.                         Case 144:
  5876.                                 DrawBitPatternPSET144 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5877.                         Case 145:
  5878.                                 DrawBitPatternPSET145 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5879.                         Case 146:
  5880.                                 DrawBitPatternPSET146 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5881.                         Case 147:
  5882.                                 DrawBitPatternPSET147 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5883.                         Case 148:
  5884.                                 DrawBitPatternPSET148 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5885.                         Case 149:
  5886.                                 DrawBitPatternPSET149 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5887.                         Case 150:
  5888.                                 DrawBitPatternPSET150 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5889.                         Case 151:
  5890.                                 DrawBitPatternPSET151 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5891.                         Case 152:
  5892.                                 DrawBitPatternPSET152 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5893.                         Case 153:
  5894.                                 DrawBitPatternPSET153 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5895.                         Case 154:
  5896.                                 DrawBitPatternPSET154 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5897.                         Case 155:
  5898.                                 DrawBitPatternPSET155 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5899.                         Case 156:
  5900.                                 DrawBitPatternPSET156 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5901.                         Case 157:
  5902.                                 DrawBitPatternPSET157 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5903.                         Case 158:
  5904.                                 DrawBitPatternPSET158 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5905.                         Case 159:
  5906.                                 DrawBitPatternPSET159 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5907.                         Case 160:
  5908.                                 DrawBitPatternPSET160 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5909.                         Case 161:
  5910.                                 DrawBitPatternPSET161 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5911.                         Case 162:
  5912.                                 DrawBitPatternPSET162 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5913.                         Case 163:
  5914.                                 DrawBitPatternPSET163 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5915.                         Case 164:
  5916.                                 DrawBitPatternPSET164 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5917.                         Case 165:
  5918.                                 DrawBitPatternPSET165 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5919.                         Case 166:
  5920.                                 DrawBitPatternPSET166 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5921.                         Case 167:
  5922.                                 DrawBitPatternPSET167 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5923.                         Case 168:
  5924.                                 DrawBitPatternPSET168 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5925.                         Case 169:
  5926.                                 DrawBitPatternPSET169 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5927.                         Case 170:
  5928.                                 DrawBitPatternPSET170 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5929.                         Case 171:
  5930.                                 DrawBitPatternPSET171 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5931.                         Case 172:
  5932.                                 DrawBitPatternPSET172 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5933.                         Case 173:
  5934.                                 DrawBitPatternPSET173 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5935.                         Case 174:
  5936.                                 DrawBitPatternPSET174 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5937.                         Case 175:
  5938.                                 DrawBitPatternPSET175 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5939.                         Case 176:
  5940.                                 DrawBitPatternPSET176 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5941.                         Case 177:
  5942.                                 DrawBitPatternPSET177 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5943.                         Case 178:
  5944.                                 DrawBitPatternPSET178 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5945.                         Case 179:
  5946.                                 DrawBitPatternPSET179 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5947.                         Case 180:
  5948.                                 DrawBitPatternPSET180 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5949.                         Case 181:
  5950.                                 DrawBitPatternPSET181 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5951.                         Case 182:
  5952.                                 DrawBitPatternPSET182 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5953.                         Case 183:
  5954.                                 DrawBitPatternPSET183 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5955.                         Case 184:
  5956.                                 DrawBitPatternPSET184 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5957.                         Case 185:
  5958.                                 DrawBitPatternPSET185 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5959.                         Case 186:
  5960.                                 DrawBitPatternPSET186 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5961.                         Case 187:
  5962.                                 DrawBitPatternPSET187 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5963.                         Case 188:
  5964.                                 DrawBitPatternPSET188 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5965.                         Case 189:
  5966.                                 DrawBitPatternPSET189 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5967.                         Case 190:
  5968.                                 DrawBitPatternPSET190 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5969.                         Case 191:
  5970.                                 DrawBitPatternPSET191 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5971.                         Case 192:
  5972.                                 DrawBitPatternPSET192 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5973.                         Case 193:
  5974.                                 DrawBitPatternPSET193 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5975.                         Case 194:
  5976.                                 DrawBitPatternPSET194 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5977.                         Case 195:
  5978.                                 DrawBitPatternPSET195 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5979.                         Case 196:
  5980.                                 DrawBitPatternPSET196 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5981.                         Case 197:
  5982.                                 DrawBitPatternPSET197 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5983.                         Case 198:
  5984.                                 DrawBitPatternPSET198 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5985.                         Case 199:
  5986.                                 DrawBitPatternPSET199 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5987.                         Case 200:
  5988.                                 DrawBitPatternPSET200 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5989.                         Case 201:
  5990.                                 DrawBitPatternPSET201 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5991.                         Case 202:
  5992.                                 DrawBitPatternPSET202 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5993.                         Case 203:
  5994.                                 DrawBitPatternPSET203 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5995.                         Case 204:
  5996.                                 DrawBitPatternPSET204 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5997.                         Case 205:
  5998.                                 DrawBitPatternPSET205 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  5999.                         Case 206:
  6000.                                 DrawBitPatternPSET206 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6001.                         Case 207:
  6002.                                 DrawBitPatternPSET207 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6003.                         Case 208:
  6004.                                 DrawBitPatternPSET208 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6005.                         Case 209:
  6006.                                 DrawBitPatternPSET209 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6007.                         Case 210:
  6008.                                 DrawBitPatternPSET210 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6009.                         Case 211:
  6010.                                 DrawBitPatternPSET211 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6011.                         Case 212:
  6012.                                 DrawBitPatternPSET212 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6013.                         Case 213:
  6014.                                 DrawBitPatternPSET213 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6015.                         Case 214:
  6016.                                 DrawBitPatternPSET214 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6017.                         Case 215:
  6018.                                 DrawBitPatternPSET215 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6019.                         Case 216:
  6020.                                 DrawBitPatternPSET216 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6021.                         Case 217:
  6022.                                 DrawBitPatternPSET217 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6023.                         Case 218:
  6024.                                 DrawBitPatternPSET218 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6025.                         Case 219:
  6026.                                 DrawBitPatternPSET219 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6027.                         Case 220:
  6028.                                 DrawBitPatternPSET220 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6029.                         Case 221:
  6030.                                 DrawBitPatternPSET221 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6031.                         Case 222:
  6032.                                 DrawBitPatternPSET222 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6033.                         Case 223:
  6034.                                 DrawBitPatternPSET223 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6035.                         Case 224:
  6036.                                 DrawBitPatternPSET224 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6037.                         Case 225:
  6038.                                 DrawBitPatternPSET225 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6039.                         Case 226:
  6040.                                 DrawBitPatternPSET226 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6041.                         Case 227:
  6042.                                 DrawBitPatternPSET227 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6043.                         Case 228:
  6044.                                 DrawBitPatternPSET228 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6045.                         Case 229:
  6046.                                 DrawBitPatternPSET229 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6047.                         Case 230:
  6048.                                 DrawBitPatternPSET230 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6049.                         Case 231:
  6050.                                 DrawBitPatternPSET231 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6051.                         Case 232:
  6052.                                 DrawBitPatternPSET232 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6053.                         Case 233:
  6054.                                 DrawBitPatternPSET233 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6055.                         Case 234:
  6056.                                 DrawBitPatternPSET234 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6057.                         Case 235:
  6058.                                 DrawBitPatternPSET235 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6059.                         Case 236:
  6060.                                 DrawBitPatternPSET236 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6061.                         Case 237:
  6062.                                 DrawBitPatternPSET237 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6063.                         Case 238:
  6064.                                 DrawBitPatternPSET238 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6065.                         Case 239:
  6066.                                 DrawBitPatternPSET239 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6067.                         Case 240:
  6068.                                 DrawBitPatternPSET240 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6069.                         Case 241:
  6070.                                 DrawBitPatternPSET241 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6071.                         Case 242:
  6072.                                 DrawBitPatternPSET242 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6073.                         Case 243:
  6074.                                 DrawBitPatternPSET243 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6075.                         Case 244:
  6076.                                 DrawBitPatternPSET244 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6077.                         Case 245:
  6078.                                 DrawBitPatternPSET245 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6079.                         Case 246:
  6080.                                 DrawBitPatternPSET246 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6081.                         Case 247:
  6082.                                 DrawBitPatternPSET247 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6083.                         Case 248:
  6084.                                 DrawBitPatternPSET248 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6085.                         Case 249:
  6086.                                 DrawBitPatternPSET249 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6087.                         Case 250:
  6088.                                 DrawBitPatternPSET250 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6089.                         Case 251:
  6090.                                 DrawBitPatternPSET251 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6091.                         Case 252:
  6092.                                 DrawBitPatternPSET252 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6093.                         Case 253:
  6094.                                 DrawBitPatternPSET253 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6095.                         Case 254:
  6096.                                 DrawBitPatternPSET254 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6097.                         Case 255:
  6098.                                 DrawBitPatternPSET255 imgScreen&, iCol, iRow, iByte, fgColor, bgColor
  6099.                 End Select
  6100.         next iByte
  6101. End Sub ' DrawTileBitPattern8PSET
  6102.  
  6103. Sub DrawBitPatternPSET000(  _
  6104.     imgScreen&, iCol As Integer, iRow As Integer, _
  6105.     iLine As Integer, _
  6106.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6107.     )
  6108.     Dim iX As Integer : iX = iCol * 8
  6109.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6110.     PSET (iX+7, iY), bgColor
  6111.     PSET (iX+6, iY), bgColor
  6112.     PSET (iX+5, iY), bgColor
  6113.     PSET (iX+4, iY), bgColor
  6114.     PSET (iX+3, iY), bgColor
  6115.     PSET (iX+2, iY), bgColor
  6116.     PSET (iX+1, iY), bgColor
  6117.     PSET (iX+0, iY), bgColor
  6118. End Sub ' DrawBitPatternPSET000
  6119.  
  6120. Sub DrawBitPatternPSET001(  _
  6121.     imgScreen&, iCol As Integer, iRow As Integer, _
  6122.     iLine As Integer, _
  6123.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6124.     )
  6125.     Dim iX As Integer : iX = iCol * 8
  6126.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6127.     PSET (iX+7, iY), bgColor
  6128.     PSET (iX+6, iY), bgColor
  6129.     PSET (iX+5, iY), bgColor
  6130.     PSET (iX+4, iY), bgColor
  6131.     PSET (iX+3, iY), bgColor
  6132.     PSET (iX+2, iY), bgColor
  6133.     PSET (iX+1, iY), bgColor
  6134.     PSET (iX+0, iY), fgColor
  6135. End Sub ' DrawBitPatternPSET001
  6136.  
  6137. Sub DrawBitPatternPSET002(  _
  6138.     imgScreen&, iCol As Integer, iRow As Integer, _
  6139.     iLine As Integer, _
  6140.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6141.     )
  6142.     Dim iX As Integer : iX = iCol * 8
  6143.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6144.     PSET (iX+7, iY), bgColor
  6145.     PSET (iX+6, iY), bgColor
  6146.     PSET (iX+5, iY), bgColor
  6147.     PSET (iX+4, iY), bgColor
  6148.     PSET (iX+3, iY), bgColor
  6149.     PSET (iX+2, iY), bgColor
  6150.     PSET (iX+1, iY), fgColor
  6151.     PSET (iX+0, iY), bgColor
  6152. End Sub ' DrawBitPatternPSET002
  6153.  
  6154. Sub DrawBitPatternPSET003(  _
  6155.     imgScreen&, iCol As Integer, iRow As Integer, _
  6156.     iLine As Integer, _
  6157.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6158.     )
  6159.     Dim iX As Integer : iX = iCol * 8
  6160.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6161.     PSET (iX+7, iY), bgColor
  6162.     PSET (iX+6, iY), bgColor
  6163.     PSET (iX+5, iY), bgColor
  6164.     PSET (iX+4, iY), bgColor
  6165.     PSET (iX+3, iY), bgColor
  6166.     PSET (iX+2, iY), bgColor
  6167.     PSET (iX+1, iY), fgColor
  6168.     PSET (iX+0, iY), fgColor
  6169. End Sub ' DrawBitPatternPSET003
  6170.  
  6171. Sub DrawBitPatternPSET004(  _
  6172.     imgScreen&, iCol As Integer, iRow As Integer, _
  6173.     iLine As Integer, _
  6174.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6175.     )
  6176.     Dim iX As Integer : iX = iCol * 8
  6177.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6178.     PSET (iX+7, iY), bgColor
  6179.     PSET (iX+6, iY), bgColor
  6180.     PSET (iX+5, iY), bgColor
  6181.     PSET (iX+4, iY), bgColor
  6182.     PSET (iX+3, iY), bgColor
  6183.     PSET (iX+2, iY), fgColor
  6184.     PSET (iX+1, iY), bgColor
  6185.     PSET (iX+0, iY), bgColor
  6186. End Sub ' DrawBitPatternPSET004
  6187.  
  6188. Sub DrawBitPatternPSET005(  _
  6189.     imgScreen&, iCol As Integer, iRow As Integer, _
  6190.     iLine As Integer, _
  6191.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6192.     )
  6193.     Dim iX As Integer : iX = iCol * 8
  6194.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6195.     PSET (iX+7, iY), bgColor
  6196.     PSET (iX+6, iY), bgColor
  6197.     PSET (iX+5, iY), bgColor
  6198.     PSET (iX+4, iY), bgColor
  6199.     PSET (iX+3, iY), bgColor
  6200.     PSET (iX+2, iY), fgColor
  6201.     PSET (iX+1, iY), bgColor
  6202.     PSET (iX+0, iY), fgColor
  6203. End Sub ' DrawBitPatternPSET005
  6204.  
  6205. Sub DrawBitPatternPSET006(  _
  6206.     imgScreen&, iCol As Integer, iRow As Integer, _
  6207.     iLine As Integer, _
  6208.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6209.     )
  6210.     Dim iX As Integer : iX = iCol * 8
  6211.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6212.     PSET (iX+7, iY), bgColor
  6213.     PSET (iX+6, iY), bgColor
  6214.     PSET (iX+5, iY), bgColor
  6215.     PSET (iX+4, iY), bgColor
  6216.     PSET (iX+3, iY), bgColor
  6217.     PSET (iX+2, iY), fgColor
  6218.     PSET (iX+1, iY), fgColor
  6219.     PSET (iX+0, iY), bgColor
  6220. End Sub ' DrawBitPatternPSET006
  6221.  
  6222. Sub DrawBitPatternPSET007(  _
  6223.     imgScreen&, iCol As Integer, iRow As Integer, _
  6224.     iLine As Integer, _
  6225.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6226.     )
  6227.     Dim iX As Integer : iX = iCol * 8
  6228.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6229.     PSET (iX+7, iY), bgColor
  6230.     PSET (iX+6, iY), bgColor
  6231.     PSET (iX+5, iY), bgColor
  6232.     PSET (iX+4, iY), bgColor
  6233.     PSET (iX+3, iY), bgColor
  6234.     PSET (iX+2, iY), fgColor
  6235.     PSET (iX+1, iY), fgColor
  6236.     PSET (iX+0, iY), fgColor
  6237. End Sub ' DrawBitPatternPSET007
  6238.  
  6239. Sub DrawBitPatternPSET008(  _
  6240.     imgScreen&, iCol As Integer, iRow As Integer, _
  6241.     iLine As Integer, _
  6242.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6243.     )
  6244.     Dim iX As Integer : iX = iCol * 8
  6245.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6246.     PSET (iX+7, iY), bgColor
  6247.     PSET (iX+6, iY), bgColor
  6248.     PSET (iX+5, iY), bgColor
  6249.     PSET (iX+4, iY), bgColor
  6250.     PSET (iX+3, iY), fgColor
  6251.     PSET (iX+2, iY), bgColor
  6252.     PSET (iX+1, iY), bgColor
  6253.     PSET (iX+0, iY), bgColor
  6254. End Sub ' DrawBitPatternPSET008
  6255.  
  6256. Sub DrawBitPatternPSET009(  _
  6257.     imgScreen&, iCol As Integer, iRow As Integer, _
  6258.     iLine As Integer, _
  6259.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6260.     )
  6261.     Dim iX As Integer : iX = iCol * 8
  6262.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6263.     PSET (iX+7, iY), bgColor
  6264.     PSET (iX+6, iY), bgColor
  6265.     PSET (iX+5, iY), bgColor
  6266.     PSET (iX+4, iY), bgColor
  6267.     PSET (iX+3, iY), fgColor
  6268.     PSET (iX+2, iY), bgColor
  6269.     PSET (iX+1, iY), bgColor
  6270.     PSET (iX+0, iY), fgColor
  6271. End Sub ' DrawBitPatternPSET009
  6272.  
  6273. Sub DrawBitPatternPSET010(  _
  6274.     imgScreen&, iCol As Integer, iRow As Integer, _
  6275.     iLine As Integer, _
  6276.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6277.     )
  6278.     Dim iX As Integer : iX = iCol * 8
  6279.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6280.     PSET (iX+7, iY), bgColor
  6281.     PSET (iX+6, iY), bgColor
  6282.     PSET (iX+5, iY), bgColor
  6283.     PSET (iX+4, iY), bgColor
  6284.     PSET (iX+3, iY), fgColor
  6285.     PSET (iX+2, iY), bgColor
  6286.     PSET (iX+1, iY), fgColor
  6287.     PSET (iX+0, iY), bgColor
  6288. End Sub ' DrawBitPatternPSET010
  6289.  
  6290. Sub DrawBitPatternPSET011(  _
  6291.     imgScreen&, iCol As Integer, iRow As Integer, _
  6292.     iLine As Integer, _
  6293.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6294.     )
  6295.     Dim iX As Integer : iX = iCol * 8
  6296.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6297.     PSET (iX+7, iY), bgColor
  6298.     PSET (iX+6, iY), bgColor
  6299.     PSET (iX+5, iY), bgColor
  6300.     PSET (iX+4, iY), bgColor
  6301.     PSET (iX+3, iY), fgColor
  6302.     PSET (iX+2, iY), bgColor
  6303.     PSET (iX+1, iY), fgColor
  6304.     PSET (iX+0, iY), fgColor
  6305. End Sub ' DrawBitPatternPSET011
  6306.  
  6307. Sub DrawBitPatternPSET012(  _
  6308.     imgScreen&, iCol As Integer, iRow As Integer, _
  6309.     iLine As Integer, _
  6310.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6311.     )
  6312.     Dim iX As Integer : iX = iCol * 8
  6313.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6314.     PSET (iX+7, iY), bgColor
  6315.     PSET (iX+6, iY), bgColor
  6316.     PSET (iX+5, iY), bgColor
  6317.     PSET (iX+4, iY), bgColor
  6318.     PSET (iX+3, iY), fgColor
  6319.     PSET (iX+2, iY), fgColor
  6320.     PSET (iX+1, iY), bgColor
  6321.     PSET (iX+0, iY), bgColor
  6322. End Sub ' DrawBitPatternPSET012
  6323.  
  6324. Sub DrawBitPatternPSET013(  _
  6325.     imgScreen&, iCol As Integer, iRow As Integer, _
  6326.     iLine As Integer, _
  6327.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6328.     )
  6329.     Dim iX As Integer : iX = iCol * 8
  6330.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6331.     PSET (iX+7, iY), bgColor
  6332.     PSET (iX+6, iY), bgColor
  6333.     PSET (iX+5, iY), bgColor
  6334.     PSET (iX+4, iY), bgColor
  6335.     PSET (iX+3, iY), fgColor
  6336.     PSET (iX+2, iY), fgColor
  6337.     PSET (iX+1, iY), bgColor
  6338.     PSET (iX+0, iY), fgColor
  6339. End Sub ' DrawBitPatternPSET013
  6340.  
  6341. Sub DrawBitPatternPSET014(  _
  6342.     imgScreen&, iCol As Integer, iRow As Integer, _
  6343.     iLine As Integer, _
  6344.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6345.     )
  6346.     Dim iX As Integer : iX = iCol * 8
  6347.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6348.     PSET (iX+7, iY), bgColor
  6349.     PSET (iX+6, iY), bgColor
  6350.     PSET (iX+5, iY), bgColor
  6351.     PSET (iX+4, iY), bgColor
  6352.     PSET (iX+3, iY), fgColor
  6353.     PSET (iX+2, iY), fgColor
  6354.     PSET (iX+1, iY), fgColor
  6355.     PSET (iX+0, iY), bgColor
  6356. End Sub ' DrawBitPatternPSET014
  6357.  
  6358. Sub DrawBitPatternPSET015(  _
  6359.     imgScreen&, iCol As Integer, iRow As Integer, _
  6360.     iLine As Integer, _
  6361.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6362.     )
  6363.     Dim iX As Integer : iX = iCol * 8
  6364.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6365.     PSET (iX+7, iY), bgColor
  6366.     PSET (iX+6, iY), bgColor
  6367.     PSET (iX+5, iY), bgColor
  6368.     PSET (iX+4, iY), bgColor
  6369.     PSET (iX+3, iY), fgColor
  6370.     PSET (iX+2, iY), fgColor
  6371.     PSET (iX+1, iY), fgColor
  6372.     PSET (iX+0, iY), fgColor
  6373. End Sub ' DrawBitPatternPSET015
  6374.  
  6375. Sub DrawBitPatternPSET016(  _
  6376.     imgScreen&, iCol As Integer, iRow As Integer, _
  6377.     iLine As Integer, _
  6378.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6379.     )
  6380.     Dim iX As Integer : iX = iCol * 8
  6381.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6382.     PSET (iX+7, iY), bgColor
  6383.     PSET (iX+6, iY), bgColor
  6384.     PSET (iX+5, iY), bgColor
  6385.     PSET (iX+4, iY), fgColor
  6386.     PSET (iX+3, iY), bgColor
  6387.     PSET (iX+2, iY), bgColor
  6388.     PSET (iX+1, iY), bgColor
  6389.     PSET (iX+0, iY), bgColor
  6390. End Sub ' DrawBitPatternPSET016
  6391.  
  6392. Sub DrawBitPatternPSET017(  _
  6393.     imgScreen&, iCol As Integer, iRow As Integer, _
  6394.     iLine As Integer, _
  6395.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6396.     )
  6397.     Dim iX As Integer : iX = iCol * 8
  6398.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6399.     PSET (iX+7, iY), bgColor
  6400.     PSET (iX+6, iY), bgColor
  6401.     PSET (iX+5, iY), bgColor
  6402.     PSET (iX+4, iY), fgColor
  6403.     PSET (iX+3, iY), bgColor
  6404.     PSET (iX+2, iY), bgColor
  6405.     PSET (iX+1, iY), bgColor
  6406.     PSET (iX+0, iY), fgColor
  6407. End Sub ' DrawBitPatternPSET017
  6408.  
  6409. Sub DrawBitPatternPSET018(  _
  6410.     imgScreen&, iCol As Integer, iRow As Integer, _
  6411.     iLine As Integer, _
  6412.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6413.     )
  6414.     Dim iX As Integer : iX = iCol * 8
  6415.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6416.     PSET (iX+7, iY), bgColor
  6417.     PSET (iX+6, iY), bgColor
  6418.     PSET (iX+5, iY), bgColor
  6419.     PSET (iX+4, iY), fgColor
  6420.     PSET (iX+3, iY), bgColor
  6421.     PSET (iX+2, iY), bgColor
  6422.     PSET (iX+1, iY), fgColor
  6423.     PSET (iX+0, iY), bgColor
  6424. End Sub ' DrawBitPatternPSET018
  6425.  
  6426. Sub DrawBitPatternPSET019(  _
  6427.     imgScreen&, iCol As Integer, iRow As Integer, _
  6428.     iLine As Integer, _
  6429.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6430.     )
  6431.     Dim iX As Integer : iX = iCol * 8
  6432.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6433.     PSET (iX+7, iY), bgColor
  6434.     PSET (iX+6, iY), bgColor
  6435.     PSET (iX+5, iY), bgColor
  6436.     PSET (iX+4, iY), fgColor
  6437.     PSET (iX+3, iY), bgColor
  6438.     PSET (iX+2, iY), bgColor
  6439.     PSET (iX+1, iY), fgColor
  6440.     PSET (iX+0, iY), fgColor
  6441. End Sub ' DrawBitPatternPSET019
  6442.  
  6443. Sub DrawBitPatternPSET020(  _
  6444.     imgScreen&, iCol As Integer, iRow As Integer, _
  6445.     iLine As Integer, _
  6446.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6447.     )
  6448.     Dim iX As Integer : iX = iCol * 8
  6449.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6450.     PSET (iX+7, iY), bgColor
  6451.     PSET (iX+6, iY), bgColor
  6452.     PSET (iX+5, iY), bgColor
  6453.     PSET (iX+4, iY), fgColor
  6454.     PSET (iX+3, iY), bgColor
  6455.     PSET (iX+2, iY), fgColor
  6456.     PSET (iX+1, iY), bgColor
  6457.     PSET (iX+0, iY), bgColor
  6458. End Sub ' DrawBitPatternPSET020
  6459.  
  6460. Sub DrawBitPatternPSET021(  _
  6461.     imgScreen&, iCol As Integer, iRow As Integer, _
  6462.     iLine As Integer, _
  6463.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6464.     )
  6465.     Dim iX As Integer : iX = iCol * 8
  6466.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6467.     PSET (iX+7, iY), bgColor
  6468.     PSET (iX+6, iY), bgColor
  6469.     PSET (iX+5, iY), bgColor
  6470.     PSET (iX+4, iY), fgColor
  6471.     PSET (iX+3, iY), bgColor
  6472.     PSET (iX+2, iY), fgColor
  6473.     PSET (iX+1, iY), bgColor
  6474.     PSET (iX+0, iY), fgColor
  6475. End Sub ' DrawBitPatternPSET021
  6476.  
  6477. Sub DrawBitPatternPSET022(  _
  6478.     imgScreen&, iCol As Integer, iRow As Integer, _
  6479.     iLine As Integer, _
  6480.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6481.     )
  6482.     Dim iX As Integer : iX = iCol * 8
  6483.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6484.     PSET (iX+7, iY), bgColor
  6485.     PSET (iX+6, iY), bgColor
  6486.     PSET (iX+5, iY), bgColor
  6487.     PSET (iX+4, iY), fgColor
  6488.     PSET (iX+3, iY), bgColor
  6489.     PSET (iX+2, iY), fgColor
  6490.     PSET (iX+1, iY), fgColor
  6491.     PSET (iX+0, iY), bgColor
  6492. End Sub ' DrawBitPatternPSET022
  6493.  
  6494. Sub DrawBitPatternPSET023(  _
  6495.     imgScreen&, iCol As Integer, iRow As Integer, _
  6496.     iLine As Integer, _
  6497.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6498.     )
  6499.     Dim iX As Integer : iX = iCol * 8
  6500.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6501.     PSET (iX+7, iY), bgColor
  6502.     PSET (iX+6, iY), bgColor
  6503.     PSET (iX+5, iY), bgColor
  6504.     PSET (iX+4, iY), fgColor
  6505.     PSET (iX+3, iY), bgColor
  6506.     PSET (iX+2, iY), fgColor
  6507.     PSET (iX+1, iY), fgColor
  6508.     PSET (iX+0, iY), fgColor
  6509. End Sub ' DrawBitPatternPSET023
  6510.  
  6511. Sub DrawBitPatternPSET024(  _
  6512.     imgScreen&, iCol As Integer, iRow As Integer, _
  6513.     iLine As Integer, _
  6514.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6515.     )
  6516.     Dim iX As Integer : iX = iCol * 8
  6517.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6518.     PSET (iX+7, iY), bgColor
  6519.     PSET (iX+6, iY), bgColor
  6520.     PSET (iX+5, iY), bgColor
  6521.     PSET (iX+4, iY), fgColor
  6522.     PSET (iX+3, iY), fgColor
  6523.     PSET (iX+2, iY), bgColor
  6524.     PSET (iX+1, iY), bgColor
  6525.     PSET (iX+0, iY), bgColor
  6526. End Sub ' DrawBitPatternPSET024
  6527.  
  6528. Sub DrawBitPatternPSET025(  _
  6529.     imgScreen&, iCol As Integer, iRow As Integer, _
  6530.     iLine As Integer, _
  6531.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6532.     )
  6533.     Dim iX As Integer : iX = iCol * 8
  6534.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6535.     PSET (iX+7, iY), bgColor
  6536.     PSET (iX+6, iY), bgColor
  6537.     PSET (iX+5, iY), bgColor
  6538.     PSET (iX+4, iY), fgColor
  6539.     PSET (iX+3, iY), fgColor
  6540.     PSET (iX+2, iY), bgColor
  6541.     PSET (iX+1, iY), bgColor
  6542.     PSET (iX+0, iY), fgColor
  6543. End Sub ' DrawBitPatternPSET025
  6544.  
  6545. Sub DrawBitPatternPSET026(  _
  6546.     imgScreen&, iCol As Integer, iRow As Integer, _
  6547.     iLine As Integer, _
  6548.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6549.     )
  6550.     Dim iX As Integer : iX = iCol * 8
  6551.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6552.     PSET (iX+7, iY), bgColor
  6553.     PSET (iX+6, iY), bgColor
  6554.     PSET (iX+5, iY), bgColor
  6555.     PSET (iX+4, iY), fgColor
  6556.     PSET (iX+3, iY), fgColor
  6557.     PSET (iX+2, iY), bgColor
  6558.     PSET (iX+1, iY), fgColor
  6559.     PSET (iX+0, iY), bgColor
  6560. End Sub ' DrawBitPatternPSET026
  6561.  
  6562. Sub DrawBitPatternPSET027(  _
  6563.     imgScreen&, iCol As Integer, iRow As Integer, _
  6564.     iLine As Integer, _
  6565.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6566.     )
  6567.     Dim iX As Integer : iX = iCol * 8
  6568.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6569.     PSET (iX+7, iY), bgColor
  6570.     PSET (iX+6, iY), bgColor
  6571.     PSET (iX+5, iY), bgColor
  6572.     PSET (iX+4, iY), fgColor
  6573.     PSET (iX+3, iY), fgColor
  6574.     PSET (iX+2, iY), bgColor
  6575.     PSET (iX+1, iY), fgColor
  6576.     PSET (iX+0, iY), fgColor
  6577. End Sub ' DrawBitPatternPSET027
  6578.  
  6579. Sub DrawBitPatternPSET028(  _
  6580.     imgScreen&, iCol As Integer, iRow As Integer, _
  6581.     iLine As Integer, _
  6582.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6583.     )
  6584.     Dim iX As Integer : iX = iCol * 8
  6585.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6586.     PSET (iX+7, iY), bgColor
  6587.     PSET (iX+6, iY), bgColor
  6588.     PSET (iX+5, iY), bgColor
  6589.     PSET (iX+4, iY), fgColor
  6590.     PSET (iX+3, iY), fgColor
  6591.     PSET (iX+2, iY), fgColor
  6592.     PSET (iX+1, iY), bgColor
  6593.     PSET (iX+0, iY), bgColor
  6594. End Sub ' DrawBitPatternPSET028
  6595.  
  6596. Sub DrawBitPatternPSET029(  _
  6597.     imgScreen&, iCol As Integer, iRow As Integer, _
  6598.     iLine As Integer, _
  6599.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6600.     )
  6601.     Dim iX As Integer : iX = iCol * 8
  6602.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6603.     PSET (iX+7, iY), bgColor
  6604.     PSET (iX+6, iY), bgColor
  6605.     PSET (iX+5, iY), bgColor
  6606.     PSET (iX+4, iY), fgColor
  6607.     PSET (iX+3, iY), fgColor
  6608.     PSET (iX+2, iY), fgColor
  6609.     PSET (iX+1, iY), bgColor
  6610.     PSET (iX+0, iY), fgColor
  6611. End Sub ' DrawBitPatternPSET029
  6612.  
  6613. Sub DrawBitPatternPSET030(  _
  6614.     imgScreen&, iCol As Integer, iRow As Integer, _
  6615.     iLine As Integer, _
  6616.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6617.     )
  6618.     Dim iX As Integer : iX = iCol * 8
  6619.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6620.     PSET (iX+7, iY), bgColor
  6621.     PSET (iX+6, iY), bgColor
  6622.     PSET (iX+5, iY), bgColor
  6623.     PSET (iX+4, iY), fgColor
  6624.     PSET (iX+3, iY), fgColor
  6625.     PSET (iX+2, iY), fgColor
  6626.     PSET (iX+1, iY), fgColor
  6627.     PSET (iX+0, iY), bgColor
  6628. End Sub ' DrawBitPatternPSET030
  6629.  
  6630. Sub DrawBitPatternPSET031(  _
  6631.     imgScreen&, iCol As Integer, iRow As Integer, _
  6632.     iLine As Integer, _
  6633.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6634.     )
  6635.     Dim iX As Integer : iX = iCol * 8
  6636.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6637.     PSET (iX+7, iY), bgColor
  6638.     PSET (iX+6, iY), bgColor
  6639.     PSET (iX+5, iY), bgColor
  6640.     PSET (iX+4, iY), fgColor
  6641.     PSET (iX+3, iY), fgColor
  6642.     PSET (iX+2, iY), fgColor
  6643.     PSET (iX+1, iY), fgColor
  6644.     PSET (iX+0, iY), fgColor
  6645. End Sub ' DrawBitPatternPSET031
  6646.  
  6647. Sub DrawBitPatternPSET032(  _
  6648.     imgScreen&, iCol As Integer, iRow As Integer, _
  6649.     iLine As Integer, _
  6650.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6651.     )
  6652.     Dim iX As Integer : iX = iCol * 8
  6653.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6654.     PSET (iX+7, iY), bgColor
  6655.     PSET (iX+6, iY), bgColor
  6656.     PSET (iX+5, iY), fgColor
  6657.     PSET (iX+4, iY), bgColor
  6658.     PSET (iX+3, iY), bgColor
  6659.     PSET (iX+2, iY), bgColor
  6660.     PSET (iX+1, iY), bgColor
  6661.     PSET (iX+0, iY), bgColor
  6662. End Sub ' DrawBitPatternPSET032
  6663.  
  6664. Sub DrawBitPatternPSET033(  _
  6665.     imgScreen&, iCol As Integer, iRow As Integer, _
  6666.     iLine As Integer, _
  6667.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6668.     )
  6669.     Dim iX As Integer : iX = iCol * 8
  6670.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6671.     PSET (iX+7, iY), bgColor
  6672.     PSET (iX+6, iY), bgColor
  6673.     PSET (iX+5, iY), fgColor
  6674.     PSET (iX+4, iY), bgColor
  6675.     PSET (iX+3, iY), bgColor
  6676.     PSET (iX+2, iY), bgColor
  6677.     PSET (iX+1, iY), bgColor
  6678.     PSET (iX+0, iY), fgColor
  6679. End Sub ' DrawBitPatternPSET033
  6680.  
  6681. Sub DrawBitPatternPSET034(  _
  6682.     imgScreen&, iCol As Integer, iRow As Integer, _
  6683.     iLine As Integer, _
  6684.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6685.     )
  6686.     Dim iX As Integer : iX = iCol * 8
  6687.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6688.     PSET (iX+7, iY), bgColor
  6689.     PSET (iX+6, iY), bgColor
  6690.     PSET (iX+5, iY), fgColor
  6691.     PSET (iX+4, iY), bgColor
  6692.     PSET (iX+3, iY), bgColor
  6693.     PSET (iX+2, iY), bgColor
  6694.     PSET (iX+1, iY), fgColor
  6695.     PSET (iX+0, iY), bgColor
  6696. End Sub ' DrawBitPatternPSET034
  6697.  
  6698. Sub DrawBitPatternPSET035(  _
  6699.     imgScreen&, iCol As Integer, iRow As Integer, _
  6700.     iLine As Integer, _
  6701.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6702.     )
  6703.     Dim iX As Integer : iX = iCol * 8
  6704.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6705.     PSET (iX+7, iY), bgColor
  6706.     PSET (iX+6, iY), bgColor
  6707.     PSET (iX+5, iY), fgColor
  6708.     PSET (iX+4, iY), bgColor
  6709.     PSET (iX+3, iY), bgColor
  6710.     PSET (iX+2, iY), bgColor
  6711.     PSET (iX+1, iY), fgColor
  6712.     PSET (iX+0, iY), fgColor
  6713. End Sub ' DrawBitPatternPSET035
  6714.  
  6715. Sub DrawBitPatternPSET036(  _
  6716.     imgScreen&, iCol As Integer, iRow As Integer, _
  6717.     iLine As Integer, _
  6718.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6719.     )
  6720.     Dim iX As Integer : iX = iCol * 8
  6721.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6722.     PSET (iX+7, iY), bgColor
  6723.     PSET (iX+6, iY), bgColor
  6724.     PSET (iX+5, iY), fgColor
  6725.     PSET (iX+4, iY), bgColor
  6726.     PSET (iX+3, iY), bgColor
  6727.     PSET (iX+2, iY), fgColor
  6728.     PSET (iX+1, iY), bgColor
  6729.     PSET (iX+0, iY), bgColor
  6730. End Sub ' DrawBitPatternPSET036
  6731.  
  6732. Sub DrawBitPatternPSET037(  _
  6733.     imgScreen&, iCol As Integer, iRow As Integer, _
  6734.     iLine As Integer, _
  6735.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6736.     )
  6737.     Dim iX As Integer : iX = iCol * 8
  6738.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6739.     PSET (iX+7, iY), bgColor
  6740.     PSET (iX+6, iY), bgColor
  6741.     PSET (iX+5, iY), fgColor
  6742.     PSET (iX+4, iY), bgColor
  6743.     PSET (iX+3, iY), bgColor
  6744.     PSET (iX+2, iY), fgColor
  6745.     PSET (iX+1, iY), bgColor
  6746.     PSET (iX+0, iY), fgColor
  6747. End Sub ' DrawBitPatternPSET037
  6748.  
  6749. Sub DrawBitPatternPSET038(  _
  6750.     imgScreen&, iCol As Integer, iRow As Integer, _
  6751.     iLine As Integer, _
  6752.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6753.     )
  6754.     Dim iX As Integer : iX = iCol * 8
  6755.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6756.     PSET (iX+7, iY), bgColor
  6757.     PSET (iX+6, iY), bgColor
  6758.     PSET (iX+5, iY), fgColor
  6759.     PSET (iX+4, iY), bgColor
  6760.     PSET (iX+3, iY), bgColor
  6761.     PSET (iX+2, iY), fgColor
  6762.     PSET (iX+1, iY), fgColor
  6763.     PSET (iX+0, iY), bgColor
  6764. End Sub ' DrawBitPatternPSET038
  6765.  
  6766. Sub DrawBitPatternPSET039(  _
  6767.     imgScreen&, iCol As Integer, iRow As Integer, _
  6768.     iLine As Integer, _
  6769.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6770.     )
  6771.     Dim iX As Integer : iX = iCol * 8
  6772.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6773.     PSET (iX+7, iY), bgColor
  6774.     PSET (iX+6, iY), bgColor
  6775.     PSET (iX+5, iY), fgColor
  6776.     PSET (iX+4, iY), bgColor
  6777.     PSET (iX+3, iY), bgColor
  6778.     PSET (iX+2, iY), fgColor
  6779.     PSET (iX+1, iY), fgColor
  6780.     PSET (iX+0, iY), fgColor
  6781. End Sub ' DrawBitPatternPSET039
  6782.  
  6783. Sub DrawBitPatternPSET040(  _
  6784.     imgScreen&, iCol As Integer, iRow As Integer, _
  6785.     iLine As Integer, _
  6786.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6787.     )
  6788.     Dim iX As Integer : iX = iCol * 8
  6789.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6790.     PSET (iX+7, iY), bgColor
  6791.     PSET (iX+6, iY), bgColor
  6792.     PSET (iX+5, iY), fgColor
  6793.     PSET (iX+4, iY), bgColor
  6794.     PSET (iX+3, iY), fgColor
  6795.     PSET (iX+2, iY), bgColor
  6796.     PSET (iX+1, iY), bgColor
  6797.     PSET (iX+0, iY), bgColor
  6798. End Sub ' DrawBitPatternPSET040
  6799.  
  6800. Sub DrawBitPatternPSET041(  _
  6801.     imgScreen&, iCol As Integer, iRow As Integer, _
  6802.     iLine As Integer, _
  6803.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6804.     )
  6805.     Dim iX As Integer : iX = iCol * 8
  6806.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6807.     PSET (iX+7, iY), bgColor
  6808.     PSET (iX+6, iY), bgColor
  6809.     PSET (iX+5, iY), fgColor
  6810.     PSET (iX+4, iY), bgColor
  6811.     PSET (iX+3, iY), fgColor
  6812.     PSET (iX+2, iY), bgColor
  6813.     PSET (iX+1, iY), bgColor
  6814.     PSET (iX+0, iY), fgColor
  6815. End Sub ' DrawBitPatternPSET041
  6816.  
  6817. Sub DrawBitPatternPSET042(  _
  6818.     imgScreen&, iCol As Integer, iRow As Integer, _
  6819.     iLine As Integer, _
  6820.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6821.     )
  6822.     Dim iX As Integer : iX = iCol * 8
  6823.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6824.     PSET (iX+7, iY), bgColor
  6825.     PSET (iX+6, iY), bgColor
  6826.     PSET (iX+5, iY), fgColor
  6827.     PSET (iX+4, iY), bgColor
  6828.     PSET (iX+3, iY), fgColor
  6829.     PSET (iX+2, iY), bgColor
  6830.     PSET (iX+1, iY), fgColor
  6831.     PSET (iX+0, iY), bgColor
  6832. End Sub ' DrawBitPatternPSET042
  6833.  
  6834. Sub DrawBitPatternPSET043(  _
  6835.     imgScreen&, iCol As Integer, iRow As Integer, _
  6836.     iLine As Integer, _
  6837.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6838.     )
  6839.     Dim iX As Integer : iX = iCol * 8
  6840.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6841.     PSET (iX+7, iY), bgColor
  6842.     PSET (iX+6, iY), bgColor
  6843.     PSET (iX+5, iY), fgColor
  6844.     PSET (iX+4, iY), bgColor
  6845.     PSET (iX+3, iY), fgColor
  6846.     PSET (iX+2, iY), bgColor
  6847.     PSET (iX+1, iY), fgColor
  6848.     PSET (iX+0, iY), fgColor
  6849. End Sub ' DrawBitPatternPSET043
  6850.  
  6851. Sub DrawBitPatternPSET044(  _
  6852.     imgScreen&, iCol As Integer, iRow As Integer, _
  6853.     iLine As Integer, _
  6854.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6855.     )
  6856.     Dim iX As Integer : iX = iCol * 8
  6857.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6858.     PSET (iX+7, iY), bgColor
  6859.     PSET (iX+6, iY), bgColor
  6860.     PSET (iX+5, iY), fgColor
  6861.     PSET (iX+4, iY), bgColor
  6862.     PSET (iX+3, iY), fgColor
  6863.     PSET (iX+2, iY), fgColor
  6864.     PSET (iX+1, iY), bgColor
  6865.     PSET (iX+0, iY), bgColor
  6866. End Sub ' DrawBitPatternPSET044
  6867.  
  6868. Sub DrawBitPatternPSET045(  _
  6869.     imgScreen&, iCol As Integer, iRow As Integer, _
  6870.     iLine As Integer, _
  6871.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6872.     )
  6873.     Dim iX As Integer : iX = iCol * 8
  6874.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6875.     PSET (iX+7, iY), bgColor
  6876.     PSET (iX+6, iY), bgColor
  6877.     PSET (iX+5, iY), fgColor
  6878.     PSET (iX+4, iY), bgColor
  6879.     PSET (iX+3, iY), fgColor
  6880.     PSET (iX+2, iY), fgColor
  6881.     PSET (iX+1, iY), bgColor
  6882.     PSET (iX+0, iY), fgColor
  6883. End Sub ' DrawBitPatternPSET045
  6884.  
  6885. Sub DrawBitPatternPSET046(  _
  6886.     imgScreen&, iCol As Integer, iRow As Integer, _
  6887.     iLine As Integer, _
  6888.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6889.     )
  6890.     Dim iX As Integer : iX = iCol * 8
  6891.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6892.     PSET (iX+7, iY), bgColor
  6893.     PSET (iX+6, iY), bgColor
  6894.     PSET (iX+5, iY), fgColor
  6895.     PSET (iX+4, iY), bgColor
  6896.     PSET (iX+3, iY), fgColor
  6897.     PSET (iX+2, iY), fgColor
  6898.     PSET (iX+1, iY), fgColor
  6899.     PSET (iX+0, iY), bgColor
  6900. End Sub ' DrawBitPatternPSET046
  6901.  
  6902. Sub DrawBitPatternPSET047(  _
  6903.     imgScreen&, iCol As Integer, iRow As Integer, _
  6904.     iLine As Integer, _
  6905.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6906.     )
  6907.     Dim iX As Integer : iX = iCol * 8
  6908.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6909.     PSET (iX+7, iY), bgColor
  6910.     PSET (iX+6, iY), bgColor
  6911.     PSET (iX+5, iY), fgColor
  6912.     PSET (iX+4, iY), bgColor
  6913.     PSET (iX+3, iY), fgColor
  6914.     PSET (iX+2, iY), fgColor
  6915.     PSET (iX+1, iY), fgColor
  6916.     PSET (iX+0, iY), fgColor
  6917. End Sub ' DrawBitPatternPSET047
  6918.  
  6919. Sub DrawBitPatternPSET048(  _
  6920.     imgScreen&, iCol As Integer, iRow As Integer, _
  6921.     iLine As Integer, _
  6922.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6923.     )
  6924.     Dim iX As Integer : iX = iCol * 8
  6925.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6926.     PSET (iX+7, iY), bgColor
  6927.     PSET (iX+6, iY), bgColor
  6928.     PSET (iX+5, iY), fgColor
  6929.     PSET (iX+4, iY), fgColor
  6930.     PSET (iX+3, iY), bgColor
  6931.     PSET (iX+2, iY), bgColor
  6932.     PSET (iX+1, iY), bgColor
  6933.     PSET (iX+0, iY), bgColor
  6934. End Sub ' DrawBitPatternPSET048
  6935.  
  6936. Sub DrawBitPatternPSET049(  _
  6937.     imgScreen&, iCol As Integer, iRow As Integer, _
  6938.     iLine As Integer, _
  6939.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6940.     )
  6941.     Dim iX As Integer : iX = iCol * 8
  6942.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6943.     PSET (iX+7, iY), bgColor
  6944.     PSET (iX+6, iY), bgColor
  6945.     PSET (iX+5, iY), fgColor
  6946.     PSET (iX+4, iY), fgColor
  6947.     PSET (iX+3, iY), bgColor
  6948.     PSET (iX+2, iY), bgColor
  6949.     PSET (iX+1, iY), bgColor
  6950.     PSET (iX+0, iY), fgColor
  6951. End Sub ' DrawBitPatternPSET049
  6952.  
  6953. Sub DrawBitPatternPSET050(  _
  6954.     imgScreen&, iCol As Integer, iRow As Integer, _
  6955.     iLine As Integer, _
  6956.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6957.     )
  6958.     Dim iX As Integer : iX = iCol * 8
  6959.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6960.     PSET (iX+7, iY), bgColor
  6961.     PSET (iX+6, iY), bgColor
  6962.     PSET (iX+5, iY), fgColor
  6963.     PSET (iX+4, iY), fgColor
  6964.     PSET (iX+3, iY), bgColor
  6965.     PSET (iX+2, iY), bgColor
  6966.     PSET (iX+1, iY), fgColor
  6967.     PSET (iX+0, iY), bgColor
  6968. End Sub ' DrawBitPatternPSET050
  6969.  
  6970. Sub DrawBitPatternPSET051(  _
  6971.     imgScreen&, iCol As Integer, iRow As Integer, _
  6972.     iLine As Integer, _
  6973.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6974.     )
  6975.     Dim iX As Integer : iX = iCol * 8
  6976.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6977.     PSET (iX+7, iY), bgColor
  6978.     PSET (iX+6, iY), bgColor
  6979.     PSET (iX+5, iY), fgColor
  6980.     PSET (iX+4, iY), fgColor
  6981.     PSET (iX+3, iY), bgColor
  6982.     PSET (iX+2, iY), bgColor
  6983.     PSET (iX+1, iY), fgColor
  6984.     PSET (iX+0, iY), fgColor
  6985. End Sub ' DrawBitPatternPSET051
  6986.  
  6987. Sub DrawBitPatternPSET052(  _
  6988.     imgScreen&, iCol As Integer, iRow As Integer, _
  6989.     iLine As Integer, _
  6990.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  6991.     )
  6992.     Dim iX As Integer : iX = iCol * 8
  6993.     Dim iY As Integer : iY = (iRow * 8) + iLine
  6994.     PSET (iX+7, iY), bgColor
  6995.     PSET (iX+6, iY), bgColor
  6996.     PSET (iX+5, iY), fgColor
  6997.     PSET (iX+4, iY), fgColor
  6998.     PSET (iX+3, iY), bgColor
  6999.     PSET (iX+2, iY), fgColor
  7000.     PSET (iX+1, iY), bgColor
  7001.     PSET (iX+0, iY), bgColor
  7002. End Sub ' DrawBitPatternPSET052
  7003.  
  7004. Sub DrawBitPatternPSET053(  _
  7005.     imgScreen&, iCol As Integer, iRow As Integer, _
  7006.     iLine As Integer, _
  7007.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7008.     )
  7009.     Dim iX As Integer : iX = iCol * 8
  7010.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7011.     PSET (iX+7, iY), bgColor
  7012.     PSET (iX+6, iY), bgColor
  7013.     PSET (iX+5, iY), fgColor
  7014.     PSET (iX+4, iY), fgColor
  7015.     PSET (iX+3, iY), bgColor
  7016.     PSET (iX+2, iY), fgColor
  7017.     PSET (iX+1, iY), bgColor
  7018.     PSET (iX+0, iY), fgColor
  7019. End Sub ' DrawBitPatternPSET053
  7020.  
  7021. Sub DrawBitPatternPSET054(  _
  7022.     imgScreen&, iCol As Integer, iRow As Integer, _
  7023.     iLine As Integer, _
  7024.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7025.     )
  7026.     Dim iX As Integer : iX = iCol * 8
  7027.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7028.     PSET (iX+7, iY), bgColor
  7029.     PSET (iX+6, iY), bgColor
  7030.     PSET (iX+5, iY), fgColor
  7031.     PSET (iX+4, iY), fgColor
  7032.     PSET (iX+3, iY), bgColor
  7033.     PSET (iX+2, iY), fgColor
  7034.     PSET (iX+1, iY), fgColor
  7035.     PSET (iX+0, iY), bgColor
  7036. End Sub ' DrawBitPatternPSET054
  7037.  
  7038. Sub DrawBitPatternPSET055(  _
  7039.     imgScreen&, iCol As Integer, iRow As Integer, _
  7040.     iLine As Integer, _
  7041.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7042.     )
  7043.     Dim iX As Integer : iX = iCol * 8
  7044.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7045.     PSET (iX+7, iY), bgColor
  7046.     PSET (iX+6, iY), bgColor
  7047.     PSET (iX+5, iY), fgColor
  7048.     PSET (iX+4, iY), fgColor
  7049.     PSET (iX+3, iY), bgColor
  7050.     PSET (iX+2, iY), fgColor
  7051.     PSET (iX+1, iY), fgColor
  7052.     PSET (iX+0, iY), fgColor
  7053. End Sub ' DrawBitPatternPSET055
  7054.  
  7055. Sub DrawBitPatternPSET056(  _
  7056.     imgScreen&, iCol As Integer, iRow As Integer, _
  7057.     iLine As Integer, _
  7058.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7059.     )
  7060.     Dim iX As Integer : iX = iCol * 8
  7061.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7062.     PSET (iX+7, iY), bgColor
  7063.     PSET (iX+6, iY), bgColor
  7064.     PSET (iX+5, iY), fgColor
  7065.     PSET (iX+4, iY), fgColor
  7066.     PSET (iX+3, iY), fgColor
  7067.     PSET (iX+2, iY), bgColor
  7068.     PSET (iX+1, iY), bgColor
  7069.     PSET (iX+0, iY), bgColor
  7070. End Sub ' DrawBitPatternPSET056
  7071.  
  7072. Sub DrawBitPatternPSET057(  _
  7073.     imgScreen&, iCol As Integer, iRow As Integer, _
  7074.     iLine As Integer, _
  7075.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7076.     )
  7077.     Dim iX As Integer : iX = iCol * 8
  7078.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7079.     PSET (iX+7, iY), bgColor
  7080.     PSET (iX+6, iY), bgColor
  7081.     PSET (iX+5, iY), fgColor
  7082.     PSET (iX+4, iY), fgColor
  7083.     PSET (iX+3, iY), fgColor
  7084.     PSET (iX+2, iY), bgColor
  7085.     PSET (iX+1, iY), bgColor
  7086.     PSET (iX+0, iY), fgColor
  7087. End Sub ' DrawBitPatternPSET057
  7088.  
  7089. Sub DrawBitPatternPSET058(  _
  7090.     imgScreen&, iCol As Integer, iRow As Integer, _
  7091.     iLine As Integer, _
  7092.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7093.     )
  7094.     Dim iX As Integer : iX = iCol * 8
  7095.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7096.     PSET (iX+7, iY), bgColor
  7097.     PSET (iX+6, iY), bgColor
  7098.     PSET (iX+5, iY), fgColor
  7099.     PSET (iX+4, iY), fgColor
  7100.     PSET (iX+3, iY), fgColor
  7101.     PSET (iX+2, iY), bgColor
  7102.     PSET (iX+1, iY), fgColor
  7103.     PSET (iX+0, iY), bgColor
  7104. End Sub ' DrawBitPatternPSET058
  7105.  
  7106. Sub DrawBitPatternPSET059(  _
  7107.     imgScreen&, iCol As Integer, iRow As Integer, _
  7108.     iLine As Integer, _
  7109.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7110.     )
  7111.     Dim iX As Integer : iX = iCol * 8
  7112.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7113.     PSET (iX+7, iY), bgColor
  7114.     PSET (iX+6, iY), bgColor
  7115.     PSET (iX+5, iY), fgColor
  7116.     PSET (iX+4, iY), fgColor
  7117.     PSET (iX+3, iY), fgColor
  7118.     PSET (iX+2, iY), bgColor
  7119.     PSET (iX+1, iY), fgColor
  7120.     PSET (iX+0, iY), fgColor
  7121. End Sub ' DrawBitPatternPSET059
  7122.  
  7123. Sub DrawBitPatternPSET060(  _
  7124.     imgScreen&, iCol As Integer, iRow As Integer, _
  7125.     iLine As Integer, _
  7126.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7127.     )
  7128.     Dim iX As Integer : iX = iCol * 8
  7129.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7130.     PSET (iX+7, iY), bgColor
  7131.     PSET (iX+6, iY), bgColor
  7132.     PSET (iX+5, iY), fgColor
  7133.     PSET (iX+4, iY), fgColor
  7134.     PSET (iX+3, iY), fgColor
  7135.     PSET (iX+2, iY), fgColor
  7136.     PSET (iX+1, iY), bgColor
  7137.     PSET (iX+0, iY), bgColor
  7138. End Sub ' DrawBitPatternPSET060
  7139.  
  7140. Sub DrawBitPatternPSET061(  _
  7141.     imgScreen&, iCol As Integer, iRow As Integer, _
  7142.     iLine As Integer, _
  7143.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7144.     )
  7145.     Dim iX As Integer : iX = iCol * 8
  7146.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7147.     PSET (iX+7, iY), bgColor
  7148.     PSET (iX+6, iY), bgColor
  7149.     PSET (iX+5, iY), fgColor
  7150.     PSET (iX+4, iY), fgColor
  7151.     PSET (iX+3, iY), fgColor
  7152.     PSET (iX+2, iY), fgColor
  7153.     PSET (iX+1, iY), bgColor
  7154.     PSET (iX+0, iY), fgColor
  7155. End Sub ' DrawBitPatternPSET061
  7156.  
  7157. Sub DrawBitPatternPSET062(  _
  7158.     imgScreen&, iCol As Integer, iRow As Integer, _
  7159.     iLine As Integer, _
  7160.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7161.     )
  7162.     Dim iX As Integer : iX = iCol * 8
  7163.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7164.     PSET (iX+7, iY), bgColor
  7165.     PSET (iX+6, iY), bgColor
  7166.     PSET (iX+5, iY), fgColor
  7167.     PSET (iX+4, iY), fgColor
  7168.     PSET (iX+3, iY), fgColor
  7169.     PSET (iX+2, iY), fgColor
  7170.     PSET (iX+1, iY), fgColor
  7171.     PSET (iX+0, iY), bgColor
  7172. End Sub ' DrawBitPatternPSET062
  7173.  
  7174. Sub DrawBitPatternPSET063(  _
  7175.     imgScreen&, iCol As Integer, iRow As Integer, _
  7176.     iLine As Integer, _
  7177.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7178.     )
  7179.     Dim iX As Integer : iX = iCol * 8
  7180.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7181.     PSET (iX+7, iY), bgColor
  7182.     PSET (iX+6, iY), bgColor
  7183.     PSET (iX+5, iY), fgColor
  7184.     PSET (iX+4, iY), fgColor
  7185.     PSET (iX+3, iY), fgColor
  7186.     PSET (iX+2, iY), fgColor
  7187.     PSET (iX+1, iY), fgColor
  7188.     PSET (iX+0, iY), fgColor
  7189. End Sub ' DrawBitPatternPSET063
  7190.  
  7191. Sub DrawBitPatternPSET064(  _
  7192.     imgScreen&, iCol As Integer, iRow As Integer, _
  7193.     iLine As Integer, _
  7194.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7195.     )
  7196.     Dim iX As Integer : iX = iCol * 8
  7197.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7198.     PSET (iX+7, iY), bgColor
  7199.     PSET (iX+6, iY), fgColor
  7200.     PSET (iX+5, iY), bgColor
  7201.     PSET (iX+4, iY), bgColor
  7202.     PSET (iX+3, iY), bgColor
  7203.     PSET (iX+2, iY), bgColor
  7204.     PSET (iX+1, iY), bgColor
  7205.     PSET (iX+0, iY), bgColor
  7206. End Sub ' DrawBitPatternPSET064
  7207.  
  7208. Sub DrawBitPatternPSET065(  _
  7209.     imgScreen&, iCol As Integer, iRow As Integer, _
  7210.     iLine As Integer, _
  7211.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7212.     )
  7213.     Dim iX As Integer : iX = iCol * 8
  7214.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7215.     PSET (iX+7, iY), bgColor
  7216.     PSET (iX+6, iY), fgColor
  7217.     PSET (iX+5, iY), bgColor
  7218.     PSET (iX+4, iY), bgColor
  7219.     PSET (iX+3, iY), bgColor
  7220.     PSET (iX+2, iY), bgColor
  7221.     PSET (iX+1, iY), bgColor
  7222.     PSET (iX+0, iY), fgColor
  7223. End Sub ' DrawBitPatternPSET065
  7224.  
  7225. Sub DrawBitPatternPSET066(  _
  7226.     imgScreen&, iCol As Integer, iRow As Integer, _
  7227.     iLine As Integer, _
  7228.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7229.     )
  7230.     Dim iX As Integer : iX = iCol * 8
  7231.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7232.     PSET (iX+7, iY), bgColor
  7233.     PSET (iX+6, iY), fgColor
  7234.     PSET (iX+5, iY), bgColor
  7235.     PSET (iX+4, iY), bgColor
  7236.     PSET (iX+3, iY), bgColor
  7237.     PSET (iX+2, iY), bgColor
  7238.     PSET (iX+1, iY), fgColor
  7239.     PSET (iX+0, iY), bgColor
  7240. End Sub ' DrawBitPatternPSET066
  7241.  
  7242. Sub DrawBitPatternPSET067(  _
  7243.     imgScreen&, iCol As Integer, iRow As Integer, _
  7244.     iLine As Integer, _
  7245.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7246.     )
  7247.     Dim iX As Integer : iX = iCol * 8
  7248.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7249.     PSET (iX+7, iY), bgColor
  7250.     PSET (iX+6, iY), fgColor
  7251.     PSET (iX+5, iY), bgColor
  7252.     PSET (iX+4, iY), bgColor
  7253.     PSET (iX+3, iY), bgColor
  7254.     PSET (iX+2, iY), bgColor
  7255.     PSET (iX+1, iY), fgColor
  7256.     PSET (iX+0, iY), fgColor
  7257. End Sub ' DrawBitPatternPSET067
  7258.  
  7259. Sub DrawBitPatternPSET068(  _
  7260.     imgScreen&, iCol As Integer, iRow As Integer, _
  7261.     iLine As Integer, _
  7262.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7263.     )
  7264.     Dim iX As Integer : iX = iCol * 8
  7265.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7266.     PSET (iX+7, iY), bgColor
  7267.     PSET (iX+6, iY), fgColor
  7268.     PSET (iX+5, iY), bgColor
  7269.     PSET (iX+4, iY), bgColor
  7270.     PSET (iX+3, iY), bgColor
  7271.     PSET (iX+2, iY), fgColor
  7272.     PSET (iX+1, iY), bgColor
  7273.     PSET (iX+0, iY), bgColor
  7274. End Sub ' DrawBitPatternPSET068
  7275.  
  7276. Sub DrawBitPatternPSET069(  _
  7277.     imgScreen&, iCol As Integer, iRow As Integer, _
  7278.     iLine As Integer, _
  7279.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7280.     )
  7281.     Dim iX As Integer : iX = iCol * 8
  7282.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7283.     PSET (iX+7, iY), bgColor
  7284.     PSET (iX+6, iY), fgColor
  7285.     PSET (iX+5, iY), bgColor
  7286.     PSET (iX+4, iY), bgColor
  7287.     PSET (iX+3, iY), bgColor
  7288.     PSET (iX+2, iY), fgColor
  7289.     PSET (iX+1, iY), bgColor
  7290.     PSET (iX+0, iY), fgColor
  7291. End Sub ' DrawBitPatternPSET069
  7292.  
  7293. Sub DrawBitPatternPSET070(  _
  7294.     imgScreen&, iCol As Integer, iRow As Integer, _
  7295.     iLine As Integer, _
  7296.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7297.     )
  7298.     Dim iX As Integer : iX = iCol * 8
  7299.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7300.     PSET (iX+7, iY), bgColor
  7301.     PSET (iX+6, iY), fgColor
  7302.     PSET (iX+5, iY), bgColor
  7303.     PSET (iX+4, iY), bgColor
  7304.     PSET (iX+3, iY), bgColor
  7305.     PSET (iX+2, iY), fgColor
  7306.     PSET (iX+1, iY), fgColor
  7307.     PSET (iX+0, iY), bgColor
  7308. End Sub ' DrawBitPatternPSET070
  7309.  
  7310. Sub DrawBitPatternPSET071(  _
  7311.     imgScreen&, iCol As Integer, iRow As Integer, _
  7312.     iLine As Integer, _
  7313.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7314.     )
  7315.     Dim iX As Integer : iX = iCol * 8
  7316.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7317.     PSET (iX+7, iY), bgColor
  7318.     PSET (iX+6, iY), fgColor
  7319.     PSET (iX+5, iY), bgColor
  7320.     PSET (iX+4, iY), bgColor
  7321.     PSET (iX+3, iY), bgColor
  7322.     PSET (iX+2, iY), fgColor
  7323.     PSET (iX+1, iY), fgColor
  7324.     PSET (iX+0, iY), fgColor
  7325. End Sub ' DrawBitPatternPSET071
  7326.  
  7327. Sub DrawBitPatternPSET072(  _
  7328.     imgScreen&, iCol As Integer, iRow As Integer, _
  7329.     iLine As Integer, _
  7330.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7331.     )
  7332.     Dim iX As Integer : iX = iCol * 8
  7333.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7334.     PSET (iX+7, iY), bgColor
  7335.     PSET (iX+6, iY), fgColor
  7336.     PSET (iX+5, iY), bgColor
  7337.     PSET (iX+4, iY), bgColor
  7338.     PSET (iX+3, iY), fgColor
  7339.     PSET (iX+2, iY), bgColor
  7340.     PSET (iX+1, iY), bgColor
  7341.     PSET (iX+0, iY), bgColor
  7342. End Sub ' DrawBitPatternPSET072
  7343.  
  7344. Sub DrawBitPatternPSET073(  _
  7345.     imgScreen&, iCol As Integer, iRow As Integer, _
  7346.     iLine As Integer, _
  7347.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7348.     )
  7349.     Dim iX As Integer : iX = iCol * 8
  7350.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7351.     PSET (iX+7, iY), bgColor
  7352.     PSET (iX+6, iY), fgColor
  7353.     PSET (iX+5, iY), bgColor
  7354.     PSET (iX+4, iY), bgColor
  7355.     PSET (iX+3, iY), fgColor
  7356.     PSET (iX+2, iY), bgColor
  7357.     PSET (iX+1, iY), bgColor
  7358.     PSET (iX+0, iY), fgColor
  7359. End Sub ' DrawBitPatternPSET073
  7360.  
  7361. Sub DrawBitPatternPSET074(  _
  7362.     imgScreen&, iCol As Integer, iRow As Integer, _
  7363.     iLine As Integer, _
  7364.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7365.     )
  7366.     Dim iX As Integer : iX = iCol * 8
  7367.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7368.     PSET (iX+7, iY), bgColor
  7369.     PSET (iX+6, iY), fgColor
  7370.     PSET (iX+5, iY), bgColor
  7371.     PSET (iX+4, iY), bgColor
  7372.     PSET (iX+3, iY), fgColor
  7373.     PSET (iX+2, iY), bgColor
  7374.     PSET (iX+1, iY), fgColor
  7375.     PSET (iX+0, iY), bgColor
  7376. End Sub ' DrawBitPatternPSET074
  7377.  
  7378. Sub DrawBitPatternPSET075(  _
  7379.     imgScreen&, iCol As Integer, iRow As Integer, _
  7380.     iLine As Integer, _
  7381.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7382.     )
  7383.     Dim iX As Integer : iX = iCol * 8
  7384.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7385.     PSET (iX+7, iY), bgColor
  7386.     PSET (iX+6, iY), fgColor
  7387.     PSET (iX+5, iY), bgColor
  7388.     PSET (iX+4, iY), bgColor
  7389.     PSET (iX+3, iY), fgColor
  7390.     PSET (iX+2, iY), bgColor
  7391.     PSET (iX+1, iY), fgColor
  7392.     PSET (iX+0, iY), fgColor
  7393. End Sub ' DrawBitPatternPSET075
  7394.  
  7395. Sub DrawBitPatternPSET076(  _
  7396.     imgScreen&, iCol As Integer, iRow As Integer, _
  7397.     iLine As Integer, _
  7398.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7399.     )
  7400.     Dim iX As Integer : iX = iCol * 8
  7401.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7402.     PSET (iX+7, iY), bgColor
  7403.     PSET (iX+6, iY), fgColor
  7404.     PSET (iX+5, iY), bgColor
  7405.     PSET (iX+4, iY), bgColor
  7406.     PSET (iX+3, iY), fgColor
  7407.     PSET (iX+2, iY), fgColor
  7408.     PSET (iX+1, iY), bgColor
  7409.     PSET (iX+0, iY), bgColor
  7410. End Sub ' DrawBitPatternPSET076
  7411.  
  7412. Sub DrawBitPatternPSET077(  _
  7413.     imgScreen&, iCol As Integer, iRow As Integer, _
  7414.     iLine As Integer, _
  7415.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7416.     )
  7417.     Dim iX As Integer : iX = iCol * 8
  7418.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7419.     PSET (iX+7, iY), bgColor
  7420.     PSET (iX+6, iY), fgColor
  7421.     PSET (iX+5, iY), bgColor
  7422.     PSET (iX+4, iY), bgColor
  7423.     PSET (iX+3, iY), fgColor
  7424.     PSET (iX+2, iY), fgColor
  7425.     PSET (iX+1, iY), bgColor
  7426.     PSET (iX+0, iY), fgColor
  7427. End Sub ' DrawBitPatternPSET077
  7428.  
  7429. Sub DrawBitPatternPSET078(  _
  7430.     imgScreen&, iCol As Integer, iRow As Integer, _
  7431.     iLine As Integer, _
  7432.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7433.     )
  7434.     Dim iX As Integer : iX = iCol * 8
  7435.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7436.     PSET (iX+7, iY), bgColor
  7437.     PSET (iX+6, iY), fgColor
  7438.     PSET (iX+5, iY), bgColor
  7439.     PSET (iX+4, iY), bgColor
  7440.     PSET (iX+3, iY), fgColor
  7441.     PSET (iX+2, iY), fgColor
  7442.     PSET (iX+1, iY), fgColor
  7443.     PSET (iX+0, iY), bgColor
  7444. End Sub ' DrawBitPatternPSET078
  7445.  
  7446. Sub DrawBitPatternPSET079(  _
  7447.     imgScreen&, iCol As Integer, iRow As Integer, _
  7448.     iLine As Integer, _
  7449.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7450.     )
  7451.     Dim iX As Integer : iX = iCol * 8
  7452.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7453.     PSET (iX+7, iY), bgColor
  7454.     PSET (iX+6, iY), fgColor
  7455.     PSET (iX+5, iY), bgColor
  7456.     PSET (iX+4, iY), bgColor
  7457.     PSET (iX+3, iY), fgColor
  7458.     PSET (iX+2, iY), fgColor
  7459.     PSET (iX+1, iY), fgColor
  7460.     PSET (iX+0, iY), fgColor
  7461. End Sub ' DrawBitPatternPSET079
  7462.  
  7463. Sub DrawBitPatternPSET080(  _
  7464.     imgScreen&, iCol As Integer, iRow As Integer, _
  7465.     iLine As Integer, _
  7466.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7467.     )
  7468.     Dim iX As Integer : iX = iCol * 8
  7469.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7470.     PSET (iX+7, iY), bgColor
  7471.     PSET (iX+6, iY), fgColor
  7472.     PSET (iX+5, iY), bgColor
  7473.     PSET (iX+4, iY), fgColor
  7474.     PSET (iX+3, iY), bgColor
  7475.     PSET (iX+2, iY), bgColor
  7476.     PSET (iX+1, iY), bgColor
  7477.     PSET (iX+0, iY), bgColor
  7478. End Sub ' DrawBitPatternPSET080
  7479.  
  7480. Sub DrawBitPatternPSET081(  _
  7481.     imgScreen&, iCol As Integer, iRow As Integer, _
  7482.     iLine As Integer, _
  7483.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7484.     )
  7485.     Dim iX As Integer : iX = iCol * 8
  7486.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7487.     PSET (iX+7, iY), bgColor
  7488.     PSET (iX+6, iY), fgColor
  7489.     PSET (iX+5, iY), bgColor
  7490.     PSET (iX+4, iY), fgColor
  7491.     PSET (iX+3, iY), bgColor
  7492.     PSET (iX+2, iY), bgColor
  7493.     PSET (iX+1, iY), bgColor
  7494.     PSET (iX+0, iY), fgColor
  7495. End Sub ' DrawBitPatternPSET081
  7496.  
  7497. Sub DrawBitPatternPSET082(  _
  7498.     imgScreen&, iCol As Integer, iRow As Integer, _
  7499.     iLine As Integer, _
  7500.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7501.     )
  7502.     Dim iX As Integer : iX = iCol * 8
  7503.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7504.     PSET (iX+7, iY), bgColor
  7505.     PSET (iX+6, iY), fgColor
  7506.     PSET (iX+5, iY), bgColor
  7507.     PSET (iX+4, iY), fgColor
  7508.     PSET (iX+3, iY), bgColor
  7509.     PSET (iX+2, iY), bgColor
  7510.     PSET (iX+1, iY), fgColor
  7511.     PSET (iX+0, iY), bgColor
  7512. End Sub ' DrawBitPatternPSET082
  7513.  
  7514. Sub DrawBitPatternPSET083(  _
  7515.     imgScreen&, iCol As Integer, iRow As Integer, _
  7516.     iLine As Integer, _
  7517.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7518.     )
  7519.     Dim iX As Integer : iX = iCol * 8
  7520.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7521.     PSET (iX+7, iY), bgColor
  7522.     PSET (iX+6, iY), fgColor
  7523.     PSET (iX+5, iY), bgColor
  7524.     PSET (iX+4, iY), fgColor
  7525.     PSET (iX+3, iY), bgColor
  7526.     PSET (iX+2, iY), bgColor
  7527.     PSET (iX+1, iY), fgColor
  7528.     PSET (iX+0, iY), fgColor
  7529. End Sub ' DrawBitPatternPSET083
  7530.  
  7531. Sub DrawBitPatternPSET084(  _
  7532.     imgScreen&, iCol As Integer, iRow As Integer, _
  7533.     iLine As Integer, _
  7534.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7535.     )
  7536.     Dim iX As Integer : iX = iCol * 8
  7537.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7538.     PSET (iX+7, iY), bgColor
  7539.     PSET (iX+6, iY), fgColor
  7540.     PSET (iX+5, iY), bgColor
  7541.     PSET (iX+4, iY), fgColor
  7542.     PSET (iX+3, iY), bgColor
  7543.     PSET (iX+2, iY), fgColor
  7544.     PSET (iX+1, iY), bgColor
  7545.     PSET (iX+0, iY), bgColor
  7546. End Sub ' DrawBitPatternPSET084
  7547.  
  7548. Sub DrawBitPatternPSET085(  _
  7549.     imgScreen&, iCol As Integer, iRow As Integer, _
  7550.     iLine As Integer, _
  7551.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7552.     )
  7553.     Dim iX As Integer : iX = iCol * 8
  7554.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7555.     PSET (iX+7, iY), bgColor
  7556.     PSET (iX+6, iY), fgColor
  7557.     PSET (iX+5, iY), bgColor
  7558.     PSET (iX+4, iY), fgColor
  7559.     PSET (iX+3, iY), bgColor
  7560.     PSET (iX+2, iY), fgColor
  7561.     PSET (iX+1, iY), bgColor
  7562.     PSET (iX+0, iY), fgColor
  7563. End Sub ' DrawBitPatternPSET085
  7564.  
  7565. Sub DrawBitPatternPSET086(  _
  7566.     imgScreen&, iCol As Integer, iRow As Integer, _
  7567.     iLine As Integer, _
  7568.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7569.     )
  7570.     Dim iX As Integer : iX = iCol * 8
  7571.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7572.     PSET (iX+7, iY), bgColor
  7573.     PSET (iX+6, iY), fgColor
  7574.     PSET (iX+5, iY), bgColor
  7575.     PSET (iX+4, iY), fgColor
  7576.     PSET (iX+3, iY), bgColor
  7577.     PSET (iX+2, iY), fgColor
  7578.     PSET (iX+1, iY), fgColor
  7579.     PSET (iX+0, iY), bgColor
  7580. End Sub ' DrawBitPatternPSET086
  7581.  
  7582. Sub DrawBitPatternPSET087(  _
  7583.     imgScreen&, iCol As Integer, iRow As Integer, _
  7584.     iLine As Integer, _
  7585.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7586.     )
  7587.     Dim iX As Integer : iX = iCol * 8
  7588.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7589.     PSET (iX+7, iY), bgColor
  7590.     PSET (iX+6, iY), fgColor
  7591.     PSET (iX+5, iY), bgColor
  7592.     PSET (iX+4, iY), fgColor
  7593.     PSET (iX+3, iY), bgColor
  7594.     PSET (iX+2, iY), fgColor
  7595.     PSET (iX+1, iY), fgColor
  7596.     PSET (iX+0, iY), fgColor
  7597. End Sub ' DrawBitPatternPSET087
  7598.  
  7599. Sub DrawBitPatternPSET088(  _
  7600.     imgScreen&, iCol As Integer, iRow As Integer, _
  7601.     iLine As Integer, _
  7602.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7603.     )
  7604.     Dim iX As Integer : iX = iCol * 8
  7605.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7606.     PSET (iX+7, iY), bgColor
  7607.     PSET (iX+6, iY), fgColor
  7608.     PSET (iX+5, iY), bgColor
  7609.     PSET (iX+4, iY), fgColor
  7610.     PSET (iX+3, iY), fgColor
  7611.     PSET (iX+2, iY), bgColor
  7612.     PSET (iX+1, iY), bgColor
  7613.     PSET (iX+0, iY), bgColor
  7614. End Sub ' DrawBitPatternPSET088
  7615.  
  7616. Sub DrawBitPatternPSET089(  _
  7617.     imgScreen&, iCol As Integer, iRow As Integer, _
  7618.     iLine As Integer, _
  7619.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7620.     )
  7621.     Dim iX As Integer : iX = iCol * 8
  7622.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7623.     PSET (iX+7, iY), bgColor
  7624.     PSET (iX+6, iY), fgColor
  7625.     PSET (iX+5, iY), bgColor
  7626.     PSET (iX+4, iY), fgColor
  7627.     PSET (iX+3, iY), fgColor
  7628.     PSET (iX+2, iY), bgColor
  7629.     PSET (iX+1, iY), bgColor
  7630.     PSET (iX+0, iY), fgColor
  7631. End Sub ' DrawBitPatternPSET089
  7632.  
  7633. Sub DrawBitPatternPSET090(  _
  7634.     imgScreen&, iCol As Integer, iRow As Integer, _
  7635.     iLine As Integer, _
  7636.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7637.     )
  7638.     Dim iX As Integer : iX = iCol * 8
  7639.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7640.     PSET (iX+7, iY), bgColor
  7641.     PSET (iX+6, iY), fgColor
  7642.     PSET (iX+5, iY), bgColor
  7643.     PSET (iX+4, iY), fgColor
  7644.     PSET (iX+3, iY), fgColor
  7645.     PSET (iX+2, iY), bgColor
  7646.     PSET (iX+1, iY), fgColor
  7647.     PSET (iX+0, iY), bgColor
  7648. End Sub ' DrawBitPatternPSET090
  7649.  
  7650. Sub DrawBitPatternPSET091(  _
  7651.     imgScreen&, iCol As Integer, iRow As Integer, _
  7652.     iLine As Integer, _
  7653.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7654.     )
  7655.     Dim iX As Integer : iX = iCol * 8
  7656.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7657.     PSET (iX+7, iY), bgColor
  7658.     PSET (iX+6, iY), fgColor
  7659.     PSET (iX+5, iY), bgColor
  7660.     PSET (iX+4, iY), fgColor
  7661.     PSET (iX+3, iY), fgColor
  7662.     PSET (iX+2, iY), bgColor
  7663.     PSET (iX+1, iY), fgColor
  7664.     PSET (iX+0, iY), fgColor
  7665. End Sub ' DrawBitPatternPSET091
  7666.  
  7667. Sub DrawBitPatternPSET092(  _
  7668.     imgScreen&, iCol As Integer, iRow As Integer, _
  7669.     iLine As Integer, _
  7670.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7671.     )
  7672.     Dim iX As Integer : iX = iCol * 8
  7673.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7674.     PSET (iX+7, iY), bgColor
  7675.     PSET (iX+6, iY), fgColor
  7676.     PSET (iX+5, iY), bgColor
  7677.     PSET (iX+4, iY), fgColor
  7678.     PSET (iX+3, iY), fgColor
  7679.     PSET (iX+2, iY), fgColor
  7680.     PSET (iX+1, iY), bgColor
  7681.     PSET (iX+0, iY), bgColor
  7682. End Sub ' DrawBitPatternPSET092
  7683.  
  7684. Sub DrawBitPatternPSET093(  _
  7685.     imgScreen&, iCol As Integer, iRow As Integer, _
  7686.     iLine As Integer, _
  7687.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7688.     )
  7689.     Dim iX As Integer : iX = iCol * 8
  7690.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7691.     PSET (iX+7, iY), bgColor
  7692.     PSET (iX+6, iY), fgColor
  7693.     PSET (iX+5, iY), bgColor
  7694.     PSET (iX+4, iY), fgColor
  7695.     PSET (iX+3, iY), fgColor
  7696.     PSET (iX+2, iY), fgColor
  7697.     PSET (iX+1, iY), bgColor
  7698.     PSET (iX+0, iY), fgColor
  7699. End Sub ' DrawBitPatternPSET093
  7700.  
  7701. Sub DrawBitPatternPSET094(  _
  7702.     imgScreen&, iCol As Integer, iRow As Integer, _
  7703.     iLine As Integer, _
  7704.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7705.     )
  7706.     Dim iX As Integer : iX = iCol * 8
  7707.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7708.     PSET (iX+7, iY), bgColor
  7709.     PSET (iX+6, iY), fgColor
  7710.     PSET (iX+5, iY), bgColor
  7711.     PSET (iX+4, iY), fgColor
  7712.     PSET (iX+3, iY), fgColor
  7713.     PSET (iX+2, iY), fgColor
  7714.     PSET (iX+1, iY), fgColor
  7715.     PSET (iX+0, iY), bgColor
  7716. End Sub ' DrawBitPatternPSET094
  7717.  
  7718. Sub DrawBitPatternPSET095(  _
  7719.     imgScreen&, iCol As Integer, iRow As Integer, _
  7720.     iLine As Integer, _
  7721.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7722.     )
  7723.     Dim iX As Integer : iX = iCol * 8
  7724.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7725.     PSET (iX+7, iY), bgColor
  7726.     PSET (iX+6, iY), fgColor
  7727.     PSET (iX+5, iY), bgColor
  7728.     PSET (iX+4, iY), fgColor
  7729.     PSET (iX+3, iY), fgColor
  7730.     PSET (iX+2, iY), fgColor
  7731.     PSET (iX+1, iY), fgColor
  7732.     PSET (iX+0, iY), fgColor
  7733. End Sub ' DrawBitPatternPSET095
  7734.  
  7735. Sub DrawBitPatternPSET096(  _
  7736.     imgScreen&, iCol As Integer, iRow As Integer, _
  7737.     iLine As Integer, _
  7738.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7739.     )
  7740.     Dim iX As Integer : iX = iCol * 8
  7741.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7742.     PSET (iX+7, iY), bgColor
  7743.     PSET (iX+6, iY), fgColor
  7744.     PSET (iX+5, iY), fgColor
  7745.     PSET (iX+4, iY), bgColor
  7746.     PSET (iX+3, iY), bgColor
  7747.     PSET (iX+2, iY), bgColor
  7748.     PSET (iX+1, iY), bgColor
  7749.     PSET (iX+0, iY), bgColor
  7750. End Sub ' DrawBitPatternPSET096
  7751.  
  7752. Sub DrawBitPatternPSET097(  _
  7753.     imgScreen&, iCol As Integer, iRow As Integer, _
  7754.     iLine As Integer, _
  7755.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7756.     )
  7757.     Dim iX As Integer : iX = iCol * 8
  7758.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7759.     PSET (iX+7, iY), bgColor
  7760.     PSET (iX+6, iY), fgColor
  7761.     PSET (iX+5, iY), fgColor
  7762.     PSET (iX+4, iY), bgColor
  7763.     PSET (iX+3, iY), bgColor
  7764.     PSET (iX+2, iY), bgColor
  7765.     PSET (iX+1, iY), bgColor
  7766.     PSET (iX+0, iY), fgColor
  7767. End Sub ' DrawBitPatternPSET097
  7768.  
  7769. Sub DrawBitPatternPSET098(  _
  7770.     imgScreen&, iCol As Integer, iRow As Integer, _
  7771.     iLine As Integer, _
  7772.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7773.     )
  7774.     Dim iX As Integer : iX = iCol * 8
  7775.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7776.     PSET (iX+7, iY), bgColor
  7777.     PSET (iX+6, iY), fgColor
  7778.     PSET (iX+5, iY), fgColor
  7779.     PSET (iX+4, iY), bgColor
  7780.     PSET (iX+3, iY), bgColor
  7781.     PSET (iX+2, iY), bgColor
  7782.     PSET (iX+1, iY), fgColor
  7783.     PSET (iX+0, iY), bgColor
  7784. End Sub ' DrawBitPatternPSET098
  7785.  
  7786. Sub DrawBitPatternPSET099(  _
  7787.     imgScreen&, iCol As Integer, iRow As Integer, _
  7788.     iLine As Integer, _
  7789.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7790.     )
  7791.     Dim iX As Integer : iX = iCol * 8
  7792.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7793.     PSET (iX+7, iY), bgColor
  7794.     PSET (iX+6, iY), fgColor
  7795.     PSET (iX+5, iY), fgColor
  7796.     PSET (iX+4, iY), bgColor
  7797.     PSET (iX+3, iY), bgColor
  7798.     PSET (iX+2, iY), bgColor
  7799.     PSET (iX+1, iY), fgColor
  7800.     PSET (iX+0, iY), fgColor
  7801. End Sub ' DrawBitPatternPSET099
  7802.  
  7803. Sub DrawBitPatternPSET100(  _
  7804.     imgScreen&, iCol As Integer, iRow As Integer, _
  7805.     iLine As Integer, _
  7806.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7807.     )
  7808.     Dim iX As Integer : iX = iCol * 8
  7809.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7810.     PSET (iX+7, iY), bgColor
  7811.     PSET (iX+6, iY), fgColor
  7812.     PSET (iX+5, iY), fgColor
  7813.     PSET (iX+4, iY), bgColor
  7814.     PSET (iX+3, iY), bgColor
  7815.     PSET (iX+2, iY), fgColor
  7816.     PSET (iX+1, iY), bgColor
  7817.     PSET (iX+0, iY), bgColor
  7818. End Sub ' DrawBitPatternPSET100
  7819.  
  7820. Sub DrawBitPatternPSET101(  _
  7821.     imgScreen&, iCol As Integer, iRow As Integer, _
  7822.     iLine As Integer, _
  7823.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7824.     )
  7825.     Dim iX As Integer : iX = iCol * 8
  7826.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7827.     PSET (iX+7, iY), bgColor
  7828.     PSET (iX+6, iY), fgColor
  7829.     PSET (iX+5, iY), fgColor
  7830.     PSET (iX+4, iY), bgColor
  7831.     PSET (iX+3, iY), bgColor
  7832.     PSET (iX+2, iY), fgColor
  7833.     PSET (iX+1, iY), bgColor
  7834.     PSET (iX+0, iY), fgColor
  7835. End Sub ' DrawBitPatternPSET101
  7836.  
  7837. Sub DrawBitPatternPSET102(  _
  7838.     imgScreen&, iCol As Integer, iRow As Integer, _
  7839.     iLine As Integer, _
  7840.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7841.     )
  7842.     Dim iX As Integer : iX = iCol * 8
  7843.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7844.     PSET (iX+7, iY), bgColor
  7845.     PSET (iX+6, iY), fgColor
  7846.     PSET (iX+5, iY), fgColor
  7847.     PSET (iX+4, iY), bgColor
  7848.     PSET (iX+3, iY), bgColor
  7849.     PSET (iX+2, iY), fgColor
  7850.     PSET (iX+1, iY), fgColor
  7851.     PSET (iX+0, iY), bgColor
  7852. End Sub ' DrawBitPatternPSET102
  7853.  
  7854. Sub DrawBitPatternPSET103(  _
  7855.     imgScreen&, iCol As Integer, iRow As Integer, _
  7856.     iLine As Integer, _
  7857.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7858.     )
  7859.     Dim iX As Integer : iX = iCol * 8
  7860.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7861.     PSET (iX+7, iY), bgColor
  7862.     PSET (iX+6, iY), fgColor
  7863.     PSET (iX+5, iY), fgColor
  7864.     PSET (iX+4, iY), bgColor
  7865.     PSET (iX+3, iY), bgColor
  7866.     PSET (iX+2, iY), fgColor
  7867.     PSET (iX+1, iY), fgColor
  7868.     PSET (iX+0, iY), fgColor
  7869. End Sub ' DrawBitPatternPSET103
  7870.  
  7871. Sub DrawBitPatternPSET104(  _
  7872.     imgScreen&, iCol As Integer, iRow As Integer, _
  7873.     iLine As Integer, _
  7874.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7875.     )
  7876.     Dim iX As Integer : iX = iCol * 8
  7877.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7878.     PSET (iX+7, iY), bgColor
  7879.     PSET (iX+6, iY), fgColor
  7880.     PSET (iX+5, iY), fgColor
  7881.     PSET (iX+4, iY), bgColor
  7882.     PSET (iX+3, iY), fgColor
  7883.     PSET (iX+2, iY), bgColor
  7884.     PSET (iX+1, iY), bgColor
  7885.     PSET (iX+0, iY), bgColor
  7886. End Sub ' DrawBitPatternPSET104
  7887.  
  7888. Sub DrawBitPatternPSET105(  _
  7889.     imgScreen&, iCol As Integer, iRow As Integer, _
  7890.     iLine As Integer, _
  7891.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7892.     )
  7893.     Dim iX As Integer : iX = iCol * 8
  7894.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7895.     PSET (iX+7, iY), bgColor
  7896.     PSET (iX+6, iY), fgColor
  7897.     PSET (iX+5, iY), fgColor
  7898.     PSET (iX+4, iY), bgColor
  7899.     PSET (iX+3, iY), fgColor
  7900.     PSET (iX+2, iY), bgColor
  7901.     PSET (iX+1, iY), bgColor
  7902.     PSET (iX+0, iY), fgColor
  7903. End Sub ' DrawBitPatternPSET105
  7904.  
  7905. Sub DrawBitPatternPSET106(  _
  7906.     imgScreen&, iCol As Integer, iRow As Integer, _
  7907.     iLine As Integer, _
  7908.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7909.     )
  7910.     Dim iX As Integer : iX = iCol * 8
  7911.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7912.     PSET (iX+7, iY), bgColor
  7913.     PSET (iX+6, iY), fgColor
  7914.     PSET (iX+5, iY), fgColor
  7915.     PSET (iX+4, iY), bgColor
  7916.     PSET (iX+3, iY), fgColor
  7917.     PSET (iX+2, iY), bgColor
  7918.     PSET (iX+1, iY), fgColor
  7919.     PSET (iX+0, iY), bgColor
  7920. End Sub ' DrawBitPatternPSET106
  7921.  
  7922. Sub DrawBitPatternPSET107(  _
  7923.     imgScreen&, iCol As Integer, iRow As Integer, _
  7924.     iLine As Integer, _
  7925.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7926.     )
  7927.     Dim iX As Integer : iX = iCol * 8
  7928.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7929.     PSET (iX+7, iY), bgColor
  7930.     PSET (iX+6, iY), fgColor
  7931.     PSET (iX+5, iY), fgColor
  7932.     PSET (iX+4, iY), bgColor
  7933.     PSET (iX+3, iY), fgColor
  7934.     PSET (iX+2, iY), bgColor
  7935.     PSET (iX+1, iY), fgColor
  7936.     PSET (iX+0, iY), fgColor
  7937. End Sub ' DrawBitPatternPSET107
  7938.  
  7939. Sub DrawBitPatternPSET108(  _
  7940.     imgScreen&, iCol As Integer, iRow As Integer, _
  7941.     iLine As Integer, _
  7942.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7943.     )
  7944.     Dim iX As Integer : iX = iCol * 8
  7945.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7946.     PSET (iX+7, iY), bgColor
  7947.     PSET (iX+6, iY), fgColor
  7948.     PSET (iX+5, iY), fgColor
  7949.     PSET (iX+4, iY), bgColor
  7950.     PSET (iX+3, iY), fgColor
  7951.     PSET (iX+2, iY), fgColor
  7952.     PSET (iX+1, iY), bgColor
  7953.     PSET (iX+0, iY), bgColor
  7954. End Sub ' DrawBitPatternPSET108
  7955.  
  7956. Sub DrawBitPatternPSET109(  _
  7957.     imgScreen&, iCol As Integer, iRow As Integer, _
  7958.     iLine As Integer, _
  7959.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7960.     )
  7961.     Dim iX As Integer : iX = iCol * 8
  7962.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7963.     PSET (iX+7, iY), bgColor
  7964.     PSET (iX+6, iY), fgColor
  7965.     PSET (iX+5, iY), fgColor
  7966.     PSET (iX+4, iY), bgColor
  7967.     PSET (iX+3, iY), fgColor
  7968.     PSET (iX+2, iY), fgColor
  7969.     PSET (iX+1, iY), bgColor
  7970.     PSET (iX+0, iY), fgColor
  7971. End Sub ' DrawBitPatternPSET109
  7972.  
  7973. Sub DrawBitPatternPSET110(  _
  7974.     imgScreen&, iCol As Integer, iRow As Integer, _
  7975.     iLine As Integer, _
  7976.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7977.     )
  7978.     Dim iX As Integer : iX = iCol * 8
  7979.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7980.     PSET (iX+7, iY), bgColor
  7981.     PSET (iX+6, iY), fgColor
  7982.     PSET (iX+5, iY), fgColor
  7983.     PSET (iX+4, iY), bgColor
  7984.     PSET (iX+3, iY), fgColor
  7985.     PSET (iX+2, iY), fgColor
  7986.     PSET (iX+1, iY), fgColor
  7987.     PSET (iX+0, iY), bgColor
  7988. End Sub ' DrawBitPatternPSET110
  7989.  
  7990. Sub DrawBitPatternPSET111(  _
  7991.     imgScreen&, iCol As Integer, iRow As Integer, _
  7992.     iLine As Integer, _
  7993.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  7994.     )
  7995.     Dim iX As Integer : iX = iCol * 8
  7996.     Dim iY As Integer : iY = (iRow * 8) + iLine
  7997.     PSET (iX+7, iY), bgColor
  7998.     PSET (iX+6, iY), fgColor
  7999.     PSET (iX+5, iY), fgColor
  8000.     PSET (iX+4, iY), bgColor
  8001.     PSET (iX+3, iY), fgColor
  8002.     PSET (iX+2, iY), fgColor
  8003.     PSET (iX+1, iY), fgColor
  8004.     PSET (iX+0, iY), fgColor
  8005. End Sub ' DrawBitPatternPSET111
  8006.  
  8007. Sub DrawBitPatternPSET112(  _
  8008.     imgScreen&, iCol As Integer, iRow As Integer, _
  8009.     iLine As Integer, _
  8010.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8011.     )
  8012.     Dim iX As Integer : iX = iCol * 8
  8013.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8014.     PSET (iX+7, iY), bgColor
  8015.     PSET (iX+6, iY), fgColor
  8016.     PSET (iX+5, iY), fgColor
  8017.     PSET (iX+4, iY), fgColor
  8018.     PSET (iX+3, iY), bgColor
  8019.     PSET (iX+2, iY), bgColor
  8020.     PSET (iX+1, iY), bgColor
  8021.     PSET (iX+0, iY), bgColor
  8022. End Sub ' DrawBitPatternPSET112
  8023.  
  8024. Sub DrawBitPatternPSET113(  _
  8025.     imgScreen&, iCol As Integer, iRow As Integer, _
  8026.     iLine As Integer, _
  8027.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8028.     )
  8029.     Dim iX As Integer : iX = iCol * 8
  8030.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8031.     PSET (iX+7, iY), bgColor
  8032.     PSET (iX+6, iY), fgColor
  8033.     PSET (iX+5, iY), fgColor
  8034.     PSET (iX+4, iY), fgColor
  8035.     PSET (iX+3, iY), bgColor
  8036.     PSET (iX+2, iY), bgColor
  8037.     PSET (iX+1, iY), bgColor
  8038.     PSET (iX+0, iY), fgColor
  8039. End Sub ' DrawBitPatternPSET113
  8040.  
  8041. Sub DrawBitPatternPSET114(  _
  8042.     imgScreen&, iCol As Integer, iRow As Integer, _
  8043.     iLine As Integer, _
  8044.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8045.     )
  8046.     Dim iX As Integer : iX = iCol * 8
  8047.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8048.     PSET (iX+7, iY), bgColor
  8049.     PSET (iX+6, iY), fgColor
  8050.     PSET (iX+5, iY), fgColor
  8051.     PSET (iX+4, iY), fgColor
  8052.     PSET (iX+3, iY), bgColor
  8053.     PSET (iX+2, iY), bgColor
  8054.     PSET (iX+1, iY), fgColor
  8055.     PSET (iX+0, iY), bgColor
  8056. End Sub ' DrawBitPatternPSET114
  8057.  
  8058. Sub DrawBitPatternPSET115(  _
  8059.     imgScreen&, iCol As Integer, iRow As Integer, _
  8060.     iLine As Integer, _
  8061.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8062.     )
  8063.     Dim iX As Integer : iX = iCol * 8
  8064.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8065.     PSET (iX+7, iY), bgColor
  8066.     PSET (iX+6, iY), fgColor
  8067.     PSET (iX+5, iY), fgColor
  8068.     PSET (iX+4, iY), fgColor
  8069.     PSET (iX+3, iY), bgColor
  8070.     PSET (iX+2, iY), bgColor
  8071.     PSET (iX+1, iY), fgColor
  8072.     PSET (iX+0, iY), fgColor
  8073. End Sub ' DrawBitPatternPSET115
  8074.  
  8075. Sub DrawBitPatternPSET116(  _
  8076.     imgScreen&, iCol As Integer, iRow As Integer, _
  8077.     iLine As Integer, _
  8078.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8079.     )
  8080.     Dim iX As Integer : iX = iCol * 8
  8081.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8082.     PSET (iX+7, iY), bgColor
  8083.     PSET (iX+6, iY), fgColor
  8084.     PSET (iX+5, iY), fgColor
  8085.     PSET (iX+4, iY), fgColor
  8086.     PSET (iX+3, iY), bgColor
  8087.     PSET (iX+2, iY), fgColor
  8088.     PSET (iX+1, iY), bgColor
  8089.     PSET (iX+0, iY), bgColor
  8090. End Sub ' DrawBitPatternPSET116
  8091.  
  8092. Sub DrawBitPatternPSET117(  _
  8093.     imgScreen&, iCol As Integer, iRow As Integer, _
  8094.     iLine As Integer, _
  8095.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8096.     )
  8097.     Dim iX As Integer : iX = iCol * 8
  8098.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8099.     PSET (iX+7, iY), bgColor
  8100.     PSET (iX+6, iY), fgColor
  8101.     PSET (iX+5, iY), fgColor
  8102.     PSET (iX+4, iY), fgColor
  8103.     PSET (iX+3, iY), bgColor
  8104.     PSET (iX+2, iY), fgColor
  8105.     PSET (iX+1, iY), bgColor
  8106.     PSET (iX+0, iY), fgColor
  8107. End Sub ' DrawBitPatternPSET117
  8108.  
  8109. Sub DrawBitPatternPSET118(  _
  8110.     imgScreen&, iCol As Integer, iRow As Integer, _
  8111.     iLine As Integer, _
  8112.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8113.     )
  8114.     Dim iX As Integer : iX = iCol * 8
  8115.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8116.     PSET (iX+7, iY), bgColor
  8117.     PSET (iX+6, iY), fgColor
  8118.     PSET (iX+5, iY), fgColor
  8119.     PSET (iX+4, iY), fgColor
  8120.     PSET (iX+3, iY), bgColor
  8121.     PSET (iX+2, iY), fgColor
  8122.     PSET (iX+1, iY), fgColor
  8123.     PSET (iX+0, iY), bgColor
  8124. End Sub ' DrawBitPatternPSET118
  8125.  
  8126. Sub DrawBitPatternPSET119(  _
  8127.     imgScreen&, iCol As Integer, iRow As Integer, _
  8128.     iLine As Integer, _
  8129.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8130.     )
  8131.     Dim iX As Integer : iX = iCol * 8
  8132.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8133.     PSET (iX+7, iY), bgColor
  8134.     PSET (iX+6, iY), fgColor
  8135.     PSET (iX+5, iY), fgColor
  8136.     PSET (iX+4, iY), fgColor
  8137.     PSET (iX+3, iY), bgColor
  8138.     PSET (iX+2, iY), fgColor
  8139.     PSET (iX+1, iY), fgColor
  8140.     PSET (iX+0, iY), fgColor
  8141. End Sub ' DrawBitPatternPSET119
  8142.  
  8143. Sub DrawBitPatternPSET120(  _
  8144.     imgScreen&, iCol As Integer, iRow As Integer, _
  8145.     iLine As Integer, _
  8146.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8147.     )
  8148.     Dim iX As Integer : iX = iCol * 8
  8149.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8150.     PSET (iX+7, iY), bgColor
  8151.     PSET (iX+6, iY), fgColor
  8152.     PSET (iX+5, iY), fgColor
  8153.     PSET (iX+4, iY), fgColor
  8154.     PSET (iX+3, iY), fgColor
  8155.     PSET (iX+2, iY), bgColor
  8156.     PSET (iX+1, iY), bgColor
  8157.     PSET (iX+0, iY), bgColor
  8158. End Sub ' DrawBitPatternPSET120
  8159.  
  8160. Sub DrawBitPatternPSET121(  _
  8161.     imgScreen&, iCol As Integer, iRow As Integer, _
  8162.     iLine As Integer, _
  8163.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8164.     )
  8165.     Dim iX As Integer : iX = iCol * 8
  8166.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8167.     PSET (iX+7, iY), bgColor
  8168.     PSET (iX+6, iY), fgColor
  8169.     PSET (iX+5, iY), fgColor
  8170.     PSET (iX+4, iY), fgColor
  8171.     PSET (iX+3, iY), fgColor
  8172.     PSET (iX+2, iY), bgColor
  8173.     PSET (iX+1, iY), bgColor
  8174.     PSET (iX+0, iY), fgColor
  8175. End Sub ' DrawBitPatternPSET121
  8176.  
  8177. Sub DrawBitPatternPSET122(  _
  8178.     imgScreen&, iCol As Integer, iRow As Integer, _
  8179.     iLine As Integer, _
  8180.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8181.     )
  8182.     Dim iX As Integer : iX = iCol * 8
  8183.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8184.     PSET (iX+7, iY), bgColor
  8185.     PSET (iX+6, iY), fgColor
  8186.     PSET (iX+5, iY), fgColor
  8187.     PSET (iX+4, iY), fgColor
  8188.     PSET (iX+3, iY), fgColor
  8189.     PSET (iX+2, iY), bgColor
  8190.     PSET (iX+1, iY), fgColor
  8191.     PSET (iX+0, iY), bgColor
  8192. End Sub ' DrawBitPatternPSET122
  8193.  
  8194. Sub DrawBitPatternPSET123(  _
  8195.     imgScreen&, iCol As Integer, iRow As Integer, _
  8196.     iLine As Integer, _
  8197.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8198.     )
  8199.     Dim iX As Integer : iX = iCol * 8
  8200.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8201.     PSET (iX+7, iY), bgColor
  8202.     PSET (iX+6, iY), fgColor
  8203.     PSET (iX+5, iY), fgColor
  8204.     PSET (iX+4, iY), fgColor
  8205.     PSET (iX+3, iY), fgColor
  8206.     PSET (iX+2, iY), bgColor
  8207.     PSET (iX+1, iY), fgColor
  8208.     PSET (iX+0, iY), fgColor
  8209. End Sub ' DrawBitPatternPSET123
  8210.  
  8211. Sub DrawBitPatternPSET124(  _
  8212.     imgScreen&, iCol As Integer, iRow As Integer, _
  8213.     iLine As Integer, _
  8214.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8215.     )
  8216.     Dim iX As Integer : iX = iCol * 8
  8217.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8218.     PSET (iX+7, iY), bgColor
  8219.     PSET (iX+6, iY), fgColor
  8220.     PSET (iX+5, iY), fgColor
  8221.     PSET (iX+4, iY), fgColor
  8222.     PSET (iX+3, iY), fgColor
  8223.     PSET (iX+2, iY), fgColor
  8224.     PSET (iX+1, iY), bgColor
  8225.     PSET (iX+0, iY), bgColor
  8226. End Sub ' DrawBitPatternPSET124
  8227.  
  8228. Sub DrawBitPatternPSET125(  _
  8229.     imgScreen&, iCol As Integer, iRow As Integer, _
  8230.     iLine As Integer, _
  8231.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8232.     )
  8233.     Dim iX As Integer : iX = iCol * 8
  8234.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8235.     PSET (iX+7, iY), bgColor
  8236.     PSET (iX+6, iY), fgColor
  8237.     PSET (iX+5, iY), fgColor
  8238.     PSET (iX+4, iY), fgColor
  8239.     PSET (iX+3, iY), fgColor
  8240.     PSET (iX+2, iY), fgColor
  8241.     PSET (iX+1, iY), bgColor
  8242.     PSET (iX+0, iY), fgColor
  8243. End Sub ' DrawBitPatternPSET125
  8244.  
  8245. Sub DrawBitPatternPSET126(  _
  8246.     imgScreen&, iCol As Integer, iRow As Integer, _
  8247.     iLine As Integer, _
  8248.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8249.     )
  8250.     Dim iX As Integer : iX = iCol * 8
  8251.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8252.     PSET (iX+7, iY), bgColor
  8253.     PSET (iX+6, iY), fgColor
  8254.     PSET (iX+5, iY), fgColor
  8255.     PSET (iX+4, iY), fgColor
  8256.     PSET (iX+3, iY), fgColor
  8257.     PSET (iX+2, iY), fgColor
  8258.     PSET (iX+1, iY), fgColor
  8259.     PSET (iX+0, iY), bgColor
  8260. End Sub ' DrawBitPatternPSET126
  8261.  
  8262. Sub DrawBitPatternPSET127(  _
  8263.     imgScreen&, iCol As Integer, iRow As Integer, _
  8264.     iLine As Integer, _
  8265.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8266.     )
  8267.     Dim iX As Integer : iX = iCol * 8
  8268.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8269.     PSET (iX+7, iY), bgColor
  8270.     PSET (iX+6, iY), fgColor
  8271.     PSET (iX+5, iY), fgColor
  8272.     PSET (iX+4, iY), fgColor
  8273.     PSET (iX+3, iY), fgColor
  8274.     PSET (iX+2, iY), fgColor
  8275.     PSET (iX+1, iY), fgColor
  8276.     PSET (iX+0, iY), fgColor
  8277. End Sub ' DrawBitPatternPSET127
  8278.  
  8279. Sub DrawBitPatternPSET128(  _
  8280.     imgScreen&, iCol As Integer, iRow As Integer, _
  8281.     iLine As Integer, _
  8282.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8283.     )
  8284.     Dim iX As Integer : iX = iCol * 8
  8285.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8286.     PSET (iX+7, iY), fgColor
  8287.     PSET (iX+6, iY), bgColor
  8288.     PSET (iX+5, iY), bgColor
  8289.     PSET (iX+4, iY), bgColor
  8290.     PSET (iX+3, iY), bgColor
  8291.     PSET (iX+2, iY), bgColor
  8292.     PSET (iX+1, iY), bgColor
  8293.     PSET (iX+0, iY), bgColor
  8294. End Sub ' DrawBitPatternPSET128
  8295.  
  8296. Sub DrawBitPatternPSET129(  _
  8297.     imgScreen&, iCol As Integer, iRow As Integer, _
  8298.     iLine As Integer, _
  8299.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8300.     )
  8301.     Dim iX As Integer : iX = iCol * 8
  8302.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8303.     PSET (iX+7, iY), fgColor
  8304.     PSET (iX+6, iY), bgColor
  8305.     PSET (iX+5, iY), bgColor
  8306.     PSET (iX+4, iY), bgColor
  8307.     PSET (iX+3, iY), bgColor
  8308.     PSET (iX+2, iY), bgColor
  8309.     PSET (iX+1, iY), bgColor
  8310.     PSET (iX+0, iY), fgColor
  8311. End Sub ' DrawBitPatternPSET129
  8312.  
  8313. Sub DrawBitPatternPSET130(  _
  8314.     imgScreen&, iCol As Integer, iRow As Integer, _
  8315.     iLine As Integer, _
  8316.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8317.     )
  8318.     Dim iX As Integer : iX = iCol * 8
  8319.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8320.     PSET (iX+7, iY), fgColor
  8321.     PSET (iX+6, iY), bgColor
  8322.     PSET (iX+5, iY), bgColor
  8323.     PSET (iX+4, iY), bgColor
  8324.     PSET (iX+3, iY), bgColor
  8325.     PSET (iX+2, iY), bgColor
  8326.     PSET (iX+1, iY), fgColor
  8327.     PSET (iX+0, iY), bgColor
  8328. End Sub ' DrawBitPatternPSET130
  8329.  
  8330. Sub DrawBitPatternPSET131(  _
  8331.     imgScreen&, iCol As Integer, iRow As Integer, _
  8332.     iLine As Integer, _
  8333.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8334.     )
  8335.     Dim iX As Integer : iX = iCol * 8
  8336.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8337.     PSET (iX+7, iY), fgColor
  8338.     PSET (iX+6, iY), bgColor
  8339.     PSET (iX+5, iY), bgColor
  8340.     PSET (iX+4, iY), bgColor
  8341.     PSET (iX+3, iY), bgColor
  8342.     PSET (iX+2, iY), bgColor
  8343.     PSET (iX+1, iY), fgColor
  8344.     PSET (iX+0, iY), fgColor
  8345. End Sub ' DrawBitPatternPSET131
  8346.  
  8347. Sub DrawBitPatternPSET132(  _
  8348.     imgScreen&, iCol As Integer, iRow As Integer, _
  8349.     iLine As Integer, _
  8350.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8351.     )
  8352.     Dim iX As Integer : iX = iCol * 8
  8353.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8354.     PSET (iX+7, iY), fgColor
  8355.     PSET (iX+6, iY), bgColor
  8356.     PSET (iX+5, iY), bgColor
  8357.     PSET (iX+4, iY), bgColor
  8358.     PSET (iX+3, iY), bgColor
  8359.     PSET (iX+2, iY), fgColor
  8360.     PSET (iX+1, iY), bgColor
  8361.     PSET (iX+0, iY), bgColor
  8362. End Sub ' DrawBitPatternPSET132
  8363.  
  8364. Sub DrawBitPatternPSET133(  _
  8365.     imgScreen&, iCol As Integer, iRow As Integer, _
  8366.     iLine As Integer, _
  8367.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8368.     )
  8369.     Dim iX As Integer : iX = iCol * 8
  8370.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8371.     PSET (iX+7, iY), fgColor
  8372.     PSET (iX+6, iY), bgColor
  8373.     PSET (iX+5, iY), bgColor
  8374.     PSET (iX+4, iY), bgColor
  8375.     PSET (iX+3, iY), bgColor
  8376.     PSET (iX+2, iY), fgColor
  8377.     PSET (iX+1, iY), bgColor
  8378.     PSET (iX+0, iY), fgColor
  8379. End Sub ' DrawBitPatternPSET133
  8380.  
  8381. Sub DrawBitPatternPSET134(  _
  8382.     imgScreen&, iCol As Integer, iRow As Integer, _
  8383.     iLine As Integer, _
  8384.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8385.     )
  8386.     Dim iX As Integer : iX = iCol * 8
  8387.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8388.     PSET (iX+7, iY), fgColor
  8389.     PSET (iX+6, iY), bgColor
  8390.     PSET (iX+5, iY), bgColor
  8391.     PSET (iX+4, iY), bgColor
  8392.     PSET (iX+3, iY), bgColor
  8393.     PSET (iX+2, iY), fgColor
  8394.     PSET (iX+1, iY), fgColor
  8395.     PSET (iX+0, iY), bgColor
  8396. End Sub ' DrawBitPatternPSET134
  8397.  
  8398. Sub DrawBitPatternPSET135(  _
  8399.     imgScreen&, iCol As Integer, iRow As Integer, _
  8400.     iLine As Integer, _
  8401.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8402.     )
  8403.     Dim iX As Integer : iX = iCol * 8
  8404.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8405.     PSET (iX+7, iY), fgColor
  8406.     PSET (iX+6, iY), bgColor
  8407.     PSET (iX+5, iY), bgColor
  8408.     PSET (iX+4, iY), bgColor
  8409.     PSET (iX+3, iY), bgColor
  8410.     PSET (iX+2, iY), fgColor
  8411.     PSET (iX+1, iY), fgColor
  8412.     PSET (iX+0, iY), fgColor
  8413. End Sub ' DrawBitPatternPSET135
  8414.  
  8415. Sub DrawBitPatternPSET136(  _
  8416.     imgScreen&, iCol As Integer, iRow As Integer, _
  8417.     iLine As Integer, _
  8418.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8419.     )
  8420.     Dim iX As Integer : iX = iCol * 8
  8421.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8422.     PSET (iX+7, iY), fgColor
  8423.     PSET (iX+6, iY), bgColor
  8424.     PSET (iX+5, iY), bgColor
  8425.     PSET (iX+4, iY), bgColor
  8426.     PSET (iX+3, iY), fgColor
  8427.     PSET (iX+2, iY), bgColor
  8428.     PSET (iX+1, iY), bgColor
  8429.     PSET (iX+0, iY), bgColor
  8430. End Sub ' DrawBitPatternPSET136
  8431.  
  8432. Sub DrawBitPatternPSET137(  _
  8433.     imgScreen&, iCol As Integer, iRow As Integer, _
  8434.     iLine As Integer, _
  8435.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8436.     )
  8437.     Dim iX As Integer : iX = iCol * 8
  8438.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8439.     PSET (iX+7, iY), fgColor
  8440.     PSET (iX+6, iY), bgColor
  8441.     PSET (iX+5, iY), bgColor
  8442.     PSET (iX+4, iY), bgColor
  8443.     PSET (iX+3, iY), fgColor
  8444.     PSET (iX+2, iY), bgColor
  8445.     PSET (iX+1, iY), bgColor
  8446.     PSET (iX+0, iY), fgColor
  8447. End Sub ' DrawBitPatternPSET137
  8448.  
  8449. Sub DrawBitPatternPSET138(  _
  8450.     imgScreen&, iCol As Integer, iRow As Integer, _
  8451.     iLine As Integer, _
  8452.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8453.     )
  8454.     Dim iX As Integer : iX = iCol * 8
  8455.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8456.     PSET (iX+7, iY), fgColor
  8457.     PSET (iX+6, iY), bgColor
  8458.     PSET (iX+5, iY), bgColor
  8459.     PSET (iX+4, iY), bgColor
  8460.     PSET (iX+3, iY), fgColor
  8461.     PSET (iX+2, iY), bgColor
  8462.     PSET (iX+1, iY), fgColor
  8463.     PSET (iX+0, iY), bgColor
  8464. End Sub ' DrawBitPatternPSET138
  8465.  
  8466. Sub DrawBitPatternPSET139(  _
  8467.     imgScreen&, iCol As Integer, iRow As Integer, _
  8468.     iLine As Integer, _
  8469.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8470.     )
  8471.     Dim iX As Integer : iX = iCol * 8
  8472.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8473.     PSET (iX+7, iY), fgColor
  8474.     PSET (iX+6, iY), bgColor
  8475.     PSET (iX+5, iY), bgColor
  8476.     PSET (iX+4, iY), bgColor
  8477.     PSET (iX+3, iY), fgColor
  8478.     PSET (iX+2, iY), bgColor
  8479.     PSET (iX+1, iY), fgColor
  8480.     PSET (iX+0, iY), fgColor
  8481. End Sub ' DrawBitPatternPSET139
  8482.  
  8483. Sub DrawBitPatternPSET140(  _
  8484.     imgScreen&, iCol As Integer, iRow As Integer, _
  8485.     iLine As Integer, _
  8486.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8487.     )
  8488.     Dim iX As Integer : iX = iCol * 8
  8489.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8490.     PSET (iX+7, iY), fgColor
  8491.     PSET (iX+6, iY), bgColor
  8492.     PSET (iX+5, iY), bgColor
  8493.     PSET (iX+4, iY), bgColor
  8494.     PSET (iX+3, iY), fgColor
  8495.     PSET (iX+2, iY), fgColor
  8496.     PSET (iX+1, iY), bgColor
  8497.     PSET (iX+0, iY), bgColor
  8498. End Sub ' DrawBitPatternPSET140
  8499.  
  8500. Sub DrawBitPatternPSET141(  _
  8501.     imgScreen&, iCol As Integer, iRow As Integer, _
  8502.     iLine As Integer, _
  8503.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8504.     )
  8505.     Dim iX As Integer : iX = iCol * 8
  8506.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8507.     PSET (iX+7, iY), fgColor
  8508.     PSET (iX+6, iY), bgColor
  8509.     PSET (iX+5, iY), bgColor
  8510.     PSET (iX+4, iY), bgColor
  8511.     PSET (iX+3, iY), fgColor
  8512.     PSET (iX+2, iY), fgColor
  8513.     PSET (iX+1, iY), bgColor
  8514.     PSET (iX+0, iY), fgColor
  8515. End Sub ' DrawBitPatternPSET141
  8516.  
  8517. Sub DrawBitPatternPSET142(  _
  8518.     imgScreen&, iCol As Integer, iRow As Integer, _
  8519.     iLine As Integer, _
  8520.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8521.     )
  8522.     Dim iX As Integer : iX = iCol * 8
  8523.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8524.     PSET (iX+7, iY), fgColor
  8525.     PSET (iX+6, iY), bgColor
  8526.     PSET (iX+5, iY), bgColor
  8527.     PSET (iX+4, iY), bgColor
  8528.     PSET (iX+3, iY), fgColor
  8529.     PSET (iX+2, iY), fgColor
  8530.     PSET (iX+1, iY), fgColor
  8531.     PSET (iX+0, iY), bgColor
  8532. End Sub ' DrawBitPatternPSET142
  8533.  
  8534. Sub DrawBitPatternPSET143(  _
  8535.     imgScreen&, iCol As Integer, iRow As Integer, _
  8536.     iLine As Integer, _
  8537.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8538.     )
  8539.     Dim iX As Integer : iX = iCol * 8
  8540.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8541.     PSET (iX+7, iY), fgColor
  8542.     PSET (iX+6, iY), bgColor
  8543.     PSET (iX+5, iY), bgColor
  8544.     PSET (iX+4, iY), bgColor
  8545.     PSET (iX+3, iY), fgColor
  8546.     PSET (iX+2, iY), fgColor
  8547.     PSET (iX+1, iY), fgColor
  8548.     PSET (iX+0, iY), fgColor
  8549. End Sub ' DrawBitPatternPSET143
  8550.  
  8551. Sub DrawBitPatternPSET144(  _
  8552.     imgScreen&, iCol As Integer, iRow As Integer, _
  8553.     iLine As Integer, _
  8554.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8555.     )
  8556.     Dim iX As Integer : iX = iCol * 8
  8557.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8558.     PSET (iX+7, iY), fgColor
  8559.     PSET (iX+6, iY), bgColor
  8560.     PSET (iX+5, iY), bgColor
  8561.     PSET (iX+4, iY), fgColor
  8562.     PSET (iX+3, iY), bgColor
  8563.     PSET (iX+2, iY), bgColor
  8564.     PSET (iX+1, iY), bgColor
  8565.     PSET (iX+0, iY), bgColor
  8566. End Sub ' DrawBitPatternPSET144
  8567.  
  8568. Sub DrawBitPatternPSET145(  _
  8569.     imgScreen&, iCol As Integer, iRow As Integer, _
  8570.     iLine As Integer, _
  8571.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8572.     )
  8573.     Dim iX As Integer : iX = iCol * 8
  8574.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8575.     PSET (iX+7, iY), fgColor
  8576.     PSET (iX+6, iY), bgColor
  8577.     PSET (iX+5, iY), bgColor
  8578.     PSET (iX+4, iY), fgColor
  8579.     PSET (iX+3, iY), bgColor
  8580.     PSET (iX+2, iY), bgColor
  8581.     PSET (iX+1, iY), bgColor
  8582.     PSET (iX+0, iY), fgColor
  8583. End Sub ' DrawBitPatternPSET145
  8584.  
  8585. Sub DrawBitPatternPSET146(  _
  8586.     imgScreen&, iCol As Integer, iRow As Integer, _
  8587.     iLine As Integer, _
  8588.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8589.     )
  8590.     Dim iX As Integer : iX = iCol * 8
  8591.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8592.     PSET (iX+7, iY), fgColor
  8593.     PSET (iX+6, iY), bgColor
  8594.     PSET (iX+5, iY), bgColor
  8595.     PSET (iX+4, iY), fgColor
  8596.     PSET (iX+3, iY), bgColor
  8597.     PSET (iX+2, iY), bgColor
  8598.     PSET (iX+1, iY), fgColor
  8599.     PSET (iX+0, iY), bgColor
  8600. End Sub ' DrawBitPatternPSET146
  8601.  
  8602. Sub DrawBitPatternPSET147(  _
  8603.     imgScreen&, iCol As Integer, iRow As Integer, _
  8604.     iLine As Integer, _
  8605.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8606.     )
  8607.     Dim iX As Integer : iX = iCol * 8
  8608.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8609.     PSET (iX+7, iY), fgColor
  8610.     PSET (iX+6, iY), bgColor
  8611.     PSET (iX+5, iY), bgColor
  8612.     PSET (iX+4, iY), fgColor
  8613.     PSET (iX+3, iY), bgColor
  8614.     PSET (iX+2, iY), bgColor
  8615.     PSET (iX+1, iY), fgColor
  8616.     PSET (iX+0, iY), fgColor
  8617. End Sub ' DrawBitPatternPSET147
  8618.  
  8619. Sub DrawBitPatternPSET148(  _
  8620.     imgScreen&, iCol As Integer, iRow As Integer, _
  8621.     iLine As Integer, _
  8622.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8623.     )
  8624.     Dim iX As Integer : iX = iCol * 8
  8625.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8626.     PSET (iX+7, iY), fgColor
  8627.     PSET (iX+6, iY), bgColor
  8628.     PSET (iX+5, iY), bgColor
  8629.     PSET (iX+4, iY), fgColor
  8630.     PSET (iX+3, iY), bgColor
  8631.     PSET (iX+2, iY), fgColor
  8632.     PSET (iX+1, iY), bgColor
  8633.     PSET (iX+0, iY), bgColor
  8634. End Sub ' DrawBitPatternPSET148
  8635.  
  8636. Sub DrawBitPatternPSET149(  _
  8637.     imgScreen&, iCol As Integer, iRow As Integer, _
  8638.     iLine As Integer, _
  8639.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8640.     )
  8641.     Dim iX As Integer : iX = iCol * 8
  8642.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8643.     PSET (iX+7, iY), fgColor
  8644.     PSET (iX+6, iY), bgColor
  8645.     PSET (iX+5, iY), bgColor
  8646.     PSET (iX+4, iY), fgColor
  8647.     PSET (iX+3, iY), bgColor
  8648.     PSET (iX+2, iY), fgColor
  8649.     PSET (iX+1, iY), bgColor
  8650.     PSET (iX+0, iY), fgColor
  8651. End Sub ' DrawBitPatternPSET149
  8652.  
  8653. Sub DrawBitPatternPSET150(  _
  8654.     imgScreen&, iCol As Integer, iRow As Integer, _
  8655.     iLine As Integer, _
  8656.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8657.     )
  8658.     Dim iX As Integer : iX = iCol * 8
  8659.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8660.     PSET (iX+7, iY), fgColor
  8661.     PSET (iX+6, iY), bgColor
  8662.     PSET (iX+5, iY), bgColor
  8663.     PSET (iX+4, iY), fgColor
  8664.     PSET (iX+3, iY), bgColor
  8665.     PSET (iX+2, iY), fgColor
  8666.     PSET (iX+1, iY), fgColor
  8667.     PSET (iX+0, iY), bgColor
  8668. End Sub ' DrawBitPatternPSET150
  8669.  
  8670. Sub DrawBitPatternPSET151(  _
  8671.     imgScreen&, iCol As Integer, iRow As Integer, _
  8672.     iLine As Integer, _
  8673.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8674.     )
  8675.     Dim iX As Integer : iX = iCol * 8
  8676.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8677.     PSET (iX+7, iY), fgColor
  8678.     PSET (iX+6, iY), bgColor
  8679.     PSET (iX+5, iY), bgColor
  8680.     PSET (iX+4, iY), fgColor
  8681.     PSET (iX+3, iY), bgColor
  8682.     PSET (iX+2, iY), fgColor
  8683.     PSET (iX+1, iY), fgColor
  8684.     PSET (iX+0, iY), fgColor
  8685. End Sub ' DrawBitPatternPSET151
  8686.  
  8687. Sub DrawBitPatternPSET152(  _
  8688.     imgScreen&, iCol As Integer, iRow As Integer, _
  8689.     iLine As Integer, _
  8690.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8691.     )
  8692.     Dim iX As Integer : iX = iCol * 8
  8693.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8694.     PSET (iX+7, iY), fgColor
  8695.     PSET (iX+6, iY), bgColor
  8696.     PSET (iX+5, iY), bgColor
  8697.     PSET (iX+4, iY), fgColor
  8698.     PSET (iX+3, iY), fgColor
  8699.     PSET (iX+2, iY), bgColor
  8700.     PSET (iX+1, iY), bgColor
  8701.     PSET (iX+0, iY), bgColor
  8702. End Sub ' DrawBitPatternPSET152
  8703.  
  8704. Sub DrawBitPatternPSET153(  _
  8705.     imgScreen&, iCol As Integer, iRow As Integer, _
  8706.     iLine As Integer, _
  8707.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8708.     )
  8709.     Dim iX As Integer : iX = iCol * 8
  8710.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8711.     PSET (iX+7, iY), fgColor
  8712.     PSET (iX+6, iY), bgColor
  8713.     PSET (iX+5, iY), bgColor
  8714.     PSET (iX+4, iY), fgColor
  8715.     PSET (iX+3, iY), fgColor
  8716.     PSET (iX+2, iY), bgColor
  8717.     PSET (iX+1, iY), bgColor
  8718.     PSET (iX+0, iY), fgColor
  8719. End Sub ' DrawBitPatternPSET153
  8720.  
  8721. Sub DrawBitPatternPSET154(  _
  8722.     imgScreen&, iCol As Integer, iRow As Integer, _
  8723.     iLine As Integer, _
  8724.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8725.     )
  8726.     Dim iX As Integer : iX = iCol * 8
  8727.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8728.     PSET (iX+7, iY), fgColor
  8729.     PSET (iX+6, iY), bgColor
  8730.     PSET (iX+5, iY), bgColor
  8731.     PSET (iX+4, iY), fgColor
  8732.     PSET (iX+3, iY), fgColor
  8733.     PSET (iX+2, iY), bgColor
  8734.     PSET (iX+1, iY), fgColor
  8735.     PSET (iX+0, iY), bgColor
  8736. End Sub ' DrawBitPatternPSET154
  8737.  
  8738. Sub DrawBitPatternPSET155(  _
  8739.     imgScreen&, iCol As Integer, iRow As Integer, _
  8740.     iLine As Integer, _
  8741.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8742.     )
  8743.     Dim iX As Integer : iX = iCol * 8
  8744.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8745.     PSET (iX+7, iY), fgColor
  8746.     PSET (iX+6, iY), bgColor
  8747.     PSET (iX+5, iY), bgColor
  8748.     PSET (iX+4, iY), fgColor
  8749.     PSET (iX+3, iY), fgColor
  8750.     PSET (iX+2, iY), bgColor
  8751.     PSET (iX+1, iY), fgColor
  8752.     PSET (iX+0, iY), fgColor
  8753. End Sub ' DrawBitPatternPSET155
  8754.  
  8755. Sub DrawBitPatternPSET156(  _
  8756.     imgScreen&, iCol As Integer, iRow As Integer, _
  8757.     iLine As Integer, _
  8758.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8759.     )
  8760.     Dim iX As Integer : iX = iCol * 8
  8761.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8762.     PSET (iX+7, iY), fgColor
  8763.     PSET (iX+6, iY), bgColor
  8764.     PSET (iX+5, iY), bgColor
  8765.     PSET (iX+4, iY), fgColor
  8766.     PSET (iX+3, iY), fgColor
  8767.     PSET (iX+2, iY), fgColor
  8768.     PSET (iX+1, iY), bgColor
  8769.     PSET (iX+0, iY), bgColor
  8770. End Sub ' DrawBitPatternPSET156
  8771.  
  8772. Sub DrawBitPatternPSET157(  _
  8773.     imgScreen&, iCol As Integer, iRow As Integer, _
  8774.     iLine As Integer, _
  8775.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8776.     )
  8777.     Dim iX As Integer : iX = iCol * 8
  8778.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8779.     PSET (iX+7, iY), fgColor
  8780.     PSET (iX+6, iY), bgColor
  8781.     PSET (iX+5, iY), bgColor
  8782.     PSET (iX+4, iY), fgColor
  8783.     PSET (iX+3, iY), fgColor
  8784.     PSET (iX+2, iY), fgColor
  8785.     PSET (iX+1, iY), bgColor
  8786.     PSET (iX+0, iY), fgColor
  8787. End Sub ' DrawBitPatternPSET157
  8788.  
  8789. Sub DrawBitPatternPSET158(  _
  8790.     imgScreen&, iCol As Integer, iRow As Integer, _
  8791.     iLine As Integer, _
  8792.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8793.     )
  8794.     Dim iX As Integer : iX = iCol * 8
  8795.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8796.     PSET (iX+7, iY), fgColor
  8797.     PSET (iX+6, iY), bgColor
  8798.     PSET (iX+5, iY), bgColor
  8799.     PSET (iX+4, iY), fgColor
  8800.     PSET (iX+3, iY), fgColor
  8801.     PSET (iX+2, iY), fgColor
  8802.     PSET (iX+1, iY), fgColor
  8803.     PSET (iX+0, iY), bgColor
  8804. End Sub ' DrawBitPatternPSET158
  8805.  
  8806. Sub DrawBitPatternPSET159(  _
  8807.     imgScreen&, iCol As Integer, iRow As Integer, _
  8808.     iLine As Integer, _
  8809.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8810.     )
  8811.     Dim iX As Integer : iX = iCol * 8
  8812.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8813.     PSET (iX+7, iY), fgColor
  8814.     PSET (iX+6, iY), bgColor
  8815.     PSET (iX+5, iY), bgColor
  8816.     PSET (iX+4, iY), fgColor
  8817.     PSET (iX+3, iY), fgColor
  8818.     PSET (iX+2, iY), fgColor
  8819.     PSET (iX+1, iY), fgColor
  8820.     PSET (iX+0, iY), fgColor
  8821. End Sub ' DrawBitPatternPSET159
  8822.  
  8823. Sub DrawBitPatternPSET160(  _
  8824.     imgScreen&, iCol As Integer, iRow As Integer, _
  8825.     iLine As Integer, _
  8826.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8827.     )
  8828.     Dim iX As Integer : iX = iCol * 8
  8829.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8830.     PSET (iX+7, iY), fgColor
  8831.     PSET (iX+6, iY), bgColor
  8832.     PSET (iX+5, iY), fgColor
  8833.     PSET (iX+4, iY), bgColor
  8834.     PSET (iX+3, iY), bgColor
  8835.     PSET (iX+2, iY), bgColor
  8836.     PSET (iX+1, iY), bgColor
  8837.     PSET (iX+0, iY), bgColor
  8838. End Sub ' DrawBitPatternPSET160
  8839.  
  8840. Sub DrawBitPatternPSET161(  _
  8841.     imgScreen&, iCol As Integer, iRow As Integer, _
  8842.     iLine As Integer, _
  8843.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8844.     )
  8845.     Dim iX As Integer : iX = iCol * 8
  8846.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8847.     PSET (iX+7, iY), fgColor
  8848.     PSET (iX+6, iY), bgColor
  8849.     PSET (iX+5, iY), fgColor
  8850.     PSET (iX+4, iY), bgColor
  8851.     PSET (iX+3, iY), bgColor
  8852.     PSET (iX+2, iY), bgColor
  8853.     PSET (iX+1, iY), bgColor
  8854.     PSET (iX+0, iY), fgColor
  8855. End Sub ' DrawBitPatternPSET161
  8856.  
  8857. Sub DrawBitPatternPSET162(  _
  8858.     imgScreen&, iCol As Integer, iRow As Integer, _
  8859.     iLine As Integer, _
  8860.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8861.     )
  8862.     Dim iX As Integer : iX = iCol * 8
  8863.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8864.     PSET (iX+7, iY), fgColor
  8865.     PSET (iX+6, iY), bgColor
  8866.     PSET (iX+5, iY), fgColor
  8867.     PSET (iX+4, iY), bgColor
  8868.     PSET (iX+3, iY), bgColor
  8869.     PSET (iX+2, iY), bgColor
  8870.     PSET (iX+1, iY), fgColor
  8871.     PSET (iX+0, iY), bgColor
  8872. End Sub ' DrawBitPatternPSET162
  8873.  
  8874. Sub DrawBitPatternPSET163(  _
  8875.     imgScreen&, iCol As Integer, iRow As Integer, _
  8876.     iLine As Integer, _
  8877.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8878.     )
  8879.     Dim iX As Integer : iX = iCol * 8
  8880.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8881.     PSET (iX+7, iY), fgColor
  8882.     PSET (iX+6, iY), bgColor
  8883.     PSET (iX+5, iY), fgColor
  8884.     PSET (iX+4, iY), bgColor
  8885.     PSET (iX+3, iY), bgColor
  8886.     PSET (iX+2, iY), bgColor
  8887.     PSET (iX+1, iY), fgColor
  8888.     PSET (iX+0, iY), fgColor
  8889. End Sub ' DrawBitPatternPSET163
  8890.  
  8891. Sub DrawBitPatternPSET164(  _
  8892.     imgScreen&, iCol As Integer, iRow As Integer, _
  8893.     iLine As Integer, _
  8894.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8895.     )
  8896.     Dim iX As Integer : iX = iCol * 8
  8897.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8898.     PSET (iX+7, iY), fgColor
  8899.     PSET (iX+6, iY), bgColor
  8900.     PSET (iX+5, iY), fgColor
  8901.     PSET (iX+4, iY), bgColor
  8902.     PSET (iX+3, iY), bgColor
  8903.     PSET (iX+2, iY), fgColor
  8904.     PSET (iX+1, iY), bgColor
  8905.     PSET (iX+0, iY), bgColor
  8906. End Sub ' DrawBitPatternPSET164
  8907.  
  8908. Sub DrawBitPatternPSET165(  _
  8909.     imgScreen&, iCol As Integer, iRow As Integer, _
  8910.     iLine As Integer, _
  8911.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8912.     )
  8913.     Dim iX As Integer : iX = iCol * 8
  8914.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8915.     PSET (iX+7, iY), fgColor
  8916.     PSET (iX+6, iY), bgColor
  8917.     PSET (iX+5, iY), fgColor
  8918.     PSET (iX+4, iY), bgColor
  8919.     PSET (iX+3, iY), bgColor
  8920.     PSET (iX+2, iY), fgColor
  8921.     PSET (iX+1, iY), bgColor
  8922.     PSET (iX+0, iY), fgColor
  8923. End Sub ' DrawBitPatternPSET165
  8924.  
  8925. Sub DrawBitPatternPSET166(  _
  8926.     imgScreen&, iCol As Integer, iRow As Integer, _
  8927.     iLine As Integer, _
  8928.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8929.     )
  8930.     Dim iX As Integer : iX = iCol * 8
  8931.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8932.     PSET (iX+7, iY), fgColor
  8933.     PSET (iX+6, iY), bgColor
  8934.     PSET (iX+5, iY), fgColor
  8935.     PSET (iX+4, iY), bgColor
  8936.     PSET (iX+3, iY), bgColor
  8937.     PSET (iX+2, iY), fgColor
  8938.     PSET (iX+1, iY), fgColor
  8939.     PSET (iX+0, iY), bgColor
  8940. End Sub ' DrawBitPatternPSET166
  8941.  
  8942. Sub DrawBitPatternPSET167(  _
  8943.     imgScreen&, iCol As Integer, iRow As Integer, _
  8944.     iLine As Integer, _
  8945.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8946.     )
  8947.     Dim iX As Integer : iX = iCol * 8
  8948.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8949.     PSET (iX+7, iY), fgColor
  8950.     PSET (iX+6, iY), bgColor
  8951.     PSET (iX+5, iY), fgColor
  8952.     PSET (iX+4, iY), bgColor
  8953.     PSET (iX+3, iY), bgColor
  8954.     PSET (iX+2, iY), fgColor
  8955.     PSET (iX+1, iY), fgColor
  8956.     PSET (iX+0, iY), fgColor
  8957. End Sub ' DrawBitPatternPSET167
  8958.  
  8959. Sub DrawBitPatternPSET168(  _
  8960.     imgScreen&, iCol As Integer, iRow As Integer, _
  8961.     iLine As Integer, _
  8962.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8963.     )
  8964.     Dim iX As Integer : iX = iCol * 8
  8965.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8966.     PSET (iX+7, iY), fgColor
  8967.     PSET (iX+6, iY), bgColor
  8968.     PSET (iX+5, iY), fgColor
  8969.     PSET (iX+4, iY), bgColor
  8970.     PSET (iX+3, iY), fgColor
  8971.     PSET (iX+2, iY), bgColor
  8972.     PSET (iX+1, iY), bgColor
  8973.     PSET (iX+0, iY), bgColor
  8974. End Sub ' DrawBitPatternPSET168
  8975.  
  8976. Sub DrawBitPatternPSET169(  _
  8977.     imgScreen&, iCol As Integer, iRow As Integer, _
  8978.     iLine As Integer, _
  8979.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8980.     )
  8981.     Dim iX As Integer : iX = iCol * 8
  8982.     Dim iY As Integer : iY = (iRow * 8) + iLine
  8983.     PSET (iX+7, iY), fgColor
  8984.     PSET (iX+6, iY), bgColor
  8985.     PSET (iX+5, iY), fgColor
  8986.     PSET (iX+4, iY), bgColor
  8987.     PSET (iX+3, iY), fgColor
  8988.     PSET (iX+2, iY), bgColor
  8989.     PSET (iX+1, iY), bgColor
  8990.     PSET (iX+0, iY), fgColor
  8991. End Sub ' DrawBitPatternPSET169
  8992.  
  8993. Sub DrawBitPatternPSET170(  _
  8994.     imgScreen&, iCol As Integer, iRow As Integer, _
  8995.     iLine As Integer, _
  8996.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  8997.     )
  8998.     Dim iX As Integer : iX = iCol * 8
  8999.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9000.     PSET (iX+7, iY), fgColor
  9001.     PSET (iX+6, iY), bgColor
  9002.     PSET (iX+5, iY), fgColor
  9003.     PSET (iX+4, iY), bgColor
  9004.     PSET (iX+3, iY), fgColor
  9005.     PSET (iX+2, iY), bgColor
  9006.     PSET (iX+1, iY), fgColor
  9007.     PSET (iX+0, iY), bgColor
  9008. End Sub ' DrawBitPatternPSET170
  9009.  
  9010. Sub DrawBitPatternPSET171(  _
  9011.     imgScreen&, iCol As Integer, iRow As Integer, _
  9012.     iLine As Integer, _
  9013.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9014.     )
  9015.     Dim iX As Integer : iX = iCol * 8
  9016.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9017.     PSET (iX+7, iY), fgColor
  9018.     PSET (iX+6, iY), bgColor
  9019.     PSET (iX+5, iY), fgColor
  9020.     PSET (iX+4, iY), bgColor
  9021.     PSET (iX+3, iY), fgColor
  9022.     PSET (iX+2, iY), bgColor
  9023.     PSET (iX+1, iY), fgColor
  9024.     PSET (iX+0, iY), fgColor
  9025. End Sub ' DrawBitPatternPSET171
  9026.  
  9027. Sub DrawBitPatternPSET172(  _
  9028.     imgScreen&, iCol As Integer, iRow As Integer, _
  9029.     iLine As Integer, _
  9030.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9031.     )
  9032.     Dim iX As Integer : iX = iCol * 8
  9033.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9034.     PSET (iX+7, iY), fgColor
  9035.     PSET (iX+6, iY), bgColor
  9036.     PSET (iX+5, iY), fgColor
  9037.     PSET (iX+4, iY), bgColor
  9038.     PSET (iX+3, iY), fgColor
  9039.     PSET (iX+2, iY), fgColor
  9040.     PSET (iX+1, iY), bgColor
  9041.     PSET (iX+0, iY), bgColor
  9042. End Sub ' DrawBitPatternPSET172
  9043.  
  9044. Sub DrawBitPatternPSET173(  _
  9045.     imgScreen&, iCol As Integer, iRow As Integer, _
  9046.     iLine As Integer, _
  9047.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9048.     )
  9049.     Dim iX As Integer : iX = iCol * 8
  9050.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9051.     PSET (iX+7, iY), fgColor
  9052.     PSET (iX+6, iY), bgColor
  9053.     PSET (iX+5, iY), fgColor
  9054.     PSET (iX+4, iY), bgColor
  9055.     PSET (iX+3, iY), fgColor
  9056.     PSET (iX+2, iY), fgColor
  9057.     PSET (iX+1, iY), bgColor
  9058.     PSET (iX+0, iY), fgColor
  9059. End Sub ' DrawBitPatternPSET173
  9060.  
  9061. Sub DrawBitPatternPSET174(  _
  9062.     imgScreen&, iCol As Integer, iRow As Integer, _
  9063.     iLine As Integer, _
  9064.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9065.     )
  9066.     Dim iX As Integer : iX = iCol * 8
  9067.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9068.     PSET (iX+7, iY), fgColor
  9069.     PSET (iX+6, iY), bgColor
  9070.     PSET (iX+5, iY), fgColor
  9071.     PSET (iX+4, iY), bgColor
  9072.     PSET (iX+3, iY), fgColor
  9073.     PSET (iX+2, iY), fgColor
  9074.     PSET (iX+1, iY), fgColor
  9075.     PSET (iX+0, iY), bgColor
  9076. End Sub ' DrawBitPatternPSET174
  9077.  
  9078. Sub DrawBitPatternPSET175(  _
  9079.     imgScreen&, iCol As Integer, iRow As Integer, _
  9080.     iLine As Integer, _
  9081.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9082.     )
  9083.     Dim iX As Integer : iX = iCol * 8
  9084.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9085.     PSET (iX+7, iY), fgColor
  9086.     PSET (iX+6, iY), bgColor
  9087.     PSET (iX+5, iY), fgColor
  9088.     PSET (iX+4, iY), bgColor
  9089.     PSET (iX+3, iY), fgColor
  9090.     PSET (iX+2, iY), fgColor
  9091.     PSET (iX+1, iY), fgColor
  9092.     PSET (iX+0, iY), fgColor
  9093. End Sub ' DrawBitPatternPSET175
  9094.  
  9095. Sub DrawBitPatternPSET176(  _
  9096.     imgScreen&, iCol As Integer, iRow As Integer, _
  9097.     iLine As Integer, _
  9098.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9099.     )
  9100.     Dim iX As Integer : iX = iCol * 8
  9101.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9102.     PSET (iX+7, iY), fgColor
  9103.     PSET (iX+6, iY), bgColor
  9104.     PSET (iX+5, iY), fgColor
  9105.     PSET (iX+4, iY), fgColor
  9106.     PSET (iX+3, iY), bgColor
  9107.     PSET (iX+2, iY), bgColor
  9108.     PSET (iX+1, iY), bgColor
  9109.     PSET (iX+0, iY), bgColor
  9110. End Sub ' DrawBitPatternPSET176
  9111.  
  9112. Sub DrawBitPatternPSET177(  _
  9113.     imgScreen&, iCol As Integer, iRow As Integer, _
  9114.     iLine As Integer, _
  9115.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9116.     )
  9117.     Dim iX As Integer : iX = iCol * 8
  9118.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9119.     PSET (iX+7, iY), fgColor
  9120.     PSET (iX+6, iY), bgColor
  9121.     PSET (iX+5, iY), fgColor
  9122.     PSET (iX+4, iY), fgColor
  9123.     PSET (iX+3, iY), bgColor
  9124.     PSET (iX+2, iY), bgColor
  9125.     PSET (iX+1, iY), bgColor
  9126.     PSET (iX+0, iY), fgColor
  9127. End Sub ' DrawBitPatternPSET177
  9128.  
  9129. Sub DrawBitPatternPSET178(  _
  9130.     imgScreen&, iCol As Integer, iRow As Integer, _
  9131.     iLine As Integer, _
  9132.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9133.     )
  9134.     Dim iX As Integer : iX = iCol * 8
  9135.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9136.     PSET (iX+7, iY), fgColor
  9137.     PSET (iX+6, iY), bgColor
  9138.     PSET (iX+5, iY), fgColor
  9139.     PSET (iX+4, iY), fgColor
  9140.     PSET (iX+3, iY), bgColor
  9141.     PSET (iX+2, iY), bgColor
  9142.     PSET (iX+1, iY), fgColor
  9143.     PSET (iX+0, iY), bgColor
  9144. End Sub ' DrawBitPatternPSET178
  9145.  
  9146. Sub DrawBitPatternPSET179(  _
  9147.     imgScreen&, iCol As Integer, iRow As Integer, _
  9148.     iLine As Integer, _
  9149.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9150.     )
  9151.     Dim iX As Integer : iX = iCol * 8
  9152.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9153.     PSET (iX+7, iY), fgColor
  9154.     PSET (iX+6, iY), bgColor
  9155.     PSET (iX+5, iY), fgColor
  9156.     PSET (iX+4, iY), fgColor
  9157.     PSET (iX+3, iY), bgColor
  9158.     PSET (iX+2, iY), bgColor
  9159.     PSET (iX+1, iY), fgColor
  9160.     PSET (iX+0, iY), fgColor
  9161. End Sub ' DrawBitPatternPSET179
  9162.  
  9163. Sub DrawBitPatternPSET180(  _
  9164.     imgScreen&, iCol As Integer, iRow As Integer, _
  9165.     iLine As Integer, _
  9166.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9167.     )
  9168.     Dim iX As Integer : iX = iCol * 8
  9169.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9170.     PSET (iX+7, iY), fgColor
  9171.     PSET (iX+6, iY), bgColor
  9172.     PSET (iX+5, iY), fgColor
  9173.     PSET (iX+4, iY), fgColor
  9174.     PSET (iX+3, iY), bgColor
  9175.     PSET (iX+2, iY), fgColor
  9176.     PSET (iX+1, iY), bgColor
  9177.     PSET (iX+0, iY), bgColor
  9178. End Sub ' DrawBitPatternPSET180
  9179.  
  9180. Sub DrawBitPatternPSET181(  _
  9181.     imgScreen&, iCol As Integer, iRow As Integer, _
  9182.     iLine As Integer, _
  9183.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9184.     )
  9185.     Dim iX As Integer : iX = iCol * 8
  9186.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9187.     PSET (iX+7, iY), fgColor
  9188.     PSET (iX+6, iY), bgColor
  9189.     PSET (iX+5, iY), fgColor
  9190.     PSET (iX+4, iY), fgColor
  9191.     PSET (iX+3, iY), bgColor
  9192.     PSET (iX+2, iY), fgColor
  9193.     PSET (iX+1, iY), bgColor
  9194.     PSET (iX+0, iY), fgColor
  9195. End Sub ' DrawBitPatternPSET181
  9196.  
  9197. Sub DrawBitPatternPSET182(  _
  9198.     imgScreen&, iCol As Integer, iRow As Integer, _
  9199.     iLine As Integer, _
  9200.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9201.     )
  9202.     Dim iX As Integer : iX = iCol * 8
  9203.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9204.     PSET (iX+7, iY), fgColor
  9205.     PSET (iX+6, iY), bgColor
  9206.     PSET (iX+5, iY), fgColor
  9207.     PSET (iX+4, iY), fgColor
  9208.     PSET (iX+3, iY), bgColor
  9209.     PSET (iX+2, iY), fgColor
  9210.     PSET (iX+1, iY), fgColor
  9211.     PSET (iX+0, iY), bgColor
  9212. End Sub ' DrawBitPatternPSET182
  9213.  
  9214. Sub DrawBitPatternPSET183(  _
  9215.     imgScreen&, iCol As Integer, iRow As Integer, _
  9216.     iLine As Integer, _
  9217.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9218.     )
  9219.     Dim iX As Integer : iX = iCol * 8
  9220.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9221.     PSET (iX+7, iY), fgColor
  9222.     PSET (iX+6, iY), bgColor
  9223.     PSET (iX+5, iY), fgColor
  9224.     PSET (iX+4, iY), fgColor
  9225.     PSET (iX+3, iY), bgColor
  9226.     PSET (iX+2, iY), fgColor
  9227.     PSET (iX+1, iY), fgColor
  9228.     PSET (iX+0, iY), fgColor
  9229. End Sub ' DrawBitPatternPSET183
  9230.  
  9231. Sub DrawBitPatternPSET184(  _
  9232.     imgScreen&, iCol As Integer, iRow As Integer, _
  9233.     iLine As Integer, _
  9234.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9235.     )
  9236.     Dim iX As Integer : iX = iCol * 8
  9237.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9238.     PSET (iX+7, iY), fgColor
  9239.     PSET (iX+6, iY), bgColor
  9240.     PSET (iX+5, iY), fgColor
  9241.     PSET (iX+4, iY), fgColor
  9242.     PSET (iX+3, iY), fgColor
  9243.     PSET (iX+2, iY), bgColor
  9244.     PSET (iX+1, iY), bgColor
  9245.     PSET (iX+0, iY), bgColor
  9246. End Sub ' DrawBitPatternPSET184
  9247.  
  9248. Sub DrawBitPatternPSET185(  _
  9249.     imgScreen&, iCol As Integer, iRow As Integer, _
  9250.     iLine As Integer, _
  9251.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9252.     )
  9253.     Dim iX As Integer : iX = iCol * 8
  9254.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9255.     PSET (iX+7, iY), fgColor
  9256.     PSET (iX+6, iY), bgColor
  9257.     PSET (iX+5, iY), fgColor
  9258.     PSET (iX+4, iY), fgColor
  9259.     PSET (iX+3, iY), fgColor
  9260.     PSET (iX+2, iY), bgColor
  9261.     PSET (iX+1, iY), bgColor
  9262.     PSET (iX+0, iY), fgColor
  9263. End Sub ' DrawBitPatternPSET185
  9264.  
  9265. Sub DrawBitPatternPSET186(  _
  9266.     imgScreen&, iCol As Integer, iRow As Integer, _
  9267.     iLine As Integer, _
  9268.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9269.     )
  9270.     Dim iX As Integer : iX = iCol * 8
  9271.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9272.     PSET (iX+7, iY), fgColor
  9273.     PSET (iX+6, iY), bgColor
  9274.     PSET (iX+5, iY), fgColor
  9275.     PSET (iX+4, iY), fgColor
  9276.     PSET (iX+3, iY), fgColor
  9277.     PSET (iX+2, iY), bgColor
  9278.     PSET (iX+1, iY), fgColor
  9279.     PSET (iX+0, iY), bgColor
  9280. End Sub ' DrawBitPatternPSET186
  9281.  
  9282. Sub DrawBitPatternPSET187(  _
  9283.     imgScreen&, iCol As Integer, iRow As Integer, _
  9284.     iLine As Integer, _
  9285.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9286.     )
  9287.     Dim iX As Integer : iX = iCol * 8
  9288.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9289.     PSET (iX+7, iY), fgColor
  9290.     PSET (iX+6, iY), bgColor
  9291.     PSET (iX+5, iY), fgColor
  9292.     PSET (iX+4, iY), fgColor
  9293.     PSET (iX+3, iY), fgColor
  9294.     PSET (iX+2, iY), bgColor
  9295.     PSET (iX+1, iY), fgColor
  9296.     PSET (iX+0, iY), fgColor
  9297. End Sub ' DrawBitPatternPSET187
  9298.  
  9299. Sub DrawBitPatternPSET188(  _
  9300.     imgScreen&, iCol As Integer, iRow As Integer, _
  9301.     iLine As Integer, _
  9302.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9303.     )
  9304.     Dim iX As Integer : iX = iCol * 8
  9305.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9306.     PSET (iX+7, iY), fgColor
  9307.     PSET (iX+6, iY), bgColor
  9308.     PSET (iX+5, iY), fgColor
  9309.     PSET (iX+4, iY), fgColor
  9310.     PSET (iX+3, iY), fgColor
  9311.     PSET (iX+2, iY), fgColor
  9312.     PSET (iX+1, iY), bgColor
  9313.     PSET (iX+0, iY), bgColor
  9314. End Sub ' DrawBitPatternPSET188
  9315.  
  9316. Sub DrawBitPatternPSET189(  _
  9317.     imgScreen&, iCol As Integer, iRow As Integer, _
  9318.     iLine As Integer, _
  9319.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9320.     )
  9321.     Dim iX As Integer : iX = iCol * 8
  9322.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9323.     PSET (iX+7, iY), fgColor
  9324.     PSET (iX+6, iY), bgColor
  9325.     PSET (iX+5, iY), fgColor
  9326.     PSET (iX+4, iY), fgColor
  9327.     PSET (iX+3, iY), fgColor
  9328.     PSET (iX+2, iY), fgColor
  9329.     PSET (iX+1, iY), bgColor
  9330.     PSET (iX+0, iY), fgColor
  9331. End Sub ' DrawBitPatternPSET189
  9332.  
  9333. Sub DrawBitPatternPSET190(  _
  9334.     imgScreen&, iCol As Integer, iRow As Integer, _
  9335.     iLine As Integer, _
  9336.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9337.     )
  9338.     Dim iX As Integer : iX = iCol * 8
  9339.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9340.     PSET (iX+7, iY), fgColor
  9341.     PSET (iX+6, iY), bgColor
  9342.     PSET (iX+5, iY), fgColor
  9343.     PSET (iX+4, iY), fgColor
  9344.     PSET (iX+3, iY), fgColor
  9345.     PSET (iX+2, iY), fgColor
  9346.     PSET (iX+1, iY), fgColor
  9347.     PSET (iX+0, iY), bgColor
  9348. End Sub ' DrawBitPatternPSET190
  9349.  
  9350. Sub DrawBitPatternPSET191(  _
  9351.     imgScreen&, iCol As Integer, iRow As Integer, _
  9352.     iLine As Integer, _
  9353.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9354.     )
  9355.     Dim iX As Integer : iX = iCol * 8
  9356.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9357.     PSET (iX+7, iY), fgColor
  9358.     PSET (iX+6, iY), bgColor
  9359.     PSET (iX+5, iY), fgColor
  9360.     PSET (iX+4, iY), fgColor
  9361.     PSET (iX+3, iY), fgColor
  9362.     PSET (iX+2, iY), fgColor
  9363.     PSET (iX+1, iY), fgColor
  9364.     PSET (iX+0, iY), fgColor
  9365. End Sub ' DrawBitPatternPSET191
  9366.  
  9367. Sub DrawBitPatternPSET192(  _
  9368.     imgScreen&, iCol As Integer, iRow As Integer, _
  9369.     iLine As Integer, _
  9370.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9371.     )
  9372.     Dim iX As Integer : iX = iCol * 8
  9373.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9374.     PSET (iX+7, iY), fgColor
  9375.     PSET (iX+6, iY), fgColor
  9376.     PSET (iX+5, iY), bgColor
  9377.     PSET (iX+4, iY), bgColor
  9378.     PSET (iX+3, iY), bgColor
  9379.     PSET (iX+2, iY), bgColor
  9380.     PSET (iX+1, iY), bgColor
  9381.     PSET (iX+0, iY), bgColor
  9382. End Sub ' DrawBitPatternPSET192
  9383.  
  9384. Sub DrawBitPatternPSET193(  _
  9385.     imgScreen&, iCol As Integer, iRow As Integer, _
  9386.     iLine As Integer, _
  9387.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9388.     )
  9389.     Dim iX As Integer : iX = iCol * 8
  9390.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9391.     PSET (iX+7, iY), fgColor
  9392.     PSET (iX+6, iY), fgColor
  9393.     PSET (iX+5, iY), bgColor
  9394.     PSET (iX+4, iY), bgColor
  9395.     PSET (iX+3, iY), bgColor
  9396.     PSET (iX+2, iY), bgColor
  9397.     PSET (iX+1, iY), bgColor
  9398.     PSET (iX+0, iY), fgColor
  9399. End Sub ' DrawBitPatternPSET193
  9400.  
  9401. Sub DrawBitPatternPSET194(  _
  9402.     imgScreen&, iCol As Integer, iRow As Integer, _
  9403.     iLine As Integer, _
  9404.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9405.     )
  9406.     Dim iX As Integer : iX = iCol * 8
  9407.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9408.     PSET (iX+7, iY), fgColor
  9409.     PSET (iX+6, iY), fgColor
  9410.     PSET (iX+5, iY), bgColor
  9411.     PSET (iX+4, iY), bgColor
  9412.     PSET (iX+3, iY), bgColor
  9413.     PSET (iX+2, iY), bgColor
  9414.     PSET (iX+1, iY), fgColor
  9415.     PSET (iX+0, iY), bgColor
  9416. End Sub ' DrawBitPatternPSET194
  9417.  
  9418. Sub DrawBitPatternPSET195(  _
  9419.     imgScreen&, iCol As Integer, iRow As Integer, _
  9420.     iLine As Integer, _
  9421.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9422.     )
  9423.     Dim iX As Integer : iX = iCol * 8
  9424.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9425.     PSET (iX+7, iY), fgColor
  9426.     PSET (iX+6, iY), fgColor
  9427.     PSET (iX+5, iY), bgColor
  9428.     PSET (iX+4, iY), bgColor
  9429.     PSET (iX+3, iY), bgColor
  9430.     PSET (iX+2, iY), bgColor
  9431.     PSET (iX+1, iY), fgColor
  9432.     PSET (iX+0, iY), fgColor
  9433. End Sub ' DrawBitPatternPSET195
  9434.  
  9435. Sub DrawBitPatternPSET196(  _
  9436.     imgScreen&, iCol As Integer, iRow As Integer, _
  9437.     iLine As Integer, _
  9438.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9439.     )
  9440.     Dim iX As Integer : iX = iCol * 8
  9441.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9442.     PSET (iX+7, iY), fgColor
  9443.     PSET (iX+6, iY), fgColor
  9444.     PSET (iX+5, iY), bgColor
  9445.     PSET (iX+4, iY), bgColor
  9446.     PSET (iX+3, iY), bgColor
  9447.     PSET (iX+2, iY), fgColor
  9448.     PSET (iX+1, iY), bgColor
  9449.     PSET (iX+0, iY), bgColor
  9450. End Sub ' DrawBitPatternPSET196
  9451.  
  9452. Sub DrawBitPatternPSET197(  _
  9453.     imgScreen&, iCol As Integer, iRow As Integer, _
  9454.     iLine As Integer, _
  9455.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9456.     )
  9457.     Dim iX As Integer : iX = iCol * 8
  9458.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9459.     PSET (iX+7, iY), fgColor
  9460.     PSET (iX+6, iY), fgColor
  9461.     PSET (iX+5, iY), bgColor
  9462.     PSET (iX+4, iY), bgColor
  9463.     PSET (iX+3, iY), bgColor
  9464.     PSET (iX+2, iY), fgColor
  9465.     PSET (iX+1, iY), bgColor
  9466.     PSET (iX+0, iY), fgColor
  9467. End Sub ' DrawBitPatternPSET197
  9468.  
  9469. Sub DrawBitPatternPSET198(  _
  9470.     imgScreen&, iCol As Integer, iRow As Integer, _
  9471.     iLine As Integer, _
  9472.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9473.     )
  9474.     Dim iX As Integer : iX = iCol * 8
  9475.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9476.     PSET (iX+7, iY), fgColor
  9477.     PSET (iX+6, iY), fgColor
  9478.     PSET (iX+5, iY), bgColor
  9479.     PSET (iX+4, iY), bgColor
  9480.     PSET (iX+3, iY), bgColor
  9481.     PSET (iX+2, iY), fgColor
  9482.     PSET (iX+1, iY), fgColor
  9483.     PSET (iX+0, iY), bgColor
  9484. End Sub ' DrawBitPatternPSET198
  9485.  
  9486. Sub DrawBitPatternPSET199(  _
  9487.     imgScreen&, iCol As Integer, iRow As Integer, _
  9488.     iLine As Integer, _
  9489.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9490.     )
  9491.     Dim iX As Integer : iX = iCol * 8
  9492.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9493.     PSET (iX+7, iY), fgColor
  9494.     PSET (iX+6, iY), fgColor
  9495.     PSET (iX+5, iY), bgColor
  9496.     PSET (iX+4, iY), bgColor
  9497.     PSET (iX+3, iY), bgColor
  9498.     PSET (iX+2, iY), fgColor
  9499.     PSET (iX+1, iY), fgColor
  9500.     PSET (iX+0, iY), fgColor
  9501. End Sub ' DrawBitPatternPSET199
  9502.  
  9503. Sub DrawBitPatternPSET200(  _
  9504.     imgScreen&, iCol As Integer, iRow As Integer, _
  9505.     iLine As Integer, _
  9506.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9507.     )
  9508.     Dim iX As Integer : iX = iCol * 8
  9509.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9510.     PSET (iX+7, iY), fgColor
  9511.     PSET (iX+6, iY), fgColor
  9512.     PSET (iX+5, iY), bgColor
  9513.     PSET (iX+4, iY), bgColor
  9514.     PSET (iX+3, iY), fgColor
  9515.     PSET (iX+2, iY), bgColor
  9516.     PSET (iX+1, iY), bgColor
  9517.     PSET (iX+0, iY), bgColor
  9518. End Sub ' DrawBitPatternPSET200
  9519.  
  9520. Sub DrawBitPatternPSET201(  _
  9521.     imgScreen&, iCol As Integer, iRow As Integer, _
  9522.     iLine As Integer, _
  9523.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9524.     )
  9525.     Dim iX As Integer : iX = iCol * 8
  9526.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9527.     PSET (iX+7, iY), fgColor
  9528.     PSET (iX+6, iY), fgColor
  9529.     PSET (iX+5, iY), bgColor
  9530.     PSET (iX+4, iY), bgColor
  9531.     PSET (iX+3, iY), fgColor
  9532.     PSET (iX+2, iY), bgColor
  9533.     PSET (iX+1, iY), bgColor
  9534.     PSET (iX+0, iY), fgColor
  9535. End Sub ' DrawBitPatternPSET201
  9536.  
  9537. Sub DrawBitPatternPSET202(  _
  9538.     imgScreen&, iCol As Integer, iRow As Integer, _
  9539.     iLine As Integer, _
  9540.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9541.     )
  9542.     Dim iX As Integer : iX = iCol * 8
  9543.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9544.     PSET (iX+7, iY), fgColor
  9545.     PSET (iX+6, iY), fgColor
  9546.     PSET (iX+5, iY), bgColor
  9547.     PSET (iX+4, iY), bgColor
  9548.     PSET (iX+3, iY), fgColor
  9549.     PSET (iX+2, iY), bgColor
  9550.     PSET (iX+1, iY), fgColor
  9551.     PSET (iX+0, iY), bgColor
  9552. End Sub ' DrawBitPatternPSET202
  9553.  
  9554. Sub DrawBitPatternPSET203(  _
  9555.     imgScreen&, iCol As Integer, iRow As Integer, _
  9556.     iLine As Integer, _
  9557.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9558.     )
  9559.     Dim iX As Integer : iX = iCol * 8
  9560.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9561.     PSET (iX+7, iY), fgColor
  9562.     PSET (iX+6, iY), fgColor
  9563.     PSET (iX+5, iY), bgColor
  9564.     PSET (iX+4, iY), bgColor
  9565.     PSET (iX+3, iY), fgColor
  9566.     PSET (iX+2, iY), bgColor
  9567.     PSET (iX+1, iY), fgColor
  9568.     PSET (iX+0, iY), fgColor
  9569. End Sub ' DrawBitPatternPSET203
  9570.  
  9571. Sub DrawBitPatternPSET204(  _
  9572.     imgScreen&, iCol As Integer, iRow As Integer, _
  9573.     iLine As Integer, _
  9574.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9575.     )
  9576.     Dim iX As Integer : iX = iCol * 8
  9577.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9578.     PSET (iX+7, iY), fgColor
  9579.     PSET (iX+6, iY), fgColor
  9580.     PSET (iX+5, iY), bgColor
  9581.     PSET (iX+4, iY), bgColor
  9582.     PSET (iX+3, iY), fgColor
  9583.     PSET (iX+2, iY), fgColor
  9584.     PSET (iX+1, iY), bgColor
  9585.     PSET (iX+0, iY), bgColor
  9586. End Sub ' DrawBitPatternPSET204
  9587.  
  9588. Sub DrawBitPatternPSET205(  _
  9589.     imgScreen&, iCol As Integer, iRow As Integer, _
  9590.     iLine As Integer, _
  9591.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9592.     )
  9593.     Dim iX As Integer : iX = iCol * 8
  9594.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9595.     PSET (iX+7, iY), fgColor
  9596.     PSET (iX+6, iY), fgColor
  9597.     PSET (iX+5, iY), bgColor
  9598.     PSET (iX+4, iY), bgColor
  9599.     PSET (iX+3, iY), fgColor
  9600.     PSET (iX+2, iY), fgColor
  9601.     PSET (iX+1, iY), bgColor
  9602.     PSET (iX+0, iY), fgColor
  9603. End Sub ' DrawBitPatternPSET205
  9604.  
  9605. Sub DrawBitPatternPSET206(  _
  9606.     imgScreen&, iCol As Integer, iRow As Integer, _
  9607.     iLine As Integer, _
  9608.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9609.     )
  9610.     Dim iX As Integer : iX = iCol * 8
  9611.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9612.     PSET (iX+7, iY), fgColor
  9613.     PSET (iX+6, iY), fgColor
  9614.     PSET (iX+5, iY), bgColor
  9615.     PSET (iX+4, iY), bgColor
  9616.     PSET (iX+3, iY), fgColor
  9617.     PSET (iX+2, iY), fgColor
  9618.     PSET (iX+1, iY), fgColor
  9619.     PSET (iX+0, iY), bgColor
  9620. End Sub ' DrawBitPatternPSET206
  9621.  
  9622. Sub DrawBitPatternPSET207(  _
  9623.     imgScreen&, iCol As Integer, iRow As Integer, _
  9624.     iLine As Integer, _
  9625.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9626.     )
  9627.     Dim iX As Integer : iX = iCol * 8
  9628.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9629.     PSET (iX+7, iY), fgColor
  9630.     PSET (iX+6, iY), fgColor
  9631.     PSET (iX+5, iY), bgColor
  9632.     PSET (iX+4, iY), bgColor
  9633.     PSET (iX+3, iY), fgColor
  9634.     PSET (iX+2, iY), fgColor
  9635.     PSET (iX+1, iY), fgColor
  9636.     PSET (iX+0, iY), fgColor
  9637. End Sub ' DrawBitPatternPSET207
  9638.  
  9639. Sub DrawBitPatternPSET208(  _
  9640.     imgScreen&, iCol As Integer, iRow As Integer, _
  9641.     iLine As Integer, _
  9642.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9643.     )
  9644.     Dim iX As Integer : iX = iCol * 8
  9645.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9646.     PSET (iX+7, iY), fgColor
  9647.     PSET (iX+6, iY), fgColor
  9648.     PSET (iX+5, iY), bgColor
  9649.     PSET (iX+4, iY), fgColor
  9650.     PSET (iX+3, iY), bgColor
  9651.     PSET (iX+2, iY), bgColor
  9652.     PSET (iX+1, iY), bgColor
  9653.     PSET (iX+0, iY), bgColor
  9654. End Sub ' DrawBitPatternPSET208
  9655.  
  9656. Sub DrawBitPatternPSET209(  _
  9657.     imgScreen&, iCol As Integer, iRow As Integer, _
  9658.     iLine As Integer, _
  9659.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9660.     )
  9661.     Dim iX As Integer : iX = iCol * 8
  9662.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9663.     PSET (iX+7, iY), fgColor
  9664.     PSET (iX+6, iY), fgColor
  9665.     PSET (iX+5, iY), bgColor
  9666.     PSET (iX+4, iY), fgColor
  9667.     PSET (iX+3, iY), bgColor
  9668.     PSET (iX+2, iY), bgColor
  9669.     PSET (iX+1, iY), bgColor
  9670.     PSET (iX+0, iY), fgColor
  9671. End Sub ' DrawBitPatternPSET209
  9672.  
  9673. Sub DrawBitPatternPSET210(  _
  9674.     imgScreen&, iCol As Integer, iRow As Integer, _
  9675.     iLine As Integer, _
  9676.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9677.     )
  9678.     Dim iX As Integer : iX = iCol * 8
  9679.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9680.     PSET (iX+7, iY), fgColor
  9681.     PSET (iX+6, iY), fgColor
  9682.     PSET (iX+5, iY), bgColor
  9683.     PSET (iX+4, iY), fgColor
  9684.     PSET (iX+3, iY), bgColor
  9685.     PSET (iX+2, iY), bgColor
  9686.     PSET (iX+1, iY), fgColor
  9687.     PSET (iX+0, iY), bgColor
  9688. End Sub ' DrawBitPatternPSET210
  9689.  
  9690. Sub DrawBitPatternPSET211(  _
  9691.     imgScreen&, iCol As Integer, iRow As Integer, _
  9692.     iLine As Integer, _
  9693.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9694.     )
  9695.     Dim iX As Integer : iX = iCol * 8
  9696.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9697.     PSET (iX+7, iY), fgColor
  9698.     PSET (iX+6, iY), fgColor
  9699.     PSET (iX+5, iY), bgColor
  9700.     PSET (iX+4, iY), fgColor
  9701.     PSET (iX+3, iY), bgColor
  9702.     PSET (iX+2, iY), bgColor
  9703.     PSET (iX+1, iY), fgColor
  9704.     PSET (iX+0, iY), fgColor
  9705. End Sub ' DrawBitPatternPSET211
  9706.  
  9707. Sub DrawBitPatternPSET212(  _
  9708.     imgScreen&, iCol As Integer, iRow As Integer, _
  9709.     iLine As Integer, _
  9710.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9711.     )
  9712.     Dim iX As Integer : iX = iCol * 8
  9713.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9714.     PSET (iX+7, iY), fgColor
  9715.     PSET (iX+6, iY), fgColor
  9716.     PSET (iX+5, iY), bgColor
  9717.     PSET (iX+4, iY), fgColor
  9718.     PSET (iX+3, iY), bgColor
  9719.     PSET (iX+2, iY), fgColor
  9720.     PSET (iX+1, iY), bgColor
  9721.     PSET (iX+0, iY), bgColor
  9722. End Sub ' DrawBitPatternPSET212
  9723.  
  9724. Sub DrawBitPatternPSET213(  _
  9725.     imgScreen&, iCol As Integer, iRow As Integer, _
  9726.     iLine As Integer, _
  9727.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9728.     )
  9729.     Dim iX As Integer : iX = iCol * 8
  9730.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9731.     PSET (iX+7, iY), fgColor
  9732.     PSET (iX+6, iY), fgColor
  9733.     PSET (iX+5, iY), bgColor
  9734.     PSET (iX+4, iY), fgColor
  9735.     PSET (iX+3, iY), bgColor
  9736.     PSET (iX+2, iY), fgColor
  9737.     PSET (iX+1, iY), bgColor
  9738.     PSET (iX+0, iY), fgColor
  9739. End Sub ' DrawBitPatternPSET213
  9740.  
  9741. Sub DrawBitPatternPSET214(  _
  9742.     imgScreen&, iCol As Integer, iRow As Integer, _
  9743.     iLine As Integer, _
  9744.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9745.     )
  9746.     Dim iX As Integer : iX = iCol * 8
  9747.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9748.     PSET (iX+7, iY), fgColor
  9749.     PSET (iX+6, iY), fgColor
  9750.     PSET (iX+5, iY), bgColor
  9751.     PSET (iX+4, iY), fgColor
  9752.     PSET (iX+3, iY), bgColor
  9753.     PSET (iX+2, iY), fgColor
  9754.     PSET (iX+1, iY), fgColor
  9755.     PSET (iX+0, iY), bgColor
  9756. End Sub ' DrawBitPatternPSET214
  9757.  
  9758. Sub DrawBitPatternPSET215(  _
  9759.     imgScreen&, iCol As Integer, iRow As Integer, _
  9760.     iLine As Integer, _
  9761.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9762.     )
  9763.     Dim iX As Integer : iX = iCol * 8
  9764.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9765.     PSET (iX+7, iY), fgColor
  9766.     PSET (iX+6, iY), fgColor
  9767.     PSET (iX+5, iY), bgColor
  9768.     PSET (iX+4, iY), fgColor
  9769.     PSET (iX+3, iY), bgColor
  9770.     PSET (iX+2, iY), fgColor
  9771.     PSET (iX+1, iY), fgColor
  9772.     PSET (iX+0, iY), fgColor
  9773. End Sub ' DrawBitPatternPSET215
  9774.  
  9775. Sub DrawBitPatternPSET216(  _
  9776.     imgScreen&, iCol As Integer, iRow As Integer, _
  9777.     iLine As Integer, _
  9778.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9779.     )
  9780.     Dim iX As Integer : iX = iCol * 8
  9781.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9782.     PSET (iX+7, iY), fgColor
  9783.     PSET (iX+6, iY), fgColor
  9784.     PSET (iX+5, iY), bgColor
  9785.     PSET (iX+4, iY), fgColor
  9786.     PSET (iX+3, iY), fgColor
  9787.     PSET (iX+2, iY), bgColor
  9788.     PSET (iX+1, iY), bgColor
  9789.     PSET (iX+0, iY), bgColor
  9790. End Sub ' DrawBitPatternPSET216
  9791.  
  9792. Sub DrawBitPatternPSET217(  _
  9793.     imgScreen&, iCol As Integer, iRow As Integer, _
  9794.     iLine As Integer, _
  9795.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9796.     )
  9797.     Dim iX As Integer : iX = iCol * 8
  9798.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9799.     PSET (iX+7, iY), fgColor
  9800.     PSET (iX+6, iY), fgColor
  9801.     PSET (iX+5, iY), bgColor
  9802.     PSET (iX+4, iY), fgColor
  9803.     PSET (iX+3, iY), fgColor
  9804.     PSET (iX+2, iY), bgColor
  9805.     PSET (iX+1, iY), bgColor
  9806.     PSET (iX+0, iY), fgColor
  9807. End Sub ' DrawBitPatternPSET217
  9808.  
  9809. Sub DrawBitPatternPSET218(  _
  9810.     imgScreen&, iCol As Integer, iRow As Integer, _
  9811.     iLine As Integer, _
  9812.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9813.     )
  9814.     Dim iX As Integer : iX = iCol * 8
  9815.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9816.     PSET (iX+7, iY), fgColor
  9817.     PSET (iX+6, iY), fgColor
  9818.     PSET (iX+5, iY), bgColor
  9819.     PSET (iX+4, iY), fgColor
  9820.     PSET (iX+3, iY), fgColor
  9821.     PSET (iX+2, iY), bgColor
  9822.     PSET (iX+1, iY), fgColor
  9823.     PSET (iX+0, iY), bgColor
  9824. End Sub ' DrawBitPatternPSET218
  9825.  
  9826. Sub DrawBitPatternPSET219(  _
  9827.     imgScreen&, iCol As Integer, iRow As Integer, _
  9828.     iLine As Integer, _
  9829.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9830.     )
  9831.     Dim iX As Integer : iX = iCol * 8
  9832.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9833.     PSET (iX+7, iY), fgColor
  9834.     PSET (iX+6, iY), fgColor
  9835.     PSET (iX+5, iY), bgColor
  9836.     PSET (iX+4, iY), fgColor
  9837.     PSET (iX+3, iY), fgColor
  9838.     PSET (iX+2, iY), bgColor
  9839.     PSET (iX+1, iY), fgColor
  9840.     PSET (iX+0, iY), fgColor
  9841. End Sub ' DrawBitPatternPSET219
  9842.  
  9843. Sub DrawBitPatternPSET220(  _
  9844.     imgScreen&, iCol As Integer, iRow As Integer, _
  9845.     iLine As Integer, _
  9846.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9847.     )
  9848.     Dim iX As Integer : iX = iCol * 8
  9849.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9850.     PSET (iX+7, iY), fgColor
  9851.     PSET (iX+6, iY), fgColor
  9852.     PSET (iX+5, iY), bgColor
  9853.     PSET (iX+4, iY), fgColor
  9854.     PSET (iX+3, iY), fgColor
  9855.     PSET (iX+2, iY), fgColor
  9856.     PSET (iX+1, iY), bgColor
  9857.     PSET (iX+0, iY), bgColor
  9858. End Sub ' DrawBitPatternPSET220
  9859.  
  9860. Sub DrawBitPatternPSET221(  _
  9861.     imgScreen&, iCol As Integer, iRow As Integer, _
  9862.     iLine As Integer, _
  9863.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9864.     )
  9865.     Dim iX As Integer : iX = iCol * 8
  9866.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9867.     PSET (iX+7, iY), fgColor
  9868.     PSET (iX+6, iY), fgColor
  9869.     PSET (iX+5, iY), bgColor
  9870.     PSET (iX+4, iY), fgColor
  9871.     PSET (iX+3, iY), fgColor
  9872.     PSET (iX+2, iY), fgColor
  9873.     PSET (iX+1, iY), bgColor
  9874.     PSET (iX+0, iY), fgColor
  9875. End Sub ' DrawBitPatternPSET221
  9876.  
  9877. Sub DrawBitPatternPSET222(  _
  9878.     imgScreen&, iCol As Integer, iRow As Integer, _
  9879.     iLine As Integer, _
  9880.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9881.     )
  9882.     Dim iX As Integer : iX = iCol * 8
  9883.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9884.     PSET (iX+7, iY), fgColor
  9885.     PSET (iX+6, iY), fgColor
  9886.     PSET (iX+5, iY), bgColor
  9887.     PSET (iX+4, iY), fgColor
  9888.     PSET (iX+3, iY), fgColor
  9889.     PSET (iX+2, iY), fgColor
  9890.     PSET (iX+1, iY), fgColor
  9891.     PSET (iX+0, iY), bgColor
  9892. End Sub ' DrawBitPatternPSET222
  9893.  
  9894. Sub DrawBitPatternPSET223(  _
  9895.     imgScreen&, iCol As Integer, iRow As Integer, _
  9896.     iLine As Integer, _
  9897.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9898.     )
  9899.     Dim iX As Integer : iX = iCol * 8
  9900.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9901.     PSET (iX+7, iY), fgColor
  9902.     PSET (iX+6, iY), fgColor
  9903.     PSET (iX+5, iY), bgColor
  9904.     PSET (iX+4, iY), fgColor
  9905.     PSET (iX+3, iY), fgColor
  9906.     PSET (iX+2, iY), fgColor
  9907.     PSET (iX+1, iY), fgColor
  9908.     PSET (iX+0, iY), fgColor
  9909. End Sub ' DrawBitPatternPSET223
  9910.  
  9911. Sub DrawBitPatternPSET224(  _
  9912.     imgScreen&, iCol As Integer, iRow As Integer, _
  9913.     iLine As Integer, _
  9914.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9915.     )
  9916.     Dim iX As Integer : iX = iCol * 8
  9917.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9918.     PSET (iX+7, iY), fgColor
  9919.     PSET (iX+6, iY), fgColor
  9920.     PSET (iX+5, iY), fgColor
  9921.     PSET (iX+4, iY), bgColor
  9922.     PSET (iX+3, iY), bgColor
  9923.     PSET (iX+2, iY), bgColor
  9924.     PSET (iX+1, iY), bgColor
  9925.     PSET (iX+0, iY), bgColor
  9926. End Sub ' DrawBitPatternPSET224
  9927.  
  9928. Sub DrawBitPatternPSET225(  _
  9929.     imgScreen&, iCol As Integer, iRow As Integer, _
  9930.     iLine As Integer, _
  9931.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9932.     )
  9933.     Dim iX As Integer : iX = iCol * 8
  9934.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9935.     PSET (iX+7, iY), fgColor
  9936.     PSET (iX+6, iY), fgColor
  9937.     PSET (iX+5, iY), fgColor
  9938.     PSET (iX+4, iY), bgColor
  9939.     PSET (iX+3, iY), bgColor
  9940.     PSET (iX+2, iY), bgColor
  9941.     PSET (iX+1, iY), bgColor
  9942.     PSET (iX+0, iY), fgColor
  9943. End Sub ' DrawBitPatternPSET225
  9944.  
  9945. Sub DrawBitPatternPSET226(  _
  9946.     imgScreen&, iCol As Integer, iRow As Integer, _
  9947.     iLine As Integer, _
  9948.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9949.     )
  9950.     Dim iX As Integer : iX = iCol * 8
  9951.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9952.     PSET (iX+7, iY), fgColor
  9953.     PSET (iX+6, iY), fgColor
  9954.     PSET (iX+5, iY), fgColor
  9955.     PSET (iX+4, iY), bgColor
  9956.     PSET (iX+3, iY), bgColor
  9957.     PSET (iX+2, iY), bgColor
  9958.     PSET (iX+1, iY), fgColor
  9959.     PSET (iX+0, iY), bgColor
  9960. End Sub ' DrawBitPatternPSET226
  9961.  
  9962. Sub DrawBitPatternPSET227(  _
  9963.     imgScreen&, iCol As Integer, iRow As Integer, _
  9964.     iLine As Integer, _
  9965.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9966.     )
  9967.     Dim iX As Integer : iX = iCol * 8
  9968.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9969.     PSET (iX+7, iY), fgColor
  9970.     PSET (iX+6, iY), fgColor
  9971.     PSET (iX+5, iY), fgColor
  9972.     PSET (iX+4, iY), bgColor
  9973.     PSET (iX+3, iY), bgColor
  9974.     PSET (iX+2, iY), bgColor
  9975.     PSET (iX+1, iY), fgColor
  9976.     PSET (iX+0, iY), fgColor
  9977. End Sub ' DrawBitPatternPSET227
  9978.  
  9979. Sub DrawBitPatternPSET228(  _
  9980.     imgScreen&, iCol As Integer, iRow As Integer, _
  9981.     iLine As Integer, _
  9982.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  9983.     )
  9984.     Dim iX As Integer : iX = iCol * 8
  9985.     Dim iY As Integer : iY = (iRow * 8) + iLine
  9986.     PSET (iX+7, iY), fgColor
  9987.     PSET (iX+6, iY), fgColor
  9988.     PSET (iX+5, iY), fgColor
  9989.     PSET (iX+4, iY), bgColor
  9990.     PSET (iX+3, iY), bgColor
  9991.     PSET (iX+2, iY), fgColor
  9992.     PSET (iX+1, iY), bgColor
  9993.     PSET (iX+0, iY), bgColor
  9994. End Sub ' DrawBitPatternPSET228
  9995.  
  9996. Sub DrawBitPatternPSET229(  _
  9997.     imgScreen&, iCol As Integer, iRow As Integer, _
  9998.     iLine As Integer, _
  9999.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10000.     )
  10001.     Dim iX As Integer : iX = iCol * 8
  10002.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10003.     PSET (iX+7, iY), fgColor
  10004.     PSET (iX+6, iY), fgColor
  10005.     PSET (iX+5, iY), fgColor
  10006.     PSET (iX+4, iY), bgColor
  10007.     PSET (iX+3, iY), bgColor
  10008.     PSET (iX+2, iY), fgColor
  10009.     PSET (iX+1, iY), bgColor
  10010.     PSET (iX+0, iY), fgColor
  10011. End Sub ' DrawBitPatternPSET229
  10012.  
  10013. Sub DrawBitPatternPSET230(  _
  10014.     imgScreen&, iCol As Integer, iRow As Integer, _
  10015.     iLine As Integer, _
  10016.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10017.     )
  10018.     Dim iX As Integer : iX = iCol * 8
  10019.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10020.     PSET (iX+7, iY), fgColor
  10021.     PSET (iX+6, iY), fgColor
  10022.     PSET (iX+5, iY), fgColor
  10023.     PSET (iX+4, iY), bgColor
  10024.     PSET (iX+3, iY), bgColor
  10025.     PSET (iX+2, iY), fgColor
  10026.     PSET (iX+1, iY), fgColor
  10027.     PSET (iX+0, iY), bgColor
  10028. End Sub ' DrawBitPatternPSET230
  10029.  
  10030. Sub DrawBitPatternPSET231(  _
  10031.     imgScreen&, iCol As Integer, iRow As Integer, _
  10032.     iLine As Integer, _
  10033.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10034.     )
  10035.     Dim iX As Integer : iX = iCol * 8
  10036.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10037.     PSET (iX+7, iY), fgColor
  10038.     PSET (iX+6, iY), fgColor
  10039.     PSET (iX+5, iY), fgColor
  10040.     PSET (iX+4, iY), bgColor
  10041.     PSET (iX+3, iY), bgColor
  10042.     PSET (iX+2, iY), fgColor
  10043.     PSET (iX+1, iY), fgColor
  10044.     PSET (iX+0, iY), fgColor
  10045. End Sub ' DrawBitPatternPSET231
  10046.  
  10047. Sub DrawBitPatternPSET232(  _
  10048.     imgScreen&, iCol As Integer, iRow As Integer, _
  10049.     iLine As Integer, _
  10050.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10051.     )
  10052.     Dim iX As Integer : iX = iCol * 8
  10053.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10054.     PSET (iX+7, iY), fgColor
  10055.     PSET (iX+6, iY), fgColor
  10056.     PSET (iX+5, iY), fgColor
  10057.     PSET (iX+4, iY), bgColor
  10058.     PSET (iX+3, iY), fgColor
  10059.     PSET (iX+2, iY), bgColor
  10060.     PSET (iX+1, iY), bgColor
  10061.     PSET (iX+0, iY), bgColor
  10062. End Sub ' DrawBitPatternPSET232
  10063.  
  10064. Sub DrawBitPatternPSET233(  _
  10065.     imgScreen&, iCol As Integer, iRow As Integer, _
  10066.     iLine As Integer, _
  10067.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10068.     )
  10069.     Dim iX As Integer : iX = iCol * 8
  10070.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10071.     PSET (iX+7, iY), fgColor
  10072.     PSET (iX+6, iY), fgColor
  10073.     PSET (iX+5, iY), fgColor
  10074.     PSET (iX+4, iY), bgColor
  10075.     PSET (iX+3, iY), fgColor
  10076.     PSET (iX+2, iY), bgColor
  10077.     PSET (iX+1, iY), bgColor
  10078.     PSET (iX+0, iY), fgColor
  10079. End Sub ' DrawBitPatternPSET233
  10080.  
  10081. Sub DrawBitPatternPSET234(  _
  10082.     imgScreen&, iCol As Integer, iRow As Integer, _
  10083.     iLine As Integer, _
  10084.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10085.     )
  10086.     Dim iX As Integer : iX = iCol * 8
  10087.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10088.     PSET (iX+7, iY), fgColor
  10089.     PSET (iX+6, iY), fgColor
  10090.     PSET (iX+5, iY), fgColor
  10091.     PSET (iX+4, iY), bgColor
  10092.     PSET (iX+3, iY), fgColor
  10093.     PSET (iX+2, iY), bgColor
  10094.     PSET (iX+1, iY), fgColor
  10095.     PSET (iX+0, iY), bgColor
  10096. End Sub ' DrawBitPatternPSET234
  10097.  
  10098. Sub DrawBitPatternPSET235(  _
  10099.     imgScreen&, iCol As Integer, iRow As Integer, _
  10100.     iLine As Integer, _
  10101.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10102.     )
  10103.     Dim iX As Integer : iX = iCol * 8
  10104.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10105.     PSET (iX+7, iY), fgColor
  10106.     PSET (iX+6, iY), fgColor
  10107.     PSET (iX+5, iY), fgColor
  10108.     PSET (iX+4, iY), bgColor
  10109.     PSET (iX+3, iY), fgColor
  10110.     PSET (iX+2, iY), bgColor
  10111.     PSET (iX+1, iY), fgColor
  10112.     PSET (iX+0, iY), fgColor
  10113. End Sub ' DrawBitPatternPSET235
  10114.  
  10115. Sub DrawBitPatternPSET236(  _
  10116.     imgScreen&, iCol As Integer, iRow As Integer, _
  10117.     iLine As Integer, _
  10118.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10119.     )
  10120.     Dim iX As Integer : iX = iCol * 8
  10121.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10122.     PSET (iX+7, iY), fgColor
  10123.     PSET (iX+6, iY), fgColor
  10124.     PSET (iX+5, iY), fgColor
  10125.     PSET (iX+4, iY), bgColor
  10126.     PSET (iX+3, iY), fgColor
  10127.     PSET (iX+2, iY), fgColor
  10128.     PSET (iX+1, iY), bgColor
  10129.     PSET (iX+0, iY), bgColor
  10130. End Sub ' DrawBitPatternPSET236
  10131.  
  10132. Sub DrawBitPatternPSET237(  _
  10133.     imgScreen&, iCol As Integer, iRow As Integer, _
  10134.     iLine As Integer, _
  10135.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10136.     )
  10137.     Dim iX As Integer : iX = iCol * 8
  10138.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10139.     PSET (iX+7, iY), fgColor
  10140.     PSET (iX+6, iY), fgColor
  10141.     PSET (iX+5, iY), fgColor
  10142.     PSET (iX+4, iY), bgColor
  10143.     PSET (iX+3, iY), fgColor
  10144.     PSET (iX+2, iY), fgColor
  10145.     PSET (iX+1, iY), bgColor
  10146.     PSET (iX+0, iY), fgColor
  10147. End Sub ' DrawBitPatternPSET237
  10148.  
  10149. Sub DrawBitPatternPSET238(  _
  10150.     imgScreen&, iCol As Integer, iRow As Integer, _
  10151.     iLine As Integer, _
  10152.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10153.     )
  10154.     Dim iX As Integer : iX = iCol * 8
  10155.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10156.     PSET (iX+7, iY), fgColor
  10157.     PSET (iX+6, iY), fgColor
  10158.     PSET (iX+5, iY), fgColor
  10159.     PSET (iX+4, iY), bgColor
  10160.     PSET (iX+3, iY), fgColor
  10161.     PSET (iX+2, iY), fgColor
  10162.     PSET (iX+1, iY), fgColor
  10163.     PSET (iX+0, iY), bgColor
  10164. End Sub ' DrawBitPatternPSET238
  10165.  
  10166. Sub DrawBitPatternPSET239(  _
  10167.     imgScreen&, iCol As Integer, iRow As Integer, _
  10168.     iLine As Integer, _
  10169.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10170.     )
  10171.     Dim iX As Integer : iX = iCol * 8
  10172.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10173.     PSET (iX+7, iY), fgColor
  10174.     PSET (iX+6, iY), fgColor
  10175.     PSET (iX+5, iY), fgColor
  10176.     PSET (iX+4, iY), bgColor
  10177.     PSET (iX+3, iY), fgColor
  10178.     PSET (iX+2, iY), fgColor
  10179.     PSET (iX+1, iY), fgColor
  10180.     PSET (iX+0, iY), fgColor
  10181. End Sub ' DrawBitPatternPSET239
  10182.  
  10183. Sub DrawBitPatternPSET240(  _
  10184.     imgScreen&, iCol As Integer, iRow As Integer, _
  10185.     iLine As Integer, _
  10186.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10187.     )
  10188.     Dim iX As Integer : iX = iCol * 8
  10189.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10190.     PSET (iX+7, iY), fgColor
  10191.     PSET (iX+6, iY), fgColor
  10192.     PSET (iX+5, iY), fgColor
  10193.     PSET (iX+4, iY), fgColor
  10194.     PSET (iX+3, iY), bgColor
  10195.     PSET (iX+2, iY), bgColor
  10196.     PSET (iX+1, iY), bgColor
  10197.     PSET (iX+0, iY), bgColor
  10198. End Sub ' DrawBitPatternPSET240
  10199.  
  10200. Sub DrawBitPatternPSET241(  _
  10201.     imgScreen&, iCol As Integer, iRow As Integer, _
  10202.     iLine As Integer, _
  10203.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10204.     )
  10205.     Dim iX As Integer : iX = iCol * 8
  10206.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10207.     PSET (iX+7, iY), fgColor
  10208.     PSET (iX+6, iY), fgColor
  10209.     PSET (iX+5, iY), fgColor
  10210.     PSET (iX+4, iY), fgColor
  10211.     PSET (iX+3, iY), bgColor
  10212.     PSET (iX+2, iY), bgColor
  10213.     PSET (iX+1, iY), bgColor
  10214.     PSET (iX+0, iY), fgColor
  10215. End Sub ' DrawBitPatternPSET241
  10216.  
  10217. Sub DrawBitPatternPSET242(  _
  10218.     imgScreen&, iCol As Integer, iRow As Integer, _
  10219.     iLine As Integer, _
  10220.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10221.     )
  10222.     Dim iX As Integer : iX = iCol * 8
  10223.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10224.     PSET (iX+7, iY), fgColor
  10225.     PSET (iX+6, iY), fgColor
  10226.     PSET (iX+5, iY), fgColor
  10227.     PSET (iX+4, iY), fgColor
  10228.     PSET (iX+3, iY), bgColor
  10229.     PSET (iX+2, iY), bgColor
  10230.     PSET (iX+1, iY), fgColor
  10231.     PSET (iX+0, iY), bgColor
  10232. End Sub ' DrawBitPatternPSET242
  10233.  
  10234. Sub DrawBitPatternPSET243(  _
  10235.     imgScreen&, iCol As Integer, iRow As Integer, _
  10236.     iLine As Integer, _
  10237.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10238.     )
  10239.     Dim iX As Integer : iX = iCol * 8
  10240.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10241.     PSET (iX+7, iY), fgColor
  10242.     PSET (iX+6, iY), fgColor
  10243.     PSET (iX+5, iY), fgColor
  10244.     PSET (iX+4, iY), fgColor
  10245.     PSET (iX+3, iY), bgColor
  10246.     PSET (iX+2, iY), bgColor
  10247.     PSET (iX+1, iY), fgColor
  10248.     PSET (iX+0, iY), fgColor
  10249. End Sub ' DrawBitPatternPSET243
  10250.  
  10251. Sub DrawBitPatternPSET244(  _
  10252.     imgScreen&, iCol As Integer, iRow As Integer, _
  10253.     iLine As Integer, _
  10254.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10255.     )
  10256.     Dim iX As Integer : iX = iCol * 8
  10257.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10258.     PSET (iX+7, iY), fgColor
  10259.     PSET (iX+6, iY), fgColor
  10260.     PSET (iX+5, iY), fgColor
  10261.     PSET (iX+4, iY), fgColor
  10262.     PSET (iX+3, iY), bgColor
  10263.     PSET (iX+2, iY), fgColor
  10264.     PSET (iX+1, iY), bgColor
  10265.     PSET (iX+0, iY), bgColor
  10266. End Sub ' DrawBitPatternPSET244
  10267.  
  10268. Sub DrawBitPatternPSET245(  _
  10269.     imgScreen&, iCol As Integer, iRow As Integer, _
  10270.     iLine As Integer, _
  10271.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10272.     )
  10273.     Dim iX As Integer : iX = iCol * 8
  10274.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10275.     PSET (iX+7, iY), fgColor
  10276.     PSET (iX+6, iY), fgColor
  10277.     PSET (iX+5, iY), fgColor
  10278.     PSET (iX+4, iY), fgColor
  10279.     PSET (iX+3, iY), bgColor
  10280.     PSET (iX+2, iY), fgColor
  10281.     PSET (iX+1, iY), bgColor
  10282.     PSET (iX+0, iY), fgColor
  10283. End Sub ' DrawBitPatternPSET245
  10284.  
  10285. Sub DrawBitPatternPSET246(  _
  10286.     imgScreen&, iCol As Integer, iRow As Integer, _
  10287.     iLine As Integer, _
  10288.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10289.     )
  10290.     Dim iX As Integer : iX = iCol * 8
  10291.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10292.     PSET (iX+7, iY), fgColor
  10293.     PSET (iX+6, iY), fgColor
  10294.     PSET (iX+5, iY), fgColor
  10295.     PSET (iX+4, iY), fgColor
  10296.     PSET (iX+3, iY), bgColor
  10297.     PSET (iX+2, iY), fgColor
  10298.     PSET (iX+1, iY), fgColor
  10299.     PSET (iX+0, iY), bgColor
  10300. End Sub ' DrawBitPatternPSET246
  10301.  
  10302. Sub DrawBitPatternPSET247(  _
  10303.     imgScreen&, iCol As Integer, iRow As Integer, _
  10304.     iLine As Integer, _
  10305.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10306.     )
  10307.     Dim iX As Integer : iX = iCol * 8
  10308.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10309.     PSET (iX+7, iY), fgColor
  10310.     PSET (iX+6, iY), fgColor
  10311.     PSET (iX+5, iY), fgColor
  10312.     PSET (iX+4, iY), fgColor
  10313.     PSET (iX+3, iY), bgColor
  10314.     PSET (iX+2, iY), fgColor
  10315.     PSET (iX+1, iY), fgColor
  10316.     PSET (iX+0, iY), fgColor
  10317. End Sub ' DrawBitPatternPSET247
  10318.  
  10319. Sub DrawBitPatternPSET248(  _
  10320.     imgScreen&, iCol As Integer, iRow As Integer, _
  10321.     iLine As Integer, _
  10322.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10323.     )
  10324.     Dim iX As Integer : iX = iCol * 8
  10325.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10326.     PSET (iX+7, iY), fgColor
  10327.     PSET (iX+6, iY), fgColor
  10328.     PSET (iX+5, iY), fgColor
  10329.     PSET (iX+4, iY), fgColor
  10330.     PSET (iX+3, iY), fgColor
  10331.     PSET (iX+2, iY), bgColor
  10332.     PSET (iX+1, iY), bgColor
  10333.     PSET (iX+0, iY), bgColor
  10334. End Sub ' DrawBitPatternPSET248
  10335.  
  10336. Sub DrawBitPatternPSET249(  _
  10337.     imgScreen&, iCol As Integer, iRow As Integer, _
  10338.     iLine As Integer, _
  10339.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10340.     )
  10341.     Dim iX As Integer : iX = iCol * 8
  10342.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10343.     PSET (iX+7, iY), fgColor
  10344.     PSET (iX+6, iY), fgColor
  10345.     PSET (iX+5, iY), fgColor
  10346.     PSET (iX+4, iY), fgColor
  10347.     PSET (iX+3, iY), fgColor
  10348.     PSET (iX+2, iY), bgColor
  10349.     PSET (iX+1, iY), bgColor
  10350.     PSET (iX+0, iY), fgColor
  10351. End Sub ' DrawBitPatternPSET249
  10352.  
  10353. Sub DrawBitPatternPSET250(  _
  10354.     imgScreen&, iCol As Integer, iRow As Integer, _
  10355.     iLine As Integer, _
  10356.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10357.     )
  10358.     Dim iX As Integer : iX = iCol * 8
  10359.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10360.     PSET (iX+7, iY), fgColor
  10361.     PSET (iX+6, iY), fgColor
  10362.     PSET (iX+5, iY), fgColor
  10363.     PSET (iX+4, iY), fgColor
  10364.     PSET (iX+3, iY), fgColor
  10365.     PSET (iX+2, iY), bgColor
  10366.     PSET (iX+1, iY), fgColor
  10367.     PSET (iX+0, iY), bgColor
  10368. End Sub ' DrawBitPatternPSET250
  10369.  
  10370. Sub DrawBitPatternPSET251(  _
  10371.     imgScreen&, iCol As Integer, iRow As Integer, _
  10372.     iLine As Integer, _
  10373.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10374.     )
  10375.     Dim iX As Integer : iX = iCol * 8
  10376.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10377.     PSET (iX+7, iY), fgColor
  10378.     PSET (iX+6, iY), fgColor
  10379.     PSET (iX+5, iY), fgColor
  10380.     PSET (iX+4, iY), fgColor
  10381.     PSET (iX+3, iY), fgColor
  10382.     PSET (iX+2, iY), bgColor
  10383.     PSET (iX+1, iY), fgColor
  10384.     PSET (iX+0, iY), fgColor
  10385. End Sub ' DrawBitPatternPSET251
  10386.  
  10387. Sub DrawBitPatternPSET252(  _
  10388.     imgScreen&, iCol As Integer, iRow As Integer, _
  10389.     iLine As Integer, _
  10390.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10391.     )
  10392.     Dim iX As Integer : iX = iCol * 8
  10393.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10394.     PSET (iX+7, iY), fgColor
  10395.     PSET (iX+6, iY), fgColor
  10396.     PSET (iX+5, iY), fgColor
  10397.     PSET (iX+4, iY), fgColor
  10398.     PSET (iX+3, iY), fgColor
  10399.     PSET (iX+2, iY), fgColor
  10400.     PSET (iX+1, iY), bgColor
  10401.     PSET (iX+0, iY), bgColor
  10402. End Sub ' DrawBitPatternPSET252
  10403.  
  10404. Sub DrawBitPatternPSET253(  _
  10405.     imgScreen&, iCol As Integer, iRow As Integer, _
  10406.     iLine As Integer, _
  10407.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10408.     )
  10409.     Dim iX As Integer : iX = iCol * 8
  10410.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10411.     PSET (iX+7, iY), fgColor
  10412.     PSET (iX+6, iY), fgColor
  10413.     PSET (iX+5, iY), fgColor
  10414.     PSET (iX+4, iY), fgColor
  10415.     PSET (iX+3, iY), fgColor
  10416.     PSET (iX+2, iY), fgColor
  10417.     PSET (iX+1, iY), bgColor
  10418.     PSET (iX+0, iY), fgColor
  10419. End Sub ' DrawBitPatternPSET253
  10420.  
  10421. Sub DrawBitPatternPSET254(  _
  10422.     imgScreen&, iCol As Integer, iRow As Integer, _
  10423.     iLine As Integer, _
  10424.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10425.     )
  10426.     Dim iX As Integer : iX = iCol * 8
  10427.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10428.     PSET (iX+7, iY), fgColor
  10429.     PSET (iX+6, iY), fgColor
  10430.     PSET (iX+5, iY), fgColor
  10431.     PSET (iX+4, iY), fgColor
  10432.     PSET (iX+3, iY), fgColor
  10433.     PSET (iX+2, iY), fgColor
  10434.     PSET (iX+1, iY), fgColor
  10435.     PSET (iX+0, iY), bgColor
  10436. End Sub ' DrawBitPatternPSET254
  10437.  
  10438. Sub DrawBitPatternPSET255(  _
  10439.     imgScreen&, iCol As Integer, iRow As Integer, _
  10440.     iLine As Integer, _
  10441.     fgColor As _UNSIGNED Long, bgColor As _UNSIGNED Long _
  10442.     )
  10443.     Dim iX As Integer : iX = iCol * 8
  10444.     Dim iY As Integer : iY = (iRow * 8) + iLine
  10445.     PSET (iX+7, iY), fgColor
  10446.     PSET (iX+6, iY), fgColor
  10447.     PSET (iX+5, iY), fgColor
  10448.     PSET (iX+4, iY), fgColor
  10449.     PSET (iX+3, iY), fgColor
  10450.     PSET (iX+2, iY), fgColor
  10451.     PSET (iX+1, iY), fgColor
  10452.     PSET (iX+0, iY), fgColor
  10453. End Sub ' DrawBitPatternPSET255
  10454. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  10455. ' END PSET 8-BIT PATTERN PLOTTING CODE
  10456. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  10457.  

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #1 on: February 19, 2022, 05:52:59 pm »
You might consider making a tile screen and then using putimage to display what you need of it into your program:

Code: QB64: [Select]
  1. Dim As _Unsigned Long Kolor(1)
  2.  
  3. DisplayScreen = _NewImage(640, 480, 32)
  4. Pattern = _NewImage(640, 480, 32)
  5. Screen DisplayScreen
  6.  
  7. Kolor(0) = _RGB32(255, 0, 0) 'Red
  8. Kolor(1) = _RGB32(255, 255, 0) 'Yellow
  9.  
  10.  
  11. _Dest Pattern
  12. For y = 0 To _Height Step 8
  13.     For x = 0 To _Width Step 8
  14.         Line (x, y)-Step(8, 8), Kolor(k), BF
  15.         k = k Xor 1
  16.     Next
  17.  
  18. _Dest DisplayScreen
  19. Screen DisplayScreen
  20. HardWareImage = _CopyImage(Pattern, 33)
  21. t# = Timer + 3.0 '3 seconds
  22.     count = count + 1
  23.     offset = offset Xor 8
  24.     _PutImage , HardWareImage, , (offset, 0)-(640, 480)
  25.     _Display
  26.  
  27.  
  28. _PutImage , Pattern
  29. Print Using "################## hardware only putimages in 3 seconds."; count
  30.  

A little over 10.7 million refreshes in 3 seconds on my laptop, for a whole page of refreshes.  I think Line BF will generate faster numbers for partial areas, but _putimage with hardware images is the fastest way to go for whole screen replacement/copies.  ;)
https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline madscijr

  • Seasoned Forum Regular
  • Posts: 295
    • View Profile
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #2 on: February 19, 2022, 07:05:10 pm »
You might consider making a tile screen and then using putimage to display what you need of it into your program:

Thanks for your reply.
I'm not at my PC where I can try out your code, but I have been using that method (copying tiles from a tile sheet image with putimage), but it is slow. Maybe the swap colors routine that changes the color is the bottleneck?

Offline madscijr

  • Seasoned Forum Regular
  • Posts: 295
    • View Profile
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #3 on: February 21, 2022, 02:26:21 pm »
You might consider making a tile screen and then using putimage to display what you need of it into your program:
...
A little over 10.7 million refreshes in 3 seconds on my laptop, for a whole page of refreshes. 
I think Line BF will generate faster numbers for partial areas,
but _putimage with hardware images is the fastest way to go for whole screen replacement/copies.  ;)

I tried your example and added a second test with a regular putImage to compare
and the results were dramatically faster for the hardware.
I added a third test for my draw tile routine (without swap color)
and that one was slightly faster than the putImage.

7,505,518 hardware putImage vs 1,433 regular (software?) putImage vs 1,562 DrawTile8 in 3 seconds.

The modified code is below - am I doing anything wrong for the regular non-hardware putImage to be so slow?

I'm not familiar with hardware putImage.
How would you just putimage for single tile (an 8x8 section) at a time?
I tried modifying the DrawTile8 to use hardware putimage, but it is giving an "invalid handle" error.

Also from your demo, I learned a much simpler way to do a timer, and togging between 2 numbers with xor is also a neat trick.

Thanks again!

Code: QB64: [Select]
  1.  
  2. ' Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
  3. ' https://qb64forum.alephc.xyz/index.php?topic=4674.0
  4. '
  5. ' SMcNeill, QB64 Developer
  6. ' « Reply #1 on: February 19, 2022, 05:52:59 pm »
  7. '
  8. ' You might consider making a tile screen and then
  9. ' using putimage to display what you need of it into your program:
  10. ' A little over 10.7 million refreshes in 3 seconds on my laptop,
  11. ' for a whole page of refreshes.
  12. ' I think Line BF will generate faster numbers for partial areas,
  13. ' but _putimage with hardware images is the fastest way to go
  14. ' for whole screen replacement/copies.  ;)
  15. ' https://github.com/SteveMcNeill/Steve64
  16. ' A github collection of all things Steve!
  17.  
  18. ' BOOLEAN VALUES
  19. Const FALSE = 0
  20. Const TRUE = Not FALSE
  21.  
  22. ' Declarations
  23. Dim arrColor(0 To 8) As _Unsigned Long
  24. Dim iColor1 As Integer
  25. Dim iColor2 As Integer
  26. Dim iColor3 As Integer
  27. Dim iColor4 As Integer
  28. Dim imgPattern1&
  29. Dim imgPattern2&
  30. Dim imgPattern3&
  31. Dim imgPattern4&
  32. Dim imgHardware&
  33. Dim imgScreen&
  34. Dim iOffsetX As Integer
  35. Dim t#
  36. Dim iHardwareCount As Long
  37. Dim iPutImageCount As Long
  38. Dim iDrawTileCount As Long
  39. Dim iHwDrawTileCount As Long
  40. Dim TileNum%
  41.  
  42. ' Define colors
  43. arrColor(0) = _RGB32(255, 0, 0) ' Red
  44. arrColor(2) = _RGB32(0, 255, 0) ' Green
  45. arrColor(1) = _RGB32(0, 0, 255) ' Blue
  46. arrColor(3) = _RGB32(255, 255, 0) ' Yellow
  47. arrColor(4) = _RGB32(255, 0, 255) ' Magenta
  48. arrColor(5) = _RGB32(0, 255, 255) ' Cyan
  49. arrColor(6) = _RGB32(255, 255, 255) ' White
  50. arrColor(7) = _RGB32(128, 128, 128) ' Gray
  51. arrColor(8) = _RGB32(0, 0, 0) ' Black
  52.  
  53. ' Setup screen
  54. imgScreen& = _NewImage(640, 480, 32)
  55. Screen imgScreen&
  56.  
  57. ' Create patterns
  58. imgPattern1& = _NewImage(640, 480, 32)
  59. imgPattern2& = _NewImage(640, 480, 32)
  60. imgPattern3& = _NewImage(640, 480, 32)
  61. imgPattern4& = _NewImage(640, 480, 32)
  62. iColor1 = 0
  63. iColor2 = 2
  64. iColor3 = 4
  65. iColor4 = 6
  66. For iY = 0 To _Height Step 8
  67.     For iX = 0 To _Width Step 8
  68.  
  69.         _Dest imgPattern1&
  70.         Line (iX, iY)-Step(8, 8), arrColor(iColor1), BF
  71.         iColor1 = iColor1 Xor 1
  72.  
  73.         _Dest imgPattern2&
  74.         Line (iX, iY)-Step(8, 8), arrColor(iColor2), BF
  75.         iColor2 = iColor2 Xor 1
  76.  
  77.         _Dest imgPattern3&
  78.         Line (iX, iY)-Step(8, 8), arrColor(iColor3), BF
  79.         iColor3 = iColor3 Xor 1
  80.  
  81.         _Dest imgPattern4&
  82.         Line (iX, iY)-Step(8, 8), arrColor(iColor4), BF
  83.         iColor4 = iColor4 Xor 1
  84.     Next iX
  85. Next iY
  86.  
  87. ' =============================================================================
  88. ' Test #1: copy using hardware image
  89. _Dest imgScreen&
  90. Screen imgScreen&
  91. imgHardware& = _CopyImage(imgPattern1&, 33)
  92. iOffsetX = 0
  93. iHardwareCount = 0
  94. t# = Timer + 3.0 ' 3 seconds
  95.     iHardwareCount = iHardwareCount + 1
  96.     iOffsetX = iOffsetX Xor 8
  97.     _PutImage , imgHardware&, , (iOffsetX, 0)-(640, 480)
  98.     _Display
  99. _PutImage , imgPattern1&
  100.  
  101. ' =============================================================================
  102. ' Test #2: copy using non-hardware putImage
  103. _Dest imgScreen&
  104. Screen imgScreen&
  105. iOffsetX = 0
  106. iPutImageCount = 0
  107. t# = Timer + 3.0 ' 3 seconds
  108.     iPutImageCount = iPutImageCount + 1
  109.     iOffsetX = iOffsetX Xor 8
  110.     _PutImage , imgPattern2&, , (iOffsetX, 0)-(640, 480)
  111.     _Display
  112.  
  113. ' =============================================================================
  114. ' Test #3: copy using DrawTile8 routine
  115. _Dest imgScreen&
  116. Screen imgScreen&
  117. TileNum% = 0
  118. iDrawTileCount = 0
  119. t# = Timer + 3.0 ' 3 seconds
  120.     iDrawTileCount = iDrawTileCount + 1
  121.     For iY = 0 To _Height \ 8
  122.         For iX = 0 To _Width \ 8
  123.             DrawTile8 imgPattern3&, TileNum%, imgScreen&, iX, iY
  124.             TileNum% = TileNum% Xor 1
  125.         Next iX
  126.     Next iY
  127.     _Display
  128.  
  129. ' =============================================================================
  130. ' Test #4: copy using DrawTileHw8 routine
  131.  
  132. ' DrawTileHw8 FAILS WITH "INVALID HANDLE" I MUST BE DOING IT WRONG!
  133. ' SO WE WILL SKIP THIS TEST
  134. If TRUE = FALSE Then
  135.     _Dest imgScreen&
  136.     Screen imgScreen&
  137.     TileNum% = 0
  138.     iHwDrawTileCount = 0
  139.     t# = Timer + 3.0 ' 3 seconds
  140.     Do
  141.         iHwDrawTileCount = iHwDrawTileCount + 1
  142.         For iY = 0 To _Height \ 8
  143.             For iX = 0 To _Width \ 8
  144.                 DrawTileHw8 imgPattern4&, TileNum%, imgScreen&, iX, iY
  145.                 TileNum% = TileNum% Xor 1
  146.             Next iX
  147.         Next iY
  148.         _Display
  149.     Loop Until Timer > t#
  150.  
  151. ' =============================================================================
  152. ' Show results
  153. Print Using "###,###,###,###,###,### hardware only putimages in 3 seconds."; iHardwareCount
  154. Print Using "###,###,###,###,###,### normal        putimages in 3 seconds."; iPutImageCount
  155. Print Using "###,###,###,###,###,### DrawTile8     putimages in 3 seconds."; iDrawTileCount
  156. 'Print Using "###,###,###,###,###,### DrawTileHw8   putimages in 3 seconds."; iHwDrawTileCount
  157.  
  158. ' =============================================================================
  159. ' FREE MEMORY
  160. If imgPattern1& < -1 Or imgPattern1& > 0 Then _FreeImage imgPattern1& ' FREE MEMORY
  161. If imgPattern2& < -1 Or imgPattern2& > 0 Then _FreeImage imgPattern2& ' FREE MEMORY
  162. If imgPattern3& < -1 Or imgPattern3& > 0 Then _FreeImage imgPattern3& ' FREE MEMORY
  163. If imgPattern4& < -1 Or imgPattern4& > 0 Then _FreeImage imgPattern4& ' FREE MEMORY
  164. If imgHardware& < -1 Or imgHardware& > 0 Then _FreeImage imgHardware& ' FREE MEMORY
  165.  
  166. ' /////////////////////////////////////////////////////////////////////////////
  167. ' Original version which calculates coordinates on tile sheet and destination
  168. ' screen every time. For a faster version uses precalculated coordinates,
  169. ' see DrawTileFast.
  170.  
  171. ' tw% = tile width/height (in pixels)
  172.  
  173. ' DIV and MOD:
  174. ' c% = a% \ b% ' DIV (INTEGER DIVISION)
  175. ' d% = a% MOD b% ' MODULO (DIVISION REMAINDER)
  176.  
  177. '_PUTIMAGE (0, 0), i ' places image at upper left corner of window w/o stretching it
  178. '_PUTIMAGE (dx1, dy1), sourceHandle&, destHandle&, (sx1, sy1)-(sx2, sy2) ' portion of source to the top-left corner of the destination page
  179. '_PUTIMAGE (64,  128), imgTiles&,      imgScreen&,   (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  180. '_PutImage (64, 128), imgTiles&, imgScreen&, (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  181.  
  182. Sub DrawTile8 (imgTiles&, TileNum%, imgScreen&, dx%, dy%)
  183.     Dim tw% ' width/height of tile
  184.     Dim tw_minus1% ' width/height of tile -1
  185.     Dim cols% ' # tiles across on tile sheet
  186.     Dim rows% ' # tile rows on tile sheet
  187.     Dim sc% ' source column on tile sheet
  188.     Dim sr% ' source row on tile sheet
  189.     Dim sx1% ' source start x
  190.     Dim sx2% ' source end x
  191.     Dim sy1% ' source start y
  192.     Dim sy2% ' source end y
  193.     Dim xDest% ' destination x
  194.     Dim yDest% ' destination y
  195.  
  196.     ' SIZE OF TILE
  197.     tw% = 8
  198.     tw_minus1% = 7
  199.  
  200.     ' # OF COLUMNS / ROWS ON SOURCE TILE SHEET
  201.     cols% = 16
  202.     rows% = 16
  203.  
  204.     ' GET THE COLUMN/ROW OF TILE # TileNum% ON THE SOURCE TILE SHEET
  205.     sc% = TileNum% Mod rows%
  206.     sr% = TileNum% \ rows%
  207.  
  208.     'Print "Tile#" + cstr$(TileNum%) + " at sc%=" + cstr$(sc%) + ",sr%=" + cstr$(sr%)
  209.  
  210.     ' GET THE START X COORDINATE ON THE SOURCE TILE SHEET
  211.     sx1% = sc% * tw%
  212.  
  213.     ' GET THE START Y COORDINATE ON THE SOURCE TILE SHEET
  214.     sy1% = sr% * tw%
  215.  
  216.     ' GET THE END X COORDINATE ON THE SOURCE TILE SHEET
  217.     sx2% = sx1% + tw_minus1%
  218.  
  219.     ' GET THE END y COORDINATE ON THE SOURCE TILE SHEET
  220.     sy2% = sy1% + tw_minus1%
  221.  
  222.     ' GET THE DESTINATION X COORDINATE ON THE SCREEN
  223.     xDest% = dx% * tw%
  224.  
  225.     ' GET THE DESTINATION Y COORDINATE ON THE SCREEN
  226.     yDest% = (dy% * tw%) '+ yOffset%
  227.  
  228.     'Print "Tile#" + cstr$(TileNum%) + _
  229.     '    " at r" + cstr$(sr%) + "c" + cstr$(sc%) + _
  230.     '    " pixel location r" + cstr$(sy1%) + "c" + cstr$(sx1%) + _
  231.     '    " through r" + cstr$(sy2%) + "c" + cstr$(sx2%)
  232.  
  233.     _Dest imgScreen&
  234.  
  235.     ' portion of source to the top-left corner of the destination page
  236.     _PutImage (xDest%, yDest%), imgTiles&, imgScreen&, (sx1%, sy1%)-(sx2%, sy2%)
  237.  
  238. End Sub ' DrawTile8
  239.  
  240. ' /////////////////////////////////////////////////////////////////////////////
  241. ' I'm not sure if I'm using hardware putImage right,
  242. ' this fails with "invalid handle" when setting _SOURCE
  243.  
  244. Sub DrawTileHw8 (imgTiles&, TileNum%, imgScreen&, dx%, dy%)
  245.     Dim tw% ' width/height of tile
  246.     Dim tw_minus1% ' width/height of tile -1
  247.     Dim cols% ' # tiles across on tile sheet
  248.     Dim rows% ' # tile rows on tile sheet
  249.     Dim sc% ' source column on tile sheet
  250.     Dim sr% ' source row on tile sheet
  251.     Dim sx1% ' source start x
  252.     Dim sx2% ' source end x
  253.     Dim sy1% ' source start y
  254.     Dim sy2% ' source end y
  255.     Dim xDest% ' destination x
  256.     Dim yDest% ' destination y
  257.     Dim imgHardware&
  258.  
  259.     ' Copy tilesheet for hardware image
  260.     imgHardware& = _CopyImage(imgTiles&, 33)
  261.  
  262.     ' SIZE OF TILE
  263.     tw% = 8
  264.     tw_minus1% = 7
  265.  
  266.     ' # OF COLUMNS / ROWS ON SOURCE TILE SHEET
  267.     cols% = 16
  268.     rows% = 16
  269.  
  270.     ' GET THE COLUMN/ROW OF TILE # TileNum% ON THE SOURCE TILE SHEET
  271.     sc% = TileNum% Mod rows%
  272.     sr% = TileNum% \ rows%
  273.  
  274.     'Print "Tile#" + cstr$(TileNum%) + " at sc%=" + cstr$(sc%) + ",sr%=" + cstr$(sr%)
  275.  
  276.     ' GET THE START X COORDINATE ON THE SOURCE TILE SHEET
  277.     sx1% = sc% * tw%
  278.  
  279.     ' GET THE START Y COORDINATE ON THE SOURCE TILE SHEET
  280.     sy1% = sr% * tw%
  281.  
  282.     ' GET THE END X COORDINATE ON THE SOURCE TILE SHEET
  283.     sx2% = sx1% + tw_minus1%
  284.  
  285.     ' GET THE END y COORDINATE ON THE SOURCE TILE SHEET
  286.     sy2% = sy1% + tw_minus1%
  287.  
  288.     ' GET THE DESTINATION X COORDINATE ON THE SCREEN
  289.     xDest% = dx% * tw%
  290.  
  291.     ' GET THE DESTINATION Y COORDINATE ON THE SCREEN
  292.     yDest% = (dy% * tw%) '+ yOffset%
  293.  
  294.     'Print "Tile#" + cstr$(TileNum%) + _
  295.     '    " at r" + cstr$(sr%) + "c" + cstr$(sc%) + _
  296.     '    " pixel location r" + cstr$(sy1%) + "c" + cstr$(sx1%) + _
  297.     '    " through r" + cstr$(sy2%) + "c" + cstr$(sx2%)
  298.  
  299.     _Dest imgScreen&
  300.  
  301.     'THIS LINE FAILS WITH AN "INVALID HANDLE" RUNTIME ERROR:
  302.     _Source imgHardware&
  303.  
  304.  
  305.     ' portion of source to the top-left corner of the destination page
  306.     '_PutImage (xDest%, yDest%), imgTiles&, imgScreen&, (sx1%, sy1%)-(sx2%, sy2%)
  307.     '_PutImage , imgHardware&, , (iOffsetX, 0)-(640, 480)
  308.     _PutImage (xDest%, yDest%), , , (sx1%, sy1%)-(sx2%, sy2%)
  309.  
  310.     _PutImage , imgTiles&
  311. End Sub ' DrawTileHw8
  312.  

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #4 on: February 21, 2022, 07:56:57 pm »
The line with the error is from this one:

    _Source imgHardware&

Hardware images basically get their speed by being a sort of "Write Only" method for images.  You can make them, you can put them on the screen, but you can't edit them or read information back from them.  (In fact, most of our commands don't work with them, such as PSET, LINE, or CIRCLE.  Those are drawing to software images and the way to use those is to use them on your software screen and then _COPYIMAGE that software screen to a non-changing hardware screen, before rendering them.)

    _PutImage (xDest%, yDest%), , , (sx1%, sy1%)-(sx2%, sy2%)

What you want to do is use _PUTIMAGE to specify the hardware handle to place onto the screen, rather than trying to set it as the _Source as you have above.



A few pointers on hardware images:

1) You basically only create them; never edit or read from them.
2) You don't have to specify where they show up as a destination with putimage.  The only place they ever show up is on the visible display.
3) Using this "always on display" feature of hardware images, you can layer the images to appear in front of, or behind, your software screen.  We do this with the _DISPLAYORDER command.  For a quick and simple example, try the following:

Code: QB64: [Select]
  1. SoftScreen = _NewImage(60, 60, 32)
  2. _Dest SoftScreen
  3. Cls , SkyBlue
  4.  
  5. Hardware = _CopyImage(SoftScreen, 33)
  6.  
  7. xchange = 2: ychange = 2
  8.  
  9. For i = 1 To 25
  10.     Locate i, 10 + i: Print "Hello World";
  11.  
  12.     x = x + xchange: y = y + ychange
  13.     If x > 640 Or x < 0 Then xchange = -xchange
  14.     If y > 400 Or y < 0 Then ychange = -ychange
  15.  
  16.     k = _KeyHit
  17.     Select Case k
  18.         Case 32
  19.             toggle = Not toggle
  20.             If toggle Then
  21.                 _DisplayOrder _Hardware , _Software
  22.             Else
  23.                 _DisplayOrder _Software , _Hardware
  24.             End If
  25.         Case 27
  26.             System
  27.     End Select
  28.  
  29.     _Limit 30
  30.     _PutImage (x, y), Hardware
  31.     _Display

A few important things to note about what I'm doing here:

First, this is a SCREEN 0 *TEXT* Screen.  It doesn't allow us to use any sort of graphic commands with it, and it certainly won't work with _Putimage...   And yet, how the heck am I using putimage with it here??

As I mentioned:  Hardware images have their own distinct layer which they render to, and they're not related to our software screens at all.  Screen 0 is a software screen.  The hardware layer is separate; ergo, we can draw to ONLY the hardware layer -- no matter what the software layer might be; even if that's a text screen!

Point 2 here:  Hit the space bar and watch how our box move in regard to the blinking text.  It can either be rendered on top of the software screen, or below the software screen, depending on our wishes and the _DISPLAYORDER.  Just hit SPACE to toggle the two modes.

4) Hardware images won't render onto their layer until _DISPLAY is called.  Without a _DISPLAY in your code, you'll never see the images at all.


Umm...  I'm not certain what else I might need to expand on with them at the moment.  If you have any specific questions, feel free to ask them and I'll do my best to answer for you, if I can.  ;)
https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline madscijr

  • Seasoned Forum Regular
  • Posts: 295
    • View Profile
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #5 on: February 21, 2022, 09:46:53 pm »
Hardware images basically get their speed by being a sort of "Write Only" method for images.  You can make them, you can put them on the screen, but you can't edit them or read information back from them.
...
2) You don't have to specify where they show up as a destination with putimage.
...
If you have any specific questions, feel free to ask them and I'll do my best to answer for you, if I can.  ;)

Thanks for taking the time to explain all that. When I'm back at the PC, I'll try out your example.

For now, just one question: if you can't read information from them or even specify where on the destination they go, how are they even useful? Maybe it will click when I run your example or read up on it, but I just don't see what the use of an image would be if you can't control where on the screen it is drawn? Or how it would help speed up drawing a map of colored tiles to the screen.

Thanks again...

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #6 on: February 22, 2022, 01:14:28 am »
Try this out and see if it doesn't help answer your questions:

Code: QB64: [Select]
  1. Display = _NewImage(1024, 720, 32)
  2. Software = _NewImage(1024, 720, 32)
  3.  
  4.  
  5. Screen Display
  6. Print "First, let's create a normal sortware screen and fill it with 40x40 tiles of random colors."
  7. Print "Press <ANY KEY> to view this screen."
  8.  
  9. _Dest Software
  10. For y = 0 To 720 Step 40
  11.     For x = 0 To 1024 Step 40
  12.         Line (x, y)-Step(40, 40), &HFF000000 + Rnd * &HFFFFFF, BF
  13.     Next
  14. _Dest Display
  15. _PutImage , Software
  16. Print "As you can see, this is a simple software screen."
  17. Print "Now, I'm going to copy that software screen and make it a hardware screen."
  18. Print "Press <ANY KEY> for me to do so!"
  19.  
  20. Hardware = _CopyImage(Software, 33)
  21. Print "Now, I'm back to my blank screen, but I now have a hardware screen to work with."
  22. Print "To keep things simple, let's showcase the differences between using _putimage with a software screen, and then with the hardware screen."
  23. Print "First, the software screen!  Press <ANY KEY> to continue."
  24.  
  25. _PutImage (0, 100)-Step(100, 100), Software, Display, (0, 0)-(40, 40)
  26. Print "As you can see, all I did here was copy a single tile from the software screen and then scale it to fit upon the current screen."
  27. Print "Press <ANY KEY> to continue, as I'll now do the same with a hardware image."
  28.  
  29.  
  30. _PutImage (200, 100)-Step(100, 100), Hardware, , (0, 0)-(40, 40)
  31. Print "As you can see from the above, we have the same tile copied and scaled onto the screen, just to the right of the software image."
  32. Print "Doesn't really seem to be very different at all, now does it?"
  33. Print "Press <ANY KEY> to continue."
  34.  
  35. Color Red
  36. Print "BUT WAIT A MOMENT!!  What the heck happened to our hardware tile??!!??"
  37. Color White
  38. Print "It's no longer on the screen, as it was previously.  Why??"
  39. Print "Because it was never on the software screen at all, but was instead on it's own hardware layer ABOVE the software screen."
  40. Print "Hardware images only display ONCE, once _DISPLAY is called, and then they flush from the graphics buffer."
  41. Print "Draw.  Display.  Flush.  <-- that's the basic process of how a hardware image works."
  42. Print "If we want one to remain on the screen, we have to do it either by:"
  43. Print "1) Not updating the screen after we draw and display the image, as I did above with the tile I displayed."
  44. Print "2) Refresh displaying the image in our main loop (which is what we do even with software images for most games and such)."
  45. Print "Press <ANY KEY> to continue."
  46.  
  47. Print "So, as you can see, hardware images have a few drawbacks to them, with the most obvious being they only display once,"
  48. Print "then flush from memory.  If you want persistant hardware images, they're best used in a loop."
  49. Print "But, if they've got drawbacks, then one has to ask, 'What's the advantages to using them?'"
  50. Print "Press <ANY KEY> to find out!"
  51.  
  52.  
  53. t# = Timer + 3
  54.     count = count + 1
  55.     _PutImage (0, 100)-Step(100, 100), Software, Display, (x, y)-Step(40, 40)
  56.     x = x + 40
  57.     If x > 1024 Then x = 0: y = y + 40
  58.     If y > 720 Then x = 0: y = 0
  59.     _Display
  60. Print "See lots of flashing tiles on the screen for the last three seconds?"
  61. Print "That was us using _PUTIMAGE with the software screen, and we put"; count; "tiles on the screen in those 3 seconds."
  62. Print "Now press <ANY KEY> and we'll do the exact same thing with hardware images."
  63.  
  64.  
  65. count = 0: x = 0: y = 0
  66. t# = Timer + 3
  67. tempScreen = _CopyImage(Display, 33)
  68.     count = count + 1
  69.     _PutImage , tempScreen
  70.     _PutImage (300, 100)-Step(100, 100), Hardware, , (x, y)-Step(40, 40)
  71.     x = x + 40
  72.     If x > 1024 Then x = 0: y = y + 40
  73.     If y > 720 Then x = 0: y = 0
  74.     _Display
  75.  
  76. _FreeImage tempScreen
  77. Print "Didn't seem very different at the rate of which we were running things, now did it?"
  78. Print "Would you be surprised to find out that we put"; count * 2; "hardware images on the screen in those same 3 seconds?"
  79. Print "And if you look close, I counted each loop twice, as we didn't just put the hardware image to the screen, but also a"
  80. Print "complete copy of the original software screen as well!"
  81. Print "The reason why I did this?"
  82. Print "So I could completely elimimate all software iamges and JUST work with the much faster hardware layer!"
  83. Print "Press <ANY KEY> to continue"
  84.  
  85. Print "So, as you can see, hardware images are multiple times faster to display and render than software images."
  86. Print "But here's something else for you to notice -- I'm going to update the screen with constant, limitless tile refeshes."
  87. Print "To start with, I'm going to do this in a LOOP with the software images."
  88. Print "CTRL-TAB out of this demo program, open your task manager, and see how much memory and CPU processing power the program uses."
  89. Print "Then TAB back to this program and hit <ESC> to do the same with the hardware images."
  90.  
  91.     _PutImage (0, 100)-(1024, 720), Software, Display, (x, y)-Step(40, 40)
  92.     x = x + 40
  93.     If x > 1024 Then x = 0: y = y + 40
  94.     If y > 720 Then x = 0: y = 0
  95.     _Limit 60
  96.     _Display
  97.  
  98. Cls , 0
  99. Print "PRESS <SPACE BAR> to stop the hardware iamges!!"
  100. tempImage = _CopyImage(Display, 33)
  101. x = 0: y = 0
  102.     _PutImage , tempImage
  103.     _PutImage (0, 100)-(1023, 719), Hardware, , (x, y)-Step(40, 40)
  104.     x = x + 40
  105.     If x > 1024 Then x = 0: y = y + 40
  106.     If y > 720 Then x = 0: y = 0
  107.     _Limit 60
  108.     _Display
  109.  
  110. Print "On my laptop, these two methods use the following amounts of CPU power:"
  111. Print "Software, 60 FPS -- 3% CPU"
  112. Print "Hardware, 60 FPS -- 0.1% CPU"
  113. Print "If I go in and change the limits to something much higher, these are the results (test them for yourselves, please):"
  114. Print "Software, 600 FPS -- 10.3% CPU"
  115. Print "Hardware, 600 FPS -- 0.1% CPU"
  116.  
  117. Print "So, as you can see, the disadvantage to hardware images are they display once, then flush from memory."
  118. Print "While the advantages to their usage is MUCH faster processing times, and an immense reduction on CPU usage.  (The GPU picks up the work for us!)"
  119. Print "You basically use them just like you would any other normal image, though you have to keep in mind that they render"
  120. Print "to their own hardware layer, which you can specify to go on below or above your software screen."
  121. Print "(Or, you can _DISPLAYORDER _HARDWARE and *only* display the hardware layer, removing software rendering completely!)"
  122. Print "And THAT, my friends, is basically the lowdown on hardware vs software images.  ;)"
  123. Print "And this was another Steve(tm) Tutorial!  Enjoy!!"
  124.  
  125.  
https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline madscijr

  • Seasoned Forum Regular
  • Posts: 295
    • View Profile
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #7 on: February 22, 2022, 08:59:50 am »
Try this out and see if it doesn't help answer your questions:
...

Wow, I really like your "tutorial" method, lol.
I will play with this as time allows today, and let you know how it went!
Thanks!

Offline madscijr

  • Seasoned Forum Regular
  • Posts: 295
    • View Profile
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #8 on: February 22, 2022, 04:54:22 pm »
Try this out and see if it doesn't help answer your questions:

So I (think) I have a tile routine that uses hardware images ("DrawTileHw8"),
but testing it against a straight putImage ("DrawTile8"), the putImage is faster.
The routine that uses a color swap ("DrawColorTile") came out slowest, as I expected.

Here is the full test program. Am I using the hardware images wrong somehow?
Are they not suited for this kind of application (plotting variable-colored tiles to a row/column)?
Any insight appreciated...

Thanks again...

Code: QB64: [Select]
  1. ' ################################################################################################################################################################
  2. ' #CONSTANTS = GLOBAL CONSTANTS
  3.  
  4. ' BOOLEAN VALUES
  5. Const FALSE = 0
  6. Const TRUE = Not FALSE
  7.  
  8. ' ################################################################################################################################################################
  9. ' #VARS = GLOBAL VARIABLES
  10.  
  11. Dim Shared m_ProgramPath$: m_ProgramPath$ = Left$(Command$(0), _InStrRev(Command$(0), "\"))
  12. Dim Shared m_ProgramName$: m_ProgramName$ = Mid$(Command$(0), _InStrRev(Command$(0), "\") + 1)
  13. Dim m_iScreen As Long
  14.  
  15. ' =============================================================================
  16. ' START THE MAIN ROUTINE
  17. MakeColoredTiles
  18. 'HardwareImageDemo2
  19.  
  20. ' =============================================================================
  21. ' FINISH
  22. 'Print m_ProgramName$ + " finished."
  23. 'Input "Press <ENTER> to continue", in$
  24.  
  25. ' ****************************************************************************************************************************************************************
  26. ' DEACTIVATE DEBUGGING WINDOW
  27. If m_bDebug = TRUE Then
  28. ' ****************************************************************************************************************************************************************
  29.  
  30. System ' return control to the operating system
  31.  
  32. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  33. ' BEGIN TILE ROUTINES
  34. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  35.  
  36. ' /////////////////////////////////////////////////////////////////////////////
  37.  
  38. Sub MakeColoredTiles
  39.     Dim sError As String: sError = ""
  40.     Dim imgTiles As Long
  41.     Dim imgTilesRed As Long
  42.     Dim imgTilesGreen As Long
  43.     Dim imgTilesBlue As Long
  44.     Dim imgTilesYellow As Long
  45.     Dim imgColorTiles As Long
  46.     Dim imgHardwareTiles As Long ' the hardware image copy of the tileset
  47.     Dim iTileNum As Integer
  48.     Dim iColor As Integer: iColor = 0
  49.     Dim iStartColor As Integer: iStartColor = 0
  50.     Dim iCols As Integer
  51.     Dim iRows As Integer
  52.     Dim iY As Integer
  53.     Dim iX As Integer
  54.     Dim fgColor As _Unsigned Long
  55.     Dim bgColor As _Unsigned Long
  56.     Dim iMinY As Integer
  57.     Dim iMaxY As Integer
  58.     Dim iMinX As Integer
  59.     Dim iMaxX As Integer
  60.     Dim iCount1 As Integer
  61.     Dim iCount2 As Integer
  62.     Dim iCount3 As Integer
  63.     Dim t#
  64.  
  65.     ' ================================================================================================================================================================
  66.     ' INIT SCREEN
  67.     ' ================================================================================================================================================================
  68.     m_iScreen = _NewImage(1024, 768, 32)
  69.     _ScreenMove 0, 0
  70.     Screen m_iScreen
  71.     Cls , cGray
  72.     Color cWhite, cBlack: Locate 1, 1: Print "Press 1 to test DrawTile8 rooutine using 4 tilesets (1 per color) and regular _putimage...": Do: Loop Until InKey$ = "1"
  73.  
  74.     'for iY = 1 to 48
  75.     '    LOCATE iY, 1
  76.     '    print cstr$(iY);
  77.     'next iY
  78.  
  79.  
  80.     ' ================================================================================================================================================================
  81.     ' INITIALIZE NEUTRAL COLOR GRAPHICS TILES (BLACK ON TRANSPARENT)
  82.     ' ================================================================================================================================================================
  83.     If Len(sError) = 0 Then
  84.         '' LOAD TILES (16 cols x 16 rows of 8x8 tiles) FROM FILE
  85.         'sFile$ = m_ProgramPath$ + "Font_8x8_128x128_v3.png" ' 128x128 total, 16x16 of 8x8 tiles
  86.         'imgTiles = _LoadImage(sFile$, 32)
  87.  
  88.         ' LOAD TILES FROM TEXT DEFINITIONS IN Sub GetTileText
  89.         sError = GetTiles$(imgTiles, cBlack, cEmpty)
  90.     End If
  91.  
  92.     ' ================================================================================================================================================================
  93.     ' CREATE COLORED TILESET COPIES
  94.     ' ================================================================================================================================================================
  95.     If Len(sError) = 0 Then
  96.         MakeColoredTileset imgTiles, imgTilesRed, cRed, cBlack
  97.         MakeColoredTileset imgTiles, imgTilesGreen, cLime, cBlack
  98.         MakeColoredTileset imgTiles, imgTilesBlue, cBlue, cBlack
  99.         MakeColoredTileset imgTiles, imgTilesYellow, cYellow, cBlack
  100.  
  101.         ' Make one big tileset with all colors
  102.         imgColorTiles = _NewImage(512, 128, 32)
  103.         _PutImage (0, 0), imgTilesRed, imgColorTiles, (0, 0)-(128, 128)
  104.         _PutImage (128, 0), imgTilesGreen, imgColorTiles, (0, 0)-(128, 128)
  105.         _PutImage (256, 0), imgTilesBlue, imgColorTiles, (0, 0)-(128, 128)
  106.         _PutImage (384, 0), imgTilesYellow, imgColorTiles, (0, 0)-(128, 128)
  107.     End If
  108.  
  109.     '' WRITE TILESETS TO SCREEN
  110.     ''_PutImage (xDest%, yDest%), ColorSprite&, imgScreen&, (0, 0)-(7, 7) ' portion of source to the top-left corner of the destination page
  111.     '_PUTIMAGE (256,128), imgTiles, m_iScreen, (0,0)-(128, 128)
  112.     '_PUTIMAGE (264,264), imgTilesRed, m_iScreen, (0,0)-(128, 128)
  113.     '_PUTIMAGE (400,264), imgTilesGreen, m_iScreen, (0,0)-(128, 128)
  114.     '_PUTIMAGE (264,400), imgTilesBlue, m_iScreen, (0,0)-(128, 128)
  115.     '_PUTIMAGE (400,400), imgTilesYellow, m_iScreen, (0,0)-(128, 128)
  116.  
  117.     ' ================================================================================================================================================================
  118.     ' METHOD #1
  119.     ' WRITE TILES TO SCREEN
  120.     ' ================================================================================================================================================================
  121.     If Len(sError) = 0 Then
  122.         iCols = _Width(m_iScreen) \ 8
  123.         iRows = _Height(m_iScreen) \ 8
  124.         iMinX = 1: iMaxX = 16
  125.         iMinY = 3: iMaxY = 18
  126.         iCount1 = 0
  127.         t# = Timer + 3
  128.         Do
  129.             iCount1 = iCount1 + 1
  130.             iStartColor = iStartColor Xor 1
  131.             iColor = iStartColor
  132.             iY = iMinY
  133.             iX = iMinX
  134.             For iTileNum = 0 To 255
  135.                 Select Case iColor
  136.                     Case 0:
  137.                         DrawTile8 imgTilesRed, iTileNum, m_iScreen, iX, iY
  138.                     Case 1:
  139.                         DrawTile8 imgTilesGreen, iTileNum, m_iScreen, iX, iY
  140.                     Case 2:
  141.                         DrawTile8 imgTilesBlue, iTileNum, m_iScreen, iX, iY
  142.                     Case Else:
  143.                         DrawTile8 imgTilesYellow, iTileNum, m_iScreen, iX, iY
  144.                 End Select
  145.                 iColor = iColor + 1: If iColor > 3 Then iColor = 0
  146.                 iX = iX + 1: If iX > iMaxX Then iX = iMinX: iY = iY + 1: If iY > iMaxY Then Exit For
  147.             Next iTileNum
  148.             _Display
  149.         Loop Until Timer > t#
  150.     End If
  151.     Color cWhite, cBlack: Locate 11, 1: Print "Press 2 to test DrawColorTile routine using 1 tileset with DoColorSwap...";: Do: Loop Until InKey$ = "2"
  152.  
  153.     ' ================================================================================================================================================================
  154.     ' METHOD #2
  155.     ' WRITE COLOR TILES TO SCREEN
  156.     ' ================================================================================================================================================================
  157.     If Len(sError) = 0 Then
  158.         iMinX = 1: iMaxX = 16
  159.         iMinY = 23: iMaxY = 38
  160.         iCount2 = 0
  161.         t# = Timer + 3
  162.         Do
  163.             iCount2 = iCount2 + 1
  164.             iStartColor = iStartColor Xor 1
  165.             iColor = iStartColor
  166.             iY = iMinY
  167.             iX = iMinX
  168.             For iTileNum = 0 To 255
  169.                 Select Case iColor
  170.                     Case 0:
  171.                         fgColor = cRed: bgColor = cBlack
  172.                     Case 1:
  173.                         fgColor = cLime: bgColor = cBlack
  174.                     Case 2:
  175.                         fgColor = cBlue: bgColor = cBlack
  176.                     Case Else:
  177.                         fgColor = cYellow: bgColor = cBlack
  178.                 End Select
  179.                 DrawColorTile m_iScreen, imgTiles, iTileNum, fgColor, bgColor, iX, iY
  180.                 iColor = iColor + 1: If iColor > 3 Then iColor = 0
  181.                 iX = iX + 1: If iX > iMaxX Then iX = iMinX: iY = iY + 1: If iY > iMaxY Then Exit For
  182.             Next iTileNum
  183.             _Display
  184.         Loop Until Timer > t#
  185.     End If
  186.     Color cWhite, cBlack: Locate 21, 1: Print "Press 3 to test DrawTileHw8 rooutine using 1 big multi-tileset and hardware images...";: Do: Loop Until InKey$ = "3"
  187.  
  188.     ' ================================================================================================================================================================
  189.     ' METHOD #3
  190.     ' WRITE HARDWARE TILES TO SCREEN
  191.     ' ================================================================================================================================================================
  192.     If Len(sError) = 0 Then
  193.         imgHardwareTiles = _CopyImage(imgColorTiles, 33) ' Copy tilesheet for hardware image
  194.         iMinX = 1: iMaxX = 16
  195.         iMinY = 43: iMaxY = 58
  196.         iCount3 = 0
  197.         t# = Timer + 3
  198.         Do
  199.             iCount3 = iCount3 + 1
  200.             iStartColor = iStartColor Xor 1
  201.             iColor = iStartColor
  202.             iY = iMinY
  203.             iX = iMinX
  204.             For iTileNum = 0 To 255
  205.                 DrawTileHw8 imgHardwareTiles, iTileNum, m_iScreen, iX, iY, iColor
  206.                 iColor = iColor + 1: If iColor > 3 Then iColor = 0
  207.                 iX = iX + 1: If iX > iMaxX Then iX = iMinX: iY = iY + 1: If iY > iMaxY Then Exit For
  208.             Next iTileNum
  209.             _Display
  210.         Loop Until Timer > t#
  211.         _AutoDisplay
  212.         'COLOR cWhite, cBlack: LOCATE 31,1 : PRINT "PRESS 4 TO SEE RESULTS..."; : Do : Loop Until InKey$="4"
  213.     End If
  214.  
  215.     ' ================================================================================================================================================================
  216.     ' SHOW RESULTS
  217.     ' ================================================================================================================================================================
  218.     Color cWhite, cBlack: Locate 33, 1
  219.     Print ""
  220.     Print "RESULTS:"
  221.     Print Using "DrawTile8     ###,###,###,###,###,### refreshes in 3 seconds."; iCount1
  222.     Print Using "DrawColorTile ###,###,###,###,###,### refreshes in 3 seconds."; iCount2
  223.     Print Using "DrawTileHw8   ###,###,###,###,###,### refreshes in 3 seconds."; iCount3
  224.     Print "PRESS ANY KEY TO CONTINUE"
  225.     Sleep
  226.  
  227.     ' ================================================================================================================================================================
  228.     ' CLEANUP AND EXIT
  229.     ' ================================================================================================================================================================
  230.     Screen 0 ' RETURN TO TEXT SCREEN
  231.     If m_iScreen < -1 Or m_iScreen > 0 Then _FreeImage m_iScreen ' FREE MEMORY
  232.     If imgTiles < -1 Or imgTiles > 0 Then _FreeImage imgTiles ' FREE MEMORY
  233.     If imgTilesRed < -1 Or imgTilesRed > 0 Then _FreeImage imgTilesRed ' FREE MEMORY
  234.     If imgTilesGreen < -1 Or imgTilesGreen > 0 Then _FreeImage imgTilesGreen ' FREE MEMORY
  235.     If imgTilesBlue < -1 Or imgTilesBlue > 0 Then _FreeImage imgTilesBlue ' FREE MEMORY
  236.     If imgTilesYellow < -1 Or imgTilesYellow > 0 Then _FreeImage imgTilesYellow ' FREE MEMORY
  237.     If imgColorTiles < -1 Or imgColorTiles > 0 Then _FreeImage imgColorTiles ' FREE MEMORY
  238.     If imgHardwareTiles < -1 Or imgHardwareTiles > 0 Then _FreeImage imgHardwareTiles ' FREE MEMORY
  239. End Sub ' MakeColoredTiles
  240.  
  241. ' /////////////////////////////////////////////////////////////////////////////
  242. ' Receives an image imgTiles of 8x8 tiles
  243. ' colored black on transparent background
  244. ' and returns a new image imgNew
  245. ' copied from the tiles in imgTiles,
  246. ' except colored to foreground color fgColor,
  247. ' and background color bgColor
  248.  
  249. ' Usage:
  250. ' MakeColoredTileset imgTiles, imgNew, fgColor, bgColor
  251.  
  252. Sub MakeColoredTileset (imgTiles As Long, imgNew As Long, fgColor As _Unsigned Long, bgColor As _Unsigned Long)
  253.     Dim iTileNum As Integer
  254.     Dim iY As Integer
  255.     Dim iX As Integer
  256.     If imgNew < -1 Or imgNew > 0 Then _FreeImage imgNew ' FREE MEMORY
  257.     imgNew = _NewImage(_Width(imgTiles), _Height(imgTiles), 32)
  258.     iTileNum = 0
  259.     For iY = 0 To (_Height(imgTiles) \ 8) - 1
  260.         For iX = 0 To (_Width(imgTiles) \ 8) - 1
  261.             DrawColorTile imgNew, imgTiles, iTileNum, fgColor, bgColor, iX, iY
  262.             iTileNum = iTileNum + 1
  263.             If iTileNum > 255 Then Exit For
  264.         Next iX
  265.         If iTileNum > 255 Then Exit For
  266.     Next iY
  267. End Sub ' MakeColoredTileset
  268.  
  269. ' /////////////////////////////////////////////////////////////////////////////
  270. ' Simple version which calculates coordinates on tile sheet and destination
  271. ' screen every time. For a faster version uses precalculated coordinates,
  272. ' see DrawColorTileFast. This version does not support offsetX, offsetY.
  273.  
  274. ' Receives:
  275. ' imgScreen& = handle to screen to draw tile on
  276. ' imgTiles& = handle to 16x16 tile sheet of 8x8 pixel tiles colored black (256 tiles)
  277. ' TileNum% = ordinal number of tile on tile sheet to draw (0-255)
  278. ' TileColor~& = foreground color to use for tile
  279. ' BackColor~& = background color to use for tile
  280. ' dx% = column # to draw tile at (where each column is 8 pixels wide)
  281. ' dy% = row # to draw tile at (where each row is 8 pixels high)
  282.  
  283. ' Usage:
  284. ' DrawColorTile imgScreen&, imgTiles&, TileNum%, TileColor~&, BackColor~&, dx%, dy%
  285.  
  286. Sub DrawColorTile (imgScreen&, imgTiles&, TileNum%, TileColor~&, BackColor~&, dx%, dy%)
  287.     Dim cols%
  288.     Dim rows%
  289.     Dim sc%
  290.     Dim sr%
  291.     Dim sx1%
  292.     Dim sy1%
  293.     Dim sx2%
  294.     Dim sy2%
  295.     Dim xDest%
  296.     Dim yDest%
  297.     Dim ColorSprite&
  298.     Dim UniversalSprite&
  299.  
  300.     ' # OF COLUMNS / ROWS ON SOURCE TILE SHEET
  301.     cols% = 16
  302.     rows% = 16
  303.  
  304.     ' GET THE COLUMN/ROW OF TILE # TileNum% ON THE SOURCE TILE SHEET
  305.     sc% = TileNum% Mod rows%
  306.     sr% = TileNum% \ rows%
  307.  
  308.     ' GET THE START X COORDINATE ON THE SOURCE TILE SHEET
  309.     sx1% = sc% * 8
  310.  
  311.     ' GET THE START Y COORDINATE ON THE SOURCE TILE SHEET
  312.     sy1% = sr% * 8
  313.  
  314.     ' GET THE END X COORDINATE ON THE SOURCE TILE SHEET
  315.     sx2% = sx1% + 7
  316.  
  317.     ' GET THE END y COORDINATE ON THE SOURCE TILE SHEET
  318.     sy2% = sy1% + 7
  319.  
  320.     ' GET THE DESTINATION X COORDINATE ON THE SCREEN
  321.     xDest% = dx% * 8
  322.  
  323.     ' GET THE DESTINATION Y COORDINATE ON THE SCREEN
  324.     yDest% = dy% * 8
  325.  
  326.     ' IS THERE A BACKGROUND COLOR?
  327.     If BackColor~& <> cEmpty Then
  328.         ColorSprite& = _NewImage(8, 8, 32)
  329.         _Dest ColorSprite&
  330.         Cls , BackColor~&
  331.  
  332.         ' COPY THE TEMPORARY TILE TO THE SCREEN imgScreen&
  333.         _Source ColorSprite&
  334.         _Dest imgScreen&
  335.         _PutImage (xDest%, yDest%), ColorSprite&, imgScreen&, (0, 0)-(7, 7) ' portion of source to the top-left corner of the destination page
  336.     End If
  337.  
  338.     ' CREATE A TEMPORARY TILE TO COLOR
  339.     UniversalSprite& = _NewImage(8, 8, 32)
  340.  
  341.     ' COPY THE TILE TO THE TEMPORARY ONE
  342.     _Source imgTiles&
  343.     _Dest UniversalSprite&
  344.     _PutImage (0, 0), imgTiles&, UniversalSprite&, (sx1%, sy1%)-(sx2%, sy2%)
  345.  
  346.     ' COLOR IN THE TEMPORARY TILE
  347.     ' REPLACING BLACK (THE SOURCE COLOR) WITH THE TILE COLOR
  348.     If ColorSprite& < -1 Or ColorSprite& > 0 Then _FreeImage ColorSprite&
  349.     DoColorSwap UniversalSprite&, cBlack, TileColor~&, ColorSprite&
  350.  
  351.     ' COPY THE TEMPORARY TILE TO THE SCREEN imgScreen&
  352.     _Source ColorSprite&
  353.     _Dest imgScreen&
  354.     _PutImage (xDest%, yDest%), ColorSprite&, imgScreen&, (0, 0)-(7, 7) ' portion of source to the top-left corner of the destination page
  355.  
  356.     ' ADDED PER FellipeHeitor
  357.     If ColorSprite& < -1 Or ColorSprite& > 0 Then _FreeImage ColorSprite&
  358.     If UniversalSprite& < -1 Or UniversalSprite& > 0 Then _FreeImage UniversalSprite&
  359. End Sub ' DrawColorTile
  360.  
  361. ' /////////////////////////////////////////////////////////////////////////////
  362. ' Latest version with NOVARSEG's changes.
  363.  
  364. ' Based on code from:
  365.  
  366. ' Image color swap?
  367. ' https://www.qb64.org/forum/index.php?topic=2312.0
  368.  
  369. ' Like Function swapcolor& except returns new image in a parameter
  370. ' in case being a function causes a memory leak?
  371.  
  372. Sub DoColorSwap (imgOriginal&, oldcolor~&, newcolor~&, imgNew&)
  373.     Dim m As _MEM
  374.     Dim a As _Offset
  375.     a = 0
  376.     imgNew& = _CopyImage(imgOriginal&, 32)
  377.     m = _MemImage(imgNew&)
  378.     Do Until a = m.SIZE - 4
  379.         a = a + 4
  380.         c = _MemGet(m, m.OFFSET + a, _Unsigned Long)
  381.         If c = oldcolor~& Then
  382.             _MemPut m, m.OFFSET + a, newcolor~&
  383.         End If
  384.     Loop
  385.     _MemFree m
  386. End Sub ' DoColorSwap&
  387.  
  388. ' /////////////////////////////////////////////////////////////////////////////
  389. ' Draws an 8x8 tile at the specified column/row dx%, dy%
  390.  
  391. ' Original version which calculates coordinates on tile sheet and destination
  392. ' screen every time. For a faster version uses precalculated coordinates,
  393. ' see DrawTileFast.
  394.  
  395. ' tw% = tile width/height (in pixels)
  396.  
  397. ' DIV and MOD:
  398. ' c% = a% \ b% ' DIV (INTEGER DIVISION)
  399. ' d% = a% MOD b% ' MODULO (DIVISION REMAINDER)
  400.  
  401. '_PUTIMAGE (0, 0), i ' places image at upper left corner of window w/o stretching it
  402. '_PUTIMAGE (dx1, dy1), sourceHandle&, destHandle&, (sx1, sy1)-(sx2, sy2) ' portion of source to the top-left corner of the destination page
  403. '_PUTIMAGE (64,  128), imgTiles&,      imgScreen&,   (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  404. '_PutImage (64, 128), imgTiles&, imgScreen&, (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  405.  
  406. Sub DrawTile8 (imgTiles&, TileNum%, imgScreen&, dx%, dy%)
  407.     Dim tw% ' width/height of tile
  408.     Dim tw_minus1% ' width/height of tile -1
  409.     Dim cols% ' # tiles across on tile sheet
  410.     Dim rows% ' # tile rows on tile sheet
  411.     Dim sc% ' source column on tile sheet
  412.     Dim sr% ' source row on tile sheet
  413.     Dim sx1% ' source start x
  414.     Dim sx2% ' source end x
  415.     Dim sy1% ' source start y
  416.     Dim sy2% ' source end y
  417.     Dim xDest% ' destination x
  418.     Dim yDest% ' destination y
  419.  
  420.     ' SIZE OF TILE
  421.     tw% = 8
  422.     tw_minus1% = 7
  423.  
  424.     ' # OF COLUMNS / ROWS ON SOURCE TILE SHEET
  425.     cols% = 16
  426.     rows% = 16
  427.  
  428.     ' GET THE COLUMN/ROW OF TILE # TileNum% ON THE SOURCE TILE SHEET
  429.     sc% = TileNum% Mod rows%
  430.     sr% = TileNum% \ rows%
  431.  
  432.     'Print "Tile#" + cstr$(TileNum%) + " at sc%=" + cstr$(sc%) + ",sr%=" + cstr$(sr%)
  433.  
  434.     ' GET THE START X COORDINATE ON THE SOURCE TILE SHEET
  435.     sx1% = sc% * tw%
  436.  
  437.     ' GET THE START Y COORDINATE ON THE SOURCE TILE SHEET
  438.     sy1% = sr% * tw%
  439.  
  440.     ' GET THE END X COORDINATE ON THE SOURCE TILE SHEET
  441.     sx2% = sx1% + tw_minus1%
  442.  
  443.     ' GET THE END y COORDINATE ON THE SOURCE TILE SHEET
  444.     sy2% = sy1% + tw_minus1%
  445.  
  446.     ' GET THE DESTINATION X COORDINATE ON THE SCREEN
  447.     xDest% = dx% * tw%
  448.  
  449.     ' GET THE DESTINATION Y COORDINATE ON THE SCREEN
  450.     yDest% = (dy% * tw%) '+ yOffset%
  451.  
  452.     'Print "Tile#" + cstr$(TileNum%) + _
  453.     '    " at r" + cstr$(sr%) + "c" + cstr$(sc%) + _
  454.     '    " pixel location r" + cstr$(sy1%) + "c" + cstr$(sx1%) + _
  455.     '    " through r" + cstr$(sy2%) + "c" + cstr$(sx2%)
  456.  
  457.     _Dest imgScreen&
  458.  
  459.     ' portion of source to the top-left corner of the destination page
  460.     _PutImage (xDest%, yDest%), imgTiles&, imgScreen&, (sx1%, sy1%)-(sx2%, sy2%)
  461.  
  462. End Sub ' DrawTile8
  463.  
  464. ' /////////////////////////////////////////////////////////////////////////////
  465. ' Draws an 8x8 tile at the specified column/row dx%, dy%
  466. ' using hardware images
  467.  
  468. ' Usage:
  469. ' Dim imgHardwareTiles As Long ' the hardware image copy of the tileset
  470. ' imgHardwareTiles = _CopyImage(imgTiles, 33) ' Copy tilesheet for hardware image
  471. ' DrawTileHw8 imgHardwareTiles, iTileNum, imgScreen, iColumn, iRow, iSubTileset
  472.  
  473. Sub DrawTileHw8 (imgTiles&, TileNum%, imgScreen&, dx%, dy%, iSubTileset%)
  474.     Dim tw% ' width/height of tile
  475.     Dim tw_minus1% ' width/height of tile -1
  476.     Dim cols% ' # tiles across on tile sheet
  477.     Dim rows% ' # tile rows on tile sheet
  478.     Dim sc% ' source column on tile sheet
  479.     Dim sr% ' source row on tile sheet
  480.     Dim sx1% ' source start x
  481.     Dim sx2% ' source end x
  482.     Dim sy1% ' source start y
  483.     Dim sy2% ' source end y
  484.     Dim xDest% ' destination x
  485.     Dim yDest% ' destination y
  486.     Dim xOffset%
  487.  
  488.     ' CALCULATE OFFSET
  489.     xOffset% = 128 * iSubTileset%
  490.  
  491.     ' SIZE OF TILE
  492.     tw% = 8
  493.     tw_minus1% = 7
  494.  
  495.     ' # OF COLUMNS / ROWS ON SOURCE TILE SHEET
  496.     cols% = 16
  497.     rows% = 16
  498.  
  499.     ' GET THE COLUMN/ROW OF TILE # TileNum% ON THE SOURCE TILE SHEET
  500.     sc% = TileNum% Mod rows%
  501.     sr% = TileNum% \ rows%
  502.  
  503.     'Print "Tile#" + cstr$(TileNum%) + " at sc%=" + cstr$(sc%) + ",sr%=" + cstr$(sr%)
  504.  
  505.     ' GET THE START X COORDINATE ON THE SOURCE TILE SHEET
  506.     sx1% = (sc% * tw%) + xOffset%
  507.  
  508.     ' GET THE START Y COORDINATE ON THE SOURCE TILE SHEET
  509.     sy1% = sr% * tw%
  510.  
  511.     ' GET THE END X COORDINATE ON THE SOURCE TILE SHEET
  512.     sx2% = sx1% + tw_minus1%
  513.  
  514.     ' GET THE END y COORDINATE ON THE SOURCE TILE SHEET
  515.     sy2% = sy1% + tw_minus1%
  516.  
  517.     ' GET THE DESTINATION X COORDINATE ON THE SCREEN
  518.     xDest% = dx% * tw%
  519.  
  520.     ' GET THE DESTINATION Y COORDINATE ON THE SCREEN
  521.     yDest% = (dy% * tw%) '+ yOffset%
  522.  
  523.     'Print "Tile#" + cstr$(TileNum%) + _
  524.     '    " at r" + cstr$(sr%) + "c" + cstr$(sc%) + _
  525.     '    " pixel location r" + cstr$(sy1%) + "c" + cstr$(sx1%) + _
  526.     '    " through r" + cstr$(sy2%) + "c" + cstr$(sx2%)
  527.  
  528.     _Dest imgScreen&
  529.  
  530.     ' portion of source to the top-left corner of the destination page
  531.     '_PutImage (xDest%, yDest%), imgTiles&, imgScreen&, (sx1%, sy1%)-(sx2%, sy2%)
  532.     '_PutImage (200, 100)-Step(100, 100), imgHardware&, , (0, 0)-(40, 40)
  533.     _PutImage (xDest%, yDest%), imgTiles&, , (sx1%, sy1%)-(sx2%, sy2%)
  534.  
  535. End Sub ' DrawTileHw8
  536.  
  537. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  538. ' END TILE ROUTINES
  539. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  540.  
  541. ' ################################################################################################################################################################
  542. ' BEGIN TILE DEFINITIONS
  543. ' ################################################################################################################################################################
  544.  
  545. ' /////////////////////////////////////////////////////////////////////////////
  546. ' Loads tileset of 256 8x8 tiles into a 128x128 image (16 columns x 16 rows)
  547. ' where tiles are a single color.
  548.  
  549. ' Parameters:
  550. ' imgTiles& = contains the resulting tileset image
  551. ' fgColor = tile color
  552. ' bgColor = tile background color
  553.  
  554. Function GetTiles$ (imgTiles&, fgColor As _Unsigned Long, bgColor As _Unsigned Long)
  555.     Dim RoutineName As String: RoutineName = "GetTiles$"
  556.     Dim sResult As String: sResult = ""
  557.     ReDim arrTileText(0 To 255) As String
  558.  
  559.     Dim iTileNum As Integer
  560.  
  561.     ReDim arrLines(-1) As String
  562.     Dim iFromX As Integer
  563.     Dim iFromY As Integer
  564.     Dim sLine As String
  565.     Dim sChar As String
  566.  
  567.     Dim iTileX As Integer
  568.     Dim iTileY As Integer
  569.     Dim iToX As Integer
  570.     Dim iToY As Integer
  571.     Dim pixelColor As _Unsigned Long
  572.     Dim bFinished As Integer
  573.  
  574.     ' Do not try to free image handles currently being used as the active SCREEN. Change screen modes first.
  575.     ' _DISPLAY turns off the auto refresh screen default _AUTODISPLAY behavior. Prevents screen flickering.
  576.     If imgTiles& < -1 Or imgTiles& > 0 Then _FreeImage imgTiles&
  577.     imgTiles& = _NewImage(128, 128, 32)
  578.     '    Cls , cEmpty ' set the background color as transparent
  579.  
  580.     'Screen imgTiles&
  581.     'Cls , bgColor ' set the background color as transparent
  582.     _Dest imgTiles&
  583.     'DrawRect 0, 0, 128, 128, cEmpty
  584.     'DrawBox 0, 0, 128, cWhite
  585.     Cls , cEmpty ' set the background color as transparent
  586.  
  587.     GetTileText arrTileText()
  588.     iTileX = 0
  589.     iTileY = 0
  590.     bFinished = FALSE
  591.     For iTileNum = 0 To 255
  592.         split arrTileText(iTileNum), Chr$(13), arrLines()
  593.         iToY = iTileY * 8
  594.         If (iToY > _Height(imgTiles&)) Then
  595.             sResult = "iToY value " + cstr$(iToY) + " " + _
  596.                 "exceeded image height " + cstr$(_Height(imgTiles&)) + ". " + _
  597.                 "Exiting " + RoutineName + " at iTileNum=" + cstr$(iTileNum) + "."
  598.             bFinished = TRUE
  599.             Exit For
  600.         End If
  601.  
  602.         For iFromY = LBound(arrLines) To UBound(arrLines)
  603.             sLine = arrLines(iFromY)
  604.             If Len(sLine) > 0 Then
  605.                 iToX = iTileX * 8
  606.                 For iFromX = 1 To Len(sLine)
  607.                     sChar = Mid$(sLine, iFromX, 1)
  608.                     If sChar = "." Then
  609.                         pixelColor = bgColor ' cEmpty ' POINT(iFromX, iFromY)
  610.                     Else
  611.                         pixelColor = fgColor ' cBlack
  612.                     End If
  613.                     PSet (iToX, iToY), pixelColor
  614.                     iToX = iToX + 1
  615.                     If (iToX > _Width(imgTiles&)) Then
  616.                         sResult = "iToX value " + cstr$(iToX) + " " + _
  617.                             "exceeded image width " + cstr$(_Width(imgTiles&)) + ". " + _
  618.                             "Exiting " + RoutineName + " at iTileNum=" + cstr$(iTileNum) + "."
  619.                         bFinished = TRUE
  620.                         Exit For
  621.                     End If
  622.                 Next iFromX
  623.                 iToY = iToY + 1
  624.                 If bFinished = TRUE Then Exit For
  625.             End If
  626.         Next iFromY
  627.         If bFinished = TRUE Then Exit For
  628.  
  629.         iTileX = iTileX + 1
  630.         If iTileX > 15 Then
  631.             iTileX = 0
  632.             iTileY = iTileY + 1
  633.             'if iTileY > 15 then
  634.             '    sResult = "Exceeded max 16 rows of tiles." + _
  635.             '        "Exiting " + RoutineName + " at iTileNum=" + cstr$(iTileNum) + "."
  636.             '    bFinished = TRUE
  637.             '    exit for
  638.             'end if
  639.         End If
  640.     Next iTileNum
  641.  
  642.     GetTiles$ = sResult
  643. End Function ' GetTiles$
  644.  
  645. ' /////////////////////////////////////////////////////////////////////////////
  646. ' Returns an array of 256 8x8 tiles defined in text
  647. ' where each tile is defined by "." as blank and anything else is a pixel
  648. ' and each row is delimited by chr$(13)
  649.  
  650. Sub GetTileText (arrTileText() As String)
  651.     ReDim arrTileText(0 To 255) As String
  652.  
  653.     m$ = ""
  654.     m$ = m$ + "22....22" + Chr$(13)
  655.     m$ = m$ + "2..22..2" + Chr$(13)
  656.     m$ = m$ + "2..2...2" + Chr$(13)
  657.     m$ = m$ + "2...2..2" + Chr$(13)
  658.     m$ = m$ + "2..22..2" + Chr$(13)
  659.     m$ = m$ + "2..22..2" + Chr$(13)
  660.     m$ = m$ + "22....22" + Chr$(13)
  661.     m$ = m$ + "22222222" + Chr$(13)
  662.     arrTileText(0) = m$
  663.  
  664.     m$ = ""
  665.     m$ = m$ + "........" + Chr$(13)
  666.     m$ = m$ + "........" + Chr$(13)
  667.     m$ = m$ + "........" + Chr$(13)
  668.     m$ = m$ + "........" + Chr$(13)
  669.     m$ = m$ + "........" + Chr$(13)
  670.     m$ = m$ + "........" + Chr$(13)
  671.     m$ = m$ + "........" + Chr$(13)
  672.     m$ = m$ + "........" + Chr$(13)
  673.     arrTileText(1) = m$
  674.  
  675.     m$ = ""
  676.     m$ = m$ + "........" + Chr$(13)
  677.     m$ = m$ + "........" + Chr$(13)
  678.     m$ = m$ + "........" + Chr$(13)
  679.     m$ = m$ + "........" + Chr$(13)
  680.     m$ = m$ + "........" + Chr$(13)
  681.     m$ = m$ + "........" + Chr$(13)
  682.     m$ = m$ + "........" + Chr$(13)
  683.     m$ = m$ + "........" + Chr$(13)
  684.     arrTileText(2) = m$
  685.  
  686.     m$ = ""
  687.     m$ = m$ + "........" + Chr$(13)
  688.     m$ = m$ + "........" + Chr$(13)
  689.     m$ = m$ + "........" + Chr$(13)
  690.     m$ = m$ + "........" + Chr$(13)
  691.     m$ = m$ + "........" + Chr$(13)
  692.     m$ = m$ + "........" + Chr$(13)
  693.     m$ = m$ + "........" + Chr$(13)
  694.     m$ = m$ + "........" + Chr$(13)
  695.     arrTileText(3) = m$
  696.  
  697.     m$ = ""
  698.     m$ = m$ + "........" + Chr$(13)
  699.     m$ = m$ + "........" + Chr$(13)
  700.     m$ = m$ + "........" + Chr$(13)
  701.     m$ = m$ + "........" + Chr$(13)
  702.     m$ = m$ + "........" + Chr$(13)
  703.     m$ = m$ + "........" + Chr$(13)
  704.     m$ = m$ + "........" + Chr$(13)
  705.     m$ = m$ + "........" + Chr$(13)
  706.     arrTileText(4) = m$
  707.  
  708.     m$ = ""
  709.     m$ = m$ + "........" + Chr$(13)
  710.     m$ = m$ + "........" + Chr$(13)
  711.     m$ = m$ + "........" + Chr$(13)
  712.     m$ = m$ + "........" + Chr$(13)
  713.     m$ = m$ + "........" + Chr$(13)
  714.     m$ = m$ + "........" + Chr$(13)
  715.     m$ = m$ + "........" + Chr$(13)
  716.     m$ = m$ + "........" + Chr$(13)
  717.     arrTileText(5) = m$
  718.  
  719.     m$ = ""
  720.     m$ = m$ + "........" + Chr$(13)
  721.     m$ = m$ + "........" + Chr$(13)
  722.     m$ = m$ + "........" + Chr$(13)
  723.     m$ = m$ + "........" + Chr$(13)
  724.     m$ = m$ + "........" + Chr$(13)
  725.     m$ = m$ + "........" + Chr$(13)
  726.     m$ = m$ + "........" + Chr$(13)
  727.     m$ = m$ + "........" + Chr$(13)
  728.     arrTileText(6) = m$
  729.  
  730.     m$ = ""
  731.     m$ = m$ + "........" + Chr$(13)
  732.     m$ = m$ + "........" + Chr$(13)
  733.     m$ = m$ + "........" + Chr$(13)
  734.     m$ = m$ + "........" + Chr$(13)
  735.     m$ = m$ + "........" + Chr$(13)
  736.     m$ = m$ + "........" + Chr$(13)
  737.     m$ = m$ + "........" + Chr$(13)
  738.     m$ = m$ + "........" + Chr$(13)
  739.     arrTileText(7) = m$
  740.  
  741.     m$ = ""
  742.     m$ = m$ + "........" + Chr$(13)
  743.     m$ = m$ + "........" + Chr$(13)
  744.     m$ = m$ + "........" + Chr$(13)
  745.     m$ = m$ + "........" + Chr$(13)
  746.     m$ = m$ + "........" + Chr$(13)
  747.     m$ = m$ + "........" + Chr$(13)
  748.     m$ = m$ + "........" + Chr$(13)
  749.     m$ = m$ + "........" + Chr$(13)
  750.     arrTileText(8) = m$
  751.  
  752.     m$ = ""
  753.     m$ = m$ + "........" + Chr$(13)
  754.     m$ = m$ + "........" + Chr$(13)
  755.     m$ = m$ + "........" + Chr$(13)
  756.     m$ = m$ + "........" + Chr$(13)
  757.     m$ = m$ + "........" + Chr$(13)
  758.     m$ = m$ + "........" + Chr$(13)
  759.     m$ = m$ + "........" + Chr$(13)
  760.     m$ = m$ + "........" + Chr$(13)
  761.     arrTileText(9) = m$
  762.  
  763.     m$ = ""
  764.     m$ = m$ + "........" + Chr$(13)
  765.     m$ = m$ + "........" + Chr$(13)
  766.     m$ = m$ + "........" + Chr$(13)
  767.     m$ = m$ + "........" + Chr$(13)
  768.     m$ = m$ + "........" + Chr$(13)
  769.     m$ = m$ + "........" + Chr$(13)
  770.     m$ = m$ + "........" + Chr$(13)
  771.     m$ = m$ + "........" + Chr$(13)
  772.     arrTileText(10) = m$
  773.  
  774.     m$ = ""
  775.     m$ = m$ + "........" + Chr$(13)
  776.     m$ = m$ + "........" + Chr$(13)
  777.     m$ = m$ + "........" + Chr$(13)
  778.     m$ = m$ + "........" + Chr$(13)
  779.     m$ = m$ + "........" + Chr$(13)
  780.     m$ = m$ + "........" + Chr$(13)
  781.     m$ = m$ + "........" + Chr$(13)
  782.     m$ = m$ + "........" + Chr$(13)
  783.     arrTileText(11) = m$
  784.  
  785.     m$ = ""
  786.     m$ = m$ + "........" + Chr$(13)
  787.     m$ = m$ + "........" + Chr$(13)
  788.     m$ = m$ + "........" + Chr$(13)
  789.     m$ = m$ + "........" + Chr$(13)
  790.     m$ = m$ + "........" + Chr$(13)
  791.     m$ = m$ + "........" + Chr$(13)
  792.     m$ = m$ + "........" + Chr$(13)
  793.     m$ = m$ + "........" + Chr$(13)
  794.     arrTileText(12) = m$
  795.  
  796.     m$ = ""
  797.     m$ = m$ + "........" + Chr$(13)
  798.     m$ = m$ + "........" + Chr$(13)
  799.     m$ = m$ + "........" + Chr$(13)
  800.     m$ = m$ + "........" + Chr$(13)
  801.     m$ = m$ + "........" + Chr$(13)
  802.     m$ = m$ + "........" + Chr$(13)
  803.     m$ = m$ + "........" + Chr$(13)
  804.     m$ = m$ + "........" + Chr$(13)
  805.     arrTileText(13) = m$
  806.  
  807.     m$ = ""
  808.     m$ = m$ + "........" + Chr$(13)
  809.     m$ = m$ + "........" + Chr$(13)
  810.     m$ = m$ + "........" + Chr$(13)
  811.     m$ = m$ + "........" + Chr$(13)
  812.     m$ = m$ + "........" + Chr$(13)
  813.     m$ = m$ + "........" + Chr$(13)
  814.     m$ = m$ + "........" + Chr$(13)
  815.     m$ = m$ + "........" + Chr$(13)
  816.     arrTileText(14) = m$
  817.  
  818.     m$ = ""
  819.     m$ = m$ + "........" + Chr$(13)
  820.     m$ = m$ + "........" + Chr$(13)
  821.     m$ = m$ + "........" + Chr$(13)
  822.     m$ = m$ + "........" + Chr$(13)
  823.     m$ = m$ + "........" + Chr$(13)
  824.     m$ = m$ + "........" + Chr$(13)
  825.     m$ = m$ + "........" + Chr$(13)
  826.     m$ = m$ + "........" + Chr$(13)
  827.     arrTileText(15) = m$
  828.  
  829.     m$ = ""
  830.     m$ = m$ + "........" + Chr$(13)
  831.     m$ = m$ + "........" + Chr$(13)
  832.     m$ = m$ + "........" + Chr$(13)
  833.     m$ = m$ + "........" + Chr$(13)
  834.     m$ = m$ + "........" + Chr$(13)
  835.     m$ = m$ + "........" + Chr$(13)
  836.     m$ = m$ + "........" + Chr$(13)
  837.     m$ = m$ + "........" + Chr$(13)
  838.     arrTileText(16) = m$
  839.  
  840.     m$ = ""
  841.     m$ = m$ + "........" + Chr$(13)
  842.     m$ = m$ + "........" + Chr$(13)
  843.     m$ = m$ + "........" + Chr$(13)
  844.     m$ = m$ + "........" + Chr$(13)
  845.     m$ = m$ + "........" + Chr$(13)
  846.     m$ = m$ + "........" + Chr$(13)
  847.     m$ = m$ + "........" + Chr$(13)
  848.     m$ = m$ + "........" + Chr$(13)
  849.     arrTileText(17) = m$
  850.  
  851.     m$ = ""
  852.     m$ = m$ + "........" + Chr$(13)
  853.     m$ = m$ + "........" + Chr$(13)
  854.     m$ = m$ + "........" + Chr$(13)
  855.     m$ = m$ + "........" + Chr$(13)
  856.     m$ = m$ + "........" + Chr$(13)
  857.     m$ = m$ + "........" + Chr$(13)
  858.     m$ = m$ + "........" + Chr$(13)
  859.     m$ = m$ + "........" + Chr$(13)
  860.     arrTileText(18) = m$
  861.  
  862.     m$ = ""
  863.     m$ = m$ + "........" + Chr$(13)
  864.     m$ = m$ + "........" + Chr$(13)
  865.     m$ = m$ + "........" + Chr$(13)
  866.     m$ = m$ + "........" + Chr$(13)
  867.     m$ = m$ + "........" + Chr$(13)
  868.     m$ = m$ + "........" + Chr$(13)
  869.     m$ = m$ + "........" + Chr$(13)
  870.     m$ = m$ + "........" + Chr$(13)
  871.     arrTileText(19) = m$
  872.  
  873.     m$ = ""
  874.     m$ = m$ + "........" + Chr$(13)
  875.     m$ = m$ + "........" + Chr$(13)
  876.     m$ = m$ + "........" + Chr$(13)
  877.     m$ = m$ + "........" + Chr$(13)
  878.     m$ = m$ + "........" + Chr$(13)
  879.     m$ = m$ + "........" + Chr$(13)
  880.     m$ = m$ + "........" + Chr$(13)
  881.     m$ = m$ + "........" + Chr$(13)
  882.     arrTileText(20) = m$
  883.  
  884.     m$ = ""
  885.     m$ = m$ + "........" + Chr$(13)
  886.     m$ = m$ + "........" + Chr$(13)
  887.     m$ = m$ + "........" + Chr$(13)
  888.     m$ = m$ + "........" + Chr$(13)
  889.     m$ = m$ + "........" + Chr$(13)
  890.     m$ = m$ + "........" + Chr$(13)
  891.     m$ = m$ + "........" + Chr$(13)
  892.     m$ = m$ + "........" + Chr$(13)
  893.     arrTileText(21) = m$
  894.  
  895.     m$ = ""
  896.     m$ = m$ + "........" + Chr$(13)
  897.     m$ = m$ + "........" + Chr$(13)
  898.     m$ = m$ + "........" + Chr$(13)
  899.     m$ = m$ + "........" + Chr$(13)
  900.     m$ = m$ + "........" + Chr$(13)
  901.     m$ = m$ + "........" + Chr$(13)
  902.     m$ = m$ + "........" + Chr$(13)
  903.     m$ = m$ + "........" + Chr$(13)
  904.     arrTileText(22) = m$
  905.  
  906.     m$ = ""
  907.     m$ = m$ + "........" + Chr$(13)
  908.     m$ = m$ + "........" + Chr$(13)
  909.     m$ = m$ + "........" + Chr$(13)
  910.     m$ = m$ + "........" + Chr$(13)
  911.     m$ = m$ + "........" + Chr$(13)
  912.     m$ = m$ + "........" + Chr$(13)
  913.     m$ = m$ + "........" + Chr$(13)
  914.     m$ = m$ + "........" + Chr$(13)
  915.     arrTileText(23) = m$
  916.  
  917.     m$ = ""
  918.     m$ = m$ + "........" + Chr$(13)
  919.     m$ = m$ + "........" + Chr$(13)
  920.     m$ = m$ + "........" + Chr$(13)
  921.     m$ = m$ + "........" + Chr$(13)
  922.     m$ = m$ + "........" + Chr$(13)
  923.     m$ = m$ + "........" + Chr$(13)
  924.     m$ = m$ + "........" + Chr$(13)
  925.     m$ = m$ + "........" + Chr$(13)
  926.     arrTileText(24) = m$
  927.  
  928.     m$ = ""
  929.     m$ = m$ + "........" + Chr$(13)
  930.     m$ = m$ + "........" + Chr$(13)
  931.     m$ = m$ + "........" + Chr$(13)
  932.     m$ = m$ + "........" + Chr$(13)
  933.     m$ = m$ + "........" + Chr$(13)
  934.     m$ = m$ + "........" + Chr$(13)
  935.     m$ = m$ + "........" + Chr$(13)
  936.     m$ = m$ + "........" + Chr$(13)
  937.     arrTileText(25) = m$
  938.  
  939.     m$ = ""
  940.     m$ = m$ + "........" + Chr$(13)
  941.     m$ = m$ + "........" + Chr$(13)
  942.     m$ = m$ + "........" + Chr$(13)
  943.     m$ = m$ + "........" + Chr$(13)
  944.     m$ = m$ + "........" + Chr$(13)
  945.     m$ = m$ + "........" + Chr$(13)
  946.     m$ = m$ + "........" + Chr$(13)
  947.     m$ = m$ + "........" + Chr$(13)
  948.     arrTileText(26) = m$
  949.  
  950.     m$ = ""
  951.     m$ = m$ + "........" + Chr$(13)
  952.     m$ = m$ + "........" + Chr$(13)
  953.     m$ = m$ + "........" + Chr$(13)
  954.     m$ = m$ + "........" + Chr$(13)
  955.     m$ = m$ + "........" + Chr$(13)
  956.     m$ = m$ + "........" + Chr$(13)
  957.     m$ = m$ + "........" + Chr$(13)
  958.     m$ = m$ + "........" + Chr$(13)
  959.     arrTileText(27) = m$
  960.  
  961.     m$ = ""
  962.     m$ = m$ + "........" + Chr$(13)
  963.     m$ = m$ + "........" + Chr$(13)
  964.     m$ = m$ + "........" + Chr$(13)
  965.     m$ = m$ + "........" + Chr$(13)
  966.     m$ = m$ + "........" + Chr$(13)
  967.     m$ = m$ + "........" + Chr$(13)
  968.     m$ = m$ + "........" + Chr$(13)
  969.     m$ = m$ + "........" + Chr$(13)
  970.     arrTileText(28) = m$
  971.  
  972.     m$ = ""
  973.     m$ = m$ + "........" + Chr$(13)
  974.     m$ = m$ + "........" + Chr$(13)
  975.     m$ = m$ + "........" + Chr$(13)
  976.     m$ = m$ + "........" + Chr$(13)
  977.     m$ = m$ + "........" + Chr$(13)
  978.     m$ = m$ + "........" + Chr$(13)
  979.     m$ = m$ + "........" + Chr$(13)
  980.     m$ = m$ + "........" + Chr$(13)
  981.     arrTileText(29) = m$
  982.  
  983.     m$ = ""
  984.     m$ = m$ + "........" + Chr$(13)
  985.     m$ = m$ + "........" + Chr$(13)
  986.     m$ = m$ + "........" + Chr$(13)
  987.     m$ = m$ + "........" + Chr$(13)
  988.     m$ = m$ + "........" + Chr$(13)
  989.     m$ = m$ + "........" + Chr$(13)
  990.     m$ = m$ + "........" + Chr$(13)
  991.     m$ = m$ + "........" + Chr$(13)
  992.     arrTileText(30) = m$
  993.  
  994.     m$ = ""
  995.     m$ = m$ + "........" + Chr$(13)
  996.     m$ = m$ + "........" + Chr$(13)
  997.     m$ = m$ + "........" + Chr$(13)
  998.     m$ = m$ + "........" + Chr$(13)
  999.     m$ = m$ + "........" + Chr$(13)
  1000.     m$ = m$ + "........" + Chr$(13)
  1001.     m$ = m$ + "........" + Chr$(13)
  1002.     m$ = m$ + "........" + Chr$(13)
  1003.     arrTileText(31) = m$
  1004.  
  1005.     m$ = ""
  1006.     m$ = m$ + "........" + Chr$(13)
  1007.     m$ = m$ + "........" + Chr$(13)
  1008.     m$ = m$ + "........" + Chr$(13)
  1009.     m$ = m$ + "........" + Chr$(13)
  1010.     m$ = m$ + "........" + Chr$(13)
  1011.     m$ = m$ + "........" + Chr$(13)
  1012.     m$ = m$ + "........" + Chr$(13)
  1013.     m$ = m$ + "........" + Chr$(13)
  1014.     arrTileText(32) = m$
  1015.  
  1016.     m$ = ""
  1017.     m$ = m$ + "...22..." + Chr$(13)
  1018.     m$ = m$ + "...22..." + Chr$(13)
  1019.     m$ = m$ + "...22..." + Chr$(13)
  1020.     m$ = m$ + "...22..." + Chr$(13)
  1021.     m$ = m$ + "........" + Chr$(13)
  1022.     m$ = m$ + "........" + Chr$(13)
  1023.     m$ = m$ + "...22..." + Chr$(13)
  1024.     m$ = m$ + "........" + Chr$(13)
  1025.     arrTileText(33) = m$
  1026.  
  1027.     m$ = ""
  1028.     m$ = m$ + ".22..22." + Chr$(13)
  1029.     m$ = m$ + ".22..22." + Chr$(13)
  1030.     m$ = m$ + ".22..22." + Chr$(13)
  1031.     m$ = m$ + "........" + Chr$(13)
  1032.     m$ = m$ + "........" + Chr$(13)
  1033.     m$ = m$ + "........" + Chr$(13)
  1034.     m$ = m$ + "........" + Chr$(13)
  1035.     m$ = m$ + "........" + Chr$(13)
  1036.     arrTileText(34) = m$
  1037.  
  1038.     m$ = ""
  1039.     m$ = m$ + ".22..22." + Chr$(13)
  1040.     m$ = m$ + ".22..22." + Chr$(13)
  1041.     m$ = m$ + "22222222" + Chr$(13)
  1042.     m$ = m$ + ".22..22." + Chr$(13)
  1043.     m$ = m$ + "22222222" + Chr$(13)
  1044.     m$ = m$ + ".22..22." + Chr$(13)
  1045.     m$ = m$ + ".22..22." + Chr$(13)
  1046.     m$ = m$ + "........" + Chr$(13)
  1047.     arrTileText(35) = m$
  1048.  
  1049.     m$ = ""
  1050.     m$ = m$ + "...22..." + Chr$(13)
  1051.     m$ = m$ + "..22222." + Chr$(13)
  1052.     m$ = m$ + ".22....." + Chr$(13)
  1053.     m$ = m$ + "..2222.." + Chr$(13)
  1054.     m$ = m$ + ".....22." + Chr$(13)
  1055.     m$ = m$ + ".22222.." + Chr$(13)
  1056.     m$ = m$ + "...22..." + Chr$(13)
  1057.     m$ = m$ + "........" + Chr$(13)
  1058.     arrTileText(36) = m$
  1059.  
  1060.     m$ = ""
  1061.     m$ = m$ + ".22...2." + Chr$(13)
  1062.     m$ = m$ + ".22..22." + Chr$(13)
  1063.     m$ = m$ + "....22.." + Chr$(13)
  1064.     m$ = m$ + "...22..." + Chr$(13)
  1065.     m$ = m$ + "..22...." + Chr$(13)
  1066.     m$ = m$ + ".22..22." + Chr$(13)
  1067.     m$ = m$ + ".2...22." + Chr$(13)
  1068.     m$ = m$ + "........" + Chr$(13)
  1069.     arrTileText(37) = m$
  1070.  
  1071.     m$ = ""
  1072.     m$ = m$ + "..2222.." + Chr$(13)
  1073.     m$ = m$ + ".22..22." + Chr$(13)
  1074.     m$ = m$ + "..2222.." + Chr$(13)
  1075.     m$ = m$ + "..222..." + Chr$(13)
  1076.     m$ = m$ + ".22..222" + Chr$(13)
  1077.     m$ = m$ + ".22..22." + Chr$(13)
  1078.     m$ = m$ + "..222222" + Chr$(13)
  1079.     m$ = m$ + "........" + Chr$(13)
  1080.     arrTileText(38) = m$
  1081.  
  1082.     m$ = ""
  1083.     m$ = m$ + ".....22." + Chr$(13)
  1084.     m$ = m$ + "....22.." + Chr$(13)
  1085.     m$ = m$ + "...22..." + Chr$(13)
  1086.     m$ = m$ + "........" + Chr$(13)
  1087.     m$ = m$ + "........" + Chr$(13)
  1088.     m$ = m$ + "........" + Chr$(13)
  1089.     m$ = m$ + "........" + Chr$(13)
  1090.     m$ = m$ + "........" + Chr$(13)
  1091.     arrTileText(39) = m$
  1092.  
  1093.     m$ = ""
  1094.     m$ = m$ + "....22.." + Chr$(13)
  1095.     m$ = m$ + "...22..." + Chr$(13)
  1096.     m$ = m$ + "..22...." + Chr$(13)
  1097.     m$ = m$ + "..22...." + Chr$(13)
  1098.     m$ = m$ + "..22...." + Chr$(13)
  1099.     m$ = m$ + "...22..." + Chr$(13)
  1100.     m$ = m$ + "....22.." + Chr$(13)
  1101.     m$ = m$ + "........" + Chr$(13)
  1102.     arrTileText(40) = m$
  1103.  
  1104.     m$ = ""
  1105.     m$ = m$ + "..22...." + Chr$(13)
  1106.     m$ = m$ + "...22..." + Chr$(13)
  1107.     m$ = m$ + "....22.." + Chr$(13)
  1108.     m$ = m$ + "....22.." + Chr$(13)
  1109.     m$ = m$ + "....22.." + Chr$(13)
  1110.     m$ = m$ + "...22..." + Chr$(13)
  1111.     m$ = m$ + "..22...." + Chr$(13)
  1112.     m$ = m$ + "........" + Chr$(13)
  1113.     arrTileText(41) = m$
  1114.  
  1115.     m$ = ""
  1116.     m$ = m$ + "........" + Chr$(13)
  1117.     m$ = m$ + ".22..22." + Chr$(13)
  1118.     m$ = m$ + "..2222.." + Chr$(13)
  1119.     m$ = m$ + "22222222" + Chr$(13)
  1120.     m$ = m$ + "..2222.." + Chr$(13)
  1121.     m$ = m$ + ".22..22." + Chr$(13)
  1122.     m$ = m$ + "........" + Chr$(13)
  1123.     m$ = m$ + "........" + Chr$(13)
  1124.     arrTileText(42) = m$
  1125.  
  1126.     m$ = ""
  1127.     m$ = m$ + "........" + Chr$(13)
  1128.     m$ = m$ + "...22..." + Chr$(13)
  1129.     m$ = m$ + "...22..." + Chr$(13)
  1130.     m$ = m$ + ".222222." + Chr$(13)
  1131.     m$ = m$ + "...22..." + Chr$(13)
  1132.     m$ = m$ + "...22..." + Chr$(13)
  1133.     m$ = m$ + "........" + Chr$(13)
  1134.     m$ = m$ + "........" + Chr$(13)
  1135.     arrTileText(43) = m$
  1136.  
  1137.     m$ = ""
  1138.     m$ = m$ + "........" + Chr$(13)
  1139.     m$ = m$ + "........" + Chr$(13)
  1140.     m$ = m$ + "........" + Chr$(13)
  1141.     m$ = m$ + "........" + Chr$(13)
  1142.     m$ = m$ + "........" + Chr$(13)
  1143.     m$ = m$ + "...22..." + Chr$(13)
  1144.     m$ = m$ + "...22..." + Chr$(13)
  1145.     m$ = m$ + "..22...." + Chr$(13)
  1146.     arrTileText(44) = m$
  1147.  
  1148.     m$ = ""
  1149.     m$ = m$ + "........" + Chr$(13)
  1150.     m$ = m$ + "........" + Chr$(13)
  1151.     m$ = m$ + "........" + Chr$(13)
  1152.     m$ = m$ + ".222222." + Chr$(13)
  1153.     m$ = m$ + "........" + Chr$(13)
  1154.     m$ = m$ + "........" + Chr$(13)
  1155.     m$ = m$ + "........" + Chr$(13)
  1156.     m$ = m$ + "........" + Chr$(13)
  1157.     arrTileText(45) = m$
  1158.  
  1159.     m$ = ""
  1160.     m$ = m$ + "........" + Chr$(13)
  1161.     m$ = m$ + "........" + Chr$(13)
  1162.     m$ = m$ + "........" + Chr$(13)
  1163.     m$ = m$ + "........" + Chr$(13)
  1164.     m$ = m$ + "........" + Chr$(13)
  1165.     m$ = m$ + "...22..." + Chr$(13)
  1166.     m$ = m$ + "...22..." + Chr$(13)
  1167.     m$ = m$ + "........" + Chr$(13)
  1168.     arrTileText(46) = m$
  1169.  
  1170.     m$ = ""
  1171.     m$ = m$ + "........" + Chr$(13)
  1172.     m$ = m$ + "......22" + Chr$(13)
  1173.     m$ = m$ + ".....22." + Chr$(13)
  1174.     m$ = m$ + "....22.." + Chr$(13)
  1175.     m$ = m$ + "...22..." + Chr$(13)
  1176.     m$ = m$ + "..22...." + Chr$(13)
  1177.     m$ = m$ + ".22....." + Chr$(13)
  1178.     m$ = m$ + "........" + Chr$(13)
  1179.     arrTileText(47) = m$
  1180.  
  1181.     m$ = ""
  1182.     m$ = m$ + "..2222.." + Chr$(13)
  1183.     m$ = m$ + ".22..22." + Chr$(13)
  1184.     m$ = m$ + ".22.222." + Chr$(13)
  1185.     m$ = m$ + ".222.22." + Chr$(13)
  1186.     m$ = m$ + ".22..22." + Chr$(13)
  1187.     m$ = m$ + ".22..22." + Chr$(13)
  1188.     m$ = m$ + "..2222.." + Chr$(13)
  1189.     m$ = m$ + "........" + Chr$(13)
  1190.     arrTileText(48) = m$
  1191.  
  1192.     m$ = ""
  1193.     m$ = m$ + "...22..." + Chr$(13)
  1194.     m$ = m$ + "...22..." + Chr$(13)
  1195.     m$ = m$ + "..222..." + Chr$(13)
  1196.     m$ = m$ + "...22..." + Chr$(13)
  1197.     m$ = m$ + "...22..." + Chr$(13)
  1198.     m$ = m$ + "...22..." + Chr$(13)
  1199.     m$ = m$ + ".222222." + Chr$(13)
  1200.     m$ = m$ + "........" + Chr$(13)
  1201.     arrTileText(49) = m$
  1202.  
  1203.     m$ = ""
  1204.     m$ = m$ + "..2222.." + Chr$(13)
  1205.     m$ = m$ + ".22..22." + Chr$(13)
  1206.     m$ = m$ + ".....22." + Chr$(13)
  1207.     m$ = m$ + "....22.." + Chr$(13)
  1208.     m$ = m$ + "..22...." + Chr$(13)
  1209.     m$ = m$ + ".22....." + Chr$(13)
  1210.     m$ = m$ + ".222222." + Chr$(13)
  1211.     m$ = m$ + "........" + Chr$(13)
  1212.     arrTileText(50) = m$
  1213.  
  1214.     m$ = ""
  1215.     m$ = m$ + "..2222.." + Chr$(13)
  1216.     m$ = m$ + ".22..22." + Chr$(13)
  1217.     m$ = m$ + ".....22." + Chr$(13)
  1218.     m$ = m$ + "...222.." + Chr$(13)
  1219.     m$ = m$ + ".....22." + Chr$(13)
  1220.     m$ = m$ + ".22..22." + Chr$(13)
  1221.     m$ = m$ + "..2222.." + Chr$(13)
  1222.     m$ = m$ + "........" + Chr$(13)
  1223.     arrTileText(51) = m$
  1224.  
  1225.     m$ = ""
  1226.     m$ = m$ + ".....22." + Chr$(13)
  1227.     m$ = m$ + "....222." + Chr$(13)
  1228.     m$ = m$ + "...2222." + Chr$(13)
  1229.     m$ = m$ + ".22..22." + Chr$(13)
  1230.     m$ = m$ + ".2222222" + Chr$(13)
  1231.     m$ = m$ + ".....22." + Chr$(13)
  1232.     m$ = m$ + ".....22." + Chr$(13)
  1233.     m$ = m$ + "........" + Chr$(13)
  1234.     arrTileText(52) = m$
  1235.  
  1236.     m$ = ""
  1237.     m$ = m$ + ".222222." + Chr$(13)
  1238.     m$ = m$ + ".22....." + Chr$(13)
  1239.     m$ = m$ + ".22222.." + Chr$(13)
  1240.     m$ = m$ + ".....22." + Chr$(13)
  1241.     m$ = m$ + ".....22." + Chr$(13)
  1242.     m$ = m$ + ".22..22." + Chr$(13)
  1243.     m$ = m$ + "..2222.." + Chr$(13)
  1244.     m$ = m$ + "........" + Chr$(13)
  1245.     arrTileText(53) = m$
  1246.  
  1247.     m$ = ""
  1248.     m$ = m$ + "..2222.." + Chr$(13)
  1249.     m$ = m$ + ".22..22." + Chr$(13)
  1250.     m$ = m$ + ".22....." + Chr$(13)
  1251.     m$ = m$ + ".22222.." + Chr$(13)
  1252.     m$ = m$ + ".22..22." + Chr$(13)
  1253.     m$ = m$ + ".22..22." + Chr$(13)
  1254.     m$ = m$ + "..2222.." + Chr$(13)
  1255.     m$ = m$ + "........" + Chr$(13)
  1256.     arrTileText(54) = m$
  1257.  
  1258.     m$ = ""
  1259.     m$ = m$ + ".222222." + Chr$(13)
  1260.     m$ = m$ + ".22..22." + Chr$(13)
  1261.     m$ = m$ + "....22.." + Chr$(13)
  1262.     m$ = m$ + "...22..." + Chr$(13)
  1263.     m$ = m$ + "...22..." + Chr$(13)
  1264.     m$ = m$ + "...22..." + Chr$(13)
  1265.     m$ = m$ + "...22..." + Chr$(13)
  1266.     m$ = m$ + "........" + Chr$(13)
  1267.     arrTileText(55) = m$
  1268.  
  1269.     m$ = ""
  1270.     m$ = m$ + "..2222.." + Chr$(13)
  1271.     m$ = m$ + ".22..22." + Chr$(13)
  1272.     m$ = m$ + ".22..22." + Chr$(13)
  1273.     m$ = m$ + "..2222.." + Chr$(13)
  1274.     m$ = m$ + ".22..22." + Chr$(13)
  1275.     m$ = m$ + ".22..22." + Chr$(13)
  1276.     m$ = m$ + "..2222.." + Chr$(13)
  1277.     m$ = m$ + "........" + Chr$(13)
  1278.     arrTileText(56) = m$
  1279.  
  1280.     m$ = ""
  1281.     m$ = m$ + "..2222.." + Chr$(13)
  1282.     m$ = m$ + ".22..22." + Chr$(13)
  1283.     m$ = m$ + ".22..22." + Chr$(13)
  1284.     m$ = m$ + "..22222." + Chr$(13)
  1285.     m$ = m$ + ".....22." + Chr$(13)
  1286.     m$ = m$ + ".22..22." + Chr$(13)
  1287.     m$ = m$ + "..2222.." + Chr$(13)
  1288.     m$ = m$ + "........" + Chr$(13)
  1289.     arrTileText(57) = m$
  1290.  
  1291.     m$ = ""
  1292.     m$ = m$ + "........" + Chr$(13)
  1293.     m$ = m$ + "........" + Chr$(13)
  1294.     m$ = m$ + "...22..." + Chr$(13)
  1295.     m$ = m$ + "........" + Chr$(13)
  1296.     m$ = m$ + "........" + Chr$(13)
  1297.     m$ = m$ + "...22..." + Chr$(13)
  1298.     m$ = m$ + "........" + Chr$(13)
  1299.     m$ = m$ + "........" + Chr$(13)
  1300.     arrTileText(58) = m$
  1301.  
  1302.     m$ = ""
  1303.     m$ = m$ + "........" + Chr$(13)
  1304.     m$ = m$ + "........" + Chr$(13)
  1305.     m$ = m$ + "...22..." + Chr$(13)
  1306.     m$ = m$ + "........" + Chr$(13)
  1307.     m$ = m$ + "........" + Chr$(13)
  1308.     m$ = m$ + "...22..." + Chr$(13)
  1309.     m$ = m$ + "...22..." + Chr$(13)
  1310.     m$ = m$ + "..22...." + Chr$(13)
  1311.     arrTileText(59) = m$
  1312.  
  1313.     m$ = ""
  1314.     m$ = m$ + "....222." + Chr$(13)
  1315.     m$ = m$ + "...22..." + Chr$(13)
  1316.     m$ = m$ + "..22...." + Chr$(13)
  1317.     m$ = m$ + ".22....." + Chr$(13)
  1318.     m$ = m$ + "..22...." + Chr$(13)
  1319.     m$ = m$ + "...22..." + Chr$(13)
  1320.     m$ = m$ + "....222." + Chr$(13)
  1321.     m$ = m$ + "........" + Chr$(13)
  1322.     arrTileText(60) = m$
  1323.  
  1324.     m$ = ""
  1325.     m$ = m$ + "........" + Chr$(13)
  1326.     m$ = m$ + "........" + Chr$(13)
  1327.     m$ = m$ + ".222222." + Chr$(13)
  1328.     m$ = m$ + "........" + Chr$(13)
  1329.     m$ = m$ + ".222222." + Chr$(13)
  1330.     m$ = m$ + "........" + Chr$(13)
  1331.     m$ = m$ + "........" + Chr$(13)
  1332.     m$ = m$ + "........" + Chr$(13)
  1333.     arrTileText(61) = m$
  1334.  
  1335.     m$ = ""
  1336.     m$ = m$ + ".222...." + Chr$(13)
  1337.     m$ = m$ + "...22..." + Chr$(13)
  1338.     m$ = m$ + "....22.." + Chr$(13)
  1339.     m$ = m$ + ".....22." + Chr$(13)
  1340.     m$ = m$ + "....22.." + Chr$(13)
  1341.     m$ = m$ + "...22..." + Chr$(13)
  1342.     m$ = m$ + ".222...." + Chr$(13)
  1343.     m$ = m$ + "........" + Chr$(13)
  1344.     arrTileText(62) = m$
  1345.  
  1346.     m$ = ""
  1347.     m$ = m$ + "..2222.." + Chr$(13)
  1348.     m$ = m$ + ".22..22." + Chr$(13)
  1349.     m$ = m$ + ".....22." + Chr$(13)
  1350.     m$ = m$ + "....22.." + Chr$(13)
  1351.     m$ = m$ + "...22..." + Chr$(13)
  1352.     m$ = m$ + "........" + Chr$(13)
  1353.     m$ = m$ + "...22..." + Chr$(13)
  1354.     m$ = m$ + "........" + Chr$(13)
  1355.     arrTileText(63) = m$
  1356.  
  1357.     m$ = ""
  1358.     m$ = m$ + "..2222.." + Chr$(13)
  1359.     m$ = m$ + ".22..22." + Chr$(13)
  1360.     m$ = m$ + ".22.222." + Chr$(13)
  1361.     m$ = m$ + ".22.222." + Chr$(13)
  1362.     m$ = m$ + ".22....." + Chr$(13)
  1363.     m$ = m$ + ".22...2." + Chr$(13)
  1364.     m$ = m$ + "..2222.." + Chr$(13)
  1365.     m$ = m$ + "........" + Chr$(13)
  1366.     arrTileText(64) = m$
  1367.  
  1368.     m$ = ""
  1369.     m$ = m$ + "...22..." + Chr$(13)
  1370.     m$ = m$ + "..2222.." + Chr$(13)
  1371.     m$ = m$ + ".22..22." + Chr$(13)
  1372.     m$ = m$ + ".222222." + Chr$(13)
  1373.     m$ = m$ + ".22..22." + Chr$(13)
  1374.     m$ = m$ + ".22..22." + Chr$(13)
  1375.     m$ = m$ + ".22..22." + Chr$(13)
  1376.     m$ = m$ + "........" + Chr$(13)
  1377.     arrTileText(65) = m$
  1378.  
  1379.     m$ = ""
  1380.     m$ = m$ + ".22222.." + Chr$(13)
  1381.     m$ = m$ + ".22..22." + Chr$(13)
  1382.     m$ = m$ + ".22..22." + Chr$(13)
  1383.     m$ = m$ + ".22222.." + Chr$(13)
  1384.     m$ = m$ + ".22..22." + Chr$(13)
  1385.     m$ = m$ + ".22..22." + Chr$(13)
  1386.     m$ = m$ + ".22222.." + Chr$(13)
  1387.     m$ = m$ + "........" + Chr$(13)
  1388.     arrTileText(66) = m$
  1389.  
  1390.     m$ = ""
  1391.     m$ = m$ + "..2222.." + Chr$(13)
  1392.     m$ = m$ + ".22..22." + Chr$(13)
  1393.     m$ = m$ + ".22....." + Chr$(13)
  1394.     m$ = m$ + ".22....." + Chr$(13)
  1395.     m$ = m$ + ".22....." + Chr$(13)
  1396.     m$ = m$ + ".22..22." + Chr$(13)
  1397.     m$ = m$ + "..2222.." + Chr$(13)
  1398.     m$ = m$ + "........" + Chr$(13)
  1399.     arrTileText(67) = m$
  1400.  
  1401.     m$ = ""
  1402.     m$ = m$ + ".2222..." + Chr$(13)
  1403.     m$ = m$ + ".22.22.." + Chr$(13)
  1404.     m$ = m$ + ".22..22." + Chr$(13)
  1405.     m$ = m$ + ".22..22." + Chr$(13)
  1406.     m$ = m$ + ".22..22." + Chr$(13)
  1407.     m$ = m$ + ".22.22.." + Chr$(13)
  1408.     m$ = m$ + ".2222..." + Chr$(13)
  1409.     m$ = m$ + "........" + Chr$(13)
  1410.     arrTileText(68) = m$
  1411.  
  1412.     m$ = ""
  1413.     m$ = m$ + ".222222." + Chr$(13)
  1414.     m$ = m$ + ".22....." + Chr$(13)
  1415.     m$ = m$ + ".22....." + Chr$(13)
  1416.     m$ = m$ + ".2222..." + Chr$(13)
  1417.     m$ = m$ + ".22....." + Chr$(13)
  1418.     m$ = m$ + ".22....." + Chr$(13)
  1419.     m$ = m$ + ".222222." + Chr$(13)
  1420.     m$ = m$ + "........" + Chr$(13)
  1421.     arrTileText(69) = m$
  1422.  
  1423.     m$ = ""
  1424.     m$ = m$ + ".222222." + Chr$(13)
  1425.     m$ = m$ + ".22....." + Chr$(13)
  1426.     m$ = m$ + ".22....." + Chr$(13)
  1427.     m$ = m$ + ".2222..." + Chr$(13)
  1428.     m$ = m$ + ".22....." + Chr$(13)
  1429.     m$ = m$ + ".22....." + Chr$(13)
  1430.     m$ = m$ + ".22....." + Chr$(13)
  1431.     m$ = m$ + "........" + Chr$(13)
  1432.     arrTileText(70) = m$
  1433.  
  1434.     m$ = ""
  1435.     m$ = m$ + "..2222.." + Chr$(13)
  1436.     m$ = m$ + ".22..22." + Chr$(13)
  1437.     m$ = m$ + ".22....." + Chr$(13)
  1438.     m$ = m$ + ".22.222." + Chr$(13)
  1439.     m$ = m$ + ".22..22." + Chr$(13)
  1440.     m$ = m$ + ".22..22." + Chr$(13)
  1441.     m$ = m$ + "..2222.." + Chr$(13)
  1442.     m$ = m$ + "........" + Chr$(13)
  1443.     arrTileText(71) = m$
  1444.  
  1445.     m$ = ""
  1446.     m$ = m$ + ".22..22." + Chr$(13)
  1447.     m$ = m$ + ".22..22." + Chr$(13)
  1448.     m$ = m$ + ".22..22." + Chr$(13)
  1449.     m$ = m$ + ".222222." + Chr$(13)
  1450.     m$ = m$ + ".22..22." + Chr$(13)
  1451.     m$ = m$ + ".22..22." + Chr$(13)
  1452.     m$ = m$ + ".22..22." + Chr$(13)
  1453.     m$ = m$ + "........" + Chr$(13)
  1454.     arrTileText(72) = m$
  1455.  
  1456.     m$ = ""
  1457.     m$ = m$ + "..2222.." + Chr$(13)
  1458.     m$ = m$ + "...22..." + Chr$(13)
  1459.     m$ = m$ + "...22..." + Chr$(13)
  1460.     m$ = m$ + "...22..." + Chr$(13)
  1461.     m$ = m$ + "...22..." + Chr$(13)
  1462.     m$ = m$ + "...22..." + Chr$(13)
  1463.     m$ = m$ + "..2222.." + Chr$(13)
  1464.     m$ = m$ + "........" + Chr$(13)
  1465.     arrTileText(73) = m$
  1466.  
  1467.     m$ = ""
  1468.     m$ = m$ + "...2222." + Chr$(13)
  1469.     m$ = m$ + "....22.." + Chr$(13)
  1470.     m$ = m$ + "....22.." + Chr$(13)
  1471.     m$ = m$ + "....22.." + Chr$(13)
  1472.     m$ = m$ + "....22.." + Chr$(13)
  1473.     m$ = m$ + ".22.22.." + Chr$(13)
  1474.     m$ = m$ + "..222..." + Chr$(13)
  1475.     m$ = m$ + "........" + Chr$(13)
  1476.     arrTileText(74) = m$
  1477.  
  1478.     m$ = ""
  1479.     m$ = m$ + ".22..22." + Chr$(13)
  1480.     m$ = m$ + ".22.22.." + Chr$(13)
  1481.     m$ = m$ + ".2222..." + Chr$(13)
  1482.     m$ = m$ + ".222...." + Chr$(13)
  1483.     m$ = m$ + ".2222..." + Chr$(13)
  1484.     m$ = m$ + ".22.22.." + Chr$(13)
  1485.     m$ = m$ + ".22..22." + Chr$(13)
  1486.     m$ = m$ + "........" + Chr$(13)
  1487.     arrTileText(75) = m$
  1488.  
  1489.     m$ = ""
  1490.     m$ = m$ + ".22....." + Chr$(13)
  1491.     m$ = m$ + ".22....." + Chr$(13)
  1492.     m$ = m$ + ".22....." + Chr$(13)
  1493.     m$ = m$ + ".22....." + Chr$(13)
  1494.     m$ = m$ + ".22....." + Chr$(13)
  1495.     m$ = m$ + ".22....." + Chr$(13)
  1496.     m$ = m$ + ".222222." + Chr$(13)
  1497.     m$ = m$ + "........" + Chr$(13)
  1498.     arrTileText(76) = m$
  1499.  
  1500.     m$ = ""
  1501.     m$ = m$ + ".22...22" + Chr$(13)
  1502.     m$ = m$ + ".222.222" + Chr$(13)
  1503.     m$ = m$ + ".2222222" + Chr$(13)
  1504.     m$ = m$ + ".22.2.22" + Chr$(13)
  1505.     m$ = m$ + ".22...22" + Chr$(13)
  1506.     m$ = m$ + ".22...22" + Chr$(13)
  1507.     m$ = m$ + ".22...22" + Chr$(13)
  1508.     m$ = m$ + "........" + Chr$(13)
  1509.     arrTileText(77) = m$
  1510.  
  1511.     m$ = ""
  1512.     m$ = m$ + ".22..22." + Chr$(13)
  1513.     m$ = m$ + ".222.22." + Chr$(13)
  1514.     m$ = m$ + ".222222." + Chr$(13)
  1515.     m$ = m$ + ".222222." + Chr$(13)
  1516.     m$ = m$ + ".22.222." + Chr$(13)
  1517.     m$ = m$ + ".22..22." + Chr$(13)
  1518.     m$ = m$ + ".22..22." + Chr$(13)
  1519.     m$ = m$ + "........" + Chr$(13)
  1520.     arrTileText(78) = m$
  1521.  
  1522.     m$ = ""
  1523.     m$ = m$ + "..2222.." + Chr$(13)
  1524.     m$ = m$ + ".22..22." + Chr$(13)
  1525.     m$ = m$ + ".22..22." + Chr$(13)
  1526.     m$ = m$ + ".22..22." + Chr$(13)
  1527.     m$ = m$ + ".22..22." + Chr$(13)
  1528.     m$ = m$ + ".22..22." + Chr$(13)
  1529.     m$ = m$ + "..2222.." + Chr$(13)
  1530.     m$ = m$ + "........" + Chr$(13)
  1531.     arrTileText(79) = m$
  1532.  
  1533.     m$ = ""
  1534.     m$ = m$ + ".22222.." + Chr$(13)
  1535.     m$ = m$ + ".22..22." + Chr$(13)
  1536.     m$ = m$ + ".22..22." + Chr$(13)
  1537.     m$ = m$ + ".22222.." + Chr$(13)
  1538.     m$ = m$ + ".22....." + Chr$(13)
  1539.     m$ = m$ + ".22....." + Chr$(13)
  1540.     m$ = m$ + ".22....." + Chr$(13)
  1541.     m$ = m$ + "........" + Chr$(13)
  1542.     arrTileText(80) = m$
  1543.  
  1544.     m$ = ""
  1545.     m$ = m$ + "..2222.." + Chr$(13)
  1546.     m$ = m$ + ".22..22." + Chr$(13)
  1547.     m$ = m$ + ".22..22." + Chr$(13)
  1548.     m$ = m$ + ".22..22." + Chr$(13)
  1549.     m$ = m$ + ".22..22." + Chr$(13)
  1550.     m$ = m$ + "..2222.." + Chr$(13)
  1551.     m$ = m$ + "....222." + Chr$(13)
  1552.     m$ = m$ + "........" + Chr$(13)
  1553.     arrTileText(81) = m$
  1554.  
  1555.     m$ = ""
  1556.     m$ = m$ + ".22222.." + Chr$(13)
  1557.     m$ = m$ + ".22..22." + Chr$(13)
  1558.     m$ = m$ + ".22..22." + Chr$(13)
  1559.     m$ = m$ + ".22222.." + Chr$(13)
  1560.     m$ = m$ + ".2222..." + Chr$(13)
  1561.     m$ = m$ + ".22.22.." + Chr$(13)
  1562.     m$ = m$ + ".22..22." + Chr$(13)
  1563.     m$ = m$ + "........" + Chr$(13)
  1564.     arrTileText(82) = m$
  1565.  
  1566.     m$ = ""
  1567.     m$ = m$ + "..2222.." + Chr$(13)
  1568.     m$ = m$ + ".22..22." + Chr$(13)
  1569.     m$ = m$ + ".22....." + Chr$(13)
  1570.     m$ = m$ + "..2222.." + Chr$(13)
  1571.     m$ = m$ + ".....22." + Chr$(13)
  1572.     m$ = m$ + ".22..22." + Chr$(13)
  1573.     m$ = m$ + "..2222.." + Chr$(13)
  1574.     m$ = m$ + "........" + Chr$(13)
  1575.     arrTileText(83) = m$
  1576.  
  1577.     m$ = ""
  1578.     m$ = m$ + ".222222." + Chr$(13)
  1579.     m$ = m$ + "...22..." + Chr$(13)
  1580.     m$ = m$ + "...22..." + Chr$(13)
  1581.     m$ = m$ + "...22..." + Chr$(13)
  1582.     m$ = m$ + "...22..." + Chr$(13)
  1583.     m$ = m$ + "...22..." + Chr$(13)
  1584.     m$ = m$ + "...22..." + Chr$(13)
  1585.     m$ = m$ + "........" + Chr$(13)
  1586.     arrTileText(84) = m$
  1587.  
  1588.     m$ = ""
  1589.     m$ = m$ + ".22..22." + Chr$(13)
  1590.     m$ = m$ + ".22..22." + Chr$(13)
  1591.     m$ = m$ + ".22..22." + Chr$(13)
  1592.     m$ = m$ + ".22..22." + Chr$(13)
  1593.     m$ = m$ + ".22..22." + Chr$(13)
  1594.     m$ = m$ + ".22..22." + Chr$(13)
  1595.     m$ = m$ + "..2222.." + Chr$(13)
  1596.     m$ = m$ + "........" + Chr$(13)
  1597.     arrTileText(85) = m$
  1598.  
  1599.     m$ = ""
  1600.     m$ = m$ + ".22..22." + Chr$(13)
  1601.     m$ = m$ + ".22..22." + Chr$(13)
  1602.     m$ = m$ + ".22..22." + Chr$(13)
  1603.     m$ = m$ + ".22..22." + Chr$(13)
  1604.     m$ = m$ + ".22..22." + Chr$(13)
  1605.     m$ = m$ + "..2222.." + Chr$(13)
  1606.     m$ = m$ + "...22..." + Chr$(13)
  1607.     m$ = m$ + "........" + Chr$(13)
  1608.     arrTileText(86) = m$
  1609.  
  1610.     m$ = ""
  1611.     m$ = m$ + ".22...22" + Chr$(13)
  1612.     m$ = m$ + ".22...22" + Chr$(13)
  1613.     m$ = m$ + ".22...22" + Chr$(13)
  1614.     m$ = m$ + ".22.2.22" + Chr$(13)
  1615.     m$ = m$ + ".2222222" + Chr$(13)
  1616.     m$ = m$ + ".222.222" + Chr$(13)
  1617.     m$ = m$ + ".22...22" + Chr$(13)
  1618.     m$ = m$ + "........" + Chr$(13)
  1619.     arrTileText(87) = m$
  1620.  
  1621.     m$ = ""
  1622.     m$ = m$ + ".22..22." + Chr$(13)
  1623.     m$ = m$ + ".22..22." + Chr$(13)
  1624.     m$ = m$ + "..2222.." + Chr$(13)
  1625.     m$ = m$ + "...22..." + Chr$(13)
  1626.     m$ = m$ + "..2222.." + Chr$(13)
  1627.     m$ = m$ + ".22..22." + Chr$(13)
  1628.     m$ = m$ + ".22..22." + Chr$(13)
  1629.     m$ = m$ + "........" + Chr$(13)
  1630.     arrTileText(88) = m$
  1631.  
  1632.     m$ = ""
  1633.     m$ = m$ + ".22..22." + Chr$(13)
  1634.     m$ = m$ + ".22..22." + Chr$(13)
  1635.     m$ = m$ + ".22..22." + Chr$(13)
  1636.     m$ = m$ + "..2222.." + Chr$(13)
  1637.     m$ = m$ + "...22..." + Chr$(13)
  1638.     m$ = m$ + "...22..." + Chr$(13)
  1639.     m$ = m$ + "...22..." + Chr$(13)
  1640.     m$ = m$ + "........" + Chr$(13)
  1641.     arrTileText(89) = m$
  1642.  
  1643.     m$ = ""
  1644.     m$ = m$ + ".222222." + Chr$(13)
  1645.     m$ = m$ + ".....22." + Chr$(13)
  1646.     m$ = m$ + "....22.." + Chr$(13)
  1647.     m$ = m$ + "...22..." + Chr$(13)
  1648.     m$ = m$ + "..22...." + Chr$(13)
  1649.     m$ = m$ + ".22....." + Chr$(13)
  1650.     m$ = m$ + ".222222." + Chr$(13)
  1651.     m$ = m$ + "........" + Chr$(13)
  1652.     arrTileText(90) = m$
  1653.  
  1654.     m$ = ""
  1655.     m$ = m$ + "..2222.." + Chr$(13)
  1656.     m$ = m$ + "..22...." + Chr$(13)
  1657.     m$ = m$ + "..22...." + Chr$(13)
  1658.     m$ = m$ + "..22...." + Chr$(13)
  1659.     m$ = m$ + "..22...." + Chr$(13)
  1660.     m$ = m$ + "..22...." + Chr$(13)
  1661.     m$ = m$ + "..2222.." + Chr$(13)
  1662.     m$ = m$ + "........" + Chr$(13)
  1663.     arrTileText(91) = m$
  1664.  
  1665.     m$ = ""
  1666.     m$ = m$ + "........" + Chr$(13)
  1667.     m$ = m$ + ".22....." + Chr$(13)
  1668.     m$ = m$ + "..22...." + Chr$(13)
  1669.     m$ = m$ + "...22..." + Chr$(13)
  1670.     m$ = m$ + "....22.." + Chr$(13)
  1671.     m$ = m$ + ".....22." + Chr$(13)
  1672.     m$ = m$ + "......22" + Chr$(13)
  1673.     m$ = m$ + "........" + Chr$(13)
  1674.     arrTileText(92) = m$
  1675.  
  1676.     m$ = ""
  1677.     m$ = m$ + "..2222.." + Chr$(13)
  1678.     m$ = m$ + "....22.." + Chr$(13)
  1679.     m$ = m$ + "....22.." + Chr$(13)
  1680.     m$ = m$ + "....22.." + Chr$(13)
  1681.     m$ = m$ + "....22.." + Chr$(13)
  1682.     m$ = m$ + "....22.." + Chr$(13)
  1683.     m$ = m$ + "..2222.." + Chr$(13)
  1684.     m$ = m$ + "........" + Chr$(13)
  1685.     arrTileText(93) = m$
  1686.  
  1687.     m$ = ""
  1688.     m$ = m$ + "...22..." + Chr$(13)
  1689.     m$ = m$ + "..2222.." + Chr$(13)
  1690.     m$ = m$ + ".22..22." + Chr$(13)
  1691.     m$ = m$ + "........" + Chr$(13)
  1692.     m$ = m$ + "........" + Chr$(13)
  1693.     m$ = m$ + "........" + Chr$(13)
  1694.     m$ = m$ + "........" + Chr$(13)
  1695.     m$ = m$ + "........" + Chr$(13)
  1696.     arrTileText(94) = m$
  1697.  
  1698.     m$ = ""
  1699.     m$ = m$ + "........" + Chr$(13)
  1700.     m$ = m$ + "........" + Chr$(13)
  1701.     m$ = m$ + "........" + Chr$(13)
  1702.     m$ = m$ + "........" + Chr$(13)
  1703.     m$ = m$ + "........" + Chr$(13)
  1704.     m$ = m$ + ".222222." + Chr$(13)
  1705.     m$ = m$ + "........" + Chr$(13)
  1706.     m$ = m$ + "........" + Chr$(13)
  1707.     arrTileText(95) = m$
  1708.  
  1709.     m$ = ""
  1710.     m$ = m$ + "........" + Chr$(13)
  1711.     m$ = m$ + "........" + Chr$(13)
  1712.     m$ = m$ + "........" + Chr$(13)
  1713.     m$ = m$ + "........" + Chr$(13)
  1714.     m$ = m$ + "........" + Chr$(13)
  1715.     m$ = m$ + "........" + Chr$(13)
  1716.     m$ = m$ + "........" + Chr$(13)
  1717.     m$ = m$ + "........" + Chr$(13)
  1718.     arrTileText(96) = m$
  1719.  
  1720.     m$ = ""
  1721.     m$ = m$ + "........" + Chr$(13)
  1722.     m$ = m$ + "..2222.." + Chr$(13)
  1723.     m$ = m$ + ".....22." + Chr$(13)
  1724.     m$ = m$ + "..22222." + Chr$(13)
  1725.     m$ = m$ + ".22..22." + Chr$(13)
  1726.     m$ = m$ + "..22222." + Chr$(13)
  1727.     m$ = m$ + "........" + Chr$(13)
  1728.     m$ = m$ + "........" + Chr$(13)
  1729.     arrTileText(97) = m$
  1730.  
  1731.     m$ = ""
  1732.     m$ = m$ + ".22....." + Chr$(13)
  1733.     m$ = m$ + ".22....." + Chr$(13)
  1734.     m$ = m$ + ".22222.." + Chr$(13)
  1735.     m$ = m$ + ".22..22." + Chr$(13)
  1736.     m$ = m$ + ".22..22." + Chr$(13)
  1737.     m$ = m$ + ".22222.." + Chr$(13)
  1738.     m$ = m$ + "........" + Chr$(13)
  1739.     m$ = m$ + "........" + Chr$(13)
  1740.     arrTileText(98) = m$
  1741.  
  1742.     m$ = ""
  1743.     m$ = m$ + "........" + Chr$(13)
  1744.     m$ = m$ + "..2222.." + Chr$(13)
  1745.     m$ = m$ + ".22....." + Chr$(13)
  1746.     m$ = m$ + ".22....." + Chr$(13)
  1747.     m$ = m$ + ".22....." + Chr$(13)
  1748.     m$ = m$ + "..2222.." + Chr$(13)
  1749.     m$ = m$ + "........" + Chr$(13)
  1750.     m$ = m$ + "........" + Chr$(13)
  1751.     arrTileText(99) = m$
  1752.  
  1753.     m$ = ""
  1754.     m$ = m$ + ".....22." + Chr$(13)
  1755.     m$ = m$ + ".....22." + Chr$(13)
  1756.     m$ = m$ + "..22222." + Chr$(13)
  1757.     m$ = m$ + ".22..22." + Chr$(13)
  1758.     m$ = m$ + ".22..22." + Chr$(13)
  1759.     m$ = m$ + "..22222." + Chr$(13)
  1760.     m$ = m$ + "........" + Chr$(13)
  1761.     m$ = m$ + "........" + Chr$(13)
  1762.     arrTileText(100) = m$
  1763.  
  1764.     m$ = ""
  1765.     m$ = m$ + "........" + Chr$(13)
  1766.     m$ = m$ + "..2222.." + Chr$(13)
  1767.     m$ = m$ + ".22..22." + Chr$(13)
  1768.     m$ = m$ + ".222222." + Chr$(13)
  1769.     m$ = m$ + ".22....." + Chr$(13)
  1770.     m$ = m$ + "..2222.." + Chr$(13)
  1771.     m$ = m$ + "........" + Chr$(13)
  1772.     m$ = m$ + "........" + Chr$(13)
  1773.     arrTileText(101) = m$
  1774.  
  1775.     m$ = ""
  1776.     m$ = m$ + "....222." + Chr$(13)
  1777.     m$ = m$ + "...22..." + Chr$(13)
  1778.     m$ = m$ + "..22222." + Chr$(13)
  1779.     m$ = m$ + "...22..." + Chr$(13)
  1780.     m$ = m$ + "...22..." + Chr$(13)
  1781.     m$ = m$ + "...22..." + Chr$(13)
  1782.     m$ = m$ + "........" + Chr$(13)
  1783.     m$ = m$ + "........" + Chr$(13)
  1784.     arrTileText(102) = m$
  1785.  
  1786.     m$ = ""
  1787.     m$ = m$ + "........" + Chr$(13)
  1788.     m$ = m$ + "..22222." + Chr$(13)
  1789.     m$ = m$ + ".22..22." + Chr$(13)
  1790.     m$ = m$ + ".22..22." + Chr$(13)
  1791.     m$ = m$ + "..22222." + Chr$(13)
  1792.     m$ = m$ + ".....22." + Chr$(13)
  1793.     m$ = m$ + ".22222.." + Chr$(13)
  1794.     m$ = m$ + "........" + Chr$(13)
  1795.     arrTileText(103) = m$
  1796.  
  1797.     m$ = ""
  1798.     m$ = m$ + ".22....." + Chr$(13)
  1799.     m$ = m$ + ".22....." + Chr$(13)
  1800.     m$ = m$ + ".22222.." + Chr$(13)
  1801.     m$ = m$ + ".22..22." + Chr$(13)
  1802.     m$ = m$ + ".22..22." + Chr$(13)
  1803.     m$ = m$ + ".22..22." + Chr$(13)
  1804.     m$ = m$ + "........" + Chr$(13)
  1805.     m$ = m$ + "........" + Chr$(13)
  1806.     arrTileText(104) = m$
  1807.  
  1808.     m$ = ""
  1809.     m$ = m$ + "...22..." + Chr$(13)
  1810.     m$ = m$ + "........" + Chr$(13)
  1811.     m$ = m$ + "..222..." + Chr$(13)
  1812.     m$ = m$ + "...22..." + Chr$(13)
  1813.     m$ = m$ + "...22..." + Chr$(13)
  1814.     m$ = m$ + "..2222.." + Chr$(13)
  1815.     m$ = m$ + "........" + Chr$(13)
  1816.     m$ = m$ + "........" + Chr$(13)
  1817.     arrTileText(105) = m$
  1818.  
  1819.     m$ = ""
  1820.     m$ = m$ + ".....22." + Chr$(13)
  1821.     m$ = m$ + "........" + Chr$(13)
  1822.     m$ = m$ + ".....22." + Chr$(13)
  1823.     m$ = m$ + ".....22." + Chr$(13)
  1824.     m$ = m$ + ".....22." + Chr$(13)
  1825.     m$ = m$ + ".....22." + Chr$(13)
  1826.     m$ = m$ + "..2222.." + Chr$(13)
  1827.     m$ = m$ + "........" + Chr$(13)
  1828.     arrTileText(106) = m$
  1829.  
  1830.     m$ = ""
  1831.     m$ = m$ + ".22....." + Chr$(13)
  1832.     m$ = m$ + ".22....." + Chr$(13)
  1833.     m$ = m$ + ".22.22.." + Chr$(13)
  1834.     m$ = m$ + ".2222..." + Chr$(13)
  1835.     m$ = m$ + ".22.22.." + Chr$(13)
  1836.     m$ = m$ + ".22..22." + Chr$(13)
  1837.     m$ = m$ + "........" + Chr$(13)
  1838.     m$ = m$ + "........" + Chr$(13)
  1839.     arrTileText(107) = m$
  1840.  
  1841.     m$ = ""
  1842.     m$ = m$ + "..222..." + Chr$(13)
  1843.     m$ = m$ + "...22..." + Chr$(13)
  1844.     m$ = m$ + "...22..." + Chr$(13)
  1845.     m$ = m$ + "...22..." + Chr$(13)
  1846.     m$ = m$ + "...22..." + Chr$(13)
  1847.     m$ = m$ + "..2222.." + Chr$(13)
  1848.     m$ = m$ + "........" + Chr$(13)
  1849.     m$ = m$ + "........" + Chr$(13)
  1850.     arrTileText(108) = m$
  1851.  
  1852.     m$ = ""
  1853.     m$ = m$ + "........" + Chr$(13)
  1854.     m$ = m$ + ".22..22." + Chr$(13)
  1855.     m$ = m$ + ".2222222" + Chr$(13)
  1856.     m$ = m$ + ".2222222" + Chr$(13)
  1857.     m$ = m$ + ".22.2.22" + Chr$(13)
  1858.     m$ = m$ + ".22...22" + Chr$(13)
  1859.     m$ = m$ + "........" + Chr$(13)
  1860.     m$ = m$ + "........" + Chr$(13)
  1861.     arrTileText(109) = m$
  1862.  
  1863.     m$ = ""
  1864.     m$ = m$ + "........" + Chr$(13)
  1865.     m$ = m$ + ".22222.." + Chr$(13)
  1866.     m$ = m$ + ".22..22." + Chr$(13)
  1867.     m$ = m$ + ".22..22." + Chr$(13)
  1868.     m$ = m$ + ".22..22." + Chr$(13)
  1869.     m$ = m$ + ".22..22." + Chr$(13)
  1870.     m$ = m$ + "........" + Chr$(13)
  1871.     m$ = m$ + "........" + Chr$(13)
  1872.     arrTileText(110) = m$
  1873.  
  1874.     m$ = ""
  1875.     m$ = m$ + "........" + Chr$(13)
  1876.     m$ = m$ + "..2222.." + Chr$(13)
  1877.     m$ = m$ + ".22..22." + Chr$(13)
  1878.     m$ = m$ + ".22..22." + Chr$(13)
  1879.     m$ = m$ + ".22..22." + Chr$(13)
  1880.     m$ = m$ + "..2222.." + Chr$(13)
  1881.     m$ = m$ + "........" + Chr$(13)
  1882.     m$ = m$ + "........" + Chr$(13)
  1883.     arrTileText(111) = m$
  1884.  
  1885.     m$ = ""
  1886.     m$ = m$ + "........" + Chr$(13)
  1887.     m$ = m$ + ".22222.." + Chr$(13)
  1888.     m$ = m$ + ".22..22." + Chr$(13)
  1889.     m$ = m$ + ".22..22." + Chr$(13)
  1890.     m$ = m$ + ".22222.." + Chr$(13)
  1891.     m$ = m$ + ".22....." + Chr$(13)
  1892.     m$ = m$ + ".22....." + Chr$(13)
  1893.     m$ = m$ + "........" + Chr$(13)
  1894.     arrTileText(112) = m$
  1895.  
  1896.     m$ = ""
  1897.     m$ = m$ + "........" + Chr$(13)
  1898.     m$ = m$ + "..22222." + Chr$(13)
  1899.     m$ = m$ + ".22..22." + Chr$(13)
  1900.     m$ = m$ + ".22..22." + Chr$(13)
  1901.     m$ = m$ + "..22222." + Chr$(13)
  1902.     m$ = m$ + ".....22." + Chr$(13)
  1903.     m$ = m$ + ".....22." + Chr$(13)
  1904.     m$ = m$ + "........" + Chr$(13)
  1905.     arrTileText(113) = m$
  1906.  
  1907.     m$ = ""
  1908.     m$ = m$ + "........" + Chr$(13)
  1909.     m$ = m$ + ".22222.." + Chr$(13)
  1910.     m$ = m$ + ".22..22." + Chr$(13)
  1911.     m$ = m$ + ".22....." + Chr$(13)
  1912.     m$ = m$ + ".22....." + Chr$(13)
  1913.     m$ = m$ + ".22....." + Chr$(13)
  1914.     m$ = m$ + "........" + Chr$(13)
  1915.     m$ = m$ + "........" + Chr$(13)
  1916.     arrTileText(114) = m$
  1917.  
  1918.     m$ = ""
  1919.     m$ = m$ + "........" + Chr$(13)
  1920.     m$ = m$ + "..22222." + Chr$(13)
  1921.     m$ = m$ + ".22....." + Chr$(13)
  1922.     m$ = m$ + "..2222.." + Chr$(13)
  1923.     m$ = m$ + ".....22." + Chr$(13)
  1924.     m$ = m$ + ".22222.." + Chr$(13)
  1925.     m$ = m$ + "........" + Chr$(13)
  1926.     m$ = m$ + "........" + Chr$(13)
  1927.     arrTileText(115) = m$
  1928.  
  1929.     m$ = ""
  1930.     m$ = m$ + "...22..." + Chr$(13)
  1931.     m$ = m$ + ".222222." + Chr$(13)
  1932.     m$ = m$ + "...22..." + Chr$(13)
  1933.     m$ = m$ + "...22..." + Chr$(13)
  1934.     m$ = m$ + "...22..." + Chr$(13)
  1935.     m$ = m$ + "....222." + Chr$(13)
  1936.     m$ = m$ + "........" + Chr$(13)
  1937.     m$ = m$ + "........" + Chr$(13)
  1938.     arrTileText(116) = m$
  1939.  
  1940.     m$ = ""
  1941.     m$ = m$ + "........" + Chr$(13)
  1942.     m$ = m$ + ".22..22." + Chr$(13)
  1943.     m$ = m$ + ".22..22." + Chr$(13)
  1944.     m$ = m$ + ".22..22." + Chr$(13)
  1945.     m$ = m$ + ".22..22." + Chr$(13)
  1946.     m$ = m$ + "..22222." + Chr$(13)
  1947.     m$ = m$ + "........" + Chr$(13)
  1948.     m$ = m$ + "........" + Chr$(13)
  1949.     arrTileText(117) = m$
  1950.  
  1951.     m$ = ""
  1952.     m$ = m$ + "........" + Chr$(13)
  1953.     m$ = m$ + ".22..22." + Chr$(13)
  1954.     m$ = m$ + ".22..22." + Chr$(13)
  1955.     m$ = m$ + ".22..22." + Chr$(13)
  1956.     m$ = m$ + "..2222.." + Chr$(13)
  1957.     m$ = m$ + "...22..." + Chr$(13)
  1958.     m$ = m$ + "........" + Chr$(13)
  1959.     m$ = m$ + "........" + Chr$(13)
  1960.     arrTileText(118) = m$
  1961.  
  1962.     m$ = ""
  1963.     m$ = m$ + "........" + Chr$(13)
  1964.     m$ = m$ + ".22...22" + Chr$(13)
  1965.     m$ = m$ + ".22.2.22" + Chr$(13)
  1966.     m$ = m$ + ".2222222" + Chr$(13)
  1967.     m$ = m$ + "..22222." + Chr$(13)
  1968.     m$ = m$ + "..22.22." + Chr$(13)
  1969.     m$ = m$ + "........" + Chr$(13)
  1970.     m$ = m$ + "........" + Chr$(13)
  1971.     arrTileText(119) = m$
  1972.  
  1973.     m$ = ""
  1974.     m$ = m$ + "........" + Chr$(13)
  1975.     m$ = m$ + ".22..22." + Chr$(13)
  1976.     m$ = m$ + "..2222.." + Chr$(13)
  1977.     m$ = m$ + "...22..." + Chr$(13)
  1978.     m$ = m$ + "..2222.." + Chr$(13)
  1979.     m$ = m$ + ".22..22." + Chr$(13)
  1980.     m$ = m$ + "........" + Chr$(13)
  1981.     m$ = m$ + "........" + Chr$(13)
  1982.     arrTileText(120) = m$
  1983.  
  1984.     m$ = ""
  1985.     m$ = m$ + "........" + Chr$(13)
  1986.     m$ = m$ + ".22..22." + Chr$(13)
  1987.     m$ = m$ + ".22..22." + Chr$(13)
  1988.     m$ = m$ + ".22..22." + Chr$(13)
  1989.     m$ = m$ + "..22222." + Chr$(13)
  1990.     m$ = m$ + "....22.." + Chr$(13)
  1991.     m$ = m$ + ".2222..." + Chr$(13)
  1992.     m$ = m$ + "........" + Chr$(13)
  1993.     arrTileText(121) = m$
  1994.  
  1995.     m$ = ""
  1996.     m$ = m$ + "........" + Chr$(13)
  1997.     m$ = m$ + ".222222." + Chr$(13)
  1998.     m$ = m$ + "....22.." + Chr$(13)
  1999.     m$ = m$ + "...22..." + Chr$(13)
  2000.     m$ = m$ + "..22...." + Chr$(13)
  2001.     m$ = m$ + ".222222." + Chr$(13)
  2002.     m$ = m$ + "........" + Chr$(13)
  2003.     m$ = m$ + "........" + Chr$(13)
  2004.     arrTileText(122) = m$
  2005.  
  2006.     m$ = ""
  2007.     m$ = m$ + "...222.." + Chr$(13)
  2008.     m$ = m$ + "..22...." + Chr$(13)
  2009.     m$ = m$ + "..2....." + Chr$(13)
  2010.     m$ = m$ + ".22....." + Chr$(13)
  2011.     m$ = m$ + "..2....." + Chr$(13)
  2012.     m$ = m$ + "..22...." + Chr$(13)
  2013.     m$ = m$ + "...222.." + Chr$(13)
  2014.     m$ = m$ + "........" + Chr$(13)
  2015.     arrTileText(123) = m$
  2016.  
  2017.     m$ = ""
  2018.     m$ = m$ + "....2..." + Chr$(13)
  2019.     m$ = m$ + "....2..." + Chr$(13)
  2020.     m$ = m$ + "....2..." + Chr$(13)
  2021.     m$ = m$ + "....2..." + Chr$(13)
  2022.     m$ = m$ + "....2..." + Chr$(13)
  2023.     m$ = m$ + "....2..." + Chr$(13)
  2024.     m$ = m$ + "....2..." + Chr$(13)
  2025.     m$ = m$ + "........" + Chr$(13)
  2026.     arrTileText(124) = m$
  2027.  
  2028.     m$ = ""
  2029.     m$ = m$ + "..222..." + Chr$(13)
  2030.     m$ = m$ + "....22.." + Chr$(13)
  2031.     m$ = m$ + ".....2.." + Chr$(13)
  2032.     m$ = m$ + ".....22." + Chr$(13)
  2033.     m$ = m$ + ".....2.." + Chr$(13)
  2034.     m$ = m$ + "....22.." + Chr$(13)
  2035.     m$ = m$ + "..222..." + Chr$(13)
  2036.     m$ = m$ + "........" + Chr$(13)
  2037.     arrTileText(125) = m$
  2038.  
  2039.     m$ = ""
  2040.     m$ = m$ + "........" + Chr$(13)
  2041.     m$ = m$ + ".22....2" + Chr$(13)
  2042.     m$ = m$ + "2..2..2." + Chr$(13)
  2043.     m$ = m$ + "....22.." + Chr$(13)
  2044.     m$ = m$ + "........" + Chr$(13)
  2045.     m$ = m$ + "........" + Chr$(13)
  2046.     m$ = m$ + "........" + Chr$(13)
  2047.     m$ = m$ + "........" + Chr$(13)
  2048.     arrTileText(126) = m$
  2049.  
  2050.     m$ = ""
  2051.     m$ = m$ + "........" + Chr$(13)
  2052.     m$ = m$ + "........" + Chr$(13)
  2053.     m$ = m$ + "........" + Chr$(13)
  2054.     m$ = m$ + "........" + Chr$(13)
  2055.     m$ = m$ + "........" + Chr$(13)
  2056.     m$ = m$ + "........" + Chr$(13)
  2057.     m$ = m$ + "........" + Chr$(13)
  2058.     m$ = m$ + "........" + Chr$(13)
  2059.     arrTileText(127) = m$
  2060.  
  2061.     m$ = ""
  2062.     m$ = m$ + "........" + Chr$(13)
  2063.     m$ = m$ + "........" + Chr$(13)
  2064.     m$ = m$ + "........" + Chr$(13)
  2065.     m$ = m$ + "22222222" + Chr$(13)
  2066.     m$ = m$ + "22222222" + Chr$(13)
  2067.     m$ = m$ + "........" + Chr$(13)
  2068.     m$ = m$ + "........" + Chr$(13)
  2069.     m$ = m$ + "........" + Chr$(13)
  2070.     arrTileText(128) = m$
  2071.  
  2072.     m$ = ""
  2073.     m$ = m$ + "....2..." + Chr$(13)
  2074.     m$ = m$ + "...222.." + Chr$(13)
  2075.     m$ = m$ + "..22222." + Chr$(13)
  2076.     m$ = m$ + ".2222222" + Chr$(13)
  2077.     m$ = m$ + ".2222222" + Chr$(13)
  2078.     m$ = m$ + "...222.." + Chr$(13)
  2079.     m$ = m$ + "..22222." + Chr$(13)
  2080.     m$ = m$ + "........" + Chr$(13)
  2081.     arrTileText(129) = m$
  2082.  
  2083.     m$ = ""
  2084.     m$ = m$ + "...22..." + Chr$(13)
  2085.     m$ = m$ + "...22..." + Chr$(13)
  2086.     m$ = m$ + "...22..." + Chr$(13)
  2087.     m$ = m$ + "...22..." + Chr$(13)
  2088.     m$ = m$ + "...22..." + Chr$(13)
  2089.     m$ = m$ + "...22..." + Chr$(13)
  2090.     m$ = m$ + "...22..." + Chr$(13)
  2091.     m$ = m$ + "...22..." + Chr$(13)
  2092.     arrTileText(130) = m$
  2093.  
  2094.     m$ = ""
  2095.     m$ = m$ + "........" + Chr$(13)
  2096.     m$ = m$ + "........" + Chr$(13)
  2097.     m$ = m$ + "........" + Chr$(13)
  2098.     m$ = m$ + "22222222" + Chr$(13)
  2099.     m$ = m$ + "22222222" + Chr$(13)
  2100.     m$ = m$ + "........" + Chr$(13)
  2101.     m$ = m$ + "........" + Chr$(13)
  2102.     m$ = m$ + "........" + Chr$(13)
  2103.     arrTileText(131) = m$
  2104.  
  2105.     m$ = ""
  2106.     m$ = m$ + "........" + Chr$(13)
  2107.     m$ = m$ + "........" + Chr$(13)
  2108.     m$ = m$ + "22222222" + Chr$(13)
  2109.     m$ = m$ + "22222222" + Chr$(13)
  2110.     m$ = m$ + "........" + Chr$(13)
  2111.     m$ = m$ + "........" + Chr$(13)
  2112.     m$ = m$ + "........" + Chr$(13)
  2113.     m$ = m$ + "........" + Chr$(13)
  2114.     arrTileText(132) = m$
  2115.  
  2116.     m$ = ""
  2117.     m$ = m$ + "........" + Chr$(13)
  2118.     m$ = m$ + "22222222" + Chr$(13)
  2119.     m$ = m$ + "22222222" + Chr$(13)
  2120.     m$ = m$ + "........" + Chr$(13)
  2121.     m$ = m$ + "........" + Chr$(13)
  2122.     m$ = m$ + "........" + Chr$(13)
  2123.     m$ = m$ + "........" + Chr$(13)
  2124.     m$ = m$ + "........" + Chr$(13)
  2125.     arrTileText(133) = m$
  2126.  
  2127.     m$ = ""
  2128.     m$ = m$ + "........" + Chr$(13)
  2129.     m$ = m$ + "........" + Chr$(13)
  2130.     m$ = m$ + "........" + Chr$(13)
  2131.     m$ = m$ + "........" + Chr$(13)
  2132.     m$ = m$ + "22222222" + Chr$(13)
  2133.     m$ = m$ + "22222222" + Chr$(13)
  2134.     m$ = m$ + "........" + Chr$(13)
  2135.     m$ = m$ + "........" + Chr$(13)
  2136.     arrTileText(134) = m$
  2137.  
  2138.     m$ = ""
  2139.     m$ = m$ + "..22...." + Chr$(13)
  2140.     m$ = m$ + "..22...." + Chr$(13)
  2141.     m$ = m$ + "..22...." + Chr$(13)
  2142.     m$ = m$ + "..22...." + Chr$(13)
  2143.     m$ = m$ + "..22...." + Chr$(13)
  2144.     m$ = m$ + "..22...." + Chr$(13)
  2145.     m$ = m$ + "..22...." + Chr$(13)
  2146.     m$ = m$ + "..22...." + Chr$(13)
  2147.     arrTileText(135) = m$
  2148.  
  2149.     m$ = ""
  2150.     m$ = m$ + "....22.." + Chr$(13)
  2151.     m$ = m$ + "....22.." + Chr$(13)
  2152.     m$ = m$ + "....22.." + Chr$(13)
  2153.     m$ = m$ + "....22.." + Chr$(13)
  2154.     m$ = m$ + "....22.." + Chr$(13)
  2155.     m$ = m$ + "....22.." + Chr$(13)
  2156.     m$ = m$ + "....22.." + Chr$(13)
  2157.     m$ = m$ + "....22.." + Chr$(13)
  2158.     arrTileText(136) = m$
  2159.  
  2160.     m$ = ""
  2161.     m$ = m$ + "........" + Chr$(13)
  2162.     m$ = m$ + "........" + Chr$(13)
  2163.     m$ = m$ + "........" + Chr$(13)
  2164.     m$ = m$ + "222....." + Chr$(13)
  2165.     m$ = m$ + "2222...." + Chr$(13)
  2166.     m$ = m$ + "..222..." + Chr$(13)
  2167.     m$ = m$ + "...22..." + Chr$(13)
  2168.     m$ = m$ + "...22..." + Chr$(13)
  2169.     arrTileText(137) = m$
  2170.  
  2171.     m$ = ""
  2172.     m$ = m$ + "...22..." + Chr$(13)
  2173.     m$ = m$ + "...22..." + Chr$(13)
  2174.     m$ = m$ + "...222.." + Chr$(13)
  2175.     m$ = m$ + "....2222" + Chr$(13)
  2176.     m$ = m$ + ".....222" + Chr$(13)
  2177.     m$ = m$ + "........" + Chr$(13)
  2178.     m$ = m$ + "........" + Chr$(13)
  2179.     m$ = m$ + "........" + Chr$(13)
  2180.     arrTileText(138) = m$
  2181.  
  2182.     m$ = ""
  2183.     m$ = m$ + "...22..." + Chr$(13)
  2184.     m$ = m$ + "...22..." + Chr$(13)
  2185.     m$ = m$ + "..222..." + Chr$(13)
  2186.     m$ = m$ + "2222...." + Chr$(13)
  2187.     m$ = m$ + "222....." + Chr$(13)
  2188.     m$ = m$ + "........" + Chr$(13)
  2189.     m$ = m$ + "........" + Chr$(13)
  2190.     m$ = m$ + "........" + Chr$(13)
  2191.     arrTileText(139) = m$
  2192.  
  2193.     m$ = ""
  2194.     m$ = m$ + "22......" + Chr$(13)
  2195.     m$ = m$ + "22......" + Chr$(13)
  2196.     m$ = m$ + "22......" + Chr$(13)
  2197.     m$ = m$ + "22......" + Chr$(13)
  2198.     m$ = m$ + "22......" + Chr$(13)
  2199.     m$ = m$ + "22......" + Chr$(13)
  2200.     m$ = m$ + "22222222" + Chr$(13)
  2201.     m$ = m$ + "22222222" + Chr$(13)
  2202.     arrTileText(140) = m$
  2203.  
  2204.     m$ = ""
  2205.     m$ = m$ + "22......" + Chr$(13)
  2206.     m$ = m$ + "222....." + Chr$(13)
  2207.     m$ = m$ + ".222...." + Chr$(13)
  2208.     m$ = m$ + "..222..." + Chr$(13)
  2209.     m$ = m$ + "...222.." + Chr$(13)
  2210.     m$ = m$ + "....222." + Chr$(13)
  2211.     m$ = m$ + ".....222" + Chr$(13)
  2212.     m$ = m$ + "......22" + Chr$(13)
  2213.     arrTileText(141) = m$
  2214.  
  2215.     m$ = ""
  2216.     m$ = m$ + "......22" + Chr$(13)
  2217.     m$ = m$ + ".....222" + Chr$(13)
  2218.     m$ = m$ + "....222." + Chr$(13)
  2219.     m$ = m$ + "...222.." + Chr$(13)
  2220.     m$ = m$ + "..222..." + Chr$(13)
  2221.     m$ = m$ + ".222...." + Chr$(13)
  2222.     m$ = m$ + "222....." + Chr$(13)
  2223.     m$ = m$ + "22......" + Chr$(13)
  2224.     arrTileText(142) = m$
  2225.  
  2226.     m$ = ""
  2227.     m$ = m$ + "22222222" + Chr$(13)
  2228.     m$ = m$ + "22222222" + Chr$(13)
  2229.     m$ = m$ + "22......" + Chr$(13)
  2230.     m$ = m$ + "22......" + Chr$(13)
  2231.     m$ = m$ + "22......" + Chr$(13)
  2232.     m$ = m$ + "22......" + Chr$(13)
  2233.     m$ = m$ + "22......" + Chr$(13)
  2234.     m$ = m$ + "22......" + Chr$(13)
  2235.     arrTileText(143) = m$
  2236.  
  2237.     m$ = ""
  2238.     m$ = m$ + "22222222" + Chr$(13)
  2239.     m$ = m$ + "22222222" + Chr$(13)
  2240.     m$ = m$ + "......22" + Chr$(13)
  2241.     m$ = m$ + "......22" + Chr$(13)
  2242.     m$ = m$ + "......22" + Chr$(13)
  2243.     m$ = m$ + "......22" + Chr$(13)
  2244.     m$ = m$ + "......22" + Chr$(13)
  2245.     m$ = m$ + "......22" + Chr$(13)
  2246.     arrTileText(144) = m$
  2247.  
  2248.     m$ = ""
  2249.     m$ = m$ + "........" + Chr$(13)
  2250.     m$ = m$ + "..2222.." + Chr$(13)
  2251.     m$ = m$ + ".222222." + Chr$(13)
  2252.     m$ = m$ + ".222222." + Chr$(13)
  2253.     m$ = m$ + ".222222." + Chr$(13)
  2254.     m$ = m$ + ".222222." + Chr$(13)
  2255.     m$ = m$ + "..2222.." + Chr$(13)
  2256.     m$ = m$ + "........" + Chr$(13)
  2257.     arrTileText(145) = m$
  2258.  
  2259.     m$ = ""
  2260.     m$ = m$ + "........" + Chr$(13)
  2261.     m$ = m$ + "........" + Chr$(13)
  2262.     m$ = m$ + "........" + Chr$(13)
  2263.     m$ = m$ + "........" + Chr$(13)
  2264.     m$ = m$ + "........" + Chr$(13)
  2265.     m$ = m$ + "22222222" + Chr$(13)
  2266.     m$ = m$ + "22222222" + Chr$(13)
  2267.     m$ = m$ + "........" + Chr$(13)
  2268.     arrTileText(146) = m$
  2269.  
  2270.     m$ = ""
  2271.     m$ = m$ + "..22.22." + Chr$(13)
  2272.     m$ = m$ + ".2222222" + Chr$(13)
  2273.     m$ = m$ + ".2222222" + Chr$(13)
  2274.     m$ = m$ + ".2222222" + Chr$(13)
  2275.     m$ = m$ + "..22222." + Chr$(13)
  2276.     m$ = m$ + "...222.." + Chr$(13)
  2277.     m$ = m$ + "....2..." + Chr$(13)
  2278.     m$ = m$ + "........" + Chr$(13)
  2279.     arrTileText(147) = m$
  2280.  
  2281.     m$ = ""
  2282.     m$ = m$ + ".22....." + Chr$(13)
  2283.     m$ = m$ + ".22....." + Chr$(13)
  2284.     m$ = m$ + ".22....." + Chr$(13)
  2285.     m$ = m$ + ".22....." + Chr$(13)
  2286.     m$ = m$ + ".22....." + Chr$(13)
  2287.     m$ = m$ + ".22....." + Chr$(13)
  2288.     m$ = m$ + ".22....." + Chr$(13)
  2289.     m$ = m$ + ".22....." + Chr$(13)
  2290.     arrTileText(148) = m$
  2291.  
  2292.     m$ = ""
  2293.     m$ = m$ + "........" + Chr$(13)
  2294.     m$ = m$ + "........" + Chr$(13)
  2295.     m$ = m$ + "........" + Chr$(13)
  2296.     m$ = m$ + ".....222" + Chr$(13)
  2297.     m$ = m$ + "....2222" + Chr$(13)
  2298.     m$ = m$ + "...222.." + Chr$(13)
  2299.     m$ = m$ + "...22..." + Chr$(13)
  2300.     m$ = m$ + "...22..." + Chr$(13)
  2301.     arrTileText(149) = m$
  2302.  
  2303.     m$ = ""
  2304.     m$ = m$ + "22....22" + Chr$(13)
  2305.     m$ = m$ + "222..222" + Chr$(13)
  2306.     m$ = m$ + ".222222." + Chr$(13)
  2307.     m$ = m$ + "..2222.." + Chr$(13)
  2308.     m$ = m$ + "..2222.." + Chr$(13)
  2309.     m$ = m$ + ".222222." + Chr$(13)
  2310.     m$ = m$ + "222..222" + Chr$(13)
  2311.     m$ = m$ + "22....22" + Chr$(13)
  2312.     arrTileText(150) = m$
  2313.  
  2314.     m$ = ""
  2315.     m$ = m$ + "........" + Chr$(13)
  2316.     m$ = m$ + "..2222.." + Chr$(13)
  2317.     m$ = m$ + ".222222." + Chr$(13)
  2318.     m$ = m$ + ".22..22." + Chr$(13)
  2319.     m$ = m$ + ".22..22." + Chr$(13)
  2320.     m$ = m$ + ".222222." + Chr$(13)
  2321.     m$ = m$ + "..2222.." + Chr$(13)
  2322.     m$ = m$ + "........" + Chr$(13)
  2323.     arrTileText(151) = m$
  2324.  
  2325.     m$ = ""
  2326.     m$ = m$ + "...22..." + Chr$(13)
  2327.     m$ = m$ + "...22..." + Chr$(13)
  2328.     m$ = m$ + ".22..22." + Chr$(13)
  2329.     m$ = m$ + ".22..22." + Chr$(13)
  2330.     m$ = m$ + "...22..." + Chr$(13)
  2331.     m$ = m$ + "...22..." + Chr$(13)
  2332.     m$ = m$ + "..2222.." + Chr$(13)
  2333.     m$ = m$ + "........" + Chr$(13)
  2334.     arrTileText(152) = m$
  2335.  
  2336.     m$ = ""
  2337.     m$ = m$ + ".....22." + Chr$(13)
  2338.     m$ = m$ + ".....22." + Chr$(13)
  2339.     m$ = m$ + ".....22." + Chr$(13)
  2340.     m$ = m$ + ".....22." + Chr$(13)
  2341.     m$ = m$ + ".....22." + Chr$(13)
  2342.     m$ = m$ + ".....22." + Chr$(13)
  2343.     m$ = m$ + ".....22." + Chr$(13)
  2344.     m$ = m$ + ".....22." + Chr$(13)
  2345.     arrTileText(153) = m$
  2346.  
  2347.     m$ = ""
  2348.     m$ = m$ + "....2..." + Chr$(13)
  2349.     m$ = m$ + "...222.." + Chr$(13)
  2350.     m$ = m$ + "..22222." + Chr$(13)
  2351.     m$ = m$ + ".2222222" + Chr$(13)
  2352.     m$ = m$ + "..22222." + Chr$(13)
  2353.     m$ = m$ + "...222.." + Chr$(13)
  2354.     m$ = m$ + "....2..." + Chr$(13)
  2355.     m$ = m$ + "........" + Chr$(13)
  2356.     arrTileText(154) = m$
  2357.  
  2358.     m$ = ""
  2359.     m$ = m$ + "...22..." + Chr$(13)
  2360.     m$ = m$ + "...22..." + Chr$(13)
  2361.     m$ = m$ + "...22..." + Chr$(13)
  2362.     m$ = m$ + "22222222" + Chr$(13)
  2363.     m$ = m$ + "22222222" + Chr$(13)
  2364.     m$ = m$ + "...22..." + Chr$(13)
  2365.     m$ = m$ + "...22..." + Chr$(13)
  2366.     m$ = m$ + "...22..." + Chr$(13)
  2367.     arrTileText(155) = m$
  2368.  
  2369.     m$ = ""
  2370.     m$ = m$ + "22......" + Chr$(13)
  2371.     m$ = m$ + "22......" + Chr$(13)
  2372.     m$ = m$ + "..22...." + Chr$(13)
  2373.     m$ = m$ + "..22...." + Chr$(13)
  2374.     m$ = m$ + "22......" + Chr$(13)
  2375.     m$ = m$ + "22......" + Chr$(13)
  2376.     m$ = m$ + "..22...." + Chr$(13)
  2377.     m$ = m$ + "..22...." + Chr$(13)
  2378.     arrTileText(156) = m$
  2379.  
  2380.     m$ = ""
  2381.     m$ = m$ + "...22..." + Chr$(13)
  2382.     m$ = m$ + "...22..." + Chr$(13)
  2383.     m$ = m$ + "...22..." + Chr$(13)
  2384.     m$ = m$ + "...22..." + Chr$(13)
  2385.     m$ = m$ + "...22..." + Chr$(13)
  2386.     m$ = m$ + "...22..." + Chr$(13)
  2387.     m$ = m$ + "...22..." + Chr$(13)
  2388.     m$ = m$ + "...22..." + Chr$(13)
  2389.     arrTileText(157) = m$
  2390.  
  2391.     m$ = ""
  2392.     m$ = m$ + "........" + Chr$(13)
  2393.     m$ = m$ + "........" + Chr$(13)
  2394.     m$ = m$ + "......22" + Chr$(13)
  2395.     m$ = m$ + "..22222." + Chr$(13)
  2396.     m$ = m$ + ".222.22." + Chr$(13)
  2397.     m$ = m$ + "..22.22." + Chr$(13)
  2398.     m$ = m$ + "..22.22." + Chr$(13)
  2399.     m$ = m$ + "........" + Chr$(13)
  2400.     arrTileText(158) = m$
  2401.  
  2402.     m$ = ""
  2403.     m$ = m$ + "22222222" + Chr$(13)
  2404.     m$ = m$ + ".2222222" + Chr$(13)
  2405.     m$ = m$ + "..222222" + Chr$(13)
  2406.     m$ = m$ + "...22222" + Chr$(13)
  2407.     m$ = m$ + "....2222" + Chr$(13)
  2408.     m$ = m$ + ".....222" + Chr$(13)
  2409.     m$ = m$ + "......22" + Chr$(13)
  2410.     m$ = m$ + ".......2" + Chr$(13)
  2411.     arrTileText(159) = m$
  2412.  
  2413.     m$ = ""
  2414.     m$ = m$ + "........" + Chr$(13)
  2415.     m$ = m$ + "........" + Chr$(13)
  2416.     m$ = m$ + "........" + Chr$(13)
  2417.     m$ = m$ + "........" + Chr$(13)
  2418.     m$ = m$ + "........" + Chr$(13)
  2419.     m$ = m$ + "........" + Chr$(13)
  2420.     m$ = m$ + "........" + Chr$(13)
  2421.     m$ = m$ + "........" + Chr$(13)
  2422.     arrTileText(160) = m$
  2423.  
  2424.     m$ = ""
  2425.     m$ = m$ + "2222...." + Chr$(13)
  2426.     m$ = m$ + "2222...." + Chr$(13)
  2427.     m$ = m$ + "2222...." + Chr$(13)
  2428.     m$ = m$ + "2222...." + Chr$(13)
  2429.     m$ = m$ + "2222...." + Chr$(13)
  2430.     m$ = m$ + "2222...." + Chr$(13)
  2431.     m$ = m$ + "2222...." + Chr$(13)
  2432.     m$ = m$ + "2222...." + Chr$(13)
  2433.     arrTileText(161) = m$
  2434.  
  2435.     m$ = ""
  2436.     m$ = m$ + "........" + Chr$(13)
  2437.     m$ = m$ + "........" + Chr$(13)
  2438.     m$ = m$ + "........" + Chr$(13)
  2439.     m$ = m$ + "........" + Chr$(13)
  2440.     m$ = m$ + "22222222" + Chr$(13)
  2441.     m$ = m$ + "22222222" + Chr$(13)
  2442.     m$ = m$ + "22222222" + Chr$(13)
  2443.     m$ = m$ + "22222222" + Chr$(13)
  2444.     arrTileText(162) = m$
  2445.  
  2446.     m$ = ""
  2447.     m$ = m$ + "22222222" + Chr$(13)
  2448.     m$ = m$ + "........" + Chr$(13)
  2449.     m$ = m$ + "........" + Chr$(13)
  2450.     m$ = m$ + "........" + Chr$(13)
  2451.     m$ = m$ + "........" + Chr$(13)
  2452.     m$ = m$ + "........" + Chr$(13)
  2453.     m$ = m$ + "........" + Chr$(13)
  2454.     m$ = m$ + "........" + Chr$(13)
  2455.     arrTileText(163) = m$
  2456.  
  2457.     m$ = ""
  2458.     m$ = m$ + "........" + Chr$(13)
  2459.     m$ = m$ + "........" + Chr$(13)
  2460.     m$ = m$ + "........" + Chr$(13)
  2461.     m$ = m$ + "........" + Chr$(13)
  2462.     m$ = m$ + "........" + Chr$(13)
  2463.     m$ = m$ + "........" + Chr$(13)
  2464.     m$ = m$ + "........" + Chr$(13)
  2465.     m$ = m$ + "22222222" + Chr$(13)
  2466.     arrTileText(164) = m$
  2467.  
  2468.     m$ = ""
  2469.     m$ = m$ + "22......" + Chr$(13)
  2470.     m$ = m$ + "22......" + Chr$(13)
  2471.     m$ = m$ + "22......" + Chr$(13)
  2472.     m$ = m$ + "22......" + Chr$(13)
  2473.     m$ = m$ + "22......" + Chr$(13)
  2474.     m$ = m$ + "22......" + Chr$(13)
  2475.     m$ = m$ + "22......" + Chr$(13)
  2476.     m$ = m$ + "22......" + Chr$(13)
  2477.     arrTileText(165) = m$
  2478.  
  2479.     m$ = ""
  2480.     m$ = m$ + "22..22.." + Chr$(13)
  2481.     m$ = m$ + "22..22.." + Chr$(13)
  2482.     m$ = m$ + "..22..22" + Chr$(13)
  2483.     m$ = m$ + "..22..22" + Chr$(13)
  2484.     m$ = m$ + "22..22.." + Chr$(13)
  2485.     m$ = m$ + "22..22.." + Chr$(13)
  2486.     m$ = m$ + "..22..22" + Chr$(13)
  2487.     m$ = m$ + "..22..22" + Chr$(13)
  2488.     arrTileText(166) = m$
  2489.  
  2490.     m$ = ""
  2491.     m$ = m$ + "......22" + Chr$(13)
  2492.     m$ = m$ + "......22" + Chr$(13)
  2493.     m$ = m$ + "......22" + Chr$(13)
  2494.     m$ = m$ + "......22" + Chr$(13)
  2495.     m$ = m$ + "......22" + Chr$(13)
  2496.     m$ = m$ + "......22" + Chr$(13)
  2497.     m$ = m$ + "......22" + Chr$(13)
  2498.     m$ = m$ + "......22" + Chr$(13)
  2499.     arrTileText(167) = m$
  2500.  
  2501.     m$ = ""
  2502.     m$ = m$ + "........" + Chr$(13)
  2503.     m$ = m$ + "........" + Chr$(13)
  2504.     m$ = m$ + "........" + Chr$(13)
  2505.     m$ = m$ + "........" + Chr$(13)
  2506.     m$ = m$ + "22..22.." + Chr$(13)
  2507.     m$ = m$ + "22..22.." + Chr$(13)
  2508.     m$ = m$ + "..22..22" + Chr$(13)
  2509.     m$ = m$ + "..22..22" + Chr$(13)
  2510.     arrTileText(168) = m$
  2511.  
  2512.     m$ = ""
  2513.     m$ = m$ + "22222222" + Chr$(13)
  2514.     m$ = m$ + "2222222." + Chr$(13)
  2515.     m$ = m$ + "222222.." + Chr$(13)
  2516.     m$ = m$ + "22222..." + Chr$(13)
  2517.     m$ = m$ + "2222...." + Chr$(13)
  2518.     m$ = m$ + "222....." + Chr$(13)
  2519.     m$ = m$ + "22......" + Chr$(13)
  2520.     m$ = m$ + "2......." + Chr$(13)
  2521.     arrTileText(169) = m$
  2522.  
  2523.     m$ = ""
  2524.     m$ = m$ + "......22" + Chr$(13)
  2525.     m$ = m$ + "......22" + Chr$(13)
  2526.     m$ = m$ + "......22" + Chr$(13)
  2527.     m$ = m$ + "......22" + Chr$(13)
  2528.     m$ = m$ + "......22" + Chr$(13)
  2529.     m$ = m$ + "......22" + Chr$(13)
  2530.     m$ = m$ + "......22" + Chr$(13)
  2531.     m$ = m$ + "......22" + Chr$(13)
  2532.     arrTileText(170) = m$
  2533.  
  2534.     m$ = ""
  2535.     m$ = m$ + "...22..." + Chr$(13)
  2536.     m$ = m$ + "...22..." + Chr$(13)
  2537.     m$ = m$ + "...22..." + Chr$(13)
  2538.     m$ = m$ + "...22222" + Chr$(13)
  2539.     m$ = m$ + "...22222" + Chr$(13)
  2540.     m$ = m$ + "...22..." + Chr$(13)
  2541.     m$ = m$ + "...22..." + Chr$(13)
  2542.     m$ = m$ + "...22..." + Chr$(13)
  2543.     arrTileText(171) = m$
  2544.  
  2545.     m$ = ""
  2546.     m$ = m$ + "........" + Chr$(13)
  2547.     m$ = m$ + "........" + Chr$(13)
  2548.     m$ = m$ + "........" + Chr$(13)
  2549.     m$ = m$ + "........" + Chr$(13)
  2550.     m$ = m$ + "....2222" + Chr$(13)
  2551.     m$ = m$ + "....2222" + Chr$(13)
  2552.     m$ = m$ + "....2222" + Chr$(13)
  2553.     m$ = m$ + "....2222" + Chr$(13)
  2554.     arrTileText(172) = m$
  2555.  
  2556.     m$ = ""
  2557.     m$ = m$ + "...22..." + Chr$(13)
  2558.     m$ = m$ + "...22..." + Chr$(13)
  2559.     m$ = m$ + "...22..." + Chr$(13)
  2560.     m$ = m$ + "...22222" + Chr$(13)
  2561.     m$ = m$ + "...22222" + Chr$(13)
  2562.     m$ = m$ + "........" + Chr$(13)
  2563.     m$ = m$ + "........" + Chr$(13)
  2564.     m$ = m$ + "........" + Chr$(13)
  2565.     arrTileText(173) = m$
  2566.  
  2567.     m$ = ""
  2568.     m$ = m$ + "........" + Chr$(13)
  2569.     m$ = m$ + "........" + Chr$(13)
  2570.     m$ = m$ + "........" + Chr$(13)
  2571.     m$ = m$ + "22222..." + Chr$(13)
  2572.     m$ = m$ + "22222..." + Chr$(13)
  2573.     m$ = m$ + "...22..." + Chr$(13)
  2574.     m$ = m$ + "...22..." + Chr$(13)
  2575.     m$ = m$ + "...22..." + Chr$(13)
  2576.     arrTileText(174) = m$
  2577.  
  2578.     m$ = ""
  2579.     m$ = m$ + "........" + Chr$(13)
  2580.     m$ = m$ + "........" + Chr$(13)
  2581.     m$ = m$ + "........" + Chr$(13)
  2582.     m$ = m$ + "........" + Chr$(13)
  2583.     m$ = m$ + "........" + Chr$(13)
  2584.     m$ = m$ + "........" + Chr$(13)
  2585.     m$ = m$ + "22222222" + Chr$(13)
  2586.     m$ = m$ + "22222222" + Chr$(13)
  2587.     arrTileText(175) = m$
  2588.  
  2589.     m$ = ""
  2590.     m$ = m$ + "........" + Chr$(13)
  2591.     m$ = m$ + "........" + Chr$(13)
  2592.     m$ = m$ + "........" + Chr$(13)
  2593.     m$ = m$ + "...22222" + Chr$(13)
  2594.     m$ = m$ + "...22222" + Chr$(13)
  2595.     m$ = m$ + "...22..." + Chr$(13)
  2596.     m$ = m$ + "...22..." + Chr$(13)
  2597.     m$ = m$ + "...22..." + Chr$(13)
  2598.     arrTileText(176) = m$
  2599.  
  2600.     m$ = ""
  2601.     m$ = m$ + "...22..." + Chr$(13)
  2602.     m$ = m$ + "...22..." + Chr$(13)
  2603.     m$ = m$ + "...22..." + Chr$(13)
  2604.     m$ = m$ + "22222222" + Chr$(13)
  2605.     m$ = m$ + "22222222" + Chr$(13)
  2606.     m$ = m$ + "........" + Chr$(13)
  2607.     m$ = m$ + "........" + Chr$(13)
  2608.     m$ = m$ + "........" + Chr$(13)
  2609.     arrTileText(177) = m$
  2610.  
  2611.     m$ = ""
  2612.     m$ = m$ + "........" + Chr$(13)
  2613.     m$ = m$ + "........" + Chr$(13)
  2614.     m$ = m$ + "........" + Chr$(13)
  2615.     m$ = m$ + "22222222" + Chr$(13)
  2616.     m$ = m$ + "22222222" + Chr$(13)
  2617.     m$ = m$ + "...22..." + Chr$(13)
  2618.     m$ = m$ + "...22..." + Chr$(13)
  2619.     m$ = m$ + "...22..." + Chr$(13)
  2620.     arrTileText(178) = m$
  2621.  
  2622.     m$ = ""
  2623.     m$ = m$ + "...22..." + Chr$(13)
  2624.     m$ = m$ + "...22..." + Chr$(13)
  2625.     m$ = m$ + "...22..." + Chr$(13)
  2626.     m$ = m$ + "22222..." + Chr$(13)
  2627.     m$ = m$ + "22222..." + Chr$(13)
  2628.     m$ = m$ + "...22..." + Chr$(13)
  2629.     m$ = m$ + "...22..." + Chr$(13)
  2630.     m$ = m$ + "...22..." + Chr$(13)
  2631.     arrTileText(179) = m$
  2632.  
  2633.     m$ = ""
  2634.     m$ = m$ + "22......" + Chr$(13)
  2635.     m$ = m$ + "22......" + Chr$(13)
  2636.     m$ = m$ + "22......" + Chr$(13)
  2637.     m$ = m$ + "22......" + Chr$(13)
  2638.     m$ = m$ + "22......" + Chr$(13)
  2639.     m$ = m$ + "22......" + Chr$(13)
  2640.     m$ = m$ + "22......" + Chr$(13)
  2641.     m$ = m$ + "22......" + Chr$(13)
  2642.     arrTileText(180) = m$
  2643.  
  2644.     m$ = ""
  2645.     m$ = m$ + "222....." + Chr$(13)
  2646.     m$ = m$ + "222....." + Chr$(13)
  2647.     m$ = m$ + "222....." + Chr$(13)
  2648.     m$ = m$ + "222....." + Chr$(13)
  2649.     m$ = m$ + "222....." + Chr$(13)
  2650.     m$ = m$ + "222....." + Chr$(13)
  2651.     m$ = m$ + "222....." + Chr$(13)
  2652.     m$ = m$ + "222....." + Chr$(13)
  2653.     arrTileText(181) = m$
  2654.  
  2655.     m$ = ""
  2656.     m$ = m$ + ".....222" + Chr$(13)
  2657.     m$ = m$ + ".....222" + Chr$(13)
  2658.     m$ = m$ + ".....222" + Chr$(13)
  2659.     m$ = m$ + ".....222" + Chr$(13)
  2660.     m$ = m$ + ".....222" + Chr$(13)
  2661.     m$ = m$ + ".....222" + Chr$(13)
  2662.     m$ = m$ + ".....222" + Chr$(13)
  2663.     m$ = m$ + ".....222" + Chr$(13)
  2664.     arrTileText(182) = m$
  2665.  
  2666.     m$ = ""
  2667.     m$ = m$ + "22222222" + Chr$(13)
  2668.     m$ = m$ + "22222222" + Chr$(13)
  2669.     m$ = m$ + "........" + Chr$(13)
  2670.     m$ = m$ + "........" + Chr$(13)
  2671.     m$ = m$ + "........" + Chr$(13)
  2672.     m$ = m$ + "........" + Chr$(13)
  2673.     m$ = m$ + "........" + Chr$(13)
  2674.     m$ = m$ + "........" + Chr$(13)
  2675.     arrTileText(183) = m$
  2676.  
  2677.     m$ = ""
  2678.     m$ = m$ + "22222222" + Chr$(13)
  2679.     m$ = m$ + "22222222" + Chr$(13)
  2680.     m$ = m$ + "22222222" + Chr$(13)
  2681.     m$ = m$ + "........" + Chr$(13)
  2682.     m$ = m$ + "........" + Chr$(13)
  2683.     m$ = m$ + "........" + Chr$(13)
  2684.     m$ = m$ + "........" + Chr$(13)
  2685.     m$ = m$ + "........" + Chr$(13)
  2686.     arrTileText(184) = m$
  2687.  
  2688.     m$ = ""
  2689.     m$ = m$ + "........" + Chr$(13)
  2690.     m$ = m$ + "........" + Chr$(13)
  2691.     m$ = m$ + "........" + Chr$(13)
  2692.     m$ = m$ + "........" + Chr$(13)
  2693.     m$ = m$ + "........" + Chr$(13)
  2694.     m$ = m$ + "22222222" + Chr$(13)
  2695.     m$ = m$ + "22222222" + Chr$(13)
  2696.     m$ = m$ + "22222222" + Chr$(13)
  2697.     arrTileText(185) = m$
  2698.  
  2699.     m$ = ""
  2700.     m$ = m$ + "......22" + Chr$(13)
  2701.     m$ = m$ + "......22" + Chr$(13)
  2702.     m$ = m$ + "......22" + Chr$(13)
  2703.     m$ = m$ + "......22" + Chr$(13)
  2704.     m$ = m$ + "......22" + Chr$(13)
  2705.     m$ = m$ + "......22" + Chr$(13)
  2706.     m$ = m$ + "22222222" + Chr$(13)
  2707.     m$ = m$ + "22222222" + Chr$(13)
  2708.     arrTileText(186) = m$
  2709.  
  2710.     m$ = ""
  2711.     m$ = m$ + "........" + Chr$(13)
  2712.     m$ = m$ + "........" + Chr$(13)
  2713.     m$ = m$ + "........" + Chr$(13)
  2714.     m$ = m$ + "........" + Chr$(13)
  2715.     m$ = m$ + "2222...." + Chr$(13)
  2716.     m$ = m$ + "2222...." + Chr$(13)
  2717.     m$ = m$ + "2222...." + Chr$(13)
  2718.     m$ = m$ + "2222...." + Chr$(13)
  2719.     arrTileText(187) = m$
  2720.  
  2721.     m$ = ""
  2722.     m$ = m$ + "....2222" + Chr$(13)
  2723.     m$ = m$ + "....2222" + Chr$(13)
  2724.     m$ = m$ + "....2222" + Chr$(13)
  2725.     m$ = m$ + "....2222" + Chr$(13)
  2726.     m$ = m$ + "........" + Chr$(13)
  2727.     m$ = m$ + "........" + Chr$(13)
  2728.     m$ = m$ + "........" + Chr$(13)
  2729.     m$ = m$ + "........" + Chr$(13)
  2730.     arrTileText(188) = m$
  2731.  
  2732.     m$ = ""
  2733.     m$ = m$ + "...22..." + Chr$(13)
  2734.     m$ = m$ + "...22..." + Chr$(13)
  2735.     m$ = m$ + "...22..." + Chr$(13)
  2736.     m$ = m$ + "22222..." + Chr$(13)
  2737.     m$ = m$ + "22222..." + Chr$(13)
  2738.     m$ = m$ + "........" + Chr$(13)
  2739.     m$ = m$ + "........" + Chr$(13)
  2740.     m$ = m$ + "........" + Chr$(13)
  2741.     arrTileText(189) = m$
  2742.  
  2743.     m$ = ""
  2744.     m$ = m$ + "2222...." + Chr$(13)
  2745.     m$ = m$ + "2222...." + Chr$(13)
  2746.     m$ = m$ + "2222...." + Chr$(13)
  2747.     m$ = m$ + "2222...." + Chr$(13)
  2748.     m$ = m$ + "........" + Chr$(13)
  2749.     m$ = m$ + "........" + Chr$(13)
  2750.     m$ = m$ + "........" + Chr$(13)
  2751.     m$ = m$ + "........" + Chr$(13)
  2752.     arrTileText(190) = m$
  2753.  
  2754.     m$ = ""
  2755.     m$ = m$ + "2222...." + Chr$(13)
  2756.     m$ = m$ + "2222...." + Chr$(13)
  2757.     m$ = m$ + "2222...." + Chr$(13)
  2758.     m$ = m$ + "2222...." + Chr$(13)
  2759.     m$ = m$ + "....2222" + Chr$(13)
  2760.     m$ = m$ + "....2222" + Chr$(13)
  2761.     m$ = m$ + "....2222" + Chr$(13)
  2762.     m$ = m$ + "....2222" + Chr$(13)
  2763.     arrTileText(191) = m$
  2764.  
  2765.     m$ = ""
  2766.     m$ = m$ + "........" + Chr$(13)
  2767.     m$ = m$ + ".2222222" + Chr$(13)
  2768.     m$ = m$ + ".2.....2" + Chr$(13)
  2769.     m$ = m$ + ".2.....2" + Chr$(13)
  2770.     m$ = m$ + ".2.....2" + Chr$(13)
  2771.     m$ = m$ + ".2.....2" + Chr$(13)
  2772.     m$ = m$ + ".2.....2" + Chr$(13)
  2773.     m$ = m$ + ".2222222" + Chr$(13)
  2774.     arrTileText(192) = m$
  2775.  
  2776.     m$ = ""
  2777.     m$ = m$ + "........" + Chr$(13)
  2778.     m$ = m$ + ".2222222" + Chr$(13)
  2779.     m$ = m$ + ".2222222" + Chr$(13)
  2780.     m$ = m$ + ".2222222" + Chr$(13)
  2781.     m$ = m$ + ".2222222" + Chr$(13)
  2782.     m$ = m$ + ".2222222" + Chr$(13)
  2783.     m$ = m$ + ".2222222" + Chr$(13)
  2784.     m$ = m$ + ".2222222" + Chr$(13)
  2785.     arrTileText(193) = m$
  2786.  
  2787.     m$ = ""
  2788.     m$ = m$ + "........" + Chr$(13)
  2789.     m$ = m$ + "...22..." + Chr$(13)
  2790.     m$ = m$ + "..2222.." + Chr$(13)
  2791.     m$ = m$ + ".222222." + Chr$(13)
  2792.     m$ = m$ + "...22..." + Chr$(13)
  2793.     m$ = m$ + "...22..." + Chr$(13)
  2794.     m$ = m$ + "...22..." + Chr$(13)
  2795.     m$ = m$ + "...22..." + Chr$(13)
  2796.     arrTileText(194) = m$
  2797.  
  2798.     m$ = ""
  2799.     m$ = m$ + "........" + Chr$(13)
  2800.     m$ = m$ + "...22..." + Chr$(13)
  2801.     m$ = m$ + "...22..." + Chr$(13)
  2802.     m$ = m$ + "...22..." + Chr$(13)
  2803.     m$ = m$ + "...22..." + Chr$(13)
  2804.     m$ = m$ + ".222222." + Chr$(13)
  2805.     m$ = m$ + "..2222.." + Chr$(13)
  2806.     m$ = m$ + "...22..." + Chr$(13)
  2807.     arrTileText(195) = m$
  2808.  
  2809.     m$ = ""
  2810.     m$ = m$ + "........" + Chr$(13)
  2811.     m$ = m$ + "...2...." + Chr$(13)
  2812.     m$ = m$ + "..22...." + Chr$(13)
  2813.     m$ = m$ + ".2222222" + Chr$(13)
  2814.     m$ = m$ + ".2222222" + Chr$(13)
  2815.     m$ = m$ + "..22...." + Chr$(13)
  2816.     m$ = m$ + "...2...." + Chr$(13)
  2817.     m$ = m$ + "........" + Chr$(13)
  2818.     arrTileText(196) = m$
  2819.  
  2820.     m$ = ""
  2821.     m$ = m$ + "........" + Chr$(13)
  2822.     m$ = m$ + ".....2.." + Chr$(13)
  2823.     m$ = m$ + ".....22." + Chr$(13)
  2824.     m$ = m$ + ".2222222" + Chr$(13)
  2825.     m$ = m$ + ".2222222" + Chr$(13)
  2826.     m$ = m$ + ".....22." + Chr$(13)
  2827.     m$ = m$ + ".....2.." + Chr$(13)
  2828.     m$ = m$ + "........" + Chr$(13)
  2829.     arrTileText(197) = m$
  2830.  
  2831.     m$ = ""
  2832.     m$ = m$ + "........" + Chr$(13)
  2833.     m$ = m$ + "........" + Chr$(13)
  2834.     m$ = m$ + "........" + Chr$(13)
  2835.     m$ = m$ + "........" + Chr$(13)
  2836.     m$ = m$ + "........" + Chr$(13)
  2837.     m$ = m$ + "........" + Chr$(13)
  2838.     m$ = m$ + "........" + Chr$(13)
  2839.     m$ = m$ + "........" + Chr$(13)
  2840.     arrTileText(198) = m$
  2841.  
  2842.     m$ = ""
  2843.     m$ = m$ + ".222222." + Chr$(13)
  2844.     m$ = m$ + "2......2" + Chr$(13)
  2845.     m$ = m$ + "2.2..2.2" + Chr$(13)
  2846.     m$ = m$ + "2......2" + Chr$(13)
  2847.     m$ = m$ + "2.2..2.2" + Chr$(13)
  2848.     m$ = m$ + "2.2222.2" + Chr$(13)
  2849.     m$ = m$ + "2......2" + Chr$(13)
  2850.     m$ = m$ + ".222222." + Chr$(13)
  2851.     arrTileText(199) = m$
  2852.  
  2853.     m$ = ""
  2854.     m$ = m$ + ".222222." + Chr$(13)
  2855.     m$ = m$ + "2......2" + Chr$(13)
  2856.     m$ = m$ + "2.2..2.2" + Chr$(13)
  2857.     m$ = m$ + "2......2" + Chr$(13)
  2858.     m$ = m$ + "2.2222.2" + Chr$(13)
  2859.     m$ = m$ + "2.2..2.2" + Chr$(13)
  2860.     m$ = m$ + "2......2" + Chr$(13)
  2861.     m$ = m$ + ".222222." + Chr$(13)
  2862.     arrTileText(200) = m$
  2863.  
  2864.     m$ = ""
  2865.     m$ = m$ + "........" + Chr$(13)
  2866.     m$ = m$ + "........" + Chr$(13)
  2867.     m$ = m$ + "........" + Chr$(13)
  2868.     m$ = m$ + "........" + Chr$(13)
  2869.     m$ = m$ + "........" + Chr$(13)
  2870.     m$ = m$ + "........" + Chr$(13)
  2871.     m$ = m$ + "........" + Chr$(13)
  2872.     m$ = m$ + "........" + Chr$(13)
  2873.     arrTileText(201) = m$
  2874.  
  2875.     m$ = ""
  2876.     m$ = m$ + ".222222." + Chr$(13)
  2877.     m$ = m$ + ".....22." + Chr$(13)
  2878.     m$ = m$ + "....22.." + Chr$(13)
  2879.     m$ = m$ + "...22..." + Chr$(13)
  2880.     m$ = m$ + "..22...." + Chr$(13)
  2881.     m$ = m$ + ".22....." + Chr$(13)
  2882.     m$ = m$ + ".222222." + Chr$(13)
  2883.     m$ = m$ + "........" + Chr$(13)
  2884.     arrTileText(202) = m$
  2885.  
  2886.     m$ = ""
  2887.     m$ = m$ + "...22..." + Chr$(13)
  2888.     m$ = m$ + "...22..." + Chr$(13)
  2889.     m$ = m$ + "...22..." + Chr$(13)
  2890.     m$ = m$ + "22222222" + Chr$(13)
  2891.     m$ = m$ + "22222222" + Chr$(13)
  2892.     m$ = m$ + "...22..." + Chr$(13)
  2893.     m$ = m$ + "...22..." + Chr$(13)
  2894.     m$ = m$ + "...22..." + Chr$(13)
  2895.     arrTileText(203) = m$
  2896.  
  2897.     m$ = ""
  2898.     m$ = m$ + "22......" + Chr$(13)
  2899.     m$ = m$ + "22......" + Chr$(13)
  2900.     m$ = m$ + "..22...." + Chr$(13)
  2901.     m$ = m$ + "..22...." + Chr$(13)
  2902.     m$ = m$ + "22......" + Chr$(13)
  2903.     m$ = m$ + "22......" + Chr$(13)
  2904.     m$ = m$ + "..22...." + Chr$(13)
  2905.     m$ = m$ + "..22...." + Chr$(13)
  2906.     arrTileText(204) = m$
  2907.  
  2908.     m$ = ""
  2909.     m$ = m$ + "...22..." + Chr$(13)
  2910.     m$ = m$ + "...22..." + Chr$(13)
  2911.     m$ = m$ + "...22..." + Chr$(13)
  2912.     m$ = m$ + "...22..." + Chr$(13)
  2913.     m$ = m$ + "...22..." + Chr$(13)
  2914.     m$ = m$ + "...22..." + Chr$(13)
  2915.     m$ = m$ + "...22..." + Chr$(13)
  2916.     m$ = m$ + "...22..." + Chr$(13)
  2917.     arrTileText(205) = m$
  2918.  
  2919.     m$ = ""
  2920.     m$ = m$ + "..22..22" + Chr$(13)
  2921.     m$ = m$ + "..22..22" + Chr$(13)
  2922.     m$ = m$ + "22..22.." + Chr$(13)
  2923.     m$ = m$ + "22..22.." + Chr$(13)
  2924.     m$ = m$ + "..22..22" + Chr$(13)
  2925.     m$ = m$ + "..22..22" + Chr$(13)
  2926.     m$ = m$ + "22..22.." + Chr$(13)
  2927.     m$ = m$ + "22..22.." + Chr$(13)
  2928.     arrTileText(206) = m$
  2929.  
  2930.     m$ = ""
  2931.     m$ = m$ + "..22..22" + Chr$(13)
  2932.     m$ = m$ + "2..22..2" + Chr$(13)
  2933.     m$ = m$ + "22..22.." + Chr$(13)
  2934.     m$ = m$ + ".22..22." + Chr$(13)
  2935.     m$ = m$ + "..22..22" + Chr$(13)
  2936.     m$ = m$ + "2..22..2" + Chr$(13)
  2937.     m$ = m$ + "22..22.." + Chr$(13)
  2938.     m$ = m$ + ".22..22." + Chr$(13)
  2939.     arrTileText(207) = m$
  2940.  
  2941.     m$ = ""
  2942.     m$ = m$ + "........" + Chr$(13)
  2943.     m$ = m$ + "........" + Chr$(13)
  2944.     m$ = m$ + "........" + Chr$(13)
  2945.     m$ = m$ + "........" + Chr$(13)
  2946.     m$ = m$ + "........" + Chr$(13)
  2947.     m$ = m$ + "........" + Chr$(13)
  2948.     m$ = m$ + "........" + Chr$(13)
  2949.     m$ = m$ + "........" + Chr$(13)
  2950.     arrTileText(208) = m$
  2951.  
  2952.     m$ = ""
  2953.     m$ = m$ + "2222...." + Chr$(13)
  2954.     m$ = m$ + "2222...." + Chr$(13)
  2955.     m$ = m$ + "2222...." + Chr$(13)
  2956.     m$ = m$ + "2222...." + Chr$(13)
  2957.     m$ = m$ + "2222...." + Chr$(13)
  2958.     m$ = m$ + "2222...." + Chr$(13)
  2959.     m$ = m$ + "2222...." + Chr$(13)
  2960.     m$ = m$ + "2222...." + Chr$(13)
  2961.     arrTileText(209) = m$
  2962.  
  2963.     m$ = ""
  2964.     m$ = m$ + "........" + Chr$(13)
  2965.     m$ = m$ + "........" + Chr$(13)
  2966.     m$ = m$ + "........" + Chr$(13)
  2967.     m$ = m$ + "........" + Chr$(13)
  2968.     m$ = m$ + "22222222" + Chr$(13)
  2969.     m$ = m$ + "22222222" + Chr$(13)
  2970.     m$ = m$ + "22222222" + Chr$(13)
  2971.     m$ = m$ + "22222222" + Chr$(13)
  2972.     arrTileText(210) = m$
  2973.  
  2974.     m$ = ""
  2975.     m$ = m$ + "22222222" + Chr$(13)
  2976.     m$ = m$ + "........" + Chr$(13)
  2977.     m$ = m$ + "........" + Chr$(13)
  2978.     m$ = m$ + "........" + Chr$(13)
  2979.     m$ = m$ + "........" + Chr$(13)
  2980.     m$ = m$ + "........" + Chr$(13)
  2981.     m$ = m$ + "........" + Chr$(13)
  2982.     m$ = m$ + "........" + Chr$(13)
  2983.     arrTileText(211) = m$
  2984.  
  2985.     m$ = ""
  2986.     m$ = m$ + "........" + Chr$(13)
  2987.     m$ = m$ + "........" + Chr$(13)
  2988.     m$ = m$ + "........" + Chr$(13)
  2989.     m$ = m$ + "........" + Chr$(13)
  2990.     m$ = m$ + "........" + Chr$(13)
  2991.     m$ = m$ + "........" + Chr$(13)
  2992.     m$ = m$ + "........" + Chr$(13)
  2993.     m$ = m$ + "22222222" + Chr$(13)
  2994.     arrTileText(212) = m$
  2995.  
  2996.     m$ = ""
  2997.     m$ = m$ + "22......" + Chr$(13)
  2998.     m$ = m$ + "22......" + Chr$(13)
  2999.     m$ = m$ + "22......" + Chr$(13)
  3000.     m$ = m$ + "22......" + Chr$(13)
  3001.     m$ = m$ + "22......" + Chr$(13)
  3002.     m$ = m$ + "22......" + Chr$(13)
  3003.     m$ = m$ + "22......" + Chr$(13)
  3004.     m$ = m$ + "22......" + Chr$(13)
  3005.     arrTileText(213) = m$
  3006.  
  3007.     m$ = ""
  3008.     m$ = m$ + "22..22.." + Chr$(13)
  3009.     m$ = m$ + "22..22.." + Chr$(13)
  3010.     m$ = m$ + "..22..22" + Chr$(13)
  3011.     m$ = m$ + "..22..22" + Chr$(13)
  3012.     m$ = m$ + "22..22.." + Chr$(13)
  3013.     m$ = m$ + "22..22.." + Chr$(13)
  3014.     m$ = m$ + "..22..22" + Chr$(13)
  3015.     m$ = m$ + "..22..22" + Chr$(13)
  3016.     arrTileText(214) = m$
  3017.  
  3018.     m$ = ""
  3019.     m$ = m$ + "......22" + Chr$(13)
  3020.     m$ = m$ + "......22" + Chr$(13)
  3021.     m$ = m$ + "......22" + Chr$(13)
  3022.     m$ = m$ + "......22" + Chr$(13)
  3023.     m$ = m$ + "......22" + Chr$(13)
  3024.     m$ = m$ + "......22" + Chr$(13)
  3025.     m$ = m$ + "......22" + Chr$(13)
  3026.     m$ = m$ + "......22" + Chr$(13)
  3027.     arrTileText(215) = m$
  3028.  
  3029.     m$ = ""
  3030.     m$ = m$ + "........" + Chr$(13)
  3031.     m$ = m$ + "........" + Chr$(13)
  3032.     m$ = m$ + "........" + Chr$(13)
  3033.     m$ = m$ + "........" + Chr$(13)
  3034.     m$ = m$ + "22..22.." + Chr$(13)
  3035.     m$ = m$ + "22..22.." + Chr$(13)
  3036.     m$ = m$ + "..22..22" + Chr$(13)
  3037.     m$ = m$ + "..22..22" + Chr$(13)
  3038.     arrTileText(216) = m$
  3039.  
  3040.     m$ = ""
  3041.     m$ = m$ + "22..22.." + Chr$(13)
  3042.     m$ = m$ + "2..22..2" + Chr$(13)
  3043.     m$ = m$ + "..22..22" + Chr$(13)
  3044.     m$ = m$ + ".22..22." + Chr$(13)
  3045.     m$ = m$ + "22..22.." + Chr$(13)
  3046.     m$ = m$ + "2..22..2" + Chr$(13)
  3047.     m$ = m$ + "..22..22" + Chr$(13)
  3048.     m$ = m$ + ".22..22." + Chr$(13)
  3049.     arrTileText(217) = m$
  3050.  
  3051.     m$ = ""
  3052.     m$ = m$ + "......22" + Chr$(13)
  3053.     m$ = m$ + "......22" + Chr$(13)
  3054.     m$ = m$ + "......22" + Chr$(13)
  3055.     m$ = m$ + "......22" + Chr$(13)
  3056.     m$ = m$ + "......22" + Chr$(13)
  3057.     m$ = m$ + "......22" + Chr$(13)
  3058.     m$ = m$ + "......22" + Chr$(13)
  3059.     m$ = m$ + "......22" + Chr$(13)
  3060.     arrTileText(218) = m$
  3061.  
  3062.     m$ = ""
  3063.     m$ = m$ + "...22..." + Chr$(13)
  3064.     m$ = m$ + "...22..." + Chr$(13)
  3065.     m$ = m$ + "...22..." + Chr$(13)
  3066.     m$ = m$ + "...22222" + Chr$(13)
  3067.     m$ = m$ + "...22222" + Chr$(13)
  3068.     m$ = m$ + "...22..." + Chr$(13)
  3069.     m$ = m$ + "...22..." + Chr$(13)
  3070.     m$ = m$ + "...22..." + Chr$(13)
  3071.     arrTileText(219) = m$
  3072.  
  3073.     m$ = ""
  3074.     m$ = m$ + "........" + Chr$(13)
  3075.     m$ = m$ + "........" + Chr$(13)
  3076.     m$ = m$ + "........" + Chr$(13)
  3077.     m$ = m$ + "........" + Chr$(13)
  3078.     m$ = m$ + "....2222" + Chr$(13)
  3079.     m$ = m$ + "....2222" + Chr$(13)
  3080.     m$ = m$ + "....2222" + Chr$(13)
  3081.     m$ = m$ + "....2222" + Chr$(13)
  3082.     arrTileText(220) = m$
  3083.  
  3084.     m$ = ""
  3085.     m$ = m$ + "...22..." + Chr$(13)
  3086.     m$ = m$ + "...22..." + Chr$(13)
  3087.     m$ = m$ + "...22..." + Chr$(13)
  3088.     m$ = m$ + "...22222" + Chr$(13)
  3089.     m$ = m$ + "...22222" + Chr$(13)
  3090.     m$ = m$ + "........" + Chr$(13)
  3091.     m$ = m$ + "........" + Chr$(13)
  3092.     m$ = m$ + "........" + Chr$(13)
  3093.     arrTileText(221) = m$
  3094.  
  3095.     m$ = ""
  3096.     m$ = m$ + "........" + Chr$(13)
  3097.     m$ = m$ + "........" + Chr$(13)
  3098.     m$ = m$ + "........" + Chr$(13)
  3099.     m$ = m$ + "22222..." + Chr$(13)
  3100.     m$ = m$ + "22222..." + Chr$(13)
  3101.     m$ = m$ + "...22..." + Chr$(13)
  3102.     m$ = m$ + "...22..." + Chr$(13)
  3103.     m$ = m$ + "...22..." + Chr$(13)
  3104.     arrTileText(222) = m$
  3105.  
  3106.     m$ = ""
  3107.     m$ = m$ + "........" + Chr$(13)
  3108.     m$ = m$ + "........" + Chr$(13)
  3109.     m$ = m$ + "........" + Chr$(13)
  3110.     m$ = m$ + "........" + Chr$(13)
  3111.     m$ = m$ + "........" + Chr$(13)
  3112.     m$ = m$ + "........" + Chr$(13)
  3113.     m$ = m$ + "22222222" + Chr$(13)
  3114.     m$ = m$ + "22222222" + Chr$(13)
  3115.     arrTileText(223) = m$
  3116.  
  3117.     m$ = ""
  3118.     m$ = m$ + "........" + Chr$(13)
  3119.     m$ = m$ + "........" + Chr$(13)
  3120.     m$ = m$ + "........" + Chr$(13)
  3121.     m$ = m$ + "...22222" + Chr$(13)
  3122.     m$ = m$ + "...22222" + Chr$(13)
  3123.     m$ = m$ + "...22..." + Chr$(13)
  3124.     m$ = m$ + "...22..." + Chr$(13)
  3125.     m$ = m$ + "...22..." + Chr$(13)
  3126.     arrTileText(224) = m$
  3127.  
  3128.     m$ = ""
  3129.     m$ = m$ + "...22..." + Chr$(13)
  3130.     m$ = m$ + "...22..." + Chr$(13)
  3131.     m$ = m$ + "...22..." + Chr$(13)
  3132.     m$ = m$ + "22222222" + Chr$(13)
  3133.     m$ = m$ + "22222222" + Chr$(13)
  3134.     m$ = m$ + "........" + Chr$(13)
  3135.     m$ = m$ + "........" + Chr$(13)
  3136.     m$ = m$ + "........" + Chr$(13)
  3137.     arrTileText(225) = m$
  3138.  
  3139.     m$ = ""
  3140.     m$ = m$ + "........" + Chr$(13)
  3141.     m$ = m$ + "........" + Chr$(13)
  3142.     m$ = m$ + "........" + Chr$(13)
  3143.     m$ = m$ + "22222222" + Chr$(13)
  3144.     m$ = m$ + "22222222" + Chr$(13)
  3145.     m$ = m$ + "...22..." + Chr$(13)
  3146.     m$ = m$ + "...22..." + Chr$(13)
  3147.     m$ = m$ + "...22..." + Chr$(13)
  3148.     arrTileText(226) = m$
  3149.  
  3150.     m$ = ""
  3151.     m$ = m$ + "...22..." + Chr$(13)
  3152.     m$ = m$ + "...22..." + Chr$(13)
  3153.     m$ = m$ + "...22..." + Chr$(13)
  3154.     m$ = m$ + "22222..." + Chr$(13)
  3155.     m$ = m$ + "22222..." + Chr$(13)
  3156.     m$ = m$ + "...22..." + Chr$(13)
  3157.     m$ = m$ + "...22..." + Chr$(13)
  3158.     m$ = m$ + "...22..." + Chr$(13)
  3159.     arrTileText(227) = m$
  3160.  
  3161.     m$ = ""
  3162.     m$ = m$ + "22......" + Chr$(13)
  3163.     m$ = m$ + "22......" + Chr$(13)
  3164.     m$ = m$ + "22......" + Chr$(13)
  3165.     m$ = m$ + "22......" + Chr$(13)
  3166.     m$ = m$ + "22......" + Chr$(13)
  3167.     m$ = m$ + "22......" + Chr$(13)
  3168.     m$ = m$ + "22......" + Chr$(13)
  3169.     m$ = m$ + "22......" + Chr$(13)
  3170.     arrTileText(228) = m$
  3171.  
  3172.     m$ = ""
  3173.     m$ = m$ + "222....." + Chr$(13)
  3174.     m$ = m$ + "222....." + Chr$(13)
  3175.     m$ = m$ + "222....." + Chr$(13)
  3176.     m$ = m$ + "222....." + Chr$(13)
  3177.     m$ = m$ + "222....." + Chr$(13)
  3178.     m$ = m$ + "222....." + Chr$(13)
  3179.     m$ = m$ + "222....." + Chr$(13)
  3180.     m$ = m$ + "222....." + Chr$(13)
  3181.     arrTileText(229) = m$
  3182.  
  3183.     m$ = ""
  3184.     m$ = m$ + ".....222" + Chr$(13)
  3185.     m$ = m$ + ".....222" + Chr$(13)
  3186.     m$ = m$ + ".....222" + Chr$(13)
  3187.     m$ = m$ + ".....222" + Chr$(13)
  3188.     m$ = m$ + ".....222" + Chr$(13)
  3189.     m$ = m$ + ".....222" + Chr$(13)
  3190.     m$ = m$ + ".....222" + Chr$(13)
  3191.     m$ = m$ + ".....222" + Chr$(13)
  3192.     arrTileText(230) = m$
  3193.  
  3194.     m$ = ""
  3195.     m$ = m$ + "22222222" + Chr$(13)
  3196.     m$ = m$ + "22222222" + Chr$(13)
  3197.     m$ = m$ + "........" + Chr$(13)
  3198.     m$ = m$ + "........" + Chr$(13)
  3199.     m$ = m$ + "........" + Chr$(13)
  3200.     m$ = m$ + "........" + Chr$(13)
  3201.     m$ = m$ + "........" + Chr$(13)
  3202.     m$ = m$ + "........" + Chr$(13)
  3203.     arrTileText(231) = m$
  3204.  
  3205.     m$ = ""
  3206.     m$ = m$ + "22222222" + Chr$(13)
  3207.     m$ = m$ + "22222222" + Chr$(13)
  3208.     m$ = m$ + "22222222" + Chr$(13)
  3209.     m$ = m$ + "........" + Chr$(13)
  3210.     m$ = m$ + "........" + Chr$(13)
  3211.     m$ = m$ + "........" + Chr$(13)
  3212.     m$ = m$ + "........" + Chr$(13)
  3213.     m$ = m$ + "........" + Chr$(13)
  3214.     arrTileText(232) = m$
  3215.  
  3216.     m$ = ""
  3217.     m$ = m$ + "........" + Chr$(13)
  3218.     m$ = m$ + "........" + Chr$(13)
  3219.     m$ = m$ + "........" + Chr$(13)
  3220.     m$ = m$ + "........" + Chr$(13)
  3221.     m$ = m$ + "........" + Chr$(13)
  3222.     m$ = m$ + "22222222" + Chr$(13)
  3223.     m$ = m$ + "22222222" + Chr$(13)
  3224.     m$ = m$ + "22222222" + Chr$(13)
  3225.     arrTileText(233) = m$
  3226.  
  3227.     m$ = ""
  3228.     m$ = m$ + ".......2" + Chr$(13)
  3229.     m$ = m$ + "......22" + Chr$(13)
  3230.     m$ = m$ + ".....22." + Chr$(13)
  3231.     m$ = m$ + ".22.22.." + Chr$(13)
  3232.     m$ = m$ + ".2222..." + Chr$(13)
  3233.     m$ = m$ + ".222...." + Chr$(13)
  3234.     m$ = m$ + ".22....." + Chr$(13)
  3235.     m$ = m$ + "........" + Chr$(13)
  3236.     arrTileText(234) = m$
  3237.  
  3238.     m$ = ""
  3239.     m$ = m$ + "........" + Chr$(13)
  3240.     m$ = m$ + "........" + Chr$(13)
  3241.     m$ = m$ + "........" + Chr$(13)
  3242.     m$ = m$ + "........" + Chr$(13)
  3243.     m$ = m$ + "2222...." + Chr$(13)
  3244.     m$ = m$ + "2222...." + Chr$(13)
  3245.     m$ = m$ + "2222...." + Chr$(13)
  3246.     m$ = m$ + "2222...." + Chr$(13)
  3247.     arrTileText(235) = m$
  3248.  
  3249.     m$ = ""
  3250.     m$ = m$ + "....2222" + Chr$(13)
  3251.     m$ = m$ + "....2222" + Chr$(13)
  3252.     m$ = m$ + "....2222" + Chr$(13)
  3253.     m$ = m$ + "....2222" + Chr$(13)
  3254.     m$ = m$ + "........" + Chr$(13)
  3255.     m$ = m$ + "........" + Chr$(13)
  3256.     m$ = m$ + "........" + Chr$(13)
  3257.     m$ = m$ + "........" + Chr$(13)
  3258.     arrTileText(236) = m$
  3259.  
  3260.     m$ = ""
  3261.     m$ = m$ + "...22..." + Chr$(13)
  3262.     m$ = m$ + "...22..." + Chr$(13)
  3263.     m$ = m$ + "...22..." + Chr$(13)
  3264.     m$ = m$ + "22222..." + Chr$(13)
  3265.     m$ = m$ + "22222..." + Chr$(13)
  3266.     m$ = m$ + "........" + Chr$(13)
  3267.     m$ = m$ + "........" + Chr$(13)
  3268.     m$ = m$ + "........" + Chr$(13)
  3269.     arrTileText(237) = m$
  3270.  
  3271.     m$ = ""
  3272.     m$ = m$ + "2222...." + Chr$(13)
  3273.     m$ = m$ + "2222...." + Chr$(13)
  3274.     m$ = m$ + "2222...." + Chr$(13)
  3275.     m$ = m$ + "2222...." + Chr$(13)
  3276.     m$ = m$ + "........" + Chr$(13)
  3277.     m$ = m$ + "........" + Chr$(13)
  3278.     m$ = m$ + "........" + Chr$(13)
  3279.     m$ = m$ + "........" + Chr$(13)
  3280.     arrTileText(238) = m$
  3281.  
  3282.     m$ = ""
  3283.     m$ = m$ + "2222...." + Chr$(13)
  3284.     m$ = m$ + "2222...." + Chr$(13)
  3285.     m$ = m$ + "2222...." + Chr$(13)
  3286.     m$ = m$ + "2222...." + Chr$(13)
  3287.     m$ = m$ + "....2222" + Chr$(13)
  3288.     m$ = m$ + "....2222" + Chr$(13)
  3289.     m$ = m$ + "....2222" + Chr$(13)
  3290.     m$ = m$ + "....2222" + Chr$(13)
  3291.     arrTileText(239) = m$
  3292.  
  3293.     m$ = ""
  3294.     m$ = m$ + "........" + Chr$(13)
  3295.     m$ = m$ + "........" + Chr$(13)
  3296.     m$ = m$ + "........" + Chr$(13)
  3297.     m$ = m$ + "........" + Chr$(13)
  3298.     m$ = m$ + "........" + Chr$(13)
  3299.     m$ = m$ + "........" + Chr$(13)
  3300.     m$ = m$ + "........" + Chr$(13)
  3301.     m$ = m$ + "........" + Chr$(13)
  3302.     arrTileText(240) = m$
  3303.  
  3304.     m$ = ""
  3305.     m$ = m$ + "22222.22" + Chr$(13)
  3306.     m$ = m$ + "22222.22" + Chr$(13)
  3307.     m$ = m$ + "22222.22" + Chr$(13)
  3308.     m$ = m$ + "........" + Chr$(13)
  3309.     m$ = m$ + "22.22222" + Chr$(13)
  3310.     m$ = m$ + "22.22222" + Chr$(13)
  3311.     m$ = m$ + "22.22222" + Chr$(13)
  3312.     m$ = m$ + "........" + Chr$(13)
  3313.     arrTileText(241) = m$
  3314.  
  3315.     m$ = ""
  3316.     m$ = m$ + "........" + Chr$(13)
  3317.     m$ = m$ + "........" + Chr$(13)
  3318.     m$ = m$ + "........" + Chr$(13)
  3319.     m$ = m$ + ".222222." + Chr$(13)
  3320.     m$ = m$ + "........" + Chr$(13)
  3321.     m$ = m$ + "........" + Chr$(13)
  3322.     m$ = m$ + "........" + Chr$(13)
  3323.     m$ = m$ + "........" + Chr$(13)
  3324.     arrTileText(242) = m$
  3325.  
  3326.     m$ = ""
  3327.     m$ = m$ + "........" + Chr$(13)
  3328.     m$ = m$ + "...2...." + Chr$(13)
  3329.     m$ = m$ + "...2...." + Chr$(13)
  3330.     m$ = m$ + "...2...." + Chr$(13)
  3331.     m$ = m$ + "...2...." + Chr$(13)
  3332.     m$ = m$ + "...2...." + Chr$(13)
  3333.     m$ = m$ + "...2...." + Chr$(13)
  3334.     m$ = m$ + "........" + Chr$(13)
  3335.     arrTileText(243) = m$
  3336.  
  3337.     m$ = ""
  3338.     m$ = m$ + "........" + Chr$(13)
  3339.     m$ = m$ + "........" + Chr$(13)
  3340.     m$ = m$ + "........" + Chr$(13)
  3341.     m$ = m$ + "...2222." + Chr$(13)
  3342.     m$ = m$ + "...2...." + Chr$(13)
  3343.     m$ = m$ + "...2...." + Chr$(13)
  3344.     m$ = m$ + "...2...." + Chr$(13)
  3345.     m$ = m$ + "........" + Chr$(13)
  3346.     arrTileText(244) = m$
  3347.  
  3348.     m$ = ""
  3349.     m$ = m$ + "........" + Chr$(13)
  3350.     m$ = m$ + "........" + Chr$(13)
  3351.     m$ = m$ + "........" + Chr$(13)
  3352.     m$ = m$ + ".222...." + Chr$(13)
  3353.     m$ = m$ + "...2...." + Chr$(13)
  3354.     m$ = m$ + "...2...." + Chr$(13)
  3355.     m$ = m$ + "...2...." + Chr$(13)
  3356.     m$ = m$ + "........" + Chr$(13)
  3357.     arrTileText(245) = m$
  3358.  
  3359.     m$ = ""
  3360.     m$ = m$ + "........" + Chr$(13)
  3361.     m$ = m$ + "...2...." + Chr$(13)
  3362.     m$ = m$ + "...2...." + Chr$(13)
  3363.     m$ = m$ + "...2222." + Chr$(13)
  3364.     m$ = m$ + "........" + Chr$(13)
  3365.     m$ = m$ + "........" + Chr$(13)
  3366.     m$ = m$ + "........" + Chr$(13)
  3367.     m$ = m$ + "........" + Chr$(13)
  3368.     arrTileText(246) = m$
  3369.  
  3370.     m$ = ""
  3371.     m$ = m$ + "........" + Chr$(13)
  3372.     m$ = m$ + "...2...." + Chr$(13)
  3373.     m$ = m$ + "...2...." + Chr$(13)
  3374.     m$ = m$ + ".222...." + Chr$(13)
  3375.     m$ = m$ + "........" + Chr$(13)
  3376.     m$ = m$ + "........" + Chr$(13)
  3377.     m$ = m$ + "........" + Chr$(13)
  3378.     m$ = m$ + "........" + Chr$(13)
  3379.     arrTileText(247) = m$
  3380.  
  3381.     m$ = ""
  3382.     m$ = m$ + "........" + Chr$(13)
  3383.     m$ = m$ + "........" + Chr$(13)
  3384.     m$ = m$ + "........" + Chr$(13)
  3385.     m$ = m$ + "........" + Chr$(13)
  3386.     m$ = m$ + "........" + Chr$(13)
  3387.     m$ = m$ + "........" + Chr$(13)
  3388.     m$ = m$ + "........" + Chr$(13)
  3389.     m$ = m$ + "........" + Chr$(13)
  3390.     arrTileText(248) = m$
  3391.  
  3392.     m$ = ""
  3393.     m$ = m$ + "........" + Chr$(13)
  3394.     m$ = m$ + "........" + Chr$(13)
  3395.     m$ = m$ + "........" + Chr$(13)
  3396.     m$ = m$ + "........" + Chr$(13)
  3397.     m$ = m$ + "........" + Chr$(13)
  3398.     m$ = m$ + "........" + Chr$(13)
  3399.     m$ = m$ + "........" + Chr$(13)
  3400.     m$ = m$ + "........" + Chr$(13)
  3401.     arrTileText(249) = m$
  3402.  
  3403.     m$ = ""
  3404.     m$ = m$ + "........" + Chr$(13)
  3405.     m$ = m$ + "........" + Chr$(13)
  3406.     m$ = m$ + "........" + Chr$(13)
  3407.     m$ = m$ + "........" + Chr$(13)
  3408.     m$ = m$ + "........" + Chr$(13)
  3409.     m$ = m$ + "........" + Chr$(13)
  3410.     m$ = m$ + "........" + Chr$(13)
  3411.     m$ = m$ + "........" + Chr$(13)
  3412.     arrTileText(250) = m$
  3413.  
  3414.     m$ = ""
  3415.     m$ = m$ + "........" + Chr$(13)
  3416.     m$ = m$ + "........" + Chr$(13)
  3417.     m$ = m$ + "........" + Chr$(13)
  3418.     m$ = m$ + "........" + Chr$(13)
  3419.     m$ = m$ + "........" + Chr$(13)
  3420.     m$ = m$ + "........" + Chr$(13)
  3421.     m$ = m$ + "........" + Chr$(13)
  3422.     m$ = m$ + "........" + Chr$(13)
  3423.     arrTileText(251) = m$
  3424.  
  3425.     m$ = ""
  3426.     m$ = m$ + "........" + Chr$(13)
  3427.     m$ = m$ + "........" + Chr$(13)
  3428.     m$ = m$ + "........" + Chr$(13)
  3429.     m$ = m$ + "........" + Chr$(13)
  3430.     m$ = m$ + "........" + Chr$(13)
  3431.     m$ = m$ + "........" + Chr$(13)
  3432.     m$ = m$ + "........" + Chr$(13)
  3433.     m$ = m$ + "........" + Chr$(13)
  3434.     arrTileText(252) = m$
  3435.  
  3436.     m$ = ""
  3437.     m$ = m$ + "22222222" + Chr$(13)
  3438.     m$ = m$ + "2......2" + Chr$(13)
  3439.     m$ = m$ + "2......2" + Chr$(13)
  3440.     m$ = m$ + "2......2" + Chr$(13)
  3441.     m$ = m$ + "2......2" + Chr$(13)
  3442.     m$ = m$ + "2......2" + Chr$(13)
  3443.     m$ = m$ + "2......2" + Chr$(13)
  3444.     m$ = m$ + "22222222" + Chr$(13)
  3445.     arrTileText(253) = m$
  3446.  
  3447.     m$ = ""
  3448.     m$ = m$ + "22222222" + Chr$(13)
  3449.     m$ = m$ + "22222222" + Chr$(13)
  3450.     m$ = m$ + "22222222" + Chr$(13)
  3451.     m$ = m$ + "22222222" + Chr$(13)
  3452.     m$ = m$ + "22222222" + Chr$(13)
  3453.     m$ = m$ + "22222222" + Chr$(13)
  3454.     m$ = m$ + "22222222" + Chr$(13)
  3455.     m$ = m$ + "22222222" + Chr$(13)
  3456.     arrTileText(254) = m$
  3457.  
  3458.     m$ = ""
  3459.     m$ = ""
  3460.     m$ = m$ + "22....22" + Chr$(13)
  3461.     m$ = m$ + "2..22..2" + Chr$(13)
  3462.     m$ = m$ + "2..22..2" + Chr$(13)
  3463.     m$ = m$ + "22.....2" + Chr$(13)
  3464.     m$ = m$ + "22222..2" + Chr$(13)
  3465.     m$ = m$ + "2..22..2" + Chr$(13)
  3466.     m$ = m$ + "22....22" + Chr$(13)
  3467.     m$ = m$ + "22222222" + Chr$(13)
  3468.     arrTileText(255) = m$
  3469.  
  3470. End Sub ' GetTileText
  3471.  
  3472. ' ################################################################################################################################################################
  3473. ' END TILE DEFINITIONS
  3474. ' ################################################################################################################################################################
  3475.  
  3476. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3477. ' BEGIN COLOR FUNCTIONS
  3478. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3479. Function cWhite~& ()
  3480.     cWhite = _RGB32(255, 255, 255)
  3481. End Function ' cWhite~&
  3482.  
  3483. Function cEmpty~& ()
  3484.     cEmpty = _RGB32(0, 0, 0, 0)
  3485. End Function ' cEmpty~&
  3486.  
  3487. Function cBlack~& ()
  3488.     cBlack = _RGB32(0, 0, 0)
  3489. End Function ' cBlack~&
  3490.  
  3491. Function cRed~& ()
  3492.     cRed = _RGB32(255, 0, 0)
  3493.  
  3494. Function cYellow~& ()
  3495.     cYellow = _RGB32(255, 255, 0)
  3496. End Function ' cYellow~&
  3497.  
  3498. Function cLime~& ()
  3499.     cLime = _RGB32(0, 255, 0)
  3500. End Function ' cLime~&
  3501.  
  3502. Function cCyan~& ()
  3503.     cCyan = _RGB32(0, 255, 255)
  3504. End Function ' cCyan~&
  3505.  
  3506. Function cBlue~& ()
  3507.     cBlue = _RGB32(0, 0, 255)
  3508. End Function ' cBlue~&
  3509.  
  3510. Function cMagenta~& ()
  3511.     cMagenta = _RGB32(255, 0, 255)
  3512. End Function ' cMagenta~&
  3513.  
  3514. Function cOrange~& ()
  3515.     cOrange = _RGB32(255, 165, 0)
  3516. End Function ' cOrange~&
  3517.  
  3518. Function cGray~& ()
  3519.     cGray = _RGB32(128, 128, 128)
  3520. End Function ' cGray~&
  3521. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3522. ' END COLOR FUNCTIONS
  3523. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3524.  
  3525. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3526. ' BEGIN GENERAL PURPOSE ROUTINES #GEN
  3527. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3528. ' /////////////////////////////////////////////////////////////////////////////
  3529.  
  3530. Function cstr$ (myValue)
  3531.     'cstr$ = LTRIM$(RTRIM$(STR$(myValue)))
  3532.     cstr$ = _Trim$(Str$(myValue))
  3533. End Function ' cstr$
  3534.  
  3535. ' /////////////////////////////////////////////////////////////////////////////
  3536. ' FROM: String Manipulation
  3537. ' found at abandoned, outdated and now likely malicious qb64 dot net website
  3538. ' http://www.qb64.[net]/forum/index_topic_5964-0/
  3539. '
  3540. 'SUMMARY:
  3541. '   Purpose:  A library of custom functions that transform strings.
  3542. '   Author:   Dustinian Camburides (dustinian@gmail.com)
  3543. '   Platform: QB64 (www.qb64.org)
  3544. '   Revision: 1.6
  3545. '   Updated:  5/28/2012
  3546.  
  3547. 'SUMMARY:
  3548. '[Replace$] replaces all instances of the [Find] sub-string with the [Add] sub-string within the [Text] string.
  3549. 'INPUT:
  3550. 'Text: The input string; the text that's being manipulated.
  3551. 'Find: The specified sub-string; the string sought within the [Text] string.
  3552. 'Add: The sub-string that's being added to the [Text] string.
  3553.  
  3554. Function Replace$ (Text1 As String, Find1 As String, Add1 As String)
  3555.     ' VARIABLES:
  3556.     Dim Text2 As String
  3557.     Dim Find2 As String
  3558.     Dim Add2 As String
  3559.     Dim lngLocation As Long ' The address of the [Find] substring within the [Text] string.
  3560.     Dim strBefore As String ' The characters before the string to be replaced.
  3561.     Dim strAfter As String ' The characters after the string to be replaced.
  3562.  
  3563.     ' INITIALIZE:
  3564.     ' MAKE COPIESSO THE ORIGINAL IS NOT MODIFIED (LIKE ByVal IN VBA)
  3565.     Text2 = Text1
  3566.     Find2 = Find1
  3567.     Add2 = Add1
  3568.  
  3569.     lngLocation = InStr(1, Text2, Find2)
  3570.  
  3571.     ' PROCESSING:
  3572.     ' While [Find2] appears in [Text2]...
  3573.     While lngLocation
  3574.         ' Extract all Text2 before the [Find2] substring:
  3575.         strBefore = Left$(Text2, lngLocation - 1)
  3576.  
  3577.         ' Extract all text after the [Find2] substring:
  3578.         strAfter = Right$(Text2, ((Len(Text2) - (lngLocation + Len(Find2) - 1))))
  3579.  
  3580.         ' Return the substring:
  3581.         Text2 = strBefore + Add2 + strAfter
  3582.  
  3583.         ' Locate the next instance of [Find2]:
  3584.         lngLocation = InStr(1, Text2, Find2)
  3585.  
  3586.         ' Next instance of [Find2]...
  3587.     Wend
  3588.  
  3589.     ' OUTPUT:
  3590.     Replace$ = Text2
  3591. End Function ' Replace$
  3592.  
  3593. ' /////////////////////////////////////////////////////////////////////////////
  3594. ' Split and join strings
  3595. ' https://www.qb64.org/forum/index.php?topic=1073.0
  3596. '
  3597. ' FROM luke, QB64 Developer
  3598. ' Date: February 15, 2019, 04:11:07 AM »
  3599. '
  3600. ' Given a string of words separated by spaces (or any other character),
  3601. ' splits it into an array of the words. I've no doubt many people have
  3602. ' written a version of this over the years and no doubt there's a million
  3603. ' ways to do it, but I thought I'd put mine here so we have at least one
  3604. ' version. There's also a join function that does the opposite
  3605. ' array -> single string.
  3606. '
  3607. ' Code is hopefully reasonably self explanatory with comments and a little demo.
  3608. ' Note, this is akin to Python/JavaScript split/join, PHP explode/implode.
  3609.  
  3610. 'Split in$ into pieces, chopping at every occurrence of delimiter$. Multiple consecutive occurrences
  3611. 'of delimiter$ are treated as a single instance. The chopped pieces are stored in result$().
  3612. '
  3613. 'delimiter$ must be one character long.
  3614. 'result$() must have been REDIMmed previously.
  3615.  
  3616. ' Modified to handle multi-character delimiters
  3617.  
  3618. Sub split (in$, delimiter$, result$())
  3619.     Dim start As Integer
  3620.     Dim finish As Integer
  3621.     Dim iDelimLen As Integer
  3622.     ReDim result$(-1)
  3623.  
  3624.     iDelimLen = Len(delimiter$)
  3625.  
  3626.     start = 1
  3627.     Do
  3628.         'While Mid$(in$, start, 1) = delimiter$
  3629.         While Mid$(in$, start, iDelimLen) = delimiter$
  3630.             'start = start + 1
  3631.             start = start + iDelimLen
  3632.             If start > Len(in$) Then
  3633.                 Exit Sub
  3634.             End If
  3635.         Wend
  3636.         finish = InStr(start, in$, delimiter$)
  3637.         If finish = 0 Then
  3638.             finish = Len(in$) + 1
  3639.         End If
  3640.  
  3641.         ReDim _Preserve result$(0 To UBound(result$) + 1)
  3642.  
  3643.         result$(UBound(result$)) = Mid$(in$, start, finish - start)
  3644.         start = finish + 1
  3645.     Loop While start <= Len(in$)
  3646. End Sub ' split
  3647. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3648. ' END GENERAL PURPOSE ROUTINES #GEN
  3649. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3650.  
  3651. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3652. ' BEGIN HARDWARE IMAGES DEMO #2 (WORKS)
  3653. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3654.  
  3655. ' /////////////////////////////////////////////////////////////////////////////
  3656. ' Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
  3657. ' https://qb64forum.alephc.xyz/index.php?topic=4674.0
  3658.  
  3659. ' madscijr
  3660. ' « Reply #5 on: Yesterday at 09:46:53 pm »
  3661.  
  3662. ' Quote from: SMcNeill on Yesterday at 07:56:57 pm:
  3663. ' Hardware images basically get their speed by being a sort of "Write Only"
  3664. ' method for images. You can make them, you can put them on the screen,
  3665. ' but you can't edit them or read information back from them.
  3666. ' ...
  3667. ' 2) You don't have to specify where they show up as a destination with putimage.
  3668. ' ...
  3669. ' If you have any specific questions, feel free to ask them and I'll do my
  3670. ' best to answer for you, if I can.  ;)
  3671. '
  3672. ' Thanks for taking the time to explain all that. When I'm back at the PC,
  3673. ' I'll try out your example.
  3674. '
  3675. ' For now, just one question: if you can't read information from them or even
  3676. ' specify where on the destination they go, how are they even useful?
  3677. ' Maybe it will click when I run your example or read up on it, but I just
  3678. ' don't see what the use of an image would be if you can't control where on
  3679. ' the screen it is drawn? Or how it would help speed up drawing a map of
  3680. ' colored tiles to the screen.
  3681. '
  3682. ' Thanks again...
  3683.  
  3684. ' SMcNeill, QB64 Developer
  3685. ' « Reply #6 on: Today at 01:14:28 am »
  3686. '
  3687. ' Try this out and see if it doesn't help answer your questions:
  3688.  
  3689. Sub HardwareImageDemo2
  3690.     $Color:32
  3691.     Display = _NewImage(1024, 720, 32)
  3692.     Software = _NewImage(1024, 720, 32)
  3693.  
  3694.     Screen Display
  3695.     Print "First, let's create a normal sortware screen and fill it with 40x40 tiles of random colors."
  3696.     Print "Press <ANY KEY> to view this screen."
  3697.     Sleep
  3698.  
  3699.     _Dest Software
  3700.     For y = 0 To 720 Step 40
  3701.         For x = 0 To 1024 Step 40
  3702.             Line (x, y)-Step(40, 40), &HFF000000 + Rnd * &HFFFFFF, BF
  3703.         Next
  3704.     Next
  3705.  
  3706.     _Dest Display
  3707.     _PutImage , Software
  3708.     Print
  3709.     Print "As you can see, this is a simple software screen."
  3710.     Print "Now, I'm going to copy that software screen and make it a hardware screen."
  3711.     Print "Press <ANY KEY> for me to do so!"
  3712.     Sleep
  3713.  
  3714.     Hardware = _CopyImage(Software, 33)
  3715.     Cls
  3716.     Print "Now, I'm back to my blank screen, but I now have a hardware screen to work with."
  3717.     Print
  3718.     Print "To keep things simple, let's showcase the differences between using _putimage with a software screen, and then with the hardware screen."
  3719.     Print
  3720.     Print "First, the software screen!  Press <ANY KEY> to continue."
  3721.     Sleep
  3722.  
  3723.     _PutImage (0, 100)-Step(100, 100), Software, Display, (0, 0)-(40, 40)
  3724.     Print "As you can see, all I did here was copy a single tile from the software screen and then scale it to fit upon the current screen."
  3725.     Print
  3726.     Print "Press <ANY KEY> to continue, as I'll now do the same with a hardware image."
  3727.  
  3728.     _PutImage (200, 100)-Step(100, 100), Hardware, , (0, 0)-(40, 40)
  3729.     Print
  3730.     Print "As you can see from the above, we have the same tile copied and scaled onto the screen, just to the right of the software image."
  3731.     Print
  3732.     Print "Doesn't really seem to be very different at all, now does it?"
  3733.     Print
  3734.     Print "Press <ANY KEY> to continue."
  3735.     _Display
  3736.     Sleep
  3737.  
  3738.     Print
  3739.     Color Red
  3740.     Print "BUT WAIT A MOMENT!!  What the heck happened to our hardware tile??!!??"
  3741.     Color White
  3742.     Print
  3743.     Print "It's no longer on the screen, as it was previously.  Why??"
  3744.     Print
  3745.     Print "Because it was never on the software screen at all, but was instead on it's own hardware layer ABOVE the software screen."
  3746.     Print
  3747.     Print "Hardware images only display ONCE, once _DISPLAY is called, and then they flush from the graphics buffer."
  3748.     Print "Draw.  Display.  Flush.  <-- that's the basic process of how a hardware image works."
  3749.     Print
  3750.     Print "If we want one to remain on the screen, we have to do it either by:"
  3751.     Print "1) Not updating the screen after we draw and display the image, as I did above with the tile I displayed."
  3752.     Print "2) Refresh displaying the image in our main loop (which is what we do even with software images for most games and such)."
  3753.     Print
  3754.     Print "Press <ANY KEY> to continue."
  3755.     Sleep
  3756.  
  3757.     Cls
  3758.     Print
  3759.     Print "So, as you can see, hardware images have a few drawbacks to them, with the most obvious being they only display once,"
  3760.     Print "then flush from memory.  If you want persistant hardware images, they're best used in a loop."
  3761.     Print
  3762.     Print "But, if they've got drawbacks, then one has to ask, 'What's the advantages to using them?'"
  3763.     Print "Press <ANY KEY> to find out!"
  3764.     Sleep
  3765.  
  3766.     t# = Timer + 3
  3767.     Do
  3768.         count = count + 1
  3769.         _PutImage (0, 100)-Step(100, 100), Software, Display, (x, y)-Step(40, 40)
  3770.         x = x + 40
  3771.         If x > 1024 Then x = 0: y = y + 40
  3772.         If y > 720 Then x = 0: y = 0
  3773.         _Display
  3774.     Loop Until Timer > t#
  3775.  
  3776.     Print "See lots of flashing tiles on the screen for the last three seconds?"
  3777.     Print "That was us using _PUTIMAGE with the software screen, and we put"; count; "tiles on the screen in those 3 seconds."
  3778.     Print
  3779.     Print "Now press <ANY KEY> and we'll do the exact same thing with hardware images."
  3780.     Sleep
  3781.  
  3782.     count = 0: x = 0: y = 0
  3783.     t# = Timer + 3
  3784.     tempScreen = _CopyImage(Display, 33)
  3785.     Do
  3786.         count = count + 1
  3787.         _PutImage , tempScreen
  3788.         _PutImage (300, 100)-Step(100, 100), Hardware, , (x, y)-Step(40, 40)
  3789.         x = x + 40
  3790.         If x > 1024 Then x = 0: y = y + 40
  3791.         If y > 720 Then x = 0: y = 0
  3792.         _Display
  3793.     Loop Until Timer > t#
  3794.  
  3795.     _FreeImage tempScreen
  3796.     Print
  3797.     Print "Didn't seem very different at the rate of which we were running things, now did it?"
  3798.     Print "Would you be surprised to find out that we put"; count * 2; "hardware images on the screen in those same 3 seconds?"
  3799.     Print
  3800.     Print "And if you look close, I counted each loop twice, as we didn't just put the hardware image to the screen, but also a"
  3801.     Print "complete copy of the original software screen as well!"
  3802.     Print
  3803.     Print "The reason why I did this?"
  3804.     Print
  3805.     Print "So I could completely elimimate all software iamges and JUST work with the much faster hardware layer!"
  3806.     Print
  3807.     Print "Press <ANY KEY> to continue"
  3808.     Sleep
  3809.  
  3810.     Cls
  3811.     Print "So, as you can see, hardware images are multiple times faster to display and render than software images."
  3812.     Print
  3813.     Print "But here's something else for you to notice -- I'm going to update the screen with constant, limitless tile refeshes."
  3814.     Print "To start with, I'm going to do this in a LOOP with the software images."
  3815.     Print "CTRL-TAB out of this demo program, open your task manager, and see how much memory and CPU processing power the program uses."
  3816.     Print "Then TAB back to this program and hit <ESC> to do the same with the hardware images."
  3817.  
  3818.     Do
  3819.         _PutImage (0, 100)-(1024, 720), Software, Display, (x, y)-Step(40, 40)
  3820.         x = x + 40
  3821.         If x > 1024 Then x = 0: y = y + 40
  3822.         If y > 720 Then x = 0: y = 0
  3823.         _Limit 60
  3824.         _Display
  3825.     Loop Until _KeyDown(27)
  3826.  
  3827.     Cls , 0
  3828.     Print "PRESS <SPACE BAR> to stop the hardware iamges!!"
  3829.     tempImage = _CopyImage(Display, 33)
  3830.     x = 0: y = 0
  3831.     Do
  3832.         _PutImage , tempImage
  3833.         _PutImage (0, 100)-(1023, 719), Hardware, , (x, y)-Step(40, 40)
  3834.         x = x + 40
  3835.         If x > 1024 Then x = 0: y = y + 40
  3836.         If y > 720 Then x = 0: y = 0
  3837.         _Limit 60
  3838.         _Display
  3839.     Loop Until _KeyDown(32)
  3840.  
  3841.     Cls
  3842.     Print "On my laptop, these two methods use the following amounts of CPU power:"
  3843.     Print "Software, 60 FPS -- 3% CPU"
  3844.     Print "Hardware, 60 FPS -- 0.1% CPU"
  3845.     Print
  3846.     Print "If I go in and change the limits to something much higher, these are the results (test them for yourselves, please):"
  3847.     Print "Software, 600 FPS -- 10.3% CPU"
  3848.     Print "Hardware, 600 FPS -- 0.1% CPU"
  3849.     Print
  3850.     Print
  3851.     Print "So, as you can see, the disadvantage to hardware images are they display once, then flush from memory."
  3852.     Print
  3853.     Print "While the advantages to their usage is MUCH faster processing times, and an immense reduction on CPU usage.  (The GPU picks up the work for us!)"
  3854.     Print
  3855.     Print
  3856.     Print "You basically use them just like you would any other normal image, though you have to keep in mind that they render"
  3857.     Print "to their own hardware layer, which you can specify to go on below or above your software screen."
  3858.     Print
  3859.     Print "(Or, you can _DISPLAYORDER _HARDWARE and *only* display the hardware layer, removing software rendering completely!)"
  3860.     Print
  3861.     Print "And THAT, my friends, is basically the lowdown on hardware vs software images.  ;)"
  3862.     Print
  3863.     Print
  3864.     Print "And this was another Steve(tm) Tutorial!  Enjoy!!"
  3865. End Sub ' HardwareImageDemo2
  3866.  
  3867. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3868. ' END HARDWARE IMAGES DEMO #2 (WORKS)
  3869. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3870.  
« Last Edit: February 22, 2022, 05:04:36 pm by madscijr »

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #9 on: February 23, 2022, 05:50:37 am »
I made a few little subtle changes to your code -- see if this doesn't run a little bit differently for you:

Code: QB64: [Select]
  1. ' ################################################################################################################################################################
  2. ' #CONSTANTS = GLOBAL CONSTANTS
  3.  
  4. ' BOOLEAN VALUES
  5. Const FALSE = 0
  6. Const TRUE = Not FALSE
  7.  
  8. ' ################################################################################################################################################################
  9. ' #VARS = GLOBAL VARIABLES
  10.  
  11. Dim Shared m_ProgramPath$: m_ProgramPath$ = Left$(Command$(0), _InStrRev(Command$(0), "\"))
  12. Dim Shared m_ProgramName$: m_ProgramName$ = Mid$(Command$(0), _InStrRev(Command$(0), "\") + 1)
  13. Dim m_iScreen As Long
  14.  
  15. ' =============================================================================
  16. ' START THE MAIN ROUTINE
  17. MakeColoredTiles
  18. 'HardwareImageDemo2
  19.  
  20. ' =============================================================================
  21. ' FINISH
  22. 'Print m_ProgramName$ + " finished."
  23. 'Input "Press <ENTER> to continue", in$
  24.  
  25. ' ****************************************************************************************************************************************************************
  26. ' DEACTIVATE DEBUGGING WINDOW
  27. If m_bDebug = TRUE Then
  28. ' ****************************************************************************************************************************************************************
  29.  
  30. System ' return control to the operating system
  31.  
  32. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  33. ' BEGIN TILE ROUTINES
  34. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  35.  
  36. ' /////////////////////////////////////////////////////////////////////////////
  37.  
  38. Sub MakeColoredTiles
  39.     Dim sError As String: sError = ""
  40.     Dim imgTiles As Long
  41.     Dim imgTilesRed As Long
  42.     Dim imgTilesGreen As Long
  43.     Dim imgTilesBlue As Long
  44.     Dim imgTilesYellow As Long
  45.     Dim imgColorTiles As Long
  46.     Dim imgHardwareTiles As Long ' the hardware image copy of the tileset
  47.     Dim iTileNum As Integer
  48.     Dim iColor As Integer: iColor = 0
  49.     Dim iStartColor As Integer: iStartColor = 0
  50.     Dim iCols As Integer
  51.     Dim iRows As Integer
  52.     Dim iY As Integer
  53.     Dim iX As Integer
  54.     Dim fgColor As _Unsigned Long
  55.     Dim bgColor As _Unsigned Long
  56.     Dim iMinY As Integer
  57.     Dim iMaxY As Integer
  58.     Dim iMinX As Integer
  59.     Dim iMaxX As Integer
  60.     Dim iCount1 As Integer
  61.     Dim iCount2 As Integer
  62.     Dim iCount3 As Long
  63.     Dim t#
  64.  
  65.     ' ================================================================================================================================================================
  66.     ' INIT SCREEN
  67.     ' ================================================================================================================================================================
  68.     m_iScreen = _NewImage(1024, 768, 32)
  69.     _ScreenMove 0, 0
  70.     Screen m_iScreen
  71.     Cls , cGray
  72.     Color cWhite, cBlack: Locate 1, 1: Print "Press 1 to test DrawTile8 rooutine using 4 tilesets (1 per color) and regular _putimage...": Do: Loop Until InKey$ = "1"
  73.  
  74.     'for iY = 1 to 48
  75.     '    LOCATE iY, 1
  76.     '    print cstr$(iY);
  77.     'next iY
  78.  
  79.  
  80.     ' ================================================================================================================================================================
  81.     ' INITIALIZE NEUTRAL COLOR GRAPHICS TILES (BLACK ON TRANSPARENT)
  82.     ' ================================================================================================================================================================
  83.     If Len(sError) = 0 Then
  84.         '' LOAD TILES (16 cols x 16 rows of 8x8 tiles) FROM FILE
  85.         'sFile$ = m_ProgramPath$ + "Font_8x8_128x128_v3.png" ' 128x128 total, 16x16 of 8x8 tiles
  86.         'imgTiles = _LoadImage(sFile$, 32)
  87.  
  88.         ' LOAD TILES FROM TEXT DEFINITIONS IN Sub GetTileText
  89.         sError = GetTiles$(imgTiles, cBlack, cEmpty)
  90.     End If
  91.  
  92.     ' ================================================================================================================================================================
  93.     ' CREATE COLORED TILESET COPIES
  94.     ' ================================================================================================================================================================
  95.     If Len(sError) = 0 Then
  96.         MakeColoredTileset imgTiles, imgTilesRed, cRed, cBlack
  97.         MakeColoredTileset imgTiles, imgTilesGreen, cLime, cBlack
  98.         MakeColoredTileset imgTiles, imgTilesBlue, cBlue, cBlack
  99.         MakeColoredTileset imgTiles, imgTilesYellow, cYellow, cBlack
  100.  
  101.         ' Make one big tileset with all colors
  102.         imgColorTiles = _NewImage(512, 128, 32)
  103.         _PutImage (0, 0), imgTilesRed, imgColorTiles, (0, 0)-(128, 128)
  104.         _PutImage (128, 0), imgTilesGreen, imgColorTiles, (0, 0)-(128, 128)
  105.         _PutImage (256, 0), imgTilesBlue, imgColorTiles, (0, 0)-(128, 128)
  106.         _PutImage (384, 0), imgTilesYellow, imgColorTiles, (0, 0)-(128, 128)
  107.     End If
  108.  
  109.     '' WRITE TILESETS TO SCREEN
  110.     ''_PutImage (xDest%, yDest%), ColorSprite&, imgScreen&, (0, 0)-(7, 7) ' portion of source to the top-left corner of the destination page
  111.     '_PUTIMAGE (256,128), imgTiles, m_iScreen, (0,0)-(128, 128)
  112.     '_PUTIMAGE (264,264), imgTilesRed, m_iScreen, (0,0)-(128, 128)
  113.     '_PUTIMAGE (400,264), imgTilesGreen, m_iScreen, (0,0)-(128, 128)
  114.     '_PUTIMAGE (264,400), imgTilesBlue, m_iScreen, (0,0)-(128, 128)
  115.     '_PUTIMAGE (400,400), imgTilesYellow, m_iScreen, (0,0)-(128, 128)
  116.  
  117.     ' ================================================================================================================================================================
  118.     ' METHOD #1
  119.     ' WRITE TILES TO SCREEN
  120.     ' ================================================================================================================================================================
  121.     If Len(sError) = 0 Then
  122.         iCols = _Width(m_iScreen) \ 8
  123.         iRows = _Height(m_iScreen) \ 8
  124.         iMinX = 1: iMaxX = 16
  125.         iMinY = 3: iMaxY = 18
  126.         iCount1 = 0
  127.         t# = Timer + 3
  128.         Do
  129.             iCount1 = iCount1 + 1
  130.             iStartColor = iStartColor Xor 1
  131.             iColor = iStartColor
  132.             iY = iMinY
  133.             iX = iMinX
  134.             For iTileNum = 0 To 255
  135.                 Select Case iColor
  136.                     Case 0:
  137.                         DrawTile8 imgTilesRed, iTileNum, m_iScreen, iX, iY
  138.                     Case 1:
  139.                         DrawTile8 imgTilesGreen, iTileNum, m_iScreen, iX, iY
  140.                     Case 2:
  141.                         DrawTile8 imgTilesBlue, iTileNum, m_iScreen, iX, iY
  142.                     Case Else:
  143.                         DrawTile8 imgTilesYellow, iTileNum, m_iScreen, iX, iY
  144.                 End Select
  145.                 iColor = iColor + 1: If iColor > 3 Then iColor = 0
  146.                 iX = iX + 1: If iX > iMaxX Then iX = iMinX: iY = iY + 1: If iY > iMaxY Then Exit For
  147.             Next iTileNum
  148.             _Display
  149.         Loop Until Timer > t#
  150.     End If
  151.     Color cWhite, cBlack: Locate 11, 1: Print "Press 2 to test DrawColorTile routine using 1 tileset with DoColorSwap...";: Do: Loop Until InKey$ = "2"
  152.  
  153.     ' ================================================================================================================================================================
  154.     ' METHOD #2
  155.     ' WRITE COLOR TILES TO SCREEN
  156.     ' ================================================================================================================================================================
  157.     If Len(sError) = 0 Then
  158.         iMinX = 1: iMaxX = 16
  159.         iMinY = 23: iMaxY = 38
  160.         iCount2 = 0
  161.         t# = Timer + 3
  162.         Do
  163.             iCount2 = iCount2 + 1
  164.             iStartColor = iStartColor Xor 1
  165.             iColor = iStartColor
  166.             iY = iMinY
  167.             iX = iMinX
  168.             For iTileNum = 0 To 255
  169.                 Select Case iColor
  170.                     Case 0:
  171.                         fgColor = cRed: bgColor = cBlack
  172.                     Case 1:
  173.                         fgColor = cLime: bgColor = cBlack
  174.                     Case 2:
  175.                         fgColor = cBlue: bgColor = cBlack
  176.                     Case Else:
  177.                         fgColor = cYellow: bgColor = cBlack
  178.                 End Select
  179.                 DrawColorTile m_iScreen, imgTiles, iTileNum, fgColor, bgColor, iX, iY
  180.                 iColor = iColor + 1: If iColor > 3 Then iColor = 0
  181.                 iX = iX + 1: If iX > iMaxX Then iX = iMinX: iY = iY + 1: If iY > iMaxY Then Exit For
  182.             Next iTileNum
  183.             _Display
  184.         Loop Until Timer > t#
  185.     End If
  186.     Color cWhite, cBlack: Locate 21, 1: Print "Press 3 to test DrawTileHw8 rooutine using 1 big multi-tileset and hardware images...";: Do: Loop Until InKey$ = "3"
  187.  
  188.     ' ================================================================================================================================================================
  189.     ' METHOD #3
  190.     ' WRITE HARDWARE TILES TO SCREEN
  191.     ' ================================================================================================================================================================
  192.     If Len(sError) = 0 Then
  193.         imgHardwareTiles = _CopyImage(imgColorTiles, 33) ' Copy tilesheet for hardware image
  194.         iMinX = 1: iMaxX = 16
  195.         iMinY = 43: iMaxY = 58
  196.         iCount3 = 0
  197.         t# = Timer + 3
  198.         tempScreen = _CopyImage(0, 33)
  199.         Do
  200.             iCount3 = iCount3 + 1
  201.             iStartColor = iStartColor Xor 1
  202.             iColor = iStartColor
  203.             iY = iMinY
  204.             iX = iMinX
  205.             _PutImage , tempScreen
  206.             For iTileNum = 0 To 255
  207.                 DrawTileHw8 imgHardwareTiles, iTileNum, m_iScreen, iX, iY, iColor
  208.                 iColor = iColor + 1: If iColor > 3 Then iColor = 0
  209.                 iX = iX + 1: If iX > iMaxX Then iX = iMinX: iY = iY + 1: If iY > iMaxY Then Exit For
  210.             Next iTileNum
  211.             _Display
  212.         Loop Until Timer > t#
  213.         _AutoDisplay
  214.         _FreeImage tempScreen
  215.         'COLOR cWhite, cBlack: LOCATE 31,1 : PRINT "PRESS 4 TO SEE RESULTS..."; : Do : Loop Until InKey$="4"
  216.     End If
  217.  
  218.     ' ================================================================================================================================================================
  219.     ' SHOW RESULTS
  220.     ' ================================================================================================================================================================
  221.     Color cWhite, cBlack: Locate 33, 1
  222.     Print ""
  223.     Print "RESULTS:"
  224.     Print Using "DrawTile8     ###,###,###,###,###,### refreshes in 3 seconds."; iCount1
  225.     Print Using "DrawColorTile ###,###,###,###,###,### refreshes in 3 seconds."; iCount2
  226.     Print Using "DrawTileHw8   ###,###,###,###,###,### refreshes in 3 seconds."; iCount3
  227.     Print "PRESS ANY KEY TO CONTINUE"
  228.     Sleep
  229.  
  230.     ' ================================================================================================================================================================
  231.     ' CLEANUP AND EXIT
  232.     ' ================================================================================================================================================================
  233.     Screen 0 ' RETURN TO TEXT SCREEN
  234.     If m_iScreen < -1 Or m_iScreen > 0 Then _FreeImage m_iScreen ' FREE MEMORY
  235.     If imgTiles < -1 Or imgTiles > 0 Then _FreeImage imgTiles ' FREE MEMORY
  236.     If imgTilesRed < -1 Or imgTilesRed > 0 Then _FreeImage imgTilesRed ' FREE MEMORY
  237.     If imgTilesGreen < -1 Or imgTilesGreen > 0 Then _FreeImage imgTilesGreen ' FREE MEMORY
  238.     If imgTilesBlue < -1 Or imgTilesBlue > 0 Then _FreeImage imgTilesBlue ' FREE MEMORY
  239.     If imgTilesYellow < -1 Or imgTilesYellow > 0 Then _FreeImage imgTilesYellow ' FREE MEMORY
  240.     If imgColorTiles < -1 Or imgColorTiles > 0 Then _FreeImage imgColorTiles ' FREE MEMORY
  241.     If imgHardwareTiles < -1 Or imgHardwareTiles > 0 Then _FreeImage imgHardwareTiles ' FREE MEMORY
  242. End Sub ' MakeColoredTiles
  243.  
  244. ' /////////////////////////////////////////////////////////////////////////////
  245. ' Receives an image imgTiles of 8x8 tiles
  246. ' colored black on transparent background
  247. ' and returns a new image imgNew
  248. ' copied from the tiles in imgTiles,
  249. ' except colored to foreground color fgColor,
  250. ' and background color bgColor
  251.  
  252. ' Usage:
  253. ' MakeColoredTileset imgTiles, imgNew, fgColor, bgColor
  254.  
  255. Sub MakeColoredTileset (imgTiles As Long, imgNew As Long, fgColor As _Unsigned Long, bgColor As _Unsigned Long)
  256.     Dim iTileNum As Integer
  257.     Dim iY As Integer
  258.     Dim iX As Integer
  259.     If imgNew < -1 Or imgNew > 0 Then _FreeImage imgNew ' FREE MEMORY
  260.     imgNew = _NewImage(_Width(imgTiles), _Height(imgTiles), 32)
  261.     iTileNum = 0
  262.     For iY = 0 To (_Height(imgTiles) \ 8) - 1
  263.         For iX = 0 To (_Width(imgTiles) \ 8) - 1
  264.             DrawColorTile imgNew, imgTiles, iTileNum, fgColor, bgColor, iX, iY
  265.             iTileNum = iTileNum + 1
  266.             If iTileNum > 255 Then Exit For
  267.         Next iX
  268.         If iTileNum > 255 Then Exit For
  269.     Next iY
  270. End Sub ' MakeColoredTileset
  271.  
  272. ' /////////////////////////////////////////////////////////////////////////////
  273. ' Simple version which calculates coordinates on tile sheet and destination
  274. ' screen every time. For a faster version uses precalculated coordinates,
  275. ' see DrawColorTileFast. This version does not support offsetX, offsetY.
  276.  
  277. ' Receives:
  278. ' imgScreen& = handle to screen to draw tile on
  279. ' imgTiles& = handle to 16x16 tile sheet of 8x8 pixel tiles colored black (256 tiles)
  280. ' TileNum% = ordinal number of tile on tile sheet to draw (0-255)
  281. ' TileColor~& = foreground color to use for tile
  282. ' BackColor~& = background color to use for tile
  283. ' dx% = column # to draw tile at (where each column is 8 pixels wide)
  284. ' dy% = row # to draw tile at (where each row is 8 pixels high)
  285.  
  286. ' Usage:
  287. ' DrawColorTile imgScreen&, imgTiles&, TileNum%, TileColor~&, BackColor~&, dx%, dy%
  288.  
  289. Sub DrawColorTile (imgScreen&, imgTiles&, TileNum%, TileColor~&, BackColor~&, dx%, dy%)
  290.     Dim cols%
  291.     Dim rows%
  292.     Dim sc%
  293.     Dim sr%
  294.     Dim sx1%
  295.     Dim sy1%
  296.     Dim sx2%
  297.     Dim sy2%
  298.     Dim xDest%
  299.     Dim yDest%
  300.     Dim ColorSprite&
  301.     Dim UniversalSprite&
  302.  
  303.     ' # OF COLUMNS / ROWS ON SOURCE TILE SHEET
  304.     cols% = 16
  305.     rows% = 16
  306.  
  307.     ' GET THE COLUMN/ROW OF TILE # TileNum% ON THE SOURCE TILE SHEET
  308.     sc% = TileNum% Mod rows%
  309.     sr% = TileNum% \ rows%
  310.  
  311.     ' GET THE START X COORDINATE ON THE SOURCE TILE SHEET
  312.     sx1% = sc% * 8
  313.  
  314.     ' GET THE START Y COORDINATE ON THE SOURCE TILE SHEET
  315.     sy1% = sr% * 8
  316.  
  317.     ' GET THE END X COORDINATE ON THE SOURCE TILE SHEET
  318.     sx2% = sx1% + 7
  319.  
  320.     ' GET THE END y COORDINATE ON THE SOURCE TILE SHEET
  321.     sy2% = sy1% + 7
  322.  
  323.     ' GET THE DESTINATION X COORDINATE ON THE SCREEN
  324.     xDest% = dx% * 8
  325.  
  326.     ' GET THE DESTINATION Y COORDINATE ON THE SCREEN
  327.     yDest% = dy% * 8
  328.  
  329.     ' IS THERE A BACKGROUND COLOR?
  330.     If BackColor~& <> cEmpty Then
  331.         ColorSprite& = _NewImage(8, 8, 32)
  332.         _Dest ColorSprite&
  333.         Cls , BackColor~&
  334.  
  335.         ' COPY THE TEMPORARY TILE TO THE SCREEN imgScreen&
  336.         _Source ColorSprite&
  337.         _Dest imgScreen&
  338.         _PutImage (xDest%, yDest%), ColorSprite&, imgScreen&, (0, 0)-(7, 7) ' portion of source to the top-left corner of the destination page
  339.     End If
  340.  
  341.     ' CREATE A TEMPORARY TILE TO COLOR
  342.     UniversalSprite& = _NewImage(8, 8, 32)
  343.  
  344.     ' COPY THE TILE TO THE TEMPORARY ONE
  345.     _Source imgTiles&
  346.     _Dest UniversalSprite&
  347.     _PutImage (0, 0), imgTiles&, UniversalSprite&, (sx1%, sy1%)-(sx2%, sy2%)
  348.  
  349.     ' COLOR IN THE TEMPORARY TILE
  350.     ' REPLACING BLACK (THE SOURCE COLOR) WITH THE TILE COLOR
  351.     If ColorSprite& < -1 Or ColorSprite& > 0 Then _FreeImage ColorSprite&
  352.     DoColorSwap UniversalSprite&, cBlack, TileColor~&, ColorSprite&
  353.  
  354.     ' COPY THE TEMPORARY TILE TO THE SCREEN imgScreen&
  355.     _Source ColorSprite&
  356.     _Dest imgScreen&
  357.     _PutImage (xDest%, yDest%), ColorSprite&, imgScreen&, (0, 0)-(7, 7) ' portion of source to the top-left corner of the destination page
  358.  
  359.     ' ADDED PER FellipeHeitor
  360.     If ColorSprite& < -1 Or ColorSprite& > 0 Then _FreeImage ColorSprite&
  361.     If UniversalSprite& < -1 Or UniversalSprite& > 0 Then _FreeImage UniversalSprite&
  362. End Sub ' DrawColorTile
  363.  
  364. ' /////////////////////////////////////////////////////////////////////////////
  365. ' Latest version with NOVARSEG's changes.
  366.  
  367. ' Based on code from:
  368.  
  369. ' Image color swap?
  370. ' https://www.qb64.org/forum/index.php?topic=2312.0
  371.  
  372. ' Like Function swapcolor& except returns new image in a parameter
  373. ' in case being a function causes a memory leak?
  374.  
  375. Sub DoColorSwap (imgOriginal&, oldcolor~&, newcolor~&, imgNew&)
  376.     Dim m As _MEM
  377.     Dim a As _Offset
  378.     a = 0
  379.     imgNew& = _CopyImage(imgOriginal&, 32)
  380.     m = _MemImage(imgNew&)
  381.     Do Until a = m.SIZE - 4
  382.         a = a + 4
  383.         c = _MemGet(m, m.OFFSET + a, _Unsigned Long)
  384.         If c = oldcolor~& Then
  385.             _MemPut m, m.OFFSET + a, newcolor~&
  386.         End If
  387.     Loop
  388.     _MemFree m
  389. End Sub ' DoColorSwap&
  390.  
  391. ' /////////////////////////////////////////////////////////////////////////////
  392. ' Draws an 8x8 tile at the specified column/row dx%, dy%
  393.  
  394. ' Original version which calculates coordinates on tile sheet and destination
  395. ' screen every time. For a faster version uses precalculated coordinates,
  396. ' see DrawTileFast.
  397.  
  398. ' tw% = tile width/height (in pixels)
  399.  
  400. ' DIV and MOD:
  401. ' c% = a% \ b% ' DIV (INTEGER DIVISION)
  402. ' d% = a% MOD b% ' MODULO (DIVISION REMAINDER)
  403.  
  404. '_PUTIMAGE (0, 0), i ' places image at upper left corner of window w/o stretching it
  405. '_PUTIMAGE (dx1, dy1), sourceHandle&, destHandle&, (sx1, sy1)-(sx2, sy2) ' portion of source to the top-left corner of the destination page
  406. '_PUTIMAGE (64,  128), imgTiles&,      imgScreen&,   (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  407. '_PutImage (64, 128), imgTiles&, imgScreen&, (128, 128)-(164, 164) ' portion of source to the top-left corner of the destination page
  408.  
  409. Sub DrawTile8 (imgTiles&, TileNum%, imgScreen&, dx%, dy%)
  410.     Dim tw% ' width/height of tile
  411.     Dim tw_minus1% ' width/height of tile -1
  412.     Dim cols% ' # tiles across on tile sheet
  413.     Dim rows% ' # tile rows on tile sheet
  414.     Dim sc% ' source column on tile sheet
  415.     Dim sr% ' source row on tile sheet
  416.     Dim sx1% ' source start x
  417.     Dim sx2% ' source end x
  418.     Dim sy1% ' source start y
  419.     Dim sy2% ' source end y
  420.     Dim xDest% ' destination x
  421.     Dim yDest% ' destination y
  422.  
  423.     ' SIZE OF TILE
  424.     tw% = 8
  425.     tw_minus1% = 7
  426.  
  427.     ' # OF COLUMNS / ROWS ON SOURCE TILE SHEET
  428.     cols% = 16
  429.     rows% = 16
  430.  
  431.     ' GET THE COLUMN/ROW OF TILE # TileNum% ON THE SOURCE TILE SHEET
  432.     sc% = TileNum% Mod rows%
  433.     sr% = TileNum% \ rows%
  434.  
  435.     'Print "Tile#" + cstr$(TileNum%) + " at sc%=" + cstr$(sc%) + ",sr%=" + cstr$(sr%)
  436.  
  437.     ' GET THE START X COORDINATE ON THE SOURCE TILE SHEET
  438.     sx1% = sc% * tw%
  439.  
  440.     ' GET THE START Y COORDINATE ON THE SOURCE TILE SHEET
  441.     sy1% = sr% * tw%
  442.  
  443.     ' GET THE END X COORDINATE ON THE SOURCE TILE SHEET
  444.     sx2% = sx1% + tw_minus1%
  445.  
  446.     ' GET THE END y COORDINATE ON THE SOURCE TILE SHEET
  447.     sy2% = sy1% + tw_minus1%
  448.  
  449.     ' GET THE DESTINATION X COORDINATE ON THE SCREEN
  450.     xDest% = dx% * tw%
  451.  
  452.     ' GET THE DESTINATION Y COORDINATE ON THE SCREEN
  453.     yDest% = (dy% * tw%) '+ yOffset%
  454.  
  455.     'Print "Tile#" + cstr$(TileNum%) + _
  456.     '    " at r" + cstr$(sr%) + "c" + cstr$(sc%) + _
  457.     '    " pixel location r" + cstr$(sy1%) + "c" + cstr$(sx1%) + _
  458.     '    " through r" + cstr$(sy2%) + "c" + cstr$(sx2%)
  459.  
  460.     _Dest imgScreen&
  461.  
  462.     ' portion of source to the top-left corner of the destination page
  463.     _PutImage (xDest%, yDest%), imgTiles&, imgScreen&, (sx1%, sy1%)-(sx2%, sy2%)
  464.  
  465. End Sub ' DrawTile8
  466.  
  467. ' /////////////////////////////////////////////////////////////////////////////
  468. ' Draws an 8x8 tile at the specified column/row dx%, dy%
  469. ' using hardware images
  470.  
  471. ' Usage:
  472. ' Dim imgHardwareTiles As Long ' the hardware image copy of the tileset
  473. ' imgHardwareTiles = _CopyImage(imgTiles, 33) ' Copy tilesheet for hardware image
  474. ' DrawTileHw8 imgHardwareTiles, iTileNum, imgScreen, iColumn, iRow, iSubTileset
  475.  
  476. Sub DrawTileHw8 (imgTiles&, TileNum%, imgScreen&, dx%, dy%, iSubTileset%)
  477.     Dim tw% ' width/height of tile
  478.     Dim tw_minus1% ' width/height of tile -1
  479.     Dim cols% ' # tiles across on tile sheet
  480.     Dim rows% ' # tile rows on tile sheet
  481.     Dim sc% ' source column on tile sheet
  482.     Dim sr% ' source row on tile sheet
  483.     Dim sx1% ' source start x
  484.     Dim sx2% ' source end x
  485.     Dim sy1% ' source start y
  486.     Dim sy2% ' source end y
  487.     Dim xDest% ' destination x
  488.     Dim yDest% ' destination y
  489.     Dim xOffset%
  490.  
  491.     ' CALCULATE OFFSET
  492.     xOffset% = 128 * iSubTileset%
  493.  
  494.     ' SIZE OF TILE
  495.     tw% = 8
  496.     tw_minus1% = 7
  497.  
  498.     ' # OF COLUMNS / ROWS ON SOURCE TILE SHEET
  499.     cols% = 16
  500.     rows% = 16
  501.  
  502.     ' GET THE COLUMN/ROW OF TILE # TileNum% ON THE SOURCE TILE SHEET
  503.     sc% = TileNum% Mod rows%
  504.     sr% = TileNum% \ rows%
  505.  
  506.     'Print "Tile#" + cstr$(TileNum%) + " at sc%=" + cstr$(sc%) + ",sr%=" + cstr$(sr%)
  507.  
  508.     ' GET THE START X COORDINATE ON THE SOURCE TILE SHEET
  509.     sx1% = (sc% * tw%) + xOffset%
  510.  
  511.     ' GET THE START Y COORDINATE ON THE SOURCE TILE SHEET
  512.     sy1% = sr% * tw%
  513.  
  514.     ' GET THE END X COORDINATE ON THE SOURCE TILE SHEET
  515.     sx2% = sx1% + tw_minus1%
  516.  
  517.     ' GET THE END y COORDINATE ON THE SOURCE TILE SHEET
  518.     sy2% = sy1% + tw_minus1%
  519.  
  520.     ' GET THE DESTINATION X COORDINATE ON THE SCREEN
  521.     xDest% = dx% * tw%
  522.  
  523.     ' GET THE DESTINATION Y COORDINATE ON THE SCREEN
  524.     yDest% = (dy% * tw%) '+ yOffset%
  525.  
  526.     'Print "Tile#" + cstr$(TileNum%) + _
  527.     '    " at r" + cstr$(sr%) + "c" + cstr$(sc%) + _
  528.     '    " pixel location r" + cstr$(sy1%) + "c" + cstr$(sx1%) + _
  529.     '    " through r" + cstr$(sy2%) + "c" + cstr$(sx2%)
  530.  
  531.     _Dest imgScreen&
  532.  
  533.     ' portion of source to the top-left corner of the destination page
  534.     '_PutImage (xDest%, yDest%), imgTiles&, imgScreen&, (sx1%, sy1%)-(sx2%, sy2%)
  535.     '_PutImage (200, 100)-Step(100, 100), imgHardware&, , (0, 0)-(40, 40)
  536.     _PutImage (xDest%, yDest%), imgTiles&, , (sx1%, sy1%)-(sx2%, sy2%)
  537.  
  538. End Sub ' DrawTileHw8
  539.  
  540. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  541. ' END TILE ROUTINES
  542. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  543.  
  544. ' ################################################################################################################################################################
  545. ' BEGIN TILE DEFINITIONS
  546. ' ################################################################################################################################################################
  547.  
  548. ' /////////////////////////////////////////////////////////////////////////////
  549. ' Loads tileset of 256 8x8 tiles into a 128x128 image (16 columns x 16 rows)
  550. ' where tiles are a single color.
  551.  
  552. ' Parameters:
  553. ' imgTiles& = contains the resulting tileset image
  554. ' fgColor = tile color
  555. ' bgColor = tile background color
  556.  
  557. Function GetTiles$ (imgTiles&, fgColor As _Unsigned Long, bgColor As _Unsigned Long)
  558.     Dim RoutineName As String: RoutineName = "GetTiles$"
  559.     Dim sResult As String: sResult = ""
  560.     ReDim arrTileText(0 To 255) As String
  561.  
  562.     Dim iTileNum As Integer
  563.  
  564.     ReDim arrLines(-1) As String
  565.     Dim iFromX As Integer
  566.     Dim iFromY As Integer
  567.     Dim sLine As String
  568.     Dim sChar As String
  569.  
  570.     Dim iTileX As Integer
  571.     Dim iTileY As Integer
  572.     Dim iToX As Integer
  573.     Dim iToY As Integer
  574.     Dim pixelColor As _Unsigned Long
  575.     Dim bFinished As Integer
  576.  
  577.     ' Do not try to free image handles currently being used as the active SCREEN. Change screen modes first.
  578.     ' _DISPLAY turns off the auto refresh screen default _AUTODISPLAY behavior. Prevents screen flickering.
  579.     If imgTiles& < -1 Or imgTiles& > 0 Then _FreeImage imgTiles&
  580.     imgTiles& = _NewImage(128, 128, 32)
  581.     '    Cls , cEmpty ' set the background color as transparent
  582.  
  583.     'Screen imgTiles&
  584.     'Cls , bgColor ' set the background color as transparent
  585.     _Dest imgTiles&
  586.     'DrawRect 0, 0, 128, 128, cEmpty
  587.     'DrawBox 0, 0, 128, cWhite
  588.     Cls , cEmpty ' set the background color as transparent
  589.  
  590.     GetTileText arrTileText()
  591.     iTileX = 0
  592.     iTileY = 0
  593.     bFinished = FALSE
  594.     For iTileNum = 0 To 255
  595.         split arrTileText(iTileNum), Chr$(13), arrLines()
  596.         iToY = iTileY * 8
  597.         If (iToY > _Height(imgTiles&)) Then
  598.             sResult = "iToY value " + cstr$(iToY) + " " + _
  599.                 "exceeded image height " + cstr$(_Height(imgTiles&)) + ". " + _
  600.                 "Exiting " + RoutineName + " at iTileNum=" + cstr$(iTileNum) + "."
  601.             bFinished = TRUE
  602.             Exit For
  603.         End If
  604.  
  605.         For iFromY = LBound(arrLines) To UBound(arrLines)
  606.             sLine = arrLines(iFromY)
  607.             If Len(sLine) > 0 Then
  608.                 iToX = iTileX * 8
  609.                 For iFromX = 1 To Len(sLine)
  610.                     sChar = Mid$(sLine, iFromX, 1)
  611.                     If sChar = "." Then
  612.                         pixelColor = bgColor ' cEmpty ' POINT(iFromX, iFromY)
  613.                     Else
  614.                         pixelColor = fgColor ' cBlack
  615.                     End If
  616.                     PSet (iToX, iToY), pixelColor
  617.                     iToX = iToX + 1
  618.                     If (iToX > _Width(imgTiles&)) Then
  619.                         sResult = "iToX value " + cstr$(iToX) + " " + _
  620.                             "exceeded image width " + cstr$(_Width(imgTiles&)) + ". " + _
  621.                             "Exiting " + RoutineName + " at iTileNum=" + cstr$(iTileNum) + "."
  622.                         bFinished = TRUE
  623.                         Exit For
  624.                     End If
  625.                 Next iFromX
  626.                 iToY = iToY + 1
  627.                 If bFinished = TRUE Then Exit For
  628.             End If
  629.         Next iFromY
  630.         If bFinished = TRUE Then Exit For
  631.  
  632.         iTileX = iTileX + 1
  633.         If iTileX > 15 Then
  634.             iTileX = 0
  635.             iTileY = iTileY + 1
  636.             'if iTileY > 15 then
  637.             '    sResult = "Exceeded max 16 rows of tiles." + _
  638.             '        "Exiting " + RoutineName + " at iTileNum=" + cstr$(iTileNum) + "."
  639.             '    bFinished = TRUE
  640.             '    exit for
  641.             'end if
  642.         End If
  643.     Next iTileNum
  644.  
  645.     GetTiles$ = sResult
  646. End Function ' GetTiles$
  647.  
  648. ' /////////////////////////////////////////////////////////////////////////////
  649. ' Returns an array of 256 8x8 tiles defined in text
  650. ' where each tile is defined by "." as blank and anything else is a pixel
  651. ' and each row is delimited by chr$(13)
  652.  
  653. Sub GetTileText (arrTileText() As String)
  654.     ReDim arrTileText(0 To 255) As String
  655.  
  656.     m$ = ""
  657.     m$ = m$ + "22....22" + Chr$(13)
  658.     m$ = m$ + "2..22..2" + Chr$(13)
  659.     m$ = m$ + "2..2...2" + Chr$(13)
  660.     m$ = m$ + "2...2..2" + Chr$(13)
  661.     m$ = m$ + "2..22..2" + Chr$(13)
  662.     m$ = m$ + "2..22..2" + Chr$(13)
  663.     m$ = m$ + "22....22" + Chr$(13)
  664.     m$ = m$ + "22222222" + Chr$(13)
  665.     arrTileText(0) = m$
  666.  
  667.     m$ = ""
  668.     m$ = m$ + "........" + Chr$(13)
  669.     m$ = m$ + "........" + Chr$(13)
  670.     m$ = m$ + "........" + Chr$(13)
  671.     m$ = m$ + "........" + Chr$(13)
  672.     m$ = m$ + "........" + Chr$(13)
  673.     m$ = m$ + "........" + Chr$(13)
  674.     m$ = m$ + "........" + Chr$(13)
  675.     m$ = m$ + "........" + Chr$(13)
  676.     arrTileText(1) = m$
  677.  
  678.     m$ = ""
  679.     m$ = m$ + "........" + Chr$(13)
  680.     m$ = m$ + "........" + Chr$(13)
  681.     m$ = m$ + "........" + Chr$(13)
  682.     m$ = m$ + "........" + Chr$(13)
  683.     m$ = m$ + "........" + Chr$(13)
  684.     m$ = m$ + "........" + Chr$(13)
  685.     m$ = m$ + "........" + Chr$(13)
  686.     m$ = m$ + "........" + Chr$(13)
  687.     arrTileText(2) = m$
  688.  
  689.     m$ = ""
  690.     m$ = m$ + "........" + Chr$(13)
  691.     m$ = m$ + "........" + Chr$(13)
  692.     m$ = m$ + "........" + Chr$(13)
  693.     m$ = m$ + "........" + Chr$(13)
  694.     m$ = m$ + "........" + Chr$(13)
  695.     m$ = m$ + "........" + Chr$(13)
  696.     m$ = m$ + "........" + Chr$(13)
  697.     m$ = m$ + "........" + Chr$(13)
  698.     arrTileText(3) = m$
  699.  
  700.     m$ = ""
  701.     m$ = m$ + "........" + Chr$(13)
  702.     m$ = m$ + "........" + Chr$(13)
  703.     m$ = m$ + "........" + Chr$(13)
  704.     m$ = m$ + "........" + Chr$(13)
  705.     m$ = m$ + "........" + Chr$(13)
  706.     m$ = m$ + "........" + Chr$(13)
  707.     m$ = m$ + "........" + Chr$(13)
  708.     m$ = m$ + "........" + Chr$(13)
  709.     arrTileText(4) = m$
  710.  
  711.     m$ = ""
  712.     m$ = m$ + "........" + Chr$(13)
  713.     m$ = m$ + "........" + Chr$(13)
  714.     m$ = m$ + "........" + Chr$(13)
  715.     m$ = m$ + "........" + Chr$(13)
  716.     m$ = m$ + "........" + Chr$(13)
  717.     m$ = m$ + "........" + Chr$(13)
  718.     m$ = m$ + "........" + Chr$(13)
  719.     m$ = m$ + "........" + Chr$(13)
  720.     arrTileText(5) = m$
  721.  
  722.     m$ = ""
  723.     m$ = m$ + "........" + Chr$(13)
  724.     m$ = m$ + "........" + Chr$(13)
  725.     m$ = m$ + "........" + Chr$(13)
  726.     m$ = m$ + "........" + Chr$(13)
  727.     m$ = m$ + "........" + Chr$(13)
  728.     m$ = m$ + "........" + Chr$(13)
  729.     m$ = m$ + "........" + Chr$(13)
  730.     m$ = m$ + "........" + Chr$(13)
  731.     arrTileText(6) = m$
  732.  
  733.     m$ = ""
  734.     m$ = m$ + "........" + Chr$(13)
  735.     m$ = m$ + "........" + Chr$(13)
  736.     m$ = m$ + "........" + Chr$(13)
  737.     m$ = m$ + "........" + Chr$(13)
  738.     m$ = m$ + "........" + Chr$(13)
  739.     m$ = m$ + "........" + Chr$(13)
  740.     m$ = m$ + "........" + Chr$(13)
  741.     m$ = m$ + "........" + Chr$(13)
  742.     arrTileText(7) = m$
  743.  
  744.     m$ = ""
  745.     m$ = m$ + "........" + Chr$(13)
  746.     m$ = m$ + "........" + Chr$(13)
  747.     m$ = m$ + "........" + Chr$(13)
  748.     m$ = m$ + "........" + Chr$(13)
  749.     m$ = m$ + "........" + Chr$(13)
  750.     m$ = m$ + "........" + Chr$(13)
  751.     m$ = m$ + "........" + Chr$(13)
  752.     m$ = m$ + "........" + Chr$(13)
  753.     arrTileText(8) = m$
  754.  
  755.     m$ = ""
  756.     m$ = m$ + "........" + Chr$(13)
  757.     m$ = m$ + "........" + Chr$(13)
  758.     m$ = m$ + "........" + Chr$(13)
  759.     m$ = m$ + "........" + Chr$(13)
  760.     m$ = m$ + "........" + Chr$(13)
  761.     m$ = m$ + "........" + Chr$(13)
  762.     m$ = m$ + "........" + Chr$(13)
  763.     m$ = m$ + "........" + Chr$(13)
  764.     arrTileText(9) = m$
  765.  
  766.     m$ = ""
  767.     m$ = m$ + "........" + Chr$(13)
  768.     m$ = m$ + "........" + Chr$(13)
  769.     m$ = m$ + "........" + Chr$(13)
  770.     m$ = m$ + "........" + Chr$(13)
  771.     m$ = m$ + "........" + Chr$(13)
  772.     m$ = m$ + "........" + Chr$(13)
  773.     m$ = m$ + "........" + Chr$(13)
  774.     m$ = m$ + "........" + Chr$(13)
  775.     arrTileText(10) = m$
  776.  
  777.     m$ = ""
  778.     m$ = m$ + "........" + Chr$(13)
  779.     m$ = m$ + "........" + Chr$(13)
  780.     m$ = m$ + "........" + Chr$(13)
  781.     m$ = m$ + "........" + Chr$(13)
  782.     m$ = m$ + "........" + Chr$(13)
  783.     m$ = m$ + "........" + Chr$(13)
  784.     m$ = m$ + "........" + Chr$(13)
  785.     m$ = m$ + "........" + Chr$(13)
  786.     arrTileText(11) = m$
  787.  
  788.     m$ = ""
  789.     m$ = m$ + "........" + Chr$(13)
  790.     m$ = m$ + "........" + Chr$(13)
  791.     m$ = m$ + "........" + Chr$(13)
  792.     m$ = m$ + "........" + Chr$(13)
  793.     m$ = m$ + "........" + Chr$(13)
  794.     m$ = m$ + "........" + Chr$(13)
  795.     m$ = m$ + "........" + Chr$(13)
  796.     m$ = m$ + "........" + Chr$(13)
  797.     arrTileText(12) = m$
  798.  
  799.     m$ = ""
  800.     m$ = m$ + "........" + Chr$(13)
  801.     m$ = m$ + "........" + Chr$(13)
  802.     m$ = m$ + "........" + Chr$(13)
  803.     m$ = m$ + "........" + Chr$(13)
  804.     m$ = m$ + "........" + Chr$(13)
  805.     m$ = m$ + "........" + Chr$(13)
  806.     m$ = m$ + "........" + Chr$(13)
  807.     m$ = m$ + "........" + Chr$(13)
  808.     arrTileText(13) = m$
  809.  
  810.     m$ = ""
  811.     m$ = m$ + "........" + Chr$(13)
  812.     m$ = m$ + "........" + Chr$(13)
  813.     m$ = m$ + "........" + Chr$(13)
  814.     m$ = m$ + "........" + Chr$(13)
  815.     m$ = m$ + "........" + Chr$(13)
  816.     m$ = m$ + "........" + Chr$(13)
  817.     m$ = m$ + "........" + Chr$(13)
  818.     m$ = m$ + "........" + Chr$(13)
  819.     arrTileText(14) = m$
  820.  
  821.     m$ = ""
  822.     m$ = m$ + "........" + Chr$(13)
  823.     m$ = m$ + "........" + Chr$(13)
  824.     m$ = m$ + "........" + Chr$(13)
  825.     m$ = m$ + "........" + Chr$(13)
  826.     m$ = m$ + "........" + Chr$(13)
  827.     m$ = m$ + "........" + Chr$(13)
  828.     m$ = m$ + "........" + Chr$(13)
  829.     m$ = m$ + "........" + Chr$(13)
  830.     arrTileText(15) = m$
  831.  
  832.     m$ = ""
  833.     m$ = m$ + "........" + Chr$(13)
  834.     m$ = m$ + "........" + Chr$(13)
  835.     m$ = m$ + "........" + Chr$(13)
  836.     m$ = m$ + "........" + Chr$(13)
  837.     m$ = m$ + "........" + Chr$(13)
  838.     m$ = m$ + "........" + Chr$(13)
  839.     m$ = m$ + "........" + Chr$(13)
  840.     m$ = m$ + "........" + Chr$(13)
  841.     arrTileText(16) = m$
  842.  
  843.     m$ = ""
  844.     m$ = m$ + "........" + Chr$(13)
  845.     m$ = m$ + "........" + Chr$(13)
  846.     m$ = m$ + "........" + Chr$(13)
  847.     m$ = m$ + "........" + Chr$(13)
  848.     m$ = m$ + "........" + Chr$(13)
  849.     m$ = m$ + "........" + Chr$(13)
  850.     m$ = m$ + "........" + Chr$(13)
  851.     m$ = m$ + "........" + Chr$(13)
  852.     arrTileText(17) = m$
  853.  
  854.     m$ = ""
  855.     m$ = m$ + "........" + Chr$(13)
  856.     m$ = m$ + "........" + Chr$(13)
  857.     m$ = m$ + "........" + Chr$(13)
  858.     m$ = m$ + "........" + Chr$(13)
  859.     m$ = m$ + "........" + Chr$(13)
  860.     m$ = m$ + "........" + Chr$(13)
  861.     m$ = m$ + "........" + Chr$(13)
  862.     m$ = m$ + "........" + Chr$(13)
  863.     arrTileText(18) = m$
  864.  
  865.     m$ = ""
  866.     m$ = m$ + "........" + Chr$(13)
  867.     m$ = m$ + "........" + Chr$(13)
  868.     m$ = m$ + "........" + Chr$(13)
  869.     m$ = m$ + "........" + Chr$(13)
  870.     m$ = m$ + "........" + Chr$(13)
  871.     m$ = m$ + "........" + Chr$(13)
  872.     m$ = m$ + "........" + Chr$(13)
  873.     m$ = m$ + "........" + Chr$(13)
  874.     arrTileText(19) = m$
  875.  
  876.     m$ = ""
  877.     m$ = m$ + "........" + Chr$(13)
  878.     m$ = m$ + "........" + Chr$(13)
  879.     m$ = m$ + "........" + Chr$(13)
  880.     m$ = m$ + "........" + Chr$(13)
  881.     m$ = m$ + "........" + Chr$(13)
  882.     m$ = m$ + "........" + Chr$(13)
  883.     m$ = m$ + "........" + Chr$(13)
  884.     m$ = m$ + "........" + Chr$(13)
  885.     arrTileText(20) = m$
  886.  
  887.     m$ = ""
  888.     m$ = m$ + "........" + Chr$(13)
  889.     m$ = m$ + "........" + Chr$(13)
  890.     m$ = m$ + "........" + Chr$(13)
  891.     m$ = m$ + "........" + Chr$(13)
  892.     m$ = m$ + "........" + Chr$(13)
  893.     m$ = m$ + "........" + Chr$(13)
  894.     m$ = m$ + "........" + Chr$(13)
  895.     m$ = m$ + "........" + Chr$(13)
  896.     arrTileText(21) = m$
  897.  
  898.     m$ = ""
  899.     m$ = m$ + "........" + Chr$(13)
  900.     m$ = m$ + "........" + Chr$(13)
  901.     m$ = m$ + "........" + Chr$(13)
  902.     m$ = m$ + "........" + Chr$(13)
  903.     m$ = m$ + "........" + Chr$(13)
  904.     m$ = m$ + "........" + Chr$(13)
  905.     m$ = m$ + "........" + Chr$(13)
  906.     m$ = m$ + "........" + Chr$(13)
  907.     arrTileText(22) = m$
  908.  
  909.     m$ = ""
  910.     m$ = m$ + "........" + Chr$(13)
  911.     m$ = m$ + "........" + Chr$(13)
  912.     m$ = m$ + "........" + Chr$(13)
  913.     m$ = m$ + "........" + Chr$(13)
  914.     m$ = m$ + "........" + Chr$(13)
  915.     m$ = m$ + "........" + Chr$(13)
  916.     m$ = m$ + "........" + Chr$(13)
  917.     m$ = m$ + "........" + Chr$(13)
  918.     arrTileText(23) = m$
  919.  
  920.     m$ = ""
  921.     m$ = m$ + "........" + Chr$(13)
  922.     m$ = m$ + "........" + Chr$(13)
  923.     m$ = m$ + "........" + Chr$(13)
  924.     m$ = m$ + "........" + Chr$(13)
  925.     m$ = m$ + "........" + Chr$(13)
  926.     m$ = m$ + "........" + Chr$(13)
  927.     m$ = m$ + "........" + Chr$(13)
  928.     m$ = m$ + "........" + Chr$(13)
  929.     arrTileText(24) = m$
  930.  
  931.     m$ = ""
  932.     m$ = m$ + "........" + Chr$(13)
  933.     m$ = m$ + "........" + Chr$(13)
  934.     m$ = m$ + "........" + Chr$(13)
  935.     m$ = m$ + "........" + Chr$(13)
  936.     m$ = m$ + "........" + Chr$(13)
  937.     m$ = m$ + "........" + Chr$(13)
  938.     m$ = m$ + "........" + Chr$(13)
  939.     m$ = m$ + "........" + Chr$(13)
  940.     arrTileText(25) = m$
  941.  
  942.     m$ = ""
  943.     m$ = m$ + "........" + Chr$(13)
  944.     m$ = m$ + "........" + Chr$(13)
  945.     m$ = m$ + "........" + Chr$(13)
  946.     m$ = m$ + "........" + Chr$(13)
  947.     m$ = m$ + "........" + Chr$(13)
  948.     m$ = m$ + "........" + Chr$(13)
  949.     m$ = m$ + "........" + Chr$(13)
  950.     m$ = m$ + "........" + Chr$(13)
  951.     arrTileText(26) = m$
  952.  
  953.     m$ = ""
  954.     m$ = m$ + "........" + Chr$(13)
  955.     m$ = m$ + "........" + Chr$(13)
  956.     m$ = m$ + "........" + Chr$(13)
  957.     m$ = m$ + "........" + Chr$(13)
  958.     m$ = m$ + "........" + Chr$(13)
  959.     m$ = m$ + "........" + Chr$(13)
  960.     m$ = m$ + "........" + Chr$(13)
  961.     m$ = m$ + "........" + Chr$(13)
  962.     arrTileText(27) = m$
  963.  
  964.     m$ = ""
  965.     m$ = m$ + "........" + Chr$(13)
  966.     m$ = m$ + "........" + Chr$(13)
  967.     m$ = m$ + "........" + Chr$(13)
  968.     m$ = m$ + "........" + Chr$(13)
  969.     m$ = m$ + "........" + Chr$(13)
  970.     m$ = m$ + "........" + Chr$(13)
  971.     m$ = m$ + "........" + Chr$(13)
  972.     m$ = m$ + "........" + Chr$(13)
  973.     arrTileText(28) = m$
  974.  
  975.     m$ = ""
  976.     m$ = m$ + "........" + Chr$(13)
  977.     m$ = m$ + "........" + Chr$(13)
  978.     m$ = m$ + "........" + Chr$(13)
  979.     m$ = m$ + "........" + Chr$(13)
  980.     m$ = m$ + "........" + Chr$(13)
  981.     m$ = m$ + "........" + Chr$(13)
  982.     m$ = m$ + "........" + Chr$(13)
  983.     m$ = m$ + "........" + Chr$(13)
  984.     arrTileText(29) = m$
  985.  
  986.     m$ = ""
  987.     m$ = m$ + "........" + Chr$(13)
  988.     m$ = m$ + "........" + Chr$(13)
  989.     m$ = m$ + "........" + Chr$(13)
  990.     m$ = m$ + "........" + Chr$(13)
  991.     m$ = m$ + "........" + Chr$(13)
  992.     m$ = m$ + "........" + Chr$(13)
  993.     m$ = m$ + "........" + Chr$(13)
  994.     m$ = m$ + "........" + Chr$(13)
  995.     arrTileText(30) = m$
  996.  
  997.     m$ = ""
  998.     m$ = m$ + "........" + Chr$(13)
  999.     m$ = m$ + "........" + Chr$(13)
  1000.     m$ = m$ + "........" + Chr$(13)
  1001.     m$ = m$ + "........" + Chr$(13)
  1002.     m$ = m$ + "........" + Chr$(13)
  1003.     m$ = m$ + "........" + Chr$(13)
  1004.     m$ = m$ + "........" + Chr$(13)
  1005.     m$ = m$ + "........" + Chr$(13)
  1006.     arrTileText(31) = m$
  1007.  
  1008.     m$ = ""
  1009.     m$ = m$ + "........" + Chr$(13)
  1010.     m$ = m$ + "........" + Chr$(13)
  1011.     m$ = m$ + "........" + Chr$(13)
  1012.     m$ = m$ + "........" + Chr$(13)
  1013.     m$ = m$ + "........" + Chr$(13)
  1014.     m$ = m$ + "........" + Chr$(13)
  1015.     m$ = m$ + "........" + Chr$(13)
  1016.     m$ = m$ + "........" + Chr$(13)
  1017.     arrTileText(32) = m$
  1018.  
  1019.     m$ = ""
  1020.     m$ = m$ + "...22..." + Chr$(13)
  1021.     m$ = m$ + "...22..." + Chr$(13)
  1022.     m$ = m$ + "...22..." + Chr$(13)
  1023.     m$ = m$ + "...22..." + Chr$(13)
  1024.     m$ = m$ + "........" + Chr$(13)
  1025.     m$ = m$ + "........" + Chr$(13)
  1026.     m$ = m$ + "...22..." + Chr$(13)
  1027.     m$ = m$ + "........" + Chr$(13)
  1028.     arrTileText(33) = m$
  1029.  
  1030.     m$ = ""
  1031.     m$ = m$ + ".22..22." + Chr$(13)
  1032.     m$ = m$ + ".22..22." + Chr$(13)
  1033.     m$ = m$ + ".22..22." + Chr$(13)
  1034.     m$ = m$ + "........" + Chr$(13)
  1035.     m$ = m$ + "........" + Chr$(13)
  1036.     m$ = m$ + "........" + Chr$(13)
  1037.     m$ = m$ + "........" + Chr$(13)
  1038.     m$ = m$ + "........" + Chr$(13)
  1039.     arrTileText(34) = m$
  1040.  
  1041.     m$ = ""
  1042.     m$ = m$ + ".22..22." + Chr$(13)
  1043.     m$ = m$ + ".22..22." + Chr$(13)
  1044.     m$ = m$ + "22222222" + Chr$(13)
  1045.     m$ = m$ + ".22..22." + Chr$(13)
  1046.     m$ = m$ + "22222222" + Chr$(13)
  1047.     m$ = m$ + ".22..22." + Chr$(13)
  1048.     m$ = m$ + ".22..22." + Chr$(13)
  1049.     m$ = m$ + "........" + Chr$(13)
  1050.     arrTileText(35) = m$
  1051.  
  1052.     m$ = ""
  1053.     m$ = m$ + "...22..." + Chr$(13)
  1054.     m$ = m$ + "..22222." + Chr$(13)
  1055.     m$ = m$ + ".22....." + Chr$(13)
  1056.     m$ = m$ + "..2222.." + Chr$(13)
  1057.     m$ = m$ + ".....22." + Chr$(13)
  1058.     m$ = m$ + ".22222.." + Chr$(13)
  1059.     m$ = m$ + "...22..." + Chr$(13)
  1060.     m$ = m$ + "........" + Chr$(13)
  1061.     arrTileText(36) = m$
  1062.  
  1063.     m$ = ""
  1064.     m$ = m$ + ".22...2." + Chr$(13)
  1065.     m$ = m$ + ".22..22." + Chr$(13)
  1066.     m$ = m$ + "....22.." + Chr$(13)
  1067.     m$ = m$ + "...22..." + Chr$(13)
  1068.     m$ = m$ + "..22...." + Chr$(13)
  1069.     m$ = m$ + ".22..22." + Chr$(13)
  1070.     m$ = m$ + ".2...22." + Chr$(13)
  1071.     m$ = m$ + "........" + Chr$(13)
  1072.     arrTileText(37) = m$
  1073.  
  1074.     m$ = ""
  1075.     m$ = m$ + "..2222.." + Chr$(13)
  1076.     m$ = m$ + ".22..22." + Chr$(13)
  1077.     m$ = m$ + "..2222.." + Chr$(13)
  1078.     m$ = m$ + "..222..." + Chr$(13)
  1079.     m$ = m$ + ".22..222" + Chr$(13)
  1080.     m$ = m$ + ".22..22." + Chr$(13)
  1081.     m$ = m$ + "..222222" + Chr$(13)
  1082.     m$ = m$ + "........" + Chr$(13)
  1083.     arrTileText(38) = m$
  1084.  
  1085.     m$ = ""
  1086.     m$ = m$ + ".....22." + Chr$(13)
  1087.     m$ = m$ + "....22.." + Chr$(13)
  1088.     m$ = m$ + "...22..." + Chr$(13)
  1089.     m$ = m$ + "........" + Chr$(13)
  1090.     m$ = m$ + "........" + Chr$(13)
  1091.     m$ = m$ + "........" + Chr$(13)
  1092.     m$ = m$ + "........" + Chr$(13)
  1093.     m$ = m$ + "........" + Chr$(13)
  1094.     arrTileText(39) = m$
  1095.  
  1096.     m$ = ""
  1097.     m$ = m$ + "....22.." + Chr$(13)
  1098.     m$ = m$ + "...22..." + Chr$(13)
  1099.     m$ = m$ + "..22...." + Chr$(13)
  1100.     m$ = m$ + "..22...." + Chr$(13)
  1101.     m$ = m$ + "..22...." + Chr$(13)
  1102.     m$ = m$ + "...22..." + Chr$(13)
  1103.     m$ = m$ + "....22.." + Chr$(13)
  1104.     m$ = m$ + "........" + Chr$(13)
  1105.     arrTileText(40) = m$
  1106.  
  1107.     m$ = ""
  1108.     m$ = m$ + "..22...." + Chr$(13)
  1109.     m$ = m$ + "...22..." + Chr$(13)
  1110.     m$ = m$ + "....22.." + Chr$(13)
  1111.     m$ = m$ + "....22.." + Chr$(13)
  1112.     m$ = m$ + "....22.." + Chr$(13)
  1113.     m$ = m$ + "...22..." + Chr$(13)
  1114.     m$ = m$ + "..22...." + Chr$(13)
  1115.     m$ = m$ + "........" + Chr$(13)
  1116.     arrTileText(41) = m$
  1117.  
  1118.     m$ = ""
  1119.     m$ = m$ + "........" + Chr$(13)
  1120.     m$ = m$ + ".22..22." + Chr$(13)
  1121.     m$ = m$ + "..2222.." + Chr$(13)
  1122.     m$ = m$ + "22222222" + Chr$(13)
  1123.     m$ = m$ + "..2222.." + Chr$(13)
  1124.     m$ = m$ + ".22..22." + Chr$(13)
  1125.     m$ = m$ + "........" + Chr$(13)
  1126.     m$ = m$ + "........" + Chr$(13)
  1127.     arrTileText(42) = m$
  1128.  
  1129.     m$ = ""
  1130.     m$ = m$ + "........" + Chr$(13)
  1131.     m$ = m$ + "...22..." + Chr$(13)
  1132.     m$ = m$ + "...22..." + Chr$(13)
  1133.     m$ = m$ + ".222222." + Chr$(13)
  1134.     m$ = m$ + "...22..." + Chr$(13)
  1135.     m$ = m$ + "...22..." + Chr$(13)
  1136.     m$ = m$ + "........" + Chr$(13)
  1137.     m$ = m$ + "........" + Chr$(13)
  1138.     arrTileText(43) = m$
  1139.  
  1140.     m$ = ""
  1141.     m$ = m$ + "........" + Chr$(13)
  1142.     m$ = m$ + "........" + Chr$(13)
  1143.     m$ = m$ + "........" + Chr$(13)
  1144.     m$ = m$ + "........" + Chr$(13)
  1145.     m$ = m$ + "........" + Chr$(13)
  1146.     m$ = m$ + "...22..." + Chr$(13)
  1147.     m$ = m$ + "...22..." + Chr$(13)
  1148.     m$ = m$ + "..22...." + Chr$(13)
  1149.     arrTileText(44) = m$
  1150.  
  1151.     m$ = ""
  1152.     m$ = m$ + "........" + Chr$(13)
  1153.     m$ = m$ + "........" + Chr$(13)
  1154.     m$ = m$ + "........" + Chr$(13)
  1155.     m$ = m$ + ".222222." + Chr$(13)
  1156.     m$ = m$ + "........" + Chr$(13)
  1157.     m$ = m$ + "........" + Chr$(13)
  1158.     m$ = m$ + "........" + Chr$(13)
  1159.     m$ = m$ + "........" + Chr$(13)
  1160.     arrTileText(45) = m$
  1161.  
  1162.     m$ = ""
  1163.     m$ = m$ + "........" + Chr$(13)
  1164.     m$ = m$ + "........" + Chr$(13)
  1165.     m$ = m$ + "........" + Chr$(13)
  1166.     m$ = m$ + "........" + Chr$(13)
  1167.     m$ = m$ + "........" + Chr$(13)
  1168.     m$ = m$ + "...22..." + Chr$(13)
  1169.     m$ = m$ + "...22..." + Chr$(13)
  1170.     m$ = m$ + "........" + Chr$(13)
  1171.     arrTileText(46) = m$
  1172.  
  1173.     m$ = ""
  1174.     m$ = m$ + "........" + Chr$(13)
  1175.     m$ = m$ + "......22" + Chr$(13)
  1176.     m$ = m$ + ".....22." + Chr$(13)
  1177.     m$ = m$ + "....22.." + Chr$(13)
  1178.     m$ = m$ + "...22..." + Chr$(13)
  1179.     m$ = m$ + "..22...." + Chr$(13)
  1180.     m$ = m$ + ".22....." + Chr$(13)
  1181.     m$ = m$ + "........" + Chr$(13)
  1182.     arrTileText(47) = m$
  1183.  
  1184.     m$ = ""
  1185.     m$ = m$ + "..2222.." + Chr$(13)
  1186.     m$ = m$ + ".22..22." + Chr$(13)
  1187.     m$ = m$ + ".22.222." + Chr$(13)
  1188.     m$ = m$ + ".222.22." + Chr$(13)
  1189.     m$ = m$ + ".22..22." + Chr$(13)
  1190.     m$ = m$ + ".22..22." + Chr$(13)
  1191.     m$ = m$ + "..2222.." + Chr$(13)
  1192.     m$ = m$ + "........" + Chr$(13)
  1193.     arrTileText(48) = m$
  1194.  
  1195.     m$ = ""
  1196.     m$ = m$ + "...22..." + Chr$(13)
  1197.     m$ = m$ + "...22..." + Chr$(13)
  1198.     m$ = m$ + "..222..." + Chr$(13)
  1199.     m$ = m$ + "...22..." + Chr$(13)
  1200.     m$ = m$ + "...22..." + Chr$(13)
  1201.     m$ = m$ + "...22..." + Chr$(13)
  1202.     m$ = m$ + ".222222." + Chr$(13)
  1203.     m$ = m$ + "........" + Chr$(13)
  1204.     arrTileText(49) = m$
  1205.  
  1206.     m$ = ""
  1207.     m$ = m$ + "..2222.." + Chr$(13)
  1208.     m$ = m$ + ".22..22." + Chr$(13)
  1209.     m$ = m$ + ".....22." + Chr$(13)
  1210.     m$ = m$ + "....22.." + Chr$(13)
  1211.     m$ = m$ + "..22...." + Chr$(13)
  1212.     m$ = m$ + ".22....." + Chr$(13)
  1213.     m$ = m$ + ".222222." + Chr$(13)
  1214.     m$ = m$ + "........" + Chr$(13)
  1215.     arrTileText(50) = m$
  1216.  
  1217.     m$ = ""
  1218.     m$ = m$ + "..2222.." + Chr$(13)
  1219.     m$ = m$ + ".22..22." + Chr$(13)
  1220.     m$ = m$ + ".....22." + Chr$(13)
  1221.     m$ = m$ + "...222.." + Chr$(13)
  1222.     m$ = m$ + ".....22." + Chr$(13)
  1223.     m$ = m$ + ".22..22." + Chr$(13)
  1224.     m$ = m$ + "..2222.." + Chr$(13)
  1225.     m$ = m$ + "........" + Chr$(13)
  1226.     arrTileText(51) = m$
  1227.  
  1228.     m$ = ""
  1229.     m$ = m$ + ".....22." + Chr$(13)
  1230.     m$ = m$ + "....222." + Chr$(13)
  1231.     m$ = m$ + "...2222." + Chr$(13)
  1232.     m$ = m$ + ".22..22." + Chr$(13)
  1233.     m$ = m$ + ".2222222" + Chr$(13)
  1234.     m$ = m$ + ".....22." + Chr$(13)
  1235.     m$ = m$ + ".....22." + Chr$(13)
  1236.     m$ = m$ + "........" + Chr$(13)
  1237.     arrTileText(52) = m$
  1238.  
  1239.     m$ = ""
  1240.     m$ = m$ + ".222222." + Chr$(13)
  1241.     m$ = m$ + ".22....." + Chr$(13)
  1242.     m$ = m$ + ".22222.." + Chr$(13)
  1243.     m$ = m$ + ".....22." + Chr$(13)
  1244.     m$ = m$ + ".....22." + Chr$(13)
  1245.     m$ = m$ + ".22..22." + Chr$(13)
  1246.     m$ = m$ + "..2222.." + Chr$(13)
  1247.     m$ = m$ + "........" + Chr$(13)
  1248.     arrTileText(53) = m$
  1249.  
  1250.     m$ = ""
  1251.     m$ = m$ + "..2222.." + Chr$(13)
  1252.     m$ = m$ + ".22..22." + Chr$(13)
  1253.     m$ = m$ + ".22....." + Chr$(13)
  1254.     m$ = m$ + ".22222.." + Chr$(13)
  1255.     m$ = m$ + ".22..22." + Chr$(13)
  1256.     m$ = m$ + ".22..22." + Chr$(13)
  1257.     m$ = m$ + "..2222.." + Chr$(13)
  1258.     m$ = m$ + "........" + Chr$(13)
  1259.     arrTileText(54) = m$
  1260.  
  1261.     m$ = ""
  1262.     m$ = m$ + ".222222." + Chr$(13)
  1263.     m$ = m$ + ".22..22." + Chr$(13)
  1264.     m$ = m$ + "....22.." + Chr$(13)
  1265.     m$ = m$ + "...22..." + Chr$(13)
  1266.     m$ = m$ + "...22..." + Chr$(13)
  1267.     m$ = m$ + "...22..." + Chr$(13)
  1268.     m$ = m$ + "...22..." + Chr$(13)
  1269.     m$ = m$ + "........" + Chr$(13)
  1270.     arrTileText(55) = m$
  1271.  
  1272.     m$ = ""
  1273.     m$ = m$ + "..2222.." + Chr$(13)
  1274.     m$ = m$ + ".22..22." + Chr$(13)
  1275.     m$ = m$ + ".22..22." + Chr$(13)
  1276.     m$ = m$ + "..2222.." + Chr$(13)
  1277.     m$ = m$ + ".22..22." + Chr$(13)
  1278.     m$ = m$ + ".22..22." + Chr$(13)
  1279.     m$ = m$ + "..2222.." + Chr$(13)
  1280.     m$ = m$ + "........" + Chr$(13)
  1281.     arrTileText(56) = m$
  1282.  
  1283.     m$ = ""
  1284.     m$ = m$ + "..2222.." + Chr$(13)
  1285.     m$ = m$ + ".22..22." + Chr$(13)
  1286.     m$ = m$ + ".22..22." + Chr$(13)
  1287.     m$ = m$ + "..22222." + Chr$(13)
  1288.     m$ = m$ + ".....22." + Chr$(13)
  1289.     m$ = m$ + ".22..22." + Chr$(13)
  1290.     m$ = m$ + "..2222.." + Chr$(13)
  1291.     m$ = m$ + "........" + Chr$(13)
  1292.     arrTileText(57) = m$
  1293.  
  1294.     m$ = ""
  1295.     m$ = m$ + "........" + Chr$(13)
  1296.     m$ = m$ + "........" + Chr$(13)
  1297.     m$ = m$ + "...22..." + Chr$(13)
  1298.     m$ = m$ + "........" + Chr$(13)
  1299.     m$ = m$ + "........" + Chr$(13)
  1300.     m$ = m$ + "...22..." + Chr$(13)
  1301.     m$ = m$ + "........" + Chr$(13)
  1302.     m$ = m$ + "........" + Chr$(13)
  1303.     arrTileText(58) = m$
  1304.  
  1305.     m$ = ""
  1306.     m$ = m$ + "........" + Chr$(13)
  1307.     m$ = m$ + "........" + Chr$(13)
  1308.     m$ = m$ + "...22..." + Chr$(13)
  1309.     m$ = m$ + "........" + Chr$(13)
  1310.     m$ = m$ + "........" + Chr$(13)
  1311.     m$ = m$ + "...22..." + Chr$(13)
  1312.     m$ = m$ + "...22..." + Chr$(13)
  1313.     m$ = m$ + "..22...." + Chr$(13)
  1314.     arrTileText(59) = m$
  1315.  
  1316.     m$ = ""
  1317.     m$ = m$ + "....222." + Chr$(13)
  1318.     m$ = m$ + "...22..." + Chr$(13)
  1319.     m$ = m$ + "..22...." + Chr$(13)
  1320.     m$ = m$ + ".22....." + Chr$(13)
  1321.     m$ = m$ + "..22...." + Chr$(13)
  1322.     m$ = m$ + "...22..." + Chr$(13)
  1323.     m$ = m$ + "....222." + Chr$(13)
  1324.     m$ = m$ + "........" + Chr$(13)
  1325.     arrTileText(60) = m$
  1326.  
  1327.     m$ = ""
  1328.     m$ = m$ + "........" + Chr$(13)
  1329.     m$ = m$ + "........" + Chr$(13)
  1330.     m$ = m$ + ".222222." + Chr$(13)
  1331.     m$ = m$ + "........" + Chr$(13)
  1332.     m$ = m$ + ".222222." + Chr$(13)
  1333.     m$ = m$ + "........" + Chr$(13)
  1334.     m$ = m$ + "........" + Chr$(13)
  1335.     m$ = m$ + "........" + Chr$(13)
  1336.     arrTileText(61) = m$
  1337.  
  1338.     m$ = ""
  1339.     m$ = m$ + ".222...." + Chr$(13)
  1340.     m$ = m$ + "...22..." + Chr$(13)
  1341.     m$ = m$ + "....22.." + Chr$(13)
  1342.     m$ = m$ + ".....22." + Chr$(13)
  1343.     m$ = m$ + "....22.." + Chr$(13)
  1344.     m$ = m$ + "...22..." + Chr$(13)
  1345.     m$ = m$ + ".222...." + Chr$(13)
  1346.     m$ = m$ + "........" + Chr$(13)
  1347.     arrTileText(62) = m$
  1348.  
  1349.     m$ = ""
  1350.     m$ = m$ + "..2222.." + Chr$(13)
  1351.     m$ = m$ + ".22..22." + Chr$(13)
  1352.     m$ = m$ + ".....22." + Chr$(13)
  1353.     m$ = m$ + "....22.." + Chr$(13)
  1354.     m$ = m$ + "...22..." + Chr$(13)
  1355.     m$ = m$ + "........" + Chr$(13)
  1356.     m$ = m$ + "...22..." + Chr$(13)
  1357.     m$ = m$ + "........" + Chr$(13)
  1358.     arrTileText(63) = m$
  1359.  
  1360.     m$ = ""
  1361.     m$ = m$ + "..2222.." + Chr$(13)
  1362.     m$ = m$ + ".22..22." + Chr$(13)
  1363.     m$ = m$ + ".22.222." + Chr$(13)
  1364.     m$ = m$ + ".22.222." + Chr$(13)
  1365.     m$ = m$ + ".22....." + Chr$(13)
  1366.     m$ = m$ + ".22...2." + Chr$(13)
  1367.     m$ = m$ + "..2222.." + Chr$(13)
  1368.     m$ = m$ + "........" + Chr$(13)
  1369.     arrTileText(64) = m$
  1370.  
  1371.     m$ = ""
  1372.     m$ = m$ + "...22..." + Chr$(13)
  1373.     m$ = m$ + "..2222.." + Chr$(13)
  1374.     m$ = m$ + ".22..22." + Chr$(13)
  1375.     m$ = m$ + ".222222." + Chr$(13)
  1376.     m$ = m$ + ".22..22." + Chr$(13)
  1377.     m$ = m$ + ".22..22." + Chr$(13)
  1378.     m$ = m$ + ".22..22." + Chr$(13)
  1379.     m$ = m$ + "........" + Chr$(13)
  1380.     arrTileText(65) = m$
  1381.  
  1382.     m$ = ""
  1383.     m$ = m$ + ".22222.." + Chr$(13)
  1384.     m$ = m$ + ".22..22." + Chr$(13)
  1385.     m$ = m$ + ".22..22." + Chr$(13)
  1386.     m$ = m$ + ".22222.." + Chr$(13)
  1387.     m$ = m$ + ".22..22." + Chr$(13)
  1388.     m$ = m$ + ".22..22." + Chr$(13)
  1389.     m$ = m$ + ".22222.." + Chr$(13)
  1390.     m$ = m$ + "........" + Chr$(13)
  1391.     arrTileText(66) = m$
  1392.  
  1393.     m$ = ""
  1394.     m$ = m$ + "..2222.." + Chr$(13)
  1395.     m$ = m$ + ".22..22." + Chr$(13)
  1396.     m$ = m$ + ".22....." + Chr$(13)
  1397.     m$ = m$ + ".22....." + Chr$(13)
  1398.     m$ = m$ + ".22....." + Chr$(13)
  1399.     m$ = m$ + ".22..22." + Chr$(13)
  1400.     m$ = m$ + "..2222.." + Chr$(13)
  1401.     m$ = m$ + "........" + Chr$(13)
  1402.     arrTileText(67) = m$
  1403.  
  1404.     m$ = ""
  1405.     m$ = m$ + ".2222..." + Chr$(13)
  1406.     m$ = m$ + ".22.22.." + Chr$(13)
  1407.     m$ = m$ + ".22..22." + Chr$(13)
  1408.     m$ = m$ + ".22..22." + Chr$(13)
  1409.     m$ = m$ + ".22..22." + Chr$(13)
  1410.     m$ = m$ + ".22.22.." + Chr$(13)
  1411.     m$ = m$ + ".2222..." + Chr$(13)
  1412.     m$ = m$ + "........" + Chr$(13)
  1413.     arrTileText(68) = m$
  1414.  
  1415.     m$ = ""
  1416.     m$ = m$ + ".222222." + Chr$(13)
  1417.     m$ = m$ + ".22....." + Chr$(13)
  1418.     m$ = m$ + ".22....." + Chr$(13)
  1419.     m$ = m$ + ".2222..." + Chr$(13)
  1420.     m$ = m$ + ".22....." + Chr$(13)
  1421.     m$ = m$ + ".22....." + Chr$(13)
  1422.     m$ = m$ + ".222222." + Chr$(13)
  1423.     m$ = m$ + "........" + Chr$(13)
  1424.     arrTileText(69) = m$
  1425.  
  1426.     m$ = ""
  1427.     m$ = m$ + ".222222." + Chr$(13)
  1428.     m$ = m$ + ".22....." + Chr$(13)
  1429.     m$ = m$ + ".22....." + Chr$(13)
  1430.     m$ = m$ + ".2222..." + Chr$(13)
  1431.     m$ = m$ + ".22....." + Chr$(13)
  1432.     m$ = m$ + ".22....." + Chr$(13)
  1433.     m$ = m$ + ".22....." + Chr$(13)
  1434.     m$ = m$ + "........" + Chr$(13)
  1435.     arrTileText(70) = m$
  1436.  
  1437.     m$ = ""
  1438.     m$ = m$ + "..2222.." + Chr$(13)
  1439.     m$ = m$ + ".22..22." + Chr$(13)
  1440.     m$ = m$ + ".22....." + Chr$(13)
  1441.     m$ = m$ + ".22.222." + Chr$(13)
  1442.     m$ = m$ + ".22..22." + Chr$(13)
  1443.     m$ = m$ + ".22..22." + Chr$(13)
  1444.     m$ = m$ + "..2222.." + Chr$(13)
  1445.     m$ = m$ + "........" + Chr$(13)
  1446.     arrTileText(71) = m$
  1447.  
  1448.     m$ = ""
  1449.     m$ = m$ + ".22..22." + Chr$(13)
  1450.     m$ = m$ + ".22..22." + Chr$(13)
  1451.     m$ = m$ + ".22..22." + Chr$(13)
  1452.     m$ = m$ + ".222222." + Chr$(13)
  1453.     m$ = m$ + ".22..22." + Chr$(13)
  1454.     m$ = m$ + ".22..22." + Chr$(13)
  1455.     m$ = m$ + ".22..22." + Chr$(13)
  1456.     m$ = m$ + "........" + Chr$(13)
  1457.     arrTileText(72) = m$
  1458.  
  1459.     m$ = ""
  1460.     m$ = m$ + "..2222.." + Chr$(13)
  1461.     m$ = m$ + "...22..." + Chr$(13)
  1462.     m$ = m$ + "...22..." + Chr$(13)
  1463.     m$ = m$ + "...22..." + Chr$(13)
  1464.     m$ = m$ + "...22..." + Chr$(13)
  1465.     m$ = m$ + "...22..." + Chr$(13)
  1466.     m$ = m$ + "..2222.." + Chr$(13)
  1467.     m$ = m$ + "........" + Chr$(13)
  1468.     arrTileText(73) = m$
  1469.  
  1470.     m$ = ""
  1471.     m$ = m$ + "...2222." + Chr$(13)
  1472.     m$ = m$ + "....22.." + Chr$(13)
  1473.     m$ = m$ + "....22.." + Chr$(13)
  1474.     m$ = m$ + "....22.." + Chr$(13)
  1475.     m$ = m$ + "....22.." + Chr$(13)
  1476.     m$ = m$ + ".22.22.." + Chr$(13)
  1477.     m$ = m$ + "..222..." + Chr$(13)
  1478.     m$ = m$ + "........" + Chr$(13)
  1479.     arrTileText(74) = m$
  1480.  
  1481.     m$ = ""
  1482.     m$ = m$ + ".22..22." + Chr$(13)
  1483.     m$ = m$ + ".22.22.." + Chr$(13)
  1484.     m$ = m$ + ".2222..." + Chr$(13)
  1485.     m$ = m$ + ".222...." + Chr$(13)
  1486.     m$ = m$ + ".2222..." + Chr$(13)
  1487.     m$ = m$ + ".22.22.." + Chr$(13)
  1488.     m$ = m$ + ".22..22." + Chr$(13)
  1489.     m$ = m$ + "........" + Chr$(13)
  1490.     arrTileText(75) = m$
  1491.  
  1492.     m$ = ""
  1493.     m$ = m$ + ".22....." + Chr$(13)
  1494.     m$ = m$ + ".22....." + Chr$(13)
  1495.     m$ = m$ + ".22....." + Chr$(13)
  1496.     m$ = m$ + ".22....." + Chr$(13)
  1497.     m$ = m$ + ".22....." + Chr$(13)
  1498.     m$ = m$ + ".22....." + Chr$(13)
  1499.     m$ = m$ + ".222222." + Chr$(13)
  1500.     m$ = m$ + "........" + Chr$(13)
  1501.     arrTileText(76) = m$
  1502.  
  1503.     m$ = ""
  1504.     m$ = m$ + ".22...22" + Chr$(13)
  1505.     m$ = m$ + ".222.222" + Chr$(13)
  1506.     m$ = m$ + ".2222222" + Chr$(13)
  1507.     m$ = m$ + ".22.2.22" + Chr$(13)
  1508.     m$ = m$ + ".22...22" + Chr$(13)
  1509.     m$ = m$ + ".22...22" + Chr$(13)
  1510.     m$ = m$ + ".22...22" + Chr$(13)
  1511.     m$ = m$ + "........" + Chr$(13)
  1512.     arrTileText(77) = m$
  1513.  
  1514.     m$ = ""
  1515.     m$ = m$ + ".22..22." + Chr$(13)
  1516.     m$ = m$ + ".222.22." + Chr$(13)
  1517.     m$ = m$ + ".222222." + Chr$(13)
  1518.     m$ = m$ + ".222222." + Chr$(13)
  1519.     m$ = m$ + ".22.222." + Chr$(13)
  1520.     m$ = m$ + ".22..22." + Chr$(13)
  1521.     m$ = m$ + ".22..22." + Chr$(13)
  1522.     m$ = m$ + "........" + Chr$(13)
  1523.     arrTileText(78) = m$
  1524.  
  1525.     m$ = ""
  1526.     m$ = m$ + "..2222.." + Chr$(13)
  1527.     m$ = m$ + ".22..22." + Chr$(13)
  1528.     m$ = m$ + ".22..22." + Chr$(13)
  1529.     m$ = m$ + ".22..22." + Chr$(13)
  1530.     m$ = m$ + ".22..22." + Chr$(13)
  1531.     m$ = m$ + ".22..22." + Chr$(13)
  1532.     m$ = m$ + "..2222.." + Chr$(13)
  1533.     m$ = m$ + "........" + Chr$(13)
  1534.     arrTileText(79) = m$
  1535.  
  1536.     m$ = ""
  1537.     m$ = m$ + ".22222.." + Chr$(13)
  1538.     m$ = m$ + ".22..22." + Chr$(13)
  1539.     m$ = m$ + ".22..22." + Chr$(13)
  1540.     m$ = m$ + ".22222.." + Chr$(13)
  1541.     m$ = m$ + ".22....." + Chr$(13)
  1542.     m$ = m$ + ".22....." + Chr$(13)
  1543.     m$ = m$ + ".22....." + Chr$(13)
  1544.     m$ = m$ + "........" + Chr$(13)
  1545.     arrTileText(80) = m$
  1546.  
  1547.     m$ = ""
  1548.     m$ = m$ + "..2222.." + Chr$(13)
  1549.     m$ = m$ + ".22..22." + Chr$(13)
  1550.     m$ = m$ + ".22..22." + Chr$(13)
  1551.     m$ = m$ + ".22..22." + Chr$(13)
  1552.     m$ = m$ + ".22..22." + Chr$(13)
  1553.     m$ = m$ + "..2222.." + Chr$(13)
  1554.     m$ = m$ + "....222." + Chr$(13)
  1555.     m$ = m$ + "........" + Chr$(13)
  1556.     arrTileText(81) = m$
  1557.  
  1558.     m$ = ""
  1559.     m$ = m$ + ".22222.." + Chr$(13)
  1560.     m$ = m$ + ".22..22." + Chr$(13)
  1561.     m$ = m$ + ".22..22." + Chr$(13)
  1562.     m$ = m$ + ".22222.." + Chr$(13)
  1563.     m$ = m$ + ".2222..." + Chr$(13)
  1564.     m$ = m$ + ".22.22.." + Chr$(13)
  1565.     m$ = m$ + ".22..22." + Chr$(13)
  1566.     m$ = m$ + "........" + Chr$(13)
  1567.     arrTileText(82) = m$
  1568.  
  1569.     m$ = ""
  1570.     m$ = m$ + "..2222.." + Chr$(13)
  1571.     m$ = m$ + ".22..22." + Chr$(13)
  1572.     m$ = m$ + ".22....." + Chr$(13)
  1573.     m$ = m$ + "..2222.." + Chr$(13)
  1574.     m$ = m$ + ".....22." + Chr$(13)
  1575.     m$ = m$ + ".22..22." + Chr$(13)
  1576.     m$ = m$ + "..2222.." + Chr$(13)
  1577.     m$ = m$ + "........" + Chr$(13)
  1578.     arrTileText(83) = m$
  1579.  
  1580.     m$ = ""
  1581.     m$ = m$ + ".222222." + Chr$(13)
  1582.     m$ = m$ + "...22..." + Chr$(13)
  1583.     m$ = m$ + "...22..." + Chr$(13)
  1584.     m$ = m$ + "...22..." + Chr$(13)
  1585.     m$ = m$ + "...22..." + Chr$(13)
  1586.     m$ = m$ + "...22..." + Chr$(13)
  1587.     m$ = m$ + "...22..." + Chr$(13)
  1588.     m$ = m$ + "........" + Chr$(13)
  1589.     arrTileText(84) = m$
  1590.  
  1591.     m$ = ""
  1592.     m$ = m$ + ".22..22." + Chr$(13)
  1593.     m$ = m$ + ".22..22." + Chr$(13)
  1594.     m$ = m$ + ".22..22." + Chr$(13)
  1595.     m$ = m$ + ".22..22." + Chr$(13)
  1596.     m$ = m$ + ".22..22." + Chr$(13)
  1597.     m$ = m$ + ".22..22." + Chr$(13)
  1598.     m$ = m$ + "..2222.." + Chr$(13)
  1599.     m$ = m$ + "........" + Chr$(13)
  1600.     arrTileText(85) = m$
  1601.  
  1602.     m$ = ""
  1603.     m$ = m$ + ".22..22." + Chr$(13)
  1604.     m$ = m$ + ".22..22." + Chr$(13)
  1605.     m$ = m$ + ".22..22." + Chr$(13)
  1606.     m$ = m$ + ".22..22." + Chr$(13)
  1607.     m$ = m$ + ".22..22." + Chr$(13)
  1608.     m$ = m$ + "..2222.." + Chr$(13)
  1609.     m$ = m$ + "...22..." + Chr$(13)
  1610.     m$ = m$ + "........" + Chr$(13)
  1611.     arrTileText(86) = m$
  1612.  
  1613.     m$ = ""
  1614.     m$ = m$ + ".22...22" + Chr$(13)
  1615.     m$ = m$ + ".22...22" + Chr$(13)
  1616.     m$ = m$ + ".22...22" + Chr$(13)
  1617.     m$ = m$ + ".22.2.22" + Chr$(13)
  1618.     m$ = m$ + ".2222222" + Chr$(13)
  1619.     m$ = m$ + ".222.222" + Chr$(13)
  1620.     m$ = m$ + ".22...22" + Chr$(13)
  1621.     m$ = m$ + "........" + Chr$(13)
  1622.     arrTileText(87) = m$
  1623.  
  1624.     m$ = ""
  1625.     m$ = m$ + ".22..22." + Chr$(13)
  1626.     m$ = m$ + ".22..22." + Chr$(13)
  1627.     m$ = m$ + "..2222.." + Chr$(13)
  1628.     m$ = m$ + "...22..." + Chr$(13)
  1629.     m$ = m$ + "..2222.." + Chr$(13)
  1630.     m$ = m$ + ".22..22." + Chr$(13)
  1631.     m$ = m$ + ".22..22." + Chr$(13)
  1632.     m$ = m$ + "........" + Chr$(13)
  1633.     arrTileText(88) = m$
  1634.  
  1635.     m$ = ""
  1636.     m$ = m$ + ".22..22." + Chr$(13)
  1637.     m$ = m$ + ".22..22." + Chr$(13)
  1638.     m$ = m$ + ".22..22." + Chr$(13)
  1639.     m$ = m$ + "..2222.." + Chr$(13)
  1640.     m$ = m$ + "...22..." + Chr$(13)
  1641.     m$ = m$ + "...22..." + Chr$(13)
  1642.     m$ = m$ + "...22..." + Chr$(13)
  1643.     m$ = m$ + "........" + Chr$(13)
  1644.     arrTileText(89) = m$
  1645.  
  1646.     m$ = ""
  1647.     m$ = m$ + ".222222." + Chr$(13)
  1648.     m$ = m$ + ".....22." + Chr$(13)
  1649.     m$ = m$ + "....22.." + Chr$(13)
  1650.     m$ = m$ + "...22..." + Chr$(13)
  1651.     m$ = m$ + "..22...." + Chr$(13)
  1652.     m$ = m$ + ".22....." + Chr$(13)
  1653.     m$ = m$ + ".222222." + Chr$(13)
  1654.     m$ = m$ + "........" + Chr$(13)
  1655.     arrTileText(90) = m$
  1656.  
  1657.     m$ = ""
  1658.     m$ = m$ + "..2222.." + Chr$(13)
  1659.     m$ = m$ + "..22...." + Chr$(13)
  1660.     m$ = m$ + "..22...." + Chr$(13)
  1661.     m$ = m$ + "..22...." + Chr$(13)
  1662.     m$ = m$ + "..22...." + Chr$(13)
  1663.     m$ = m$ + "..22...." + Chr$(13)
  1664.     m$ = m$ + "..2222.." + Chr$(13)
  1665.     m$ = m$ + "........" + Chr$(13)
  1666.     arrTileText(91) = m$
  1667.  
  1668.     m$ = ""
  1669.     m$ = m$ + "........" + Chr$(13)
  1670.     m$ = m$ + ".22....." + Chr$(13)
  1671.     m$ = m$ + "..22...." + Chr$(13)
  1672.     m$ = m$ + "...22..." + Chr$(13)
  1673.     m$ = m$ + "....22.." + Chr$(13)
  1674.     m$ = m$ + ".....22." + Chr$(13)
  1675.     m$ = m$ + "......22" + Chr$(13)
  1676.     m$ = m$ + "........" + Chr$(13)
  1677.     arrTileText(92) = m$
  1678.  
  1679.     m$ = ""
  1680.     m$ = m$ + "..2222.." + Chr$(13)
  1681.     m$ = m$ + "....22.." + Chr$(13)
  1682.     m$ = m$ + "....22.." + Chr$(13)
  1683.     m$ = m$ + "....22.." + Chr$(13)
  1684.     m$ = m$ + "....22.." + Chr$(13)
  1685.     m$ = m$ + "....22.." + Chr$(13)
  1686.     m$ = m$ + "..2222.." + Chr$(13)
  1687.     m$ = m$ + "........" + Chr$(13)
  1688.     arrTileText(93) = m$
  1689.  
  1690.     m$ = ""
  1691.     m$ = m$ + "...22..." + Chr$(13)
  1692.     m$ = m$ + "..2222.." + Chr$(13)
  1693.     m$ = m$ + ".22..22." + Chr$(13)
  1694.     m$ = m$ + "........" + Chr$(13)
  1695.     m$ = m$ + "........" + Chr$(13)
  1696.     m$ = m$ + "........" + Chr$(13)
  1697.     m$ = m$ + "........" + Chr$(13)
  1698.     m$ = m$ + "........" + Chr$(13)
  1699.     arrTileText(94) = m$
  1700.  
  1701.     m$ = ""
  1702.     m$ = m$ + "........" + Chr$(13)
  1703.     m$ = m$ + "........" + Chr$(13)
  1704.     m$ = m$ + "........" + Chr$(13)
  1705.     m$ = m$ + "........" + Chr$(13)
  1706.     m$ = m$ + "........" + Chr$(13)
  1707.     m$ = m$ + ".222222." + Chr$(13)
  1708.     m$ = m$ + "........" + Chr$(13)
  1709.     m$ = m$ + "........" + Chr$(13)
  1710.     arrTileText(95) = m$
  1711.  
  1712.     m$ = ""
  1713.     m$ = m$ + "........" + Chr$(13)
  1714.     m$ = m$ + "........" + Chr$(13)
  1715.     m$ = m$ + "........" + Chr$(13)
  1716.     m$ = m$ + "........" + Chr$(13)
  1717.     m$ = m$ + "........" + Chr$(13)
  1718.     m$ = m$ + "........" + Chr$(13)
  1719.     m$ = m$ + "........" + Chr$(13)
  1720.     m$ = m$ + "........" + Chr$(13)
  1721.     arrTileText(96) = m$
  1722.  
  1723.     m$ = ""
  1724.     m$ = m$ + "........" + Chr$(13)
  1725.     m$ = m$ + "..2222.." + Chr$(13)
  1726.     m$ = m$ + ".....22." + Chr$(13)
  1727.     m$ = m$ + "..22222." + Chr$(13)
  1728.     m$ = m$ + ".22..22." + Chr$(13)
  1729.     m$ = m$ + "..22222." + Chr$(13)
  1730.     m$ = m$ + "........" + Chr$(13)
  1731.     m$ = m$ + "........" + Chr$(13)
  1732.     arrTileText(97) = m$
  1733.  
  1734.     m$ = ""
  1735.     m$ = m$ + ".22....." + Chr$(13)
  1736.     m$ = m$ + ".22....." + Chr$(13)
  1737.     m$ = m$ + ".22222.." + Chr$(13)
  1738.     m$ = m$ + ".22..22." + Chr$(13)
  1739.     m$ = m$ + ".22..22." + Chr$(13)
  1740.     m$ = m$ + ".22222.." + Chr$(13)
  1741.     m$ = m$ + "........" + Chr$(13)
  1742.     m$ = m$ + "........" + Chr$(13)
  1743.     arrTileText(98) = m$
  1744.  
  1745.     m$ = ""
  1746.     m$ = m$ + "........" + Chr$(13)
  1747.     m$ = m$ + "..2222.." + Chr$(13)
  1748.     m$ = m$ + ".22....." + Chr$(13)
  1749.     m$ = m$ + ".22....." + Chr$(13)
  1750.     m$ = m$ + ".22....." + Chr$(13)
  1751.     m$ = m$ + "..2222.." + Chr$(13)
  1752.     m$ = m$ + "........" + Chr$(13)
  1753.     m$ = m$ + "........" + Chr$(13)
  1754.     arrTileText(99) = m$
  1755.  
  1756.     m$ = ""
  1757.     m$ = m$ + ".....22." + Chr$(13)
  1758.     m$ = m$ + ".....22." + Chr$(13)
  1759.     m$ = m$ + "..22222." + Chr$(13)
  1760.     m$ = m$ + ".22..22." + Chr$(13)
  1761.     m$ = m$ + ".22..22." + Chr$(13)
  1762.     m$ = m$ + "..22222." + Chr$(13)
  1763.     m$ = m$ + "........" + Chr$(13)
  1764.     m$ = m$ + "........" + Chr$(13)
  1765.     arrTileText(100) = m$
  1766.  
  1767.     m$ = ""
  1768.     m$ = m$ + "........" + Chr$(13)
  1769.     m$ = m$ + "..2222.." + Chr$(13)
  1770.     m$ = m$ + ".22..22." + Chr$(13)
  1771.     m$ = m$ + ".222222." + Chr$(13)
  1772.     m$ = m$ + ".22....." + Chr$(13)
  1773.     m$ = m$ + "..2222.." + Chr$(13)
  1774.     m$ = m$ + "........" + Chr$(13)
  1775.     m$ = m$ + "........" + Chr$(13)
  1776.     arrTileText(101) = m$
  1777.  
  1778.     m$ = ""
  1779.     m$ = m$ + "....222." + Chr$(13)
  1780.     m$ = m$ + "...22..." + Chr$(13)
  1781.     m$ = m$ + "..22222." + Chr$(13)
  1782.     m$ = m$ + "...22..." + Chr$(13)
  1783.     m$ = m$ + "...22..." + Chr$(13)
  1784.     m$ = m$ + "...22..." + Chr$(13)
  1785.     m$ = m$ + "........" + Chr$(13)
  1786.     m$ = m$ + "........" + Chr$(13)
  1787.     arrTileText(102) = m$
  1788.  
  1789.     m$ = ""
  1790.     m$ = m$ + "........" + Chr$(13)
  1791.     m$ = m$ + "..22222." + Chr$(13)
  1792.     m$ = m$ + ".22..22." + Chr$(13)
  1793.     m$ = m$ + ".22..22." + Chr$(13)
  1794.     m$ = m$ + "..22222." + Chr$(13)
  1795.     m$ = m$ + ".....22." + Chr$(13)
  1796.     m$ = m$ + ".22222.." + Chr$(13)
  1797.     m$ = m$ + "........" + Chr$(13)
  1798.     arrTileText(103) = m$
  1799.  
  1800.     m$ = ""
  1801.     m$ = m$ + ".22....." + Chr$(13)
  1802.     m$ = m$ + ".22....." + Chr$(13)
  1803.     m$ = m$ + ".22222.." + Chr$(13)
  1804.     m$ = m$ + ".22..22." + Chr$(13)
  1805.     m$ = m$ + ".22..22." + Chr$(13)
  1806.     m$ = m$ + ".22..22." + Chr$(13)
  1807.     m$ = m$ + "........" + Chr$(13)
  1808.     m$ = m$ + "........" + Chr$(13)
  1809.     arrTileText(104) = m$
  1810.  
  1811.     m$ = ""
  1812.     m$ = m$ + "...22..." + Chr$(13)
  1813.     m$ = m$ + "........" + Chr$(13)
  1814.     m$ = m$ + "..222..." + Chr$(13)
  1815.     m$ = m$ + "...22..." + Chr$(13)
  1816.     m$ = m$ + "...22..." + Chr$(13)
  1817.     m$ = m$ + "..2222.." + Chr$(13)
  1818.     m$ = m$ + "........" + Chr$(13)
  1819.     m$ = m$ + "........" + Chr$(13)
  1820.     arrTileText(105) = m$
  1821.  
  1822.     m$ = ""
  1823.     m$ = m$ + ".....22." + Chr$(13)
  1824.     m$ = m$ + "........" + Chr$(13)
  1825.     m$ = m$ + ".....22." + Chr$(13)
  1826.     m$ = m$ + ".....22." + Chr$(13)
  1827.     m$ = m$ + ".....22." + Chr$(13)
  1828.     m$ = m$ + ".....22." + Chr$(13)
  1829.     m$ = m$ + "..2222.." + Chr$(13)
  1830.     m$ = m$ + "........" + Chr$(13)
  1831.     arrTileText(106) = m$
  1832.  
  1833.     m$ = ""
  1834.     m$ = m$ + ".22....." + Chr$(13)
  1835.     m$ = m$ + ".22....." + Chr$(13)
  1836.     m$ = m$ + ".22.22.." + Chr$(13)
  1837.     m$ = m$ + ".2222..." + Chr$(13)
  1838.     m$ = m$ + ".22.22.." + Chr$(13)
  1839.     m$ = m$ + ".22..22." + Chr$(13)
  1840.     m$ = m$ + "........" + Chr$(13)
  1841.     m$ = m$ + "........" + Chr$(13)
  1842.     arrTileText(107) = m$
  1843.  
  1844.     m$ = ""
  1845.     m$ = m$ + "..222..." + Chr$(13)
  1846.     m$ = m$ + "...22..." + Chr$(13)
  1847.     m$ = m$ + "...22..." + Chr$(13)
  1848.     m$ = m$ + "...22..." + Chr$(13)
  1849.     m$ = m$ + "...22..." + Chr$(13)
  1850.     m$ = m$ + "..2222.." + Chr$(13)
  1851.     m$ = m$ + "........" + Chr$(13)
  1852.     m$ = m$ + "........" + Chr$(13)
  1853.     arrTileText(108) = m$
  1854.  
  1855.     m$ = ""
  1856.     m$ = m$ + "........" + Chr$(13)
  1857.     m$ = m$ + ".22..22." + Chr$(13)
  1858.     m$ = m$ + ".2222222" + Chr$(13)
  1859.     m$ = m$ + ".2222222" + Chr$(13)
  1860.     m$ = m$ + ".22.2.22" + Chr$(13)
  1861.     m$ = m$ + ".22...22" + Chr$(13)
  1862.     m$ = m$ + "........" + Chr$(13)
  1863.     m$ = m$ + "........" + Chr$(13)
  1864.     arrTileText(109) = m$
  1865.  
  1866.     m$ = ""
  1867.     m$ = m$ + "........" + Chr$(13)
  1868.     m$ = m$ + ".22222.." + Chr$(13)
  1869.     m$ = m$ + ".22..22." + Chr$(13)
  1870.     m$ = m$ + ".22..22." + Chr$(13)
  1871.     m$ = m$ + ".22..22." + Chr$(13)
  1872.     m$ = m$ + ".22..22." + Chr$(13)
  1873.     m$ = m$ + "........" + Chr$(13)
  1874.     m$ = m$ + "........" + Chr$(13)
  1875.     arrTileText(110) = m$
  1876.  
  1877.     m$ = ""
  1878.     m$ = m$ + "........" + Chr$(13)
  1879.     m$ = m$ + "..2222.." + Chr$(13)
  1880.     m$ = m$ + ".22..22." + Chr$(13)
  1881.     m$ = m$ + ".22..22." + Chr$(13)
  1882.     m$ = m$ + ".22..22." + Chr$(13)
  1883.     m$ = m$ + "..2222.." + Chr$(13)
  1884.     m$ = m$ + "........" + Chr$(13)
  1885.     m$ = m$ + "........" + Chr$(13)
  1886.     arrTileText(111) = m$
  1887.  
  1888.     m$ = ""
  1889.     m$ = m$ + "........" + Chr$(13)
  1890.     m$ = m$ + ".22222.." + Chr$(13)
  1891.     m$ = m$ + ".22..22." + Chr$(13)
  1892.     m$ = m$ + ".22..22." + Chr$(13)
  1893.     m$ = m$ + ".22222.." + Chr$(13)
  1894.     m$ = m$ + ".22....." + Chr$(13)
  1895.     m$ = m$ + ".22....." + Chr$(13)
  1896.     m$ = m$ + "........" + Chr$(13)
  1897.     arrTileText(112) = m$
  1898.  
  1899.     m$ = ""
  1900.     m$ = m$ + "........" + Chr$(13)
  1901.     m$ = m$ + "..22222." + Chr$(13)
  1902.     m$ = m$ + ".22..22." + Chr$(13)
  1903.     m$ = m$ + ".22..22." + Chr$(13)
  1904.     m$ = m$ + "..22222." + Chr$(13)
  1905.     m$ = m$ + ".....22." + Chr$(13)
  1906.     m$ = m$ + ".....22." + Chr$(13)
  1907.     m$ = m$ + "........" + Chr$(13)
  1908.     arrTileText(113) = m$
  1909.  
  1910.     m$ = ""
  1911.     m$ = m$ + "........" + Chr$(13)
  1912.     m$ = m$ + ".22222.." + Chr$(13)
  1913.     m$ = m$ + ".22..22." + Chr$(13)
  1914.     m$ = m$ + ".22....." + Chr$(13)
  1915.     m$ = m$ + ".22....." + Chr$(13)
  1916.     m$ = m$ + ".22....." + Chr$(13)
  1917.     m$ = m$ + "........" + Chr$(13)
  1918.     m$ = m$ + "........" + Chr$(13)
  1919.     arrTileText(114) = m$
  1920.  
  1921.     m$ = ""
  1922.     m$ = m$ + "........" + Chr$(13)
  1923.     m$ = m$ + "..22222." + Chr$(13)
  1924.     m$ = m$ + ".22....." + Chr$(13)
  1925.     m$ = m$ + "..2222.." + Chr$(13)
  1926.     m$ = m$ + ".....22." + Chr$(13)
  1927.     m$ = m$ + ".22222.." + Chr$(13)
  1928.     m$ = m$ + "........" + Chr$(13)
  1929.     m$ = m$ + "........" + Chr$(13)
  1930.     arrTileText(115) = m$
  1931.  
  1932.     m$ = ""
  1933.     m$ = m$ + "...22..." + Chr$(13)
  1934.     m$ = m$ + ".222222." + Chr$(13)
  1935.     m$ = m$ + "...22..." + Chr$(13)
  1936.     m$ = m$ + "...22..." + Chr$(13)
  1937.     m$ = m$ + "...22..." + Chr$(13)
  1938.     m$ = m$ + "....222." + Chr$(13)
  1939.     m$ = m$ + "........" + Chr$(13)
  1940.     m$ = m$ + "........" + Chr$(13)
  1941.     arrTileText(116) = m$
  1942.  
  1943.     m$ = ""
  1944.     m$ = m$ + "........" + Chr$(13)
  1945.     m$ = m$ + ".22..22." + Chr$(13)
  1946.     m$ = m$ + ".22..22." + Chr$(13)
  1947.     m$ = m$ + ".22..22." + Chr$(13)
  1948.     m$ = m$ + ".22..22." + Chr$(13)
  1949.     m$ = m$ + "..22222." + Chr$(13)
  1950.     m$ = m$ + "........" + Chr$(13)
  1951.     m$ = m$ + "........" + Chr$(13)
  1952.     arrTileText(117) = m$
  1953.  
  1954.     m$ = ""
  1955.     m$ = m$ + "........" + Chr$(13)
  1956.     m$ = m$ + ".22..22." + Chr$(13)
  1957.     m$ = m$ + ".22..22." + Chr$(13)
  1958.     m$ = m$ + ".22..22." + Chr$(13)
  1959.     m$ = m$ + "..2222.." + Chr$(13)
  1960.     m$ = m$ + "...22..." + Chr$(13)
  1961.     m$ = m$ + "........" + Chr$(13)
  1962.     m$ = m$ + "........" + Chr$(13)
  1963.     arrTileText(118) = m$
  1964.  
  1965.     m$ = ""
  1966.     m$ = m$ + "........" + Chr$(13)
  1967.     m$ = m$ + ".22...22" + Chr$(13)
  1968.     m$ = m$ + ".22.2.22" + Chr$(13)
  1969.     m$ = m$ + ".2222222" + Chr$(13)
  1970.     m$ = m$ + "..22222." + Chr$(13)
  1971.     m$ = m$ + "..22.22." + Chr$(13)
  1972.     m$ = m$ + "........" + Chr$(13)
  1973.     m$ = m$ + "........" + Chr$(13)
  1974.     arrTileText(119) = m$
  1975.  
  1976.     m$ = ""
  1977.     m$ = m$ + "........" + Chr$(13)
  1978.     m$ = m$ + ".22..22." + Chr$(13)
  1979.     m$ = m$ + "..2222.." + Chr$(13)
  1980.     m$ = m$ + "...22..." + Chr$(13)
  1981.     m$ = m$ + "..2222.." + Chr$(13)
  1982.     m$ = m$ + ".22..22." + Chr$(13)
  1983.     m$ = m$ + "........" + Chr$(13)
  1984.     m$ = m$ + "........" + Chr$(13)
  1985.     arrTileText(120) = m$
  1986.  
  1987.     m$ = ""
  1988.     m$ = m$ + "........" + Chr$(13)
  1989.     m$ = m$ + ".22..22." + Chr$(13)
  1990.     m$ = m$ + ".22..22." + Chr$(13)
  1991.     m$ = m$ + ".22..22." + Chr$(13)
  1992.     m$ = m$ + "..22222." + Chr$(13)
  1993.     m$ = m$ + "....22.." + Chr$(13)
  1994.     m$ = m$ + ".2222..." + Chr$(13)
  1995.     m$ = m$ + "........" + Chr$(13)
  1996.     arrTileText(121) = m$
  1997.  
  1998.     m$ = ""
  1999.     m$ = m$ + "........" + Chr$(13)
  2000.     m$ = m$ + ".222222." + Chr$(13)
  2001.     m$ = m$ + "....22.." + Chr$(13)
  2002.     m$ = m$ + "...22..." + Chr$(13)
  2003.     m$ = m$ + "..22...." + Chr$(13)
  2004.     m$ = m$ + ".222222." + Chr$(13)
  2005.     m$ = m$ + "........" + Chr$(13)
  2006.     m$ = m$ + "........" + Chr$(13)
  2007.     arrTileText(122) = m$
  2008.  
  2009.     m$ = ""
  2010.     m$ = m$ + "...222.." + Chr$(13)
  2011.     m$ = m$ + "..22...." + Chr$(13)
  2012.     m$ = m$ + "..2....." + Chr$(13)
  2013.     m$ = m$ + ".22....." + Chr$(13)
  2014.     m$ = m$ + "..2....." + Chr$(13)
  2015.     m$ = m$ + "..22...." + Chr$(13)
  2016.     m$ = m$ + "...222.." + Chr$(13)
  2017.     m$ = m$ + "........" + Chr$(13)
  2018.     arrTileText(123) = m$
  2019.  
  2020.     m$ = ""
  2021.     m$ = m$ + "....2..." + Chr$(13)
  2022.     m$ = m$ + "....2..." + Chr$(13)
  2023.     m$ = m$ + "....2..." + Chr$(13)
  2024.     m$ = m$ + "....2..." + Chr$(13)
  2025.     m$ = m$ + "....2..." + Chr$(13)
  2026.     m$ = m$ + "....2..." + Chr$(13)
  2027.     m$ = m$ + "....2..." + Chr$(13)
  2028.     m$ = m$ + "........" + Chr$(13)
  2029.     arrTileText(124) = m$
  2030.  
  2031.     m$ = ""
  2032.     m$ = m$ + "..222..." + Chr$(13)
  2033.     m$ = m$ + "....22.." + Chr$(13)
  2034.     m$ = m$ + ".....2.." + Chr$(13)
  2035.     m$ = m$ + ".....22." + Chr$(13)
  2036.     m$ = m$ + ".....2.." + Chr$(13)
  2037.     m$ = m$ + "....22.." + Chr$(13)
  2038.     m$ = m$ + "..222..." + Chr$(13)
  2039.     m$ = m$ + "........" + Chr$(13)
  2040.     arrTileText(125) = m$
  2041.  
  2042.     m$ = ""
  2043.     m$ = m$ + "........" + Chr$(13)
  2044.     m$ = m$ + ".22....2" + Chr$(13)
  2045.     m$ = m$ + "2..2..2." + Chr$(13)
  2046.     m$ = m$ + "....22.." + Chr$(13)
  2047.     m$ = m$ + "........" + Chr$(13)
  2048.     m$ = m$ + "........" + Chr$(13)
  2049.     m$ = m$ + "........" + Chr$(13)
  2050.     m$ = m$ + "........" + Chr$(13)
  2051.     arrTileText(126) = m$
  2052.  
  2053.     m$ = ""
  2054.     m$ = m$ + "........" + Chr$(13)
  2055.     m$ = m$ + "........" + Chr$(13)
  2056.     m$ = m$ + "........" + Chr$(13)
  2057.     m$ = m$ + "........" + Chr$(13)
  2058.     m$ = m$ + "........" + Chr$(13)
  2059.     m$ = m$ + "........" + Chr$(13)
  2060.     m$ = m$ + "........" + Chr$(13)
  2061.     m$ = m$ + "........" + Chr$(13)
  2062.     arrTileText(127) = m$
  2063.  
  2064.     m$ = ""
  2065.     m$ = m$ + "........" + Chr$(13)
  2066.     m$ = m$ + "........" + Chr$(13)
  2067.     m$ = m$ + "........" + Chr$(13)
  2068.     m$ = m$ + "22222222" + Chr$(13)
  2069.     m$ = m$ + "22222222" + Chr$(13)
  2070.     m$ = m$ + "........" + Chr$(13)
  2071.     m$ = m$ + "........" + Chr$(13)
  2072.     m$ = m$ + "........" + Chr$(13)
  2073.     arrTileText(128) = m$
  2074.  
  2075.     m$ = ""
  2076.     m$ = m$ + "....2..." + Chr$(13)
  2077.     m$ = m$ + "...222.." + Chr$(13)
  2078.     m$ = m$ + "..22222." + Chr$(13)
  2079.     m$ = m$ + ".2222222" + Chr$(13)
  2080.     m$ = m$ + ".2222222" + Chr$(13)
  2081.     m$ = m$ + "...222.." + Chr$(13)
  2082.     m$ = m$ + "..22222." + Chr$(13)
  2083.     m$ = m$ + "........" + Chr$(13)
  2084.     arrTileText(129) = m$
  2085.  
  2086.     m$ = ""
  2087.     m$ = m$ + "...22..." + Chr$(13)
  2088.     m$ = m$ + "...22..." + Chr$(13)
  2089.     m$ = m$ + "...22..." + Chr$(13)
  2090.     m$ = m$ + "...22..." + Chr$(13)
  2091.     m$ = m$ + "...22..." + Chr$(13)
  2092.     m$ = m$ + "...22..." + Chr$(13)
  2093.     m$ = m$ + "...22..." + Chr$(13)
  2094.     m$ = m$ + "...22..." + Chr$(13)
  2095.     arrTileText(130) = m$
  2096.  
  2097.     m$ = ""
  2098.     m$ = m$ + "........" + Chr$(13)
  2099.     m$ = m$ + "........" + Chr$(13)
  2100.     m$ = m$ + "........" + Chr$(13)
  2101.     m$ = m$ + "22222222" + Chr$(13)
  2102.     m$ = m$ + "22222222" + Chr$(13)
  2103.     m$ = m$ + "........" + Chr$(13)
  2104.     m$ = m$ + "........" + Chr$(13)
  2105.     m$ = m$ + "........" + Chr$(13)
  2106.     arrTileText(131) = m$
  2107.  
  2108.     m$ = ""
  2109.     m$ = m$ + "........" + Chr$(13)
  2110.     m$ = m$ + "........" + Chr$(13)
  2111.     m$ = m$ + "22222222" + Chr$(13)
  2112.     m$ = m$ + "22222222" + Chr$(13)
  2113.     m$ = m$ + "........" + Chr$(13)
  2114.     m$ = m$ + "........" + Chr$(13)
  2115.     m$ = m$ + "........" + Chr$(13)
  2116.     m$ = m$ + "........" + Chr$(13)
  2117.     arrTileText(132) = m$
  2118.  
  2119.     m$ = ""
  2120.     m$ = m$ + "........" + Chr$(13)
  2121.     m$ = m$ + "22222222" + Chr$(13)
  2122.     m$ = m$ + "22222222" + Chr$(13)
  2123.     m$ = m$ + "........" + Chr$(13)
  2124.     m$ = m$ + "........" + Chr$(13)
  2125.     m$ = m$ + "........" + Chr$(13)
  2126.     m$ = m$ + "........" + Chr$(13)
  2127.     m$ = m$ + "........" + Chr$(13)
  2128.     arrTileText(133) = m$
  2129.  
  2130.     m$ = ""
  2131.     m$ = m$ + "........" + Chr$(13)
  2132.     m$ = m$ + "........" + Chr$(13)
  2133.     m$ = m$ + "........" + Chr$(13)
  2134.     m$ = m$ + "........" + Chr$(13)
  2135.     m$ = m$ + "22222222" + Chr$(13)
  2136.     m$ = m$ + "22222222" + Chr$(13)
  2137.     m$ = m$ + "........" + Chr$(13)
  2138.     m$ = m$ + "........" + Chr$(13)
  2139.     arrTileText(134) = m$
  2140.  
  2141.     m$ = ""
  2142.     m$ = m$ + "..22...." + Chr$(13)
  2143.     m$ = m$ + "..22...." + Chr$(13)
  2144.     m$ = m$ + "..22...." + Chr$(13)
  2145.     m$ = m$ + "..22...." + Chr$(13)
  2146.     m$ = m$ + "..22...." + Chr$(13)
  2147.     m$ = m$ + "..22...." + Chr$(13)
  2148.     m$ = m$ + "..22...." + Chr$(13)
  2149.     m$ = m$ + "..22...." + Chr$(13)
  2150.     arrTileText(135) = m$
  2151.  
  2152.     m$ = ""
  2153.     m$ = m$ + "....22.." + Chr$(13)
  2154.     m$ = m$ + "....22.." + Chr$(13)
  2155.     m$ = m$ + "....22.." + Chr$(13)
  2156.     m$ = m$ + "....22.." + Chr$(13)
  2157.     m$ = m$ + "....22.." + Chr$(13)
  2158.     m$ = m$ + "....22.." + Chr$(13)
  2159.     m$ = m$ + "....22.." + Chr$(13)
  2160.     m$ = m$ + "....22.." + Chr$(13)
  2161.     arrTileText(136) = m$
  2162.  
  2163.     m$ = ""
  2164.     m$ = m$ + "........" + Chr$(13)
  2165.     m$ = m$ + "........" + Chr$(13)
  2166.     m$ = m$ + "........" + Chr$(13)
  2167.     m$ = m$ + "222....." + Chr$(13)
  2168.     m$ = m$ + "2222...." + Chr$(13)
  2169.     m$ = m$ + "..222..." + Chr$(13)
  2170.     m$ = m$ + "...22..." + Chr$(13)
  2171.     m$ = m$ + "...22..." + Chr$(13)
  2172.     arrTileText(137) = m$
  2173.  
  2174.     m$ = ""
  2175.     m$ = m$ + "...22..." + Chr$(13)
  2176.     m$ = m$ + "...22..." + Chr$(13)
  2177.     m$ = m$ + "...222.." + Chr$(13)
  2178.     m$ = m$ + "....2222" + Chr$(13)
  2179.     m$ = m$ + ".....222" + Chr$(13)
  2180.     m$ = m$ + "........" + Chr$(13)
  2181.     m$ = m$ + "........" + Chr$(13)
  2182.     m$ = m$ + "........" + Chr$(13)
  2183.     arrTileText(138) = m$
  2184.  
  2185.     m$ = ""
  2186.     m$ = m$ + "...22..." + Chr$(13)
  2187.     m$ = m$ + "...22..." + Chr$(13)
  2188.     m$ = m$ + "..222..." + Chr$(13)
  2189.     m$ = m$ + "2222...." + Chr$(13)
  2190.     m$ = m$ + "222....." + Chr$(13)
  2191.     m$ = m$ + "........" + Chr$(13)
  2192.     m$ = m$ + "........" + Chr$(13)
  2193.     m$ = m$ + "........" + Chr$(13)
  2194.     arrTileText(139) = m$
  2195.  
  2196.     m$ = ""
  2197.     m$ = m$ + "22......" + Chr$(13)
  2198.     m$ = m$ + "22......" + Chr$(13)
  2199.     m$ = m$ + "22......" + Chr$(13)
  2200.     m$ = m$ + "22......" + Chr$(13)
  2201.     m$ = m$ + "22......" + Chr$(13)
  2202.     m$ = m$ + "22......" + Chr$(13)
  2203.     m$ = m$ + "22222222" + Chr$(13)
  2204.     m$ = m$ + "22222222" + Chr$(13)
  2205.     arrTileText(140) = m$
  2206.  
  2207.     m$ = ""
  2208.     m$ = m$ + "22......" + Chr$(13)
  2209.     m$ = m$ + "222....." + Chr$(13)
  2210.     m$ = m$ + ".222...." + Chr$(13)
  2211.     m$ = m$ + "..222..." + Chr$(13)
  2212.     m$ = m$ + "...222.." + Chr$(13)
  2213.     m$ = m$ + "....222." + Chr$(13)
  2214.     m$ = m$ + ".....222" + Chr$(13)
  2215.     m$ = m$ + "......22" + Chr$(13)
  2216.     arrTileText(141) = m$
  2217.  
  2218.     m$ = ""
  2219.     m$ = m$ + "......22" + Chr$(13)
  2220.     m$ = m$ + ".....222" + Chr$(13)
  2221.     m$ = m$ + "....222." + Chr$(13)
  2222.     m$ = m$ + "...222.." + Chr$(13)
  2223.     m$ = m$ + "..222..." + Chr$(13)
  2224.     m$ = m$ + ".222...." + Chr$(13)
  2225.     m$ = m$ + "222....." + Chr$(13)
  2226.     m$ = m$ + "22......" + Chr$(13)
  2227.     arrTileText(142) = m$
  2228.  
  2229.     m$ = ""
  2230.     m$ = m$ + "22222222" + Chr$(13)
  2231.     m$ = m$ + "22222222" + Chr$(13)
  2232.     m$ = m$ + "22......" + Chr$(13)
  2233.     m$ = m$ + "22......" + Chr$(13)
  2234.     m$ = m$ + "22......" + Chr$(13)
  2235.     m$ = m$ + "22......" + Chr$(13)
  2236.     m$ = m$ + "22......" + Chr$(13)
  2237.     m$ = m$ + "22......" + Chr$(13)
  2238.     arrTileText(143) = m$
  2239.  
  2240.     m$ = ""
  2241.     m$ = m$ + "22222222" + Chr$(13)
  2242.     m$ = m$ + "22222222" + Chr$(13)
  2243.     m$ = m$ + "......22" + Chr$(13)
  2244.     m$ = m$ + "......22" + Chr$(13)
  2245.     m$ = m$ + "......22" + Chr$(13)
  2246.     m$ = m$ + "......22" + Chr$(13)
  2247.     m$ = m$ + "......22" + Chr$(13)
  2248.     m$ = m$ + "......22" + Chr$(13)
  2249.     arrTileText(144) = m$
  2250.  
  2251.     m$ = ""
  2252.     m$ = m$ + "........" + Chr$(13)
  2253.     m$ = m$ + "..2222.." + Chr$(13)
  2254.     m$ = m$ + ".222222." + Chr$(13)
  2255.     m$ = m$ + ".222222." + Chr$(13)
  2256.     m$ = m$ + ".222222." + Chr$(13)
  2257.     m$ = m$ + ".222222." + Chr$(13)
  2258.     m$ = m$ + "..2222.." + Chr$(13)
  2259.     m$ = m$ + "........" + Chr$(13)
  2260.     arrTileText(145) = m$
  2261.  
  2262.     m$ = ""
  2263.     m$ = m$ + "........" + Chr$(13)
  2264.     m$ = m$ + "........" + Chr$(13)
  2265.     m$ = m$ + "........" + Chr$(13)
  2266.     m$ = m$ + "........" + Chr$(13)
  2267.     m$ = m$ + "........" + Chr$(13)
  2268.     m$ = m$ + "22222222" + Chr$(13)
  2269.     m$ = m$ + "22222222" + Chr$(13)
  2270.     m$ = m$ + "........" + Chr$(13)
  2271.     arrTileText(146) = m$
  2272.  
  2273.     m$ = ""
  2274.     m$ = m$ + "..22.22." + Chr$(13)
  2275.     m$ = m$ + ".2222222" + Chr$(13)
  2276.     m$ = m$ + ".2222222" + Chr$(13)
  2277.     m$ = m$ + ".2222222" + Chr$(13)
  2278.     m$ = m$ + "..22222." + Chr$(13)
  2279.     m$ = m$ + "...222.." + Chr$(13)
  2280.     m$ = m$ + "....2..." + Chr$(13)
  2281.     m$ = m$ + "........" + Chr$(13)
  2282.     arrTileText(147) = m$
  2283.  
  2284.     m$ = ""
  2285.     m$ = m$ + ".22....." + Chr$(13)
  2286.     m$ = m$ + ".22....." + Chr$(13)
  2287.     m$ = m$ + ".22....." + Chr$(13)
  2288.     m$ = m$ + ".22....." + Chr$(13)
  2289.     m$ = m$ + ".22....." + Chr$(13)
  2290.     m$ = m$ + ".22....." + Chr$(13)
  2291.     m$ = m$ + ".22....." + Chr$(13)
  2292.     m$ = m$ + ".22....." + Chr$(13)
  2293.     arrTileText(148) = m$
  2294.  
  2295.     m$ = ""
  2296.     m$ = m$ + "........" + Chr$(13)
  2297.     m$ = m$ + "........" + Chr$(13)
  2298.     m$ = m$ + "........" + Chr$(13)
  2299.     m$ = m$ + ".....222" + Chr$(13)
  2300.     m$ = m$ + "....2222" + Chr$(13)
  2301.     m$ = m$ + "...222.." + Chr$(13)
  2302.     m$ = m$ + "...22..." + Chr$(13)
  2303.     m$ = m$ + "...22..." + Chr$(13)
  2304.     arrTileText(149) = m$
  2305.  
  2306.     m$ = ""
  2307.     m$ = m$ + "22....22" + Chr$(13)
  2308.     m$ = m$ + "222..222" + Chr$(13)
  2309.     m$ = m$ + ".222222." + Chr$(13)
  2310.     m$ = m$ + "..2222.." + Chr$(13)
  2311.     m$ = m$ + "..2222.." + Chr$(13)
  2312.     m$ = m$ + ".222222." + Chr$(13)
  2313.     m$ = m$ + "222..222" + Chr$(13)
  2314.     m$ = m$ + "22....22" + Chr$(13)
  2315.     arrTileText(150) = m$
  2316.  
  2317.     m$ = ""
  2318.     m$ = m$ + "........" + Chr$(13)
  2319.     m$ = m$ + "..2222.." + Chr$(13)
  2320.     m$ = m$ + ".222222." + Chr$(13)
  2321.     m$ = m$ + ".22..22." + Chr$(13)
  2322.     m$ = m$ + ".22..22." + Chr$(13)
  2323.     m$ = m$ + ".222222." + Chr$(13)
  2324.     m$ = m$ + "..2222.." + Chr$(13)
  2325.     m$ = m$ + "........" + Chr$(13)
  2326.     arrTileText(151) = m$
  2327.  
  2328.     m$ = ""
  2329.     m$ = m$ + "...22..." + Chr$(13)
  2330.     m$ = m$ + "...22..." + Chr$(13)
  2331.     m$ = m$ + ".22..22." + Chr$(13)
  2332.     m$ = m$ + ".22..22." + Chr$(13)
  2333.     m$ = m$ + "...22..." + Chr$(13)
  2334.     m$ = m$ + "...22..." + Chr$(13)
  2335.     m$ = m$ + "..2222.." + Chr$(13)
  2336.     m$ = m$ + "........" + Chr$(13)
  2337.     arrTileText(152) = m$
  2338.  
  2339.     m$ = ""
  2340.     m$ = m$ + ".....22." + Chr$(13)
  2341.     m$ = m$ + ".....22." + Chr$(13)
  2342.     m$ = m$ + ".....22." + Chr$(13)
  2343.     m$ = m$ + ".....22." + Chr$(13)
  2344.     m$ = m$ + ".....22." + Chr$(13)
  2345.     m$ = m$ + ".....22." + Chr$(13)
  2346.     m$ = m$ + ".....22." + Chr$(13)
  2347.     m$ = m$ + ".....22." + Chr$(13)
  2348.     arrTileText(153) = m$
  2349.  
  2350.     m$ = ""
  2351.     m$ = m$ + "....2..." + Chr$(13)
  2352.     m$ = m$ + "...222.." + Chr$(13)
  2353.     m$ = m$ + "..22222." + Chr$(13)
  2354.     m$ = m$ + ".2222222" + Chr$(13)
  2355.     m$ = m$ + "..22222." + Chr$(13)
  2356.     m$ = m$ + "...222.." + Chr$(13)
  2357.     m$ = m$ + "....2..." + Chr$(13)
  2358.     m$ = m$ + "........" + Chr$(13)
  2359.     arrTileText(154) = m$
  2360.  
  2361.     m$ = ""
  2362.     m$ = m$ + "...22..." + Chr$(13)
  2363.     m$ = m$ + "...22..." + Chr$(13)
  2364.     m$ = m$ + "...22..." + Chr$(13)
  2365.     m$ = m$ + "22222222" + Chr$(13)
  2366.     m$ = m$ + "22222222" + Chr$(13)
  2367.     m$ = m$ + "...22..." + Chr$(13)
  2368.     m$ = m$ + "...22..." + Chr$(13)
  2369.     m$ = m$ + "...22..." + Chr$(13)
  2370.     arrTileText(155) = m$
  2371.  
  2372.     m$ = ""
  2373.     m$ = m$ + "22......" + Chr$(13)
  2374.     m$ = m$ + "22......" + Chr$(13)
  2375.     m$ = m$ + "..22...." + Chr$(13)
  2376.     m$ = m$ + "..22...." + Chr$(13)
  2377.     m$ = m$ + "22......" + Chr$(13)
  2378.     m$ = m$ + "22......" + Chr$(13)
  2379.     m$ = m$ + "..22...." + Chr$(13)
  2380.     m$ = m$ + "..22...." + Chr$(13)
  2381.     arrTileText(156) = m$
  2382.  
  2383.     m$ = ""
  2384.     m$ = m$ + "...22..." + Chr$(13)
  2385.     m$ = m$ + "...22..." + Chr$(13)
  2386.     m$ = m$ + "...22..." + Chr$(13)
  2387.     m$ = m$ + "...22..." + Chr$(13)
  2388.     m$ = m$ + "...22..." + Chr$(13)
  2389.     m$ = m$ + "...22..." + Chr$(13)
  2390.     m$ = m$ + "...22..." + Chr$(13)
  2391.     m$ = m$ + "...22..." + Chr$(13)
  2392.     arrTileText(157) = m$
  2393.  
  2394.     m$ = ""
  2395.     m$ = m$ + "........" + Chr$(13)
  2396.     m$ = m$ + "........" + Chr$(13)
  2397.     m$ = m$ + "......22" + Chr$(13)
  2398.     m$ = m$ + "..22222." + Chr$(13)
  2399.     m$ = m$ + ".222.22." + Chr$(13)
  2400.     m$ = m$ + "..22.22." + Chr$(13)
  2401.     m$ = m$ + "..22.22." + Chr$(13)
  2402.     m$ = m$ + "........" + Chr$(13)
  2403.     arrTileText(158) = m$
  2404.  
  2405.     m$ = ""
  2406.     m$ = m$ + "22222222" + Chr$(13)
  2407.     m$ = m$ + ".2222222" + Chr$(13)
  2408.     m$ = m$ + "..222222" + Chr$(13)
  2409.     m$ = m$ + "...22222" + Chr$(13)
  2410.     m$ = m$ + "....2222" + Chr$(13)
  2411.     m$ = m$ + ".....222" + Chr$(13)
  2412.     m$ = m$ + "......22" + Chr$(13)
  2413.     m$ = m$ + ".......2" + Chr$(13)
  2414.     arrTileText(159) = m$
  2415.  
  2416.     m$ = ""
  2417.     m$ = m$ + "........" + Chr$(13)
  2418.     m$ = m$ + "........" + Chr$(13)
  2419.     m$ = m$ + "........" + Chr$(13)
  2420.     m$ = m$ + "........" + Chr$(13)
  2421.     m$ = m$ + "........" + Chr$(13)
  2422.     m$ = m$ + "........" + Chr$(13)
  2423.     m$ = m$ + "........" + Chr$(13)
  2424.     m$ = m$ + "........" + Chr$(13)
  2425.     arrTileText(160) = m$
  2426.  
  2427.     m$ = ""
  2428.     m$ = m$ + "2222...." + Chr$(13)
  2429.     m$ = m$ + "2222...." + Chr$(13)
  2430.     m$ = m$ + "2222...." + Chr$(13)
  2431.     m$ = m$ + "2222...." + Chr$(13)
  2432.     m$ = m$ + "2222...." + Chr$(13)
  2433.     m$ = m$ + "2222...." + Chr$(13)
  2434.     m$ = m$ + "2222...." + Chr$(13)
  2435.     m$ = m$ + "2222...." + Chr$(13)
  2436.     arrTileText(161) = m$
  2437.  
  2438.     m$ = ""
  2439.     m$ = m$ + "........" + Chr$(13)
  2440.     m$ = m$ + "........" + Chr$(13)
  2441.     m$ = m$ + "........" + Chr$(13)
  2442.     m$ = m$ + "........" + Chr$(13)
  2443.     m$ = m$ + "22222222" + Chr$(13)
  2444.     m$ = m$ + "22222222" + Chr$(13)
  2445.     m$ = m$ + "22222222" + Chr$(13)
  2446.     m$ = m$ + "22222222" + Chr$(13)
  2447.     arrTileText(162) = m$
  2448.  
  2449.     m$ = ""
  2450.     m$ = m$ + "22222222" + Chr$(13)
  2451.     m$ = m$ + "........" + Chr$(13)
  2452.     m$ = m$ + "........" + Chr$(13)
  2453.     m$ = m$ + "........" + Chr$(13)
  2454.     m$ = m$ + "........" + Chr$(13)
  2455.     m$ = m$ + "........" + Chr$(13)
  2456.     m$ = m$ + "........" + Chr$(13)
  2457.     m$ = m$ + "........" + Chr$(13)
  2458.     arrTileText(163) = m$
  2459.  
  2460.     m$ = ""
  2461.     m$ = m$ + "........" + Chr$(13)
  2462.     m$ = m$ + "........" + Chr$(13)
  2463.     m$ = m$ + "........" + Chr$(13)
  2464.     m$ = m$ + "........" + Chr$(13)
  2465.     m$ = m$ + "........" + Chr$(13)
  2466.     m$ = m$ + "........" + Chr$(13)
  2467.     m$ = m$ + "........" + Chr$(13)
  2468.     m$ = m$ + "22222222" + Chr$(13)
  2469.     arrTileText(164) = m$
  2470.  
  2471.     m$ = ""
  2472.     m$ = m$ + "22......" + Chr$(13)
  2473.     m$ = m$ + "22......" + Chr$(13)
  2474.     m$ = m$ + "22......" + Chr$(13)
  2475.     m$ = m$ + "22......" + Chr$(13)
  2476.     m$ = m$ + "22......" + Chr$(13)
  2477.     m$ = m$ + "22......" + Chr$(13)
  2478.     m$ = m$ + "22......" + Chr$(13)
  2479.     m$ = m$ + "22......" + Chr$(13)
  2480.     arrTileText(165) = m$
  2481.  
  2482.     m$ = ""
  2483.     m$ = m$ + "22..22.." + Chr$(13)
  2484.     m$ = m$ + "22..22.." + Chr$(13)
  2485.     m$ = m$ + "..22..22" + Chr$(13)
  2486.     m$ = m$ + "..22..22" + Chr$(13)
  2487.     m$ = m$ + "22..22.." + Chr$(13)
  2488.     m$ = m$ + "22..22.." + Chr$(13)
  2489.     m$ = m$ + "..22..22" + Chr$(13)
  2490.     m$ = m$ + "..22..22" + Chr$(13)
  2491.     arrTileText(166) = m$
  2492.  
  2493.     m$ = ""
  2494.     m$ = m$ + "......22" + Chr$(13)
  2495.     m$ = m$ + "......22" + Chr$(13)
  2496.     m$ = m$ + "......22" + Chr$(13)
  2497.     m$ = m$ + "......22" + Chr$(13)
  2498.     m$ = m$ + "......22" + Chr$(13)
  2499.     m$ = m$ + "......22" + Chr$(13)
  2500.     m$ = m$ + "......22" + Chr$(13)
  2501.     m$ = m$ + "......22" + Chr$(13)
  2502.     arrTileText(167) = m$
  2503.  
  2504.     m$ = ""
  2505.     m$ = m$ + "........" + Chr$(13)
  2506.     m$ = m$ + "........" + Chr$(13)
  2507.     m$ = m$ + "........" + Chr$(13)
  2508.     m$ = m$ + "........" + Chr$(13)
  2509.     m$ = m$ + "22..22.." + Chr$(13)
  2510.     m$ = m$ + "22..22.." + Chr$(13)
  2511.     m$ = m$ + "..22..22" + Chr$(13)
  2512.     m$ = m$ + "..22..22" + Chr$(13)
  2513.     arrTileText(168) = m$
  2514.  
  2515.     m$ = ""
  2516.     m$ = m$ + "22222222" + Chr$(13)
  2517.     m$ = m$ + "2222222." + Chr$(13)
  2518.     m$ = m$ + "222222.." + Chr$(13)
  2519.     m$ = m$ + "22222..." + Chr$(13)
  2520.     m$ = m$ + "2222...." + Chr$(13)
  2521.     m$ = m$ + "222....." + Chr$(13)
  2522.     m$ = m$ + "22......" + Chr$(13)
  2523.     m$ = m$ + "2......." + Chr$(13)
  2524.     arrTileText(169) = m$
  2525.  
  2526.     m$ = ""
  2527.     m$ = m$ + "......22" + Chr$(13)
  2528.     m$ = m$ + "......22" + Chr$(13)
  2529.     m$ = m$ + "......22" + Chr$(13)
  2530.     m$ = m$ + "......22" + Chr$(13)
  2531.     m$ = m$ + "......22" + Chr$(13)
  2532.     m$ = m$ + "......22" + Chr$(13)
  2533.     m$ = m$ + "......22" + Chr$(13)
  2534.     m$ = m$ + "......22" + Chr$(13)
  2535.     arrTileText(170) = m$
  2536.  
  2537.     m$ = ""
  2538.     m$ = m$ + "...22..." + Chr$(13)
  2539.     m$ = m$ + "...22..." + Chr$(13)
  2540.     m$ = m$ + "...22..." + Chr$(13)
  2541.     m$ = m$ + "...22222" + Chr$(13)
  2542.     m$ = m$ + "...22222" + Chr$(13)
  2543.     m$ = m$ + "...22..." + Chr$(13)
  2544.     m$ = m$ + "...22..." + Chr$(13)
  2545.     m$ = m$ + "...22..." + Chr$(13)
  2546.     arrTileText(171) = m$
  2547.  
  2548.     m$ = ""
  2549.     m$ = m$ + "........" + Chr$(13)
  2550.     m$ = m$ + "........" + Chr$(13)
  2551.     m$ = m$ + "........" + Chr$(13)
  2552.     m$ = m$ + "........" + Chr$(13)
  2553.     m$ = m$ + "....2222" + Chr$(13)
  2554.     m$ = m$ + "....2222" + Chr$(13)
  2555.     m$ = m$ + "....2222" + Chr$(13)
  2556.     m$ = m$ + "....2222" + Chr$(13)
  2557.     arrTileText(172) = m$
  2558.  
  2559.     m$ = ""
  2560.     m$ = m$ + "...22..." + Chr$(13)
  2561.     m$ = m$ + "...22..." + Chr$(13)
  2562.     m$ = m$ + "...22..." + Chr$(13)
  2563.     m$ = m$ + "...22222" + Chr$(13)
  2564.     m$ = m$ + "...22222" + Chr$(13)
  2565.     m$ = m$ + "........" + Chr$(13)
  2566.     m$ = m$ + "........" + Chr$(13)
  2567.     m$ = m$ + "........" + Chr$(13)
  2568.     arrTileText(173) = m$
  2569.  
  2570.     m$ = ""
  2571.     m$ = m$ + "........" + Chr$(13)
  2572.     m$ = m$ + "........" + Chr$(13)
  2573.     m$ = m$ + "........" + Chr$(13)
  2574.     m$ = m$ + "22222..." + Chr$(13)
  2575.     m$ = m$ + "22222..." + Chr$(13)
  2576.     m$ = m$ + "...22..." + Chr$(13)
  2577.     m$ = m$ + "...22..." + Chr$(13)
  2578.     m$ = m$ + "...22..." + Chr$(13)
  2579.     arrTileText(174) = m$
  2580.  
  2581.     m$ = ""
  2582.     m$ = m$ + "........" + Chr$(13)
  2583.     m$ = m$ + "........" + Chr$(13)
  2584.     m$ = m$ + "........" + Chr$(13)
  2585.     m$ = m$ + "........" + Chr$(13)
  2586.     m$ = m$ + "........" + Chr$(13)
  2587.     m$ = m$ + "........" + Chr$(13)
  2588.     m$ = m$ + "22222222" + Chr$(13)
  2589.     m$ = m$ + "22222222" + Chr$(13)
  2590.     arrTileText(175) = m$
  2591.  
  2592.     m$ = ""
  2593.     m$ = m$ + "........" + Chr$(13)
  2594.     m$ = m$ + "........" + Chr$(13)
  2595.     m$ = m$ + "........" + Chr$(13)
  2596.     m$ = m$ + "...22222" + Chr$(13)
  2597.     m$ = m$ + "...22222" + Chr$(13)
  2598.     m$ = m$ + "...22..." + Chr$(13)
  2599.     m$ = m$ + "...22..." + Chr$(13)
  2600.     m$ = m$ + "...22..." + Chr$(13)
  2601.     arrTileText(176) = m$
  2602.  
  2603.     m$ = ""
  2604.     m$ = m$ + "...22..." + Chr$(13)
  2605.     m$ = m$ + "...22..." + Chr$(13)
  2606.     m$ = m$ + "...22..." + Chr$(13)
  2607.     m$ = m$ + "22222222" + Chr$(13)
  2608.     m$ = m$ + "22222222" + Chr$(13)
  2609.     m$ = m$ + "........" + Chr$(13)
  2610.     m$ = m$ + "........" + Chr$(13)
  2611.     m$ = m$ + "........" + Chr$(13)
  2612.     arrTileText(177) = m$
  2613.  
  2614.     m$ = ""
  2615.     m$ = m$ + "........" + Chr$(13)
  2616.     m$ = m$ + "........" + Chr$(13)
  2617.     m$ = m$ + "........" + Chr$(13)
  2618.     m$ = m$ + "22222222" + Chr$(13)
  2619.     m$ = m$ + "22222222" + Chr$(13)
  2620.     m$ = m$ + "...22..." + Chr$(13)
  2621.     m$ = m$ + "...22..." + Chr$(13)
  2622.     m$ = m$ + "...22..." + Chr$(13)
  2623.     arrTileText(178) = m$
  2624.  
  2625.     m$ = ""
  2626.     m$ = m$ + "...22..." + Chr$(13)
  2627.     m$ = m$ + "...22..." + Chr$(13)
  2628.     m$ = m$ + "...22..." + Chr$(13)
  2629.     m$ = m$ + "22222..." + Chr$(13)
  2630.     m$ = m$ + "22222..." + Chr$(13)
  2631.     m$ = m$ + "...22..." + Chr$(13)
  2632.     m$ = m$ + "...22..." + Chr$(13)
  2633.     m$ = m$ + "...22..." + Chr$(13)
  2634.     arrTileText(179) = m$
  2635.  
  2636.     m$ = ""
  2637.     m$ = m$ + "22......" + Chr$(13)
  2638.     m$ = m$ + "22......" + Chr$(13)
  2639.     m$ = m$ + "22......" + Chr$(13)
  2640.     m$ = m$ + "22......" + Chr$(13)
  2641.     m$ = m$ + "22......" + Chr$(13)
  2642.     m$ = m$ + "22......" + Chr$(13)
  2643.     m$ = m$ + "22......" + Chr$(13)
  2644.     m$ = m$ + "22......" + Chr$(13)
  2645.     arrTileText(180) = m$
  2646.  
  2647.     m$ = ""
  2648.     m$ = m$ + "222....." + Chr$(13)
  2649.     m$ = m$ + "222....." + Chr$(13)
  2650.     m$ = m$ + "222....." + Chr$(13)
  2651.     m$ = m$ + "222....." + Chr$(13)
  2652.     m$ = m$ + "222....." + Chr$(13)
  2653.     m$ = m$ + "222....." + Chr$(13)
  2654.     m$ = m$ + "222....." + Chr$(13)
  2655.     m$ = m$ + "222....." + Chr$(13)
  2656.     arrTileText(181) = m$
  2657.  
  2658.     m$ = ""
  2659.     m$ = m$ + ".....222" + Chr$(13)
  2660.     m$ = m$ + ".....222" + Chr$(13)
  2661.     m$ = m$ + ".....222" + Chr$(13)
  2662.     m$ = m$ + ".....222" + Chr$(13)
  2663.     m$ = m$ + ".....222" + Chr$(13)
  2664.     m$ = m$ + ".....222" + Chr$(13)
  2665.     m$ = m$ + ".....222" + Chr$(13)
  2666.     m$ = m$ + ".....222" + Chr$(13)
  2667.     arrTileText(182) = m$
  2668.  
  2669.     m$ = ""
  2670.     m$ = m$ + "22222222" + Chr$(13)
  2671.     m$ = m$ + "22222222" + Chr$(13)
  2672.     m$ = m$ + "........" + Chr$(13)
  2673.     m$ = m$ + "........" + Chr$(13)
  2674.     m$ = m$ + "........" + Chr$(13)
  2675.     m$ = m$ + "........" + Chr$(13)
  2676.     m$ = m$ + "........" + Chr$(13)
  2677.     m$ = m$ + "........" + Chr$(13)
  2678.     arrTileText(183) = m$
  2679.  
  2680.     m$ = ""
  2681.     m$ = m$ + "22222222" + Chr$(13)
  2682.     m$ = m$ + "22222222" + Chr$(13)
  2683.     m$ = m$ + "22222222" + Chr$(13)
  2684.     m$ = m$ + "........" + Chr$(13)
  2685.     m$ = m$ + "........" + Chr$(13)
  2686.     m$ = m$ + "........" + Chr$(13)
  2687.     m$ = m$ + "........" + Chr$(13)
  2688.     m$ = m$ + "........" + Chr$(13)
  2689.     arrTileText(184) = m$
  2690.  
  2691.     m$ = ""
  2692.     m$ = m$ + "........" + Chr$(13)
  2693.     m$ = m$ + "........" + Chr$(13)
  2694.     m$ = m$ + "........" + Chr$(13)
  2695.     m$ = m$ + "........" + Chr$(13)
  2696.     m$ = m$ + "........" + Chr$(13)
  2697.     m$ = m$ + "22222222" + Chr$(13)
  2698.     m$ = m$ + "22222222" + Chr$(13)
  2699.     m$ = m$ + "22222222" + Chr$(13)
  2700.     arrTileText(185) = m$
  2701.  
  2702.     m$ = ""
  2703.     m$ = m$ + "......22" + Chr$(13)
  2704.     m$ = m$ + "......22" + Chr$(13)
  2705.     m$ = m$ + "......22" + Chr$(13)
  2706.     m$ = m$ + "......22" + Chr$(13)
  2707.     m$ = m$ + "......22" + Chr$(13)
  2708.     m$ = m$ + "......22" + Chr$(13)
  2709.     m$ = m$ + "22222222" + Chr$(13)
  2710.     m$ = m$ + "22222222" + Chr$(13)
  2711.     arrTileText(186) = m$
  2712.  
  2713.     m$ = ""
  2714.     m$ = m$ + "........" + Chr$(13)
  2715.     m$ = m$ + "........" + Chr$(13)
  2716.     m$ = m$ + "........" + Chr$(13)
  2717.     m$ = m$ + "........" + Chr$(13)
  2718.     m$ = m$ + "2222...." + Chr$(13)
  2719.     m$ = m$ + "2222...." + Chr$(13)
  2720.     m$ = m$ + "2222...." + Chr$(13)
  2721.     m$ = m$ + "2222...." + Chr$(13)
  2722.     arrTileText(187) = m$
  2723.  
  2724.     m$ = ""
  2725.     m$ = m$ + "....2222" + Chr$(13)
  2726.     m$ = m$ + "....2222" + Chr$(13)
  2727.     m$ = m$ + "....2222" + Chr$(13)
  2728.     m$ = m$ + "....2222" + Chr$(13)
  2729.     m$ = m$ + "........" + Chr$(13)
  2730.     m$ = m$ + "........" + Chr$(13)
  2731.     m$ = m$ + "........" + Chr$(13)
  2732.     m$ = m$ + "........" + Chr$(13)
  2733.     arrTileText(188) = m$
  2734.  
  2735.     m$ = ""
  2736.     m$ = m$ + "...22..." + Chr$(13)
  2737.     m$ = m$ + "...22..." + Chr$(13)
  2738.     m$ = m$ + "...22..." + Chr$(13)
  2739.     m$ = m$ + "22222..." + Chr$(13)
  2740.     m$ = m$ + "22222..." + Chr$(13)
  2741.     m$ = m$ + "........" + Chr$(13)
  2742.     m$ = m$ + "........" + Chr$(13)
  2743.     m$ = m$ + "........" + Chr$(13)
  2744.     arrTileText(189) = m$
  2745.  
  2746.     m$ = ""
  2747.     m$ = m$ + "2222...." + Chr$(13)
  2748.     m$ = m$ + "2222...." + Chr$(13)
  2749.     m$ = m$ + "2222...." + Chr$(13)
  2750.     m$ = m$ + "2222...." + Chr$(13)
  2751.     m$ = m$ + "........" + Chr$(13)
  2752.     m$ = m$ + "........" + Chr$(13)
  2753.     m$ = m$ + "........" + Chr$(13)
  2754.     m$ = m$ + "........" + Chr$(13)
  2755.     arrTileText(190) = m$
  2756.  
  2757.     m$ = ""
  2758.     m$ = m$ + "2222...." + Chr$(13)
  2759.     m$ = m$ + "2222...." + Chr$(13)
  2760.     m$ = m$ + "2222...." + Chr$(13)
  2761.     m$ = m$ + "2222...." + Chr$(13)
  2762.     m$ = m$ + "....2222" + Chr$(13)
  2763.     m$ = m$ + "....2222" + Chr$(13)
  2764.     m$ = m$ + "....2222" + Chr$(13)
  2765.     m$ = m$ + "....2222" + Chr$(13)
  2766.     arrTileText(191) = m$
  2767.  
  2768.     m$ = ""
  2769.     m$ = m$ + "........" + Chr$(13)
  2770.     m$ = m$ + ".2222222" + Chr$(13)
  2771.     m$ = m$ + ".2.....2" + Chr$(13)
  2772.     m$ = m$ + ".2.....2" + Chr$(13)
  2773.     m$ = m$ + ".2.....2" + Chr$(13)
  2774.     m$ = m$ + ".2.....2" + Chr$(13)
  2775.     m$ = m$ + ".2.....2" + Chr$(13)
  2776.     m$ = m$ + ".2222222" + Chr$(13)
  2777.     arrTileText(192) = m$
  2778.  
  2779.     m$ = ""
  2780.     m$ = m$ + "........" + Chr$(13)
  2781.     m$ = m$ + ".2222222" + Chr$(13)
  2782.     m$ = m$ + ".2222222" + Chr$(13)
  2783.     m$ = m$ + ".2222222" + Chr$(13)
  2784.     m$ = m$ + ".2222222" + Chr$(13)
  2785.     m$ = m$ + ".2222222" + Chr$(13)
  2786.     m$ = m$ + ".2222222" + Chr$(13)
  2787.     m$ = m$ + ".2222222" + Chr$(13)
  2788.     arrTileText(193) = m$
  2789.  
  2790.     m$ = ""
  2791.     m$ = m$ + "........" + Chr$(13)
  2792.     m$ = m$ + "...22..." + Chr$(13)
  2793.     m$ = m$ + "..2222.." + Chr$(13)
  2794.     m$ = m$ + ".222222." + Chr$(13)
  2795.     m$ = m$ + "...22..." + Chr$(13)
  2796.     m$ = m$ + "...22..." + Chr$(13)
  2797.     m$ = m$ + "...22..." + Chr$(13)
  2798.     m$ = m$ + "...22..." + Chr$(13)
  2799.     arrTileText(194) = m$
  2800.  
  2801.     m$ = ""
  2802.     m$ = m$ + "........" + Chr$(13)
  2803.     m$ = m$ + "...22..." + Chr$(13)
  2804.     m$ = m$ + "...22..." + Chr$(13)
  2805.     m$ = m$ + "...22..." + Chr$(13)
  2806.     m$ = m$ + "...22..." + Chr$(13)
  2807.     m$ = m$ + ".222222." + Chr$(13)
  2808.     m$ = m$ + "..2222.." + Chr$(13)
  2809.     m$ = m$ + "...22..." + Chr$(13)
  2810.     arrTileText(195) = m$
  2811.  
  2812.     m$ = ""
  2813.     m$ = m$ + "........" + Chr$(13)
  2814.     m$ = m$ + "...2...." + Chr$(13)
  2815.     m$ = m$ + "..22...." + Chr$(13)
  2816.     m$ = m$ + ".2222222" + Chr$(13)
  2817.     m$ = m$ + ".2222222" + Chr$(13)
  2818.     m$ = m$ + "..22...." + Chr$(13)
  2819.     m$ = m$ + "...2...." + Chr$(13)
  2820.     m$ = m$ + "........" + Chr$(13)
  2821.     arrTileText(196) = m$
  2822.  
  2823.     m$ = ""
  2824.     m$ = m$ + "........" + Chr$(13)
  2825.     m$ = m$ + ".....2.." + Chr$(13)
  2826.     m$ = m$ + ".....22." + Chr$(13)
  2827.     m$ = m$ + ".2222222" + Chr$(13)
  2828.     m$ = m$ + ".2222222" + Chr$(13)
  2829.     m$ = m$ + ".....22." + Chr$(13)
  2830.     m$ = m$ + ".....2.." + Chr$(13)
  2831.     m$ = m$ + "........" + Chr$(13)
  2832.     arrTileText(197) = m$
  2833.  
  2834.     m$ = ""
  2835.     m$ = m$ + "........" + Chr$(13)
  2836.     m$ = m$ + "........" + Chr$(13)
  2837.     m$ = m$ + "........" + Chr$(13)
  2838.     m$ = m$ + "........" + Chr$(13)
  2839.     m$ = m$ + "........" + Chr$(13)
  2840.     m$ = m$ + "........" + Chr$(13)
  2841.     m$ = m$ + "........" + Chr$(13)
  2842.     m$ = m$ + "........" + Chr$(13)
  2843.     arrTileText(198) = m$
  2844.  
  2845.     m$ = ""
  2846.     m$ = m$ + ".222222." + Chr$(13)
  2847.     m$ = m$ + "2......2" + Chr$(13)
  2848.     m$ = m$ + "2.2..2.2" + Chr$(13)
  2849.     m$ = m$ + "2......2" + Chr$(13)
  2850.     m$ = m$ + "2.2..2.2" + Chr$(13)
  2851.     m$ = m$ + "2.2222.2" + Chr$(13)
  2852.     m$ = m$ + "2......2" + Chr$(13)
  2853.     m$ = m$ + ".222222." + Chr$(13)
  2854.     arrTileText(199) = m$
  2855.  
  2856.     m$ = ""
  2857.     m$ = m$ + ".222222." + Chr$(13)
  2858.     m$ = m$ + "2......2" + Chr$(13)
  2859.     m$ = m$ + "2.2..2.2" + Chr$(13)
  2860.     m$ = m$ + "2......2" + Chr$(13)
  2861.     m$ = m$ + "2.2222.2" + Chr$(13)
  2862.     m$ = m$ + "2.2..2.2" + Chr$(13)
  2863.     m$ = m$ + "2......2" + Chr$(13)
  2864.     m$ = m$ + ".222222." + Chr$(13)
  2865.     arrTileText(200) = m$
  2866.  
  2867.     m$ = ""
  2868.     m$ = m$ + "........" + Chr$(13)
  2869.     m$ = m$ + "........" + Chr$(13)
  2870.     m$ = m$ + "........" + Chr$(13)
  2871.     m$ = m$ + "........" + Chr$(13)
  2872.     m$ = m$ + "........" + Chr$(13)
  2873.     m$ = m$ + "........" + Chr$(13)
  2874.     m$ = m$ + "........" + Chr$(13)
  2875.     m$ = m$ + "........" + Chr$(13)
  2876.     arrTileText(201) = m$
  2877.  
  2878.     m$ = ""
  2879.     m$ = m$ + ".222222." + Chr$(13)
  2880.     m$ = m$ + ".....22." + Chr$(13)
  2881.     m$ = m$ + "....22.." + Chr$(13)
  2882.     m$ = m$ + "...22..." + Chr$(13)
  2883.     m$ = m$ + "..22...." + Chr$(13)
  2884.     m$ = m$ + ".22....." + Chr$(13)
  2885.     m$ = m$ + ".222222." + Chr$(13)
  2886.     m$ = m$ + "........" + Chr$(13)
  2887.     arrTileText(202) = m$
  2888.  
  2889.     m$ = ""
  2890.     m$ = m$ + "...22..." + Chr$(13)
  2891.     m$ = m$ + "...22..." + Chr$(13)
  2892.     m$ = m$ + "...22..." + Chr$(13)
  2893.     m$ = m$ + "22222222" + Chr$(13)
  2894.     m$ = m$ + "22222222" + Chr$(13)
  2895.     m$ = m$ + "...22..." + Chr$(13)
  2896.     m$ = m$ + "...22..." + Chr$(13)
  2897.     m$ = m$ + "...22..." + Chr$(13)
  2898.     arrTileText(203) = m$
  2899.  
  2900.     m$ = ""
  2901.     m$ = m$ + "22......" + Chr$(13)
  2902.     m$ = m$ + "22......" + Chr$(13)
  2903.     m$ = m$ + "..22...." + Chr$(13)
  2904.     m$ = m$ + "..22...." + Chr$(13)
  2905.     m$ = m$ + "22......" + Chr$(13)
  2906.     m$ = m$ + "22......" + Chr$(13)
  2907.     m$ = m$ + "..22...." + Chr$(13)
  2908.     m$ = m$ + "..22...." + Chr$(13)
  2909.     arrTileText(204) = m$
  2910.  
  2911.     m$ = ""
  2912.     m$ = m$ + "...22..." + Chr$(13)
  2913.     m$ = m$ + "...22..." + Chr$(13)
  2914.     m$ = m$ + "...22..." + Chr$(13)
  2915.     m$ = m$ + "...22..." + Chr$(13)
  2916.     m$ = m$ + "...22..." + Chr$(13)
  2917.     m$ = m$ + "...22..." + Chr$(13)
  2918.     m$ = m$ + "...22..." + Chr$(13)
  2919.     m$ = m$ + "...22..." + Chr$(13)
  2920.     arrTileText(205) = m$
  2921.  
  2922.     m$ = ""
  2923.     m$ = m$ + "..22..22" + Chr$(13)
  2924.     m$ = m$ + "..22..22" + Chr$(13)
  2925.     m$ = m$ + "22..22.." + Chr$(13)
  2926.     m$ = m$ + "22..22.." + Chr$(13)
  2927.     m$ = m$ + "..22..22" + Chr$(13)
  2928.     m$ = m$ + "..22..22" + Chr$(13)
  2929.     m$ = m$ + "22..22.." + Chr$(13)
  2930.     m$ = m$ + "22..22.." + Chr$(13)
  2931.     arrTileText(206) = m$
  2932.  
  2933.     m$ = ""
  2934.     m$ = m$ + "..22..22" + Chr$(13)
  2935.     m$ = m$ + "2..22..2" + Chr$(13)
  2936.     m$ = m$ + "22..22.." + Chr$(13)
  2937.     m$ = m$ + ".22..22." + Chr$(13)
  2938.     m$ = m$ + "..22..22" + Chr$(13)
  2939.     m$ = m$ + "2..22..2" + Chr$(13)
  2940.     m$ = m$ + "22..22.." + Chr$(13)
  2941.     m$ = m$ + ".22..22." + Chr$(13)
  2942.     arrTileText(207) = m$
  2943.  
  2944.     m$ = ""
  2945.     m$ = m$ + "........" + Chr$(13)
  2946.     m$ = m$ + "........" + Chr$(13)
  2947.     m$ = m$ + "........" + Chr$(13)
  2948.     m$ = m$ + "........" + Chr$(13)
  2949.     m$ = m$ + "........" + Chr$(13)
  2950.     m$ = m$ + "........" + Chr$(13)
  2951.     m$ = m$ + "........" + Chr$(13)
  2952.     m$ = m$ + "........" + Chr$(13)
  2953.     arrTileText(208) = m$
  2954.  
  2955.     m$ = ""
  2956.     m$ = m$ + "2222...." + Chr$(13)
  2957.     m$ = m$ + "2222...." + Chr$(13)
  2958.     m$ = m$ + "2222...." + Chr$(13)
  2959.     m$ = m$ + "2222...." + Chr$(13)
  2960.     m$ = m$ + "2222...." + Chr$(13)
  2961.     m$ = m$ + "2222...." + Chr$(13)
  2962.     m$ = m$ + "2222...." + Chr$(13)
  2963.     m$ = m$ + "2222...." + Chr$(13)
  2964.     arrTileText(209) = m$
  2965.  
  2966.     m$ = ""
  2967.     m$ = m$ + "........" + Chr$(13)
  2968.     m$ = m$ + "........" + Chr$(13)
  2969.     m$ = m$ + "........" + Chr$(13)
  2970.     m$ = m$ + "........" + Chr$(13)
  2971.     m$ = m$ + "22222222" + Chr$(13)
  2972.     m$ = m$ + "22222222" + Chr$(13)
  2973.     m$ = m$ + "22222222" + Chr$(13)
  2974.     m$ = m$ + "22222222" + Chr$(13)
  2975.     arrTileText(210) = m$
  2976.  
  2977.     m$ = ""
  2978.     m$ = m$ + "22222222" + Chr$(13)
  2979.     m$ = m$ + "........" + Chr$(13)
  2980.     m$ = m$ + "........" + Chr$(13)
  2981.     m$ = m$ + "........" + Chr$(13)
  2982.     m$ = m$ + "........" + Chr$(13)
  2983.     m$ = m$ + "........" + Chr$(13)
  2984.     m$ = m$ + "........" + Chr$(13)
  2985.     m$ = m$ + "........" + Chr$(13)
  2986.     arrTileText(211) = m$
  2987.  
  2988.     m$ = ""
  2989.     m$ = m$ + "........" + Chr$(13)
  2990.     m$ = m$ + "........" + Chr$(13)
  2991.     m$ = m$ + "........" + Chr$(13)
  2992.     m$ = m$ + "........" + Chr$(13)
  2993.     m$ = m$ + "........" + Chr$(13)
  2994.     m$ = m$ + "........" + Chr$(13)
  2995.     m$ = m$ + "........" + Chr$(13)
  2996.     m$ = m$ + "22222222" + Chr$(13)
  2997.     arrTileText(212) = m$
  2998.  
  2999.     m$ = ""
  3000.     m$ = m$ + "22......" + Chr$(13)
  3001.     m$ = m$ + "22......" + Chr$(13)
  3002.     m$ = m$ + "22......" + Chr$(13)
  3003.     m$ = m$ + "22......" + Chr$(13)
  3004.     m$ = m$ + "22......" + Chr$(13)
  3005.     m$ = m$ + "22......" + Chr$(13)
  3006.     m$ = m$ + "22......" + Chr$(13)
  3007.     m$ = m$ + "22......" + Chr$(13)
  3008.     arrTileText(213) = m$
  3009.  
  3010.     m$ = ""
  3011.     m$ = m$ + "22..22.." + Chr$(13)
  3012.     m$ = m$ + "22..22.." + Chr$(13)
  3013.     m$ = m$ + "..22..22" + Chr$(13)
  3014.     m$ = m$ + "..22..22" + Chr$(13)
  3015.     m$ = m$ + "22..22.." + Chr$(13)
  3016.     m$ = m$ + "22..22.." + Chr$(13)
  3017.     m$ = m$ + "..22..22" + Chr$(13)
  3018.     m$ = m$ + "..22..22" + Chr$(13)
  3019.     arrTileText(214) = m$
  3020.  
  3021.     m$ = ""
  3022.     m$ = m$ + "......22" + Chr$(13)
  3023.     m$ = m$ + "......22" + Chr$(13)
  3024.     m$ = m$ + "......22" + Chr$(13)
  3025.     m$ = m$ + "......22" + Chr$(13)
  3026.     m$ = m$ + "......22" + Chr$(13)
  3027.     m$ = m$ + "......22" + Chr$(13)
  3028.     m$ = m$ + "......22" + Chr$(13)
  3029.     m$ = m$ + "......22" + Chr$(13)
  3030.     arrTileText(215) = m$
  3031.  
  3032.     m$ = ""
  3033.     m$ = m$ + "........" + Chr$(13)
  3034.     m$ = m$ + "........" + Chr$(13)
  3035.     m$ = m$ + "........" + Chr$(13)
  3036.     m$ = m$ + "........" + Chr$(13)
  3037.     m$ = m$ + "22..22.." + Chr$(13)
  3038.     m$ = m$ + "22..22.." + Chr$(13)
  3039.     m$ = m$ + "..22..22" + Chr$(13)
  3040.     m$ = m$ + "..22..22" + Chr$(13)
  3041.     arrTileText(216) = m$
  3042.  
  3043.     m$ = ""
  3044.     m$ = m$ + "22..22.." + Chr$(13)
  3045.     m$ = m$ + "2..22..2" + Chr$(13)
  3046.     m$ = m$ + "..22..22" + Chr$(13)
  3047.     m$ = m$ + ".22..22." + Chr$(13)
  3048.     m$ = m$ + "22..22.." + Chr$(13)
  3049.     m$ = m$ + "2..22..2" + Chr$(13)
  3050.     m$ = m$ + "..22..22" + Chr$(13)
  3051.     m$ = m$ + ".22..22." + Chr$(13)
  3052.     arrTileText(217) = m$
  3053.  
  3054.     m$ = ""
  3055.     m$ = m$ + "......22" + Chr$(13)
  3056.     m$ = m$ + "......22" + Chr$(13)
  3057.     m$ = m$ + "......22" + Chr$(13)
  3058.     m$ = m$ + "......22" + Chr$(13)
  3059.     m$ = m$ + "......22" + Chr$(13)
  3060.     m$ = m$ + "......22" + Chr$(13)
  3061.     m$ = m$ + "......22" + Chr$(13)
  3062.     m$ = m$ + "......22" + Chr$(13)
  3063.     arrTileText(218) = m$
  3064.  
  3065.     m$ = ""
  3066.     m$ = m$ + "...22..." + Chr$(13)
  3067.     m$ = m$ + "...22..." + Chr$(13)
  3068.     m$ = m$ + "...22..." + Chr$(13)
  3069.     m$ = m$ + "...22222" + Chr$(13)
  3070.     m$ = m$ + "...22222" + Chr$(13)
  3071.     m$ = m$ + "...22..." + Chr$(13)
  3072.     m$ = m$ + "...22..." + Chr$(13)
  3073.     m$ = m$ + "...22..." + Chr$(13)
  3074.     arrTileText(219) = m$
  3075.  
  3076.     m$ = ""
  3077.     m$ = m$ + "........" + Chr$(13)
  3078.     m$ = m$ + "........" + Chr$(13)
  3079.     m$ = m$ + "........" + Chr$(13)
  3080.     m$ = m$ + "........" + Chr$(13)
  3081.     m$ = m$ + "....2222" + Chr$(13)
  3082.     m$ = m$ + "....2222" + Chr$(13)
  3083.     m$ = m$ + "....2222" + Chr$(13)
  3084.     m$ = m$ + "....2222" + Chr$(13)
  3085.     arrTileText(220) = m$
  3086.  
  3087.     m$ = ""
  3088.     m$ = m$ + "...22..." + Chr$(13)
  3089.     m$ = m$ + "...22..." + Chr$(13)
  3090.     m$ = m$ + "...22..." + Chr$(13)
  3091.     m$ = m$ + "...22222" + Chr$(13)
  3092.     m$ = m$ + "...22222" + Chr$(13)
  3093.     m$ = m$ + "........" + Chr$(13)
  3094.     m$ = m$ + "........" + Chr$(13)
  3095.     m$ = m$ + "........" + Chr$(13)
  3096.     arrTileText(221) = m$
  3097.  
  3098.     m$ = ""
  3099.     m$ = m$ + "........" + Chr$(13)
  3100.     m$ = m$ + "........" + Chr$(13)
  3101.     m$ = m$ + "........" + Chr$(13)
  3102.     m$ = m$ + "22222..." + Chr$(13)
  3103.     m$ = m$ + "22222..." + Chr$(13)
  3104.     m$ = m$ + "...22..." + Chr$(13)
  3105.     m$ = m$ + "...22..." + Chr$(13)
  3106.     m$ = m$ + "...22..." + Chr$(13)
  3107.     arrTileText(222) = m$
  3108.  
  3109.     m$ = ""
  3110.     m$ = m$ + "........" + Chr$(13)
  3111.     m$ = m$ + "........" + Chr$(13)
  3112.     m$ = m$ + "........" + Chr$(13)
  3113.     m$ = m$ + "........" + Chr$(13)
  3114.     m$ = m$ + "........" + Chr$(13)
  3115.     m$ = m$ + "........" + Chr$(13)
  3116.     m$ = m$ + "22222222" + Chr$(13)
  3117.     m$ = m$ + "22222222" + Chr$(13)
  3118.     arrTileText(223) = m$
  3119.  
  3120.     m$ = ""
  3121.     m$ = m$ + "........" + Chr$(13)
  3122.     m$ = m$ + "........" + Chr$(13)
  3123.     m$ = m$ + "........" + Chr$(13)
  3124.     m$ = m$ + "...22222" + Chr$(13)
  3125.     m$ = m$ + "...22222" + Chr$(13)
  3126.     m$ = m$ + "...22..." + Chr$(13)
  3127.     m$ = m$ + "...22..." + Chr$(13)
  3128.     m$ = m$ + "...22..." + Chr$(13)
  3129.     arrTileText(224) = m$
  3130.  
  3131.     m$ = ""
  3132.     m$ = m$ + "...22..." + Chr$(13)
  3133.     m$ = m$ + "...22..." + Chr$(13)
  3134.     m$ = m$ + "...22..." + Chr$(13)
  3135.     m$ = m$ + "22222222" + Chr$(13)
  3136.     m$ = m$ + "22222222" + Chr$(13)
  3137.     m$ = m$ + "........" + Chr$(13)
  3138.     m$ = m$ + "........" + Chr$(13)
  3139.     m$ = m$ + "........" + Chr$(13)
  3140.     arrTileText(225) = m$
  3141.  
  3142.     m$ = ""
  3143.     m$ = m$ + "........" + Chr$(13)
  3144.     m$ = m$ + "........" + Chr$(13)
  3145.     m$ = m$ + "........" + Chr$(13)
  3146.     m$ = m$ + "22222222" + Chr$(13)
  3147.     m$ = m$ + "22222222" + Chr$(13)
  3148.     m$ = m$ + "...22..." + Chr$(13)
  3149.     m$ = m$ + "...22..." + Chr$(13)
  3150.     m$ = m$ + "...22..." + Chr$(13)
  3151.     arrTileText(226) = m$
  3152.  
  3153.     m$ = ""
  3154.     m$ = m$ + "...22..." + Chr$(13)
  3155.     m$ = m$ + "...22..." + Chr$(13)
  3156.     m$ = m$ + "...22..." + Chr$(13)
  3157.     m$ = m$ + "22222..." + Chr$(13)
  3158.     m$ = m$ + "22222..." + Chr$(13)
  3159.     m$ = m$ + "...22..." + Chr$(13)
  3160.     m$ = m$ + "...22..." + Chr$(13)
  3161.     m$ = m$ + "...22..." + Chr$(13)
  3162.     arrTileText(227) = m$
  3163.  
  3164.     m$ = ""
  3165.     m$ = m$ + "22......" + Chr$(13)
  3166.     m$ = m$ + "22......" + Chr$(13)
  3167.     m$ = m$ + "22......" + Chr$(13)
  3168.     m$ = m$ + "22......" + Chr$(13)
  3169.     m$ = m$ + "22......" + Chr$(13)
  3170.     m$ = m$ + "22......" + Chr$(13)
  3171.     m$ = m$ + "22......" + Chr$(13)
  3172.     m$ = m$ + "22......" + Chr$(13)
  3173.     arrTileText(228) = m$
  3174.  
  3175.     m$ = ""
  3176.     m$ = m$ + "222....." + Chr$(13)
  3177.     m$ = m$ + "222....." + Chr$(13)
  3178.     m$ = m$ + "222....." + Chr$(13)
  3179.     m$ = m$ + "222....." + Chr$(13)
  3180.     m$ = m$ + "222....." + Chr$(13)
  3181.     m$ = m$ + "222....." + Chr$(13)
  3182.     m$ = m$ + "222....." + Chr$(13)
  3183.     m$ = m$ + "222....." + Chr$(13)
  3184.     arrTileText(229) = m$
  3185.  
  3186.     m$ = ""
  3187.     m$ = m$ + ".....222" + Chr$(13)
  3188.     m$ = m$ + ".....222" + Chr$(13)
  3189.     m$ = m$ + ".....222" + Chr$(13)
  3190.     m$ = m$ + ".....222" + Chr$(13)
  3191.     m$ = m$ + ".....222" + Chr$(13)
  3192.     m$ = m$ + ".....222" + Chr$(13)
  3193.     m$ = m$ + ".....222" + Chr$(13)
  3194.     m$ = m$ + ".....222" + Chr$(13)
  3195.     arrTileText(230) = m$
  3196.  
  3197.     m$ = ""
  3198.     m$ = m$ + "22222222" + Chr$(13)
  3199.     m$ = m$ + "22222222" + Chr$(13)
  3200.     m$ = m$ + "........" + Chr$(13)
  3201.     m$ = m$ + "........" + Chr$(13)
  3202.     m$ = m$ + "........" + Chr$(13)
  3203.     m$ = m$ + "........" + Chr$(13)
  3204.     m$ = m$ + "........" + Chr$(13)
  3205.     m$ = m$ + "........" + Chr$(13)
  3206.     arrTileText(231) = m$
  3207.  
  3208.     m$ = ""
  3209.     m$ = m$ + "22222222" + Chr$(13)
  3210.     m$ = m$ + "22222222" + Chr$(13)
  3211.     m$ = m$ + "22222222" + Chr$(13)
  3212.     m$ = m$ + "........" + Chr$(13)
  3213.     m$ = m$ + "........" + Chr$(13)
  3214.     m$ = m$ + "........" + Chr$(13)
  3215.     m$ = m$ + "........" + Chr$(13)
  3216.     m$ = m$ + "........" + Chr$(13)
  3217.     arrTileText(232) = m$
  3218.  
  3219.     m$ = ""
  3220.     m$ = m$ + "........" + Chr$(13)
  3221.     m$ = m$ + "........" + Chr$(13)
  3222.     m$ = m$ + "........" + Chr$(13)
  3223.     m$ = m$ + "........" + Chr$(13)
  3224.     m$ = m$ + "........" + Chr$(13)
  3225.     m$ = m$ + "22222222" + Chr$(13)
  3226.     m$ = m$ + "22222222" + Chr$(13)
  3227.     m$ = m$ + "22222222" + Chr$(13)
  3228.     arrTileText(233) = m$
  3229.  
  3230.     m$ = ""
  3231.     m$ = m$ + ".......2" + Chr$(13)
  3232.     m$ = m$ + "......22" + Chr$(13)
  3233.     m$ = m$ + ".....22." + Chr$(13)
  3234.     m$ = m$ + ".22.22.." + Chr$(13)
  3235.     m$ = m$ + ".2222..." + Chr$(13)
  3236.     m$ = m$ + ".222...." + Chr$(13)
  3237.     m$ = m$ + ".22....." + Chr$(13)
  3238.     m$ = m$ + "........" + Chr$(13)
  3239.     arrTileText(234) = m$
  3240.  
  3241.     m$ = ""
  3242.     m$ = m$ + "........" + Chr$(13)
  3243.     m$ = m$ + "........" + Chr$(13)
  3244.     m$ = m$ + "........" + Chr$(13)
  3245.     m$ = m$ + "........" + Chr$(13)
  3246.     m$ = m$ + "2222...." + Chr$(13)
  3247.     m$ = m$ + "2222...." + Chr$(13)
  3248.     m$ = m$ + "2222...." + Chr$(13)
  3249.     m$ = m$ + "2222...." + Chr$(13)
  3250.     arrTileText(235) = m$
  3251.  
  3252.     m$ = ""
  3253.     m$ = m$ + "....2222" + Chr$(13)
  3254.     m$ = m$ + "....2222" + Chr$(13)
  3255.     m$ = m$ + "....2222" + Chr$(13)
  3256.     m$ = m$ + "....2222" + Chr$(13)
  3257.     m$ = m$ + "........" + Chr$(13)
  3258.     m$ = m$ + "........" + Chr$(13)
  3259.     m$ = m$ + "........" + Chr$(13)
  3260.     m$ = m$ + "........" + Chr$(13)
  3261.     arrTileText(236) = m$
  3262.  
  3263.     m$ = ""
  3264.     m$ = m$ + "...22..." + Chr$(13)
  3265.     m$ = m$ + "...22..." + Chr$(13)
  3266.     m$ = m$ + "...22..." + Chr$(13)
  3267.     m$ = m$ + "22222..." + Chr$(13)
  3268.     m$ = m$ + "22222..." + Chr$(13)
  3269.     m$ = m$ + "........" + Chr$(13)
  3270.     m$ = m$ + "........" + Chr$(13)
  3271.     m$ = m$ + "........" + Chr$(13)
  3272.     arrTileText(237) = m$
  3273.  
  3274.     m$ = ""
  3275.     m$ = m$ + "2222...." + Chr$(13)
  3276.     m$ = m$ + "2222...." + Chr$(13)
  3277.     m$ = m$ + "2222...." + Chr$(13)
  3278.     m$ = m$ + "2222...." + Chr$(13)
  3279.     m$ = m$ + "........" + Chr$(13)
  3280.     m$ = m$ + "........" + Chr$(13)
  3281.     m$ = m$ + "........" + Chr$(13)
  3282.     m$ = m$ + "........" + Chr$(13)
  3283.     arrTileText(238) = m$
  3284.  
  3285.     m$ = ""
  3286.     m$ = m$ + "2222...." + Chr$(13)
  3287.     m$ = m$ + "2222...." + Chr$(13)
  3288.     m$ = m$ + "2222...." + Chr$(13)
  3289.     m$ = m$ + "2222...." + Chr$(13)
  3290.     m$ = m$ + "....2222" + Chr$(13)
  3291.     m$ = m$ + "....2222" + Chr$(13)
  3292.     m$ = m$ + "....2222" + Chr$(13)
  3293.     m$ = m$ + "....2222" + Chr$(13)
  3294.     arrTileText(239) = m$
  3295.  
  3296.     m$ = ""
  3297.     m$ = m$ + "........" + Chr$(13)
  3298.     m$ = m$ + "........" + Chr$(13)
  3299.     m$ = m$ + "........" + Chr$(13)
  3300.     m$ = m$ + "........" + Chr$(13)
  3301.     m$ = m$ + "........" + Chr$(13)
  3302.     m$ = m$ + "........" + Chr$(13)
  3303.     m$ = m$ + "........" + Chr$(13)
  3304.     m$ = m$ + "........" + Chr$(13)
  3305.     arrTileText(240) = m$
  3306.  
  3307.     m$ = ""
  3308.     m$ = m$ + "22222.22" + Chr$(13)
  3309.     m$ = m$ + "22222.22" + Chr$(13)
  3310.     m$ = m$ + "22222.22" + Chr$(13)
  3311.     m$ = m$ + "........" + Chr$(13)
  3312.     m$ = m$ + "22.22222" + Chr$(13)
  3313.     m$ = m$ + "22.22222" + Chr$(13)
  3314.     m$ = m$ + "22.22222" + Chr$(13)
  3315.     m$ = m$ + "........" + Chr$(13)
  3316.     arrTileText(241) = m$
  3317.  
  3318.     m$ = ""
  3319.     m$ = m$ + "........" + Chr$(13)
  3320.     m$ = m$ + "........" + Chr$(13)
  3321.     m$ = m$ + "........" + Chr$(13)
  3322.     m$ = m$ + ".222222." + Chr$(13)
  3323.     m$ = m$ + "........" + Chr$(13)
  3324.     m$ = m$ + "........" + Chr$(13)
  3325.     m$ = m$ + "........" + Chr$(13)
  3326.     m$ = m$ + "........" + Chr$(13)
  3327.     arrTileText(242) = m$
  3328.  
  3329.     m$ = ""
  3330.     m$ = m$ + "........" + Chr$(13)
  3331.     m$ = m$ + "...2...." + Chr$(13)
  3332.     m$ = m$ + "...2...." + Chr$(13)
  3333.     m$ = m$ + "...2...." + Chr$(13)
  3334.     m$ = m$ + "...2...." + Chr$(13)
  3335.     m$ = m$ + "...2...." + Chr$(13)
  3336.     m$ = m$ + "...2...." + Chr$(13)
  3337.     m$ = m$ + "........" + Chr$(13)
  3338.     arrTileText(243) = m$
  3339.  
  3340.     m$ = ""
  3341.     m$ = m$ + "........" + Chr$(13)
  3342.     m$ = m$ + "........" + Chr$(13)
  3343.     m$ = m$ + "........" + Chr$(13)
  3344.     m$ = m$ + "...2222." + Chr$(13)
  3345.     m$ = m$ + "...2...." + Chr$(13)
  3346.     m$ = m$ + "...2...." + Chr$(13)
  3347.     m$ = m$ + "...2...." + Chr$(13)
  3348.     m$ = m$ + "........" + Chr$(13)
  3349.     arrTileText(244) = m$
  3350.  
  3351.     m$ = ""
  3352.     m$ = m$ + "........" + Chr$(13)
  3353.     m$ = m$ + "........" + Chr$(13)
  3354.     m$ = m$ + "........" + Chr$(13)
  3355.     m$ = m$ + ".222...." + Chr$(13)
  3356.     m$ = m$ + "...2...." + Chr$(13)
  3357.     m$ = m$ + "...2...." + Chr$(13)
  3358.     m$ = m$ + "...2...." + Chr$(13)
  3359.     m$ = m$ + "........" + Chr$(13)
  3360.     arrTileText(245) = m$
  3361.  
  3362.     m$ = ""
  3363.     m$ = m$ + "........" + Chr$(13)
  3364.     m$ = m$ + "...2...." + Chr$(13)
  3365.     m$ = m$ + "...2...." + Chr$(13)
  3366.     m$ = m$ + "...2222." + Chr$(13)
  3367.     m$ = m$ + "........" + Chr$(13)
  3368.     m$ = m$ + "........" + Chr$(13)
  3369.     m$ = m$ + "........" + Chr$(13)
  3370.     m$ = m$ + "........" + Chr$(13)
  3371.     arrTileText(246) = m$
  3372.  
  3373.     m$ = ""
  3374.     m$ = m$ + "........" + Chr$(13)
  3375.     m$ = m$ + "...2...." + Chr$(13)
  3376.     m$ = m$ + "...2...." + Chr$(13)
  3377.     m$ = m$ + ".222...." + Chr$(13)
  3378.     m$ = m$ + "........" + Chr$(13)
  3379.     m$ = m$ + "........" + Chr$(13)
  3380.     m$ = m$ + "........" + Chr$(13)
  3381.     m$ = m$ + "........" + Chr$(13)
  3382.     arrTileText(247) = m$
  3383.  
  3384.     m$ = ""
  3385.     m$ = m$ + "........" + Chr$(13)
  3386.     m$ = m$ + "........" + Chr$(13)
  3387.     m$ = m$ + "........" + Chr$(13)
  3388.     m$ = m$ + "........" + Chr$(13)
  3389.     m$ = m$ + "........" + Chr$(13)
  3390.     m$ = m$ + "........" + Chr$(13)
  3391.     m$ = m$ + "........" + Chr$(13)
  3392.     m$ = m$ + "........" + Chr$(13)
  3393.     arrTileText(248) = m$
  3394.  
  3395.     m$ = ""
  3396.     m$ = m$ + "........" + Chr$(13)
  3397.     m$ = m$ + "........" + Chr$(13)
  3398.     m$ = m$ + "........" + Chr$(13)
  3399.     m$ = m$ + "........" + Chr$(13)
  3400.     m$ = m$ + "........" + Chr$(13)
  3401.     m$ = m$ + "........" + Chr$(13)
  3402.     m$ = m$ + "........" + Chr$(13)
  3403.     m$ = m$ + "........" + Chr$(13)
  3404.     arrTileText(249) = m$
  3405.  
  3406.     m$ = ""
  3407.     m$ = m$ + "........" + Chr$(13)
  3408.     m$ = m$ + "........" + Chr$(13)
  3409.     m$ = m$ + "........" + Chr$(13)
  3410.     m$ = m$ + "........" + Chr$(13)
  3411.     m$ = m$ + "........" + Chr$(13)
  3412.     m$ = m$ + "........" + Chr$(13)
  3413.     m$ = m$ + "........" + Chr$(13)
  3414.     m$ = m$ + "........" + Chr$(13)
  3415.     arrTileText(250) = m$
  3416.  
  3417.     m$ = ""
  3418.     m$ = m$ + "........" + Chr$(13)
  3419.     m$ = m$ + "........" + Chr$(13)
  3420.     m$ = m$ + "........" + Chr$(13)
  3421.     m$ = m$ + "........" + Chr$(13)
  3422.     m$ = m$ + "........" + Chr$(13)
  3423.     m$ = m$ + "........" + Chr$(13)
  3424.     m$ = m$ + "........" + Chr$(13)
  3425.     m$ = m$ + "........" + Chr$(13)
  3426.     arrTileText(251) = m$
  3427.  
  3428.     m$ = ""
  3429.     m$ = m$ + "........" + Chr$(13)
  3430.     m$ = m$ + "........" + Chr$(13)
  3431.     m$ = m$ + "........" + Chr$(13)
  3432.     m$ = m$ + "........" + Chr$(13)
  3433.     m$ = m$ + "........" + Chr$(13)
  3434.     m$ = m$ + "........" + Chr$(13)
  3435.     m$ = m$ + "........" + Chr$(13)
  3436.     m$ = m$ + "........" + Chr$(13)
  3437.     arrTileText(252) = m$
  3438.  
  3439.     m$ = ""
  3440.     m$ = m$ + "22222222" + Chr$(13)
  3441.     m$ = m$ + "2......2" + Chr$(13)
  3442.     m$ = m$ + "2......2" + Chr$(13)
  3443.     m$ = m$ + "2......2" + Chr$(13)
  3444.     m$ = m$ + "2......2" + Chr$(13)
  3445.     m$ = m$ + "2......2" + Chr$(13)
  3446.     m$ = m$ + "2......2" + Chr$(13)
  3447.     m$ = m$ + "22222222" + Chr$(13)
  3448.     arrTileText(253) = m$
  3449.  
  3450.     m$ = ""
  3451.     m$ = m$ + "22222222" + Chr$(13)
  3452.     m$ = m$ + "22222222" + Chr$(13)
  3453.     m$ = m$ + "22222222" + Chr$(13)
  3454.     m$ = m$ + "22222222" + Chr$(13)
  3455.     m$ = m$ + "22222222" + Chr$(13)
  3456.     m$ = m$ + "22222222" + Chr$(13)
  3457.     m$ = m$ + "22222222" + Chr$(13)
  3458.     m$ = m$ + "22222222" + Chr$(13)
  3459.     arrTileText(254) = m$
  3460.  
  3461.     m$ = ""
  3462.     m$ = ""
  3463.     m$ = m$ + "22....22" + Chr$(13)
  3464.     m$ = m$ + "2..22..2" + Chr$(13)
  3465.     m$ = m$ + "2..22..2" + Chr$(13)
  3466.     m$ = m$ + "22.....2" + Chr$(13)
  3467.     m$ = m$ + "22222..2" + Chr$(13)
  3468.     m$ = m$ + "2..22..2" + Chr$(13)
  3469.     m$ = m$ + "22....22" + Chr$(13)
  3470.     m$ = m$ + "22222222" + Chr$(13)
  3471.     arrTileText(255) = m$
  3472.  
  3473. End Sub ' GetTileText
  3474.  
  3475. ' ################################################################################################################################################################
  3476. ' END TILE DEFINITIONS
  3477. ' ################################################################################################################################################################
  3478.  
  3479. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3480. ' BEGIN COLOR FUNCTIONS
  3481. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3482. Function cWhite~& ()
  3483.     cWhite = _RGB32(255, 255, 255)
  3484. End Function ' cWhite~&
  3485.  
  3486. Function cEmpty~& ()
  3487.     cEmpty = _RGB32(0, 0, 0, 0)
  3488. End Function ' cEmpty~&
  3489.  
  3490. Function cBlack~& ()
  3491.     cBlack = _RGB32(0, 0, 0)
  3492. End Function ' cBlack~&
  3493.  
  3494. Function cRed~& ()
  3495.     cRed = _RGB32(255, 0, 0)
  3496.  
  3497. Function cYellow~& ()
  3498.     cYellow = _RGB32(255, 255, 0)
  3499. End Function ' cYellow~&
  3500.  
  3501. Function cLime~& ()
  3502.     cLime = _RGB32(0, 255, 0)
  3503. End Function ' cLime~&
  3504.  
  3505. Function cCyan~& ()
  3506.     cCyan = _RGB32(0, 255, 255)
  3507. End Function ' cCyan~&
  3508.  
  3509. Function cBlue~& ()
  3510.     cBlue = _RGB32(0, 0, 255)
  3511. End Function ' cBlue~&
  3512.  
  3513. Function cMagenta~& ()
  3514.     cMagenta = _RGB32(255, 0, 255)
  3515. End Function ' cMagenta~&
  3516.  
  3517. Function cOrange~& ()
  3518.     cOrange = _RGB32(255, 165, 0)
  3519. End Function ' cOrange~&
  3520.  
  3521. Function cGray~& ()
  3522.     cGray = _RGB32(128, 128, 128)
  3523. End Function ' cGray~&
  3524. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3525. ' END COLOR FUNCTIONS
  3526. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3527.  
  3528. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3529. ' BEGIN GENERAL PURPOSE ROUTINES #GEN
  3530. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3531. ' /////////////////////////////////////////////////////////////////////////////
  3532.  
  3533. Function cstr$ (myValue)
  3534.     'cstr$ = LTRIM$(RTRIM$(STR$(myValue)))
  3535.     cstr$ = _Trim$(Str$(myValue))
  3536. End Function ' cstr$
  3537.  
  3538. ' /////////////////////////////////////////////////////////////////////////////
  3539. ' FROM: String Manipulation
  3540. ' found at abandoned, outdated and now likely malicious qb64 dot net website
  3541. ' http://www.qb64.[net]/forum/index_topic_5964-0/
  3542. '
  3543. 'SUMMARY:
  3544. '   Purpose:  A library of custom functions that transform strings.
  3545. '   Author:   Dustinian Camburides (dustinian@gmail.com)
  3546. '   Platform: QB64 (www.qb64.org)
  3547. '   Revision: 1.6
  3548. '   Updated:  5/28/2012
  3549.  
  3550. 'SUMMARY:
  3551. '[Replace$] replaces all instances of the [Find] sub-string with the [Add] sub-string within the [Text] string.
  3552. 'INPUT:
  3553. 'Text: The input string; the text that's being manipulated.
  3554. 'Find: The specified sub-string; the string sought within the [Text] string.
  3555. 'Add: The sub-string that's being added to the [Text] string.
  3556.  
  3557. Function Replace$ (Text1 As String, Find1 As String, Add1 As String)
  3558.     ' VARIABLES:
  3559.     Dim Text2 As String
  3560.     Dim Find2 As String
  3561.     Dim Add2 As String
  3562.     Dim lngLocation As Long ' The address of the [Find] substring within the [Text] string.
  3563.     Dim strBefore As String ' The characters before the string to be replaced.
  3564.     Dim strAfter As String ' The characters after the string to be replaced.
  3565.  
  3566.     ' INITIALIZE:
  3567.     ' MAKE COPIESSO THE ORIGINAL IS NOT MODIFIED (LIKE ByVal IN VBA)
  3568.     Text2 = Text1
  3569.     Find2 = Find1
  3570.     Add2 = Add1
  3571.  
  3572.     lngLocation = InStr(1, Text2, Find2)
  3573.  
  3574.     ' PROCESSING:
  3575.     ' While [Find2] appears in [Text2]...
  3576.     While lngLocation
  3577.         ' Extract all Text2 before the [Find2] substring:
  3578.         strBefore = Left$(Text2, lngLocation - 1)
  3579.  
  3580.         ' Extract all text after the [Find2] substring:
  3581.         strAfter = Right$(Text2, ((Len(Text2) - (lngLocation + Len(Find2) - 1))))
  3582.  
  3583.         ' Return the substring:
  3584.         Text2 = strBefore + Add2 + strAfter
  3585.  
  3586.         ' Locate the next instance of [Find2]:
  3587.         lngLocation = InStr(1, Text2, Find2)
  3588.  
  3589.         ' Next instance of [Find2]...
  3590.     Wend
  3591.  
  3592.     ' OUTPUT:
  3593.     Replace$ = Text2
  3594. End Function ' Replace$
  3595.  
  3596. ' /////////////////////////////////////////////////////////////////////////////
  3597. ' Split and join strings
  3598. ' https://www.qb64.org/forum/index.php?topic=1073.0
  3599. '
  3600. ' FROM luke, QB64 Developer
  3601. ' Date: February 15, 2019, 04:11:07 AM »
  3602. '
  3603. ' Given a string of words separated by spaces (or any other character),
  3604. ' splits it into an array of the words. I've no doubt many people have
  3605. ' written a version of this over the years and no doubt there's a million
  3606. ' ways to do it, but I thought I'd put mine here so we have at least one
  3607. ' version. There's also a join function that does the opposite
  3608. ' array -> single string.
  3609. '
  3610. ' Code is hopefully reasonably self explanatory with comments and a little demo.
  3611. ' Note, this is akin to Python/JavaScript split/join, PHP explode/implode.
  3612.  
  3613. 'Split in$ into pieces, chopping at every occurrence of delimiter$. Multiple consecutive occurrences
  3614. 'of delimiter$ are treated as a single instance. The chopped pieces are stored in result$().
  3615. '
  3616. 'delimiter$ must be one character long.
  3617. 'result$() must have been REDIMmed previously.
  3618.  
  3619. ' Modified to handle multi-character delimiters
  3620.  
  3621. Sub split (in$, delimiter$, result$())
  3622.     Dim start As Integer
  3623.     Dim finish As Integer
  3624.     Dim iDelimLen As Integer
  3625.     ReDim result$(-1)
  3626.  
  3627.     iDelimLen = Len(delimiter$)
  3628.  
  3629.     start = 1
  3630.     Do
  3631.         'While Mid$(in$, start, 1) = delimiter$
  3632.         While Mid$(in$, start, iDelimLen) = delimiter$
  3633.             'start = start + 1
  3634.             start = start + iDelimLen
  3635.             If start > Len(in$) Then
  3636.                 Exit Sub
  3637.             End If
  3638.         Wend
  3639.         finish = InStr(start, in$, delimiter$)
  3640.         If finish = 0 Then
  3641.             finish = Len(in$) + 1
  3642.         End If
  3643.  
  3644.         ReDim _Preserve result$(0 To UBound(result$) + 1)
  3645.  
  3646.         result$(UBound(result$)) = Mid$(in$, start, finish - start)
  3647.         start = finish + 1
  3648.     Loop While start <= Len(in$)
  3649. End Sub ' split
  3650. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3651. ' END GENERAL PURPOSE ROUTINES #GEN
  3652. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3653.  
  3654. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3655. ' BEGIN HARDWARE IMAGES DEMO #2 (WORKS)
  3656. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3657.  
  3658. ' /////////////////////////////////////////////////////////////////////////////
  3659. ' Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
  3660. ' https://qb64forum.alephc.xyz/index.php?topic=4674.0
  3661.  
  3662. ' madscijr
  3663. ' « Reply #5 on: Yesterday at 09:46:53 pm »
  3664.  
  3665. ' Quote from: SMcNeill on Yesterday at 07:56:57 pm:
  3666. ' Hardware images basically get their speed by being a sort of "Write Only"
  3667. ' method for images. You can make them, you can put them on the screen,
  3668. ' but you can't edit them or read information back from them.
  3669. ' ...
  3670. ' 2) You don't have to specify where they show up as a destination with putimage.
  3671. ' ...
  3672. ' If you have any specific questions, feel free to ask them and I'll do my
  3673. ' best to answer for you, if I can.  ;)
  3674. '
  3675. ' Thanks for taking the time to explain all that. When I'm back at the PC,
  3676. ' I'll try out your example.
  3677. '
  3678. ' For now, just one question: if you can't read information from them or even
  3679. ' specify where on the destination they go, how are they even useful?
  3680. ' Maybe it will click when I run your example or read up on it, but I just
  3681. ' don't see what the use of an image would be if you can't control where on
  3682. ' the screen it is drawn? Or how it would help speed up drawing a map of
  3683. ' colored tiles to the screen.
  3684. '
  3685. ' Thanks again...
  3686.  
  3687. ' SMcNeill, QB64 Developer
  3688. ' « Reply #6 on: Today at 01:14:28 am »
  3689. '
  3690. ' Try this out and see if it doesn't help answer your questions:
  3691.  
  3692. Sub HardwareImageDemo2
  3693.     $Color:32
  3694.     Display = _NewImage(1024, 720, 32)
  3695.     Software = _NewImage(1024, 720, 32)
  3696.  
  3697.     Screen Display
  3698.     Print "First, let's create a normal sortware screen and fill it with 40x40 tiles of random colors."
  3699.     Print "Press <ANY KEY> to view this screen."
  3700.     Sleep
  3701.  
  3702.     _Dest Software
  3703.     For y = 0 To 720 Step 40
  3704.         For x = 0 To 1024 Step 40
  3705.             Line (x, y)-Step(40, 40), &HFF000000 + Rnd * &HFFFFFF, BF
  3706.         Next
  3707.     Next
  3708.  
  3709.     _Dest Display
  3710.     _PutImage , Software
  3711.     Print
  3712.     Print "As you can see, this is a simple software screen."
  3713.     Print "Now, I'm going to copy that software screen and make it a hardware screen."
  3714.     Print "Press <ANY KEY> for me to do so!"
  3715.     Sleep
  3716.  
  3717.     Hardware = _CopyImage(Software, 33)
  3718.     Cls
  3719.     Print "Now, I'm back to my blank screen, but I now have a hardware screen to work with."
  3720.     Print
  3721.     Print "To keep things simple, let's showcase the differences between using _putimage with a software screen, and then with the hardware screen."
  3722.     Print
  3723.     Print "First, the software screen!  Press <ANY KEY> to continue."
  3724.     Sleep
  3725.  
  3726.     _PutImage (0, 100)-Step(100, 100), Software, Display, (0, 0)-(40, 40)
  3727.     Print "As you can see, all I did here was copy a single tile from the software screen and then scale it to fit upon the current screen."
  3728.     Print
  3729.     Print "Press <ANY KEY> to continue, as I'll now do the same with a hardware image."
  3730.  
  3731.     _PutImage (200, 100)-Step(100, 100), Hardware, , (0, 0)-(40, 40)
  3732.     Print
  3733.     Print "As you can see from the above, we have the same tile copied and scaled onto the screen, just to the right of the software image."
  3734.     Print
  3735.     Print "Doesn't really seem to be very different at all, now does it?"
  3736.     Print
  3737.     Print "Press <ANY KEY> to continue."
  3738.     _Display
  3739.     Sleep
  3740.  
  3741.     Print
  3742.     Color Red
  3743.     Print "BUT WAIT A MOMENT!!  What the heck happened to our hardware tile??!!??"
  3744.     Color White
  3745.     Print
  3746.     Print "It's no longer on the screen, as it was previously.  Why??"
  3747.     Print
  3748.     Print "Because it was never on the software screen at all, but was instead on it's own hardware layer ABOVE the software screen."
  3749.     Print
  3750.     Print "Hardware images only display ONCE, once _DISPLAY is called, and then they flush from the graphics buffer."
  3751.     Print "Draw.  Display.  Flush.  <-- that's the basic process of how a hardware image works."
  3752.     Print
  3753.     Print "If we want one to remain on the screen, we have to do it either by:"
  3754.     Print "1) Not updating the screen after we draw and display the image, as I did above with the tile I displayed."
  3755.     Print "2) Refresh displaying the image in our main loop (which is what we do even with software images for most games and such)."
  3756.     Print
  3757.     Print "Press <ANY KEY> to continue."
  3758.     Sleep
  3759.  
  3760.     Cls
  3761.     Print
  3762.     Print "So, as you can see, hardware images have a few drawbacks to them, with the most obvious being they only display once,"
  3763.     Print "then flush from memory.  If you want persistant hardware images, they're best used in a loop."
  3764.     Print
  3765.     Print "But, if they've got drawbacks, then one has to ask, 'What's the advantages to using them?'"
  3766.     Print "Press <ANY KEY> to find out!"
  3767.     Sleep
  3768.  
  3769.     t# = Timer + 3
  3770.     Do
  3771.         count = count + 1
  3772.         _PutImage (0, 100)-Step(100, 100), Software, Display, (x, y)-Step(40, 40)
  3773.         x = x + 40
  3774.         If x > 1024 Then x = 0: y = y + 40
  3775.         If y > 720 Then x = 0: y = 0
  3776.         _Display
  3777.     Loop Until Timer > t#
  3778.  
  3779.     Print "See lots of flashing tiles on the screen for the last three seconds?"
  3780.     Print "That was us using _PUTIMAGE with the software screen, and we put"; count; "tiles on the screen in those 3 seconds."
  3781.     Print
  3782.     Print "Now press <ANY KEY> and we'll do the exact same thing with hardware images."
  3783.     Sleep
  3784.  
  3785.     count = 0: x = 0: y = 0
  3786.     t# = Timer + 3
  3787.     tempScreen = _CopyImage(Display, 33)
  3788.     Do
  3789.         count = count + 1
  3790.         _PutImage , tempScreen
  3791.         _PutImage (300, 100)-Step(100, 100), Hardware, , (x, y)-Step(40, 40)
  3792.         x = x + 40
  3793.         If x > 1024 Then x = 0: y = y + 40
  3794.         If y > 720 Then x = 0: y = 0
  3795.         _Display
  3796.     Loop Until Timer > t#
  3797.  
  3798.     _FreeImage tempScreen
  3799.     Print
  3800.     Print "Didn't seem very different at the rate of which we were running things, now did it?"
  3801.     Print "Would you be surprised to find out that we put"; count * 2; "hardware images on the screen in those same 3 seconds?"
  3802.     Print
  3803.     Print "And if you look close, I counted each loop twice, as we didn't just put the hardware image to the screen, but also a"
  3804.     Print "complete copy of the original software screen as well!"
  3805.     Print
  3806.     Print "The reason why I did this?"
  3807.     Print
  3808.     Print "So I could completely elimimate all software iamges and JUST work with the much faster hardware layer!"
  3809.     Print
  3810.     Print "Press <ANY KEY> to continue"
  3811.     Sleep
  3812.  
  3813.     Cls
  3814.     Print "So, as you can see, hardware images are multiple times faster to display and render than software images."
  3815.     Print
  3816.     Print "But here's something else for you to notice -- I'm going to update the screen with constant, limitless tile refeshes."
  3817.     Print "To start with, I'm going to do this in a LOOP with the software images."
  3818.     Print "CTRL-TAB out of this demo program, open your task manager, and see how much memory and CPU processing power the program uses."
  3819.     Print "Then TAB back to this program and hit <ESC> to do the same with the hardware images."
  3820.  
  3821.     Do
  3822.         _PutImage (0, 100)-(1024, 720), Software, Display, (x, y)-Step(40, 40)
  3823.         x = x + 40
  3824.         If x > 1024 Then x = 0: y = y + 40
  3825.         If y > 720 Then x = 0: y = 0
  3826.         _Limit 60
  3827.         _Display
  3828.     Loop Until _KeyDown(27)
  3829.  
  3830.     Cls , 0
  3831.     Print "PRESS <SPACE BAR> to stop the hardware iamges!!"
  3832.     tempImage = _CopyImage(Display, 33)
  3833.     x = 0: y = 0
  3834.     Do
  3835.         _PutImage , tempImage
  3836.         _PutImage (0, 100)-(1023, 719), Hardware, , (x, y)-Step(40, 40)
  3837.         x = x + 40
  3838.         If x > 1024 Then x = 0: y = y + 40
  3839.         If y > 720 Then x = 0: y = 0
  3840.         _Limit 60
  3841.         _Display
  3842.     Loop Until _KeyDown(32)
  3843.  
  3844.     Cls
  3845.     Print "On my laptop, these two methods use the following amounts of CPU power:"
  3846.     Print "Software, 60 FPS -- 3% CPU"
  3847.     Print "Hardware, 60 FPS -- 0.1% CPU"
  3848.     Print
  3849.     Print "If I go in and change the limits to something much higher, these are the results (test them for yourselves, please):"
  3850.     Print "Software, 600 FPS -- 10.3% CPU"
  3851.     Print "Hardware, 600 FPS -- 0.1% CPU"
  3852.     Print
  3853.     Print
  3854.     Print "So, as you can see, the disadvantage to hardware images are they display once, then flush from memory."
  3855.     Print
  3856.     Print "While the advantages to their usage is MUCH faster processing times, and an immense reduction on CPU usage.  (The GPU picks up the work for us!)"
  3857.     Print
  3858.     Print
  3859.     Print "You basically use them just like you would any other normal image, though you have to keep in mind that they render"
  3860.     Print "to their own hardware layer, which you can specify to go on below or above your software screen."
  3861.     Print
  3862.     Print "(Or, you can _DISPLAYORDER _HARDWARE and *only* display the hardware layer, removing software rendering completely!)"
  3863.     Print
  3864.     Print "And THAT, my friends, is basically the lowdown on hardware vs software images.  ;)"
  3865.     Print
  3866.     Print
  3867.     Print "And this was another Steve(tm) Tutorial!  Enjoy!!"
  3868. End Sub ' HardwareImageDemo2
  3869.  
  3870. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3871. ' END HARDWARE IMAGES DEMO #2 (WORKS)
  3872. ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3873.  
  3874.  

The main change with my code and yours, is that I removed the software rendering completely when I was running the hardware images.

        tempScreen = _CopyImage(0, 33)
        _DisplayOrder _Hardware

With this single, simple, change, my number of loops went up to such a number that it became NEGATIVE.   (Overflow Error!)  I had to swap the variable type from INTEGER to LONG for icount3, to have it finally tell me I was getting 43,582 refreshes in 3 seconds.

https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline madscijr

  • Seasoned Forum Regular
  • Posts: 295
    • View Profile
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #10 on: February 23, 2022, 10:02:23 am »
I made a few little subtle changes to your code -- see if this doesn't run a little bit differently for you:
...
The main change with my code and yours, is that I removed the software rendering completely when I was running the hardware images.
        tempScreen = _CopyImage(0, 33)
        _DisplayOrder _Hardware
With this single, simple, change, my number of loops went up to such a number that it became NEGATIVE.   (Overflow Error!)  I had to swap the variable type from INTEGER to LONG for icount3, to have it finally tell me I was getting 43,582 refreshes in 3 seconds.

Wow. In my tests that change sped it up to 6-7 times faster.

Would you help me understand what's happening?

Code: QB64: [Select]
  1.         tempScreen = _CopyImage(0, 33)
  2.  

So just by _CopyImage copying 0 (current screen) to hardware (33) and _DisplayOrder _Hardware, we are totally changing to a hardware image display.

Code: QB64: [Select]
  1.             _PutImage , tempScreen

So this is just refreshing screen 0 (m_iScreen, the target screen the tile routine draws to) to the hardware layer? I'm kind of confused.

Code: QB64: [Select]
  1.         _FreeImage tempScreen
  2.  

So we change the _DisplayOrder - to return control to the normal sofware graphics.
Why is _Hardware in that line at all?
How is tempScreen freed up to do a _FreeImage when _Hardware is still in the _DisplayOrder statement?

Anyway, this is an amazing increase in speed, thank you Mr. McNeill for taking the time to share this technique.
« Last Edit: February 23, 2022, 11:04:17 am by madscijr »

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #11 on: February 23, 2022, 11:18:18 am »
Would you help me understand what's happening?

Certainly!

Let me start by breaking the process down to something non-computer related, so we can visualize what's going on.  Let's begin by imagining (or taking out) two pieces of glass or clear plastic.  On one of those sheets, we draw a square with red lipstick.  On the other sheet, we draw a circle in bright green lipstick.  These two sheets are our "layers", and how we stack them affects what we see on the screen.

Imagine, for a moment, that you place the sheet with the square on top of the sheet with the circle.  If they overlap, the square is going to overwrite the circle, blocking it from view.  If you swap the position of those sheets, so that the sheet with the circle is on top, it's going to block the view of the square.  Which layer is on top greatly effects what we see, as it obscures what's beneath it. 

Quick, easy test:  grab a quarter and a nickel out of your pocket.  Place the quarter on top of the nickel, look directly down on them and draw what you see.  You're just going to draw the quarter as it completely hides the nickel!  Swap their order, with the nickel on top of the quarter and then draw what you see -- the majority of the quarter is going to be obscured and hidden under that nickel!

_DISPLAYORDER works in that exact manner, as we're working with two distinct layers -- both a _HARDWARE and a _SOFTWARE layer.  We can decide if we want to draw our images with the "nickel" (hardware) on top, or the "quarter" on top -- and the order will greatly affect what we actually end up viewing on our monitors!

Now, with this concept of "layering" out of the way, let me explain what I'm doing specifically here, and why it's so much faster:

Originally, you had a software screen, and -- by default -- you were drawing your hardware layer on top of it.  The software screen was the one which you were using PRINT and other such commands on, and then you _PUTIMAGE a hardware image over top of it.  In your loops, you were rendering BOTH screens each and every time you had a loop and called _DISPLAY.

Think of this:

PRINT "Hello World"
DO
   'whatever else you want
    _DISPLAY
LOOP

Now, even if we don't actually change the screen any with the above, isn't that _DISPLAY going to refresh it over and over and over, with the already existing image?  To us, as folks using the program, we never think about it, but our monitor and the program keeps endlessly updating the screen with the same image (just a "Hello World" on a blank screen), seamlessly.

So, for your code, as it existed unchanged, you were constantly redrawing that software screen over and over, and then layering a hardware screen over top of it.  Software screens run off the CPU and are, as such, relatively slow to process.  This created an obvious bottleneck in your program flow.

So, I chose to make a copy of the software screen, while transforming it into a hardware image:

        tempScreen = _CopyImage(0, 33)

Make a copy of the visible screen (the 0), and transform it to a hardware image (the 33).

As soon as that was done, I told our program to completely stop rendering any software screen:

      _DisplayOrder _Hardware

Notice that there's no , _SOFTWARE in that statement at all?  By using the command like this, I completely disabled drawing any software screens, letting the program *ONLY* draw hardware screens.

But wouldn't this leave me with a blank screen, hiding all the PRINT statements and previous drawings?

Absolutely it does!

Which is why I put that hardware copy of the screen back every loop cycle:

       _PutImage , tempScreen

Now, my hardware layer would look *exactly* like the old software layer did, and as you run the program, you don't even notice that the software layer is completely gone.  There's *absolutely* nothing being rendered to the software layer at this point -- everything we see on the screen is a hardware image!

After that is your code to draw the tiles on the hardware screen:   DrawTileHw8 imgHardwareTiles, iTileNum, m_iScreen, iX, iY, iColor  (and its relevant loop)

Then, when we're finished, we have the _AUTODISPLAY, which tells the program to update our screen automatically for us as we use PRINT statements and such...

But at this point, we still *don't* have any software screen visible!

Left as is, when we exit our code block (as defined by the IF... END IF statement we're in), all we'd have would be a blank screen for the user to stare at.  We're not rendering the software screen, and the hardware images flushed themselves out of our GPU's memory with the last _DISPLAY...  With no new hardware images to show, and since we're deliberately not doing anything software related, all we'd have is a completely blank display!

That's not what we want!

So we tell the program to start rendering those software images once again, and -- if we want them -- to draw any hardware images on top of the software layer:

       _DisplayOrder _Software , _Hardware



From your questions here, "So we change the _DisplayOrder - does that mean the hardware image tileset is now permanently written to the software image m_iScreen ?  How is tempScreen freed up to do a _FreeImage when _Hardware is still in the _DisplayOrder statement?", it appears that you're having a little problem understanding what _DISPLAYORDER does.

To explain, let's go back to the quarter and the nickel.

_DISPLAYORDER "nickel", "quarter" -- this type statement will, of course, toss all sorts of errors as we don't have nickels and quarters in QB64.  BUT, let's pretend for a moment that we do!  What would this statement actually *do* for us, if it could do anything??

It would tell us to put the nickel down on the table first, and then place the quarter down on top of it.

_DISPLAYORDER "quarter", "nickel"

And the above? 

It'd just say to place the quarter down on the table first, and then lay the nickel down on top of it.

At no point are we turning the nickel into a quarter, nor are we turning the quarter into a nickel, with these commands.  (We have _COPYIMAGE ,33 for that.)  All we're doing is setting which one is on top of the other.

_DISPLAYORDER "nickel"

And, if we had the above? 

We'd stick the quarter in our pocket and only place the nickel on the table!



And that's basically the whole concept of what I've did to speed things up here.

First, I made a hardware copy of the software image so the user wouldn't miss it.  tempScreen = _CopyImage(0, 33)

Then I told our program that I wasn't going to render anything except hardware images:        _DisplayOrder _Hardware

So the user didn't notice anything different, I then placed my "fake" hardware copy of the software screen down:   _PutImage , tempScreen

Then I did my other hardware drawings:        DrawTileHw8 imgHardwareTiles, iTileNum, m_iScreen, iX, iY, iColor

And, when I was finished with everything, I went back to our normal rendering method of Software screen, Hardware screen:         _DisplayOrder _Software , _Hardware

And, I made certain to free up that tempScreen that I was using as a fake backdrop of the original software screen:         _FreeImage tempScreen



And that's what's going on here!  ;)

The reason why this is so much faster than what you had previously??

1) You were drawing BOTH software and hardware screens, and software screens are MUCH slower than hardware.
2) I disabled the software screens completely, *only* using the GPU and hardware images.

Hardware (GPU) processing is multiple times faster than Software (CPU) processing.  By swapping everything that I was doing over from software images to pure hardware, and by turning off all software rendering, things run much, much faster for us -- as you can see for yourself quite easily. ;)
 

https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline madscijr

  • Seasoned Forum Regular
  • Posts: 295
    • View Profile
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #12 on: February 23, 2022, 11:57:22 am »
Certainly!
...
Hardware (GPU) processing is multiple times faster than Software (CPU) processing.  By swapping everything that I was doing over from software images to pure hardware, and by turning off all software rendering, things run much, much faster for  - as you can see for yourself quite easily. ;)

That all makes sense, thanks for explaining it with that "dummies" version!

I do have one more possibly dumb question - since hardware imaging is so much faster, why doesn't QB64 just use that automatically by default for the visible display? Why is software rendering even used at all?

Thanks again!

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #13 on: February 23, 2022, 12:19:23 pm »
That all makes sense, thanks for explaining it with that "dummies" version!

I do have one more possibly dumb question - since hardware imaging is so much faster, why doesn't QB64 just use that automatically by default for the visible display? Why is software rendering even used at all?

Thanks again!

The main reason we don't use hardware images as default is as you noticed before:  We can't set them as a _SOURCE or _DEST.  Circle, Line, PSET, PRINT, and all our other output commands don't work with hardware images.

Think of DATA statements.  WHY is DATA included in a program, when we could use a text file and OPEN FOR INPUT (or OUTPUT/APPEND) when needed?  DATA is read-only, with no way to write to or change.  Hardware images tend to follow this same style -- we can't change them, add to them, draw or print on them.

If you want to PRINT to a program, by far the simplest way is to just use PRINT and a Software screen.  To do the same with hardware images, you'd basically need to convert every letter into an image, _PUTIMAGE those images of the letters to the screen, and get them in the right place and order manually.

Now, don't get me wrong -- it *can* be done to render your own letters and such to the screen as hardware images.  In fact, I've got a few programs floating around here somewhere that does it (if you search for "SUB PrintOut", I think it'd find one of the earliest ones I did for the forums here).  The only thing is you can't do it as easily as you can just type PRINT text$! 

One note here -- if you do go the route of drawing images of letters and putting them onto the screen, and you make them hardware images, you can also end up rendering those multiple times faster than PRINT normally works with the software screen.  They're a lot more work, but if speed is an absolute concern for your program, then it might be worth drawing your own hardware letters and putting them to the screen.  ;)

TLDR:  Basically at the end of the day, we use software images by default as hardware images tend to be write only and not something which we can add to or edit once they're created.  ;)
https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline madscijr

  • Seasoned Forum Regular
  • Posts: 295
    • View Profile
Re: fastest way to draw a 2-color 8x8 tile (with variable colors)?
« Reply #14 on: February 23, 2022, 12:35:19 pm »
...
TLDR:  Basically at the end of the day, we use software images by default as hardware images tend to be write only and not something which we can add to or edit once they're created.  ;)

Makes sense - thanks yet again!