Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 02:20 17 Aug 2025 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : framebuffer lcd

     Page 1 of 3    
Author Message
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2600
Posted: 06:34pm 09 Aug 2025
Copy link to clipboard 
Print this post

Hi. please help, using
PicoMite MMBasic RP2350A Edition V6.00.02
ili9341 lcd and tried "lissajours" prog that works vga and hdmi but not lcd, just draws graticule.
I tried FRAMEBUFFER merge F,L,N no luck


'MODE 5
Option ANGLE DEGREES
FRAMEBUFFER CREATE
FRAMEBUFFER LAYER
RX=MM.HRes:RY=MM.VRes:CX=RX\2:CY=RY\2
Scale=0.95: AX=CY*Scale: AY=CY*Scale
a=1: b=0: p=0: f=0: c=0

CLS RGB(BLack)
RBox 0,0,RX,RY
For y=80 To RY Step 80
For x= 8 To RX Step  8
Pixel x,y
Next x:Next y
For x=80 To RX Step 80
For y= 8 To RY Step  8
Pixel x,y
Next y:Next x

For y=0 To RY Step 8
Line CX+1,y,CX-1,y
If Not (y Mod 40) Then Line CX+2,y,CX-2,y
If Not (y Mod 80) Then Line CX+3,y,CX-3,y
Next y
For x=0 To RX Step 8
Line x,CY+1,x,CY-1
If Not (x Mod 40) Then Line x,CY+2,x,CY-2
If Not (x Mod 80) Then Line x,CY+3,x,CY-3
Next x

Triangle CX,0,CX-3,8,CX+3,8,,1
Triangle RX,CY,RX-8,CY-3,RX-8,CY+3,,1
'Print @(CX-14,3) "Y"
'Print @(RX-12,CY-16) "X"

FRAMEBUFFER WRITE F
Do
If p>360 Then p=0: EndIf
If b>6   Then a=a+1: b=0: c=0: EndIf
If a>5   Then a=1:   b=0: c=0: EndIf
If c=50  Then
  f=1
  If a=Fix(b) Then f=0: c=0: EndIf
EndIf
If c=130 Then f=0: c=0: EndIf

CLS 0 : Colour RGB(WHITE),RGB(BLUE)
'Print : Print " A="a: Print " B="b: Print " P="p

    sx= AX * Sin(p) + CX
    sy= AY * Sin(p) + CY

For i= 0 To 360
    x = AX * Sin(a*i + p) + CX
    y = AY * Sin(b*i + p) + CY
    Line sx,sy,x,y
    sx=x: sy=y
Next i

FRAMEBUFFER copy F,L,B
'FRAMEBUFFER merge F,L,N,b

Inc p: Inc c
If  f=0 Then b=b+.02

Loop
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 2668
Posted: 05:19am 10 Aug 2025
Copy link to clipboard 
Print this post

As your program is intended for a RP2350 with 320 x 240 panel and I am using a RP2040 with 480 x 320 panel there isn't enough memory for FRAMEBUFFER LAYER as well as framebuffer “F” so modified it a bit to get it to run. As expected on this setup it is a bit slow but runs ok.
Option ANGLE DEGREES
Dim RX=MM.HRES, RY=MM.VRES, CX=RX\2, CY=RY\2
Dim Scale=0.95, AX=CY*Scale, AY=CY*Scale
Dim a=1, b=0, p=0, f=0, c=0

FRAMEBUFFER CREATE

Do
 FRAMEBUFFER WRITE F
 CLS RGB(BLack)
 RBox 0,0,RX,RY

 For y=80 To RY Step 80
  For x= 8 To RX Step  8
   Pixel x,y
  Next x
 Next y

 For x=80 To RX Step 80
  For y= 8 To RY Step  8
   Pixel x,y
  Next y
 Next x

 For y=0 To RY Step 8
  Line CX+1,y,CX-1,y
  If Not (y Mod 40) Then Line CX+2,y,CX-2,y
  If Not (y Mod 80) Then Line CX+3,y,CX-3,y
 Next y

 For x=0 To RX Step 8
  Line x,CY+1,x,CY-1
  If Not (x Mod 40) Then Line x,CY+2,x,CY-2
  If Not (x Mod 80) Then Line x,CY+3,x,CY-3
 Next x

 Triangle CX,0,CX-3,8,CX+3,8,,1
 Triangle RX,CY,RX-8,CY-3,RX-8,CY+3,,1

 If p>360 Then p=0: EndIf
 If b>6   Then a=a+1: b=0: c=0: EndIf
 If a>5   Then a=1:   b=0: c=0: EndIf

 If c=50  Then
  f=1
  If a=Fix(b) Then f=0: c=0: EndIf
 EndIf

 If c=130 Then f=0: c=0: EndIf

'   Print : Print " A=";a, " B=";b, " P=";p

 sx= AX * Sin(p) + CX
 sy= AY * Sin(p) + CY

 For i= 0 To 360
   x = AX * Sin(a*i + p) + CX
   y = AY * Sin(b*i + p) + CY
   Line sx,sy,x,y
   sx=x: sy=y
 Next i

 FRAMEBUFFER copy F, N

 Inc p: Inc c
 If  f=0 Then b=b+.02

Loop

If this code runs for you you can then try adding FRAMEBUFFER LAYER.
Edited 2025-08-10 17:49 by phil99
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2600
Posted: 04:21pm 10 Aug 2025
Copy link to clipboard 
Print this post

cheers phil99 for the reply.
point is why the code works hdmi and vga but not 320x240 ili9341, read the manual and seems ok.
I did oscilloscope on same lcd with graticule drawn once and scope display on top and then send to the screen, ok.
the idea is draw the graticule once on a layer. I can do without the graticule and just the Lissajous. stan
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 2668
Posted: 03:33am 11 Aug 2025
Copy link to clipboard 
Print this post

Replaced the ILI9488 with a ILI9341, allowing smaller framebuffers so 2 will fit in memory.
Messed about with layers etc till it worked with the graticule. Could not get the [,B] parameter to work properly with most of the Lissajous missing. Maybe that is only for the RP2350?
Anyway this works smoothly without ,B on a RP2040 so may be even better on a RP2350.
Option ANGLE DEGREES
Dim RX=MM.HRES, RY=MM.VRES, CX=RX\2, CY=RY\2
Dim Scale=0.95, AX=CY*Scale, AY=CY*Scale
Dim a=1, b=0, p=0, f=0, c=0

FRAMEBUFFER CREATE

 FRAMEBUFFER LAYER
 CLS 0 'RGB(BLack)
 RBox 0,0,RX,RY

 For y=80 To RY Step 80
  For x= 8 To RX Step  8
   Pixel x,y
  Next x
 Next y

 For x=80 To RX Step 80
  For y= 8 To RY Step  8
   Pixel x,y
  Next y
 Next x

 For y=0 To RY Step 8
  Line CX+1,y,CX-1,y
  If Not (y Mod 40) Then Line CX+2,y,CX-2,y
  If Not (y Mod 80) Then Line CX+3,y,CX-3,y
 Next y

 For x=0 To RX Step 8
  Line x,CY+1,x,CY-1
  If Not (x Mod 40) Then Line x,CY+2,x,CY-2
  If Not (x Mod 80) Then Line x,CY+3,x,CY-3
 Next x

 Triangle CX,0,CX-3,8,CX+3,8,,1
 Triangle RX,CY,RX-8,CY-3,RX-8,CY+3,,1

 FRAMEBUFFER copy N, F

Do
 CLS 0 'RGB(BLack)
 FRAMEBUFFER copy F, L
 If p>360 Then p=0: EndIf
 If b>6   Then a=a+1: b=0: c=0: EndIf
 If a>5   Then a=1:   b=0: c=0: EndIf

 If c=50  Then
  f=1
  If a=Fix(b) Then f=0: c=0: EndIf
 EndIf

 If c=130 Then f=0: c=0: EndIf

