From 60c3f534610aead84e76c48e358afbb6d5e5387a Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Sun, 31 Jan 2021 16:15:59 +0000 Subject: [PATCH] Add hitbox, tidy up, options to change display modes. Sprite optimisation. --- !TheEscape/!RunImage,ffb | Bin 3764 -> 4180 bytes !TheEscape/!RunImage,ffb.bas | 43 +++++++++++++++++++++-------------- !TheEscape/Spr,ff9 | Bin 65640 -> 43588 bytes README.md | 16 ++++++++++++- 4 files changed, 41 insertions(+), 18 deletions(-) diff --git a/!TheEscape/!RunImage,ffb b/!TheEscape/!RunImage,ffb index 3e7b226679796dae5ebfba1a5074a680e1573055..3b21248bdc529a7ea039fdfb312cbe2b94b10d3e 100644 GIT binary patch literal 4180 zcmb7H4Tv0P8Q!0nRb$_@p0TF2rf=5UxSN~n?d4zRXIyIe{7%ot3*X}@aWM=Wi+|=>e%!EFg z&r@vA9WD9n^xToz<5(z&g{(rc!j9`ptA=G$?2!68#bzK{xaBpDgpc0MyvdVI*EMaQ zS6rh}v&tSXH>*|CrC4Pr^JOlT-3-H@4deAYg=C>_Y?$u6Q#O3du`^jcN3kb0?vm$o zJi#q=0qP+f<;^EJbK4<&piYqOp&P%Y3V9#3qva_Da4g>Vddn4OODp2ILyf&KG#&n8Zd>`}TgU%^) z!E`4Pqs+tz#a=}aj+vh614yIPz&>V1m{IIE2+(3qlPl(ObA>CG*Fe-L z_U3z-r-bNe6W(C+wnA~`E*a>CS&oA0A*xz&JV)`JyO@8^C9FZ6FK}_3;=7BCN66ar z^O{r=C-`=@BkJ&z9_eAD_p}Ll1S5@@{~T;i@lhbXcTh0qqn=ses^fAQF|jY)u*H|^VY}Csh#UHqhSwzhf;W-hvm{yC7#FdpQywv~Qy%G4;^5=KRvi?M6mVNNS{dYQHVpb;+YRJ+ ze^`E6MPo?M=O{4+B8cbe4Lu&>JfES&L-LA*>W#K;t7Tz^P-1aRScs>?DvCkxY)mY_ zJFvP$iMqUnD9aM3aFw5ui<>;<8f!d1dEc>;;DqlqxNcT`N_W3f)^)V5MFTwA#)57s4&s9M%%U}23?Qhe{k3*}7vMjYCzCr1* zLdjV)2NB{eV5f|F6UdUsTF4Gi@?)}0Tw{GWA4035M+t{PbB%f&B^%o`1;9_BDtBtzpo0Po1L+D*RN6CLGq@>V`h1FEhec7y_S68C>M!Bt5eH{+!t8ypo z`=gR7xz8fsTE_RJg>RGqD}=)y!U4{18--ADdsgBcDc?jxy+q1)(f=j%!l*?4!~cQ2 z4&*<*DdfNWzmTJ6+${3n1<0>O$VbK`^1t6BBGuVpT5)P+6A!RXYD`iCM-QU7wR%`g zxVS@Avb48HF|ew;0)I?>Q`E&vnQ?0tt z0`q79rV@eC4~Xcf_ITvKHQ5HKy)D)ANR4glq^<}4o%IGx=EF&ULFHOlBym$}*(g^+!vfaeZVdas7_}9HCN|X9BN((x|1LAp=B+Yb(8<~`eH-6W_#iwxU>|%7b?7V~#w(>1cueh7 zD7AYZX40DD3NOJ#AI!(H)QRF+Ix$D7^xeW~+pr;eZNIjj(Ka$UN@!;R@xbUN&to|E!dZl?7AAl}F@n@ho1JQv4N>%) ztL!Xex4kDie#X+4?Phhd-dv6}h5A6nulsb*pwzXIkX)#Kvr%>d& oA~r4q)>5X_)0pzQwDkOTwQaa5b$;hWn}-(>+za@7MWO%v7fmD4WB>pF delta 1854 zcmZWq3v5$m6z;wEzoqMTS{#Fov2}-T9o;C>c5OEZgTa>Z5Z!c>AR0$$@79vq*7lBd z#0U~&j9CoxH^f&EU&IiCM2R6r2{FbHBgPP7j3NOwU~uYKz!>7|{I|Pv#3oJppYwg^ zeNNBgiP}c6*cn(V>{A1eM3ZT-xYSEv@scQ5_8pqSRpUw5@@@y>MeK{^Jm?2YFG03d z3rTM(I;!P1XJS!3nMr%RfhMrTUC5uXSJ>LI%}?O;_@!EZp%SODTeMUrmefZ*?E$dt zt1`uXiKLc_=SeC!V|{*Qup-p#;kz{;IT4JwhRz;2%k@1*h&n z?9z4&5A_Taf&gbob&g+`sw*uQDiD9bzN{7_4W7i%3b0&h;>T4i2}JyU3U;!I?^a!l z-tz{6#`_i^{!(Os#282p{<7?Quxc)%2qEvmb{q%EO&VV#;ti2wflL*G;Rvqp-im8; zS`>xxg0Kiu#E$qgwgf@yAkL<8!RgE9lDdX@O$Vu;cPiephe?;1gLo6993N4dq{sMc zN_FK^1i#(!egeM4&naQ)O>Sc~t;gtnvP7W11?gjYd`?CCU((W7P9a6Sf_@(bb%~F# zq#|A0$qVXY&eU#My1_TAOBCtvX1+^x+l<&{+cJJsZD=f(N-i%g+BgexjbYBLlibKa z_H)Tvw{~T{z)Zz+(UF0?k)_w2ibZpIx6kie5u%FAT?D>op@3ceuWwY<0FHsYl~39# zobnDMBXX1?@GgGP+Q9aD5P6;5wZ{$eGp71^QXgC-Y~8>O(R4he;a%D&CeztrJrDBR zMwnCP^IbxJxW0(KKd<3XE}BgwV|k1X=kl2x4$@cG3OaiGd%Aj7;>JAciDVwrnikjM zWEE4H%%1F;0m|Z2qZq$o800U>>^C$vW_9HsX(ACPur=%p1j2rhf1M`;*U{aV(2_Le zl)@jgF+o2l^89Jc#t(R_@$K`EPs@~iM+<@{K;m+3x04>f)QjaB2j2G@09vswipj_l{m0*qX6TzlvF8;zdK>3pav#OVY z&7~jJ{Bp^><_4gXHa!XKPU>DWEo%r^8VvsdzHQhl_ zd&{YyaUseK>$Gp6Zlf8TpaT=8;M6#8hE6HX)3C%|5LWh)l`&rBaQhE94JM6=H{As4 zA^LCV_q2~MO|QI3?Hk9{^aS;YAe|u6DZbOuAggEien+jWp5yO0BBkmDp}j)dNj~Wa z$?7fM=)^^g=I|P(wDgdk@c1xFw|F3{(-c`9JnCF7Rq=6WjpXLXoHdm`I+Qbj#UWAD h2v{ThveP4V@Hul^sy8{>X8>UBXJDl>ZA~!v=U)S{>EZwY diff --git a/!TheEscape/!RunImage,ffb.bas b/!TheEscape/!RunImage,ffb.bas index f947b5e..c667d14 100644 --- a/!TheEscape/!RunImage,ffb.bas +++ b/!TheEscape/!RunImage,ffb.bas @@ -1,3 +1,6 @@ +SCREENMODE%=32 +SCREENGFXWIDTH%=1600 +SCREENGFXHEIGHT%=1200 PROC_main END @@ -7,12 +10,14 @@ DEF PROC_main DIM Scr% 0 DIM PlayerLocation%(1) - PlayerLocation%(0) = 800 + PlayerLocation%(0) = SCREENGFXWIDTH%/2 PlayerLocation%(1) = 100 - PlayerVelocity%=1 + PlayerVelocity%=0 PlayerShields%=100 PlayerStructuralIntegrity%=100 - XMovePerCent%=10 + DIM PlayerHitbox%(3) + PlayerHitbox%() = 0,0,60,81 + XMovePerCent%=5 ResetShipSprite% = 0 REM Show/hide debug display @@ -20,15 +25,17 @@ DEF PROC_main DIM SpecLocations%(1,49) FOR Spec%=0 TO 49 - SpecLocations%(0,Spec%) = RND(1600) - SpecLocations%(1,Spec%) = RND(1200) + SpecLocations%(0,Spec%) = RND(SCREENGFXWIDTH%) + SpecLocations%(1,Spec%) = RND(SCREENGFXHEIGHT%) NEXT Spec% REM Used for centiseconds per frame calcs Cents% = TIME - REM 800x600x256 GFX Area 1600x1200 - MODE 32 + MODE SCREENMODE% + + REM Position text cursor at graphics location + VDU 5 REM Sprite set sprite_area% = FNload_sprites("Spr") @@ -43,23 +50,21 @@ DEF PROC_main CLS + REM Space dust / stars FOR Spec%=0 TO 49 GCOL 0,0 LINE SpecLocations%(0,Spec%),SpecLocations%(1,Spec%),SpecLocations%(0,Spec%),SpecLocations%(1,Spec%) SpecLocations%(1,Spec%) = SpecLocations%(1,Spec%) - ((Cents% - LastCents%) * PlayerVelocity%/10) IF SpecLocations%(1,Spec%) < 0 THEN - SpecLocations%(1,Spec%) = 1200 - SpecLocations%(0,Spec%) = RND(1600) + SpecLocations%(1,Spec%) = SCREENGFXHEIGHT% + SpecLocations%(0,Spec%) = RND(SCREENGFXWIDTH%) ENDIF NEXT Spec% REM Draw LCARS in top left - PROCdraw_sprite("lcars",0,940) - - IF DebugOut% = 1 THEN - PROCdebugoutput - ENDIF + PROCdraw_sprite("lcars",4,SCREENGFXHEIGHT%-180) + REM If using l/r sprites we debounce to stop it looking twitchy IF Cents% > ResetShipSprite% THEN ShipSprite$ = "player_ship" ENDIF @@ -67,9 +72,7 @@ DEF PROC_main REM Handle Key inputs PROCinputs - REM Use graphics cursor for text (TODO: Is this needed in loop?_) - VDU 5 - + REM Attribute names GCOL 0,0 MOVE 75,1150 PRINT "Sheilds" @@ -78,6 +81,7 @@ DEF PROC_main MOVE 75,1090 PRINT "Velocity" + REM Attribute values GCOL 0,7 MOVE 130,1150 PRINT PlayerShields% @@ -89,6 +93,10 @@ DEF PROC_main REM Draw player ship PROCdraw_sprite(ShipSprite$,PlayerLocation%(0),PlayerLocation%(1)) + IF DebugOut% = 1 THEN + PROCdebugoutput + ENDIF + REM Wait for rendering to complete WAIT @@ -137,6 +145,7 @@ DEF PROCdebugoutput MOVE 0,500 PRINT "X: " + STR$(PlayerLocation%(0)) " Y: " STR$(PlayerLocation%(1)) PRINT "CPF: " + STR$(Cents% - LastCents%) + RECT PlayerLocation%(0) + PlayerHitbox%(0), PlayerLocation%(1) + PlayerHitbox%(1), PlayerHitbox%(2), PlayerHitbox%(3) ENDPROC REM Delay routine - thanks Sophie diff --git a/!TheEscape/Spr,ff9 b/!TheEscape/Spr,ff9 index 1d9182d863a09fea3381b3d0f726346bb827abe2..d39688f063a79237c764a3e18202537fe7968e25 100644 GIT binary patch literal 43588 zcmeI5J!@P?6ozMW{SoZKD_G+u5Ft{yP+^d*HZHbEsb)h85lh4tHi%@AV-`co6#5JL z3&M~#pf;t7Ww+KpF!~2#^PV#wdq3w&%B-Wc-?7imo%7B)bMCXFy(5FHJI0tU?1y7x z)^8c}^3~q%yZztcF(!jO&?{rUMZf+P49;(yPrGinYs6MpSJj?8d1Az#LlxVCCbk1z zYzR%vs?QO-rM9}dgZLf94%MC`TK;T77u$g*HiQoA9-?lsqm>o4>Rq-44RnfgBxsRu%foMx7HQg z7;UKap@|Kki|s)Z8$lN{{l41DV1W1mV)xWGMkBh`5gZsvD-Gd*=4FYoV?P;vkTs)@b1KG#(O8z1=4QLGAB{7s&vQw5Zlr~l$C}U< z;^M`lh2ci68iunkynVc9%y57A{i}l)Z(qL|n!EUdehicL2=)PXdi!R4R!B{kYtxI+ z>H?VJS8}Gm)E{ z69MtkIeu;h$H(ciOfBEs`nl5PmtTmk{N%2U-a3dn1dgBA#qa(aotx(?5+bG9E95Bh z3!#{&;a8+_agvH@G*rH==u>No>M)Wq;e(;FS}8f`HGl z=B79L8vbPOKpW?4)YcTjnj2yB%%5s=G$K}koXNRqhj4FjZ*XrkJiJqFjn;oFNVZVI zL`}QG`V%gcFjZU44e#@H+{vnD%~Aa1+_*vb>`t{g8WF2N&g9&*L%27%H$Jbuk?Q?S znWu@c^`~4ZU9Ps8qoPhBSxeNC;?X%6gURc(8FTZ_m#nf87xgKhkg=5zY7I)Bzz6LPw- zc<~zI+Ev}sAP|vjvL|dn; z*XFRUoF;B<{z-Tj4>knPsP6z8;K8yM4iKDCRpV;kqMwIsOwSk(M=-B^5AY0aOf z#!#yxKrVGuW;1eGb}k?988h79egEn}4>9|9@j>#~eV9B#FK3w3+sk%_nO=nE?xoO8 z&4n>;#qNg}QXxWi?TuxVBuuTWLQY&~$aO^M_Fd0|d zq^eJBvvaGulP5M?MGvx_aA`fujApFFLy*>@XJ|bsxfI_MLBk{Z*qCQ%8b42<0D2-I zUOLCmt>E}LU6!fkn_E9u+Whhh(UqUvwb5G#QHQ|s^Sb!mU!!yLd__W}G<$^{!VmAC zbT+$0Tf?i>CBW+9DK_{;mR1zp$VzRm_0OW>di1QfLwRbk;rKSr<rq<8J<}tM4DyuRrU~>ytySWLMKAq%iqXiPSH$wA%Z# oQrl~IYSdpW{8>`JZ18gZfTH$-d}^@-C;0>vwHM@5izPVCzv7vFbpQYW literal 65640 zcmeI5!EPHj5Qf=qi{w@r&@n&+pM7xQB-i+$2k=Gb$Y?DjfDeM*LddCCzk**OFwh6^ z8x%PN(%G-zCy1f`GbC5bU6#AqdN;EDGZ}Nqe`ZL2vo16}MEn%Ek; z*o7IZUG7W}KSAtF?fPJW_yuCeYB$itZlQ~xWRTNJ8HYL-GSJ_;y`T-O>6>P zYz9qi0bR_D$7(y13F0S+ov9rx7KmRUcC0pmCN_gEwtyyff!t!3$Sw8>xy7!LTkJD5 zu^VV&x6s7a(8Ml~U+faO#Xcdo*fnyCeTF7>15NA}n%Ei|Y|l27(YEN=i|AFq$MIL& z@{BFVU-w)F7hfIA#^ICeZoIZFUq3p|Rby1Y@9}z_XN<02ujd{vzB(2GtK_;HU*U(w z{Pg(a$=SQ}_aElw8GPQl-N?_1E3xO>@w38hi`~N~u)51z>@X{HXN>b$MI2TJvn$^! z4qkA5RS#yW3xqS_2%+VPdmfk5l^3kjfv(honGzg3ECejSRNJzuFKx5FRo%%;o2{bf zvUO;zXPMEAm3Ro!YV-_kC|fSY4@J=MwEh}R<2MNuz)%FlOXv8x6&xR@%Q8{Eh4l+t z+dMuIUHQqWjUF9D9RkPC>oV{D8}%*n6$z2j>=SZ?{PIxvX}H(%{$y^&u*1B~nC~dm zy~w^p0>SSt9FPDBkN^pg00}$^0(<}9e)G5Evvc=5#;@rAa?f&Cq4%1z?YOJpz2^75 z*L1H1I}#v)Cq&@Q18BA7cmQY6E!G_5p&aAQo76!b&MA`Tcu2=c)Pu+9pFrZfBfXhK z;C4wo##Ytik(9$E&#_g+lbcB%Bk{93ne;n|kL4WS0bM6czDhP@{=UD~$^L!Pfn>s)x-O3d;e6~ysO@1lh-5t?#M4s^sJ3@uJ<{+aYJ1oXB3X|J@$^&! zs_k9s>d`)PzmYsgzr5>KV?F8!^{cZU{qn9`jrFJ_)UVEZ^vk<$HP)k!P`^6s(J$}1 z)mV=@LjCHjN58!5R%1Qt2=%M89{uvJTaERoBSf79NPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNaOPXbTk5908UBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JB+wCotAR1|)8mgPXYbD6f0&;>!yg}c>;3@AOY~P_ z&y9KE=Cm6O21aZ&8maB??;Ej0sA5OZ#HP^2=Fr5fdWhH~wb5vb_$gxNYKMrHe@D>8 zrqIOZ(8bsu3xU;L-eN~unLA^g$138mGMHWYR&nrx>#KS&Q(YjO2}cMmPu%mkoUXiJ zoep%R7R;33*kK`H`K8*HReh;#hz9qno~!Cm(Tg$?#B@n*TS3nN3z@qixiooI+s@ML>KY>lrP}rPHxW9&QzNKkN^pg011%5 z785AlRh;pzqSIfunA{TJT}9zdC|y33hHwmL!ja?&XM&pvT_%{h*SiY)QN4QC@Fo8s zrys^6cM(%GbrOgF(A6c-@sUxNTrMSEnjN~ki2SZ%qfe)rKMU?EWP2K|UvPI(_$(`T z8E*UDCD-M%vg##=Y4NkPj|zLe%aCOX3l}{ye^>Iq^&I`?jHS=&xrf_8`Ln#!{q`^{ z@F@pt6(f2fIvSs^EeTz`zl)Ho1gpE%ihMC8HwLQ96P}}Y6?paSt;Ht4EFt&so;kN^pg010$N;9rej0^