From 8b13d87ec3055559ea33ea2b40225ed0cfa00788 Mon Sep 17 00:00:00 2001 From: Marianne Arnold Date: Tue, 7 Apr 2009 17:56:16 +0000 Subject: [PATCH] Invadrox - some bitmap related changes in preparation of porting it to more screen resolutions, should not be visible to the user: (1) Use single bitmaps (or strips where possible) instead of one big bitmap each, so instructions and defines how to take the bitmap apart aren't needed. It's more flexible and makes it possible to (2) get some width/height variables directly from the bitmaps. (3) Use background images for static items. Both reduces the number of hardcoded values noticeably. (4) Make the 'fire_sprite' an external bitmap too - with help of Jens -. (5) Rename 'TINY_GRAPHICS' to 'SMALL_GRAPHICS' to have this name available for even smaller images (which is planned). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20646 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/bitmaps/mono/SOURCES | 9 + .../bitmaps/mono/invadrox_fire.6x6x1.bmp | Bin 0 -> 86 bytes .../bitmaps/mono/invadrox_fire.8x8x1.bmp | Bin 0 -> 94 bytes apps/plugins/bitmaps/native/SOURCES | 67 +++-- .../bitmaps/native/invadrox.160x128x2.bmp | Bin 934 -> 0 bytes .../bitmaps/native/invadrox.176x132x16.bmp | Bin 938 -> 0 bytes .../bitmaps/native/invadrox.320x240x16.bmp | Bin 1726 -> 0 bytes .../native/invadrox_alien_explode.10x5x16.bmp | Bin 0 -> 130 bytes .../native/invadrox_alien_explode.13x7x16.bmp | Bin 0 -> 182 bytes .../native/invadrox_aliens.16x15x16.bmp | Bin 0 -> 310 bytes .../native/invadrox_aliens.24x24x16.bmp | Bin 0 -> 646 bytes .../native/invadrox_background.160x128x16.bmp | Bin 0 -> 61494 bytes .../native/invadrox_background.176x132x16.bmp | Bin 0 -> 69750 bytes .../native/invadrox_background.176x220x16.bmp | Bin 0 -> 116214 bytes .../native/invadrox_background.220x176x16.bmp | Bin 0 -> 116214 bytes .../native/invadrox_background.240x320x16.bmp | Bin 0 -> 230454 bytes .../native/invadrox_background.320x240x16.bmp | Bin 0 -> 230454 bytes .../bitmaps/native/invadrox_bombs.9x30x16.bmp | Bin 0 -> 430 bytes .../bitmaps/native/invadrox_bombs.9x42x16.bmp | Bin 0 -> 574 bytes .../native/invadrox_left.320x240x16.bmp | Bin 5830 -> 0 bytes .../native/invadrox_logo.176x220x16.bmp | Bin 12886 -> 0 bytes .../native/invadrox_logo.240x320x16.bmp | Bin 19766 -> 0 bytes .../native/invadrox_numbers.40x5x16.bmp | Bin 0 -> 270 bytes .../native/invadrox_numbers.50x7x16.bmp | Bin 0 -> 434 bytes .../native/invadrox_right.320x240x16.bmp | Bin 5830 -> 0 bytes .../native/invadrox_shield.15x10x16.bmp | Bin 0 -> 230 bytes .../native/invadrox_shield.15x10x2.bmp | Bin 0 -> 1238 bytes .../native/invadrox_shield.22x16x16.bmp | Bin 0 -> 454 bytes .../native/invadrox_ships.10x15x16.bmp | Bin 0 -> 250 bytes .../bitmaps/native/invadrox_ships.10x15x2.bmp | Bin 0 -> 1258 bytes .../native/invadrox_ships.16x24x16.bmp | Bin 0 -> 454 bytes .../bitmaps/native/invadrox_ufo.11x5x16.bmp | Bin 0 -> 130 bytes .../bitmaps/native/invadrox_ufo.11x5x2.bmp | Bin 0 -> 1138 bytes .../bitmaps/native/invadrox_ufo.16x7x16.bmp | Bin 0 -> 182 bytes .../native/invadrox_ufo_explode.14x5x16.bmp | Bin 0 -> 150 bytes .../native/invadrox_ufo_explode.14x5x2.bmp | Bin 0 -> 1158 bytes .../native/invadrox_ufo_explode.21x8x16.bmp | Bin 0 -> 262 bytes apps/plugins/invadrox.c | 247 ++++++------------ 38 files changed, 127 insertions(+), 196 deletions(-) create mode 100644 apps/plugins/bitmaps/mono/invadrox_fire.6x6x1.bmp create mode 100644 apps/plugins/bitmaps/mono/invadrox_fire.8x8x1.bmp delete mode 100644 apps/plugins/bitmaps/native/invadrox.160x128x2.bmp delete mode 100644 apps/plugins/bitmaps/native/invadrox.176x132x16.bmp delete mode 100644 apps/plugins/bitmaps/native/invadrox.320x240x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_alien_explode.10x5x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_alien_explode.13x7x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_aliens.16x15x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_aliens.24x24x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_background.160x128x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_background.176x132x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_background.176x220x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_background.220x176x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_background.240x320x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_background.320x240x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_bombs.9x30x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_bombs.9x42x16.bmp delete mode 100644 apps/plugins/bitmaps/native/invadrox_left.320x240x16.bmp delete mode 100644 apps/plugins/bitmaps/native/invadrox_logo.176x220x16.bmp delete mode 100644 apps/plugins/bitmaps/native/invadrox_logo.240x320x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_numbers.40x5x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_numbers.50x7x16.bmp delete mode 100644 apps/plugins/bitmaps/native/invadrox_right.320x240x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_shield.15x10x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_shield.15x10x2.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_shield.22x16x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_ships.10x15x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_ships.10x15x2.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_ships.16x24x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_ufo.11x5x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_ufo.11x5x2.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_ufo.16x7x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_ufo_explode.14x5x16.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_ufo_explode.14x5x2.bmp create mode 100644 apps/plugins/bitmaps/native/invadrox_ufo_explode.21x8x16.bmp diff --git a/apps/plugins/bitmaps/mono/SOURCES b/apps/plugins/bitmaps/mono/SOURCES index a109405bc9..63ac5adf74 100644 --- a/apps/plugins/bitmaps/mono/SOURCES +++ b/apps/plugins/bitmaps/mono/SOURCES @@ -37,6 +37,15 @@ flipit_cursor.16x13x1.bmp #endif #endif +/* Invadrox, not on monochrome targets yet */ +#if LCD_DEPTH > 1 +#if LCD_WIDTH >= 220 +invadrox_fire.8x8x1.bmp +#elif LCD_WIDTH >= 160 +invadrox_fire.6x6x1.bmp +#endif +#endif + #if CONFIG_CODEC == SWCODEC /* MPEGplayer */ mpegplayer_status_icons_8x8x1.bmp diff --git a/apps/plugins/bitmaps/mono/invadrox_fire.6x6x1.bmp b/apps/plugins/bitmaps/mono/invadrox_fire.6x6x1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8fac78d84e7931bd44b1e16e37ab8741dc400565 GIT binary patch literal 86 zcmZ?r4P$@+J0PV2#B5N^$iN7ekN}cG+z`wJ7J(4||Nm#G05V&E*awJD0C5ixM*uMZ D_a+CQ literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/mono/invadrox_fire.8x8x1.bmp b/apps/plugins/bitmaps/mono/invadrox_fire.8x8x1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..76216bac9d28b17e0dec3c9d340631d94a0471a4 GIT binary patch literal 94 zcmZ?rjbnfSJ0PV2#2iq}$iN7ePymub+z`wJ7J(4||Nmzw12PW-aU&2r1MwjsZU*9m IK%54|07y{@C;$Ke literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/SOURCES b/apps/plugins/bitmaps/native/SOURCES index 357480afc6..92521d7e04 100644 --- a/apps/plugins/bitmaps/native/SOURCES +++ b/apps/plugins/bitmaps/native/SOURCES @@ -256,30 +256,51 @@ flipit_tokens.16x26x1.bmp #endif /* Invadrox */ -#if (LCD_WIDTH == 320) && (LCD_HEIGHT == 240) -invadrox.320x240x16.bmp -invadrox_left.320x240x16.bmp -invadrox_right.320x240x16.bmp -#elif (LCD_WIDTH == 220) && (LCD_HEIGHT == 176) -/* Use iPod Video character bitmap */ -invadrox.320x240x16.bmp -#elif (LCD_WIDTH == 240) && (LCD_HEIGHT == 320) -/* Use iPod Video character bitmap */ -invadrox.320x240x16.bmp -invadrox_logo.240x320x16.bmp -#elif (LCD_WIDTH == 176) && (LCD_HEIGHT == 132) -invadrox.176x132x16.bmp -#elif (LCD_WIDTH == 160) && (LCD_HEIGHT == 128) && (LCD_DEPTH >= 8) -/* Use iPod Nano character bitmap */ -invadrox.176x132x16.bmp -#elif (LCD_WIDTH == 160) && (LCD_HEIGHT == 128) && (LCD_DEPTH == 2) -/* Grayscale */ -invadrox.160x128x2.bmp -#elif (LCD_WIDTH == 176) && (LCD_HEIGHT == 220) -/* Use iPod Nano character bitmap */ -invadrox.176x132x16.bmp -invadrox_logo.176x220x16.bmp +#if defined HAVE_LCD_COLOR +#if LCD_WIDTH >= 220 +invadrox_aliens.24x24x16.bmp +invadrox_alien_explode.13x7x16.bmp +invadrox_ships.16x24x16.bmp +invadrox_bombs.9x42x16.bmp +invadrox_shield.22x16x16.bmp +invadrox_ufo.16x7x16.bmp +invadrox_ufo_explode.21x8x16.bmp +invadrox_numbers.50x7x16.bmp +#if LCD_WIDTH == 320 +invadrox_background.320x240x16.bmp +#elif LCD_WIDTH == 240 +invadrox_background.240x320x16.bmp +#elif LCD_WIDTH == 220 +invadrox_background.220x176x16.bmp #endif +#elif LCD_WIDTH >= 160 +invadrox_aliens.16x15x16.bmp +invadrox_alien_explode.10x5x16.bmp +invadrox_ships.10x15x16.bmp +invadrox_bombs.9x30x16.bmp +invadrox_shield.15x10x16.bmp +invadrox_ufo.11x5x16.bmp +invadrox_ufo_explode.14x5x16.bmp +invadrox_numbers.40x5x16.bmp +#if LCD_WIDTH == 176 && LCD_HEIGHT == 220 +invadrox_background.176x220x16.bmp +#elif LCD_WIDTH == 176 && LCD_HEIGHT == 132 +invadrox_background.176x132x16.bmp +#elif LCD_WIDTH == 160 && LCD_HEIGHT == 128 +invadrox_background.160x128x16.bmp +#endif +#endif /* LCD_WIDTH */ +#elif LCD_DEPTH == 2 /* Greyscale */ +invadrox_aliens.16x15x16.bmp +invadrox_alien_explode.10x5x16.bmp +invadrox_ships.10x15x2.bmp +invadrox_bombs.9x30x16.bmp +invadrox_shield.15x10x2.bmp +invadrox_ufo.11x5x2.bmp +invadrox_ufo_explode.14x5x2.bmp +invadrox_numbers.40x5x16.bmp +invadrox_background.160x128x16.bmp +#endif /* colour depth */ /* Jewels */ #if (LCD_WIDTH == 112) && (LCD_HEIGHT == 64) diff --git a/apps/plugins/bitmaps/native/invadrox.160x128x2.bmp b/apps/plugins/bitmaps/native/invadrox.160x128x2.bmp deleted file mode 100644 index 4834c39c16c1268f7eed10fbbb8cfebd3a814c4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 934 zcmZ9K%TWU{5JX3U8yBev05K;LAOYW<1+j71B$wAcvQ1gGRJ+rk`DicK-Mcwo`jw8oU2>8P7~RIi1=A#=In^C=Elkh97Bj|^ZVxzPjM4sK%ExVyDi<1+R_WBFR$sMw zuf8We`c5gtMapeVNv+AcId#C5s?Zp%4TD=pu4GXsiZ&3VW=0sQ&aRK8+~`uKZdspA zJt#yII&P~Aq8?8~xx|qpH-M0*$0XH(@-apR?OIAlneK!Bpj#syBSFAe>{&Yd%DZYP Is4hDG0C>kMSO5S3 diff --git a/apps/plugins/bitmaps/native/invadrox.176x132x16.bmp b/apps/plugins/bitmaps/native/invadrox.176x132x16.bmp deleted file mode 100644 index 1c9631baa427dcefce5f4fc31373a696cc75e227..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 938 zcmZ9KK~BUl3`O0B9h;6gK%=f$MnqhI1v_rR={V#J@7V>7CTgO@-~WHt$;a1EiyWV< zugrJm&RpV&HR2om<+-MjijuQmW54ckyWKMHacR+F5NxB(Iopge2Yb&WMoZU83L6p( z=RsN!7a%X@fH!5RLs)#wHk4x3LrJoYc&J>G$Z{r_Mr0tRAs%R3Vl$EkvK?e4ka8KZ zK1jtlNotr`t}^Q5Y?$H_Q@zZRjZk?7n&NMbPWlI2sfEV2EL(yn4=*0tq|VOk-L}gDn;ub% zb>?F!yXCSeS{H?BZD8@};b>Z;3DKVHh+fiEv=-i;cw!faAob~2wG@vsFDXeU?F);O VzwQwy?c~)zqFp^pMHpUm`~qW0KkNVi diff --git a/apps/plugins/bitmaps/native/invadrox.320x240x16.bmp b/apps/plugins/bitmaps/native/invadrox.320x240x16.bmp deleted file mode 100644 index 73fd916878e7a0ff6526fc678875d2329c855d68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1726 zcmZ{kL9U%J3`Gr8opb`~0$#+ZqY5cI=%5{SKV4my_FvDj1L8mZn#6?U=K97-`0@Mi z=ScgB|3>{q{Z5_Y6F%Y(<6pm2wWoR`9*?(pyglOid?xN=x5N?060yY6qaU4e@X-%G zX>?uzKp5SLb)1L7CnXP7|^l#u0m+ejLW^d}QoSE8~N>c#g%f47n_wK(r6% z*q7DLLzz#A5XmyWw8+xy;fY~OeD4dVz!<80qC zZu!~I!MNJa$L4%9Aja5YeEZEo73sf0&cUwN!5P8SCOv1QHP9 zi?Yv*MLPk0r1gbE#$n{imC${|)S_~*ZcQ{$F~7$c>t-`y0?>ONR|XNH^~7%0J4VEf zrV|F5N^s#CdOYr!On698)NX=Ep&KwxoBJS7x>HdD?LkmG9k$!Ajv1yBy zw7E1$GTn*~Lt)dlZ2%`W+WdGbGN@yil8vPvG&?kk>k`p)G3k)AN@0GCC~_PPmLDt2 zk}k2dmP`R8%eCRfV<}2Z!7w;8vuy^neoLFLa52KD2m- diff --git a/apps/plugins/bitmaps/native/invadrox_alien_explode.10x5x16.bmp b/apps/plugins/bitmaps/native/invadrox_alien_explode.10x5x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..74d984ff555088a3f64b94d24814fb3f9da7b279 GIT binary patch literal 130 zcmZ?rZDN1`Hz1_}#9Tnk3dD>I96*wR!3KzhxFMJYECM0q<^M6r|C49<|NlP&12Z!a ZgAquQ84N)Tpcn{1Xt*#~AxJq$8USB(2fY9Q literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_alien_explode.13x7x16.bmp b/apps/plugins/bitmaps/native/invadrox_alien_explode.13x7x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..36beffb682732abd77542115a0c562d50f0121de GIT binary patch literal 182 zcmZ?r-Npa`Za_){hihe<8tsF)!Jpw5yODoE zf86CO8HLt%YkRZayDdu!j+BiEKs9*X6~KUYV~)negAOx zc=OWk>iw&pKlS{s=f};@dRMFQzqjKV3GYu9*tIscYKdLnyz)~wmD>~hEb$i$Okb^b zUo%Pep&pMjubD5ti|tl{^`lf~v|e19>W=rwzZSJWbsz0>#TOJxbXxc1ey*?~b_g3D#Mu|K>rz#dMuxCqH=EH90a_WMiWYrTDx-)=!Z2 zlbM2atFp(Lcr8H=pWyvB%9I4Tbuv?s?)!JinkNLc-S&Hvb z{Kf^QuUv1tW|HhnJsv%-nK$0M*INbFk64*8dU0iHI(|p~S5f9?mpVO*vnEF-hwNOGr4(N`$oUC!elk;#X;t<(8}Btp zvk6` zCQBp8Y7eG!rs;IT-%oROj@rp&X(z}zcO0zkSF=f;ZG2tb$z*9KID5-gl6C1AIqj7A lUl*y$`xGoipe9EpEJOcOQFr@$h literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_background.176x220x16.bmp b/apps/plugins/bitmaps/native/invadrox_background.176x220x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3edeeef463b86a047929f5164a3fc590a58ff3d4 GIT binary patch literal 116214 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 literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_background.220x176x16.bmp b/apps/plugins/bitmaps/native/invadrox_background.220x176x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d9a9b6965deb5496a9416034768a67ac6529c442 GIT binary patch literal 116214 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 literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_bombs.9x30x16.bmp b/apps/plugins/bitmaps/native/invadrox_bombs.9x30x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4cb561e561101aefcca29bef73dd90598fee3460 GIT binary patch literal 430 zcmbV^F%Ez*2t_e<(71U3Sv`k?oA>Z^9Jw8d2;%?% literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_bombs.9x42x16.bmp b/apps/plugins/bitmaps/native/invadrox_bombs.9x42x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8eeb565ee2a81ef91e76a1f58adb149b620d6d38 GIT binary patch literal 574 zcmb`Cu?~YU3`CEHfr_m^kQMbKIxuwO|9^#v)IMY53>_*JVdwI6KEt}bZs7BlzDV7r zo>BuQ>A*e!kJ)M@u~zGWdQ`O55)D~G0YBRJkn3b%H_J3ODC=}z9(^=wAl=m y^xQq_vK;d}|Kj%$o#LMG%k|7*5V-<-V?X%`Lo-SLoMy}E^SLbhsr!7cC;tGN&Iw@v literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_left.320x240x16.bmp b/apps/plugins/bitmaps/native/invadrox_left.320x240x16.bmp deleted file mode 100644 index 8111e4762cbe1fd74c827635c974f430393b106a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5830 zcmeIzu?c`M5QX6<*x48aJDXINiW^wiIfR=yiQ_nrjlC}htR3J#xDYO+IWAx3^=$RV z;Z>pTBlB?cqK{`6=9yK{)j3Iq9KZn_zyTb<0UY@6zytUGW9t9_ diff --git a/apps/plugins/bitmaps/native/invadrox_logo.176x220x16.bmp b/apps/plugins/bitmaps/native/invadrox_logo.176x220x16.bmp deleted file mode 100644 index 687102ad7ad6a9950e350399c2da870264a06f84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12886 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 diff --git a/apps/plugins/bitmaps/native/invadrox_logo.240x320x16.bmp b/apps/plugins/bitmaps/native/invadrox_logo.240x320x16.bmp deleted file mode 100644 index 72b053405629ed9e3a11ad60a74e90ccd5aef0ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19766 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 C?FrQY literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_right.320x240x16.bmp b/apps/plugins/bitmaps/native/invadrox_right.320x240x16.bmp deleted file mode 100644 index ceb21053edefdf804455e4665b5b76611ddef2a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5830 zcmeIzp$&jA5QX7ufQ?WpH=&PQK61edo9sofh2~Pk3 literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_shield.15x10x2.bmp b/apps/plugins/bitmaps/native/invadrox_shield.15x10x2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9ca3ed70c91553c36ad236a5c61d5fdfa66c40e8 GIT binary patch literal 1238 zcmbu9cT@-p6vlt0y`>^rWMq`lpiO2-vLmu3LfX=hQub)ript0)Qf798QpzX_p`t;h z($aXxIq#hJ-@E60_kQ2K_uO;O{o`6#V%Mx5W>R3h=_A;X;z&qHASo${l#~?G($dJt$RH~#i=3Ps zojZ3%US6IqUAmy4pn#&HB1%e1bnV)eZr!?}tgKA;?%nCpqX#M~DyXWeqNb*Xy1F_V z8XENM*^^$qdZDSQN$=jh>C>kVef##MU%!56X=%~Fe}4uH7{I`R0~s`E5Zc<>=;-J$ zc<^9`3>m`Ep+gxqY#6$_y6EZYp|7uxfq?(Ovt}`S_H5?NnS-sZEpzA2W!}7b z*xA`JfBt+HELecOy*&#TE@aW7MJ!&tm?cY=uypBCmMvSx^5x4}v0?=d4i2nbxe`Z5 zM^>#`#p>0oadL8E&6+i=UAvZb>(=4y?9BT0>v3^$!PV6jH#axj-QDr<@W9j46E80> zHf-2{x3@PNH*Uno#|K|uU;O<1@b~v;)22-X1O%{o^JW4A0|^QWV#}5-1P2Eb5)#7J zty|f)Z5!LSZ)eAj9qin>lU=)Zv3vJ!_Uzfi-o1O-w{IVzp`nC@g%KVePDDfm`}gnX zz<~oCJa~{phYoT0@L`S|Il|GSM>%%v7?F{YL`6k${P=NBoH#*rbTlzBF~r8ka`NO! zPMtc%>C>kV?2>lU|f-{#JpJKVi{mwWf_k(`{&{rmTM@ZbRt zA3o&Kqenb`{Fo({S&^X3h2-@YX;FOU5EeBQl#$NTs1DJUqQu&|I1A3pH$ z<3~Py`b1Gt5uZPQ=F68aeEs^B;^JaTN=hg#E#=#{Z+!p$owBkr%FD~CsHmW_vXUP^ ze(>|>PpYb_sIIQ2rly8pzkX3$TT5MC9rg9~{Qmu$hK2?j8yjhAYNENhnU>}N|6BiiK>H?t$G53JcPrBd literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_shield.22x16x16.bmp b/apps/plugins/bitmaps/native/invadrox_shield.22x16x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6ea8d4083e7640b3f1a7874695ba5d6ac075a05a GIT binary patch literal 454 zcmZ?rJ;ulY25vx71Bk_dSOAC_890C>149E)UWgllS->I?LSFtKgZw{vhX4QnGcbVw zk{p;16u>Kv&;U^mQx7)@DvS_^381SV^x}|!z;Gro#L&cmTxc+&OTa@HRRSUm0Gj~{ AbN~PV literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_ships.10x15x16.bmp b/apps/plugins/bitmaps/native/invadrox_ships.10x15x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5e8cb62ba75770c0907ef2960a87d4a01f20b71c GIT binary patch literal 250 zcmZ8ZI}U(Q3_{~zbTIJ(Z}l7wZr;|@IlLzY>tGY;hr)i|a2;$LF%b*VVI%_=vChVz zi>Z`~QVUvZK#!hffh|UF6k^KVNB*T6qe>nL85Ew(RC1cLe_p>SCg^wfsszz%e*o{L B2?YQE literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_ships.10x15x2.bmp b/apps/plugins/bitmaps/native/invadrox_ships.10x15x2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c17313d472caf263ccc6e4b2b8c7c0f331802092 GIT binary patch literal 1258 zcmZ9MXFL{c6vqFe5|yGfs5D3^DcLQWk`a+MN~sW%)lgY&Eg@w!DT*{`OFIpsNl{ct zHl_7Ek5?bw^ZT81u5+DpT_5fbw~=X?1ftLubX5V85~PeE#gG*7X@V*%-I4+aoC{Nrw&{kdl%@T3VWp9XrygQztri?u?9#3|+c( zp=;N!$jZthCnra@Zr$kKy*u*q^7QD@gPuKm(yLc5diU;)f`S5yii-5<(}%u&`_ivp zKa`Y|=-h+np+kqFrl!WQVZ#_cd^qar z>WmmM0u2ofMvffGs8OTP)YN43=+S6tX`!vHjgF2Ey1KgP>FJ@buaAL&0b|CDVeHtk zj2kzO@#DucVZsCq4Gl3eGGgMyiAoQb8SC015e%$hX|Yinz4Y;2f4dp5SVw#=C`hq-g-GH>2I z=Fgwcf&~j$xNsqh7A?Zg&JKHfdmJ1bSiE>KOO`Cb(b18mOP8{2*)p7*oLIhmIV)DI zVCBk{I6FJz;^KmsY^jJsUP`z~A4WjT<+zY11Y)Z{AEmKmdV(fdmBw5gZ&$NJt17*|Ueed-t+$-#+&5-%nUr7zYjRxBO^I@@E}o9Q5-sSh{J~u6CE8*OiT>1v9ZL(#StGL&ygcXIC}Ib$BrH2`0?YM zIB|lLCr^@)kU(N$BBxHB;`Hg$Bqb%0oSe*=GiNw^_ADtWDWs;Ra_-zY($dm6fBrld zE?nT^#fx0JbcyuzbTTqBxP19CSFT*)>eZ`UyLOH1*RONq#tm-Xyh&zeCbw?gA}cG4 z+qZ9X=guAO-o4Acd-u41|2_{MJmBHOhdg@pi0tfa9zTA}lP6Dj`t&K!o;@QcCx_hJ zT%JFFPF`Lf`T6<0c=3XlFJJQN)hk}Ve$AUVZ+QFmEd>Py6c!fp?%g}yzkg3rQ4z(( z#eDeifsY?QQc_YvX=y2+K7Hcz=g)lk@`bXpGRn)#si>&n>({STR#x)u+c&DJs;I86 zrlzKb+S*#`>guSkucx7*fyTy0nwpyU{{1^Ye*B=hxtX6ofAZ_sFMj|2&7VJiAW`_V zi7kJDpb25iBv=Sh>)b*L?pn7(C<>8Av}iRFYFa%-&aL9s{!iO-CbAKh|M4xO$U#*8 Glm7+N`mIy| literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_ships.16x24x16.bmp b/apps/plugins/bitmaps/native/invadrox_ships.16x24x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..54cd36a98bad90a939f286f557ff985b443f142b GIT binary patch literal 454 zcmah_ISzm@3=4<>i3KsSb>$rlZ2XDW@hplHCxx<5k)uxRgs%J9h@B07fsL>k)<_R8 za-cp9w9XK^lrBkElAJSuw#8=$xixShbXLQ{hAoKS-El~%DsmyNFLde1n>azeEZ sXX=tvQE`)x2?{@wUaq?XWK?>|UgP-&YybcN literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_ufo.11x5x16.bmp b/apps/plugins/bitmaps/native/invadrox_ufo.11x5x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..aa94c5842e3c7bacaa095c3d529b4094a526c5d9 GIT binary patch literal 130 zcmZ?rZDN1`Hz1_}#N0s43dD>I96*wR!3KzhfPx^*0v3S~^78)}cQ_Yp6ozjyGm5mVlt_EoM2J#GgLY|3D3WBS%!W}`Mx`BT@0~W4N)Z}XMO1_a zk?+U#ecyAP=e+0K=l$#aam;PKMCg*P;MEdTQUZ$#EQCZCHx^`h0qnE@{x2aRA%um6 z>DH|qA|fJ)ii#p8CWg4UI1&;PNJ>i5y?b}0q@<9RmPSTK23c8Idi3Z)&z?PzlaoVU zUY=gPdZD18K=0nY>C>kVef##MU%!6z@82IqMMad9lu%YyMny#hRaI363>bi#ni>NK z4rI`vL8z;%GkEY|G&D5O)YN3ikRfPkX)$!@P=*Z~#_-|888Ko6BS(&8)TmL69zB{d zW5zIc>{!N)8^`$ZvTvB}x-EnCL&<;z*IVg)N#uEg2dnN_P+;o{=L>eZ`pb#=wf%?)>V zch;;~!`iiL@$m4#)6(=4r<;D8->+$yXX2XUJ`1ts+apOjOeSPus^TXfYpMZb> z0s{jH3JM}PIG9bFHW3mM!sgAJ*|KE|p`oFKg@q9w9!^9=1d)-EL`6lhb?a8PZQI87 z?c3S0V+YaE(Zs~W5E~myTwEMGckX1@u3f~($CHqdKw@GdNl8g0CnvLe_ij>BQb;p?HbpwU+2b+8{E8klUuiLar^dda&mIGbLS3s@80F!y?flhf1d{r z9`NwtLmoYPL~d>_d3kv}e*BmxPoD7f=~MFa^Lh5{8PA_T=f#T`6ciNj^5sijy?RAq zVIf6DMZA9fn&RSON=iy7EiL8En>W0D`<8d_-tqqZd&feSJL*4Gnz%{+-6gMw*(M zXl`!i$B!TU{P~k#zkc!i_itKST4-%;<@y_TR|BJhRc6D9VKUI5^$p8QV literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_ufo.16x7x16.bmp b/apps/plugins/bitmaps/native/invadrox_ufo.16x7x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2ec749a6b5a5a5165d546af124b53d0918329709 GIT binary patch literal 182 zcmZ?r-Npa`Za_){hy{R{9f%njIDjMrLje#AaYHZ*SOh}I%l~7L|0mDz|NnoG03%Ea g!eC?s(hv-00QpD&B!i4VN)Z5T5*im|0~mlM0X1<5Hvj+t literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_ufo_explode.14x5x16.bmp b/apps/plugins/bitmaps/native/invadrox_ufo_explode.14x5x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ef048fb85bbdeff58465afac99e8e5ee2e46af9c GIT binary patch literal 150 zcmZ?royGtGZa_){i1~n+6^I!bIDjMrLjVv9aYHZ*SOh}I%l~7L|0mDz|NnoGVlaSG cATA>VBZvnR0r9{>APTCO5iADR2oVR9011u<$p8QV literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_ufo_explode.14x5x2.bmp b/apps/plugins/bitmaps/native/invadrox_ufo_explode.14x5x2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4a81a79f3d2955712f772c75115a5a4694aff259 GIT binary patch literal 1158 zcmYL}cT^926vjVMiIhZE5hX%NA}vxHQfVloT~=imQ6U*2O$`+-4NCSXqhyqk-LPkg zgrX3_`zyWgd(U~k&-eM9``5kaTtmwcVcJVm;L3uZq(CA92_e?btp%^N_+JU&eh*61qB5Z6%`pebSO$nN(>t|jN!wFqpYmVh!G?U0rc=bHm-;9S;u==FXkVym|AOKYu<87A#=l!i9KxdgA5fg}1jiixw?n z@#4iSS+azsOP8{2*)o z0s{kCyLK(>)~#dx`t<|_1+ihn27-fw*|>2dn>KA?^XAQL*|LR@kPxVz! z&!?cEfYYZ>bLPw$&YnHXxpU_zEG(p`sEG6D&r@7n%!LaVxOnj*mo8o6^5x5vl$20f zTFR9xSGaohD%Y-E_d ztgNJ}s*3yf@AKfn10Ftn$fHM(c>MS=Po6yC>C>k?d-jay&!6++#S31(e95a;OEbuw6?bL>(?)S|NhONKYt+i?-}T@ bwwNmzwgCQ1+EP1evySGrZFGeHTid}u211Wc literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/invadrox_ufo_explode.21x8x16.bmp b/apps/plugins/bitmaps/native/invadrox_ufo_explode.21x8x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1f68fb329f7dccbf0dad62a34ebdaaf03bf18f12 GIT binary patch literal 262 zcmX|4K?;B{3~NC|@FsZf)pvOC=AV7pW|FQ8q@+ul-S6rqJeU`Ff*a_XW*_viCl}~K zM6+mNy>~pZq$r`-sP?p`Us(sJM@%Q!7}tsHX)+Bk&%tyRt3e|>WDS|m)uPL> 160p playfield. * * LIVES_X 0 @@ -360,14 +357,13 @@ PLUGIN_HEADER * Lives and Level goes inside bottom border */ -#define TINY_GRAPHICS +#define SMALL_GRAPHICS #define PLAYFIELD_X 0 #define SHIP_Y (PLAYFIELD_Y - 2 * SHIP_HEIGHT) #define ALIEN_START_Y (UFO_Y + 10) -#define SCORENUM_X (PLAYFIELD_X + SCORE_WIDTH + NUMBERS_WIDTH + NUM_SPACING) +#define SCORENUM_X (PLAYFIELD_X + 6 * NUMBERS_WIDTH + 5 * NUM_SPACING) #define SCORENUM_Y SCORE_Y #define HISCORENUM_X (LCD_WIDTH - PLAYFIELD_X - 4 * NUMBERS_WIDTH - 3 * NUM_SPACING) -#define HISCORE_X (HISCORENUM_X - NUMBERS_WIDTH - NUM_SPACING - HISCORE_WIDTH) #define SHIELD_Y (SHIP_Y - SHIP_HEIGHT - SHIELD_HEIGHT) #define LIVES_X 0 #define MAX_X 75 @@ -410,7 +406,6 @@ PLUGIN_HEADER #define SCORE_Y 80 #define SCORENUM_X (PLAYFIELD_X + NUMBERS_WIDTH) #define SCORENUM_Y SCORE_Y + (2 * (FONT_HEIGHT + 1) + 1) -#define HISCORE_X (LCD_WIDTH - PLAYFIELD_X - HISCORE_WIDTH) #define HISCORENUM_X (LCD_WIDTH - PLAYFIELD_X - 1 - 6 * NUMBERS_WIDTH - 5 * NUM_SPACING) #define SHIELD_Y (PLAYFIELD_Y - 6 * SHIP_HEIGHT) #define LIVES_X 10 @@ -447,125 +442,72 @@ PLUGIN_HEADER #define SHIP_Y (PLAYFIELD_Y - 2 * SHIP_HEIGHT) #define ALIEN_START_Y (UFO_Y + 10) #define SCORENUM_Y SCORE_Y -#define SCORENUM_X (PLAYFIELD_X + SCORE_WIDTH + NUMBERS_WIDTH + NUM_SPACING) +#define SCORENUM_X (PLAYFIELD_X + 6 * NUMBERS_WIDTH + 6 * NUM_SPACING) #define HISCORENUM_X (LCD_WIDTH - PLAYFIELD_X - 4 * NUMBERS_WIDTH - 3 * NUM_SPACING) -#define HISCORE_X (HISCORENUM_X - NUMBERS_WIDTH - NUM_SPACING - HISCORE_WIDTH) #define SHIELD_Y (PLAYFIELD_Y - 5 * SHIP_HEIGHT) #define LIVES_X 8 #define MAX_X 95 #define MAX_Y 15 + #else #error INVADROX: Unsupported LCD type #endif +/* bitmaps */ +#include "pluginbitmaps/invadrox_background.h" + +/* get dimensions for later use from the bitmaps */ +#include "pluginbitmaps/invadrox_aliens.h" +#include "pluginbitmaps/invadrox_ships.h" +#include "pluginbitmaps/invadrox_bombs.h" +#include "pluginbitmaps/invadrox_alien_explode.h" +#include "pluginbitmaps/invadrox_shield.h" +#include "pluginbitmaps/invadrox_ufo.h" +#include "pluginbitmaps/invadrox_ufo_explode.h" +#include "pluginbitmaps/invadrox_numbers.h" +#include "pluginbitmaps/invadrox_fire.h" +#define ALIEN_WIDTH (BMPWIDTH_invadrox_aliens/2) +#define ALIEN_HEIGHT (BMPHEIGHT_invadrox_aliens/3) +#define SHIP_WIDTH BMPWIDTH_invadrox_ships +#define SHIP_HEIGHT (BMPHEIGHT_invadrox_ships/3) +#define BOMB_WIDTH (BMPWIDTH_invadrox_bombs/3) +#define BOMB_HEIGHT (BMPHEIGHT_invadrox_bombs/6) +#define ALIEN_EXPLODE_WIDTH BMPWIDTH_invadrox_alien_explode +#define ALIEN_EXPLODE_HEIGHT BMPHEIGHT_invadrox_alien_explode +#define SHIELD_WIDTH BMPWIDTH_invadrox_shield +#define SHIELD_HEIGHT BMPHEIGHT_invadrox_shield +#define UFO_WIDTH BMPWIDTH_invadrox_ufo +#define UFO_HEIGHT BMPHEIGHT_invadrox_ufo +#define UFO_EXPLODE_WIDTH BMPWIDTH_invadrox_ufo_explode +#define UFO_EXPLODE_HEIGHT BMPHEIGHT_invadrox_ufo_explode +#define NUMBERS_WIDTH (BMPWIDTH_invadrox_numbers/10) +#define FONT_HEIGHT BMPHEIGHT_invadrox_numbers +#define FIRE_WIDTH BMPWIDTH_invadrox_fire +#define FIRE_HEIGHT BMPHEIGHT_invadrox_fire /* Defines common to each "graphic type" */ #ifdef ARCADISH_GRAPHICS -#define STRIDE 71 -#define SHIP_SRC_X 24 -#define SHIP_WIDTH 16 -#define SHIP_HEIGHT 8 #define SHOT_HEIGHT 5 -#define ALIEN_WIDTH 12 -#define ALIEN_EXPLODE_SRC_X 52 -#define ALIEN_EXPLODE_SRC_Y 39 -#define ALIEN_EXPLODE_WIDTH 13 -#define ALIEN_EXPLODE_HEIGHT 7 -#define ALIEN_HEIGHT 8 #define ALIEN_SPACING 4 #define ALIEN_SPEED 2 -#define UFO_SRC_X 40 -#define UFO_WIDTH 16 -#define UFO_HEIGHT 7 -#define UFO_EXPLODE_WIDTH 21 -#define UFO_EXPLODE_HEIGHT 8 #define UFO_SPEED 1 -#define FONT_HEIGHT 7 -#define LEVEL_SRC_Y 24 -#define LEVEL_WIDTH 37 -#define SCORE_SRC_X 24 -#define SCORE_SRC_Y 31 -#define SCORE_WIDTH 37 -#define HISCORE_WIDTH 61 #define NUM_SPACING 3 -#define NUMBERS_SRC_Y 38 -#define NUMBERS_WIDTH 5 -#define SHIELD_SRC_X 40 -#define SHIELD_SRC_Y 15 -#define SHIELD_WIDTH 22 -#define SHIELD_HEIGHT 16 -#define FIRE_WIDTH 8 -#define FIRE_HEIGHT 8 #define FIRE_SPEED 8 -#define BOMB_SRC_X 62 -#define BOMB_WIDTH 3 -#define BOMB_HEIGHT 7 #define BOMB_SPEED 3 #define ALIENS 11 -unsigned char fire_sprite[FIRE_HEIGHT] = { - (1 << 7) | (0 << 6) | (0 << 5) | (0 << 4) | (1 << 3) | (0 << 2) | (0 << 1) | 1, - (0 << 7) | (0 << 6) | (1 << 5) | (0 << 4) | (0 << 3) | (0 << 2) | (1 << 1) | 0, - (0 << 7) | (1 << 6) | (1 << 5) | (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1) | 0, - (1 << 7) | (1 << 6) | (1 << 5) | (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1) | 1, - (0 << 7) | (1 << 6) | (1 << 5) | (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1) | 1, - (0 << 7) | (1 << 6) | (1 << 5) | (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1) | 0, - (0 << 7) | (0 << 6) | (1 << 5) | (0 << 4) | (0 << 3) | (1 << 2) | (0 << 1) | 0, - (1 << 7) | (0 << 6) | (0 << 5) | (1 << 4) | (0 << 3) | (0 << 2) | (0 << 1) | 1 -}; -#elif defined TINY_GRAPHICS +#elif defined SMALL_GRAPHICS -#define STRIDE 53 -#define SHIP_SRC_X 16 -#define SHIP_WIDTH 10 -#define SHIP_HEIGHT 5 #define SHOT_HEIGHT 4 -#define ALIEN_WIDTH 8 -#define ALIEN_HEIGHT 5 -#define ALIEN_EXPLODE_SRC_X 40 -#define ALIEN_EXPLODE_SRC_Y 26 -#define ALIEN_EXPLODE_WIDTH 10 -#define ALIEN_EXPLODE_HEIGHT 5 #define ALIEN_SPACING 3 #define ALIEN_SPEED 2 -#define UFO_SRC_X 26 -#define UFO_WIDTH 11 -#define UFO_HEIGHT 5 -#define UFO_EXPLODE_WIDTH 14 -#define UFO_EXPLODE_HEIGHT 5 #define UFO_SPEED 1 -#define FONT_HEIGHT 5 -#define LEVEL_SRC_Y 15 -#define LEVEL_WIDTH 29 -#define NUMBERS_WIDTH 4 #define NUM_SPACING 2 -#define SCORE_SRC_X 17 -#define SCORE_SRC_Y 20 -#define SCORE_WIDTH 28 -#define HISCORE_WIDTH 45 -#define NUMBERS_SRC_Y 25 -#define SHIELD_SRC_X 29 -#define SHIELD_SRC_Y 10 -#define SHIELD_WIDTH 15 -#define SHIELD_HEIGHT 10 -#define FIRE_WIDTH 6 -#define FIRE_HEIGHT 6 #define FIRE_SPEED 6 -#define BOMB_SRC_X 44 -#define BOMB_WIDTH 3 -#define BOMB_HEIGHT 5 #define BOMB_SPEED 2 #define ALIENS 11 -unsigned char fire_sprite[FIRE_HEIGHT] = { - (1 << 5) | (0 << 4) | (0 << 3) | (1 << 2) | (0 << 1) | 1, - (0 << 5) | (1 << 4) | (0 << 3) | (0 << 2) | (0 << 1) | 0, - (0 << 5) | (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1) | 0, - (0 << 5) | (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1) | 1, - (0 << 5) | (1 << 4) | (0 << 3) | (0 << 2) | (1 << 1) | 0, - (1 << 5) | (0 << 4) | (1 << 3) | (0 << 2) | (0 << 1) | 1 -}; #else #error Graphic type not defined @@ -643,19 +585,6 @@ fb_data screen_green, screen_white; /* For optimization, precalculate startoffset of each scanline */ unsigned int ytab[LCD_HEIGHT]; -/* external bitmaps */ -extern const fb_data invadrox[]; -#if (LCD_WIDTH == 320) && (LCD_HEIGHT == 240) -/* iPod Video only */ -extern const fb_data invadrox_left[]; -extern const fb_data invadrox_right[]; -#endif -#if ((LCD_WIDTH == 240) && (LCD_HEIGHT == 320)) || ((LCD_WIDTH == 176) && (LCD_HEIGHT == 220)) -/* Gigabeat F, Sansa e200 */ -extern const fb_data invadrox_logo[]; -#endif - - int lives = 2; int score = 0; int scores[3] = { 30, 20, 10 }; @@ -716,8 +645,9 @@ void draw_number(int x, int y, int num, int digits) for (i = digits - 1; i >= 0; i--) { d = num % 10; num = num / 10; - rb->lcd_bitmap_part(invadrox, d * NUMBERS_WIDTH, NUMBERS_SRC_Y, - STRIDE, x + i * (NUMBERS_WIDTH + NUM_SPACING), y, + rb->lcd_bitmap_part(invadrox_numbers, d * NUMBERS_WIDTH, 0, + BMPWIDTH_invadrox_numbers, + x + i * (NUMBERS_WIDTH + NUM_SPACING), y, NUMBERS_WIDTH, FONT_HEIGHT); } /* Update lcd */ @@ -737,10 +667,7 @@ inline void draw_score(void) void draw_level(void) { - rb->lcd_bitmap_part(invadrox, 0, LEVEL_SRC_Y, - STRIDE, LEVEL_X, PLAYFIELD_Y + 2, - LEVEL_WIDTH, FONT_HEIGHT); - draw_number(LEVEL_X + LEVEL_WIDTH + 2 * NUM_SPACING, PLAYFIELD_Y + 2, level, 2); + draw_number(LEVEL_X + 2 * NUM_SPACING, PLAYFIELD_Y + 2, level, 2); } @@ -748,18 +675,18 @@ void draw_lives(void) { int i; /* Lives num */ - rb->lcd_bitmap_part(invadrox, lives * NUMBERS_WIDTH, NUMBERS_SRC_Y, - STRIDE, PLAYFIELD_X + LIVES_X, PLAYFIELD_Y + 2, + rb->lcd_bitmap_part(invadrox_numbers, lives * NUMBERS_WIDTH, 0, + BMPWIDTH_invadrox_numbers, PLAYFIELD_X + LIVES_X, PLAYFIELD_Y + 2, NUMBERS_WIDTH, FONT_HEIGHT); /* Ships */ for (i = 0; i < (lives - 1); i++) { - rb->lcd_bitmap_part(invadrox, SHIP_SRC_X, 0, STRIDE, + rb->lcd_bitmap_part(invadrox_ships, 0, 0, BMPWIDTH_invadrox_ships, PLAYFIELD_X + LIVES_X + SHIP_WIDTH + i * (SHIP_WIDTH + NUM_SPACING), PLAYFIELD_Y + 1, SHIP_WIDTH, SHIP_HEIGHT); } - /* Erase ship to the righ (if less than MAX_LIVES) */ + /* Erase ship to the right (if less than MAX_LIVES) */ if (lives < MAX_LIVES) { rb->lcd_fillrect(PLAYFIELD_X + LIVES_X + SHIP_WIDTH + i * (SHIP_WIDTH + NUM_SPACING), PLAYFIELD_Y + 1, SHIP_WIDTH, SHIP_HEIGHT); @@ -775,8 +702,8 @@ inline void draw_aliens(void) int i; for (i = 0; i < 5 * ALIENS; i++) { - rb->lcd_bitmap_part(invadrox, aliens[i].x & 1 ? ALIEN_WIDTH : 0, aliens[i].type * ALIEN_HEIGHT, - STRIDE, PLAYFIELD_X + LIVES_X + aliens[i].x * ALIEN_SPEED, + rb->lcd_bitmap_part(invadrox_aliens, aliens[i].x & 1 ? ALIEN_WIDTH : 0, aliens[i].type * ALIEN_HEIGHT, + BMPWIDTH_invadrox_aliens, PLAYFIELD_X + LIVES_X + aliens[i].x * ALIEN_SPEED, ALIEN_START_Y + aliens[i].y * ALIEN_HEIGHT, ALIEN_WIDTH, ALIEN_HEIGHT); } @@ -912,9 +839,9 @@ bool move_aliens(void) /* Draw alien at new pos */ x = PLAYFIELD_X + LIVES_X + aliens[curr_alien].x * ALIEN_SPEED; y = ALIEN_START_Y + aliens[curr_alien].y * ALIEN_HEIGHT; - rb->lcd_bitmap_part(invadrox, + rb->lcd_bitmap_part(invadrox_aliens, aliens[curr_alien].x & 1 ? ALIEN_WIDTH : 0, aliens[curr_alien].type * ALIEN_HEIGHT, - STRIDE, x, y, ALIEN_WIDTH, ALIEN_HEIGHT); + BMPWIDTH_invadrox_aliens, x, y, ALIEN_WIDTH, ALIEN_HEIGHT); if (!next_alien()) { /* Round finished. Set curr_alien to first alive from bottom. */ @@ -941,8 +868,8 @@ inline void draw_ship(void) } /* Draw ship */ - rb->lcd_bitmap_part(invadrox, SHIP_SRC_X, ship_frame * SHIP_HEIGHT, - STRIDE, ship_x, SHIP_Y, SHIP_WIDTH, SHIP_HEIGHT); + rb->lcd_bitmap_part(invadrox_ships, 0, ship_frame * SHIP_HEIGHT, + BMPWIDTH_invadrox_ships, ship_x, SHIP_Y, SHIP_WIDTH, SHIP_HEIGHT); if (ship_hit) { /* Alternate between frame 1 and 2 during hit */ ship_frame_counter++; @@ -962,22 +889,15 @@ inline void draw_ship(void) inline void fire_alpha(int xc, int yc, fb_data color) { - int x, y; - unsigned char mask; + int oldmode = rb->lcd_get_drawmode(); rb->lcd_set_foreground(color); - - for (y = 0; y < FIRE_HEIGHT; y++) { - mask = 1 << (FIRE_WIDTH - 1); - for (x = -(FIRE_WIDTH / 2); x < (FIRE_WIDTH / 2); x++) { - if (fire_sprite[y] & mask) { - rb->lcd_drawpixel(xc + x, yc + y); - } - mask >>= 1; - } - } + rb->lcd_set_drawmode(DRMODE_FG); + + rb->lcd_mono_bitmap(invadrox_fire, xc - (FIRE_WIDTH/2), yc, FIRE_WIDTH, FIRE_HEIGHT); rb->lcd_set_foreground(LCD_BLACK); + rb->lcd_set_drawmode(oldmode); } @@ -1041,8 +961,8 @@ void move_fire(void) fire_target = TARGET_UFO; /* Center explosion */ ufo_x -= (UFO_EXPLODE_WIDTH - UFO_WIDTH) / 2; - rb->lcd_bitmap_part(invadrox, UFO_SRC_X, UFO_HEIGHT, - STRIDE, ufo_x, UFO_Y - 1, UFO_EXPLODE_WIDTH, UFO_EXPLODE_HEIGHT); + rb->lcd_bitmap(invadrox_ufo_explode, ufo_x, UFO_Y - 1, + UFO_EXPLODE_WIDTH, UFO_EXPLODE_HEIGHT); return; } } @@ -1125,8 +1045,8 @@ void move_fire(void) /* Paralyze aliens S_EXPLODE frames */ aliens_paralyzed = S_EXPLODE; - rb->lcd_bitmap_part(invadrox, ALIEN_EXPLODE_SRC_X, ALIEN_EXPLODE_SRC_Y, - STRIDE, PLAYFIELD_X + LIVES_X + aliens[i].x * ALIEN_SPEED, + rb->lcd_bitmap(invadrox_alien_explode, + PLAYFIELD_X + LIVES_X + aliens[i].x * ALIEN_SPEED, ALIEN_START_Y + aliens[i].y * ALIEN_HEIGHT, ALIEN_EXPLODE_WIDTH, ALIEN_EXPLODE_HEIGHT); /* Since alien is 1 pixel taller than explosion sprite, erase bottom line */ @@ -1187,9 +1107,9 @@ inline int random_bomber(void) inline void draw_bomb(int i) { - rb->lcd_bitmap_part(invadrox, BOMB_SRC_X + bombs[i].type * BOMB_WIDTH, - bombs[i].frame * (BOMB_HEIGHT + 1), - STRIDE, bombs[i].x, bombs[i].y, + rb->lcd_bitmap_part(invadrox_bombs, bombs[i].type * BOMB_WIDTH, + bombs[i].frame * BOMB_HEIGHT, + BMPWIDTH_invadrox_bombs, bombs[i].x, bombs[i].y, BOMB_WIDTH, BOMB_HEIGHT); /* Advance frame */ bombs[i].frame++; @@ -1288,8 +1208,9 @@ void move_bombs(void) ship_frame_counter = 0; bombs[i].state = S_EXPLODE * 4; bombs[i].target = TARGET_SHIP; - rb->lcd_bitmap_part(invadrox, SHIP_SRC_X, 1 * SHIP_HEIGHT, STRIDE, - ship_x, SHIP_Y, SHIP_WIDTH, SHIP_HEIGHT); + rb->lcd_bitmap_part(invadrox_ships, 0, 1 * SHIP_HEIGHT, + BMPWIDTH_invadrox_ships, ship_x, SHIP_Y, + SHIP_WIDTH, SHIP_HEIGHT); break; } /* Shield hit */ @@ -1399,8 +1320,7 @@ void move_ufo(void) break; } /* Draw new pos */ - rb->lcd_bitmap_part(invadrox, UFO_SRC_X, 0, - STRIDE, ufo_x, UFO_Y, UFO_WIDTH, UFO_HEIGHT); + rb->lcd_bitmap(invadrox_ufo, ufo_x, UFO_Y, UFO_WIDTH, UFO_HEIGHT); break; case S_SHOWSCORE: @@ -1438,20 +1358,7 @@ void move_ufo(void) void draw_background(void) { -#if (LCD_WIDTH == 320) && (LCD_HEIGHT == 240) - /* Erase background to black */ - rb->lcd_fillrect(PLAYFIELD_X, 0, PLAYFIELD_WIDTH, LCD_HEIGHT); - /* Left and right bitmaps */ - rb->lcd_bitmap(invadrox_left, 0, 0, PLAYFIELD_X, LCD_HEIGHT); - rb->lcd_bitmap(invadrox_right, LCD_WIDTH - PLAYFIELD_X, 0, PLAYFIELD_X, LCD_HEIGHT); -#else - rb->lcd_fillrect(0, 0, LCD_WIDTH, LCD_HEIGHT); -#endif - -#if ((LCD_WIDTH == 240) && (LCD_HEIGHT == 320)) || ((LCD_WIDTH == 176) && (LCD_HEIGHT == 220)) - rb->lcd_bitmap(invadrox_logo, 0, 0, LCD_WIDTH, SCORE_Y); -#endif - + rb->lcd_bitmap(invadrox_background, 0, 0, LCD_WIDTH, LCD_HEIGHT); rb->lcd_update(); } @@ -1468,12 +1375,6 @@ void new_level(void) draw_lives(); /* Score */ - rb->lcd_bitmap_part(invadrox, SCORE_SRC_X, SCORE_SRC_Y, - STRIDE, PLAYFIELD_X, SCORE_Y, SCORE_WIDTH, FONT_HEIGHT); - /* Hi-score */ - rb->lcd_bitmap_part(invadrox, 0, SCORE_SRC_Y, - STRIDE, HISCORE_X, SCORE_Y, - HISCORE_WIDTH, FONT_HEIGHT); draw_score(); draw_number(HISCORENUM_X, SCORENUM_Y, hiscore.score, 4); @@ -1539,7 +1440,7 @@ void new_level(void) /* 4 shields */ for (i = 1; i <= 4; i++) { - rb->lcd_bitmap_part(invadrox, SHIELD_SRC_X, SHIELD_SRC_Y, STRIDE, + rb->lcd_bitmap(invadrox_shield, PLAYFIELD_X + i * PLAYFIELD_WIDTH / 5 - SHIELD_WIDTH / 2, SHIELD_Y, SHIELD_WIDTH, SHIELD_HEIGHT); }