summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/brickmania.c96
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)