movement
This commit is contained in:
parent
b49a08b327
commit
e021590fa6
1 changed files with 50 additions and 30 deletions
|
|
@ -6,10 +6,15 @@
|
|||
.
|
||||
. keyboard settings:
|
||||
. Address: 0x00C000
|
||||
.
|
||||
. frequency: 4000
|
||||
|
||||
SNAKE START 0
|
||||
|
||||
FIRST JSUB RENDER
|
||||
FIRST CLEAR A
|
||||
LOOP JSUB RENDER
|
||||
|
||||
JSUB WAIT
|
||||
|
||||
.if (food was eaten) temp = snake[LEN - 1], generate new food:
|
||||
|
||||
|
|
@ -18,47 +23,62 @@ FIRST JSUB RENDER
|
|||
|
||||
.if (eaten) LEN++, snake[LEN - 1] = temp
|
||||
|
||||
LDA @KEY_IN
|
||||
COMP #0x41 .A
|
||||
JEQ LEFT
|
||||
CLEAR A
|
||||
LDCH @KEY_IN
|
||||
|
||||
L10 COMP #0x41 .A
|
||||
JEQ L3
|
||||
COMP #0x57 .W
|
||||
JEQ UP
|
||||
JEQ L4
|
||||
COMP #0x44 .D
|
||||
JEQ RIGHT
|
||||
JEQ L5
|
||||
COMP #0x53 .S
|
||||
JEQ DOWN
|
||||
JEQ L6
|
||||
|
||||
L3 RMO A, X .make horizontal move
|
||||
LDA @SNAKEX
|
||||
ADDR X, A
|
||||
LDCH DIREC
|
||||
J L10
|
||||
|
||||
L3 STCH DIREC
|
||||
LDA @SNAKEX .move left
|
||||
SUB #1
|
||||
STA @SNAKEX
|
||||
J L5
|
||||
J L7
|
||||
|
||||
L4 RMO A, X .make vertical move
|
||||
LDA @SNAKEY
|
||||
ADDR X, A
|
||||
L4 STCH DIREC
|
||||
LDA @SNAKEY .move up
|
||||
SUB #1
|
||||
STA @SNAKEY
|
||||
J L7
|
||||
|
||||
L5 STCH DIREC
|
||||
LDA @SNAKEX .move right
|
||||
ADD #1
|
||||
STA @SNAKEX
|
||||
J L7
|
||||
|
||||
L6 STCH DIREC
|
||||
LDA @SNAKEY .move down
|
||||
ADD #1
|
||||
STA @SNAKEY
|
||||
|
||||
L5 .check bounds
|
||||
L7 .check bounds
|
||||
.for (pos : snakex/y) assert x/y >= 0 && x/y <= 15
|
||||
|
||||
J FIRST
|
||||
JSUB RENDER
|
||||
J LOOP
|
||||
|
||||
HALT J HALT
|
||||
|
||||
.store direction
|
||||
LEFT LDA #-1
|
||||
STA DIREC
|
||||
J L3
|
||||
UP LDA #-0x10
|
||||
STA DIREC
|
||||
J L4
|
||||
RIGHT LDA #1
|
||||
STA DIREC
|
||||
J L3
|
||||
DOWN LDA #0x10
|
||||
STA DIREC
|
||||
J L4
|
||||
.waits some time before reading input so it doesnt feel laggy
|
||||
.no arguements, no return
|
||||
.changes A, X
|
||||
WAIT LDA #0
|
||||
LDX #0xA0
|
||||
L8 ADD #1
|
||||
COMPR A, X
|
||||
JEQ L9
|
||||
J L8
|
||||
L9 RSUB
|
||||
|
||||
.draws the snake
|
||||
.no arguements, no return
|
||||
|
|
@ -138,7 +158,7 @@ POP LDA ST_PTR
|
|||
LDA @ST_PTR
|
||||
RSUB
|
||||
|
||||
LEN WORD 0 .snake length
|
||||
LEN WORD 1 .snake length
|
||||
SCREEN WORD X'00A000' .screen pointer
|
||||
KEY_IN WORD X'00C000' .input pointer
|
||||
ST_PTR WORD X'000200' .stack pointer, 2kB of space
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue