Skip to content

hunterirving/pico-crossing

Repository files navigation

pico-crossing

What if the GameCube Keyboard Controller worked with Animal Crossing...?

It started out as a "quick, simple project", then quickly turned into seven quick simple projects.

Demonstration video (on YouTube)

Hacking Animal Crossing Beyond Reason

Typing at the speed of TAS

Typing in Animal Crossing (GCN) is painfully slow.

Or, at least.. it was. Not anymore.

Typing using the GameCube Keyboard Controller

Pro Gamer WPM (unassisted): ~20
Tool-assisted WPM: ~45

Custom Keycaps

Viewing custom keycaps in FreeCAD, printing them on a 3D printer, and displaying them on the ASCII GameCube Keyboard Controller

Compose digital diary entries in style with this set of 81 custom, 3D printed keycaps that map perfectly to Animal Crossing's in-game character set.

See the separate pico-crossing-keycaps repository for FreeCAD project files and OBJ exports.

Infinite Playlist

Inputting town tunes at TAS speed

Cycle through your favorite Town Tunes without having to futz about with e-Reader cards.

All Items Unlocked

Automated entry of Nook Codes to receive in-game items

Type the name of (almost) any item, and this little raccoon-looking guy will give it to you for free.

Usage: press Shift + Alt + 🗝️, then type the name of any compatible item

Put any Image in the Game

Inputting The Mona Lisa into Animal Crossing's pattern editor in ~3 minutes

Convert any image to display in Animal Crossing's pattern editor. The script automatically sets up a Python environment and handles all dependencies.

Basic usage:

./convert_image.sh monalisa.jpg

See image_tools/README.md for advanced usage.

Put any Video in the Game (if you're patient)

You just got Rickrolled... in Animal Crossing

Convert videos to animated sequences in Animal Crossing (requires ffmpeg for video processing).

Basic usage:

./convert_video.sh rickroll.mp4

See image_tools/README.md for advanced usage.

A Playable Version of Snake... in Animal Crossing!?

It's more likely than you'd think.

Playing Snake in Animal Crossing's pattern editor

Usage: press the S key while a design (image or video) is being entered.

Building the Hardware

You'll need:

  • a Raspberry Pi Pico (or Pi Pico W)
  • two GameCube controller extension cables
  • two 1k Ω resistors (1/4W or higher)
  • one 1N5817 Schottky diode (protects GameCube from USB 5V backfeeding during flashing/debugging)

Assembly:

  1. Cut both extension cables and strip back the outer sleeve to reveal the 5 inner wires. You'll need two female plugs and one male plug.
  2. Important: Verify your extension cable pinouts before soldering! The colors in the provided schematic correspond to the "High Quality" labeled cables I used, but colors may vary between manufacturers or even batches.
  3. Solder the components to the Pi according to the schematic:
    • Install the Schottky diode between the male plug's 5V line and the Pi's VSYS pin (cathode toward VSYS), then connect the 5V line from the male plug directly to the 5V lines on both of the female plugs.
    • Install pull-up resistors connecting the Pi's 3.3V supply to GPIO 3 and GPIO 4 on the Pi.
    • Connect the 3.3V line from the male plug directly to the 3.3v lines on both of the female plugs (without connecting it to the Pi).
    • Connect GND(POW) from the male plug to PIN 38 on the Pi and the GND(POW) lines on both of the female plugs.
    • Connect GND(SIG) from the male plug to PIN 3 on the Pi and the GND(SIG) lines on both of the female plugs.
    • Connect the DATA line from the male plug to GPIO 2 on the Pi. Connect the DATA lines from the female plugs to GPIO3 and GPIO4 on the Pi.

Prerequisites

System Dependencies

  • Python 3 - Required for image/video conversion tools
  • ffmpeg - Required for video conversion (brew install ffmpeg on macOS)
  • picotool - Required for flashing firmware to Pico
  • Raspberry Pi Pico SDK - Set up according to official documentation

Installing picotool

macOS:

brew install picotool

Ubuntu/Debian:

sudo apt install picotool

Building the Software

This project includes several build scripts for different workflows:

Quick Build, Flash, and Monitor

For the fastest development cycle:

./buildflashmonitor.sh

This script runs build → flash → monitor in sequence. Great for testing changes.

Individual Build Scripts

Build only:

./build.sh

Cleans and builds the project, generating the .uf2 firmware file.

Flash only:

./flash.sh

Attempts to force the Pico into BOOTSEL mode and flash the firmware (no need to manually hold the BOOTSEL button).

Monitor serial output:

./monitor.sh

Opens a serial connection to view debug output from the Pico.

Manual Flashing Fallback

If the automatic flashing fails:

  1. Hold the BOOTSEL button while plugging in your Pico
  2. Copy the generated .uf2 file from the build/ directory to the RPI-RP2 volume

Licenses and Acknowledgements

This project incorporates code from the following open source repositories:

From pico-joybus-comms (GPLv3):

  • joybus.hpp - GameCube controller communication interface (used directly)
  • joybus.pio - PIO program for GameCube Joybus protocol (used directly)
  • joybus.cpp - Joybus communication implementation (adapted with modifications)
  • gcReport.hpp - GameCube controller report structure (used directly)

From retro-pico-switch (MIT):

  • controller.pio - PIO program for reading controller input (used directly)

From Raspberry Pi Pico SDK (BSD 3-Clause):

  • Core SDK libraries and build system
  • pico_sdk_import.cmake - SDK integration helper

Other Sources

The Nook Codes defined in nookCodes.hpp are sourced from Nookipedia's Animal Crossing (GCN) Data Spreadsheet (except the code for the Froggy Chair, which I generated using Nookipedia's Secret Code Generator).

License

This project is licensed under GPLv3, which ensures compatibility with all incorporated dependencies.

Disclaimer

If you work for Nintendo, Please Understand:
No emulation was used in the making of this project, and no game binaries were distributed or modified in the slightest. All footage was captured on unmodified hardware running unmodified, authentic software.

About

hack Animal X-ing with a Pi Pico and a GameCube Keyboard Controller

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •