* Changed priority to cIOS instead of "IOS58 + AHB access"

at launch if no argument is set in meta.xml.
* Added an option to choose if HDD should be mounted on
  Loader's launch
* Fixed installing games with no_split on NTFS partition 
  if SD Card is inserted (Thanks Dimok)
* Fixed a crash issue when plugging HDD after launch and
  mounting WBFS partition for the first time in HDD menu.
* Fixed gamecube game's list when mounting HDD after launch.
* Fixed automatic switching to channel mode if no USB device
  is detected.
* Updated Gamecube custom banner's default URL for new install.
* Added support for 302 Redirect HTTP error code 
  (for users still using the old banner URL).
* Updated runtimeiospatch to 1.5.2
* Replaced integer values with vector in credit page.

Nintendont : 
* Removed SRAM patch (unused)
* Added Nintendont svn support. (Tested up to r84)
* Added Nintendont USB support.
* Added a check for kenobi file presence when using Ocarina
  with DM/DML/NIN.
* Added a check for controller.ini presence when using HID 
  with Nintendont.
* Added support for Nintendont "loader.dol" filename
* Added support for r39 bootusb.dol and loaderusb.dol
This commit is contained in:
Cyan 2014-04-25 15:34:53 +00:00
parent fa4b1d162b
commit 18edba07a0
39 changed files with 1651 additions and 898 deletions

View File

@ -2,25 +2,25 @@
<app version="1">
<name> USB Loader GX</name>
<coder>USB Loader GX Team</coder>
<version>3.0 r1218</version>
<release_date>20131001201020</release_date>
<version>3.0 r1219</version>
<release_date>20140425130603</release_date>
<!-- // remove this line to enable arguments
<arguments>
<arg>--ios=250</arg>
<arg>--usbport=0</arg>
</arguments>
// remove this line to enable arguments -->
<no_ios_reload/>
<ahb_access/>
<short_description>Loads games from USB-devices</short_description>
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.
The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller.
Features are automatic widescreen detection, coverdownload, parental control, theme support and many more.
Credits:
Coding: Dimok, nIxx, giantpune, ardi, Hungyip84, DrayX7, Lustar, r-win, WiiShizzza
Coding: Cyan, Dimok, nIxx, giantpune, ardi, Hungyip84, DrayX7, Lustar, r-win, WiiShizzza
Artworks: cyrex, NeoRame
Validation: Cyan and many others
Issue management: Cyan / Dimok
Issue management: Cyan
WiiTDB / Hosting covers: Lustar
USBLoader sources: Waninkoko, Kwiirk, Hermes
cIOS maintenance: davebaol, xabby666, XFlak and Rodries

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: David Jelinek (djelinek@hotmail.com) e->e,r->r,u->u, c->c \n"
"Language-Team: r1056 - last version on http://djelinek.sweb.cz/_USBLoderGX/czech.lang \n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr "Muj tester:"
msgid "Mar"
msgstr "Brez"
@ -1384,6 +1381,9 @@ msgstr "WiiMotion+ Video"
msgid "Mount DVD drive"
msgstr "Spustit z DVD"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr ""
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "Ne"
@ -1567,6 +1564,9 @@ msgstr "Oficiální místo:"
msgid "Offset"
msgstr "Ofset"
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr "Pouze oddíl s hrami"
@ -1973,6 +1973,9 @@ msgstr "Tento IOS je BootMii IOS. Pokud si jste jisti ze toto není BootMii a m
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr "Tento IOS nebyl nalezen na seznamu. Pokud si jste jisti ze jej máte nainstalován, pak ignorujte toto varování."
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,7 +2044,7 @@ msgstr "Popisky"
msgid "Transfer failed"
msgstr "Prenos selhal"
msgid "USB Device not found."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "Odinstalace"
@ -2296,6 +2310,9 @@ msgstr "z "
msgid "seconds left"
msgstr "sekund zbývá"
#~ msgid "Main tester:"
#~ msgstr "Muj tester:"
#~ msgid "Rename Game on WBFS"
#~ msgstr "Prejmenovat hru na WBFS"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: Fox888[dk]\n"
"Language-Team: [dk]\n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr "Hoved tester:"
msgid "Mar"
msgstr ""
@ -1384,6 +1381,9 @@ msgstr ""
msgid "Mount DVD drive"
msgstr "Mount DVD-drev"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr "Multiple Partitioner"
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "Nej"
@ -1567,6 +1564,9 @@ msgstr "Officiel side:"
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr "Kun spil Partition"
@ -1973,6 +1973,9 @@ msgstr "Denne IOS er BootMii ios. Hvis du er sikker på at det ikke er BootMii o
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr "Denne IOS var ikke fundet i titel listen. Hvis du er sikker på at den er installeret ignorer denne advarsel."
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,8 +2044,8 @@ msgstr "Værktøjstips"
msgid "Transfer failed"
msgstr "Overførelse fejlede"
msgid "USB Device not found."
msgstr "USB enhed blev ikke fundet."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
msgstr "USB Loader GX er beskyttet"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "Afinstaller"
@ -2296,6 +2310,12 @@ msgstr "af"
msgid "seconds left"
msgstr "sekunder tilbage"
#~ msgid "Main tester:"
#~ msgstr "Hoved tester:"
#~ msgid "USB Device not found."
#~ msgstr "USB enhed blev ikke fundet."
#~ msgid "Custom Discarts"
#~ msgstr "Tilpasset DVD billeder"

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr ""
msgid "Mar"
msgstr ""
@ -1384,6 +1381,9 @@ msgstr ""
msgid "Mount DVD drive"
msgstr ""
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr ""
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr ""
@ -1567,6 +1564,9 @@ msgstr ""
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr ""
@ -1973,6 +1973,9 @@ msgstr ""
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr ""
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,7 +2044,7 @@ msgstr ""
msgid "Transfer failed"
msgstr ""
msgid "USB Device not found."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: c64rmx\n"
"Language-Team: \n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr ""
msgid "Mar"
msgstr "maalis"
@ -1384,6 +1381,9 @@ msgstr ""
msgid "Mount DVD drive"
msgstr ""
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr ""
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "Ei"
@ -1567,6 +1564,9 @@ msgstr "Virallinen sivusto:"
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr ""
@ -1973,6 +1973,9 @@ msgstr ""
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr ""
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,7 +2044,7 @@ msgstr "Vinkit"
msgid "Transfer failed"
msgstr ""
msgid "USB Device not found."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "Poista"

View File

