Hacking Wii U Hacking & Homebrew Discussion

EclipseSin

Ignorant Wizard
Member
Joined
Apr 1, 2015
Messages
2,063
Trophies
1
Age
35
Location
221b Baker Street
XP
1,737
Country
United Kingdom
I dont know how it works (Secrect Nintendo Agen update thing lol) but I dont think they are trying to update our console when we are playing but only when it's on standby mode isnt it? If yes then I am not worrying much bcoz I have the habit of unpluging Ac whenever turn off wii u.

Btw can anyone tell me how to turn off wii u in a normal way, not by forcing it to stop by Holding power button for 5 seconds. It's 2016 already common Nintendo
The power button on your wii u remote or the console itself are the only ways I know. Kind of more convenient than a menu item tbh., since its on the controller. Power button on classic controller works too, at least on my PowerA.

No, it does not update while you are playing a game, but I believe it can download while you are playing offline. I have not updated my Wii U since 5.3.2 though, and it's been on LAN only pretty much since then except when I was doing stuff here.
 

SomeGamer

Well-Known Member
Member
Joined
Dec 19, 2014
Messages
6,827
Trophies
1
XP
4,912
Country
Hungary
Oh look, a key leaked with which we can't do anything without IOSU, but when IOSU comes out, we'll be able to dump it (and more) anyway! Great!
 

dimok

Well-Known Member
Member
Joined
Jan 11, 2009
Messages
728
Trophies
3
XP
2,635
Country
United States
Hey guys. So after making a nice long break off the WiiU I was thinking of starting to code small stuff now and then again as I am starting to have some free time again. Looking through this forum to see whats new on here I saw this comment and I remembered what made the development on the WiU really uninjoyable.

I'd personally suggest loading assets from content/ since it's a lot cleaner. I haven't managed to get any of dimok's stuff to compile with wut, but chances are a modified version of wut or dimok's libs would be required for that to work (specifically libcrt conflicts with its devoptab and coreinit/GX2 almost definitely conflicts), mostly because wut's function definitions and structures are derived from decaf which has to derive everything without any use of the SDK whatsoever. So there's a funky incompatibility there and I've moved to avoiding dimok's libraries because they're, frankly, pretty sketchy and almost definitely derived from the SDK, and for public release tools I would like to be in the best legal standing as possible.
Well sorry but this comment is just uncalled for in my opinion. I was looking at the wut project earlier and really though it was a cool thing that exjam started there and I saw your contributions on there which were also great. So the first thing I wanted to do is change HBL to use the RPX format and load RPX homebrews instead, as RPX brings a few imporntant features with it in code size (e.g. zlib compression). I also though of contributing to that project if I see something thats of use. Seeing this comment made me remember how developers are ranting down code of other developers on the wii u scene instead of working together. This makes me wonder if it is worth to invest more time into such a community. I didn't want to say anything to this point in public but well...I did look deeper into wut and several parts of it and especially the GX2 part look almost like a 1:1 copy of SDK. Even the enums, variables and also the file structure of headers look alike. Don't tell me it's "coincident". That is just hypocritical. I really wonder what gave you the impression that my stuff, which does not look this alike, is derived of the SDK and this one is not. What I liked the most was this part here though:
https://github.com/decaf-emu/wut/co...474ccc1#diff-68d90260ff9a8581f0e8fd0db120d311
This is funny because the commit log says "Fix licensing issues". Now that's what I call fixing a license...just remove it :). Fyi this is not very "legal". I wouldn't be surprised if the devoptab code would also be derived of my devoptab code for the sd access. At least that one looks different and is a bit improved so thats great and that's what it really should be about and not ranting at each other. So if your mind is not fully set on being a "nazi like anti backup loader creator" person like some people (marca...cought), I would like to rather put those things aside, work together and preferably talk directly in a chat instead through posts (which usually are only missleading or missunderstood).
I do agree in one point of that post though. Using assets from other applications is a cleaner way as long as there is no GLSL R700 compiler with the special latte instructions out there and actually all parts of the HBL or any other 2D GUI I made can be easily converted to use the texture2D asset. The time I worked on HBL I didnt see that the health screen was using or had it. So that would be also one point on the todo list.

