summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/SOURCES6
-rw-r--r--firmware/drivers/lcd-2bit-horz.c5
-rw-r--r--firmware/drivers/lcd-ipod.c5
-rw-r--r--firmware/export/config-h100.h2
-rw-r--r--firmware/export/config-h120.h2
-rw-r--r--firmware/export/config-ipod3g.h4
-rw-r--r--firmware/export/config-ipod4g.h4
-rw-r--r--firmware/export/config-ipodcolor.h2
-rw-r--r--firmware/export/config-ipodnano.h2
-rw-r--r--firmware/export/config-ipodvideo.h2
-rw-r--r--firmware/export/config.h2
-rw-r--r--firmware/export/lcd.h6
-rw-r--r--uisimulator/sdl/UI-ipod4g.bmpbin0 -> 217614 bytes
-rw-r--r--uisimulator/sdl/lcd-sdl.c4
-rw-r--r--uisimulator/sdl/uisdl.h12
15 files changed, 49 insertions, 9 deletions
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
--- /dev/null
+++ b/uisimulator/sdl/UI-ipod4g.bmp
Binary files 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