Author Topic: Re: Another LED Scroller  (Read 666 times)

0 Members and 1 Guest are viewing this topic.

Offline johnno56

  • Forum Resident
  • Posts: 1270
  • Live long and prosper.
    • View Profile
Re: Another LED Scroller
« on: October 25, 2019, 09:14:43 am »
I like the program but NOT Sound of Music.... *sigh*
Logic is the beginning of wisdom.

FellippeHeitor

  • Guest
Re: Another LED Scroller
« Reply #1 on: October 25, 2019, 09:15:21 am »
Can confirm. It does scroll.

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
    • View Profile
Re: Another LED Scroller
« Reply #2 on: October 25, 2019, 10:09:48 am »
Nice one [banned user]!

I like the program Plus I like (most) music, specially the sound part. ;-))

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: Another LED Scroller
« Reply #3 on: October 25, 2019, 10:26:53 am »
Just what the world doesn't need: Another LED Scroller, but here it is.
Like me, it needs work.  The longer the window, the slower it becomes.  Maybe someone can help this along to get better and faster.

One very simple little change, which makes it just a weeee bit faster:

Code: QB64: [Select]
  1. _TITLE "LED Screen"
  2.  
  3. CONST false = 0
  4. CONST true = NOT false
  5.  
  6.  
  7. TYPE LED_Board
  8.     hor AS INTEGER ' # of horizontal pixels
  9.     vert AS INTEGER ' # of vertical pixels
  10.     chars AS INTEGER ' # of text characters
  11.     rows AS INTEGER ' # of text rows
  12.     size AS INTEGER ' Size of the LED pixels
  13.  
  14. DIM SHARED LEDs AS LED_Board
  15. LEDs.size = 1
  16.  
  17. DIM SHARED bScreen AS LONG
  18.  
  19. DIM SHARED CharFont AS STRING
  20. DIM SHARED DotMatrix(16) AS STRING
  21.  
  22. sWidth = 800
  23. sHeight = 480
  24.  
  25. LEDs.hor = sWidth \ (2 * LEDs.size + 2)
  26. LEDs.vert = sHeight \ (2 * LEDs.size + 2)
  27.  
  28. LEDs.chars = LEDs.hor \ 8
  29. LEDs.rows = LEDs.vert \ 16
  30.  
  31. LoadFont
  32.  
  33. SCREEN _NEWIMAGE(sWidth, sHeight, 12)
  34.  
  35. chars = LEDs.chars
  36. row = LEDs.rows \ 2
  37.  
  38. temp = SPACE$(chars) + "Supercalifragilisticexpialidocious "
  39. temp = temp + "Even though the sound of it is something quite atrocious "
  40. temp = temp + "If you say it loud enough, you'll always sound precocious "
  41. temp = temp + "Supercalifragilisticexpialidocious" + SPACE$(chars)
  42.  
  43. length = LEN(temp) - chars + 1
  44.  
  45. FOR scroll = 1 TO length
  46.     _LIMIT 60
  47.     LINE (0, 0)-(sWidth - 1, sHeight - 1), _RGB(0, 0, 0), BF
  48.  
  49.     PrintLED MID$(temp, scroll, chars), row, 0
  50.     _DISPLAY
  51.  
  52.  
  53. FUNCTION BIN$ (Value)
  54.     WHILE Value <> 0
  55.         T$ = RIGHT$(STR$(Value MOD 2), 1) + T$: Value = Value \ 2
  56.     WEND
  57.  
  58.     BIN = RIGHT$(STRING$(8, 48) + T$, 8)
  59.  
  60. FUNCTION Font$ (Value)
  61.     DIM Tag AS STRING
  62.     DIM Temp AS STRING
  63.  
  64.     Tag = MID$(CharFont, 16 * Value + 1, 16)
  65.  
  66.     Temp = ""
  67.     FOR i = 1 TO 16
  68.         Temp = Temp + RIGHT$("0000000" + BIN(ASC(MID$(Tag, i, 1))), 8)
  69.     NEXT
  70.  
  71.     Font = Temp
  72.  
  73. SUB LoadText (Message AS STRING, flag AS INTEGER)
  74.     DIM Text AS STRING
  75.     DIM Blank AS STRING
  76.  
  77.     ' Set flag when scrolling the message
  78.  
  79.     Blank = ""
  80.     IF flag THEN
  81.         Blank = STRING$(LEDs.hor, 48)
  82.     END IF
  83.  
  84.     FOR v = 1 TO 16
  85.         DotMatrix(v) = Blank
  86.     NEXT
  87.  
  88.     Text = Message + " "
  89.     FOR char = 1 TO LEN(Text)
  90.         a = ASC(MID$(Text, char, 1))
  91.  
  92.         FOR v = 0 TO 15
  93.             DotMatrix(v + 1) = DotMatrix(v + 1) + MID$(Font(a), 8 * v + 1, 8)
  94.         NEXT
  95.     NEXT
  96.  
  97.     IF flag THEN
  98.         FOR v = 1 TO 16
  99.             DotMatrix(v) = DotMatrix(v) + Blank
  100.         NEXT
  101.     END IF
  102.  
  103. SUB PrintLED (Message AS STRING, Row AS INTEGER, flag AS INTEGER)
  104.     DIM temp AS STRING
  105.  
  106.     ' Set flag to center the message
  107.  
  108.     IF flag THEN
  109.         t = LEDs.chars \ 2 - LEN(Message) \ 2
  110.         LoadText SPACE$(t) + Message, 0
  111.     ELSE
  112.         LoadText Message, 0
  113.     END IF
  114.  
  115.     tx = 0: ty = 16 * Row
  116.  
  117.     Length = LEN(DotMatrix(1))
  118.     IF Length > LEDs.hor THEN
  119.         Length = LEDs.hor
  120.     END IF
  121.  
  122.     FOR v = 0 TO 15
  123.         temp = MID$(DotMatrix(v + 1), char, Length)
  124.  
  125.         FOR h = 0 TO LEN(temp)
  126.             FlipLED tx + h, ty + v, 1, VAL(MID$(temp, h + 1, 1))
  127.  
  128.             ' Use this to speed up the program:
  129.             'IF VAL(MID$(temp, h + 1, 1)) THEN FlipLED tx + h, ty + v, 1, 1
  130.         NEXT
  131.     NEXT
  132.  
  133. SUB FlipLED (x, y, colour, state)
  134.     t1 = LEDs.size
  135.     t2 = 2 * t1 + 2
  136.  
  137.     ' State is On/Off
  138.     tc = 8 * state + colour
  139.     'CIRCLE (x * t2 + t1, y * t2 + t1), LEDs.size, tc
  140.     'PAINT (x * t2 + t1, y * t2 + t1), tc, tc
  141.     CircleFill x * t2 + t1, y * t2 + t1, LEDs.size, tc
  142.  
  143. SUB CircleFill (CX AS INTEGER, CY AS INTEGER, R AS INTEGER, C AS _UNSIGNED LONG)
  144.     ' CX = center x coordinate
  145.     ' CY = center y coordinate
  146.     '  R = radius
  147.     '  C = fill color
  148.     DIM Radius AS INTEGER, RadiusError AS INTEGER
  149.     DIM X AS INTEGER, Y AS INTEGER
  150.     Radius = ABS(R)
  151.     RadiusError = -Radius
  152.     X = Radius
  153.     Y = 0
  154.     IF Radius = 0 THEN PSET (CX, CY), C: EXIT SUB
  155.     LINE (CX - X, CY)-(CX + X, CY), C, BF
  156.     WHILE X > Y
  157.         RadiusError = RadiusError + Y * 2 + 1
  158.         IF RadiusError >= 0 THEN
  159.             IF X <> Y + 1 THEN
  160.                 LINE (CX - Y, CY - X)-(CX + Y, CY - X), C, BF
  161.                 LINE (CX - Y, CY + X)-(CX + Y, CY + X), C, BF
  162.             END IF
  163.             X = X - 1
  164.             RadiusError = RadiusError - X * 2
  165.         END IF
  166.         Y = Y + 1
  167.         LINE (CX - X, CY - Y)-(CX + X, CY - Y), C, BF
  168.         LINE (CX - X, CY + Y)-(CX + X, CY + Y), C, BF
  169.     WEND
  170.  
  171.  
  172.  
  173.  
  174. SUB LoadFont
  175.     FOR i = 1 TO 4096
  176.         READ charVal
  177.         CharFont = CharFont + CHR$(charVal)
  178.     NEXT
  179.     EXIT SUB
  180.  
  181.     DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,129,165,129,129,189,153,129,129,126,0,0,0,0
  182.     DATA 0,0,126,255,219,255,255,195,231,255,255,126,0,0,0,0,0,0,0,0,108,254,254,254,254,124,56,16,0,0,0,0
  183.     DATA 0,0,0,0,16,56,124,254,124,56,16,0,0,0,0,0,0,0,0,24,60,60,231,231,231,24,24,60,0,0,0,0
  184.     DATA 0,0,0,24,60,126,255,255,126,24,24,60,0,0,0,0,0,0,0,0,0,0,24,60,60,24,0,0,0,0,0,0
  185.     DATA 255,255,255,255,255,255,231,195,195,231,255,255,255,255,255,255,0,0,0,0,0,60,102,66,66,102,60,0,0,0,0,0
  186.     DATA 255,255,255,255,255,195,153,189,189,153,195,255,255,255,255,255,0,0,30,14,26,50,120,204,204,204,204,120,0,0,0,0
  187.     DATA 0,0,60,102,102,102,102,60,24,126,24,24,0,0,0,0,0,0,63,51,63,48,48,48,48,112,240,224,0,0,0,0
  188.     DATA 0,0,127,99,127,99,99,99,99,103,231,230,192,0,0,0,0,0,0,24,24,219,60,231,60,219,24,24,0,0,0,0
  189.     DATA 0,128,192,224,240,248,254,248,240,224,192,128,0,0,0,0,0,2,6,14,30,62,254,62,30,14,6,2,0,0,0,0
  190.     DATA 0,0,24,60,126,24,24,24,126,60,24,0,0,0,0,0,0,0,102,102,102,102,102,102,102,0,102,102,0,0,0,0
  191.     DATA 0,0,127,219,219,219,123,27,27,27,27,27,0,0,0,0,0,124,198,96,56,108,198,198,108,56,12,198,124,0,0,0
  192.     DATA 0,0,0,0,0,0,0,0,254,254,254,254,0,0,0,0,0,0,24,60,126,24,24,24,126,60,24,126,0,0,0,0
  193.     DATA 0,0,24,60,126,24,24,24,24,24,24,24,0,0,0,0,0,0,24,24,24,24,24,24,24,126,60,24,0,0,0,0
  194.     DATA 0,0,0,0,0,24,12,254,12,24,0,0,0,0,0,0,0,0,0,0,0,48,96,254,96,48,0,0,0,0,0,0
  195.     DATA 0,0,0,0,0,0,192,192,192,254,0,0,0,0,0,0,0,0,0,0,0,36,102,255,102,36,0,0,0,0,0,0
  196.     DATA 0,0,0,0,16,56,56,124,124,254,254,0,0,0,0,0,0,0,0,0,254,254,124,124,56,56,16,0,0,0,0,0
  197.     DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,60,60,60,24,24,24,0,24,24,0,0,0,0
  198.     DATA 0,102,102,102,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,108,254,108,108,108,254,108,108,0,0,0,0
  199.     DATA 24,24,124,198,194,192,124,6,6,134,198,124,24,24,0,0,0,0,0,0,194,198,12,24,48,96,198,134,0,0,0,0
  200.     DATA 0,0,56,108,108,56,118,220,204,204,204,118,0,0,0,0,0,48,48,48,96,0,0,0,0,0,0,0,0,0,0,0
  201.     DATA 0,0,12,24,48,48,48,48,48,48,24,12,0,0,0,0,0,0,48,24,12,12,12,12,12,12,24,48,0,0,0,0
  202.     DATA 0,0,0,0,0,102,60,255,60,102,0,0,0,0,0,0,0,0,0,0,0,24,24,126,24,24,0,0,0,0,0,0
  203.     DATA 0,0,0,0,0,0,0,0,0,24,24,24,48,0,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0
  204.     DATA 0,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0,0,0,0,0,2,6,12,24,48,96,192,128,0,0,0,0
  205.     DATA 0,0,60,102,195,195,219,219,195,195,102,60,0,0,0,0,0,0,24,56,120,24,24,24,24,24,24,126,0,0,0,0
  206.     DATA 0,0,124,198,6,12,24,48,96,192,198,254,0,0,0,0,0,0,124,198,6,6,60,6,6,6,198,124,0,0,0,0
  207.     DATA 0,0,12,28,60,108,204,254,12,12,12,30,0,0,0,0,0,0,254,192,192,192,252,6,6,6,198,124,0,0,0,0
  208.     DATA 0,0,56,96,192,192,252,198,198,198,198,124,0,0,0,0,0,0,254,198,6,6,12,24,48,48,48,48,0,0,0,0
  209.     DATA 0,0,124,198,198,198,124,198,198,198,198,124,0,0,0,0,0,0,124,198,198,198,126,6,6,6,12,120,0,0,0,0
  210.     DATA 0,0,0,0,24,24,0,0,0,24,24,0,0,0,0,0,0,0,0,0,24,24,0,0,0,24,24,48,0,0,0,0
  211.     DATA 0,0,0,6,12,24,48,96,48,24,12,6,0,0,0,0,0,0,0,0,0,126,0,0,126,0,0,0,0,0,0,0
  212.     DATA 0,0,0,96,48,24,12,6,12,24,48,96,0,0,0,0,0,0,124,198,198,12,24,24,24,0,24,24,0,0,0,0
  213.     DATA 0,0,0,124,198,198,222,222,222,220,192,124,0,0,0,0,0,0,16,56,108,198,198,254,198,198,198,198,0,0,0,0
  214.     DATA 0,0,252,102,102,102,124,102,102,102,102,252,0,0,0,0,0,0,60,102,194,192,192,192,192,194,102,60,0,0,0,0
  215.     DATA 0,0,248,108,102,102,102,102,102,102,108,248,0,0,0,0,0,0,254,102,98,104,120,104,96,98,102,254,0,0,0,0
  216.     DATA 0,0,254,102,98,104,120,104,96,96,96,240,0,0,0,0,0,0,60,102,194,192,192,222,198,198,102,58,0,0,0,0
  217.     DATA 0,0,198,198,198,198,254,198,198,198,198,198,0,0,0,0,0,0,60,24,24,24,24,24,24,24,24,60,0,0,0,0
  218.     DATA 0,0,30,12,12,12,12,12,204,204,204,120,0,0,0,0,0,0,230,102,102,108,120,120,108,102,102,230,0,0,0,0
  219.     DATA 0,0,240,96,96,96,96,96,96,98,102,254,0,0,0,0,0,0,195,231,255,255,219,195,195,195,195,195,0,0,0,0
  220.     DATA 0,0,198,230,246,254,222,206,198,198,198,198,0,0,0,0,0,0,124,198,198,198,198,198,198,198,198,124,0,0,0,0
  221.     DATA 0,0,252,102,102,102,124,96,96,96,96,240,0,0,0,0,0,0,124,198,198,198,198,198,198,214,222,124,12,14,0,0
  222.     DATA 0,0,252,102,102,102,124,108,102,102,102,230,0,0,0,0,0,0,124,198,198,96,56,12,6,198,198,124,0,0,0,0
  223.     DATA 0,0,255,219,153,24,24,24,24,24,24,60,0,0,0,0,0,0,198,198,198,198,198,198,198,198,198,124,0,0,0,0
  224.     DATA 0,0,195,195,195,195,195,195,195,102,60,24,0,0,0,0,0,0,195,195,195,195,195,219,219,255,102,102,0,0,0,0
  225.     DATA 0,0,195,195,102,60,24,24,60,102,195,195,0,0,0,0,0,0,195,195,195,102,60,24,24,24,24,60,0,0,0,0
  226.     DATA 0,0,255,195,134,12,24,48,96,193,195,255,0,0,0,0,0,0,60,48,48,48,48,48,48,48,48,60,0,0,0,0
  227.     DATA 0,0,0,128,192,224,112,56,28,14,6,2,0,0,0,0,0,0,60,12,12,12,12,12,12,12,12,60,0,0,0,0
  228.     DATA 16,56,108,198,0,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
  229.     DATA 48,48,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,12,124,204,204,204,118,0,0,0,0
  230.     DATA 0,0,224,96,96,120,108,102,102,102,102,124,0,0,0,0,0,0,0,0,0,124,198,192,192,192,198,124,0,0,0,0
  231.     DATA 0,0,28,12,12,60,108,204,204,204,204,118,0,0,0,0,0,0,0,0,0,124,198,254,192,192,198,124,0,0,0,0
  232.     DATA 0,0,56,108,100,96,240,96,96,96,96,240,0,0,0,0,0,0,0,0,0,118,204,204,204,204,204,124,12,204,120,0
  233.     DATA 0,0,224,96,96,108,118,102,102,102,102,230,0,0,0,0,0,0,24,24,0,56,24,24,24,24,24,60,0,0,0,0
  234.     DATA 0,0,6,6,0,14,6,6,6,6,6,6,102,102,60,0,0,0,224,96,96,102,108,120,120,108,102,230,0,0,0,0
  235.     DATA 0,0,56,24,24,24,24,24,24,24,24,60,0,0,0,0,0,0,0,0,0,230,255,219,219,219,219,219,0,0,0,0
  236.     DATA 0,0,0,0,0,220,102,102,102,102,102,102,0,0,0,0,0,0,0,0,0,124,198,198,198,198,198,124,0,0,0,0
  237.     DATA 0,0,0,0,0,220,102,102,102,102,102,124,96,96,240,0,0,0,0,0,0,118,204,204,204,204,204,124,12,12,30,0
  238.     DATA 0,0,0,0,0,220,118,102,96,96,96,240,0,0,0,0,0,0,0,0,0,124,198,96,56,12,198,124,0,0,0,0
  239.     DATA 0,0,16,48,48,252,48,48,48,48,54,28,0,0,0,0,0,0,0,0,0,204,204,204,204,204,204,118,0,0,0,0
  240.     DATA 0,0,0,0,0,195,195,195,195,102,60,24,0,0,0,0,0,0,0,0,0,195,195,195,219,219,255,102,0,0,0,0
  241.     DATA 0,0,0,0,0,195,102,60,24,60,102,195,0,0,0,0,0,0,0,0,0,198,198,198,198,198,198,126,6,12,248,0
  242.     DATA 0,0,0,0,0,254,204,24,48,96,198,254,0,0,0,0,0,0,14,24,24,24,112,24,24,24,24,14,0,0,0,0
  243.     DATA 0,0,24,24,24,24,0,24,24,24,24,24,0,0,0,0,0,0,112,24,24,24,14,24,24,24,24,112,0,0,0,0
  244.     DATA 0,0,118,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,56,108,198,198,198,254,0,0,0,0,0
  245.     DATA 0,0,60,102,194,192,192,192,194,102,60,12,6,124,0,0,0,0,204,0,0,204,204,204,204,204,204,118,0,0,0,0
  246.     DATA 0,12,24,48,0,124,198,254,192,192,198,124,0,0,0,0,0,16,56,108,0,120,12,124,204,204,204,118,0,0,0,0
  247.     DATA 0,0,204,0,0,120,12,124,204,204,204,118,0,0,0,0,0,96,48,24,0,120,12,124,204,204,204,118,0,0,0,0
  248.     DATA 0,56,108,56,0,120,12,124,204,204,204,118,0,0,0,0,0,0,0,0,60,102,96,96,102,60,12,6,60,0,0,0
  249.     DATA 0,16,56,108,0,124,198,254,192,192,198,124,0,0,0,0,0,0,198,0,0,124,198,254,192,192,198,124,0,0,0,0
  250.     DATA 0,96,48,24,0,124,198,254,192,192,198,124,0,0,0,0,0,0,102,0,0,56,24,24,24,24,24,60,0,0,0,0
  251.     DATA 0,24,60,102,0,56,24,24,24,24,24,60,0,0,0,0,0,96,48,24,0,56,24,24,24,24,24,60,0,0,0,0
  252.     DATA 0,198,0,16,56,108,198,198,254,198,198,198,0,0,0,0,56,108,56,0,56,108,198,198,254,198,198,198,0,0,0,0
  253.     DATA 24,48,96,0,254,102,96,124,96,96,102,254,0,0,0,0,0,0,0,0,0,110,59,27,126,216,220,119,0,0,0,0
  254.     DATA 0,0,62,108,204,204,254,204,204,204,204,206,0,0,0,0,0,16,56,108,0,124,198,198,198,198,198,124,0,0,0,0
  255.     DATA 0,0,198,0,0,124,198,198,198,198,198,124,0,0,0,0,0,96,48,24,0,124,198,198,198,198,198,124,0,0,0,0
  256.     DATA 0,48,120,204,0,204,204,204,204,204,204,118,0,0,0,0,0,96,48,24,0,204,204,204,204,204,204,118,0,0,0,0
  257.     DATA 0,0,198,0,0,198,198,198,198,198,198,126,6,12,120,0,0,198,0,124,198,198,198,198,198,198,198,124,0,0,0,0
  258.     DATA 0,198,0,198,198,198,198,198,198,198,198,124,0,0,0,0,0,24,24,126,195,192,192,192,195,126,24,24,0,0,0,0
  259.     DATA 0,56,108,100,96,240,96,96,96,96,230,252,0,0,0,0,0,0,195,102,60,24,255,24,255,24,24,24,0,0,0,0
  260.     DATA 0,252,102,102,124,98,102,111,102,102,102,243,0,0,0,0,0,14,27,24,24,24,126,24,24,24,24,24,216,112,0,0
  261.     DATA 0,24,48,96,0,120,12,124,204,204,204,118,0,0,0,0,0,12,24,48,0,56,24,24,24,24,24,60,0,0,0,0
  262.     DATA 0,24,48,96,0,124,198,198,198,198,198,124,0,0,0,0,0,24,48,96,0,204,204,204,204,204,204,118,0,0,0,0
  263.     DATA 0,0,118,220,0,220,102,102,102,102,102,102,0,0,0,0,118,220,0,198,230,246,254,222,206,198,198,198,0,0,0,0
  264.     DATA 0,60,108,108,62,0,126,0,0,0,0,0,0,0,0,0,0,56,108,108,56,0,124,0,0,0,0,0,0,0,0,0
  265.     DATA 0,0,48,48,0,48,48,96,192,198,198,124,0,0,0,0,0,0,0,0,0,0,254,192,192,192,192,0,0,0,0,0
  266.     DATA 0,0,0,0,0,0,254,6,6,6,6,0,0,0,0,0,0,192,192,194,198,204,24,48,96,206,155,6,12,31,0,0
  267.     DATA 0,192,192,194,198,204,24,48,102,206,150,62,6,6,0,0,0,0,24,24,0,24,24,24,60,60,60,24,0,0,0,0
  268.     DATA 0,0,0,0,0,54,108,216,108,54,0,0,0,0,0,0,0,0,0,0,0,216,108,54,108,216,0,0,0,0,0,0
  269.     DATA 17,68,17,68,17,68,17,68,17,68,17,68,17,68,17,68,85,170,85,170,85,170,85,170,85,170,85,170,85,170,85,170
  270.     DATA 221,119,221,119,221,119,221,119,221,119,221,119,221,119,221,119,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24
  271.     DATA 24,24,24,24,24,24,24,248,24,24,24,24,24,24,24,24,24,24,24,24,24,248,24,248,24,24,24,24,24,24,24,24
  272.     DATA 54,54,54,54,54,54,54,246,54,54,54,54,54,54,54,54,0,0,0,0,0,0,0,254,54,54,54,54,54,54,54,54
  273.     DATA 0,0,0,0,0,248,24,248,24,24,24,24,24,24,24,24,54,54,54,54,54,246,6,246,54,54,54,54,54,54,54,54
  274.     DATA 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,0,0,0,0,0,254,6,246,54,54,54,54,54,54,54,54
  275.     DATA 54,54,54,54,54,246,6,254,0,0,0,0,0,0,0,0,54,54,54,54,54,54,54,254,0,0,0,0,0,0,0,0
  276.     DATA 24,24,24,24,24,248,24,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,24,24,24,24,24,24,24,24
  277.     DATA 24,24,24,24,24,24,24,31,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,255,0,0,0,0,0,0,0,0
  278.     DATA 0,0,0,0,0,0,0,255,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,31,24,24,24,24,24,24,24,24
  279.     DATA 0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,255,24,24,24,24,24,24,24,24
  280.     DATA 24,24,24,24,24,31,24,31,24,24,24,24,24,24,24,24,54,54,54,54,54,54,54,55,54,54,54,54,54,54,54,54
  281.     DATA 54,54,54,54,54,55,48,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,48,55,54,54,54,54,54,54,54,54
  282.     DATA 54,54,54,54,54,247,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,247,54,54,54,54,54,54,54,54
  283.     DATA 54,54,54,54,54,55,48,55,54,54,54,54,54,54,54,54,0,0,0,0,0,255,0,255,0,0,0,0,0,0,0,0
  284.     DATA 54,54,54,54,54,247,0,247,54,54,54,54,54,54,54,54,24,24,24,24,24,255,0,255,0,0,0,0,0,0,0,0
  285.     DATA 54,54,54,54,54,54,54,255,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,255,24,24,24,24,24,24,24,24
  286.     DATA 0,0,0,0,0,0,0,255,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,63,0,0,0,0,0,0,0,0
  287.     DATA 24,24,24,24,24,31,24,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,24,31,24,24,24,24,24,24,24,24
  288.     DATA 0,0,0,0,0,0,0,63,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,255,54,54,54,54,54,54,54,54
  289.     DATA 24,24,24,24,24,255,24,255,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,248,0,0,0,0,0,0,0,0
  290.     DATA 0,0,0,0,0,0,0,31,24,24,24,24,24,24,24,24,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  291.     DATA 0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240
  292.     DATA 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0
  293.     DATA 0,0,0,0,0,118,220,216,216,216,220,118,0,0,0,0,0,0,120,204,204,204,216,204,198,198,198,204,0,0,0,0
  294.     DATA 0,0,254,198,198,192,192,192,192,192,192,192,0,0,0,0,0,0,0,0,254,108,108,108,108,108,108,108,0,0,0,0
  295.     DATA 0,0,0,254,198,96,48,24,48,96,198,254,0,0,0,0,0,0,0,0,0,126,216,216,216,216,216,112,0,0,0,0
  296.     DATA 0,0,0,0,102,102,102,102,102,124,96,96,192,0,0,0,0,0,0,0,118,220,24,24,24,24,24,24,0,0,0,0
  297.     DATA 0,0,0,126,24,60,102,102,102,60,24,126,0,0,0,0,0,0,0,56,108,198,198,254,198,198,108,56,0,0,0,0
  298.     DATA 0,0,56,108,198,198,198,108,108,108,108,238,0,0,0,0,0,0,30,48,24,12,62,102,102,102,102,60,0,0,0,0
  299.     DATA 0,0,0,0,0,126,219,219,219,126,0,0,0,0,0,0,0,0,0,3,6,126,219,219,243,126,96,192,0,0,0,0
  300.     DATA 0,0,28,48,96,96,124,96,96,96,48,28,0,0,0,0,0,0,0,124,198,198,198,198,198,198,198,198,0,0,0,0
  301.     DATA 0,0,0,0,254,0,0,254,0,0,254,0,0,0,0,0,0,0,0,0,24,24,126,24,24,0,0,255,0,0,0,0
  302.     DATA 0,0,0,48,24,12,6,12,24,48,0,126,0,0,0,0,0,0,0,12,24,48,96,48,24,12,0,126,0,0,0,0
  303.     DATA 0,0,14,27,27,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,216,216,216,112,0,0,0,0
  304.     DATA 0,0,0,0,24,24,0,126,0,24,24,0,0,0,0,0,0,0,0,0,0,118,220,0,118,220,0,0,0,0,0,0
  305.     DATA 0,56,108,108,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0,0,0,0
  306.     DATA 0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,15,12,12,12,12,12,236,108,108,60,28,0,0,0,0
  307.     DATA 0,216,108,108,108,108,108,0,0,0,0,0,0,0,0,0,0,112,216,48,96,200,248,0,0,0,0,0,0,0,0,0
  308.     DATA 0,0,0,0,124,124,124,124,124,124,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  309.  

