From 8ad2df82754184a8dfe1a6d66248a1dd156286bd Mon Sep 17 00:00:00 2001 From: Dave Chapman Date: Thu, 9 Feb 2006 00:48:53 +0000 Subject: Create an SDL sim for the iPod 4G Grayscale and also create an IPOD_ARCH define for all iPods. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8636 a1c6a512-1295-4272-9138-f99709370657 --- firmware/SOURCES | 6 ++++-- firmware/drivers/lcd-2bit-horz.c | 5 +++++ firmware/drivers/lcd-ipod.c | 5 ----- firmware/export/config-h100.h | 2 ++ firmware/export/config-h120.h | 2 ++ firmware/export/config-ipod3g.h | 4 ++++ firmware/export/config-ipod4g.h | 4 ++++ firmware/export/config-ipodcolor.h | 2 ++ firmware/export/config-ipodnano.h | 2 ++ firmware/export/config-ipodvideo.h | 2 ++ firmware/export/config.h | 2 ++ firmware/export/lcd.h | 6 ++++-- uisimulator/sdl/UI-ipod4g.bmp | Bin 0 -> 217614 bytes uisimulator/sdl/lcd-sdl.c | 4 ++++ uisimulator/sdl/uisdl.h | 12 ++++++++++++ 15 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 uisimulator/sdl/UI-ipod4g.bmp diff --git a/firmware/SOURCES b/firmware/SOURCES index 880d03aadd..b8bf378074 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES @@ -54,10 +54,12 @@ arabjoin.c bidi.c #if LCD_DEPTH == 1 drivers/lcd-recorder.c -#elif CONFIG_LCD==LCD_IPOD2BPP -drivers/lcd-2bit-horz.c #elif LCD_DEPTH == 2 +#if (LCD_PIXELFORMAT == HORIZONTAL_PACKING) +drivers/lcd-2bit-horz.c +#else drivers/lcd-h100.c +#endif #elif LCD_DEPTH == 16 drivers/lcd-16bit.c #endif diff --git a/firmware/drivers/lcd-2bit-horz.c b/firmware/drivers/lcd-2bit-horz.c index de1af90213..c4df5e8abf 100644 --- a/firmware/drivers/lcd-2bit-horz.c +++ b/firmware/drivers/lcd-2bit-horz.c @@ -82,6 +82,11 @@ void lcd_init(void) sizeof(scroll_stack), scroll_name); } +int lcd_default_contrast(void) +{ + return 96; +} + /*** parameter handling ***/ void lcd_set_drawmode(int mode) diff --git a/firmware/drivers/lcd-ipod.c b/firmware/drivers/lcd-ipod.c index b6a764d996..d37981a964 100644 --- a/firmware/drivers/lcd-ipod.c +++ b/firmware/drivers/lcd-ipod.c @@ -100,11 +100,6 @@ static void lcd_cmd_and_data(int cmd, int data_lo, int data_hi) lcd_send_data(data_lo, data_hi); } -int lcd_default_contrast(void) -{ - return 96; -} - /** * * LCD init diff --git a/firmware/export/config-h100.h b/firmware/export/config-h100.h index ea49dd8e2c..b9677b5fb2 100644 --- a/firmware/export/config-h100.h +++ b/firmware/export/config-h100.h @@ -18,6 +18,8 @@ #define LCD_HEIGHT 128 #define LCD_DEPTH 2 +#define LCD_PIXELFORMAT VERTICAL_PACKING + /* remote LCD */ #define LCD_REMOTE_WIDTH 128 #define LCD_REMOTE_HEIGHT 64 diff --git a/firmware/export/config-h120.h b/firmware/export/config-h120.h index fee5f4862c..252d3c1af8 100644 --- a/firmware/export/config-h120.h +++ b/firmware/export/config-h120.h @@ -14,6 +14,8 @@ #define LCD_HEIGHT 128 #define LCD_DEPTH 2 +#define LCD_PIXELFORMAT VERTICAL_PACKING + /* remote LCD */ #define LCD_REMOTE_WIDTH 128 #define LCD_REMOTE_HEIGHT 64 diff --git a/firmware/export/config-ipod3g.h b/firmware/export/config-ipod3g.h index 0da104d38b..9d55b6b3f0 100644 --- a/firmware/export/config-ipod3g.h +++ b/firmware/export/config-ipod3g.h @@ -3,6 +3,8 @@ */ #define APPLE_IPOD3G 1 +#define IPOD_ARCH 1 + /* For Rolo and boot loader */ #define MODEL_NUMBER 7 @@ -17,6 +19,8 @@ #define LCD_HEIGHT 128 #define LCD_DEPTH 2 /* 4 colours - 2bpp */ +#define LCD_PIXELFORMAT HORIZONTAL_PACKING + #define CONFIG_KEYPAD IPOD_3G_PAD /* Define this if you do software codec */ diff --git a/firmware/export/config-ipod4g.h b/firmware/export/config-ipod4g.h index de0388dbb1..7195f207e1 100644 --- a/firmware/export/config-ipod4g.h +++ b/firmware/export/config-ipod4g.h @@ -3,6 +3,8 @@ */ #define APPLE_IPOD4G 1 +#define IPOD_ARCH 1 + /* For Rolo and boot loader */ #define MODEL_NUMBER 8 @@ -17,6 +19,8 @@ #define LCD_HEIGHT 128 #define LCD_DEPTH 2 /* 4 colours - 2bpp */ +#define LCD_PIXELFORMAT HORIZONTAL_PACKING + #define CONFIG_KEYPAD IPOD_4G_PAD /* Define this if you do software codec */ diff --git a/firmware/export/config-ipodcolor.h b/firmware/export/config-ipodcolor.h index b413b8681c..9cbc058d8f 100644 --- a/firmware/export/config-ipodcolor.h +++ b/firmware/export/config-ipodcolor.h @@ -3,6 +3,8 @@ */ #define APPLE_IPODCOLOR 1 +#define IPOD_ARCH 1 + /* For Rolo and boot loader */ #define MODEL_NUMBER 3 diff --git a/firmware/export/config-ipodnano.h b/firmware/export/config-ipodnano.h index 728c83ef9f..1843d1809c 100644 --- a/firmware/export/config-ipodnano.h +++ b/firmware/export/config-ipodnano.h @@ -3,6 +3,8 @@ */ #define APPLE_IPODNANO 1 +#define IPOD_ARCH 1 + /* For Rolo and boot loader */ #define MODEL_NUMBER 4 diff --git a/firmware/export/config-ipodvideo.h b/firmware/export/config-ipodvideo.h index 0e6dc153bb..160a2db383 100644 --- a/firmware/export/config-ipodvideo.h +++ b/firmware/export/config-ipodvideo.h @@ -3,6 +3,8 @@ */ #define APPLE_IPODVIDEO 1 +#define IPOD_ARCH 1 + /* For Rolo and boot loader */ #define MODEL_NUMBER 5 diff --git a/firmware/export/config.h b/firmware/export/config.h index 22352f5e53..b1cca7b288 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h @@ -82,6 +82,8 @@ #define LCD_IFP7XX 10 /* as used by iRiver iFP 7xx/8xx */ /* LCD_PIXELFORMAT */ +#define HORIZONTAL_PACKING 1 +#define VERTICAL_PACKING 2 #define RGB565 565 #define RGB565SWAPPED 3553 diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index bee8d3cd0c..d56f39d09c 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h @@ -192,10 +192,12 @@ typedef void lcd_fastpixelfunc_type(fb_data *address); /* Memory copy of display bitmap */ #if LCD_DEPTH == 1 extern fb_data lcd_framebuffer[LCD_HEIGHT/8][LCD_WIDTH]; -#elif CONFIG_LCD == LCD_IPOD2BPP -extern fb_data lcd_framebuffer[LCD_HEIGHT][LCD_WIDTH/4]; #elif LCD_DEPTH == 2 +#if LCD_PIXELFORMAT == HORIZONTAL_PACKING +extern fb_data lcd_framebuffer[LCD_HEIGHT][LCD_WIDTH/4]; +#else extern fb_data lcd_framebuffer[LCD_HEIGHT/4][LCD_WIDTH]; +#endif #elif LCD_DEPTH == 16 extern fb_data lcd_framebuffer[LCD_HEIGHT][LCD_WIDTH]; #elif LCD_DEPTH == 18 diff --git a/uisimulator/sdl/UI-ipod4g.bmp b/uisimulator/sdl/UI-ipod4g.bmp new file mode 100644 index 0000000000..b24c560d1c Binary files /dev/null and b/uisimulator/sdl/UI-ipod4g.bmp differ diff --git a/uisimulator/sdl/lcd-sdl.c b/uisimulator/sdl/lcd-sdl.c index a90efbd204..80a3c96a87 100644 --- a/uisimulator/sdl/lcd-sdl.c +++ b/uisimulator/sdl/lcd-sdl.c @@ -73,7 +73,11 @@ void lcd_update_rect(int x_start, int y_start, int width, int height) #if LCD_DEPTH == 1 *p = ((lcd_framebuffer[y/8][x] >> (y & 7)) & 1); #elif LCD_DEPTH == 2 +#if LCD_PIXELFORMAT == HORIZONTAL_PACKING + *p = ((lcd_framebuffer[y][x/4] >> (2 * (x & 3))) & 3); +#else *p = ((lcd_framebuffer[y/4][x] >> (2 * (y & 3))) & 3); +#endif #elif LCD_DEPTH == 16 #if LCD_PIXELFORMAT == RGB565SWAPPED unsigned bits = lcd_framebuffer[y][x]; diff --git a/uisimulator/sdl/uisdl.h b/uisimulator/sdl/uisdl.h index dd8e558b66..ddf0a6ff86 100644 --- a/uisimulator/sdl/uisdl.h +++ b/uisimulator/sdl/uisdl.h @@ -109,6 +109,18 @@ #define UI_REMOTE_WIDTH 128 #define UI_REMOTE_HEIGHT 64 +#elif defined(IPOD_4G) +#define UI_TITLE "iPod 4G" +#define UI_WIDTH 196 // width of GUI window +#define UI_HEIGHT 370 // height of GUI window +#define UI_LCD_BGCOLOR 90, 145, 90 // bkgnd color of LCD (no backlight) +#define UI_LCD_BGCOLORLIGHT 173, 216, 230 // bkgnd color of LCD (backlight) +#define UI_LCD_BLACK 0, 0, 0 // black +#define UI_LCD_POSX 19 // x position of lcd +#define UI_LCD_POSY 14 // y position of lcd +#define UI_LCD_WIDTH 160 +#define UI_LCD_HEIGHT 128 + #elif defined(IPOD_COLOR) #define UI_TITLE "iPod Color" #define UI_WIDTH 261 // width of GUI window -- cgit v1.2.3