N64 to USB HID interface

Dependencies:   mbed

Revision:
5:eb93a4f91396
Parent:
4:fee2d61ad6bc
--- a/main.cpp	Fri Sep 30 23:16:52 2011 +0000
+++ b/main.cpp	Wed Dec 10 14:22:30 2014 +0000
@@ -112,8 +112,8 @@
 #define WRITE_EEPROM        0x05
 #define RESET_CONTROLLER    0xff
 
-#define T1                  22      // Corresponds to 1 us        
-#define T2                  68      // Corresponds to 3 us
+#define T1                  23      // Corresponds to 1 us        
+#define T2                  69      // Corresponds to 3 us
 
 DigitalInOut inout(p14);            // Connect controller here
 // using 220 ohm pull-up
@@ -162,7 +162,7 @@
                 delay(60);
                 sample=inout.read();
                 if (sample)
-                    byte = byte  | (1<<bit);
+                    byte = byte  | (128>>bit);
                 bit++;
             }
 
@@ -170,21 +170,10 @@
         }
 
     }
-    /* The for loop here is used to reverse the bits for the x and y values retured
-          by the controller. I am not entirely sure of the format. I'm missing a bit
-          somewhere.. Values don't range from -127..128. */
-   /*
-    x=y=0;
-    for (i=0; i<=7; i++) {
-        if (controls.array[2] & (1 << i))
-            x=x | (1 << (7-i));
-        if (controls.array[3] & (1 << i))
-            y=y | (1 << (7-i));
-    }
-    data_array[2]=x;
-    data_array[3]=y;
-    */
-    //data_array[2]= 5;
+data_array[2] -= 128;
+data_array[3] -= 128;
+data_array[4] -= 128;
+data_array[5] -= 128;
     return n;
 }
 /* void send_byte(unsigned char byte) is used to send a single
@@ -266,17 +255,29 @@
         cmd[0]=64;
         send(cmd,3);
         receive(controls.array, 8);           // Start receiving bit stream
-        //pc.printf("%3d %3d %d %d\n ", controls.array[0], controls.array[1], (int8_t)controls.array[2], (int8_t)controls.array[3]);
+        joystick.joystick(controls.array[0], controls.array[1], 
+                          controls.array[2], controls.array[3],
+                          controls.array[4], controls.array[5],
+                          controls.array[6], controls.array[7]
+                          );  
+          
+          
+                  //pc.printf("%d\t%d\t", (uint8_t)controls.array[0],(uint8_t)controls.array[1]);
+          //pc.printf("%d\t%d\t%d\t%d\t%d\t%d", (int8_t)(controls.array[2]),(int8_t)controls.array[3],(int8_t)controls.array[4],(int8_t)controls.array[5],controls.array[6],controls.array[7]);
+        //pc.printf("\n");
 
-        for (n=7; n>=0; n--){
-            if (controls.array[2] & (1 << n))
+        //pc.printf("%3d %3d %d %d\n ", controls.array[0], controls.array[1], (int8_t)controls.array[2], (int8_t)controls.array[3]);
+/*
+        for (n=12; n<8; n++){
+            if (controls.array[2] & (128 >> n))
             pc.printf("1");
             else 
             pc.printf("0");
             }
-          //pc.printf("%d %d", (int8_t)(controls.array[2]^= (1 << 7)),controls.array[3]);
+          pc.printf("%d\t%d\t", (uint8_t)controls.array[0],(uint8_t)controls.array[1]);
+          pc.printf("%d\t%d\t%d\t%d\t%d\t%d", (int8_t)(controls.array[2]),(int8_t)controls.array[3],(int8_t)controls.array[4],(int8_t)controls.array[5],controls.array[6],controls.array[7]);
         pc.printf("\n");
-/*
+
         for (n=0; n<16; n++)
             pc.printf("%d", (1 & ((uint16_t)controls.result[0] >> n)));
         pc.printf(" ");
@@ -306,7 +307,7 @@
 
         //pc.printf("%3d %3d %d %d\n ", controls.array[0], controls.array[1], (int8_t)controls.array[2], (int8_t)controls.array[3]);
         //pc.printf("%d\n",controls.result_32);
-        joystick.joystick(controls.array[0],controls.array[1], controls.array[2], controls.array[3]);
+        //joystick.joystick(controls.array[0],controls.array[1], controls.array[2], controls.array[3]);
     }
 
 }
\ No newline at end of file