From 5b2a4fdbf6c9dd9e2d92ea75521c48c511889351 Mon Sep 17 00:00:00 2001 From: dave Date: Fri, 27 Jan 2006 10:02:13 +0000 Subject: [PATCH] Portability enhancements - make the menu bitmap positions #defines, introduce a game loop timer (to fix the speed on all targets) and fix the menu on targets with 320x240 LCDs. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8464 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/bitmaps/native/SOURCES | 6 +- .../native/brickmania_menu_bg.320x240x16.bmp | Bin 0 -> 230454 bytes apps/plugins/brickmania.c | 154 +++++++++++++-------- 3 files changed, 101 insertions(+), 59 deletions(-) create mode 100644 apps/plugins/bitmaps/native/brickmania_menu_bg.320x240x16.bmp diff --git a/apps/plugins/bitmaps/native/SOURCES b/apps/plugins/bitmaps/native/SOURCES index ecd8334f3..5b96f3032 100644 --- a/apps/plugins/bitmaps/native/SOURCES +++ b/apps/plugins/bitmaps/native/SOURCES @@ -18,11 +18,15 @@ sudoku_inverse.220x176x16.bmp /* Brickmania */ #if (LCD_WIDTH >= 220) && (LCD_HEIGHT >= 176) && (LCD_DEPTH == 16) +#if (LCD_WIDTH == 320) +brickmania_menu_bg.320x240x16.bmp +#else +brickmania_menu_bg.220x176x16.bmp +#endif brickmania_ball.220x176x16.bmp brickmania_bricks.220x176x16.bmp brickmania_gameover.220x176x16.bmp brickmania_help.220x176x16.bmp -brickmania_menu_bg.220x176x16.bmp brickmania_no_resume.220x176x16.bmp brickmania_pads.220x176x16.bmp brickmania_powerups.220x176x16.bmp diff --git a/apps/plugins/bitmaps/native/brickmania_menu_bg.320x240x16.bmp b/apps/plugins/bitmaps/native/brickmania_menu_bg.320x240x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..de6cc658b981a8d03cfe67394e7d5fe65a9e7e30 GIT binary patch literal 230454 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 G@c#f}>uS~j literal 0 HcwPel00001 diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c index 56b29d587..78d18a38d 100644 --- a/apps/plugins/brickmania.c +++ b/apps/plugins/brickmania.c @@ -22,6 +22,12 @@ PLUGIN_HEADER +/* The time (in ms) for one iteration through the game loop - decrease this + to speed up the game - note that current_tick is (currently) only accurate + to 10ms. +*/ +#define CYCLETIME 30 + #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) #define QUIT BUTTON_OFF @@ -31,6 +37,10 @@ PLUGIN_HEADER #define UP BUTTON_UP #define DOWN BUTTON_DOWN +/* H100 and H300 don't have scroll events */ +#define SCROLL_FWD(x) (0) +#define SCROLL_BACK(x) (0) + #elif (CONFIG_KEYPAD == IPOD_4G_PAD) #define QUIT BUTTON_MENU @@ -40,6 +50,9 @@ PLUGIN_HEADER #define UP BUTTON_SCROLL_BACK #define DOWN BUTTON_SCROLL_FWD +#define SCROLL_FWD(x) ((x) & BUTTON_SCROLL_FWD) +#define SCROLL_BACK(x) ((x) & BUTTON_SCROLL_BACK) + #else #error Unsupported keypad #endif @@ -71,6 +84,11 @@ extern const fb_data brickmania_bricks[]; /* TO DO: This needs adjusting correctly for larger than 220x176 LCDS */ #if (LCD_WIDTH >= 220) && (LCD_HEIGHT >= 176) + +/* Offsets for LCDS > 220x176 */ +#define XOFS ((LCD_WIDTH-220)/2) +#define YOFS ((LCD_HEIGHT-176)/2) + #define PAD_WIDTH 40 #define PAD_HEIGHT 5 #define PAD_POS_Y LCD_HEIGHT - 7 @@ -108,6 +126,18 @@ extern const fb_data brickmania_bricks[]; #define BMPHEIGHT_powerup 6 #define BMPWIDTH_powerup 10 +#define BMPXOFS_resume (62+XOFS) +#define BMPYOFS_resume (100+YOFS) +#define BMPXOFS_quit (93+XOFS) +#define BMPYOFS_quit (138+YOFS) +#define BMPXOFS_start (55+XOFS) +#define BMPYOFS_start (78+YOFS) +#define BMPXOFS_help (92+XOFS) +#define BMPYOFS_help (118+YOFS) +#define HIGHSCORE_XPOS (7+XOFS) +#define HIGHSCORE_YPOS (56+YOFS) + + #else #error Unsupported LCD Size #endif @@ -498,44 +528,46 @@ int game_menu(int when) int button,cur=0; char str[10]; - rb->lcd_clear_display(); - rb->lcd_bitmap(brickmania_menu_bg,0,0,220,176); + rb->lcd_bitmap(brickmania_menu_bg,0,0,LCD_WIDTH,LCD_HEIGHT); while (true) { for(i=0;ilcd_bitmap(brickmania_sel_start,55,78, + rb->lcd_bitmap(brickmania_sel_start, + BMPXOFS_start,BMPYOFS_start, BMPWIDTH_sel_start,BMPHEIGHT_sel_start); else - rb->lcd_bitmap(brickmania_start,55,78, + rb->lcd_bitmap(brickmania_start,BMPXOFS_start,BMPYOFS_start, BMPWIDTH_start,BMPHEIGHT_start); if (when==1) { if (cur==1) - rb->lcd_bitmap(brickmania_sel_resume,62,100, + rb->lcd_bitmap(brickmania_sel_resume, + BMPXOFS_resume,BMPYOFS_resume, BMPWIDTH_sel_resume,BMPHEIGHT_sel_resume); else - rb->lcd_bitmap(brickmania_resume,62,100, + rb->lcd_bitmap(brickmania_resume, + BMPXOFS_resume,BMPYOFS_resume, BMPWIDTH_resume,BMPHEIGHT_resume); } else { - rb->lcd_bitmap(brickmania_no_resume,62,100, + rb->lcd_bitmap(brickmania_no_resume, + BMPXOFS_resume,BMPYOFS_resume, BMPWIDTH_no_resume,BMPHEIGHT_no_resume); } if (cur==2) - rb->lcd_bitmap(brickmania_sel_help,92,118, + rb->lcd_bitmap(brickmania_sel_help,BMPXOFS_help,BMPYOFS_help, BMPWIDTH_sel_help,BMPHEIGHT_sel_help); else - rb->lcd_bitmap(brickmania_help,92,118, + rb->lcd_bitmap(brickmania_help,BMPXOFS_help,BMPYOFS_help, BMPWIDTH_help,BMPHEIGHT_help); - if (cur==3) - rb->lcd_bitmap(brickmania_sel_quit,93,138, + rb->lcd_bitmap(brickmania_sel_quit,BMPXOFS_quit,BMPYOFS_quit, BMPWIDTH_sel_quit,BMPHEIGHT_sel_quit); else - rb->lcd_bitmap(brickmania_quit,93,138, + rb->lcd_bitmap(brickmania_quit,BMPXOFS_quit,BMPYOFS_quit, BMPWIDTH_quit,BMPHEIGHT_quit); } @@ -543,11 +575,11 @@ int game_menu(int when) rb->lcd_setfont(FONT_SYSFIXED); rb->lcd_set_background(LCD_RGBPACK(0,0,140)); rb->lcd_set_foreground(LCD_WHITE); - rb->lcd_putsxy(7, 56, "High Score"); + rb->lcd_putsxy(HIGHSCORE_XPOS, HIGHSCORE_YPOS, "High Score"); rb->snprintf(str, sizeof(str), "%d", highscore); rb->lcd_getstringsize("High Score", &sw, NULL); rb->lcd_getstringsize(str, &w, NULL); - rb->lcd_putsxy(7+sw/2-w/2, 65, str); + rb->lcd_putsxy(HIGHSCORE_XPOS+sw/2-w/2, HIGHSCORE_YPOS+9, str); rb->lcd_setfont(FONT_UI); rb->lcd_update(); @@ -690,6 +722,7 @@ int game_loop(void){ int j,i,k,bricky,brickx; char s[20]; int sec_count=0,num_count=10; + int end; rb->srand( *rb->current_tick ); @@ -713,7 +746,10 @@ int game_loop(void){ break; } - while(true) { + while(true) { + /* Convert CYCLETIME (in ms) to HZ */ + end = *rb->current_tick + (CYCLETIME * HZ) / 1000; + if (life >= 0) { rb->lcd_set_background(LCD_BLACK); rb->lcd_set_drawmode(DRMODE_SOLID); @@ -733,7 +769,7 @@ int game_loop(void){ rb->lcd_getstringsize(s, &sw, NULL); rb->lcd_putsxy(LCD_WIDTH/2-2, 150, s); } - + /* write life num */ rb->snprintf(s, sizeof(s), "Life: %d", life); rb->lcd_putsxy(2, 2, s); @@ -742,7 +778,6 @@ int game_loop(void){ rb->lcd_getstringsize(s, &sw, NULL); rb->lcd_putsxy(LCD_WIDTH-sw-2, 2, s); - if (vscoresnprintf(s, sizeof(s), "%d", vscore); rb->lcd_getstringsize(s, &sw, NULL); @@ -1033,58 +1068,59 @@ int game_loop(void){ } int move_button,button; - int time = 3; /* number of ticks this function will loop reading keys */ - int start = *rb->current_tick; - int end = start + time; - button=rb->button_get_w_tmo(end - *rb->current_tick); + int button_right,button_left; + button=rb->button_get(false); move_button=rb->button_status(); - if ((move_button & RIGHT && flip_sides==false) || (flip_sides==true && move_button & LEFT)) { + button_right=((move_button & RIGHT) || (SCROLL_FWD(button))); + button_left=((move_button & LEFT) || (SCROLL_BACK(button))); + + if ((button_right && flip_sides==false) || (button_left && flip_sides==true)) { if (pad_pos_x+8+PAD_WIDTH > LCD_WIDTH) { if (start_game==1 || on_the_pad==1) ball_pos_x+=LCD_WIDTH-pad_pos_x-PAD_WIDTH; pad_pos_x+=LCD_WIDTH-pad_pos_x-PAD_WIDTH; - } else { - if ((start_game==1 || on_the_pad==1)) - ball_pos_x+=8; - pad_pos_x+=8; - } - } else if ((move_button & LEFT && flip_sides==false) || (flip_sides==true && move_button & RIGHT)) { - if (pad_pos_x-8 < 0) { - if (start_game==1 || on_the_pad==1) ball_pos_x-=pad_pos_x; - pad_pos_x-=pad_pos_x; - } else { - if (start_game==1 || on_the_pad==1) ball_pos_x-=8; - pad_pos_x-=8; - } + } else { + if ((start_game==1 || on_the_pad==1)) + ball_pos_x+=8; + pad_pos_x+=8; + } + } else if ((button_left && flip_sides==false) || (button_right && flip_sides==true)) { + if (pad_pos_x-8 < 0) { + if (start_game==1 || on_the_pad==1) ball_pos_x-=pad_pos_x; + pad_pos_x-=pad_pos_x; + } else { + if (start_game==1 || on_the_pad==1) ball_pos_x-=8; + pad_pos_x-=8; } + } - switch(button){ - case SELECT: - if (start_game==1 && con_game!=1 && pad_type!=1) { - bally=-4; - ballx=pad_pos_x+(PAD_WIDTH/2)-2>=LCD_WIDTH/2?2:-2; + switch(button) { + case SELECT: + if (start_game==1 && con_game!=1 && pad_type!=1) { + bally=-4; + ballx=pad_pos_x+(PAD_WIDTH/2)-2>=LCD_WIDTH/2?2:-2; + start_game =0; + } else if (pad_type==1 && on_the_pad==1) { + on_the_pad=0; + if (start_game!=1 && con_game==1) { start_game =0; - } else if (pad_type==1 && on_the_pad==1) { - on_the_pad=0; - if (start_game!=1 && con_game==1) { - start_game =0; - con_game=0; - } - } else if (pad_type==2 && con_game!=1) { - int tfire; - tfire=fire_space(); - fire[tfire].top=PAD_POS_Y-7; - fire[tfire].left=pad_pos_x+1; - tfire=fire_space(); - fire[tfire].top=PAD_POS_Y-7; - fire[tfire].left=pad_pos_x+PAD_WIDTH-1; - } else if (con_game==1 && start_game!=1) { - ballx=x; - bally=y; con_game=0; } - break; + } else if (pad_type==2 && con_game!=1) { + int tfire; + tfire=fire_space(); + fire[tfire].top=PAD_POS_Y-7; + fire[tfire].left=pad_pos_x+1; + tfire=fire_space(); + fire[tfire].top=PAD_POS_Y-7; + fire[tfire].left=pad_pos_x+PAD_WIDTH-1; + } else if (con_game==1 && start_game!=1) { + ballx=x; + bally=y; + con_game=0; + } + break; case QUIT: switch(game_menu(1)){ case 0: @@ -1140,6 +1176,8 @@ int game_loop(void){ break; } } + if (end > *rb->current_tick) + rb->sleep(end-*rb->current_tick); } } -- 2.11.4.GIT