@ -1,11 +1,11 @@
# USB Loader GX language source file.
# French.lang - r1218
# French.lang - r1219
# don't delete/change this line (é).
msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: Cyan\n"
"Language-Team: Badablek, Amour, ikya, Cyan & Kin8\n"
@ -518,7 +518,7 @@ msgid "Customs/Original"
msgstr "Persos/Originaux"
msgid "D Buttons"
msgstr ""
msgstr "Boutons directs"
msgid "DOL Path"
msgstr "Dossier DOL alternatif"
@ -1360,9 +1360,6 @@ msgstr "Dossier GameCube principal"
msgid "Main Path"
msgstr "Dossier principal"
msgid "Main tester:"
msgstr "Testeur:"
msgid "Mar"
msgstr "Mars"
@ -1384,6 +1381,9 @@ msgstr "Vidéo Motion+"
msgid "Mount DVD drive"
msgstr "Charger le DVD"
msgid "Mount USB at launch"
msgstr "Charger USB au démarrage"
msgid "Multiple Partitions"
msgstr "Partitions multiples"
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr "Dossier Loader Nintendont"
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr "Nintendont n'est actuellement compatible qu'avec les cartes SD."
msgid "No"
msgstr "Non"
@ -1567,6 +1564,9 @@ msgstr "Site officiel:"
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr "Uniquement la partition de jeu"
@ -1973,6 +1973,9 @@ msgstr "Cet IOS est l'IOS de BootMii. Si vous étes certain que ce n'est pas Boo
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr "Cet IOS n'a pas été trouvé dans la liste des titres. Si vous êtes certain de l'avoir installé, ignorez cet avertissement."
msgid "This Nintendont version does not support games on USB."
msgstr "Cette version de Nintendont n'est pas compatible avec les jeux sur USB."
msgid "This game has multiple discs. Please select the disc to launch."
msgstr "Ce jeu a plusieurs disques, choisissez celui que vous souhaitez lancer."
@ -2022,7 +2025,15 @@ msgid "To run GameCube games with Devolution you need the loader.bin file in you
msgstr "Pour lancer les jeux GameCube avec Devolution vous devez placer le fichier loader.bin dans le Dossier Loader Devolution."
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr "Pour lancer les jeux GameCube avec Nintendont vous devez placer le fichier loader.bin dans le Dossier Loader Nintendont."
msgstr "Pour lancer les jeux GameCube avec Nintendont vous devez placer le fichier boot.dol dans le Dossier Loader Nintendont."
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr "Pour utiliser HID avec %s vous avez besoin du fichier %s."
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr "Pour utiliser Ocarina avec %s vous avez besoin du fichier %s."
msgid "Tooltip Delay"
msgstr "Délai des Info-bulles"
@ -2033,8 +2044,8 @@ msgstr "Info-bulles"
msgid "Transfer failed"
msgstr "Échec du transfert"
msgid "USB Device not found."
msgstr "Périphérique USB introuvable."
msgid "USB Device not initialized."
msgstr "Périphérique USB non initialisé."
msgid "USB Loader GX is protected"
msgstr "USB Loader GX est verrouillé"
@ -2054,6 +2065,9 @@ msgstr "USBLoaderGX n'a pas pu vérifier le fichier boot.dol de nintendont. Voul
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr "USBLoaderGX n'a pas pu créer le fichier de configuration de Nintendont. Voulez-vous quand même lancer Nintendont ?"
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr "Nintendont Alpha v0.1 ne fonctionne qu'avec USBLoaderGX r1218. Veuillez mettre à jour votre version de Nintendont."
msgid "Uninstall"
msgstr "Désinstaller"
@ -2296,6 +2310,15 @@ msgstr "sur"
msgid "seconds left"
msgstr "secondes restantes"
#~ msgid "Main tester:"
#~ msgstr "Testeur:"
#~ msgid "Nintendont currently only supports GameCube games on SD card."
#~ msgstr "Nintendont n'est actuellement compatible qu'avec les cartes SD."
#~ msgid "USB Device not found."
#~ msgstr "Périphérique USB introuvable."
#~ msgid "Boot/Standard"
#~ msgstr "IOS par défaut"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2010-07-03 17:35-0800\n"
"Last-Translator: TheRealVisitor\n"
"Language-Team: Bertilax, Snoozer, wishmasterf, ZEN.13, TheRealVisitor\n"
@ -1360,9 +1360,6 @@ msgstr "GameCube"
msgid "Main Path"
msgstr "Haupt Pfad"
msgid "Main tester:"
msgstr "Haupttester:"
msgid "Mar"
msgstr "März"
@ -1384,6 +1381,9 @@ msgstr "Motion+ Video"
msgid "Mount DVD drive"
msgstr "Spiel starten"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr "Mehrere Partitionen"
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "Nein"
@ -1567,6 +1564,9 @@ msgstr "Offizielle Seite:"
msgid "Offset"
msgstr "Offset"
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr "Nur Spiele Partition"
@ -1973,6 +1973,9 @@ msgstr "Dieses IOS ist das BootMii IOS. Solltest du sicher sein, dass es nicht d
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr "Dieses IOS wurde nicht in der Titelliste gefunden. Wenn du sicher bist es installiert zu haben, ignoriere die Warnung."
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr "Tooltip Verzögerung"
@ -2033,8 +2044,8 @@ msgstr "Quickinfo"
msgid "Transfer failed"
msgstr "Transfer fehlgeschlagen"
msgid "USB Device not found."
msgstr "USB-Gerät nicht gefunden."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
msgstr "USB Loader GX ist jetzt geschützt."
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "Deinstallieren"
@ -2296,6 +2310,12 @@ msgstr "von"
msgid "seconds left"
msgstr "Sekunden verbleiben"
#~ msgid "Main tester:"
#~ msgstr "Haupttester:"
#~ msgid "USB Device not found."
#~ msgstr "USB-Gerät nicht gefunden."
#~ msgid "Boot/Standard"
#~ msgstr "Bootstandard (cIOS)"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"Last-Translator: nakata6790\n"
"Language-Team: nakata6790 (aka0107@gmail.com)\n"
"MIME-Version: 1.0\n"
@ -1359,9 +1359,6 @@ msgstr "ÂáóéêÞ ôïðïèåóßá GameCube"
msgid "Main Path"
msgstr "ÂáóéêÞ ôïðïèåóßá"
msgid "Main tester:"
msgstr "Kýñéïò äïêéìáóôÞò:"
msgid "Mar"
msgstr "MÜñôéïò"
@ -1383,6 +1380,9 @@ msgstr "âéíôåï motion+"
msgid "Mount DVD drive"
msgstr "Öüñôùóç DVD"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr "ðïëëáðëÜ partitions"
@ -1434,9 +1434,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "Ï÷é"
@ -1566,6 +1563,9 @@ msgstr "Åðßóçìï Site:"
msgid "Offset"
msgstr "Offset"
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr "Müíï ôï partition ôùí ðáé÷íéäéþí"
@ -1972,6 +1972,9 @@ msgstr "Ôï ÉÏS áõôü åßíáé ôïõ ëåéôïõñãéêïý BootMii.
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr "Ôï ÉÏS áõôü äåí âñÝèçêå óôçí ëßóôá. Áí åßóôå âÝâáéïò-ç üôé ôï Ý÷åôå åãêáôåóôçìÝíï, ðáñáêáëþ áãíïÞóôå áõôÞ ôçí ðñïåéäïðïßçóç."
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2023,6 +2026,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr "ÊáèõóôÝñçóç åìöÜíéóçò åôéêåôþí"
@ -2032,8 +2043,8 @@ msgstr "ÅôéêÝôåò"
msgid "Transfer failed"
msgstr "Áíåðéôõ÷Þò ìåôáöïñÜ áñ÷åßùí"
msgid "USB Device not found."
msgstr "Äåí âñÝèçêå ç óõóêåõÞ USB."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
msgstr "Ôï USB Loader GX åßíáé ðñïóôáôåõìÝíï"
@ -2053,6 +2064,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "ÁðåãêáôÜóôáóç"
@ -2295,6 +2309,12 @@ msgstr "áðü"
msgid "seconds left"
msgstr "äåõôåñüëåðôá áðïìÝíïõí"
#~ msgid "Main tester:"
#~ msgstr "Kýñéïò äïêéìáóôÞò:"
#~ msgid "USB Device not found."
#~ msgstr "Äåí âñÝèçêå ç óõóêåõÞ USB."
#~ msgid "Boot/Standard"
#~ msgstr "Åêêéíçóç/Âáóéêü"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-12-29 11:05+0100\n"
"Last-Translator: Springdale\n"
"Language-Team: Tusk, Springdale\n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr ""
msgid "Mar"
msgstr "Már"
@ -1384,6 +1381,9 @@ msgstr ""
msgid "Mount DVD drive"
msgstr "DVD meghajtó felcsatolása"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr ""
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "Nem"
@ -1567,6 +1564,9 @@ msgstr "Hivatalos oldal:"
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr ""
@ -1973,6 +1973,9 @@ msgstr ""
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr ""
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,7 +2044,7 @@ msgstr "Súgók"
msgid "Transfer failed"
msgstr ""
msgid "USB Device not found."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "Törlés"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2011-09-11 12:19+0100\n"
"Last-Translator: xFede\n"
"Language-Team: xFede (fedeanto11@gmail.com)\n"
@ -1360,9 +1360,6 @@ msgstr "Percorso GameCube"
msgid "Main Path"
msgstr "Percorso principale"
msgid "Main tester:"
msgstr "Tester principale:"
msgid "Mar"
msgstr "Marzo"
@ -1384,6 +1381,9 @@ msgstr "Video motion+"
msgid "Mount DVD drive"
msgstr "Avvia DVD"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr "Partizioni multiple"
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "No"
@ -1567,6 +1564,9 @@ msgstr "Sito ufficiale:"
msgid "Offset"
msgstr "Offset"
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr "Solo Partizione Gioco"
@ -1973,6 +1973,9 @@ msgstr "Questo IOS è quello del BootMii. Se sei sicuro di aver installato qualc
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr "Questo IOS non è stato trovato nella lista dei titoli. Se sei sicuro di averlo installato ignora questo avvertimento."
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr "Questo gioco contiene più di un disco. Selezione quello da avviare."
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr "Ritardo suggerimenti"
@ -2033,8 +2044,8 @@ msgstr "Suggerimenti"
msgid "Transfer failed"
msgstr "Trasferimento fallito"
msgid "USB Device not found."
msgstr "Periferica USB non trovata."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
msgstr "USB Loader GX è protetto"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "Disinstalla"
@ -2296,6 +2310,12 @@ msgstr "di"
msgid "seconds left"
msgstr "secondi rimasti"
#~ msgid "Main tester:"
#~ msgstr "Tester principale:"
#~ msgid "USB Device not found."
#~ msgstr "Periferica USB non trovata."
#~ msgid "Boot/Standard"
#~ msgstr "cIOS predefinito"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: hosigumayuugi\n"
"Language-Team: hosigumayuugi\n"
@ -1360,9 +1360,6 @@ msgstr "ゲームキューブ"
msgid "Main Path"
msgstr "メインパス"
msgid "Main tester:"
msgstr "メインテスター:"
msgid "Mar"
msgstr "3月"
@ -1384,6 +1381,9 @@ msgstr "モーション+説明ムービー"
msgid "Mount DVD drive"
msgstr "DVDを起動"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr "マルチ領域"
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "いいえ"
@ -1567,6 +1564,9 @@ msgstr "公式サイト:"
msgid "Offset"
msgstr "代替"
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr "ゲーム領域のみ"
@ -1973,6 +1973,9 @@ msgstr "このIOSはBootMiiのIOSです"
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr "このIOSはタイトルリストにありませんでした"
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr "ヒントバルーンの遅延"
@ -2033,8 +2044,8 @@ msgstr "ヒントバルーン"
msgid "Transfer failed"
msgstr "転送に失敗しました"
msgid "USB Device not found."
msgstr "USB機器が見つかりません"
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
msgstr "GXは保護されています"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "アンインストール"
@ -2296,6 +2310,12 @@ msgstr "中"
msgid "seconds left"
msgstr "秒で完了"
#~ msgid "Main tester:"
#~ msgstr "メインテスター:"
#~ msgid "USB Device not found."
#~ msgstr "USB機器が見つかりません"
#~ msgid "Boot/Standard"
#~ msgstr "使用するcIOS"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: nextos@korea.com\n"
"Language-Team: \n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr ""
msgid "Mar"
msgstr "4월"
@ -1384,6 +1381,9 @@ msgstr ""
msgid "Mount DVD drive"
msgstr ""
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr ""
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "아니오"
@ -1567,6 +1564,9 @@ msgstr "공식 사이트:"
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr ""
@ -1973,6 +1973,9 @@ msgstr ""
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr ""
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,7 +2044,7 @@ msgstr "Tooltips"
msgid "Transfer failed"
msgstr ""
msgid "USB Device not found."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "제거"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: raschi\n"
"Language-Team: raschi\n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr "Hovedtester:"
msgid "Mar"
msgstr ""
@ -1384,6 +1381,9 @@ msgstr "Motion+ film"
msgid "Mount DVD drive"
msgstr "Last DVD stasjon"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr "Flere partisjoner"
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "Nei"
@ -1567,6 +1564,9 @@ msgstr "Offisiell nettside:"
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr "Kun spill partisjon"
@ -1973,6 +1973,9 @@ msgstr "Dette IOS er vanligvis BootMii IOS. Hvis du er sikker på at dette ikke
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr "Dette IOS ble ikke funnet i tittel listen. Hvis du er sikker på at du har det installert, kan du ignorere denne advarselen."
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,7 +2044,7 @@ msgstr "Verktøystips"
msgid "Transfer failed"
msgstr "Overføring feilet"
msgid "USB Device not found."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr ""
@ -2296,6 +2310,9 @@ msgstr "av"
msgid "seconds left"
msgstr "sekunder gjenstår"
#~ msgid "Main tester:"
#~ msgstr "Hovedtester:"
#~ msgid "Boot/Standard"
#~ msgstr "Boot/Standard"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: ziom666 (zadania_prog@vp.pl)\n"
"Language-Team: \n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr ""
msgid "Mar"
msgstr "Marzec"
@ -1384,6 +1381,9 @@ msgstr ""
msgid "Mount DVD drive"
msgstr "Uruchom naped DVD"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr ""
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "Nie"
@ -1567,6 +1564,9 @@ msgstr "Strona oficjalna:"
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr ""
@ -1973,6 +1973,9 @@ msgstr ""
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr ""
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,7 +2044,7 @@ msgstr "Chmurki z podpowiedziami"
msgid "Transfer failed"
msgstr ""
msgid "USB Device not found."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "Odinstaluj"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-10-23 18:52+0200\n"
"Last-Translator: aniemotion\n"
"Language-Team: boto12, aniemotion\n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr ""
msgid "Mar"
msgstr ""
@ -1384,6 +1381,9 @@ msgstr ""
msgid "Mount DVD drive"
msgstr "Carregar leitor DVD"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr ""
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "Não"
@ -1567,6 +1564,9 @@ msgstr "Site Oficial:"
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr ""
@ -1973,6 +1973,9 @@ msgstr ""
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr ""
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,7 +2044,7 @@ msgstr "Dicas"
msgid "Transfer failed"
msgstr ""
msgid "USB Device not found."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2011-11-03 11:00+0000\n"
"Last-Translator: pplucky <pplucky@gmail.com>\n"
"Language-Team: Sky8000, pplucky\n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr "Tester principal:"
msgid "Mar"
msgstr "Mar"
@ -1384,6 +1381,9 @@ msgstr "Vídeo Motion+"
msgid "Mount DVD drive"
msgstr "Montar Unidade de DVD"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr "Partições múltiplas"
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "Não"
@ -1567,6 +1564,9 @@ msgstr "Site Oficial:"
msgid "Offset"
msgstr "Offset"
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr "Apenas Partição Jogos"
@ -1973,6 +1973,9 @@ msgstr "Este IOS é o ios BootMii. Se tem a certeza que não é o BootMii e tem
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr "Este IOS não foi encontrado na lista de títulos. Se tem a certeza que o tem instalado então ignore este aviso."
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,7 +2044,7 @@ msgstr "Dicas"
msgid "Transfer failed"
msgstr "Transferência falhada"
msgid "USB Device not found."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr ""
@ -2296,6 +2310,9 @@ msgstr "de"
msgid "seconds left"
msgstr "segundos restantes"
#~ msgid "Main tester:"
#~ msgstr "Tester principal:"
#~ msgid "Boot/Standard"
#~ msgstr "Arranque/Std"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: nikolai_ca\n"
"Language-Team: Kir, alendit, nikolai_ca\n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr ""
msgid "Mar"
msgstr "Мар"
@ -1384,6 +1381,9 @@ msgstr ""
msgid "Mount DVD drive"
msgstr "Монтировать DVD"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr ""
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "Нет"
@ -1567,6 +1564,9 @@ msgstr "Оф. сайт:"
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr ""
@ -1973,6 +1973,9 @@ msgstr ""
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr ""
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,7 +2044,7 @@ msgstr "Подсказки"
msgid "Transfer failed"
msgstr ""
msgid "USB Device not found."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "Деинсталлировать"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2013-08-13 07:03+0800\n"
"Last-Translator: \n"
"Language-Team: oCameLo\n"
@ -1360,9 +1360,6 @@ msgstr "首选 GameCube 路径"
msgid "Main Path"
msgstr "首选路径"
msgid "Main tester:"
msgstr "主要测试员:"
msgid "Mar"
msgstr "三月"
@ -1384,6 +1381,9 @@ msgstr "移动+视频"
msgid "Mount DVD drive"
msgstr "挂载 DVD 光驱"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr "多分区"
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "否"
@ -1567,6 +1564,9 @@ msgstr "官方网址:"
msgid "Offset"
msgstr "偏移位"
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr "仅游戏分区"
@ -1973,6 +1973,9 @@ msgstr "该 IOS 是BootMii IOS 。如果你确定它不是 BootMii 并且安装
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr "在 titles 列表中未找到该 IOS 。如果你确定已安装则可忽略该警告。"
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr "该游戏有多张光盘。请选择想要加载的光盘。"
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr "提示信息延迟时间"
@ -2033,8 +2044,8 @@ msgstr "提示信息"
msgid "Transfer failed"
msgstr "传输失败"
msgid "USB Device not found."
msgstr "未找到 USB 设备。"
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
msgstr "USB Loader GX 被锁定"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "删除"
@ -2296,6 +2310,12 @@ msgstr "的"
msgid "seconds left"
msgstr "剩余秒数"
#~ msgid "Main tester:"
#~ msgstr "主要测试员:"
#~ msgid "USB Device not found."
#~ msgstr "未找到 USB 设备。"
#~ msgid "Boot/Standard"
#~ msgstr "启动/标准"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2011-07-25 16:40+0200\n"
"Last-Translator: Galen/xFede\n"
"Language-Team: Penn, SirPalax, hvy109\n"
@ -1360,9 +1360,6 @@ msgstr "Ruta principal GameCube"
msgid "Main Path"
msgstr "Ruta principal"
msgid "Main tester:"
msgstr "Probador principal:"
msgid "Mar"
msgstr ""
@ -1384,6 +1381,9 @@ msgstr "Vídeo Motion+"
msgid "Mount DVD drive"
msgstr "Montar unidad DVD"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr "Múltiples Particiones"
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr ""
@ -1567,6 +1564,9 @@ msgstr "Página Oficial:"
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr "Solo Partición de Juegos"
@ -1973,6 +1973,9 @@ msgstr "Este IOS es el ios de BootMii. Si estás seguro de que no está BootMii
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr "No se encontró este IOS en la lista de títulos. Si estás seguro de que lo tienes instalado, ignora esta advertencia."
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr "Retraso de ayuda rapida"
@ -2033,8 +2044,8 @@ msgstr "Descripción"
msgid "Transfer failed"
msgstr "Transferencia fallida"
msgid "USB Device not found."
msgstr "Dispositivo USB no encontrado"
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
msgstr "USB Loader GX está protegido"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "Desinstalar"
@ -2296,6 +2310,12 @@ msgstr "de"
msgid "seconds left"
msgstr "segundos restantes"
#~ msgid "Main tester:"
#~ msgstr "Probador principal:"
#~ msgid "USB Device not found."
#~ msgstr "Dispositivo USB no encontrado"
#~ msgid "Boot/Standard"
#~ msgstr "Inicio/Estándar"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2010-01-19 17:39+0200\n"
"Last-Translator: Katsurou\n"
"Language-Team: Katsurou, pirateX\n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr ""
msgid "Mar"
msgstr ""
@ -1384,6 +1381,9 @@ msgstr ""
msgid "Mount DVD drive"
msgstr "Montera DVD läsare"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr ""
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "Nej"
@ -1567,6 +1564,9 @@ msgstr "Officiell sida:"
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr ""
@ -1973,6 +1973,9 @@ msgstr ""
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr ""
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,7 +2044,7 @@ msgstr "Verktygstips"
msgid "Transfer failed"
msgstr ""
msgid "USB Device not found."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "Avinstallera"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2010-02-15 21:00+0800\n"
"Last-Translator: Jane.H\n"
"Language-Team: kyogc, Miller, Mika Li, Jane.H\n"
@ -1360,9 +1360,6 @@ msgstr "主要的 GameCube路徑"
msgid "Main Path"
msgstr "主要路徑"
msgid "Main tester:"
msgstr "主要測試者:"
msgid "Mar"
msgstr "三月"
@ -1384,6 +1381,9 @@ msgstr "移動+視訊"
msgid "Mount DVD drive"
msgstr "掛載DVD光碟"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr "多重磁區"
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "否"
@ -1567,6 +1564,9 @@ msgstr "官方網址:"
msgid "Offset"
msgstr "偏移"
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr "僅遊戲分區"
@ -1973,6 +1973,9 @@ msgstr "這IOS是BootMii的ios。若你確定不是BootMii的IOS而你在這安
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr "標題清單找不到這IOS。若你確定已安裝它請忽略這警告。"
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr "此遊戲為多重光碟。請選擇光碟啟動。"
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr "提示訊息 延遲時間"
@ -2033,8 +2044,8 @@ msgstr "提示訊息"
msgid "Transfer failed"
msgstr "傳輸失敗"
msgid "USB Device not found."
msgstr "找不到 USB 裝置"
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
msgstr "USB Loader GX 被上鎖保護"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "移除"
@ -2296,6 +2310,12 @@ msgstr "的"
msgid "seconds left"
msgstr "剩餘秒數"
#~ msgid "Main tester:"
#~ msgstr "主要測試者:"
#~ msgid "USB Device not found."
#~ msgstr "找不到 USB 裝置"
#~ msgid "Boot/Standard"
#~ msgstr "啟動/標準"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: Nitro_subzero \n"
"Language-Team: Nitro_subzero\n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr ""
msgid "Mar"
msgstr "มีค."
@ -1384,6 +1381,9 @@ msgstr ""
msgid "Mount DVD drive"
msgstr "เชื่อม DVD ไดร์ฟ"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr ""
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "ไม่"
@ -1567,6 +1564,9 @@ msgstr "เวบไซต์อย่างเป็นทางการ:"
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr ""
@ -1973,6 +1973,9 @@ msgstr ""
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr ""
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,7 +2044,7 @@ msgstr "คำแนะนำ"
msgid "Transfer failed"
msgstr ""
msgid "USB Device not found."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "ถอนการติดตั้ง"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 22:10+0200\n"
"POT-Creation-Date: 2014-04-25 15:06+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: omercigingelini\n"
"Language-Team: omercigingelini\n"
@ -1360,9 +1360,6 @@ msgstr ""
msgid "Main Path"
msgstr ""
msgid "Main tester:"
msgstr ""
msgid "Mar"
msgstr ""
@ -1384,6 +1381,9 @@ msgstr ""
msgid "Mount DVD drive"
msgstr "DVD sürücüsü bağla"
msgid "Mount USB at launch"
msgstr ""
msgid "Multiple Partitions"
msgstr ""
@ -1435,9 +1435,6 @@ msgstr ""
msgid "Nintendont Loader Path"
msgstr ""
msgid "Nintendont currently only supports GameCube games on SD card."
msgstr ""
msgid "No"
msgstr "Hayır"
@ -1567,6 +1564,9 @@ msgstr "Resmi Site:"
msgid "Offset"
msgstr ""
msgid "Ok"
msgstr ""
msgid "Only Game Partition"
msgstr ""
@ -1973,6 +1973,9 @@ msgstr ""
msgid "This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."
msgstr ""
msgid "This Nintendont version does not support games on USB."
msgstr ""
msgid "This game has multiple discs. Please select the disc to launch."
msgstr ""
@ -2024,6 +2027,14 @@ msgstr ""
msgid "To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."
msgstr ""
#, c-format
msgid "To use HID with %s you need the %s file."
msgstr ""
#, c-format
msgid "To use ocarina with %s you need the %s file."
msgstr ""
msgid "Tooltip Delay"
msgstr ""
@ -2033,7 +2044,7 @@ msgstr "Yardımlar"
msgid "Transfer failed"
msgstr ""
msgid "USB Device not found."
msgid "USB Device not initialized."
msgstr ""
msgid "USB Loader GX is protected"
@ -2054,6 +2065,9 @@ msgstr ""
msgid "USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"
msgstr ""
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
msgstr ""
msgid "Uninstall"
msgstr "Kaldır"

