From fcd4acc3f44c8252f0f8fcdf4e5c635d7b55ae73 Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Mon, 1 Feb 2021 22:23:21 +0000 Subject: [PATCH] Fix transparency, enemy movement (WIP), slight collision performance boost --- !TheEscape/!RunImage,ffb | Bin 8348 -> 8723 bytes !TheEscape/!RunImage,ffb.bas | 36 +++++++++++++++++++---------------- !TheEscape/Spr,ff9 | Bin 43588 -> 43076 bytes 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/!TheEscape/!RunImage,ffb b/!TheEscape/!RunImage,ffb index 7bbb1227f00a15b54a0668d1281a01112dc2945a..c55b047aeb91f2c10d33e91e2ba0ba9013666d2b 100644 GIT binary patch delta 3213 zcmZ`*4Qx}_74Ca}w%>cs&5vW}*VqRagG~~!6B`0eA|Qs5jwFmQ1hge}VuM{7+w)II z5NlA?vaUiE5Vt*o?~C>Lds7WA)VYNnIH+qF-PHi}{g9y6cX`N-Ke&Bf4>Uo5 z343PW1tpHf(0~UTIPyR#z*hwpOgKWEk2yH!zG!mG+-NKufpBCXw+X_ro=hqp8ezhz z3V&<0}I1|p$r1RwHMd(XK23I5pL)lm|k#V_wjs67`uuB&1D7R^Tf`0)MuKMx1 z;?oHe0s5`PbBYPKN>=kN#@T34Cdv{M&G?Gc&?MT*0Xidztae<_F>xlDyp;g|g1*jG zOPBU^_Xd}`n7ELJgZN*`3q1#RQ$jivfGCx;?T{K5$$0Q$@}gLsXOfH$pbA~ndw?B}&O7MiCO025G#l}j5ztP8ZfQyWl_Lj!J!L*C%W>@pYd7Jd0{WJi9{L}dGmHbEt zw7||u3>iCU1>36Sw8tt68o=L~?qTX|wDQgbNnoD2gEXmLMc^A{2Bw?%>VJ#oLa$9lyzQRtXyNJ_e>w+&e%4eBwoUk{k^F92INd}2Y<@!&VR7Z^&)=%Jv zjHNl4lxv->cPmp`LJ|bH4BkdBlUCp%dAqnKS`cXo{#5yi@zGftB|NFrDsA8;GSXvy z{93V+jHd}%yru-;@d7XD=^{l-yE&)5#OWY*stv+XOsZDlI6kHJ3U6bt8FbQn`?ZT- zY3jz1V!QLQ-@d^fCVfP!eD(_h170%K;eb-_x<_Up@EC!=)l$M0{D-Ng%;$l&c8$6I zz7?dje6DHK>(y4R*W%P$3J&P)#R)?1CJ*$@64SS#uf$!xtc+qibzu6H7%Q13tjAxK z_(sD7N|0P8U~x8^jt%7K?j=H-BN?V2HcbXt{{&r^F_<4{^!Wl_rr${txDL*~Xe1U7 zXPiv`!fksq+4s|(Cwo^S8`(s+d4v#$rV!o*gm{B)Bq7#B3n`osCy2>u(qJ)@p-?=> zseDkNGN0)`CIOFuuf<#7a+&JH^@5!HqOk}OaxwikMJUeb2L6_T*&y8><}?hY_&&3m z3^f!kgHvLLM!e2!!aRP+qG1twOKtiGX?QjMth8R(fX|t`MMD%X@t-u#t@Me8ZP-!P ztlvSPU6?C#3wv;1nNvLA#ApRbM;@VbI#sq#I>sB*%GXJ!+Nd#H-fB8Sjra&6F7A zhw){rP1uOXt#%=Wf3t$H6>nJUN1xQn#AJBoXN$rvzcdwg`PE5AhgtjNo=kp|xSXt- zfFLDb& z&iEZZ-z1+EN~22oO}^%4 z4~0J(}O?I9)sq-aJo3znw?N3H_di{)o^`_<3zZ z&1d-;W0Nxit=f!l@lSPb1Fw_neYm;~L{-J1I{W>qMJ=dbwQDm~_vB2!#!PLdnN30) z{-Aj>+?&6CztZg=Ookw2J78RhV#ZJC~oRbiK#D`>5#SO7rkBR z^~2QtW{R5jB1`776i}ufBI%4#wF-E>Onn27)OQLeaJ+t&{WMiho=XSQ3&Bac{EM4E z2s}*vfL8ukD>v%p!?@ly&`(xp0dub+axX}6QBuDt){uHbVkU|HO8H)jspeB2q0>ke zs2*#l{khiUEQXsJ2|90tBX-wX@UN9-wA#DXMHCAYrApIkjN6^%8+gG9M@WnAgol}; zxX)gtra5LCVRqmNy9;(XIEL;m&LgTHaq3g_{Uj=2w9qU>@JLg`4TKb55?RXmc|l#RL?{7pV)x=O|=({wMT goGCLiO`rp;!YvHI46#JUhoHHv#9Z1wg=hc!Ke1bj)&Kwi delta 2934 zcmZ`*4{VcV8u$D9^=tceFB@Ikb!*o>D-^qRgSJ}-ER4hb;ef!pY#hf4$LO{XT2tDl zfA)vtg!7abB?>;qcu3TE1dT^H&JaV;7)4_U5sna#5KjgF1PDw|$TY?%-t&HIM?G>) zzkJ{OKELOApa0K`-3RVFDvA~xz?$fIPg30$SF>K|fFRn$?I1B>l?z}B`lHE_)HaCc zAfJXUsSG4jV@z0!yDC8xHetOkEXID10(0WIG6z1c^9dO|rt`}?JU~Bu!ELW5p#diB zo(1p~@Pj72OxQ~Y?8jeAZu`O60Nv_PerqJ3^L7yM2$7ECA0(&kq!r)`7)YzbM1bSa zx|j(c;NPSc;R0TgS}m6u7pc*iaGltu(5v@13%4r(y3}M&vu7U@jS>?rl>j$jpsT;9 zr*}=HyT{8!7j4hOKk5SzFai7r!c1(Zt!@jqdmx>O=Tyk5IVSev8NIJ;J<)~?0N*k( zfr8v1jG|wz>EA{0Umo`u0iUMld3s*as8i6DO6D@DM3#xKm2>>9cru;O(eh0Ky-%*; zXZH4W(at%1Qmzs{!k6WG^OtipN?(7Z3;!uQ^j{PDdz_S4I>ahYIrSItLu`ZSbn4cc$)yH zahK5%|Ip4!L>%F%l*;GGyG-|~X2Th#yGFoUwD<}B%5*H%waKnIG1`8mYi)OM+nva61(z=Ke58w&}ngUGf{1ad7#=lDrTxJ>)SI6+OtAIRGLs%?qvc^KSTE%Y>PZilB(n4VrK@y0{vDE~}*~ zZ4#x=@pf68N1802|6OTq>hB>1^oqpvR$Rw?74C9UV8-WqA3niqg%BQQ!JSJ8w4AbF z3hvA0GV!52RZKFvP0ccWpSkED{r!~jldv${6byy~Og}N%vWIaruyh9HW zeVi(l=qr;sbt~221R)-pK?D{PVhvU>wZ0!)NRR3-j-_R_Mw?bBOhA&tEjkIrUth(zpf zN5Qg4JlKvM^g41cPFTFP$F-W~9Fs5}^2b6=6CwXth{-4CQi5Nt0P58zENwj(v|{17 zGfciru_%0A*LuoV5Xr^VOws(Q(oB?ZlNSxty$u!&S2hYR++0~F%p)(>`vSDv{{Q`C z=)TKOhF+X)?G@JJW@|_py30?71W6pl(^e36;SFn0cnoW8LE&kP*j&Q%n6SCTR~F%~ zEMd{`8opz*3vc2@o2&ADt-)*g*cpke@i4eF)Or?=W>0VT%H_=P zb)o1C-H# z{)NpSa+^P;bFLN7nH~_@LCkmy|KYHS#vk#Nqf?O4TXy0Pg>X*K)tP>yWr*S{ic&(;qLvgz1s8H9l;xOr`8xZiiT9J=lo5$3Necy;PfegJ z4_%s=GHxNSl@3znAxfP|8h7D9fGKwb}%0B`2QnRf6{UcT$&H;M+P zyh@UfY2!(GYYRSJJ5D>Y&J*Hedah^*qI`o%_a&?HLn+2ANz6P8qjlqogVZ%s zb2K;M7j>RM8y`v|D%~f1$p&U#MqPNVw_~3_+5RmJ`F*gImdw10Gp!}2O&A8R5W@}N zrY^XhQXs(0J2-VWQTO5-5T@(sO#tUX8vWNHp(eLdUv7eEMvV@pb98SqAHk;j1#~mr uSnm=};zYfx>I0e{Gl2S5ibAlBnJ?hs`njU{GM=vwm7A~6>X?DBpZ^OHk}q)p diff --git a/!TheEscape/!RunImage,ffb.bas b/!TheEscape/!RunImage,ffb.bas index 9c5c75b..4148385 100644 --- a/!TheEscape/!RunImage,ffb.bas +++ b/!TheEscape/!RunImage,ffb.bas @@ -25,17 +25,20 @@ DEF PROC_main XMovePerCent%=5 ResetShipSprite% = 0 - MaxEnemies% = 1 + MaxEnemies% = 10 DIM EnemyLocations%(MaxEnemies% - 1,1) DIM EnemySprites$(MaxEnemies% - 1) DIM EnemyHitboxID%(MaxEnemies% - 1) + DIM EnemyVelocityX%(MaxEnemies% - 1) + DIM EnemyVelocityY%(MaxEnemies% - 1) REM Random it up for now FOR Enemy%=0 TO MaxEnemies% - 1 EnemyLocations%(Enemy%,0) = RND(SCREENGFXWIDTH%) EnemyLocations%(Enemy%,1) = SCREENGFXHEIGHT% + (RND(SCREENGFXHEIGHT%/2) * (Enemy% + 1)) EnemySprites$(Enemy%) = "durno_ship" - EnemyHitboxID%(Enemy%) = 0 + EnemyVelocityX%(Enemy%) = RND(10) - 5 + EnemyVelocityY%(Enemy%) = RND(5) + 5 NEXT Enemy% REM Show/hide debug display @@ -63,15 +66,13 @@ DEF PROC_main LastCents% = Cents% Cents% = TIME - - REM Controls PROCinputs REM NPCs PROCenemy_ship_move PROCenemy_ship_collide_player - REMPROCenemy_ship_collide_npc + PROCenemy_ship_collide_npc REM Still not sure about this bollocks, but it does seem to work now SYS "OS_Byte",19 @@ -119,7 +120,10 @@ REM Move enemy ship (display and physical) DEF PROCenemy_ship_move REM TODO: Only uses player velocity currently (/2 so they don't match stars) FOR Enemy%=0 TO MaxEnemies% - 1 - EnemyLocations%(Enemy%,1) = EnemyLocations%(Enemy%,1) - ((Cents% - LastCents%) * PlayerVelocity%/20) + EnemyLocations%(Enemy%,1) = EnemyLocations%(Enemy%,1) - ((Cents% - LastCents%) * PlayerVelocity%/20) - ((Cents% - LastCents%) * EnemyVelocityY%(Enemy%)) + + EnemyLocations%(Enemy%,0) = EnemyLocations%(Enemy%,0) - ((Cents% - LastCents%) * EnemyVelocityX%(Enemy%)) + IF EnemyLocations%(Enemy%,1) <= 0 THEN EnemyLocations%(Enemy%,1) = SCREENGFXHEIGHT% + RND(SCREENGFXHEIGHT%) EnemyLocations%(Enemy%,0) = RND(SCREENGFXWIDTH%) @@ -163,14 +167,14 @@ DEF PROCenemy_ship_collide_npc FOR OtherEnemy%=0 TO MaxEnemies% - 1 REM Collision with an enemy - x2 = EnemyLocations%(OtherEnemy%,0) + EnemyHitbox%(EnemyHitboxID%(OtherEnemy%),0) - y2 = EnemyLocations%(OtherEnemy%,1) + EnemyHitbox%(EnemyHitboxID%(OtherEnemy%),1) - w2 = EnemyHitbox%(EnemyHitboxID%(OtherEnemy%),2) - h2 = EnemyHitbox%(EnemyHitboxID%(OtherEnemy%),3) - IF FNcollide(x1, y1, w1, h1, x2, y2, w2, h2) = 1 THEN - CollidesWith% = OtherEnemy% - MOVE x2+h2,y2+w2 - IF Enemy% > OtherEnemy% THEN + IF Enemy% > OtherEnemy% THEN + x2 = EnemyLocations%(OtherEnemy%,0) + EnemyHitbox%(EnemyHitboxID%(OtherEnemy%),0) + y2 = EnemyLocations%(OtherEnemy%,1) + EnemyHitbox%(EnemyHitboxID%(OtherEnemy%),1) + w2 = EnemyHitbox%(EnemyHitboxID%(OtherEnemy%),2) + h2 = EnemyHitbox%(EnemyHitboxID%(OtherEnemy%),3) + IF FNcollide(x1, y1, w1, h1, x2, y2, w2, h2) = 1 THEN + CollidesWith% = OtherEnemy% + MOVE x2+h2,y2+w2 PRINT STR$(CollidesWith%) + " hits " + STR$(Enemy%) ENDIF ENDIF @@ -272,7 +276,7 @@ DEF PROCdebugoutput PRINT "Scr: " + STR$(Scr%) FOR Enemy%=0 TO MaxEnemies% - 1 - PRINT "ENEMY:" STR$(Enemy%) + " " + STR$(EnemyLocations%(Enemy%,0)) + "," + STR$(EnemyLocations%(Enemy%,1)) + PRINT "ENEMY:" STR$(Enemy%) + " " + STR$(EnemyLocations%(Enemy%,0)) + "," + STR$(EnemyLocations%(Enemy%,1)) + " " + STR$(EnemyVelocityX%(Enemy%)) + " " + STR$(EnemyVelocityY%(Enemy%)) NEXT Enemy% @@ -290,7 +294,7 @@ ENDPROC REM Shorthand for sprite drawing SWI DEF PROCdraw_sprite(name$,x%,y%) - SYS "OS_SpriteOp",34+256,sprite_area%,name$,x%,y%,0 + SYS "OS_SpriteOp",34+256,sprite_area%,name$,x%,y%,8 ENDPROC REM Loads sprite file - stolen off a forum somewhere diff --git a/!TheEscape/Spr,ff9 b/!TheEscape/Spr,ff9 index b62bece18b758cf9e91d2b5fb35f5566f7cd3fc5..324020527bc3a74527d3a58765d75a4c14e273ed 100644 GIT binary patch literal 43076 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 literal 43588 zcmeI5y>1&v5XaY{KLWe31ki93AcBy>g$o0+)y9R2lx`TLFk%U@1sf1TLXJTgNSQ)U zaDZMxFyJd)`LbS>QneWV_R9-g#RXddu&hPO@E$2C)jiHf+4RC`kcb3^! zw^x_Q*7|E~8_>u)(8;!;k@caIg^dli!Fjihij#pk=A)Z0*P1pe6bw7P%LC zoM^Sr0VNUjrx8vJ7bF2qtm=i1`B#P4MAs&@(B}t6hv_6z3v!->GhZ1c{&t;i#X1&$QIO3E) zgbev7boz{GQ_2o1A_lI`gBe z4t(j@#)?4sMV-d=C-B@NUy}3Kg97@J&)gufBShpYF+JQdZ8M@|Pu`ySaIhxaH^S=qX>y z?N~s}S!2$ZLham(G^V_M?r@jlu!uQd3K-)>9yhiu`)Jq9GH*=zvFB_B+Br9Fek;tG zb9T;ko5}Zv?+xD@jeDR@tiyKh@zi_p+yO7a;VR}_ccVXJ-0TjdIDbZNbuONBEo`s( ztu{w3ViugUbFSMVzBhbt_}-{_cw23aPwIoItF-y6O+uGZeLx}TPD>IloYh3wG2sq~yAsgK} z+i*-pan311Ho9}R;h2izoKu8sbmwftF%`u*rwG~T&e?`zDvEPX5wg*pvkk{o6z7~G zWTQK08;+?c&N)TMMt9CO98*!8bBd6S?woBnrlL6K6d@bkIoohdMRCq4LN>Z{w&9qH z;+#{2Y;@;r!!Z@bIj0EO=+4=OV=9VsP7$)vowE(cR21i&B4ndGXB&>GD9$-W$VPY0 zHXKt?oO6nhjqaRnIHsaF=M*6u-8tKEOhs|dDMB{7bGG4_isGD8gyu^B@B0v5zT5q? z`{M2EH@y&U;{N@l_wX)`A7KAppO4=`UjNU~LpZC}Eln)@omX3vSlzBVO1~7d+bRVW z?Ya21x-B`8K5Nf|bYe{Hi{J0MUW_Sy*6Od}5*1 zUps-JW$sWbER1Vs*i#w?idq+LlBeWL8aZ;Pf=2z4*1e;X$Y>hMvbQx z{Mr-0Of)1#q0pqy>*bm#Wi5`CkK$Jzi@gx)KSW)d&BnPnmnwm)u_r#=4xzWR_5Rf^ z7co1xP_sPH8s@&%Fh@7$y@uh>wn7~+6LLKY zdYsmkpB(Z9CjQMj)-JUeAo^cWue#$(R9v^J$&@o$p=|3-ZfvL|TlKMBA9+9cqaP6y?u zD<~h;DgI2pB*35bLT>r#H=;8?y6C`Hj%}<2lwZ_oTz>-3E%GHv-vDxk7{m|vPxKUisb_w(yd228i)5s8`*+)*a-v zaH5vIV68i#TBxBG4pdUr*1GshIIhLCyp<}bQ0qeHT1$pXuUcz~KC74_$LN2Bb>>Ic zCpB)l){T5go>l8+f$txC&#HCxyNpDq0Ajq9@TKocUh7sLfqDO{KMV6rW}kR|v$@1k S=MzcHK02S-T;k{#=kq_5q{UzW