RPX is important if you want to launch applications natively, with multitasking, as a standalone app (like the System Settings app or whatever). I have no doubt that forwarders and whatever could possibly work, but RPX is much more optimal here. Don't have to deal with dynamically pulling in every single function you want to use and there's larger limits on code size. If you were porting something like, say, ScummVM, you would have a lot more breathing room with RPX. If someone wants to work on some kind of RPX->.elf bootstrap then they can go right ahead with that, but I'd rather focus on wut.
Now this comment is something I agree on a lot more. People should try to target creating RPX files. Creating a HBL version as a RPX application which loads other RPX is not much of work especially as there is code available for loading RPX files on loadiine which can be adapted to load homebrews RPX. Though the old way with ELF file is not bad and you can do (almost) everything an RPX can do as well (multitasking and so on), it would be more future proof to create RPX files which can later be installed in custom channels once that's possible.

A reminder to get on board with wut if you haven't already (or at least start targeting .rpx in one way or another). This whole UI was done using my Texture2D base with all the textures as TGAs, and it's surprisingly manageable despite not having graphics stuff abstracted away as much as UI code seen in loadiine and other places.

If anyone's interested in .tga code or a good button interface let me know, I might put up another sample project from what I have.
This one looks really nice. The UI does not have to be that much abstracted away from the graphics but for me its better understandable in an object oriented way and if the API changes its easier to switch if you abstracted those parts. It doesn't have to be this way for others. Using TGA is though quite inefficient in size matters and there are examples in several of my applications how to simply use one interface with a few basic libs for all image formats that matter including tga. You dont even need be a C++ programmer to be able to move it into C as it is basically all procedural in there. But yeah, its not really necessary as the WiiU got enough memory for an application usually i guess.

To clarify, the dimok libraries I'm referring to are the userland things, for example SoundHandler.cpp and GameSound.cpp have both been adapted from libwiigui/WiiXplorer. And comparing the GuiButton.cpp used in HBL with the gui_button.cpp from libwiigui the similarities can be seen. It's my understanding that these same libwiigui-style APIs should be compatible/portable with/to wut if they are implemented correctly, which would make transitioning for HBL-based apps much easier.

If that's off the table, however, I personally don't have a real issue switching to use new libraries (and helping port some legacy ELFs to RPX), but would need some examples, like the button/layout one that you've demonstrated/mentioned, or one that shows how sound can be played from content/.

(btw thanks for the answer, I had been wondering why dimok's contributions had oddly been mostly ignored. (although I choose to believe they're legit)).

It's really great to see that some people do see the greater point of my work. As you might have noticed the dynamic libraries are something that I just wrote down not very clean and without any documentation on it. That is because I though that once there is an exploit of the IOS and there is access to hardware register that there would be a replacement for these dynamic libs crap of nintendo and that almost every part of it would be solved open sourced as it was solved on the wii as well. That is the way to go in my opinion instead of continuing to use the dynamic closed sourced SDK libs as it is now and I would love to work on those libs though its a shitload of work. (That's actually one point in which wut is not going into the right direction in my opinion.) So the intention of the dynamic libraries wasnt to make a code basis for every homebrew or some toolchain. It was a quick shot to have something that can be used for now. What is actually more important are the libraries around it. How to convert images to textures and use them. How to convert audio samples from MP3 to adpcm and interact with hardware. A framework that can be used to build simple 2D GUIs. Multitasking between GUI and other tasks like FS access. That's what I was targeting for. It's not always about the API or a toolchain, it's more about what you make out of it. APIs are replaceable. People think that just because similar code is used in a backup loader, it's gotta be all illegal. Well guess what, it's not and all of it is self written by the people around this forum. Most of it is not even connected in any way to the API. Though since it's being ignored it makes me wonder again if it is worth investing time into it.

