|
|
@@ -38,6 +38,8 @@ |
|
|
|
#define NES_A 0x80 |
|
|
|
|
|
|
|
|
|
|
|
#define PULSE_TIME 25 |
|
|
|
|
|
|
|
// Data to store the pins for each controller |
|
|
|
|
|
|
|
struct nesPinsStruct |
|
|
@@ -91,10 +93,8 @@ unsigned int readNesJoystick (int joystick) |
|
|
|
|
|
|
|
// Toggle Latch - which presents the first bit |
|
|
|
|
|
|
|
digitalWrite (pins->lPin, HIGH) ; |
|
|
|
delayMicroseconds (1) ; |
|
|
|
digitalWrite (pins->lPin, LOW) ; |
|
|
|
delayMicroseconds (1) ; |
|
|
|
digitalWrite (pins->lPin, HIGH) ; delayMicroseconds (PULSE_TIME) ; |
|
|
|
digitalWrite (pins->lPin, LOW) ; delayMicroseconds (PULSE_TIME) ; |
|
|
|
|
|
|
|
// Read first bit |
|
|
|
|
|
|
@@ -104,12 +104,10 @@ unsigned int readNesJoystick (int joystick) |
|
|
|
|
|
|
|
for (i = 0 ; i < 7 ; ++i) |
|
|
|
{ |
|
|
|
digitalWrite (pins->cPin, HIGH) ; |
|
|
|
delayMicroseconds (1) ; |
|
|
|
digitalWrite (pins->cPin, LOW) ; |
|
|
|
delayMicroseconds (1) ; |
|
|
|
digitalWrite (pins->cPin, HIGH) ; delayMicroseconds (PULSE_TIME) ; |
|
|
|
digitalWrite (pins->cPin, LOW) ; delayMicroseconds (PULSE_TIME) ; |
|
|
|
value = (value << 1) | digitalRead (pins->dPin) ; |
|
|
|
} |
|
|
|
|
|
|
|
return ~value ; |
|
|
|
return value ^ 0xFF ; |
|
|
|
} |