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