View File

@ -47,8 +47,7 @@ public:
vector<struct discHdr> & GetHeaders(void)
{
if(HeaderList.empty())
LoadAllGames();
LoadAllGames();
return HeaderList;
}

View File

@ -20,17 +20,19 @@
#include <gctypes.h>
#define NIN_MAGIC 0x01070CF6
#define NIN_CFG_VERSION 0x00000001
#define NIN_CFG_VERSION 0x00000002
typedef struct NIN_CFG
{
u32 Magicbytes; // 0x01070CF6
u32 Version; // 0x00000001
u32 Version; // 0x00000002 since r42
u32 Config;
u32 VideoMode;
u32 Language;
char GamePath[255];
char CheatPath[255];
u32 MaxPads;
u32 GameID;
} NIN_CFG;
enum ninconfig
@ -39,13 +41,13 @@ enum ninconfig
NIN_CFG_DEBUGGER = (1<<1), // Only for Wii Version
NIN_CFG_DEBUGWAIT = (1<<2), // Only for Wii Version
NIN_CFG_MEMCARDEMU = (1<<3),
NIN_CFG_GAME_PATH = (1<<4),
NIN_CFG_CHEAT_PATH = (1<<5),
NIN_CFG_FORCE_WIDE = (1<<6),
NIN_CFG_FORCE_PROG = (1<<7),
NIN_CFG_AUTO_BOOT = (1<<8),
NIN_CFG_HID = (1<<9),
NIN_CFG_OSREPORT = (1<<10), // Only for Wii Version
NIN_CFG_CHEAT_PATH = (1<<4),
NIN_CFG_FORCE_WIDE = (1<<5),
NIN_CFG_FORCE_PROG = (1<<6),
NIN_CFG_AUTO_BOOT = (1<<7),
NIN_CFG_HID = (1<<8),
NIN_CFG_OSREPORT = (1<<9),
NIN_CFG_USB = (1<<10),
};
enum ninvideomode
@ -59,8 +61,10 @@ enum ninvideomode
NIN_VID_FORCE_PAL50 = (1<<0),
NIN_VID_FORCE_PAL60 = (1<<1),
NIN_VID_FORCE_NTSC = (1<<2),
NIN_VID_FORCE_MPAL = (1<<3),
NIN_VID_PROG = (1<<4),
NIN_VID_FORCE_MASK = NIN_VID_FORCE_PAL50|NIN_VID_FORCE_PAL60|NIN_VID_FORCE_NTSC,
NIN_VID_FORCE_MASK = NIN_VID_FORCE_PAL50|NIN_VID_FORCE_PAL60|NIN_VID_FORCE_NTSC|NIN_VID_FORCE_MPAL,
};
enum ninlanguage

View File

@ -211,17 +211,32 @@ int StartUpProcess::Execute()
Settings.EntryIOS = IOS_GetVersion();
// Reload app cios if needed
if(!AHBPROT_DISABLED || Settings.UseArgumentIOS)
SetTextf("Loading application cIOS %s\n", Settings.UseArgumentIOS ? "requested in meta.xml" : "");
if(IosLoader::LoadAppCios() < 0)
{
SetTextf("Loading application cIOS %s\n", Settings.UseArgumentIOS ? "requested in meta.xml" : "");
if(IosLoader::LoadAppCios() < 0)
SetTextf("Failed loading any cIOS. Trying with IOS58 + AHB access...");
// We can allow now operation without cIOS in channel mode with AHB access
if(!AHBPROT_DISABLED || (AHBPROT_DISABLED && IOS_GetVersion() != 58))
{
SetTextf("Failed loading any cIOS. USB Loader GX requires a cIOS or AHB access to work properly.\n");
SetTextf("Failed loading IOS 58. USB Loader GX requires a cIOS or IOS 58 with AHB access. Exiting...\n");
sleep(5);
Sys_BackToLoader();
}
else
{
SetTextf("Running on IOS 58. Wii disc based games and some channels will not work.");
sleep(5);
// We can allow now operation without cIOS in channel mode with AHPPROT
// Sys_BackToLoader();
}
}
if(!AHBPROT_DISABLED && IOS_GetVersion() < 200)
{
SetTextf("Failed loading IOS %i. USB Loader GX requires a cIOS or IOS58 with AHB access. Exiting...\n", IOS_GetVersion());
sleep(5);
Sys_BackToLoader();
}
SetTextf("Using %sIOS %i\n", IOS_GetVersion() >= 200 ? "c" : "", IOS_GetVersion());
SetupPads();
@ -229,12 +244,21 @@ int StartUpProcess::Execute()
SetTextf("Initialize sd card\n");
DeviceHandler::Instance()->MountSD();
SetTextf("Initialize usb device\n");
USBSpinUp();
DeviceHandler::Instance()->MountAllUSB(false);
SetTextf("Loading config files\n");
gprintf("\tLoading config...%s\n", Settings.Load() ? "done" : "failed");
// Ugly, but let's load SD card first to allow users to disable USB Auto mounting.
gprintf("\tLoading config from SD...");
bool settingsLoaded = Settings.Load();
gprintf("%s\n", settingsLoaded ? "done" : "failed");
if(Settings.USBAutoMount == ON)
{
SetTextf("Initialize usb device\n");
USBSpinUp();
DeviceHandler::Instance()->MountAllUSB(false);
}
if(!settingsLoaded) gprintf("\tLoading config from USB...%s\n", Settings.Load() ? "done" : "failed");
gprintf("\tLoading language...%s\n", Settings.LoadLanguage(Settings.language_path, CONSOLE_DEFAULT) ? "done" : "failed");
gprintf("\tLoading game settings...%s\n", GameSettings.Load(Settings.ConfigPath) ? "done" : "failed");
gprintf("\tLoading game statistics...%s\n", GameStatistics.Load(Settings.ConfigPath) ? "done" : "failed");
@ -247,7 +271,8 @@ int StartUpProcess::Execute()
// Unmount devices
DeviceHandler::DestroyInstance();
USBStorage2_Deinit();
if(Settings.USBAutoMount == ON)
USBStorage2_Deinit();
// Shut down pads
WPAD_Shutdown();
@ -260,8 +285,11 @@ int StartUpProcess::Execute()
// Re-Mount devices
SetTextf("Reinitializing devices...\n");
DeviceHandler::Instance()->MountSD();
USBSpinUp();
DeviceHandler::Instance()->MountAllUSB(false);
if(Settings.USBAutoMount == ON)
{
USBSpinUp();
DeviceHandler::Instance()->MountAllUSB(false);
}
// Start pads again
SetupPads();
@ -273,14 +301,20 @@ int StartUpProcess::Execute()
}
else if(Settings.USBPort == 1 && USBStorage2_GetPort() != Settings.USBPort)
{
SetTextf("Changing USB Port to %i\n", Settings.USBPort);
DeviceHandler::Instance()->UnMountAllUSB();
DeviceHandler::Instance()->MountAllUSB();
if(Settings.USBAutoMount == ON)
{
SetTextf("Changing USB Port to %i\n", Settings.USBPort);
DeviceHandler::Instance()->UnMountAllUSB();
DeviceHandler::Instance()->MountAllUSB();
}
}
else if(Settings.USBPort == 2)
{
SetTextf("Mounting USB Port to 1\n");
DeviceHandler::Instance()->MountUSBPort1();
if(Settings.USBAutoMount == ON)
{
SetTextf("Mounting USB Port to 1\n");
DeviceHandler::Instance()->MountUSBPort1();
}
}
// enable isfs permission if using IOS+AHB or Hermes v4