'   Print : Print " A=";a, " B=";b, " P=";p

 sx= AX * Sin(p) + CX
 sy= AY * Sin(p) + CY

 For i= 0 To 360
   x = AX * Sin(a*i + p) + CX
   y = AY * Sin(b*i + p) + CY
   Line sx,sy,x,y
   sx=x: sy=y
 Next i

 FRAMEBUFFER WRITE L
 FRAMEBUFFER copy L, N

 Inc p: Inc c
 If  f=0 Then Inc b,0.02

Loop
End


Edit.
I don't fully understand the manual description either, this was done by trial and error.
Your original program with comments to show what I changed to get it working.
Option ANGLE DEGREES
FRAMEBUFFER CREATE
FRAMEBUFFER LAYER
RX=MM.HRES:RY=MM.VRES:CX=RX\2:CY=RY\2
Scale=0.95: AX=CY*Scale: AY=CY*Scale
a=1: b=0: p=0: f=0: c=0

CLS 'RGB(BLack)
RBox 0,0,RX,RY

For y=80 To RY Step 80 : For x= 8 To RX Step  8
  Pixel x,y
Next x:Next y

For x=80 To RX Step 80 : For y= 8 To RY Step  8
  Pixel x,y
Next y:Next x

For y=0 To RY Step 8
 Line CX+1,y,CX-1,y
 If Not (y Mod 40) Then Line CX+2,y,CX-2,y
 If Not (y Mod 80) Then Line CX+3,y,CX-3,y
Next y

For x=0 To RX Step 8
 Line x,CY+1,x,CY-1
 If Not (x Mod 40) Then Line x,CY+2,x,CY-2
 If Not (x Mod 80) Then Line x,CY+3,x,CY-3
Next x

Triangle CX,0,CX-3,8,CX+3,8,,1
Triangle RX,CY,RX-8,CY-3,RX-8,CY+3,,1
'Print @(CX-14,3) "Y"
'Print @(RX-12,CY-16) "X"

'FRAMEBUFFER WRITE F  'changed this
FRAMEBUFFER copy N, F 'to this

Do
 FRAMEBUFFER copy F, L  'added this
 If p>360 Then p=0: EndIf
 If b>6   Then a=a+1: b=0: c=0: EndIf
 If a>5   Then a=1:   b=0: c=0: EndIf
 If c=50  Then
   f=1
   If a=Fix(b) Then f=0: c=0: EndIf
 EndIf
 If c=130 Then f=0: c=0: EndIf

'CLS 0 :  'removed this
 Colour RGB(WHITE),RGB(BLUE)
'Print : Print " A="a: Print " B="b: Print " P="p

 sx= AX * Sin(p) + CX
 sy= AY * Sin(p) + CY

 For i= 0 To 360
  x = AX * Sin(a*i + p) + CX
  y = AY * Sin(b*i + p) + CY
  Line sx,sy,x,y
  sx=x: sy=y
 Next i

 FRAMEBUFFER WRITE L  'added this
 FRAMEBUFFER copy L, N  'changed this
'FRAMEBUFFER merge F,L,N,b

 Inc p: Inc c
 If f=0 Then b=b+.02

Loop
End

Edited 2025-08-11 15:49 by phil99
 
Bleep
Guru

Joined: 09/01/2022
Location: United Kingdom
Posts: 651
Posted: 03:58pm 11 Aug 2025
Copy link to clipboard 
Print this post

Remember that the B option is asynchronous, so if you trigger a background frame buffer copy and then immediately start redrawing the screen, you will get some combination of the original screen you had drawn before doing the copy and parts of any new screen updates you do after doing the background copy. To prove to yourself this is the case, simply do a pause 100 or whatever is necessary to give you the correct screen updates immediately after the background copy is requested, unfortunately this very approximately will use the same amount of time as if you had not used the B option.
The advantage of the B option is that you perform some other calculations immediately after issuing the background copy and save the writing to screen till later, when hopefully the background copy has completed.
Regards Kevin
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2600
Posted: 05:39pm 11 Aug 2025
Copy link to clipboard 
Print this post