Anyway back to the cool parts. I really loved to see some new homebrews coming out of which some even used GX2 for graphics and had sounds instead of just a simple console only view. The homebrew app store was really above all. This one looks great and reminds me of the homebrew browser app for the wii. Really nice job there. I also liked to see the first GB emulator but to be honest I though the first one would be a port from the Wii along with other emulators from Tantric as that can be done way easier than to write one from scretch haha...nice job brienj. Maschell also showed me some videos of his new HID to VPAD Gui. Now that one looks awesome as well and it's a great app coming there.

So I am not sure yet but maybe I will be getting back into coding a few stuff for the WiiU again as there are fun parts about it.
 

shinyquagsire23

SALT/Sm4sh Leak Guy
Member
Joined
Nov 18, 2012
Messages
1,977
Trophies
2
Age
26
Location
Las Vegas
XP
3,765
Country
United States
Wow it's @dimok. Nice to see you around again.

I can definitely agree with some points there, there's a point where if you're reimplementing the exact same thing that you really can't help but get extremely close to the SDK, especially in this case since everything is almost purely headers. Basically the main issue came down to not being able to validate the origin of code, most of it comes from code which was already open, but a lot of headers were not able to be validated in your absence, and as such I wrongly assumed. My mistake there, in that case. My basic train of thought was that I'd rather be safe and have my code in the clear vs. risking things, but even then once you've seen another implementation you can't really code another which is totally different (and even then, my current GX2 init is extremely similar to your which is extremely similar to initialization in some games).

I will say though that the memory management bit was rewritten without referencing the original, referencing only decaf, but it only ended up happening because someone in #wiiu-emu made a fuss about it (but, again, can't really prove that this was the case). In my opinion it's just one of those things which it doesn't matter how you rewrite it, it's the same code. The devoptab however originated from ctrulib and was readapted to Wii U, and I personally think it came out a bit better that case since it implements some things which weren't present in yours.

It may be worth clearing things up with decaf-emu developers if your code is in fact in the clear. It was very much suggested to me, when I started contributing, to avoid public headers because they might be SDK-derived (this was some time after the memory.c deal), so I simply avoided them when contributing things. Most of my choices with C and texture2D were just from personal preference but that also factored in a bit. I'd much rather work in C than C++ and it was very difficult for me to figure out how to work with the GX2 from public samples, unless I just pulled everything in.

I'm not quite sure on the interacting with hardware registers directly thing though, mostly because loader.elf is a pain already and I can't imagine replacing it while keeping existing RPX loading. At the very minimum you would still have to interact with IOS directly if you were replacing coreinit FS functionality, and in some cases it might just not be worth the work? But again, using Nintendo's existing libraries is already kinda funky because you end up with headers which are inherently just SDK headers but renamed. I dunno.
 

NWPlayer123

Well-Known Member
Member
Joined
Feb 17, 2012
Messages
2,642
Trophies
0
Location
The Everfree Forest
XP
6,693
Country
United States
so going by tjis http://wiiubrew.org/wiki/Hardware/OTP which keys wernt public?
For what I can compare with wiiubrew OTP page:

- WiiU SEEPROM Key
- Key to encrypt/decrypt SSL RSA key.
- Key to encrypt seeds for USB storage keys.
- Wii U XOR key.
- Many "unknown" bytes

I would like to know if it is possible, with those keys and without per-console keys, decrypt the USB content. Anyone able to answer this question ?

EDIT:
Just for information: "obscured" bytes in bank0 (all the bytes BEFORE "Security level flag" bytes) can be extracted using the OTP dumper that you can launch from HBC in vWii mode.
Yeah, basically anything that wasn't an Ancast key or Common Key
Wow it's @dimok. Nice to see you around again.

I can definitely agree with some points there, there's a point where if you're reimplementing the exact same thing that you really can't help but get extremely close to the SDK, especially in this case since everything is almost purely headers. Basically the main issue came down to not being able to validate the origin of code, most of it comes from code which was already open, but a lot of headers were not able to be validated in your absence, and as such I wrongly assumed. My mistake there, in that case. My basic train of thought was that I'd rather be safe and have my code in the clear vs. risking things, but even then once you've seen another implementation you can't really code another which is totally different (and even then, my current GX2 init is extremely similar to your which is extremely similar to initialization in some games).

