diff options
Diffstat (limited to 'apps/plugins/rockboy')
-rw-r--r-- | apps/plugins/rockboy/lcd-gb.h | 6 | ||||
-rw-r--r-- | apps/plugins/rockboy/lcd.c | 14 | ||||
-rw-r--r-- | apps/plugins/rockboy/sys_rockbox.c | 9 |
3 files changed, 17 insertions, 12 deletions
diff --git a/apps/plugins/rockboy/lcd-gb.h b/apps/plugins/rockboy/lcd-gb.h index 36b971a88b..239ccbec74 100644 --- a/apps/plugins/rockboy/lcd-gb.h +++ b/apps/plugins/rockboy/lcd-gb.h | |||
@@ -3,6 +3,7 @@ | |||
3 | #ifndef __LCD_GB_H__ | 3 | #ifndef __LCD_GB_H__ |
4 | #define __LCD_GB_H__ | 4 | #define __LCD_GB_H__ |
5 | 5 | ||
6 | #include "lcd.h" | ||
6 | #include "defs.h" | 7 | #include "defs.h" |
7 | 8 | ||
8 | struct vissprite | 9 | struct vissprite |
@@ -23,7 +24,7 @@ struct scan | |||
23 | #elif LCD_DEPTH > 4 | 24 | #elif LCD_DEPTH > 4 |
24 | byte buf[256]; | 25 | byte buf[256]; |
25 | #endif | 26 | #endif |
26 | un16 pal[64]; | 27 | fb_data pal[64]; |
27 | byte pri[256]; | 28 | byte pri[256]; |
28 | struct vissprite vs[16]; | 29 | struct vissprite vs[16]; |
29 | int ns, l, x, y, s, t, u, v, wx, wy, wt, wv; | 30 | int ns, l, x, y, s, t, u, v, wx, wy, wt, wv; |
@@ -61,6 +62,3 @@ void pal_dirty(void) ICODE_ATTR; | |||
61 | void lcd_reset(void); | 62 | void lcd_reset(void); |
62 | 63 | ||
63 | #endif | 64 | #endif |
64 | |||
65 | |||
66 | |||
diff --git a/apps/plugins/rockboy/lcd.c b/apps/plugins/rockboy/lcd.c index 2dc983f812..e8d43f772a 100644 --- a/apps/plugins/rockboy/lcd.c +++ b/apps/plugins/rockboy/lcd.c | |||
@@ -19,7 +19,7 @@ struct scan scan IBSS_ATTR; | |||
19 | #define BG (scan.bg) | 19 | #define BG (scan.bg) |
20 | #define WND (scan.wnd) | 20 | #define WND (scan.wnd) |
21 | 21 | ||
22 | #if LCD_DEPTH ==16 | 22 | #if LCD_DEPTH >= 16 |
23 | #define BUF (scan.buf) | 23 | #define BUF (scan.buf) |
24 | #else | 24 | #else |
25 | #define BUF (scan.buf[scanline_ind]) | 25 | #define BUF (scan.buf[scanline_ind]) |
@@ -1154,6 +1154,7 @@ void set_pal(void) | |||
1154 | static void updatepalette(int i) | 1154 | static void updatepalette(int i) |
1155 | { | 1155 | { |
1156 | int c, r, g, b; | 1156 | int c, r, g, b; |
1157 | fb_data px; | ||
1157 | 1158 | ||
1158 | c = (lcd.pal[i<<1] | ((int)lcd.pal[(i<<1)|1] << 8)) & 0x7FFF; | 1159 | c = (lcd.pal[i<<1] | ((int)lcd.pal[(i<<1)|1] << 8)) & 0x7FFF; |
1159 | r = (c & 0x001F) << 3; | 1160 | r = (c & 0x001F) << 3; |
@@ -1167,18 +1168,16 @@ static void updatepalette(int i) | |||
1167 | g = (g >> fb.cc[1].r) << fb.cc[1].l; | 1168 | g = (g >> fb.cc[1].r) << fb.cc[1].l; |
1168 | b = (b >> fb.cc[2].r) << fb.cc[2].l; | 1169 | b = (b >> fb.cc[2].r) << fb.cc[2].l; |
1169 | 1170 | ||
1170 | #if LCD_PIXELFORMAT == RGB565 | ||
1171 | c = r|g|b; | 1171 | c = r|g|b; |
1172 | #elif LCD_PIXELFORMAT == RGB565SWAPPED | 1172 | |
1173 | c = swap16(r|g|b); | 1173 | px = FB_SCALARPACK_LCD(c); |
1174 | #endif | ||
1175 | 1174 | ||
1176 | /* updatepalette might get called, but the pallete does not necessarily | 1175 | /* updatepalette might get called, but the pallete does not necessarily |
1177 | * need to be updated. | 1176 | * need to be updated. |
1178 | */ | 1177 | */ |
1179 | if(PAL[i]!=c) | 1178 | if(memcmp(&PAL[i], &px, sizeof(fb_data))) |
1180 | { | 1179 | { |
1181 | PAL[i] = c; | 1180 | PAL[i] = px; |
1182 | #if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256) | 1181 | #if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256) |
1183 | rb->lcd_pal256_update_pal(PAL); | 1182 | rb->lcd_pal256_update_pal(PAL); |
1184 | #endif | 1183 | #endif |
@@ -1256,4 +1255,3 @@ void lcd_reset(void) | |||
1256 | lcd_begin(); | 1255 | lcd_begin(); |
1257 | vram_dirty(); | 1256 | vram_dirty(); |
1258 | } | 1257 | } |
1259 | |||
diff --git a/apps/plugins/rockboy/sys_rockbox.c b/apps/plugins/rockboy/sys_rockbox.c index 1bf63b7a74..a758f73da3 100644 --- a/apps/plugins/rockboy/sys_rockbox.c +++ b/apps/plugins/rockboy/sys_rockbox.c | |||
@@ -261,12 +261,21 @@ void vid_init(void) | |||
261 | fb.enabled=1; | 261 | fb.enabled=1; |
262 | 262 | ||
263 | #if defined(HAVE_LCD_COLOR) | 263 | #if defined(HAVE_LCD_COLOR) |
264 | #if LCD_DEPTH == 24 | ||
265 | fb.cc[0].r = 0; /* 8-8 (wasted bits on red) */ | ||
266 | fb.cc[0].l = 16; /* this is the offset to the R bits (24-8) */ | ||
267 | fb.cc[1].r = 0; /* 8-6 (wasted bits on green) */ | ||
268 | fb.cc[1].l = 8; /* This is the offset to the G bits (24-8-8) */ | ||
269 | fb.cc[2].r = 0; /* 8-5 (wasted bits on red) */ | ||
270 | fb.cc[2].l = 0; /* This is the offset to the B bits (24-8-8-8) */ | ||
271 | #else | ||
264 | fb.cc[0].r = 3; /* 8-5 (wasted bits on red) */ | 272 | fb.cc[0].r = 3; /* 8-5 (wasted bits on red) */ |
265 | fb.cc[0].l = 11; /* this is the offset to the R bits (16-5) */ | 273 | fb.cc[0].l = 11; /* this is the offset to the R bits (16-5) */ |
266 | fb.cc[1].r = 2; /* 8-6 (wasted bits on green) */ | 274 | fb.cc[1].r = 2; /* 8-6 (wasted bits on green) */ |
267 | fb.cc[1].l = 5; /* This is the offset to the G bits (16-5-6) */ | 275 | fb.cc[1].l = 5; /* This is the offset to the G bits (16-5-6) */ |
268 | fb.cc[2].r = 3; /* 8-5 (wasted bits on red) */ | 276 | fb.cc[2].r = 3; /* 8-5 (wasted bits on red) */ |
269 | fb.cc[2].l = 0; /* This is the offset to the B bits (16-5-6-5) */ | 277 | fb.cc[2].l = 0; /* This is the offset to the B bits (16-5-6-5) */ |
278 | #endif | ||
270 | #else | 279 | #else |
271 | fb.mode=3; | 280 | fb.mode=3; |
272 | #endif | 281 | #endif |