well the ili9341 2350 is stuck
the screen says error unknown command
Frame write L
it should be framebuffer write L but the message appears on lcd on powerup.
it crashes mmcc.

Option ANGLE DEGREES
FRAMEBUFFER CREATE
FRAMEBUFFER LAYER
RX=MM.HRes:RY=MM.VRes:CX=RX\2:CY=RY\2
Scale=0.95: AX=CY*Scale: AY=CY*Scale
a=1: b=0: p=0: f=0: c=0

framebuffer write L' added this

CLS RGB(BLack)
RBox 0,0,RX,RY
For y=80 To RY Step 80
For x= 8 To RX Step  8
Pixel x,y
Next x:Next y
For x=80 To RX Step 80
For y= 8 To RY Step  8
Pixel x,y
Next y:Next x

For y=0 To RY Step 8
Line CX+1,y,CX-1,y
If Not (y Mod 40) Then Line CX+2,y,CX-2,y
If Not (y Mod 80) Then Line CX+3,y,CX-3,y
Next y
For x=0 To RX Step 8
Line x,CY+1,x,CY-1
If Not (x Mod 40) Then Line x,CY+2,x,CY-2
If Not (x Mod 80) Then Line x,CY+3,x,CY-3
Next x

Triangle CX,0,CX-3,8,CX+3,8,,1
Triangle RX,CY,RX-8,CY-3,RX-8,CY+3,,1
'Print @(CX-14,3) "Y"
'Print @(RX-12,CY-16) "X"

FRAMEBUFFER WRITE F
Do
If p>360 Then p=0: EndIf
If b>6   Then a=a+1: b=0: c=0: EndIf
If a>5   Then a=1:   b=0: c=0: EndIf
If c=50  Then
  f=1
  If a=Fix(b) Then f=0: c=0: EndIf
EndIf
If c=130 Then f=0: c=0: EndIf

CLS 0 : Colour RGB(WHITE),RGB(BLUE)
'Print : Print " A="a: Print " B="b: Print " P="p

    sx= AX * Sin(p) + CX
    sy= AY * Sin(p) + CY

For i= 0 To 360
    x = AX * Sin(a*i + p) + CX
    y = AY * Sin(b*i + p) + CY
    Line sx,sy,x,y
    sx=x: sy=y
Next i

FRAMEBUFFER copy F,L,N',b
'FRAMEBUFFER merge F,N

Inc p: Inc c
If  f=0 Then b=b+.02

Loop
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 2668
Posted: 11:36pm 11 Aug 2025
Copy link to clipboard 
Print this post

Another working version with comments
Option ANGLE DEGREES
FRAMEBUFFER CREATE
FRAMEBUFFER LAYER
RX=MM.HRES:RY=MM.VRES:CX=RX\2:CY=RY\2
Scale=0.95: AX=CY*Scale: AY=CY*Scale
a=1: b=0: p=0: f=0: c=0

FRAMEBUFFER write L '<===== Write the following to Layer L

CLS '<========= Black is the default transparent colour
Colour RGB(Blue),0 '<========== choose graticule colour
RBox 0,0,RX,RY
For y=80 To RY Step 80
For x= 8 To RX Step  8
Pixel x,y
Next x:Next y
For x=80 To RX Step 80
For y= 8 To RY Step  8
Pixel x,y
Next y:Next x

For y=0 To RY Step 8
Line CX+1,y,CX-1,y
If Not (y Mod 40) Then Line CX+2,y,CX-2,y
If Not (y Mod 80) Then Line CX+3,y,CX-3,y
Next y
For x=0 To RX Step 8
Line x,CY+1,x,CY-1
If Not (x Mod 40) Then Line x,CY+2,x,CY-2
If Not (x Mod 80) Then Line x,CY+3,x,CY-3
Next x

