Snake game (for Android phones)

Discussions related to graphics (2D and 3D), animation and games programming
David Williams

Snake game (for Android phones)

Post by David Williams »

Just a video of the current work-in-progress version:

https://www.youtube.com/watch?v=4g20H6EkxBg

I've been making this game simply to pass the time at work! I hope to have it all wrapped up within a week or two, and I might even submit a properly packaged version of the program to the Google Play Store.

The game is frame-rate independent, so it runs at the same speed on pretty much any Android phone.


David.
--
David Williams

Re: Snake game (for Android phones)

Post by David Williams »

The current work-in-progress version (0.16 beta) can be downloaded via the following URL:

(temporary link removed)

I've uploaded an updated YouTube video:

https://www.youtube.com/watch?v=Wm3cgeSuqWE

No sound effects yet, and there's some other bits to do - including tidying up the code, optimisation, etc.

The code is not meant to be in any way instructional, so please don't treat it as such!

The game is intended for Android phones, but will run under BB4W and BBCSDL (Windows), and probably other variants as well. If playing on a PC, use left and right arrow keys to steer the snake.


David.
--
Last edited by David Williams on Wed 22 Aug 2018, 16:43, edited 1 time in total.
David Williams

Re: Snake game (for Android phones)

Post by David Williams »

The latest work-in-progress version has sound effects:

(temporary link removed)
Last edited by David Williams on Wed 22 Aug 2018, 16:44, edited 1 time in total.
David Williams

Re: Snake game (for Android phones)

Post by David Williams »

If someone could run this program on an Android phone, and confirm the behaviour I'm experiencing (described below) then I would be very grateful:

Code: Select all

      REM For use with BBCSDL (Android)
      ON ERROR OSCLI "REFRESH ON" : IF ERR=17 CHAIN @tmp$+"../examples/touchide" ELSE MODE 8 : PRINT REPORT$ : END
      MODE 8 : OFF
      IF POS
      ScrW% = @vdu%!208
      ScrH% = @vdu%!212
      R% = 150 : REM radius
      G% = 32 : REM gap
      K% = FALSE
      update% = TRUE
      REPEAT
        MOUSE X%, Y%, B%
        IF B% = 4 THEN
          IF X% < ScrW%/2 AND K%=TRUE   THEN K%=FALSE : update% = TRUE
          IF X% >= ScrW%/2 AND K%=FALSE THEN K%=TRUE : update% = TRUE
        ENDIF
        IF update% THEN
          CLS
          GCOL 2
          CIRCLE R%+G%,ScrH%,R%+8
          CIRCLE 2*ScrW%-(R%+G%),ScrH%,R%+8
          IF NOT K% THEN
            GCOL 7 : CIRCLE FILL R%+G%,ScrH%,R%-4
          ELSE
            GCOL 7 : CIRCLE FILL 2*ScrW%-(R%+G%),ScrH%,R%-4
          ENDIF
          update% = FALSE
        ENDIF
        WAIT 1
      UNTIL FALSE
Using your thumbs, press/tap the circles in an alternating fashion - left, right, left, right, and so on (a rate of 1 or 2 taps per second should suffice).

On my phone (Moto G4 Plus running Android 7), I notice that after a number of presses (it could take dozens of taps, or just a few), the program fails to detect some presses, even when I have clearly and firmly tapped on a circle. This issue is causing a problem with my snake game (and costing me lives!) when played on my Android phone. Left and right on-screen 'buttons' are used to steer the snake, but sometimes the button one has carefully (and even firmly) pressed doesn't get 'detected' and so the player often ends up steering into himself and dying.

In both the YouTube videos of this game I've uploaded, the snake eventually runs into itself because of this issue (I tried to turn to avoid disaster but the button was unresponsive at that moment).

If anyone has any suggestions (or can point out what I'm doing wrong), then please let me know.


David.
--
David Williams

Re: Snake game (for Android phones)

Post by David Williams »

I have updated the 'BB4W Games' website to include 'Rainbow Snake' (as a Windows EXE file, although the download also includes the BB4W/BBCSDL (32-bit) source code):

http://www.proggies.uk/

YouTube video (with sound): https://www.youtube.com/watch?v=2rVZS2mKzRg

I've put on hold the Android Play Store release of the game until I've resolved two issues:

1) The click/tap responsiveness issue detailed earlier in this thread
2) Preventing (usually inadvertent) screen 'zooming' (not yet sure if this can be done via the Android App manifest - currently looking into this)


David.
--
David Williams

Re: Snake game (for Android phones)

Post by David Williams »

[OT] Bored at work...

