From c3c88a79eaace8616371aca7b2621ff58e7b797c Mon Sep 17 00:00:00 2001 From: blondie7575 Date: Tue, 15 Aug 2017 18:03:19 -0700 Subject: [PATCH] Angle now controllable FIxed a bug in intToString --- gscats.2mg | Bin 819264 -> 819264 bytes gscats.s | 56 ++++++++++++++++++++++++++++++----------------------- player.s | 53 ++++++++++++++++++++++++++++++++++++++++++-------- utility.s | 1 + 4 files changed, 78 insertions(+), 32 deletions(-) diff --git a/gscats.2mg b/gscats.2mg index ecb83903435854cc97bb093dfb2f5e49490b4b99..fafc4750e0a4463c57629aec14a9b68f2664500f 100644 GIT binary patch delta 1278 zcmah|e`p(J82*y2*WBHAxx0i&ny&aQ*=kz15vPT$I@S)#y3y$7)?C+7*4l-x%259p z_=B!N7aQWvwmS+dble#o^vceFCzbF)Opaq-OO>#ahLgt=P zTf#8{9S&<*2DtJ$~i_Ty7FL^#DBk`jAK?4g!QVmI0Hx(%C6pxLm}zh*iXF*R-8 zcCb|Pi1Rj_SU~XpB*^4B_aK+a>v7`=eZ=5(#n`16j5__E@tphqbfD8*v>sAF42-)T z5BAO7{tLe zdRE*FY#I35eCS=BHD=bG?w#(u1$>sxP$;T{z)y3UZd~S z{_{k?P0iB5r4SrXg`f;jA@u^3t(cBLS;2G^%1KPEP;S^-NC{BhkLfs+^O#ORc@a~8 z2b81ULh2-x-@()cW#lWQx}og#6*@yO0{h?y)Zh%f1y>=%Y-jc|t;`uF#$0A@GPBHW z<^kif@3c4BJM3reqWy|JZJ)C*+soK0wvG+45w?#VVKsJ!y~VDw47Z)z%e8W6xEObt zyUERRx2w1ZoQvPdH}M_(SzhF?@M(UIU*^jkRgOBx@Yaf{bBS`o{~xEVoC4<1f@<%v znu<2r#0=8o)IbSb#>F&O_Q_merZ=60nUsGKWCoVTGi>Ev)_NO7if&KcW~ z->6m>fT%c&#dTqe;n5T)2^NNlVlkV|C?NNp>7h1*==@rxIr=jI_!mk7pyr&hiuBOb z*TYx$Ki*3QUebdWt|L~F%?8yh_>Bl0(KCQ+p(fH>+og-&pXg7x-_*kasNVn_9M!{X z#sEZrS8ssmU3?aoD2f_4jXC@w(kVThbOZDQW%iMc&mU-Msz(UnzD4rwY9dwJ$ zQ?r5HDB-<@_=UvOt8<|(?=mX`%!&oWim?e}Ge#K(fl-cO!yqxJ&zKeZ=@0$}&p z@9%kj&-?uDj^{2N-II>)`SPs_G4vYXn|43|ZUAdBAe2sGcB+Hi_MYV#C3tREWPr}O zCY|XF_3aQ|XIxqxC6O8cXqZkkHli0OG-yMj4UJXBu{aSxcjzdz>wap$u$nK*ekzH4 zRp^#g_ff(V+KzxkqMZS~oigu~e4YN1?~l8!=%*^YpQhzb3fpOgg6yM?^_;fqhV@XP zP%9f&oLGQ+V-ln@f-oecGxIU?$@vkJnva_;_Kg`=sJP&p&mRWngW6hbu%(z8uXiie zEI@8oBGRs=a1Kqjr8Dw6t$`sNOrFHa22Ht!a4>_~<%hKLoz&-Br;Am6gD&a%L%Qzu z(En)G3S)Kg@s1A(!V8qsu|tX}RoY{Qo5%r(+k z0PDbfbjXk#|DAFA(T@<0_eWmD}? zZEVVhnxPLKg#%E6m*91{0Pn*`u!e1AyVySV3@ft}>@>T`F0&O}1J}m&a{b&{ZiLgh zS?(UU#<6@e@8gg11H8mv;;-`y{C)lrUn8^%T|%F5Mv#RGVY)$B6qbbwu|aGTd&Pe7 ztT-a-;;eX2Toc)<;q8v8FV0tzk^h)o`~)aYz^!#2S@xH{+k_~-O@ay1y)+IaGG_e# zkE6iT?Y?{5t!aMTmrR@h_VYA->f#ZJOy#RTC4a@I6BMW(Fq)54&uwbjJ5{6k>d)Lu zpM&I0!zhmFUo5VXcw^CGZZq0y`FXSDc>GPE<*Oy~oE5ojF&Ayu#z8+Rk)%;+oqGYS?k4}HD-%;7sz2-K3`Jm&00OIq=y~b!Zr$YM}GmJ)T1SBl4IIG^Vej|bnwHpCc&ZI5}5_W*D(#2;XJ6}H7)8)l)k)z&iAtgt@KKLP1I B@M!=5 diff --git a/gscats.s b/gscats.s index bb04d9e..4a291e7 100644 --- a/gscats.s +++ b/gscats.s @@ -40,32 +40,15 @@ mainGameLoop: jsr syncVBL -; lda scrollV -; bmi negV - -; clc -; lda mapScrollPos -; adc scrollV -; cmp #COMPILEDTERRAINROW-80 -; beq reverseScroll -; sta mapScrollPos - bra render - -negV: - clc - lda mapScrollPos - adc scrollV - beq reverseScroll - sta mapScrollPos - -render: - tay jsr renderTerrain jsr kbdScan lda mapScrollRequested bpl scrollMap + lda angleDeltaRequested + bne changeAngle + lda #gameobjectData sta PARAML0 jsr renderGameobject @@ -82,7 +65,6 @@ scrollMap: sta mapScrollPos asl - asl sta leftScreenEdge jsr clipTerrain @@ -90,6 +72,17 @@ scrollMap: sta mapScrollRequested jmp mainGameLoop +changeAngle: + ldy #0 + tax + jsr playerDeltaAngle + + ldy #0 + jsr renderPlayerHeader + + stz angleDeltaRequested + jmp mainGameLoop + reverseScroll: lda scrollV eor #$ffff @@ -117,12 +110,14 @@ kbdScanLoop: cmp #(8 + $80) beq kbdScanLeftArrow - cmp #(21 + $80) beq kbdScanRightArrow - - cmp #(32 + $80) + cmp #(' ' + $80) beq kbdScanSpace + cmp #('a' + $80) + beq kbdScanA + cmp #('z' + $80) + beq kbdScanZ kbdScanDone: NATIVE @@ -153,6 +148,17 @@ kbdScanSpace: sta quitRequested rts +kbdScanA: + NATIVE + lda #1 + sta angleDeltaRequested + rts + +kbdScanZ: + NATIVE + lda #-1 + sta angleDeltaRequested + rts @@ -162,6 +168,8 @@ quitRequested: .word $0000 mapScrollRequested: .word $FFFF +angleDeltaRequested: + .word $0000 ; Position of map viewing window. Can be visualized in two ways: diff --git a/player.s b/player.s index 87c0fd9..e4bc392 100644 --- a/player.s +++ b/player.s @@ -14,6 +14,48 @@ playerData: .word 45 ; Angle in degrees from +X .word 50 ; Power +PD_ANGLE = 4 ; Byte offsets into player data structure +PD_POS = 6 + +.macro PLAYERPTR_Y + tya ; Pointer to player structure from index + asl + asl + asl + tay +.endmacro + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; playerDeltaAngle +; +; Y = Player index +; X = Delta +; +playerDeltaAngle: + SAVE_AXY + PLAYERPTR_Y + + txa + clc + adc playerData+PD_ANGLE,y + bmi playerDeltaAngleClampLow + cmp #180 + bpl playerDeltaAngleClampHigh + +playerDeltaAngleStore: + sta playerData+PD_ANGLE,y + RESTORE_AXY + rts + +playerDeltaAngleClampLow: + lda #0 + bra playerDeltaAngleStore + +playerDeltaAngleClampHigh: + lda #180 + bra playerDeltaAngleStore + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; renderPlayerHeader @@ -22,18 +64,13 @@ playerData: ; renderPlayerHeader: SAVE_AXY - - tya ; Index to player structure - asl - asl - asl - tay + PLAYERPTR_Y ldx #0 lda #angleStr jsr DrawString - lda playerData+4,y + lda playerData+PD_ANGLE,y ldx #24 jsr drawNumber @@ -41,4 +78,4 @@ renderPlayerHeader: rts angleStr: - pstring "ANGLE:" + pstring "ANGLE: " diff --git a/utility.s b/utility.s index 092db98..f654a59 100644 --- a/utility.s +++ b/utility.s @@ -69,6 +69,7 @@ intToStringFullDigitsLoop: lsr lsr lsr + clc adc #'0' sta intToStringResult,y iny