Triangle CX,0,CX-3,8,CX+3,8,,1
Triangle RX,CY,RX-8,CY-3,RX-8,CY+3,,1

FRAMEBUFFER WRITE F '<===== Write the following to Layer F
Do

If p>360 Then p=0: EndIf
If b>6   Then a=a+1: b=0: c=0: EndIf
If a>5   Then a=1:   b=0: c=0: EndIf
If c=50  Then
 f=1
 If a=Fix(b) Then f=0: c=0: EndIf
EndIf
If c=130 Then f=0: c=0: EndIf

CLS RGB(Myrtle) '<= choose Background Colour from the RGB121 palette
'Print : Print " A="a: Print " B="b: Print " P="p

   sx= AX * Sin(p) + CX
   sy= AY * Sin(p) + CY

For i= 0 To 360
   x = AX * Sin(a*i + p) + CX
   y = AY * Sin(b*i + p) + CY
   Line sx,sy,x,y,,RGB(Yellow) '<= choose Foreground Colour for plot
   sx=x: sy=y
Next i

FRAMEBUFFER MERGE '<======== copy both layers to the screen

Inc p: Inc c
If  f=0 Then b=b+.02

Loop


Edited 2025-08-12 12:00 by phil99
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 5138
Posted: 10:40am 12 Aug 2025
Copy link to clipboard 
Print this post

Hi phill,

Thanks for the demo. This is in essence the basic under petscii robots on the game*mite, but neatly commented... Very nice..

Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10350
Posted: 10:54am 12 Aug 2025
Copy link to clipboard 
Print this post

Don't you want the plot on top of the graticule?
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 2668
Posted: 01:19pm 12 Aug 2025
Copy link to clipboard 
Print this post

Ok, reversed the layers.
Option ANGLE DEGREES
FRAMEBUFFER CREATE
FRAMEBUFFER LAYER
RX=MM.HRES:RY=MM.VRES:CX=RX\2:CY=RY\2
Scale=0.95: AX=CY*Scale: AY=CY*Scale
a=1: b=0: p=0: f=0: c=0

FRAMEBUFFER WRITE F '<===== Write the following to Layer F

CLS 0'<========= Black is the default transparent colour
Colour RGB(Blue),0 '<== choose graticule colour from the RGB121 palette
RBox 0,0,RX,RY,10,,RGB(Myrtle) '<=========== choose Background Colour
For y=80 To RY Step 80
For x= 8 To RX Step  8
Pixel x,y
Next x:Next y
For x=80 To RX Step 80
For y= 8 To RY Step  8
Pixel x,y
Next y:Next x

For y=0 To RY Step 8
Line CX+1,y,CX-1,y
If Not (y Mod 40) Then Line CX+2,y,CX-2,y
If Not (y Mod 80) Then Line CX+3,y,CX-3,y
Next y
For x=0 To RX Step 8
Line x,CY+1,x,CY-1
If Not (x Mod 40) Then Line x,CY+2,x,CY-2
If Not (x Mod 80) Then Line x,CY+3,x,CY-3
Next x

Triangle CX,0,CX-3,8,CX+3,8,,1
Triangle RX,CY,RX-8,CY-3,RX-8,CY+3,,1

FRAMEBUFFER WRITE L '<===== Write the following to Layer L
Do

If p>360 Then p=0: EndIf
If b>6   Then a=a+1: b=0: c=0: EndIf
If a>5   Then a=1:   b=0: c=0: EndIf
If c=50  Then
 f=1
 If a=Fix(b) Then f=0: c=0: EndIf
EndIf
If c=130 Then f=0: c=0: EndIf

'Print : Print " A="a: Print " B="b: Print " P="p
CLS 0'<========= Black is the default transparent colour

   sx= AX * Sin(p) + CX
   sy= AY * Sin(p) + CY

