Run Usb Loader GX inside Neek and enable "Nand Channels"

Discussion in 'Wii - Hacking' started by wiinning, Sep 25, 2017.

  1. wiinning
    OP

    wiinning Newbie

    Newcomer
    1
    Sep 24, 2017
    United States
    Goal: I would like a way to see and launch all of my games to include virtual console/wiiware, gamecube games, and wii games from usb loader gx. I would like the system to boot directly to Usb Loader GX. I would like 100% compatibility with all titles.

    I currently have Usb Loader GX running correctly and successfully pointed to Nintedont for the gamecube games. I don't think I need any help here. I appear to be at or close to 100% compatibility.

    I realize that Usb Loader GX has the ability to load virtual console/wiiware games when you enable "EmuNand Channels". However, to my knowledge, that does not have 100% compatibility (see:Wii_cIOS_EmuNAND_Compatibility_List).

    As I understand it, the only ways to get full compatibility for virtual console/wiiware games is to:
    1. Install wads directly to the Wii. This is not an option as there is only 512 Mb of internal storage on the wii. This won't work for my purposes.
    2. Install wads to wii and move them to the SD. There is still a viewing limit of 240 titles (12 per screen over 20 screens)... yes, I tested it. I am not sure if there is an actual limit. Additionally, Usb Loader GX can't load them. This also appears to be a lack luster option.
    3. Use *neek to emulate the complete system nand with ample storage. This option could work.

    They following is an attempt at a working theory:
    Please note: I have Bootmii installed as IOS. Bootmii as boot2 is not an option on my Wii.
    I beleive that I can use Priiloader on my internal nand to forward to nSwitch which will automatically load into neek.
    Neek will restart the system using the external nand.
    All of my virtual console games will be installed on the external nand.
    Priiloader, installed on the external nand, will boot to Usb Loader GX.
    Usb Loader Gx is configured to show "Wii Games", "GC Games", and "Nand Channels".

    In my mind, the boot process would go like this:
    Power system on via wii remote or console - this will be the last user input until Usb Loader GX loads showing all games.
    Priloader on internal nand loads to nSwitch.
    nSwitch switches where the system read/writes for system memory
    Priloader on external nand boots Usb Loader Gx
    All games will be visable and playable.

    Will this work to give me my desired effect?
    Is there an easier way to get all games (virtual console/wiiware, game cube, and wii) working with unlimited storage?
    I appologize if this information is already posted somewhere. I searched for answers extensively.
    Thanks in advance for you help.
     
  2. GreyWolf

    GreyWolf GBAtemp Guru

    Member
    8
    Mar 2, 2015
    United States
    EmuNAND works fine with almost all NAND titles. The problematic ones I can think of off the top of my head are:

    Konami Rebirth (all)
    Bonsai Barber
    Liight
    Bejeweled 2
    Majora's Mask

    For everything else you can just have USB Loader GX boot them in NEEK mode. If you have the neek2o channel installed on your emuNAND it can even reboot the console when you exit it instead of returning to the emulated system menu. There's no need to run everything in NEEK.

    The latest (r96) of neek2o doesn't work with Priiloader. It ignores it.
     
    Last edited by GreyWolf, Sep 25, 2017
  3. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    22
    Oct 27, 2002
    France
    Engine room, learning
    I'm not sure if priiloader works fine inside Neek.

    What you want will not work, as you won't be able to play Wii or gamecube games from USBLoaderGX while you are inside neek, because the devices are locked and "seen" by the console as "internal NAND memory", not as external devices that you can use with homebrew.


    The best setup is :
    install priiloader on real NAND
    install USBLoaderGX forwader on real NAND
    install USBLoaderGX forwarder dol in priiloader's autoboot menu, so it launches USBLoaderGX automatically on boot.
    install d2x v8 base57 in slot 249

    make a FAT32 32/k cluster partition on your first USB partition.
    install wii games and gamecube games to that partition.
    create a copy of your NAND (emuNAND) on SD or USB (I think USB works better, and has more space) and install ALL channels to it.
    Set USBLoaderGX to list "emuNAND channels" (not channels on real NAND), wii and gamecube games.

    it will work fine for : all wii games, all gamecube games, 80-90% of channels.
    for the remaining 10-20% of channels, you'll need this setup :

    neek2o files added to the /sneek/ folder of your partition where you have your emuNAND folder.
    boot neek2o and set the region to region free
    set ONLY the non working channels in USBLoaderGX to boot using neek mode
    in the emuNAND, install a "NK2O" channel (which is a nswitch channel, with titleID "nk2o"), it's used to reboot the console when you exit a game played in neek.


    result :

    boot -> priiloader -> USBLoaderGX

    from here you can :
    Play wii games -> exit to USBLoaderGX forwarder -> USBLoaderGX
    Play gamecube games -> exit to USBLoaderGX forwarder -> USBLoaderGX
    Play channels on emuNAND -> exit to USBLoaderGX forwarder -> USBLoaderGX
    Play channels on neek -> neek will boot and autoboot the game -> exit to nswitch on neek -> reboot -> priiloader -> USBLoaderGX


    All is transparent, you always see USBLoaderGX interface at boot, and at game exit.
    it's only a little longer when using neek2o, as it reboots the console entirely, that's why it's not advices to use it for "working games" with simple cIOS mode.


    the only non working games will be :
    1)
    some very few Wii games (tintin, Driver, and I forgot the third one).
    you'll need to boot neek2o without selecting a game (to not autoboot) and once in neek2o load that game using the hidden menu and launch it using the Disc channel with the official IOS.

    2)
    Some channels which works only on a specific NAND region.
    you'll have to generate 3 different Neek NAND, with 3 different regions and install the games working only in a specific region on both the "common" and the "region" neek.
    example, install the "japanese only" game in both USA Emunand AND JPN Emunand.

    Some games also require 4:3 video mode only and will not work on a neek with widescreen mode, so you'll end with 4 different neek :

    - USA common (your region, and region free, the main neek emuNAND you'll use)
    - PAL
    - JPN
    - USA 4:3 (for .. only one game)

    then, install ALL games in common (even the non working ones)
    install only the non working games AGAIN in their respective NAND (pal, jpn, 4:3)
    in USBLoaderGX, set the game's individual setting to the respective "special" neek path.

    it will display ALL games found in "common" EmuNAND, but will use the specified path in the individual setting when launching the game.
     
    Last edited by Cyan, Sep 25, 2017
  4. wiinning
    OP

    wiinning Newbie

    Newcomer
    1
    Sep 24, 2017
    United States

    Thanks for the quick reply Grey Wolf! I will give this method a try. I have a few questions:

    1. Is there a complete and current compatibility list for EmuNand compatibility?
    2. Is there a complete and current tutorial for setting up EmuNand? ( I have found many, they all seem pretty old and somewhat conflicting)
    3. Is there a complete and current tutorial for setting up Neek? ( I have found a few, they all seem pretty old and somewhat conflicting)
    4. My goal is to install all virtual console/wiiware titles on a Wii the will be used by children in a remote location. It needs to be simple to use with very few errors. If there are only 5 titles not working with EmuNand (as stated above), I would have no problem just excluding those titles; especially because there is a "Master Quest" title on gamecube that has both ocarina and majora's mask. Are those the only games known not to work? The "Wii_cIOS_EmuNAND_Compatibility_List" says otherwise so I am assuming that is out of date.
    5. Which revision of cIOS EmuNand should I use to achieve this level of compatibility? d2x v10?

    Again, thanks so much for your assistance.
     
  5. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    22
    Oct 27, 2002
    France
    Engine room, learning
    1. complete, no. current list is here : http://wiki.gbatemp.net/wiki/Wii_cIOS_EmuNAND_Compatibility_List

    2. emuNAND guide : https://gbatemp.net/posts/6592730
    but it's as easy as :
    USBLoaderGX > settings > features > dump NAND > full.
    USBLoaderGX > top menu > 4th icon > enable listing of emuNAND channels
    done :D
    it was easy, right?
    to add new channels, USBLoaderGX > settings > EmuNAND wad manager

    3. then, here to create Neek or Neek2o :
    using modmii : https://gbatemp.net/posts/5508831
    manually : https://gbatemp.net/posts/5884793

    Neek is "plugged" into your existing EmuNAND. it's only another method to use your existing NAND dump.
    either USBLoaderGX used cIOS, either Neek reboots the console, both are sharing the same data.

    hmm, not sure if it's covering the "setup".
    you'll only have to launch neek once, then press 1 or 2 on wiimote to open the "neek hidden settings" and choose the setup you want.
    usually, it's limited to : set region free, and video mode NTSC 480p. that's all you need to change.

    4.
    d2x v8 final, or v10 r52
    do not use v10 r53 (v10-alternative has issues with emuNAND)


    I hope my previous post gave you an easy visual of what you'll need to achieve if you really want a 100% compatibility, which involves making multiple emuNAND with different neek's settings.
    if it's for children, not for you, they will probably don't even care that it's missing few games in the list, and it's easier to just ignore the "hard to make compatible" games.
    80-90% of channels is already nice, without neek.
     
    Last edited by Cyan, Sep 25, 2017
  6. wiinning
    OP

    wiinning Newbie

    Newcomer
    1
    Sep 24, 2017
    United States

    Wow Cyan! Thanks for the in depth analysis of my goal! This looks Great! It may take me some time to try all of this as I am a noob in the EmuNand and *Neek arenas.

    I have a few questions:

    1. When you say :
    Are we talking about wii games that were also released as discs?

    2. When you say :
    Is this true, even if all my wads are ntsc region (and so am I). To clarify, Are you saying that, in some instances, I will need an out of region wad to get it to play?

    Thanks again for your time.
     
  7. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    22
    Oct 27, 2002
    France
    Engine room, learning
    yes.
    some disc based games have Anti-piracy detection and don't work in USBLoaders.
    the only way to play these games is with neek and launching them with the "disc channel" on system menu.

    ahh, so you don't want ALL the games, just the ones you have :P
    some people just like to have ALL existing games released in all region installed at the same time.
    I guess I explained more than you needed ;)

    no, if you only want to play games from your region, then don't worry. You'll need only one emuNAND (your NAND dump is perfectly fine for that).


    Please, follow (or read first before following it) my emuNAND guide I linked just above (as answer N°2) and let me know if you have any questions or problem.
     
    Last edited by Cyan, Sep 25, 2017
  8. wiinning
    OP

    wiinning Newbie

    Newcomer
    1
    Sep 24, 2017
    United States
    OK. I believe that was my fault. I only have interest in NTSC games. Wow, there really is plenty to learn in the world of Wii homebrew. I am at work now. I plan to read and execute your EmuNand guide when I get home. Thanks a million, Cyan.
     
  9. wiinning
    OP

    wiinning Newbie

    Newcomer
    1
    Sep 24, 2017
    United States
    Hey Guys, everything is looking good so far. I do have one question though. As I added more wads through the usbloader gx wad manager, the boot time of usbloader gx and the launch time of all EmuNand games increased significantly. Is that normal? I have around 800 games installed and it take about 15 seconds to boot usbloader gx.
     
  10. GreyWolf

    GreyWolf GBAtemp Guru

    Member
    8
    Mar 2, 2015
    United States
    Yeah, it's slow scanning NAND channels from SD/USB.
     
  11. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    22
    Oct 27, 2002
    France
    Engine room, learning
    Hey, i'm glad you got everything working, and without even asking for help or having issues ! :whoaa: <-- new emote
    I had requests to cache the game list, instead of checking each time the loader reloads that list (at launch, exiting settings, changing favorites state, etc.), but I didn't do it yet.
    it's in a location of my head, maybe one day.

    Maybe I could cache the reload while inside the loader at least.
    but it will require a manual refresh of game list to prevent crashes after adding/deleting games.

    15 seconds is not too bad, I had some people waiting more.
     
    Last edited by Cyan, Sep 27, 2017
  12. GreyWolf

    GreyWolf GBAtemp Guru

    Member
    8
    Mar 2, 2015
    United States
    Just counting the folders in /ticket/ in the emulated NAND folder should be good enough to determine if anything was added or removed. The titles won't run without their .tik file.
     
  13. wiinning
    OP

    wiinning Newbie

    Newcomer
    1
    Sep 24, 2017
    United States
    I just peeked at the source of UsbLoaderGx on source forge. Is it all in C++? I am a software engineer as well. While I have no experience in C++, I do have lots of experience in OO in general (java mainly). How do you run this code locally? Do you test it on a wii every update!? Just curious.
     
  14. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    22
    Oct 27, 2002
    France
    Engine room, learning
    yes, I test it on wii after recompiling.
    I'm using USBGecko as debugger (it's a USB hardware device plugged into the gamecube memory card, allowing realtime logs and/or memory debugging, peek/poke, etc.)
    a TCP version can be used (sending logs over wifi, but it works only when the network is initialized, so you miss all logged information at launch or app exit)

    we can also send a dol (the executable) through wifi, so it's easy to test from HBC.
    power wii, double click a dol (if assigned to a sender program, or use a program to send the dol manually), or use Programmer notepad's "compile and send" option.
    the homebrew launches on the console, look at the computer's log screen for debugging.

    It's mostly written in C++
    I learned it by looking at that homebrew project, and worked on it a little (the last revisions are from me, from 1180 to 1263), I probably added new bugs :D

    I lost the will to code when the loader started having memory issues, probably memory leaks, but I'm not good enough to find the problem when it's memory issue (I can find bugs in simple functions, but hardware and memory issues are harder to understand)
    All addition, even a simple word anywhere in the source made it crash, removing a letter in a text string elsewhere, and it worked again. I guess I reached the max size for text. maybe it's a linker problem (the sections size definition are maybe too small? Maybe we should increase the .txt)

    I had a lot of idea to update, and change some of the interface, add new features, etc.
    but I lost interest, even if I don't want to abandon it I feel like I don't have enough time to do work on it.
     
    Last edited by Cyan, Sep 28, 2017
  15. GreyWolf

    GreyWolf GBAtemp Guru

    Member
    8
    Mar 2, 2015
    United States
    Don't give up, Cyan. I started working on it because you were. :P When you added NEEK support I had no idea what was going on but I figured it out because I was already browsing your code.

    I don't think you caused the memory problems, I think they were caused by too many malloc overrides. I honestly haven't found anything that seems to be eating memory.

    Big rules:
    malloc should have a free
    new should have a delete

    If you make a class a factory and use it to manage objects it's a lot easier. TinyXML works like that. The document class has to create elements and when the document goes out of scope it deletes all of the elements it created.
     
  16. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    22
    Oct 27, 2002
    France
    Engine room, learning
    yeah, all the code I've touched I tried to always remember to properly free malloc. I don't think I created leaks.
    the only 2 memory issue I had was :
    1. when adding HID support (PS3 controller), it became very unstable and a user even lost his partition :(
    I'm very sorry for that. I removed it.

    2. rewriting the http.c file to work with SSL, it made the loader unresponsive after the first network init.
    I removed that too, but it was a quick fix.

    I hope to re-implement both.

    the real issue I had I just think it's due to .ro/.txt size section defined in the linker. I will have to learn more about it. or just drop some features (theme downloader's menu can be droped completely)
    banner download is unusable right now, but it could be useful if someone reupload all of them to a new url.

    I still want to keep the project alive, as it's like my first C++ project and I like it. It's the one I learned with and made a lot of people happy.
    I had a lot of idea for the next releases, I just missed time and now it's even worse since I moved to a new place, because I always push to later. ".... No, not today".
    My wii is not plugged and powered anymore, I miss place to plug all my consoles at the same time now. I will have to put it back in service one day to start working on USBLoaderGX, I want to add Fix94 gamepad support for nintendont and maybe even NAND VC (using the internal channel loader code, it should work without reloading ios)
     
    Last edited by Cyan, Sep 29, 2017
  17. wiinning
    OP

    wiinning Newbie

    Newcomer
    1
    Sep 24, 2017
    United States
    Hey Cyan and GreyWolf. I had some free time yesterday and decided to finally do the sneek (uneek in my case) portion of this. I had very limited success. First off, I think all of the guides are very outdated and none of them worked for me without modification. ModMii no longer works as it gets 404s when trying to download necessary files. It is an impassable error. I had to do a mixture of https://sites.google.com/site/completesg/how-to-use/sneek/setup/compiling-the-source and Cyan's "Tutorial for Compiling Neek". Cyan's tutorial doesn't require ios 60. When I used Sneek Installer, I got an error. The error was resolved with the addition of ios 60 (sourced from NUS downloader as well). Of the resulting files, I only copied \sneek\kernel.bin to the root of the usb. Once I did this, everything seemed to be working... for a while. I was able to boot Majora's Mask in neek mode via usbloadergx settings. It ran fine. I hit the home button and hit wii menu. That took me to the neek nand system menu. That was pretty cool. I realize that I need to install a forwarder inside the sneek nand so the system will reboot and take me to my true nand. I will save that task for the fine tuning stage. However, there is one very large problem. After using neek a few times, games booted by neek no longer work. I see the "you will need a classic controller message" for quite a while and then after 60 seconds (guessing here) I get an error the says something like:"Your wii system memory is corrupted, please see owners manual". There are several of these error messages as they seem to be game independent. They all mean the exact same thing. Nand isn't working. After I do a hard reset, I am back in real nand and everything is fine. If it try to reload a game in neek, the same thing will happen. This occurs until I delete the nand dump made by usbloadergx manually, do another nand dump via usbloadergx, and install the N64 games back to the nand dump using the usbloadergx wad manager. Then I can get a few more plays in before it happens again.

    I am at a loss to what is causing this issue. Could either of you point in me the right direction? Thanks guys.
     
  18. wiinning
    OP

    wiinning Newbie

    Newcomer
    1
    Sep 24, 2017
    United States
    Disregard my last comment. This turned out to be due to a failing hard drive. I had a hard time diagnosing it because it was new and working in almost all situations... except neek. I replaced it with a older external and everything started working perfectly. Thanks.
     
  19. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    22
    Oct 27, 2002
    France
    Engine room, learning
    hello :)

    I'm glad you managed to do it all by yourself.
    You didn't know anything when you registered, and you did all without asking too much. You learned a lot.

    My guide is missing a step ? something about IOS60?
    ahh, yes, that's because Crediar's sneek installer should actually download it automatically. I guess it has an issue getting that file from nintendo's server. (and nintendo servers will close in 2019)
    maybe I should edit my guide to add the option to get IOS60's app file from NUSD. and when NUS will close, to get it from a disc update or NAND.


    About your nand backup being corrupted after using it, I wouldn't have thought the hdd was dying, that's something not always obvious.
    Glad you have everything working fine now :)
     
    Last edited by Cyan, Oct 10, 2017
  20. GreyWolf

    GreyWolf GBAtemp Guru

    Member
    8
    Mar 2, 2015
    United States
    I think it's only the Shop Channel that is closing. The content servers should still be up after that since they also serve the content for the newer consoles.
     
Quick Reply
Draft saved Draft deleted
Loading...