diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/plugins/brickmania.c | 96 |
1 files changed, 61 insertions, 35 deletions
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c index 3d5b644db8..bc606d6a24 100644 --- a/apps/plugins/brickmania.c +++ b/apps/plugins/brickmania.c | |||
@@ -273,26 +273,28 @@ CONFIG_KEYPAD == SANSA_M200_PAD | |||
273 | /* Brickmania was originally designed for the H300, other targets should scale | 273 | /* Brickmania was originally designed for the H300, other targets should scale |
274 | * up/down as needed based on the screen height. | 274 | * up/down as needed based on the screen height. |
275 | */ | 275 | */ |
276 | #define SPEED_SCALE *GAMESCREEN_HEIGHT/176 | 276 | #define SPEED_SCALE GAMESCREEN_HEIGHT/176 |
277 | 277 | ||
278 | /* These are all used as ball speeds depending on where the ball hit the | 278 | /* These are all used as ball speeds depending on where the ball hit the |
279 | * paddle. | 279 | * paddle. |
280 | */ | 280 | */ |
281 | #define SPEED_1Q_X ( 6 SPEED_SCALE) | 281 | #define SPEED_1Q_X ( 6 * SPEED_SCALE) |
282 | #define SPEED_1Q_Y (-2 SPEED_SCALE) | 282 | #define SPEED_1Q_Y (-2 * SPEED_SCALE) |
283 | #define SPEED_2Q_X ( 4 SPEED_SCALE) | 283 | #define SPEED_2Q_X ( 4 * SPEED_SCALE) |
284 | #define SPEED_2Q_Y (-3 SPEED_SCALE) | 284 | #define SPEED_2Q_Y (-3 * SPEED_SCALE) |
285 | #define SPEED_3Q_X ( 3 SPEED_SCALE) | 285 | #define SPEED_3Q_X ( 3 * SPEED_SCALE) |
286 | #define SPEED_3Q_Y (-4 SPEED_SCALE) | 286 | #define SPEED_3Q_Y (-4 * SPEED_SCALE) |
287 | #define SPEED_4Q_X ( 2 SPEED_SCALE) | 287 | #define SPEED_4Q_X ( 2 * SPEED_SCALE) |
288 | #define SPEED_4Q_Y (-4 SPEED_SCALE) | 288 | #define SPEED_4Q_Y (-4 * SPEED_SCALE) |
289 | 289 | ||
290 | /* This is used to determine the speed of the paddle */ | 290 | /* This is used to determine the speed of the paddle */ |
291 | #define SPEED_PAD ( 8 SPEED_SCALE) | 291 | #define SPEED_PAD ( 8 * SPEED_SCALE) |
292 | 292 | ||
293 | #define SPEED_POWER ( 2 SPEED_SCALE) | 293 | /* This defines the speed that the powerups drop */ |
294 | #define SPEED_POWER ( 2 * SPEED_SCALE) | ||
294 | 295 | ||
295 | #define SPEED_FIRE ( 4 SPEED_SCALE) | 296 | /* This defines the speed that the shot moves */ |
297 | #define SPEED_FIRE ( 4 * SPEED_SCALE) | ||
296 | 298 | ||
297 | /*calculate paddle y-position */ | 299 | /*calculate paddle y-position */ |
298 | #define PAD_POS_Y (GAMESCREEN_HEIGHT - PAD_HEIGHT - 1) | 300 | #define PAD_POS_Y (GAMESCREEN_HEIGHT - PAD_HEIGHT - 1) |
@@ -1078,14 +1080,14 @@ static int brickmania_game_loop(void) | |||
1078 | if (game_state!=ST_PAUSE) | 1080 | if (game_state!=ST_PAUSE) |
1079 | brick[i*10+j].powertop+=SPEED_POWER; | 1081 | brick[i*10+j].powertop+=SPEED_POWER; |
1080 | rb->lcd_bitmap_part(brickmania_powerups,0, | 1082 | rb->lcd_bitmap_part(brickmania_powerups,0, |
1081 | POWERUP_HEIGHT*brick[i*10+j | 1083 | POWERUP_HEIGHT*brick[i*10+j].power, |
1082 | ].power, | 1084 | STRIDE( BMPWIDTH_brickmania_powerups, |
1083 | POWERUP_WIDTH, | 1085 | BMPHEIGHT_brickmania_powerups), |
1084 | LEFTMARGIN+j*BRICK_WIDTH+ | 1086 | LEFTMARGIN+j*BRICK_WIDTH+ |
1085 | (BRICK_WIDTH/2-POWERUP_WIDTH/2), | 1087 | (BRICK_WIDTH/2-POWERUP_WIDTH/2), |
1086 | brick[i*10+j].powertop, | 1088 | brick[i*10+j].powertop, |
1087 | POWERUP_WIDTH, | 1089 | POWERUP_WIDTH, |
1088 | POWERUP_HEIGHT); | 1090 | POWERUP_HEIGHT); |
1089 | } | 1091 | } |
1090 | } | 1092 | } |
1091 | 1093 | ||
@@ -1202,19 +1204,21 @@ static int brickmania_game_loop(void) | |||
1202 | 1204 | ||
1203 | if (brick[i*10+j].used==1) { | 1205 | if (brick[i*10+j].used==1) { |
1204 | rb->lcd_bitmap_part(brickmania_bricks,0, | 1206 | rb->lcd_bitmap_part(brickmania_bricks,0, |
1205 | BRICK_HEIGHT*brick[i*10+j].color, | 1207 | BRICK_HEIGHT*brick[i*10+j].color, |
1206 | BRICK_WIDTH, | 1208 | STRIDE( BMPWIDTH_brickmania_bricks, |
1207 | LEFTMARGIN+j*BRICK_WIDTH, | 1209 | BMPHEIGHT_brickmania_bricks), |
1208 | TOPMARGIN+i*BRICK_HEIGHT, | 1210 | LEFTMARGIN+j*BRICK_WIDTH, |
1209 | BRICK_WIDTH, BRICK_HEIGHT); | 1211 | TOPMARGIN+i*BRICK_HEIGHT, |
1212 | BRICK_WIDTH, BRICK_HEIGHT); | ||
1210 | #ifdef HAVE_LCD_COLOR /* No transparent effect for greyscale lcds for now */ | 1213 | #ifdef HAVE_LCD_COLOR /* No transparent effect for greyscale lcds for now */ |
1211 | if (brick[i*10+j].hiteffect>0) | 1214 | if (brick[i*10+j].hiteffect>0) |
1212 | rb->lcd_bitmap_transparent_part(brickmania_break,0, | 1215 | rb->lcd_bitmap_transparent_part(brickmania_break,0, |
1213 | BRICK_HEIGHT*brick[i*10+j].hiteffect, | 1216 | BRICK_HEIGHT*brick[i*10+j].hiteffect, |
1214 | BRICK_WIDTH, | 1217 | STRIDE( BMPWIDTH_brickmania_break, |
1215 | LEFTMARGIN+j*BRICK_WIDTH, | 1218 | BMPHEIGHT_brickmania_break), |
1216 | TOPMARGIN+i*BRICK_HEIGHT, | 1219 | LEFTMARGIN+j*BRICK_WIDTH, |
1217 | BRICK_WIDTH, BRICK_HEIGHT); | 1220 | TOPMARGIN+i*BRICK_HEIGHT, |
1221 | BRICK_WIDTH, BRICK_HEIGHT); | ||
1218 | #endif | 1222 | #endif |
1219 | } | 1223 | } |
1220 | /* Somewhere in here collision checking is done b/w ball and | 1224 | /* Somewhere in here collision checking is done b/w ball and |
@@ -1368,11 +1372,33 @@ static int brickmania_game_loop(void) | |||
1368 | } /* for i */ | 1372 | } /* for i */ |
1369 | 1373 | ||
1370 | /* draw the pad */ | 1374 | /* draw the pad */ |
1371 | rb->lcd_bitmap_part(pad_width==PAD_WIDTH?brickmania_pads: | 1375 | if( pad_width == PAD_WIDTH ) /* Normal width */ |
1372 | pad_width==LONG_PAD_WIDTH?brickmania_long_pads: | 1376 | { |
1373 | brickmania_short_pads, | 1377 | rb->lcd_bitmap_part( |
1374 | 0,pad_type*PAD_HEIGHT,pad_width, | 1378 | brickmania_pads, |
1375 | pad_pos_x, PAD_POS_Y, pad_width, PAD_HEIGHT); | 1379 | 0, pad_type*PAD_HEIGHT, |
1380 | STRIDE(BMPWIDTH_brickmania_pads, BMPHEIGHT_brickmania_pads), | ||
1381 | pad_pos_x, PAD_POS_Y, pad_width, PAD_HEIGHT); | ||
1382 | } | ||
1383 | else if( pad_width == LONG_PAD_WIDTH ) /* Long Pad */ | ||
1384 | { | ||
1385 | rb->lcd_bitmap_part( | ||
1386 | brickmania_long_pads, | ||
1387 | 0,pad_type*PAD_HEIGHT, | ||
1388 | STRIDE( BMPWIDTH_brickmania_long_pads, | ||
1389 | BMPHEIGHT_brickmania_long_pads), | ||
1390 | pad_pos_x, PAD_POS_Y, pad_width, PAD_HEIGHT); | ||
1391 | } | ||
1392 | else /* Short pad */ | ||
1393 | { | ||
1394 | rb->lcd_bitmap_part( | ||
1395 | brickmania_short_pads, | ||
1396 | 0,pad_type*PAD_HEIGHT, | ||
1397 | STRIDE( BMPWIDTH_brickmania_short_pads, | ||
1398 | BMPHEIGHT_brickmania_short_pads), | ||
1399 | pad_pos_x, PAD_POS_Y, pad_width, PAD_HEIGHT); | ||
1400 | } | ||
1401 | |||
1376 | 1402 | ||
1377 | /* If the game is not paused continue */ | 1403 | /* If the game is not paused continue */ |
1378 | if (game_state!=ST_PAUSE) | 1404 | if (game_state!=ST_PAUSE) |