FreeCalypso > hg > fc-tourmaline
diff src/cs/drivers/drv_app/r2d/lcds/c139/r2d_task_i.c @ 47:502a0a3f6a49
C139 LCD support reinstated in the new way
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 18 Oct 2020 02:03:10 +0000 |
parents | 4e78acac3d88 |
children | 4221c724c664 |
line wrap: on
line diff
--- a/src/cs/drivers/drv_app/r2d/lcds/c139/r2d_task_i.c Sat Oct 17 22:50:15 2020 +0000 +++ b/src/cs/drivers/drv_app/r2d/lcds/c139/r2d_task_i.c Sun Oct 18 02:03:10 2020 +0000 @@ -39,42 +39,39 @@ { } -static int get_pix_from_sw_fb(UINT32 *fb, UINT16 x, UINT16 y) -{ - UINT32 *p, mask; - UINT16 yword, ybit; - - /* mirroring */ - x = R2D_WIDTH - 1 - x; - y = R2D_HEIGHT - 1 - y; - yword = y >> 5; - ybit = y & 31; - p = fb + x * R2D_MWHEIGHT + yword; - mask = 1 << ybit; - if (*p & mask) - return(1); - else - return(0); -} - void r2d_refresh(void) { - UINT16 x, y; - UINT32 *fb; + UINT16 i, j, k; + UINT32 v; + UINT32 *p; + INT16 y1, y2; - fb = r2d_g_framebuffer->p_memory_words; + p=r2d_g_framebuffer->p_memory_words; + + y1=r2d_update_ul_y; //0 + y2=r2d_update_br_y; //63 + + /* set window area */ + c139_set_lcd_addr_region(0, 95, y1, y2); + + p=p+y1*R2D_MWWIDTH; - /* set the LCD up to refresh the 84x48 area */ - c139_set_lcd_addr_region(6, 89, 8, 55); - /* send the pixels */ - for (y = 0; y < R2D_HEIGHT; y++) { - for (x = 0; x < R2D_WIDTH; x++) { - if (get_pix_from_sw_fb(fb, x, y)) - c139_lcd_send_pix(LCD16_COLOR_BLACK); - else - c139_lcd_send_pix(LCD16_COLOR_WHITE); - } - } + for (i=y1;i<=y2;i++) + { + for (j = 0; j < R2D_MWWIDTH-1; j++) + { + v=*p++; + for (k=0;k<32;k++) + { + if (v&1) + c139_lcd_send_pix(LCD16_COLOR_BLACK); + else + c139_lcd_send_pix(LCD16_COLOR_WHITE); + v=v>>1; + } + } + p++; + } r2d_reinit_update_region(); }