diff --git a/games/mist_hgr/Makefile b/games/mist_hgr/Makefile index a43c3944..ce146eac 100644 --- a/games/mist_hgr/Makefile +++ b/games/mist_hgr/Makefile @@ -6,6 +6,7 @@ PNG_TO_40x96 = ../../utils/gr-utils/png_to_40x96 PNG_TO_40x48D = ../../utils/gr-utils/png_to_40x48d PNG2RLE = ../../utils/gr-utils/png2rle B2D = ../../utils/bmp2dhr/b2d +EMPTY_DISK = ../../empty_disk/empty.dsk TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft @@ -17,19 +18,20 @@ all: mist_hgr.dsk # zip mist.zip mist_hgr.dsk mist_side2.dsk mist_side3.dsk mist_hgr.dsk: QBOOT TEXT_TITLE QLOAD \ - MIST_TITLE MIST OCTAGON VIEWER \ - DENTIST D\'NI SHIP GENERATOR \ - SAVE1 SAVE2 SAVE3 SAVE4 SAVE5 - cp extra_empty.dsk mist_hgr.dsk + MIST_TITLE +#MIST OCTAGON VIEWER \ +# DENTIST D\'NI SHIP GENERATOR \ +# SAVE1 SAVE2 SAVE3 SAVE4 SAVE5 + cp $(EMPTY_DISK) mist_hgr.dsk $(DOS33_RAW) mist_hgr.dsk 0 0 QBOOT 0 1 $(DOS33_RAW) mist_hgr.dsk 0 2 QBOOT 1 1 $(DOS33_RAW) mist_hgr.dsk 0 4 QBOOT 2 1 $(DOS33_RAW) mist_hgr.dsk 0 6 TEXT_TITLE 0 3 - $(DOS33_RAW) mist_hgr.dsk 0 11 SAVE1 0 1 - $(DOS33_RAW) mist_hgr.dsk 0 12 SAVE2 0 1 - $(DOS33_RAW) mist_hgr.dsk 0 13 SAVE3 0 1 - $(DOS33_RAW) mist_hgr.dsk 0 14 SAVE4 0 1 - $(DOS33_RAW) mist_hgr.dsk 0 15 SAVE5 0 1 +# $(DOS33_RAW) mist_hgr.dsk 0 11 SAVE1 0 1 +# $(DOS33_RAW) mist_hgr.dsk 0 12 SAVE2 0 1 +# $(DOS33_RAW) mist_hgr.dsk 0 13 SAVE3 0 1 +# $(DOS33_RAW) mist_hgr.dsk 0 14 SAVE4 0 1 +# $(DOS33_RAW) mist_hgr.dsk 0 15 SAVE5 0 1 $(DOS33_RAW) mist_hgr.dsk 1 0 QLOAD 0 14 $(DOS33_RAW) mist_hgr.dsk 2 0 MIST_TITLE 0 0 # 84 @@ -98,7 +100,7 @@ QLOAD: qload.o ld65 -o QLOAD qload.o -C ../../linker_scripts/apple2_1200.inc qload.o: qload.s qboot.inc \ - gr_offsets.s \ + gr_offsets.s hgr_14x14_sprite.s common_sprites.inc \ text_print.s gr_fast_clear.s decompress_fast_v2.s \ keyboard.s audio.s loadstore.s \ qkumba_popwr.s @@ -505,20 +507,20 @@ clean: GENERATOR \ generate_common cd graphics_title && make clean - cd graphics_mist && make clean - cd graphics_octagon && make clean - cd books && make clean - cd graphics_viewer && make clean - cd graphics_meche && make clean - cd graphics_selena && make clean - cd graphics_cabin && make clean - cd graphics_channel && make clean - cd graphics_stoney && make clean - cd graphics_dentist && make clean - cd graphics_generator && make clean - cd graphics_arbor && make clean - cd graphics_nibel && make clean - cd graphics_dni && make clean - cd graphics_ship && make clean - cd graphics_sub && make clean +# cd graphics_mist && make clean +# cd graphics_octagon && make clean +# cd books && make clean +# cd graphics_viewer && make clean +# cd graphics_meche && make clean +# cd graphics_selena && make clean +# cd graphics_cabin && make clean +# cd graphics_channel && make clean +# cd graphics_stoney && make clean +# cd graphics_dentist && make clean +# cd graphics_generator && make clean +# cd graphics_arbor && make clean +# cd graphics_nibel && make clean +# cd graphics_dni && make clean +# cd graphics_ship && make clean +# cd graphics_sub && make clean diff --git a/games/mist_hgr/common_sprites.inc b/games/mist_hgr/common_sprites.inc index 146ec3e6..dd8bd76e 100644 --- a/games/mist_hgr/common_sprites.inc +++ b/games/mist_hgr/common_sprites.inc @@ -1,88 +1,862 @@ finger_point_sprite: - .byte 5,5 - .byte $AA,$BB,$AA,$AA,$AA - .byte $AA,$BB,$AA,$AA,$AA - .byte $BA,$BB,$BB,$BB,$BB - .byte $AB,$BB,$BB,$BB,$BB - .byte $AA,$BB,$BB,$BB,$AA + +;=============== +; point sprite +;=============== + +point_sprite_l: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $63 ; 0 110 0 011 +.byte $66 ; 0 110 0 110 +.byte $2c ; 0 010 1 100 +.byte $6c ; 0 110 1 100 +.byte $78 ; 0 111 1 000 +.byte $70 ; 0 111 0 000 +.byte $70 ; 0 111 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 + +point_sprite_r: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $0A ; 0 000 1 010 +.byte $2A ; 0 010 1 010 +.byte $2D ; 0 010 1 101 +.byte $37 ; 0 011 0 111 +.byte $3F ; 0 011 1 111 +.byte $3F ; 0 011 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 + +point_mask_l: ; X 654 3 210 +.byte $9f ; 1 001 1 111 +.byte $8f ; 1 000 1 111 +.byte $8f ; 1 000 1 111 +.byte $8f ; 1 000 1 111 +.byte $88 ; 1 000 1 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $81 ; 1 000 0 001 +.byte $81 ; 1 000 0 001 +.byte $83 ; 1 000 0 011 +.byte $87 ; 1 000 0 111 +.byte $8f ; 1 000 1 111 +.byte $8f ; 1 000 1 111 + +point_mask_r: ; X 654 3 210 +.byte $ff ; 1 111 1 111 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $e0 ; 1 110 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $c0 ; 1 100 0 000 +.byte $c0 ; 1 100 0 000 + finger_grab_sprite: - .byte 5,5 - .byte $AA,$AA,$BB,$AA,$AA - .byte $BB,$AA,$BB,$AA,$BB - .byte $BB,$BA,$BB,$BA,$BB - .byte $AB,$BB,$BB,$BB,$BB - .byte $AA,$BB,$BB,$BB,$AA +;=============== +; grab sprite +;=============== + +grab_sprite_l: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $4c ; 0 100 1 100 +.byte $4c ; 0 100 1 100 +.byte $58 ; 0 101 1 000 +.byte $58 ; 0 101 1 000 +.byte $70 ; 0 111 0 000 +.byte $73 ; 0 111 0 011 +.byte $77 ; 0 111 0 111 +.byte $7e ; 0 111 1 110 +.byte $7c ; 0 111 1 100 +.byte $7c ; 0 111 1 100 +.byte $78 ; 0 111 1 000 +.byte $70 ; 0 111 0 000 +.byte $60 ; 0 110 0 000 + +grab_sprite_r: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $0d ; 0 000 1 101 +.byte $0d ; 0 000 1 101 +.byte $0d ; 0 000 1 101 +.byte $6d ; 0 110 1 101 +.byte $6f ; 0 110 1 111 +.byte $7f ; 0 111 1 111 +.byte $3f ; 0 011 1 111 +.byte $3f ; 0 011 1 111 +.byte $3f ; 0 011 1 111 +.byte $1f ; 0 001 1 111 +.byte $1f ; 0 001 1 111 +.byte $0f ; 0 000 1 111 +.byte $0f ; 0 000 1 111 + +grab_mask_l: ; X 654 3 210 +.byte $b3 ; 1 011 0 011 +.byte $81 ; 1 000 0 001 +.byte $81 ; 1 000 0 001 +.byte $83 ; 1 000 0 011 +.byte $83 ; 1 000 0 011 +.byte $84 ; 1 000 0 100 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $81 ; 1 000 0 001 +.byte $81 ; 1 000 0 001 +.byte $83 ; 1 000 0 011 +.byte $c7 ; 1 100 0 111 +.byte $c7 ; 1 100 1 111 + +grab_mask_r: ; X 654 3 210 +.byte $f2 ; 1 111 0 010 +.byte $e0 ; 1 110 0 000 +.byte $e0 ; 1 110 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 100 0 000 +.byte $c0 ; 1 100 0 000 +.byte $e0 ; 1 110 0 000 +.byte $e0 ; 1 110 0 000 + + +;====================== +; finger left +;====================== +; TODO finger_left_sprite: - .byte 6,4 - .byte $AA,$AA,$AA,$AB,$BA,$AA - .byte $BB,$BB,$BB,$BB,$BB,$BB - .byte $AA,$AA,$BB,$BB,$BB,$BB - .byte $AA,$AA,$AB,$BB,$BB,$AB + +finger_left_sprite_l: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $63 ; 0 110 0 011 +.byte $66 ; 0 110 0 110 +.byte $2c ; 0 010 1 100 +.byte $6c ; 0 110 1 100 +.byte $78 ; 0 111 1 000 +.byte $70 ; 0 111 0 000 +.byte $70 ; 0 111 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 + +finger_left_sprite_r: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $0A ; 0 000 1 010 +.byte $2A ; 0 010 1 010 +.byte $2D ; 0 010 1 101 +.byte $37 ; 0 011 0 111 +.byte $3F ; 0 011 1 111 +.byte $3F ; 0 011 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 + +finger_left_mask_l: ; X 654 3 210 +.byte $ff ; 1 001 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 011 +.byte $ff ; 1 000 0 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 + +finger_left_mask_r: ; X 654 3 210 +.byte $ff ; 1 111 1 111 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $e0 ; 1 110 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $c0 ; 1 100 0 000 +.byte $c0 ; 1 100 0 000 + + +;==================== +; finger right +;==================== +; TODO finger_right_sprite: - .byte 6,4 - .byte $AA,$BA,$AB,$AA,$AA,$AA - .byte $BB,$BB,$BB,$BB,$BB,$BB - .byte $BB,$BB,$BB,$BB,$AA,$AA - .byte $AB,$BB,$BB,$AB,$AA,$AA +finger_right_sprite_l: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $63 ; 0 110 0 011 +.byte $66 ; 0 110 0 110 +.byte $2c ; 0 010 1 100 +.byte $6c ; 0 110 1 100 +.byte $78 ; 0 111 1 000 +.byte $70 ; 0 111 0 000 +.byte $70 ; 0 111 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +finger_right_sprite_r: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $0A ; 0 000 1 010 +.byte $2A ; 0 010 1 010 +.byte $2D ; 0 010 1 101 +.byte $37 ; 0 011 0 111 +.byte $3F ; 0 011 1 111 +.byte $3F ; 0 011 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 + +finger_right_mask_l: ; X 654 3 210 +.byte $ff ; 1 001 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 011 +.byte $ff ; 1 000 0 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 + +finger_right_mask_r: ; X 654 3 210 +.byte $ff ; 1 111 1 111 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $e0 ; 1 110 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $c0 ; 1 100 0 000 +.byte $c0 ; 1 100 0 000 + + +;==================== +; Finger turn left +;==================== finger_turn_left_sprite: - .byte 6,4 - .byte $aa,$aa,$ba,$bb,$aa,$aa - .byte $ba,$bb,$bb,$bb,$bb,$ba - .byte $aa,$ab,$bb,$bb,$ab,$bb - .byte $aa,$aa,$aa,$ab,$aa,$ab + +finger_turn_left_sprite_l: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $63 ; 0 110 0 011 +.byte $66 ; 0 110 0 110 +.byte $2c ; 0 010 1 100 +.byte $6c ; 0 110 1 100 +.byte $78 ; 0 111 1 000 +.byte $70 ; 0 111 0 000 +.byte $70 ; 0 111 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 + +finger_turn_left_sprite_r: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $0A ; 0 000 1 010 +.byte $2A ; 0 010 1 010 +.byte $2D ; 0 010 1 101 +.byte $37 ; 0 011 0 111 +.byte $3F ; 0 011 1 111 +.byte $3F ; 0 011 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 + +finger_turn_left_mask_l: ; X 654 3 210 +.byte $ff ; 1 001 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 011 +.byte $ff ; 1 000 0 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 + +finger_turn_left_mask_r: ; X 654 3 210 +.byte $ff ; 1 111 1 111 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $e0 ; 1 110 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $c0 ; 1 100 0 000 +.byte $c0 ; 1 100 0 000 + +;===================== +; Finger turn right +;===================== +; TODO finger_turn_right_sprite: - .byte 6,4 - .byte $aa,$aa,$bb,$ba,$aa,$aa - .byte $ba,$bb,$bb,$bb,$bb,$ba - .byte $bb,$ab,$bb,$bb,$ab,$aa - .byte $ab,$aa,$ab,$aa,$aa,$aa + +finger_turn_right_sprite_l: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $63 ; 0 110 0 011 +.byte $66 ; 0 110 0 110 +.byte $2c ; 0 010 1 100 +.byte $6c ; 0 110 1 100 +.byte $78 ; 0 111 1 000 +.byte $70 ; 0 111 0 000 +.byte $70 ; 0 111 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 + +finger_turn_right_sprite_r: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $0A ; 0 000 1 010 +.byte $2A ; 0 010 1 010 +.byte $2D ; 0 010 1 101 +.byte $37 ; 0 011 0 111 +.byte $3F ; 0 011 1 111 +.byte $3F ; 0 011 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 + +finger_turn_right_mask_l: ; X 654 3 210 +.byte $ff ; 1 001 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 011 +.byte $ff ; 1 000 0 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 + +finger_turn_right_mask_r: ; X 654 3 210 +.byte $ff ; 1 111 1 111 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $e0 ; 1 110 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $c0 ; 1 100 0 000 +.byte $c0 ; 1 100 0 000 + + +;===================== +; finger match +;===================== +; TODO finger_match_sprite: - .byte 6,4 - .byte $aa,$aa,$aa,$aa,$ba,$ba - .byte $1a,$da,$da,$db,$db,$db - .byte $a1,$ad,$ad,$bd,$bd,$ad - .byte $aa,$aa,$aa,$aa,$ab,$bb +.if 0 +finger_match_sprite_l: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $63 ; 0 110 0 011 +.byte $66 ; 0 110 0 110 +.byte $2c ; 0 010 1 100 +.byte $6c ; 0 110 1 100 +.byte $78 ; 0 111 1 000 +.byte $70 ; 0 111 0 000 +.byte $70 ; 0 111 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 + +finger_match_sprite_r: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $0A ; 0 000 1 010 +.byte $2A ; 0 010 1 010 +.byte $2D ; 0 010 1 101 +.byte $37 ; 0 011 0 111 +.byte $3F ; 0 011 1 111 +.byte $3F ; 0 011 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 + +finger_match_mask_l: ; X 654 3 210 +.byte $ff ; 1 001 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 011 +.byte $ff ; 1 000 0 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 + +finger_match_mask_r: ; X 654 3 210 +.byte $ff ; 1 111 1 111 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $e0 ; 1 110 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $c0 ; 1 100 0 000 +.byte $c0 ; 1 100 0 000 +.endif + +;====================== +; finger match lit +;====================== +; TODO finger_match_lit_sprite: - .byte 6,4 - .byte $9a,$a9,$aa,$aa,$ba,$ba - .byte $19,$da,$da,$db,$db,$db - .byte $a9,$ad,$ad,$bd,$bd,$ad - .byte $aa,$aa,$aa,$aa,$ab,$bb +.if 0 +finger_match_lit_sprite_l: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $63 ; 0 110 0 011 +.byte $66 ; 0 110 0 110 +.byte $2c ; 0 010 1 100 +.byte $6c ; 0 110 1 100 +.byte $78 ; 0 111 1 000 +.byte $70 ; 0 111 0 000 +.byte $70 ; 0 111 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 + +finger_match_lit_sprite_r: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $0A ; 0 000 1 010 +.byte $2A ; 0 010 1 010 +.byte $2D ; 0 010 1 101 +.byte $37 ; 0 011 0 111 +.byte $3F ; 0 011 1 111 +.byte $3F ; 0 011 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 + +finger_match_lit_mask_l: ; X 654 3 210 +.byte $ff ; 1 001 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 011 +.byte $ff ; 1 000 0 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 + +finger_match_lit_mask_r: ; X 654 3 210 +.byte $ff ; 1 111 1 111 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $e0 ; 1 110 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $c0 ; 1 100 0 000 +.byte $c0 ; 1 100 0 000 +.endif + +;========================= +; finger key sprite +;========================= +; TODO finger_key_sprite: - .byte 6,4 - .byte $aa,$aa,$aa,$aa,$aa,$bd - .byte $dd,$dd,$dd,$dd,$db,$bb - .byte $aa,$ad,$aa,$ab,$bd,$bb - .byte $aa,$aa,$aa,$aa,$ab,$ab +.if 0 +finger_key_sprite_l: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $63 ; 0 110 0 011 +.byte $66 ; 0 110 0 110 +.byte $2c ; 0 010 1 100 +.byte $6c ; 0 110 1 100 +.byte $78 ; 0 111 1 000 +.byte $70 ; 0 111 0 000 +.byte $70 ; 0 111 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 + +finger_key_sprite_r: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $0A ; 0 000 1 010 +.byte $2A ; 0 010 1 010 +.byte $2D ; 0 010 1 101 +.byte $37 ; 0 011 0 111 +.byte $3F ; 0 011 1 111 +.byte $3F ; 0 011 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 + +finger_key_mask_l: ; X 654 3 210 +.byte $ff ; 1 001 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 011 +.byte $ff ; 1 000 0 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 + +finger_key_mask_r: ; X 654 3 210 +.byte $ff ; 1 111 1 111 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $e0 ; 1 110 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $c0 ; 1 100 0 000 +.byte $c0 ; 1 100 0 000 +.endif + +;=========================== +; finger red sprite +;=========================== +; TODO finger_red_page_sprite: - .byte 5,5 - .byte $3a,$33,$33,$aa,$aa - .byte $33,$33,$33,$ba,$aa - .byte $33,$b3,$33,$bb,$ba - .byte $33,$3b,$bb,$bb,$bb - .byte $a3,$a3,$bb,$bb,$bb + +finger_red_sprite_l: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $63 ; 0 110 0 011 +.byte $66 ; 0 110 0 110 +.byte $2c ; 0 010 1 100 +.byte $6c ; 0 110 1 100 +.byte $78 ; 0 111 1 000 +.byte $70 ; 0 111 0 000 +.byte $70 ; 0 111 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 + +finger_red_sprite_r: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $0A ; 0 000 1 010 +.byte $2A ; 0 010 1 010 +.byte $2D ; 0 010 1 101 +.byte $37 ; 0 011 0 111 +.byte $3F ; 0 011 1 111 +.byte $3F ; 0 011 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 + +finger_red_mask_l: ; X 654 3 210 +.byte $ff ; 1 001 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 011 +.byte $ff ; 1 000 0 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 + +finger_red_mask_r: ; X 654 3 210 +.byte $ff ; 1 111 1 111 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $e0 ; 1 110 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $c0 ; 1 100 0 000 +.byte $c0 ; 1 100 0 000 + +;===================== +; finger blue sprite +;===================== +; TODO finger_blue_page_sprite: - .byte 5,5 - .byte $6a,$66,$66,$aa,$aa - .byte $66,$66,$66,$ba,$aa - .byte $66,$b6,$66,$bb,$ba - .byte $66,$6b,$bb,$bb,$bb - .byte $a6,$a6,$bb,$bb,$bb + +finger_blue_sprite_l: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $63 ; 0 110 0 011 +.byte $66 ; 0 110 0 110 +.byte $2c ; 0 010 1 100 +.byte $6c ; 0 110 1 100 +.byte $78 ; 0 111 1 000 +.byte $70 ; 0 111 0 000 +.byte $70 ; 0 111 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 + +finger_blue_sprite_r: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $0A ; 0 000 1 010 +.byte $2A ; 0 010 1 010 +.byte $2D ; 0 010 1 101 +.byte $37 ; 0 011 0 111 +.byte $3F ; 0 011 1 111 +.byte $3F ; 0 011 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 + +finger_blue_mask_l: ; X 654 3 210 +.byte $ff ; 1 001 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 011 +.byte $ff ; 1 000 0 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 + +finger_blue_mask_r: ; X 654 3 210 +.byte $ff ; 1 111 1 111 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $e0 ; 1 110 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $c0 ; 1 100 0 000 +.byte $c0 ; 1 100 0 000 + + +;======================== +; finger white page +;======================== +; TODO finger_white_page_sprite: - .byte 5,5 - .byte $fa,$ff,$ff,$aa,$aa - .byte $ff,$ff,$ff,$ba,$aa - .byte $ff,$bf,$ff,$bb,$ba - .byte $ff,$fb,$bb,$bb,$bb - .byte $af,$af,$bb,$bb,$bb + +finger_white_sprite_l: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 +.byte $63 ; 0 110 0 011 +.byte $66 ; 0 110 0 110 +.byte $2c ; 0 010 1 100 +.byte $6c ; 0 110 1 100 +.byte $78 ; 0 111 1 000 +.byte $70 ; 0 111 0 000 +.byte $70 ; 0 111 0 000 +.byte $60 ; 0 110 0 000 +.byte $60 ; 0 110 0 000 + +finger_white_sprite_r: ; X 654 3 210 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $00 ; 0 000 0 000 +.byte $0A ; 0 000 1 010 +.byte $2A ; 0 010 1 010 +.byte $2D ; 0 010 1 101 +.byte $37 ; 0 011 0 111 +.byte $3F ; 0 011 1 111 +.byte $3F ; 0 011 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 +.byte $1F ; 0 001 1 111 + +finger_white_mask_l: ; X 654 3 210 +.byte $ff ; 1 001 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 000 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 001 +.byte $ff ; 1 000 0 011 +.byte $ff ; 1 000 0 111 +.byte $ff ; 1 000 1 111 +.byte $ff ; 1 000 1 111 + +finger_white_mask_r: ; X 654 3 210 +.byte $ff ; 1 111 1 111 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $fe ; 1 111 1 110 +.byte $e0 ; 1 110 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $80 ; 1 000 0 000 +.byte $c0 ; 1 100 0 000 +.byte $c0 ; 1 100 0 000 + + + + + + + + diff --git a/games/mist_hgr/draw_pointer.s b/games/mist_hgr/draw_pointer.s new file mode 100644 index 00000000..8b281d53 --- /dev/null +++ b/games/mist_hgr/draw_pointer.s @@ -0,0 +1,266 @@ + ;==================================== + ; draw pointer + ;==================================== + + +draw_pointer: + + ; for now assume the only 14x14 sprites are the pointers + + lda CURSOR_X + sta XPOS + lda CURSOR_Y + sta YPOS + + ; see if inside special region + ldy #LOCATION_SPECIAL_EXIT + lda (LOCATION_STRUCT_L),Y + cmp #$ff + beq finger_not_special ; if $ff not special + +; lda (LOCATION_STRUCT_L),Y +; cmp #DIRECTION_ANY +; beq was_any + + lda DIRECTION + and #$f + + and (LOCATION_STRUCT_L),Y + beq finger_not_special ; only special if facing right way + +;was_any: + + ; see if X1 < X < X2 + lda CURSOR_X + ldy #LOCATION_SPECIAL_X1 + cmp (LOCATION_STRUCT_L),Y + bcc finger_not_special ; blt + + ldy #LOCATION_SPECIAL_X2 + cmp (LOCATION_STRUCT_L),Y + bcs finger_not_special ; bge + + ; see if Y1 < Y < Y2 + lda CURSOR_Y + ldy #LOCATION_SPECIAL_Y1 + cmp (LOCATION_STRUCT_L),Y + bcc finger_not_special ; blt + + ldy #LOCATION_SPECIAL_Y2 + cmp (LOCATION_STRUCT_L),Y + bcs finger_not_special ; bge + + ; we made it this far, we are special + +finger_grab: + lda #1 + sta IN_SPECIAL + + lda CURSOR_VISIBLE ; if not visible skip + bne really_draw_grab + + rts + +really_draw_grab: + + lda DIRECTION + and #DIRECTION_ONLY_POINT + bne special_but_point + + lda #finger_grab_sprite + jmp finger_draw + +special_but_point: + jmp finger_point + +finger_not_special: + + lda CURSOR_VISIBLE ; if not visible skip + bne really_not_special + + rts + +really_not_special: + + ; check for left/right + + lda CURSOR_X + cmp #7 + bcc check_cursor_left ; blt + cmp #$f0 ; check if off left side of screen + bcs check_cursor_left ; bge + + cmp #33 + bcs check_cursor_right ; bge + + ; otherwise, finger_point + +finger_point: + ; holding item takes precednce + lda HOLDING_ITEM + cmp #HOLDING_MATCH + beq match_finger + cmp #HOLDING_LIT_MATCH + beq match_lit_finger + cmp #HOLDING_KEY + beq key_finger + + lda HOLDING_PAGE + and #$c0 + beq real_finger_point + cmp #HOLDING_BLUE_PAGE + beq blue_finger + cmp #HOLDING_WHITE_PAGE + beq white_finger + cmp #HOLDING_RED_PAGE +; beq red_finger + +red_finger: + lda #finger_red_page_sprite + jmp finger_draw + + ; all that's left is key +key_finger: + lda #finger_key_sprite + jmp finger_draw + +match_finger: + lda #finger_match_sprite + jmp finger_draw + +match_lit_finger: + lda #finger_match_lit_sprite + jmp finger_draw + + + +blue_finger: + lda #finger_blue_page_sprite + jmp finger_draw + +white_finger: + lda #finger_white_page_sprite + jmp finger_draw + +real_finger_point: + lda #finger_point_sprite + jmp finger_draw + +check_cursor_left: + jsr lookup_direction + + and #$f + beq finger_point + cmp #$1 + beq finger_left + bne finger_uturn_left + +check_cursor_right: + + jsr lookup_direction + + and #$f0 + + beq finger_point + cmp #$10 + beq finger_right + bne finger_uturn_right + +lookup_direction: + lda DIRECTION + and #$f + tay + lda log2_table,Y + asl + asl + asl + asl + clc + ldy #LOCATION_BGS + adc (LOCATION_STRUCT_L),Y + tay + + lda direction_lookup,Y + + rts + +finger_left: + lda #1 + sta IN_LEFT + + lda #finger_left_sprite + jmp finger_draw + +finger_right: + lda #1 + sta IN_RIGHT + lda #finger_right_sprite + jmp finger_draw + +finger_uturn_left: + + lda #2 + sta IN_LEFT + + lda #finger_turn_left_sprite + jmp finger_draw + +finger_uturn_right: + + lda #2 + sta IN_RIGHT + + lda #finger_turn_right_sprite + jmp finger_draw + +finger_draw: + sta INH + jsr hgr_draw_sprite_14x14 + +no_draw_pointer: + rts + +; 0 = point +; 1 = left +; 2 = left u-turn +; R/L EWSN 0010 + +; 1010 + +direction_lookup: +direction_lookup_n: + .byte $00,$00,$22,$22,$01,$01,$21,$21,$10,$10,$12,$12,$11,$11,$11,$11 +direction_lookup_s: + ; N S SN W WN WS WSN + .byte $00, $22,$00,$22,$10,$12,$10,$12 + ; E EN ES ESN EW EWN EWS EWSN + .byte $01,$02,$01,$21,$11,$11,$11,$11 +direction_lookup_e: + .byte $00,$01,$10,$11,$22,$21,$12,$11,$00,$01,$10,$11,$22,$21,$12,$11 +direction_lookup_w: + .byte $00,$10,$01,$11,$00,$10,$01,$11,$22,$12,$21,$11,$22,$12,$21,$11 + diff --git a/games/mist_hgr/generate_common.c b/games/mist_hgr/generate_common.c index 57c65423..ed92754a 100644 --- a/games/mist_hgr/generate_common.c +++ b/games/mist_hgr/generate_common.c @@ -97,8 +97,16 @@ int main(int argc, char **argv) { find_address("page_flip"); printf("\n"); - printf("; gr_putsprite_crop.s\n"); - find_address("put_sprite_crop"); +// printf("; gr_putsprite_crop.s\n"); +// find_address("put_sprite_crop"); +// find_address("psc_smc1"); +// find_address("psc_smc2"); +// printf("\n"); + + printf("; hgr_14x14_sprite.s\n"); + find_address("hgr_draw_sprite_14x14"); + find_address("save_bg_14x14"); + find_address("restore_bg_14x14"); find_address("psc_smc1"); find_address("psc_smc2"); printf("\n"); diff --git a/games/mist_hgr/graphics_title/Makefile b/games/mist_hgr/graphics_title/Makefile index e654975e..2a1cee5d 100644 --- a/games/mist_hgr/graphics_title/Makefile +++ b/games/mist_hgr/graphics_title/Makefile @@ -44,4 +44,4 @@ title_graphics.inc: \ #### clean: - rm -f *~ *.o *.lst *.data *.lzsa + rm -f *~ *.o *.lst *.data *.lzsa title_graphics.inc diff --git a/games/mist_hgr/hgr_14x14_sprite.s b/games/mist_hgr/hgr_14x14_sprite.s new file mode 100644 index 00000000..493e7d45 --- /dev/null +++ b/games/mist_hgr/hgr_14x14_sprite.s @@ -0,0 +1,177 @@ + + ;====================== + ; hgr 14x14 draw sprite + ;====================== + ; SPRITE in INL/INH + ; Location at CURSOR_X CURSOR_Y + + ; left sprite AT INL/INH + ; right sprite at INL/INH + 14 + ; left mask at INL/INH + 28 + ; right mask at INL/INH + 42 + +hgr_draw_sprite_14x14: + + ; set up pointers + lda INL + sta hds_smc1+1 + lda INH + sta hds_smc1+2 + + clc + lda INL + adc #14 + sta hds_smc2+1 + lda INH + adc #0 + sta hds_smc2+2 + + clc + lda INL + adc #28 + sta hds_smc3+1 + lda INH + adc #0 + sta hds_smc3+2 + + clc + lda INL + adc #42 + sta hds_smc4+1 + lda INH + adc #0 + sta hds_smc4+2 + + + ldx #0 +hgr_14x14_sprite_yloop: + txa + pha + + clc + adc CURSOR_Y + + ldx #0 + ldy #0 + + ; calc GBASL/GBASH + jsr HPOSN ; (Y,X),(A) (values stored in HGRX,XH,Y) + + pla + tax + + ldy CURSOR_X + + lda (GBASL),Y +hds_smc3: + and point_mask_l,X +hds_smc1: + ora point_sprite_l,X + sta (GBASL),Y + + iny + + lda (GBASL),Y +hds_smc4: + and point_mask_r,X +hds_smc2: + ora point_sprite_r,X + sta (GBASL),Y + + inx + cpx #14 + bne hgr_14x14_sprite_yloop + + rts + + + + ;====================== + ; save bg 14x14 + ;====================== + +save_bg_14x14: + + ldx #0 +save_yloop: + txa + pha + + clc + adc CURSOR_Y + + ldx #0 + ldy #0 + + ; calc GBASL/GBASH + jsr HPOSN ; (Y,X),(A) (values stored in HGRX,XH,Y) + + pla + tax + + ldy CURSOR_X + + lda (GBASL),Y + sta save_left_14x14,X + + iny + + lda (GBASL),Y + sta save_right_14x14,X + + inx + cpx #14 + bne save_yloop + + rts + + ;====================== + ; restore bg 14x14 + ;====================== + +restore_bg_14x14: + + ldx #0 +restore_yloop: + txa + pha + + clc + adc CURSOR_Y + + ldx #0 + ldy #0 + + ; calc GBASL/GBASH + jsr HPOSN ; (Y,X),(A) (values stored in HGRX,XH,Y) + + pla + tax + + ldy CURSOR_X + + lda save_left_14x14,X + sta (GBASL),Y + + iny + + lda save_right_14x14,X + sta (GBASL),Y + + + inx + cpx #14 + bne restore_yloop + + rts + + +;==================== +; save area +;==================== + +save_right_14x14: +.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + +save_left_14x14: +.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 diff --git a/games/mist_hgr/mist_title.s b/games/mist_hgr/mist_title.s index 74ae8070..697a5646 100644 --- a/games/mist_hgr/mist_title.s +++ b/games/mist_hgr/mist_title.s @@ -472,6 +472,9 @@ done_intro: lda #1 sta CURSOR_VISIBLE ; visible at first + + jsr save_bg_14x14 ; save initial bg + game_loop: ;================= ; reset things @@ -560,13 +563,7 @@ nothing_special: ; draw pointer ;==================================== -; jsr draw_pointer - - ;==================================== - ; page flip - ;==================================== - -; jsr page_flip + jsr draw_pointer ; draw pointer ;==================================== ; handle keypress/joystick @@ -574,7 +571,6 @@ nothing_special: jsr handle_keypress - ;==================================== ; inc frame count ;==================================== diff --git a/games/mist_hgr/qload.s b/games/mist_hgr/qload.s index 28009fcb..aa351842 100644 --- a/games/mist_hgr/qload.s +++ b/games/mist_hgr/qload.s @@ -224,13 +224,13 @@ length_array: .include "audio.s" .include "linking_noise.s" .include "decompress_fast_v2.s" -; .include "draw_pointer.s" + .include "draw_pointer.s" ; .include "end_level.s" ; .include "gr_copy.s" .include "gr_fast_clear.s" .include "gr_offsets.s" ; .include "gr_pageflip.s" -; .include "gr_putsprite_crop.s" + .include "hgr_14x14_sprite.s" .include "keyboard.s" .include "text_print.s" .include "loadstore.s" @@ -238,7 +238,7 @@ length_array: .include "log_table.s" ; .include "page_sprites.inc" -; .include "common_sprites.inc" + .include "common_sprites.inc" .include "qkumba_popwr.s"