summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/plugins/invadrox.c44
1 files changed, 34 insertions, 10 deletions
diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c
index 6a8a37af47..fa1432e3f3 100644
--- a/apps/plugins/invadrox.c
+++ b/apps/plugins/invadrox.c
@@ -635,10 +635,17 @@ bool aliens_down, aliens_right, hit_left_border, hit_right_border;
635/* No standard get_pixel function yet, use this hack instead */ 635/* No standard get_pixel function yet, use this hack instead */
636#if (LCD_DEPTH >= 8) 636#if (LCD_DEPTH >= 8)
637 637
638#if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE
639inline fb_data get_pixel(int x, int y)
640{
641 return rb->lcd_framebuffer[LCD_HEIGHT*(LCD_WIDTH-1)-x*LCD_HEIGHT+y];
642}
643#else
638inline fb_data get_pixel(int x, int y) 644inline fb_data get_pixel(int x, int y)
639{ 645{
640 return rb->lcd_framebuffer[ytab[y] + x]; 646 return rb->lcd_framebuffer[ytab[y] + x];
641} 647}
648#endif
642 649
643#elif (LCD_DEPTH == 2) 650#elif (LCD_DEPTH == 2)
644 651
@@ -677,7 +684,8 @@ void draw_number(int x, int y, int num, int digits)
677 d = num % 10; 684 d = num % 10;
678 num = num / 10; 685 num = num / 10;
679 rb->lcd_bitmap_part(invadrox_numbers, d * NUMBERS_WIDTH, 0, 686 rb->lcd_bitmap_part(invadrox_numbers, d * NUMBERS_WIDTH, 0,
680 BMPWIDTH_invadrox_numbers, 687 STRIDE( BMPWIDTH_invadrox_numbers,
688 BMPHEIGHT_invadrox_numbers),
681 x + i * (NUMBERS_WIDTH + NUM_SPACING), y, 689 x + i * (NUMBERS_WIDTH + NUM_SPACING), y,
682 NUMBERS_WIDTH, FONT_HEIGHT); 690 NUMBERS_WIDTH, FONT_HEIGHT);
683 } 691 }
@@ -707,12 +715,16 @@ void draw_lives(void)
707 int i; 715 int i;
708 /* Lives num */ 716 /* Lives num */
709 rb->lcd_bitmap_part(invadrox_numbers, lives * NUMBERS_WIDTH, 0, 717 rb->lcd_bitmap_part(invadrox_numbers, lives * NUMBERS_WIDTH, 0,
710 BMPWIDTH_invadrox_numbers, PLAYFIELD_X + LIVES_X, PLAYFIELD_Y + 2, 718 STRIDE( BMPWIDTH_invadrox_numbers,
719 BMPHEIGHT_invadrox_numbers),
720 PLAYFIELD_X + LIVES_X, PLAYFIELD_Y + 2,
711 NUMBERS_WIDTH, FONT_HEIGHT); 721 NUMBERS_WIDTH, FONT_HEIGHT);
712 722
713 /* Ships */ 723 /* Ships */
714 for (i = 0; i < (lives - 1); i++) { 724 for (i = 0; i < (lives - 1); i++) {
715 rb->lcd_bitmap_part(invadrox_ships, 0, 0, BMPWIDTH_invadrox_ships, 725 rb->lcd_bitmap_part(invadrox_ships, 0, 0,
726 STRIDE( BMPWIDTH_invadrox_ships,
727 BMPHEIGHT_invadrox_ships),
716 PLAYFIELD_X + LIVES_X + SHIP_WIDTH + i * (SHIP_WIDTH + NUM_SPACING), 728 PLAYFIELD_X + LIVES_X + SHIP_WIDTH + i * (SHIP_WIDTH + NUM_SPACING),
717 PLAYFIELD_Y + 1, SHIP_WIDTH, SHIP_HEIGHT); 729 PLAYFIELD_Y + 1, SHIP_WIDTH, SHIP_HEIGHT);
718 } 730 }
@@ -733,8 +745,11 @@ inline void draw_aliens(void)
733 int i; 745 int i;
734 746
735 for (i = 0; i < 5 * ALIENS; i++) { 747 for (i = 0; i < 5 * ALIENS; i++) {
736 rb->lcd_bitmap_part(invadrox_aliens, aliens[i].x & 1 ? ALIEN_WIDTH : 0, aliens[i].type * ALIEN_HEIGHT, 748 rb->lcd_bitmap_part(invadrox_aliens, aliens[i].x & 1 ? ALIEN_WIDTH : 0,
737 BMPWIDTH_invadrox_aliens, PLAYFIELD_X + LIVES_X + aliens[i].x * ALIEN_SPEED, 749 aliens[i].type * ALIEN_HEIGHT,
750 STRIDE( BMPWIDTH_invadrox_aliens,
751 BMPHEIGHT_invadrox_aliens),
752 PLAYFIELD_X + LIVES_X + aliens[i].x * ALIEN_SPEED,
738 ALIEN_START_Y + aliens[i].y * ALIEN_HEIGHT, 753 ALIEN_START_Y + aliens[i].y * ALIEN_HEIGHT,
739 ALIEN_WIDTH, ALIEN_HEIGHT); 754 ALIEN_WIDTH, ALIEN_HEIGHT);
740 } 755 }
@@ -871,8 +886,11 @@ bool move_aliens(void)
871 x = PLAYFIELD_X + LIVES_X + aliens[curr_alien].x * ALIEN_SPEED; 886 x = PLAYFIELD_X + LIVES_X + aliens[curr_alien].x * ALIEN_SPEED;
872 y = ALIEN_START_Y + aliens[curr_alien].y * ALIEN_HEIGHT; 887 y = ALIEN_START_Y + aliens[curr_alien].y * ALIEN_HEIGHT;
873 rb->lcd_bitmap_part(invadrox_aliens, 888 rb->lcd_bitmap_part(invadrox_aliens,
874 aliens[curr_alien].x & 1 ? ALIEN_WIDTH : 0, aliens[curr_alien].type * ALIEN_HEIGHT, 889 aliens[curr_alien].x & 1 ? ALIEN_WIDTH : 0,
875 BMPWIDTH_invadrox_aliens, x, y, ALIEN_WIDTH, ALIEN_HEIGHT); 890 aliens[curr_alien].type * ALIEN_HEIGHT,
891 STRIDE( BMPWIDTH_invadrox_aliens,
892 BMPHEIGHT_invadrox_aliens),
893 x, y, ALIEN_WIDTH, ALIEN_HEIGHT);
876 894
877 if (!next_alien()) { 895 if (!next_alien()) {
878 /* Round finished. Set curr_alien to first alive from bottom. */ 896 /* Round finished. Set curr_alien to first alive from bottom. */
@@ -900,7 +918,9 @@ inline void draw_ship(void)
900 918
901 /* Draw ship */ 919 /* Draw ship */
902 rb->lcd_bitmap_part(invadrox_ships, 0, ship_frame * SHIP_HEIGHT, 920 rb->lcd_bitmap_part(invadrox_ships, 0, ship_frame * SHIP_HEIGHT,
903 BMPWIDTH_invadrox_ships, ship_x, SHIP_Y, SHIP_WIDTH, SHIP_HEIGHT); 921 STRIDE( BMPWIDTH_invadrox_ships,
922 BMPHEIGHT_invadrox_ships),
923 ship_x, SHIP_Y, SHIP_WIDTH, SHIP_HEIGHT);
904 if (ship_hit) { 924 if (ship_hit) {
905 /* Alternate between frame 1 and 2 during hit */ 925 /* Alternate between frame 1 and 2 during hit */
906 ship_frame_counter++; 926 ship_frame_counter++;
@@ -1140,7 +1160,9 @@ inline void draw_bomb(int i)
1140{ 1160{
1141 rb->lcd_bitmap_part(invadrox_bombs, bombs[i].type * BOMB_WIDTH, 1161 rb->lcd_bitmap_part(invadrox_bombs, bombs[i].type * BOMB_WIDTH,
1142 bombs[i].frame * BOMB_HEIGHT, 1162 bombs[i].frame * BOMB_HEIGHT,
1143 BMPWIDTH_invadrox_bombs, bombs[i].x, bombs[i].y, 1163 STRIDE( BMPWIDTH_invadrox_bombs,
1164 BMPHEIGHT_invadrox_bombs),
1165 bombs[i].x, bombs[i].y,
1144 BOMB_WIDTH, BOMB_HEIGHT); 1166 BOMB_WIDTH, BOMB_HEIGHT);
1145 /* Advance frame */ 1167 /* Advance frame */
1146 bombs[i].frame++; 1168 bombs[i].frame++;
@@ -1240,7 +1262,9 @@ void move_bombs(void)
1240 bombs[i].state = S_EXPLODE * 4; 1262 bombs[i].state = S_EXPLODE * 4;
1241 bombs[i].target = TARGET_SHIP; 1263 bombs[i].target = TARGET_SHIP;
1242 rb->lcd_bitmap_part(invadrox_ships, 0, 1 * SHIP_HEIGHT, 1264 rb->lcd_bitmap_part(invadrox_ships, 0, 1 * SHIP_HEIGHT,
1243 BMPWIDTH_invadrox_ships, ship_x, SHIP_Y, 1265 STRIDE( BMPWIDTH_invadrox_ships,
1266 BMPHEIGHT_invadrox_ships),
1267 ship_x, SHIP_Y,
1244 SHIP_WIDTH, SHIP_HEIGHT); 1268 SHIP_WIDTH, SHIP_HEIGHT);
1245 break; 1269 break;
1246 } 1270 }