I didn't bother trying to improve the performance any more after this little alteration-- it's a simple one, so I'll leave it to you to see what it was and where it changed the program for us.  :D

You may also want to change the _LIMIT from 60 to something a little more reasonable, like 6, with this.  The screen is scrolling by waaaay to fast now to be useful for anything practical, besides showing off the difference in routines. 
« Last Edit: October 25, 2019, 10:31:29 am by SMcNeill »
https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
    • View Profile
Re: Another LED Scroller
« Reply #4 on: October 25, 2019, 10:48:15 am »
I would put the scroller in a loop, with plasma coloring of course, alas I am tied up with a sort of card/majong tile game.

Yeah, if I had the time I'd do something like this (which I actually had to slow down!):
Code: QB64: [Select]
  1. _TITLE " LED Screen by [banned user], mod by B+, new background colors every loop." '2019-10-25
  2. CONST false = 0
  3. CONST true = NOT false
  4.  
  5.  
  6. TYPE LED_Board
  7.     ' # of horizontal pixels
  8.     hor AS INTEGER
  9.  
  10.     ' # of vertical pixels
  11.     vert AS INTEGER
  12.  
  13.     ' # of text characters
  14.     chars AS INTEGER
  15.  
  16.     ' # of text rows
  17.     rows AS INTEGER
  18.  
  19.     ' Size of the LED pixels
  20.     size AS INTEGER
  21.  
  22. DIM SHARED LEDs AS LED_Board
  23. LEDs.size = 8
  24.  
  25. DIM SHARED bScreen AS LONG
  26.  
  27. DIM SHARED CharFont AS STRING
  28. DIM SHARED DotMatrix(16) AS STRING
  29. DIM SHARED pR, pG, pB, pN, r1, r2, r3 'for plasma numbers
  30. sWidth = 1280
  31. sHeight = 780
  32.  
  33. LEDs.hor = sWidth \ (2 * LEDs.size + 2)
  34. LEDs.vert = sHeight \ (2 * LEDs.size + 2)
  35.  
  36. LEDs.chars = LEDs.hor \ 8
  37. LEDs.rows = LEDs.vert \ 16
  38.  
  39. LoadFont
  40.  
  41. SCREEN _NEWIMAGE(sWidth, sHeight, 32)
  42. resetPlasma
  43. chars = LEDs.chars
  44. row = LEDs.rows \ 2
  45.  
  46. temp = SPACE$(chars) + "Supercalifragilisticexpialidocious "
  47. temp = temp + "Even though the sound of it is something quite atrocious "
  48. temp = temp + "If you say it loud enough, you'll always sound precocious "
  49. temp = temp + "Supercalifragilisticexpialidocious" + SPACE$(chars)
  50.  
  51. length = LEN(temp) - chars + 1
  52. WHILE _KEYDOWN(27) = 0
  53.     scroll = scroll + 1
  54.     IF scroll > length THEN scroll = 1: resetPlasma
  55.     IF INKEY$ = " " THEN resetPlasma
  56.     LINE (0, 0)-(sWidth - 1, sHeight - 1), _RGB(0, 0, 0), BF
  57.     PrintLED MID$(temp, scroll, chars), row, 0
  58.     _DISPLAY
  59.     _LIMIT 10
  60.  
  61.  
  62. FUNCTION BIN$ (Value)
  63.     WHILE Value <> 0
  64.         T$ = RIGHT$(STR$(Value MOD 2), 1) + T$: Value = Value \ 2
  65.     WEND
  66.  
  67.     BIN = RIGHT$(STRING$(8, 48) + T$, 8)
  68.  
  69. FUNCTION Font$ (Value)
  70.     DIM Tag AS STRING
  71.     DIM Temp AS STRING
  72.  
  73.     Tag = MID$(CharFont, 16 * Value + 1, 16)
  74.  
  75.     Temp = ""
  76.     FOR i = 1 TO 16
  77.         Temp = Temp + RIGHT$("0000000" + BIN(ASC(MID$(Tag, i, 1))), 8)
  78.     NEXT
  79.  
  80.     Font = Temp
  81.  
  82. SUB LoadText (Message AS STRING, flag AS INTEGER)
  83.     DIM Text AS STRING
  84.     DIM Blank AS STRING
  85.  
  86.     ' Set flag when scrolling the message
  87.  
  88.     Blank = ""
  89.     IF flag THEN
  90.         Blank = STRING$(LEDs.hor, 48)
  91.     END IF
  92.  
  93.     FOR v = 1 TO 16
  94.         DotMatrix(v) = Blank
  95.     NEXT
  96.  
  97.     Text = Message + " "
  98.     FOR char = 1 TO LEN(Text)
  99.         a = ASC(MID$(Text, char, 1))
  100.  
  101.         FOR v = 0 TO 15
  102.             DotMatrix(v + 1) = DotMatrix(v + 1) + MID$(Font(a), 8 * v + 1, 8)
  103.         NEXT
  104.     NEXT
  105.  
  106.     IF flag THEN
  107.         FOR v = 1 TO 16
  108.             DotMatrix(v) = DotMatrix(v) + Blank
  109.         NEXT
  110.     END IF
  111.  
  112. SUB PrintLED (Message AS STRING, Row AS INTEGER, flag AS INTEGER)
  113.     DIM temp AS STRING
  114.  
  115.     ' Set flag to center the message
  116.  
  117.     IF flag THEN
  118.         t = LEDs.chars \ 2 - LEN(Message) \ 2
  119.  
  120.         LoadText SPACE$(t) + Message, 0
  121.     ELSE
  122.         LoadText Message, 0
  123.     END IF
  124.  
  125.     tx = 0: ty = 16 * Row
  126.  
  127.     Length = LEN(DotMatrix(1))
  128.     IF Length > LEDs.hor THEN
  129.         Length = LEDs.hor
  130.     END IF
  131.  
  132.     FOR v = 0 TO 15
  133.         temp = MID$(DotMatrix(v + 1), char, Length)
  134.  
  135.         FOR h = 0 TO LEN(temp)
  136.             FlipLED tx + h, ty + v, 1, VAL(MID$(temp, h + 1, 1))
  137.  
  138.             ' Use this to speed up the program:
  139.             'IF VAL(MID$(temp, h + 1, 1)) THEN FlipLED tx + h, ty + v, 1, 1
  140.         NEXT
  141.     NEXT
  142.  
  143. SUB FlipLED (x, y, colour, state)
  144.     t1 = LEDs.size
  145.     t2 = 2 * t1 + 2
  146.  
  147.     ' State is On/Off
  148.     IF state THEN tc~& = &HFFFFFFFF ELSE tc~& = changePlasma
  149.     'tc = 8 * state + colour
  150.  
  151.     CIRCLE (x * t2 + t1, y * t2 + t1), LEDs.size, tc~&
  152.     PAINT (x * t2 + t1, y * t2 + t1), tc~&, tc~&
  153.  
  154. SUB LoadFont
  155.     FOR i = 1 TO 4096
  156.         READ charVal
  157.         CharFont = CharFont + CHR$(charVal)
  158.     NEXT
  159.     EXIT SUB
  160.  
  161.     DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,129,165,129,129,189,153,129,129,126,0,0,0,0
  162.     DATA 0,0,126,255,219,255,255,195,231,255,255,126,0,0,0,0,0,0,0,0,108,254,254,254,254,124,56,16,0,0,0,0
  163.     DATA 0,0,0,0,16,56,124,254,124,56,16,0,0,0,0,0,0,0,0,24,60,60,231,231,231,24,24,60,0,0,0,0
  164.     DATA 0,0,0,24,60,126,255,255,126,24,24,60,0,0,0,0,0,0,0,0,0,0,24,60,60,24,0,0,0,0,0,0
  165.     DATA 255,255,255,255,255,255,231,195,195,231,255,255,255,255,255,255,0,0,0,0,0,60,102,66,66,102,60,0,0,0,0,0
  166.     DATA 255,255,255,255,255,195,153,189,189,153,195,255,255,255,255,255,0,0,30,14,26,50,120,204,204,204,204,120,0,0,0,0
  167.     DATA 0,0,60,102,102,102,102,60,24,126,24,24,0,0,0,0,0,0,63,51,63,48,48,48,48,112,240,224,0,0,0,0
  168.     DATA 0,0,127,99,127,99,99,99,99,103,231,230,192,0,0,0,0,0,0,24,24,219,60,231,60,219,24,24,0,0,0,0
  169.     DATA 0,128,192,224,240,248,254,248,240,224,192,128,0,0,0,0,0,2,6,14,30,62,254,62,30,14,6,2,0,0,0,0
  170.     DATA 0,0,24,60,126,24,24,24,126,60,24,0,0,0,0,0,0,0,102,102,102,102,102,102,102,0,102,102,0,0,0,0
  171.     DATA 0,0,127,219,219,219,123,27,27,27,27,27,0,0,0,0,0,124,198,96,56,108,198,198,108,56,12,198,124,0,0,0
  172.     DATA 0,0,0,0,0,0,0,0,254,254,254,254,0,0,0,0,0,0,24,60,126,24,24,24,126,60,24,126,0,0,0,0
  173.     DATA 0,0,24,60,126,24,24,24,24,24,24,24,0,0,0,0,0,0,24,24,24,24,24,24,24,126,60,24,0,0,0,0
  174.     DATA 0,0,0,0,0,24,12,254,12,24,0,0,0,0,0,0,0,0,0,0,0,48,96,254,96,48,0,0,0,0,0,0
  175.     DATA 0,0,0,0,0,0,192,192,192,254,0,0,0,0,0,0,0,0,0,0,0,36,102,255,102,36,0,0,0,0,0,0
  176.     DATA 0,0,0,0,16,56,56,124,124,254,254,0,0,0,0,0,0,0,0,0,254,254,124,124,56,56,16,0,0,0,0,0
  177.     DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,60,60,60,24,24,24,0,24,24,0,0,0,0
  178.     DATA 0,102,102,102,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,108,254,108,108,108,254,108,108,0,0,0,0
  179.     DATA 24,24,124,198,194,192,124,6,6,134,198,124,24,24,0,0,0,0,0,0,194,198,12,24,48,96,198,134,0,0,0,0
  180.     DATA 0,0,56,108,108,56,118,220,204,204,204,118,0,0,0,0,0,48,48,48,96,0,0,0,0,0,0,0,0,0,0,0
  181.     DATA 0,0,12,24,48,48,48,48,48,48,24,12,0,0,0,0,0,0,48,24,12,12,12,12,12,12,24,48,0,0,0,0
  182.     DATA 0,0,0,0,0,102,60,255,60,102,0,0,0,0,0,0,0,0,0,0,0,24,24,126,24,24,0,0,0,0,0,0
  183.     DATA 0,0,0,0,0,0,0,0,0,24,24,24,48,0,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0
  184.     DATA 0,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0,0,0,0,0,2,6,12,24,48,96,192,128,0,0,0,0
  185.     DATA 0,0,60,102,195,195,219,219,195,195,102,60,0,0,0,0,0,0,24,56,120,24,24,24,24,24,24,126,0,0,0,0
  186.     DATA 0,0,124,198,6,12,24,48,96,192,198,254,0,0,0,0,0,0,124,198,6,6,60,6,6,6,198,124,0,0,0,0
  187.     DATA 0,0,12,28,60,108,204,254,12,12,12,30,0,0,0,0,0,0,254,192,192,192,252,6,6,6,198,124,0,0,0,0
  188.     DATA 0,0,56,96,192,192,252,198,198,198,198,124,0,0,0,0,0,0,254,198,6,6,12,24,48,48,48,48,0,0,0,0
  189.     DATA 0,0,124,198,198,198,124,198,198,198,198,124,0,0,0,0,0,0,124,198,198,198,126,6,6,6,12,120,0,0,0,0
  190.     DATA 0,0,0,0,24,24,0,0,0,24,24,0,0,0,0,0,0,0,0,0,24,24,0,0,0,24,24,48,0,0,0,0
  191.     DATA 0,0,0,6,12,24,48,96,48,24,12,6,0,0,0,0,0,0,0,0,0,126,0,0,126,0,0,0,0,0,0,0
  192.     DATA 0,0,0,96,48,24,12,6,12,24,48,96,0,0,0,0,0,0,124,198,198,12,24,24,24,0,24,24,0,0,0,0
  193.     DATA 0,0,0,124,198,198,222,222,222,220,192,124,0,0,0,0,0,0,16,56,108,198,198,254,198,198,198,198,0,0,0,0
  194.     DATA 0,0,252,102,102,102,124,102,102,102,102,252,0,0,0,0,0,0,60,102,194,192,192,192,192,194,102,60,0,0,0,0
  195.     DATA 0,0,248,108,102,102,102,102,102,102,108,248,0,0,0,0,0,0,254,102,98,104,120,104,96,98,102,254,0,0,0,0
  196.     DATA 0,0,254,102,98,104,120,104,96,96,96,240,0,0,0,0,0,0,60,102,194,192,192,222,198,198,102,58,0,0,0,0
  197.     DATA 0,0,198,198,198,198,254,198,198,198,198,198,0,0,0,0,0,0,60,24,24,24,24,24,24,24,24,60,0,0,0,0
  198.     DATA 0,0,30,12,12,12,12,12,204,204,204,120,0,0,0,0,0,0,230,102,102,108,120,120,108,102,102,230,0,0,0,0
  199.     DATA 0,0,240,96,96,96,96,96,96,98,102,254,0,0,0,0,0,0,195,231,255,255,219,195,195,195,195,195,0,0,0,0
  200.     DATA 0,0,198,230,246,254,222,206,198,198,198,198,0,0,0,0,0,0,124,198,198,198,198,198,198,198,198,124,0,0,0,0
  201.     DATA 0,0,252,102,102,102,124,96,96,96,96,240,0,0,0,0,0,0,124,198,198,198,198,198,198,214,222,124,12,14,0,0
  202.     DATA 0,0,252,102,102,102,124,108,102,102,102,230,0,0,0,0,0,0,124,198,198,96,56,12,6,198,198,124,0,0,0,0
  203.     DATA 0,0,255,219,153,24,24,24,24,24,24,60,0,0,0,0,0,0,198,198,198,198,198,198,198,198,198,124,0,0,0,0
  204.     DATA 0,0,195,195,195,195,195,195,195,102,60,24,0,0,0,0,0,0,195,195,195,195,195,219,219,255,102,102,0,0,0,0
  205.     DATA 0,0,195,195,102,60,24,24,60,102,195,195,0,0,0,0,0,0,195,195,195,102,60,24,24,24,24,60,0,0,0,0
  206.     DATA 0,0,255,195,134,12,24,48,96,193,195,255,0,0,0,0,0,0,60,48,48,48,48,48,48,48,48,60,0,0,0,0
  207.     DATA 0,0,0,128,192,224,112,56,28,14,6,2,0,0,0,0,0,0,60,12,12,12,12,12,12,12,12,60,0,0,0,0
  208.     DATA 16,56,108,198,0,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
  209.     DATA 48,48,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,12,124,204,204,204,118,0,0,0,0
  210.     DATA 0,0,224,96,96,120,108,102,102,102,102,124,0,0,0,0,0,0,0,0,0,124,198,192,192,192,198,124,0,0,0,0
  211.     DATA 0,0,28,12,12,60,108,204,204,204,204,118,0,0,0,0,0,0,0,0,0,124,198,254,192,192,198,124,0,0,0,0
  212.     DATA 0,0,56,108,100,96,240,96,96,96,96,240,0,0,0,0,0,0,0,0,0,118,204,204,204,204,204,124,12,204,120,0
  213.     DATA 0,0,224,96,96,108,118,102,102,102,102,230,0,0,0,0,0,0,24,24,0,56,24,24,24,24,24,60,0,0,0,0
  214.     DATA 0,0,6,6,0,14,6,6,6,6,6,6,102,102,60,0,0,0,224,96,96,102,108,120,120,108,102,230,0,0,0,0
  215.     DATA 0,0,56,24,24,24,24,24,24,24,24,60,0,0,0,0,0,0,0,0,0,230,255,219,219,219,219,219,0,0,0,0
  216.     DATA 0,0,0,0,0,220,102,102,102,102,102,102,0,0,0,0,0,0,0,0,0,124,198,198,198,198,198,124,0,0,0,0
  217.     DATA 0,0,0,0,0,220,102,102,102,102,102,124,96,96,240,0,0,0,0,0,0,118,204,204,204,204,204,124,12,12,30,0
  218.     DATA 0,0,0,0,0,220,118,102,96,96,96,240,0,0,0,0,0,0,0,0,0,124,198,96,56,12,198,124,0,0,0,0
  219.     DATA 0,0,16,48,48,252,48,48,48,48,54,28,0,0,0,0,0,0,0,0,0,204,204,204,204,204,204,118,0,0,0,0
  220.     DATA 0,0,0,0,0,195,195,195,195,102,60,24,0,0,0,0,0,0,0,0,0,195,195,195,219,219,255,102,0,0,0,0
  221.     DATA 0,0,0,0,0,195,102,60,24,60,102,195,0,0,0,0,0,0,0,0,0,198,198,198,198,198,198,126,6,12,248,0
  222.     DATA 0,0,0,0,0,254,204,24,48,96,198,254,0,0,0,0,0,0,14,24,24,24,112,24,24,24,24,14,0,0,0,0
  223.     DATA 0,0,24,24,24,24,0,24,24,24,24,24,0,0,0,0,0,0,112,24,24,24,14,24,24,24,24,112,0,0,0,0
  224.     DATA 0,0,118,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,56,108,198,198,198,254,0,0,0,0,0
  225.     DATA 0,0,60,102,194,192,192,192,194,102,60,12,6,124,0,0,0,0,204,0,0,204,204,204,204,204,204,118,0,0,0,0
  226.     DATA 0,12,24,48,0,124,198,254,192,192,198,124,0,0,0,0,0,16,56,108,0,120,12,124,204,204,204,118,0,0,0,0
  227.     DATA 0,0,204,0,0,120,12,124,204,204,204,118,0,0,0,0,0,96,48,24,0,120,12,124,204,204,204,118,0,0,0,0
  228.     DATA 0,56,108,56,0,120,12,124,204,204,204,118,0,0,0,0,0,0,0,0,60,102,96,96,102,60,12,6,60,0,0,0
  229.     DATA 0,16,56,108,0,124,198,254,192,192,198,124,0,0,0,0,0,0,198,0,0,124,198,254,192,192,198,124,0,0,0,0
  230.     DATA 0,96,48,24,0,124,198,254,192,192,198,124,0,0,0,0,0,0,102,0,0,56,24,24,24,24,24,60,0,0,0,0
  231.     DATA 0,24,60,102,0,56,24,24,24,24,24,60,0,0,0,0,0,96,48,24,0,56,24,24,24,24,24,60,0,0,0,0
  232.     DATA 0,198,0,16,56,108,198,198,254,198,198,198,0,0,0,0,56,108,56,0,56,108,198,198,254,198,198,198,0,0,0,0
  233.     DATA 24,48,96,0,254,102,96,124,96,96,102,254,0,0,0,0,0,0,0,0,0,110,59,27,126,216,220,119,0,0,0,0
  234.     DATA 0,0,62,108,204,204,254,204,204,204,204,206,0,0,0,0,0,16,56,108,0,124,198,198,198,198,198,124,0,0,0,0
  235.     DATA 0,0,198,0,0,124,198,198,198,198,198,124,0,0,0,0,0,96,48,24,0,124,198,198,198,198,198,124,0,0,0,0
  236.     DATA 0,48,120,204,0,204,204,204,204,204,204,118,0,0,0,0,0,96,48,24,0,204,204,204,204,204,204,118,0,0,0,0
  237.     DATA 0,0,198,0,0,198,198,198,198,198,198,126,6,12,120,0,0,198,0,124,198,198,198,198,198,198,198,124,0,0,0,0
  238.     DATA 0,198,0,198,198,198,198,198,198,198,198,124,0,0,0,0,0,24,24,126,195,192,192,192,195,126,24,24,0,0,0,0
  239.     DATA 0,56,108,100,96,240,96,96,96,96,230,252,0,0,0,0,0,0,195,102,60,24,255,24,255,24,24,24,0,0,0,0
  240.     DATA 0,252,102,102,124,98,102,111,102,102,102,243,0,0,0,0,0,14,27,24,24,24,126,24,24,24,24,24,216,112,0,0
  241.     DATA 0,24,48,96,0,120,12,124,204,204,204,118,0,0,0,0,0,12,24,48,0,56,24,24,24,24,24,60,0,0,0,0
  242.     DATA 0,24,48,96,0,124,198,198,198,198,198,124,0,0,0,0,0,24,48,96,0,204,204,204,204,204,204,118,0,0,0,0
  243.     DATA 0,0,118,220,0,220,102,102,102,102,102,102,0,0,0,0,118,220,0,198,230,246,254,222,206,198,198,198,0,0,0,0
  244.     DATA 0,60,108,108,62,0,126,0,0,0,0,0,0,0,0,0,0,56,108,108,56,0,124,0,0,0,0,0,0,0,0,0
  245.     DATA 0,0,48,48,0,48,48,96,192,198,198,124,0,0,0,0,0,0,0,0,0,0,254,192,192,192,192,0,0,0,0,0
  246.     DATA 0,0,0,0,0,0,254,6,6,6,6,0,0,0,0,0,0,192,192,194,198,204,24,48,96,206,155,6,12,31,0,0
  247.     DATA 0,192,192,194,198,204,24,48,102,206,150,62,6,6,0,0,0,0,24,24,0,24,24,24,60,60,60,24,0,0,0,0
  248.     DATA 0,0,0,0,0,54,108,216,108,54,0,0,0,0,0,0,0,0,0,0,0,216,108,54,108,216,0,0,0,0,0,0
  249.     DATA 17,68,17,68,17,68,17,68,17,68,17,68,17,68,17,68,85,170,85,170,85,170,85,170,85,170,85,170,85,170,85,170
  250.     DATA 221,119,221,119,221,119,221,119,221,119,221,119,221,119,221,119,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24
  251.     DATA 24,24,24,24,24,24,24,248,24,24,24,24,24,24,24,24,24,24,24,24,24,248,24,248,24,24,24,24,24,24,24,24
  252.     DATA 54,54,54,54,54,54,54,246,54,54,54,54,54,54,54,54,0,0,0,0,0,0,0,254,54,54,54,54,54,54,54,54
  253.     DATA 0,0,0,0,0,248,24,248,24,24,24,24,24,24,24,24,54,54,54,54,54,246,6,246,54,54,54,54,54,54,54,54
  254.     DATA 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,0,0,0,0,0,254,6,246,54,54,54,54,54,54,54,54
  255.     DATA 54,54,54,54,54,246,6,254,0,0,0,0,0,0,0,0,54,54,54,54,54,54,54,254,0,0,0,0,0,0,0,0
  256.     DATA 24,24,24,24,24,248,24,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,24,24,24,24,24,24,24,24
  257.     DATA 24,24,24,24,24,24,24,31,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,255,0,0,0,0,0,0,0,0
  258.     DATA 0,0,0,0,0,0,0,255,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,31,24,24,24,24,24,24,24,24
  259.     DATA 0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,255,24,24,24,24,24,24,24,24
  260.     DATA 24,24,24,24,24,31,24,31,24,24,24,24,24,24,24,24,54,54,54,54,54,54,54,55,54,54,54,54,54,54,54,54
  261.     DATA 54,54,54,54,54,55,48,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,48,55,54,54,54,54,54,54,54,54
  262.     DATA 54,54,54,54,54,247,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,247,54,54,54,54,54,54,54,54
  263.     DATA 54,54,54,54,54,55,48,55,54,54,54,54,54,54,54,54,0,0,0,0,0,255,0,255,0,0,0,0,0,0,0,0
  264.     DATA 54,54,54,54,54,247,0,247,54,54,54,54,54,54,54,54,24,24,24,24,24,255,0,255,0,0,0,0,0,0,0,0
  265.     DATA 54,54,54,54,54,54,54,255,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,255,24,24,24,24,24,24,24,24
  266.     DATA 0,0,0,0,0,0,0,255,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,63,0,0,0,0,0,0,0,0
  267.     DATA 24,24,24,24,24,31,24,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,24,31,24,24,24,24,24,24,24,24
  268.     DATA 0,0,0,0,0,0,0,63,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,255,54,54,54,54,54,54,54,54
  269.     DATA 24,24,24,24,24,255,24,255,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,248,0,0,0,0,0,0,0,0
  270.     DATA 0,0,0,0,0,0,0,31,24,24,24,24,24,24,24,24,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  271.     DATA 0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240
  272.     DATA 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0
  273.     DATA 0,0,0,0,0,118,220,216,216,216,220,118,0,0,0,0,0,0,120,204,204,204,216,204,198,198,198,204,0,0,0,0
  274.     DATA 0,0,254,198,198,192,192,192,192,192,192,192,0,0,0,0,0,0,0,0,254,108,108,108,108,108,108,108,0,0,0,0
  275.     DATA 0,0,0,254,198,96,48,24,48,96,198,254,0,0,0,0,0,0,0,0,0,126,216,216,216,216,216,112,0,0,0,0
  276.     DATA 0,0,0,0,102,102,102,102,102,124,96,96,192,0,0,0,0,0,0,0,118,220,24,24,24,24,24,24,0,0,0,0
  277.     DATA 0,0,0,126,24,60,102,102,102,60,24,126,0,0,0,0,0,0,0,56,108,198,198,254,198,198,108,56,0,0,0,0
  278.     DATA 0,0,56,108,198,198,198,108,108,108,108,238,0,0,0,0,0,0,30,48,24,12,62,102,102,102,102,60,0,0,0,0
  279.     DATA 0,0,0,0,0,126,219,219,219,126,0,0,0,0,0,0,0,0,0,3,6,126,219,219,243,126,96,192,0,0,0,0
  280.     DATA 0,0,28,48,96,96,124,96,96,96,48,28,0,0,0,0,0,0,0,124,198,198,198,198,198,198,198,198,0,0,0,0
  281.     DATA 0,0,0,0,254,0,0,254,0,0,254,0,0,0,0,0,0,0,0,0,24,24,126,24,24,0,0,255,0,0,0,0
  282.     DATA 0,0,0,48,24,12,6,12,24,48,0,126,0,0,0,0,0,0,0,12,24,48,96,48,24,12,0,126,0,0,0,0
  283.     DATA 0,0,14,27,27,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,216,216,216,112,0,0,0,0
  284.     DATA 0,0,0,0,24,24,0,126,0,24,24,0,0,0,0,0,0,0,0,0,0,118,220,0,118,220,0,0,0,0,0,0
  285.     DATA 0,56,108,108,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0,0,0,0
  286.     DATA 0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,15,12,12,12,12,12,236,108,108,60,28,0,0,0,0
  287.     DATA 0,216,108,108,108,108,108,0,0,0,0,0,0,0,0,0,0,112,216,48,96,200,248,0,0,0,0,0,0,0,0,0
  288.     DATA 0,0,0,0,124,124,124,124,124,124,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  289.  
  290. FUNCTION changePlasma~& ()
  291.     pN = pN + .5 'dim shared cN as _Integer64, pR as integer, pG as integer, pB as integer
  292.     changePlasma~& = _RGB(r1 * (32 + 32 * SIN(pR * pN)), r2 * (32 + 32 * SIN(pG * pN)), r3 * (32 + 32 * SIN(pB * pN)))
  293.  
  294. SUB resetPlasma ()
  295.     IF RND < .5 THEN r1 = 0 ELSE r1 = 1
  296.     IF RND < .5 THEN r2 = 0 ELSE r2 = 1
  297.     IF RND < .5 THEN r3 = 0 ELSE r3 = 1
  298.     IF r1 = 0 AND r2 = 0 AND r3 = 0 THEN r1 = 1
  299.     pR = RND ^ 2: pG = RND ^ 2: pB = RND ^ 2: pN = 1
  300.  
  301.  

