From c7efb24fe707398e780ba01a427219fa4e09c27b Mon Sep 17 00:00:00 2001 From: blondie7575 Date: Tue, 5 Sep 2017 12:48:30 -0700 Subject: [PATCH] Fixed several rendering and input bugs --- gamemanager.s | 10 ++++++++-- gameobject.s | 15 +++++++++++++++ gscats.2mg | Bin 819264 -> 819264 bytes player.s | 6 +++--- projectile.s | 16 +++++++++++++++- 5 files changed, 41 insertions(+), 6 deletions(-) diff --git a/gamemanager.s b/gamemanager.s index 3c00e68..fbfee23 100644 --- a/gamemanager.s +++ b/gamemanager.s @@ -52,6 +52,9 @@ gameplayLoop: jsr renderPlayers gameplayLoopKbd: + lda projectileActive + bpl gameplayLoopProjectiles ; Skip input during shots + ; Check for keys down jsr kbdScan @@ -72,6 +75,7 @@ gameplayLoopFire: jsr fire gameplayLoopProjectiles: + sta KBDSTROBE jsr unrenderProjectiles jsr updateProjectiles jsr renderProjectiles @@ -137,7 +141,7 @@ scrollMap: asl sta leftScreenEdge clc - adc #160-GAMEOBJECTWIDTH/4 + adc #160-GAMEOBJECTWIDTH/4-1 sta rightScreenEdge jsr clipTerrain @@ -199,6 +203,8 @@ currentPlayer: .word 0 gameOver: .word -1 ; Player index of winner +projectileActive: + .word -1 ; Position of map viewing window. Can be visualized in two ways: @@ -210,4 +216,4 @@ mapScrollPos: leftScreenEdge: .word 0 rightScreenEdge: - .word 160-GAMEOBJECTWIDTH/4 + .word 160-GAMEOBJECTWIDTH/4-1 diff --git a/gameobject.s b/gameobject.s index 01c816a..7db6c7a 100644 --- a/gameobject.s +++ b/gameobject.s @@ -203,6 +203,11 @@ renderGameobjectDone: ; X lda ptr+GO_POSX,y lsr + cmp leftScreenEdge + bmi unrenderGameobjectSkip ; Gameobject is off left edge of screen + cmp rightScreenEdge + bpl unrenderGameobjectSkip ; Gameobject is off right edge of screen + sec sbc leftScreenEdge sta SCRATCHL @@ -211,6 +216,10 @@ renderGameobjectDone: sec lda #200 sbc ptr+GO_POSY,y + bmi unrenderGameobjectSkip ; Gameobject is off top edge of screen + cmp #200 - GAMEOBJECTHEIGHT + bpl unrenderGameobjectSkip ; Gameobject is off bottom edge of screen + asl tax lda vramYOffset,x @@ -218,6 +227,12 @@ renderGameobjectDone: adc SCRATCHL tax ; X now contains the VRAM offset of the upper left corner + bra unrenderGameobjectBackground + +unrenderGameobjectSkip: + jmp unrenderGameobjectDone + +unrenderGameobjectBackground: lda ptr+GO_BACKGROUND,y sta VRAM,x iny diff --git a/gscats.2mg b/gscats.2mg index 6adcf5e37ec901ebc61e7853ce28b5f650414e18..42c85f552a952f60a3a2ad182d8a7db2900d357f 100644 GIT binary patch delta 1233 zcmY+DO>7fK6vt=RA$DwB>_#TGL-3d+Tv}9PkdjhGdLDBmZ#-TEEB$AG z^Y*=+{lA^btI@m~ok?!;esPwxx9-|Z$V1}bAnOO^U$O`4w|*-J&t{Kbz2K5U`foQn zaJ1h%D21}UH=~CoNxxj`vh5<0{!=LtEJ3a*=1(|?wgkCPW7<>5eHPP}fj-msKZ$M* zL!^DN6+E=_@9_O^o=EQnve%YoKal>?yI<^0`JmE3PkRj?(4B*<1w75P9he&;Hu@mW zwm`*3AIF)O-&f-|Joy#cJ52i%G@4|MJgCK4Gf$q3GZ$1?-&YP6fS@Upidzf74*{V2 zPZ*7$7y(fKosx*=0)>(fwGcS9F!(=Cj1#RD=+EA%jSbBWJi`YH)=krySgm{umV5DC zdP}*(zOg~@8rM&hKRFTt^Gj0sFBrs1r4V5usFe5Z6O-Cng$M_H0|Krf03+UN1mTXp zSdLgn#G^rKqP zcjleoJU5kI0HXyiy#l3Yh#BCq_1Tkb9{dUXrg>nGz$9w&Bp)pKNAsZN;V5330TH`- zQTE8Htg51sn>;YJ?s|2t5iw zj{?x60Q4vTJqkdN0??xXw8%jZ{ps6Qgh~8gle1m1&h=l>TBL5gE2iK<)tW)SH5$s& lTW9Q7+-u*v*CdpTvZ3lwn^5&AJIaA-KskSOuetVIe*?E!8%zKI delta 1219 zcmY+DZ%7ki7{K4%be?OAo2|75(OXso5uFxjg``nrW>Ao;{7~0F_H4tC6-2e8lIX*w z<3(s-8U>-!K`=~)Ete77QBof=LI^6zijbDohx%gA?cFVV;ko<056^RVzxRDFqt<5B z+WV1mkLM&=RlUeV$P*%(Ah0IkX|mDbyC}Rpkvw$e%mSO2z38gLYejdH&70iaUAx03 zu=B4P>{p4MJ$w}oWFfUA=nsoTGa$7&s6B(!)}S^4^aa~CS?ltFyn4b960M){-MKJn z`!A8a_By@L_JQsCxGCm>d?h{V>2(2JbC3o=F9X?5?}l^-pp9q(D3nxbUT|tY z@Q3?|<_G%7Q$090rzPj5)AY# zIB_I~&3S=FK%Xd(Im1=fpMi5Iz4J(?i1|(jt!YoBipj;t<|Rkr+#gVy+x0j|_SWxV zeH7jCi$+0DfkD(rDPlPBcMO9z3@tdcILH;oSwRw1d+SfLuT)v=@^_4YHo}V;7$T8_ zhC!tLw+O+vX}j8V2HNhnK|CRQ3fH}Dxs16#&n3wJqQXIgke4;3QYL@)#eC;L!G2m9 zG1t!t>Nol&s?MliZiR;qDDv1q#m?=1LWfx5C-bIAf)UCgYs zAY;L}1KL9KrLq<(?5d})dmcIwkSH~fSC8I@F0JzzHFaweb$2lU{88XQoA z18Q(U4GyTm0W~@rd(}N_!w@j+7-bmc7!HgI3=yLe!#U!fU9j=`UyB