Advertisement
Guest User

NES Power Pad

a guest
Oct 16th, 2014
470
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ReadController1:
  2.   LDA buttons1Lo
  3.   STA buttons1Lo_old   ;save last frame's joypad button states
  4.  
  5.   LDA buttons1Hi
  6.   STA buttons1Hi_old   ;save last frame's joypad button states
  7.  
  8.   LDA #$01
  9.   STA $4016
  10.   LDA #$00
  11.   STA $4016
  12.   LDX #$08
  13. ReadController1Loop:
  14.   LDA $4016
  15.   LSR A            ; bit0 -> Carry
  16.   LSR A            ; bit1 -> Carry
  17.   LSR A            ; bit2 -> Carry
  18.   LSR A            ; bit3 -> Carry
  19.   ROL buttons1Lo     ; bit3 <- Carry
  20.   LSR A            ; bit4 -> Carry
  21.   ROL buttons1Hi     ; bit4 <- Carry  
  22.   DEX
  23.   BNE ReadController1Loop
  24.  
  25.   LDA buttons1Lo_old ;what was pressed last frame.  EOR to flip all the bits to find ...
  26.   EOR #$FF    ;what was not pressed last frame
  27.   AND buttons1Lo ;what is pressed this frame
  28.   STA buttons1Lo_pressed ;stores off-to-on transitions
  29.  
  30.   LDA buttons1Hi_old ;what was pressed last frame.  EOR to flip all the bits to find ...
  31.   EOR #$FF    ;what was not pressed last frame
  32.   AND buttons1Hi ;what is pressed this frame
  33.   STA buttons1Hi_pressed ;stores off-to-on transitions
  34.   RTS
  35.  
  36.  
  37. handle_input:
  38. Read2:
  39.   LDA buttons1Lo_pressed      ; power pad button 2
  40.   AND #%10000000
  41.   BEQ Read2Done
  42.  
  43. Read2Done:
  44.  
  45.  
  46. Read1:
  47.   LDA buttons1Lo_pressed     ; power pad button 1
  48.   AND #%01000000
  49.   BEQ Read1Done
  50.  
  51. Read1Done:
  52.  
  53.  
  54. Read5:
  55.   LDA buttons1Lo_pressed     ; power pad button 5
  56.   AND #%00100000
  57.   BEQ Read5Done
  58.  
  59. Read5Done:
  60.  
  61.  
  62. Read9:
  63.   LDA buttons1Lo_pressed     ; power pad button 9
  64.   AND #%00010000
  65.   BEQ Read9Done
  66.  
  67. Read9Done:
  68.  
  69.  
  70. Read6:
  71.   LDA buttons1Lo_pressed     ; power pad button 6
  72.   AND #%00001000
  73.   BEQ Read6Done
  74.  
  75. Read6Done:
  76.  
  77.  
  78. Read10:
  79.   LDA buttons1Lo_pressed     ; power pad button 10
  80.   AND #%00000100
  81.   BEQ Read10Done
  82.  
  83. Read10Done:
  84.  
  85.  
  86. Read11:
  87.   LDA buttons1Lo_pressed     ; power pad button 11
  88.   AND #%00000010
  89.   BEQ Read11Done
  90.  
  91. Read11Done:
  92.  
  93.  
  94. Read7:
  95.   LDA buttons1Lo_pressed     ; power pad button 7
  96.   AND #%00000001
  97.   BEQ Read7Done
  98.  
  99. Read7Done:
  100.  
  101.  
  102. Read4:
  103.   LDA buttons1Hi_pressed     ; power pad button 4
  104.   AND #%10000000
  105.   BEQ Read4Done
  106.  
  107.  
  108. Read4Done:
  109.  
  110.  
  111. Read3:
  112.   LDA buttons1Hi_pressed     ; power pad button 3
  113.   AND #%01000000
  114.   BEQ Read3Done
  115.  
  116. Read3Done:
  117.  
  118.  
  119. Read12:
  120.   LDA buttons1Hi_pressed     ; power pad button 12
  121.   AND #%00100000
  122.   BEQ Read12Done
  123.  
  124. Read12Done:
  125.  
  126.  
  127. Read8:
  128.   LDA buttons1Hi_pressed     ; power pad button 8
  129.   AND #%00010000
  130.   BEQ Read8Done
  131.  
  132. Read8Done:
  133.  
  134.   RTI
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement