private void JoypadDevice_AnalogStickDidMove(JoypadDevice device, JoyInputIdentifier stick, JoypadStickPosition newPosition) { float normalizedDistance = newPosition.Distance / 55.0f; // Move this into the SDK. moveX = normalizedDistance * Mathf.Cos(newPosition.Angle); moveY = normalizedDistance * Mathf.Sin(newPosition.Angle); print(string.Format("Analog Stick moved - Distance: {0} Angle:{1}", normalizedDistance, newPosition.Angle)); }
private void setJOY_CTRL(uint value) { TXenable = (value & 0x1) != 0; JoyOutput = ((value >> 1) & 0x1) != 0; RXenable = ((value >> 2) & 0x1) != 0; joyControl_unknow_bit3 = ((value >> 3) & 0x1) != 0; controlAck = ((value >> 4) & 0x1) != 0; joyControl_unknow_bit5 = ((value >> 5) & 0x1) != 0; controlReset = ((value >> 6) & 0x1) != 0; RXinterruptMode = (value >> 8) & 0x3; TXinterruptEnable = ((value >> 10) & 0x1) != 0; RXinterruptEnable = ((value >> 11) & 0x1) != 0; ACKinterruptEnable = ((value >> 12) & 0x1) != 0; desiredSlotNumber = (value >> 13) & 0x1; if (controlAck) { //Console.WriteLine("[JOYPAD] CONTROL ACK"); RXparityError = false; interruptRequest = false; controlAck = false; } if (controlReset) { //Console.WriteLine("[JOYPAD] CONTROL RESET"); joypadDevice = JoypadDevice.None; controller.resetToIdle(); memoryCard.resetToIdle(); fifoFull = false; setJOY_MODE(0); setJOY_CTRL(0); JOY_BAUD = 0; JOY_RX_DATA = 0xFF; JOY_TX_DATA = 0xFF; TXreadyFlag1 = true; TXreadyFlag2 = true; controlReset = false; } if (!JoyOutput) { joypadDevice = JoypadDevice.None; memoryCard.resetToIdle(); controller.resetToIdle(); } }
public void write(uint addr, uint value) { switch (addr & 0xFF) { case 0x40: //Console.WriteLine("[JOYPAD] TX DATA ENQUEUE " + value.ToString("x2")); JOY_TX_DATA = (byte)value; JOY_RX_DATA = 0xFF; fifoFull = true; TXreadyFlag1 = true; TXreadyFlag2 = false; if (JoyOutput) { TXreadyFlag2 = true; //Console.WriteLine("[JOYPAD] DesiredSlot == " + desiredSlotNumber); if (desiredSlotNumber == 1) { JOY_RX_DATA = 0xFF; ackInputLevel = false; return; } if (joypadDevice == JoypadDevice.None) { //Console.ForegroundColor = ConsoleColor.Red; if (value == 0x01) { //Console.ForegroundColor = ConsoleColor.Green; joypadDevice = JoypadDevice.Controller; } else if (value == 0x81) { //Console.ForegroundColor = ConsoleColor.Blue; joypadDevice = JoypadDevice.MemoryCard; } } if (joypadDevice == JoypadDevice.Controller) { JOY_RX_DATA = controller.process(JOY_TX_DATA); ackInputLevel = controller.ack; if (ackInputLevel) { counter = 500; } //Console.WriteLine($"[JOYPAD] Conroller TICK Enqueued RX response {JOY_RX_DATA:x2} ack: {ackInputLevel}"); //Console.ReadLine(); } else if (joypadDevice == JoypadDevice.MemoryCard) { JOY_RX_DATA = memoryCard.process(JOY_TX_DATA); ackInputLevel = memoryCard.ack; if (ackInputLevel) { counter = 500; } //Console.WriteLine($"[JOYPAD] MemCard TICK Enqueued RX response {JOY_RX_DATA:x2} ack: {ackInputLevel}"); //Console.ReadLine(); } else { ackInputLevel = false; } if (ackInputLevel == false) { joypadDevice = JoypadDevice.None; } } else { joypadDevice = JoypadDevice.None; memoryCard.resetToIdle(); controller.resetToIdle(); ackInputLevel = false; } break; case 0x48: //Console.WriteLine($"[JOYPAD] SET MODE {value:x4}"); setJOY_MODE(value); break; case 0x4A: //Console.WriteLine($"[JOYPAD] SET CONTROL {value:x4}"); setJOY_CTRL(value); break; case 0x4E: //Console.WriteLine($"[JOYPAD] SET BAUD {value:x4}"); JOY_BAUD = (ushort)value; reloadTimer(); break; default: Console.WriteLine($"Unhandled JOYPAD Write {addr:x8} {value:x8}"); //Console.ReadLine(); break; } }
private void JoypadDevice_DpadButtonDown(JoypadDevice device, JoyInputIdentifier dpad, JoyDpadButton dpadButton) { print(string.Format("Dpad {0} pressed {1}", dpad, dpadButton)); }
///////////////////////////////////////////////////////////////////////////////////////////////////// private void JoypadDevice_DidAccelerate(JoypadDevice device, JoypadAcceleration accel) { moveY = accel.X; moveX = -1 * accel.Y; }
private void JoypadDevice_ButtonUp(JoypadDevice device, JoyInputIdentifier button) { print(string.Format("Button {0} Released", button)); }
private void JoypadDevice_ButtonDown(JoypadDevice device, JoyInputIdentifier button) { print(string.Format("Button {0} Pressed", button)); }
private void JoypadManager_DidLoseDevice(JoypadManager sender, JoypadDevice device) { }
///////////////////////////////////////////////////////////////////////////////////////////////////// private void JoypadManager_DidFindDevice(JoypadManager sender, JoypadDevice device, bool previouslyConnected) { joypadManager.ConnectToDevice(device, 1); }
private void JoypadManager_DeviceDidDisconnect(JoypadManager sender, JoypadDevice device, uint player) { device.DidAccelerate -= new JoypadDevice.DidAccelerateHandler(JoypadDevice_DidAccelerate); device.ButtonDown -= new JoypadDevice.ButtonDownHandler(JoypadDevice_ButtonDown); device.ButtonUp -= new JoypadDevice.ButtonUpHandler(JoypadDevice_ButtonUp); device.DpadButtonDown -= new JoypadDevice.DpadButtonDownHandler(JoypadDevice_DpadButtonDown); device.DpadButtonUp -= new JoypadDevice.DpadButtonUpHandler(JoypadDevice_DpadButtonUp); device.AnalogStickDidMove -= new JoypadDevice.AnalogStickDidMoveHandler(JoypadDevice_AnalogStickDidMove); }
private void JoypadManager_DeviceDidConnect(JoypadManager sender, JoypadDevice device, uint player) { joypadManager.StopFindingDevices(); device.DidAccelerate += new JoypadDevice.DidAccelerateHandler(JoypadDevice_DidAccelerate); device.ButtonDown += new JoypadDevice.ButtonDownHandler(JoypadDevice_ButtonDown); device.ButtonUp += new JoypadDevice.ButtonUpHandler(JoypadDevice_ButtonUp); device.DpadButtonDown += new JoypadDevice.DpadButtonDownHandler(JoypadDevice_DpadButtonDown); device.DpadButtonUp += new JoypadDevice.DpadButtonUpHandler(JoypadDevice_DpadButtonUp); device.AnalogStickDidMove += new JoypadDevice.AnalogStickDidMoveHandler(JoypadDevice_AnalogStickDidMove); }