Advice for homebrew creation

Discussion in 'Wii U - Hacking & Backup Loaders' started by dmaster752, Jul 26, 2016.

  1. dmaster752
    OP

    dmaster752 Member

    Newcomer
    11
    9
    Nov 2, 2011
    United States
    I've been in the scene for a long time now and have decided I want to help out the community. I'm taking some courses soon and what I want to know is what do you guys suggest I learn to really help out the most. I see talks of python and c++ and other things so I'm not really sure what I should go for first. Which one will help me more when it comes down to creating? I'm obviously not going to be much help in the beginning since im fairly new to it all but I wanna start taking my first steps. Any and all help is appreciated thanks!
     
  2. QuarkTheAwesome

    QuarkTheAwesome Working for Hugs

    Member
    808
    1,989
    Apr 19, 2015
    Australia
    Stuck in the PowerPC
    It depends on what you want to be programming. I develop homebrews that actually run on the Wii U hardware, but others do remote game modding and write up communication tools. The latter you can really do in any language you like (most pick Python) but if you want your code running on the Wii U you have three choices - C, C++ and PowerPC Assembly.
    Nobody likes Assembly (for... some reason) so you'll probably end up doing most of your work in C or C++. You can learn whichever you'd like - C++ is more focused around classes and is a more high-level language (sort of like Java) while C is much closer to the metal. In practice, you'll need to be comfortable with both but they're basically the same anyway. If you're taking a course I'd recommend C++ since it'll teach you the basics of C, however you will need to know about pointers and memory on a far lower-level scale than I'd imagine a C++ course would teach (no idea though, never really done one.) Of course, you can teach this to yourself later if you wish.
    As for which language is used in reality, I find a lot of stuff is in C++ because of a set of libraries written up by Dimok that make using some of the Wii U's more powerful features within reach for the rest of us. These libraries are written in C++ and it's generally easier to write your program to match. That's only if you want to use those libraries, however; C is perfectly sufficient if you're willing to get your hands (and computer) dirty in the Nintendo libraries.
    Personally I've always liked C and try to write as much of it as I can. This is mainly because it's closer to what the Wii U is actually doing than C++. With a bit of work, I could probably translate one of my C programs into machine code: Each of its concepts are reasonable to map to what's going on in the hardware. On the other hand, I'd have no hope of doing this for C++. On a system that likes to crash as much as the Wii U, that's a big thing for me.

    To sum up: C and C++ are pretty much interchangeable. C++ is more feature-packed and has good support from the community, but C is easier to debug and (to me, at least) is a lot more logical in the way it translates onto the hardware, even if that means writing code that's a bit more crazy. It's up to you to figure out which is best for you: both would be useful to the community.

    Also worth noting that C++ is more likely to get you a paying job if the Wii U doesn't work out.

    As I mentioned before, if you're not planning on making homebrew that runs on the hardware, you have free rein over what language you pick.
     
  3. dmaster752
    OP

    dmaster752 Member

    Newcomer
    11
    9
    Nov 2, 2011
    United States
    Thanks for the advice I really appreciate it. My main goal is creating things that run on the hardware so I guess C++ is the way to go. I have several courses already lined up but I figured I'd ask around before anything is set in stone. They have courses for C++, C#, SQL, Java, Python so I wasnt even sure where to begin. Though they did specify that for my C++ course that no previous programming experience is necessary so I hope I'll be fine.
     
    brienj and QuarkTheAwesome like this.
  4. brienj

    brienj Trying to avoid getting cancer

    Member
    1,232
    1,705
    Jan 3, 2016
    United States
    Welcome to the club.

    My gacubeboy emulator inspired you, didn't it? :D
     
  5. QuarkTheAwesome

    QuarkTheAwesome Working for Hugs

    Member
    808
    1,989
    Apr 19, 2015
    Australia
    Stuck in the PowerPC
    'Twas an inspiration to us all.
     
  6. dmaster752
    OP

    dmaster752 Member

    Newcomer
    11
    9
    Nov 2, 2011
    United States
    Uhh was just taking some courses soon and figure'd i'd try and help out
     
    brienj likes this.
  7. CreeperMario

    CreeperMario GBAtemp Advanced Fan

    Member
    616
    364
    Jun 18, 2016
    Australia
    OSv10 v15702
    If you can wait until the weekend, when I have access to my console and a little free time, I might release an example showing background colours and basic sprite rendering in GX2 (because that's all I've figured out so far). It may provide useful to people looking to create basic homebrew for the Wii U.
     
    vgmoose likes this.
  8. QuarkTheAwesome

    QuarkTheAwesome Working for Hugs

    Member
    808
    1,989
    Apr 19, 2015
    Australia
    Stuck in the PowerPC
    Using Dimok's stuff or under raw GX2? I'd be really interested in this.
     
  9. shinyquagsire23

    shinyquagsire23 SALT/Sm4sh Leak Guy

    Member
    1,964
    3,238
    Nov 18, 2012
    United States
    Las Vegas
    I wouldn't mind this personally, all the GX2 homebrew I've seen has a ton of overhead, something which just renders a textured sprite would be nice.
     
    CreeperMario likes this.
  10. CreeperMario

    CreeperMario GBAtemp Advanced Fan

    Member
    616
    364
    Jun 18, 2016
    Australia
    OSv10 v15702
    When you say "Using @dimok's stuff" I assume you mean using his C++ setup involving Application.cpp, threading and having every single GUI element inside a separate class (such as that used in HBL, Loadiine GX2 and HBAS). If that's the case, no, I'm using raw GX2, just like the coloured cube example. :P
     
  11. QuarkTheAwesome

    QuarkTheAwesome Working for Hugs

    Member
    808
    1,989
    Apr 19, 2015
    Australia
    Stuck in the PowerPC
    Awesome stuff! Can't wait.
     
    CreeperMario likes this.
  12. dmaster752
    OP

    dmaster752 Member

    Newcomer
    11
    9
    Nov 2, 2011
    United States
    Personally my goal is to create certain apps that I don't really see any interest in. Mainly I'd love to create a media player because I loved WiiMC back then but half my files couldn't play on the Wii cause they were HD so I'd love to make a new one or even a port for Wii U. A couple emulators here or there would be nice as well
     
    QuarkTheAwesome likes this.
  13. brienj

    brienj Trying to avoid getting cancer

    Member
    1,232
    1,705
    Jan 3, 2016
    United States
    That's the beauty of his Classes though, you can use as much or as little as needed, or even modify it for your own use. For a project involving just a straight screenbuffer to render though, it does have a lot of extra overhead.
     
  14. Swiftloke

    Swiftloke Hwaaaa!

    Member
    1,770
    1,520
    Jan 26, 2015
    United States
    Nowhere
    I'm learning C++, and I'm still very much a noob: working on Win32 console apps and I'm just about to start with conditional statements. Any advice? I intend to eventually work on 3DS homebrew.
     
    QuarkTheAwesome likes this.
  15. QuarkTheAwesome

    QuarkTheAwesome Working for Hugs

    Member
    808
    1,989
    Apr 19, 2015
    Australia
    Stuck in the PowerPC
    Get yourself really comfy with Win32 stuff since it's a safe environment with debuggers and whatnot. When I say "comfy" I mean that your understanding of what's happening needs to be good since the APIs and methods available are vastly different (not sure about 3DS (how's devKitARM's standard libraries?) but at least for Wii U). You might not have a strcmp (just an example, don't worry, there is strcmp) but if you understand how strings are stored and how the memory is arranged you could write your own fairly easily. Learning by rote (this-does-this-and-this-does-this-and-this-is-how-you-do-this) won't help you here, you need to know the how and the why.
     
    CreeperMario likes this.
  16. Swiftloke

    Swiftloke Hwaaaa!

    Member
    1,770
    1,520
    Jan 26, 2015
    United States
    Nowhere
    I just realized reading this I should finish my Win32 course before I ask about homebrew xD
     
    CreeperMario likes this.