Read_Btns_Mask ($F1B4)
Read_Btns ($F1BA)
Both of these routines read the button states on the two joysticks, and return their state in the following RAM locations:
joystick 1,
button 1: $C812 = $01
button 2: $C813 = $02
button 3: $C814 = $04
button 4: $C815 = $08
joystick 2,
button 1: $C816 = $10
button 2: $C817 = $20
button 3: $C818 = $40
button 4: $C819 = $80
C80F:
Contains current state of all buttons;
1 = depressed, 0 = not depressed
C810:
Contains state of all buttons from LAST time these routines were
called; if Read_Btns_Mask was called, then this is AND'ed with
the passed in mask.
C811:
Contains the same information as $C812-$C819
Bit 7 Bit 0
2.4 | 2.3 | 2.2 | 2.1 | 1.4 | 1.3 | 1.2 | 1.1 |
If Read_Btns is called, the result will be the same as Read_Btns_Mask with a mask of $FF1, and a 1 will only be returned if the button has transitioned to being pressed.
If Read_Btns_Mask is called, then a mask, passed in in the A-reg will be used to determine how the button state info is returned:
If a bit is 0, then the current state of the button is to be returned in the appropriate RAM location; 0 = not pressed, and 1 = pressed.
If a bit is 1, then the appropriate RAM location is set to 1 only on the depression transition of the button; additional calls will return 0, until the button is released and then depressed again.
ENTRY:
DP = $D0
A-reg = mask (for Read_Btns_Mask only)
EXIT:
A-reg = button transition state (same as $C811)
B-reg, X-reg trashed