From 3a2bfa9f019c42a9a894bf597322c7e5c04ee6cf Mon Sep 17 00:00:00 2001 From: pixelma 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 + apps/plugins/bitmaps/mono/invadrox_fire.6x6x1.bmp | Bin 0 -> 86 bytes apps/plugins/bitmaps/mono/invadrox_fire.8x8x1.bmp | Bin 0 -> 94 bytes apps/plugins/bitmaps/native/SOURCES | 67 ++++-- apps/plugins/bitmaps/native/invadrox.160x128x2.bmp | Bin 934 -> 0 bytes .../plugins/bitmaps/native/invadrox.176x132x16.bmp | Bin 938 -> 0 bytes .../plugins/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 .../bitmaps/native/invadrox_aliens.16x15x16.bmp | Bin 0 -> 310 bytes .../bitmaps/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 .../bitmaps/native/invadrox_left.320x240x16.bmp | Bin 5830 -> 0 bytes .../bitmaps/native/invadrox_logo.176x220x16.bmp | Bin 12886 -> 0 bytes .../bitmaps/native/invadrox_logo.240x320x16.bmp | Bin 19766 -> 0 bytes .../bitmaps/native/invadrox_numbers.40x5x16.bmp | Bin 0 -> 270 bytes .../bitmaps/native/invadrox_numbers.50x7x16.bmp | Bin 0 -> 434 bytes .../bitmaps/native/invadrox_right.320x240x16.bmp | Bin 5830 -> 0 bytes .../bitmaps/native/invadrox_shield.15x10x16.bmp | Bin 0 -> 230 bytes .../bitmaps/native/invadrox_shield.15x10x2.bmp | Bin 0 -> 1238 bytes .../bitmaps/native/invadrox_shield.22x16x16.bmp | Bin 0 -> 454 bytes .../bitmaps/native/invadrox_ships.10x15x16.bmp | Bin 0 -> 250 bytes .../bitmaps/native/invadrox_ships.10x15x2.bmp | Bin 0 -> 1258 bytes .../bitmaps/native/invadrox_ships.16x24x16.bmp | Bin 0 -> 454 bytes .../bitmaps/native/invadrox_ufo.11x5x16.bmp | Bin 0 -> 130 bytes .../plugins/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 .../bitmaps/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 a109405bc..63ac5adf7 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 zcwTez4P$@+J0R8oVm2sd1VRvy0Ae9-2xekHfdBvhGgJWS79jQk;uApJ1H=(P3;_2g B2cG}{ literal 0 HcwPel00001 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 zcwTezjbnfSJ0R8oVh$)~1VRu{0Ae9-2xekHfdBvhGn4`8!$8~!#Lhr`2#A}3_#hCc G0WknbQ3)sj literal 0 HcwPel00001 diff --git a/apps/plugins/bitmaps/native/SOURCES b/apps/plugins/bitmaps/native/SOURCES index 357480afc..92521d7e0 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 HcwPel00001 literal 934 zcwTK%K~e)T3{wm@F4^G$7@zn6ALyN5@HP(pWRYYq)9H|{w^`egWha-fpC@=-Xdkps z+8b@*+5T_FUtijkI_bDxuejZA_-_TD)PF`*MIkG>*LNZ#lv7OMh6!@}Ly!F0GY^%- zl@Q{gTk)(&VPbpq(YZ`wmMog8Im?az?KogW!fkawSZA#3nN6{BjBdZIe118&UeQ`yGF$sy zY&gAHF7+3)7SE5*!h!vOn*kU0-s_-( ztUgu=#a?SWI5^hgMJwu551U}3%UYz-m!;X*rE%T+T)d7*?83Pse23GWonp~*A<*%& i>u#>*Y^|knl<7YDiW?KY{sNpcX&mM*j)obR4;sIC$17L> 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 HcwPel00001 literal 938 zcwTK%K~BUl40LL4TvG9XMm=$~u=oH6Zv2AR@yK0f#$L2qku+`U@z@hPA74Li8lPCN zSnpT|*03kpzk$Cz*P^AY@HsAaTn@WlulC^3`r)LV zd-z!fcu5B1z)U>SgT8n(hbyow{3%~J!Hdf)RK-kbLLh9C5}g($u&#t8Nn#s}`plcr zB*y5NUgy1GGMnG!Q!=qrVd#LEeICYoI~Ux})5HkVvFbdw-LT51Xv9(&%z8JO6^)em#C)7As83!Jvr+8*+uTkKeXW0KFYx}YAlmL4leJymO0J4L9`Evaf5`Lslz$f$6I0CU;^xsTUfkj}9y}%q z0ALFXd(>$0YLZpRf$qTY(Lr@!V8JS$%%JJAQ3PDDSVFa!R(8C zeVCYZkb+505ey!Mu_igQKnkyn_}Q`UL~3FaE_SWDmhYIwPK=!x^1*wz(pWme{!#11 zRIa6Bf9=nKNuF16rB*Sy-F!lybI>;D6utPcB#pKcliMQKRj-%{$i_K0QT}AjxiBNA zJI{)vFspEL{tvTw5KHFPK4P?Xq+^OU>E^g$Xjj8dMP(%O#*;!c=BbepDB129XkE${ zGBT6x%4LIj{J;TBm+kn6>y+@~tAtKgz za=1Ivfxbs+U3SGqg+uO4H+L+gqO{(70Nc8rEGMlP;4-w}kJQzXt#*8AHR{2y$`2G1 zwo)g111dZ!Zq+*edSYnXX-yw^*AaPO!dpZo6+3g7nLIGPib&=#_iBv^8Ex-uBIk8$ eYs4RCNQ>sh-dGrSfF{@$byk)nTo~n)`j;MS+k3sY=dS@IHiyI-6-VUPNGf70*ce2 zyVUVq$9o-bbv%@(b)l|*Jg$R(v25%`uJPY(6_0et$nbf`#-nl;~9L3DaA}PY b6WWU$CN#lWEZMOi*3vnICUTh21aIgIlwC2; literal 0 HcwPel00001 diff --git a/apps/plugins/bitmaps/native/invadrox_background.176x132x16.bmp b/apps/plugins/bitmaps/native/invadrox_background.176x132x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4a61deb37d81654c1c1851236e18efc960c91f58 GIT binary patch literal 69750 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 j6A2-N5JCtcgb+dqA%qY@2qAim)3KLtmviF z)M&wqePC9lm!c1D)RVL8^(3uY|KG|ys!Mv3R;|6HC)rx1mu5f5mHO;@0000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000004j$a_^G7{5h&i zY2Tt#O7Uq&qV-LA^gMYe-B#tP*434_COW++iJZNK*80!hTK&Z8Yfkkg=e!5k>dDf- zytUjLh0)@uj`o?&_bCreXP2*!!ZarjZ>p^8n@1aNYROwfd23DmWR{=RlG};$*829A pJk_;ow&=;N>tB(3m*lw+<QdPLFsraTv-e7e=vz5qYT8IJ$} literal 0 HcwPel00001 diff --git a/apps/plugins/bitmaps/native/invadrox_background.240x320x16.bmp b/apps/plugins/bitmaps/native/invadrox_background.240x320x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6a6c2418e7ebe5cd3accd971b5314f30eeb541ce GIT binary patch literal 230454 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 tC8~im*E#_J00000000000000000000000000000000000008_O@&8ed0?hyb literal 0 HcwPel00001 diff --git a/apps/plugins/bitmaps/native/invadrox_background.320x240x16.bmp b/apps/plugins/bitmaps/native/invadrox_background.320x240x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0bc47ea0358066b8b0a81bbac224fdd38f9fee06 GIT binary patch literal 230454 zcwX(+F-{vn7=Y15>7$e!A#ED!D18o*yW||XOfHlz<;DSl7VKGUjKQDvo@_DvJ6a*n ze!}0r-~9YA{dco@f8M;mUQN@V&Cjdp`gT5TuK)fx-M%0E{j&S@>-y>I$EO`H;21lz z+OBWZseXAA^JCA>AFggsUT~lDrC$n0O|7@KPtoi1bEjVlUeMj$r6(I+aG$fLUkX;b z8-3{=^}BPwe)Y@g9QuEAIUlW;^s8S^=g{u-t6$E?N_RWI60fYE-Cv?#=+ZBA=@+{6 z3tjq!F8xB6exXah(4}AK(l2!B7rOKdUHXMC{X&<1p-aEerC;dMFLdb_y7UWO`h_n2 zLYID_OTW;iU+B^=bm zeRj@yWAkI%SNGpP8cw^+j~|lddj0038y@Sj`rYSaAI%S4^N!XJW&dN^=fN1w4_%+c z<@S5(HSg#Y{hoS#5|`EQbo+_jIc7dDjON?7;?2zCMh-ol(f)(x^TKGpeXCb+T)+PS D{U$r7 literal 0 HcwPel00001 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 zcwTezUB}1(25vyC0mPg@EC;wb44}LaHw3dVAb`C5KL+`K@(lm~|7V~AU?z>t z%nai&Ba1U5*hu2cSk*Hlsb@wJN2o^?M^euW7iUIMk0MUcd}b7JX1IDZab~FP3;D?vOJvUeeGjrF7kwhT?1iQ$Qau2N>$2 zei)*0xX==hwT`T__l@Sg+nLic>(MGhWkS|AoMm441q{Zd4wC(b#g{^I8{Hx-_g WgZviNUup*~DsswvsNKqZWd8}8&Iw@v literal 0 HcwPel00001 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 HcwPel00001 literal 5830 zcwX(vp$&jQ5Jb@-!C}~t;4rI@5IR8MD1uI?gmS0{gJ-!jcX`%wn|%~J{qDc uDpV%l<8P|mD_LWkNk=E$qo$aza2&^R9LI4S$8j9TaU92S{Et8P{$uL^ 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 HcwPel00001 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 HcwPel00001 literal 19766 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 diff --git a/apps/plugins/bitmaps/native/invadrox_numbers.40x5x16.bmp b/apps/plugins/bitmaps/native/invadrox_numbers.40x5x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..47ec462136e0b34869d4bd1cb35f47435a607973 GIT binary patch literal 270 zcwSYGOAdfA2t=o;CMG6bcmcMa!-YHV?WtNR3~432Kp8&0o|0g8D<@f%gw5)&a_r86 zVImb$1+6t8=Z;yA`e3j$baT+biBKmcPpP+YAKS;h-%>=*^>Nkf^Bn)jagUu36BG#Q literal 0 HcwPel00001 diff --git a/apps/plugins/bitmaps/native/invadrox_numbers.50x7x16.bmp b/apps/plugins/bitmaps/native/invadrox_numbers.50x7x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5245f60e371e56f71b38a1fa02f87a5d8c334470 GIT binary patch literal 434 zcwTK#K@P((2y^91o3z_LkZaF-!VbIbCwtu<*p$Wum^2h40tTEs-`@qpUWU!^FkB1^ zt|R}k`u!%XNNa6J+Z%fC07*I0{YhadK$)K+I8R&+!X`%w#r+gJ{qDc uN~*H&@i%qpm7=lDq@$DWQJ*C1un8X79fDy3}}G8^pYNRS$7f_wDoDF@+ft(~CEG08W&woT`@}X&i~a4k^0x#8 z1nAJA106edL{LzWPMta-BqT)V&Yck!7Dhxw1W{2@#Kgqt(xnUH;^Ih1NFXUGiIkKS zUAuNgT3Q+z85v|{W$D(f8{NBiM@~)-d3kwy^yop)o;~T+s~5d{_oh#uJ}4+Cps1)w z-@biOQc^-$S($$Q`k|ttf~u-2YHDhztE;1-p@F8RCR$or^zYxF0RsjwaNs}&4I0GY z!GjqxWC+^Y+UV%$Fm&iph7B9W@ZrPJ)zxLhh!Kn&Ig(MMMlpKyXvT~g!`QK7(bLmI zUtb>s0|N{V4H-9X97aY)j2}N9V`F1XOiY+CVFD8;PQ=vIlu45&VPNI)TU(|~nS!029rpJ2I5;@q=;(-(lM_>?PG#D(X-uC!of$J` zFmvWiX3d(#?Af!KGiMHS=gwu`ym`!@KObjjXBI42fQyR@uCA^uT)2=$ix%PL=7zhw zJBt@DX33HzEM2-34-XHPEnCL&<;z*IVg;U_o~&HCl2xl#;pOFpx3@Q|SFgs$$A>j* z*5K>w%i6VTS+{N-etv%V`}-3R5I|sHAnVt!XTydKY}~k!O`A5cdGltrY}vxrty|f) zZ5!LSZzm`yh~VI0LPA2=v113Jp`nC@g|TzzPQt^(*|lpIyLayoc#x!|B$AVpNl8iJ z(4j-5rlyjXmPUGdIvE)mWM*cPm6gTe!-qL?+2rKpaP;U=jvYHjZf-7ld3hW^ zew-60PH^(%Nlu+Q#p%;p?HbpwU+2b+8{E8klUuiLQB+jK?c2AxbLS4l#l_scdzX9n?s5PA zeM(A7C@n4J!Gi}peE5*EvN9e$dc@<$k9qRs3FYPGR8&;(^yyQcJ$puFWhKv_Kj+1Z z7rcD=l2@-@@%r^^-n@B3RaF&l-@fJDyLVJqS5s3{!~6H|sjaQ0uC9*y`g%Tm_`t`H zANlm@6Q4hSrlFyMFJHd!_3Kx@efvgZV;wb2B5qUHw3dVAb`C5KL+`K@(lm~|7TzV0VFvl jr~qDZCNyCtBnGlDLL3bY9dWD@D1Jl}#*{!0EEHh?n*j=R literal 0 HcwPel00001 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 zcwTjkF%Ez*3_SRLrL0PlRTL7HJ<6!81~U30D`bSCXlPNP zL>VPQk=5W!be!KgzkAMo?|q*4xz8W(AFqXVl_qzDqf`w2qIOEpv2 zY=MY~2(4PRqIK)mh>D8RrcE2f#KaI67e_)ug0^kjA}J|}l#~?G($chR*N*n>+an_* zgRHD9a&mIW%gfWDLkAQT6zJHoBZ`WObn4WJ&Ye4>q@;whvNBz|bU{T$1yxm5)YR1I z+O;d{>gs4{XrQU7Nw;p@=-$0MT3TB4=+T3oJ$s_9t&NV34!XL!^y<}%-o1OHr>BR$ zzCL~W^r3IxzVz$YkN*ApGhn~~3=9k~G&ID>$cTXh2Qp~TAdHQTF)=a0)YKF+GcyJc z9*nuUIYWjFVd&7I3>!8K3kwT|4$1`EV1SU?Lh>eX6lO|2V*47p~J3A&%o{YV{JyWJkVd~VWOq({1>C>m< z;NXCxqa#jEPRy7w17~MvTwGk3IddknX3b*u?AgqjGl#iz=i=(>ikq7o?(Xi)n>P;+ z4-e+gpO2@fCkqxVz{|^vg$oz5Xwf1TFJ8=&B}-VkbSd86-uU?Vux!~fmM>q9udgqD zetxW2v4WK=SF&o=D*XNZS-pBS0RaK5S+j<uxt!&%2jqTgF6A}_aXlN)qcI;s1&YkSqwTs=mcM}#CMtFEQ z5fKsW*|Ueed-t+$-#+&5-_L;q2Z)S}Bq}P3=;&x-Vq!RW@F0f{9pdoe!^FnMa^%Pn zjvhVAv17+Le*8Fbad8L)0#2Mb!O4>+Id$q3@$vDTK7E=qXU=f;>{-s8JIDF+=SfIN z;KGFqT)cRZOP4N@n3%}r%a^%wLk)NN> z{rmTM@ZbRj1qBoq7E)AH#KVUVdGzQJj~_p#xVV^-k`kUgc|vJvDNmn1<=L}ml$DiH zUS7`g=g)cZ;sq~XzU0-bS5#C~P+3{Y>({TTs;c76n>W0D`+5M~XrQsNk*205e*E|W zf?rQ7X#NO<^2-YT6atzH!JoU9p}(i#HxRT0T3n0$H}lVuzuD%o|MUE3&ma2})B3Gc literal 0 HcwPel00001 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 zcwUuGF%Ez*2t?vw;$ocKSbc|sn}70kKCAUYTT0c%i z{dr96sX`=>1fdus6f-^rYEr|r%IxJ*Q<^PKeR4Jp_>Ng_rrNfTQ@=SU(VAtFZ3C6N W9Uf`ReU&YK>(+38^{ZdnF1P{Q3JGig literal 0 HcwPel00001 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 zcwTezZDN1`Hz3vkVs0R21!6`94zRcl5DRfbFbe|$$jkp@kpCyo@c;jRuxbV<$%p_T O0Y(U7K*&J#!&m@Z+6Sco literal 0 HcwPel00001 diff --git a/apps/plugins/bitmaps/native/invadrox_ufo.11x5x2.bmp b/apps/plugins/bitmaps/native/invadrox_ufo.11x5x2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a1561db66d13454cb3f64c0fabd6be63813a07de GIT binary patch literal 1138 zcwR-6cUTV!6o%iX(jqe2g$k9~)RG1zD|=)UN<$?{rG=IX4a!PUM)u04C_8(Ec3Q|N zh3-%8y}swX=bYy|f1l6V$y<~T849M3U`h!P6Ci{{hi@i8Ug{45^M45m2_Y;jjEIN` zqN1XRiHRXDE>5RTosf`_KvGhY&Ye3WB_)Nlv@|j@GRVrxA}1$Dmo8oC+O;e4^73@+ z){XAnyQ83>K#v|h=-IO;y?XVcckkXPDk`F+q=d4vGAb%6sH&=>rly9vx;h#f8fa>2 z(x*=!`u6QhzkdDD($Yd(TN@o69s2k0&wv2~7&vesy1KgP>FJ@bug{=CgBUz`Fhhn6 zVd&7I3>!9#;lqbxU|@iup&>>_Mi?6#V`5^0si`R=MvTDB%nWmLb1W<@u(Y(q%F2q7 zBS&IwZOy1rqp-2D!PeFmJ3BkIK|>eQ)Bn>LN<)2B0I#tdf8oXMV zcUG=kiHC;=o}Qj~d3oXO?aiuHtMKvh!PnOpKR-WKuU?J6zdvi%tRWyEfVFGa5*QfB zx^?Ra3JM}PIGB)-5Z13>PiSZ;VPRo}hldjp5kX{RBpWttVB^M(Y}&MmsHiBSqoaw5 zi6J&Nmbkb$HgDcce0)3!2?-=7CbDJA7PfBP%C>FWNJ>f~IXRh>loV1^Q`x?KJ3Dsl zAT2G8^z?Lg?%c_)UAx%5dpCRb>|yWTy<}u$uy5Z!GBY#D%F1H@{{0*{aDeRWY;tmP zIC$_NhYlU$@ZrN8IdX*D++2UPl`B`cdi5&Tu3h8$_3PZYafAH)dgh{rWW}B_+Ih^MiV7+# zE2*lgqPn`8nwlEkzkg3{Z7p?mb=23_)6mdBV`C#9K78Qg$B%sa^ogdXCO&`u%$F}; z`1(?*Z+uH@-pVN^6zkAMK{Wfy` M6n`)O=EZ;8KUI5^$p8QV literal 0 HcwPel00001 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 zcwTez-Npa`Za}O7!~#If4#bQM9ANPRAQs|=U={`hkeC0*ApcLE;s5{t3}EF@0AVmP XGJ*&=0~Ii!AygGG1CY6J5ik<~HE{?x literal 0 HcwPel00001 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 zcwTezoyGtGZa}O7#C$-^3dD>I9ANPPAQs|=U={`hkeC0*ApcLE;s5{tAjMz+r9d$2362NJ literal 0 HcwPel00001 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 zcwSAEcQh6b6owx~M46S+GD{>bHgPuS7&d zXxFYC?c29UR8$l(F)=!H=zzGmI1&;PbnMs>Nl8hhq@?K7sS}+$cSc%T8W|ZGWMyTM zlaoVUULFMn1-f+ULf5Wc>DH|qii(PK@7|prJ$j&|q(sl2J?Yh}7rlG;rca+f^zGXh zWo2blR8&w^RYgrr4Rv*OG&D5m*RLP_`}apvQ#apFX*tgNuMw#LTB zhDnnqF?sT2Y;A3sGGz*Oc6Qj?+vDKiz|^TzaddQK+O%m*pFSNYCnsjin8D1MGjVoy z#>K@2S65eN&6lml;NjuH+_`h{^z_8b%ZqvQ<}rW%e7wEAS+HOM z3l}bA(V|88`1r7R@nU>^eev`2W66>wEM2-3e}8|LEn7xFKmdV(fh=FXoS>i}R;*Y- zaBwgySFR)^B!pF~RuLK+%Iejt2@4A&JUpC;hzKGhBU!U%4N*~1tX;d7b?er#e*Jo) zqoaw5iDAQr4aCOA5*HUoe0)3`H*RFprcG?#yqPUqwy<^URuU2t*tTsO+qZ9L$BrE& zCMJ@UltglJGCOzfWY?};?B2bbJ$v@Bckf>I?c2xx{rfp^-~a~?9^}xWL!_jnkeZrG zT3QFEdr0uCQO%#kBUIC}Ib$BrE%BO`;%%uJ3SKhB90C&qlP6Dd>eMMt zpFYi*GiS)j$ssp4m$PTja_-zY^78V?&(Eizpn&t|&r?`fNKsJ{7cN}j;>C*;7Z-Es z(j_imzRZ;?SGaohDkUW)T)TFS>({Syy@+uXTxhr4(0a_`qm9z5XT!-qV2^oYlgAM@nN6P`YO%Cl$Bc>er3FJ8Rh<;$0pmzPsfQ9)&8 zB~?{bR99E?>eVZ1YHFyht>yLW*VNV3@#f7N-oAayyLaz+|NcE6K78Qg$B)$4*YoMq zCmI?WXl!ic^XJce`SOLYU%%4S)Wo-M-}wIhJI&3_w6wI)+SQt7g8x_i2L?iqP5=M^ literal 0 HcwPel00001 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 zcwS|U!3uyd3_}wT5xfbWd-Xd!c=MnAvenwH>%fk;b!n6Ho(ZqZIE>v`4EhZ`#(lD-b_ioLq|Bc4k4fA3WthV4{R>tw2iE`q literal 0 HcwPel00001 diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c index 718cb032c..0d9473ffb 100644 --- a/apps/plugins/invadrox.c +++ b/apps/plugins/invadrox.c @@ -166,7 +166,7 @@ PLUGIN_HEADER #define UFO_Y (SCORENUM_Y + FONT_HEIGHT + ALIEN_HEIGHT) #define PLAYFIELD_Y (LCD_HEIGHT - SHIP_HEIGHT - 2) #define PLAYFIELD_WIDTH (LCD_WIDTH - 2 * PLAYFIELD_X) -#define LEVEL_X (LCD_WIDTH - PLAYFIELD_X - LIVES_X - LEVEL_WIDTH - 2 * NUMBERS_WIDTH - 3 * NUM_SPACING) +#define LEVEL_X (LCD_WIDTH - PLAYFIELD_X - LIVES_X - 2 * NUMBERS_WIDTH - 3 * NUM_SPACING) #define SHIP_MIN_X (PLAYFIELD_X + PLAYFIELD_WIDTH / 5 - SHIELD_WIDTH / 2 - SHIP_WIDTH) #define SHIP_MAX_X (PLAYFIELD_X + 4 * PLAYFIELD_WIDTH / 5 + SHIELD_WIDTH / 2) /* SCORE_Y = 0 for most targets. Gigabeat redefines it later. */ @@ -211,7 +211,6 @@ PLUGIN_HEADER #define ALIEN_START_Y (UFO_Y + 3 * ALIEN_HEIGHT) #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 @@ -248,7 +247,7 @@ 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 SHIELD_Y (SHIP_Y - SHIP_HEIGHT - SHIELD_HEIGHT) @@ -258,7 +257,6 @@ PLUGIN_HEADER #define SCORE_Y 70 #define SCORENUM_X (PLAYFIELD_X + NUMBERS_WIDTH) #define SCORENUM_Y (SCORE_Y + 2 * FONT_HEIGHT) -#define HISCORE_X (LCD_WIDTH - PLAYFIELD_X - HISCORE_WIDTH) #define HISCORENUM_X (LCD_WIDTH - PLAYFIELD_X - 1 - 6 * NUMBERS_WIDTH - 5 * NUM_SPACING) #define LIVES_X 8 #define MAX_X 75 @@ -306,14 +304,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 + 12) -#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 8 #define MAX_X 75 @@ -321,8 +318,8 @@ PLUGIN_HEADER #elif (LCD_WIDTH == 160) && (LCD_HEIGHT == 128) -/* iAudio X5, iRiver H10 20Gb, iPod 3g/4g: 160x128x16 - * ====================================== +/* iAudio X5, iRiver H10 20Gb, iPod 3g/4g, H100, M5: 160x128 + * ========================================================= * X: No padding. No border -> 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); } -- 2.11.4.GIT