Adaptateur de manette pour ; - Master system - Megadrive - Saturn - Dreamcast - Nes - Snes - N64 - PS1 - PS2
Dependencies: mbed mbed-MapleMini USBDevice_STM32F103 USBJoystick
Diff: main.cpp
- Revision:
- 0:0ce3bda826e8
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sun May 26 20:50:21 2019 +0000
@@ -0,0 +1,108 @@
+#include "MapleMini.h"
+#include "mbed.h"
+#include "USBJoystick.h"
+
+#include "nintendo.h"
+#include "sega.h"
+
+ DigitalInOut USB2(PB_12);
+ DigitalInOut USB3(PB_13);
+ DigitalInOut USB4(PB_14);
+ DigitalInOut USB5(PB_15);
+ DigitalInOut USB6(PA_8);
+ DigitalInOut USB7(PA_9);
+ DigitalInOut USB8(PA_10);
+ DigitalInOut USB9(PA_15);
+
+int main() {
+
+ DigitalOut myled(LED1);
+
+ confSysClock();
+ USBJoystick joystick;
+ Serial pc(USBTX, USBRX);
+
+ int controller = 0;
+
+ while(1) {
+
+ int idLow = 0;
+ int idHigh = 0;
+
+ USB5.input();
+ USB6.input();
+ USB7.input();
+ USB8.output();
+ USB9.input();
+
+ USB5.mode(PullUp);
+ USB6.mode(PullUp);
+ USB7.mode(PullUp);
+ USB9.mode(PullUp);
+
+ if(!USB9) {
+ USB8 = 0;
+ wait_us(1);
+ if(!USB7) {
+ idLow = idLow + 1;
+ }
+ if(!USB6) {
+ idLow = idLow + 2;
+ }
+ if(!USB5) {
+ idLow = idLow + 4;
+ }
+
+ USB8 = 1;
+ wait_us(1);
+ if(USB7) {
+ idHigh = idHigh + 1;
+ }
+ if(USB6) {
+ idHigh = idHigh + 2;
+ }
+ if(USB5) {
+ idHigh = idHigh + 4;
+ }
+
+ if(idHigh == 7) {
+ controller = idLow;
+ //pc.printf("idLow : %i idHigh : %i\r\n",idLow,idHigh);
+ } else {
+// pc.printf("Error idLow : %i idHigh : %i\r\n",idLow,idHigh);
+ //wait_ms(100);
+ }
+ switch(controller) {
+ case 0:
+ int *sega = SegaMasterGenesisSaturn();
+ joystick.update(sega[0],sega[1],sega[2],sega[3],sega[4],sega[5]); // Envoi des position des noutton au pc
+ // pc.printf("Sega ou Saturn \r\n");
+ //pc.printf("X : %i - Y : %i \r\n", sega[2], sega[3]);
+ break;
+ case 3:
+ // pc.printf("PS1\r\n");
+ break;
+ case 4:
+ int *nes = NintendoNes();
+ joystick.update(nes[0],nes[1],nes[2],nes[3],nes[4],nes[5]); // Envoi des position des noutton au pc
+ // pc.printf("NES\r\n");
+ break;
+ case 5:
+ int *snes = NintendoSnes();
+ joystick.update(snes[0],snes[1],snes[2],snes[3],snes[4],snes[5]); // Envoi des position des noutton au pc
+// pc.printf("SNES\r\n");
+ break;
+ case 6:
+ // pc.printf("Dreamcast\r\n");
+ break;
+ case 7:
+// pc.printf("N64\r\n");
+ break;
+ }
+ } else {
+ pc.printf("Pas d'adaptateur\r\n");
+ wait_ms(100);
+ }
+ myled = !myled;
+ }
+}
\ No newline at end of file
fabien cruz