For i= 0 To 360
   x = AX * Sin(a*i + p) + CX
   y = AY * Sin(b*i + p) + CY
   Line sx,sy,x,y,,RGB(Yellow) '<= choose Foreground Colour for plot
   sx=x: sy=y
Next i

FRAMEBUFFER MERGE  '<======== copy both layers to the screen

Inc p: Inc c
If  f=0 Then b=b+.02

Loop
End
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3390
Posted: 01:47pm 12 Aug 2025
Copy link to clipboard 
Print this post

With no changes, on an RP2350A with ILI9488 LCD.


PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 5138
Posted: 03:39pm 12 Aug 2025
Copy link to clipboard 
Print this post

Peter,

A real oscilloscope (CRT) has the graticule in front of the phosfor.

Later models wrote the graticule onto the same phosfor, but die to both being the same color you could not tell the difference.

Volhout
PicomiteVGA PETSCII ROBOTS
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2600
Posted: 05:33pm 12 Aug 2025
Copy link to clipboard 
Print this post

original listing looks like this mode 5 hdmi

 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2600
Posted: 08:09pm 12 Aug 2025
Copy link to clipboard 
Print this post

I wrote a simple test prog that draws a box on layer L and circles on frame F and framebuffer merge and works but not framebuffer copy??

cls
FRAMEBUFFER CREATE
FRAMEBUFFER LAYER
framebuffer write L
box 50,50,150,50,4,rgb(blue)

framebuffer write F
do
for n=5 to 60
circle 125,75,n,,,rgb(gold)
'FRAMEBUFFER copy L,F',b
'FRAMEBUFFER copy F,N',b
FRAMEBUFFER merge
pause 20
next n

for n=5 to 60
circle 125,75,n,,,rgb(black)
'FRAMEBUFFER copy L,F',b
'FRAMEBUFFER copy F,N',b
FRAMEBUFFER merge
pause 20
next n
loop

> option list
PicoMite MMBasic RP2350A Edition V6.01.00b2
OPTION SYSTEM SPI GP18,GP19,GP16
OPTION FLASH SIZE 4194304
OPTION COLOURCODE ON
OPTION CPUSPEED (KHz) 378000
OPTION LCDPANEL ILI9341, LANDSCAPE,GP15,GP14,GP13
OPTION LCD BACKLIGHT 0
OPTION TOUCH GP12,GP11
GUI CALIBRATE 0, 3931, 3851, -872, -662
OPTION SDCARD GP22
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2600
Posted: 08:59pm 12 Aug 2025
Copy link to clipboard 
Print this post

Does this work? please see my test prog above

NOT HDMI AND VGA VERSIONS
FRAMEBUFFER COPY
from, to [,b]

Does a highly optimised full screen copy of one framebuffer to another.
"from" and "to" can be N, F, or L where N is the physical display.
You can only copy from N on displays that support BLIT and transparent text.
The firmware will automatically compress or expand the RGB resolution when
copying to and from unmatched framebuffers.
Of course copying from RGB565 to RGB121 loses information but for many
applications (eg, games) 16 colour levels is more than enough.
When copying to an LCD display the optional parameter “b” can be used
(FRAMEBUFFER COPY F/L, N, B). This instructs the firmware to action the
copy using the second CPU in the Raspberry Pi Pico and control returns
immediately to the Basic program
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 2668
Posted: 03:44am 13 Aug 2025
Copy link to clipboard 
Print this post

In this version Copy is almost the same as Merge. However with Copy drawing the black circles overwrites the blue box but if you uncomment FRAMEBUFFER merge and comment the next line the blue box doesn't get overwritten.

It appears Merge writes F first then puts L on top so they have been swapped compared to your original.
CLS
FRAMEBUFFER CREATE
FRAMEBUFFER LAYER

FRAMEBUFFER write F
Box 50,50,150,50,4,RGB(blue),RGB(Black)

