Giter Club home page Giter Club logo

shinewave's Introduction

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 [email protected]: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

  • Assemble the board and connect your ISP programmer
  • Update the $(PROGRAMMER) variable in /bootloader/firmware/Makefile to reflect your USB programmer
  • Flash the micronucleus fuses
  • Compile and burn the micronucleus bootloader
  • Install the micronucleus command-line client
  • Compile the Shinewave project and run the micronucleus uploader
  • Connect your circuit to USB

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

Original post

  • Added schematics and layout
  • Added USB joystick functionality
  • Added micronucleus bootloader
  • Removed protothread dependency
  • Changed from the ATtiny85 to the ATtiny84
  • Reduced running voltage from 5V to 3.3V and clock speed from 16MHz to 12MHz
  • Added a variable delay to fix compatibility with nonstandard messaging speeds.
  • Fixed up Makefile and documentation.

Video

Original post

Programming guide

Signal reading overview

Featured on Hackaday

Featured on Kotaku

  • Initial release
  • Reactive LED mod
  • Hard-coded Falco animations, using the protothread library

shinewave's People

Contributors

serisium avatar ggreenwood avatar michaelmoskie avatar

Watchers

Siana Gearz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.