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 "nintendo.h"
fabdu117 0:0ce3bda826e8 4
fabdu117 0:0ce3bda826e8 5 int *NintendoNes()
fabdu117 0:0ce3bda826e8 6 {
fabdu117 0:0ce3bda826e8 7 USB2.output(); // CLOCK
fabdu117 0:0ce3bda826e8 8 USB3.output(); // LATCH
fabdu117 0:0ce3bda826e8 9 USB4.input(); // DATA
fabdu117 0:0ce3bda826e8 10 USB4.mode(PullUp);
fabdu117 0:0ce3bda826e8 11
fabdu117 0:0ce3bda826e8 12 USB3 = 0;
fabdu117 0:0ce3bda826e8 13 USB2 = 0;
fabdu117 0:0ce3bda826e8 14
fabdu117 0:0ce3bda826e8 15 // Flag des boutton
fabdu117 0:0ce3bda826e8 16 const int UP = 1;
fabdu117 0:0ce3bda826e8 17 const int DOWN = 2;
fabdu117 0:0ce3bda826e8 18 const int LEFT = 4;
fabdu117 0:0ce3bda826e8 19 const int RIGHT = 8;
fabdu117 0:0ce3bda826e8 20 const int A = 64;
fabdu117 0:0ce3bda826e8 21 const int B = 128;
fabdu117 0:0ce3bda826e8 22 const int SELECT = 1024;
fabdu117 0:0ce3bda826e8 23 const int START = 2048;
fabdu117 0:0ce3bda826e8 24
fabdu117 0:0ce3bda826e8 25 int buttonMap[] = {
fabdu117 0:0ce3bda826e8 26 A,
fabdu117 0:0ce3bda826e8 27 B,
fabdu117 0:0ce3bda826e8 28 SELECT,
fabdu117 0:0ce3bda826e8 29 START,
fabdu117 0:0ce3bda826e8 30 UP,
fabdu117 0:0ce3bda826e8 31 DOWN,
fabdu117 0:0ce3bda826e8 32 LEFT,
fabdu117 0:0ce3bda826e8 33 RIGHT
fabdu117 0:0ce3bda826e8 34 };
fabdu117 0:0ce3bda826e8 35
fabdu117 0:0ce3bda826e8 36 int buttons = 0;
fabdu117 0:0ce3bda826e8 37
fabdu117 0:0ce3bda826e8 38 // Envoi impulsion LATCH
fabdu117 0:0ce3bda826e8 39 USB3 = 1;
fabdu117 0:0ce3bda826e8 40 wait_us(12);
fabdu117 0:0ce3bda826e8 41 USB3 = 0;
fabdu117 0:0ce3bda826e8 42 wait_us(6);
fabdu117 0:0ce3bda826e8 43
fabdu117 0:0ce3bda826e8 44 // Lecture des boutons
fabdu117 0:0ce3bda826e8 45 for (int i = 0; i < 8; i++) {
fabdu117 0:0ce3bda826e8 46 if(!USB4) { // Lecture du boutton
fabdu117 0:0ce3bda826e8 47 buttons |= buttonMap[i];
fabdu117 0:0ce3bda826e8 48 }
fabdu117 0:0ce3bda826e8 49 // Envoi impulsion CLOCK
fabdu117 0:0ce3bda826e8 50 USB2 = 1;
fabdu117 0:0ce3bda826e8 51 wait_us(6);
fabdu117 0:0ce3bda826e8 52 USB2 = 0;
fabdu117 0:0ce3bda826e8 53 wait_us(6);
fabdu117 0:0ce3bda826e8 54 }
fabdu117 0:0ce3bda826e8 55 int array[] = {0, 0, 0, 0, buttons, 0};
fabdu117 0:0ce3bda826e8 56 return array;
fabdu117 0:0ce3bda826e8 57 //joystick.update(0, 0, 0, 0, buttons, 0); // Envoi des position des noutton au pc
fabdu117 0:0ce3bda826e8 58 }
fabdu117 0:0ce3bda826e8 59
fabdu117 0:0ce3bda826e8 60 int *NintendoSnes()
fabdu117 0:0ce3bda826e8 61 {
fabdu117 0:0ce3bda826e8 62 USB2.output(); // CLOCK
fabdu117 0:0ce3bda826e8 63 USB3.output(); // LATCH
fabdu117 0:0ce3bda826e8 64 USB4.input(); // DATA
fabdu117 0:0ce3bda826e8 65 USB4.mode(PullUp);
fabdu117 0:0ce3bda826e8 66
fabdu117 0:0ce3bda826e8 67 USB3 = 0;
fabdu117 0:0ce3bda826e8 68 USB2 = 0;
fabdu117 0:0ce3bda826e8 69
fabdu117 0:0ce3bda826e8 70
fabdu117 0:0ce3bda826e8 71
fabdu117 0:0ce3bda826e8 72 // Flag des boutton
fabdu117 0:0ce3bda826e8 73 const int UP = 1;
fabdu117 0:0ce3bda826e8 74 const int DOWN = 2;
fabdu117 0:0ce3bda826e8 75 const int LEFT = 4;
fabdu117 0:0ce3bda826e8 76 const int RIGHT = 8;
fabdu117 0:0ce3bda826e8 77 const int L = 16;
fabdu117 0:0ce3bda826e8 78 const int R = 32;
fabdu117 0:0ce3bda826e8 79 const int A = 64;
fabdu117 0:0ce3bda826e8 80 const int B = 128;
fabdu117 0:0ce3bda826e8 81 const int X = 256;
fabdu117 0:0ce3bda826e8 82 const int Y = 512;
fabdu117 0:0ce3bda826e8 83 const int SELECT = 1024;
fabdu117 0:0ce3bda826e8 84 const int START = 2048;
fabdu117 0:0ce3bda826e8 85
fabdu117 0:0ce3bda826e8 86 int buttonMap[] = {
fabdu117 0:0ce3bda826e8 87 B,
fabdu117 0:0ce3bda826e8 88 Y,
fabdu117 0:0ce3bda826e8 89 SELECT,
fabdu117 0:0ce3bda826e8 90 START,
fabdu117 0:0ce3bda826e8 91 UP,
fabdu117 0:0ce3bda826e8 92 DOWN,
fabdu117 0:0ce3bda826e8 93 LEFT,
fabdu117 0:0ce3bda826e8 94 RIGHT,
fabdu117 0:0ce3bda826e8 95 A,
fabdu117 0:0ce3bda826e8 96 X,
fabdu117 0:0ce3bda826e8 97 L,
fabdu117 0:0ce3bda826e8 98 R
fabdu117 0:0ce3bda826e8 99 };
fabdu117 0:0ce3bda826e8 100
fabdu117 0:0ce3bda826e8 101 int buttons = 0;
fabdu117 0:0ce3bda826e8 102 int analog_l = -128;
fabdu117 0:0ce3bda826e8 103 int analog_r = -128;
fabdu117 0:0ce3bda826e8 104
fabdu117 0:0ce3bda826e8 105 // Envoi impulsion LATCH
fabdu117 0:0ce3bda826e8 106 USB3 = 1;
fabdu117 0:0ce3bda826e8 107 wait_us(12);
fabdu117 0:0ce3bda826e8 108 USB3 = 0;
fabdu117 0:0ce3bda826e8 109 wait_us(6);
fabdu117 0:0ce3bda826e8 110
fabdu117 0:0ce3bda826e8 111 // Lecture des boutons
fabdu117 0:0ce3bda826e8 112 for (int i = 0; i < 12; i++) {
fabdu117 0:0ce3bda826e8 113 if(!USB4) { // Lecture du boutton
fabdu117 0:0ce3bda826e8 114 buttons |= buttonMap[i];
fabdu117 0:0ce3bda826e8 115 }
fabdu117 0:0ce3bda826e8 116 // Envoi impulsion CLOCK
fabdu117 0:0ce3bda826e8 117 USB2 = 1;
fabdu117 0:0ce3bda826e8 118 wait_us(6);
fabdu117 0:0ce3bda826e8 119 USB2 = 0;
fabdu117 0:0ce3bda826e8 120 wait_us(6);
fabdu117 0:0ce3bda826e8 121 }
fabdu117 0:0ce3bda826e8 122 int array[] = {analog_r, analog_l, 0, 0, buttons, 0};
fabdu117 0:0ce3bda826e8 123 return array;
fabdu117 0:0ce3bda826e8 124 //joystick.update(0, 0, 0, 0, buttons, 0); // Envoi des position des noutton au pc
fabdu117 0:0ce3bda826e8 125 }