Skip to content

Nintendo Switch controller emulator that allows for serial input to control the Switch. Emulates a HORIPAD Wired Controller.

Notifications You must be signed in to change notification settings

wchill/SwitchInputEmulator

Repository files navigation

Switch-Fightstick

Proof-of-Concept Fightstick for the Nintendo Switch. Uses the LUFA library and reverse-engineering of the Pokken Tournament Pro Pad for the Wii U to enable custom fightsticks on the Switch System v3.0.0.

Wait, what?

On June 20, 2017, Nintendo released System Update v3.0.0 for the Nintendo Switch. Along with a number of additional features that were advertised or noted in the changelog, additional hidden features were added. One of those features allows for the use of compatible controllers, such as the Pokken Tournament Pro Pad, to be used on the Nintendo Switch.

Unlike the Wii U, which handles these controllers on a 'per-game' basis, the Switch treats the Pokken controller as if it was a Switch Pro Controller. Along with having the icon for the Pro Controller, it functions just like it in terms of using it in other games, apart from the lack of physical controls such as analog sticks, the buttons for the stick clicks, or other system buttons such as Home or Capture.

Printing Splatoon Posts

For my own personal use, I repurposed Switch-Fightstick to output a set sequence of inputs to systematically print Splatoon posts. This works by using the smallest size pen and D-pad inputs to plot out each pixel one-by-one.

Printing Procedure

Use the analog stick to bring the cursor to the top-right corner, then press the D-pad down once to make sure the cursor is at y-position 0 instead of y-position -1. Then plug in the controller. Currently there are issues with controller conflicts while in docked mode which are avoided by using a USB-C to USB-A adapter in handheld mode. Printing currently takes about an hour.

Compiling and Flashing onto the Teensy 2.0++

Go to the Teensy website and download/install the Teensy Loader application. Then, follow their instructions on installing the GCC Compiler and Tools. (Note for Mac users - the AVR MacPack is now called AVR CrossPack. If that does not work, you can try installing avr-gcc with brew.) Next, you need to grab the LUFA library. You can download it in a zipped folder at the bottom of this page. Unzip the folder and place it where you like. Then, download or clone the contents of this repository onto your computer. Next, you'll need to make sure the LUFA_PATH inside of the makefile points to the directory where your LUFA directory is. My Switch-Fightstick folder is in the same folder as my LUFA folder, so I set LUFA_PATH = ../LUFA. Now you should be ready to rock. Open a terminal window in the Switch-Fightstick directory, type make, and hit enter to compile. If all goes well, the printout in the terminal will let you know it finished the build! Follow the directions on flashing Joystick.hex onto your Teensy, which can be found page where you downloaded the Teensy Loader application.

Using your own image

The image printed depends on image.c which is generated with png2c.py which takes a 320x120 .png image. png2c.py will pack the image to a linear 1bpp array. If the image is not already made up of only black and white pixels, it will be dithered. Here is an example of the dithering:

Before dithering

http://i.imgur.com/O4uQWKk.png

After dithering

http://i.imgur.com/oiPh4KK.png

images via vjapolitzer

In order to run png2c.py, you need to install Python (I use Python 2.7). Also, you need to have the Python Imaging Library installed (install pip if you need to). Using the supplied sample image, splatoonpattern.png:

$ python png2c.py splatoonpattern.png

Substitute your own .png image to generate the image.c file necessary to print. Just make sure your image is in the Switch-Fightstick directory.

Each line is printed from right to left in order to avoid pixel skipping issues. Currently there are also issues printing to the right and bottom edges. This repository has been tested using a Teensy 2.0++.

Sample

http://i.imgur.com/93B1Usb.jpg image via /u/Stofers

About

Nintendo Switch controller emulator that allows for serial input to control the Switch. Emulates a HORIPAD Wired Controller.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •