1. AbdallahTerro

    OP AbdallahTerro da KiNG
    Member

    Joined:
    Jan 14, 2012
    Messages:
    6,052
    Country:
    Nintendont MasterMOD by ABZ

    Latest Version Download Link
    Latest Source Patch Download Link

    Website: http://send0r.de/Nintendont/MasterMod/


    Background Info:
    -----------------
    Nintendont Mastermod is a Fork of "Nintendont" the famous GC loader for Wii and WiiU/vWii, with the following features:

    1. Supports using and online downloading custom backgrounds for the Nintendont application using white and black font colors
    This includes more than 60 readily available themes online, downloadable from within the app
    2. Supports using and online downloading Loading backgrounds with and without progress bars, replacing the verbose output
    This includes more than 1000 themes including 2 for each GC game (with and without a progress bar)
    3. Supports silent booting of the games into a black screen
    4. Online updates for latest mastermod revision, older stable revisions and other Nintendont Mods
    5. Online download of GC and Triforce bios files
    6. Many tweaks such as custom Nunchuck button maps, custom HDD pinging option

    Changelog:
    ------------
    * Added Missing themes detection when downloading all custom game themes
    * Added Preview Pack for loader and app themes (can be enabled or disabled)
    * Nintendont Mastermod can now download all custom game themes with one click
    * Updated Mastermod to v4.xxx using new FatFS support
    * Added 16 Black Nintendont Backgrounds
    * Added More stable revisions v2.x and 3.x to Stable Nintendont Download Menu

    * All Custom Game Loader Themes are downloadable via the mod and available online
    * Loader Themes now also work when the game is booted using Nintendont app
    * Added Custom Game Theme as loaders themes using ID3.png or ID3X.png

    * Added Credits Page
    * Added 16 Gradient Themes for Nintendont App
    * Added 16 Unicolor Themes for Nintendont App
    * Added 16 Dark Themes for Nintendont App + Fade in/out effects
    * Added Disable HDD pinging to settings, when off default timer set to 1 min 50 secs
    * Added Segaboot bios download for Triforce games
    * Added ipl-bios fixes when booting games, ipl files
    * Added Nunchuck support using the following configurations:
    Nintendont MasterMod Nunchuck Configs and Button maps:
    Available Configs:
    ------------------
    (2) = Alt-Naggers (default) //convenient for most games uses c+Dpad as c-stick
    (2 + plus) = Naggers config //uses tilt as c-stick
    (2 + minus) = Troopage config //handy in many situations
    (2 + Left) = Abz general config //for arcade games or games that require few buttons
    (2 + right) = Howards general config //matching button names to action
    (2 + up) = racing 1 //for games that use AnalogR and AnalogL for gas and break
    (2 + down) = racing 2 //for games that require A held for gas

    You can select configs and enable/disable IR by:
    ------------------------------------------------
    press button_2 (puts in config mode and turns IR off)
    press config button (selects the desired config - skip this step for the default)
    release the config button (keep holding button_2)
    press button_Z (turns IR on or off for the just selected config. If the wiimotes is pointed at the screen you can see IR toggle on and off if the screen accepts cStick input. )
    release button_Z
    release button_2 (ends configuration)

    Full button mapping:
    --------------------
    Home = Start/Pause in all configs
    (2+1) = Exit to Loader or HBC in all configs
    --------------------------------------------
    Press (2 or 2&Z) = Alt-Naggers or Shooters
    //A=A B=R Z=L (+ = 1/2R) (- = 1/2L)
    //C or B not held Up=Z Down=B Right=X Left=Y B=R Z=L
    //C held Dpad=controls cStick Z=1/2L B=1/2R
    //B held DPAD=Standard

    Press (2&Z) to to enable/disable IR for Shooters config
    in shooters config IR controls c-Stick thus c+DPAD=Standard

    Press (2 & plus) = Naggers
    //same as Alt-naggers with tilt as C-STICK with C button held and C+DPAD as GC-DPAD

    Press (2 + minus ± Z) = Troopage config (add (Z) to to enable IR as c-stick) (add (Z) to enable IR as c-stick)
    //A=A
    //C not pressed +=X -=B Z=L B=R Dpad=cStick
    //C pressed +=Y -=Z Z=1/2L B=1/2R Dpad=Standard

    Press (2 + Left ± Z) = Abz general config
    //A=A B=B C=X Z=Y -=Z +=R Dpad=Standard

    Press (2 + right ± Z) = Howards general config
    //A=A B=B Z=Z +=X -=Y Dpad=Standard
    //C not pressed L R tilt tied to L R analog triggers.
    //C pressed tilt control the cStick

    Press (2 + up ± Z) = racing games that use AnalogR and AnalogL for gas and break
    //A=A B=B Z=Z +=X -=Y Dpad=Standard
    //C not pressed backwards forward tilt tied to L R analog triggers.
    //C pressed tilt control the cStick

    Press (2 + down ± Z) = racing games that require A held for gas
    //A=Z B=B Z=A +=X -=Y Dpad=Standard
    //C not pressed L R tilt tied to L R analog triggers.
    //C pressed tilt control the cStick
    --------------------------------------------------------------------------------------------------------------------------------

    The Updates and Themes Download Menu:

    [​IMG]

    Now you can preview a theme before downloading it too!
    [​IMG]

    Nintendont Mastermod can download:

    *All Custom Game Loader themes with or without progress bar (Available for all 600 games)
    [​IMG][​IMG][​IMG][​IMG]

    *Loader themes with progress bars (For USB Loader Users)
    [​IMG]

    *Nintendont App Light Themes
    [​IMG]

    *Nintendont App Dark Themes
    [​IMG]

    *Nintendont App Gradient Themes
    [​IMG]

    *Nintendont App Black themes
    [​IMG]

    *Nintendont App Unicolor Themes
    [​IMG]

    It also has a beautiful credits page:
    [​IMG]

    Since Many new themes gets added periodically, all removed themes can be found here:
    https://www.dropbox.com/sh/o45wvndxaakj6kv/AABwxWmuY6HEqcIxVyXczoXwa?dl=0

    It also has an online internal updater
    For first time users or to manually install the latest mod download it from here:

    Manual update link: http://nintendont.gxarena.com/themes/boot.dol
    Source Patch: http://nintendont.gxarena.com/themes/Themes.patch


    To manually update the backgrounds or to use your custom ones:
    Here's a link to all backgrounds (loader + nintendont) in a single 7zip file, for users who don't want to connect the wii online for update purposes:
    http://www.mediafire.com/download/ocp3sdddr3fvdq7/All_Themes.7z

    Use one Loader/Game Loader theme and one Nintendont theme at a time

    To manually install your custom PNG background:
    ------------------------------------------------------------------
    *Loader Theme:
    Place NinBackLight.png or NinBackDark.png or NinBackBars.png or NinBackNoBar.png in ( /apps/nintendont) folder

    *Custom Game Loader Themes:

    Place ID3.png (splash screen) or ID3X.png (loading bar) in ( /apps/nintendont) folder
    P.S> Delete all Loader themes mentioned above first
    ID3 is the first 3 letters/Numbers of the game ID
    ID3X is same as ID3 with an "X" as 4th letter

    *Nintendont App Theme:

    Place NinBack.png for Light Background-Black text or NinLegacy.png for Dark Background-White text in ( /apps/nintendont) folder

    In case B is pressed during autoboot, the default theme, NinBack.png or NinLegacy.png gets loaded automatically
    Also same when launched from HBC with autoboot off

    Recommended USB Loaders:
    --------------------------------------
    WiiFlow MasterMod: http://nintendont.gxarena.com/banners/wiiflow_mastermod_wiiuwide.7z

    WiiFlow 1076 Mod: http://nintendont.gxarena.com/banners/wiiflow_1076_mod_wiiuwide.7z

    USB Loader GX 1243: http://www.mediafire.com/download/23w0our2lle1g72/R1243.7z

    USB Loader GX 1234 DS3-WUP Default-GUI Mod: https://dl.dropboxusercontent.com/u/101209384/ds3/usbloader-gui-read-only-1234-ds3-wup-patch.rar

    USB Loader GX 1234 DS3-WUP Tabs-GUI Mod: http://nintendont.gxarena.com/banners/1234mod-ds3-wup-tabs-boot.7z

    CFG USB Loader rev 70.78: http://nintendont.gxarena.com/banners/usbloader_cfg.7z

    CFG USB Loader rev 71-Taiwan: https://www.dropbox.com/s/nk23gtnv6z9rokq/cfg71beta49t2.rar?dl=0

    CFG USB Loader Mod rev 70.78.8 by nitraiolo: http://nintendont.gxarena.com/banners/cfg_mod_70_78_8.7z

    P.S> these CFG dols use their own app and loader backgrounds stored in \apps\usbloader so cancel autoboot and download the custom backgrounds on first use
    for the Taiwan-mod nintendont's boot.dol can also be renamed "loader.dol" and placed in "\usb-loader" folder

    --------------------------------------------------------------------------------------------------------------------------------
    Mr. Mysterio has created a Nintendont mod that plays the BIOS animation on a separate thread while the game is booting.
    Link: http://send0r.de/Nintendont/Mr. Mysterio's Mod/
    Special thanks to send0r for keeping this updated to the latest Nintendont version.
    --------------------------------------------------------------------------------------------------------------------------------


    Historical Background:
    First big THANKS to the nintendont coders, devs and commiters for the great job they did already.

    Since Nintendont rev2.217+ supports custom Background and TrueType Fonts I made this thread to help users create custom nintendont mods using the existing code. (special thanks to JoostinOnline for making this update)

    Nintendont is officially using one of the best backgrounds made back then in the nintendont logo competition.
    A verbose loading info is displayed to show loading and error messages.
    [​IMG]
    I'll show you how you can make a build that looks like this:


    [​IMG]

    Let's start:
    ------------
    1. So where are the source files located:

    the background and font are found in "nintendon-t-read-only\loader\data\" folder
    background.png and font.ttf respectively (small caps including extension)

    the code used to display the verbose info is found in both main.c and menu.c files located in "nintendon-t-read-only\loader\source" folder

    menu.c has the info used to display Nintendont version/build and firmware in upper left corner
    at the end of the file:
    Code:
    void PrintInfo()
    {
            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*1, "Nintendont Loader v%d.%d (%s)", NIN_VERSION>>16, NIN_VERSION&0xFFFF, IsWiiU() ? "Wii U" : "Wii");
            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*2, "Built  : %s %s", __DATE__, __TIME__ );
            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*3, "Firmware: %d.%d.%d", *(vu16*)0x80003140, *(vu8*)0x80003142, *(vu8*)0x80003143 );
    }
    
    This defines the font size, color, x position, y position, text to display

    we can edit this text to make our own title for instance:
    PrintFormat(22, 0xFFFFFF00, MENU_POS_X + 50*1, MENU_POS_Y + 50*1, "Nintendont Loader v%d.%d (%s)", NIN_VERSION>>16, NIN_VERSION&0xFFFF, IsWiiU() ? "Wii U" : "Wii");
    PrintFormat(14, 0xFFFFFF00, MENU_POS_X + 200*1, MENU_POS_Y + 40*2, "Custom Nunchuck Mod by Abz");
    [​IMG]


    main.c on the other hand has all the other verbose stuff including "Press B to cancel Autoboot" in the center, Press Home, A, B for settings at the top right corner and all the loading progress stuff, like checking DI, FS and what not....

    Press B to cancel autoboot is in line 233
    PrintFormat(DEFAULT_SIZE, BLACK,320-90, MENU_POS_Y +20*10,"B: Cancel Autoboot");

    Home:Exit A:Select SD/USb in lines 263-268
    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X + 430, MENU_POS_Y + 20*1, "Home: Exit");
    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X + 430, MENU_POS_Y + 20*2, "A : Select");
    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X + 53 * 6 - 8, MENU_POS_Y + 20 * 6, UseSD ? "<" : " ");
    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X + 53 * 6 - 8, MENU_POS_Y + 20 * 7, UseSD ? " " : "<");
    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X + 47 * 6 - 8, MENU_POS_Y + 20 * 6, " SD ");
    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X + 47 * 6 - 8, MENU_POS_Y + 20 * 7, "USB ")

    The verbose loading and error messages in lines 453-570
    Code:
            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*6, "Loading patched kernel ...\r\n");
            UpdateScreen();
            while(1)
            {
                    DCInvalidateRange( (void*)0x90004100, 0x20 );
                    if( STATUS_LOADING == 0xdeadbeef )
                            break;
    
                    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*6, "Loading patched kernel... %d", STATUS_LOADING);
                    if(STATUS_LOADING == 0)
                    {
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*7, "ES_Init...");
                    // Cleans the -1 when it's past it to avoid confusion if another error happens. e.g. before it showed "81" instead of "8" if the controller was unplugged.
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X + 163, MENU_POS_Y + 20*6, " ");
                    }
                    if(STATUS_LOADING > 0 && STATUS_LOADING < 20)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*7, "ES_Init... Done!");
                    if(STATUS_LOADING == 2)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*8, "Init SD device...");
                    if(STATUS_LOADING > 2 && STATUS_LOADING < 20)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*8, "Init SD device... Done!");
                    if(STATUS_LOADING == -2)
                            PrintFormat(DEFAULT_SIZE, MAROON, MENU_POS_X, MENU_POS_Y + 20*8, "Init SD device... Error! %d  Shutting down", STATUS_ERROR);
                    if(STATUS_LOADING == 3)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*9, "Mounting USB/SD device...");
                    if(STATUS_LOADING > 3 && STATUS_LOADING < 20)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*9, "Mounting USB/SD device... Done!");
                    if(STATUS_LOADING == -3)
                            PrintFormat(DEFAULT_SIZE, MAROON, MENU_POS_X, MENU_POS_Y + 20*9, "Mounting USB/SD device... Error! %d  Shutting down", STATUS_ERROR);
                    if(STATUS_LOADING == 5)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*10, "Checking FS...");
                    if(STATUS_LOADING > 5 && STATUS_LOADING < 20)
                    {
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*10, "Checking FS... Done!");
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*11, "Drive size: %.02f%s Sector size: %d", STATUS_DRIVE, STATUS_GB_MB ? "GB" : "MB", STATUS_SECTOR);
                    }
                    if(STATUS_LOADING == -5)
                            PrintFormat(DEFAULT_SIZE, MAROON, MENU_POS_X, MENU_POS_Y + 20*10, "Checking FS... Error! %d Shutting down", STATUS_ERROR);
                    if(STATUS_LOADING == 6)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*12, "ES_LoadModules...");
                    if(STATUS_LOADING > 6 && STATUS_LOADING < 20)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*12, "ES_LoadModules... Done!");
                    if(STATUS_LOADING == -6)
                            PrintFormat(DEFAULT_SIZE, MAROON, MENU_POS_X, MENU_POS_Y + 20*12, "ES_LoadModules... Error! %d Shutting down", STATUS_ERROR);
                    if(STATUS_LOADING == 7)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*13, "Loading config...");
                    if(STATUS_LOADING > 7 && STATUS_LOADING < 20)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*13, "Loading config... Done!");
                    if(STATUS_LOADING == 8)
                    {
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*14, "Init HID devices... ");
                            if ( STATUS_ERROR == 1)
                            {
                                    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*15, "          Plug Controller in %s usb port", IsWiiU() ? "BOTTOM REAR" : "TOP");
                            }
                            else
                                    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*15, "%50s", " ");
                    }
                    if(STATUS_LOADING > 8 && STATUS_LOADING < 20)
                    {
                            if ((ncfg->MaxPads == 1) && (ncfg->Config & NIN_CFG_HID))
                                    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*14, "Init HID devices... Using Gamecube and HID Ports");
                            else if ((ncfg->MaxPads > 0) && (ncfg->Config & NIN_CFG_HID))
                                    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*14, "Init HID devices... Using Gamecube, HID, and BT Ports");
                            else if (ncfg->MaxPads > 0)
                                    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*14, "Init HID devices... Using Gamecube and BT Ports");
                            else if (ncfg->Config & NIN_CFG_HID)
                                    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*14, "Init HID devices... Using HID and Bluetooth Ports");
                            else
                                    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*14, "Init HID devices... Using Bluetooth Ports... Done!");
                    }
                    if(STATUS_LOADING == -8)
                    {
                            PrintFormat(DEFAULT_SIZE, MAROON, MENU_POS_X, MENU_POS_Y + 20*14, "Init HID devices... Failed! Shutting down");
                            switch (STATUS_ERROR)
                            {
                                    case -1:
                                            PrintFormat(DEFAULT_SIZE, MAROON, MENU_POS_X, MENU_POS_Y + 20*15, "No Controller plugged in %s usb port %10s", IsWiiU() ? "BOTTOM REAR" : "TOP", " ");
                                            break;
                                    case -2:
                                            PrintFormat(DEFAULT_SIZE, MAROON, MENU_POS_X, MENU_POS_Y + 20*15, "Missing %s:/controller.ini %20s", GetRootDevice(), " ");
                                            break;
                                    case -3:
                                            PrintFormat(DEFAULT_SIZE, MAROON, MENU_POS_X, MENU_POS_Y + 20*15, "Controller does not match %s:/controller.ini %6s", GetRootDevice(), " ");
                                            break;
                                    case -4:
                                            PrintFormat(DEFAULT_SIZE, MAROON, MENU_POS_X, MENU_POS_Y + 20*15, "Invalid Polltype in %s:/controller.ini %12s", GetRootDevice(), " ");
                                            break;
                                    case -5:
                                            PrintFormat(DEFAULT_SIZE, MAROON, MENU_POS_X, MENU_POS_Y + 20*15, "Invalid DPAD value in %s:/controller.ini %9s", GetRootDevice(), " ");
                                            break;
                                    case -6:
                                            PrintFormat(DEFAULT_SIZE, MAROON, MENU_POS_X, MENU_POS_Y + 20*15, "PS3 controller init error %25s", " ");
                                            break;
                                    default:
                                            PrintFormat(DEFAULT_SIZE, MAROON, MENU_POS_X, MENU_POS_Y + 20*15, "Unknown error %d %35s", STATUS_ERROR, " ");
                                            break;
                            }
                    }
                    if(STATUS_LOADING == 9)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*15, "Init DI... %40s", " ");
                    if(STATUS_LOADING > 9 && STATUS_LOADING < 20)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*15, "Init DI... Done! %35s", " ");
                    if(STATUS_LOADING == 10)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*16, "Init CARD...");
                    if(STATUS_LOADING > 10 && STATUS_LOADING < 20)
                            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*16, "Init CARD... Done!");
                    Screenshot();
                    GRRLIB_Screen2Texture(0, 0, screen_buffer, GX_FALSE); // Copy all status messages
                    GRRLIB_Render();
                    GRRLIB_DrawImg(0, 0, background, 0, 1, 1, 0xFFFFFFFF);
                    PrintInfo();
            }
    
            gprintf("Nintendont at your service!\r\n");
    
            GRRLIB_DrawImg(0, 0, screen_buffer, 0, 1, 1, 0xFFFFFFFF); // Draw all status messages
            PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*17, "Nintendont kernel looping, loading game...");
    
    

    To hide a line you need to comment the code by adding // at the beginning of PrintFormat line
    ex: hiding Press B to cancel Autoboot
    //PrintFormat(DEFAULT_SIZE, BLACK, 320 - 90, MENU_POS_Y + 20*10, "B: Cancel Autoboot");

    The code I used to make the old progress bar is the following:
    Code:
        PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 50*1, MENU_POS_Y + 20*19, "||||||||||||||||||");
        UpdateScreen();
        while(1)
        {
            DCInvalidateRange( (void*)0x90004100, 0x20 );
            if( STATUS_LOADING == 0xdeadbeef )
                break;
    
            PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 50*1, MENU_POS_Y + 20*19, "||||||||||||||||||");
            if(STATUS_LOADING == 0)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 90*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING > 0 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 110*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING == 2)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 130*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING > 2 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 150*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING == 3)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 170*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING > 3 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 190*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING == 4)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 210*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING > 4 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 230*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING == 5)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 250*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING > 5 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 270*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING == 6)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 290*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING > 6 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 310*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING == 7)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 330*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING > 7 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 350*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING == 8)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 370*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING > 8 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 390*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING == 9)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 410*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING > 9 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 430*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING == 10)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 450*1, MENU_POS_Y + 20*19, "|||||||||");
            if(STATUS_LOADING > 10 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 470*1, MENU_POS_Y + 20*19, "|||||||||");
            FPAD_Update();
            Screenshot();
            GRRLIB_Screen2Texture(0, 0, screen_buffer, GX_FALSE); // Copy all status messages
            GRRLIB_Render();
            GRRLIB_DrawImg(0, 0, background, 0, 1, 1, 0xFFFFFFFF);
            PrintInfo();
        }
    
        //gprintf("Nintendont at your service!\r\n");
    
        GRRLIB_DrawImg(0, 0, screen_buffer, 0, 1, 1, 0xFFFFFFFF); // Draw all status messages
                PrintFormat(DEFAULT_SIZE, 0xFFFFFF00, MENU_POS_X + 490*1, MENU_POS_Y + 20*19, "|||||||||");
        GRRLIB_Render();
    
    I used the Gamecuben Font:http://www.dafont.com/gamecube.font
    and This background:
    [​IMG]

    The new Progress bar is a continuous loading strip
    [​IMG]
    I used "Times New Roman font and this code to make it work:
    Code:
        while(1)
        {
            DCInvalidateRange( (void*)0x90004100, 0x20 );
            if( STATUS_LOADING == 0xdeadbeef )
                break;
            PrintInfo();
            PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 50*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING == 0)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 90*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING > 0 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 110*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING == 2)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 130*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING > 2 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 150*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING == 3)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 170*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING > 3 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 190*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING == 4)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 210*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING > 4 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 230*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING == 5)
              PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 250*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING > 5 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 270*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING == 6)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 290*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING > 6 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 310*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING == 7)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 330*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING > 7 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 350*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING == 8)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 370*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING > 8 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 390*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING == 9)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 410*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING > 9 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 430*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING == 10)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 450*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            if(STATUS_LOADING > 10 && STATUS_LOADING < 20)
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 470*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
            GRRLIB_Screen2Texture(0, 0, screen_buffer, GX_FALSE); // Copy all status messages
            GRRLIB_Render();
            GRRLIB_DrawImg(0, 0, background, 0, 1, 1, 0xFFFFFFFF);
            PrintInfo();
        }
    
        //gprintf("Nintendont at your service!\r\n");
    
        GRRLIB_DrawImg(0, 0, screen_buffer, 0, 1, 1, 0xFFFFFFFF); // Draw all status messages
                PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 490*1, MENU_POS_Y + 20*19, "\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88");
        GRRLIB_Render();
    //    memcpy( (void*)0x80000000, (void*)0x90140000, 0x1200000 );
        DVDStartCache();
        GRRLIB_FreeTexture(background);
        GRRLIB_FreeTexture(screen_buffer);
        GRRLIB_FreeTTF(myFont);
        GRRLIB_Exit();
    

    You can also hide all verbose stuff altogether to make loading screens like the ones below by just adding
    Code:
    return;
    to the first line of PrintFormat (nintendon-t-read-only\loader\source\font.c)
    [​IMG]

    [​IMG]

    Please feel free to share your custom mods and backgrounds/fonts/sources here to keep all this stuff in one place. This will keep the main nintendont thread clean.

    My custom mods has nunchuck support which is still a private beta wip stuff, so I won't be able to share them here until this stuff is officially commited, however all the info needed to make them is there now and I'll be glad to help you out.

    Download links for my mods - no nunchuck support:

    rev 234 and 223 (with ustealth support)
    rev 223

    To take screensots of the loading screen you need to edit the source:
    uncomment \loader\include\global.h line 41:
    #define SCREENSHOT

    and add this code not in bold to /loader/source/main.c line around line 256 between the bold lines:

    ncfg->VideoMode &= ~NIN_VID_PROG;

    #ifdef SCREENSHOT
    GRRLIB_DrawImg(0, 0, background, 0, 1, 1, 0xFFFFFFFF);
    PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 50*1, MENU_POS_Y + 20*19, "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588");
    PrintFormat(DEFAULT_SIZE, 0x45587C00, MENU_POS_X + 50*1, MENU_POS_Y + 20*19, "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588");
    GRRLIB_ScrShot("Screenshot.png");
    GRRLIB_DrawImg(0, 0, background, 0, 1, 1, 0xFFFFFFFF);
    #endif

    if((ncfg->Config & NIN_CFG_AUTO_BOOT) == 0)

    My Nintendont Mod now uses works in the following manner:
    you have to place either NinBackLight.png or NinBackDark.png in the boot.dol or loader dol folder
    then you get 3 cases:
    1. no NinBackLight.png or NinBackDark.png >> Nintendont boots normally using default background
    2. NinBackDark.png is found >> Nintendont will hide all text and loads that background with a silver loading progress bar
    3. NinBackLight.png is found or both files found >> Nintendont will hide all text and loads that background with a custom purple loading progress bar

    In case B is pressed during autoboot, the default theme gets loaded automatically
    Also the default background will load when launched from HBC with autoboot off

    here's the download link for rev240 folder, 2 sample pngs included:
    https://www.dropbox.com/sh/66yqzf5cduh9mqu/AAC8_gGflDH2mYmc574ZY4EGa?dl=0


    sample NinBackDark.png file:
    [​IMG]

    And for rev 241 with both default font and Times New Roman font (latter has wider and sharper progress bar)

    rev241 with default font
    https://www.dropbox.com/sh/88s22zwolzyqmvr/AADG4fyk4Yha911LoAkj1dtVa?dl=0

    rev241 with Times NR font
    https://www.dropbox.com/sh/lipfp8a68jopufp/AACF2HoVcDCflwF33uove2NDa?dl=0

    Backgrounds included in Dropbox folders for both the default font and the Times NR mod

    rev247 using condensed default font to fix smoothness of progress bar
    https://www.dropbox.com/sh/uyx1vtsgyuvr2ok/AACl2Vf_wiYV21qB53aARQI9a?dl=0
    Colors and Hex codes:
    For all the color codes: http://www.nthelp.com/colorcodes.htm
    Unicode and UTF-8 Codes: http://www.utf8-chartable.de/unicode-utf8-table.pl?start=9600&number=128&names=-&utf8=string-literal
     
    Last edited by AbdallahTerro, Jul 23, 2016
    Darksabre72, CORE, SuperDan and 25 others like this.
  2. ShadowOne333

    ShadowOne333 QVID PRO QVO
    Developer

    Joined:
    Jan 17, 2013
    Messages:
    10,377
    Country:
    Mexico
    Great!
    Thanks for the mods, Abz!
    I will keep an eye on this thread and help with anything I can :)
     
  3. DemitriArcane

    DemitriArcane GBAtemp Regular
    Member

    Joined:
    Nov 20, 2014
    Messages:
    129
    Country:
    This is good thanks but i have a request. Could you make the Gamecube Intro into the loading screen for Nintendont. I would like to somehow see this boot before the game does, even if it is modified a little to show Nintendont Gamecube instead of nintendo. (Possibly Colour change the cube as well)

     
  4. AbdallahTerro

    OP AbdallahTerro da KiNG
    Member

    Joined:
    Jan 14, 2012
    Messages:
    6,052
    Country:
    not possible atm
     
  5. DemitriArcane

    DemitriArcane GBAtemp Regular
    Member

    Joined:
    Nov 20, 2014
    Messages:
    129
    Country:
    I hope you find a way, it would be brilliant then.
     
  6. Adeka

    Adeka Beta Tester
    Member

    Joined:
    Mar 19, 2013
    Messages:
    4,164
    Country:
    United States
    Yet another Nintendont thread for a total of 5 (normal, controller.ini, NC, savegame, and this)

    Going to add this thread to my signature:ha:
     
    Jayro, NicoCP and AbdallahTerro like this.
  7. AbdallahTerro

    OP AbdallahTerro da KiNG
    Member

    Joined:
    Jan 14, 2012
    Messages:
    6,052
    Country:
    I'll share custom backgrounds here too:

    [​IMG]
     
    JFalcon, minexew, Margen67 and 2 others like this.
  8. AbdallahTerro

    OP AbdallahTerro da KiNG
    Member

    Joined:
    Jan 14, 2012
    Messages:
    6,052
    Country:
    correct me if I'm wrong:

    To show one status at a time (to make things look like USBLoader GX loading screen for instance) you need to comment or delete all the if functions like the one below in bold with > and < function

    if(STATUS_LOADING ==2)
    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*8, "Init SD device...");
    if(STATUS_LOADING > 2 && STATUS_LOADING < 20)
    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*8, "Init SD device... Done!");
     
  9. DemitriArcane

    DemitriArcane GBAtemp Regular
    Member

    Joined:
    Nov 20, 2014
    Messages:
    129
    Country:
    what size should the image be?
     
  10. AbdallahTerro

    OP AbdallahTerro da KiNG
    Member

    Joined:
    Jan 14, 2012
    Messages:
    6,052
    Country:
    640x480 pixels in png format, like the ones I posted above
     
    cvskid likes this.
  11. DemitriArcane

    DemitriArcane GBAtemp Regular
    Member

    Joined:
    Nov 20, 2014
    Messages:
    129
    Country:
    Ok i'll make you some custom ones as well.
     
  12. NicoCP

    NicoCP Member
    Newcomer

    Joined:
    Aug 7, 2013
    Messages:
    49
    Country:
    Argentina

    Yes, exactly.

    I also deleted/commented the lines between brackets, for example:

    if(STATUS_LOADING ==2)
    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*8, "Init SD device...");
    if(STATUS_LOADING > 2 && STATUS_LOADING < 20)
    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*8, "Init SD device... Done!");

    Or:

    if(STATUS_LOADING ==2)
    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*8, "Init SD device...");
    if(STATUS_LOADING > 2 && STATUS_LOADING < 20) {
    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*8, "Init SD device... Done!");
    PrintFormat(DEFAULT_SIZE, BLACK, MENU_POS_X, MENU_POS_Y + 20*8, "Another text");
    }
     
  13. AbdallahTerro

    OP AbdallahTerro da KiNG
    Member

    Joined:
    Jan 14, 2012
    Messages:
    6,052
    Country:
    yeah thanks, just making sure the info is correct
     
  14. Acidflare

    Acidflare HomeBrew Beta Tester
    Member

    Joined:
    Aug 16, 2013
    Messages:
    1,106
    Country:
    Canada
    so is there 1 or 2 lines of verbosity on the loading screens now? or are you guys working on it?
     
  15. DemitriArcane

    DemitriArcane GBAtemp Regular
    Member

    Joined:
    Nov 20, 2014
    Messages:
    129
    Country:
    So far i got these
    [​IMG]
    [​IMG][​IMG]
     
  16. NicoCP

    NicoCP Member
    Newcomer

    Joined:
    Aug 7, 2013
    Messages:
    49
    Country:
    Argentina
    I was working on a mod that when you load a game, you have the GameCube logo in the center, and all the verbose loading text is centered below that logo, on a single line.
    That way, if something goes wrong while loading a game, it tells you what went wrong (like the original dol, but it doesn't fill the whole screen with text).

    So far I made some little tests, and the changes I made are:
    • Change the font color to white (my background is black)
    • Comment all the ifs like "if(STATUS_LOADING > ....)" (including the PrintFormat under it)
    • Change where it prints the text, all set with the same MENU_POS_Y + some value and variable MENU_POS_X (depends on the lenght of the message)
    Also, this only looks nice if you load games from an USB Loader. If you start Nintendont from the Homebrew Channel, well... it looks bad :P (the main menu and others, I only worked in the loading screen of a game)
    I need to find a way to have another background for the main menu (or no background at all) to make it look good.
     
  17. Acidflare

    Acidflare HomeBrew Beta Tester
    Member

    Joined:
    Aug 16, 2013
    Messages:
    1,106
    Country:
    Canada
    you could always try using ASCII art :P that would look cool I would definitely use an ASCII art loading screen for nintendon't

    use ASCII art as text + Verbose
     
  18. AbdallahTerro

    OP AbdallahTerro da KiNG
    Member

    Joined:
    Jan 14, 2012
    Messages:
    6,052
    Country:
    I have many suggestions to the devs too to make this job easier and more productive:

    1. allow background.png and font.ttf to be read from custom location before loading the default ones
    2. also allow reading position, size, color and what not from a custom .ini file before loading the default ones
    3. since zip files are supported the ini, png and ttf can be zipped and placed in a theme folder and themes selected from loader menu
    4. allow custom background for sd/usb selection (game list)
    5. animated gif support with ogg to make loading movies like gamecube movie
     
    AlexandreKH likes this.
  19. airline38

    airline38 GBAtemp Advanced Fan
    Member

    Joined:
    Mar 28, 2010
    Messages:
    741
    Country:
    Taiwan
    Maybe it's better to still keep the kernel 'STAUTS_LOADING' ?
    (in case there is any error happened....)

    [​IMG]
     
  20. AbdallahTerro

    OP AbdallahTerro da KiNG
    Member

    Joined:
    Jan 14, 2012
    Messages:
    6,052
    Country:
    oh and for the colors you need to use the hex value:
    example White = 0xFFFFFF00
    this is 0x(Red Value)(Green Value)(Blue Value)(transparency Value)
    so red is 0xFF000000
    blue is 0x0000FF00 and so on...
    Any graphics editor or internet website can convert the color to this hex value in case you want custom colors
     
Draft saved Draft deleted
Loading...

Hide similar threads Similar threads with keywords - Nintendont, Themes, Custom