; Draw Status Bar ;=========================== ; inc_score_by_10 ;=========================== ; FIXME: make sure interrupt routine handles d flag properly inc_score_by_10: sed lda SCORE0 clc adc #$10 sta SCORE0 lda SCORE1 adc #0 sta SCORE1 lda SCORE2 adc #0 sta SCORE2 cld jsr update_score rts ;=========================== ; update score ;=========================== update_score: lda SCORE0 and #$f ora #$b0 ; 0 -> $b0 sta status_string+6 lda SCORE0 lsr lsr lsr lsr ora #$b0 ; 0 -> $b0 sta status_string+5 lda SCORE1 and #$f ora #$b0 ; 0 -> $b0 sta status_string+4 lda SCORE1 lsr lsr lsr lsr ora #$b0 ; 0 -> $b0 sta status_string+3 lda SCORE2 and #$f ora #$b0 ; 0 -> $b0 sta status_string+2 lda #2 sta UPDATE_STATUS rts ;=========================== ; update health ;=========================== update_health: ldx #0 update_health_loop: cpx HEALTH bcc health_on lda #'_'|$80 bne done_health health_on: lda #' ' done_health: sta status_string+9,X inx cpx #8 bne update_health_loop rts ;=========================== ; update items ;=========================== update_items: lda INVENTORY and #INV_RED_KEY beq done_red_key lda #'R'&$3f sta status_string+33 done_red_key: lda INVENTORY and #INV_BLUE_KEY beq done_blue_key lda #'B'&$3f sta status_string+35 done_blue_key: rts ;=========================== ; update the status bar ;=========================== update_status_bar: jsr update_score jsr update_health jsr update_items lda #2 sta UPDATE_STATUS rts ;=========================== ; draw the status bar ;=========================== draw_status_bar: ; to improve frame rate, only draw if update status set? ; not implemented yet jsr inverse_text ; print help node lda #help_string sta OUTH jsr move_and_print jsr normal_text ; (normal) jsr move_and_print ; print explain text jsr raw_text jsr move_and_print ; print status line rts help_string: .byte 3,20," PRESS 'H' FOR HELP ",0 score_string: ; 012456789012345678901234567890123456789 .byte 0,22,"SCORE HEALTH FIREPOWER INVENTORY",0 status_string: ; .byte 0,23,"ZZZZZ XXXXXXXX =- ",0 .byte 0,23,"ZZZZZ" .byte ' '|$80,' '|$80 .byte "XXXXXXXX" .byte ' '|$80,' '|$80 .byte '='|$80,'-'|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80 .byte ' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,0