diff options
author | Solomon Peachy <pizza@shaftnet.org> | 2020-10-08 09:47:40 -0400 |
---|---|---|
committer | Solomon Peachy <pizza@shaftnet.org> | 2020-10-11 16:37:17 -0400 |
commit | 2a471e288c16b91a7186a60b3fb84dd55a494c7a (patch) | |
tree | 3e746212c5fa69b59f61d19b6e29d11aa8a5e31b /apps/plugins/invadrox.c | |
parent | 5efaa9ef8073bb216e3dcdbb4476f2fa7c672b76 (diff) | |
download | rockbox-2a471e288c16b91a7186a60b3fb84dd55a494c7a.tar.gz rockbox-2a471e288c16b91a7186a60b3fb84dd55a494c7a.zip |
New port: AIGO EROS Q / EROS K
The Q and K have a slightly different case, but the hardware under the
shell is completely identical.
These models are rebadged versions:
* Hifiwalker H2 (== Q)
* AGPTek H3 (== K)
* Surfans F20 (== K)
Other notes:
* Significant improvements in the shared Hiby-platform launcher/loader
* SD card can theoretically be hot-swapped now
* Support external USB mass storage!
* Some consolidation of Hiby-platform targets
* Some consolidation of plugin keymaps
Todo/known issues:
* Keymaps need to be gone over properly
* Convert to HAVE_SCROLLWHEEL?
Change-Id: I5a8a4f22c38a5b69392ca7c0a8ad8c4e07d9523c
Diffstat (limited to 'apps/plugins/invadrox.c')
-rw-r--r-- | apps/plugins/invadrox.c | 63 |
1 files changed, 28 insertions, 35 deletions
diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c index 5e3cb12163..57d6fabe8d 100644 --- a/apps/plugins/invadrox.c +++ b/apps/plugins/invadrox.c | |||
@@ -268,14 +268,7 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
268 | #define QUIT BUTTON_POWER | 268 | #define QUIT BUTTON_POWER |
269 | #define FIRE BUTTON_MENU | 269 | #define FIRE BUTTON_MENU |
270 | 270 | ||
271 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | 271 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD |
272 | |||
273 | #define QUIT BUTTON_POWER | ||
274 | #define LEFT BUTTON_HOME | ||
275 | #define RIGHT BUTTON_VOL_DOWN | ||
276 | #define FIRE BUTTON_VOL_UP | ||
277 | |||
278 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
279 | 272 | ||
280 | #define QUIT BUTTON_POWER | 273 | #define QUIT BUTTON_POWER |
281 | #define LEFT BUTTON_HOME | 274 | #define LEFT BUTTON_HOME |
@@ -289,19 +282,19 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
289 | #define RIGHT BUTTON_VOL_DOWN | 282 | #define RIGHT BUTTON_VOL_DOWN |
290 | #define FIRE BUTTON_VOL_UP | 283 | #define FIRE BUTTON_VOL_UP |
291 | 284 | ||
292 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 285 | #elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD |
293 | 286 | ||
294 | #define QUIT BUTTON_POWER | 287 | #define QUIT BUTTON_POWER |
295 | #define LEFT BUTTON_HOME | 288 | #define LEFT BUTTON_HOME |
296 | #define RIGHT BUTTON_VOL_DOWN | 289 | #define RIGHT BUTTON_VOL_DOWN |
297 | #define FIRE BUTTON_VOL_UP | 290 | #define FIRE BUTTON_VOL_UP |
298 | 291 | ||
299 | #elif CONFIG_KEYPAD == IHIFI_800_PAD | 292 | #elif CONFIG_KEYPAD == EROSQ_PAD |
300 | 293 | ||
301 | #define QUIT BUTTON_POWER | 294 | #define QUIT BUTTON_POWER |
302 | #define LEFT BUTTON_HOME | 295 | #define LEFT BUTTON_SCROLL_BACK |
303 | #define RIGHT BUTTON_VOL_DOWN | 296 | #define RIGHT BUTTON_SCROLL_FWD |
304 | #define FIRE BUTTON_VOL_UP | 297 | #define FIRE BUTTON_PLAY |
305 | 298 | ||
306 | #else | 299 | #else |
307 | #error INVADROX: Unsupported keypad | 300 | #error INVADROX: Unsupported keypad |
@@ -829,8 +822,8 @@ static void draw_number(int x, int y, int num, int digits) | |||
829 | d = num % 10; | 822 | d = num % 10; |
830 | num = num / 10; | 823 | num = num / 10; |
831 | rb->lcd_bitmap_part(invadrox_numbers, d * NUMBERS_WIDTH, 0, | 824 | rb->lcd_bitmap_part(invadrox_numbers, d * NUMBERS_WIDTH, 0, |
832 | STRIDE( SCREEN_MAIN, | 825 | STRIDE( SCREEN_MAIN, |
833 | BMPWIDTH_invadrox_numbers, | 826 | BMPWIDTH_invadrox_numbers, |
834 | BMPHEIGHT_invadrox_numbers), | 827 | BMPHEIGHT_invadrox_numbers), |
835 | x + i * (NUMBERS_WIDTH + NUM_SPACING), y, | 828 | x + i * (NUMBERS_WIDTH + NUM_SPACING), y, |
836 | NUMBERS_WIDTH, FONT_HEIGHT); | 829 | NUMBERS_WIDTH, FONT_HEIGHT); |
@@ -861,17 +854,17 @@ static void draw_lives(void) | |||
861 | int i; | 854 | int i; |
862 | /* Lives num */ | 855 | /* Lives num */ |
863 | rb->lcd_bitmap_part(invadrox_numbers, lives * NUMBERS_WIDTH, 0, | 856 | rb->lcd_bitmap_part(invadrox_numbers, lives * NUMBERS_WIDTH, 0, |
864 | STRIDE( SCREEN_MAIN, | 857 | STRIDE( SCREEN_MAIN, |
865 | BMPWIDTH_invadrox_numbers, | 858 | BMPWIDTH_invadrox_numbers, |
866 | BMPHEIGHT_invadrox_numbers), | 859 | BMPHEIGHT_invadrox_numbers), |
867 | PLAYFIELD_X + LIVES_X, PLAYFIELD_Y + 2, | 860 | PLAYFIELD_X + LIVES_X, PLAYFIELD_Y + 2, |
868 | NUMBERS_WIDTH, FONT_HEIGHT); | 861 | NUMBERS_WIDTH, FONT_HEIGHT); |
869 | 862 | ||
870 | /* Ships */ | 863 | /* Ships */ |
871 | for (i = 0; i < (lives - 1); i++) { | 864 | for (i = 0; i < (lives - 1); i++) { |
872 | rb->lcd_bitmap_part(invadrox_ships, 0, 0, | 865 | rb->lcd_bitmap_part(invadrox_ships, 0, 0, |
873 | STRIDE( SCREEN_MAIN, | 866 | STRIDE( SCREEN_MAIN, |
874 | BMPWIDTH_invadrox_ships, | 867 | BMPWIDTH_invadrox_ships, |
875 | BMPHEIGHT_invadrox_ships), | 868 | BMPHEIGHT_invadrox_ships), |
876 | PLAYFIELD_X + LIVES_X + SHIP_WIDTH + i * (SHIP_WIDTH + NUM_SPACING), | 869 | PLAYFIELD_X + LIVES_X + SHIP_WIDTH + i * (SHIP_WIDTH + NUM_SPACING), |
877 | PLAYFIELD_Y + 1, SHIP_WIDTH, SHIP_HEIGHT); | 870 | PLAYFIELD_Y + 1, SHIP_WIDTH, SHIP_HEIGHT); |
@@ -893,11 +886,11 @@ static inline void draw_aliens(void) | |||
893 | int i; | 886 | int i; |
894 | 887 | ||
895 | for (i = 0; i < 5 * ALIENS; i++) { | 888 | for (i = 0; i < 5 * ALIENS; i++) { |
896 | rb->lcd_bitmap_part(invadrox_aliens, aliens[i].x & 1 ? ALIEN_WIDTH : 0, | 889 | rb->lcd_bitmap_part(invadrox_aliens, aliens[i].x & 1 ? ALIEN_WIDTH : 0, |
897 | aliens[i].type * ALIEN_HEIGHT, | 890 | aliens[i].type * ALIEN_HEIGHT, |
898 | STRIDE( SCREEN_MAIN, | 891 | STRIDE( SCREEN_MAIN, |
899 | BMPWIDTH_invadrox_aliens, | 892 | BMPWIDTH_invadrox_aliens, |
900 | BMPHEIGHT_invadrox_aliens), | 893 | BMPHEIGHT_invadrox_aliens), |
901 | PLAYFIELD_X + LIVES_X + aliens[i].x * ALIEN_SPEED, | 894 | PLAYFIELD_X + LIVES_X + aliens[i].x * ALIEN_SPEED, |
902 | ALIEN_START_Y + aliens[i].y * ALIEN_HEIGHT, | 895 | ALIEN_START_Y + aliens[i].y * ALIEN_HEIGHT, |
903 | ALIEN_WIDTH, ALIEN_HEIGHT); | 896 | ALIEN_WIDTH, ALIEN_HEIGHT); |
@@ -1035,11 +1028,11 @@ static bool move_aliens(void) | |||
1035 | x = PLAYFIELD_X + LIVES_X + aliens[curr_alien].x * ALIEN_SPEED; | 1028 | x = PLAYFIELD_X + LIVES_X + aliens[curr_alien].x * ALIEN_SPEED; |
1036 | y = ALIEN_START_Y + aliens[curr_alien].y * ALIEN_HEIGHT; | 1029 | y = ALIEN_START_Y + aliens[curr_alien].y * ALIEN_HEIGHT; |
1037 | rb->lcd_bitmap_part(invadrox_aliens, | 1030 | rb->lcd_bitmap_part(invadrox_aliens, |
1038 | aliens[curr_alien].x & 1 ? ALIEN_WIDTH : 0, | 1031 | aliens[curr_alien].x & 1 ? ALIEN_WIDTH : 0, |
1039 | aliens[curr_alien].type * ALIEN_HEIGHT, | 1032 | aliens[curr_alien].type * ALIEN_HEIGHT, |
1040 | STRIDE( SCREEN_MAIN, | 1033 | STRIDE( SCREEN_MAIN, |
1041 | BMPWIDTH_invadrox_aliens, | 1034 | BMPWIDTH_invadrox_aliens, |
1042 | BMPHEIGHT_invadrox_aliens), | 1035 | BMPHEIGHT_invadrox_aliens), |
1043 | x, y, ALIEN_WIDTH, ALIEN_HEIGHT); | 1036 | x, y, ALIEN_WIDTH, ALIEN_HEIGHT); |
1044 | 1037 | ||
1045 | if (!next_alien()) { | 1038 | if (!next_alien()) { |
@@ -1068,9 +1061,9 @@ static inline void draw_ship(void) | |||
1068 | 1061 | ||
1069 | /* Draw ship */ | 1062 | /* Draw ship */ |
1070 | rb->lcd_bitmap_part(invadrox_ships, 0, ship_frame * SHIP_HEIGHT, | 1063 | rb->lcd_bitmap_part(invadrox_ships, 0, ship_frame * SHIP_HEIGHT, |
1071 | STRIDE( SCREEN_MAIN, | 1064 | STRIDE( SCREEN_MAIN, |
1072 | BMPWIDTH_invadrox_ships, | 1065 | BMPWIDTH_invadrox_ships, |
1073 | BMPHEIGHT_invadrox_ships), | 1066 | BMPHEIGHT_invadrox_ships), |
1074 | ship_x, SHIP_Y, SHIP_WIDTH, SHIP_HEIGHT); | 1067 | ship_x, SHIP_Y, SHIP_WIDTH, SHIP_HEIGHT); |
1075 | if (ship_hit) { | 1068 | if (ship_hit) { |
1076 | /* Alternate between frame 1 and 2 during hit */ | 1069 | /* Alternate between frame 1 and 2 during hit */ |
@@ -1095,7 +1088,7 @@ static inline void fire_alpha(int xc, int yc, unsigned color) | |||
1095 | 1088 | ||
1096 | rb->lcd_set_foreground(color); | 1089 | rb->lcd_set_foreground(color); |
1097 | rb->lcd_set_drawmode(DRMODE_FG); | 1090 | rb->lcd_set_drawmode(DRMODE_FG); |
1098 | 1091 | ||
1099 | rb->lcd_mono_bitmap(invadrox_fire, xc - (FIRE_WIDTH/2), yc, FIRE_WIDTH, FIRE_HEIGHT); | 1092 | rb->lcd_mono_bitmap(invadrox_fire, xc - (FIRE_WIDTH/2), yc, FIRE_WIDTH, FIRE_HEIGHT); |
1100 | 1093 | ||
1101 | rb->lcd_set_foreground(LCD_BLACK); | 1094 | rb->lcd_set_foreground(LCD_BLACK); |
@@ -1311,9 +1304,9 @@ static inline void draw_bomb(int i) | |||
1311 | { | 1304 | { |
1312 | rb->lcd_bitmap_part(invadrox_bombs, bombs[i].type * BOMB_WIDTH, | 1305 | rb->lcd_bitmap_part(invadrox_bombs, bombs[i].type * BOMB_WIDTH, |
1313 | bombs[i].frame * BOMB_HEIGHT, | 1306 | bombs[i].frame * BOMB_HEIGHT, |
1314 | STRIDE( SCREEN_MAIN, | 1307 | STRIDE( SCREEN_MAIN, |
1315 | BMPWIDTH_invadrox_bombs, | 1308 | BMPWIDTH_invadrox_bombs, |
1316 | BMPHEIGHT_invadrox_bombs), | 1309 | BMPHEIGHT_invadrox_bombs), |
1317 | bombs[i].x, bombs[i].y, | 1310 | bombs[i].x, bombs[i].y, |
1318 | BOMB_WIDTH, BOMB_HEIGHT); | 1311 | BOMB_WIDTH, BOMB_HEIGHT); |
1319 | /* Advance frame */ | 1312 | /* Advance frame */ |
@@ -1415,9 +1408,9 @@ static void move_bombs(void) | |||
1415 | bombs[i].state = S_EXPLODE * 4; | 1408 | bombs[i].state = S_EXPLODE * 4; |
1416 | bombs[i].target = TARGET_SHIP; | 1409 | bombs[i].target = TARGET_SHIP; |
1417 | rb->lcd_bitmap_part(invadrox_ships, 0, 1 * SHIP_HEIGHT, | 1410 | rb->lcd_bitmap_part(invadrox_ships, 0, 1 * SHIP_HEIGHT, |
1418 | STRIDE( SCREEN_MAIN, | 1411 | STRIDE( SCREEN_MAIN, |
1419 | BMPWIDTH_invadrox_ships, | 1412 | BMPWIDTH_invadrox_ships, |
1420 | BMPHEIGHT_invadrox_ships), | 1413 | BMPHEIGHT_invadrox_ships), |
1421 | ship_x, SHIP_Y, | 1414 | ship_x, SHIP_Y, |
1422 | SHIP_WIDTH, SHIP_HEIGHT); | 1415 | SHIP_WIDTH, SHIP_HEIGHT); |
1423 | break; | 1416 | break; |