dos33fsprogs/games/lemm/draw_pointer.s

81 lines
1.1 KiB
ArmAsm
Raw Normal View History

2022-03-09 20:15:38 +00:00
;====================================
; draw pointer
;====================================
draw_pointer:
lda #0
sta OVER_LEMMING
2022-03-13 06:28:37 +00:00
; jsr save_bg_14x14 ; save old bg
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
; TODO
2022-03-13 06:28:37 +00:00
; see if CURSOR_X==LEMMING_X
lda CURSOR_X
cmp lemming_x
beq check_pointer_y
clc
adc #1
cmp lemming_x
bne just_crosshair
check_pointer_y:
; see if CURSOR_Y+7 > lemming_y && CURSOR_Y+7 < lemming_y+9
lda CURSOR_Y
clc
adc #7
cmp lemming_y
bcc just_crosshair
lda CURSOR_Y ; if cursor_y+7 > lemming_y+9
sec
sbc #2
cmp lemming_y
bcs just_crosshair
just_select:
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 #16
sta SAVED_Y2
lda CURSOR_X
tax
inx
jmp hgr_partial_restore