Skip to content

Commit a3c6e11

Browse files
committedJan 19, 2021
rpi: Proper CD32 controller support
1 parent 6f095cc commit a3c6e11

File tree

3 files changed

+36
-8
lines changed

3 files changed

+36
-8
lines changed
 

‎.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
*.o
2+
capsimg*
23
conf/*.uae
34
conf/*.conf
45
kickstarts/*.rom

‎Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ LDFLAGS += -lSDL -lpthread -lm -lz -lSDL_image -lpng -lrt -lxml2 -lFLAC -lmpg123
8383
LDFLAGS += -lSDL_ttf -lguichan_sdl -lguichan -L/opt/vc/lib
8484

8585
ifndef DEBUG
86-
MORE_CFLAGS += -Ofast -fomit-frame-pointer
86+
MORE_CFLAGS += -Ofast -fomit-frame-pointer -DDEBUG
8787
MORE_CFLAGS += -finline -fno-builtin
8888
else
8989
MORE_CFLAGS += -g -DDEBUG -Wl,--export-dynamic -DWITH_LOGGING

‎src/od-pandora/gui/PanelInput.cpp

+34-7
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,15 @@ class InputActionListener : public gcn::ActionListener
208208
case 2: changed_prefs.jports[0].id = JSEM_JOYS; changed_prefs.jports[0].mode = JSEM_MODE_JOYSTICK; break;
209209
case 3: changed_prefs.jports[0].id = JSEM_JOYS; changed_prefs.jports[0].mode = JSEM_MODE_JOYSTICK_CD32; break;
210210
case 4: changed_prefs.jports[0].id = -1; changed_prefs.jports[0].mode = JSEM_MODE_DEFAULT; break;
211-
default:changed_prefs.jports[0].id = JSEM_JOYS + cboPort0->getSelected() - 4;
212-
changed_prefs.jports[0].mode = JSEM_MODE_JOYSTICK;
211+
default:if ((cboPort0->getSelected() - 4) < inputdevice_get_device_total (IDTYPE_JOYSTICK))
212+
{
213+
changed_prefs.jports[0].id = JSEM_JOYS + cboPort0->getSelected() - 4;
214+
changed_prefs.jports[0].mode = JSEM_MODE_JOYSTICK;
215+
}
216+
{
217+
changed_prefs.jports[0].id = JSEM_JOYS + cboPort0->getSelected() - 4 - (inputdevice_get_device_total (IDTYPE_JOYSTICK) -1);
218+
changed_prefs.jports[0].mode = JSEM_MODE_JOYSTICK_CD32;
219+
}
213220
break;
214221
}
215222
inputdevice_updateconfig(NULL, &changed_prefs);
@@ -223,8 +230,16 @@ class InputActionListener : public gcn::ActionListener
223230
case 2: changed_prefs.jports[1].id = JSEM_JOYS; changed_prefs.jports[1].mode = JSEM_MODE_JOYSTICK; break;
224231
case 3: changed_prefs.jports[1].id = JSEM_JOYS; changed_prefs.jports[1].mode = JSEM_MODE_JOYSTICK_CD32; break;
225232
case 4: changed_prefs.jports[1].id = -1; changed_prefs.jports[1].mode = JSEM_MODE_DEFAULT; break;
226-
default:changed_prefs.jports[1].id = JSEM_JOYS + cboPort1->getSelected() - 4;
227-
changed_prefs.jports[1].mode = JSEM_MODE_JOYSTICK;
233+
default:if ((cboPort1->getSelected() - 4) < inputdevice_get_device_total (IDTYPE_JOYSTICK))
234+
{
235+
changed_prefs.jports[1].id = JSEM_JOYS + cboPort1->getSelected() - 4;
236+
changed_prefs.jports[1].mode = JSEM_MODE_JOYSTICK;
237+
}
238+
else
239+
{
240+
changed_prefs.jports[1].id = JSEM_JOYS + cboPort1->getSelected() - 4 - (inputdevice_get_device_total (IDTYPE_JOYSTICK) -1);
241+
changed_prefs.jports[1].mode = JSEM_MODE_JOYSTICK_CD32;
242+
}
228243
break;
229244
}
230245
inputdevice_updateconfig(NULL, &changed_prefs);
@@ -320,14 +335,20 @@ static InputActionListener* inputActionListener;
320335
void InitPanelInput(const struct _ConfigCategory& category)
321336
{
322337
inputActionListener = new InputActionListener();
323-
324338
if (ctrlPortList.getNumberOfElements() < (4 + inputdevice_get_device_total (IDTYPE_JOYSTICK)))
325339
{
326340
int i;
327341
for(i=0; i<(inputdevice_get_device_total (IDTYPE_JOYSTICK) - 1); i++)
328342
{
329343
ctrlPortList.AddElement(inputdevice_get_device_name(IDTYPE_JOYSTICK,i + 1));
330344
}
345+
for(i=0; i<(inputdevice_get_device_total (IDTYPE_JOYSTICK) - 1); i++)
346+
{
347+
char cd32joyname [128] = "";
348+
strncat(cd32joyname , inputdevice_get_device_name(IDTYPE_JOYSTICK,i + 1), 128 - 1);
349+
strncat(cd32joyname ," as CD32 contr.", 128 - 1);
350+
ctrlPortList.AddElement(cd32joyname);
351+
}
331352
}
332353

333354

@@ -672,7 +693,10 @@ void RefreshPanelInput(void)
672693
cboPort0->setSelected(4);
673694
break;
674695
default:
675-
cboPort0->setSelected(changed_prefs.jports[0].id-JSEM_JOYS + 4);
696+
if(changed_prefs.jports[0].mode != JSEM_MODE_JOYSTICK_CD32)
697+
cboPort0->setSelected(changed_prefs.jports[0].id-JSEM_JOYS + 4);
698+
else
699+
cboPort0->setSelected(changed_prefs.jports[0].id-JSEM_JOYS + 4 + inputdevice_get_device_total (IDTYPE_JOYSTICK) - 1);
676700
break;
677701
}
678702

@@ -694,7 +718,10 @@ void RefreshPanelInput(void)
694718
cboPort1->setSelected(4);
695719
break;
696720
default:
697-
cboPort1->setSelected(changed_prefs.jports[1].id-JSEM_JOYS + 4);
721+
if(changed_prefs.jports[1].mode != JSEM_MODE_JOYSTICK_CD32)
722+
cboPort1->setSelected(changed_prefs.jports[1].id-JSEM_JOYS + 4);
723+
else
724+
cboPort1->setSelected(changed_prefs.jports[1].id-JSEM_JOYS + 4 + inputdevice_get_device_total (IDTYPE_JOYSTICK) - 1);
698725
break;
699726
}
700727

0 commit comments

Comments
 (0)
Please sign in to comment.