diff --git a/MCUME_pico/bin/PICOZX/picoo2em.uf2 b/MCUME_pico/bin/PICOZX/picoo2em.uf2 index 48399e1..9d6d1df 100644 Binary files a/MCUME_pico/bin/PICOZX/picoo2em.uf2 and b/MCUME_pico/bin/PICOZX/picoo2em.uf2 differ diff --git a/MCUME_pico/display/pico_dsp.cpp b/MCUME_pico/display/pico_dsp.cpp index c174c03..733b7f2 100755 --- a/MCUME_pico/display/pico_dsp.cpp +++ b/MCUME_pico/display/pico_dsp.cpp @@ -995,16 +995,22 @@ void PICO_DSP::writeLinePal(int width, int height, int y, uint8_t *buf, dsp_pixe } void PICO_DSP::writeScreenPal(int width, int height, int stride, uint8_t *buf, dsp_pixel *palette16) { - uint8_t *buffer=buf; uint8_t *src; int i,j,y=0; + int sy = 0; + int systep=(1<<8); + int h = height; + if (height <= ( (2*fb_height)/3)) { + systep=(systep*height)/fb_height; + h = fb_height; + } if (gfxmode == MODE_TFT_320x240) { if (width*2 <= fb_width) { - for (j=0; j>6]; uint16_t * dst=&block[(y&0x3F)*fb_stride]; - src=buffer; + src=&buf[(sy>>8)*stride]; for (i=0; i>6]; - dst=&block[(y&0x3F)*fb_stride]; - src=buffer; - for (i=0; i>6]; - uint16_t * dst=&block[(y&0x3F)*fb_stride+(fb_width-width)/2]; - src=buffer; + uint16_t * dst=&block[(y&0x3F)*fb_stride+(fb_width-width)/2]; + src=&buf[(sy>>8)*stride]; for (i=0; i>6]; - dst=&block[(y&0x3F)*fb_stride+(fb_width-width)/2]; - src=buffer; - for (i=0; i>8)*stride]; for (i=0; i>8)*stride]; for (i=0; i