Adaptateur de manette pour ; - Master system - Megadrive - Saturn - Dreamcast - Nes - Snes - N64 - PS1 - PS2

Dependencies:   mbed mbed-MapleMini USBDevice_STM32F103 USBJoystick

Committer:
fabdu117
Date:
Sun May 26 20:50:21 2019 +0000
Revision:
0:0ce3bda826e8
Test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fabdu117 0:0ce3bda826e8 1 #include "MapleMini.h"
fabdu117 0:0ce3bda826e8 2 #include "mbed.h"
fabdu117 0:0ce3bda826e8 3 #include "USBJoystick.h"
fabdu117 0:0ce3bda826e8 4
fabdu117 0:0ce3bda826e8 5 #include "nintendo.h"
fabdu117 0:0ce3bda826e8 6 #include "sega.h"
fabdu117 0:0ce3bda826e8 7
fabdu117 0:0ce3bda826e8 8 DigitalInOut USB2(PB_12);
fabdu117 0:0ce3bda826e8 9 DigitalInOut USB3(PB_13);
fabdu117 0:0ce3bda826e8 10 DigitalInOut USB4(PB_14);
fabdu117 0:0ce3bda826e8 11 DigitalInOut USB5(PB_15);
fabdu117 0:0ce3bda826e8 12 DigitalInOut USB6(PA_8);
fabdu117 0:0ce3bda826e8 13 DigitalInOut USB7(PA_9);
fabdu117 0:0ce3bda826e8 14 DigitalInOut USB8(PA_10);
fabdu117 0:0ce3bda826e8 15 DigitalInOut USB9(PA_15);
fabdu117 0:0ce3bda826e8 16
fabdu117 0:0ce3bda826e8 17 int main() {
fabdu117 0:0ce3bda826e8 18
fabdu117 0:0ce3bda826e8 19 DigitalOut myled(LED1);
fabdu117 0:0ce3bda826e8 20
fabdu117 0:0ce3bda826e8 21 confSysClock();
fabdu117 0:0ce3bda826e8 22 USBJoystick joystick;
fabdu117 0:0ce3bda826e8 23 Serial pc(USBTX, USBRX);
fabdu117 0:0ce3bda826e8 24
fabdu117 0:0ce3bda826e8 25 int controller = 0;
fabdu117 0:0ce3bda826e8 26
fabdu117 0:0ce3bda826e8 27 while(1) {
fabdu117 0:0ce3bda826e8 28
fabdu117 0:0ce3bda826e8 29 int idLow = 0;
fabdu117 0:0ce3bda826e8 30 int idHigh = 0;
fabdu117 0:0ce3bda826e8 31
fabdu117 0:0ce3bda826e8 32 USB5.input();
fabdu117 0:0ce3bda826e8 33 USB6.input();
fabdu117 0:0ce3bda826e8 34 USB7.input();
fabdu117 0:0ce3bda826e8 35 USB8.output();
fabdu117 0:0ce3bda826e8 36 USB9.input();
fabdu117 0:0ce3bda826e8 37
fabdu117 0:0ce3bda826e8 38 USB5.mode(PullUp);
fabdu117 0:0ce3bda826e8 39 USB6.mode(PullUp);
fabdu117 0:0ce3bda826e8 40 USB7.mode(PullUp);
fabdu117 0:0ce3bda826e8 41 USB9.mode(PullUp);
fabdu117 0:0ce3bda826e8 42
fabdu117 0:0ce3bda826e8 43 if(!USB9) {
fabdu117 0:0ce3bda826e8 44 USB8 = 0;
fabdu117 0:0ce3bda826e8 45 wait_us(1);
fabdu117 0:0ce3bda826e8 46 if(!USB7) {
fabdu117 0:0ce3bda826e8 47 idLow = idLow + 1;
fabdu117 0:0ce3bda826e8 48 }
fabdu117 0:0ce3bda826e8 49 if(!USB6) {
fabdu117 0:0ce3bda826e8 50 idLow = idLow + 2;
fabdu117 0:0ce3bda826e8 51 }
fabdu117 0:0ce3bda826e8 52 if(!USB5) {
fabdu117 0:0ce3bda826e8 53 idLow = idLow + 4;
fabdu117 0:0ce3bda826e8 54 }
fabdu117 0:0ce3bda826e8 55
fabdu117 0:0ce3bda826e8 56 USB8 = 1;
fabdu117 0:0ce3bda826e8 57 wait_us(1);
fabdu117 0:0ce3bda826e8 58 if(USB7) {
fabdu117 0:0ce3bda826e8 59 idHigh = idHigh + 1;
fabdu117 0:0ce3bda826e8 60 }
fabdu117 0:0ce3bda826e8 61 if(USB6) {
fabdu117 0:0ce3bda826e8 62 idHigh = idHigh + 2;
fabdu117 0:0ce3bda826e8 63 }
fabdu117 0:0ce3bda826e8 64 if(USB5) {
fabdu117 0:0ce3bda826e8 65 idHigh = idHigh + 4;
fabdu117 0:0ce3bda826e8 66 }
fabdu117 0:0ce3bda826e8 67
fabdu117 0:0ce3bda826e8 68 if(idHigh == 7) {
fabdu117 0:0ce3bda826e8 69 controller = idLow;
fabdu117 0:0ce3bda826e8 70 //pc.printf("idLow : %i idHigh : %i\r\n",idLow,idHigh);
fabdu117 0:0ce3bda826e8 71 } else {
fabdu117 0:0ce3bda826e8 72 // pc.printf("Error idLow : %i idHigh : %i\r\n",idLow,idHigh);
fabdu117 0:0ce3bda826e8 73 //wait_ms(100);
fabdu117 0:0ce3bda826e8 74 }
fabdu117 0:0ce3bda826e8 75 switch(controller) {
fabdu117 0:0ce3bda826e8 76 case 0:
fabdu117 0:0ce3bda826e8 77 int *sega = SegaMasterGenesisSaturn();
fabdu117 0:0ce3bda826e8 78 joystick.update(sega[0],sega[1],sega[2],sega[3],sega[4],sega[5]); // Envoi des position des noutton au pc
fabdu117 0:0ce3bda826e8 79 // pc.printf("Sega ou Saturn \r\n");
fabdu117 0:0ce3bda826e8 80 //pc.printf("X : %i - Y : %i \r\n", sega[2], sega[3]);
fabdu117 0:0ce3bda826e8 81 break;
fabdu117 0:0ce3bda826e8 82 case 3:
fabdu117 0:0ce3bda826e8 83 // pc.printf("PS1\r\n");
fabdu117 0:0ce3bda826e8 84 break;
fabdu117 0:0ce3bda826e8 85 case 4:
fabdu117 0:0ce3bda826e8 86 int *nes = NintendoNes();
fabdu117 0:0ce3bda826e8 87 joystick.update(nes[0],nes[1],nes[2],nes[3],nes[4],nes[5]); // Envoi des position des noutton au pc
fabdu117 0:0ce3bda826e8 88 // pc.printf("NES\r\n");
fabdu117 0:0ce3bda826e8 89 break;
fabdu117 0:0ce3bda826e8 90 case 5:
fabdu117 0:0ce3bda826e8 91 int *snes = NintendoSnes();
fabdu117 0:0ce3bda826e8 92 joystick.update(snes[0],snes[1],snes[2],snes[3],snes[4],snes[5]); // Envoi des position des noutton au pc
fabdu117 0:0ce3bda826e8 93 // pc.printf("SNES\r\n");
fabdu117 0:0ce3bda826e8 94 break;
fabdu117 0:0ce3bda826e8 95 case 6:
fabdu117 0:0ce3bda826e8 96 // pc.printf("Dreamcast\r\n");
fabdu117 0:0ce3bda826e8 97 break;
fabdu117 0:0ce3bda826e8 98 case 7:
fabdu117 0:0ce3bda826e8 99 // pc.printf("N64\r\n");
fabdu117 0:0ce3bda826e8 100 break;
fabdu117 0:0ce3bda826e8 101 }
fabdu117 0:0ce3bda826e8 102 } else {
fabdu117 0:0ce3bda826e8 103 pc.printf("Pas d'adaptateur\r\n");
fabdu117 0:0ce3bda826e8 104 wait_ms(100);
fabdu117 0:0ce3bda826e8 105 }
fabdu117 0:0ce3bda826e8 106 myled = !myled;
fabdu117 0:0ce3bda826e8 107 }
fabdu117 0:0ce3bda826e8 108 }