I will say though that the memory management bit was rewritten without referencing the original, referencing only decaf, but it only ended up happening because someone in #wiiu-emu made a fuss about it (but, again, can't really prove that this was the case). In my opinion it's just one of those things which it doesn't matter how you rewrite it, it's the same code. The devoptab however originated from ctrulib and was readapted to Wii U, and I personally think it came out a bit better that case since it implements some things which weren't present in yours.

It may be worth clearing things up with decaf-emu developers if your code is in fact in the clear. It was very much suggested to me, when I started contributing, to avoid public headers because they might be SDK-derived (this was some time after the memory.c deal), so I simply avoided them when contributing things. Most of my choices with C and texture2D were just from personal preference but that also factored in a bit. I'd much rather work in C than C++ and it was very difficult for me to figure out how to work with the GX2 from public samples, unless I just pulled everything in.

I'm not quite sure on the interacting with hardware registers directly thing though, mostly because loader.elf is a pain already and I can't imagine replacing it while keeping existing RPX loading. At the very minimum you would still have to interact with IOS directly if you were replacing coreinit FS functionality, and in some cases it might just not be worth the work? But again, using Nintendo's existing libraries is already kinda funky because you end up with headers which are inherently just SDK headers but renamed. I dunno.
It's another case of miscommunication, I tend to agree, work way better in C than C++ even tho almost all the Wii U stuff I've poked at is in C++, both 1st party and 3rd party stuff
 
Last edited by NWPlayer123,

NWPlayer123

Well-Known Member
Member
Joined
Feb 17, 2012
Messages
2,642
Trophies
0
Location
The Everfree Forest
XP
6,693
Country
United States
And it really wasn't public before? Is there a previous sha1 from f0f to verify it or anything?
don't think so, they only really cared about the common and ancast stuff too cause it has the broadest use (aside from storage keys but those are console specific), it was technically public if you saved my screenie from forever ago but again, the public keys are the big ones like the common keys to decrypt NUS stuff, the rest is mostly just for research
 

TheZander

1337
Member
Joined
Feb 1, 2008
Messages
2,137
Trophies
2
Location
Level 7
XP
3,883
Country
United States
don't think so, they only really cared about the common and ancast stuff too cause it has the broadest use (aside from storage keys but those are console specific), it was technically public if you saved my screenie from forever ago but again, the public keys are the big ones like the common keys to decrypt NUS stuff, the rest is mostly just for research
was anyone ever able to successfully dumb the wiiu nand tsop thing? would that dumb be the equivalent to the fw.img file?
 

NWPlayer123

Well-Known Member
Member
Joined
Feb 17, 2012
Messages
2,642
Trophies
0
Location
The Everfree Forest
XP
6,693
Country
United States
was anyone ever able to successfully dumb the wiiu nand tsop thing? would that dumb be the equivalent to the fw.img file?
the NAND? Yeah, that's mostly what the whole 64GB minimum thing for emuNAND was about (I don't think that's the case anymore), cause 8/32GB eMMC + 512MB x2 NAND (vWii + WiiU) is just barely over the 32GB card limit, I haven't had contact with SALT in a while so I dunno how much more progress there is tho, the exploit can access it just fine tho and emuNAND's working off of an SD copy
 

Piluvr

Yeeeet
Member
Joined
Jul 27, 2015
Messages
655
Trophies
0
Location
Behind you
XP
730
Country
United States
the NAND? Yeah, that's mostly what the whole 64GB minimum thing for emuNAND was about (I don't think that's the case anymore), cause 8/32GB eMMC + 512MB x2 NAND (vWii + WiiU) is just barely over the 32GB card limit, I haven't had contact with SALT in a while so I dunno how much more progress there is tho, the exploit can access it just fine tho and emuNAND's working off of an SD copy
I think I already asked, but why can't we load from USB/HDD?
 
  • Like
Reactions: QuarkTheAwesome

TheZander