2 EDITs later: Wow, I really had to alter Plasma Coloring for nice background action (that doesn't over power the words (too much ;-)).

« Last Edit: October 25, 2019, 01:35:51 pm by bplus »

Offline johnno56

  • Forum Resident
  • Posts: 1270
  • Live long and prosper.
    • View Profile
Re: Another LED Scroller
« Reply #5 on: October 25, 2019, 07:17:18 pm »
I fixed it...

Try the following:

temp = SPACE$(chars) + "Riders on the storm. Riders on the storm. "
temp = temp + "Into this house we're born. Into this world we're thrown. "
temp = temp + "Like a dog without a bone, an actor out on loan. "
temp = temp + "Riders on the storm. "

Sorry [banned user], choosing between Julie Andrews and Jim Morrison, Jim will win hands down every time... lol

J
Logic is the beginning of wisdom.

Offline SierraKen

  • Forum Resident
  • Posts: 1454
    • View Profile
Re: Another LED Scroller
« Reply #6 on: October 25, 2019, 09:53:30 pm »
Awesome scroller!

Offline johnno56

  • Forum Resident
  • Posts: 1270
  • Live long and prosper.
    • View Profile
Re: Another LED Scroller
« Reply #7 on: October 25, 2019, 11:48:56 pm »
Steve,

A "wee bit" faster? The scroller moved so fast that the letters were a blur.... My monitor almost got "rug burn"....
Logic is the beginning of wisdom.

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: Another LED Scroller
« Reply #8 on: October 26, 2019, 01:36:53 am »
Steve,

A "wee bit" faster? The scroller moved so fast that the letters were a blur.... My monitor almost got "rug burn"....

And all I changed was this segment:

    'CIRCLE (x * t2 + t1, y * t2 + t1), LEDs.size, tc
    'PAINT (x * t2 + t1, y * t2 + t1), tc, tc
    CircleFill x * t2 + t1, y * t2 + t1, LEDs.size, tc

CIRCLE/PAINT is sloooooow.  Swapping it with a good CircleFill routine was all the code needed to eliminate the lag.  ;)
https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
    • View Profile
