mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-28 09:30:41 +00:00
51 lines
668 B
ArmAsm
51 lines
668 B
ArmAsm
|
|
move_ducks:
|
|
|
|
ldx #1 ; start with duck2
|
|
|
|
move_duck_loop:
|
|
|
|
clc
|
|
lda D1_XPOS,X
|
|
adc D1_XSPEED,X
|
|
sta D1_XPOS,X
|
|
|
|
|
|
; check out of bounds
|
|
; duck XPOS is middle of duck (which is 12 wide)
|
|
;
|
|
; to stay in pond want XPOS to be between and 8 and 34?
|
|
|
|
lda D1_XPOS,X
|
|
cmp #8
|
|
bcc duck_too_far_left ; blt
|
|
cmp #34
|
|
bcs duck_too_far_right ; bge
|
|
jmp duck_good
|
|
|
|
duck_too_far_left:
|
|
lda #$1 ; move right
|
|
sta D1_XSPEED,X
|
|
|
|
lda D1_STATE,X ; face right
|
|
ora #DUCK_RIGHT
|
|
sta D1_STATE,X
|
|
|
|
jmp duck_good
|
|
duck_too_far_right:
|
|
|
|
lda #$ff ; move left
|
|
sta D1_XSPEED,X
|
|
|
|
|
|
lda D1_STATE,X ; face left
|
|
and #<~DUCK_RIGHT
|
|
sta D1_STATE,X
|
|
|
|
duck_good:
|
|
dex
|
|
bpl move_duck_loop
|
|
|
|
|
|
rts
|