PadSend lets you use Gamecube pads connected to a Wii, or a DS, as a PC gamepad. PPJoy must be installed. Just run the server on your computer (requires .NET framework 2.0) and run the client on your Wii or DS. It will only work right now if your DS or Wii has an IP address that starts with 192.168.1. (this will be fixed soon)
You can download it here: http://dl.dropbox.com/u/211987/pad_send.zip
Wii features:
Server features:
You must install PPJoy before this will do anything. The newest version of PPJoy does work with 64-bit systems-- I'll add an explanation on how to install it later.
First run the server application on your computer. It will pop up for a second and then hide itself in the tray. When you click the tray icon, the status window will appear. The behavior and appearance is intended to mimic the way Windows 7's volume, network, etc, tray icons work. If you have Wiiload configured or if you know your Wii's IP address, you can send the Wii client directly to your Wii from here-- open the Homebrew Channel on your Wii, and click Wiiload Client. If wiiload is already configured, it will send it over right then. If it's not configured, it will prompt for you to enter your Wii's IP address, then send it. You can also do this from the tray icon's right click context menu, if you don't want to bring up the full status window.
Once a device is connected, it will be shown on the status menu. You can click the device icon to change its name or color. Right clicking the icon will change how the color is displayed, but this isn't saved, so it's not very useful.
Click About/Help to see descriptions for what each checkbox does.
For developers who want to write apps to interface with my server, UDP messages are sent to 192.168.1.255, on port 9501. The data structure for both types of controllers is (bytes):
00 - Counter (not used yet)
01 - Unique ID
02 - Identifier (explained below)
03 - Extension (not used yet)
04 - Buttons 0 (each bit is one button state)
05 - Buttons 1
After this it's different for each; GC:
06 - Left Analog X
07 - Left Analog Y
08 - Right Analog X
09 - Right Analog Y
10 - Analog Trigger L
11 - Analog Trigger R
DS:
06 - TouchX1 (each two bytes makes up a single unsigned 16-bit number-- maximum is 4000 though)
07 - TouchX2
08 - TouchY1
09 - TouchY2
Identifier:
01 - Gamecube Port 1
02 - Gamecube Port 2
03 - Gamecube Port 3
04 - Gamecube Port 4
09 - Nintendo DS
The server expects at least one message every second, or it assumes the device has disconnected.
Known bugs:
Please post any bugs or issues you find. I don't even know if this will work for anyone else!
You can download it here: http://dl.dropbox.com/u/211987/pad_send.zip
Wii features:
- Support for all four controller ports, simultaneously.
- Analog sticks and triggers are supported.
- Mouse control using either (or both) of the analog sticks and L/R buttons. Mouse movement is choppy, though, due to how messages are handled
- Support for up to 16 connected DS systems.
- Relative mouse control using the touch screen and L/R buttons.
- Absolute joystick control using the touch screen (must be calibrated in the Windows joystick panel)
Server features:
- Automatically creates PPJoy virtual joysticks for each unique device connected. It does not automatically delete them, though, because it turns out that is really annoying. (manual deletion will be added later)
- Writes button and axis names to the registry, which means games that bother to look for this can use accurate button labels.
- You can rename each device connected through the program interface-- you can have two systems connected named "Nintendo DS Lite" and "Nintendo 3DS" for example.
- An icon is displayed on the status window next to each device, the color of which can be changed to match your controller or system.
- Mouse control can be enabled or disabled, and this setting can be applied per-controller.
- All settings are saved and loaded automatically. The MAC address on the DS is used as a unique identifier, so settings can be saved, loaded per-system.
- Sits quietly in the tray, and if it works (I can guarantee it works on my machine, as they say), then it never requires any settings or attention.
You must install PPJoy before this will do anything. The newest version of PPJoy does work with 64-bit systems-- I'll add an explanation on how to install it later.
First run the server application on your computer. It will pop up for a second and then hide itself in the tray. When you click the tray icon, the status window will appear. The behavior and appearance is intended to mimic the way Windows 7's volume, network, etc, tray icons work. If you have Wiiload configured or if you know your Wii's IP address, you can send the Wii client directly to your Wii from here-- open the Homebrew Channel on your Wii, and click Wiiload Client. If wiiload is already configured, it will send it over right then. If it's not configured, it will prompt for you to enter your Wii's IP address, then send it. You can also do this from the tray icon's right click context menu, if you don't want to bring up the full status window.
Once a device is connected, it will be shown on the status menu. You can click the device icon to change its name or color. Right clicking the icon will change how the color is displayed, but this isn't saved, so it's not very useful.
Click About/Help to see descriptions for what each checkbox does.
For developers who want to write apps to interface with my server, UDP messages are sent to 192.168.1.255, on port 9501. The data structure for both types of controllers is (bytes):
00 - Counter (not used yet)
01 - Unique ID
02 - Identifier (explained below)
03 - Extension (not used yet)
04 - Buttons 0 (each bit is one button state)
05 - Buttons 1
After this it's different for each; GC:
06 - Left Analog X
07 - Left Analog Y
08 - Right Analog X
09 - Right Analog Y
10 - Analog Trigger L
11 - Analog Trigger R
DS:
06 - TouchX1 (each two bytes makes up a single unsigned 16-bit number-- maximum is 4000 though)
07 - TouchX2
08 - TouchY1
09 - TouchY2
Identifier:
01 - Gamecube Port 1
02 - Gamecube Port 2
03 - Gamecube Port 3
04 - Gamecube Port 4
09 - Nintendo DS
The server expects at least one message every second, or it assumes the device has disconnected.
Known bugs:
- Only the last byte of the MAC address is used to identify the connected DS, so two systems may identify as one and fight over a single virtual joystick.
- The Wii does not send a unique identifier, so you can't use more than four Gamecube controllers by connecting multiple Wiis. Not that I figure anyone would want to do this.
- Color settings either do not save or load properly for Gamecube controllers.
- If the virtual joysticks configured by ppjoy are not sequentially numbered, the server may (probably will) create duplicate joysticks.
- There's no dead zone for Gamecube analog sticks, so if your pads are worn out, you may find your mouse pointer wandering.
- Input is only updated each time a new message is received, so mouse control is not consistent when controlling it with an analog stick.
- It will only work if your router assigns addresses that start with 192.168.1.-- You might be able to hex edit the executables to change this to match your situation (leave the last octet as 255, though). ndslib and libogc do not seem to properly handle broadcasting or multicasting, so I don't know how to fix this and still be "configuration-free". Anyone have any ideas? Either way, I'll add a manual configuration in the future.
- There are a million features I still want to add
Please post any bugs or issues you find. I don't even know if this will work for anyone else!