junglejourney
changeset 221:9011c5310b27 1.1
Updated joystick handling to move the player in the dominant
direction, falling back on vertical movement if horizontal
movement fails.
| author | David Boddie <david@boddie.org.uk> |
|---|---|
| date | Sun Nov 06 21:11:56 2011 +0100 |
| parents | f25989daa9f9 |
| children | 2becf2e12487 |
| files | loader.oph mapcode.oph |
| diffstat | 2 files changed, 80 insertions(+), 35 deletions(-) [+] |
line diff
1.1 --- a/loader.oph Sun Nov 06 02:18:39 2011 +0100 1.2 +++ b/loader.oph Sun Nov 06 21:11:56 2011 +0100 1.3 @@ -117,8 +117,8 @@ 1.4 code_block: .byte <code_file_name, >code_file_name 1.5 .byte $00, $1e, 0, 0 1.6 .byte $00, $1e, 0, 0 1.7 - .byte $54, $20, 0, 0 1.8 - .byte $54, $3e, 0, 0 1.9 + .byte $8c, $20, 0, 0 1.10 + .byte $8c, $3e, 0, 0 1.11 1.12 init_load_window_vdu_bytes: .byte 28,0,30,19,27 1.13
2.1 --- a/mapcode.oph Sun Nov 06 02:18:39 2011 +0100 2.2 +++ b/mapcode.oph Sun Nov 06 21:11:56 2011 +0100 2.3 @@ -1715,6 +1715,82 @@ 2.4 jsr plot_character 2.5 rts 2.6 2.7 +joystick_abs: 2.8 + 2.9 + cmp #160 2.10 + bcc joystick_abs_next1 2.11 + 2.12 + sec 2.13 + sbc #128 2.14 + clc 2.15 + rts 2.16 + 2.17 + joystick_abs_next1: 2.18 + 2.19 + cmp #97 2.20 + bcs joystick_abs_next2 2.21 + 2.22 + sta $81 2.23 + lda #128 2.24 + sec 2.25 + sbc $81 2.26 + clc 2.27 + rts 2.28 + 2.29 + joystick_abs_next2: 2.30 + lda #0 2.31 + clc 2.32 + rts 2.33 + 2.34 +read_joystick: 2.35 + 2.36 + lda #128 2.37 + ldx #2 2.38 + jsr $fff4 2.39 + tya 2.40 + sta $8e ; store the original vertical value 2.41 + 2.42 + jsr joystick_abs 2.43 + sta $8f ; absolute vertical value 2.44 + 2.45 + lda #128 2.46 + ldx #1 2.47 + jsr $fff4 2.48 + tya 2.49 + sta $8d ; store the original horizontal value 2.50 + 2.51 + jsr joystick_abs 2.52 + cmp #0 2.53 + beq read_joystick_vertical_check 2.54 + cmp $8f 2.55 + bcc read_joystick_vertical_check 2.56 + 2.57 + lda $8d 2.58 + cmp #128 2.59 + bcs read_joystick_left 2.60 + jmp move_player_right 2.61 + 2.62 + read_joystick_left: 2.63 + jmp move_player_left 2.64 + 2.65 + read_joystick_vertical_check: 2.66 + 2.67 + lda $8f 2.68 + cmp #0 2.69 + bne read_joystick_vertical 2.70 + clc 2.71 + rts 2.72 + 2.73 + read_joystick_vertical: 2.74 + 2.75 + lda $8e 2.76 + cmp #128 2.77 + bcs read_joystick_up 2.78 + jmp move_player_down 2.79 + 2.80 + read_joystick_up: 2.81 + jmp move_player_up 2.82 + 2.83 move_player: 2.84 2.85 lda $578e 2.86 @@ -1736,18 +1812,7 @@ 2.87 lda $577e 2.88 cmp #0 2.89 beq move_player_handle_left_key 2.90 - 2.91 - lda #128 2.92 - ldx #1 2.93 - jsr $fff4 2.94 - cpy #96 ; <= -32 2.95 - bcs move_player_check_joystick_left 2.96 - jmp move_player_right 2.97 - 2.98 - move_player_check_joystick_left: 2.99 - cpy #160 ; >= 32 2.100 - bcs move_player_left 2.101 - jmp move_player_handle_joystick_up_down 2.102 + jmp read_joystick 2.103 2.104 move_player_handle_left_key: 2.105 2.106 @@ -1949,30 +2014,10 @@ 2.107 rts ; player has left the room 2.108 2.109 move_player_not_horizontal: 2.110 - 2.111 - ; Handle joystick 2.112 - 2.113 lda $577e 2.114 cmp #0 2.115 beq move_player_handle_up_key 2.116 - 2.117 - move_player_handle_joystick_up_down: 2.118 - 2.119 - lda #128 2.120 - ldx #2 2.121 - jsr $fff4 2.122 - cpy #96 ; <= -32 2.123 - bcs move_player_check_joystick_up 2.124 - jmp move_player_down 2.125 - 2.126 - move_player_check_joystick_up: 2.127 - cpy #160 2.128 - bcc move_player_no_joystick_input 2.129 - jmp move_player_up ; >= 32 2.130 - 2.131 - move_player_no_joystick_input: 2.132 - clc 2.133 - rts 2.134 + jmp read_joystick_vertical_check 2.135 2.136 move_player_handle_up_key: 2.137
