• Hey, guest user. Hope you're enjoying GameParadise! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Hacking Nintendont Themes and Custom Mods

 
 

admin

Chad
Staff member
85%
Joined
Jan 25, 2024
Messages
12,295
Points
38
Age
39
Location
USA
Website
gameparadise.org
Credits
206,478
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:

LOekgoy.jpg



Now you can preview a theme before downloading it too!
S7dGDZG.jpg



Nintendont Mastermod can download:

*All Custom Game Loader themes with or without progress bar (Available for all 600 games)
GMSX.png

GEO.png

GSM.png

D42X.png



*Loader themes with progress bars (For USB Loader Users)
VCtHzJj.jpg



*Nintendont App Light Themes
xUt1px4.jpg



*Nintendont App Dark Themes
sZqhMU3.jpg



*Nintendont App Gradient Themes
OCYgBWG.jpg



*Nintendont App Black themes
xOVyXPJ.jpg



*Nintendont App Unicolor Themes
K7rI2dH.jpg



It also has a beautiful credits page:
zKup3hy.jpg



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.

I'll show you how you can make a build that looks like this:


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");
2zr2sy8.jpg




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:
5uhkph.png



The new Progress bar is a continuous loading strip
30blqb9.png


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)
1zw13t4.jpg



vx251w.jpg



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:
m7ch2q.png



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
 
 

Recent Content

Newest Downloads

Tutorials

Back
Top