Re: Another LED Scroller
« Reply #9 on: October 26, 2019, 10:10:24 am »
Fast, who needs fast? The app is about displaying info to be read by human, NOT crunching numbers!

[banned user]'s code already scrolls faster than you can read without a _LIMIT set! That is why I had to slow it down for my mod with bigger lettered screen. :P

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: Another LED Scroller
« Reply #10 on: October 26, 2019, 10:29:22 am »
Fast, who needs fast? The app is about displaying info to be read by human, NOT crunching numbers!

Apparently [banned user] did:
Quote
Maybe someone can help this along to get better and faster.
https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
    • View Profile
Re: Another LED Scroller
« Reply #11 on: October 26, 2019, 10:34:28 am »
Apparently [banned user] did:
Quote
Maybe someone can help this along to get better and faster.

Oh I missed that part, typical reading comprehension by me. :P

You call  THAT  F A S T?  On my Quad core 3.5Ghz system with a low 8GB ram it takes a second for each letter with/without the _LIMIT command loaded.  I must have low end specs and y'all have light speed computers.  Where can I get one?

Nice one Steve and B+.

[banned user], are you a speed demon? WTH? ;-))

wait... "one second for each letter with or without _LIMIT"??? Yikes man!
« Last Edit: October 26, 2019, 10:39:23 am by bplus »

