2. Needs Assessment
- Objective - Create a configurable Gamecube controller mod to allow programmable macros to be executed and stopped on command while still giving the user complete control over actions. This is similar to how tool-assisted actions are performed, but this project has the added bonus of being able to select from multiple macros, as well as give the user normal control by cancelling the macro at any time. This means that the system needs to be able to respond in real-time, with a maximum latency of 8us between poll events.
- Background - I've always wondered what sorts of actions in the game Super Smash Bros could be performed by doing frame perfect inputs. By frame perfect, I am referring to inputting a specific state of a controller at a specific time based on the game's refresh rate. In this case, that is 60Hz. The polling rate of Super Smash Bros is around 125kHz, so this means that inputting a different controller state per frame is possible. By inputting controller states frame perfectly, what sorts of actions would be possible? Smash is a game that is tuned for human actions, not machine actions. Therefore, things such as changing an analog value 60 times a second is perhaps not something humanly possible, and therefore isn't prevented by the game - but doing so could result in massive result differences. Solutions to this online are few, and the ones that do exist are not open-source. Furthermore, they are not anywhere as customizable as required, as they "record" human actions.
- Methodology - This system requires core knowledge of the Gamecube protocol and associated technologies. To that end, this would need to be a cheap project to set up because I am poor and don't have tons of money to shell at projects like some people on YouTube are capable of doing. This restricts my budget to around $15 for new parts that I do not already have. The setup is as follows: The Gamecube controller connects to an Arduino via a logic level converter to step down the Arduino to 3.3V and the Gamecube controller to 5V. The Arduino will intercept commands from the Gamecube controller and then output signals to the Nintendo Switch depending on if it's in normal control mode or macro execution mode.
- Components (which would be part of the final "product")
- Arduino with 16MHz processor
- 5V-3.3V Logic Level Converter
- Gamecube extension cable
- Expected Results - New levels of trolling online with frame-perfect teabagging (also known as Crouch Cancel Walk Cancel Turnaround Cancel Teabagging), frame-perfect mashing, and other impossible combos . Videos of some of the results are at the bottom of this page. None of these macros are tournament legal, however, so it would only be for trolling friends and the occasional online player. The final package would be concealed inside of a Gamecube adapter to both reduce size and conceal the fun.
- Costs - This was mentioned already, but it is worth saying again. The cost is for building the controller mod, which does NOT include the price of the console or game.
- Arduino with 16MHz processor (owned, ~$2 on eBay)
- 5V-3.3V Logic Level Converter (10 ct for $8 on Amazon)
- Extension cables (4ct for $8 on eBay)
- Total = $18 (not great)
3. Problem Formulation
Question Interpretation Is Is not
Who Customers My friends and me People with no sense of humor
What Goals A hidden high-tech way to troll friends A viable way to cheat in tournament
Where Location At home, perhaps in your parents' basement or room At tournaments or competitions
When Time Gamecube controllers are old, but Smash is still relevant Still doesn't exist (at least, not that I could see publicly)
Why Reason Trolling, having fun, and having a good time To spite people, upset them, or get yourself banned
How Process Logic Level converter, Arduino, custom firmware A single software package
4. Solution Development
- Build hardware connections between Gamecube controller, Arduino, and Nintendo Switch
- Program Arduino firmware with macros and menuing system accessible via input combinations on the controller (example Dpad + button)
- Utilize AVR assembler to generate exact timings required
5. Intellectual Properties
- There are no commercial or copyrighted products in this area.
- This project is effectively Open Source.
6. Abstraction and Modeling
- Monitor <----------> Switch <-------> Arduino <------> Logic Level Converter <------> Gamecube Controller <--------> Human or other entity (includes machine)
7. Synthesis
See image at the end of section for hardware construction. Code is available below, too.
8. Ethics and Liability
- Tournament and competition misuse - being open source, people could easily modify the well-written code to be more subtle or help them cheat instead of playing pranks
- I am assume no liability for the use or misuse of this software.
- The software and hardware specifications are distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
9. Failure and Hazards Analysis
- The worst case scenario is that this device fries a Gamecube controller or the Gamecube adapter for the Nintendo Switch. It might cost a bit to replace them, but usage of this device is at the sole risk of the owner of the system. All precautions have been taken to reduce this risk while keeping costs low and preventing human error during construction by keeping the circuit extremely simple.
10. Design Analysis
Goals Weighting Factors Alt 1, External configuration (R) Alt 2, Internal configuration (inside adapter) (R)
Ease of Use 1 0.8 1.0
Configurable 8 1.0 0.8
Cost 10 0.4 0.8
Aesthetics 0 0 1000000000
Decision Factors 12.8 15.4
11. Implementation (see below for videos and pictures)