dos33fsprogs/games/lemm/draw_pointer.s

98 lines
1.4 KiB
ArmAsm
Raw Normal View History

2022-03-09 20:15:38 +00:00
;====================================
; draw pointer
;====================================
draw_pointer:
2022-03-23 01:36:44 +00:00
lda #$FF
sta OVER_LEMMING ; first assume not over lemming
2022-03-09 20:15:38 +00:00
; for now assume the only 14x14 sprites are the pointers
lda CURSOR_X
sta XPOS
lda CURSOR_Y
sta YPOS
; see if over lemming
2022-03-23 01:36:44 +00:00
ldy #0
see_if_over_loop:
lda lemming_out,Y
beq no_lemming_try_again
2022-03-13 06:28:37 +00:00
; see if CURSOR_X==LEMMING_X
lda CURSOR_X
2022-03-23 01:36:44 +00:00
cmp lemming_x,Y
2022-03-13 06:28:37 +00:00
beq check_pointer_y
clc
adc #1
2022-03-23 01:36:44 +00:00
cmp lemming_x,Y
bne no_lemming_try_again
2022-03-13 06:28:37 +00:00
check_pointer_y:
; see if CURSOR_Y+7 > lemming_y && CURSOR_Y+7 < lemming_y+9
lda CURSOR_Y
clc
adc #7
2022-03-23 01:36:44 +00:00
cmp lemming_y,Y
bcc no_lemming_try_again
2022-03-13 06:28:37 +00:00
lda CURSOR_Y ; if cursor_y+7 > lemming_y+9
sec
sbc #2
2022-03-23 01:36:44 +00:00
cmp lemming_y,Y
bcs no_lemming_try_again
yes_over_lemming:
sty OVER_LEMMING
jmp yes_yes_lemming
no_lemming_try_again:
iny
cpy #MAX_LEMMINGS
bne see_if_over_loop
2022-03-13 06:28:37 +00:00
2022-03-23 01:36:44 +00:00
yes_yes_lemming:
lda OVER_LEMMING
bmi just_crosshair
2022-03-13 06:28:37 +00:00
just_select:
2022-03-13 06:28:37 +00:00
lda #<select_sprite_l
sta INL
lda #>select_sprite_l
jmp common_pointer
2022-03-09 20:15:38 +00:00
2022-03-13 06:28:37 +00:00
just_crosshair:
2022-03-13 05:46:46 +00:00
lda #<crosshair_sprite_l
2022-03-09 20:15:38 +00:00
sta INL
2022-03-13 05:46:46 +00:00
lda #>crosshair_sprite_l
2022-03-13 06:28:37 +00:00
common_pointer:
2022-03-09 20:15:38 +00:00
sta INH
jsr hgr_draw_sprite_14x14
rts
2022-03-13 06:28:37 +00:00
;=====================
; erase pointer
;=====================
erase_pointer:
lda CURSOR_Y
sta SAVED_Y1
clc
adc #14
2022-03-13 06:28:37 +00:00
sta SAVED_Y2
lda CURSOR_X
tax
inx
jmp hgr_partial_restore