GETJOY.S 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. * GETJOY.S
  2. * READ JOYSTICK DATA
  3. *
  4. * GAME PLAY JOYSTICK ROUTINE
  5. GETJOY TXA ;STORE X
  6. PHA
  7. LDX PLAYER ;USE APPROPRIATE PORT
  8. GJDOIT JSR GETBUT ;FIND BUTTON STATE
  9. STA BUTSTATE ;STORE IT
  10. JSR GETSTICK
  11. STA NEWDIR
  12. PLA ;GET X BACK
  13. TAX
  14. RTS
  15. * GET THE BUTTON STATE
  16. * INPUT: PORT IN X
  17. * OUTPUT: STATE IN A (0 IF NOT DEPRESSED)
  18. GETBUT LDA INPT4,X ;GET BUTTON BIT
  19. AND #$80 ;ISOLATE IT
  20. EOR #$80 ;INVERT IT
  21. RTS
  22. * GET THE STICK STATE
  23. * INPUT: JOYSTICK PORT IN X
  24. * OUTPUT: DIRECTION IN A
  25. * SMASHES: X
  26. GETSTICK LDA SWCHA ;GET JOYSTICK BITS
  27. CPX #$00
  28. BNE GSJMP0
  29. LSR A ;GET PLAYER 0 JOYSTICK IN LOW BITS
  30. LSR A
  31. LSR A
  32. LSR A
  33. GSJMP0 AND #$0F ;GET RID OF ANY EXTRA BITS
  34. TAX
  35. LDA JOYTAB,X ;LOOK IT UP IN TABLE
  36. RTS
  37. * TABLE OF JOYSTICK DIRECTIONS VS BIT READINGS
  38. JOYTAB DB DCENTER,DCENTER,DCENTER,DCENTER
  39. DB DCENTER,DDWRIGHT,DUPRIGHT,DRIGHT
  40. DB DCENTER,DDWLEFT,DUPLEFT,DLEFT
  41. DB DCENTER,DDOWN,DUP,DCENTER