Offline TempodiBasic

  • Forum Resident
  • Posts: 1792
    • View Profile
Re: Another LED Scroller
« Reply #12 on: October 27, 2019, 06:35:29 pm »
Hi [banned user]

Good Job


about speed ??? How can it  improve your algorithm?? Well how many circles and paints are executed in a second?
Steve has pointed to the issue... with fillcircle you can gain some times but to do it faster IMHO you must rewrite /rethink the core of output.

About the progression not fluid but it seems to jump at each character, this is caused by _display at each character...
moreover the PrintLED sub must be rewritten if you want to show progression of scrolling for each vertical line of circle and not for each letter to print...

Programming isn't difficult, only it's  consuming time and coffee

Offline TempodiBasic

  • Forum Resident
  • Posts: 1792
    • View Profile
Re: Another LED Scroller
« Reply #13 on: October 27, 2019, 06:44:47 pm »
However if you forget CIRCLE and PAINT
I can improve very much the speed of your scrolling...

see here this code!
Code: QB64: [Select]
  1. _TITLE "LED Screen"
  2.  
  3. CONST false = 0
  4. CONST true = NOT false
  5.  
  6.  
  7. TYPE LED_Board
  8.     ' # of horizontal pixels
  9.     hor AS INTEGER
  10.  
  11.     ' # of vertical pixels
  12.     vert AS INTEGER
  13.  
  14.     ' # of text characters
  15.     chars AS INTEGER
  16.  
  17.     ' # of text rows
  18.     rows AS INTEGER
  19.  
  20.     ' Size of the LED pixels
  21.     size AS INTEGER
  22.  
  23. DIM SHARED LEDs AS LED_Board
  24. LEDs.size = 1
  25.  
  26. DIM SHARED bScreen AS LONG
  27.  
  28. DIM SHARED CharFont AS STRING
  29. DIM SHARED DotMatrix(16) AS STRING
  30.  
  31. sWidth = 800
  32. sHeight = 480
  33.  
  34. LEDs.hor = sWidth \ (2 * LEDs.size + 2)
  35. LEDs.vert = sHeight \ (2 * LEDs.size + 2)
  36.  
  37. LEDs.chars = LEDs.hor \ 8
  38. LEDs.rows = LEDs.vert \ 16
  39.  
  40. LoadFont
  41.  
  42. SCREEN _NEWIMAGE(sWidth, sHeight, 12)
  43.  
  44. chars = LEDs.chars
  45. row = LEDs.rows \ 2
  46.  
  47. temp = SPACE$(chars) + "Supercalifragilisticexpialidocious "
  48. temp = temp + "Even though the sound of it is something quite atrocious "
  49. temp = temp + "If you say it loud enough, you'll always sound precocious "
  50. temp = temp + "Supercalifragilisticexpialidocious" + SPACE$(chars)
  51.  
  52. length = LEN(temp) - chars + 1
  53.  
  54. FOR scroll = 1 TO length
  55.     _LIMIT 60
  56.     LINE (0, 0)-(sWidth - 1, sHeight - 1), _RGB(0, 0, 0), BF
  57.  
  58.     PrintLED MID$(temp, scroll, chars), row, 0
  59.     _DISPLAY
  60.  
  61.  
  62. FUNCTION BIN$ (Value)
  63.     WHILE Value <> 0
  64.         T$ = RIGHT$(STR$(Value MOD 2), 1) + T$: Value = Value \ 2
  65.     WEND
  66.  
  67.     BIN = RIGHT$(STRING$(8, 48) + T$, 8)
  68.  
  69. FUNCTION Font$ (Value)
  70.     DIM Tag AS STRING
  71.     DIM Temp AS STRING
  72.  
  73.     Tag = MID$(CharFont, 16 * Value + 1, 16)
  74.  
  75.     Temp = ""
  76.     FOR i = 1 TO 16
  77.         Temp = Temp + RIGHT$("0000000" + BIN(ASC(MID$(Tag, i, 1))), 8)
  78.     NEXT
  79.  
  80.     Font = Temp
  81.  
  82. SUB LoadText (Message AS STRING, flag AS INTEGER)
  83.     DIM Text AS STRING
  84.     DIM Blank AS STRING
  85.  
  86.     ' Set flag when scrolling the message
  87.  
  88.     Blank = ""
  89.     IF flag THEN
  90.         Blank = STRING$(LEDs.hor, 48)
  91.     END IF
  92.  
  93.     FOR v = 1 TO 16
  94.         DotMatrix(v) = Blank
  95.     NEXT
  96.  
  97.     Text = Message + " "
  98.     FOR char = 1 TO LEN(Text)
  99.         a = ASC(MID$(Text, char, 1))
  100.  
  101.         FOR v = 0 TO 15
  102.             DotMatrix(v + 1) = DotMatrix(v + 1) + MID$(Font(a), 8 * v + 1, 8)
  103.         NEXT
  104.     NEXT
  105.  
  106.     IF flag THEN
  107.         FOR v = 1 TO 16
  108.             DotMatrix(v) = DotMatrix(v) + Blank
  109.         NEXT
  110.     END IF
  111.  
  112. SUB PrintLED (Message AS STRING, Row AS INTEGER, flag AS INTEGER)
  113.     DIM temp AS STRING
  114.  
  115.     ' Set flag to center the message
  116.  
  117.     IF flag THEN
  118.         t = LEDs.chars \ 2 - LEN(Message) \ 2
  119.  
  120.         LoadText SPACE$(t) + Message, 0
  121.     ELSE
  122.         LoadText Message, 0
  123.     END IF
  124.  
  125.     tx = 0: ty = 16 * Row
  126.  
  127.     Length = LEN(DotMatrix(1))
  128.     IF Length > LEDs.hor THEN
  129.         Length = LEDs.hor
  130.     END IF
  131.  
  132.     FOR v = 0 TO 15
  133.         temp = MID$(DotMatrix(v + 1), char, Length)
  134.  
  135.         FOR h = 0 TO LEN(temp)
  136.             FlipLED tx + h, ty + v, 1, VAL(MID$(temp, h + 1, 1))
  137.  
  138.             ' Use this to speed up the program:
  139.             'IF VAL(MID$(temp, h + 1, 1)) THEN FlipLED tx + h, ty + v, 1, 1
  140.         NEXT
  141.     NEXT
  142.  
  143. SUB FlipLED (x, y, colour, state)
  144.     t1 = LEDs.size
  145.     t2 = 2 * t1 + 2
  146.  
  147.     ' State is On/Off
  148.     tc = 8 * state + colour
  149.     LINE (x * t2 + t1, y * t2 + t1)-(x * t2 + t1 + LEDs.size, y * t2 + t1 + LEDs.size), tc, BF
  150.     '    CIRCLE (x * t2 + t1, y * t2 + t1), LEDs.size, tc
  151.     '   PAINT (x * t2 + t1, y * t2 + t1), tc, tc
  152.  
  153. SUB LoadFont
  154.     FOR i = 1 TO 4096
  155.         READ charVal
  156.         CharFont = CharFont + CHR$(charVal)
  157.     NEXT
  158.     EXIT SUB
  159.  
  160.     DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,129,165,129,129,189,153,129,129,126,0,0,0,0
  161.     DATA 0,0,126,255,219,255,255,195,231,255,255,126,0,0,0,0,0,0,0,0,108,254,254,254,254,124,56,16,0,0,0,0
  162.     DATA 0,0,0,0,16,56,124,254,124,56,16,0,0,0,0,0,0,0,0,24,60,60,231,231,231,24,24,60,0,0,0,0
  163.     DATA 0,0,0,24,60,126,255,255,126,24,24,60,0,0,0,0,0,0,0,0,0,0,24,60,60,24,0,0,0,0,0,0
  164.     DATA 255,255,255,255,255,255,231,195,195,231,255,255,255,255,255,255,0,0,0,0,0,60,102,66,66,102,60,0,0,0,0,0
  165.     DATA 255,255,255,255,255,195,153,189,189,153,195,255,255,255,255,255,0,0,30,14,26,50,120,204,204,204,204,120,0,0,0,0
  166.     DATA 0,0,60,102,102,102,102,60,24,126,24,24,0,0,0,0,0,0,63,51,63,48,48,48,48,112,240,224,0,0,0,0
  167.     DATA 0,0,127,99,127,99,99,99,99,103,231,230,192,0,0,0,0,0,0,24,24,219,60,231,60,219,24,24,0,0,0,0
  168.     DATA 0,128,192,224,240,248,254,248,240,224,192,128,0,0,0,0,0,2,6,14,30,62,254,62,30,14,6,2,0,0,0,0
  169.     DATA 0,0,24,60,126,24,24,24,126,60,24,0,0,0,0,0,0,0,102,102,102,102,102,102,102,0,102,102,0,0,0,0
  170.     DATA 0,0,127,219,219,219,123,27,27,27,27,27,0,0,0,0,0,124,198,96,56,108,198,198,108,56,12,198,124,0,0,0
  171.     DATA 0,0,0,0,0,0,0,0,254,254,254,254,0,0,0,0,0,0,24,60,126,24,24,24,126,60,24,126,0,0,0,0
  172.     DATA 0,0,24,60,126,24,24,24,24,24,24,24,0,0,0,0,0,0,24,24,24,24,24,24,24,126,60,24,0,0,0,0
  173.     DATA 0,0,0,0,0,24,12,254,12,24,0,0,0,0,0,0,0,0,0,0,0,48,96,254,96,48,0,0,0,0,0,0
  174.     DATA 0,0,0,0,0,0,192,192,192,254,0,0,0,0,0,0,0,0,0,0,0,36,102,255,102,36,0,0,0,0,0,0
  175.     DATA 0,0,0,0,16,56,56,124,124,254,254,0,0,0,0,0,0,0,0,0,254,254,124,124,56,56,16,0,0,0,0,0
  176.     DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,60,60,60,24,24,24,0,24,24,0,0,0,0
  177.     DATA 0,102,102,102,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,108,254,108,108,108,254,108,108,0,0,0,0
  178.     DATA 24,24,124,198,194,192,124,6,6,134,198,124,24,24,0,0,0,0,0,0,194,198,12,24,48,96,198,134,0,0,0,0
  179.     DATA 0,0,56,108,108,56,118,220,204,204,204,118,0,0,0,0,0,48,48,48,96,0,0,0,0,0,0,0,0,0,0,0
  180.     DATA 0,0,12,24,48,48,48,48,48,48,24,12,0,0,0,0,0,0,48,24,12,12,12,12,12,12,24,48,0,0,0,0
  181.     DATA 0,0,0,0,0,102,60,255,60,102,0,0,0,0,0,0,0,0,0,0,0,24,24,126,24,24,0,0,0,0,0,0
  182.     DATA 0,0,0,0,0,0,0,0,0,24,24,24,48,0,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0
  183.     DATA 0,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0,0,0,0,0,2,6,12,24,48,96,192,128,0,0,0,0
  184.     DATA 0,0,60,102,195,195,219,219,195,195,102,60,0,0,0,0,0,0,24,56,120,24,24,24,24,24,24,126,0,0,0,0
  185.     DATA 0,0,124,198,6,12,24,48,96,192,198,254,0,0,0,0,0,0,124,198,6,6,60,6,6,6,198,124,0,0,0,0
  186.     DATA 0,0,12,28,60,108,204,254,12,12,12,30,0,0,0,0,0,0,254,192,192,192,252,6,6,6,198,124,0,0,0,0
  187.     DATA 0,0,56,96,192,192,252,198,198,198,198,124,0,0,0,0,0,0,254,198,6,6,12,24,48,48,48,48,0,0,0,0
  188.     DATA 0,0,124,198,198,198,124,198,198,198,198,124,0,0,0,0,0,0,124,198,198,198,126,6,6,6,12,120,0,0,0,0
  189.     DATA 0,0,0,0,24,24,0,0,0,24,24,0,0,0,0,0,0,0,0,0,24,24,0,0,0,24,24,48,0,0,0,0
  190.     DATA 0,0,0,6,12,24,48,96,48,24,12,6,0,0,0,0,0,0,0,0,0,126,0,0,126,0,0,0,0,0,0,0
  191.     DATA 0,0,0,96,48,24,12,6,12,24,48,96,0,0,0,0,0,0,124,198,198,12,24,24,24,0,24,24,0,0,0,0
  192.     DATA 0,0,0,124,198,198,222,222,222,220,192,124,0,0,0,0,0,0,16,56,108,198,198,254,198,198,198,198,0,0,0,0
  193.     DATA 0,0,252,102,102,102,124,102,102,102,102,252,0,0,0,0,0,0,60,102,194,192,192,192,192,194,102,60,0,0,0,0
  194.     DATA 0,0,248,108,102,102,102,102,102,102,108,248,0,0,0,0,0,0,254,102,98,104,120,104,96,98,102,254,0,0,0,0
  195.     DATA 0,0,254,102,98,104,120,104,96,96,96,240,0,0,0,0,0,0,60,102,194,192,192,222,198,198,102,58,0,0,0,0
  196.     DATA 0,0,198,198,198,198,254,198,198,198,198,198,0,0,0,0,0,0,60,24,24,24,24,24,24,24,24,60,0,0,0,0
  197.     DATA 0,0,30,12,12,12,12,12,204,204,204,120,0,0,0,0,0,0,230,102,102,108,120,120,108,102,102,230,0,0,0,0
  198.     DATA 0,0,240,96,96,96,96,96,96,98,102,254,0,0,0,0,0,0,195,231,255,255,219,195,195,195,195,195,0,0,0,0
  199.     DATA 0,0,198,230,246,254,222,206,198,198,198,198,0,0,0,0,0,0,124,198,198,198,198,198,198,198,198,124,0,0,0,0
  200.     DATA 0,0,252,102,102,102,124,96,96,96,96,240,0,0,0,0,0,0,124,198,198,198,198,198,198,214,222,124,12,14,0,0
  201.     DATA 0,0,252,102,102,102,124,108,102,102,102,230,0,0,0,0,0,0,124,198,198,96,56,12,6,198,198,124,0,0,0,0
  202.     DATA 0,0,255,219,153,24,24,24,24,24,24,60,0,0,0,0,0,0,198,198,198,198,198,198,198,198,198,124,0,0,0,0
  203.     DATA 0,0,195,195,195,195,195,195,195,102,60,24,0,0,0,0,0,0,195,195,195,195,195,219,219,255,102,102,0,0,0,0
  204.     DATA 0,0,195,195,102,60,24,24,60,102,195,195,0,0,0,0,0,0,195,195,195,102,60,24,24,24,24,60,0,0,0,0
  205.     DATA 0,0,255,195,134,12,24,48,96,193,195,255,0,0,0,0,0,0,60,48,48,48,48,48,48,48,48,60,0,0,0,0
  206.     DATA 0,0,0,128,192,224,112,56,28,14,6,2,0,0,0,0,0,0,60,12,12,12,12,12,12,12,12,60,0,0,0,0
  207.     DATA 16,56,108,198,0,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
  208.     DATA 48,48,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,12,124,204,204,204,118,0,0,0,0
  209.     DATA 0,0,224,96,96,120,108,102,102,102,102,124,0,0,0,0,0,0,0,0,0,124,198,192,192,192,198,124,0,0,0,0
  210.     DATA 0,0,28,12,12,60,108,204,204,204,204,118,0,0,0,0,0,0,0,0,0,124,198,254,192,192,198,124,0,0,0,0
  211.     DATA 0,0,56,108,100,96,240,96,96,96,96,240,0,0,0,0,0,0,0,0,0,118,204,204,204,204,204,124,12,204,120,0
  212.     DATA 0,0,224,96,96,108,118,102,102,102,102,230,0,0,0,0,0,0,24,24,0,56,24,24,24,24,24,60,0,0,0,0
  213.     DATA 0,0,6,6,0,14,6,6,6,6,6,6,102,102,60,0,0,0,224,96,96,102,108,120,120,108,102,230,0,0,0,0
  214.     DATA 0,0,56,24,24,24,24,24,24,24,24,60,0,0,0,0,0,0,0,0,0,230,255,219,219,219,219,219,0,0,0,0
  215.     DATA 0,0,0,0,0,220,102,102,102,102,102,102,0,0,0,0,0,0,0,0,0,124,198,198,198,198,198,124,0,0,0,0
  216.     DATA 0,0,0,0,0,220,102,102,102,102,102,124,96,96,240,0,0,0,0,0,0,118,204,204,204,204,204,124,12,12,30,0
  217.     DATA 0,0,0,0,0,220,118,102,96,96,96,240,0,0,0,0,0,0,0,0,0,124,198,96,56,12,198,124,0,0,0,0
  218.     DATA 0,0,16,48,48,252,48,48,48,48,54,28,0,0,0,0,0,0,0,0,0,204,204,204,204,204,204,118,0,0,0,0
  219.     DATA 0,0,0,0,0,195,195,195,195,102,60,24,0,0,0,0,0,0,0,0,0,195,195,195,219,219,255,102,0,0,0,0
  220.     DATA 0,0,0,0,0,195,102,60,24,60,102,195,0,0,0,0,0,0,0,0,0,198,198,198,198,198,198,126,6,12,248,0
  221.     DATA 0,0,0,0,0,254,204,24,48,96,198,254,0,0,0,0,0,0,14,24,24,24,112,24,24,24,24,14,0,0,0,0
  222.     DATA 0,0,24,24,24,24,0,24,24,24,24,24,0,0,0,0,0,0,112,24,24,24,14,24,24,24,24,112,0,0,0,0
  223.     DATA 0,0,118,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,56,108,198,198,198,254,0,0,0,0,0
  224.     DATA 0,0,60,102,194,192,192,192,194,102,60,12,6,124,0,0,0,0,204,0,0,204,204,204,204,204,204,118,0,0,0,0
  225.     DATA 0,12,24,48,0,124,198,254,192,192,198,124,0,0,0,0,0,16,56,108,0,120,12,124,204,204,204,118,0,0,0,0
  226.     DATA 0,0,204,0,0,120,12,124,204,204,204,118,0,0,0,0,0,96,48,24,0,120,12,124,204,204,204,118,0,0,0,0
  227.     DATA 0,56,108,56,0,120,12,124,204,204,204,118,0,0,0,0,0,0,0,0,60,102,96,96,102,60,12,6,60,0,0,0
  228.     DATA 0,16,56,108,0,124,198,254,192,192,198,124,0,0,0,0,0,0,198,0,0,124,198,254,192,192,198,124,0,0,0,0
  229.     DATA 0,96,48,24,0,124,198,254,192,192,198,124,0,0,0,0,0,0,102,0,0,56,24,24,24,24,24,60,0,0,0,0
  230.     DATA 0,24,60,102,0,56,24,24,24,24,24,60,0,0,0,0,0,96,48,24,0,56,24,24,24,24,24,60,0,0,0,0
  231.     DATA 0,198,0,16,56,108,198,198,254,198,198,198,0,0,0,0,56,108,56,0,56,108,198,198,254,198,198,198,0,0,0,0
  232.     DATA 24,48,96,0,254,102,96,124,96,96,102,254,0,0,0,0,0,0,0,0,0,110,59,27,126,216,220,119,0,0,0,0
  233.     DATA 0,0,62,108,204,204,254,204,204,204,204,206,0,0,0,0,0,16,56,108,0,124,198,198,198,198,198,124,0,0,0,0
  234.     DATA 0,0,198,0,0,124,198,198,198,198,198,124,0,0,0,0,0,96,48,24,0,124,198,198,198,198,198,124,0,0,0,0
  235.     DATA 0,48,120,204,0,204,204,204,204,204,204,118,0,0,0,0,0,96,48,24,0,204,204,204,204,204,204,118,0,0,0,0
  236.     DATA 0,0,198,0,0,198,198,198,198,198,198,126,6,12,120,0,0,198,0,124,198,198,198,198,198,198,198,124,0,0,0,0
  237.     DATA 0,198,0,198,198,198,198,198,198,198,198,124,0,0,0,0,0,24,24,126,195,192,192,192,195,126,24,24,0,0,0,0
  238.     DATA 0,56,108,100,96,240,96,96,96,96,230,252,0,0,0,0,0,0,195,102,60,24,255,24,255,24,24,24,0,0,0,0
  239.     DATA 0,252,102,102,124,98,102,111,102,102,102,243,0,0,0,0,0,14,27,24,24,24,126,24,24,24,24,24,216,112,0,0
  240.     DATA 0,24,48,96,0,120,12,124,204,204,204,118,0,0,0,0,0,12,24,48,0,56,24,24,24,24,24,60,0,0,0,0
  241.     DATA 0,24,48,96,0,124,198,198,198,198,198,124,0,0,0,0,0,24,48,96,0,204,204,204,204,204,204,118,0,0,0,0
  242.     DATA 0,0,118,220,0,220,102,102,102,102,102,102,0,0,0,0,118,220,0,198,230,246,254,222,206,198,198,198,0,0,0,0
  243.     DATA 0,60,108,108,62,0,126,0,0,0,0,0,0,0,0,0,0,56,108,108,56,0,124,0,0,0,0,0,0,0,0,0
  244.     DATA 0,0,48,48,0,48,48,96,192,198,198,124,0,0,0,0,0,0,0,0,0,0,254,192,192,192,192,0,0,0,0,0
  245.     DATA 0,0,0,0,0,0,254,6,6,6,6,0,0,0,0,0,0,192,192,194,198,204,24,48,96,206,155,6,12,31,0,0
  246.     DATA 0,192,192,194,198,204,24,48,102,206,150,62,6,6,0,0,0,0,24,24,0,24,24,24,60,60,60,24,0,0,0,0
  247.     DATA 0,0,0,0,0,54,108,216,108,54,0,0,0,0,0,0,0,0,0,0,0,216,108,54,108,216,0,0,0,0,0,0
  248.     DATA 17,68,17,68,17,68,17,68,17,68,17,68,17,68,17,68,85,170,85,170,85,170,85,170,85,170,85,170,85,170,85,170
  249.     DATA 221,119,221,119,221,119,221,119,221,119,221,119,221,119,221,119,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24
  250.     DATA 24,24,24,24,24,24,24,248,24,24,24,24,24,24,24,24,24,24,24,24,24,248,24,248,24,24,24,24,24,24,24,24
  251.     DATA 54,54,54,54,54,54,54,246,54,54,54,54,54,54,54,54,0,0,0,0,0,0,0,254,54,54,54,54,54,54,54,54
  252.     DATA 0,0,0,0,0,248,24,248,24,24,24,24,24,24,24,24,54,54,54,54,54,246,6,246,54,54,54,54,54,54,54,54
  253.     DATA 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,0,0,0,0,0,254,6,246,54,54,54,54,54,54,54,54
  254.     DATA 54,54,54,54,54,246,6,254,0,0,0,0,0,0,0,0,54,54,54,54,54,54,54,254,0,0,0,0,0,0,0,0
  255.     DATA 24,24,24,24,24,248,24,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,24,24,24,24,24,24,24,24
  256.     DATA 24,24,24,24,24,24,24,31,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,255,0,0,0,0,0,0,0,0
  257.     DATA 0,0,0,0,0,0,0,255,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,31,24,24,24,24,24,24,24,24
  258.     DATA 0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,255,24,24,24,24,24,24,24,24
  259.     DATA 24,24,24,24,24,31,24,31,24,24,24,24,24,24,24,24,54,54,54,54,54,54,54,55,54,54,54,54,54,54,54,54
  260.     DATA 54,54,54,54,54,55,48,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,48,55,54,54,54,54,54,54,54,54
  261.     DATA 54,54,54,54,54,247,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,247,54,54,54,54,54,54,54,54
  262.     DATA 54,54,54,54,54,55,48,55,54,54,54,54,54,54,54,54,0,0,0,0,0,255,0,255,0,0,0,0,0,0,0,0
  263.     DATA 54,54,54,54,54,247,0,247,54,54,54,54,54,54,54,54,24,24,24,24,24,255,0,255,0,0,0,0,0,0,0,0
  264.     DATA 54,54,54,54,54,54,54,255,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,255,24,24,24,24,24,24,24,24
  265.     DATA 0,0,0,0,0,0,0,255,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,63,0,0,0,0,0,0,0,0
  266.     DATA 24,24,24,24,24,31,24,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,24,31,24,24,24,24,24,24,24,24
  267.     DATA 0,0,0,0,0,0,0,63,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,255,54,54,54,54,54,54,54,54
  268.     DATA 24,24,24,24,24,255,24,255,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,248,0,0,0,0,0,0,0,0
  269.     DATA 0,0,0,0,0,0,0,31,24,24,24,24,24,24,24,24,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  270.     DATA 0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240
  271.     DATA 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0
  272.     DATA 0,0,0,0,0,118,220,216,216,216,220,118,0,0,0,0,0,0,120,204,204,204,216,204,198,198,198,204,0,0,0,0
  273.     DATA 0,0,254,198,198,192,192,192,192,192,192,192,0,0,0,0,0,0,0,0,254,108,108,108,108,108,108,108,0,0,0,0
  274.     DATA 0,0,0,254,198,96,48,24,48,96,198,254,0,0,0,0,0,0,0,0,0,126,216,216,216,216,216,112,0,0,0,0
  275.     DATA 0,0,0,0,102,102,102,102,102,124,96,96,192,0,0,0,0,0,0,0,118,220,24,24,24,24,24,24,0,0,0,0
  276.     DATA 0,0,0,126,24,60,102,102,102,60,24,126,0,0,0,0,0,0,0,56,108,198,198,254,198,198,108,56,0,0,0,0
  277.     DATA 0,0,56,108,198,198,198,108,108,108,108,238,0,0,0,0,0,0,30,48,24,12,62,102,102,102,102,60,0,0,0,0
  278.     DATA 0,0,0,0,0,126,219,219,219,126,0,0,0,0,0,0,0,0,0,3,6,126,219,219,243,126,96,192,0,0,0,0
  279.     DATA 0,0,28,48,96,96,124,96,96,96,48,28,0,0,0,0,0,0,0,124,198,198,198,198,198,198,198,198,0,0,0,0
  280.     DATA 0,0,0,0,254,0,0,254,0,0,254,0,0,0,0,0,0,0,0,0,24,24,126,24,24,0,0,255,0,0,0,0
  281.     DATA 0,0,0,48,24,12,6,12,24,48,0,126,0,0,0,0,0,0,0,12,24,48,96,48,24,12,0,126,0,0,0,0
  282.     DATA 0,0,14,27,27,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,216,216,216,112,0,0,0,0
  283.     DATA 0,0,0,0,24,24,0,126,0,24,24,0,0,0,0,0,0,0,0,0,0,118,220,0,118,220,0,0,0,0,0,0
  284.     DATA 0,56,108,108,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0,0,0,0
  285.     DATA 0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,15,12,12,12,12,12,236,108,108,60,28,0,0,0,0
  286.     DATA 0,216,108,108,108,108,108,0,0,0,0,0,0,0,0,0,0,112,216,48,96,200,248,0,0,0,0,0,0,0,0,0
  287.     DATA 0,0,0,0,124,124,124,124,124,124,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  288.  
  289.  

