Hacking Nintendont

  • Thread starter Thread starter sabykos
  • Start date Start date
  • Views Views 10,170,210
  • Replies Replies 42,894
  • Likes Likes 194
I dont think its the Wii U. Maybe cause of console regions?
dkn for intance both splinter cell and the sequl pandora tomorow only work on my wiiu otherwise they freeze after licensed by nintendo on my wii, but there is games on the compat list i cant boot on the wiiu or wii and that game is batman begins tryed all region isos all md5 checked and no dice tryed 3 diferent usb devices and even on the SD, i guess some games may be more sensitive to maybe cluster sizes or something.
 
So that STILL leaves me with European Assault not booting since God knows when.
I am starting to think that is a Wii U specific issue, since I haven't tried the game on a Wii.
tested i can confirm european assault does not boot on the wiiu only on the wii tryed 4 times got black screen went back to the wii and it worked on the first try same hdd same iso
 
Do you use a hid controller? I use a wavebird and it disconnects too quickly. It only happened with SADX and a demo disc.

I just played for 15 mins and everything is smooth except for the button double trigger and I also noticed that they trigger when I release a button :p I was using R142
 
tested i can confirm european assault does not boot on the wiiu only on the wii tryed 4 times got black screen went back to the wii and it worked on the first try same hdd same iso

So as I thought, the problem is related to booting the game on the Wii U.
This could be a major thing when trying to know why a game boots for some people and why it does not for others.
It could be the ISO, Shrunk ISO, bad rip, wrong region, are some problems for a game not booting for some...

And now it seems that the console in which you boot them can also be a variable here.

Although, I have no idea as to why does that happen.
 
So as I thought, the problem is related to booting the game on the Wii U.
This could be a major thing when trying to know why a game boots for some people and why it does not for others.
It could be the ISO, Shrunk ISO, bad rip, wrong region, and now it seems that the console in which you boot them has something to do with that issue too.

Although, I have no idea as to why does that happen.
it seems to be only that game but only a dev with both wii and wiiu would be able to figure out why that happens tough.
 
But you said something about the Splinter Cell games too, right?
So that makes at least 3 games that have that issue.
but those aparently are only my issue since someone here said they booted on their normal wii my wii just doesnt want to boot them for some odd reason lol
 
but those aparently are only my issue since someone here said they booted on their normal wii my wii just doesnt want to boot them for some odd reason lol

Hahah well that's ood.
I booted Chaos Theory once on my Wii U and got it playing at around r1.114 or so.
All my games are tested on a Wii U so I cannot tell for the game booting on the Wii.

Anyway, only European Assault has that issue of booting on a Wii but not on Wii U as far as we know for now.
 
FIX94

I just finished doing some testing for the new reset function in r142 with the games I own.

(Original PAL Wii with gamecube controller, games all PAL except Auto Modelista which is NTSC)

Here is what happens when I press R + Z + Start

Auto Modelista - OK
Chibi Robo - Black Screen
Crazy Taxi - OK
F-Zero GX - OK
Ikaruga - OK
Kirby Air Ride - OK
Luigi's Mansion - OK
Mario Kart - Doubledash - OK
Mario Power Tennis - Black Screen
Sonic Adventure 2 Battle - OK
Sonic Mega Collection - OK
Star Wars: Rogue Leader - OK
Super Bust a Move All Stars - OK
Super Mario Sunshine - OK
Super Smash Bros Melee - OK
Zelda: Windwaker - OK
Timesplitter: Future Perfect - Black Screen
Viewtiful Joe 2 - OK
Wave Race: Blue Storm - Black Screen
 
cool thanks for letting me know, I would call that a good list for a first version of a experimental feature :)
 
did you try with the latest v1.142 build? because i did and it's working perfect!
update to latest version and use a clean 1:1 image of the game.
you must be using an outdated build.
ya your right, im using 1.141 ill go ahead update, thanks for the info :)
 
Argh, I still can't get argsboot to work for the life of me. Nintendont boots, but it ignores what I copy into the argv stuct. :nayps3:

It's really frustrating, especially when a hex dump into a char buffer looks correct to me (first arg is "usb://apps/nintendont/boot.dol", second is the NIN_CFG struct, which looks to be the correct size, and everything is set properly..).

Does anything look obviously wrong? A second set of eyes can probably help..

