I'm not exactly an expert when it comes to Wii U development, but I believe libwiiu is what you'll need to build your homebrew (along with devkitPPC, of course). If that isn't the case, well, it's loaded with examples and two kernel exploits, so it's useful anyway.
Here's a link: https://github.com/wiiudev/libwiiu
excellent post.There are three primary ways to launch homebrew: via Userland (bin/mp4 files), via HBL (elf), and via Loadiine/natively (rpx). There's also two main methods of drawing to the screen: a basic way via OSScreen and a more graphical way with GX2.
Examples for everything below!!
Userland
Examples: Hello World - Pong - C@ve - Snake - Space Game - Tic Tac Toe
Requirements: libwiiu
Limitations: No sound, no SD card, no GX2, no global variables, and ~20KB app limit
HBL elf
OSScreen Examples: Hello World - Pong - C@ve - Snake - Space Game - Tic Tac Toe - LiveSynthesisU
GX2 Examples: HBL - Loadiine GX2 - CHIP8 Emulator - Colored Cube - HB App Store
Requirements: dimok's libogc and portlibs installed to the devkitpro directory
Limitations: HBL elf format is a touch hacky wrt. to memory, upper limit on ELF size (~5MB?), can't use static libraries (such as the HOME menu pause/resume or browser open url)
Native RPX / Loadiine
Examples: Hello World - Pong - Space Game - Colored Cube - GX2texture2d
Requirements: decaf-emu/wut configured
Limitations: toolchain (wut) is still in development, otherwise has normal app access as far as the RPX loading mechanism permits
Everything above requires devkitppc to be setup as well.
Personally, I started with Userland and the Pong example, but I might recommend starting with one of the HBL examples because developing with HBL is a bit quicker. Developing for RPX would be preferred but starting with Userland or HBL may be better to start with for learning experience.
I also recommend paying close attention to the Hello World, Pong, and Space Game examples up above, as you can compare the different versions to see how the difference between Userland/HBL/RPX looks in code. Also don't shy away from asking questions if you get stuck on anything!
EDIT: also, I'm no expert-- all my knowledge is ad-hoc, so anyone please correct me if I'm wrong on any info in this post
Oh, sorry. I've been out of the loop for a while....Nowadays, you won't really need libwiiu, unless you want to make homebrew limited to 21.5kb and not have sound.
The HBL and RPX environments are much more expansive and support many more of the Wii U's features (including sound and >21.5kb binaries).
See here for an HBL environment example and here for the unofficial RPX build setup.
There are three primary ways to launch homebrew: via Userland (bin/mp4 files), via HBL (elf), and via Loadiine/natively (rpx). There's also two main methods of drawing to the screen: a basic way via OSScreen and a more graphical way with GX2.
Examples for everything below!!
Userland
Examples: Hello World - Pong - C@ve - Snake - Space Game - Tic Tac Toe
Requirements: libwiiu
Limitations: No sound, no SD card, no GX2, no global variables, and ~20KB app limit
HBL elf
OSScreen Examples: Hello World - Pong - C@ve - Snake - Space Game - Tic Tac Toe - LiveSynthesisU
GX2 Examples: HBL - Loadiine GX2 - CHIP8 Emulator - Colored Cube - HB App Store
Requirements: dimok's libogc and portlibs installed to the devkitpro directory
Limitations: HBL elf format is a touch hacky wrt. to memory, upper limit on ELF size (~5MB?), can't use static libraries (such as the HOME menu pause/resume or browser open url)
Native RPX / Loadiine
Examples: Hello World - Pong - Space Game - Colored Cube - GX2texture2d
Requirements: decaf-emu/wut configured
Limitations: toolchain (wut) is still in development, otherwise has normal app access as far as the RPX loading mechanism permits
Everything above requires devkitppc to be setup as well.
Personally, I started with Userland and the Pong example, but I might recommend starting with one of the HBL examples because developing with HBL is a bit quicker. Developing for RPX would be preferred but starting with Userland or HBL may be better to start with for learning experience.
I also recommend paying close attention to the Hello World, Pong, and Space Game examples up above, as you can compare the different versions to see how the difference between Userland/HBL/RPX looks in code. Also don't shy away from asking questions if you get stuck on anything!
EDIT: also, I'm no expert-- all my knowledge is ad-hoc, so anyone please correct me if I'm wrong on any info in this post
@brienj is our resident GX2 expert, but he seems to have gone missing. I have no idea how it works, though you may wish to try asking @Maschell or @dimok for help (if they have time). @dimok also released a 3D cube demo that utilises GX2, search the forums to find it. You can also refer to the Homebrew Launcher, Loadiine GX2, the Homebrew App Store, or if you want a base to start emulation on, check out the CHIP-8 emulator.Any information on GX2?
For GX2 + RPX, I'd check out @shinyquagsire23 's port of dimok's Colored Cube and custom GX2texture2d projects.So, if I'm wanting to port an emulator, GX2 + HBL/RPX would be my best bet? Any information on GX2?
For GX2 + RPX, I'd check out @shinyquagsire23 's port of dimok's Colored Cube and custom GX2texture2d projects.
As for a GX2 emulator, as @CreeperMario said, see the readme @brienj wrote here.
@brienj ported @rw-r-r_0644 's CHIP8 emulator to GX2 and also made a lovely emulator frame, seen below:
He was able to then use the code for that frame to quickly produce a gameboy emulator, which as you can see looks similar:
The frame (loading+GX2 parts) of those emulators looks like this in Application.cpp, and then they delegate to a C file for their emulation "core" for the actual emulation.
I've listed a lot of names/examples to look at and learn from, but if your goal is to make a GX2 emulator, then you should totally take a look a the CHIP8 emulator and play with it. CHIP8 roms are actually free to download, so playing with that may be the quickest way to port another emulator!