add switch for input
This commit is contained in:
+6
-3
@@ -7,9 +7,12 @@
|
|||||||
#include <SdFat.h>
|
#include <SdFat.h>
|
||||||
#include "gb.h"
|
#include "gb.h"
|
||||||
|
|
||||||
|
#define INPUT_GPIO 1
|
||||||
|
#define INPUT_PCF8574 2
|
||||||
|
|
||||||
/* Joypad Pins. */
|
/* Joypad Pins. */
|
||||||
#define USE_JOYPAD_I2C_IO_EXPANDER
|
//#define USE_JOYPAD_I2C_IO_EXPANDER
|
||||||
#ifdef USE_JOYPAD_I2C_IO_EXPANDER
|
#if ENABLE_INPUT == INPUT_PCF8574
|
||||||
// Use PCF8574 for Joypad. Only required if an LCD with 16-bit parallel bus is used,
|
// Use PCF8574 for Joypad. Only required if an LCD with 16-bit parallel bus is used,
|
||||||
// as Pico does not have enough pins for all peripherals. With 8-bit parallel or SPI LCDs this should not be necessary.
|
// as Pico does not have enough pins for all peripherals. With 8-bit parallel or SPI LCDs this should not be necessary.
|
||||||
#define PCF8574_ADDR 0x20
|
#define PCF8574_ADDR 0x20
|
||||||
@@ -24,7 +27,7 @@
|
|||||||
#define PIN_B 4
|
#define PIN_B 4
|
||||||
#define PIN_SELECT 6
|
#define PIN_SELECT 6
|
||||||
#define PIN_START 7
|
#define PIN_START 7
|
||||||
#else
|
#elif ENABLE_INPUT == INPUT_GPIO
|
||||||
// Use GPIOs directly on Pico for Joypad
|
// Use GPIOs directly on Pico for Joypad
|
||||||
#define PIN_UP 2
|
#define PIN_UP 2
|
||||||
#define PIN_DOWN 3
|
#define PIN_DOWN 3
|
||||||
|
|||||||
+6
-13
@@ -42,7 +42,7 @@ static struct
|
|||||||
unsigned down : 1;
|
unsigned down : 1;
|
||||||
} prev_joypad_bits;
|
} prev_joypad_bits;
|
||||||
|
|
||||||
#ifdef USE_JOYPAD_I2C_IO_EXPANDER
|
#if ENABLE_INPUT == INPUT_PCF8574
|
||||||
|
|
||||||
static PCF8574 pcf8574(PCF8574_ADDR, PCF8574_SDA, PCF8574_SCL);
|
static PCF8574 pcf8574(PCF8574_ADDR, PCF8574_SDA, PCF8574_SCL);
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ bool readJoypad(uint8_t pin) {
|
|||||||
return pcf8574.digitalRead(pin);
|
return pcf8574.digitalRead(pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#elif ENABLE_INPUT == INPUT_GPIO
|
||||||
|
|
||||||
static void initJoypadGpios() {
|
static void initJoypadGpios() {
|
||||||
gpio_set_function(PIN_UP, GPIO_FUNC_SIO);
|
gpio_set_function(PIN_UP, GPIO_FUNC_SIO);
|
||||||
@@ -102,9 +102,9 @@ bool readJoypad(uint8_t pin) {
|
|||||||
|
|
||||||
void initJoypad() {
|
void initJoypad() {
|
||||||
Serial.println("Init Joypad IOs ...");
|
Serial.println("Init Joypad IOs ...");
|
||||||
#ifdef USE_JOYPAD_I2C_IO_EXPANDER
|
#if ENABLE_INPUT == INPUT_PCF8574
|
||||||
initJoypadI2CIoExpander();
|
initJoypadI2CIoExpander();
|
||||||
#else
|
#elif ENABLE_INPUT == INPUT_GPIO
|
||||||
initJoypadGpios();
|
initJoypadGpios();
|
||||||
#endif
|
#endif
|
||||||
Serial.println("Joypad IOs initialized");
|
Serial.println("Joypad IOs initialized");
|
||||||
@@ -231,15 +231,7 @@ void handleJoypad() {
|
|||||||
prev_joypad_bits.select = gb.direct.joypad_bits.select;
|
prev_joypad_bits.select = gb.direct.joypad_bits.select;
|
||||||
prev_joypad_bits.start = gb.direct.joypad_bits.start;
|
prev_joypad_bits.start = gb.direct.joypad_bits.start;
|
||||||
|
|
||||||
#if 0
|
#if ENABLE_INPUT != 0
|
||||||
Serial.printf("pins:\n");
|
|
||||||
for (int i = 0; i < 8; ++i) {
|
|
||||||
int in = pcf8574.digitalRead(i);
|
|
||||||
Serial.printf(" %d", in);
|
|
||||||
}
|
|
||||||
Serial.printf("\n");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
gb.direct.joypad_bits.up = readJoypad(PIN_UP);
|
gb.direct.joypad_bits.up = readJoypad(PIN_UP);
|
||||||
gb.direct.joypad_bits.down = readJoypad(PIN_DOWN);
|
gb.direct.joypad_bits.down = readJoypad(PIN_DOWN);
|
||||||
gb.direct.joypad_bits.left = readJoypad(PIN_LEFT);
|
gb.direct.joypad_bits.left = readJoypad(PIN_LEFT);
|
||||||
@@ -248,6 +240,7 @@ void handleJoypad() {
|
|||||||
gb.direct.joypad_bits.b = readJoypad(PIN_B);
|
gb.direct.joypad_bits.b = readJoypad(PIN_B);
|
||||||
gb.direct.joypad_bits.select = readJoypad(PIN_SELECT);
|
gb.direct.joypad_bits.select = readJoypad(PIN_SELECT);
|
||||||
gb.direct.joypad_bits.start = readJoypad(PIN_START);
|
gb.direct.joypad_bits.start = readJoypad(PIN_START);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if (!gb.direct.joypad_bits.up) {
|
if (!gb.direct.joypad_bits.up) {
|
||||||
|
|||||||
Reference in New Issue
Block a user