dos33fsprogs/games/lemm/update_menu.s

191 lines
3.2 KiB
ArmAsm

;=============================
; update remaining_all
;=============================
update_remaining_all:
ldx #0
ura_loop:
txa
pha
jsr update_remaining
pla
tax
inx
cpx #8
bne ura_loop
rts
;=============================
; update remaining
;=============================
; X is which one to update
update_remaining:
txa
pha
jsr hgr_sprite_page_toggle ; toggle page (bg)
lda CLIMBER_COUNT,X
tay
lda littlenums_l,Y
sta INL
lda littlenums_h,Y
sta INH
lda remaining_x,X
sta XPOS
lda #169
sta YPOS
jsr hgr_draw_sprite
;
pla
tax
jsr hgr_sprite_page_toggle ; toggle page (bg)
lda CLIMBER_COUNT,X
tay
lda littlenums_l,Y
sta INL
lda littlenums_h,Y
sta INH
lda remaining_x,X
sta XPOS
lda #169
sta YPOS
jsr hgr_draw_sprite
rts
; X locations to print the counts at
; approximate, 7-bit boundaries where graphics are on 8-bit
remaining_x:
.byte 5,7,10,12,14,17,19,21
littlenums_l:
.byte <little00_sprite,<little01_sprite,<little02_sprite
.byte <little03_sprite,<little04_sprite,<little05_sprite
.byte <little06_sprite,<little07_sprite,<little08_sprite
.byte <little09_sprite,<little10_sprite,<little11_sprite
.byte <little12_sprite,<little13_sprite,<little14_sprite
.byte <little15_sprite,<little16_sprite,<little17_sprite
.byte <little18_sprite,<little19_sprite,<little20_sprite
littlenums_h:
.byte >little00_sprite,>little01_sprite,>little02_sprite
.byte >little03_sprite,>little04_sprite,>little05_sprite
.byte >little06_sprite,>little07_sprite,>little08_sprite
.byte >little09_sprite,>little10_sprite,>little11_sprite
.byte >little12_sprite,>little13_sprite,>little14_sprite
.byte >little15_sprite,>little16_sprite,>little17_sprite
.byte >little18_sprite,>little19_sprite,>little20_sprite
;=============================
; update selection
;=============================
update_selection:
lda BUTTON_LOCATION
bne actually_update_selection
rts
actually_update_selection:
ldx #7
stx HGR_COLOR
lda BUTTON_LOCATION
jsr draw_button
rts
;========================
; erase menu
;========================
erase_menu:
lda BUTTON_LOCATION
bne actually_erase_menu
rts
actually_erase_menu:
ldx #0
stx HGR_COLOR
lda BUTTON_LOCATION
jsr draw_button
rts
;====================
; draw button
;====================
draw_button:
; location is (1+BUTTON_LOCATION)*16
; two hlins
lda BUTTON_LOCATION
clc
adc #1
asl
asl
asl
asl
tax
sta button_smc1+1
sta button_smc2+1
sta button_smc3+1
clc
adc #15
sta button_smc4+1
; draw on both pages
jsr actual_button_draw
jsr hgr_hlin_page_toggle
jsr hgr_vlin_page_toggle
jsr actual_button_draw
jsr hgr_hlin_page_toggle
jsr hgr_vlin_page_toggle
rts
actual_button_draw:
button_smc1:
ldx #144
lda #168
ldy #15
jsr hgr_hlin ; (x,a) to (x+y,a)
button_smc2:
ldx #144
lda #191
ldy #15
jsr hgr_hlin ; (x,a) to (x+y,a)
; two vlins
button_smc3:
ldx #144
lda #168
ldy #23
jsr hgr_vlin ; (x,a) to (x,a+y)
button_smc4:
ldx #159
lda #168
ldy #23
jsr hgr_vlin ; (x,a) to (x,a+y)
rts