Homebrew The Wii U Homebrew Request Thread

D

Deleted User

Guest
So i guess it's impossible.

WiiU uses a special file-format. And it might be that's why 300 = max. It means ~300 mbytes of picture-data (each picture 1 mbyte). Since it takes 150 seconds = 2 minutes,30 seconds to load those ~300 game-icons, there's your problem. It might be, this is the max. waiting-time coded into the Os to load game-icons...
 

PrisonMike

Member
Newcomer
Joined
Apr 11, 2020
Messages
14
Trophies
0
Location
Pittsburgh, PA
XP
93
Country
United States
WiiU uses a special file-format. And it might be that's why 300 = max. It means ~300 mbytes of picture-data (each picture 1 mbyte). Since it takes 150 seconds = 2 minutes,30 seconds to load those ~300 game-icons, there's your problem. It might be, this is the max. waiting-time coded into the Os to load game-icons...

So if someone were to code out the limit and develop a patch, then it could possibly be fixed.
 
D

Deleted User

Guest
So if someone were to code out the limit and develop a patch, then it could possibly be fixed.

Theoretically yes. But game-log wouldn't work, you know this?
This either means: These games would be completely ignoed in game-logging. Or game-logging would simply skip certain played games & just logs 300's most-played games. Which would make logging useless. Game-logging costs a lot of filesystem-performance!
 

PrisonMike

Member
Newcomer
Joined
Apr 11, 2020
Messages
14
Trophies
0
Location
Pittsburgh, PA
XP
93
Country
United States
Theoretically yes. But game-log wouldn't work, you know this?
This either means: These games would be completely ignoed in game-logging. Or game-logging would simply skip certain played games & just logs 300's most-played games. Which would make logging useless. Game-logging costs a lot of filesystem-performance!
Are there any other ways to fix this.
 

PrisonMike

Member
Newcomer
Joined
Apr 11, 2020
Messages
14
Trophies
0
Location
Pittsburgh, PA
XP
93
Country
United States
After doing research I have come to the conclusion that simply patching the title limit is incredibly unlikely, and maybe impossible. But I have another solution. A custom launcher that looks the same as the Wii U menu, with all the same features;
nameable and multicolored folders, that weird mii plaza on the gamepad. But with major improvements as well, such as...

