Angle now controllable

FIxed a bug in intToString
This commit is contained in:
blondie7575 2017-08-15 18:03:19 -07:00
parent 252abc2a55
commit c3c88a79ea
4 changed files with 78 additions and 32 deletions

Binary file not shown.

View File

@ -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:

View File

@ -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: "

View File

@ -69,6 +69,7 @@ intToStringFullDigitsLoop:
lsr
lsr
lsr
clc
adc #'0'
sta intToStringResult,y
iny