Coder Social home page Coder Social logo

vincbeaulieu / gamecube-ble-adaptor Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 31 KB

Bluetooth adaptor for your GameCube. An external adaptor that will allow you to connect a bluetooth controller to the NGC socket of your Gamecube or Wii and enjoy the freedom of wireless.

C++ 100.00%

gamecube-ble-adaptor's Introduction

GameCube-BLE-adaptor

The Bluetooth adaptor you've always dreamed for your GameCube. An external adaptor that will allow you to connect a bluetooth controller to the NGC socket of your GameCube (or Wii), and enjoy the freedom of wireless.

-- If you are looking for this solution, the BlueRetro github one of the place you'll find many answers: https://github.com/darthcloud/BlueRetro --

The code regarding the communication protocol of the GameCube controller has been reverse engineered and is available online [1][2][3]. The existing code was developed to convert a standard wired GameCube controller into a bluetooth one [4]. However, this mod only works for bluetooth compatible devices, rendering the new modded controller incompatible with the GameCube or Wii consoles.

This project will be towards the development of a Bluetooth receiver for the NGC port of the GameCube and Wii consoles. Allowing bluetooth controller such as the "PowerA Bluetooth Controller for the Nintendo Switch - GameCube Style" to be compatible with these old consoles [5].

Discussion

From the documentation, the Data pin of the NGC controller is active high 3.3V, but does not have an internal pull-up resistor [2]. Therefore, we can use a 2.2K resistor that bridge between the 3.3V rail and the Data pin [6]. This in turn will be connected to the Arduino, which will sink the signal whenever a 'low' bit is required to be sent. The communication is initiated by the console to the controller with a 24-bit string, to which the controller reply with a 64-bit string containing button state and joystick data, at a rate of 3.95us per bit, thus a minimal sampling frequency of 0.507 MHz to avoid aliasing [2]. Therefore, a standard arduino will be enought (16 MHz).

"A 'Low' bit is signalled by a 3us 'Low' followed by 1us 'High'"
"A 'High' bit is signalled by 1us 'Low' followed by 3us 'High'"
Each strings of data is terminated with a single 'High' at the stop bit

ref: [2]

This communication protocole is already available as an Arduino library [3].

  • NOTE *
    While looking into the available library on the Arduino library manager, the library N64PadForArduino showed.
    This library provide much more details regarding the use of the library compare to the 'nintendo' library from NicoHood. As a downside, this library does not provide support for the rubble. However, since the goal of this project is to emulate a NGC controller using a Arduino-like mcu, and to use a bluetooth controller to communicate with this mcu, the objective is thus to inverse the communication protocole provided by these library.

Abbreviations

NGC : Nintendo GameCube

References

[1] https://simplecontrollers.bigcartel.com/gamecube-protocol
[2] http://www.int03.co.uk/crema/hardware/gamecube/gc-control.html
[3] https://www.arduino.cc/reference/en/libraries/nintendo/
[4] https://github.com/NathanReeves/BlueCubeMod
[5] https://www.amazon.ca/PowerA-Wireless-Controller-Nintendo-Switch/dp/B07GXLBCC3
[6] https://github.com/SukkoPera/N64PadForArduino

  • Todo *
    Reorder the references across the whole text.

gamecube-ble-adaptor's People

Contributors

vincbeaulieu avatar

Stargazers

 avatar

Watchers

 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.