Edit: I think I found it, in DolBoot, it's overwriting my args with some other arbitrary args struct. Guess I need a custom version of DolBoot too. Ugh..

Edit 2: Well, it's not that. Even if I comment out the memmove and such in DolBoot, Nintendont still refuses to see the struct passed via argv. I'm about to just give up.

Code:
#define CMDL_ADDR      ((u8 *) 0x93200000+sizeof(struct __argv))
#define EXECUTE_ADDR  ((u8 *) 0x92000000)
#define BOOTER_ADDR    ((u8 *) 0x93000000)
#define ARGS_ADDR      ((u8 *) 0x93200000)
 
int LoadHB (char *path, u8 *addr)
    {
    FILE *f;
    int size;
    int chunks;
    int bytes;
    u8 *buff = addr;
 
    f = fopen (path, "rb");
    if (!f) return -1;
 
    fseek( f, 0, SEEK_END);
    size = ftell(f);
    fseek( f, 0, SEEK_SET);
 
    chunks = size / 10;
    if (chunks < 64)
        chunks = 64;
 
    bytes = 0;
    do
        {
        bytes += fread(buff, 1, chunks, f );
        buff = addr + bytes;
 
        MasterInterface (1, 0, TEX_HDD, "Loading '%s'...\n%d %% done", path, (bytes * 100) / size);
        }
    while (bytes < size);
 
    fclose (f);
    DCFlushRange((void *) addr, size);
 
    return size;
    }
 
    bool NIN_Boot(s_game *game, s_gameConfig *gameConf, char *error_string, int error_strlen)
    {
        // TODO: Make booting old Nintendont versions possible.
        if (false)
            return NIN_BootLegacy(game, gameConf, error_string, error_strlen);
 
        NIN_CFG config = { 0 };
        config.MagicBytes = NIN_MAGIC;
        config.Version = NIN_CFG_VERSION;
        config.Config = NIN_CFG_BIT_AUTO_BOOT;
 
        config.Config |= NIN_CFG_BIT_OSREPORT;
        config.Config |= NIN_CFG_BIT_USB;
        config.Config |= NIN_CFG_BIT_MEMCARDEMU;
        config.VideoMode |= NIN_VID_AUTO;
        config.Language = gameConf->ninLanguage;
 
        const char * const gamesPath = strstr(game->source, "/games/");
        sprintf(config.GamePath, "%s/game.iso", gamesPath);
 
        config.MaxPads = NIN_CFG_MAXPADS;
 
        memcpy(&config.GameID, game->asciiId, sizeof(int));
 
      Video_LoadTheme(0); // Make sure that theme isn't loaded
 
        CoverCache_Flush();
 
        if (LoadHB("usb://apps/nintendont/boot.dol", EXECUTE_ADDR) <= 0)
        {
            const char const *error = "Unable to load nintendont dol";
            strncpy(error_string, error, strlen(error));
            return false;
        }
 
        struct __argv arg;
        memset(&arg, 0, sizeof(struct __argv));
        arg.argvMagic = ARGV_MAGIC;
        arg.argc = 2;
 
        arg.commandLine = (char*)CMDL_ADDR;
        int len = strlen("usb://apps/nintendont/boot.dol");
 
      // memcpy(&arg.commandLine[0], "usb://apps/nintendont/boot.dol", strlen("usb://apps/nintendont/boot.dol"));
        sprintf(arg.commandLine, "%s", "usb://apps/nintendont/boot.dol");
        memcpy(&arg.commandLine[len + 1], &config, sizeof(NIN_CFG));
 
        len += sizeof(NIN_CFG);
 
        arg.length = len;
 
        arg.commandLine[len - 1] = '\0';
        arg.argv = &arg.commandLine;
        arg.endARGV = arg.argv + 1;
 
        memcpy(ARGS_ADDR, &arg, sizeof(struct __argv));
 
        DCFlushRange(ARGS_ADDR, sizeof(struct __argv));
 
        DolBoot();
 
        return false;
    }
 
