From bfec5c22346d5ef3728f5cb4b7d5f192f79b8d20 Mon Sep 17 00:00:00 2001 From: blondie7575 Date: Sun, 22 Oct 2017 13:37:06 -0700 Subject: [PATCH] Basic camera shot tracking working --- gamemanager.s | 66 +++++++++++++++++++++++++++++++++++++++++++++++--- gscats.2mg | Bin 819264 -> 819264 bytes player.s | 10 ++++---- 3 files changed, 68 insertions(+), 8 deletions(-) diff --git a/gamemanager.s b/gamemanager.s index 81a52bb..a769e2f 100644 --- a/gamemanager.s +++ b/gamemanager.s @@ -36,7 +36,7 @@ beginGameplay: ldy #0 jsr playerCreate - lda #196 + lda #600 ldy #1 jsr playerCreate @@ -59,8 +59,8 @@ gameplayLoop: jsr renderPlayers gameplayLoopKbd: -; lda projectileActive -; bpl gameplayLoopProjectiles ; Skip input during shots + lda projectileActive + bpl gameplayLoopShotTracking ; Skip input during shots ; Check for keys down jsr kbdScan @@ -69,6 +69,8 @@ gameplayLoopKbd: lda paused bne gameplayLoopEndFrame +gameplayLoopScroll: + ; Scroll map if needed lda mapScrollRequested bmi gameplayLoopAngle @@ -112,6 +114,64 @@ gameplayLoopEndFrame: beq gameplayLoop jmp quitGame +gameplayLoopShotTracking: + jsr trackActiveShot + bra gameplayLoopScroll + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; trackActiveShot +; +; Handles tracking the projectile with the camera +; +; Trashes SCRATCHL +; +trackActiveShot: + lda projectileData+JD_PRECISEX + lsr ; Convert to integer and divide by two for byte distance + lsr + lsr + lsr + lsr + sta SCRATCHL ; Save this for later + + lda projectileData+JD_VX + bmi trackActiveShotNeg + + ; Left-to-right + lda mapScrollPos + cmp #VISIBLETERRAINWIDTH-VISIBLETERRAINWINDOW + beq trackActiveShotDone ; Logical-right edge clamp + + lda SCRATCHL + sec + sbc #80 ; Check for moving past center + cmp leftScreenEdge + bpl trackActiveShotCameraMove + bra trackActiveShotDone + +trackActiveShotNeg: + + ; Right-to-left + lda mapScrollPos + beq trackActiveShotDone ; Logical-left edge clamp + + lda SCRATCHL + clc + adc #80 ; Check for moving past center + cmp rightScreenEdge + bpl trackActiveShotDone + +trackActiveShotCameraMove: + lda SCRATCHL + sbc #80 + lsr + and #$fffe ; Force even + sta mapScrollRequested + +trackActiveShotDone: + rts + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; endTurn diff --git a/gscats.2mg b/gscats.2mg index 8f418d3a86a0def5cfc675ddbe01e067e68a08ec..b53e6e4b5809267a8502520194008bd8c0849961 100644 GIT binary patch delta 2528 zcmeH|ZD?Cn7{|}KX|goyMqG$Z`ohk#S?L&ZokgFP3Hz!m8{C%F$ZAcEjG zz2v#)cmMZ)o^z7>JU7|+;cWcy=QUO*8%I6+eY+6)4i(^&L)NN>5=BCfpXhp_G1%4A z*#43%BZO?*2&1KtWAL58Uc@{@^D|BmEX<6;_r&7;vMszZP8*wB( zIDso$EM6onPTcqa>t(C>jp}MOlYZF~b|S4-%^c~}_NtlZI<efshmt}c<&-2IMJBI(>&m!7_f zqb{j|>YktQ!C0>}ixK&F0i%b? z7V>Sx=%slJu~VZ@j9zN=i}4^m>&&i`p)oS4l09QY8Z`!l{#C>n67yCgMv&%b+GIrD zjl>rXoyA(kk?id9NqT755Ut8dD8EY!(N9B^e}m}(s!WGy{C)}}El3sOb&!v{wFq@+jC#UTNE@Z(oAT5{ zF`u}e=@vePDtz{3a-+*k(rXI8gV4vb_7|3@3+ng7`0ZeEuRm8+iG3`|Vw)RBj}|Y? zwU=Z8JQoMPUJ@j2*kR$C$`CLSN*!Miy`0eFDd-)uf9VwQADM zjB3@vkEAZH3zTHWz5((#hjM5E!CJ|o-p6?4C4LIqUfpxDTU;CYhEj z`rIt%M6xA1tdQ47gbgE@p&>X)+; zdSzvkyZ_Qlw%Ublr$}uX7ukO$M+)O6Z&tnx|72XOmDkgwrlSe3Kedb=xS9U6MXHHO zaZB3|Co`4o971?`S%3sk24Dl21vn3I0pKD)0GoN50Ga`g1FQqYZUNl}*Z_!2W};I7 zrvc6Y5R2*Y0UQ9R1IPj_0bB*R76Ves%tV6#A%GzOWHmh!KpB7yU>4v!zy*Md00Ens zr^yyGsTri>0P6s^0B!?p0K|8g(@z1M1~>yi?54*DZ~&mrj$_3~o&{+M;3~j10Hxea zGzbs^7%IoSjl`Q2kBQD7prY-EsWK`0QXC6h;C-yL6dNrxR;kz+UmzAI8-2LI3~& delta 2448 zcmc(gZ)h839LJw0|CXffmQw1HrnOJntz)7R=8$YUOlz6ljIm4qyr?fcx-nMCbDf

