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