All Projects → wiiuse → Wiiuse

wiiuse / Wiiuse

Licence: gpl-3.0
WiiUse "feature complete" cross-platform Wii Remote access library

Labels

Projects that are alternatives of or similar to Wiiuse

Polymcu
An open framework for micro-controller software
Stars: ✭ 173 (-11.73%)
Mutual labels:  cmake
Qt Android Cmake
A simple CMake utility for building and deploying Qt based applications on Android without QtCreator
Stars: ✭ 185 (-5.61%)
Mutual labels:  cmake
Ck Caffe
Collective Knowledge workflow for Caffe to automate installation across diverse platforms and to collaboratively evaluate and optimize Caffe-based workloads across diverse hardware, software and data sets (compilers, libraries, tools, models, inputs):
Stars: ✭ 192 (-2.04%)
Mutual labels:  cmake
Moderncmake
Samples for Learning Modern CMake
Stars: ✭ 177 (-9.69%)
Mutual labels:  cmake
Argagg
A simple C++11 command line argument parser
Stars: ✭ 180 (-8.16%)
Mutual labels:  cmake
Ucm
Useful cmake macros that help with: compiler/linker flags, collecting sources, PCHs, Unity builds and other stuff.
Stars: ✭ 186 (-5.1%)
Mutual labels:  cmake
Webp Hero
browser polyfill for the webp image format
Stars: ✭ 171 (-12.76%)
Mutual labels:  cmake
Diagon
Interactive ASCII art diagram generators. 🌟
Stars: ✭ 189 (-3.57%)
Mutual labels:  cmake
Ctml
A C++ HTML document constructor only depending on the standard library.
Stars: ✭ 180 (-8.16%)
Mutual labels:  cmake
Segs
💪 SEGS - Super Entity Game Server
Stars: ✭ 190 (-3.06%)
Mutual labels:  cmake
Rawspeed
fast raw decoding library
Stars: ✭ 179 (-8.67%)
Mutual labels:  cmake
Magnum Examples
Examples for the Magnum C++11/C++14 graphics engine
Stars: ✭ 180 (-8.16%)
Mutual labels:  cmake
Imguizmo.quat
ImGui GIZMO widget - 3D object manipulator / orientator
Stars: ✭ 187 (-4.59%)
Mutual labels:  cmake
Anms Codes
Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution
Stars: ✭ 174 (-11.22%)
Mutual labels:  cmake
Obs Studio Node
libOBS (OBS Studio) for Node.Js, Electron and similar tools
Stars: ✭ 193 (-1.53%)
Mutual labels:  cmake
Evabs
An open source Android application that is intentionally vulnerable so as to act as a learning platform for Android application security beginners.
Stars: ✭ 173 (-11.73%)
Mutual labels:  cmake
Hge
HGE 1.9 configured with CMake DirectX9 version, with shaders. The classic 1.8.1. version is in the `master` branch if you ever need that.
Stars: ✭ 185 (-5.61%)
Mutual labels:  cmake
Pothossdr
Pothos SDR windows development environment
Stars: ✭ 193 (-1.53%)
Mutual labels:  cmake
Gazebo ros demos
Example robots and code for interfacing Gazebo with ROS
Stars: ✭ 192 (-2.04%)
Mutual labels:  cmake
Ojdkbuild
Note: official OpenJDK organization on GitHub is here: https://github.com/openjdk
Stars: ✭ 2,331 (+1089.29%)
Mutual labels:  cmake

WiiUse README

Semi-Official Fork, located at http://github.com/wiiuse/wiiuse

Issue/bug tracker: https://github.com/wiiuse/wiiuse/issues

Mailing list: [email protected] - just email to subscribe. See http://librelist.com/browser/wiiuse/ for archives and http://librelist.com/ for more information.

Changelog: https://github.com/wiiuse/wiiuse/blob/master/CHANGELOG.mkd

Build Status

NOTE: This library sees little change not because it is dead, but because it is effectively "complete". That being said, if you think there are changes that it could use, and are willing to step up to assist with maintenance, please file an issue.

About

Wiiuse is a library written in C that connects with several Nintendo Wii remotes. Supports motion sensing, IR tracking, nunchuk, classic controller, Balance Board, and the Guitar Hero 3 controller. Single threaded and nonblocking makes a light weight and clean API.

Distributed under the GPL 3+.

This is a friendly fork, prompted by apparent non-maintained status of upstream project but proliferation of ad-hoc forks without project infrastructure. Balance board support has been merged from TU-Delft cross-referenced with other similar implementations in embedded forks of WiiUse in other applications. Additional community contributions have since been merged. Hopefully GitHub will help the community maintain this project more seamlessly now.

Patches and improvements are greatly appreciated - the easiest way to submit them is to fork the repository on GitHub and make the changes, then submit a pull request. The "fork and edit this file" button on the web interface should make this even simpler.

Authors

Mostly-absentee (but delegating!) Fork Maintainer: Ryan Pavlik [email protected] or [email protected]

Original Author: Michael Laforest < para > < thepara (--AT--) g m a i l [--DOT--] com >

Additional Contributors:

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Audience