FRAMEBUFFER write L
FRAMEBUFFER copy F, L
Do
 For n=5 To 60
  Circle 125,75,n,,,RGB(gold)
  FRAMEBUFFER copy L, N
  Pause 20
 Next n

 For n=5 To 60
  Circle 125,75,n,,,RGB(black)
'   FRAMEBUFFER merge
  FRAMEBUFFER copy L, N

  Pause 20
 Next n

Loop

Edited 2025-08-13 13:52 by phil99
 
mozzie
Senior Member

Joined: 15/06/2020
Location: Australia
Posts: 171
Posted: 05:02am 13 Aug 2025
Copy link to clipboard 
Print this post

G'day,
I think what Stan has encountered is the same problem seen here, I assumed it was my own stupidity so left it go  

Tested on ILI9341 and ILI9488:
FRAMEBUFFER MERGE 0: locks up PicoMite - ctrl c does nothing
FRAMEBUFFER MERGE 0,B: Does not lock up PicoMite - NO output to display

Also tried other combinations, same outcome.
ILI9488 has MISO disconnected.

Option default integer

FRAMEBUFFER create
FRAMEBUFFER layer

FRAMEBUFFER write l
Box 100,50,200,100,4,RGB(blue)

FRAMEBUFFER write f
Box 125,75,150,50,4,RGB(blue)-1

'FRAMEBUFFER copy l,f
'FRAMEBUFFER copy f,l
'FRAMEBUFFER copy l,n
'FRAMEBUFFER copy f,n
FRAMEBUFFER merge 0
'FRAMEBUFFER merge 0,b

Print "Done"

End

> option list
PicoMite MMBasic RP2350A Edition V6.00.03
OPTION SYSTEM SPI GP18,GP19,GP16
OPTION FLASH SIZE 4194304
OPTION COLOURCODE ON
OPTION CPUSPEED (KHz) 150000
OPTION LCDPANEL ILI9488, LANDSCAPE,GP14,GP13,GP12
OPTION TOUCH GP15,GP17
GUI CALIBRATE 0, 4200, 3986, -1202, -827

> option list
PicoMite MMBasic RP2350A Edition V6.00.03
OPTION SYSTEM SPI GP18,GP19,GP16
OPTION FLASH SIZE 4194304
OPTION COLOURCODE ON
OPTION CPUSPEED (KHz) 150000
OPTION LCDPANEL ILI9341, LANDSCAPE,GP14,GP13,GP12
OPTION TOUCH GP15,GP17

Regards,
Lyle.
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 2668
Posted: 06:15am 13 Aug 2025
Copy link to clipboard 
Print this post

FRAMEBUFFER merge 0 works fine on this:-
> option list
PicoMite MMBasic RP2040 Edition V6.00.03
OPTION SYSTEM SPI GP18,GP19,GP20
OPTION FLASH SIZE 16777216
OPTION COLOURCODE ON
OPTION CPUSPEED (KHz) 200000
OPTION DISPLAY 55, 133
OPTION LCDPANEL ILI9341, LANDSCAPE,GP15,GP14,GP13,GP16
>

As do colours 1 to 15.
 
mozzie
Senior Member

Joined: 15/06/2020
Location: Australia
Posts: 171
Posted: 06:30am 13 Aug 2025
Copy link to clipboard 
Print this post

G'day Phil,
Hopefully that means its confined to my / Stans setup or only RP2350 versions.
I don't have a RP2040 with enough memory connected to an LCD to test.

Can anyone else please try on RP2530 and confirm?

Regards,
Lyle.
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 5138
Posted: 06:33am 13 Aug 2025
Copy link to clipboard 
Print this post

mozzie

The "FRAMEBUFFER merge 0" problem with 2350 platforms must be brought to Peter's attention. Maybe make a bug report in the 6.01.00 thread.
I have not run into it yet, but would otherwise very soon (trying to make a game for game*mite).

Volhout
PicomiteVGA PETSCII ROBOTS
 
     Page 1 of 3    
Print this page
The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2025