Serisium / Shinewave

Passthrough signal decoder and LED visualizer for use in Gamecube Controller mods
MIT License
39 stars 11 forks source link

Overview

Shinewave is a mod for the Nintendo GameCube controller that adds USB joystick functionality, along with LED lighting.

Controller

Installation & Usage

Shinewave has been written on a Linux system and requires the full avr-gcc toolchain to make.

In Debian, the toolchain can be set up with the following command.

sudo apt-get install gcc-avr avr-libc avrdude

In Arch, the toolchain can be set up with the following command.

sudo pacman -S avr-gcc avr-libc avrdude

Then, download the repository to your local machine

git clone git@github.com:GGreenwood/Shinewave.git
cd Shinewave
git checkout v0.2-usb

There are two ways to install my program onto your ATtiny84: through the micronucleus bootloader, or directly through ISP. I recommend setting up the bootloader since it'll let you reprogram the board without needed to disassemble the controller.

Since the GameCube controller's signal line is connected to one of the ISP programming pins, you must disconnect the controller before programming. This is handled by removing the onboard jumper.

Bootloader programming

Once you have the project downloaded, you'll need to do the following steps

The commands to do the above are as follows:

# ./Shinewave
cd bootloader/firmware/
# update the PROGRAMMER setting
vim Makefile
# set the fuses and burn the bootloader
make fuse
make flash
# set up the command-line programmer
cd ../commandline/
make
sudo make install
sudo cp 49-micronucleus.rules /etc/udev/rules.d/
# Compile and flash Shinewave
cd ../firmware/
make microflash

Direct programming

This approach is for flashing Shinewave to the board directly, as opposed to through a bootloader. Just like setting up the bootloader, you need an ISP programmer connected to the circuit. However, you'll need to use the ISP programmer every time you want to change the code, not just the first time

# ./Shinewave
cd firmware/
make fuse
make flash

Dependencies

This project depends on several libraries, which are listed below.

Special thanks also go to JustANull for C help and Code and Life for having so many amazing V-USB tutorials.

Schematics and Board

The schematics and layout for this project were done in EAGLE. The source files are located in the /circuit folder, and exported images of the output are available below, or in /images.

Schematics Board

Changelog

v0.2

Original post

v0.1.1

v0.1

Video

Original post

Programming guide

Signal reading overview

Featured on Hackaday

Featured on Kotaku