From 52f4c4c82bb038f3704007016a5df1639c6af443 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Sun, 24 Sep 2006 23:15:37 +0000 Subject: [PATCH] Jewels: Different layouts for horizontal, vertical and square LCDs, used for H10-5GB (square) and Gigabeat (vertical). Idea and H10 graphics by Marianne Arnold. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11040 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/SOURCES | 2 - apps/plugins/bitmaps/native/SOURCES | 4 +- .../bitmaps/native/jewels.128x128x16.bmp | Bin 0 -> 4982 bytes apps/plugins/jewels.c | 114 ++++++++++++++++-- 4 files changed, 105 insertions(+), 15 deletions(-) create mode 100755 apps/plugins/bitmaps/native/jewels.128x128x16.bmp diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES index 83880f5809..a157adb06a 100644 --- a/apps/plugins/SOURCES +++ b/apps/plugins/SOURCES @@ -45,9 +45,7 @@ calculator.c chip8.c demystify.c flipit.c -#ifndef IRIVER_H10_5GB jewels.c -#endif minesweeper.c oscilloscope.c pong.c diff --git a/apps/plugins/bitmaps/native/SOURCES b/apps/plugins/bitmaps/native/SOURCES index a06a287a8e..ad1de51eee 100644 --- a/apps/plugins/bitmaps/native/SOURCES +++ b/apps/plugins/bitmaps/native/SOURCES @@ -54,6 +54,8 @@ chessbox_pieces.64x64x1.bmp jewels.112x64x1.bmp #elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 64) jewels.112x64x1.bmp +#elif (LCD_WIDTH == 128) && (LCD_HEIGHT == 128) +jewels.128x128x16.bmp #elif (LCD_WIDTH == 138) && (LCD_HEIGHT == 110) jewels.138x110x1.bmp #elif (LCD_WIDTH == 160) && (LCD_HEIGHT == 128) && !defined(HAVE_LCD_COLOR) @@ -65,7 +67,7 @@ jewels.160x128x16.bmp #elif (LCD_WIDTH == 220) && (LCD_HEIGHT == 176) jewels.220x176x16.bmp #elif (LCD_WIDTH == 240) && (LCD_HEIGHT == 320) -jewels.220x176x16.bmp +jewels.320x240x16.bmp #elif (LCD_WIDTH == 320) && (LCD_HEIGHT == 240) jewels.320x240x16.bmp #endif diff --git a/apps/plugins/bitmaps/native/jewels.128x128x16.bmp b/apps/plugins/bitmaps/native/jewels.128x128x16.bmp new file mode 100755 index 0000000000000000000000000000000000000000..c22c8d917ecaaba8dd2d9cb50e55df56081905c5 GIT binary patch literal 4982 zcmeH~c~nz(7RPU1^1=&*B`l*IwWl++BQ9fG1$%0XSSUypd!};`VP@LnDVC|DRnHkj zsSb|xbZkKsixk;p6)3U=2w^EpKo+rp5EhXw5Y`eFap{>(C3Ev0FMT1@=^yiFf9Jm6 z@4ox{{Jy{Y?k~Iqm%V{DK(}q!+v8<{*Kxdfuo8QKoj7l8#$0p&J1uB`rg2zyvBAid zVOa#cF1-6}!+Q9NfCK?t=EFI#zM@M~_5WM@ErlI7f&ROPhWc9nNuc!^`?ctX|j{H)Ihca&!6R<@|hLc#c5UtUW(+G z$w5{KnHjv87(rzP+0%_IIW?}wbr_gN$Jta>INt3LC0;|27avbtyhtdj$e{tUzn2_V zA%nT=P;jZO_2}*1-f`!J%CGrRQM}k#UPJ`%>Q$n*N3fLjynXxN4~f^BYxt+OyHd6mVzO0cngWA_f8; z&IZg+ADY+f>1?xYZh*Aw5FViiIV__dFgN|zaW$HxSf(o>TTxbz8QDAV9~nXuM}D~k zq{X-_9Y9Femc*B1jS+o>UC(GO+Z(bvgkPjvMtl!c37CHl;(yWhDVU$fNd~8t_$Jp# z(LFP9uUI^2CcY=J?)Kf&_BWqz4*4|rc~wj7N*J7GNs|JhS+Av}&Pvj0X)*GQ?fuV= z%qRVGCh_c4)G77KU&{>Ge4*K0OY1T#>sywVoh$8zJ~^a`J2Mk|S`!g4vSQVB16C?D z?I*<*-qL>0037T(Na? z4jZSo*iVZra}8Nj@x)=D!63h$po6W4|6FTflVxt+Ze^j8m`{+RY6CXkR6O&c*W`%< zsuKsgKlG`Wtca0F8f>jQZ6yOF)ndRFnu=$S?4J#K|JxwH;Uj-iTCYgAwpQ5LG}~Es zktTy2RzzMTsnNA-9@+oqzWwukYkzxFXr3mth&8diYGRQ@2%A|J&jei)UL?Rg@H&BC z3?|VaJ_q76AU+M^U>}fEiMO{5LWYf3u%8{A;W>UmIOP&MatMz?UQjngPQf`{L9j7<0K7=PEN}@U+~vgU z*@SC8-$N#Fk)jd43c|mM?|oCStBS#~7fHZh4uN+G?<&C?Qh{@x&UWMpoN@%N1$@sE z!bPfQ(K%QE!GpvHw*~G+I*P&R6@2$X*tU3v2x9XqfYSqTRLS?P73?bdk#)}FyA^<= zAzRElGawG>gF|iLU9+f8Z@}Lp2bUWthmS|guDa0UQ#Bnnr18vGTc1*bmjZFVTM_Yg z884(CqUShlKwf89Z-2tW2Un)72sM(?3D42DIuheWf#SHyyMBzNVPh4 ze*S`b*8C5p@LHa^1HQO)jjb;;vgyEIVzc~Z_113DT*`=L0}QmNrB|ZGxOY$Y*<84k zK0$5}eIpjZz^&Vt#SK|Rs^VX4{eqWq4F6+UnldMVlMP?)8>@YGg_4ucEx`@h z`Od(xQs?R*cqD^t_UFGoYnDZc(Y8*s(pM*`yju!=AFv$y(~)~ z9^A^p-*Gi_n#Q@A*15T^`T4sKAGCHUBgzy0f8U#FEgx3EA1%qobn}6BB)deZ7OddYolH3q7Bel~qzwl97>-nVG3ptC1a_81EVA;jrjl z_$VwfF;Oa&78e)GWU`!`oc{iPl}a@_KHAdO+SsJaoz54>goJq9`o@hL$YP(Dmse3y zQC3z~EH5r9men=t-zCUqrDP2a4Rv*Obi zCQw>hido0U$75nl0&LCjE+;={W@cu5e0*|p^4`6B_?!r$Xi16OkY(~78y_7T8$;=q zmX?^97%ViZ>p@l*M+V0krBYc}R~L093Vm$M6bo?g^edK7Kfx|p%Dpw*g*#*H|H3jg K`K1nQ9sUafS{p0? literal 0 HcmV?d00001 diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c index 00f871febf..11a33a4395 100644 --- a/apps/plugins/jewels.c +++ b/apps/plugins/jewels.c @@ -50,8 +50,8 @@ PLUGIN_HEADER #define JEWELS_RIGHT BUTTON_RIGHT #define JEWELS_SELECT BUTTON_SELECT #define JEWELS_CANCEL BUTTON_OFF - #define JEWELS_RC_CANCEL BUTTON_RC_STOP + #elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD) #define JEWELS_SCROLLWHEEL #define JEWELS_UP BUTTON_MENU @@ -98,16 +98,16 @@ PLUGIN_HEADER #error JEWELS: Unsupported keypad #endif -/* use 30x30 tiles (iPod Video) */ -#if (LCD_HEIGHT == 240) && (LCD_WIDTH == 320) +/* use 30x30 tiles (iPod Video, Gigabeat) */ +#if (LCD_HEIGHT == 240) && (LCD_WIDTH == 320) || \ + ((LCD_HEIGHT == 320) && (LCD_WIDTH == 240)) #define TILE_WIDTH 30 #define TILE_HEIGHT 30 #define YOFS 0 #define NUM_SCORES 10 -/* use 22x22 tiles (H300, iPod Color, Gigabeat) */ -#elif ((LCD_HEIGHT == 176) && (LCD_WIDTH == 220)) || \ - ((LCD_HEIGHT == 320) && (LCD_WIDTH == 240)) +/* use 22x22 tiles (H300, iPod Color) */ +#elif ((LCD_HEIGHT == 176) && (LCD_WIDTH == 220)) #define TILE_WIDTH 22 #define TILE_HEIGHT 22 #define YOFS 0 @@ -127,6 +127,13 @@ PLUGIN_HEADER #define YOFS 0 #define NUM_SCORES 10 +/* use 14x14 tiles (H10 5/6 GB) */ +#elif (LCD_HEIGHT == 128) && (LCD_WIDTH == 128) +#define TILE_WIDTH 14 +#define TILE_HEIGHT 14 +#define YOFS 0 +#define NUM_SCORES 10 + /* use 13x13 tiles (iPod Mini) */ #elif (LCD_HEIGHT == 110) && (LCD_WIDTH == 138) #define TILE_WIDTH 13 @@ -314,18 +321,13 @@ static void jewels_drawboard(struct game_context* bj) { int w, h; unsigned int tempscore; char *title = "Level"; - char str[6]; + char str[10]; tempscore = (bj->score>LEVEL_PTS ? LEVEL_PTS : bj->score); /* clear screen */ rb->lcd_clear_display(); - /* draw separator lines */ - rb->lcd_vline(BJ_WIDTH*TILE_WIDTH, 0, LCD_HEIGHT); - rb->lcd_hline(BJ_WIDTH*TILE_WIDTH, LCD_WIDTH, 18); - rb->lcd_hline(BJ_WIDTH*TILE_WIDTH, LCD_WIDTH, LCD_HEIGHT-10); - /* dispay playing board */ for(i=0; i LCD_HEIGHT /* horizontal layout */ + + /* draw separator lines */ + jewels_setcolors(); + rb->lcd_vline(BJ_WIDTH*TILE_WIDTH, 0, LCD_HEIGHT-1); + rb->lcd_hline(BJ_WIDTH*TILE_WIDTH, LCD_WIDTH-1, 18); + rb->lcd_hline(BJ_WIDTH*TILE_WIDTH, LCD_WIDTH-1, LCD_HEIGHT-10); + /* draw progress bar */ #ifdef HAVE_LCD_COLOR rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63)); @@ -383,6 +393,86 @@ static void jewels_drawboard(struct game_context* bj) { rb->lcd_putsxy(LCD_WIDTH-(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-w/2, LCD_HEIGHT-8, str); +#elif LCD_WIDTH < LCD_HEIGHT /* vertical layout */ + + /* draw separator lines */ + jewels_setcolors(); + rb->lcd_hline(0, LCD_WIDTH-1, 8*TILE_HEIGHT+YOFS); + rb->lcd_hline(0, LCD_WIDTH-1, LCD_HEIGHT-14); + rb->lcd_vline(LCD_WIDTH/2, LCD_HEIGHT-14, LCD_HEIGHT-1); + + /* draw progress bar */ +#ifdef HAVE_LCD_COLOR + rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63)); +#endif + rb->lcd_fillrect(0, (8*TILE_HEIGHT+YOFS) + +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4, + LCD_WIDTH*tempscore/LEVEL_PTS, + (LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/2); +#ifdef HAVE_LCD_COLOR + rb->lcd_set_foreground(LCD_RGBPACK(83, 44, 44)); + rb->lcd_drawrect(1, (8*TILE_HEIGHT+YOFS) + +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4+1, + LCD_WIDTH*tempscore/LEVEL_PTS-1, + (LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/2-2); + jewels_setcolors(); + rb->lcd_drawrect(0, (8*TILE_HEIGHT+YOFS) + +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4, + LCD_WIDTH*tempscore/LEVEL_PTS+1, + (LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/2); +#endif + + /* print text */ + rb->snprintf(str, 10, "%s %d", title, bj->level); + rb->lcd_putsxy(1, LCD_HEIGHT-10, str); + + rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); + rb->lcd_getstringsize(str, &w, &h); + rb->lcd_putsxy((LCD_WIDTH-2)-w, LCD_HEIGHT-10, str); + +#else /* square layout */ + + /* draw separator lines */ + jewels_setcolors(); + rb->lcd_hline(0, LCD_WIDTH-1, 8*TILE_HEIGHT+YOFS); + rb->lcd_vline(BJ_WIDTH*TILE_WIDTH, 0, 8*TILE_HEIGHT+YOFS); + rb->lcd_vline(LCD_WIDTH/2, 8*TILE_HEIGHT+YOFS, LCD_HEIGHT-1); + + /* draw progress bar */ +#ifdef HAVE_LCD_COLOR + rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63)); +#endif + rb->lcd_fillrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, + (8*TILE_HEIGHT+YOFS)-(8*TILE_HEIGHT+YOFS) + *tempscore/LEVEL_PTS, + (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, + (8*TILE_HEIGHT+YOFS)*tempscore/LEVEL_PTS); +#ifdef HAVE_LCD_COLOR + rb->lcd_set_foreground(LCD_RGBPACK(83, 44, 44)); + rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4+1, + (8*TILE_HEIGHT+YOFS)-(8*TILE_HEIGHT+YOFS) + *tempscore/LEVEL_PTS+1, + (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-2, + (8*TILE_HEIGHT+YOFS)*tempscore/LEVEL_PTS-1); + jewels_setcolors(); + rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, + (8*TILE_HEIGHT+YOFS)-(8*TILE_HEIGHT+YOFS) + *tempscore/LEVEL_PTS, + (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, + (8*TILE_HEIGHT+YOFS)*tempscore/LEVEL_PTS+1); +#endif + + /* print text */ + rb->snprintf(str, 10, "%s %d", title, bj->level); + rb->lcd_putsxy(1, LCD_HEIGHT-(LCD_HEIGHT-(8*TILE_HEIGHT+YOFS))/2-3, str); + + rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); + rb->lcd_getstringsize(str, &w, &h); + rb->lcd_putsxy((LCD_WIDTH-2)-w, + LCD_HEIGHT-(LCD_HEIGHT-(8*TILE_HEIGHT+YOFS))/2-3, str); + +#endif /* layout */ + rb->lcd_update(); }