G)VU{@x6FW1f(hb@CU2;Ec-uXi4 zk>5R^`{sAw=U#k&cd5v(RAkqel}20b`=q6IPcb1slN>~!HCF5{P;}&}*IHh!Z*6I) z_rLCT6GBXn2_@6{e)UGP+J8D^OoWWI>Kt{+gZ(tLxtu>bCNwQ}c;fL_R$Ve1p!L+1 z=p3M1o9J^BpDdiCvSE?F>zo&pi9_}-8<7^o491ayC>E0AR9tV_gh z(NLN0Zcw)WPM-rcUcTWXm(Pp~(-*>^oG(XEuJ`g=jesovKgR4hC@>T?st z!7DO4k}Z)OeEhJ3!?v+9F2o!>az9RqWZ?pHSlMT7l8alVT5j(;Po(Xf{a}edc_I~Y zct*9YoD1U)euXWxz@mDTXu{tpYys0!KJJjaAJCJBT|CoFvJWaMz(SaID=wa0*}FG? zp=~?uRsnnfV5>ZU0!Dcy51^Fh6oA>BS2aHXTrI!(n7$nKu2~WX{-A4?Xv)|YJ-!+Z z&x=E8t}KW{b6lAht#AzaM7Yk8UsP`9NWFrLC^tmwm8q+5_nATOGqLk;4K-_GxO1Ht z5aD5m+QnEE52>l_P}1C{_g(E)0;0VO9zP%|&0>Z`-U+KGEIap!l21Gchm_{-=QG_p z+fKLz|HswN{i5X0_s#K)jkxupV*;x@9$9PZfUv-B?k4FMzcR%ZpU zSu+c?W(b+znNI0Q(flfO=X*atsdK*YO|RZm0p)f1zt8TJK9rZG<&UqCV2G!wHk1-HnScRtiG&xS>!=CU+5b1|kZOCEne>^GbKG;+M*7T2 z?dIg1IL1y}n9mBI-RP&hdO|RLOF#0Obx?XJ1C$ZU1homu3}u0`LKR*1nu|a92RRxv A#{d8T diff --git a/player.s b/player.s index 97392ea..8170121 100644 --- a/player.s +++ b/player.s @@ -15,9 +15,9 @@ playerData: .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - .word 45 ; Angle in degrees from +X - .word 1 ; Power - .word 100 ; Anger + .word 25 ; Angle in degrees from +X + .word 2 ; Power + .word 100 ; Anger .byte 8,"SPROCKET " ; Name .repeat 108 @@ -32,8 +32,8 @@ playerData: .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - .word 135 ; Angle in degrees from +X - .word 1 ; Power + .word 155 ; Angle in degrees from +X + .word 2 ; Power .word 100 ; Anger .byte 8,"TINKER " ; Name