diff options
author | Karl Kurbjun <kkurbjun@gmail.com> | 2009-09-01 03:23:07 +0000 |
---|---|---|
committer | Karl Kurbjun <kkurbjun@gmail.com> | 2009-09-01 03:23:07 +0000 |
commit | 57f44a90c7abdafb59fcacbcae39f6277d280cf5 (patch) | |
tree | 6fdb239c4a4b2dbaa513d546f4e769a20d52e693 /apps/plugins | |
parent | b3edb1bdbaf36e96277fb1300ca91e680d3c8072 (diff) | |
download | rockbox-57f44a90c7abdafb59fcacbcae39f6277d280cf5.tar.gz rockbox-57f44a90c7abdafb59fcacbcae39f6277d280cf5.zip |
Invadrox: Add support for vertical strides
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22585 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
-rw-r--r-- | apps/plugins/invadrox.c | 44 |
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 | ||
639 | inline 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 | ||
638 | inline fb_data get_pixel(int x, int y) | 644 | inline 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 | } |