1337
Member
Joined
Feb 1, 2008
Messages
2,137
Trophies
2
Location
Level 7
XP
3,883
Country
United States
the NAND? Yeah, that's mostly what the whole 64GB minimum thing for emuNAND was about (I don't think that's the case anymore), cause 8/32GB eMMC + 512MB x2 NAND (vWii + WiiU) is just barely over the 32GB card limit, I haven't had contact with SALT in a while so I dunno how much more progress there is tho, the exploit can access it just fine tho and emuNAND's working off of an SD copy
What about with that hardware mod and teensy? every thread I've seen they sort of failed.
 

NWPlayer123

Well-Known Member
Member
Joined
Feb 17, 2012
Messages
2,642
Trophies
0
Location
The Everfree Forest
XP
6,693
Country
United States
I think I already asked, but why can't we load from USB/HDD?
I thought @WulfyStylez commented something about this but I can't find it, basically IOS-MCP keeps access to all UHS communications so any node that tries to use it will fail, no idea the reason, MN1 (rip) posted this forever ago but it's the only thing I could find
https://gbatemp.net/threads/wii-u-hacking-homebrew-discussion.367489/page-536#post-5665349
What about with that hardware mod and teensy? every thread I've seen they sort of failed.
shrug, this says Teensy2.0++ and a python script can dump it, @shinyquagsire23 put it in so go poke them
http://wiiubrew.org/wiki/TSOP_NAND
 

Piluvr

Yeeeet
Member
Joined
Jul 27, 2015
Messages
655
Trophies
0
Location
Behind you
XP
730
Country
United States
I thought @WulfyStylez commented something about this but I can't find it, basically IOS-MCP keeps access to all UHS communications so any node that tries to use it will fail, no idea the reason, MN1 (rip) posted this forever ago but it's the only thing I could find
https://gbatemp.net/threads/wii-u-hacking-homebrew-discussion.367489/page-536#post-5665349

shrug, this says Teensy2.0++ and a python script can dump it, @shinyquagsire23 put it in so go poke them
http://wiiubrew.org/wiki/TSOP_NAND
Well then what about what we did with ps3? Overwrite sysnand
 

TheZander

1337
Member
Joined
Feb 1, 2008
Messages
2,137
Trophies
2
Location
Level 7
XP
3,883
Country
United States
I thought @WulfyStylez commented something about this but I can't find it, basically IOS-MCP keeps access to all UHS communications so any node that tries to use it will fail, no idea the reason, MN1 (rip) posted this forever ago but it's the only thing I could find
https://gbatemp.net/threads/wii-u-hacking-homebrew-discussion.367489/page-536#post-5665349

shrug, this says Teensy2.0++ and a python script can dump it, @shinyquagsire23 put it in so go poke them
http://wiiubrew.org/wiki/TSOP_NAND
yep I read through those threads, from what I saw they haven't been able to from what I surmised. I imagine smealum had to do something because he had a nand mod. I wonder if he posted how he did it.
 
  • Like
Reactions: NWPlayer123

brienj

Trying to avoid getting cancer
Member
Joined
Jan 3, 2016
Messages
1,232
Trophies
0
Website
twitter.com
XP
2,142
Country
United States
Anyway back to the cool parts. I really loved to see some new homebrews coming out of which some even used GX2 for graphics and had sounds instead of just a simple console only view. The homebrew app store was really above all. This one looks great and reminds me of the homebrew browser app for the wii. Really nice job there. I also liked to see the first GB emulator but to be honest I though the first one would be a port from the Wii along with other emulators from Tantric as that can be done way easier than to write one from scretch haha...nice job brienj. Maschell also showed me some videos of his new HID to VPAD Gui. Now that one looks awesome as well and it's a great app coming there.

So I am not sure yet but maybe I will be getting back into coding a few stuff for the WiiU again as there are fun parts about it.
The classes you made in HBL and Loadiine helped tremendously in getting GX2 and sound working, and it's a shame that more people haven't used any of it. It may be that C++ is too intimidating to others, IDK. As far as porting emulators, I would always run into some problem when trying to port things, very few things would port nicely. However, building things from scratch has been much more successful for me, although I haven't been doing anything Wii U related for the past month or so. You, and just a handful of other good devs, that are positive and helpful and sharing were the only thing that kept my drive going before. I just wish more devs were like you or them.

Thanks for everything you've done.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: @BigOnYa, burp