From 91500e12961a8cd7410c5be15ffbd8eba05feae1 Mon Sep 17 00:00:00 2001 From: Sebastian Leonhardt Date: Sat, 28 Jul 2018 01:00:44 +0200 Subject: pacbox: fix screen and buttons for Creative Zen * rotate screen counterclockwise * rotate directional buttons Change-Id: Icbdf26fe1e14638eb8b0746a9eea99e0236ac6b1 --- apps/plugins/pacbox/pacbox.h | 15 +++++++++++---- apps/plugins/pacbox/pacbox_lcd.c | 10 ++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) (limited to 'apps/plugins') diff --git a/apps/plugins/pacbox/pacbox.h b/apps/plugins/pacbox/pacbox.h index 5eb9103d90..3461bd62c7 100644 --- a/apps/plugins/pacbox/pacbox.h +++ b/apps/plugins/pacbox/pacbox.h @@ -340,10 +340,10 @@ #define PACMAN_COIN BUTTON_PLAY #elif CONFIG_KEYPAD == CREATIVE_ZEN_PAD -#define PACMAN_UP BUTTON_UP -#define PACMAN_DOWN BUTTON_DOWN -#define PACMAN_LEFT BUTTON_LEFT -#define PACMAN_RIGHT BUTTON_RIGHT +#define PACMAN_UP BUTTON_LEFT +#define PACMAN_DOWN BUTTON_RIGHT +#define PACMAN_LEFT BUTTON_DOWN +#define PACMAN_RIGHT BUTTON_UP #define PACMAN_MENU BUTTON_MENU #define PACMAN_1UP BUTTON_SELECT #define PACMAN_COIN BUTTON_PLAYPAUSE @@ -406,10 +406,17 @@ #define YOFS ((LCD_HEIGHT-288)/2) #elif (LCD_WIDTH >= 288) && (LCD_HEIGHT >= 224) +#if defined(CREATIVE_ZEN) +#define LCD_SCALE 100 +#define LCD_ROTATE 2 +#define XOFS ((LCD_WIDTH-288)/2) +#define YOFS ((LCD_HEIGHT-224)/2) +#else #define LCD_SCALE 100 #define LCD_ROTATE 1 #define XOFS ((LCD_WIDTH-288)/2) #define YOFS ((LCD_HEIGHT-224)/2) +#endif #elif (LCD_WIDTH >= 168) && (LCD_HEIGHT >= 216) #define LCD_SCALE 75 diff --git a/apps/plugins/pacbox/pacbox_lcd.c b/apps/plugins/pacbox/pacbox_lcd.c index bf4aa9f028..172faf3f84 100644 --- a/apps/plugins/pacbox/pacbox_lcd.c +++ b/apps/plugins/pacbox/pacbox_lcd.c @@ -55,6 +55,16 @@ void blit_display(fb_data* lcd_framebuffer, unsigned char* vbuf) dst+=LCD_WIDTH; } } +#elif LCD_SCALE==100 && LCD_ROTATE==2 + /* Native resolution - rotated 270 degrees = 288x224 */ + next_dst=&lcd_framebuffer[(LCD_HEIGHT-YOFS)*LCD_WIDTH+XOFS]; + for( y=0; y=0; x-- ) { + *dst = palette[*(vbuf++)]; + dst-=LCD_WIDTH; + } + } #elif LCD_SCALE==75 && LCD_ROTATE==1 /* 0.75 scaling - display 3 out of 4 pixels - rotated = 216x168 Skipping pixel #2 out of 4 seems to give the most legible display -- cgit v1.2.3