Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
6d9be98
Add files via upload
MegaCadeDev Jul 30, 2025
7117095
Merge branch 'wiredopposite:master' into master
MegaCadeDev Feb 6, 2026
93dd1bd
Add files via upload
MegaCadeDev Feb 6, 2026
0317bf9
Update README for OGX-Mini Fork and new features
MegaCadeDev Feb 6, 2026
78b191a
Update repository URL in README.md
MegaCadeDev Feb 6, 2026
bf05140
Update README with clearer ESP-IDF build instructions
MegaCadeDev Feb 6, 2026
02e5911
Update supported controllers list in README
MegaCadeDev Feb 7, 2026
25d545f
Change repository URL in README
MegaCadeDev Feb 8, 2026
1fc6a78
Fix directory path in README for cloning repo
MegaCadeDev Feb 8, 2026
13dc57f
Added Wii U GameCube emulation support for Wii U and Switch
MegaCadeDev Feb 8, 2026
8a3d938
Revise README with platform support and features
MegaCadeDev Feb 8, 2026
e222300
Fixed a bug with Wii U mode that caused pushing Left stick up to inpu…
MegaCadeDev Feb 12, 2026
8f18ecf
Fixed a bug with Wii U mode that caused pushing Left stick up to inpu…
MegaCadeDev Feb 12, 2026
2d6bd4a
Merge branch 'master' of https://github.com/MegaCadeDev/OGX-Mini-2026
MegaCadeDev Feb 12, 2026
04836d0
Change project name to OGX-Mini 2026
MegaCadeDev Feb 12, 2026
97c6aca
XInput: Xbox 360 (XSM3) support and joypad-os alignment
MegaCadeDev Feb 26, 2026
0aca323
Delete Firmware/RP2040/scripts directory
MegaCadeDev Feb 26, 2026
7231174
Update XInput support information in README
MegaCadeDev Feb 26, 2026
1c0a100
Docs and latency: README/IMPROVEMENTS, low-latency default, XInput al…
MegaCadeDev Feb 27, 2026
4eff855
Revise README with version updates and features
MegaCadeDev Feb 27, 2026
14f8de8
Sync README and LICENSE: credits, third-party licenses, Xbox 360 (lib…
MegaCadeDev Feb 27, 2026
7828694
Merge origin/master: resolve README conflict
MegaCadeDev Feb 27, 2026
363bb3f
Add libxsm3 for Xbox 360 (XSM3) auth: source, LICENSE.txt, README.md
MegaCadeDev Feb 27, 2026
f5416c7
Delete Firmware/RP2040/docs/XInput_joypad-os_comparison.md
MegaCadeDev Mar 1, 2026
1c623c8
v1.0.0.4a: Wii mode, 360 rumble fix, Pico 2 builds, docs and attribution
MegaCadeDev Mar 1, 2026
f4052cf
Merge branch 'master' of https://github.com/MegaCadeDev/OGX-Mini-2026
MegaCadeDev Mar 1, 2026
900e5b4
Update sdkconfig for ESP-IDF version change
DynaMight1124 Mar 4, 2026
56da7c2
Upgrade C++ standard to C++20 and adjust compile options
DynaMight1124 Mar 4, 2026
2138289
Enable classic Bluetooth support in btstack_config
DynaMight1124 Mar 4, 2026
96e5f32
Improve submodule initialization logic in CMake
DynaMight1124 Mar 4, 2026
723437d
Switch Pro emulation, v1.0.0a5, README and build exclusions
MegaCadeDev Mar 4, 2026
f7fc181
Add Discord link to README
MegaCadeDev Mar 5, 2026
75ed900
Add RP2350_ZERO, RP2040_XIAO, RP2354; 8BitDo XInput fix; Switch stick…
MegaCadeDev Mar 5, 2026
08780e3
v1.0.0a6: BT input queue, DS4/DS5 latency docs, GPIO/Dreamcast/GC/N64…
MegaCadeDev Mar 6, 2026
8bb536a
Docs: PS2 controller port power note in GPIO pinout (3.3V possible bu…
MegaCadeDev Mar 6, 2026
6bf5211
Firmware and docs: DualSense/OG Xbox input fix, gitignore local docs,…
MegaCadeDev Mar 10, 2026
2d01110
Resolved re-sync issue
DynaMight1124 Mar 12, 2026
25a11cb
Update Bluetooth settings in sdkconfig.defaults
DynaMight1124 Mar 12, 2026
0182afd
Build scripts, FW v1.0.0a7, all-board support, ESP32/4CH build fixes
MegaCadeDev Mar 15, 2026
bbaa6a1
v1.0.0a8: Pico W DS4/BT stability, docs, Flydigi, FW version
MegaCadeDev Mar 18, 2026
e20164b
Switch 2 Pro (0x2069) wired USB host, v1.0.0a9
MegaCadeDev Mar 25, 2026
58ad3ec
Revise controller support and hardware compatibility info
MegaCadeDev Mar 30, 2026
31483e9
Fix wired DS4 PS/touchpad button masking in PS4 USB host parser
0xSt0le Apr 14, 2026
7037768
Joy-Con pair merge, latency fixes, Switch 2 BT, docs, and Discord link.
MegaCadeDev Jun 18, 2026
3eb7afa
Merge pull request #43 from 0xSt0le/fix-ds4-guide-ps-touchpad-mask
MegaCadeDev Jun 18, 2026
b78d16b
Xbox BLE fixes and wired DS4 PS/touchpad mask fix.
MegaCadeDev Jun 19, 2026
2d0a4fc
v1.0.0.11a: PIO USB wired host fixes for Switch Pro, PS3, and 360 rec…
MegaCadeDev Jun 25, 2026
0a1bd59
v1.0.0.11a: Add Razer Atrox Xbox One GIP arcade stick support.
MegaCadeDev Jun 26, 2026
0409cc3
v1.0.0.12a: Steam mode, motion passthrough, Triton BT, and README ref…
MegaCadeDev Jul 19, 2026
c74aa50
Point bluepad32 submodule at remote ogxm-mini-2026 tip.
MegaCadeDev Jul 19, 2026
e41a4e6
Fix BTstack v1.8 Pico W build: HIDS host rename and bluepad32 sync.
MegaCadeDev Jul 19, 2026
14c62be
Bump bluepad32: continue GATT after BLE pairing for Steam Triton.
MegaCadeDev Jul 19, 2026
66c24b4
v1.0.0.13a: Fix Steam Triton BLE pairing via Valve GATT.
MegaCadeDev Jul 19, 2026
5a9ecae
Fix 8BitDo Pro 2/SN30 Pro BT disconnects and reconnect freeze (#86).
cursoragent Aug 9, 2026
b1868ce
WIP develop: Pico W USB/BT coexistence and Guide hold fixes (#47 #54 …
MegaCadeDev Aug 9, 2026
6be05d6
Document project structure and fix Series/GIP host init.
MegaCadeDev Aug 10, 2026
30e50a5
fix(xinput): add initial beta patch for 8BitDo Adapter 2 on OGX Mini
MC-Automator Aug 15, 2026
d0fe647
Update file search pattern for UF2 files
santiagowprr Aug 15, 2026
b5bac5a
Document multi-controller limits and PC capture script policy.
MegaCadeDev Aug 28, 2026
7397f95
Fix Xbox BLE HIDS initialization on Pico W
Elc3r Sep 5, 2026
16cfb18
WIP: preserve Cyclone wired + wireless scaffolding for Core1 audit.
MegaCadeDev Sep 9, 2026
f2cfa7d
Diagnostic: reset Core1 immediately before launch with 5ms settle.
MegaCadeDev Sep 9, 2026
28f683b
Restore known-good OGX boot; isolate Cyclone wireless from startup.
MegaCadeDev Sep 9, 2026
b0f6914
Restore Cyclone Switch claim via session affinity and NS fingerprint.
MegaCadeDev Sep 9, 2026
bd2737b
Add Victrix Gambit wired GIP support and save Cyclone progress.
MegaCadeDev Sep 10, 2026
7bd5115
Merge wip/cyclone-wireless-core1-audit into develop.
MegaCadeDev Sep 10, 2026
ad338a8
Add GameSir G7 Pro wired/BT support and fix Pico W boot with USB pad.
MegaCadeDev Sep 11, 2026
05c45cd
Document Flydigi Vader 5 Pro USB and dongle support.
MegaCadeDev Sep 11, 2026
8fdb354
Merge pull request #98 from Elc3r/codex/fix-xbox-ble-hids-init
MegaCadeDev Sep 11, 2026
8c340eb
Merge pull request #94 from santiagowprr/x360-RP2040-freezeFix
MegaCadeDev Sep 11, 2026
ae02193
Merge master and resolve submodule initialization conflict
DynaMight1124 Sep 12, 2026
e99aca2
Refactor UART bridge implementation and logic
DynaMight1124 Mar 4, 2026
ff9b511
Add UART bridge callback functions for line state and coding
DynaMight1124 Mar 4, 2026
1235323
Update UARTBridge.cpp
DynaMight1124 Mar 4, 2026
2a9ed75
Add callback methods for line state and coding
DynaMight1124 Mar 4, 2026
0adaad7
Update esp32_api.cpp
DynaMight1124 Mar 4, 2026
85383c6
Modify CDC buffer sizes in tusb_config.h
DynaMight1124 Mar 4, 2026
8974ce2
Add CDC line state and line coding callbacks
DynaMight1124 Mar 4, 2026
69f1677
Add virtual callbacks for line state and coding
DynaMight1124 Mar 4, 2026
19561a1
Stop UART bridge core after programming completes
DynaMight1124 Sep 12, 2026
b546cc4
Fix recursive clone: point Bluepad32 at btstack fork URL.
MegaCadeDev Sep 15, 2026
478cba6
Removed em dashes causing build script to not run in powershell, set …
Jack10685 Sep 15, 2026
55d9022
Added per-device Xbox 360/XInput USB and XSM3 identities
Jack10685 Sep 15, 2026
cbe30d4
Cleaned up weird stuff in other functions
Jack10685 Sep 15, 2026
a63a38e
Update README.md
Jack10685 Sep 15, 2026
190397d
Update CHANGELOG.md
Jack10685 Sep 15, 2026
42742dc
Update README.md
Jack10685 Sep 15, 2026
9de58d5
Updated IMPROVEMENTS.md
Jack10685 Sep 15, 2026
24c989d
Fix Bluetooth controller reconnect issue
Jack10685 Sep 17, 2026
046a192
Fix Xbox BLE HIDS Control Point apply and clarify PS4/OGX Live docs.
MegaCadeDev Sep 17, 2026
1ee6263
Merge pull request #102 from Jack10685/xbox360-multi-adapter-identity
MegaCadeDev Sep 17, 2026
21ccc9a
Merge pull request #104 from Jack10685/fix-reconnect-issue
MegaCadeDev Sep 17, 2026
4feb92e
Merge pull request #18 from DynaMight1124/UARTBridge-fix
MegaCadeDev Sep 17, 2026
b916d9c
Merge pull request #17 from DynaMight1124/ESP32-BTClassicFix
MegaCadeDev Sep 17, 2026
2c5b410
Merge develop into master for public README and firmware updates.
MegaCadeDev Sep 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .cursor/rules/dedicated-controller-drivers.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
description: New controllers get dedicated drivers; do not modify existing drivers to add different pads
alwaysApply: true
---

# Dedicated controller drivers

When adding support for a **new** controller in this OGX-Mini 2026 fork:

## Core rule

**Do not modify an existing controller driver to add support for a different controller.**

Create a **new dedicated driver** (host class / Bluepad32 parser / module) by default. Existing working drivers are effectively **read-only** unless the user explicitly instructs otherwise or a shared subsystem change is unavoidable.

**Adding Controller B must not risk breaking Controller A.**

## Required shape

- New detection rules (VID/PID/descriptors) that claim **only** that controller/family
- Own init/handshake, report parse, mappings, rumble/LED/quirks/timing
- Register via `HardwareIDs.h` / `HostManager` / Bluepad32 without changing other drivers’ behavior
- Prefer `HostDriver/MyPad/MyPad.cpp` over growing `if (device == …)` chains inside XboxOne, PS4, SwitchPro, etc.

## Shared code

Reuse genuinely common helpers (base `HostDriver`, USB/HID utilities, PadIn mapping helpers). Do **not** put controller-specific exceptions into a shared or existing driver because two pads look similar.

## Variants

Only share a driver when there is **strong evidence** the hardware is functionally identical (same protocol + report layout). When uncertain, **separate drivers first**; consolidate later after testing.

## Before editing an existing driver

Ask: *Can this live entirely in the new driver?* If yes, do that. If a shared change is required, keep it minimal and preserve existing driver behavior.

## Exception

Modify an existing driver for a new pad **only** when the user explicitly asks, or when there is an unavoidable architectural reason (document it in the PR).
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
cmake --build .
# Move the generated .uf2 file to output/ without knowing the exact version
FILE=$(find . -maxdepth 1 -name "OGX-Mini-*-${{ matrix.board }}.uf2" | head -n 1)
FILE=$(find . -maxdepth 1 -name "OGX-Mini-*-${{ matrix.board }}*.uf2" | head -n 1)
cp "$FILE" ../output/
- name: Upload UF2 Artifact
Expand Down
19 changes: 18 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
Firmware/.vscode
Firmware/RP2040/build
Firmware/RP2040/build_*

# Build dirs created by scripts/build.sh and scripts/build_all_boards.sh
scripts/build
scripts/build_*
Firmware/RP2040/scripts
Firmware/RP2040/.ignore
Firmware/RP2040/src/USBDevice/DeviceDriver/XboxOG/tud_xid/tud_xid_xremote_rom.h
Firmware/RP2040/src/BLEServer/att_delayed_response.h
Expand All @@ -10,4 +16,15 @@ Firmware/ESP32/components/btstack
Firmware/ESP32/sdkconfig.old
Firmware/external/pico-sdk
Firmware/external/picotool
Tools/dvd-dongle-rom.bin
Tools/dvd-dongle-rom.bin

# Python
**/__pycache__/
*.py[cod]

# Local docs (not for GitHub)
Firmware/RP2040/docs/XInput_joypad-os_comparison.md
Firmware/RP2040/docs/BLUEPAD32_PS4_PS5_PARSING.md
docs/Input_Controllers_Research.md
docs/Other_Projects_Output_Modes.md
docs/Wired_Retro_Controllers.md
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
[submodule "Firmware/external/bluepad32"]
path = Firmware/external/bluepad32
url = https://github.com/ricardoquesada/bluepad32.git
url = https://github.com/MegaCadeDev/bluepad32.git
[submodule "Firmware/external/tinyusb"]
path = Firmware/external/tinyusb
url = https://github.com/hathach/tinyusb.git
url = https://github.com/MegaCadeDev/tinyusb.git
[submodule "Tools/dump-dvd-kit"]
path = Tools/dump-dvd-kit
url = https://github.com/XboxDev/dump-dvd-kit.git
Expand Down
149 changes: 149 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

9 changes: 7 additions & 2 deletions Firmware/ESP32/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.5)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD 20)

set(EXTERNAL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../external)
set(EXTERNAL_CMAKE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
Expand Down Expand Up @@ -37,4 +37,9 @@ set(EXTRA_COMPONENT_DIRS
)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project("${FW_NAME}-${FW_VERSION}-ESP32")
project("${FW_NAME}-${FW_VERSION}-ESP32")

idf_build_set_property(COMPILE_OPTIONS
"-w"
"-Wno-error"
APPEND)
3 changes: 2 additions & 1 deletion Firmware/ESP32/main/btstack_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
// #define ENABLE_LOG_ERROR
// #define ENABLE_PRINTF_HEXDUMP
#define ENABLE_SCO_OVER_HCI
#define ENABLE_CLASSIC

// BTstack configuration. buffers, sizes, ...
#define HCI_OUTGOING_PRE_BUFFER_SIZE 4
Expand Down Expand Up @@ -79,4 +80,4 @@
#define ENABLE_L2CAP_ENHANCED_RETRANSMISSION_MODE
#endif

#endif // _ESP_BTSTACK_CONFIG_H
#endif // _ESP_BTSTACK_CONFIG_H
Loading