summaryrefslogtreecommitdiffstats
path: root/apps/plugins/lib/xlcd_scroll.c
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2009-11-22 14:48:50 +0000
committerJens Arnold <amiconn@rockbox.org>2009-11-22 14:48:50 +0000
commit728f698fa1d02e990f869da23161f376a63adbbd (patch)
tree6ecea3362a5e593afcfc125d9d51839776e5815e /apps/plugins/lib/xlcd_scroll.c
parent48df607faa2c55c3a7fdca21cfac43d7d59d1805 (diff)
downloadrockbox-728f698fa1d02e990f869da23161f376a63adbbd.tar.gz
rockbox-728f698fa1d02e990f869da23161f376a63adbbd.zip
XLCD lib: * Fix bug (improper fill) in pixel-wise left scrolling on 2bpp horizontally packed LCDs. * Faster pixel-wise upward scrolling on 2bpp vertically packed LCD coldfire targets.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23704 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/lib/xlcd_scroll.c')
-rw-r--r--apps/plugins/lib/xlcd_scroll.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/apps/plugins/lib/xlcd_scroll.c b/apps/plugins/lib/xlcd_scroll.c
index f8eac1d4b9..0d06545c84 100644
--- a/apps/plugins/lib/xlcd_scroll.c
+++ b/apps/plugins/lib/xlcd_scroll.c
@@ -171,7 +171,7 @@ void xlcd_scroll_left(int count)
int bx, y;
unsigned char *addr = rb->lcd_framebuffer + blocklen;
#if LCD_DEPTH == 2
- unsigned fill = 0x55 * (~rb->lcd_get_background() & 3);
+ unsigned fill = (0x55 * (~rb->lcd_get_background() & 3)) << bitcount;
#endif
for (y = 0; y < LCD_HEIGHT; y++)
@@ -479,12 +479,9 @@ void xlcd_scroll_up(int count)
".su_iloop: \n" /* repeat for all rows */
"sub.l %[wide],%%a1\n" /* address -= width */
- "clr.l %%d0 \n"
- "move.b (%%a1),%%d0 \n" /* get data byte */
"lsl.l #8,%%d1 \n" /* old data to 2nd byte */
- "or.l %%d1,%%d0 \n" /* combine old data */
- "clr.l %%d1 \n"
- "move.b %%d0,%%d1 \n" /* keep data for next round */
+ "move.b (%%a1),%%d1 \n" /* combine with new data byte */
+ "move.l %%d1,%%d0 \n" /* keep data for next round */
"lsr.l %[cnt],%%d0 \n" /* shift right */
"move.b %%d0,(%%a1) \n" /* store data */