Difference between revisions of "User:QuarkTheAwesome/Dev guide draft"
(Dupe "Homebrew Development Guide") |
(Get started with a rewrite; "Configuring Environment") |
||
Line 1: | Line 1: | ||
− | + | This article will go over the primary ways of developing various types of homebrew on the Wii U. | |
− | |||
− | |||
− | |||
− | |||
− | This article will go over the primary ways of developing various types of | ||
== Configuring environment == | == Configuring environment == | ||
− | + | At this time, a linux-esque environment (<i>not</i> msys2) is required - though work into Windows support is ongoing. For now, Windows users can use [https://docs.microsoft.com/en-us/windows/wsl/install-win10 WSL] or a [https://itsfoss.com/install-linux-in-virtualbox/ virtual machine]. Your first step is to install [https://devkitpro.org/wiki/devkitPro_pacman devkitPro pacman], downloading the Linux or OSX versions as appropriate for your setup. Once installed, you can use one of <syntaxhighlight inline>dkp-pacman -S <package></syntaxhighlight> or <syntaxhighlight inline>pacman -S <package></syntaxhighlight> to install packages! Start off by installing <syntaxhighlight inline>devkitPPC</syntaxhighlight>, followed by <syntaxhighlight inline>devkit-env</syntaxhighlight> on Linux or Windows. If that worked without error, your next step is to [https://gitlab.com/QuarkTheAwesome/wiiu-fling/blob/master/README.md install wiiu-fling] using the instructions in that link. That will add some extra Wii U-related packages to pacman, including most things you'll need to develop homebrew! | |
− | + | ||
== Making HBL Apps == | == Making HBL Apps == | ||
The [[Homebrew Launcher]] is an easy platform to target for development. The two below methods are useful for making console and GUI apps respectively. In particular, lib_easy is a good place to start. Apps compiled with this method are in the ELF format. | The [[Homebrew Launcher]] is an easy platform to target for development. The two below methods are useful for making console and GUI apps respectively. In particular, lib_easy is a good place to start. Apps compiled with this method are in the ELF format. |
Revision as of 11:23, 6 January 2019
This article will go over the primary ways of developing various types of homebrew on the Wii U.
Configuring environment
At this time, a linux-esque environment (not msys2) is required - though work into Windows support is ongoing. For now, Windows users can use WSL or a virtual machine. Your first step is to install devkitPro pacman, downloading the Linux or OSX versions as appropriate for your setup. Once installed, you can use one of dkp-pacman -S <package>
or pacman -S <package>
to install packages! Start off by installing devkitPPC
, followed by devkit-env
on Linux or Windows. If that worked without error, your next step is to install wiiu-fling using the instructions in that link. That will add some extra Wii U-related packages to pacman, including most things you'll need to develop homebrew!
Making HBL Apps
The Homebrew Launcher is an easy platform to target for development. The two below methods are useful for making console and GUI apps respectively. In particular, lib_easy is a good place to start. Apps compiled with this method are in the ELF format.
Using lib_easy
lib_easy by rw-r-r_0644 was designed to be a quick way to get familiar with programming on the Wii U. That link contains an example hello world project. After setting up your environment, you can compile the hello world project by cd-ing into the folder and running "make".
An example of a homebrew app that was made using lib_easy is UClick.
Using Dimok's libraries
Dimok's libraries provide assistance with interacting with various parts of the Wii U. For some projects that use OSScreen to interact with the see Pong, C@ve, Snake, or Space Game. (Specifically, you will want to look at this HBL pong port).
Dimok's libs also provide many GX2 wrappers that provide a template for creating Homebrew Launcher-style GUIs. Examples of projects that utilize this include Homebrew Launcher, CHIP-8_Emulator, and Homebrew App Store.
Making Native Apps
There's a work in progress Wii U Toolchain (also called "wut") that can be used to make native RPX apps. These would be able to be installed to the System if not for the heavy signature checking that the Wii U performs on the System menu. In the long run, these may be preferable to the HBL-style ELF launching system.
Wut is under active development. It provides instructions on how to get started in its readme along with a Hello World. There are a few apps out that make use of wut, including gx2texture2d and ports of Pong and Space Game. Although it is under development, it is still fairly featured. RPX files that are compiled with wut can also be played in decaf-emu.
Making Userland Apps
The userland environment does not require a kernel exploit to execute programs, but as a result is heavily limited. These apps hijack the browser, but don't go any further. libwiiu is a good build system to use to produce .bin files which can be converted into mp4 payloads. It has detailed compilation instructions and many examples in the readme and repository.
A lot of the earlier homebrew was initially made for this userland environment, although most of it has since been ported to HBL. Pong, C@ve, and Space Game are among those early apps.
It isn't really recommended to use userland while a kernel exploit environment is available. It is heavily restricted to ~20KB payload files, no access to global variables, and no access to GX2 (OSScreen only).
Guides
QuarkTheAwesome is working on a more in-depth guide to Wii U development, which is available here.
He has also produced an older, outdated development guide for the userspace environment here.
Support
If you need help developing, here are a few IRC channels that may be able to provide direct assistance.
Don't be afraid to ask! :)