-An option for a Switch like menu (here's an example https://amp.reddit.com/r/wiiu/comments/bdi82b/i_incorporated_the_nintendo_switchs_design/

-The option to turn off the Mii Plaza, showing the menu on the tv and gamepad

-Six different colored themes for both styles, White, Black, Blue, Red, Green, and Purple.

-Four new folder colors: Dark Blue, Magenta, White, and Dark Green

-The ability to hide apps

-A settings feature would be on the bottom left corner of the screen

-Most Importantly, no title limit

-It replaces the original menu. So when you turn the system on, it loads this custom menu

You may be saying "nobody needs that many games, just delete them", but me and other people know what's it's like to share a system with people with completely different tastes than yours.

In the end, I don't know how likely this will be of EVER happening, but for how great the Wii U, it truly deserves it.
 
  • Like
Reactions: jacobsson
D

Deleted User

Guest
Are there any other ways to fix this.

No. Except if you had more performance (cpu), which is currently being worked on (unlocking Wii´, since it still doesn´t work in WiiU-mode to unlock the cpu & have full speed usb/mass-storage).
Problem: No Windows does game-logging & no Steam can do it that complex. The accuracy is what´s costing you lots of performance.

Even assuming your cpu would be fast enough to handle game-logging 24/7 with more than 300 games simultaneously with no slowing-down of file-access, you d´have to patch the posix-internal-system and tell it a new limit (such as 1000) instead of keeping 300...
 

Drbadass

Member
Newcomer
Joined
Apr 12, 2020
Messages
12
Trophies
0
Age
40
XP
36
Country
United States
Don't get anything RA from the App Store.
Instead download it manually from here:
http://buildbot.libretro.com/nightly/nintendo/switch/libnx/

Scroll down and download the latest nightly from there, and unpack everything on your SD's root.
Then follow the instructions detailed here to get it to run:
https://docs.libretro.com/library/tyrquake/#loading-quake-and-expansion-paks

Once you're on RA, go to "Load Core", select Tyrquake, and then "Load content" and browse the files in your SD to search for the pak0/pak1.pak files for Quake or its missions. Remember to have the files with the structure detailed in the Tyrquake setup page.

One more thing...
NEVER run Homebrew from the Album app.
Always use title redirection to use anything RetroArch (and any other Homebrew app for that matter, except Edizon).
For using title redirection, simply try to boot any game you have on your system, but hold down the R button right as you select it. Hold R until you get into the Homebrew Launcher.

Then it should work just fine.

What specifically do you mean by Album app in what you said here:

"NEVER run Homebrew from the Album app.
Always use title redirection to use anything RetroArch (and any other Homebrew app for that matter, except Edizon)."
 

ShadowOne333

QVID PRO QVO
Developer
Joined
Jan 17, 2013
Messages
10,807
Trophies
1
XP
12,856
Country
Mexico
What specifically do you mean by Album app in what you said here:

"NEVER run Homebrew from the Album app.
Always use title redirection to use anything RetroArch (and any other Homebrew app for that matter, except Edizon)."
I got confused with RA WiiU and RA Switch, that was it lol
 

ShadowOne333

QVID PRO QVO
Developer
Joined
Jan 17, 2013
Messages
10,807
Trophies
1
XP
12,856
Country
Mexico
Either a new internet browser or updating the one it has, the Wii U on its day was the absolute best console for streaming, but it's been losing compatibility little by little, which is just sad
I'd kill for a proper updated internet browser for the WiiU.
Heck, the sole reason I still use my WiiU daily is because of the browser and still being able to play Youtube videos in it.

But sadly, many sites do not open on the U's browser anymore, and sites like Twitch no longer playback their videos on the U's browser, which they did a year ago :/
 
Last edited by ShadowOne333,

Slashser

New Member
Newbie
Joined
May 25, 2020
Messages
3
Trophies
0
Age
26
Location
CDMX, Mexico
Website
www.deviantart.com
XP
36
Country
Mexico
I'd kill for a proper updated internet browser for the WiiU.
Heck, the sole reason I still use my WiiU daily is because of the browser and still being able to play Youtube videos in it.

But sadly, many sites do mot open on the U's browser anymore, and sites like Twitch no longer playback their videos on the U's browser, which they did a year ago :/

I almost literally saw holanime dropping out of the Wii U's reach, one day I was happily watching School Rumble and the next day I only got an error message instead, this was last year and it was the last compatible anime page I know, now I have to settle with Crunchy's selection and what little anime there's on YouTube and Facebook, it was like the end of an era to me...
 
  • Like
Reactions: ShadowOne333

V10lator

Well-Known Member
Member
Joined
Apr 21, 2019
Messages
496
Trophies
0
Age
34
XP
1,378
Country
Germany
I would love a media player like Kodi on the Wiiu
That might happen soon now that @GaryOderNichts enabled hardware video decoding in WUT. :)

I would like an application that can change the region & language of the Wii U menu. i.e. NTSC-U & English to NTSC-J & Japanese language.
There's the System Config Tool made by Nintendo but changing these settings might brick the console, so test it in redNAND first!

