lemm: keep pointer on screen

would crash spectacularly when we'd go off the edge
This commit is contained in:
Vince Weaver 2022-04-04 19:17:37 -04:00
parent eff804db03
commit faf9179c10
3 changed files with 15 additions and 22 deletions

View File

@ -88,7 +88,7 @@ erase_pointer:
lda CURSOR_Y lda CURSOR_Y
sta SAVED_Y1 sta SAVED_Y1
clc clc
adc #16 adc #14
sta SAVED_Y2 sta SAVED_Y2
lda CURSOR_X lda CURSOR_X

View File

@ -14,7 +14,8 @@ hgr_partial_restore:
ldx SAVED_Y2 ; handle wrap around ldx SAVED_Y2 ; handle wrap around
cpx #192 cpx #192
bcc partial_restore_yloop ; assume > 192 off screen negative bcc partial_restore_yloop ; assume > 192 off screen negative
ldx #0
ldx #0 ; X is end y-co-ord?
partial_restore_yloop: partial_restore_yloop:

View File

@ -120,11 +120,8 @@ check_left:
cmp #8 ; left key cmp #8 ; left key
bne check_right bne check_right
left_pressed: left_pressed:
lda CURSOR_X ; if 41<x<$FE don't decrement lda CURSOR_X ; if X==0 don't decrement
cmp #41 beq done_left_pressed
bcc do_dec_cursor_x
cmp #$FE
bcc done_left_pressed
do_dec_cursor_x: do_dec_cursor_x:
dec CURSOR_X dec CURSOR_X
done_left_pressed: done_left_pressed:
@ -136,11 +133,9 @@ check_right:
cmp #$15 ; right key cmp #$15 ; right key
bne check_up bne check_up
right_pressed: right_pressed:
lda CURSOR_X ; if 40<x<$FE don't increment lda CURSOR_X ; if X>=38 don't increment
cmp #40 cmp #38
bcc do_inc_cursor_x bcs done_right_pressed
cmp #$FE
bcc done_right_pressed
do_inc_cursor_x: do_inc_cursor_x:
inc CURSOR_X inc CURSOR_X
done_right_pressed: done_right_pressed:
@ -152,11 +147,8 @@ check_up:
cmp #$0B ; up key cmp #$0B ; up key
bne check_down bne check_down
up_pressed: up_pressed:
lda CURSOR_Y ; if 191<y<$F0 don't decrement lda CURSOR_Y ; if Y==0 don't increment
cmp #191 beq done_up_pressed
bcc do_dec_cursor_y
cmp #$F0
bcc done_up_pressed
do_dec_cursor_y: do_dec_cursor_y:
dec CURSOR_Y dec CURSOR_Y
dec CURSOR_Y dec CURSOR_Y
@ -172,11 +164,11 @@ check_down:
cmp #$0A cmp #$0A
bne check_escape bne check_escape
down_pressed: down_pressed:
lda CURSOR_Y ; if 191<y<$EE don't decrement lda CURSOR_Y ; if Y>=176 then don't inc?
cmp #191 cmp #176 ; cursor is 14 in size
bcc do_inc_cursor_y ; bcc do_inc_cursor_y
cmp #$EE ; cmp #$EE
bcc done_down_pressed bcs done_down_pressed
do_inc_cursor_y: do_inc_cursor_y:
inc CURSOR_Y inc CURSOR_Y
inc CURSOR_Y inc CURSOR_Y