Code: Select all

      REM "Tunnel 5" // v1.0 (27-Aug-2018)
      REM Uses 16-bit RGB565 colour
      REM For BB4W and BBCSDL (32-bit only; not compatible with MacOS)

      REM!Keep NumBalls%, BallSz%, VSync%, FN_sortinit()

      VSync% = TRUE : REM no effect under BBCSDL. Set to FALSE if animation is jerky

      NumBalls%    = 350
      BallSz%      = 40 : REM width & height of ball sprite
      NumBallCols% = 25 : REM number of ball colours (= 1 sprite per colour)
      MaxZ%        = 5000
      Rho%         = 50
      Scale%       = 50
      Radius%      = 2000

      HIMEM = LOMEM + 2*&100000
      HIMEM = (HIMEM + 15) AND -16

      ON CLOSE QUIT
      ON ERROR PROCerror( REPORT$ + " at line " + STR$ERL )

      BB4W% = (INKEY(-256) == &57)

      IF BB4W% THEN OSCLI "ESC OFF" : SYS "timeBeginPeriod", 1

      MODE 8 : OFF : IF POS

      PROCFixWindowSize

      ScrW% = @vdu%!208
      ScrH% = @vdu%!212

      REM -------------------------------------
      IF BB4W% THEN
        GetTicks$ = "GetTickCount"
      ELSE
        GetTicks$ = "SDL_GetTicks"
      ENDIF
      REM -------------------------------------
      REM This code segment is the work of RTR:
      p = PI
      CASE !^p OF
        WHEN &2168C235: cpu$ = "x86" : ARM% = FALSE
        WHEN &54442D18: cpu$ = "arm" : ARM% = TRUE
        OTHERWISE: QUIT
      ENDCASE
      REM -------------------------------------

      REM Get addresses of x86 or ARM machine code routines
      REM (these routines use only Intel & ARM 32-bit ISA):
      ClipBitmap%       = FNread_data( "clipbitmap_"                  + cpu$ )
      Clr%              = FNread_data( "clr16_"                       + cpu$ )
      CopyData%         = FNread_data( "copydata_"                    + cpu$ )
      Plot%             = FNread_data( "plot16_"                      + cpu$ )
      PlotScaleFadeToBlack% = FNread_data( "plot16_scalefadetoblack_" + cpu$ )
      PlotTint%         = FNread_data( "plot16_tint_"                 + cpu$ )
      PlotPixel%        = FNread_data( "plotpixel16_"                 + cpu$ )
      ConvBmRGB565%     = FNread_data( "convbmrgb8888torgb565_"       + cpu$ )
      ScoreDigits12x20% = FNread_data( "digits12x20" ) : REM 10 12x20 bitmaps for character numbers 0 to 9 (used for FPS display)

      REM Convert the 32bpp 12x20 'digit' bitmaps to 16bpp RGB565
      REM (the original 32bpp bitmaps get overwritten by their respective 16bpp versions, which is safe to do):
      FOR I% = 0 TO 9
        A% = ScoreDigits12x20% + ScoreDigits12x20%!(4*I%) : REM source address
        B% = A% : REM destination address (set here to source address)
        C% = 12 : REM bitmap width
        D% = 20 : REM bitmap height
        CALL ConvBmRGB565%
      NEXT I%

      INSTALL @lib$ + "sortlib"
      Sort% = FN_sortinit(1, 0)

      REM Create our main rendering surface/bitmap:
      DIM bmp{a%, w%, h%}
      bmp% = FNCreateBMP_RGB565(ScrW%, ScrH%)
      bmp.a% = bmp% + 70 : REM bmp.a% contains address of first byte of bitmap (header size is 70 bytes)
      bmp.w% = ScrW%
      bmp.h% = ScrH%

      REM Define parameter blocks used by the machine code routines:
      BfVars% = FNmalloc( 32 )
      BmVars% = FNmalloc( 32 )
      ClipVars% = FNmalloc( 64 )
      ClipVars%!0 = ClipBitmap%

      DIM BallSpr%( NumBallCols%-1 )

      REM Make the greyscale template 32x32 'ball' sprite:
      BallSpr% = FNmalloc( 2 * BallSz%^2 )
      A%=BallSpr% : B%=0 : C%=2*BallSz%^2 : CALL Clr% : REM first clear template bitmap (not strictly necessary!)
      A%=BfVars% : A%!0=BallSpr% : A%!4=BallSz% : A%!8=BallSz%
      R% = (BallSz%/2-1)^2
      FOR Y% = 0 TO BallSz%-1
        C% = Y%
        K% = (Y%-BallSz%/2)^2
        FOR X% = 0 TO BallSz%-1
          d% = (X%-BallSz%/2)^2 + K%
          IF d% <= R% THEN
            f = SQR(1 - d%/R%)
            B% = X%
            D% = INT(31*f) + (INT(63*f)<<5) + (INT(31*f)<<11)
            CALL PlotPixel%
          ENDIF
        NEXT
      NEXT

      REM Make multiple copies of the ball sprite, and then tint them various colours:
      FOR I% = 0 TO NumBallCols%-1
        BallSpr%(I%) = FNmalloc( 2 * BallSz%^2 )
        A%=BallSpr% : B%=BallSpr%(I%) : C%=2*BallSz%^2 : CALL CopyData%
        A% = ClipVars%
        B% = BfVars%
        C% = BmVars%
        D% = Plot% : REM needed when tint factor = 0
        BfVars%!0 = BallSpr%(I%)
        BfVars%!4 = BallSz%
        BfVars%!8 = BallSz%
        BmVars%!0 = BallSpr%(I%)
        BmVars%!4 = BallSz% : REM w
        BmVars%!8 = BallSz% : REM h
        BmVars%!12 = 0 : REM x
        BmVars%!16 = 0 : REM y
        BmVars%!20 = (24+RND(7)) + ((8+RND(24))<<5) + ((4+RND(6))<<11) : REM RGB565 tint colour
        BmVars%!24 = 180 : REM tint factor
        CALL PlotTint%
      NEXT I%

      REM Define some pre-calculated constants to speed up the inner loop:
      r% = Radius% * Scale%
      M = 1 / MaxZ%
      p = 2 * PI
      k = p*M/2

      REM Define the ball objects' initial states:
      DIM spr%(NumBalls%-1), a(NumBalls%-1), x(NumBalls%-1), y(NumBalls%-1), z(NumBalls%-1), i%(NumBalls%-1)
      FOR I% = 0 TO NumBalls%-1
        i%(I%) = I%
        PROCSetPos( I%, 0 )
        spr%(I%) = BallSpr%( RND(NumBallCols%-1) )
      NEXT I%

      sortZ% = TRUE : REM sort objects flag

      frames% = 0
      frameRate% = 0

      t = 0

      *REFRESH OFF

      SYS GetTicks$ TO time% : time0% = time%

      REPEAT
  
        oldTime% = time%
        SYS GetTicks$ TO time%
        dt = (time% - oldTime%) / 100
  
        REM Enter a CPU-friendly spin loop if window loses focus:
        IF NOT FNCheckForWindowFocus THEN
          SYS GetTicks$ TO time%
          *REFRESH OFF
        ENDIF
  
        A%=bmp.a% : B%=0 : C%=bmp.w%*bmp.h% : CALL Clr%
  
        angOffs = FNGetAngleOffset( t )
  
        IF sortZ% THEN
          C% = NumBalls% : CALL Sort%, z(0), i%(0)
          sortZ% = FALSE
        ENDIF
  
        A% = BfVars%
        B% = BmVars%
        A%!0 = bmp.a%
        A%!4 = bmp.w%
        A%!8 = bmp.h%
        B%!4  = BallSz% : REM ball spr W
        B%!8  = BallSz% : REM ball spr H
        W% = B% + 12
        H% = B% + 16
        X% = B% + 20
        Y% = B% + 24
  
  
        Q% = BallSz% - 8
  
        P% = PlotScaleFadeToBlack%
  
        FOR I% = 0 TO NumBalls%-1
          i% = i%(I%)
          a = a(i%) + angOffs
          z = z(I%)
          Z = r%/(Rho%+z)
          f = 1-z*M
          S% = 8 + Q%*f
    
          !B% = spr%(i%)
          !W% = S%
          !H% = S%
          !X% = x(i%) + Z*SINa - 0.5*S%
          !Y% = y(i%) + Z*COSa - 0.5*S%
          B%!&1C = &100*f
          CALL P%
    
          z(I%) -= 70 * dt
          IF z(I%) <= 0 THEN
            PROCResetPos(I%, i%, t)
            sortZ% = TRUE
          ENDIF
        NEXT
  
        t += 100 * dt
  
        PROCPrintFPS
  
        OSCLI "MDISPLAY "+STR$~bmp%
        IF BB4W% AND VSync% THEN PROC`w : REM BB4W only
        *REFRESH
        IF BB4W% AND NOT VSync% THEN SYS "Sleep", 2
  
        IF time% - time0% >= 1000 THEN
          frameRate% = frames%
          frames% = 0
          SYS GetTicks$ TO time0%
        ENDIF
  
        frames% += 1
  
      UNTIL FALSE

      DEF FNCheckForWindowFocus
      REM Return TRUE if window has input focus when first checked (i.e. no spin/wait loop entered)
      REM Return FALSE if window didn't have input focus (and therefore entered a spin loop until it did gain focus)
      LOCAL F%
      F% = TRUE
      IF BB4W% THEN
        SYS "GetForegroundWindow" TO R%
        IF R% <> @hwnd% THEN
          *REFRESH ON
          REPEAT
            SYS "GetForegroundWindow" TO R%
            WAIT 2
          UNTIL R% = @hwnd%
          F% = FALSE
        ENDIF
      ELSE
        REM SDL_WINDOW_INPUT_FOCUS = 0x00000200,        /**< window has input focus */
        REM SDL_WINDOW_MOUSE_FOCUS = 0x00000400,        /**< window has mouse focus */
        SYS "SDL_GetWindowFlags", @hwnd% TO R%
        IF (R% AND &200) = 0 THEN
          *REFRESH ON
          REPEAT
            SYS "SDL_GetWindowFlags", @hwnd% TO R%
            WAIT 2
          UNTIL R% AND &200
          F% = FALSE
        ENDIF
      ENDIF
      = F%

      DEF PROCPrintFPS
      LOCAL A%, B%, C%, L%, I%, i%, s$
      A% = ClipVars%
      B% = BfVars%
      C% = BmVars%
      BmVars%!4 = 12 : REM bitmap width
      BmVars%!8 = 20 : REM bitmap height
      s$ = STR$frameRate%
      BmVars%!16 = ScrH%-28 : REM bitmap Y pos
      L% = LENs$
      X% = 6
      FOR I% = 1 TO L%
        i% = ASCMID$(s$, I%, 1) - 48
        BmVars%!12 = X% + 12*(I%-1)
        !BmVars% = ScoreDigits12x20% + ScoreDigits12x20%!(4*i%)
        CALL Plot%
      NEXT
      ENDPROC

      DEF FNGetAngleOffset( T )
      LOCAL t1, t2, t3, s1, s2, s3
      t1 = T / 6000
      t2 = T / 9250
      t3 = T / 10156
      s1 = SINt1
      s2 = SIN(t2 - 0.754512)
      s3 = SIN(t3 + 1.208122)
      = 2*PI*s1*s2*s3^2

      DEF PROCSetPos( J%, T )
      PROCSetXY(J%,T)
      a(J%) = 2*PI*RND(1) + FNGetAngleOffset(T)
      z(J%) = 1 + (MaxZ%-1)*RND(1)
      ENDPROC

      DEF PROCResetPos(I%, i%, T)
      PROCSetXY(i%,T)
      z(I%) = MaxZ%
      ENDPROC

      DEF PROCSetXY(J%, T)
      LOCAL a, b, c
      a = T/2800
      b = T/3700
      c = T/5120
      x(J%) = ScrW%/2 + 400*SIN(a)*SIN(b+0.8)*SIN(c-1.2)
      y(J%) = ScrH%/2 + 400*COS(a)*COS(b+0.8)*COS(c-1.2)
      ENDPROC

      DEF FNGetProcAddress(p$)
      LOCAL P% : DIM P% LOCAL 8
      [OPT 0:nop:]
      CASE P%?-1 OF
        WHEN &90: [OPT 0:call p$:] = P% + P%!-4
        WHEN &E1: [OPT 0:equd p$:] = P%!-4
      ENDCASE
      = FALSE

      DEF FNCreateBMP_RGB565(W%, H%)
      LOCAL A%, S%
      S% = 70 + 2*W%*H%
      DIM A% S%+15
      A% = ((A% + 7) AND -8) + 2
      A%?0 = ASC"B"
      A%?1 = ASC"M"
      A%!2 = S%
      A%!10 = 70
      A%!14 = 56
      A%!18 = W%
      A%!22 = H%
      A%?26 = 1
      A%?28 = 16
      A%!30 = 3
      A%!34 = 2*W%*H%
      A%!38 = 11808
      A%!42 = 11808
      A%!54 = &0000F800
      A%!58 = &000007E0
      A%!62 = &0000001F
      = A%

      DEF FNread_data( r$ )
      LOCAL I%, data%, byte%, s$
      data% = FNmalloc( 16384 )
      RESTORE
      REPEAT : READ s$ : UNTIL s$ = r$
      I% = 0
      REPEAT
        READ byte%
        IF byte% <> -1 THEN
          data%?I% = byte%
          I% += 1
        ENDIF
      UNTIL byte% = -1
      = data%

      DEF FNmalloc( N% )
      LOCAL A%
      DIM A% N%+15
      A% = (A% + 7) AND -8
      = A%

      DEFPROC`w:PRIVATEB%,G%,I%,S%,W%:LOCALL%,P%,T%:IFS%=0 S%=FNGetProcAddress("Sleep")
      IFB%=0SYS"timeBeginPeriod",1:B%=1
      IFI%=0PROC`7(I%,G%)
      L%=0:P%=^T%:REPEAT:L%=T%:SYSS%,1:SYSG%,I%,P%:UNTILT%<L%:ENDPROC

      REM A BB4W-specific routine that sets up a DirectDraw 7 interface.
      DEFPROC`7(RETURN I%,RETURN G%):LOCALD%,E%,J%,K%,L%
      SYS"LoadLibrary","DDRAW.DLL"TOD%:IFD%=0 ERROR100,"`7 failed"
      SYS"GetProcAddress",D%,"DirectDrawCreateEx"TOE%:DIMJ%19,L%95:J%=J%+3AND-4
      L%=L%+3AND-4:!J%=&15E65EC0:J%!4=&11D23B9C:J%!8=&60002FB9:J%!12=&5BEA9797
      SYSE%,0,^K%,J%,0:L%=!K%:I%=K%:G%=L%!64
      ENDPROC

      DEF PROCFixWindowSize
      IF BB4W% THEN
        REM GWL_STYLE = -16
        REM WS_THICKFRAME = &40000
        REM WS_MAXIMIZEBOX = &10000
        REM SYS "GetWindowLong", @hwnd%, GWL_STYLE TO ws%
        REM SYS "SetWindowLong", @hwnd%, GWL_STYLE, ws% AND NOT WS_THICKFRAME \
        REM \ AND NOT WS_MAXIMIZEBOX
        LOCAL W%
        SYS "GetWindowLong", @hwnd%, -16 TO W%
        SYS "SetWindowLong", @hwnd%, -16, W% AND NOT &40000 AND NOT &10000
      ELSE
        REM If BBCSDL (Windows, Linux, or--very unlikely--MacOS) then prevent window resize:
        IF (@platform% AND &F) < 3 THEN
          SYS "SDL_SetWindowResizable", @hwnd%, 0
        ENDIF
      ENDIF
      ENDPROC

      DEF PROCerror( s$ )
      LOCAL F%
      OSCLI "REFRESH ON"
      F% = OPENIN(@lib$+"../examples/tools/touchide") : CLOSE#F%
      IF NOT BB4W% THEN
        IF ERR = 17 THEN
          IF F% THEN CHAIN @lib$+"../examples/tools/touchide"
        ENDIF
      ENDIF
      CLS : OFF : VDU 7
      COLOUR 9  : PRINT '"  *** ERROR ***" : WAIT 100
      COLOUR 11 : PRINT '"  " + s$; : WAIT 250
      COLOUR 7  : PRINT '''"  Closing in 5 seconds...";
      WAIT 500
      IF NOT BB4W% THEN
        IF F% THEN CHAIN @lib$+"../examples/tools/touchide"
      ENDIF
      QUIT
      ENDPROC

      DATA "clipbitmap_x86"
      DATA 96,199,64,28,255,255,255,255,139,120,20,59,120,4,15,141,192,0,0,0,139,112,24,59,112,8,15,141,180,0,0,0,139,72,12,139,80,16,131,249,0,125,3,247,217,144,131,250
      DATA 0,125,3,247,218,144,247,217,59,249,15,142,148,0,0,0,247,218,59,242,15,142,138,0,0,0,247,217,247,218,199,64,28,0,0,0,0,199,64,32,0,0,0,0,199,64,36,0
      DATA 0,0,0,199,64,40,0,0,0,0,137,72,44,137,80,48,137,120,52,137,112,56,139,239,3,233,59,104,4,126,13,43,104,4,41,104,44,199,64,32,255,255,255,255,131,255,0,125
      DATA 20,41,120,40,1,120,44,199,64,52,0,0,0,0,199,64,32,255,255,255,255,139,238,3,234,59,104,8,126,13,43,104,8,41,104,48,199,64,32,255,255,255,255,131,254,0,125,20
      DATA 41,112,36,1,112,48,199,64,56,0,0,0,0,199,64,32,255,255,255,255,97,195
      DATA -1

      DATA "clr16_x86"
      DATA 96,139,248,139,195,252,243,102,171,97,195
      DATA -1

      DATA "copydata_x86"
      DATA 96,139,240,139,251,252,243,164,97,195
      DATA -1

      DATA "plot16_x86"
      DATA 96,131,236,32,139,83,4,139,123,8,137,80,4,137,120,8,139,81,4,139,121,8,137,80,12,137,120,16,139,81,12,139,121,16,137,80,20,137,120,24,255,16,247,64,28,255,255,255
      DATA 255,15,133,83,0,0,0,139,27,139,9,139,120,4,137,60,36,209,36,36,15,175,120,56,3,120,52,209,231,3,251,139,112,12,137,116,36,4,209,100,36,4,15,175,112,36,3,112
      DATA 40,209,230,3,241,139,80,44,139,104,48,51,201,102,139,4,78,102,169,255,255,116,4,102,137,4,79,65,59,202,124,237,3,60,36,3,116,36,4,77,117,225,131,196,32,97,195
      DATA -1

      DATA "plot16_scalefadetoblack_x86"
      DATA 96,139,236,131,237,72,129,236,128,0,0,0,137,69,36,139,51,137,117,40,139,115,4,137,117,44,139,115,8,137,117,48,139,115,12,137,117,52,139,115,16,137,117,56,139,115,20,137
      DATA 117,60,139,115,24,137,117,64,139,115,28,137,117,68,131,125,68,0,15,141,12,0,0,0,199,69,68,0,0,0,0,233,20,0,0,0,129,125,68,0,1,0,0,15,142,7,0,0
      DATA 0,199,69,68,0,1,0,0,155,219,227,155,217,60,36,102,139,4,36,102,37,255,243,102,13,0,12,102,137,4,36,217,44,36,139,85,52,131,250,0,15,142,150,1,0,0,139,125
      DATA 56,131,255,0,15,142,138,1,0,0,104,0,0,1,0,219,4,36,219,69,44,218,117,52,216,201,219,92,36,4,219,69,48,218,117,56,222,201,219,92,36,8,131,196,4,139,69,36
      DATA 139,93,60,247,218,59,218,15,142,87,1,0,0,59,88,4,15,141,78,1,0,0,139,77,64,247,223,59,207,15,142,65,1,0,0,59,72,8,15,141,56,1,0,0,247,218,247,223
      DATA 137,92,36,8,137,76,36,12,137,84,36,16,137,124,36,20,199,68,36,24,0,0,0,0,199,68,36,28,0,0,0,0,139,112,4,209,230,137,116,36,32,139,117,68,137,116,36,36
      DATA 131,251,0,125,16,199,68,36,8,0,0,0,0,1,92,36,16,41,92,36,28,139,80,4,43,85,52,59,218,126,11,139,112,4,43,116,36,8,137,116,36,16,131,249,0,125,16,199
      DATA 68,36,12,0,0,0,0,1,76,36,20,41,76,36,24,139,80,8,43,85,56,59,202,126,11,139,112,8,43,116,36,12,137,116,36,20,139,116,36,12,15,175,112,4,3,116,36,8
      DATA 209,230,3,48,139,93,40,51,255,139,207,3,76,36,24,15,175,76,36,4,193,233,16,15,175,77,44,209,225,87,80,85,83,81,139,68,36,20,139,108,36,48,3,217,139,124,36,36
      DATA 79,139,76,36,56,139,215,3,213,15,175,208,193,234,16,15,183,20,83,102,133,210,116,65,83,85,139,218,131,227,31,15,175,217,193,235,8,139,235,139,218,129,227,224,7,0,0,193
      DATA 235,5,15,175,217,193,235,8,193,227,5,11,235,139,218,129,227,0,248,0,0,193,235,11,15,175,217,193,235,8,193,227,11,11,235,102,137,44,126,93,91,79,15,141,165,255,255,255
      DATA 89,91,93,88,95,3,116,36,32,71,59,124,36,20,15,140,101,255,255,255,129,196,128,0,0,0,97,195
      DATA -1

      DATA "plot16_tint_x86"
      DATA 96,131,236,32,131,121,24,0,127,8,255,210,144,233,37,1,0,0,129,121,24,0,1,0,0,124,7,199,65,24,0,1,0,0,139,83,4,139,123,8,137,80,4,137,120,8,139,81
      DATA 4,139,121,8,137,80,12,137,120,16,139,81,12,139,121,16,137,80,20,137,120,24,255,16,247,64,28,255,255,255,255,15,133,226,0,0,0,139,81,20,137,84,36,16,139,81,24,137
      DATA 84,36,20,139,27,139,9,139,120,4,137,60,36,209,36,36,15,175,120,56,3,120,52,209,231,3,251,139,112,12,137,116,36,4,209,100,36,4,15,175,112,36,3,112,40,209,230,3
      DATA 241,139,80,44,137,84,36,8,139,80,48,137,84,36,12,51,237,102,247,4,110,255,255,116,114,15,183,4,110,15,183,92,36,16,85,51,237,139,200,139,211,131,225,31,131,226,31,43
      DATA 209,15,175,84,36,24,193,234,8,3,202,11,233,139,200,139,211,129,225,224,7,0,0,129,226,224,7,0,0,193,233,5,193,234,5,43,209,15,175,84,36,24,193,234,8,3,202,193
      DATA 225,5,11,233,37,0,248,0,0,129,227,0,248,0,0,193,232,11,193,235,11,43,216,15,175,92,36,24,193,235,8,3,195,193,224,11,11,197,93,102,137,4,111,69,59,108,36,8
      DATA 15,140,123,255,255,255,3,60,36,3,116,36,4,255,76,36,12,15,133,104,255,255,255,131,196,32,97,195
      DATA -1

      DATA "plotpixel16_x86"
      DATA 96,139,56,139,112,4,139,104,8,59,222,115,15,59,205,115,11,15,175,206,3,203,209,225,102,137,20,15,97,195
      DATA -1

      DATA "convbmrgb8888torgb565_x86"
      DATA 96,139,248,139,243,15,175,209,51,237,15,182,4,175,15,182,92,175,1,15,182,76,175,2,105,192,31,31,0,0,105,219,63,63,0,0,105,201,31,31,0,0,193,232,16,131,208,0
      DATA 193,235,16,131,211,0,193,233,16,131,209,0,193,227,5,193,225,11,11,195,11,193,102,137,4,110,69,59,234,124,187,97,195
      DATA -1

      REM *********************************************************************************************************************

      DATA "clipbitmap_arm"
      DATA 255,95,45,233,0,192,224,227,28,192,128,229,4,176,128,226,126,0,155,232,1,0,85,225,255,159,189,168,2,0,86,225,255,159,189,168,3,0,117,225,255,159,189,216,4,0,118,225
      DATA 255,159,189,216,148,208,143,229,148,224,143,229,0,208,160,227,0,224,224,227,28,208,128,229,32,208,128,229,0,112,160,227,0,128,160,227,3,144,160,225,4,160,160,225,3,176,133,224
      DATA 1,0,91,225,1,176,75,192,11,144,73,192,32,224,128,197,0,0,85,227,5,128,72,176,5,144,137,176,0,80,160,179,32,224,128,181,4,176,134,224,2,0,91,225,2,176,75,192
      DATA 11,160,74,192,32,224,128,197,0,0,86,227,6,112,71,176,6,160,138,176,0,96,160,179,32,224,128,181,36,112,128,229,40,128,128,229,44,144,128,229,48,160,128,229,52,80,128,229
      DATA 56,96,128,229,4,208,159,229,4,224,159,229,255,159,189,232,0,0,0,0,0,0,0,0
      DATA -1

      DATA "clr16_arm"
      DATA 7,64,45,233,0,0,82,227,7,128,189,216,178,16,192,224,1,32,82,226,252,255,255,202,7,128,189,232
      DATA -1

      DATA "copydata_arm"
      DATA 15,64,45,233,1,48,208,228,1,48,193,228,1,32,82,226,251,255,255,26,15,128,189,232
      DATA -1

      DATA "plot16_arm"
      DATA 255,95,45,233,4,64,145,229,8,80,145,229,4,96,146,229,8,112,146,229,12,128,146,229,16,144,146,229,4,64,128,229,8,80,128,229,12,96,128,229,16,112,128,229,20,128,128,229
      DATA 24,144,128,229,0,192,144,229,60,255,47,225,28,192,144,229,0,0,92,227,255,159,189,24,0,16,145,229,0,32,146,229,36,80,144,229,40,112,144,229,44,128,144,229,48,144,144,229
      DATA 52,160,144,229,56,176,144,229,80,208,143,229,80,224,143,229,155,164,42,224,138,16,129,224,149,118,39,224,135,32,130,224,255,192,160,227,12,196,140,225,0,48,160,227,179,80,146,225
      DATA 12,0,21,225,179,80,129,17,2,48,131,226,136,0,83,225,249,255,255,186,134,32,130,224,132,16,129,224,1,144,89,226,244,255,255,26,4,208,159,229,4,224,159,229,255,159,189,232
      DATA 0,0,0,0,0,0,0,0
      DATA -1

      DATA "plot16_tint_arm"
      DATA 255,95,45,233,24,192,146,229,1,12,92,227,1,204,160,195,0,176,160,227,0,0,92,227,1,176,160,211,51,255,47,209,1,0,91,227,255,159,189,8,24,192,130,229,20,48,146,229
      DATA 32,49,143,229,4,64,145,229,8,80,145,229,4,96,146,229,8,112,146,229,12,128,146,229,16,144,146,229,4,64,128,229,8,80,128,229,12,96,128,229,16,112,128,229,20,128,128,229
      DATA 24,144,128,229,0,192,144,229,60,255,47,225,28,192,144,229,0,0,92,227,255,159,189,24,208,208,143,229,208,224,143,229,24,224,146,229,0,16,145,229,0,32,146,229,36,80,144,229
      DATA 40,112,144,229,44,128,144,229,48,144,144,229,52,160,144,229,56,176,144,229,155,164,42,224,138,16,129,224,149,118,39,224,135,32,130,224,156,0,159,229,255,192,160,227,12,196,140,225
      DATA 0,48,160,227,179,80,146,225,12,0,21,225,21,0,0,10,31,160,5,226,31,176,0,226,10,208,75,224,158,13,13,224,45,116,138,224,126,174,5,226,126,190,0,226,170,162,160,225
      DATA 171,178,160,225,10,208,75,224,158,13,13,224,45,212,138,224,141,114,135,225,62,171,5,226,62,187,0,226,170,165,160,225,171,181,160,225,10,208,75,224,158,13,13,224,45,212,138,224
      DATA 141,117,135,225,179,112,129,17,2,48,131,226,136,0,83,225,227,255,255,186,134,32,130,224,132,16,129,224,1,144,89,226,222,255,255,26,4,208,159,229,4,224,159,229,255,159,189,232
      DATA 0,0,0,0,0,0,0,0,0,0,0,0
      DATA -1

      DATA "plot16_scalefadetoblack_arm"
      DATA 255,95,45,233,1,192,160,225,254,1,156,232,0,0,88,227,0,128,160,179,1,12,88,227,1,140,160,195,0,28,144,232,60,0,143,226,7,12,128,226,0,28,128,232,32,215,143,229
      DATA 32,231,143,229,1,0,84,227,191,1,0,186,1,0,85,227,189,1,0,186,44,128,128,229,4,128,144,229,6,144,160,225,4,160,134,224,8,0,89,225,183,1,0,170,0,144,160,35
      DATA 8,0,90,225,8,160,160,161,1,160,74,162,0,0,90,227,177,1,0,186,8,176,144,229,7,192,160,225,5,208,135,224,11,0,92,225,172,1,0,170,0,192,160,35,11,0,93,225
      DATA 11,208,160,161,1,208,77,162,0,0,93,227,166,1,0,186,16,16,128,229,20,32,128,229,24,48,128,229,28,64,128,229,32,80,128,229,36,96,128,229,40,112,128,229,48,144,128,229
      DATA 52,160,128,229,56,192,128,229,60,208,128,229,0,16,160,227,2,224,160,225,0,64,100,226,174,31,176,225,0,224,110,18,14,24,145,224,46,232,160,225,14,224,148,224,4,224,78,48
      DATA 1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48
      DATA 1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48
      DATA 1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48
      DATA 1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48
      DATA 1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48
      DATA 1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48
      DATA 1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48
      DATA 1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,16,177,224,142,224,180,224,4,224,78,48,1,160,177,224,0,160,106,50,0,160,106,226
      DATA 0,64,100,226,138,160,160,225,3,224,160,225,0,80,101,226,174,31,176,225,0,224,110,18,14,24,145,224,46,232,160,225,14,224,149,224,5,224,78,48,1,16,177,224,142,224,181,224
      DATA 5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224
      DATA 5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224
      DATA 5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224
      DATA 5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224
      DATA 5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224
      DATA 5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224
      DATA 5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224
      DATA 5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,16,177,224,142,224,181,224,5,224,78,48,1,208,177,224,0,208,109,50,0,208,109,226,0,80,101,226,141,208,160,225
      DATA 4,128,134,224,9,128,72,224,1,128,136,226,5,176,135,224,12,176,75,224,1,176,139,226,154,8,8,224,157,11,11,224,0,128,104,226,0,176,107,226,2,136,152,224,0,128,160,179
      DATA 72,128,128,229,3,184,155,224,0,176,160,179,76,176,128,229,60,224,144,229,12,224,78,224,1,224,142,226,64,224,128,229,52,224,144,229,9,224,78,224,1,224,142,226,68,224,128,229
      DATA 2,104,160,225,3,120,160,225,88,112,128,229,1,224,78,226,154,142,46,224,6,0,94,225,105,0,0,186,2,80,160,225,1,224,132,226,0,224,110,226,165,31,176,225,0,80,101,18
      DATA 5,24,145,224,37,88,160,225,5,80,158,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224
      DATA 14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224
      DATA 14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224
      DATA 14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224
      DATA 14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224
      DATA 14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224
      DATA 14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224
      DATA 14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224,14,80,69,48,1,16,177,224,133,80,190,224
      DATA 14,80,69,48,1,160,177,224,0,160,106,50,0,160,106,226,138,160,160,225,16,16,144,229,0,224,144,229,137,224,142,224,44,144,144,229,0,80,160,227,76,176,128,229,88,112,144,229
      DATA 7,0,91,225,52,0,0,170,72,128,144,229,43,184,160,225,146,11,11,224,139,176,160,225,80,176,128,229,11,16,129,224,4,176,144,229,56,192,144,229,5,192,140,224,155,12,12,224
      DATA 140,192,142,224,68,64,144,229,1,64,68,226,184,208,143,229,184,224,143,229,63,208,160,227,31,224,160,227,40,184,160,225,139,176,160,225,187,176,145,225,11,0,27,225,15,0,0,10
      DATA 132,80,143,229,132,128,143,229,31,80,11,226,153,5,5,224,37,132,160,225,171,82,13,224,153,5,5,224,37,84,160,225,133,130,136,225,171,85,14,224,153,5,5,224,37,84,160,225
      DATA 133,133,136,225,176,128,204,225,76,80,159,229,76,128,159,229,10,128,136,224,2,192,140,226,1,64,84,226,230,255,255,170,68,208,159,229,68,224,159,229,80,176,144,229,11,16,65,224
      DATA 76,176,144,229,13,176,139,224,1,80,133,226,64,128,144,229,1,128,72,226,8,0,85,225,198,255,255,218,16,208,159,229,16,224,159,229,255,159,189,232,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0
      DATA -1

      DATA "plotpixel16_arm"
      DATA 255,64,45,233,112,0,144,232,5,0,81,225,255,128,189,40,6,0,82,225,255,128,189,40,146,21,39,224,135,112,160,225,183,48,132,225,255,128,189,232
      DATA -1

      DATA "convbmrgb8888torgb565_arm"
      DATA 255,95,45,233,147,2,2,224,0,48,160,227,255,160,160,227,84,176,159,229,84,192,159,229,3,81,144,231,37,104,10,224,37,116,10,224,5,128,10,224,155,6,6,224,156,7,7,224
      DATA 155,8,8,224,38,104,176,225,0,96,166,226,39,120,176,225,0,112,167,226,40,136,176,225,0,128,168,226,135,130,136,225,134,133,136,225,131,64,160,225,180,128,129,225,1,48,131,226
      DATA 2,0,83,225,235,255,255,186,255,159,189,232,31,31,0,0,63,63,0,0
      DATA -1

      REM *********************************************************************************************************************

      DATA "digits12x20"
      DATA 96,0,0,0,88,4,0,0,80,8,0,0,72,12,0,0,64,16,0,0,56,20,0,0,48,24,0,0,40,28,0,0,32,32,0,0,24,36,0,0,0,0,66,77,248,3,0,0
      DATA 0,0,0,0,54,0,0,0,40,0,0,0,12,0,0,0,20,0,0,0,1,0,32,0,0,0,0,0,194,3,0,0,32,46,0,0,32,46,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,66,77,248,3,0,0,0,0,0,0,54,0,0,0,40,0,0,0,12,0,0,0,20,0,0,0,1,0,32,0,0,0,0,0,194,3,0,0,32,46,0,0,32,46,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,66,77,248,3,0,0,0,0,0,0,54,0,0,0,40,0,0,0,12,0,0,0,20,0,0,0,1,0,32,0,0,0,0,0,194,3,0,0
      DATA 32,46,0,0,32,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,77,248,3,0,0,0,0,0,0,54,0,0,0,40,0,0,0,12,0,0,0,20,0,0,0,1,0,32,0
      DATA 0,0,0,0,194,3,0,0,32,46,0,0,32,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,77,248,3,0,0,0,0,0,0,54,0,0,0,40,0,0,0,12,0,0,0
      DATA 20,0,0,0,1,0,32,0,0,0,0,0,194,3,0,0,32,46,0,0,32,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,77,248,3,0,0,0,0,0,0,54,0,0,0
      DATA 40,0,0,0,12,0,0,0,20,0,0,0,1,0,32,0,0,0,0,0,194,3,0,0,32,46,0,0,32,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0
      DATA 0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0
      DATA 0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0
      DATA 0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0
      DATA 0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0
      DATA 0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0
      DATA 0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,77,248,3,0,0
      DATA 0,0,0,0,54,0,0,0,40,0,0,0,12,0,0,0,20,0,0,0,1,0,32,0,0,0,0,0,194,3,0,0,32,46,0,0,32,46,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,66,77,248,3,0,0,0,0,0,0,54,0,0,0,40,0,0,0,12,0,0,0,20,0,0,0,1,0,32,0,0,0,0,0,194,3,0,0,32,46,0,0,32,46,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,66,77,248,3,0,0,0,0,0,0,54,0,0,0,40,0,0,0,12,0,0,0,20,0,0,0,1,0,32,0,0,0,0,0,194,3,0,0
      DATA 32,46,0,0,32,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,77,248,3,0,0,0,0,0,0,54,0,0,0,40,0,0,0,12,0,0,0,20,0,0,0,1,0,32,0
      DATA 0,0,0,0,194,3,0,0,32,46,0,0,32,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0
      DATA 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
      DATA -1
David Williams

Re: Snake game (for Android phones)

Post by David Williams »

David Williams wrote: Wed 22 Aug 2018, 16:10 I've put on hold the Android Play Store release of the game until I've resolved two issues:

1) The click/tap responsiveness issue detailed earlier in this thread
2) Preventing (usually inadvertent) screen 'zooming' (not yet sure if this can be done via the Android App manifest - currently looking into this)
Issue #2 has been resolved, for which I'm grateful to Richard. :)

I'm just about to try his suggestion for resolving issue #1. Fingers crossed...

I will release an update later today.


David.
--
http://www.proggies.uk/
--
David Williams

Re: Snake game (for Android phones)

Post by David Williams »

Can those with an Android phone (and BBC-SDL installed on it) please download 'Rainbow Snake' and play it for a few minutes and confirm whether or not they experience the intermittent touch responsiveness issue mentioned in this thread? You will know if it happens... you press, for example, the on-screen button to turn right/clockwise but it doesn't immediately respond, often causing you to career into yourself or outside the arena (both cases result in death).

Unless I can identify the cause of this issue, and fix it somehow, my adventure with BBC-SDL ends right here. :evil:

Download: http://www.proggies.uk/progs/zip/rainbowsnake.zip

Thank you in advance.


David.
--
RNBW
Posts: 32
Joined: Thu 05 Apr 2018, 21:41

Re: Snake game (for Android phones)

Post by RNBW »

I downloaded the file in the link, but it only contained an .exe file, which I don't believe I can sign on Android.
RNBW
Posts: 32
Joined: Thu 05 Apr 2018, 21:41

Re: Snake game (for Android phones)

Post by RNBW »

I looked in the source folder and extracted the files from there. Should have done that in the first place. I'm useless at the game, but tried it for some time on my Samsung Galaxy Tab S2 9.7 tablet without any problems.