;C02 VCS Library - Joystick Assembly Language Subroutines ;getstk(cntrlr) - Read Joystick ;Args: A = Controller Number, 0=Left, 1=Right ;Sets: TEMP0 = Left Joystick Raw Directional Bits ; TEMP1 = Right Joystick Raw Directional Bits ; X = Controller Number ;Returns: A = Joystick Bits (1 if Pressed) ; 0=Up, 1=Down, 2=Left, 3=Right, 7=Trigger ; N = Set if Trigger Pressed ; Z = Set if No Buttons or Trigger Pressed GETSTK: TAX ;Save Stick Number in Index LDA SWCHA ;Read Joystick Register LSR ;Shift High Nybble into Low Nybble LSR LSR LSR STA TEMP0 ;Save Left Joystick Raw Bits LDA SWCHA ;Read Joystick Register AND #$0F ;Strip High Nybble STA TEMP1 ;Save Right Joystick Raw Bits LDA INPT4,X ;Read Joystick Trigger AND #$80 ;Strip Bits 1-6 ORA TEMP0,X ;Combine with Directional Bits EOR #$8F ;Reverse Bits RTS