View File

@ -1280,7 +1280,17 @@ int GameBrowseMenu::MainLoop()
if((Settings.LoaderMode & MODE_WIIGAMES) && (gameList.GameCount() == 0))
{
WBFS_ReInit(WBFS_DEVICE_USB);
s32 wbfsinit = WBFS_Init(WBFS_DEVICE_USB);
if (wbfsinit < 0)
{
ShowError("%s %s", tr( "USB Device not initialized." ), tr("Switching to channel list mode."));
Settings.LoaderMode &= ~MODE_WIIGAMES;
Settings.LoaderMode |= MODE_NANDCHANNELS;
}
else
{
WBFS_ReInit(WBFS_DEVICE_USB);
}
gameList.ReadGameList();
if(Settings.ShowFreeSpace)

View File

@ -1,7 +1,9 @@
#include "http.h"
#include "../svnrev.h"
#include "gecko.h"
extern char incommingIP[50];
static u8 retryloop = 0;
/**
* Emptyblock is a statically defined variable for functions to return if they are unable
@ -197,30 +199,118 @@ struct block downloadfile(const char *url)
return emptyblock;
}
//check if a cookie is set for this host and load it.
//strcpy(cookie, "Cookie: __cfduid=d8e517c1a10af75d01699adaa9c3d9ffd1398187687536\r\n");
//Form a nice request header to send to the webserver
char* headerformat = "GET %s HTTP/1.0\r\nHost: %s\r\nReferer: %s\r\nUser-Agent: USBLoaderGX r%s\r\n\r\n";
char* headerformat = "GET %s HTTP/1.0\r\nHost: %s\r\nReferer: %s\r\n%sUser-Agent: USBLoaderGX r%s\r\n\r\n";
char header[strlen(headerformat) + strlen(path) + strlen(domain)*2 + 100];
sprintf(header, headerformat, path, domain, domain, GetRev());
//gprintf("\nHTTP Request:\n");
//gprintf("%s\n",header);
//Do the request and get the response
send_message(connection, header);
struct block response = read_message(connection);
net_close(connection);
// dump response
// hexdump(response.data, response.size);
//Search for the 4-character sequence \r\n\r\n in the response which signals the start of the http payload (file)
unsigned char *filestart = NULL;
u32 filesize = 0;
u32 i;
char newURL[512];
bool redirect = false;
for (i = 3; i < response.size; i++)
{
if (response.data[i] == '\n' && response.data[i - 1] == '\r' && response.data[i - 2] == '\n' && response.data[i - 3] == '\r')
{
filestart = response.data + i + 1;
filesize = response.size - i - 1;
// Check the HTTP response code
if (response.size > 10 && strncmp((char*)response.data, "HTTP/", 5)==0)
{
char htstat[i];
strncpy(htstat, (char*)response.data, i);
htstat[i] = 0;
char *codep;
codep = strchr(htstat, ' ');
if (codep)
{
int code;
if (sscanf(codep+1, "%d", &code) == 1)
{
//gprintf("HTTP response code: %d\n", code);
if (code == 302) // 302 FOUND (redirected link)
{
char *ptr = strstr((char*)response.data, "ocation: "); // location or Location
if(ptr)
{
ptr += strlen("ocation: ");
strncpy(newURL, ptr, sizeof(newURL));
*(strchr(newURL, '\r'))=0;
redirect = true;
//gprintf("New URL to download = %s \n", newURL);
}
else
{
//gprintf("HTTP ERROR: %s\n", htstat);
free(response.data);
return emptyblock;
}
}
if (code >=400) // Not found
{
//gprintf("HTTP ERROR: %s\n", htstat);
//free(response.data);
//return emptyblock;
}
}
}
}
break;
}
}
if(redirect)
{
// Prevent endless loop
retryloop++;
if(retryloop > 3)
{
retryloop = 0;
free(response.data);
return emptyblock;
}
struct block redirected = downloadfile(newURL);
// copy the newURL data into the original data
u8 * tmp = realloc(response.data, redirected.size);
if (tmp == NULL)
{
//gprintf("Could not allocate enough memory for new URL. Download canceled.\n");
free(response.data);
free(redirected.data);
return emptyblock;
}
response.data = tmp;
memcpy(response.data, redirected.data, redirected.size);
// Set filestart's new size based on redirected file
filestart = response.data;
filesize = redirected.size;
free(redirected.data);
}
retryloop = 0;
if (filestart == NULL)
{
//printf("HTTP Response was without a file\n");

View File

@ -253,7 +253,7 @@ void WindowCredits()
creditsMusic->Play();
bool exit = false;
int i = 0;
u32 i = 0;
int y = 20;
float oldFontScale = Settings.FontScaleFactor;
Settings.FontScaleFactor = 1.0f;
@ -273,23 +273,22 @@ void WindowCredits()
starImg.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
starImg.SetPosition(505, 350);
const int numEntries = 26;
std::vector<GuiText *> txt(numEntries);
std::vector<GuiText *> txt;
const u8 *creditsFont = Resources::GetFile("font.ttf");
u32 creditsFontSize = Resources::GetFileSize("font.ttf");
txt[i] = new GuiText(tr( "Credits" ), 28, ( GXColor ) {255, 255, 255, 255});
txt[i]->SetAlignment(ALIGN_CENTER, ALIGN_TOP);
txt[i]->SetPosition(0, 8);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
GuiText * currentTxt = new GuiText(tr( "Credits" ), 28, ( GXColor ) {255, 255, 255, 255});
currentTxt->SetAlignment(ALIGN_CENTER, ALIGN_TOP);
currentTxt->SetPosition(0, 8);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
char SvnRev[80];
#ifdef FULLCHANNEL
snprintf(SvnRev, sizeof(SvnRev), "Rev%sc IOS%u (Rev %u)", GetRev(), IOS_GetVersion(), IOS_GetRevision());
snprintf(SvnRev, sizeof(SvnRev), "Rev%sc IOS%u (Rev %u)%s", GetRev(), IOS_GetVersion(), IOS_GetRevision(), (*(vu32*)0xcd800064 == 0xFFFFFFFF)? " + AHB" : "" );
#else
snprintf(SvnRev, sizeof(SvnRev), "Rev%s IOS%u (Rev %u)", GetRev(), IOS_GetVersion(), IOS_GetRevision());
snprintf(SvnRev, sizeof(SvnRev), "Rev%s IOS%u (Rev %u)%s", GetRev(), IOS_GetVersion(), IOS_GetRevision(), (*(vu32*)0xcd800064 == 0xFFFFFFFF)? " + AHB" : "" );
#endif
char IosInfo[80] = "";
@ -329,6 +328,8 @@ void WindowCredits()
char GCInfo2[80] = "";
char NIN_loader_path[100];
snprintf(NIN_loader_path, sizeof(NIN_loader_path), "%sboot.dol", Settings.NINLoaderPath);
if(!CheckFile(NIN_loader_path))
snprintf(NIN_loader_path, sizeof(NIN_loader_path), "%sloader.dol", Settings.NINLoaderPath);
if(CheckFile(NIN_loader_path))
{
u8 *buffer = NULL;
@ -355,190 +356,190 @@ void WindowCredits()
}
// Header - Top left
txt[i] = new GuiText(GCInfo2, 16, ( GXColor ) {255, 255, 255, 255});
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(0, strlen(GCInfo) > 0 ? y-10 : y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(GCInfo2, 16, ( GXColor ) {255, 255, 255, 255});
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(0, strlen(GCInfo) > 0 ? y-10 : y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
// Header - Bottom left
txt[i] = new GuiText(GCInfo, 16, ( GXColor ) {255, 255, 255, 255});
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(0, y+6);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(GCInfo, 16, ( GXColor ) {255, 255, 255, 255});
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(0, y+6);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
// Header - Top right
txt[i] = new GuiText(SvnRev, 16, ( GXColor ) {255, 255, 255, 255});
txt[i]->SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
txt[i]->SetPosition(0, (info || currentMIOS > DEFAULT_MIOS) ? y-10 : y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(SvnRev, 16, ( GXColor ) {255, 255, 255, 255});
currentTxt->SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
currentTxt->SetPosition(0, (info || currentMIOS > DEFAULT_MIOS) ? y-10 : y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
// Header - Bottom right
txt[i] = new GuiText(IosInfo, 16, ( GXColor ) {255, 255, 255, 255});
txt[i]->SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
txt[i]->SetPosition(0, y+6);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(IosInfo, 16, ( GXColor ) {255, 255, 255, 255});
currentTxt->SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
currentTxt->SetPosition(0, y+6);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 34;
txt[i] = new GuiText("USB Loader GX", 24, ( GXColor ) {255, 255, 255, 255});
txt[i]->SetAlignment(ALIGN_CENTER, ALIGN_TOP);
txt[i]->SetPosition(0, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText("USB Loader GX", 24, ( GXColor ) {255, 255, 255, 255});
currentTxt->SetAlignment(ALIGN_CENTER, ALIGN_TOP);
currentTxt->SetPosition(0, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 24;
txt[i] = new GuiText(tr( "Official Site:" ), 20, ( GXColor ) {255, 255, 255, 255});
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(10, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(tr( "Official Site:" ), 20, ( GXColor ) {255, 255, 255, 255});
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(10, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
txt[i] = new GuiText("http://code.google.com/p/usbloader-gui/", 20, ( GXColor ) {255, 255, 255, 255});
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(160, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText("http://code.google.com/p/usbloader-gui/", 20, ( GXColor ) {255, 255, 255, 255});
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(160, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 22;
GuiText::SetPresets(20, ( GXColor ) {255, 255, 255, 255}, 3000, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_TOP, ALIGN_LEFT, ALIGN_TOP);
txt[i] = new GuiText(tr( "Coding:" ));
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(10, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(tr( "Coding:" ));
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(10, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
txt[i] = new GuiText("Dimok / nIxx / giantpune / ardi");
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(160, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText("Cyan / Dimok / nIxx / giantpune / ardi");
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(160, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 20;
txt[i] = new GuiText("hungyip84 / DrayX7 / lustar / r-win");
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(160, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText("hungyip84 / DrayX7 / lustar / r-win");
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(160, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 22;
char text[100];
txt[i] = new GuiText(tr( "Design:" ));
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(10, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(tr( "Design:" ));
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(10, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
txt[i] = new GuiText("cyrex / NeoRame");
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(160, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText("cyrex / NeoRame");
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(160, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 22;
txt[i] = new GuiText(tr( "Main tester:" ));
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(10, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText("");
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(10, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
txt[i] = new GuiText("Cyan");
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(160, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText("");
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(160, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 22;
txt[i] = new GuiText(tr( "Big thanks to:" ));
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(10, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(tr( "Big thanks to:" ));
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(10, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
sprintf(text, "lustar %s", tr( "for GameTDB and hosting covers / disc images" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(160, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(text);
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(160, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 20;
sprintf(text, "Cyan and Shano56 %s", tr( "for their work on the wiki page" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(160, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(text);
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(160, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 20;
sprintf(text, "Kinyo %s", tr( "and translators for language files updates" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(160, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(text);
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(160, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 20;
sprintf(text, "Deak Phreak %s", tr( "for hosting the themes" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(160, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(text);
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(160, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 24;
txt[i] = new GuiText(tr( "Special thanks to:" ));
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(10, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(tr( "Special thanks to:" ));
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(10, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 20;
sprintf(text, "Waninkoko, Kwiirk & Hermes %s", tr( "for the USB Loader source" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(10, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(text);
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(10, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 20;
sprintf(text, "Tantric %s", tr( "for his awesome tool LibWiiGui" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(10, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(text);
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(10, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 20;
sprintf(text, "Fishears/Nuke %s", tr( "for Ocarina" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(10, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(text);
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(10, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 20;
sprintf(text, "WiiPower %s", tr( "for diverse patches" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(10, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(text);
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(10, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 20;
sprintf(text, "Oggzee %s", tr( "for FAT/NTFS support" ));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(10, y);
txt[i]->SetFont(creditsFont, creditsFontSize);
i++;
currentTxt = new GuiText(text);
currentTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
currentTxt->SetPosition(10, y);
currentTxt->SetFont(creditsFont, creditsFontSize);
txt.push_back(currentTxt);
y += 20;
for (i = 0; i < numEntries; i++)
for (i = 0; i < txt.size(); i++)
creditsWindowBox.Append(txt[i]);
creditsWindow.Append(&creditsWindowBox);
@ -578,7 +579,7 @@ void WindowCredits()
HaltGui();
mainWindow->Remove(&creditsWindow);
mainWindow->SetState(STATE_DEFAULT);
for (i = 0; i < numEntries; i++)
for (i = 0; i < txt.size(); i++)
{
delete txt[i];
txt[i] = NULL;
@ -1368,7 +1369,13 @@ bool NetworkInitPrompt()
return success;
}
/*
static size_t writedata(void *ptr, size_t size, size_t nmemb, void *stream)
{
int written = fwrite(ptr, size, nmemb, (FILE *)stream);
return written;
}
*/
int CodeDownload(const char *id)
{
if (!CreateSubfolder(Settings.TxtCheatcodespath))
@ -1462,7 +1469,63 @@ int CodeDownload(const char *id)
char codeurl[250];
snprintf(codeurl, sizeof(codeurl), "http://geckocodes.org/txt.php?txt=%s", id);
//snprintf(codeurl, sizeof(codeurl), "http://geckocodes.org/codes/G/%s.txt", id);
/* //// preparation for lib cURL - Thanks airline38
CURL *curl_handle;
// Forge cURL header - needed for cloudflare proxy
char useragent[20];
snprintf(useragent, sizeof(useragent), "USBLoaderGX r%s", GetRev());
curl_handle = curl_easy_init();
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, useragent);
curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl_handle, CURLOPT_URL, codeurl);
curl_easy_setopt(curl_handle, CURLOPT_HTTPGET, 1); // needed?
FILE * pfile = fopen(txtpath, "wb");
if(pfile)
{
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, writedata);
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)pfile);
curl_easy_perform(curl_handle);
fclose(pfile);
// verify downloaded content
pfile = fopen(txtpath, "rb");
char target[4];
fseek(pfile,0,SEEK_SET);
fread(target, sizeof(char), 4, pfile);
fclose(pfile);
//printf("target=%s game id=%s\n",target,id);
if (strncmp(target,id,4)== 0 )
{
snprintf(txtpath, sizeof(txtpath), "%s%s", txtpath, tr(" has been Saved. The text has not been verified. Some of the code may not work right with each other. If you experience trouble, open the text in a real text editor for more information." ));
WindowPrompt(0, txtpath, tr( "OK" ));
curl_easy_cleanup(curl_handle);
curl_global_cleanup();
ret = 0;
}
else
{
RemoveFile(txtpath);
snprintf(codeurl, sizeof(codeurl), "%s%s", codeurl, tr( " is not on the server." ));
WindowPrompt(tr( "Error" ), codeurl, tr( "OK" ));
}
}
else
{
snprintf(codeurl, sizeof(codeurl), "%s%s", codeurl, tr(" could not be downloaded."));
WindowPrompt(tr( "Error" ), codeurl, tr( "OK" ));
}
curl_easy_cleanup(curl_handle);
curl_global_cleanup();
/////
*/
struct block file = downloadfile(codeurl);
if (file.data != NULL)

View File

@ -78,7 +78,7 @@ void CSettings::SetDefault()
strlcpy(NandEmuChanPath, NandEmuPath, sizeof(NandEmuChanPath));
strlcpy(GameCubePath, "usb1:/games/", sizeof(GameCubePath));
strlcpy(GameCubeSDPath, "sd:/games/", sizeof(GameCubeSDPath));
strlcpy(CustomBannersURL, "http://dl.dropbox.com/u/101209384/", sizeof(CustomBannersURL));
strlcpy(CustomBannersURL, "http://dl.dropboxusercontent.com/u/101209384/", sizeof(CustomBannersURL));
theme[0] = 0;
language_path[0] = 0;
ogg_path[0] = 0;
@ -133,6 +133,7 @@ void CSettings::SetDefault()
MultiplePartitions = OFF;
BlockIOSReload = AUTO;
USBPort = 0;
USBAutoMount = ON;
CacheTitles = ON;
WSFactor = 0.8f; //actually should be 0.75 for real widescreen
FontScaleFactor = 0.8f; //it's a work around to not have to change ALL fonts now
@ -346,6 +347,7 @@ bool CSettings::Save()
fprintf(file, "HomeMenu = %d\n", HomeMenu);
fprintf(file, "MultiplePartitions = %d\n", MultiplePartitions);
fprintf(file, "USBPort = %d\n", USBPort);
fprintf(file, "USBAutoMount = %d\n", USBAutoMount);
fprintf(file, "CacheTitles = %d\n", CacheTitles);
fprintf(file, "BlockIOSReload = %d\n", BlockIOSReload);
fprintf(file, "WSFactor = %0.3f\n", WSFactor);
@ -642,6 +644,11 @@ bool CSettings::SetSetting(char *name, char *value)
USBPort = atoi(value);
return true;
}
else if (strcmp(name, "USBAutoMount") == 0)
{
USBAutoMount = atoi(value);
return true;
}
else if (strcmp(name, "CacheTitles") == 0)
{
CacheTitles = atoi(value);

View File

@ -132,6 +132,7 @@ class CSettings
short HomeMenu;
short MultiplePartitions;
short USBPort;
short USBAutoMount;
short CacheTitles;
short BlockIOSReload;
u32 InstallPartitions;

View File

@ -75,6 +75,7 @@ HardDriveSM::HardDriveSM()
Options->SetName(Idx++, "%s", tr( "Game/Install Partition" ));
Options->SetName(Idx++, "%s", tr( "Multiple Partitions" ));
Options->SetName(Idx++, "%s", tr( "USB Port" ));
Options->SetName(Idx++, "%s", tr( "Mount USB at launch" ));
Options->SetName(Idx++, "%s", tr( "Install Directories" ));
Options->SetName(Idx++, "%s", tr( "Game Split Size" ));
Options->SetName(Idx++, "%s", tr( "Install Partitions" ));
@ -108,6 +109,7 @@ HardDriveSM::~HardDriveSM()
Settings.partition = 0;
}
WBFS_Init(WBFS_DEVICE_USB);
if(Settings.MultiplePartitions)
WBFS_OpenAll();
else
@ -143,6 +145,9 @@ void HardDriveSM::SetOptionValues()
else
Options->SetValue(Idx++, "%i", NewSettingsUSBPort);
//! Settings: Auto Mount USB at launch
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.USBAutoMount] ));
//! Settings: Install directories
Options->SetValue(Idx++, "%s", tr( InstallToText[Settings.InstallToDir] ));
@ -179,6 +184,11 @@ int HardDriveSM::GetMenuInternal()
//! Settings: Game/Install Partition
if (ret == ++Idx)
{
// Init the USB device if mounted after launch.
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandleFromPartition(Settings.partition);
if(usbHandle == NULL)
DeviceHandler::Instance()->MountAllUSB(true);
// Select the next valid partition, even if that's the same one
int fs_type = 0;
int ios = IOS_GetVersion();
@ -214,6 +224,12 @@ int HardDriveSM::GetMenuInternal()
NewSettingsUSBPort = 0;
}
//! Settings: Auto mount USB at launch
else if (ret == ++Idx)
{
if (++Settings.USBAutoMount >= MAX_ON_OFF) Settings.USBAutoMount = 0;
}
//! Settings: Install directories
else if (ret == ++Idx)
{

View File

@ -10,6 +10,8 @@
// Copyright (C) 2010 Joseph Jordan <joe.ftpii@psychlaw.com.au>
// Copyright (C) 2012-2013 damysteryman
// Copyright (C) 2012-2013 Christopher Bratusek <nano@tuxfamily.org>
// Copyright (C) 2013 DarkMatterCore
// Copyright (C) 2014 megazig
#include <gccore.h>
#include <ogc/machine/processor.h>
@ -21,10 +23,8 @@
#define MEM_REG_BASE 0xd8b4000
#define MEM_PROT (MEM_REG_BASE + 0x20a)
//const u8 check_tmd_patch1[] = { 0x23, 0x01, 0x42, 0x5B };
static void disable_memory_protection() {
static inline void disable_memory_protection(void) {
write32(MEM_PROT, read32(MEM_PROT) & 0x0000FFFF);
}
@ -36,65 +36,59 @@ static const u8 di_readlimit_old[] = {
};
static const u8 di_readlimit_patch[] = { 0x7e, 0xd4 };
const u8 isfs_permissions_old[] = { 0x42, 0x8B, 0xD0, 0x01, 0x25, 0x66 };
const u8 isfs_permissions_patch[] = { 0x42, 0x8B, 0xE0, 0x01, 0x25, 0x66 };
const u8 setuid_old[] = { 0xD1, 0x2A, 0x1C, 0x39 };
const u8 setuid_patch[] = { 0x46, 0xC0 };
const u8 es_identify_old[] = { 0x28, 0x03, 0xD1, 0x23 };
const u8 es_identify_patch[] = { 0x00, 0x00 };
const u8 hash_old[] = { 0x20, 0x07, 0x4B, 0x0B };
const u8 hash_patch[] = { 0x00 };
const u8 new_hash_old[] = { 0x20, 0x07, 0x4B, 0x0B };
const u8 addticket_vers_check[] = { 0xD2, 0x01, 0x4E, 0x56 };
const u8 addticket_patch[] = { 0xE0 };
const u8 es_set_ahbprot_old[] = { 0x68, 0x5B, 0x22, 0xEC, 0x00, 0x52, 0x18, 0x9B, 0x68, 0x1B, 0x46, 0x98, 0x07, 0xDB };
const u8 es_set_ahbprot_patch[] = { 0x01 };
static const u8 isfs_permissions_old[] = { 0x42, 0x8B, 0xD0, 0x01, 0x25, 0x66 };
static const u8 isfs_permissions_patch[] = { 0x42, 0x8B, 0xE0, 0x01, 0x25, 0x66 };
static const u8 setuid_old[] = { 0xD1, 0x2A, 0x1C, 0x39 };
static const u8 setuid_patch[] = { 0x46, 0xC0 };
static const u8 es_identify_old[] = { 0x28, 0x03, 0xD1, 0x23 };
static const u8 es_identify_patch[] = { 0x00, 0x00 };
static const u8 hash_old[] = { 0x20, 0x07, 0x23, 0xA2 };
static const u8 hash_patch[] = { 0x00 };
static const u8 new_hash_old[] = { 0x20, 0x07, 0x4B, 0x0B };
static const u8 addticket_vers_check[] = { 0xD2, 0x01, 0x4E, 0x56 };
static const u8 addticket_patch[] = { 0xE0 };
static const u8 es_set_ahbprot_old[] = { 0x68, 0x5B, 0x22, 0xEC, 0x00, 0x52, 0x18, 0x9B, 0x68, 0x1B, 0x46, 0x98, 0x07, 0xDB };
static const u8 es_set_ahbprot_patch[] = { 0x01 };
//Following patches added to iospatch.c by damysteryman, taken from sciifii v5
const u8 MEM2_prot_old[] = { 0xB5, 0x00, 0x4B, 0x09, 0x22, 0x01, 0x80, 0x1A, 0x22, 0xF0 };
const u8 MEM2_prot_patch[] = { 0xB5, 0x00, 0x4B, 0x09, 0x22, 0x00, 0x80, 0x1A, 0x22, 0xF0 };
const u8 ES_OpenTitleContent1_old[] = { 0x9D, 0x05, 0x42, 0x9D, 0xD0, 0x03 };
const u8 ES_OpenTitleContent1_patch[] = { 0x9D, 0x05, 0x42, 0x9D, 0xE0, 0x03 };
const u8 ES_OpenTitleContent2_old[] = { 0xD4, 0x01, 0x4C, 0x36, 0xE0, 0x3B };
const u8 ES_OpenTitleContent2_patch[] = { 0xE0, 0x01, 0x4C, 0x36, 0xE0, 0x3B };
const u8 ES_ReadContent_old[] = { 0xFC, 0x0F, 0xB5, 0x30, 0x1C, 0x14, 0x1C, 0x1D, 0x4B,
0x0E, 0x68, 0x9B, 0x2B, 0x00, 0xD0, 0x03, 0x29, 0x00, 0xDB, 0x01,
0x29, 0x0F, 0xDD, 0x01 };
const u8 ES_ReadContent_patch[] = { 0xFC, 0x0F, 0xB5, 0x30, 0x1C, 0x14, 0x1C, 0x1D, 0x4B,
0x0E, 0x68, 0x9B, 0x2B, 0x00, 0x46, 0xC0, 0x29, 0x00, 0x46, 0xC0,
0x29, 0x0F, 0xE0, 0x01 };
const u8 ES_CloseContent_old[] = { 0xB5, 0x10, 0x4B, 0x10, 0x68, 0x9B, 0x2B, 0x00, 0xD0,
0x03, 0x29, 0x00, 0xDB, 0x01, 0x29, 0x0F, 0xDD, 0x01 };
const u8 ES_CloseContent_patch[] = { 0xB5, 0x10, 0x4B, 0x10, 0x68, 0x9B, 0x2B, 0x00, 0x46,
0xC0, 0x29, 0x00, 0x46, 0xC0, 0x29, 0x0F, 0xE0, 0x01 };
const u8 ES_TitleVersionCheck_old[] = { 0xD2, 0x01, 0x4E, 0x56 };
const u8 ES_TitleVersionCheck_patch[] = { 0xE0, 0x01, 0x4E, 0x56 };
const u8 ES_TitleDeleteCheck_old[] = { 0xD8, 0x00, 0x4A, 0x04 };
const u8 ES_TitleDeleteCheck_patch[] = { 0xE0, 0x00, 0x4A, 0x04 };
static const u8 MEM2_prot_old[] = { 0xB5, 0x00, 0x4B, 0x09, 0x22, 0x01, 0x80, 0x1A, 0x22, 0xF0 };
static const u8 MEM2_prot_patch[] = { 0xB5, 0x00, 0x4B, 0x09, 0x22, 0x00, 0x80, 0x1A, 0x22, 0xF0 };
static const u8 ES_OpenTitleContent1_old[] = { 0x9D, 0x05, 0x42, 0x9D, 0xD0, 0x03 };
static const u8 ES_OpenTitleContent1_patch[] = { 0x9D, 0x05, 0x42, 0x9D, 0xE0, 0x03 };
static const u8 ES_OpenTitleContent2_old[] = { 0xD4, 0x01, 0x4C, 0x36, 0xE0, 0x3B };
static const u8 ES_OpenTitleContent2_patch[] = { 0xE0, 0x01, 0x4C, 0x36, 0xE0, 0x3B };
static const u8 ES_ReadContent_old[] = { 0xFC, 0x0F, 0xB5, 0x30, 0x1C, 0x14, 0x1C, 0x1D, 0x4B,
0x0E, 0x68, 0x9B, 0x2B, 0x00, 0xD0, 0x03, 0x29, 0x00, 0xDB, 0x01,
0x29, 0x0F, 0xDD, 0x01 };
static const u8 ES_ReadContent_patch[] = { 0xFC, 0x0F, 0xB5, 0x30, 0x1C, 0x14, 0x1C, 0x1D, 0x4B,
0x0E, 0x68, 0x9B, 0x2B, 0x00, 0x46, 0xC0, 0x29, 0x00, 0x46, 0xC0,
0x29, 0x0F, 0xE0, 0x01 };
static const u8 ES_CloseContent_old[] = { 0xB5, 0x10, 0x4B, 0x10, 0x68, 0x9B, 0x2B, 0x00, 0xD0,
0x03, 0x29, 0x00, 0xDB, 0x01, 0x29, 0x0F, 0xDD, 0x01 };
static const u8 ES_CloseContent_patch[] = { 0xB5, 0x10, 0x4B, 0x10, 0x68, 0x9B, 0x2B, 0x00, 0x46,
0xC0, 0x29, 0x00, 0x46, 0xC0, 0x29, 0x0F, 0xE0, 0x01 };
static const u8 ES_TitleVersionCheck_old[] = { 0xD2, 0x01, 0x4E, 0x56 };
static const u8 ES_TitleVersionCheck_patch[] = { 0xE0, 0x01, 0x4E, 0x56 };
static const u8 ES_TitleDeleteCheck_old[] = { 0xD8, 0x00, 0x4A, 0x04 };
static const u8 ES_TitleDeleteCheck_patch[] = { 0xE0, 0x00, 0x4A, 0x04 };
//Following patches made my damysteryman for use with Wii U's vWii
/*const u8 Kill_AntiSysTitleInstallv2_pt1_old[] = { 0x68, 0x1A, 0x2A, 0x01, 0xD0, 0x05 }; // Make sure that the pt1
const u8 Kill_AntiSysTitleInstallv2_pt1_patch[] = { 0x68, 0x1A, 0x2A, 0x01, 0x46, 0xC0 }; // patch is applied twice. -dmm
const u8 Kill_AntiSysTitleInstallv2_pt2_old[] = { 0x4B, 0x29, 0x42, 0x9A, 0xD0, 0x02 };
const u8 Kill_AntiSysTitleInstallv2_pt2_patch[] = { 0x4B, 0x29, 0x42, 0x9A, 0x46, 0xC0 };
const u8 Kill_AntiSysTitleInstallv2_pt3_old[] = { 0xD0, 0x02, 0x33, 0x06 };
const u8 Kill_AntiSysTitleInstallv2_pt3_patch[] = { 0x46, 0xC0, 0x33, 0x06 };
const u8 Kill_AntiSysTitleInstallv2_pt4_old[] = { 0x2C, 0x01, 0xD0, 0x07};
const u8 Kill_AntiSysTitleInstallv2_pt4_patch[] = { 0x2C, 0x01, 0x46, 0xC0};
const u8 Kill_AntiSysTitleInstallv2_pt5_old[] = { 0x42, 0x94, 0xD0, 0x03, 0x9C, 0x03 };
const u8 Kill_AntiSysTitleInstallv2_pt5_patch[] = { 0x42, 0x94, 0x46, 0xC0, 0x9C, 0x03 };*/
//Following patches made my damysteryman for use with Wii U's vWii
const u8 Kill_AntiSysTitleInstallv3_pt1_old[] = { 0x68, 0x1A, 0x2A, 0x01, 0xD0, 0x05 }; // Make sure that the pt1
const u8 Kill_AntiSysTitleInstallv3_pt1_patch[] = { 0x68, 0x1A, 0x2A, 0x01, 0x46, 0xC0 }; // patch is applied twice. -dmm
const u8 Kill_AntiSysTitleInstallv3_pt2_old[] = { 0xD0, 0x02, 0x33, 0x06, 0x42, 0x9A, 0xD1, 0x01 }; // Make sure that the pt2 patch
const u8 Kill_AntiSysTitleInstallv3_pt2_patch[] = { 0x46, 0xC0, 0x33, 0x06, 0x42, 0x9A, 0xE0, 0x01 }; // is also applied twice. -dmm
const u8 Kill_AntiSysTitleInstallv3_pt3_old[] = { 0x68, 0xFB, 0x2B, 0x00, 0xDB, 0x01 };
const u8 Kill_AntiSysTitleInstallv3_pt3_patch[] = { 0x68, 0xFB, 0x2B, 0x00, 0xDB, 0x10 };
//Following set of patches made by damysteryman for use with Wii U's vWii
static const u8 Kill_AntiSysTitleInstallv3_pt1_old[] = { 0x68, 0x1A, 0x2A, 0x01, 0xD0, 0x05 }; // Make sure that the pt1
static const u8 Kill_AntiSysTitleInstallv3_pt1_patch[] = { 0x68, 0x1A, 0x2A, 0x01, 0x46, 0xC0 }; // patch is applied twice. -dmm
static const u8 Kill_AntiSysTitleInstallv3_pt2_old[] = { 0xD0, 0x02, 0x33, 0x06, 0x42, 0x9A, 0xD1, 0x01 }; // Make sure that the pt2 patch
static const u8 Kill_AntiSysTitleInstallv3_pt2_patch[] = { 0x46, 0xC0, 0x33, 0x06, 0x42, 0x9A, 0xE0, 0x01 }; // is also applied twice. -dmm
static const u8 Kill_AntiSysTitleInstallv3_pt3_old[] = { 0x68, 0xFB, 0x2B, 0x00, 0xDB, 0x01 };
static const u8 Kill_AntiSysTitleInstallv3_pt3_patch[] = { 0x68, 0xFB, 0x2B, 0x00, 0xDB, 0x10 };
static u32 apply_patch(char *name, const u8 *old, u32 old_size, const u8 *patch, u32 patch_size, u32 patch_offset, bool verbose) {
static const u8 isfs_setattr_pt1_old[] = { 0x42, 0xAB, 0xD0, 0x02, 0x20, 0x66 };
static const u8 isfs_setattr_pt1_patch[] = { 0x42, 0xAB, 0xE0, 0x02, 0x20, 0x66 };
static const u8 isfs_setattr_pt2_old[] = { 0x2D, 0x00, 0xD0, 0x02, 0x20, 0x66 };
static const u8 isfs_setattr_pt2_patch[] = { 0x2D, 0x00, 0xE0, 0x02, 0x20, 0x66 };
static u8 apply_patch(const char *name, const u8 *old, u32 old_size, const u8 *patch, size_t patch_size, u32 patch_offset, bool verbose) {
u8 *ptr_start = (u8*)*((u32*)0x80003134), *ptr_end = (u8*)0x94000000;
u32 found = 0;
u8 found = 0;
if(verbose)
printf(" Patching %-30s", name);
u8 *location = NULL;
@ -124,7 +118,6 @@ static u32 apply_patch(char *name, const u8 *old, u32 old_size, const u8 *patch,
s32 IosPatch_AHBPROT(bool verbose) {
if (AHBPROT_DISABLED) {
disable_memory_protection();
//return apply_patch("set_ahbprot", check_tmd_old, sizeof(check_tmd_old), check_tmd_patch, sizeof(check_tmd_patch), 6, verbose);
s32 ret = apply_patch("es_set_ahbprot", es_set_ahbprot_old, sizeof(es_set_ahbprot_old), es_set_ahbprot_patch, sizeof(es_set_ahbprot_patch), 25, verbose);
if (ret)
return ret;
@ -141,19 +134,19 @@ s32 IosPatch_RUNTIME(bool wii, bool sciifii, bool vwii, bool verbose) {
disable_memory_protection();
if(wii)
{
if(verbose)
printf(">> Applying standard Wii patches:\n");
if(verbose) printf(">> Applying standard Wii patches:\n");
count += apply_patch("di_readlimit", di_readlimit_old, sizeof(di_readlimit_old), di_readlimit_patch, sizeof(di_readlimit_patch), 12, verbose);
count += apply_patch("isfs_permissions", isfs_permissions_old, sizeof(isfs_permissions_old), isfs_permissions_patch, sizeof(isfs_permissions_patch), 0, verbose);
count += apply_patch("es_setuid", setuid_old, sizeof(setuid_old), setuid_patch, sizeof(setuid_patch), 0, verbose);
count += apply_patch("es_identify", es_identify_old, sizeof(es_identify_old), es_identify_patch, sizeof(es_identify_patch), 2, verbose);
count += apply_patch("hash_check", hash_old, sizeof(hash_old), hash_patch, sizeof(hash_patch), 1, verbose);
count += apply_patch("new_hash_check", new_hash_old, sizeof(new_hash_old), hash_patch, sizeof(hash_patch), 1, verbose);
count += apply_patch("isfs_setattr_pt1", isfs_setattr_pt1_old, sizeof(isfs_setattr_pt1_old), isfs_setattr_pt1_patch, sizeof(isfs_setattr_pt1_patch), 0, verbose);
count += apply_patch("isfs_setattr_pt2", isfs_setattr_pt2_old, sizeof(isfs_setattr_pt2_old), isfs_setattr_pt2_patch, sizeof(isfs_setattr_pt2_patch), 0, verbose);
}
if(sciifii)
{
if(verbose)
printf(">> Applying Sciifii patches:\n");
if(verbose) printf(">> Applying Sciifii patches:\n");
count += apply_patch("MEM2_prot", MEM2_prot_old, sizeof(MEM2_prot_old), MEM2_prot_patch, sizeof(MEM2_prot_patch), 0, verbose);
count += apply_patch("ES_OpenTitleContent1", ES_OpenTitleContent1_old, sizeof(ES_OpenTitleContent1_old), ES_OpenTitleContent1_patch, sizeof(ES_OpenTitleContent1_patch), 0, verbose);
count += apply_patch("ES_OpenTitleContent2", ES_OpenTitleContent2_old, sizeof(ES_OpenTitleContent2_old), ES_OpenTitleContent2_patch, sizeof(ES_OpenTitleContent2_patch), 0, verbose);
@ -164,13 +157,7 @@ s32 IosPatch_RUNTIME(bool wii, bool sciifii, bool vwii, bool verbose) {
}
if(vwii)
{
if(verbose)
printf(">> Applying vWii patches:\n");
/*count += apply_patch("Kill_AntiSysTitleInstallv2_pt1", Kill_AntiSysTitleInstallv2_pt1_old, sizeof(Kill_AntiSysTitleInstallv2_pt1_old), Kill_AntiSysTitleInstallv2_pt1_patch, sizeof(Kill_AntiSysTitleInstallv2_pt1_patch), 0, verbose);
count += apply_patch("Kill_AntiSysTitleInstallv2_pt2", Kill_AntiSysTitleInstallv2_pt2_old, sizeof(Kill_AntiSysTitleInstallv2_pt2_old), Kill_AntiSysTitleInstallv2_pt2_patch, sizeof(Kill_AntiSysTitleInstallv2_pt2_patch), 0, verbose);
count += apply_patch("Kill_AntiSysTitleInstallv2_pt3", Kill_AntiSysTitleInstallv2_pt3_old, sizeof(Kill_AntiSysTitleInstallv2_pt3_old), Kill_AntiSysTitleInstallv2_pt3_patch, sizeof(Kill_AntiSysTitleInstallv2_pt3_patch), 0, verbose);
count += apply_patch("Kill_AntiSysTitleInstallv2_pt4", Kill_AntiSysTitleInstallv2_pt4_old, sizeof(Kill_AntiSysTitleInstallv2_pt4_old), Kill_AntiSysTitleInstallv2_pt4_patch, sizeof(Kill_AntiSysTitleInstallv2_pt4_patch), 0, verbose);
count += apply_patch("Kill_AntiSysTitleInstallv2_pt5", Kill_AntiSysTitleInstallv2_pt5_old, sizeof(Kill_AntiSysTitleInstallv2_pt5_old), Kill_AntiSysTitleInstallv2_pt5_patch, sizeof(Kill_AntiSysTitleInstallv2_pt5_patch), 0, verbose);*/
if(verbose) printf(">> Applying vWii patches:\n");
count += apply_patch("Kill_AntiSysTitleInstallv3_pt1", Kill_AntiSysTitleInstallv3_pt1_old, sizeof(Kill_AntiSysTitleInstallv3_pt1_old), Kill_AntiSysTitleInstallv3_pt1_patch, sizeof(Kill_AntiSysTitleInstallv3_pt1_patch), 0, verbose);
count += apply_patch("Kill_AntiSysTitleInstallv3_pt2", Kill_AntiSysTitleInstallv3_pt2_old, sizeof(Kill_AntiSysTitleInstallv3_pt2_old), Kill_AntiSysTitleInstallv3_pt2_patch, sizeof(Kill_AntiSysTitleInstallv3_pt2_patch), 0, verbose);
count += apply_patch("Kill_AntiSysTitleInstallv3_pt3", Kill_AntiSysTitleInstallv3_pt3_old, sizeof(Kill_AntiSysTitleInstallv3_pt3_old), Kill_AntiSysTitleInstallv3_pt3_patch, sizeof(Kill_AntiSysTitleInstallv3_pt3_patch), 0, verbose);

View File

@ -7,30 +7,141 @@
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License 2.0 for more details.
// Copyright (C) 2010 Joseph Jordan <joe.ftpii@psychlaw.com.au>
// Copyright (C) 2012 damysteryman
// Copyright (C) 2012 Christopher Bratusek <nano@tuxfamily.org>
// Copyright (C) 2010 Joseph Jordan <joe.ftpii@psychlaw.com.au>
// Copyright (C) 2012-2013 damysteryman
// Copyright (C) 2012-2013 Christopher Bratusek <nano@tuxfamily.org>
// Copyright (C) 2013 DarkMatterCore
// Copyright (C) 2014 megazig
#ifndef __RUNTIMEIOSPATCH_H__
#define __RUNTIMEIOSPATCH_H__
/**
* Version information for Libruntimeiospatch.
*/
#define LIB_RUNTIMEIOSPATCH_VERSION "1.5.2"
//==============================================================================
// HW_RVL header
//==============================================================================
#if defined(HW_RVL) /* defined(HW_RVL) */
/**
*Returns true when HW_AHBPROT access can be applied
*/
#define AHBPROT_DISABLED (*(vu32*)0xcd800064 == 0xFFFFFFFF)
//==============================================================================
// Error code definitions:
//==============================================================================
#define ERROR_AHBPROT -5
#define ERROR_PATCH -7
//==============================================================================
// C++ header
//==============================================================================
#ifdef __cplusplus
extern "C" {
#endif
/* __cplusplus */
//==============================================================================
// Extra standard declarations
//==============================================================================
typedef signed int s32;
//==============================================================================
//==============================================================================
// Patchsets:
//==============================================================================
/*
Wii:
* DI Readlimit
* ISFS Permissions
* ES SetUID
* ES SetIdentify
* Hash Check (aka Trucha)
* New Hash Check (aka New Trucha)
Sciifii:
* MEM2 Prot
* ES OpenTitleContent 1 & 2
* ES ReadContent Prot
* ES CloseContent
* ES TitleVersionCheck
* ES TitleDeleteCheck
vWii:
* Kill Anti-SystemTitle-Install 1, 2, 3, 4 & 5
*/
#ifndef _RUNTIMEIOSPATCH_H_
#define _RUNTIMEIOSPATCH_H_
//==============================================================================
// Functions:
//==============================================================================
#define LIB_RUNTIMEIOSPATCH_VERSION "1.3.0"
/**
* This function can be used to keep HW_AHBPROT access when going to reload IOS
* @param verbose Flag determing whether or not to print messages on-screen
* @example
* if(AHBPROT_DISABLED) {
* s32 ret;
* ret = IosPatch_AHBPROT(false);
* if (ret) {
* IOS_ReloadIOS(36);
* } else {
* printf("IosPatch_AHBPROT failed.");
* }
* }
* @return Signed 32bit integer representing code
* > 0 : Success - return equals to number of applied patches
* ERROR_AHBPROT : Error - No HW_AHBPROT access
*/
s32 IosPatch_AHBPROT(bool verbose);
#define AHBPROT_DISABLED (*(vu32*)0xcd800064 == 0xFFFFFFFF)
#define ERROR_AHBPROT -5
#define ERROR_PATCH -7
#ifdef __cplusplus
extern "C" {
#endif
/**
* This function applies patches on current IOS
* @see Patchsets
* @param wii Flag determing whether or not to apply Wii patches.
* @param sciifii Flag determing whether or not to apply extra Sciifii patches.
* @param vwii Flag determing whether or not to apply extra vWii patches.
* @param verbose Flag determing whether or not to print messages on-screen.
* @example if(AHBPROT_DISABLED) IosPatch_FULL(true, false, false, false);
* @return Signed 32bit integer representing code
* > 0 : Success - return equals to number of applied patches
* ERROR_AHBPROT : Error - No HW_AHBPROT access
* ERROR_PATCH : Error - Patching HW_AHBPROT access failed
*/
s32 IosPatch_RUNTIME(bool wii, bool sciifii, bool vwii, bool verbose);
s32 IosPatch_AHBPROT(bool verbose);
s32 IosPatch_RUNTIME(bool wii, bool sciifii, bool vwii, bool verbose);
s32 IosPatch_FULL(bool wii, bool sciifii, bool vwii, bool verbose, int IOS);
#ifdef __cplusplus
}
#endif
/**
* This function combines IosPatch_AHBPROT + IOS_ReloadIOS + IosPatch_RUNTIME
* @see Patchsets
* @param wii Flag determing whether or not to apply Wii patches.
* @param sciifii Flag determing whether or not to apply extra Sciifii patches.
* @param vwii Flag determing whether or not to apply extra vWii patches.
* @param verbose Flag determing whether or not to print messages on-screen.
* @param IOS Which IOS to reload into.
* @example if(AHBPROT_DISABLED) IosPatch_FULL(true, false, false, false, 58);
* @return Signed 32bit integer representing code
* > 0 : Success - return equals to number of applied patches
* ERROR_AHBPROT : Error - No HW_AHBPROT access
* ERROR_PATCH : Error - Patching HW_AHBPROT access failed
*/
s32 IosPatch_FULL(bool wii, bool sciifii, bool vwii, bool verbose, int IOS);
//==============================================================================
// C++ footer
//==============================================================================
#ifdef __cplusplus
}
#endif /* __cplusplus */
//==============================================================================
// HW_RVL footer
//==============================================================================
#endif /* defined(HW_RVL) */
#endif

View File

@ -530,6 +530,34 @@ int GameBooter::BootDIOSMIOS(struct discHdr *gameHdr)
}
}
// Check kenobigc.bin
if(ocarinaChoice)
{
char kenobigc_path[30];
snprintf(kenobigc_path, sizeof(kenobigc_path), "%s:/sneek/kenobigc.bin", DeviceHandler::GetDevicePrefix(RealPath));
if(!CheckFile(kenobigc_path))
{
// try to copy kenobigc from the other device
char kenobigc_srcpath[30];
snprintf(kenobigc_srcpath, sizeof(kenobigc_srcpath), "%s:/sneek/kenobigc.bin", strncmp(RealPath, "usb", 3) == 0 ? "sd" : "usb1");
if(CheckFile(kenobigc_srcpath))
{
if(CopyFile(kenobigc_srcpath, kenobigc_path) < 0)
{
gprintf("NIN: Couldn't copy %s to %s.\n", kenobigc_srcpath, kenobigc_path);
RemoveFile(kenobigc_path);
if(WindowPrompt(tr("Warning:"), fmt(tr("To use ocarina with %s you need the %s file."), LoaderName, kenobigc_path), tr("Continue"), tr("Cancel")) == 0)
return 0;
}
}
else
{
if(WindowPrompt(tr("Warning:"), fmt(tr("To use ocarina with %s you need the %s file."), LoaderName, kenobigc_path), tr("Continue"), tr("Cancel")) == 0)
return 0;
}
}
}
// Check Ocarina and cheat file location. the .gct file need to be located on the same partition than the game.
if(gameHdr->type != TYPE_GAME_GC_DISC && ocarinaChoice && strcmp(DeviceHandler::GetDevicePrefix(RealPath), DeviceHandler::GetDevicePrefix(Settings.Cheatcodespath)) != 0)
{
@ -953,17 +981,67 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
return 0;
}
// Check USB device
if(strncmp(RealPath, "usb", 3) == 0)
{
// Check Main GameCube Path location
if(strncmp(DeviceHandler::PathToFSName(Settings.GameCubePath), "FAT", 3) != 0)
{
WindowPrompt(tr("Error:"), fmt(tr("To run GameCube games with %s you need to set your 'Main GameCube Path' to an USB FAT32 partition."),LoaderName), tr("OK"));
return 0;
}
// Check if the partition is the first partition on the drive
int part_num = atoi(Settings.GameCubePath+3);
int portPart = DeviceHandler::PartitionToPortPartition(part_num-USB1);
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandleFromPartition(part_num-USB1);
if(usbHandle->GetPartitionNum(portPart))
{
WindowPrompt(tr("Error:"), fmt(tr("To run GameCube games with %s you need to set your 'Main GameCube Path' on the first partition of the Hard Drive."),LoaderName), tr("OK"));
return 0;
}
// Check if the partition is primary
if(usbHandle->GetPartitionTableType(portPart) != MBR)
{
WindowPrompt(tr("Error:"), fmt(tr("To run GameCube games with %s you need to set your 'Main GameCube Path' on a primary partition."),LoaderName), tr("OK"));
return 0;
}
// Check cluster size
if(usbHandle->GetPartitionClusterSize(usbHandle->GetLBAStart(portPart)) > 32768)
{
WindowPrompt(tr("Error:"), fmt(tr("To run GameCube games with %s you need to use a partition with 32k bytes/cluster or less."),LoaderName), tr("OK"));
return 0;
}
}
// Check if Nintendont boot.dol is available
char NIN_loader_path[255];
snprintf(NIN_loader_path, sizeof(NIN_loader_path), "%sboot.dol", Settings.NINLoaderPath);
if(strncmp(RealPath, "usb", 3) == 0) // Nintendont r39 only
{
snprintf(NIN_loader_path, sizeof(NIN_loader_path), "%sloaderusb.dol", Settings.NINLoaderPath);
if(!CheckFile(NIN_loader_path))
snprintf(NIN_loader_path, sizeof(NIN_loader_path), "%sbootusb.dol", Settings.NINLoaderPath);
}
if(strncmp(RealPath, "sd", 2) == 0 || !CheckFile(NIN_loader_path))
{
snprintf(NIN_loader_path, sizeof(NIN_loader_path), "%sloader.dol", Settings.NINLoaderPath);
if(!CheckFile(NIN_loader_path))
snprintf(NIN_loader_path, sizeof(NIN_loader_path), "%sboot.dol", Settings.NINLoaderPath);
}
if(!CheckFile(NIN_loader_path))
{
// Nintendont boot.dol not found
WindowPrompt(tr("Error:"), tr("To run GameCube games with Nintendont you need the boot.dol file in your Nintendont Loader Path."), tr("OK"));
return 0;
}
gprintf("NIN: Loader path = %s \n",NIN_loader_path);
// Check Nintendont version
u32 NIN_cfg_version = NIN_CFG_VERSION;
u8 *buffer = NULL;
u32 filesize = 0;
if(LoadFileToMem(NIN_loader_path, &buffer, &filesize))
@ -974,7 +1052,43 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
{
if((*(u32*)(buffer+i+2)) == 'nten' && (*(u32*)(buffer+i+6)) == 'dont' && (*(u32*)(buffer+i+11)) == 'Load')
{
found=true;
// Get Nintendont version
char NINversion[21];
u8 offset = *(u32*)(buffer+i+17) == ' USB' ? 40 : 36;
for(int j = 0 ; j < 20 ; j++)
NINversion[j] = *(u8*)(buffer+i+offset+j);
NINversion[11] = ' '; // replace \0 between year and time with a space.
NINversion[20] = 0;
struct tm time;
strptime(NINversion, "%b %d %Y %H:%M:%S", &time);
const time_t NINLoaderTime = mktime(&time);
// Alpha0.1
strptime("Sep 20 2013 15:27:01", "%b %d %Y %H:%M:%S", &time);
if(NINLoaderTime == mktime(&time))
{
WindowPrompt(tr("Error:"), tr("USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."), tr("Ok"));
free(buffer);
return 0;
}
// r01 - r40
strptime("Mar 30 2014 12:33:44", "%b %d %Y %H:%M:%S", &time); // r42 - NIN_CFG_VERSION = 2
if(NINLoaderTime < mktime(&time))
{
gprintf("Nintendont r01 - r40 detected. Using CFG version 0x00000001\n");
NIN_cfg_version = 1;
strptime("Mar 29 2014 10:49:31", "%b %d %Y %H:%M:%S", &time); // r39
if(NINLoaderTime < mktime(&time) && strncmp(RealPath, "usb", 3) == 0)
{
WindowPrompt(tr("Error:"), tr("This Nintendont version does not support games on USB."), tr("Ok"));
free(buffer);
return 0;
}
}
found = true;
break;
}
}
@ -995,19 +1109,6 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
return 0;
}
// Check USB device
if(strncmp(RealPath, "usb", 3) == 0)
{
WindowPrompt(tr("Warning:"), tr("Nintendont currently only supports GameCube games on SD card."), tr("OK"));
if(!GCGames::Instance()->CopyUSB2SD(gameHdr))
return 0;
RealPath = GCGames::Instance()->GetPath((const char *) gameHdr->id);
}
// Check Ocarina and cheat file location. the .gct file need to be located on the same partition than the game.
if(ocarinaChoice && strcmp(DeviceHandler::GetDevicePrefix(RealPath), DeviceHandler::GetDevicePrefix(Settings.Cheatcodespath)) != 0)
{
@ -1026,6 +1127,64 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
}
}
// Check kenobiwii.bin
if(ocarinaChoice)
{
char kenobiwii_path[30];
snprintf(kenobiwii_path, sizeof(kenobiwii_path), "%s:/sneek/kenobiwii.bin", DeviceHandler::GetDevicePrefix(RealPath));
if(!CheckFile(kenobiwii_path))
{
// try to copy kenobiwii from the other device
char kenobiwii_srcpath[30];
snprintf(kenobiwii_srcpath, sizeof(kenobiwii_srcpath), "%s:/sneek/kenobiwii.bin", strncmp(RealPath, "usb", 3) == 0 ? "sd" : "usb1");
gprintf("kenobiwii source path = %s \n", kenobiwii_srcpath);
if(CheckFile(kenobiwii_srcpath))
{
if(CopyFile(kenobiwii_srcpath, kenobiwii_path) < 0)
{
gprintf("NIN: Couldn't copy %s to %s.\n", kenobiwii_srcpath, kenobiwii_path);
RemoveFile(kenobiwii_path);
if(WindowPrompt(tr("Warning:"), fmt(tr("To use ocarina with %s you need the %s file."), LoaderName, kenobiwii_path), tr("Continue"), tr("Cancel")) == 0)
return 0;
}
}
else
{
if(WindowPrompt(tr("Warning:"), fmt(tr("To use ocarina with %s you need the %s file."), LoaderName, kenobiwii_path), tr("Continue"), tr("Cancel")) == 0)
return 0;
}
}
}
// Check controller.ini
if(ninUSBHIDChoice || IosLoader::isWiiU())
{
char controllerini_path[30];
snprintf(controllerini_path, sizeof(controllerini_path), "%s:/controller.ini", DeviceHandler::GetDevicePrefix(RealPath));
if(!CheckFile(controllerini_path))
{
// try to copy controller.ini from the other device
char controllerini_srcpath[30];
snprintf(controllerini_srcpath, sizeof(controllerini_srcpath), "%s:/controller.ini", strncmp(RealPath, "usb", 3) == 0 ? "sd" : "usb1");
gprintf("Controller.ini source path = %s \n", controllerini_srcpath);
if(CheckFile(controllerini_srcpath))
{
if(CopyFile(controllerini_srcpath, controllerini_path) < 0)
{
gprintf("NIN: Couldn't copy %s to %s.\n", controllerini_srcpath, controllerini_path);
RemoveFile(controllerini_path);
if(WindowPrompt(tr("Warning:"), fmt(tr("To use HID with %s you need the %s file."), LoaderName, controllerini_path), tr("Continue"), tr("Cancel")) == 0)
return 0;
}
}
else
{
if(WindowPrompt(tr("Warning:"), fmt(tr("To use HID with %s you need the %s file."), LoaderName, controllerini_path), tr("Continue"), tr("Cancel")) == 0)
return 0;
}
}
}
// Check if game has multi Discs
bool bootDisc2 = false;
if(gameHdr->disc_no == 0)
@ -1059,7 +1218,7 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
// Nintendont Config file path
char NINCfgPath[17];
snprintf(NINCfgPath, sizeof(NINCfgPath), "%s:/nincfg.bin", DeviceHandler::GetDevicePrefix(RealPath));
snprintf(NINCfgPath, sizeof(NINCfgPath), "%s:/nincfg.bin", DeviceHandler::GetDevicePrefix(NIN_loader_path));
gprintf("NIN: Cfg path : %s \n", NINCfgPath);
// Nintendont Config file settings
@ -1076,11 +1235,10 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
// Magic and CFG_Version for Nintendont
nin_config->Magicbytes = NIN_MAGIC;
nin_config->Version = NIN_CFG_VERSION;
nin_config->Version = NIN_cfg_version;
// Game path
nin_config->Config |= NIN_CFG_GAME_PATH;
strncpy(nin_config->GamePath, gamePath, sizeof(nin_config->GamePath));
// setup cheat and path
@ -1118,11 +1276,19 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
nin_config->Config |= NIN_CFG_HID; // auto enabled by nintendont on vWii
if(!IosLoader::isWiiU())
nin_config->Config |= NIN_CFG_OSREPORT; // log OS reports only on Wii. todo: add a user setting?
if(strncmp(RealPath, "usb", 3) == 0)
nin_config->Config |= NIN_CFG_USB; // r40+
gprintf("NIN: config 0x%08x\n", nin_config->Config);
// Max Pads - Make a proper setting later
nin_config->MaxPads = 4; // NIN_CFG_VERSION 2 r42
// GameID for MCEmu
memcpy(&nin_config->GameID, gameHdr->id, 4); // NIN_CFG_VERSION 2 r83
// Setup Video Mode
if(ninVideoChoice == DML_VIDEO_NONE) // No video mode
{
@ -1164,11 +1330,8 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
}
}
gprintf("NIN: Language 0x%08x \n", nin_config->Language);
// Set Sram flags
PatchSram(languageChoice, true, nin_config->Config & NIN_CFG_FORCE_PROG);
//write config file to game's partition root.
//write config file to nintendont's partition root.
FILE *fp = fopen(NINCfgPath, "wb");
if (fp)
{
@ -1183,6 +1346,23 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
return 0;
}
// Copy Nintendont Config file to game path
if(strncmp(NINCfgPath, RealPath, 2) != 0)
{
char NINDestPath[17];
snprintf(NINDestPath, sizeof(NINDestPath), "%s:/nincfg.bin", DeviceHandler::GetDevicePrefix(RealPath));
gprintf("NIN: Copying %s to %s...", NINCfgPath, NINDestPath);
if(CopyFile(NINCfgPath, NINDestPath) < 0)
{
gprintf("\nError: Couldn't copy %s to %s.\n", NINCfgPath, NINDestPath);
RemoveFile(NINDestPath);
if(WindowPrompt(tr("Warning:"), tr("USBloaderGX couldn't write Nintendont config file. Launch Nintendont anyway?"), tr("Yes"), tr("Cancel")) == 0)
return 0;
}
gprintf("done\n");
}
// Launch Nintendont
return !(BootHomebrew(NIN_loader_path) < 0);
}

View File

@ -80,7 +80,7 @@ static int PartitionChoice()
int choice = WindowPrompt(tr( "No WBFS or FAT/NTFS/EXT partition found" ), tr( "You can select or format a partition or use the channel loader mode." ), tr( "Select" ), tr( "Format" ), tr( "Channels" ));
if (choice == 0)
{
Settings.LoaderMode = MODE_ALL;
Settings.LoaderMode = MODE_NANDCHANNELS;
return 0;
}
else if(choice == 1)
@ -130,9 +130,10 @@ int MountGamePartition(bool ShowGUI)
if (wbfsinit < 0)
{
if(ShowGUI)
ShowError("%s %s", tr( "USB Device not found." ), tr("Switching to channel list mode."));
ShowError("%s %s", tr( "USB Device not initialized." ), tr("Switching to channel list mode."));
Settings.LoaderMode = MODE_ALL;
Settings.LoaderMode &= ~MODE_WIIGAMES;
Settings.LoaderMode |= MODE_NANDCHANNELS;
}
else
{
@ -149,7 +150,7 @@ int MountGamePartition(bool ShowGUI)
if(ShowGUI)
PartitionChoice();
else
Settings.LoaderMode = MODE_ALL;
Settings.LoaderMode = MODE_NANDCHANNELS;
}
}
}

View File

@ -744,7 +744,7 @@ wbfs_t* Wbfs_Fat::CreatePart(u8 *id, char *path)
// 1 cluster less than 4gb
u64 OPT_split_size = 4LL * 1024 * 1024 * 1024 - 32 * 1024;
if(Settings.GameSplit == GAMESPLIT_NONE && gameList.GetGameFS(id) != PART_FS_FAT)
if(Settings.GameSplit == GAMESPLIT_NONE && DeviceHandler::GetFilesystemType(USB1+Settings.partition) != PART_FS_FAT)
OPT_split_size = (u64) 100LL * 1024 * 1024 * 1024 - 32 * 1024;
else if(Settings.GameSplit == GAMESPLIT_2GB)

View File

@ -53,17 +53,17 @@ cat <<EOF > ./HBC/META.XML
<arg>--usbport=0</arg>
</arguments>
// remove this line to enable arguments -->
<no_ios_reload/>
<ahb_access/>
<short_description>Loads games from USB-devices</short_description>
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.
The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller.
Features are automatic widescreen detection, coverdownload, parental control, theme support and many more.
Credits:
Coding: Dimok, nIxx, giantpune, ardi, Hungyip84, DrayX7, Lustar, r-win, WiiShizzza
Coding: Cyan, Dimok, nIxx, giantpune, ardi, Hungyip84, DrayX7, Lustar, r-win, WiiShizzza
Artworks: cyrex, NeoRame
Validation: Cyan and many others
Issue management: Cyan / Dimok
Issue management: Cyan
WiiTDB / Hosting covers: Lustar
USBLoader sources: Waninkoko, Kwiirk, Hermes
cIOS maintenance: davebaol, xabby666, XFlak and Rodries