Make the character run.

This commit is contained in:
Jeremy Rand 2017-07-19 20:06:10 -05:00
parent ded8d8c05c
commit 25563dd3b7

View File

@ -7,7 +7,7 @@
; ;
.export _game, _drawCharacter .export _game
.import _vblWait .import _vblWait
@ -26,6 +26,8 @@ ZPADDR0=<$80
ZPADDR1=<$82 ZPADDR1=<$82
ZPADDR2=<$84 ZPADDR2=<$84
ZPADDR3=<$86 ZPADDR3=<$86
ZPADDR4=<$88
ZPADDR5=<$8a
COL_BLACK=0 COL_BLACK=0
COL_VIOLET=1 COL_VIOLET=1
@ -33,6 +35,12 @@ COL_GREEN=2
COL_WHITE=3 COL_WHITE=3
CHAR_HEIGHT=10 CHAR_HEIGHT=10
NUM_CHAR_POS=3
JUMP_SPEED=5
GRAVITY=1
GRID_YPOS=150
LINE0 = $2000 LINE0 = $2000
LINE1 = LINE0 + 1024 LINE1 = LINE0 + 1024
@ -234,73 +242,61 @@ LINE191 = LINE190 + 1024
; Set up hires screen ; Set up hires screen
jsr clearScreen jsr clearScreen
lda TXTCLR
lda MIXCLR
lda HIRES
lda LOWSCR
lda #COL_VIOLET
sta colour
@L3:
ldx colour
ldy #140
jsr drawCharacter
ldx colour
ldy #150
jsr drawLine
ldy #155
jsr drawLine
ldx #0
@L1: @L1:
jsr _vblWait jsr _vblWait
ldy #150
lda colour
jsr drawGrid
inx
cpx #7
bne @L2
ldx #0
@L2: jsr drawCharacter
jsr drawGrid
jsr updateCharacter
jsr updateGrid
lda KEYBOARD lda KEYBOARD
bpl @L1 bpl @L1
lda STROBE lda STROBE
inc colour inc gridColour
lda colour lda gridColour
and #COL_WHITE and #COL_WHITE
sta colour sta gridColour
jmp @L3 sta characterColour
jmp @L1
lda TXTSET lda TXTSET
rts rts
; Locals
colour: .BYTE $00
.endproc .endproc
_drawCharacter: .proc updateCharacter
ldx characterPos
inx
cpx #NUM_CHAR_POS
bne @L1
ldx #0
@L1:
stx characterPos
rts
.endproc
.proc drawCharacter .proc drawCharacter
ldx characterColour
lda colourEvenLookup,x lda colourEvenLookup,x
sta evenVal sta evenVal
lda colourOddLookup,x lda colourOddLookup,x
sta oddVal sta oddVal
lda #<characterBitmap ldx characterPos
lda characterPosLo,x
sta ZPADDR1 sta ZPADDR1
lda #>characterBitmap lda characterPosHi,x
sta ZPADDR1+1 sta ZPADDR1+1
tya ldy characterY
clc
adc #CHAR_HEIGHT
sta yBottom
ldx #0 ldx #0
@L1: @L1:
lda loAddrs,y lda loAddrs,y
@ -323,7 +319,7 @@ _drawCharacter:
ldy yPos ldy yPos
iny iny
cpy yBottom cpy characterYBottom
bne @L1 bne @L1
rts rts
@ -332,45 +328,24 @@ _drawCharacter:
evenVal: .BYTE $00 evenVal: .BYTE $00
oddVal: .BYTE $00 oddVal: .BYTE $00
yPos: .BYTE $00 yPos: .BYTE $00
yBottom: .BYTE $00
.endproc .endproc
.proc drawLine
lda colourEvenLookup,x
sta evenVal
lda colourOddLookup,x
sta oddVal
lda loAddrs,y .proc updateGrid
sta ZPADDR0 ldx gridXPos
lda page1HiAddrs,y inx
sta ZPADDR0+1 cpx #7
ldy #0
@L1:
lda evenVal
sta (ZPADDR0),y
iny
lda oddVal
sta (ZPADDR0),y
iny
cpy #MAXXBYTE
bne @L1 bne @L1
ldx #0
@L1:
stx gridXPos
rts rts
; Locals
evenVal: .BYTE $00
oddVal: .BYTE $00
.endproc .endproc
.proc drawGrid .proc drawGrid
sta colour ldy gridY
iny
lda loAddrs,y lda loAddrs,y
sta ZPADDR0 sta ZPADDR0
lda page1HiAddrs,y lda page1HiAddrs,y
@ -394,27 +369,49 @@ oddVal: .BYTE $00
lda page1HiAddrs,y lda page1HiAddrs,y
sta ZPADDR3+1 sta ZPADDR3+1
ldy colour iny
lda loAddrs,y
sta ZPADDR4
lda page1HiAddrs,y
sta ZPADDR4+1
iny
lda loAddrs,y
sta ZPADDR5
lda page1HiAddrs,y
sta ZPADDR5+1
ldx gridXPos
ldy gridColour
lda colourEvenLookup,y lda colourEvenLookup,y
and evenGrid,x
sta evenVal sta evenVal
and evenGrid,x
sta evenGridVal
lda colourOddLookup,y lda colourOddLookup,y
and oddGrid,x
sta oddVal sta oddVal
and oddGrid,x
sta oddGridVal
ldy #0 ldy #0
@L1: @L1:
lda evenVal lda evenVal
sta (ZPADDR0),y sta (ZPADDR0),y
sta (ZPADDR5),y
lda evenGridVal
sta (ZPADDR1),y sta (ZPADDR1),y
sta (ZPADDR2),y sta (ZPADDR2),y
sta (ZPADDR3),y sta (ZPADDR3),y
sta (ZPADDR4),y
iny iny
lda oddVal lda oddVal
sta (ZPADDR0),y sta (ZPADDR0),y
sta (ZPADDR5),y
lda oddGridVal
sta (ZPADDR1),y sta (ZPADDR1),y
sta (ZPADDR2),y sta (ZPADDR2),y
sta (ZPADDR3),y sta (ZPADDR3),y
sta (ZPADDR4),y
iny iny
cpy #MAXXBYTE cpy #MAXXBYTE
bne @L1 bne @L1
@ -422,9 +419,10 @@ oddVal: .BYTE $00
rts rts
; Locals ; Locals
colour: .BYTE $00 evenVal: .BYTE $00
evenVal: .BYTE $00 oddVal: .BYTE $00
oddVal: .BYTE $00 evenGridVal: .BYTE $00
oddGridVal: .BYTE $00
.endproc .endproc
@ -450,6 +448,11 @@ oddVal: .BYTE $00
cpx #MAXY cpx #MAXY
bne @L1 bne @L1
lda TXTCLR
lda MIXCLR
lda HIRES
lda LOWSCR
rts rts
.endproc .endproc
@ -548,6 +551,7 @@ oddGrid:
.align 32 .align 32
characterBitmap: characterBitmap:
character1Bitmap:
.BYTE $70, $01 .BYTE $70, $01
.BYTE $70, $01 .BYTE $70, $01
.BYTE $30, $00 .BYTE $30, $00
@ -559,3 +563,47 @@ characterBitmap:
.BYTE $40, $01 .BYTE $40, $01
.BYTE $40, $01 .BYTE $40, $01
.align 32
character2Bitmap:
.BYTE $70, $01
.BYTE $70, $01
.BYTE $30, $00
.BYTE $3c, $06
.BYTE $73, $01
.BYTE $30, $00
.BYTE $7c, $01
.BYTE $43, $07
.BYTE $43, $07
.BYTE $03, $00
.align 32
character3Bitmap:
.BYTE $70, $01
.BYTE $70, $01
.BYTE $30, $00
.BYTE $7c, $01
.BYTE $3c, $06
.BYTE $70, $01
.BYTE $7c, $01
.BYTE $3c, $00
.BYTE $3f, $00
.BYTE $0c, $00
characterPosLo:
.LOBYTES character1Bitmap, character2Bitmap, character3Bitmap
characterPosHi:
.HIBYTES character1Bitmap, character2Bitmap, character3Bitmap
characterColour: .BYTE COL_VIOLET
characterPos: .BYTE $00
characterY: .BYTE GRID_YPOS-CHAR_HEIGHT
characterYBottom: .BYTE GRID_YPOS
characterJumping: .BYTE $00
characterYSpeed: .BYTE $00
characterFalling: .BYTE $00
gridColour: .BYTE COL_VIOLET
gridY: .BYTE GRID_YPOS
gridXPos: .BYTE $00