This project is intended for developers who wish to include support for the Nintendo Wii remote with their third party application.

Supported Hardware

Official Nintendo controllers:

  • Wiimotes:

    • Gen 1.0 - Original Wiimote without Motion Plus (Bluetooth name: RVL-CNT-01)
    • Gen 1.5 - Same as gen 1 but has integrated Motion Plus (Bluetooth name: RVL-CNT-01)
    • Gen 2.0 - New Wiimote (since about 2011), has integrated Motion Plus and different firmware (Bluetooth name: RVL-CNT-01-TR)
  • Wii Balance Board (Bluetooth name: RVL-WBC-01)

  • Expansions:

    • Nunchuk
    • Classic controller
    • Guitar controller
    • Motion Plus dongle (for the gen 1 Wiimote)

Clones and 3rdparty devices

3rdparty controllers (wiimotes, nunchuks etc.) may or may not work - some manufacturers take major liberties with the protocols so it is impossible to guarantee functionality. However, most will probably just work.

Platforms and Dependencies

Wiiuse currently operates on Linux, Windows and Mac. You will need:

For Linux

  • The kernel must support Bluetooth
  • The BlueZ Bluetooth drivers must be installed
  • If compiling, you'll need the BlueZ dev files (Debian/Ubuntu package libbluetooth-dev)

For Windows

  • Bluetooth driver (tested with Microsoft's stack with Windows XP SP2 thru Windows 10)

For Mac

  • Mac OS X 10.2 or newer (to have the Mac OS X Bluetooth protocol stack)

For all platforms

  • If compiling, CMake is needed to generate a makefile/project

Compiling

You need SDL and OpenGL installed to compile the (optional) SDL example.

Linux & Mac

mkdir build
cd build
cmake .. [-DCMAKE_INSTALL_PREFIX=/usr/local] [-DCMAKE_BUILD_TYPE=Release] [-DBUILD_EXAMPLE_SDL=NO]

OR

cmake-gui ..
make [target]

If target is omitted then everything is compiled.

Where target can be any of the following:

  • wiiuse - Compiles libwiiuse.so
  • wiiuseexample - Compiles wiiuse-example
  • wiiuseexample-sdl - Compiles wiiuse-sdl
  • doc - Generates doxygen-based API documentation in HTML and PDF format in docs-generated

For a system-wide install, become root (or run with sudo) and:

make install
  • libwiiuse.so is installed to CMAKE_INSTALL_PREFIX/lib
  • wiiuse-example and wiiuse-sdl are installed to CMAKE_INSTALL_PREFIX/bin

Windows

The CMake GUI can be used to generate a Visual Studio solution.

You may need to install the Windows SDK (in recent versions) or DDK (driver development kit - for old Windows SDK only) to compile wiiuse.

With Visual Studio Community 2017, this is very easy to build now: if you have chosen to install the "desktop C++" tools, you'll automatically have what you need.

Using the Library

To use the library in your own program you must first compile wiiuse as a module. Include include/wiiuse.h in any file that uses wiiuse.

For Linux you must link libwiiuse.so ( -lwiiuse ). For Windows you must link wiiuse.lib. When your program runs it will need wiiuse.dll.

Known Issues

On Windows using more than one wiimote (usually more than two wiimotes) may cause significant latency.

If you are going to use Motion+, make sure to call wiiuse_poll or wiiuse_update in a loop for some 10-15 seconds before enabling it. Ideally you should be checking the status of any expansion (nunchuk) you may have connected as well. Otherwise the extra expansion may not initialize correctly - the initialization and calibration takes some time.

Mac OS X

Wiiuse can only connect to a device if it is in discoverable mode. Enable discoverable mode by pressing the button on the inside of the battery cover.

Wiiuse may not be able to connect to the device if it has been paired to the operating system. Unpair it by opening Bluetooth Preferences (Apple > System Preferences > Bluetooth), selecting the device (e.g., "Nintendo RVL-CNT-01"), and pressing the X next to the device (alternatively: right-click and select "Remove"). It is not enough to simply disconnect it.

Enable discoverable mode and try again.

Acknowledgements by Michael Laforest (Original Author)

http://wiibrew.org/

This site and their users have contributed an immense amount of information about the wiimote and its technical details. I could not have written this program without the vast amounts of reverse engineered information that was researched by them.

Nintendo

Of course Nintendo for designing and manufacturing the Wii and Wii remote.

BlueZ

Easy and intuitive Bluetooth stack for Linux.

Thanks to Brent for letting me borrow his Guitar Hero 3 controller.

Known Forks/Derivative Versions

The last "old upstream" version of WiiUse was 0.12. A number of projects forked or embedded that version or earlier, making their own improvements. A (probably incomplete) list follows, split between those whose improvements are completed integrated into this new mainline version, and those whose improvements have not yet been ported/merged into this version. An eventual goal is to integrate all appropriate improvements (under the GPL 3+) back into this mainline community-maintained "master fork" - contributions are greatly appreciated.

Forks that have been fully integrated

Forks not yet fully integrated

Other Links

Original project (0.12 and earlier):

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].