lemm: pointer vaguely works
This commit is contained in:
parent
1b29a4689d
commit
08eaef60d6
|
@ -29,7 +29,7 @@ LEMM_TEST: lemm_test.o
|
||||||
|
|
||||||
lemm_test.o: lemm_test.s zp.inc hardware.inc \
|
lemm_test.o: lemm_test.s zp.inc hardware.inc \
|
||||||
graphics/graphics_test.inc \
|
graphics/graphics_test.inc \
|
||||||
interrupt_handler.s
|
interrupt_handler.s keyboard.s
|
||||||
ca65 -o lemm_test.o lemm_test.s -l lemm_test.lst
|
ca65 -o lemm_test.o lemm_test.s -l lemm_test.lst
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
|
@ -69,794 +69,4 @@ point_mask_r: ; X 654 3 210
|
||||||
.byte $c0 ; 1 100 0 000
|
.byte $c0 ; 1 100 0 000
|
||||||
|
|
||||||
|
|
||||||
finger_grab_sprite:
|
|
||||||
;===============
|
|
||||||
; 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:
|
|
||||||
|
|
||||||
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:
|
|
||||||
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:
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
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:
|
|
||||||
.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:
|
|
||||||
.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:
|
|
||||||
.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:
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ draw_pointer:
|
||||||
lda #0
|
lda #0
|
||||||
sta OVER_LEMMING
|
sta OVER_LEMMING
|
||||||
|
|
||||||
; jsr save_bg_14x14 ; save old bg
|
jsr save_bg_14x14 ; save old bg
|
||||||
|
|
||||||
; for now assume the only 14x14 sprites are the pointers
|
; for now assume the only 14x14 sprites are the pointers
|
||||||
|
|
||||||
|
@ -43,9 +43,9 @@ draw_pointer:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lda #>finger_turn_right_sprite
|
lda #<point_sprite_l
|
||||||
sta INL
|
sta INL
|
||||||
lda #>finger_turn_right_sprite
|
lda #>point_sprite_l
|
||||||
sta INH
|
sta INH
|
||||||
jsr hgr_draw_sprite_14x14
|
jsr hgr_draw_sprite_14x14
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
; Oliver Schmidt
|
||||||
|
; comp.sys.apple2.programmer
|
||||||
|
|
||||||
|
; Call with joystick number (0 or 1) in A.
|
||||||
|
; Results are stored in value0 and value1.
|
||||||
|
; UPPER_THRESHOLD is the paddle value you want to consider as "right enough" /
|
||||||
|
; "down enough".
|
||||||
|
|
||||||
|
UPPER_THRESHOLD = 128
|
||||||
|
|
||||||
|
;PTRIG = $c070
|
||||||
|
PADDL1 = $C065
|
||||||
|
|
||||||
|
handle_joystick:
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
; Read both paddles simultaneously
|
||||||
|
asl ; Joystick number -> paddle number
|
||||||
|
tax
|
||||||
|
ldy #$00
|
||||||
|
sty value0
|
||||||
|
sty value1
|
||||||
|
lda PTRIG ; Trigger paddles
|
||||||
|
loop: lda PADDL0,x ; Read paddle (0 or 2)
|
||||||
|
bmi set0 ; Cycles: 2 3
|
||||||
|
nop ; Cycles: 2
|
||||||
|
bpl nop0 ; Cycles: 3
|
||||||
|
set0: sty value0 ; Cycles: 4
|
||||||
|
nop0: ; - -
|
||||||
|
; Cycles: 7 7
|
||||||
|
lda PADDL1,x ; Read paddle (1 or 3)
|
||||||
|
bmi set1 ; Cycles: 2 3
|
||||||
|
nop ; Cycles: 2
|
||||||
|
bpl nop1 ; Cycles: 3
|
||||||
|
set1: sty value1 ; Cycles: 4
|
||||||
|
nop1: ; - -
|
||||||
|
; Cycles: 7 7
|
||||||
|
iny
|
||||||
|
cpy #UPPER_THRESHOLD+1
|
||||||
|
bne loop
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
value0: .byte $00
|
||||||
|
value1: .byte $00
|
||||||
|
|
|
@ -0,0 +1,247 @@
|
||||||
|
|
||||||
|
;==============================
|
||||||
|
; Handle Keypress
|
||||||
|
;==============================
|
||||||
|
handle_keypress:
|
||||||
|
|
||||||
|
; first handle joystick
|
||||||
|
lda JOYSTICK_ENABLED
|
||||||
|
beq actually_handle_keypress
|
||||||
|
|
||||||
|
; only check joystick every-other frame
|
||||||
|
lda FRAMEL
|
||||||
|
and #$1
|
||||||
|
beq actually_handle_keypress
|
||||||
|
|
||||||
|
check_button:
|
||||||
|
lda PADDLE_BUTTON0
|
||||||
|
bpl button_clear
|
||||||
|
|
||||||
|
lda JS_BUTTON_STATE
|
||||||
|
bne js_check
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
sta JS_BUTTON_STATE
|
||||||
|
lda #' '
|
||||||
|
jmp handle_input
|
||||||
|
|
||||||
|
button_clear:
|
||||||
|
lda #0
|
||||||
|
sta JS_BUTTON_STATE
|
||||||
|
|
||||||
|
js_check:
|
||||||
|
jsr handle_joystick
|
||||||
|
|
||||||
|
js_check_left:
|
||||||
|
lda value0
|
||||||
|
cmp #$20
|
||||||
|
bcs js_check_right ; if less than 32, left
|
||||||
|
lda #'A'
|
||||||
|
bne handle_input
|
||||||
|
|
||||||
|
js_check_right:
|
||||||
|
cmp #$40
|
||||||
|
bcc js_check_up
|
||||||
|
lda #'D'
|
||||||
|
bne handle_input
|
||||||
|
|
||||||
|
js_check_up:
|
||||||
|
lda value1
|
||||||
|
cmp #$20
|
||||||
|
bcs js_check_down
|
||||||
|
lda #'W'
|
||||||
|
|
||||||
|
bne handle_input
|
||||||
|
|
||||||
|
js_check_down:
|
||||||
|
cmp #$40
|
||||||
|
bcc done_joystick
|
||||||
|
lda #'S'
|
||||||
|
bne handle_input
|
||||||
|
|
||||||
|
|
||||||
|
done_joystick:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
actually_handle_keypress:
|
||||||
|
lda KEYPRESS
|
||||||
|
bmi keypress
|
||||||
|
|
||||||
|
jmp no_keypress
|
||||||
|
|
||||||
|
keypress:
|
||||||
|
and #$7f ; clear high bit
|
||||||
|
cmp #' '
|
||||||
|
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
|
||||||
|
pla
|
||||||
|
|
||||||
|
check_sound:
|
||||||
|
cmp #$14 ; control-T
|
||||||
|
bne check_joystick
|
||||||
|
|
||||||
|
lda SOUND_STATUS
|
||||||
|
eor #SOUND_DISABLED
|
||||||
|
sta SOUND_STATUS
|
||||||
|
jmp done_keypress
|
||||||
|
|
||||||
|
; can't be ^J as that's the same as down
|
||||||
|
check_joystick:
|
||||||
|
; cmp #$10 ; control-P
|
||||||
|
cmp #'J'
|
||||||
|
bne check_left
|
||||||
|
|
||||||
|
lda JOYSTICK_ENABLED
|
||||||
|
eor #1
|
||||||
|
sta JOYSTICK_ENABLED
|
||||||
|
jmp done_keypress
|
||||||
|
|
||||||
|
check_left:
|
||||||
|
cmp #'A'
|
||||||
|
beq left_pressed
|
||||||
|
cmp #8 ; left key
|
||||||
|
bne check_right
|
||||||
|
left_pressed:
|
||||||
|
lda CURSOR_X ; if 41<x<$FE don't decrement
|
||||||
|
cmp #41
|
||||||
|
bcc do_dec_cursor_x
|
||||||
|
cmp #$FE
|
||||||
|
bcc done_left_pressed
|
||||||
|
do_dec_cursor_x:
|
||||||
|
dec CURSOR_X
|
||||||
|
done_left_pressed:
|
||||||
|
jmp done_keypress
|
||||||
|
|
||||||
|
check_right:
|
||||||
|
cmp #'D'
|
||||||
|
beq right_pressed
|
||||||
|
cmp #$15 ; right key
|
||||||
|
bne check_up
|
||||||
|
right_pressed:
|
||||||
|
lda CURSOR_X ; if 40<x<$FE don't increment
|
||||||
|
cmp #40
|
||||||
|
bcc do_inc_cursor_x
|
||||||
|
cmp #$FE
|
||||||
|
bcc done_right_pressed
|
||||||
|
do_inc_cursor_x:
|
||||||
|
inc CURSOR_X
|
||||||
|
done_right_pressed:
|
||||||
|
jmp done_keypress
|
||||||
|
|
||||||
|
check_up:
|
||||||
|
cmp #'W'
|
||||||
|
beq up_pressed
|
||||||
|
cmp #$0B ; up key
|
||||||
|
bne check_down
|
||||||
|
up_pressed:
|
||||||
|
lda CURSOR_Y ; if 191<y<$F0 don't decrement
|
||||||
|
cmp #191
|
||||||
|
bcc do_dec_cursor_y
|
||||||
|
cmp #$F0
|
||||||
|
bcc done_up_pressed
|
||||||
|
do_dec_cursor_y:
|
||||||
|
dec CURSOR_Y
|
||||||
|
dec CURSOR_Y
|
||||||
|
dec CURSOR_Y
|
||||||
|
dec CURSOR_Y
|
||||||
|
|
||||||
|
done_up_pressed:
|
||||||
|
jmp done_keypress
|
||||||
|
|
||||||
|
check_down:
|
||||||
|
cmp #'S'
|
||||||
|
beq down_pressed
|
||||||
|
cmp #$0A
|
||||||
|
bne check_escape
|
||||||
|
down_pressed:
|
||||||
|
lda CURSOR_Y ; if 191<y<$EE don't decrement
|
||||||
|
cmp #191
|
||||||
|
bcc do_inc_cursor_y
|
||||||
|
cmp #$EE
|
||||||
|
bcc done_down_pressed
|
||||||
|
do_inc_cursor_y:
|
||||||
|
inc CURSOR_Y
|
||||||
|
inc CURSOR_Y
|
||||||
|
inc CURSOR_Y
|
||||||
|
inc CURSOR_Y
|
||||||
|
done_down_pressed:
|
||||||
|
jmp done_keypress
|
||||||
|
|
||||||
|
check_escape:
|
||||||
|
cmp #27
|
||||||
|
bne check_return
|
||||||
|
escape_pressed:
|
||||||
|
inc LEVEL_OVER
|
||||||
|
|
||||||
|
jmp done_keypress
|
||||||
|
|
||||||
|
check_return:
|
||||||
|
cmp #' '
|
||||||
|
beq return_pressed
|
||||||
|
cmp #13
|
||||||
|
bne done_keypress
|
||||||
|
|
||||||
|
return_pressed:
|
||||||
|
|
||||||
|
; lda IN_SPECIAL
|
||||||
|
; beq not_special_return
|
||||||
|
|
||||||
|
special_return:
|
||||||
|
; jsr handle_special
|
||||||
|
|
||||||
|
; special case, don't make cursor visible
|
||||||
|
; jmp no_keypress
|
||||||
|
|
||||||
|
;not_special_return:
|
||||||
|
;
|
||||||
|
; lda IN_RIGHT
|
||||||
|
; beq not_right_return
|
||||||
|
|
||||||
|
; cmp #1
|
||||||
|
; beq right_return
|
||||||
|
|
||||||
|
;right_uturn:
|
||||||
|
; jsr uturn
|
||||||
|
; jmp no_keypress
|
||||||
|
|
||||||
|
;right_return:
|
||||||
|
; jsr turn_right
|
||||||
|
; jmp no_keypress
|
||||||
|
|
||||||
|
;not_right_return:
|
||||||
|
|
||||||
|
; lda IN_LEFT
|
||||||
|
; beq not_left_return
|
||||||
|
|
||||||
|
; cmp #1
|
||||||
|
; beq left_return
|
||||||
|
;left_uturn:
|
||||||
|
; jsr uturn
|
||||||
|
; jmp no_keypress
|
||||||
|
|
||||||
|
;left_return:
|
||||||
|
; jsr turn_left
|
||||||
|
; jmp no_keypress
|
||||||
|
|
||||||
|
;not_left_return:
|
||||||
|
|
||||||
|
; jsr go_forward
|
||||||
|
jmp no_keypress
|
||||||
|
|
||||||
|
done_keypress:
|
||||||
|
|
||||||
|
jsr draw_pointer
|
||||||
|
|
||||||
|
no_keypress:
|
||||||
|
bit KEYRESET
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -262,9 +262,9 @@ zurg:
|
||||||
lda #100
|
lda #100
|
||||||
sta CURSOR_Y
|
sta CURSOR_Y
|
||||||
|
|
||||||
;=======================
|
;=======================
|
||||||
; Play "Let's Go"
|
; Play "Let's Go"
|
||||||
;=======================
|
;=======================
|
||||||
|
|
||||||
|
|
||||||
;=======================
|
;=======================
|
||||||
|
@ -282,6 +282,9 @@ zurg:
|
||||||
sta DOOR_OPEN
|
sta DOOR_OPEN
|
||||||
sta FRAMEL
|
sta FRAMEL
|
||||||
sta LOAD_NEXT_CHUNK
|
sta LOAD_NEXT_CHUNK
|
||||||
|
sta JOYSTICK_ENABLED
|
||||||
|
|
||||||
|
jsr save_bg_14x14 ; save initial bg
|
||||||
|
|
||||||
; set up time
|
; set up time
|
||||||
|
|
||||||
|
@ -330,7 +333,9 @@ door_is_open:
|
||||||
sta TIMER_COUNT
|
sta TIMER_COUNT
|
||||||
timer_not_yet:
|
timer_not_yet:
|
||||||
|
|
||||||
jsr draw_pointer
|
jsr handle_keypress
|
||||||
|
|
||||||
|
; jsr draw_pointer
|
||||||
|
|
||||||
|
|
||||||
lda #$ff
|
lda #$ff
|
||||||
|
@ -400,6 +405,9 @@ load_song_chunk_good:
|
||||||
|
|
||||||
.include "wait_keypress.s"
|
.include "wait_keypress.s"
|
||||||
|
|
||||||
|
.include "keyboard.s"
|
||||||
|
.include "joystick.s"
|
||||||
|
|
||||||
; .include "print_help.s"
|
; .include "print_help.s"
|
||||||
.include "gr_fast_clear.s"
|
.include "gr_fast_clear.s"
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,7 @@ CHUNK_NEXT_PLAY = $7E
|
||||||
LOAD_NEXT_CHUNK = $7F
|
LOAD_NEXT_CHUNK = $7F
|
||||||
OVER_LEMMING = $80
|
OVER_LEMMING = $80
|
||||||
TIMER_COUNT = $81
|
TIMER_COUNT = $81
|
||||||
|
UPDATE_POINTER = $82
|
||||||
|
|
||||||
APPLEII_MODEL = $8B
|
APPLEII_MODEL = $8B
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue