Adaptateur de manette pour ; - Master system - Megadrive - Saturn - Dreamcast - Nes - Snes - N64 - PS1 - PS2
Dependencies: mbed mbed-MapleMini USBDevice_STM32F103 USBJoystick
Diff: nintendo.cpp
- Revision:
- 0:0ce3bda826e8
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nintendo.cpp Sun May 26 20:50:21 2019 +0000 @@ -0,0 +1,125 @@ +#include "MapleMini.h" +#include "mbed.h" +#include "nintendo.h" + +int *NintendoNes() +{ + USB2.output(); // CLOCK + USB3.output(); // LATCH + USB4.input(); // DATA + USB4.mode(PullUp); + + USB3 = 0; + USB2 = 0; + + // Flag des boutton + const int UP = 1; + const int DOWN = 2; + const int LEFT = 4; + const int RIGHT = 8; + const int A = 64; + const int B = 128; + const int SELECT = 1024; + const int START = 2048; + + int buttonMap[] = { + A, + B, + SELECT, + START, + UP, + DOWN, + LEFT, + RIGHT + }; + + int buttons = 0; + + // Envoi impulsion LATCH + USB3 = 1; + wait_us(12); + USB3 = 0; + wait_us(6); + + // Lecture des boutons + for (int i = 0; i < 8; i++) { + if(!USB4) { // Lecture du boutton + buttons |= buttonMap[i]; + } + // Envoi impulsion CLOCK + USB2 = 1; + wait_us(6); + USB2 = 0; + wait_us(6); + } + int array[] = {0, 0, 0, 0, buttons, 0}; + return array; + //joystick.update(0, 0, 0, 0, buttons, 0); // Envoi des position des noutton au pc +} + +int *NintendoSnes() +{ + USB2.output(); // CLOCK + USB3.output(); // LATCH + USB4.input(); // DATA + USB4.mode(PullUp); + + USB3 = 0; + USB2 = 0; + + + + // Flag des boutton + const int UP = 1; + const int DOWN = 2; + const int LEFT = 4; + const int RIGHT = 8; + const int L = 16; + const int R = 32; + const int A = 64; + const int B = 128; + const int X = 256; + const int Y = 512; + const int SELECT = 1024; + const int START = 2048; + + int buttonMap[] = { + B, + Y, + SELECT, + START, + UP, + DOWN, + LEFT, + RIGHT, + A, + X, + L, + R + }; + + int buttons = 0; + int analog_l = -128; + int analog_r = -128; + + // Envoi impulsion LATCH + USB3 = 1; + wait_us(12); + USB3 = 0; + wait_us(6); + + // Lecture des boutons + for (int i = 0; i < 12; i++) { + if(!USB4) { // Lecture du boutton + buttons |= buttonMap[i]; + } + // Envoi impulsion CLOCK + USB2 = 1; + wait_us(6); + USB2 = 0; + wait_us(6); + } + int array[] = {analog_r, analog_l, 0, 0, buttons, 0}; + return array; + //joystick.update(0, 0, 0, 0, buttons, 0); // Envoi des position des noutton au pc +} \ No newline at end of file