WIT, the Wii Interface Toolkit, is an event-driven C++-based development toolkit intended for Wii software development.
The intent of WIT is to encapsulate most of the mundane details of the Wii platform behind a consistent programming interface while remaining relatively lightweight. The Wii Remote and Nunchuk, the Classic Controller, and GameCube controllers are all managed through the same event system, allowing all forms of input to be handled consistently without requiring the developer to write separate code for each controller type. The Guitar Hero 3 and Balance Board accessories are also supported. WIT's design is inclusive, allowing the developer to use native API calls and third-party libraries without restriction or interference.
A secondary goal is to be the most thoroughly documented homebrew library available. Every constant, function, and class exposed by the WIT API is fully documented.
The current implementation of WIT is based on libOGC, but the toolkit API is backend-independent and should be readily portable to the official WiiWare SDK; likewise, a desktop-based Wii simulator using native graphics and input backends (perhaps through wiiuse or simulating the Wii Remote with a mouse) would be possible.
Download the binary package and copy the contents of the include/ and lib/ directories to the usual places in your devkitPro installation.
HTML documentation is included in the binary package, in the doc/html/ directory.
Compiling WIT is simply a matter of invoking make.
After WIT is compiled, you may invoke make install to copy the files into your devkitPro installation.
You may also invoke make docs to generate the HTML documentation. Building the documentation requires Doxygen.
Adding WIT to your application is simply a matter of adding -lwit to the LIBS line of your Makefile. WIT also includes a sample application template in examples/template/, which contains a stub source file and a Makefile suitable for building against the installed version of WIT.
Other examples of WIT usage are included in the examples/ directory.
Features and Future Development
The current (r46) version of WIT has been tested with the buttons and IR sensor on the Wii Remote. In theory, the motion sensors of the Wii Remote and Nunchuk should work, as well as the joysticks, digital buttons, and analog buttons of the Nunchuk, Classic Controller, and Guitar Hero 3 controller; these have not been tested yet. Support for the Balance Board is pending.
WIT will eventually provide support for FAT filesystems via libELM. Developers are free to use libELM or libFAT; code written using these filesystem libraries will continue to work after WIT integrates support.
WIT will also eventually provide support for reading CDs and DVDs via libiso9660; likewise, code written against libiso9660 now will continue to work after WIT integrates support. WIT may also eventually provide support for embedded resources. When support for filesystems is implemented, all filesystems will be accessed through the same API, allowing developers to write code that supports reading from any supported source.
WIT currently provides no support for decoding image files or drawing them on the screen. Support for drawing images will eventually be implemented. WIT will not provide built-in support for decoding image files, but developers are free to use libjpeg, libpng, or other libraries for decoding.
WIT currently provides only a simple text console with a number of limitations. (These are the same limitations as text console offered by libOGC.) Support for variable-width bitmap fonts is upcoming; for efficiency, WIT will have a special file format for these fonts. A tool for converting TrueType fonts to this format may be provided. Code written using FreeTypeGX will continue to work.
WIT may eventually provide some sort of sound support, but plans in this direction are uncertain.