Skip to content

Latest commit

 

History

43 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ultimate2CFixer

C++20 Platform ViGEmBus Polling Rate License

DirectInput-to-XInput remapper and companion utility for the 8BitDo Ultimate 2C controller in Bluetooth mode on Windows.

Overview • Features • Installation & Usage • Hardware Axis Mapping • Building from Source • License


📖 Overview

When connected via Bluetooth on Windows, the 8BitDo Ultimate 2C controller communicates via DirectInput rather than XInput. Additionally, the right analog stick is exposed on DirectInput lZ and lRz axes.

Because most modern Windows games expect an XInput device, Ultimate2CFixer reads the DirectInput state from the controller, maps the inputs accordingly, and feeds them into a virtual Xbox 360 controller using ViGEmBus.


⚙️ Features

  • DirectInput to XInput Translation: Maps Left Stick (lX, lY), Right Stick (lZ, lRz), triggers, and buttons to a virtual Xbox 360 gamepad.
  • Configurable Polling Rate: Update intervals of 125 Hz (8 ms), 250 Hz (4 ms), 500 Hz (2 ms), and 1000 Hz (1 ms).
  • Stick Response Curves: Linear (1:1), Smooth Aim (cubic S-curve), and Aggressive (square-root).
  • Optional Hair Trigger: User-configurable toggle that maps any trigger pull beyond the deadzone directly to full activation (255).
  • Live Input Telemetry: Visual indicators for analog sticks, ABXY layout, LB/RB bumpers, and LT/RT analog triggers.
  • Battery Status: Reads battery percentage via Windows WinRT Bluetooth Low Energy (BLE) GATT service.
  • System Tray & Resource Trimming: Flushes physical working set memory when minimized to the system tray.
  • Settings Persistence: Saves user preferences to the Windows Registry (HKCU\Software\Ultimate2CFixer\Settings).
  • Localization: English and Turkish interface support.

🚀 Installation & Usage

1. Requirements

  • Windows 10 / 11 (64-bit)
  • ViGEmBus driver (the application prompts to install this if not detected)

2. Quick Start

  1. Download Ultimate2CFixer.exe from the Releases page.
  2. Pair the 8BitDo Ultimate 2C controller via Windows Bluetooth settings.
  3. Open Ultimate2CFixer.exe and click Start Service.

🎮 Hardware Axis Mapping

DirectInput DIJOYSTATE2 axis layout for the 8BitDo Ultimate 2C in Bluetooth mode:

┌────────────────────────────────────────────────────────┐
│               8BitDo Ultimate 2C (Bluetooth)           │
├──────────────────────┬─────────────────────────────────┤
│ DirectInput Field    │ Gamepad Control                 │
├──────────────────────┼─────────────────────────────────┤
│ state.lX             │ Left Stick (Horizontal)         │
│ state.lY             │ Left Stick (Vertical)           │
│ state.lZ             │ Right Stick (Horizontal)        │
│ state.lRz            │ Right Stick (Vertical)          │
│ state.rglSlider[0]   │ Left Trigger (LT) Analog Depth  │
│ state.rglSlider[1]   │ Right Trigger (RT) Analog Depth │
│ state.rgbButtons[6]  │ Left Bumper (LB)                │
│ state.rgbButtons[7]  │ Right Bumper (RB)               │
│ state.rgbButtons[8]  │ Left Trigger (LT) Digital Click │
│ state.rgbButtons[9]  │ Right Trigger (RT) Digital Click│
└──────────────────────┴─────────────────────────────────┘

Note

The Right Stick is mapped to lZ and lRz, not lRx/lRy.


🔨 Building from Source

Prerequisites

  • Windows 10 / 11 (64-bit)
  • Visual Studio 2022 with C++ desktop workload
  • CMake 3.20 or newer

Build Instructions

# Clone the repository
git clone https://github.com/bezelye404/Ultimate2CbluetoothFix.git
cd Ultimate2CbluetoothFix

# Configure
cmake -B build -S .

# Build Release executable
cmake --build build --config Release

The compiled binary will be placed at:

build/Release/Ultimate2CFixer.exe

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgments

  • ViGEmBus by Benjamin Höglinger-Stelzer (Nefarius).

Releases

Contributors

Languages