void DolBoot (void)
    {
    u32 level;
 
    gprintf ("DolBoot\n");
 
    Shutdown ();
 
    memmove(ARGS_ADDR, &arg, sizeof(arg));
    DCFlushRange(ARGS_ADDR, sizeof(arg) + arg.length);
 
  // (...)
  // Snipped out some irrelevant stuff
 
 
    gprintf ("booter_dol\n");
    memcpy(BOOTER_ADDR, booter_dol, booter_dol_size);
    DCFlushRange(BOOTER_ADDR, booter_dol_size);
 
    entrypoint hbboot_ep = (entrypoint) BOOTER_ADDR;
 
    // Try to reload os... maybe this is not needed when NOT executed under homebrew, but a lot of
    // programs (like WiiMC) aren't able to find any usb device
    gprintf ("reload\n");
    ios_ReloadIOS (-1, NULL);
 
    // Execute dol
    gprintf ("execute\n");
    SYS_ResetSystem(SYS_SHUTDOWN, 0, 0);
    _CPU_ISR_Disable(level);
    __exception_closeall();
    hbboot_ep();
    _CPU_ISR_Restore(level);
    }
 
I'm trying to figure out how to load a cheat or a save on to my PAL and 1.2 versions of Super Smash Bros. Melee. I've had no luck so far, could anyone write a mini-tutorial or something?

I'm using USB Loader GX
 
The Fairly OddParents: Shadow Showdown (USA) [GFOE78] *WORKING*
Sources: 1:1 ISO and Shrunked Image
DSP: DSPv3
Nintendont Build: v1.142
Loader: USB Loader GX v.r1230
Memory Card Support: Yes
Widescreen 480p Support: Yes
Shrunk: Working / Shrunk Size: 1.34 GB
Status: Working

The Fairly OddParents - Breakin' Da Rules [GFWE78] *WORKING*
Sources: 1:1 ISO and Shrunked Image
DSP: DSPv3
Nintendont Build: v1.142
Loader: USB Loader GX v.r1230
Memory Card Support: Yes
Widescreen 480p Support: Yes
Shrunk: Working / Shrunk Size: 1.34 GB
Status: Working

The Powerpuff Girls: Relish Rampage (USA) [GPQE6L] *WORKING*
Sources: 1:1 ISO and Shrunked Image
DSP: DSPv4
Nintendont Build: v1.142
Loader: USB Loader GX v.r1230
Memory Card Support: Yes
Widescreen 480p Support: Yes
Shrunk: Working (Issue: Intro and cutscenes play silent) / Shrunk Size: 1.19 GB
Status: Working
Issue: Intro and cutscenes play silent

Homeland (Japan) [GHEJ91] *WORKING*
Sources: 1:1 ISO and Shrunked Image
DSP: DSPv9
Nintendont Build: v1.142
Loader: USB Loader GX v.r1230
Memory Card Support: Yes
Widescreen 480p Support: Yes
Shrunk: Working / Shrunk Size: 822 MB
Status: Working

Lemony Snicket's A Series Of Unfortunate Events (USA) [GLCE52] *WORKING*
Sources: 1:1 ISO and Shrunked Image
DSP: DSPv3
Nintendont Build: v1.142
Loader: USB Loader GX v.r1230
Memory Card Support: Yes
Widescreen 480p Support: Yes
Shrunk: Working / Shrunk Size: 1.28 GB
Status: Working

Monopoly Party (USA) [GMQE70] *WORKING*
Sources: 1:1 ISO and Shrunked Image
DSP: DSPv4
Nintendont Build: v1.142
Loader: USB Loader GX v.r1230
Memory Card Support: Yes
Widescreen 480p Support: Yes
Shrunk: Working / Shrunk Size: 867 MB
Status: Working
 
Argh, I still can't get argsboot to work for the life of me. Nintendont boots, but it ignores what I copy into the argv stuct. :nayps3:

It's really frustrating, especially when a hex dump into a char buffer looks correct to me (first arg is "usb://apps/nintendont/boot.dol", second is the NIN_CFG struct, which looks to be the correct size, and everything is set properly..).

Does anything look obviously wrong? A second set of eyes can probably help..

I cant directly see anything wrong with it no, I guess I would need to see the whole code to understand whats wrong.
 
I cant directly see anything wrong with it no, I guess I would need to see the whole code to understand whats wrong.

I figured it out. I was using NIN_CFG_BIT_AUTO_BOOT by accident in setting up the config (and Nintendont rejects the in-memory argv struct if NIN_CFG_AUTO_BOOT isn't set).
 

Site & Scene News

Popular threads in this forum