and as you can see I REMmed CIRCLE and PAINT raws and add a LINE code
Code: QB64: [Select]
  1.  LINE (x * t2 + t1, y * t2 + t1)-(x * t2 + t1 + LEDs.size, y * t2 + t1 + LEDs.size), tc, BF

as you can see also Bplus mod goes faster

Code: QB64: [Select]
  1. _TITLE " LED Screen by [banned user], mod by B+, new background colors every loop." '2019-10-25
  2. CONST false = 0
  3. CONST true = NOT false
  4.  
  5.  
  6. TYPE LED_Board
  7.     ' # of horizontal pixels
  8.     hor AS INTEGER
  9.  
  10.     ' # of vertical pixels
  11.     vert AS INTEGER
  12.  
  13.     ' # of text characters
  14.     chars AS INTEGER
  15.  
  16.     ' # of text rows
  17.     rows AS INTEGER
  18.  
  19.     ' Size of the LED pixels
  20.     size AS INTEGER
  21.  
  22. DIM SHARED LEDs AS LED_Board
  23. LEDs.size = 8
  24.  
  25. DIM SHARED bScreen AS LONG
  26.  
  27. DIM SHARED CharFont AS STRING
  28. DIM SHARED DotMatrix(16) AS STRING
  29. DIM SHARED pR, pG, pB, pN, r1, r2, r3 'for plasma numbers
  30. sWidth = 1280
  31. sHeight = 780
  32.  
  33. LEDs.hor = sWidth \ (2 * LEDs.size + 2)
  34. LEDs.vert = sHeight \ (2 * LEDs.size + 2)
  35.  
  36. LEDs.chars = LEDs.hor \ 8
  37. LEDs.rows = LEDs.vert \ 16
  38.  
  39. LoadFont
  40.  
  41. SCREEN _NEWIMAGE(sWidth, sHeight, 32)
  42. resetPlasma
  43. chars = LEDs.chars
  44. row = LEDs.rows \ 2
  45.  
  46. temp = SPACE$(chars) + "Supercalifragilisticexpialidocious "
  47. temp = temp + "Even though the sound of it is something quite atrocious "
  48. temp = temp + "If you say it loud enough, you'll always sound precocious "
  49. temp = temp + "Supercalifragilisticexpialidocious" + SPACE$(chars)
  50.  
  51. length = LEN(temp) - chars + 1
  52. WHILE _KEYDOWN(27) = 0
  53.     scroll = scroll + 1
  54.     IF scroll > length THEN scroll = 1: resetPlasma
  55.     IF INKEY$ = " " THEN resetPlasma
  56.     LINE (0, 0)-(sWidth - 1, sHeight - 1), _RGB(0, 0, 0), BF
  57.     PrintLED MID$(temp, scroll, chars), row, 0
  58.     _DISPLAY
  59.     _LIMIT 10
  60.  
  61.  
  62. FUNCTION BIN$ (Value)
  63.     WHILE Value <> 0
  64.         T$ = RIGHT$(STR$(Value MOD 2), 1) + T$: Value = Value \ 2
  65.     WEND
  66.  
  67.     BIN = RIGHT$(STRING$(8, 48) + T$, 8)
  68.  
  69. FUNCTION Font$ (Value)
  70.     DIM Tag AS STRING
  71.     DIM Temp AS STRING
  72.  
  73.     Tag = MID$(CharFont, 16 * Value + 1, 16)
  74.  
  75.     Temp = ""
  76.     FOR i = 1 TO 16
  77.         Temp = Temp + RIGHT$("0000000" + BIN(ASC(MID$(Tag, i, 1))), 8)
  78.     NEXT
  79.  
  80.     Font = Temp
  81.  
  82. SUB LoadText (Message AS STRING, flag AS INTEGER)
  83.     DIM Text AS STRING
  84.     DIM Blank AS STRING
  85.  
  86.     ' Set flag when scrolling the message
  87.  
  88.     Blank = ""
  89.     IF flag THEN
  90.         Blank = STRING$(LEDs.hor, 48)
  91.     END IF
  92.  
  93.     FOR v = 1 TO 16
  94.         DotMatrix(v) = Blank
  95.     NEXT
  96.  
  97.     Text = Message + " "
  98.     FOR char = 1 TO LEN(Text)
  99.         a = ASC(MID$(Text, char, 1))
  100.  
  101.         FOR v = 0 TO 15
  102.             DotMatrix(v + 1) = DotMatrix(v + 1) + MID$(Font(a), 8 * v + 1, 8)
  103.         NEXT
  104.     NEXT
  105.  
  106.     IF flag THEN
  107.         FOR v = 1 TO 16
  108.             DotMatrix(v) = DotMatrix(v) + Blank
  109.         NEXT
  110.     END IF
  111.  
  112. SUB PrintLED (Message AS STRING, Row AS INTEGER, flag AS INTEGER)
  113.     DIM temp AS STRING
  114.  
  115.     ' Set flag to center the message
  116.  
  117.     IF flag THEN
  118.         t = LEDs.chars \ 2 - LEN(Message) \ 2
  119.  
  120.         LoadText SPACE$(t) + Message, 0
  121.     ELSE
  122.         LoadText Message, 0
  123.     END IF
  124.  
  125.     tx = 0: ty = 16 * Row
  126.  
  127.     Length = LEN(DotMatrix(1))
  128.     IF Length > LEDs.hor THEN
  129.         Length = LEDs.hor
  130.     END IF
  131.  
  132.     FOR v = 0 TO 15
  133.         temp = MID$(DotMatrix(v + 1), char, Length)
  134.  
  135.         FOR h = 0 TO LEN(temp)
  136.             FlipLED tx + h, ty + v, 1, VAL(MID$(temp, h + 1, 1))
  137.  
  138.             ' Use this to speed up the program:
  139.             'IF VAL(MID$(temp, h + 1, 1)) THEN FlipLED tx + h, ty + v, 1, 1
  140.         NEXT
  141.     NEXT
  142.  
  143. SUB FlipLED (x, y, colour, state)
  144.     t1 = LEDs.size
  145.     t2 = 2 * t1 + 2
  146.  
  147.     ' State is On/Off
  148.     IF state THEN tc~& = &HFFFFFFFF ELSE tc~& = changePlasma
  149.     'tc = 8 * state + colour
  150.     LINE (x * t2 + t1, y * t2 + t1)-(x * t2 + t1 + LEDs.size, y * t2 + t1 + LEDs.size), tc~&, BF
  151.     '    CIRCLE (x * t2 + t1, y * t2 + t1), LEDs.size, tc~&
  152.     '   PAINT (x * t2 + t1, y * t2 + t1), tc~&, tc~&
  153.  
  154. SUB LoadFont
  155.     FOR i = 1 TO 4096
  156.         READ charVal
  157.         CharFont = CharFont + CHR$(charVal)
  158.     NEXT
  159.     EXIT SUB
  160.  
  161.     DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,129,165,129,129,189,153,129,129,126,0,0,0,0
  162.     DATA 0,0,126,255,219,255,255,195,231,255,255,126,0,0,0,0,0,0,0,0,108,254,254,254,254,124,56,16,0,0,0,0
  163.     DATA 0,0,0,0,16,56,124,254,124,56,16,0,0,0,0,0,0,0,0,24,60,60,231,231,231,24,24,60,0,0,0,0
  164.     DATA 0,0,0,24,60,126,255,255,126,24,24,60,0,0,0,0,0,0,0,0,0,0,24,60,60,24,0,0,0,0,0,0
  165.     DATA 255,255,255,255,255,255,231,195,195,231,255,255,255,255,255,255,0,0,0,0,0,60,102,66,66,102,60,0,0,0,0,0
  166.     DATA 255,255,255,255,255,195,153,189,189,153,195,255,255,255,255,255,0,0,30,14,26,50,120,204,204,204,204,120,0,0,0,0
  167.     DATA 0,0,60,102,102,102,102,60,24,126,24,24,0,0,0,0,0,0,63,51,63,48,48,48,48,112,240,224,0,0,0,0
  168.     DATA 0,0,127,99,127,99,99,99,99,103,231,230,192,0,0,0,0,0,0,24,24,219,60,231,60,219,24,24,0,0,0,0
  169.     DATA 0,128,192,224,240,248,254,248,240,224,192,128,0,0,0,0,0,2,6,14,30,62,254,62,30,14,6,2,0,0,0,0
  170.     DATA 0,0,24,60,126,24,24,24,126,60,24,0,0,0,0,0,0,0,102,102,102,102,102,102,102,0,102,102,0,0,0,0
  171.     DATA 0,0,127,219,219,219,123,27,27,27,27,27,0,0,0,0,0,124,198,96,56,108,198,198,108,56,12,198,124,0,0,0
  172.     DATA 0,0,0,0,0,0,0,0,254,254,254,254,0,0,0,0,0,0,24,60,126,24,24,24,126,60,24,126,0,0,0,0
  173.     DATA 0,0,24,60,126,24,24,24,24,24,24,24,0,0,0,0,0,0,24,24,24,24,24,24,24,126,60,24,0,0,0,0
  174.     DATA 0,0,0,0,0,24,12,254,12,24,0,0,0,0,0,0,0,0,0,0,0,48,96,254,96,48,0,0,0,0,0,0
  175.     DATA 0,0,0,0,0,0,192,192,192,254,0,0,0,0,0,0,0,0,0,0,0,36,102,255,102,36,0,0,0,0,0,0
  176.     DATA 0,0,0,0,16,56,56,124,124,254,254,0,0,0,0,0,0,0,0,0,254,254,124,124,56,56,16,0,0,0,0,0
  177.     DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,60,60,60,24,24,24,0,24,24,0,0,0,0
  178.     DATA 0,102,102,102,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,108,254,108,108,108,254,108,108,0,0,0,0
  179.     DATA 24,24,124,198,194,192,124,6,6,134,198,124,24,24,0,0,0,0,0,0,194,198,12,24,48,96,198,134,0,0,0,0
  180.     DATA 0,0,56,108,108,56,118,220,204,204,204,118,0,0,0,0,0,48,48,48,96,0,0,0,0,0,0,0,0,0,0,0
  181.     DATA 0,0,12,24,48,48,48,48,48,48,24,12,0,0,0,0,0,0,48,24,12,12,12,12,12,12,24,48,0,0,0,0
  182.     DATA 0,0,0,0,0,102,60,255,60,102,0,0,0,0,0,0,0,0,0,0,0,24,24,126,24,24,0,0,0,0,0,0
  183.     DATA 0,0,0,0,0,0,0,0,0,24,24,24,48,0,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0
  184.     DATA 0,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0,0,0,0,0,2,6,12,24,48,96,192,128,0,0,0,0
  185.     DATA 0,0,60,102,195,195,219,219,195,195,102,60,0,0,0,0,0,0,24,56,120,24,24,24,24,24,24,126,0,0,0,0
  186.     DATA 0,0,124,198,6,12,24,48,96,192,198,254,0,0,0,0,0,0,124,198,6,6,60,6,6,6,198,124,0,0,0,0
  187.     DATA 0,0,12,28,60,108,204,254,12,12,12,30,0,0,0,0,0,0,254,192,192,192,252,6,6,6,198,124,0,0,0,0
  188.     DATA 0,0,56,96,192,192,252,198,198,198,198,124,0,0,0,0,0,0,254,198,6,6,12,24,48,48,48,48,0,0,0,0
  189.     DATA 0,0,124,198,198,198,124,198,198,198,198,124,0,0,0,0,0,0,124,198,198,198,126,6,6,6,12,120,0,0,0,0
  190.     DATA 0,0,0,0,24,24,0,0,0,24,24,0,0,0,0,0,0,0,0,0,24,24,0,0,0,24,24,48,0,0,0,0
  191.     DATA 0,0,0,6,12,24,48,96,48,24,12,6,0,0,0,0,0,0,0,0,0,126,0,0,126,0,0,0,0,0,0,0
  192.     DATA 0,0,0,96,48,24,12,6,12,24,48,96,0,0,0,0,0,0,124,198,198,12,24,24,24,0,24,24,0,0,0,0
  193.     DATA 0,0,0,124,198,198,222,222,222,220,192,124,0,0,0,0,0,0,16,56,108,198,198,254,198,198,198,198,0,0,0,0
  194.     DATA 0,0,252,102,102,102,124,102,102,102,102,252,0,0,0,0,0,0,60,102,194,192,192,192,192,194,102,60,0,0,0,0
  195.     DATA 0,0,248,108,102,102,102,102,102,102,108,248,0,0,0,0,0,0,254,102,98,104,120,104,96,98,102,254,0,0,0,0
  196.     DATA 0,0,254,102,98,104,120,104,96,96,96,240,0,0,0,0,0,0,60,102,194,192,192,222,198,198,102,58,0,0,0,0
  197.     DATA 0,0,198,198,198,198,254,198,198,198,198,198,0,0,0,0,0,0,60,24,24,24,24,24,24,24,24,60,0,0,0,0
  198.     DATA 0,0,30,12,12,12,12,12,204,204,204,120,0,0,0,0,0,0,230,102,102,108,120,120,108,102,102,230,0,0,0,0
  199.     DATA 0,0,240,96,96,96,96,96,96,98,102,254,0,0,0,0,0,0,195,231,255,255,219,195,195,195,195,195,0,0,0,0
  200.     DATA 0,0,198,230,246,254,222,206,198,198,198,198,0,0,0,0,0,0,124,198,198,198,198,198,198,198,198,124,0,0,0,0
  201.     DATA 0,0,252,102,102,102,124,96,96,96,96,240,0,0,0,0,0,0,124,198,198,198,198,198,198,214,222,124,12,14,0,0
  202.     DATA 0,0,252,102,102,102,124,108,102,102,102,230,0,0,0,0,0,0,124,198,198,96,56,12,6,198,198,124,0,0,0,0
  203.     DATA 0,0,255,219,153,24,24,24,24,24,24,60,0,0,0,0,0,0,198,198,198,198,198,198,198,198,198,124,0,0,0,0
  204.     DATA 0,0,195,195,195,195,195,195,195,102,60,24,0,0,0,0,0,0,195,195,195,195,195,219,219,255,102,102,0,0,0,0
  205.     DATA 0,0,195,195,102,60,24,24,60,102,195,195,0,0,0,0,0,0,195,195,195,102,60,24,24,24,24,60,0,0,0,0
  206.     DATA 0,0,255,195,134,12,24,48,96,193,195,255,0,0,0,0,0,0,60,48,48,48,48,48,48,48,48,60,0,0,0,0
  207.     DATA 0,0,0,128,192,224,112,56,28,14,6,2,0,0,0,0,0,0,60,12,12,12,12,12,12,12,12,60,0,0,0,0
  208.     DATA 16,56,108,198,0,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
  209.     DATA 48,48,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,12,124,204,204,204,118,0,0,0,0
  210.     DATA 0,0,224,96,96,120,108,102,102,102,102,124,0,0,0,0,0,0,0,0,0,124,198,192,192,192,198,124,0,0,0,0
  211.     DATA 0,0,28,12,12,60,108,204,204,204,204,118,0,0,0,0,0,0,0,0,0,124,198,254,192,192,198,124,0,0,0,0
  212.     DATA 0,0,56,108,100,96,240,96,96,96,96,240,0,0,0,0,0,0,0,0,0,118,204,204,204,204,204,124,12,204,120,0
  213.     DATA 0,0,224,96,96,108,118,102,102,102,102,230,0,0,0,0,0,0,24,24,0,56,24,24,24,24,24,60,0,0,0,0
  214.     DATA 0,0,6,6,0,14,6,6,6,6,6,6,102,102,60,0,0,0,224,96,96,102,108,120,120,108,102,230,0,0,0,0
  215.     DATA 0,0,56,24,24,24,24,24,24,24,24,60,0,0,0,0,0,0,0,0,0,230,255,219,219,219,219,219,0,0,0,0
  216.     DATA 0,0,0,0,0,220,102,102,102,102,102,102,0,0,0,0,0,0,0,0,0,124,198,198,198,198,198,124,0,0,0,0
  217.     DATA 0,0,0,0,0,220,102,102,102,102,102,124,96,96,240,0,0,0,0,0,0,118,204,204,204,204,204,124,12,12,30,0
  218.     DATA 0,0,0,0,0,220,118,102,96,96,96,240,0,0,0,0,0,0,0,0,0,124,198,96,56,12,198,124,0,0,0,0
  219.     DATA 0,0,16,48,48,252,48,48,48,48,54,28,0,0,0,0,0,0,0,0,0,204,204,204,204,204,204,118,0,0,0,0
  220.     DATA 0,0,0,0,0,195,195,195,195,102,60,24,0,0,0,0,0,0,0,0,0,195,195,195,219,219,255,102,0,0,0,0
  221.     DATA 0,0,0,0,0,195,102,60,24,60,102,195,0,0,0,0,0,0,0,0,0,198,198,198,198,198,198,126,6,12,248,0
  222.     DATA 0,0,0,0,0,254,204,24,48,96,198,254,0,0,0,0,0,0,14,24,24,24,112,24,24,24,24,14,0,0,0,0
  223.     DATA 0,0,24,24,24,24,0,24,24,24,24,24,0,0,0,0,0,0,112,24,24,24,14,24,24,24,24,112,0,0,0,0
  224.     DATA 0,0,118,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,56,108,198,198,198,254,0,0,0,0,0
  225.     DATA 0,0,60,102,194,192,192,192,194,102,60,12,6,124,0,0,0,0,204,0,0,204,204,204,204,204,204,118,0,0,0,0
  226.     DATA 0,12,24,48,0,124,198,254,192,192,198,124,0,0,0,0,0,16,56,108,0,120,12,124,204,204,204,118,0,0,0,0
  227.     DATA 0,0,204,0,0,120,12,124,204,204,204,118,0,0,0,0,0,96,48,24,0,120,12,124,204,204,204,118,0,0,0,0
  228.     DATA 0,56,108,56,0,120,12,124,204,204,204,118,0,0,0,0,0,0,0,0,60,102,96,96,102,60,12,6,60,0,0,0
  229.     DATA 0,16,56,108,0,124,198,254,192,192,198,124,0,0,0,0,0,0,198,0,0,124,198,254,192,192,198,124,0,0,0,0
  230.     DATA 0,96,48,24,0,124,198,254,192,192,198,124,0,0,0,0,0,0,102,0,0,56,24,24,24,24,24,60,0,0,0,0
  231.     DATA 0,24,60,102,0,56,24,24,24,24,24,60,0,0,0,0,0,96,48,24,0,56,24,24,24,24,24,60,0,0,0,0
  232.     DATA 0,198,0,16,56,108,198,198,254,198,198,198,0,0,0,0,56,108,56,0,56,108,198,198,254,198,198,198,0,0,0,0
  233.     DATA 24,48,96,0,254,102,96,124,96,96,102,254,0,0,0,0,0,0,0,0,0,110,59,27,126,216,220,119,0,0,0,0
  234.     DATA 0,0,62,108,204,204,254,204,204,204,204,206,0,0,0,0,0,16,56,108,0,124,198,198,198,198,198,124,0,0,0,0
  235.     DATA 0,0,198,0,0,124,198,198,198,198,198,124,0,0,0,0,0,96,48,24,0,124,198,198,198,198,198,124,0,0,0,0
  236.     DATA 0,48,120,204,0,204,204,204,204,204,204,118,0,0,0,0,0,96,48,24,0,204,204,204,204,204,204,118,0,0,0,0
  237.     DATA 0,0,198,0,0,198,198,198,198,198,198,126,6,12,120,0,0,198,0,124,198,198,198,198,198,198,198,124,0,0,0,0
  238.     DATA 0,198,0,198,198,198,198,198,198,198,198,124,0,0,0,0,0,24,24,126,195,192,192,192,195,126,24,24,0,0,0,0
  239.     DATA 0,56,108,100,96,240,96,96,96,96,230,252,0,0,0,0,0,0,195,102,60,24,255,24,255,24,24,24,0,0,0,0
  240.     DATA 0,252,102,102,124,98,102,111,102,102,102,243,0,0,0,0,0,14,27,24,24,24,126,24,24,24,24,24,216,112,0,0
  241.     DATA 0,24,48,96,0,120,12,124,204,204,204,118,0,0,0,0,0,12,24,48,0,56,24,24,24,24,24,60,0,0,0,0
  242.     DATA 0,24,48,96,0,124,198,198,198,198,198,124,0,0,0,0,0,24,48,96,0,204,204,204,204,204,204,118,0,0,0,0
  243.     DATA 0,0,118,220,0,220,102,102,102,102,102,102,0,0,0,0,118,220,0,198,230,246,254,222,206,198,198,198,0,0,0,0
  244.     DATA 0,60,108,108,62,0,126,0,0,0,0,0,0,0,0,0,0,56,108,108,56,0,124,0,0,0,0,0,0,0,0,0
  245.     DATA 0,0,48,48,0,48,48,96,192,198,198,124,0,0,0,0,0,0,0,0,0,0,254,192,192,192,192,0,0,0,0,0
  246.     DATA 0,0,0,0,0,0,254,6,6,6,6,0,0,0,0,0,0,192,192,194,198,204,24,48,96,206,155,6,12,31,0,0
  247.     DATA 0,192,192,194,198,204,24,48,102,206,150,62,6,6,0,0,0,0,24,24,0,24,24,24,60,60,60,24,0,0,0,0
  248.     DATA 0,0,0,0,0,54,108,216,108,54,0,0,0,0,0,0,0,0,0,0,0,216,108,54,108,216,0,0,0,0,0,0
  249.     DATA 17,68,17,68,17,68,17,68,17,68,17,68,17,68,17,68,85,170,85,170,85,170,85,170,85,170,85,170,85,170,85,170
  250.     DATA 221,119,221,119,221,119,221,119,221,119,221,119,221,119,221,119,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24
  251.     DATA 24,24,24,24,24,24,24,248,24,24,24,24,24,24,24,24,24,24,24,24,24,248,24,248,24,24,24,24,24,24,24,24
  252.     DATA 54,54,54,54,54,54,54,246,54,54,54,54,54,54,54,54,0,0,0,0,0,0,0,254,54,54,54,54,54,54,54,54
  253.     DATA 0,0,0,0,0,248,24,248,24,24,24,24,24,24,24,24,54,54,54,54,54,246,6,246,54,54,54,54,54,54,54,54
  254.     DATA 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,0,0,0,0,0,254,6,246,54,54,54,54,54,54,54,54
  255.     DATA 54,54,54,54,54,246,6,254,0,0,0,0,0,0,0,0,54,54,54,54,54,54,54,254,0,0,0,0,0,0,0,0
  256.     DATA 24,24,24,24,24,248,24,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,24,24,24,24,24,24,24,24
  257.     DATA 24,24,24,24,24,24,24,31,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,255,0,0,0,0,0,0,0,0
  258.     DATA 0,0,0,0,0,0,0,255,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,31,24,24,24,24,24,24,24,24
  259.     DATA 0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,255,24,24,24,24,24,24,24,24
  260.     DATA 24,24,24,24,24,31,24,31,24,24,24,24,24,24,24,24,54,54,54,54,54,54,54,55,54,54,54,54,54,54,54,54
  261.     DATA 54,54,54,54,54,55,48,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,48,55,54,54,54,54,54,54,54,54
  262.     DATA 54,54,54,54,54,247,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,247,54,54,54,54,54,54,54,54
  263.     DATA 54,54,54,54,54,55,48,55,54,54,54,54,54,54,54,54,0,0,0,0,0,255,0,255,0,0,0,0,0,0,0,0
  264.     DATA 54,54,54,54,54,247,0,247,54,54,54,54,54,54,54,54,24,24,24,24,24,255,0,255,0,0,0,0,0,0,0,0
  265.     DATA 54,54,54,54,54,54,54,255,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,255,24,24,24,24,24,24,24,24
  266.     DATA 0,0,0,0,0,0,0,255,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,63,0,0,0,0,0,0,0,0
  267.     DATA 24,24,24,24,24,31,24,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,24,31,24,24,24,24,24,24,24,24
  268.     DATA 0,0,0,0,0,0,0,63,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,255,54,54,54,54,54,54,54,54
  269.     DATA 24,24,24,24,24,255,24,255,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,248,0,0,0,0,0,0,0,0
  270.     DATA 0,0,0,0,0,0,0,31,24,24,24,24,24,24,24,24,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  271.     DATA 0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240
  272.     DATA 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0
  273.     DATA 0,0,0,0,0,118,220,216,216,216,220,118,0,0,0,0,0,0,120,204,204,204,216,204,198,198,198,204,0,0,0,0
  274.     DATA 0,0,254,198,198,192,192,192,192,192,192,192,0,0,0,0,0,0,0,0,254,108,108,108,108,108,108,108,0,0,0,0
  275.     DATA 0,0,0,254,198,96,48,24,48,96,198,254,0,0,0,0,0,0,0,0,0,126,216,216,216,216,216,112,0,0,0,0
  276.     DATA 0,0,0,0,102,102,102,102,102,124,96,96,192,0,0,0,0,0,0,0,118,220,24,24,24,24,24,24,0,0,0,0
  277.     DATA 0,0,0,126,24,60,102,102,102,60,24,126,0,0,0,0,0,0,0,56,108,198,198,254,198,198,108,56,0,0,0,0
  278.     DATA 0,0,56,108,198,198,198,108,108,108,108,238,0,0,0,0,0,0,30,48,24,12,62,102,102,102,102,60,0,0,0,0
  279.     DATA 0,0,0,0,0,126,219,219,219,126,0,0,0,0,0,0,0,0,0,3,6,126,219,219,243,126,96,192,0,0,0,0
  280.     DATA 0,0,28,48,96,96,124,96,96,96,48,28,0,0,0,0,0,0,0,124,198,198,198,198,198,198,198,198,0,0,0,0
  281.     DATA 0,0,0,0,254,0,0,254,0,0,254,0,0,0,0,0,0,0,0,0,24,24,126,24,24,0,0,255,0,0,0,0
  282.     DATA 0,0,0,48,24,12,6,12,24,48,0,126,0,0,0,0,0,0,0,12,24,48,96,48,24,12,0,126,0,0,0,0
  283.     DATA 0,0,14,27,27,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,216,216,216,112,0,0,0,0
  284.     DATA 0,0,0,0,24,24,0,126,0,24,24,0,0,0,0,0,0,0,0,0,0,118,220,0,118,220,0,0,0,0,0,0
  285.     DATA 0,56,108,108,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0,0,0,0
  286.     DATA 0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,15,12,12,12,12,12,236,108,108,60,28,0,0,0,0
  287.     DATA 0,216,108,108,108,108,108,0,0,0,0,0,0,0,0,0,0,112,216,48,96,200,248,0,0,0,0,0,0,0,0,0
  288.     DATA 0,0,0,0,124,124,124,124,124,124,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  289.  
  290. FUNCTION changePlasma~& ()
  291.     pN = pN + .5 'dim shared cN as _Integer64, pR as integer, pG as integer, pB as integer
  292.     changePlasma~& = _RGB(r1 * (32 + 32 * SIN(pR * pN)), r2 * (32 + 32 * SIN(pG * pN)), r3 * (32 + 32 * SIN(pB * pN)))
  293.  
  294. SUB resetPlasma ()
  295.     IF RND < .5 THEN r1 = 0 ELSE r1 = 1
  296.     IF RND < .5 THEN r2 = 0 ELSE r2 = 1
  297.     IF RND < .5 THEN r3 = 0 ELSE r3 = 1
  298.     IF r1 = 0 AND r2 = 0 AND r3 = 0 THEN r1 = 1
  299.     pR = RND ^ 2: pG = RND ^ 2: pB = RND ^ 2: pN = 1
  300.  

Thanks to read and try
Programming isn't difficult, only it's  consuming time and coffee

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
    • View Profile
Re: Another LED Scroller
« Reply #14 on: October 27, 2019, 11:11:33 pm »
Looks great!