From 72b85ffa57ab901ed9d8428755b47e6519a23c25 Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Mon, 1 Feb 2021 20:56:23 +0000 Subject: [PATCH] Working NPC/NPC collisions (disabled). Streaky stars. Some Sprite Improvements. Changed rendering settings to reduce flicker. --- !TheEscape/!RunImage,ffb | Bin 7869 -> 8348 bytes !TheEscape/!RunImage,ffb.bas | 94 +++++++++++++++++++---------------- !TheEscape/Spr,ff9 | Bin 43588 -> 43588 bytes 3 files changed, 50 insertions(+), 44 deletions(-) diff --git a/!TheEscape/!RunImage,ffb b/!TheEscape/!RunImage,ffb index caebb677700ce76aa06abc8fe49f1688de0ca319..7bbb1227f00a15b54a0668d1281a01112dc2945a 100644 GIT binary patch delta 2306 zcmZuzdu&rx7`M0O-rHMF_h9Q|wA;5zv0W?ncH<$?2^%61*%m-VW0>7`p$%Qzw0CYL zM0~|Wod)t5gO3VUon6u_zw1^jOqG^};dh z5*rgj1>DqVy=GMww*R*XU)9i?>`$lawCp{QwtpyyyXSJ*~+!^|qUxv3K`LZEwn zZ%0Yj0#WsLW}Vq^{ju5>RhiX=Ur4_BV5pTTG?oaEu*J{S&Vq5$4y`b1{v?{2wGFGp z+3T(CHfCLA=eX~fbscRUsOOtWO29+uLM}U~Wp!rVVmP>5%qRP`fuW+_J5WecxOu{F zuQu^LCTZ3u@T%zPc#b4{cpl;MH0n&P*GTr}OjGNg)y(>Sje$!I4V29uCBSExkUajc zU0g&)2DHARt;8qglv&Rh@s4AQJZO0o_sCuDkm-G+Ml`4OQV?!~)-XiyL7V5$zw)Ox zzyF780;y!0=TLOw+XDDR4`-{>EP>*^X+6d3(I~^v|gko zLQ+#N%*0cyqPAq5i9b2a9sN9Kr2YJKH%y$QzBykGfrWskD@a}VGG8{~Ij1T}edw=JB`HI&hnn$@8rLkSSa>AP z;~R-X0;_#VleYxnHQ~LCLLIWqqPgX?;4eBP^?CV z)o4kLq*Nx2`Ej|op-wt(j1Nv>prgBcZGcH9ad&mo2I+LONzEic&$`uJ8!CL7p%Lyk zqiT&#=~}URC6g|gRmr3)(^-=RVojcDW3me$pB1c=fjpMWj~7^s$t^fGt6^uGaT(sO zBPuLSK!~m#p&|-Xw&nIFGa4=ql~fX>)G)LspcLogRpnqg=q!+&>ywCJrv5r#MW3(J z+^bA}z?hdyO~5#lw@j4?ZSqqUB5yC>Pkw?WDi)YbjV|xO-F5Y@*Xn<`uGi%^ajdS} z@;Nnr{*){Zh&FMKqM*eV3!U~!y<>UjO$V|TMrW!LjH)pglLgat&%lhSl zUBo(9v(;XGGoE)fIs(kzAOVas`y5QVIy>z1$hLivjoCZuCSf&y4R9a#;-Bt$*zbU%(S% ze+4I8O*1kC+0P-CckrTnljn#T#xWX=hN=0B4Dc6t$rFd|l4gNALC^uCsv>AC+6tWN%lsatkHd>X&Mm*^824hSKRTP!DskpSFs4nEL zm6iCgH`LK%3hyUglmQ!4vbDrHpRABCq_gx|DkHVT%JgBYJVxa(L9g%p82K5+KfIlm z7ckmzOXFS|U(`1AxGXMD8UD_Mneql%e$U9b@*!?-(A+1cXI%M;#NX5RJBQeni$C)_ zpFljRcyQ1e!M@oq%=&w}hQnrK4ktQ%!w!dsLU#mcAH`>V%{7h%RYtt@_Jp!w=2(Uw z`CQ5x4%$GV&G@4)2&pEHq0;It(lvE0luZt5bD|@`Xo{9emjc*=j{fasB5k*-%<(Y^r$o&$>gy>n db9|1=8tW~maARZ8@)Pc8Y;~Si;OGk!Sz_ delta 1991 zcmZWqe{2(V6!-4B-jD6Ojjr8VI@)g+>bf65JGQX^o3ahEDQ*i)1SQOFy{(PiwP~;W zK}aBm@P`nx_zV!lMTsFq$pWHih!RvnfQTW6prTAs;*0{(Wl@5NzVF?(AU0{P_ul9I zexKI^D?X|p*(r_FwLK|64ITq0=kigyQd9efTVi^5V#psTqxCdc8LSM!r(6eDecaBU z5o&8Gex~SJRi}NaWH=h@Nz?93Z?Br7dV(f2mFm&3UYe#_LZ>l}X3{F*N8xeNy_G*~ zA^bZsbMOt}Kg5@_Hq%>ELeo=;c$)B+@|a{YrX@2vzFtMp4TlL@sSU(Z39Vn%bi&^* zGH~f+xJQj-(t1}U6&@t~9SafoTod2c(Uc}aj?)0Dnp)65+?9^Tl3o3Y0hI`aZd5?X zW?w`EIt!Y?8195}bXT2ky6cFCht(7j8emLxKGuSoH94l{=~g0aoMVKEW+G-LLN5Z6 zE+(9y&1!e1uRWvtv7sTliwK*+Cpmhy8?CrVgx!eU7ciYY6OQS$H<6+#Rg0*pnAXSo z+LP!{##J5DKBzFtNIrd4w+oy7d88j0y@WO^V(IE{U`w=Aw?LngunG`L)B z8mt|R={-@(%A7@ymoVLgu@dz`y370#qC2N0P%rg!F?d^QgY#0+@qm2Z0v21DV9j+w z(B=?`)d}r3di=@Ua*p%C8+nCrv_RsmDL7dWm;$Q)JO{*6hOnAoUP*eY(qdV60zG@&s(%zkE$tyKYk*{ zG0K3E&lGJ;so@uJbHr^A3tmFhD~50a_rlx_ag;FESY)V#h=(71F{y(gi;+9xSzPm5 zCSft)rL5~jM7D@Gpw;1DB;Lkm^(5l)SVT43C*EQEj?)bcg=hsG43*J_dOB2v>nQQ? znxmM@fs+moR|sD_C`aM0!@afKAR{xQSgBNPBs2ZeFxvsCWxCJO8d5(KlSmsaMCvV^ zqRni@kbeEcl(8>Oq@?58q#-crXi!bs+`%T-+1}i~l(uW}VLTkLS6R+W+u2U>(r%b4 z+_Z4tgGEaRv1kctAf1?r!$^Rahy^0jY1md&$X$TFMJsseGF&b4@zOZ_UF4IcpGBjh zNhozTwMzHUk8HINIp01-TiNNM(XbYYBl(Ctmt32@NAi5Ex_s4oT217IIJgOVD6k+@ zRaJ&vlHxeyH(;%xAtE1w&bdDBC=AT?mYg)WkE4*!m`*>RaawJr@DuCXFQYtn2Dl1Vnk7tnJA$pEIY*x&F(;>$5aNecS@CoD9dd) zYj)^p60a5>Z)KGYI~QT1L`KJ^5~Tw-=qCQB)C7Y>c^1apO2CGLmh9QBR?gi=b?$g=Ck&DUY94dKm^cxGRlS>1sd= z_p9?Ohy0bpezd6t!Mj9xoY_2qHl5Jyt>HGoW-sNU@T%9vrQkj9qGem~tc}w!-hr;9 zj(@jtRqNBE{)*}aA(FiVm9r{e5YND@nq-fFmpZupP(%HABcG#-bH{S)XVK)Je*wSL BH(CGy diff --git a/!TheEscape/!RunImage,ffb.bas b/!TheEscape/!RunImage,ffb.bas index ff67603..9c5c75b 100644 --- a/!TheEscape/!RunImage,ffb.bas +++ b/!TheEscape/!RunImage,ffb.bas @@ -7,7 +7,7 @@ END DEF PROC_main REM Current graphics buffer - DIM Scr% 0 + Scr% = 1 DIM PlayerLocation%(1) PlayerLocation%(0) = SCREENGFXWIDTH%/2 @@ -20,12 +20,12 @@ DEF PROC_main PlayerHitbox%() = 0,0,60,81 DIM EnemyHitbox%(0,3) - EnemyHitbox%() = 0,0,148,74 + EnemyHitbox%() = 0,0,48,74 XMovePerCent%=5 ResetShipSprite% = 0 - MaxEnemies% = 4 + MaxEnemies% = 1 DIM EnemyLocations%(MaxEnemies% - 1,1) DIM EnemySprites$(MaxEnemies% - 1) DIM EnemyHitboxID%(MaxEnemies% - 1) @@ -63,25 +63,34 @@ DEF PROC_main LastCents% = Cents% Cents% = TIME - REM Set grpahics buffer to one that's not in use - SYS "OS_Byte",112,Scr% - CLS REM Controls PROCinputs + REM NPCs + PROCenemy_ship_move + PROCenemy_ship_collide_player + REMPROCenemy_ship_collide_npc + + REM Still not sure about this bollocks, but it does seem to work now + SYS "OS_Byte",19 + SYS "OS_Byte",114,1 + SYS "OS_Byte",113,Scr% + Scr% = Scr% + 1 + IF Scr% > 3 THEN Scr% = 1 + SYS "OS_Byte",112,Scr% + + CLS + REM Environment PROCspacedust_draw - REM NPCs - PROCenemy_ship_move - PROCenemy_ship_collide - PROCenemy_ship_draw - REM Player PROCplayer_ship_draw + PROCenemy_ship_draw + REM UI PROChud_draw @@ -89,15 +98,6 @@ DEF PROC_main PROCdebugoutput ENDIF - REM Wait for rendering to complete - WAIT - - REM Display edited buffer - SYS "OS_Byte",113,Scr% - - REM Switch draw buffer - IF Scr%=0 THEN Scr%=1 ELSE Scr%=0 - UNTIL FALSE ENDPROC @@ -106,7 +106,7 @@ DEF PROCspacedust_draw 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%) + LINE SpecLocations%(0,Spec%),SpecLocations%(1,Spec%),SpecLocations%(0,Spec%),(PlayerVelocity% / 3) + SpecLocations%(1,Spec%) SpecLocations%(1,Spec%) = SpecLocations%(1,Spec%) - ((Cents% - LastCents%) * PlayerVelocity%/10) IF SpecLocations%(1,Spec%) < 0 THEN SpecLocations%(1,Spec%) = SCREENGFXHEIGHT% @@ -151,8 +151,35 @@ DEF PROChud_draw PRINT PlayerVelocity% ENDPROC +DEF PROCenemy_ship_collide_npc + FOR Enemy%=0 TO MaxEnemies% - 1 + CollidesWith% = Enemy% + + REM This is our hitbox + x1 = EnemyLocations%(Enemy%,0) + EnemyHitbox%(EnemyHitboxID%(Enemy%),0) + y1 = EnemyLocations%(Enemy%,1) + EnemyHitbox%(EnemyHitboxID%(Enemy%),1) + w1 = EnemyHitbox%(EnemyHitboxID%(Enemy%),2) + h1 = EnemyHitbox%(EnemyHitboxID%(Enemy%),3) + + 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 + PRINT STR$(CollidesWith%) + " hits " + STR$(Enemy%) + ENDIF + ENDIF + NEXT OtherEnemy% + NEXT Enemy% +ENDPROC + REM Handle enemy collisions with anything -DEF PROCenemy_ship_collide +DEF PROCenemy_ship_collide_player FOR Enemy%=0 TO MaxEnemies% - 1 REM This is our hitbox @@ -174,28 +201,6 @@ DEF PROCenemy_ship_collide REM PRINT " hits player" REM ENDIF ENDIF - - CollidesWith% = Enemy% - - 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% - ENDIF - NEXT OtherEnemy% - - REM Breaker - REM Breaker - - IF 1 = 1 THEN - PRINT "1" - PRINT "1" - ENDIF - NEXT Enemy% ENDPROC @@ -264,6 +269,7 @@ DEF PROCdebugoutput MOVE 0,500 PRINT "X: " + STR$(PlayerLocation%(0)) " Y: " STR$(PlayerLocation%(1)) PRINT "CPF: " + STR$(Cents% - LastCents%) + PRINT "Scr: " + STR$(Scr%) FOR Enemy%=0 TO MaxEnemies% - 1 PRINT "ENEMY:" STR$(Enemy%) + " " + STR$(EnemyLocations%(Enemy%,0)) + "," + STR$(EnemyLocations%(Enemy%,1)) diff --git a/!TheEscape/Spr,ff9 b/!TheEscape/Spr,ff9 index 3327ba83b2efb3463f91294403c8d9b1f67ad607..b62bece18b758cf9e91d2b5fb35f5566f7cd3fc5 100644 GIT binary patch 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 literal 43588 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