-
-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 2643f8e
Showing
48 changed files
with
4,667 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
.vscode/ | ||
|
||
**/build/ | ||
|
||
*.bin | ||
*.bin.h | ||
*_syms.h | ||
*.elf | ||
*.rpx |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
#------------------------------------------------------------------------------- | ||
.SUFFIXES: | ||
#------------------------------------------------------------------------------- | ||
|
||
ifeq ($(strip $(DEVKITPRO)),) | ||
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitpro") | ||
endif | ||
|
||
TOPDIR ?= $(CURDIR) | ||
|
||
include $(DEVKITPRO)/wut/share/wut_rules | ||
|
||
#------------------------------------------------------------------------------- | ||
# TARGET is the name of the output | ||
# BUILD is the directory where object files & intermediate files will be placed | ||
# SOURCES is a list of directories containing source code | ||
# DATA is a list of directories containing data files | ||
# INCLUDES is a list of directories containing header files | ||
#------------------------------------------------------------------------------- | ||
TARGET := $(notdir $(CURDIR)) | ||
BUILD := build | ||
SOURCES := source | ||
DATA := data | ||
INCLUDES := include | ||
|
||
#------------------------------------------------------------------------------- | ||
# options for code generation | ||
#------------------------------------------------------------------------------- | ||
CFLAGS := -g -Wall -O2 -ffunction-sections \ | ||
$(MACHDEP) -Wno-array-bounds -Wno-stringop-overflow | ||
|
||
CFLAGS += $(INCLUDE) -D__WIIU__ -D__WUT__ | ||
|
||
CXXFLAGS := $(CFLAGS) | ||
|
||
ASFLAGS := -g $(ARCH) | ||
LDFLAGS = -g $(ARCH) $(RPXSPECS) -Wl,-Map,$(notdir $*.map) | ||
|
||
LIBS := -lwut | ||
|
||
#------------------------------------------------------------------------------- | ||
# list of directories containing libraries, this must be the top level | ||
# containing include and lib | ||
#------------------------------------------------------------------------------- | ||
LIBDIRS := $(PORTLIBS) $(WUT_ROOT) | ||
|
||
|
||
#------------------------------------------------------------------------------- | ||
# no real need to edit anything past this point unless you need to add additional | ||
# rules for different file extensions | ||
#------------------------------------------------------------------------------- | ||
ifneq ($(BUILD),$(notdir $(CURDIR))) | ||
#------------------------------------------------------------------------------- | ||
|
||
export OUTPUT := $(CURDIR)/$(TARGET) | ||
export TOPDIR := $(CURDIR) | ||
|
||
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ | ||
$(foreach dir,$(DATA),$(CURDIR)/$(dir)) | ||
|
||
export DEPSDIR := $(CURDIR)/$(BUILD) | ||
|
||
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) | ||
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) | ||
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) | ||
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) | ||
|
||
#------------------------------------------------------------------------------- | ||
# use CXX for linking C++ projects, CC for standard C | ||
#------------------------------------------------------------------------------- | ||
ifeq ($(strip $(CPPFILES)),) | ||
#------------------------------------------------------------------------------- | ||
export LD := $(CC) | ||
#------------------------------------------------------------------------------- | ||
else | ||
#------------------------------------------------------------------------------- | ||
export LD := $(CXX) | ||
#------------------------------------------------------------------------------- | ||
endif | ||
#------------------------------------------------------------------------------- | ||
|
||
export OFILES_BIN := $(addsuffix .o,$(BINFILES)) | ||
export OFILES_SRC := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) | ||
export OFILES := $(OFILES_BIN) $(OFILES_SRC) | ||
export HFILES_BIN := $(addsuffix .h,$(subst .,_,$(BINFILES))) | ||
|
||
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ | ||
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \ | ||
-I$(CURDIR)/$(BUILD) | ||
|
||
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) | ||
|
||
.PHONY: $(BUILD) clean all | ||
|
||
#------------------------------------------------------------------------------- | ||
all: $(BUILD) | ||
|
||
$(BUILD): $(CURDIR)/source/ios_kernel/ios_kernel.bin.h | ||
@[ -d $@ ] || mkdir -p $@ | ||
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile | ||
|
||
$(CURDIR)/source/ios_kernel/ios_kernel.bin.h: $(CURDIR)/source/ios_usb/ios_usb.bin.h $(CURDIR)/source/ios_pad/ios_pad.bin.h | ||
@$(MAKE) -j1 --no-print-directory -C $(CURDIR)/source/ios_kernel -f $(CURDIR)/source/ios_kernel/Makefile | ||
|
||
$(CURDIR)/source/ios_usb/ios_usb.bin.h: | ||
@$(MAKE) -j1 --no-print-directory -C $(CURDIR)/source/ios_usb -f $(CURDIR)/source/ios_usb/Makefile | ||
|
||
$(CURDIR)/source/ios_pad/ios_pad.bin.h: | ||
@$(MAKE) -j1 --no-print-directory -C $(CURDIR)/source/ios_pad -f $(CURDIR)/source/ios_pad/Makefile | ||
|
||
#------------------------------------------------------------------------------- | ||
clean: | ||
@echo clean ... | ||
@rm -fr $(BUILD) $(TARGET).rpx $(TARGET).elf | ||
@$(MAKE) --no-print-directory -C $(CURDIR)/source/ios_kernel -f $(CURDIR)/source/ios_kernel/Makefile clean | ||
@$(MAKE) --no-print-directory -C $(CURDIR)/source/ios_usb -f $(CURDIR)/source/ios_usb/Makefile clean | ||
@$(MAKE) --no-print-directory -C $(CURDIR)/source/ios_pad -f $(CURDIR)/source/ios_pad/Makefile clean | ||
|
||
#------------------------------------------------------------------------------- | ||
else | ||
.PHONY: all | ||
|
||
DEPENDS := $(OFILES:.o=.d) | ||
|
||
#------------------------------------------------------------------------------- | ||
# main targets | ||
#------------------------------------------------------------------------------- | ||
all : $(OUTPUT).rpx | ||
|
||
$(OUTPUT).rpx : $(OUTPUT).elf | ||
$(OUTPUT).elf : $(OFILES) | ||
|
||
$(OFILES_SRC) : $(HFILES_BIN) | ||
|
||
#------------------------------------------------------------------------------- | ||
# you need a rule like this for each extension you use as binary data | ||
#------------------------------------------------------------------------------- | ||
%.bin.o %_bin.h : %.bin | ||
#------------------------------------------------------------------------------- | ||
@echo $(notdir $<) | ||
@$(bin2o) | ||
|
||
-include $(DEPENDS) | ||
|
||
#------------------------------------------------------------------------------- | ||
endif | ||
#------------------------------------------------------------------------------- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
![Banner](Bloopair.png?raw=true) | ||
# Bloopair | ||
Bloopair allows connecting controllers from other consoles like native Wii U Pro Controllers on the Wii U. | ||
It temporarily applies patches to the IOS-PAD module responsible for Bluetooth controller connections. | ||
|
||
## Features | ||
- Connect up to 4 controllers wirelessly via Bluetooth | ||
- Rumble support | ||
- Battery levels | ||
|
||
## Supported controllers | ||
- Nintendo Switch Pro Controller | ||
- Nintendo Switch Joy-Con | ||
- Microsoft Xbox One S/X Controller | ||
- Sony Dualsense Controller | ||
|
||
## Installation | ||
- Download the latest .zip from the [releases page](https://github.com/GaryOderNichts/Bloopair/releases) | ||
- Extract it to the root of your SD Card | ||
|
||
## Usage | ||
- Run Bloopair from the Homebrew Launcher | ||
Once launched, the Wii U menu should open | ||
- Once back in the Wii U menu, press the SYNC button on your console and controller | ||
- Wait until the Controller is connected | ||
|
||
If a controller had been paired in the past, simply turn it on again and it should reconnect. | ||
After rebooting the console or exiting System Settings, relaunch Bloopair. | ||
|
||
## FAQ / Troubleshooting | ||
|
||
### My controller doesn't pair to the console | ||
Make sure Bloopair is running and both the console and the controller are in SYNC mode. | ||
Also make sure the controller is on the supported list. | ||
Wait for about a minute, and if nothing happens restart your console and redo the process. | ||
You can also try [clearing controller syncs](https://en-americas-support.nintendo.com/app/answers/detail/a_id/1705/~/how-to-clear-all-syncs). | ||
|
||
### Will you add support for controller xyz? | ||
Possibly, I've for now added support for all the controllers I currently own. Maybe I can get a few more controllers which I could add support for. | ||
Pull requests for different controllers are always welcome. | ||
|
||
## To-Do | ||
- Support more controllers | ||
- Determine controller based on vendor and product ID instead of controller name | ||
- Rumble for Joy-Con | ||
- Battery levels for Switch Pro Controller and Joy-Con | ||
- Bluetooth LE support (the Wii U's bluetooth stack seems to support this?) | ||
|
||
## How it works | ||
Bloopair will patch the IOSU's IOS-PAD module in memory. It will make sure any bluetooth peripheral can be paired to the console. | ||
Once paired and connected it will convert received HID reports to the Pro Controller HID report format, which padscore expects. | ||
|
||
## Building | ||
Install devkitPPC, devkitARM and wut. | ||
Run `make`. |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
<app version="1"> | ||
<name>Bloopair</name> | ||
<coder>GaryOderNichts</coder> | ||
<version>v0.1.0</version> | ||
<release_date>20210919120000</release_date> | ||
<short_description>Connect other controllers to your Wii U</short_description> | ||
<long_description> | ||
Allows connecting controllers from other consoles like native Wii U Pro Controllers on the Wii U. | ||
Bloopair temporarily applies patches to the IOS-PAD module responsible for Bluetooth controller connections. | ||
|
||
Usage: | ||
- Once launched the Wii U menu should open | ||
- You can now connect any supported controller | ||
</long_description> | ||
<url>https://github.com/GaryOderNichts/Bloopair</url> | ||
<category>tool</category> | ||
</app> |
Oops, something went wrong.