More actions
No edit summary |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{Infobox Switch Homebrews | {{Infobox Switch Homebrews | ||
|title=Retro Pico Switch | |title=Retro Pico Switch | ||
|image= | |image=retropiconx.png | ||
|description=Play Nintendo Switch Online N64 games using an Original N64 controller via a Raspberry Pi Pico | |description=Play Nintendo Switch Online N64 games using an Original N64 controller via a Raspberry Pi Pico. | ||
|author=DavidPagels | |author=DavidPagels | ||
|lastupdated=2023/04/25 | |lastupdated=2023/04/25 | ||
|type= | |type=Remote Play and Streaming | ||
|version=4.0.0 | |version=4.0.0 | ||
|license=MIT | |license=MIT | ||
|download=https://dlhb.gamebrew.org/switchhomebrews/ | |download=https://dlhb.gamebrew.org/switchhomebrews/retropiconx.7z | ||
|website=https:// | |website=https://www.reddit.com/r/SwitchHacks/comments/12xqml7/lets_get_ready_to_rumble_play_switch_games_using/ | ||
|source=https://github.com/DavidPagels/retro-pico-switch | |source=https://github.com/DavidPagels/retro-pico-switch | ||
|donation= | |donation= | ||
}} | }} | ||
Retro Pico is a homebrew project that uses Raspberry Pi Pico ($4 microcontroller) to allow you to play Nintendo Switch game using button and joystick inputs from an original N64 or Gamecube controller. This is a spiritual successor to the [https://github.com/DavidPagels/n64-arduino-switch N64-Arduino-Switch] project. | |||
==Features== | |||
* | *Connects to a Nintendo Switch via USB or Bluetooth. | ||
* | *Also works with any platform that supports Nintendo Switch Pro controllers. | ||
*Auto-detects whether the controller is N64 or Gamecube. | |||
*Dynamically scales each axis of each analog joystick to account for reduced joystick range on old controllers. | |||
*L+R+Start are mapped to the Switch home button. | |||
*Supports rumble on Gamecube controllers and N64 controllers with Rumble Paks. | |||
== | ==User guide== | ||
If you want to program the Raspberry Pi Pico, follow these steps: | If you want to program the Raspberry Pi Pico, follow these steps: | ||
* Press and hold the boot sel button on the Pico. | |||
* While holding the button, connect the Pico to your PC using a Micro USB cable. | |||
* Open the Pico in your File Explorer. | |||
* Go to the most recent release of [https://github.com/davidpagels/retro-pico-switch/releases this repository] and download the .uf2 file. | |||
* Drag and drop the .uf2 file into the Pico folder you opened in step 3. | |||
* You're done. | |||
After completing these steps, [https://github.com/pothos/arduino-n64-controller-library/blob/master/README.md#wireing connect your N64] or [https://simplecontrollers.com/blogs/resources/gamecube-protocol Gamecube controller]. Note that the pre-built .uf2 file assumes the data pin is on [https://datasheets.raspberrypi.com/pico/Pico-R3-A4-Pinout.pdf GP18 pin] of the Pico. To ensure proper functionality, wire a 1k pullup resistor between the 3.3v and the data pin. | After completing these steps, [https://github.com/pothos/arduino-n64-controller-library/blob/master/README.md#wireing connect your N64] or [https://simplecontrollers.com/blogs/resources/gamecube-protocol Gamecube controller]. Note that the pre-built .uf2 file assumes the data pin is on [https://datasheets.raspberrypi.com/pico/Pico-R3-A4-Pinout.pdf GP18 pin] of the Pico. To ensure proper functionality, wire a 1k pullup resistor between the 3.3v and the data pin. | ||
===Bluetooth=== | |||
The current version requires you to connect to a Switch in the "Change Grip/Order" menu. If the Pico becomes disconnected, it may also have to be power cycled to get it to pair with the Switch again. Also, while the Pico wirelessly connects to the Switch, it will still need to be powered via USB (any USB port - a battery bank should work). | |||
==Screenshots== | |||
https://dlhb.gamebrew.org/switchhomebrews/retropiconx2.png | |||
==Changelog== | ==Changelog== | ||
'''v4.0.0''' | '''v4.0.0 2023/04/25''' | ||
* This release adds rumble support for N64 controllers with Rumble Paks and Gamecube controllers | * This release adds rumble support for N64 controllers with Rumble Paks and Gamecube controllers. | ||
* It also now auto-detects whether the plugged in controller is an N64 controller or Gamecube controller. | * It also now auto-detects whether the plugged in controller is an N64 controller or Gamecube controller. | ||
* Important note: This release/.uf2 assumes the data pin for the N64 or Gamecube controller is being wired to GP18 on the Raspberry Pi Pico. | |||
'''v3.0.0''' | '''v3.0.0 2023/04/05''' | ||
* This release adds support for connecting to a Nintendo Switch over Bluetooth | * This release adds support for connecting to a Nintendo Switch over Bluetooth. | ||
* It also fixes an occasional issue with the PIO program readings being off by 1 bit ([https://github.com/DavidPagels/retro-pico-switch/issues/5 #5]), which also ended up messing up the logic for scaling analog joystick inputs. | * It also fixes an occasional issue with the PIO program readings being off by 1 bit ([https://github.com/DavidPagels/retro-pico-switch/issues/5 #5]), which also ended up messing up the logic for scaling analog joystick inputs. | ||
'''v2.0.0''' | '''v2.0.0 2023/02/10''' | ||
This release adds support for Gamecube controllers with 2 different mapping options. | * This release adds support for Gamecube controllers with 2 different mapping options. | ||
* gc.uf2 maps the Gamecube controller buttons to the Switch's 1-to-1 | ** gc.uf2 maps the Gamecube controller buttons to the Switch's 1-to-1. | ||
* gc_sms.uf2 maps the Gamecube controller buttons so that the Super Mario 3D All-Stars: Super Mario Sunshine port will control as close as possible on the Switch as it does on the Gamecube. | ** gc_sms.uf2 maps the Gamecube controller buttons so that the Super Mario 3D All-Stars: Super Mario Sunshine port will control as close as possible on the Switch as it does on the Gamecube. | ||
The n64.uf2 should control the same as it did in v1.0.0 | * The n64.uf2 should control the same as it did in v1.0.0. | ||
'''v1.0.0''' | '''v1.0.0 2023/01/31''' | ||
*This initial release includes a PIO interface to the N64 controller data pin, tinyusb descriptors and callbacks to handle communicating with a Nintendo Switch via USB cable, and the glue code needed to translate and interface the two. | *This initial release includes a PIO interface to the N64 controller data pin, tinyusb descriptors and callbacks to handle communicating with a Nintendo Switch via USB cable, and the glue code needed to translate and interface the two. | ||
==Credits== | |||
This project would have taken a lot longer without the work done by everyone credited in the original [https://github.com/DavidPagels/n64-arduino-switch N64-Arduino-Switch project] along with the creators and contributors of [https://github.com/hathach/tinyusb TinyUsb], the [https://github.com/OpenStickCommunity/GP2040-CE GP2040-CE] project, and the [https://github.com/OpenStickCommunity/MPG MPG] project. Figuring out how to interface via Bluetooth also took me 1.5 months of work in my off time and would have taken even longer without the work done by Brikwerk on the [https://github.com/Brikwerk/nxbt nxbt] project. If you're into developing this sort of stuff, definitely check their stuff out. | |||
== External links == | == External links == | ||
* | * GitHub - https://github.com/DavidPagels/retro-pico-switch | ||
* | * GBAtemp - https://gbatemp.net/threads/building-this-neat-n64-switch-adapter.631631/ | ||
* Reddit - https://www.reddit.com/r/SwitchHacks/comments/12xqml7/lets_get_ready_to_rumble_play_switch_games_using/ | |||
* Reddit - https://www.reddit.com/r/NintendoSwitch/comments/12bvxw4/use_your_original_n64_or_gamecube_controller_as_a/ |
Latest revision as of 11:39, 20 Haziran 2023
Retro Pico Switch | |
---|---|
General | |
Author | DavidPagels |
Type | Remote Play and Streaming |
Version | 4.0.0 |
License | MIT License |
Last Updated | 2023/04/25 |
Links | |
Download | |
Website | |
Source | |
Retro Pico is a homebrew project that uses Raspberry Pi Pico ($4 microcontroller) to allow you to play Nintendo Switch game using button and joystick inputs from an original N64 or Gamecube controller. This is a spiritual successor to the N64-Arduino-Switch project.
Features
- Connects to a Nintendo Switch via USB or Bluetooth.
- Also works with any platform that supports Nintendo Switch Pro controllers.
- Auto-detects whether the controller is N64 or Gamecube.
- Dynamically scales each axis of each analog joystick to account for reduced joystick range on old controllers.
- L+R+Start are mapped to the Switch home button.
- Supports rumble on Gamecube controllers and N64 controllers with Rumble Paks.
User guide
If you want to program the Raspberry Pi Pico, follow these steps:
- Press and hold the boot sel button on the Pico.
- While holding the button, connect the Pico to your PC using a Micro USB cable.
- Open the Pico in your File Explorer.
- Go to the most recent release of this repository and download the .uf2 file.
- Drag and drop the .uf2 file into the Pico folder you opened in step 3.
- You're done.
After completing these steps, connect your N64 or Gamecube controller. Note that the pre-built .uf2 file assumes the data pin is on GP18 pin of the Pico. To ensure proper functionality, wire a 1k pullup resistor between the 3.3v and the data pin.
Bluetooth
The current version requires you to connect to a Switch in the "Change Grip/Order" menu. If the Pico becomes disconnected, it may also have to be power cycled to get it to pair with the Switch again. Also, while the Pico wirelessly connects to the Switch, it will still need to be powered via USB (any USB port - a battery bank should work).
Screenshots
Changelog
v4.0.0 2023/04/25
- This release adds rumble support for N64 controllers with Rumble Paks and Gamecube controllers.
- It also now auto-detects whether the plugged in controller is an N64 controller or Gamecube controller.
- Important note: This release/.uf2 assumes the data pin for the N64 or Gamecube controller is being wired to GP18 on the Raspberry Pi Pico.
v3.0.0 2023/04/05
- This release adds support for connecting to a Nintendo Switch over Bluetooth.
- It also fixes an occasional issue with the PIO program readings being off by 1 bit (#5), which also ended up messing up the logic for scaling analog joystick inputs.
v2.0.0 2023/02/10
- This release adds support for Gamecube controllers with 2 different mapping options.
- gc.uf2 maps the Gamecube controller buttons to the Switch's 1-to-1.
- gc_sms.uf2 maps the Gamecube controller buttons so that the Super Mario 3D All-Stars: Super Mario Sunshine port will control as close as possible on the Switch as it does on the Gamecube.
- The n64.uf2 should control the same as it did in v1.0.0.
v1.0.0 2023/01/31
- This initial release includes a PIO interface to the N64 controller data pin, tinyusb descriptors and callbacks to handle communicating with a Nintendo Switch via USB cable, and the glue code needed to translate and interface the two.
Credits
This project would have taken a lot longer without the work done by everyone credited in the original N64-Arduino-Switch project along with the creators and contributors of TinyUsb, the GP2040-CE project, and the MPG project. Figuring out how to interface via Bluetooth also took me 1.5 months of work in my off time and would have taken even longer without the work done by Brikwerk on the nxbt project. If you're into developing this sort of stuff, definitely check their stuff out.
External links
- GitHub - https://github.com/DavidPagels/retro-pico-switch
- GBAtemp - https://gbatemp.net/threads/building-this-neat-n64-switch-adapter.631631/
- Reddit - https://www.reddit.com/r/SwitchHacks/comments/12xqml7/lets_get_ready_to_rumble_play_switch_games_using/
- Reddit - https://www.reddit.com/r/NintendoSwitch/comments/12bvxw4/use_your_original_n64_or_gamecube_controller_as_a/