Could you please stop giving out false information? It's really annoying to read your posts and we always have to correct your words, so let me do this:
Except if you had more performance (cpu), which is currently being worked on (unlocking Wii´, since it still doesn´t work in WiiU-mode to unlock the cpu
There are ways to unlock Wii U speeds in vWii. Overclocking the Wii U in Wii U mode might cause overheating and damaging your hardware, so we won't code something like that. To my knowledge nobody is working on overglocking the Wii U (in Wii U mode , where the CPU is already fullspeed). If you say there is someone working on it prove your words by linking the GitHub repo.

have full speed usb/mass-storage
We have fullspeed (around 40 Mbit/s to USB when using MCP to install games). The problem with the slow speed for homebrews is libiosuhax / WUPServer design: With this I only get around 500 Kbit/s but there might be ways to speed that up, just have to look into them when I find the time. Also there is no "recent USB patch" (that you mentioned in another thread) for Mocha or are you able to link it...?
To SD we already have what's physically possible, hell, we even see the SD cards do wear leveling / garbage collection runs while we do heavy writes and have to work around the slow I/O they are causing. That really woudn't be needed if we would write slow.
If anyone wants to see such a workaround look at this (WIP) I/O queue. It simply buffers over the slowdowns:
Code:
/***************************************************************************
 * This file is part of NUSspli.                                           *
 * Copyright (c) 2020 V10lator <[email protected]>                         *
 *                                                                         *
 * This program is free software; you can redistribute it and/or modify    *
 * it under the terms of the GNU General Public License as published by    *
 * the Free Software Foundation; either version 2 of the License, or       *
 * (at your option) any later version.                                     *
 *                                                                         *
 * This program is distributed in the hope that it will be useful,         *
 * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
 * GNU General Public License for more details.                            *
 *                                                                         *
 * You should have received a copy of the GNU General Public License along *
 * with this program; if not, write to the Free Software Foundation, Inc., *
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.             *
 ***************************************************************************/

#include <wut-fixups.h>

#include <stdbool.h>
#include <stdio.h>

#include <coreinit/fastmutex.h>
#include <coreinit/memdefaultheap.h>
#include <coreinit/memory.h>
#include <coreinit/thread.h>
#include <coreinit/time.h>
#include <gui/memory.h>

#include <ioThread.h>
#include <memdebug.h>
#include <utils.h>

#define IOT_STACK_SIZE        0x2000
#define MAX_IO_QUEUE_SIZE    64 * 1024 * 1024

struct WriteQueueEntry;
typedef struct WriteQueueEntry WriteQueueEntry;
struct WriteQueueEntry
{
    FILE *file;
    void *buf;
    size_t size;
    bool fast;
    WriteQueueEntry *next;
};

static OSThread ioThread;
static uint8_t ioThreadStack[IOT_STACK_SIZE];
static bool ioRunning = false;
static OSFastMutex *writeQueueMutex;
static WriteQueueEntry *writeQueue = NULL;
static WriteQueueEntry *lastWriteQueueEntry;
static size_t writeQueueSize = 0;

static inline void lockIOQueueAgressive()
{
    while(!OSFastMutex_TryLock(writeQueueMutex))
        ;
}

void executeIOQueue(bool unlock)
{
    if(writeQueue != NULL)
    {
        WriteQueueEntry *entry = writeQueue;
        writeQueue = entry->next;
        writeQueueSize -= entry->size;
        if(unlock)
            OSFastMutex_Unlock(writeQueueMutex);
       
        if(entry->buf != NULL)
        {
            fwrite(entry->buf, entry->size, 1, entry->file);
            if(entry->fast)
                MEM1_free(entry->buf);
            else
                MEMFreeToDefaultHeap(entry->buf);
        }
        else
        {
            fflush(entry->file);
            fclose(entry->file);
        }
       
        if(entry->fast)
            MEM1_free(entry);
        else
            MEMFreeToDefaultHeap(entry);
       
        return;
    }
    if(unlock)
        OSFastMutex_Unlock(writeQueueMutex);
}

int ioThreadMain(int argc, const char **argv)
{
    debugPrintf("I/O queue running!");
    while(ioRunning)
    {
        lockIOQueueAgressive();
        executeIOQueue(true);
    }
    return 0;
}

bool initIOThread()
{
    writeQueueMutex = MEM1_alloc(sizeof(OSFastMutex), 4);
    if(writeQueueMutex == NULL)
        return false;
   
    if(!OSCreateThread(&ioThread, ioThreadMain, 0, NULL, ioThreadStack + IOT_STACK_SIZE, IOT_STACK_SIZE, 0, OS_THREAD_ATTRIB_AFFINITY_CPU0)) // We move this to core 0 for maximum performance. Later on move it back to core 1 as we want download threads on core 0 and 2.
    {
        MEMFreeToDefaultHeap(&ioThread);
        MEM1_free(writeQueueMutex);
        return false;
    }
    OSSetThreadName(&ioThread, "NUSspli I/O");
   
    OSFastMutex_Init(writeQueueMutex, "NUSspli I/O Queue");
    OSFastMutex_Unlock(writeQueueMutex);
   
    ioRunning = true;
    OSResumeThread(&ioThread);
    return true;
}

void shutdownIOThread()
{
    if(!ioRunning)
        return;
   
    ioRunning = false;
    int ret;
    OSJoinThread(&ioThread, &ret);
    debugPrintf("I/O thread returned: %d", ret);
   
    flushIOQueue();
   
    MEM1_free(writeQueueMutex);
}

#ifdef NUSSPLI_DEBUG
size_t maxWriteQueueSize = 0;
#endif

size_t addToIOQueue(const void *buf, size_t size, size_t n, FILE *file)
{
    WriteQueueEntry *toAdd;
    void *newBuf;
    bool fast;
   
    if(buf != NULL)
    {
        size *= n;
        newBuf = MEM1_alloc(size, 4);
        fast = newBuf != NULL;
        if(fast)
        {
            toAdd = MEM1_alloc(sizeof(WriteQueueEntry), 4);
            if(toAdd == NULL)
            {
                MEM1_free(newBuf);
                fast = false;
            }
        }
        if(!fast)
        {
            newBuf = MEMAllocFromDefaultHeap(size);
            if(newBuf == NULL)
                return 0;
           
            toAdd = MEMAllocFromDefaultHeap(sizeof(WriteQueueEntry));
            if(toAdd == NULL)
            {
                MEMFreeToDefaultHeap(newBuf);
                return 0;
            }
#ifdef NUSSPLI_DEBUG
            if((writeQueueSize + size) >> 20 > maxWriteQueueSize)
            {
                maxWriteQueueSize = (writeQueueSize + size) >> 20;
                debugPrintf("I/O queue size: %d MB", maxWriteQueueSize);
            }
#endif
        }
       
        OSBlockMove(newBuf, buf, size, false);
    }
    else
    {
        toAdd = MEM1_alloc(sizeof(WriteQueueEntry), 4);
        fast = toAdd != NULL;
        if(!fast)
        {
            toAdd = MEMAllocFromDefaultHeap(sizeof(WriteQueueEntry));
            if(toAdd == NULL)
                return 0;
        }
       
        newBuf = NULL;
    }
   
    toAdd->buf = newBuf;
    toAdd->file = file;
    toAdd->size = size;
    toAdd->fast = fast;
    toAdd->next = NULL;
   
    lockIOQueueAgressive();
    if(newBuf != NULL)
    {
        while(writeQueueSize > MAX_IO_QUEUE_SIZE)
        {
            OSFastMutex_Unlock(writeQueueMutex);
            debugPrintf("Waiting for free slot...");
            OSSleepTicks(256);
            lockIOQueueAgressive();
        }
       
        writeQueueSize += size;
    }
   
    if(writeQueue == NULL)
        writeQueue = lastWriteQueueEntry = toAdd;
    else
        lastWriteQueueEntry = lastWriteQueueEntry->next = toAdd;
   
    OSFastMutex_Unlock(writeQueueMutex);
    return size;
}

void flushIOQueue()
{
    debugPrintf("Flushing...");
    lockIOQueueAgressive();
    while(writeQueue != NULL)
        executeIOQueue(false);
   
    OSFastMutex_Unlock(writeQueueMutex);
}

Problem: No Windows does game-logging & no Steam can do it that complex. The accuracy is what´s costing you lots of performance.
I wonder how all these game loggers (discord, for example) work then...

Even assuming your cpu would be fast enough to handle game-logging 24/7 with more than 300 games simultaneously with no slowing-down of file-access, you d´have to patch the posix-internal-system and tell it a new limit (such as 1000) instead of keeping 300...
Why should the Wii U simultaneusly log all games at once? Are you playing all games simultaneously or what? Show me how to start more than one game at the same time on the Wii U, please.

Also if more than 300 titles are impossible, how's that working:
-Most Importantly, no title limit

? So please, please stop that false claims.
 
Last edited by V10lator,

QuarkTheAwesome

Working for Hugs
Member
Joined
Apr 19, 2015
Messages
949
Trophies
1
Age
21
Location
Stuck in the PowerPC
XP
3,163
Country
Australia
There's the System Config Tool made by Nintendo but changing these settings might brick the console, so test it in redNAND first!
I think Spiik may also be able to do this? Not my area though. Changing settings in SCT on sysNAND is generally a bad idea.
 

V10lator

Well-Known Member
Member
Joined
Apr 21, 2019
Messages
496
Trophies
0
Age
34
XP
1,378
Country
Germany
That might happen soon now that @GaryOderNichts enabled hardware video decoding in WUT. :)
I wanted to add to this that I don't plan to write a media player as I think the first Wii U player should be made by @GaryOderNichts - simply because he made it possible to write such players in the first place and with him being the first media player author he would get all the credits he deserves. :) I just hope other devs are thinking the same.

I think Spiik may also be able to do this? Not my area though. Changing settings in SCT on sysNAND is generally a bad idea.
Also not my area, just saw these settings in SCT (which I'm using on sysNAND but I test everything I do with it in redNAND first).

//EDIT:
ScummVM and ResidualVM
I would like to play it in the gamepad.
Wait, are you saying there's still no ScummVM on the Wii U ? I didn't check as I already have it on my 3DS but ScummVM on a touch screen is just badass (point & click feels like it's made for touchscreens). I'm slowly learning GX2 (the Wii Us graphics API) so maybe I'll try to port it in the future. If some other dev wants to do that job before me feel free to do so, guess I'll need a long time anyway.
 
Last edited by V10lator,

GaryOderNichts

Well-Known Member
Member
Joined
Aug 9, 2018
Messages
504
Trophies
1
XP
2,934
Country
Germany
Theoretically yes. But game-log wouldn't work, you know this?
This either means: These games would be completely ignoed in game-logging. Or game-logging would simply skip certain played games & just logs 300's most-played games. Which would make logging useless. Game-logging costs a lot of filesystem-performance!
I'm currently reverse engineering the pdm lib which is also for the Daily Log. The PlayStats support up to 256 total entries and the PlayDiary (which is for the timeline) support 18250 entries.

Or what do you mean by "Game Logging"? The stuff you see in the Daily log?
 
Last edited by GaryOderNichts,

V10lator

Well-Known Member
Member
Joined
Apr 21, 2019
Messages
496
Trophies
0
Age
34
XP
1,378
Country
Germany
Or what do you mean by "Game Logging"? The stuff you see in the Daily log?
Arguing with this guy is pretty useless, just look at that: https://gbatemp.net/threads/the-revolution-of-wiiu-homebrew-begins.565837/ ... Either he's a troll or extremely learn resistant. Too sad that the other thread was closed before I saw it as I wanted to know what he means with "recent Mocha USB patch". The only Mocha USB patch I found is for FAT32 and years old... Also I can't find anything in Mocha Lite. But maybe he'll reply to that here (or finally realize he's wrong and be quiet).

//EDIT: But a inter-dev question (might ask it on Discord, too) : Why is no direct USB access possible? Is it just some permission problem not yet figured out / are there any official tools/games doing USB reads and/or writes (MCP doesn't count, I'm talking about RPX not RPL) so we could reverse-engineer?

//EDIT²: FSA is not replacing MCP codes but a complete own thing of WUPServer, right?
 
Last edited by V10lator,

SMVB64

Now your playing with power! Super power!
Member
Joined
Feb 13, 2013
Messages
228
Trophies
0
XP
750
Country
Canada
I have a request, I'm not a coder, so not sure how difficult this would be but a Mario 64 PC port to Wii U. The Switch has got its port and I do believe users have compiled the game for Power PC on Mac OS X
 
  • Like
Reactions: september796
General chit-chat
Help Users
    AncientBoi @ AncientBoi: [tells my mother on Kennie]