diff --git a/games/mist_hgr/Makefile b/games/mist_hgr/Makefile index ce146eac..adb0e62e 100644 --- a/games/mist_hgr/Makefile +++ b/games/mist_hgr/Makefile @@ -181,7 +181,7 @@ mist_title.o: mist_title.s zp.inc hardware.inc common_defines.inc \ common_routines.inc \ graphics_title_hgr/mist_title.lzsa graphics_title/title_graphics.inc \ gr_offsets.s \ - text_print.s gr_fast_clear.s decompress_fast_v2.s \ + draw_pointer.s text_print.s gr_fast_clear.s decompress_fast_v2.s \ keyboard.s audio.s \ init_state.s wait_a_bit.s \ link_book_mist_dock.s common_sprites.inc leveldata_title.inc \ diff --git a/games/mist_hgr/draw_pointer.s b/games/mist_hgr/draw_pointer.s index 8b281d53..df4710e2 100644 --- a/games/mist_hgr/draw_pointer.s +++ b/games/mist_hgr/draw_pointer.s @@ -4,6 +4,14 @@ draw_pointer: + lda UPDATE_POINTER + bne really_draw_pointer + + rts + +really_draw_pointer: + + jsr save_bg_14x14 ; save old bg ; for now assume the only 14x14 sprites are the pointers @@ -242,6 +250,9 @@ finger_draw: jsr hgr_draw_sprite_14x14 no_draw_pointer: + lda #0 + sta UPDATE_POINTER + rts ; 0 = point diff --git a/games/mist_hgr/init_state.s b/games/mist_hgr/init_state.s index 73326398..234d3e00 100644 --- a/games/mist_hgr/init_state.s +++ b/games/mist_hgr/init_state.s @@ -7,6 +7,7 @@ init_state: ; global game state lda #0 sta JOYSTICK_ENABLED + sta UPDATE_POINTER ; game state in saves init diff --git a/games/mist_hgr/keyboard.s b/games/mist_hgr/keyboard.s index a796f1f5..04c2cb87 100644 --- a/games/mist_hgr/keyboard.s +++ b/games/mist_hgr/keyboard.s @@ -23,7 +23,7 @@ check_button: lda #1 sta JS_BUTTON_STATE lda #' ' - jmp check_sound + jmp handle_input button_clear: lda #0 @@ -37,13 +37,13 @@ js_check_left: cmp #$20 bcs js_check_right ; if less than 32, left lda #'A' - bne check_sound + bne handle_input js_check_right: cmp #$40 bcc js_check_up lda #'D' - bne check_sound + bne handle_input js_check_up: lda value1 @@ -51,13 +51,13 @@ js_check_up: bcs js_check_down lda #'W' - bne check_sound + bne handle_input js_check_down: cmp #$40 bcc done_joystick lda #'S' - bne check_sound + bne handle_input done_joystick: @@ -73,9 +73,17 @@ actually_handle_keypress: keypress: and #$7f ; clear high bit cmp #' ' - beq check_sound ; make sure not to lose space + beq handle_input ; make sure not to lose space and #$df ; convert uppercase to lower case + +handle_input: + + pha + jsr restore_bg_14x14 ; restore old background + inc UPDATE_POINTER + pla + check_sound: cmp #$14 ; control-T bne check_joystick @@ -116,10 +124,10 @@ check_left: cmp #8 ; left key bne check_right left_pressed: - lda CURSOR_X ; if 41