*Added support for starting .wbfs game files from fat32/ntfs partitions on a sector size > 512 (tested with 4096)

*modified libcustomfat and ntfs fragment fetch function to support >512 bytes per sector
*Added new ehcmodule (thanks rodries)
*Added real support of using both ports simultaniously without shutting down the other (thanks rodries for the ehcmodule works on this). There is no longer the limitation that the settings have to be on SD card for this. (ONLY HERMES CIOS)
*Moved a few settings to Feature Settings and added a new Hard Drive Settings
*Changed Wiinnertag path to only point to the path and not to the file. You must correct the path manually in custom path settings or reset you configs for this change or Winnertag won't work!!
*Removed a few compile warnings for devkitPPC R23
This commit is contained in:
dimok321 2011-06-22 17:57:37 +00:00
parent 868aaee300
commit a3495651f0
78 changed files with 2391 additions and 1862 deletions

View File

@ -2,8 +2,8 @@
<app version="1"> <app version="1">
<name> USB Loader GX</name> <name> USB Loader GX</name>
<coder>USB Loader GX Team</coder> <coder>USB Loader GX Team</coder>
<version>2.1 r1092</version> <version>2.1 r1093</version>
<release_date>201106202346</release_date> <release_date>201106221731</release_date>
<no_ios_reload/> <no_ios_reload/>
<short_description>Loads games from USB-devices</short_description> <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. <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.

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+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" "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" "Language-Team: r1056 - last version on http://djelinek.sweb.cz/_USBLoderGX/czech.lang \n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "Automatický start síte" msgstr "Automatický start síte"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr ""
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "Cesta pro BCA kódy" msgstr "Cesta pro BCA kódy"
@ -231,6 +228,9 @@ msgstr "Zablokovat GUI nastavení"
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "Zablokovat HBC nabídku" msgstr "Zablokovat HBC nabídku"
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Zablokovat opetovné zavedení IOS" msgstr "Zablokovat opetovné zavedení IOS"
@ -390,6 +390,9 @@ msgstr "Nelze otevrít wiitdb.xml."
msgid "Could not save." msgid "Could not save."
msgstr "Nelze uložit." msgstr "Nelze uložit."
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Stažení obalu" msgstr "Stažení obalu"
@ -611,6 +614,9 @@ msgstr "Opustit kam?"
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Rozbaluji soubory..." msgstr "Rozbaluji soubory..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Neúspešné formátování" msgstr "Neúspešné formátování"
@ -768,6 +774,9 @@ msgstr "Hlavní nastavení"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Hlavní menu" msgstr "Hlavní menu"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Cesta pro Homebrew aplikace" msgstr "Cesta pro Homebrew aplikace"
@ -812,18 +821,18 @@ msgstr "Vložte Wii disk"
msgid "Install" msgid "Install"
msgstr "Instalace" msgstr "Instalace"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Chyba pri instalaci" msgstr "Chyba pri instalaci"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "Nainstalovat hru" msgstr "Nainstalovat hru"
msgid "Install directories"
msgstr "Instalacní adresáre"
msgid "Install partitions"
msgstr "Instalacní oddíly"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Instaluji obsah... Ok!" msgstr "Instaluji obsah... Ok!"
@ -1598,6 +1607,12 @@ msgstr "z "
msgid "seconds left" msgid "seconds left"
msgstr "sekund zbývá" msgstr "sekund zbývá"
#~ msgid "Install directories"
#~ msgstr "Instalacní adresáre"
#~ msgid "Install partitions"
#~ msgstr "Instalacní oddíly"
#~ msgid " Wad Saved as:" #~ msgid " Wad Saved as:"
#~ msgstr " WAD uložen jako:" #~ msgstr " WAD uložen jako:"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: Fox888[dk]\n" "Last-Translator: Fox888[dk]\n"
"Language-Team: [dk]\n" "Language-Team: [dk]\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "AutoInit netværk" msgstr "AutoInit netværk"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr "Automatisk skift af port er gjort on the fly. For denne mulighed skal du skifte alle brugerdefinerede stier til SD kortet først, for ellers kan det skade dit fil system."
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "Sti til BCA koder" msgstr "Sti til BCA koder"
@ -231,6 +228,9 @@ msgstr "Bloker Gui indstillinger"
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "Bloker HBC menu" msgstr "Bloker HBC menu"
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Blokér IOS-reload" msgstr "Blokér IOS-reload"
@ -390,6 +390,9 @@ msgstr "Kunne ikke åbne wiitdb.xml"
msgid "Could not save." msgid "Could not save."
msgstr "Kunne ikke gemme." msgstr "Kunne ikke gemme."
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Cover-download" msgstr "Cover-download"
@ -611,6 +614,9 @@ msgstr "Hvorhen?"
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Pakker filer ud..." msgstr "Pakker filer ud..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Formateringen mislykkedes" msgstr "Formateringen mislykkedes"
@ -768,6 +774,9 @@ msgstr "Almindelig Indstillinger"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "" msgstr ""
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Sti til homebrew-programmer" msgstr "Sti til homebrew-programmer"
@ -812,18 +821,18 @@ msgstr "Indsæt en Wii-DVD!"
msgid "Install" msgid "Install"
msgstr "Installér" msgstr "Installér"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Installationsfejl!" msgstr "Installationsfejl!"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "Installér nyt spil" msgstr "Installér nyt spil"
msgid "Install directories"
msgstr "Installer mappe"
msgid "Install partitions"
msgstr "Installationspartitioner"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Installerer indhold... Ok!" msgstr "Installerer indhold... Ok!"
@ -1598,6 +1607,15 @@ msgstr "af"
msgid "seconds left" msgid "seconds left"
msgstr "sekunder tilbage" msgstr "sekunder tilbage"
#~ msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
#~ msgstr "Automatisk skift af port er gjort on the fly. For denne mulighed skal du skifte alle brugerdefinerede stier til SD kortet først, for ellers kan det skade dit fil system."
#~ msgid "Install directories"
#~ msgstr "Installer mappe"
#~ msgid "Install partitions"
#~ msgstr "Installationspartitioner"
#~ msgid " Wad Saved as:" #~ msgid " Wad Saved as:"
#~ msgstr " WAD gemt som:" #~ msgstr " WAD gemt som:"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2011-06-20 07:25+0100\n" "PO-Revision-Date: 2011-06-20 07:25+0100\n"
"Last-Translator: glowy\n" "Last-Translator: glowy\n"
"Language-Team: tj_cool, glowy\n" "Language-Team: tj_cool, glowy\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "Netwerk Auto init." msgstr "Netwerk Auto init."
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr "Automatisch poort wisselen word zonder onderbreking gedaan. Je moet eerst alle aangepaste paden veranderen naar SD-kaart voor deze optie anders kan het je bestandssysteem beschadigen."
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "Locatie BCA codes" msgstr "Locatie BCA codes"
@ -231,6 +228,9 @@ msgstr "Blokkeer GUI Instellingen"
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "Blokkeer HBC Menu" msgstr "Blokkeer HBC Menu"
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Stop IOS herladen" msgstr "Stop IOS herladen"
@ -390,6 +390,9 @@ msgstr "Kan wiitdb.xml niet openen."
msgid "Could not save." msgid "Could not save."
msgstr "Kan niet opslaan." msgstr "Kan niet opslaan."
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Download hoesjes" msgstr "Download hoesjes"
@ -611,6 +614,9 @@ msgstr "Stoppen naar?"
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Bestanden uitpakken..." msgstr "Bestanden uitpakken..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Formatteren mislukt" msgstr "Formatteren mislukt"
@ -768,6 +774,9 @@ msgstr "Globale instellingen"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "" msgstr ""
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Locatie homebrew apps" msgstr "Locatie homebrew apps"
@ -812,18 +821,18 @@ msgstr "Voer een Wii disk in!"
msgid "Install" msgid "Install"
msgstr "Installeer" msgstr "Installeer"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Installatiefout!" msgstr "Installatiefout!"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "Spel installeren" msgstr "Spel installeren"
msgid "Install directories"
msgstr "Installeer mappen"
msgid "Install partitions"
msgstr "Installatie partitie"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Installeren inhoud... Ok!" msgstr "Installeren inhoud... Ok!"
@ -1597,3 +1606,12 @@ msgstr "van"
msgid "seconds left" msgid "seconds left"
msgstr "seconden over" msgstr "seconden over"
#~ msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
#~ msgstr "Automatisch poort wisselen word zonder onderbreking gedaan. Je moet eerst alle aangepaste paden veranderen naar SD-kaart voor deze optie anders kan het je bestandssysteem beschadigen."
#~ msgid "Install directories"
#~ msgstr "Installeer mappen"
#~ msgid "Install partitions"
#~ msgstr "Installatie partitie"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "" msgstr ""
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr ""
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "" msgstr ""
@ -231,6 +228,9 @@ msgstr ""
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "" msgstr ""
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "" msgstr ""
@ -390,6 +390,9 @@ msgstr ""
msgid "Could not save." msgid "Could not save."
msgstr "" msgstr ""
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "" msgstr ""
@ -611,6 +614,9 @@ msgstr ""
msgid "Extracting files..." msgid "Extracting files..."
msgstr "" msgstr ""
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "" msgstr ""
@ -768,6 +774,9 @@ msgstr ""
msgid "HOME Menu" msgid "HOME Menu"
msgstr "" msgstr ""
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "" msgstr ""
@ -812,18 +821,18 @@ msgstr ""
msgid "Install" msgid "Install"
msgstr "" msgstr ""
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "" msgstr ""
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "" msgstr ""
msgid "Install directories"
msgstr ""
msgid "Install partitions"
msgstr ""
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: c64rmx\n" "Last-Translator: c64rmx\n"
"Language-Team: \n" "Language-Team: \n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "Autom. verkon käynnistys" msgstr "Autom. verkon käynnistys"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr ""
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "" msgstr ""
@ -231,6 +228,9 @@ msgstr ""
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "" msgstr ""
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Blokkaa IOS:in uudelleenlataus" msgstr "Blokkaa IOS:in uudelleenlataus"
@ -390,6 +390,9 @@ msgstr ""
msgid "Could not save." msgid "Could not save."
msgstr "" msgstr ""
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Kansien lataus" msgstr "Kansien lataus"
@ -611,6 +614,9 @@ msgstr ""
msgid "Extracting files..." msgid "Extracting files..."
msgstr "" msgstr ""
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Formatointi ei onnistunut" msgstr "Formatointi ei onnistunut"
@ -768,6 +774,9 @@ msgstr ""
msgid "HOME Menu" msgid "HOME Menu"
msgstr "" msgstr ""
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrew Apps polku" msgstr "Homebrew Apps polku"
@ -812,18 +821,18 @@ msgstr "Aseta Wii-levy!"
msgid "Install" msgid "Install"
msgstr "Asenna" msgstr "Asenna"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Asennusvirhe!" msgstr "Asennusvirhe!"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "Asenna peli" msgstr "Asenna peli"
msgid "Install directories"
msgstr ""
msgid "Install partitions"
msgstr ""
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Asennetaan sisältöä... Ok!" msgstr "Asennetaan sisältöä... Ok!"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: Kin8\n" "Last-Translator: Kin8\n"
"Language-Team: Badablek, Amour, ikya, Cyan & Kin8\n" "Language-Team: Badablek, Amour, ikya, Cyan & Kin8\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "AutoInit réseau" msgstr "AutoInit réseau"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr "Vous devez placer tous les dossiers personnalisés sur la carte SD avant d'utiliser cette option, sinon vous risquez d'endommager les données de vos disques USB."
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "Dossier codes BCA" msgstr "Dossier codes BCA"
@ -231,6 +228,9 @@ msgstr "Bloquer Config. GUI"
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "Bloquer Menu HBC" msgstr "Bloquer Menu HBC"
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Bloquer IOS reload" msgstr "Bloquer IOS reload"
@ -390,6 +390,9 @@ msgstr "Impossible d'ouvrir wiitdb.xml."
msgid "Could not save." msgid "Could not save."
msgstr "Sauvegarde impossible." msgstr "Sauvegarde impossible."
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Téléchargement Jaquettes" msgstr "Téléchargement Jaquettes"
@ -611,6 +614,9 @@ msgstr "Quitter vers où ?"
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Extraction des fichiers..." msgstr "Extraction des fichiers..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Échec du formatage" msgstr "Échec du formatage"
@ -768,6 +774,9 @@ msgstr "Paramètres"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Menu HOME" msgstr "Menu HOME"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Dossier Apps Homebrew" msgstr "Dossier Apps Homebrew"
@ -812,18 +821,18 @@ msgstr "Insérez un disque Wii !"
msgid "Install" msgid "Install"
msgstr "Installer" msgstr "Installer"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Erreur à l'installation !" msgstr "Erreur à l'installation !"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "Installer un jeu" msgstr "Installer un jeu"
msgid "Install directories"
msgstr "Dossiers d'installation"
msgid "Install partitions"
msgstr "Installation"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Installation contenu... OK!" msgstr "Installation contenu... OK!"
@ -1597,3 +1606,12 @@ msgstr "sur"
msgid "seconds left" msgid "seconds left"
msgstr "secondes restantes" msgstr "secondes restantes"
#~ msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
#~ msgstr "Vous devez placer tous les dossiers personnalisés sur la carte SD avant d'utiliser cette option, sinon vous risquez d'endommager les données de vos disques USB."
#~ msgid "Install directories"
#~ msgstr "Dossiers d'installation"
#~ msgid "Install partitions"
#~ msgstr "Installation"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 17:00+0100\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2010-07-03 17:35-0800\n" "PO-Revision-Date: 2010-07-03 17:35-0800\n"
"Last-Translator: TheRealVisitor\n" "Last-Translator: TheRealVisitor\n"
"Language-Team: Bertilax, Snoozer, wishmasterf, ZEN.13, TheRealVisitor\n" "Language-Team: Bertilax, Snoozer, wishmasterf, ZEN.13, TheRealVisitor\n"
@ -183,9 +183,6 @@ msgstr "Auto"
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "Autoinit. Netzwerk" msgstr "Autoinit. Netzwerk"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr "Automatische Portumschaltung wird jetzt direkt zur Programmlaufzeit durchgeführt. Für diese Option müssen zuerst alle eigenen Pfade auf die SD Karte verweisen, da ansonsten das Dateisystem beschädigt werden könnte."
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "BCA Codes" msgstr "BCA Codes"
@ -231,6 +228,9 @@ msgstr "Blocke GUI-Optionen"
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "Blocke HBC Menü" msgstr "Blocke HBC Menü"
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Blocke IOS-Neuladen" msgstr "Blocke IOS-Neuladen"
@ -390,6 +390,9 @@ msgstr "Konnte wiitdb.xml nicht öffnen."
msgid "Could not save." msgid "Could not save."
msgstr "Es konnte nicht gespeichert werden." msgstr "Es konnte nicht gespeichert werden."
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Welche Cover herunterladen?" msgstr "Welche Cover herunterladen?"
@ -611,6 +614,9 @@ msgstr "Beenden zum..."
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Entpacke Dateien..." msgstr "Entpacke Dateien..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Formatieren fehlgeschlagen" msgstr "Formatieren fehlgeschlagen"
@ -768,6 +774,9 @@ msgstr "Globale Einstellungen"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "HOME Menü" msgstr "HOME Menü"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrew Apps" msgstr "Homebrew Apps"
@ -812,18 +821,18 @@ msgstr "Eine Wii Disk einlegen!"
msgid "Install" msgid "Install"
msgstr "Installieren" msgstr "Installieren"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Installationsfehler!" msgstr "Installationsfehler!"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "Spiel installieren" msgstr "Spiel installieren"
msgid "Install directories"
msgstr "Installationsart"
msgid "Install partitions"
msgstr "Partitionen installier."
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Installiere Inhalt... OK!" msgstr "Installiere Inhalt... OK!"
@ -1597,3 +1606,12 @@ msgstr "von"
msgid "seconds left" msgid "seconds left"
msgstr "Sekunden verbleiben" msgstr "Sekunden verbleiben"
#~ msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
#~ msgstr "Automatische Portumschaltung wird jetzt direkt zur Programmlaufzeit durchgeführt. Für diese Option müssen zuerst alle eigenen Pfade auf die SD Karte verweisen, da ansonsten das Dateisystem beschädigt werden könnte."
#~ msgid "Install directories"
#~ msgstr "Installationsart"
#~ msgid "Install partitions"
#~ msgstr "Partitionen installier."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-12-29 11:05+0100\n" "PO-Revision-Date: 2009-12-29 11:05+0100\n"
"Last-Translator: Springdale\n" "Last-Translator: Springdale\n"
"Language-Team: Tusk, Springdale\n" "Language-Team: Tusk, Springdale\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "Hálózat AutoInit" msgstr "Hálózat AutoInit"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr ""
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "BCA kód útvonal" msgstr "BCA kód útvonal"
@ -231,6 +228,9 @@ msgstr ""
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "" msgstr ""
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "IOS újratöltés blokkolása" msgstr "IOS újratöltés blokkolása"
@ -390,6 +390,9 @@ msgstr ""
msgid "Could not save." msgid "Could not save."
msgstr "A mentés nem sikerült." msgstr "A mentés nem sikerült."
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Boritó Letöltés" msgstr "Boritó Letöltés"
@ -611,6 +614,9 @@ msgstr ""
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Fájlok kicsomagolása..." msgstr "Fájlok kicsomagolása..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Formázás sikertelen" msgstr "Formázás sikertelen"
@ -768,6 +774,9 @@ msgstr ""
msgid "HOME Menu" msgid "HOME Menu"
msgstr "HOME Menü" msgstr "HOME Menü"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrew Útvonal" msgstr "Homebrew Útvonal"
@ -812,17 +821,17 @@ msgstr "Helyezz be Wii lemezt!"
msgid "Install" msgid "Install"
msgstr "Telepítés" msgstr "Telepítés"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Telepítési Hiba!" msgstr "Telepítési Hiba!"
msgid "Install a game" msgid "Install Partitions"
msgstr "Játék telepítése"
msgid "Install directories"
msgstr "" msgstr ""
msgid "Install partitions" msgid "Install a game"
msgstr "Partíciók telepítése" msgstr "Játék telepítése"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Tartalom telepítése... Ok!" msgstr "Tartalom telepítése... Ok!"
@ -1598,6 +1607,9 @@ msgstr "./"
msgid "seconds left" msgid "seconds left"
msgstr "hátralévõ másodperc" msgstr "hátralévõ másodperc"
#~ msgid "Install partitions"
#~ msgstr "Partíciók telepítése"
#~ msgid " Wad Saved as:" #~ msgid " Wad Saved as:"
#~ msgstr "Wad elmentve mint:" #~ msgstr "Wad elmentve mint:"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2011-03-10 21:00+0200\n" "PO-Revision-Date: 2011-03-10 21:00+0200\n"
"Last-Translator: Cambo \n" "Last-Translator: Cambo \n"
"Language-Team: Cambo\n" "Language-Team: Cambo\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "Inizializz. Rete Automatica" msgstr "Inizializz. Rete Automatica"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr "Il cambio automatico di porta è istantaneo. Per utilizzare questa opzione si devono preliminarmente impostare tutti i percorsi verso la scheda SD, altrimenti si rischia di danneggiare il filesystem del disco."
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "Cart. Codici BCA" msgstr "Cart. Codici BCA"
@ -231,6 +228,9 @@ msgstr "Blocca Interf. Grafica"
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "Blocca Menu HBC" msgstr "Blocca Menu HBC"
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Blocca Ricarica cIOS" msgstr "Blocca Ricarica cIOS"
@ -390,6 +390,9 @@ msgstr "Impossibile aprire il file wiitdb.xml."
msgid "Could not save." msgid "Could not save."
msgstr "Impossibile salvare." msgstr "Impossibile salvare."
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Scaricamento Copertine" msgstr "Scaricamento Copertine"
@ -611,6 +614,9 @@ msgstr "Uscita verso?"
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Sto scompattando i file..." msgstr "Sto scompattando i file..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Errore Formattazione" msgstr "Errore Formattazione"
@ -768,6 +774,9 @@ msgstr "Impostazioni Generali"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Menu HOME" msgstr "Menu HOME"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Cart. Applic. Homebrew" msgstr "Cart. Applic. Homebrew"
@ -812,18 +821,18 @@ msgstr "Inserisci un Disco nella Wii!"
msgid "Install" msgid "Install"
msgstr "Installa" msgstr "Installa"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Errore Installazione!" msgstr "Errore Installazione!"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "Installa un gioco" msgstr "Installa un gioco"
msgid "Install directories"
msgstr "Installa Cartelle"
msgid "Install partitions"
msgstr "Installa Partizioni"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Sto installando il contenuto... Ok!" msgstr "Sto installando il contenuto... Ok!"
@ -1598,6 +1607,15 @@ msgstr "di"
msgid "seconds left" msgid "seconds left"
msgstr "secondi mancanti" msgstr "secondi mancanti"
#~ msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
#~ msgstr "Il cambio automatico di porta è istantaneo. Per utilizzare questa opzione si devono preliminarmente impostare tutti i percorsi verso la scheda SD, altrimenti si rischia di danneggiare il filesystem del disco."
#~ msgid "Install directories"
#~ msgstr "Installa Cartelle"
#~ msgid "Install partitions"
#~ msgstr "Installa Partizioni"
#~ msgid " Wad Saved as:" #~ msgid " Wad Saved as:"
#~ msgstr " Wad salvato con il nome:" #~ msgstr " Wad salvato con il nome:"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: hosigumayuugi\n" "Last-Translator: hosigumayuugi\n"
"Language-Team: hosigumayuugi, papa, ichiroling\n" "Language-Team: hosigumayuugi, papa, ichiroling\n"
@ -183,9 +183,6 @@ msgstr "自動"
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "自動ネット接続" msgstr "自動ネット接続"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr "ポートの自動切換を使用する場合ファイルシステムの破損を避けるため、独自のパス設定は全てSDカードにしてください"
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "BCAコード" msgstr "BCAコード"
@ -231,6 +228,9 @@ msgstr "基本設定を制限"
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "HBCメニューを制限" msgstr "HBCメニューを制限"
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "IOS再読み込み防止" msgstr "IOS再読み込み防止"
@ -390,6 +390,9 @@ msgstr "wiitdb.xmlを開けませんでした"
msgid "Could not save." msgid "Could not save."
msgstr "保存できませんでした" msgstr "保存できませんでした"
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "何をダウンロードしますか" msgstr "何をダウンロードしますか"
@ -611,6 +614,9 @@ msgstr "どこに移動しますか?"
msgid "Extracting files..." msgid "Extracting files..."
msgstr "解凍中です…" msgstr "解凍中です…"
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "初期化に失敗しました" msgstr "初期化に失敗しました"
@ -768,6 +774,9 @@ msgstr "基本設定"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "HOMEボタンメニュー" msgstr "HOMEボタンメニュー"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrewアプリ" msgstr "Homebrewアプリ"
@ -812,18 +821,18 @@ msgstr "Wiiディスクを入れて下さい!"
msgid "Install" msgid "Install"
msgstr "インストール" msgstr "インストール"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "インストールエラー!" msgstr "インストールエラー!"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "ゲームをインストール" msgstr "ゲームをインストール"
msgid "Install directories"
msgstr "フォルダの構成"
msgid "Install partitions"
msgstr "保存する領域"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "コンテンツをインストール...成功!" msgstr "コンテンツをインストール...成功!"
@ -1597,3 +1606,12 @@ msgstr "中"
msgid "seconds left" msgid "seconds left"
msgstr "秒で完了" msgstr "秒で完了"
#~ msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
#~ msgstr "ポートの自動切換を使用する場合ファイルシステムの破損を避けるため、独自のパス設定は全てSDカードにしてください"
#~ msgid "Install directories"
#~ msgstr "フォルダの構成"
#~ msgid "Install partitions"
#~ msgstr "保存する領域"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: nextos@korea.com\n" "Last-Translator: nextos@korea.com\n"
"Language-Team: \n" "Language-Team: \n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "자동네트웍설정" msgstr "자동네트웍설정"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr ""
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "" msgstr ""
@ -231,6 +228,9 @@ msgstr ""
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "" msgstr ""
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "IOS 재로딩 막음" msgstr "IOS 재로딩 막음"
@ -390,6 +390,9 @@ msgstr ""
msgid "Could not save." msgid "Could not save."
msgstr "" msgstr ""
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "표지 다운로드" msgstr "표지 다운로드"
@ -611,6 +614,9 @@ msgstr ""
msgid "Extracting files..." msgid "Extracting files..."
msgstr "" msgstr ""
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "포맷 실패" msgstr "포맷 실패"
@ -768,6 +774,9 @@ msgstr ""
msgid "HOME Menu" msgid "HOME Menu"
msgstr "HOME 메뉴" msgstr "HOME 메뉴"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "홈브류 경로" msgstr "홈브류 경로"
@ -812,18 +821,18 @@ msgstr "Wii 디스크를 넣으세요!"
msgid "Install" msgid "Install"
msgstr "설치" msgstr "설치"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "설치 에러!" msgstr "설치 에러!"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "게임을 설치할까요" msgstr "게임을 설치할까요"
msgid "Install directories"
msgstr ""
msgid "Install partitions"
msgstr ""
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "컨텐츠 인스톨중...성공!" msgstr "컨텐츠 인스톨중...성공!"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: raschi\n" "Last-Translator: raschi\n"
"Language-Team: raschi\n" "Language-Team: raschi\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "Autostart nettverk" msgstr "Autostart nettverk"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr ""
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "BCA kode sti" msgstr "BCA kode sti"
@ -231,6 +228,9 @@ msgstr ""
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "" msgstr ""
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Blokkér IOS Reload" msgstr "Blokkér IOS Reload"
@ -390,6 +390,9 @@ msgstr "Kan ikke åpne wiitdb.xml."
msgid "Could not save." msgid "Could not save."
msgstr "Kan ikke lagre." msgstr "Kan ikke lagre."
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Cover nedlasting" msgstr "Cover nedlasting"
@ -611,6 +614,9 @@ msgstr "Avslutt til?"
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Pakker ut filer..." msgstr "Pakker ut filer..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Feil ved formatering" msgstr "Feil ved formatering"
@ -768,6 +774,9 @@ msgstr "Globale innstillinger"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "HOME Meny" msgstr "HOME Meny"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrew Apps sti" msgstr "Homebrew Apps sti"
@ -812,18 +821,18 @@ msgstr "Sett inn en Wii plate!"
msgid "Install" msgid "Install"
msgstr "Installér" msgstr "Installér"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Installasjonsfeil!" msgstr "Installasjonsfeil!"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "Installér et spill" msgstr "Installér et spill"
msgid "Install directories"
msgstr "Installasjonsmapper"
msgid "Install partitions"
msgstr "Installasjonspartisjoner"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Installerer innhold... OK!" msgstr "Installerer innhold... OK!"
@ -1598,6 +1607,12 @@ msgstr "av"
msgid "seconds left" msgid "seconds left"
msgstr "sekunder gjenstår" msgstr "sekunder gjenstår"
#~ msgid "Install directories"
#~ msgstr "Installasjonsmapper"
#~ msgid "Install partitions"
#~ msgstr "Installasjonspartisjoner"
#~ msgid " Wad Saved as:" #~ msgid " Wad Saved as:"
#~ msgstr " WAD lagret som:" #~ msgstr " WAD lagret som:"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: ziom666 (zadania_prog@vp.pl)\n" "Last-Translator: ziom666 (zadania_prog@vp.pl)\n"
"Language-Team: \n" "Language-Team: \n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "Autoinicjalizacja sieci" msgstr "Autoinicjalizacja sieci"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr ""
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "Sciezka kodow BCA" msgstr "Sciezka kodow BCA"
@ -231,6 +228,9 @@ msgstr ""
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "" msgstr ""
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Blokoj przeladowanie IOS" msgstr "Blokoj przeladowanie IOS"
@ -390,6 +390,9 @@ msgstr ""
msgid "Could not save." msgid "Could not save."
msgstr "Nie mozna zapisac" msgstr "Nie mozna zapisac"
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Pobierz okladki" msgstr "Pobierz okladki"
@ -611,6 +614,9 @@ msgstr ""
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Rozpakowywanie plikow..." msgstr "Rozpakowywanie plikow..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Nie udalo sie sformatowac" msgstr "Nie udalo sie sformatowac"
@ -768,6 +774,9 @@ msgstr ""
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Menu" msgstr "Menu"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Sciezka plikacji homebrew" msgstr "Sciezka plikacji homebrew"
@ -812,17 +821,17 @@ msgstr "Wloz plyte Wii!"
msgid "Install" msgid "Install"
msgstr "Zainstaluj" msgstr "Zainstaluj"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Blad instalacji" msgstr "Blad instalacji"
msgid "Install a game" msgid "Install Partitions"
msgstr "Zainstaluj gre"
msgid "Install directories"
msgstr "" msgstr ""
msgid "Install partitions" msgid "Install a game"
msgstr "Zainstaluj partycje" msgstr "Zainstaluj gre"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Instalowanie zawartosci...Ok!" msgstr "Instalowanie zawartosci...Ok!"
@ -1598,6 +1607,9 @@ msgstr "z"
msgid "seconds left" msgid "seconds left"
msgstr "sekund pozostalo" msgstr "sekund pozostalo"
#~ msgid "Install partitions"
#~ msgstr "Zainstaluj partycje"
#~ msgid " Wad Saved as:" #~ msgid " Wad Saved as:"
#~ msgstr " Wad zapisano jako:" #~ msgstr " Wad zapisano jako:"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-23 18:52+0200\n" "PO-Revision-Date: 2009-10-23 18:52+0200\n"
"Last-Translator: aniemotion\n" "Last-Translator: aniemotion\n"
"Language-Team: boto12, aniemotion\n" "Language-Team: boto12, aniemotion\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "Auto-iniciar Rede" msgstr "Auto-iniciar Rede"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr ""
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "Caminho do BCA Codes" msgstr "Caminho do BCA Codes"
@ -231,6 +228,9 @@ msgstr ""
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "" msgstr ""
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Bloquear reload do IOS" msgstr "Bloquear reload do IOS"
@ -390,6 +390,9 @@ msgstr ""
msgid "Could not save." msgid "Could not save."
msgstr "Não foi possível gravar." msgstr "Não foi possível gravar."
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Download de Capas" msgstr "Download de Capas"
@ -611,6 +614,9 @@ msgstr ""
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Extraindo arquivos..." msgstr "Extraindo arquivos..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Falha ao formatar" msgstr "Falha ao formatar"
@ -768,6 +774,9 @@ msgstr ""
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Menu Inicial" msgstr "Menu Inicial"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Pasta Apps Homebrew" msgstr "Pasta Apps Homebrew"
@ -812,17 +821,17 @@ msgstr "Insira um Disco do Wii!"
msgid "Install" msgid "Install"
msgstr "Instalar" msgstr "Instalar"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Erro de Instalação!" msgstr "Erro de Instalação!"
msgid "Install a game" msgid "Install Partitions"
msgstr "Instalar um jogo"
msgid "Install directories"
msgstr "" msgstr ""
msgid "Install partitions" msgid "Install a game"
msgstr "Instalare partições" msgstr "Instalar um jogo"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Instalando conteúdo... Ok!" msgstr "Instalando conteúdo... Ok!"
@ -1598,6 +1607,9 @@ msgstr "de"
msgid "seconds left" msgid "seconds left"
msgstr "segundos restantes" msgstr "segundos restantes"
#~ msgid "Install partitions"
#~ msgstr "Instalare partições"
#~ msgid " Wad Saved as:" #~ msgid " Wad Saved as:"
#~ msgstr " Wad salvo como:" #~ msgstr " Wad salvo como:"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2011-06-14 00:00-0000\n" "PO-Revision-Date: 2011-06-14 00:00-0000\n"
"Last-Translator: pplucky <pplucky@gmail.com>\n" "Last-Translator: pplucky <pplucky@gmail.com>\n"
"Language-Team: Sky8000, pplucky\n" "Language-Team: Sky8000, pplucky\n"
@ -183,9 +183,6 @@ msgstr "Auto"
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "Auto-iniciar Rede" msgstr "Auto-iniciar Rede"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr "Mudança automática de porta é feita na hora. Para esta opção, tem de alterar antes todos os caminhos personalizados para o cartão SD ou pode danificar o sistema de ficheiros."
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "Cam. Códigos BCA" msgstr "Cam. Códigos BCA"
@ -231,6 +228,9 @@ msgstr "Bloquear Config. GUI"
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "Bloquear Menu HBC" msgstr "Bloquear Menu HBC"
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Bloquear Reload do IOS" msgstr "Bloquear Reload do IOS"
@ -390,6 +390,9 @@ msgstr "Não foi possível abrir o wiitdb.xml"
msgid "Could not save." msgid "Could not save."
msgstr "Não foi possível gravar." msgstr "Não foi possível gravar."
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Download de Capas" msgstr "Download de Capas"
@ -611,6 +614,9 @@ msgstr "Sair para onde?"
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Extraindo ficheiros..." msgstr "Extraindo ficheiros..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Falha ao formatar" msgstr "Falha ao formatar"
@ -768,6 +774,9 @@ msgstr "Configurações Globais"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Menú Inicial" msgstr "Menú Inicial"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Cam. Apps Homebrew" msgstr "Cam. Apps Homebrew"
@ -812,18 +821,18 @@ msgstr "Insira um Disco da Wii!"
msgid "Install" msgid "Install"
msgstr "Instalar" msgstr "Instalar"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Erro de Instalação!" msgstr "Erro de Instalação!"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "Instalar um jogo" msgstr "Instalar um jogo"
msgid "Install directories"
msgstr "Instalar directórios"
msgid "Install partitions"
msgstr "Instalar partições"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Instalando conteúdo... Ok!" msgstr "Instalando conteúdo... Ok!"
@ -1597,3 +1606,12 @@ msgstr "de"
msgid "seconds left" msgid "seconds left"
msgstr "segundos restantes" msgstr "segundos restantes"
#~ msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
#~ msgstr "Mudança automática de porta é feita na hora. Para esta opção, tem de alterar antes todos os caminhos personalizados para o cartão SD ou pode danificar o sistema de ficheiros."
#~ msgid "Install directories"
#~ msgstr "Instalar directórios"
#~ msgid "Install partitions"
#~ msgstr "Instalar partições"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: nikolai_ca\n" "Last-Translator: nikolai_ca\n"
"Language-Team: Kir, alendit, nikolai_ca\n" "Language-Team: Kir, alendit, nikolai_ca\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "АвтоИнициализация Сети" msgstr "АвтоИнициализация Сети"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr ""
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "Путь к кодам BCA" msgstr "Путь к кодам BCA"
@ -231,6 +228,9 @@ msgstr ""
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "" msgstr ""
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Блокировать перезагрузку IOS" msgstr "Блокировать перезагрузку IOS"
@ -390,6 +390,9 @@ msgstr ""
msgid "Could not save." msgid "Could not save."
msgstr "Не могу сохранить." msgstr "Не могу сохранить."
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Скачать обложку" msgstr "Скачать обложку"
@ -611,6 +614,9 @@ msgstr ""
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Распаковка файлов..." msgstr "Распаковка файлов..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Форматирование не удалось" msgstr "Форматирование не удалось"
@ -768,6 +774,9 @@ msgstr ""
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Домашнее Меню" msgstr "Домашнее Меню"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Путь к хоумбрю-программам" msgstr "Путь к хоумбрю-программам"
@ -812,17 +821,17 @@ msgstr "Вставьте диск Wii!"
msgid "Install" msgid "Install"
msgstr "Установка" msgstr "Установка"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Ошибка установки!" msgstr "Ошибка установки!"
msgid "Install a game" msgid "Install Partitions"
msgstr "Установить игру"
msgid "Install directories"
msgstr "" msgstr ""
msgid "Install partitions" msgid "Install a game"
msgstr "Установить разделы" msgstr "Установить игру"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Установка контента... ОК!" msgstr "Установка контента... ОК!"
@ -1598,6 +1607,9 @@ msgstr "из"
msgid "seconds left" msgid "seconds left"
msgstr "секунд осталось" msgstr "секунд осталось"
#~ msgid "Install partitions"
#~ msgstr "Установить разделы"
#~ msgid " Wad Saved as:" #~ msgid " Wad Saved as:"
#~ msgstr " Wad сохранен как:" #~ msgstr " Wad сохранен как:"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: knife.hu kavid emul8ion\n" "Last-Translator: knife.hu kavid emul8ion\n"
"Language-Team: kavid\n" "Language-Team: kavid\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "自动检测网络" msgstr "自动检测网络"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr "接口自动切换已生效。你需要立即更改所有自定义路径为SD卡否则可能会损坏USB分区上的文件系统。"
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "BCA代码路径" msgstr "BCA代码路径"
@ -231,6 +228,9 @@ msgstr "图形界面设置"
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "HBC菜单" msgstr "HBC菜单"
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "阻止IOS重新载入" msgstr "阻止IOS重新载入"
@ -390,6 +390,9 @@ msgstr "无法打开wiitdb.xml."
msgid "Could not save." msgid "Could not save."
msgstr "无法保存" msgstr "无法保存"
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "下载封面" msgstr "下载封面"
@ -611,6 +614,9 @@ msgstr "退出到哪里?"
msgid "Extracting files..." msgid "Extracting files..."
msgstr "正在解压缩文件" msgstr "正在解压缩文件"
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "格式化失败" msgstr "格式化失败"
@ -768,6 +774,9 @@ msgstr "全局设置"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "主菜单" msgstr "主菜单"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "自制程序路径" msgstr "自制程序路径"
@ -812,18 +821,18 @@ msgstr "插入 Wii 光盘!"
msgid "Install" msgid "Install"
msgstr "安装" msgstr "安装"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "安装错误!" msgstr "安装错误!"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "安装游戏" msgstr "安装游戏"
msgid "Install directories"
msgstr "安装目录"
msgid "Install partitions"
msgstr "安装分区"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "正在安装程序主体... 完成!" msgstr "正在安装程序主体... 完成!"
@ -1598,6 +1607,15 @@ msgstr "的"
msgid "seconds left" msgid "seconds left"
msgstr "剩余秒数" msgstr "剩余秒数"
#~ msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
#~ msgstr "接口自动切换已生效。你需要立即更改所有自定义路径为SD卡否则可能会损坏USB分区上的文件系统。"
#~ msgid "Install directories"
#~ msgstr "安装目录"
#~ msgid "Install partitions"
#~ msgstr "安装分区"
#~ msgid " Wad Saved as:" #~ msgid " Wad Saved as:"
#~ msgstr "WAD 保存为:" #~ msgstr "WAD 保存为:"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: SirPalax\n" "Last-Translator: SirPalax\n"
"Language-Team: Penn, SirPalax\n" "Language-Team: Penn, SirPalax\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "AutoIniciar la Red" msgstr "AutoIniciar la Red"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr ""
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "Ruta Códigos BCA" msgstr "Ruta Códigos BCA"
@ -231,6 +228,9 @@ msgstr ""
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "" msgstr ""
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Impedir recarga IOS" msgstr "Impedir recarga IOS"
@ -390,6 +390,9 @@ msgstr ""
msgid "Could not save." msgid "Could not save."
msgstr "¡No se pudo guardar!" msgstr "¡No se pudo guardar!"
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Descarga de Carátulas" msgstr "Descarga de Carátulas"
@ -611,6 +614,9 @@ msgstr ""
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Extrayendo archivos..." msgstr "Extrayendo archivos..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "No se ha podido formatear" msgstr "No se ha podido formatear"
@ -768,6 +774,9 @@ msgstr ""
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Menú HOME" msgstr "Menú HOME"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Ruta Apps Homebrew" msgstr "Ruta Apps Homebrew"
@ -812,17 +821,17 @@ msgstr "¡Inserta un Disco Wii!"
msgid "Install" msgid "Install"
msgstr "Instalar" msgstr "Instalar"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "¡Error de Instalación!" msgstr "¡Error de Instalación!"
msgid "Install a game" msgid "Install Partitions"
msgstr "Instalar un juego"
msgid "Install directories"
msgstr "" msgstr ""
msgid "Install partitions" msgid "Install a game"
msgstr "Instalar particiones" msgstr "Instalar un juego"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Instalando contenido... ¡Correcto!" msgstr "Instalando contenido... ¡Correcto!"
@ -1598,6 +1607,9 @@ msgstr "de"
msgid "seconds left" msgid "seconds left"
msgstr "segundos restantes" msgstr "segundos restantes"
#~ msgid "Install partitions"
#~ msgstr "Instalar particiones"
#~ msgid " Wad Saved as:" #~ msgid " Wad Saved as:"
#~ msgstr " WAD guardado como:" #~ msgstr " WAD guardado como:"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2010-01-19 17:39+0200\n" "PO-Revision-Date: 2010-01-19 17:39+0200\n"
"Last-Translator: Katsurou\n" "Last-Translator: Katsurou\n"
"Language-Team: Katsurou, pirateX\n" "Language-Team: Katsurou, pirateX\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "Autoinitiera Nätverk" msgstr "Autoinitiera Nätverk"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr ""
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "BCA kodssökväg" msgstr "BCA kodssökväg"
@ -231,6 +228,9 @@ msgstr ""
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "" msgstr ""
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "Blockera IOS omladdning" msgstr "Blockera IOS omladdning"
@ -390,6 +390,9 @@ msgstr ""
msgid "Could not save." msgid "Could not save."
msgstr "Kunde inte spara." msgstr "Kunde inte spara."
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Omslagsnedladdning" msgstr "Omslagsnedladdning"
@ -611,6 +614,9 @@ msgstr ""
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Packar upp filer..." msgstr "Packar upp filer..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Formatering misslyckad" msgstr "Formatering misslyckad"
@ -768,6 +774,9 @@ msgstr ""
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Hemmeny" msgstr "Hemmeny"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrew Apps" msgstr "Homebrew Apps"
@ -812,17 +821,17 @@ msgstr "Sätt i en Wii-skiva!"
msgid "Install" msgid "Install"
msgstr "Installera" msgstr "Installera"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Fel vid installering!" msgstr "Fel vid installering!"
msgid "Install a game" msgid "Install Partitions"
msgstr "Installera ett spel"
msgid "Install directories"
msgstr "" msgstr ""
msgid "Install partitions" msgid "Install a game"
msgstr "Installera partitioner" msgstr "Installera ett spel"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Installerar innehåll... Ok!" msgstr "Installerar innehåll... Ok!"
@ -1598,6 +1607,9 @@ msgstr "av"
msgid "seconds left" msgid "seconds left"
msgstr "sekunder kvar" msgstr "sekunder kvar"
#~ msgid "Install partitions"
#~ msgstr "Installera partitioner"
#~ msgid " Wad Saved as:" #~ msgid " Wad Saved as:"
#~ msgstr "Wad sparad som:" #~ msgstr "Wad sparad som:"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2010-02-15 21:00+0800\n" "PO-Revision-Date: 2010-02-15 21:00+0800\n"
"Last-Translator: Jane.H\n" "Last-Translator: Jane.H\n"
"Language-Team: kyogc, Miller, Mika Li, Jane.H\n" "Language-Team: kyogc, Miller, Mika Li, Jane.H\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "自動檢查網路" msgstr "自動檢查網路"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr "立即生效連接埠自動切換功能。首先你需要在這選項改變所有自訂路徑為SD卡否則可能會損壞檔案系統。"
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "BAC代碼路徑" msgstr "BAC代碼路徑"
@ -231,6 +228,9 @@ msgstr "封鎖介面設定"
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "封鎖 HBC 選單" msgstr "封鎖 HBC 選單"
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "封鎖 IOS 重新載入" msgstr "封鎖 IOS 重新載入"
@ -390,6 +390,9 @@ msgstr "無法開啟wiitdb.xml。"
msgid "Could not save." msgid "Could not save."
msgstr "無法儲存" msgstr "無法儲存"
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "下載封面" msgstr "下載封面"
@ -611,6 +614,9 @@ msgstr "退出到?"
msgid "Extracting files..." msgid "Extracting files..."
msgstr "提取檔案中..." msgstr "提取檔案中..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "格式化失敗" msgstr "格式化失敗"
@ -768,6 +774,9 @@ msgstr "整體設定"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "主選單" msgstr "主選單"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "HBC 應用程式路徑" msgstr "HBC 應用程式路徑"
@ -812,18 +821,18 @@ msgstr "插入 Wii 光碟!"
msgid "Install" msgid "Install"
msgstr "安裝" msgstr "安裝"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "安裝錯誤!" msgstr "安裝錯誤!"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "安裝遊戲" msgstr "安裝遊戲"
msgid "Install directories"
msgstr "安裝目錄"
msgid "Install partitions"
msgstr "安裝磁區"
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "正在安裝內容...完成!" msgstr "正在安裝內容...完成!"
@ -1598,6 +1607,15 @@ msgstr "的"
msgid "seconds left" msgid "seconds left"
msgstr "剩餘秒數" msgstr "剩餘秒數"
#~ msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
#~ msgstr "立即生效連接埠自動切換功能。首先你需要在這選項改變所有自訂路徑為SD卡否則可能會損壞檔案系統。"
#~ msgid "Install directories"
#~ msgstr "安裝目錄"
#~ msgid "Install partitions"
#~ msgstr "安裝磁區"
#~ msgid " 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." #~ msgid " 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."
#~ msgstr "已經被儲存。內容尚未驗證。部分代碼可能無法作用。如果你遇到問題,請用文字編輯器打開文本文件以獲得更多的信息。" #~ msgstr "已經被儲存。內容尚未驗證。部分代碼可能無法作用。如果你遇到問題,請用文字編輯器打開文本文件以獲得更多的信息。"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: Nitro_subzero \n" "Last-Translator: Nitro_subzero \n"
"Language-Team: Nitro_subzero\n" "Language-Team: Nitro_subzero\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "ทำการเชื่อมต่อเครือข่าย" msgstr "ทำการเชื่อมต่อเครือข่าย"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr ""
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "" msgstr ""
@ -231,6 +228,9 @@ msgstr ""
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "" msgstr ""
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "โหลดบล๊อค IOS อีกครั้ง" msgstr "โหลดบล๊อค IOS อีกครั้ง"
@ -390,6 +390,9 @@ msgstr ""
msgid "Could not save." msgid "Could not save."
msgstr "บันทึกไม่ได้" msgstr "บันทึกไม่ได้"
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "ดาวน์โหลดปก" msgstr "ดาวน์โหลดปก"
@ -611,6 +614,9 @@ msgstr ""
msgid "Extracting files..." msgid "Extracting files..."
msgstr "กำลังขยายไฟล์..." msgstr "กำลังขยายไฟล์..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "ฟอร์แมตไม่ได้" msgstr "ฟอร์แมตไม่ได้"
@ -768,6 +774,9 @@ msgstr ""
msgid "HOME Menu" msgid "HOME Menu"
msgstr "เมนู HOME" msgstr "เมนู HOME"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "ที่เก็บโปรแกรม Homebrew" msgstr "ที่เก็บโปรแกรม Homebrew"
@ -812,18 +821,18 @@ msgstr "ใส่แผ่น Wii !"
msgid "Install" msgid "Install"
msgstr "ติดตั้ง" msgstr "ติดตั้ง"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "ผิดพลาดขณะติดตั้ง!" msgstr "ผิดพลาดขณะติดตั้ง!"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "ติดตั้งเกมส์" msgstr "ติดตั้งเกมส์"
msgid "Install directories"
msgstr ""
msgid "Install partitions"
msgstr ""
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "ติดตั้งเนื้อหา... สำเร็จ!" msgstr "ติดตั้งเนื้อหา... สำเร็จ!"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-18 11:39+0200\n" "POT-Creation-Date: 2011-06-22 19:31+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: omercigingelini\n" "Last-Translator: omercigingelini\n"
"Language-Team: omercigingelini\n" "Language-Team: omercigingelini\n"
@ -183,9 +183,6 @@ msgstr ""
msgid "AutoInit Network" msgid "AutoInit Network"
msgstr "Ağı ototanımla" msgstr "Ağı ototanımla"
msgid "Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."
msgstr ""
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "BCA Kod Yolu" msgstr "BCA Kod Yolu"
@ -231,6 +228,9 @@ msgstr ""
msgid "Block HBC Menu" msgid "Block HBC Menu"
msgstr "" msgstr ""
msgid "Block Hard Drive Settings"
msgstr ""
msgid "Block IOS Reload" msgid "Block IOS Reload"
msgstr "IOS Yüklemesini Engelle" msgstr "IOS Yüklemesini Engelle"
@ -390,6 +390,9 @@ msgstr ""
msgid "Could not save." msgid "Could not save."
msgstr "Kaydedilemedi" msgstr "Kaydedilemedi"
msgid "Could not write to:"
msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Kapak Indirme" msgstr "Kapak Indirme"
@ -611,6 +614,9 @@ msgstr ""
msgid "Extracting files..." msgid "Extracting files..."
msgstr "Dosyalar çıkarılıyor..." msgstr "Dosyalar çıkarılıyor..."
msgid "Failed"
msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Biçimlendirme başarısız" msgstr "Biçimlendirme başarısız"
@ -768,6 +774,9 @@ msgstr ""
msgid "HOME Menu" msgid "HOME Menu"
msgstr "HOME Menü" msgstr "HOME Menü"
msgid "Hard Drive Settings"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrew Yazılımlarının Yolu" msgstr "Homebrew Yazılımlarının Yolu"
@ -812,18 +821,18 @@ msgstr "Bir Wii Diski Takın!"
msgid "Install" msgid "Install"
msgstr "Kur" msgstr "Kur"
msgid "Install Directories"
msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Kurulum Hatasi!" msgstr "Kurulum Hatasi!"
msgid "Install Partitions"
msgstr ""
msgid "Install a game" msgid "Install a game"
msgstr "Oyun kur" msgstr "Oyun kur"
msgid "Install directories"
msgstr ""
msgid "Install partitions"
msgstr ""
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "İçerik kuruluyor.. OK!" msgstr "İçerik kuruluyor.. OK!"

File diff suppressed because one or more lines are too long

View File

@ -81,11 +81,14 @@ void DeviceHandler::UnMountAll()
if(sd) if(sd)
delete sd; delete sd;
if(usb) if(usb0)
delete usb; delete usb0;
if(usb1)
delete usb1;
sd = NULL; sd = NULL;
usb = NULL; usb0 = NULL;
usb1 = NULL;
} }
bool DeviceHandler::Mount(int dev) bool DeviceHandler::Mount(int dev)
@ -105,7 +108,12 @@ bool DeviceHandler::IsInserted(int dev)
return SD_Inserted() && sd->IsMounted(0); return SD_Inserted() && sd->IsMounted(0);
else if(dev >= USB1 && dev <= USB8) else if(dev >= USB1 && dev <= USB8)
return USB_Inserted() && usb->IsMounted(dev-USB1); {
int portPart = PartitionToPortPartition(dev-USB1);
PartitionHandle *usb = instance->GetUSBHandleFromPartition(dev-USB1);
if(usb)
return usb->IsMounted(portPart);
}
return false; return false;
} }
@ -135,86 +143,52 @@ bool DeviceHandler::MountSD()
return sd->Mount(0, DeviceName[SD], true); return sd->Mount(0, DeviceName[SD], true);
} }
const DISC_INTERFACE * DeviceHandler::GetUSBInterface()
{
if(IOS_GetVersion() < 200)
return &__io_usbstorage;
return &__io_usbstorage2;
}
static inline bool USBSpinUp() static inline bool USBSpinUp()
{ {
bool started = false; bool started0 = true;
bool started1 = true;
int retries = 400; int retries = 400;
const DISC_INTERFACE * handle = DeviceHandler::GetUSBInterface(); const DISC_INTERFACE * handle0 = NULL;
const DISC_INTERFACE * handle1 = NULL;
if(Settings.USBPort == 0 || Settings.USBPort == 2)
handle0 = DeviceHandler::GetUSB0Interface();
if(Settings.USBPort == 1 || Settings.USBPort == 2)
handle1 = DeviceHandler::GetUSB1Interface();
// wait 20 sec for the USB to spin up...stupid slow ass HDD // wait 20 sec for the USB to spin up...stupid slow ass HDD
do do
{ {
started = (handle->startup() && handle->isInserted()); if(handle0)
if(started) break; started0 = (handle0->startup() && handle0->isInserted());
if(handle1)
started1 = (handle1->startup() && handle1->isInserted());
if(started0 && started1) break;
usleep(50000); usleep(50000);
} }
while(--retries > 0); while(--retries > 0);
return started; return (started0 && started1);
} }
bool DeviceHandler::SetUSBPort(int port, bool spinup) bool DeviceHandler::MountUSB(int pos)
{ {
int ret = USBStorage2_SetPort(port); if(!usb0 && !usb1)
if(spinup)
USBSpinUp();
return ret >= 0;
}
void DeviceHandler::SetUSBPortFromPartition(int part)
{
if(Settings.USBPort != 2)
return;
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandle();
if(!usbHandle)
return;
if(part < usbHandle->GetPartitionCount())
SetUSBPort(0);
else
SetUSBPort(1);
}
bool DeviceHandler::MountUSB(int pos, bool spinup)
{
if(spinup && !USBSpinUp())
return false; return false;
if(!usb) if(pos >= GetUSBPartitionCount())
{
if(Settings.USBPort == 2) SetUSBPort(0);
usb = new PartitionHandle(GetUSBInterface());
if(Settings.USBPort == 2 && IosLoader::IsHermesIOS())
{
SetUSBPort(1);
usb->GetPort1Partitions();
}
}
if(usb->GetPartitionTotalCount() < 1)
{
delete usb;
usb = NULL;
return false;
}
if(pos >= usb->GetPartitionTotalCount())
return false; return false;
SetUSBPortFromPartition(pos); int portPart = PartitionToPortPartition(pos);
return usb->Mount(pos, DeviceName[USB1+pos]); if(PartitionToUSBPort(pos) == 0 && usb0)
return usb0->Mount(portPart, DeviceName[USB1+pos]);
else if(usb1)
return usb1->Mount(portPart, DeviceName[USB1+pos]);
return false;
} }
bool DeviceHandler::MountAllUSB(bool spinup) bool DeviceHandler::MountAllUSB(bool spinup)
@ -222,54 +196,88 @@ bool DeviceHandler::MountAllUSB(bool spinup)
if(spinup && !USBSpinUp()) if(spinup && !USBSpinUp())
return false; return false;
if(!usb) if(!usb0 && (Settings.USBPort == 0 || Settings.USBPort == 2))
usb0 = new PartitionHandle(GetUSB0Interface());
if(!usb1 && (Settings.USBPort == 1 || Settings.USBPort == 2))
usb1 = new PartitionHandle(GetUSB1Interface());
if(usb0 && usb0->GetPartitionCount() < 1)
{ {
if(Settings.USBPort == 2) SetUSBPort(0); delete usb0;
usb = new PartitionHandle(GetUSBInterface()); usb0 = NULL;
if(Settings.USBPort == 2 && IosLoader::IsHermesIOS()) }
{ if(usb1 && usb1->GetPartitionCount() < 1)
SetUSBPort(1); {
usb->GetPort1Partitions(); delete usb1;
} usb1 = NULL;
} }
bool result = false; bool result = false;
int partCount = GetUSBPartitionCount();
for(int i = 0; i < usb->GetPartitionTotalCount(); i++) for(int i = 0; i < partCount; i++)
{ {
if(MountUSB(i, false)) if(MountUSB(i))
result = true; result = true;
} }
if(Settings.USBPort == 2) return result;
SetUSBPort(0); }
bool DeviceHandler::MountUSBPort1(bool spinup)
{
if(spinup && !USBSpinUp())
return false;
if(!usb1 && (Settings.USBPort == 1 || Settings.USBPort == 2))
usb1 = new PartitionHandle(GetUSB1Interface());
if(usb1 && usb1->GetPartitionCount() < 1)
{
delete usb1;
usb1 = NULL;
return false;
}
bool result = false;
int partCount = GetUSBPartitionCount();
int partCount0 = 0;
if(usb0)
partCount0 = usb0->GetPartitionCount();
for(int i = partCount0; i < partCount; i++)
{
if(MountUSB(i))
result = true;
}
return result; return result;
} }
void DeviceHandler::UnMountUSB(int pos) void DeviceHandler::UnMountUSB(int pos)
{ {
if(!usb) if(pos >= GetUSBPartitionCount())
return; return;
if(pos >= usb->GetPartitionTotalCount()) int portPart = PartitionToPortPartition(pos);
return;
SetUSBPortFromPartition(pos); if(PartitionToUSBPort(pos) == 0 && usb0)
return usb0->UnMount(portPart);
usb->UnMount(pos); else if(usb1)
return usb1->UnMount(portPart);
} }
void DeviceHandler::UnMountAllUSB() void DeviceHandler::UnMountAllUSB()
{ {
if(!usb) int partCount = GetUSBPartitionCount();
return;
for(int i = 0; i < usb->GetPartitionTotalCount(); i++) for(int i = 0; i < partCount; i++)
UnMountUSB(i); UnMountUSB(i);
delete usb; delete usb0;
usb = NULL; usb0 = NULL;
delete usb1;
usb1 = NULL;
} }
int DeviceHandler::PathToDriveType(const char * path) int DeviceHandler::PathToDriveType(const char * path)
@ -292,9 +300,19 @@ const char * DeviceHandler::GetFSName(int dev)
{ {
return DeviceHandler::instance->sd->GetFSName(0); return DeviceHandler::instance->sd->GetFSName(0);
} }
else if(dev >= USB1 && dev <= USB8 && DeviceHandler::instance->usb) else if(dev >= USB1 && dev <= USB8)
{ {
return DeviceHandler::instance->usb->GetFSName(dev-USB1); int partCount0 = 0;
int partCount1 = 0;
if(DeviceHandler::instance->usb0)
partCount0 += DeviceHandler::instance->usb0->GetPartitionCount();
if(DeviceHandler::instance->usb1)
partCount1 += DeviceHandler::instance->usb1->GetPartitionCount();
if(dev-USB1 > partCount0 && DeviceHandler::instance->usb0)
return DeviceHandler::instance->usb0->GetFSName(dev-USB1);
else if(DeviceHandler::instance->usb1)
return DeviceHandler::instance->usb1->GetFSName(dev-USB1-partCount0);
} }
return NULL; return NULL;
@ -305,9 +323,7 @@ int DeviceHandler::GetUSBFilesystemType(int partition)
if(!instance) if(!instance)
return -1; return -1;
PartitionHandle * usbHandle = instance->GetUSBHandle(); const char *FSName = GetUSBFSName(partition);
const char * FSName = usbHandle->GetFSName(partition);
if(!FSName) return -1; if(!FSName) return -1;
if(strncmp(FSName, "WBFS", 4) == 0) if(strncmp(FSName, "WBFS", 4) == 0)
@ -321,3 +337,71 @@ int DeviceHandler::GetUSBFilesystemType(int partition)
return -1; return -1;
} }
u16 DeviceHandler::GetUSBPartitionCount()
{
if(!instance)
return 0;
u16 partCount0 = 0;
u16 partCount1 = 0;
if(instance->usb0)
partCount0 = instance->usb0->GetPartitionCount();
if(instance->usb1)
partCount1 = instance->usb1->GetPartitionCount();
return partCount0+partCount1;
}
int DeviceHandler::PartitionToUSBPort(int part)
{
if(!DeviceHandler::instance)
return 0;
u16 partCount0 = 0;
if(DeviceHandler::instance->usb0)
partCount0 = instance->usb0->GetPartitionCount();
if(!instance->usb0 || part >= partCount0)
return 1;
else
return 0;
}
int DeviceHandler::PartitionToPortPartition(int part)
{
if(!DeviceHandler::instance)
return 0;
u16 partCount0 = 0;
if(instance->usb0)
partCount0 = instance->usb0->GetPartitionCount();
if(!instance->usb0 || part >= partCount0)
return part-partCount0;
else
return part;
}
const char *DeviceHandler::GetUSBFSName(int partition)
{
if(!instance)
return NULL;
const char * FSName = NULL;
PartitionHandle *handle = instance->GetUSBHandleFromPartition(partition);
if(handle)
FSName = handle->GetFSName(PartitionToPortPartition(partition));
return FSName;
}
PartitionHandle *DeviceHandler::GetUSBHandleFromPartition(int part) const
{
if(PartitionToUSBPort(part) == 0)
return usb0;
else
return usb1;
}

View File

@ -27,6 +27,7 @@
#define DEVICE_HANDLER_HPP_ #define DEVICE_HANDLER_HPP_
#include "PartitionHandle.h" #include "PartitionHandle.h"
#include "usbloader/usbstorage2.h"
enum enum
{ {
@ -70,31 +71,39 @@ class DeviceHandler
//! Individual Mounts/UnMounts... //! Individual Mounts/UnMounts...
bool MountSD(); bool MountSD();
bool MountAllUSB(bool spinUp = true); bool MountAllUSB(bool spinUp = true);
bool MountUSB(int part, bool spinUp = true); bool MountUSBPort1(bool spinUp = true);
bool SD_Inserted() { if(sd) return sd->IsInserted(); return false; }; bool SD_Inserted() { if(sd) return sd->IsInserted(); return false; };
bool USB_Inserted() { if(usb) return usb->IsInserted(); return false; }; bool USB0_Inserted() { if(usb0) return usb0->IsInserted(); return false; };
bool USB1_Inserted() { if(usb1) return usb1->IsInserted(); return false; };
void UnMountSD() { if(sd) delete sd; sd = NULL; }; void UnMountSD() { if(sd) delete sd; sd = NULL; };
void UnMountUSB(int pos); void UnMountUSB(int pos);
void UnMountAllUSB(); void UnMountAllUSB();
PartitionHandle * GetSDHandle() const { return sd; }; PartitionHandle * GetSDHandle() const { return sd; };
PartitionHandle * GetUSBHandle() const { return usb; }; PartitionHandle * GetUSB0Handle() const { return usb0; };
PartitionHandle * GetUSB1Handle() const { return usb1; };
PartitionHandle * GetUSBHandleFromPartition(int part) const;
static const DISC_INTERFACE *GetUSB0Interface() { return &__io_usbstorage2_port0; }
static const DISC_INTERFACE *GetUSB1Interface() { return &__io_usbstorage2_port1; }
static int GetUSBFilesystemType(int part); static int GetUSBFilesystemType(int part);
static int PathToDriveType(const char * path); static int PathToDriveType(const char * path);
static const char * GetFSName(int dev); static const char * GetFSName(int dev);
static const char * PathToFSName(const char * path) { return GetFSName(PathToDriveType(path)); }; static const char * PathToFSName(const char * path) { return GetFSName(PathToDriveType(path)); };
static const DISC_INTERFACE * GetUSBInterface(); static int PartitionToUSBPort(int part);
static bool SetUSBPort(int port, bool spinup = true); static u16 GetUSBPartitionCount();
static void SetUSBPortFromPartition(int part); static int PartitionToPortPartition(int part);
static const char *GetUSBFSName(int partition);
private: private:
DeviceHandler() : sd(0), usb(0) { }; DeviceHandler() : sd(0), gca(0), gcb(0), usb0(0), usb1(0) { };
~DeviceHandler(); ~DeviceHandler();
bool MountUSB(int part);
static DeviceHandler *instance; static DeviceHandler *instance;
PartitionHandle * sd; PartitionHandle * sd;
PartitionHandle * gca; PartitionHandle * gca;
PartitionHandle * gcb; PartitionHandle * gcb;
PartitionHandle * usb; PartitionHandle * usb0;
PartitionHandle * usb1;
}; };
#endif #endif

View File

@ -67,10 +67,8 @@ static inline const char * PartFromType(int type)
} }
PartitionHandle::PartitionHandle(const DISC_INTERFACE *discio) PartitionHandle::PartitionHandle(const DISC_INTERFACE *discio)
: interface(discio)
{ {
Port0Size = 0;
interface = discio;
// Sanity check // Sanity check
if (!interface) if (!interface)
return; return;
@ -93,23 +91,6 @@ PartitionHandle::~PartitionHandle()
interface->shutdown(); interface->shutdown();
} }
void PartitionHandle::GetPort1Partitions()
{
if(Port0Size != 0)
return;
Port0Size = PartitionList.size();
// Start the device and check that it is inserted
if (!interface->startup())
return;
if (!interface->isInserted())
return;
FindPartitions();
}
bool PartitionHandle::IsMounted(int pos) bool PartitionHandle::IsMounted(int pos)
{ {
if(pos < 0 || pos >= (int) MountNameList.size()) if(pos < 0 || pos >= (int) MountNameList.size())
@ -254,7 +235,7 @@ int PartitionHandle::FindPartitions()
continue; continue;
} }
if(le32(partition->block_count) > 0 && (!IsExisting(le32(partition->lba_start)) || Port0Size)) if(le32(partition->block_count) > 0 && !IsExisting(le32(partition->lba_start)))
{ {
AddPartition(PartFromType(partition->type), le32(partition->lba_start), AddPartition(PartFromType(partition->type), le32(partition->lba_start),
le32(partition->block_count), (partition->status == PARTITION_BOOTABLE), le32(partition->block_count), (partition->status == PARTITION_BOOTABLE),

View File

@ -145,17 +145,13 @@ class PartitionHandle
//! Get the entrie number in MBR of this partition //! Get the entrie number in MBR of this partition
int GetPartitionNum(int pos) { if(valid(pos)) return PartitionList[pos].PartitionNum; else return -1; }; int GetPartitionNum(int pos) { if(valid(pos)) return PartitionList[pos].PartitionNum; else return -1; };
//! Get the count of found partitions //! Get the count of found partitions
int GetPartitionCount() const { if(Port0Size) return Port0Size; else return PartitionList.size(); }; int GetPartitionCount() const { return PartitionList.size(); };
//! Get the partition size in bytes //! Get the partition size in bytes
u64 GetSize(int pos) { if(valid(pos)) return (u64) PartitionList[pos].SecCount*BYTES_PER_SECTOR; else return 0; }; u64 GetSize(int pos) { if(valid(pos)) return (u64) PartitionList[pos].SecCount*BYTES_PER_SECTOR; else return 0; };
//! Get the whole partition record struct //! Get the whole partition record struct
PartitionFS * GetPartitionRecord(int pos) { if(valid(pos)) return &PartitionList[pos]; else return NULL; }; PartitionFS * GetPartitionRecord(int pos) { if(valid(pos)) return &PartitionList[pos]; else return NULL; };
//! Get the disc interface of this handle //! Get the disc interface of this handle
const DISC_INTERFACE * GetDiscInterface() { return interface; }; const DISC_INTERFACE * GetDiscInterface() { return interface; };
//! Get the port 1 partitions on usb
void GetPort1Partitions();
//! Get the count of found partitions including second port partitions on usb
int GetPartitionTotalCount() const { return PartitionList.size(); };
protected: protected:
bool valid(int pos) { return (pos >= 0 && pos < (int) PartitionList.size()); } bool valid(int pos) { return (pos >= 0 && pos < (int) PartitionList.size()); }
void AddPartition(const char * name, u64 lba_start, u64 sec_count, bool bootable, u8 part_type, u8 part_num); void AddPartition(const char * name, u64 lba_start, u64 sec_count, bool bootable, u8 part_type, u8 part_num);
@ -167,7 +163,6 @@ class PartitionHandle
const DISC_INTERFACE *interface; const DISC_INTERFACE *interface;
std::vector<PartitionFS> PartitionList; std::vector<PartitionFS> PartitionList;
std::vector<std::string> MountNameList; std::vector<std::string> MountNameList;
int Port0Size;
}; };
#endif #endif

View File

@ -253,7 +253,6 @@ void Text::CalcLineOffsets()
const wchar_t * origTxt = wText->c_str(); const wchar_t * origTxt = wText->c_str();
int ch = 0; int ch = 0;
int lastSpace = -1; int lastSpace = -1;
int lastSpaceIndex = -1;
int currWidth = 0; int currWidth = 0;
int i = 0; int i = 0;
@ -288,7 +287,6 @@ void Text::CalcLineOffsets()
else if (origTxt[ch] == ' ') else if (origTxt[ch] == ' ')
{ {
lastSpace = ch; lastSpace = ch;
lastSpaceIndex = i;
} }
ch++; ch++;

View File

@ -69,8 +69,7 @@ int StartUpProcess::ParseArguments(int argc, char *argv[])
ptr = strcasestr(argv[i], "-usbport="); ptr = strcasestr(argv[i], "-usbport=");
if(ptr) if(ptr)
{ {
Settings.USBPort = LIMIT(atoi(ptr+strlen("-usbport=")), 0, 1); Settings.USBPort = LIMIT(atoi(ptr+strlen("-usbport=")), 0, 2);
DeviceHandler::SetUSBPort(Settings.USBPort, false);
} }
if(strlen(argv[i]) == 6 && strchr(argv[i], '=') == 0 && strchr(argv[i], '-') == 0) if(strlen(argv[i]) == 6 && strchr(argv[i], '=') == 0 && strchr(argv[i], '-') == 0)
@ -125,7 +124,7 @@ void StartUpProcess::SetTextf(const char * format, ...)
bool StartUpProcess::USBSpinUp() bool StartUpProcess::USBSpinUp()
{ {
bool started = false; bool started = false;
const DISC_INTERFACE * handle = DeviceHandler::GetUSBInterface(); const DISC_INTERFACE * handle = Settings.USBPort == 1 ? DeviceHandler::GetUSB1Interface() : DeviceHandler::GetUSB0Interface();
Timer countDown; Timer countDown;
// wait 10 sec for the USB to spin up...stupid slow ass HDD // wait 10 sec for the USB to spin up...stupid slow ass HDD
do do
@ -186,6 +185,7 @@ int StartUpProcess::Execute()
SetTextf("Loading cIOS %i\n", Settings.cios); SetTextf("Loading cIOS %i\n", Settings.cios);
DeviceHandler::DestroyInstance(); DeviceHandler::DestroyInstance();
USBStorage2_Deinit();
// Loading now the cios setup in the settings // Loading now the cios setup in the settings
IosLoader::LoadAppCios(); IosLoader::LoadAppCios();
@ -205,9 +205,13 @@ int StartUpProcess::Execute()
{ {
SetTextf("Changing USB Port to %i\n", Settings.USBPort); SetTextf("Changing USB Port to %i\n", Settings.USBPort);
DeviceHandler::Instance()->UnMountAllUSB(); DeviceHandler::Instance()->UnMountAllUSB();
DeviceHandler::SetUSBPort(Settings.USBPort);
DeviceHandler::Instance()->MountAllUSB(); DeviceHandler::Instance()->MountAllUSB();
} }
else if(Settings.USBPort == 2)
{
SetTextf("Mounting USB Port to 1\n");
DeviceHandler::Instance()->MountUSBPort1();
}
gprintf("\tLoading game categories...%s\n", GameCategories.Load(Settings.ConfigPath) ? "done" : "failed"); gprintf("\tLoading game categories...%s\n", GameCategories.Load(Settings.ConfigPath) ? "done" : "failed");
gprintf("\tLoading font...%s\n", Theme::LoadFont(Settings.ConfigPath) ? "done" : "failed (using default)"); gprintf("\tLoading font...%s\n", Theme::LoadFont(Settings.ConfigPath) ? "done" : "failed (using default)");

Binary file not shown.

Binary file not shown.

View File

@ -621,7 +621,6 @@ u32 wbfs_extract_disc(wbfs_disc_t*d, rw_sector_callback_t write_dst_wii_sector,
u64 wbfs_estimate_disc(wbfs_t *p, read_wiidisc_callback_t read_src_wii_disc, void *callback_data, partition_selector_t sel) u64 wbfs_estimate_disc(wbfs_t *p, read_wiidisc_callback_t read_src_wii_disc, void *callback_data, partition_selector_t sel)
{ {
u8 *b;
int i; int i;
u32 tot; u32 tot;
u32 wii_sec_per_wbfs_sect = 1 << (p->wbfs_sec_sz_s - p->wii_sec_sz_s); u32 wii_sec_per_wbfs_sect = 1 << (p->wbfs_sec_sz_s - p->wii_sec_sz_s);
@ -648,7 +647,6 @@ u64 wbfs_estimate_disc(wbfs_t *p, read_wiidisc_callback_t read_src_wii_disc, voi
d = 0; d = 0;
info = wbfs_ioalloc( p->disc_info_sz ); info = wbfs_ioalloc( p->disc_info_sz );
b = (u8 *) info;
read_src_wii_disc(callback_data, 0, 0x100, info->disc_header_copy); read_src_wii_disc(callback_data, 0, 0x100, info->disc_header_copy);
for (i = 0; i < p->n_wbfs_sec_per_disc; i++) for (i = 0; i < p->n_wbfs_sec_per_disc; i++)
@ -739,12 +737,10 @@ int wbfs_extract_file(wbfs_disc_t*d, char *path, void **data)
error: return ret; error: return ret;
} }
int wbfs_get_fragments(wbfs_disc_t *d, _frag_append_t append_fragment, void *callback_data) int wbfs_get_fragments(wbfs_disc_t *d, _frag_append_t append_fragment, void *callback_data, u32 hdd_sector_size)
{ {
if (!d) return -1; if (!d) return -1;
//! Use here real physical HDD sector size
extern u32 hdd_sector_size;
wbfs_t *p = d->p; wbfs_t *p = d->p;
int src_wbs_nlb = p->wbfs_sec_sz / hdd_sector_size; int src_wbs_nlb = p->wbfs_sec_sz / hdd_sector_size;
int i, ret, last = 0; int i, ret, last = 0;

View File

@ -221,7 +221,7 @@ extern "C"
partition_selector_t sel, u32 *comp_size, u32 *real_size); partition_selector_t sel, u32 *comp_size, u32 *real_size);
typedef int (*_frag_append_t)(void *ff, u32 offset, u32 sector, u32 count); typedef int (*_frag_append_t)(void *ff, u32 offset, u32 sector, u32 count);
int wbfs_get_fragments(wbfs_disc_t *d, _frag_append_t append_fragment, void *callback_data); int wbfs_get_fragments(wbfs_disc_t *d, _frag_append_t append_fragment, void *callback_data, u32 hdd_sector_size);
extern wbfs_t wbfs_iso_file; extern wbfs_t wbfs_iso_file;
u32 wbfs_disc_sector_used(wbfs_disc_t *d); u32 wbfs_disc_sector_used(wbfs_disc_t *d);

View File

@ -91,11 +91,9 @@ int MenuInstall()
} }
else else
{ {
USBStorage2_Watchdog(0);
StartProgress(gametxt, name, 0, true, true); StartProgress(gametxt, name, 0, true, true);
ret = WBFS_AddGame(); ret = WBFS_AddGame();
ProgressStop(); ProgressStop();
USBStorage2_Watchdog(1);
wiilight(0); wiilight(0);
if (ret != 0) if (ret != 0)
{ {

View File

@ -20,17 +20,17 @@ int SelectPartitionMenu()
int choice = -1; int choice = -1;
int ret = -1; int ret = -1;
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandle();
//create the partitionlist //create the partitionlist
for (int cnt = 0; cnt < usbHandle->GetPartitionCount(); cnt++) for (int cnt = 0; cnt < DeviceHandler::GetUSBPartitionCount(); cnt++)
{ {
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandleFromPartition(cnt);
int portPart = DeviceHandler::PartitionToPortPartition(cnt);
/* Calculate size in gigabytes */ /* Calculate size in gigabytes */
f32 size = usbHandle->GetSize(cnt) / GB_SIZE; f32 size = usbHandle->GetSize(portPart) / GB_SIZE;
if (size) if (size)
{ {
options.SetName(counter, "%s %d %s: ", tr( "Partition" ), cnt + 1, usbHandle->GetFSName(cnt)); options.SetName(counter, "%s %d %s: ", tr( "Partition" ), cnt + 1, usbHandle->GetFSName(portPart));
options.SetValue(counter, "%.2fGB", size); options.SetValue(counter, "%.2fGB", size);
} }
else else
@ -98,7 +98,7 @@ int SelectPartitionMenu()
if (ret >= 0) if (ret >= 0)
{ {
if (usbHandle->GetSize(ret)) if (strcmp(options.GetValue(ret), tr( "Can't be formatted" )) != 0)
{ {
choice = ret; choice = ret;
ExitSelect = true; ExitSelect = true;

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,3 @@
#define size_ehcmodule_5 26234 #define size_ehcmodule_5 27134
extern unsigned char ehcmodule_5[26234]; extern unsigned char ehcmodule_5[27134];

View File

@ -114,12 +114,10 @@ char * HTML_Stream::CopyString(const char * stopat)
u32 blocksize = 1024; u32 blocksize = 1024;
u32 counter = 0; u32 counter = 0;
u32 allocatedsize = 0;
char * outtext = (char*) malloc(blocksize); char * outtext = (char*) malloc(blocksize);
if (!outtext) return NULL; if (!outtext) return NULL;
allocatedsize = blocksize;
memset(outtext, 0, blocksize); memset(outtext, 0, blocksize);
while ((htmlstringcompare( HTML_File, stopat, position ) != 0) && (position + strlen(stopat) < filesize)) while ((htmlstringcompare( HTML_File, stopat, position ) != 0) && (position + strlen(stopat) < filesize))

View File

@ -97,7 +97,15 @@ bool Wiinnertag::Send(const char *gameID)
bool Wiinnertag::TagGame(const char *gameID) bool Wiinnertag::TagGame(const char *gameID)
{ {
Wiinnertag Tag(Settings.WiinnertagPath); string fullpath = Settings.WiinnertagPath;
if(fullpath.size() == 0)
return false;
if(fullpath[fullpath.size()-1] != '/')
fullpath += '/';
fullpath += "Wiinnertag.xml";
Wiinnertag Tag(fullpath);
return Tag.Send(gameID); return Tag.Send(gameID);
} }
@ -115,7 +123,15 @@ static const char * XMLSaveCallback(mxml_node_t *node, int where)
bool Wiinnertag::CreateExample(const string &filepath) bool Wiinnertag::CreateExample(const string &filepath)
{ {
FILE * f = fopen(filepath.c_str(), "wb"); if(filepath.size() == 0)
return false;
string fullpath = filepath;
if(fullpath[fullpath.size()-1] != '/')
fullpath += '/';
fullpath += "Wiinnertag.xml";
FILE * f = fopen(fullpath.c_str(), "wb");
if(!f) if(!f)
return false; return false;

View File

@ -210,7 +210,7 @@ s32 download_request(const char * url, char * filename)
//Form a nice request header to send to the webserver //Form a nice request header to send to the webserver
char header[strlen(path) + strlen(domain) + strlen(url) + 100]; char header[strlen(path) + strlen(domain) + strlen(url) + 100];
sprintf(header, "GET %s HTTP/1.1\r\nHost: %s\r\nReferer: %s\r\nConnection: close\r\n\r\n", path, domain, url); sprintf(header, "GET %s HTTP/1.1\r\nHost: %s\r\nReferer: %s\r\nUser-Agent: USBLoaderGX\r\nConnection: close\r\n\r\n", path, domain, url);
s32 filesize = network_request(connection, header, filename); s32 filesize = network_request(connection, header, filename);

View File

@ -1077,10 +1077,11 @@ int DiscWait(const char *title, const char *msg, const char *btn1Label, const ch
***************************************************************************/ ***************************************************************************/
int FormatingPartition(const char *title, int part_num) int FormatingPartition(const char *title, int part_num)
{ {
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandle(); PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandleFromPartition(part_num);
int portPart = DeviceHandler::PartitionToPortPartition(part_num);
char text[255]; char text[255];
sprintf(text, "%s: %.2fGB", tr( "Partition" ), usbHandle->GetSize(part_num) / GB_SIZE); sprintf(text, "%s: %.2fGB", tr( "Partition" ), usbHandle->GetSize(portPart) / GB_SIZE);
int choice = WindowPrompt(tr( "Do you want to format:" ), text, tr( "Yes" ), tr( "No" )); int choice = WindowPrompt(tr( "Do you want to format:" ), text, tr( "Yes" ), tr( "No" ));
if (choice == 0) if (choice == 0)
return -666; return -666;
@ -1117,7 +1118,7 @@ int FormatingPartition(const char *title, int part_num)
ResumeGui(); ResumeGui();
VIDEO_WaitVSync(); VIDEO_WaitVSync();
ret = WBFS_Format(usbHandle->GetLBAStart(part_num), usbHandle->GetSecCount(part_num)); ret = WBFS_Format(usbHandle->GetLBAStart(portPart), usbHandle->GetSecCount(portPart), DeviceHandler::PartitionToUSBPort(part_num));
if (ret < 0) if (ret < 0)
{ {
@ -1125,7 +1126,7 @@ int FormatingPartition(const char *title, int part_num)
} }
else else
{ {
PartitionFS * partition = usbHandle->GetPartitionRecord(part_num); PartitionFS * partition = usbHandle->GetPartitionRecord(portPart);
partition->PartitionType = 0xBF; partition->PartitionType = 0xBF;
partition->FSName = "WBFS"; partition->FSName = "WBFS";
sleep(1); sleep(1);

View File

@ -35,10 +35,16 @@ CCategoryList CategoryList;
CCategoryList::CCategoryList() CCategoryList::CCategoryList()
{ {
nameList[0] = tr("All"); clear();
goToFirst(); goToFirst();
} }
void CCategoryList::clear()
{
nameList.clear();
nameList[0] = tr("All");
}
const char * CCategoryList::operator[](unsigned int id) const char * CCategoryList::operator[](unsigned int id)
{ {
map<unsigned int, string>::iterator itr = nameList.find(id); map<unsigned int, string>::iterator itr = nameList.find(id);

View File

@ -51,7 +51,7 @@ class CCategoryList
bool findCategory(unsigned int id) { listIter = nameList.find(id); return listIter != nameList.end(); }; bool findCategory(unsigned int id) { listIter = nameList.find(id); return listIter != nameList.end(); };
int pos() const { return distance(nameList.begin(), listIter); } int pos() const { return distance(nameList.begin(), listIter); }
int size() const { return nameList.size(); } int size() const { return nameList.size(); }
void clear() { nameList.clear(); } void clear();
private: private:
string configPath; string configPath;
map<unsigned int, string>::const_iterator listIter; map<unsigned int, string>::const_iterator listIter;

View File

@ -59,6 +59,8 @@ const vector<unsigned int> &CGameCategories::operator[](const char *id) const
static const char * XMLSaveCallback(mxml_node_t *node, int where) static const char * XMLSaveCallback(mxml_node_t *node, int where)
{ {
const char *name = node->value.element.name; const char *name = node->value.element.name;
if(!name)
return NULL;
if (where == MXML_WS_BEFORE_OPEN) if (where == MXML_WS_BEFORE_OPEN)
{ {
@ -76,7 +78,7 @@ static const char * XMLSaveCallback(mxml_node_t *node, int where)
else if(!strcmp(name, "Game")) else if(!strcmp(name, "Game"))
return "\n\t"; return "\n\t";
} }
return (NULL); return NULL;
} }
bool CGameCategories::Load(string filepath) bool CGameCategories::Load(string filepath)
@ -389,6 +391,7 @@ bool CGameCategories::ImportFromWiiTDB(const string &xmlpath)
} }
XML_DB.CloseFile(); XML_DB.CloseFile();
gameList.FilterList(filter.c_str());
return true; return true;
} }

View File

@ -67,7 +67,7 @@ void CSettings::SetDefault()
snprintf(BcaCodepath, sizeof(BcaCodepath), "%s/bca/", BootDevice); snprintf(BcaCodepath, sizeof(BcaCodepath), "%s/bca/", BootDevice);
snprintf(WipCodepath, sizeof(WipCodepath), "%s/wip/", BootDevice); snprintf(WipCodepath, sizeof(WipCodepath), "%s/wip/", BootDevice);
snprintf(WDMpath, sizeof(WDMpath), "%s/wdm/", BootDevice); snprintf(WDMpath, sizeof(WDMpath), "%s/wdm/", BootDevice);
snprintf(WiinnertagPath, sizeof(WiinnertagPath), "%s/Wiinnertag.xml", ConfigPath); snprintf(WiinnertagPath, sizeof(WiinnertagPath), "%s/", ConfigPath);
snprintf(theme_path, sizeof(theme_path), "%stheme/", ConfigPath); snprintf(theme_path, sizeof(theme_path), "%stheme/", ConfigPath);
snprintf(dolpath, sizeof(dolpath), "%s/", BootDevice); snprintf(dolpath, sizeof(dolpath), "%s/", BootDevice);
strcpy(theme, ""); strcpy(theme, "");

View File

@ -171,6 +171,7 @@ enum
BLOCK_GAMEID_CHANGE = 0x8000, BLOCK_GAMEID_CHANGE = 0x8000,
BLOCK_CATEGORIES_MOD = 0x010000, BLOCK_CATEGORIES_MOD = 0x010000,
BLOCK_FEATURE_SETTINGS = 0x020000, BLOCK_FEATURE_SETTINGS = 0x020000,
BLOCK_HARD_DRIVE_SETTINGS = 0x040000,
BLOCK_ALL = 0xFFFFFFFF, BLOCK_ALL = 0xFFFFFFFF,
}; };

View File

@ -39,12 +39,23 @@ static const char * OnOffText[] =
trNOOP( "ON" ) trNOOP( "ON" )
}; };
static const char * WiilightText[WIILIGHT_MAX] =
{
trNOOP( "OFF" ),
trNOOP( "ON" ),
trNOOP( "Only for Install" )
};
FeatureSettingsMenu::FeatureSettingsMenu() FeatureSettingsMenu::FeatureSettingsMenu()
: SettingsMenu(tr("Features Settings"), &GuiOptions, MENU_NONE) : SettingsMenu(tr("Features Settings"), &GuiOptions, MENU_NONE)
{ {
int Idx = 0; int Idx = 0;
Options->SetName(Idx++, "%s", tr( "Titles from WiiTDB" )); Options->SetName(Idx++, "%s", tr( "Titles from WiiTDB" ));
Options->SetName(Idx++, "%s", tr( "Cache Titles" )); Options->SetName(Idx++, "%s", tr( "Cache Titles" ));
Options->SetName(Idx++, "%s", tr( "Wiilight" ));
Options->SetName(Idx++, "%s", tr( "Rumble" ));
Options->SetName(Idx++, "%s", tr( "AutoInit Network" ));
Options->SetName(Idx++, "%s", tr( "Messageboard Update" ));
Options->SetName(Idx++, "%s", tr( "Wiinnertag" )); Options->SetName(Idx++, "%s", tr( "Wiinnertag" ));
Options->SetName(Idx++, "%s", tr( "Import Categories" )); Options->SetName(Idx++, "%s", tr( "Import Categories" ));
@ -61,6 +72,18 @@ void FeatureSettingsMenu::SetOptionValues()
//! Settings: Cache Titles //! Settings: Cache Titles
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.CacheTitles] )); Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.CacheTitles] ));
//! Settings: Wiilight
Options->SetValue(Idx++, "%s", tr( WiilightText[Settings.wiilight] ));
//! Settings: Rumble
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.rumble] ));
//! Settings: AutoInit Network
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.autonetwork] ));
//! Settings: Messageboard Update
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.PlaylogUpdate] ));
//! Settings: Wiinnertag //! Settings: Wiinnertag
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.Wiinnertag] )); Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.Wiinnertag] ));
@ -93,6 +116,30 @@ int FeatureSettingsMenu::GetMenuInternal()
GameTitles.LoadTitlesFromWiiTDB(Settings.titlestxt_path); GameTitles.LoadTitlesFromWiiTDB(Settings.titlestxt_path);
} }
//! Settings: Wiilight
else if (ret == ++Idx)
{
if (++Settings.wiilight >= WIILIGHT_MAX) Settings.wiilight = 0;
}
//! Settings: Rumble
else if (ret == ++Idx)
{
if (++Settings.rumble >= MAX_ON_OFF) Settings.rumble = 0; //RUMBLE
}
//! Settings: AutoInit Network
else if (ret == ++Idx)
{
if (++Settings.autonetwork >= MAX_ON_OFF) Settings.autonetwork = 0;
}
//! Settings: Messageboard Update
else if (ret == ++Idx )
{
if (++Settings.PlaylogUpdate >= MAX_ON_OFF) Settings.PlaylogUpdate = 0;
}
//! Settings: Winnertag //! Settings: Winnertag
else if (ret == ++Idx) else if (ret == ++Idx)
{ {
@ -109,7 +156,10 @@ int FeatureSettingsMenu::GetMenuInternal()
} }
} }
if(Settings.Wiinnertag == ON && !CheckFile(Settings.WiinnertagPath)) char filepath[200];
snprintf(filepath, sizeof(filepath), "%sWiinnertag.xml", Settings.WiinnertagPath);
if(Settings.Wiinnertag == ON && !CheckFile(filepath))
{ {
int choice = WindowPrompt(tr("Warning"), tr("No Wiinnertag.xml found in the config path. Do you want an example file created?"), tr("Yes"), tr("No")); int choice = WindowPrompt(tr("Warning"), tr("No Wiinnertag.xml found in the config path. Do you want an example file created?"), tr("Yes"), tr("No"));
if(choice) if(choice)
@ -117,9 +167,15 @@ int FeatureSettingsMenu::GetMenuInternal()
if(Wiinnertag::CreateExample(Settings.WiinnertagPath)) if(Wiinnertag::CreateExample(Settings.WiinnertagPath))
{ {
char text[200]; char text[200];
snprintf(text, sizeof(text), "%s %s", tr("An example file was created here:"), Settings.WiinnertagPath); snprintf(text, sizeof(text), "%s %s", tr("An example file was created here:"), filepath);
WindowPrompt(tr("Success"), text, tr("OK")); WindowPrompt(tr("Success"), text, tr("OK"));
} }
else
{
char text[200];
snprintf(text, sizeof(text), "%s %s", tr("Could not write to:"), filepath);
WindowPrompt(tr("Failed"), text, tr("OK"));
}
} }
} }
} }

View File

@ -41,13 +41,6 @@ static const char * OnOffText[MAX_ON_OFF] =
trNOOP( "ON" ) trNOOP( "ON" )
}; };
static const char * WiilightText[WIILIGHT_MAX] =
{
trNOOP( "OFF" ),
trNOOP( "ON" ),
trNOOP( "Only for Install" )
};
static const char * GameInfoText[GAMEINFO_MAX] = static const char * GameInfoText[GAMEINFO_MAX] =
{ {
trNOOP( "Game ID" ), trNOOP( "Game ID" ),
@ -118,9 +111,6 @@ GuiSettingsMenu::GuiSettingsMenu()
Options->SetName(Idx++, "%s", tr( "Font Scale Factor" )); Options->SetName(Idx++, "%s", tr( "Font Scale Factor" ));
Options->SetName(Idx++, "%s", tr( "Keyboard" )); Options->SetName(Idx++, "%s", tr( "Keyboard" ));
Options->SetName(Idx++, "%s", tr( "Disc Artwork Download" )); Options->SetName(Idx++, "%s", tr( "Disc Artwork Download" ));
Options->SetName(Idx++, "%s", tr( "Wiilight" ));
Options->SetName(Idx++, "%s", tr( "Rumble" ));
Options->SetName(Idx++, "%s", tr( "AutoInit Network" ));
Options->SetName(Idx++, "%s", tr( "Screensaver" )); Options->SetName(Idx++, "%s", tr( "Screensaver" ));
Options->SetName(Idx++, "%s", tr( "Mark new games" )); Options->SetName(Idx++, "%s", tr( "Mark new games" ));
Options->SetName(Idx++, "%s", tr( "Show Free Space" )); Options->SetName(Idx++, "%s", tr( "Show Free Space" ));
@ -187,15 +177,6 @@ void GuiSettingsMenu::SetOptionValues()
//! Settings: Disc Artwork Download //! Settings: Disc Artwork Download
Options->SetValue(Idx++, "%s", tr( DiscArtDownloadText[Settings.discart] )); Options->SetValue(Idx++, "%s", tr( DiscArtDownloadText[Settings.discart] ));
//! Settings: Wiilight
Options->SetValue(Idx++, "%s", tr( WiilightText[Settings.wiilight] ));
//! Settings: Rumble
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.rumble] ));
//! Settings: AutoInit Network
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.autonetwork] ));
//! Settings: Screensaver //! Settings: Screensaver
Options->SetValue(Idx++, "%s", tr( ScreensaverText[Settings.screensaver] )); Options->SetValue(Idx++, "%s", tr( ScreensaverText[Settings.screensaver] ));
@ -336,24 +317,6 @@ int GuiSettingsMenu::GetMenuInternal()
if (++Settings.discart >= DISCARTS_MAX_CHOICE) Settings.discart = 0; if (++Settings.discart >= DISCARTS_MAX_CHOICE) Settings.discart = 0;
} }
//! Settings: Wiilight
else if (ret == ++Idx)
{
if (++Settings.wiilight >= WIILIGHT_MAX) Settings.wiilight = 0;
}
//! Settings: Rumble
else if (ret == ++Idx)
{
if (++Settings.rumble >= MAX_ON_OFF) Settings.rumble = 0; //RUMBLE
}
//! Settings: AutoInit Network
else if (ret == ++Idx)
{
if (++Settings.autonetwork >= MAX_ON_OFF) Settings.autonetwork = 0;
}
//! Settings: Screensaver //! Settings: Screensaver
else if (ret == ++Idx) else if (ret == ++Idx)
{ {

View File

@ -69,8 +69,8 @@ void GameSettingsMenu::SetupMainButtons()
SetMainButton(pos++, tr( "Game Load" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Game Load" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Ocarina" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Ocarina" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Categories" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Categories" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Uninstall Menu" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Default Gamesettings" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Default Gamesettings" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Uninstall Menu" ), MainButtonImgData, MainButtonImgOverData);
} }
void GameSettingsMenu::CreateSettingsMenu(int menuNr) void GameSettingsMenu::CreateSettingsMenu(int menuNr)
@ -126,15 +126,6 @@ void GameSettingsMenu::CreateSettingsMenu(int menuNr)
ShowMenu(); ShowMenu();
} }
//! Uninstall Menu
else if(menuNr == Idx++)
{
HideMenu();
ResumeGui();
CurrentMenu = new UninstallSM(DiscHeader);
Append(CurrentMenu);
}
//! Default Gamesettings //! Default Gamesettings
else if(menuNr == Idx++) else if(menuNr == Idx++)
{ {
@ -145,6 +136,15 @@ void GameSettingsMenu::CreateSettingsMenu(int menuNr)
GameSettings.Save(); GameSettings.Save();
} }
} }
//! Uninstall Menu
else if(menuNr == Idx++)
{
HideMenu();
ResumeGui();
CurrentMenu = new UninstallSM(DiscHeader);
Append(CurrentMenu);
}
} }
void GameSettingsMenu::DeleteSettingsMenu() void GameSettingsMenu::DeleteSettingsMenu()

View File

@ -32,6 +32,7 @@
#include "SoundSettingsMenu.hpp" #include "SoundSettingsMenu.hpp"
#include "CustomPathsSM.hpp" #include "CustomPathsSM.hpp"
#include "FeatureSettingsMenu.hpp" #include "FeatureSettingsMenu.hpp"
#include "HardDriveSM.hpp"
GlobalSettings::GlobalSettings() GlobalSettings::GlobalSettings()
: FlyingButtonsMenu(tr("Global Settings")) : FlyingButtonsMenu(tr("Global Settings"))
@ -70,12 +71,13 @@ void GlobalSettings::SetupMainButtons()
SetMainButton(pos++, tr( "GUI Settings" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "GUI Settings" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Loader Settings" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Loader Settings" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Parental Control" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Hard Drive Settings" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Features" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Features" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Parental Control" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Sound" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Sound" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Custom Paths" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Theme Menu" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Theme Menu" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Theme Downloader" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Theme Downloader" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Custom Paths" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Update" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Update" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Default Settings" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Default Settings" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Credits" ), creditsImgData, creditsImgOverData); SetMainButton(pos++, tr( "Credits" ), creditsImgData, creditsImgOverData);
@ -116,10 +118,10 @@ void GlobalSettings::CreateSettingsMenu(int menuNr)
CurrentMenu = new LoaderSettings(); CurrentMenu = new LoaderSettings();
Append(CurrentMenu); Append(CurrentMenu);
} }
//! Parental Control //! Hard Drive Settings
else if(menuNr == Idx++) else if(menuNr == Idx++)
{ {
if(!Settings.godmode && (Settings.ParentalBlocks & BLOCK_PARENTAL_SETTINGS)) if(!Settings.godmode && (Settings.ParentalBlocks & BLOCK_HARD_DRIVE_SETTINGS))
{ {
WindowPrompt(tr( "Permission denied." ), tr( "Console must be unlocked for this option." ), tr( "OK" )); WindowPrompt(tr( "Permission denied." ), tr( "Console must be unlocked for this option." ), tr( "OK" ));
return; return;
@ -127,7 +129,7 @@ void GlobalSettings::CreateSettingsMenu(int menuNr)
HideMenu(); HideMenu();
ResumeGui(); ResumeGui();
CurrentMenu = new ParentalControlSM(); CurrentMenu = new HardDriveSM();
Append(CurrentMenu); Append(CurrentMenu);
} }
//! Feature //! Feature
@ -144,6 +146,20 @@ void GlobalSettings::CreateSettingsMenu(int menuNr)
CurrentMenu = new FeatureSettingsMenu(); CurrentMenu = new FeatureSettingsMenu();
Append(CurrentMenu); Append(CurrentMenu);
} }
//! Parental Control
else if(menuNr == Idx++)
{
if(!Settings.godmode && (Settings.ParentalBlocks & BLOCK_PARENTAL_SETTINGS))
{
WindowPrompt(tr( "Permission denied." ), tr( "Console must be unlocked for this option." ), tr( "OK" ));
return;
}
HideMenu();
ResumeGui();
CurrentMenu = new ParentalControlSM();
Append(CurrentMenu);
}
//! Sound //! Sound
else if(menuNr == Idx++) else if(menuNr == Idx++)
{ {
@ -158,20 +174,6 @@ void GlobalSettings::CreateSettingsMenu(int menuNr)
CurrentMenu = new SoundSettingsMenu(); CurrentMenu = new SoundSettingsMenu();
Append(CurrentMenu); Append(CurrentMenu);
} }
//! Custom Paths
else if(menuNr == Idx++)
{
if(!Settings.godmode && (Settings.ParentalBlocks & BLOCK_CUSTOMPATH_SETTINGS))
{
WindowPrompt(tr( "Permission denied." ), tr( "Console must be unlocked for this option." ), tr( "OK" ));
return;
}
HideMenu();
ResumeGui();
CurrentMenu = new CustomPathsSM();
Append(CurrentMenu);
}
//! Theme Menu //! Theme Menu
else if(menuNr == Idx++) else if(menuNr == Idx++)
{ {
@ -194,6 +196,20 @@ void GlobalSettings::CreateSettingsMenu(int menuNr)
returnMenu = MENU_THEMEDOWNLOADER; returnMenu = MENU_THEMEDOWNLOADER;
} }
//! Custom Paths
else if(menuNr == Idx++)
{
if(!Settings.godmode && (Settings.ParentalBlocks & BLOCK_CUSTOMPATH_SETTINGS))
{
WindowPrompt(tr( "Permission denied." ), tr( "Console must be unlocked for this option." ), tr( "OK" ));
return;
}
HideMenu();
ResumeGui();
CurrentMenu = new CustomPathsSM();
Append(CurrentMenu);
}
//! Update //! Update
else if(menuNr == Idx++) else if(menuNr == Idx++)
{ {
@ -270,6 +286,9 @@ void GlobalSettings::DeleteSettingsMenu()
case CFeatureSettings: case CFeatureSettings:
delete ((FeatureSettingsMenu *) CurrentMenu); delete ((FeatureSettingsMenu *) CurrentMenu);
break; break;
case CHardDriveSM:
delete ((HardDriveSM *) CurrentMenu);
break;
case CSettingsMenu: case CSettingsMenu:
default: default:
delete CurrentMenu; delete CurrentMenu;

View File

@ -0,0 +1,271 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#include <unistd.h>
#include <sys/statvfs.h>
#include "HardDriveSM.hpp"
#include "Controls/DeviceHandler.hpp"
#include "settings/CSettings.h"
#include "prompts/PromptWindows.h"
#include "language/gettext.h"
#include "usbloader/GameList.h"
#include "usbloader/wbfs.h"
#include "usbloader/utils.h"
#include "prompts/ProgressWindow.h"
#include "settings/GameTitles.h"
#include "system/IosLoader.h"
#include "wad/nandtitle.h"
static const char * OnOffText[] =
{
trNOOP( "OFF" ),
trNOOP( "ON" )
};
static const char * InstallToText[INSTALL_TO_MAX] =
{
trNOOP( "None" ),
trNOOP( "GAMEID_Gamename" ),
trNOOP( "Gamename [GAMEID]" )
};
static const char * SplitSizeText[INSTALL_TO_MAX] =
{
trNOOP( "No Splitting" ),
trNOOP( "Split each 2GB" ),
trNOOP( "Split each 4GB" ),
};
static inline bool IsValidPartition(int fs_type, int cios)
{
if (IosLoader::IsWaninkokoIOS(cios) && NandTitles.VersionOf(TITLE_ID(1, cios)) < 18)
{
return fs_type == PART_FS_WBFS;
}
else
{
return fs_type == PART_FS_WBFS || fs_type == PART_FS_FAT || fs_type == PART_FS_NTFS || fs_type == PART_FS_EXT;
}
}
HardDriveSM::HardDriveSM()
: SettingsMenu(tr("Hard Drive Settings"), &GuiOptions, MENU_NONE)
{
int Idx = 0;
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( "Install Directories" ));
Options->SetName(Idx++, "%s", tr( "Game Split Size" ));
Options->SetName(Idx++, "%s", tr( "Install Partitions" ));
Options->SetName(Idx++, "%s", tr( "Sync FAT32 FS Info" ));
OldSettingsPartition = Settings.partition;
OldSettingsMultiplePartitions = Settings.MultiplePartitions;
NewSettingsUSBPort = Settings.USBPort;
SetOptionValues();
}
HardDriveSM::~HardDriveSM()
{
//! if partition has changed, Reinitialize it
if (Settings.partition != OldSettingsPartition ||
Settings.MultiplePartitions != OldSettingsMultiplePartitions ||
Settings.USBPort != NewSettingsUSBPort)
{
WBFS_CloseAll();
if(Settings.USBPort != NewSettingsUSBPort)
{
DeviceHandler::Instance()->UnMountAllUSB();
Settings.USBPort = NewSettingsUSBPort;
DeviceHandler::Instance()->MountAllUSB();
if(Settings.partition >= DeviceHandler::GetUSBPartitionCount())
Settings.partition = 0;
}
if(Settings.MultiplePartitions)
WBFS_OpenAll();
else
WBFS_OpenPart(Settings.partition);
//! Reload the new game titles
gameList.ReadGameList();
GameTitles.LoadTitlesFromWiiTDB(Settings.titlestxt_path);
}
}
void HardDriveSM::SetOptionValues()
{
int Idx = 0;
//! Settings: Game/Install Partition
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandleFromPartition(Settings.partition);
int checkPart = DeviceHandler::PartitionToPortPartition(Settings.partition);
//! Get the partition name and it's size in GB's
Options->SetValue(Idx++, "%s (%.2fGB)", usbHandle->GetFSName(checkPart), usbHandle->GetSize(checkPart)/GB_SIZE);
//! Settings: Multiple Partitions
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.MultiplePartitions] ));
//! Settings: USB Port
if(NewSettingsUSBPort == 2)
Options->SetValue(Idx++, tr("Both Ports"));
else
Options->SetValue(Idx++, "%i", NewSettingsUSBPort);
//! Settings: Install directories
Options->SetValue(Idx++, "%s", tr( InstallToText[Settings.InstallToDir] ));
//! Settings: Game Split Size
Options->SetValue(Idx++, "%s", tr( SplitSizeText[Settings.GameSplit] ));
//! Settings: Install partitions
if(Settings.InstallPartitions == ONLY_GAME_PARTITION)
Options->SetValue(Idx++, "%s", tr("Only Game Partition"));
else if(Settings.InstallPartitions == ALL_PARTITIONS)
Options->SetValue(Idx++, "%s", tr("All Partitions"));
else if(Settings.InstallPartitions == REMOVE_UPDATE_PARTITION)
Options->SetValue(Idx++, "%s", tr("Remove update"));
//! Settings: Sync FAT32 FS Info
Options->SetValue(Idx++, " ");
}
int HardDriveSM::GetMenuInternal()
{
int ret = optionBrowser->GetClickedOption();
if (ret < 0)
return MENU_NONE;
int Idx = -1;
//! Settings: Game/Install Partition
if (ret == ++Idx)
{
// Select the next valid partition, even if that's the same one
int fs_type = 0;
int ios = IOS_GetVersion();
int retries = 20;
do
{
Settings.partition = (Settings.partition + 1) % DeviceHandler::GetUSBPartitionCount();
fs_type = DeviceHandler::GetUSBFilesystemType(Settings.partition);
}
while (!IsValidPartition(fs_type, ios) && --retries > 0);
if(fs_type == PART_FS_FAT && Settings.GameSplit == GAMESPLIT_NONE)
Settings.GameSplit = GAMESPLIT_4GB;
}
//! Settings: Multiple Partitions
else if (ret == ++Idx)
{
if (++Settings.MultiplePartitions >= MAX_ON_OFF) Settings.MultiplePartitions = 0;
}
//! Settings: USB Port
else if (ret == ++Idx)
{
if(!IosLoader::IsHermesIOS())
{
WindowPrompt(tr("ERROR:"), tr("USB Port changing is only supported on Hermes cIOS."), tr("OK"));
NewSettingsUSBPort = 0;
Settings.USBPort = 0;
}
else if (++NewSettingsUSBPort >= 3) // 2 = both ports
NewSettingsUSBPort = 0;
}
//! Settings: Install directories
else if (ret == ++Idx)
{
if (++Settings.InstallToDir >= INSTALL_TO_MAX) Settings.InstallToDir = 0;
}
//! Settings: Game Split Size
else if (ret == ++Idx)
{
if (++Settings.GameSplit >= GAMESPLIT_MAX)
{
if(DeviceHandler::GetUSBFilesystemType(Settings.partition) == PART_FS_FAT)
Settings.GameSplit = GAMESPLIT_2GB;
else
Settings.GameSplit = GAMESPLIT_NONE;
}
}
//! Settings: Install partitions
else if (ret == ++Idx)
{
switch(Settings.InstallPartitions)
{
case ONLY_GAME_PARTITION:
Settings.InstallPartitions = ALL_PARTITIONS;
break;
case ALL_PARTITIONS:
Settings.InstallPartitions = REMOVE_UPDATE_PARTITION;
break;
default:
case REMOVE_UPDATE_PARTITION:
Settings.InstallPartitions = ONLY_GAME_PARTITION;
break;
}
}
//! Settings: Sync FAT32 FS Info
else if (ret == ++Idx )
{
int choice = WindowPrompt(0, tr("Do you want to sync free space info sector on all FAT32 partitions?"), tr("Yes"), tr("Cancel"));
if(choice)
{
StartProgress(tr("Synchronizing..."), tr("Please wait..."), 0, false, false);
int partCount = DeviceHandler::GetUSBPartitionCount();
for(int i = 0; i < partCount; ++i)
{
ShowProgress(i, partCount);
if(DeviceHandler::GetUSBFilesystemType(i) == PART_FS_FAT)
{
PartitionHandle *usb = DeviceHandler::Instance()->GetUSBHandleFromPartition(i);
if(!usb) continue;
struct statvfs stats;
char drive[20];
snprintf(drive, sizeof(drive), "%s:/", usb->MountName(i));
memset(&stats, 0, sizeof(stats));
memcpy(&stats.f_flag, "SCAN", 4);
statvfs(drive, &stats);
}
}
ProgressStop();
}
}
SetOptionValues();
return MENU_NONE;
}

View File

@ -0,0 +1,47 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#ifndef HARDDRIVE_MENU_HPP_
#define HARDDRIVE_MENU_HPP_
#include "SettingsMenu.hpp"
class HardDriveSM : public SettingsMenu
{
public:
HardDriveSM();
~HardDriveSM();
virtual int GetType() { return CHardDriveSM; };
protected:
void SetOptionValues();
int GetMenuInternal();
int OldSettingsPartition;
int OldSettingsMultiplePartitions;
int NewSettingsUSBPort;
OptionList GuiOptions;
};
#endif

View File

@ -22,22 +22,13 @@
* distribution. * distribution.
***************************************************************************/ ***************************************************************************/
#include <unistd.h> #include <unistd.h>
#include <sys/statvfs.h>
#include "LoaderSettings.hpp" #include "LoaderSettings.hpp"
#include "Controls/DeviceHandler.hpp"
#include "usbloader/usbstorage2.h" #include "usbloader/usbstorage2.h"
#include "settings/CSettings.h" #include "settings/CSettings.h"
#include "prompts/ProgressWindow.h"
#include "prompts/PromptWindows.h" #include "prompts/PromptWindows.h"
#include "language/gettext.h" #include "language/gettext.h"
#include "wad/nandtitle.h" #include "wad/nandtitle.h"
#include "prompts/TitleBrowser.h" #include "prompts/TitleBrowser.h"
#include "usbloader/GameList.h"
#include "usbloader/wbfs.h"
#include "usbloader/utils.h"
#include "system/IosLoader.h"
#include "settings/GameTitles.h"
#include "xml/xml.h"
#include "menu.h" #include "menu.h"
static const char * OnOffText[] = static const char * OnOffText[] =
@ -74,20 +65,6 @@ static const char * LanguageText[MAX_LANGUAGE] =
trNOOP( "Console Default" ) trNOOP( "Console Default" )
}; };
static const char * InstallToText[INSTALL_TO_MAX] =
{
trNOOP( "None" ),
trNOOP( "GAMEID_Gamename" ),
trNOOP( "Gamename [GAMEID]" )
};
static const char * SplitSizeText[INSTALL_TO_MAX] =
{
trNOOP( "No Splitting" ),
trNOOP( "Split each 2GB" ),
trNOOP( "Split each 4GB" ),
};
static const char * Error002Text[] = static const char * Error002Text[] =
{ {
trNOOP( "No" ), trNOOP( "No" ),
@ -95,18 +72,6 @@ static const char * Error002Text[] =
trNOOP( "Anti" ) trNOOP( "Anti" )
}; };
static inline bool IsValidPartition(int fs_type, int cios)
{
if (IosLoader::IsWaninkokoIOS() && NandTitles.VersionOf(TITLE_ID(1, cios)) < 18)
{
return fs_type == PART_FS_WBFS;
}
else
{
return fs_type == PART_FS_WBFS || fs_type == PART_FS_FAT || fs_type == PART_FS_NTFS || fs_type == PART_FS_EXT;
}
}
LoaderSettings::LoaderSettings() LoaderSettings::LoaderSettings()
: SettingsMenu(tr("Loader Settings"), &GuiOptions, MENU_NONE) : SettingsMenu(tr("Loader Settings"), &GuiOptions, MENU_NONE)
{ {
@ -118,57 +83,14 @@ LoaderSettings::LoaderSettings()
Options->SetName(Idx++, "%s", tr( "Patch Country Strings" )); Options->SetName(Idx++, "%s", tr( "Patch Country Strings" ));
Options->SetName(Idx++, "%s", tr( "Ocarina" )); Options->SetName(Idx++, "%s", tr( "Ocarina" ));
Options->SetName(Idx++, "%s", tr( "Boot/Standard" )); Options->SetName(Idx++, "%s", tr( "Boot/Standard" ));
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( "Install directories" ));
Options->SetName(Idx++, "%s", tr( "Game Split Size" ));
Options->SetName(Idx++, "%s", tr( "Quick Boot" )); Options->SetName(Idx++, "%s", tr( "Quick Boot" ));
Options->SetName(Idx++, "%s", tr( "Error 002 fix" )); Options->SetName(Idx++, "%s", tr( "Error 002 fix" ));
Options->SetName(Idx++, "%s", tr( "Block IOS Reload" )); Options->SetName(Idx++, "%s", tr( "Block IOS Reload" ));
Options->SetName(Idx++, "%s", tr( "Install partitions" ));
Options->SetName(Idx++, "%s", tr( "Return To" )); Options->SetName(Idx++, "%s", tr( "Return To" ));
Options->SetName(Idx++, "%s", tr( "Messageboard Update" ));
Options->SetName(Idx++, "%s", tr( "Sync FAT32 FS Info" ));
OldSettingsPartition = Settings.partition;
OldSettingsMultiplePartitions = Settings.MultiplePartitions;
NewSettingsUSBPort = Settings.USBPort;
SetOptionValues(); SetOptionValues();
} }
LoaderSettings::~LoaderSettings()
{
//! if partition has changed, Reinitialize it
if (Settings.partition != OldSettingsPartition ||
Settings.MultiplePartitions != OldSettingsMultiplePartitions ||
Settings.USBPort != NewSettingsUSBPort)
{
WBFS_CloseAll();
if(Settings.USBPort != NewSettingsUSBPort)
{
DeviceHandler::Instance()->UnMountAllUSB();
Settings.USBPort = NewSettingsUSBPort;
DeviceHandler::SetUSBPort(Settings.USBPort);
DeviceHandler::Instance()->MountAllUSB();
if(Settings.partition >= DeviceHandler::Instance()->GetUSBHandle()->GetPartitionTotalCount())
Settings.partition = 0;
}
if(Settings.MultiplePartitions)
WBFS_OpenAll();
else
WBFS_OpenPart(Settings.partition);
//! Reload the new game titles
gameList.ReadGameList();
GameTitles.LoadTitlesFromWiiTDB(Settings.titlestxt_path);
}
}
void LoaderSettings::SetOptionValues() void LoaderSettings::SetOptionValues()
{ {
int Idx = 0; int Idx = 0;
@ -194,25 +116,6 @@ void LoaderSettings::SetOptionValues()
else else
Options->SetValue(Idx++, "********"); Options->SetValue(Idx++, "********");
//! Settings: Game/Install Partition
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandle();
// Get the partition name and it's size in GB's
Options->SetValue(Idx++, "%s (%.2fGB)", usbHandle->GetFSName(Settings.partition), usbHandle->GetSize(Settings.partition)/GB_SIZE);
//! Settings: Multiple Partitions
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.MultiplePartitions] ));
//! Settings: USB Port
if(NewSettingsUSBPort == 2)
Options->SetValue(Idx++, tr("Both Ports"));
else
Options->SetValue(Idx++, "%i", NewSettingsUSBPort);
//! Settings: Install directories
Options->SetValue(Idx++, "%s", tr( InstallToText[Settings.InstallToDir] ));
//! Settings: Game Split Size
Options->SetValue(Idx++, "%s", tr( SplitSizeText[Settings.GameSplit] ));
//! Settings: Quick Boot //! Settings: Quick Boot
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.quickboot] )); Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.quickboot] ));
@ -223,14 +126,6 @@ void LoaderSettings::SetOptionValues()
//! Settings: Block IOS Reload //! Settings: Block IOS Reload
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.BlockIOSReload] )); Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.BlockIOSReload] ));
//! Settings: Install partitions
if(Settings.InstallPartitions == ONLY_GAME_PARTITION)
Options->SetValue(Idx++, "%s", tr("Only Game Partition"));
else if(Settings.InstallPartitions == ALL_PARTITIONS)
Options->SetValue(Idx++, "%s", tr("All Partitions"));
else if(Settings.InstallPartitions == REMOVE_UPDATE_PARTITION)
Options->SetValue(Idx++, "%s", tr("Remove update"));
//! Settings: Return To //! Settings: Return To
const char* TitleName = NULL; const char* TitleName = NULL;
u64 tid = NandTitles.FindU32(Settings.returnTo); u64 tid = NandTitles.FindU32(Settings.returnTo);
@ -238,12 +133,6 @@ void LoaderSettings::SetOptionValues()
TitleName = NandTitles.NameOf(tid); TitleName = NandTitles.NameOf(tid);
TitleName = TitleName ? TitleName : strlen(Settings.returnTo) > 0 ? Settings.returnTo : tr(OnOffText[0]); TitleName = TitleName ? TitleName : strlen(Settings.returnTo) > 0 ? Settings.returnTo : tr(OnOffText[0]);
Options->SetValue(Idx++, "%s", TitleName); Options->SetValue(Idx++, "%s", TitleName);
//! Settings: Messageboard Update
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.PlaylogUpdate] ));
//! Settings: Sync FAT32 FS Info
Options->SetValue(Idx++, " ");
} }
int LoaderSettings::GetMenuInternal() int LoaderSettings::GetMenuInternal()
@ -310,101 +199,6 @@ int LoaderSettings::GetMenuInternal()
} }
} }
//! Settings: Game/Install Partition
else if (ret == ++Idx)
{
// Select the next valid partition, even if that's the same one
int fs_type = 0;
int ios = IOS_GetVersion();
int retries = 20;
do
{
Settings.partition = (Settings.partition + 1) % DeviceHandler::Instance()->GetUSBHandle()->GetPartitionTotalCount();
fs_type = DeviceHandler::GetUSBFilesystemType(Settings.partition);
}
while (!IsValidPartition(fs_type, ios) && --retries > 0);
if(fs_type == PART_FS_FAT && Settings.GameSplit == GAMESPLIT_NONE)
Settings.GameSplit = GAMESPLIT_4GB;
}
//! Settings: Multiple Partitions
else if (ret == ++Idx)
{
if (++Settings.MultiplePartitions >= MAX_ON_OFF) Settings.MultiplePartitions = 0;
}
//! Settings: USB Port
else if (ret == ++Idx)
{
if(!IosLoader::IsHermesIOS())
{
WindowPrompt(tr("ERROR:"), tr("USB Port changing is only supported on Hermes cIOS."), tr("OK"));
NewSettingsUSBPort = 0;
Settings.USBPort = 0;
}
else if (++NewSettingsUSBPort >= 3) // 2 = both ports
NewSettingsUSBPort = 0;
if(NewSettingsUSBPort == 2)
{
bool allSDPaths = true;
if(strncmp(Settings.covers_path, "usb", 3) == 0)
allSDPaths = false;
else if(strncmp(Settings.coversFull_path, "usb", 3) == 0)
allSDPaths = false;
else if(strncmp(Settings.disc_path, "usb", 3) == 0)
allSDPaths = false;
else if(strncmp(Settings.theme_path, "usb", 3) == 0)
allSDPaths = false;
else if(strncmp(Settings.titlestxt_path, "usb", 3) == 0)
allSDPaths = false;
else if(strncmp(Settings.update_path, "usb", 3) == 0)
allSDPaths = false;
else if(strncmp(Settings.Cheatcodespath, "usb", 3) == 0)
allSDPaths = false;
else if(strncmp(Settings.TxtCheatcodespath, "usb", 3) == 0)
allSDPaths = false;
else if(strncmp(Settings.dolpath, "usb", 3) == 0)
allSDPaths = false;
else if(strncmp(Settings.homebrewapps_path, "usb", 3) == 0)
allSDPaths = false;
else if(strncmp(Settings.BcaCodepath, "usb", 3) == 0)
allSDPaths = false;
else if(strncmp(Settings.WipCodepath, "usb", 3) == 0)
allSDPaths = false;
else if(strncmp(Settings.languagefiles_path, "usb", 3) == 0)
allSDPaths = false;
else if(strncmp(Settings.WDMpath, "usb", 3) == 0)
allSDPaths = false;
if(!allSDPaths)
{
WindowPrompt(tr("ERROR:"), tr("Automatic port switching is done on the fly. You need to change all custom paths to SD-Card first for this option or else it could damage a filesystem."), tr("OK"));
NewSettingsUSBPort = 0;
}
}
}
//! Settings: Install directories
else if (ret == ++Idx)
{
if (++Settings.InstallToDir >= INSTALL_TO_MAX) Settings.InstallToDir = 0;
}
//! Settings: Game Split Size
else if (ret == ++Idx)
{
if (++Settings.GameSplit >= GAMESPLIT_MAX)
{
if(DeviceHandler::GetUSBFilesystemType(Settings.partition) == PART_FS_FAT)
Settings.GameSplit = GAMESPLIT_2GB;
else
Settings.GameSplit = GAMESPLIT_NONE;
}
}
//! Settings: Quick Boot //! Settings: Quick Boot
else if (ret == ++Idx) else if (ret == ++Idx)
{ {
@ -423,24 +217,6 @@ int LoaderSettings::GetMenuInternal()
if (++Settings.BlockIOSReload >= 3) Settings.BlockIOSReload = 0; if (++Settings.BlockIOSReload >= 3) Settings.BlockIOSReload = 0;
} }
//! Settings: Install partitions
else if (ret == ++Idx)
{
switch(Settings.InstallPartitions)
{
case ONLY_GAME_PARTITION:
Settings.InstallPartitions = ALL_PARTITIONS;
break;
case ALL_PARTITIONS:
Settings.InstallPartitions = REMOVE_UPDATE_PARTITION;
break;
default:
case REMOVE_UPDATE_PARTITION:
Settings.InstallPartitions = ONLY_GAME_PARTITION;
break;
}
}
//! Settings: Return To //! Settings: Return To
else if (ret == ++Idx) else if (ret == ++Idx)
{ {
@ -450,37 +226,6 @@ int LoaderSettings::GetMenuInternal()
snprintf(Settings.returnTo, sizeof(Settings.returnTo), "%s", tidChar); snprintf(Settings.returnTo, sizeof(Settings.returnTo), "%s", tidChar);
} }
//! Settings: Messageboard Update
else if (ret == ++Idx )
{
if (++Settings.PlaylogUpdate >= MAX_ON_OFF) Settings.PlaylogUpdate = 0;
}
//! Settings: Sync FAT32 FS Info
else if (ret == ++Idx )
{
int choice = WindowPrompt(0, tr("Do you want to sync free space info sector on all FAT32 partitions?"), tr("Yes"), tr("Cancel"));
if(choice)
{
StartProgress(tr("Synchronizing..."), tr("Please wait..."), 0, false, false);
PartitionHandle * usb = DeviceHandler::Instance()->GetUSBHandle();
for(int i = 0; i < usb->GetPartitionCount(); ++i)
{
ShowProgress(i, usb->GetPartitionCount());
if(strncmp(usb->GetFSName(i), "FAT", 3) == 0)
{
struct statvfs stats;
char drive[20];
snprintf(drive, sizeof(drive), "%s:/", usb->MountName(i));
memset(&stats, 0, sizeof(stats));
memcpy(&stats.f_flag, "SCAN", 4);
statvfs(drive, &stats);
}
}
ProgressStop();
}
}
SetOptionValues(); SetOptionValues();
return MENU_NONE; return MENU_NONE;

View File

@ -30,16 +30,11 @@ class LoaderSettings : public SettingsMenu
{ {
public: public:
LoaderSettings(); LoaderSettings();
~LoaderSettings();
virtual int GetType() { return CLoaderSettings; }; virtual int GetType() { return CLoaderSettings; };
protected: protected:
void SetOptionValues(); void SetOptionValues();
int GetMenuInternal(); int GetMenuInternal();
int OldSettingsPartition;
int OldSettingsMultiplePartitions;
int NewSettingsUSBPort;
OptionList GuiOptions; OptionList GuiOptions;
}; };

View File

@ -59,14 +59,15 @@ ParentalControlSM::ParentalControlSM()
Options->SetName(Idx++, "%s", tr( "Block Global Settings" )); Options->SetName(Idx++, "%s", tr( "Block Global Settings" ));
Options->SetName(Idx++, "%s", tr( "Block Gui Settings" )); Options->SetName(Idx++, "%s", tr( "Block Gui Settings" ));
Options->SetName(Idx++, "%s", tr( "Block Loader Settings" )); Options->SetName(Idx++, "%s", tr( "Block Loader Settings" ));
Options->SetName(Idx++, "%s", tr( "Block Parental Settings" )); Options->SetName(Idx++, "%s", tr( "Block Hard Drive Settings" ));
Options->SetName(Idx++, "%s", tr( "Block Feature Settings" )); Options->SetName(Idx++, "%s", tr( "Block Feature Settings" ));
Options->SetName(Idx++, "%s", tr( "Block Parental Settings" ));
Options->SetName(Idx++, "%s", tr( "Block Sound Settings" )); Options->SetName(Idx++, "%s", tr( "Block Sound Settings" ));
Options->SetName(Idx++, "%s", tr( "Block Theme Downloader" ));
Options->SetName(Idx++, "%s", tr( "Block Theme Menu" ));
Options->SetName(Idx++, "%s", tr( "Block Custom Paths" )); Options->SetName(Idx++, "%s", tr( "Block Custom Paths" ));
Options->SetName(Idx++, "%s", tr( "Block Updates" )); Options->SetName(Idx++, "%s", tr( "Block Updates" ));
Options->SetName(Idx++, "%s", tr( "Block Reset Settings" )); Options->SetName(Idx++, "%s", tr( "Block Reset Settings" ));
Options->SetName(Idx++, "%s", tr( "Block Theme Downloader" ));
Options->SetName(Idx++, "%s", tr( "Block Theme Menu" ));
Options->SetName(Idx++, "%s", tr( "Block Game Settings" )); Options->SetName(Idx++, "%s", tr( "Block Game Settings" ));
Options->SetName(Idx++, "%s", tr( "Block HBC Menu" )); Options->SetName(Idx++, "%s", tr( "Block HBC Menu" ));
Options->SetName(Idx++, "%s", tr( "Block Title Launcher" )); Options->SetName(Idx++, "%s", tr( "Block Title Launcher" ));
@ -111,15 +112,24 @@ void ParentalControlSM::SetOptionValues()
//! Settings: Block Loader Settings //! Settings: Block Loader Settings
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_LOADER_SETTINGS) != 0)])); Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_LOADER_SETTINGS) != 0)]));
//! Settings: Block Parental Settings //! Settings: Block Hard Drive Settings
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_PARENTAL_SETTINGS) != 0)])); Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_HARD_DRIVE_SETTINGS) != 0)]));
//! Settings: Block Feature Settings //! Settings: Block Feature Settings
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_FEATURE_SETTINGS) != 0)])); Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_FEATURE_SETTINGS) != 0)]));
//! Settings: Block Parental Settings
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_PARENTAL_SETTINGS) != 0)]));
//! Settings: Block Sound Settings //! Settings: Block Sound Settings
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_SOUND_SETTINGS) != 0)])); Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_SOUND_SETTINGS) != 0)]));
//! Settings: Block Theme Downloader
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_THEME_DOWNLOADER) != 0)]));
//! Settings: Block Theme Menu
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_THEME_MENU) != 0)]));
//! Settings: Block Custom Paths //! Settings: Block Custom Paths
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_CUSTOMPATH_SETTINGS) != 0)])); Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_CUSTOMPATH_SETTINGS) != 0)]));
@ -129,12 +139,6 @@ void ParentalControlSM::SetOptionValues()
//! Settings: Block Reset Settings //! Settings: Block Reset Settings
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_RESET_SETTINGS) != 0)])); Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_RESET_SETTINGS) != 0)]));
//! Settings: Block Theme Downloader
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_THEME_DOWNLOADER) != 0)]));
//! Settings: Block Theme Menu
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_THEME_MENU) != 0)]));
//! Settings: Block Game Settings //! Settings: Block Game Settings
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_GAME_SETTINGS) != 0)])); Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_GAME_SETTINGS) != 0)]));
@ -240,10 +244,10 @@ int ParentalControlSM::GetMenuInternal()
Settings.ParentalBlocks ^= BLOCK_LOADER_SETTINGS; Settings.ParentalBlocks ^= BLOCK_LOADER_SETTINGS;
} }
//! Settings: Block Parental Settings //! Settings: Hard Drive Settings
else if (ret == ++Idx) else if (ret == ++Idx)
{ {
Settings.ParentalBlocks ^= BLOCK_PARENTAL_SETTINGS; Settings.ParentalBlocks ^= BLOCK_HARD_DRIVE_SETTINGS;
} }
//! Settings: Block Feature Settings //! Settings: Block Feature Settings
@ -252,12 +256,30 @@ int ParentalControlSM::GetMenuInternal()
Settings.ParentalBlocks ^= BLOCK_FEATURE_SETTINGS; Settings.ParentalBlocks ^= BLOCK_FEATURE_SETTINGS;
} }
//! Settings: Block Parental Settings
else if (ret == ++Idx)
{
Settings.ParentalBlocks ^= BLOCK_PARENTAL_SETTINGS;
}
//! Settings: Block Sound Settings //! Settings: Block Sound Settings
else if (ret == ++Idx) else if (ret == ++Idx)
{ {
Settings.ParentalBlocks ^= BLOCK_SOUND_SETTINGS; Settings.ParentalBlocks ^= BLOCK_SOUND_SETTINGS;
} }
//! Settings: Block Theme Downloader
else if (ret == ++Idx)
{
Settings.ParentalBlocks ^= BLOCK_THEME_DOWNLOADER;
}
//! Settings: Block Theme Menu
else if (ret == ++Idx)
{
Settings.ParentalBlocks ^= BLOCK_THEME_MENU;
}
//! Settings: Block Custom Paths //! Settings: Block Custom Paths
else if (ret == ++Idx) else if (ret == ++Idx)
{ {
@ -276,18 +298,6 @@ int ParentalControlSM::GetMenuInternal()
Settings.ParentalBlocks ^= BLOCK_RESET_SETTINGS; Settings.ParentalBlocks ^= BLOCK_RESET_SETTINGS;
} }
//! Settings: Block Theme Downloader
else if (ret == ++Idx)
{
Settings.ParentalBlocks ^= BLOCK_THEME_DOWNLOADER;
}
//! Settings: Block Theme Menu
else if (ret == ++Idx)
{
Settings.ParentalBlocks ^= BLOCK_THEME_MENU;
}
//! Settings: Block Game Settings //! Settings: Block Game Settings
else if (ret == ++Idx) else if (ret == ++Idx)
{ {

View File

@ -39,6 +39,7 @@ enum
CGameLoadSM, CGameLoadSM,
CUninstallSM, CUninstallSM,
CFeatureSettings, CFeatureSettings,
CHardDriveSM,
}; };
class SettingsMenu : public GuiWindow class SettingsMenu : public GuiWindow

View File

@ -113,6 +113,7 @@ s32 IosLoader::LoadGameCios(s32 ios)
WBFS_CloseAll(); WBFS_CloseAll();
WDVD_Close(); WDVD_Close();
DeviceHandler::DestroyInstance(); DeviceHandler::DestroyInstance();
USBStorage2_Deinit();
ret = ReloadIosSafe(ios); ret = ReloadIosSafe(ios);

View File

@ -32,7 +32,6 @@
u32 AppEntrypoint = 0; u32 AppEntrypoint = 0;
struct discHdr *dvdheader = NULL; struct discHdr *dvdheader = NULL;
extern u32 hdd_sector_size;
extern int mountMethod; extern int mountMethod;
int GameBooter::BootGCMode() int GameBooter::BootGCMode()
@ -126,8 +125,7 @@ int GameBooter::SetupDisc(u8 * gameID)
int ret = -1; int ret = -1;
if(((IosLoader::IsWaninkokoIOS() && IOS_GetRevision() < 18) || if(IosLoader::IsWaninkokoIOS() && IOS_GetRevision() < 18)
hdd_sector_size != 512) && gameList.GetGameFS(gameID) == PART_FS_WBFS)
{ {
gprintf("Disc_SetUSB..."); gprintf("Disc_SetUSB...");
ret = Disc_SetUSB(gameID); ret = Disc_SetUSB(gameID);
@ -185,6 +183,10 @@ int GameBooter::BootGame(const char * gameID)
if(ret < 0) if(ret < 0)
return ret; return ret;
//! Remember game's USB port
int partition = gameList.GetPartitionNumber(gameHeader.id);
int usbport = DeviceHandler::PartitionToUSBPort(partition);
//! Setup game configuration from game settings. If no game settings exist use global/default. //! Setup game configuration from game settings. If no game settings exist use global/default.
GameCFG * game_cfg = GameSettings.GetGameCFG(gameHeader.id); GameCFG * game_cfg = GameSettings.GetGameCFG(gameHeader.id);
u8 videoChoice = game_cfg->video == INHERIT ? Settings.videomode : game_cfg->video; u8 videoChoice = game_cfg->video == INHERIT ? Settings.videomode : game_cfg->video;
@ -270,20 +272,14 @@ int GameBooter::BootGame(const char * gameID)
//! Shadow mload - Only needed on some games with Hermes v5.1 (Check is inside the function) //! Shadow mload - Only needed on some games with Hermes v5.1 (Check is inside the function)
shadow_mload(); shadow_mload();
//! Remember game's USB port
int usbport = USBStorage2_GetPort();
gprintf("Shutting down devices...\n"); gprintf("Shutting down devices...\n");
//! Flush all caches and close up all devices //! Flush all caches and close up all devices
WBFS_CloseAll(); WBFS_CloseAll();
DeviceHandler::DestroyInstance(); DeviceHandler::DestroyInstance();
if(Settings.USBPort == 2) if(Settings.USBPort == 2)
{
//! Reset USB port because device handler changes it for cache flushing //! Reset USB port because device handler changes it for cache flushing
USBStorage2_Init();
USBStorage2_SetPort(usbport); USBStorage2_SetPort(usbport);
USBStorage2_Deinit(); USBStorage2_Deinit();
}
USB_Deinitialize(); USB_Deinitialize();
//! Modify Wii Message Board to display the game starting here //! Modify Wii Message Board to display the game starting here

View File

@ -167,10 +167,10 @@ int GameList::ReadGameList()
} }
else else
{ {
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandle();
int cnt = 0; int cnt = 0;
int partitions = DeviceHandler::GetUSBPartitionCount();
for(int part = 0; part < usbHandle->GetPartitionTotalCount(); ++part) for(int part = 0; part < partitions; ++part)
{ {
int ret = InternalReadList(part); int ret = InternalReadList(part);
if(ret > 0) cnt += ret; if(ret > 0) cnt += ret;

View File

@ -14,11 +14,12 @@
static int FindGamePartition() static int FindGamePartition()
{ {
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandle(); int partCount = DeviceHandler::GetUSBPartitionCount();
// Loop through all WBFS partitions first to check them in case IOS249 Rev < 18 // Loop through all WBFS partitions first to check them in case IOS249 Rev < 18
for(int i = 0; i < usbHandle->GetPartitionCount(); ++i) for(int i = 0; i < partCount; ++i)
{ {
if(strncmp(usbHandle->GetFSName(i), "WBFS", 4) != 0) if(DeviceHandler::GetUSBFilesystemType(i) != PART_FS_WBFS)
continue; continue;
if (WBFS_OpenPart(i) == 0) if (WBFS_OpenPart(i) == 0)
@ -33,11 +34,11 @@ static int FindGamePartition()
return -1; return -1;
// Loop through FAT/NTFS/EXT partitions, and find the first partition with games on it (if there is one) // Loop through FAT/NTFS/EXT partitions, and find the first partition with games on it (if there is one)
for(int i = 0; i < usbHandle->GetPartitionCount(); ++i) for(int i = 0; i < partCount; ++i)
{ {
if(strncmp(usbHandle->GetFSName(i), "NTFS", 4) != 0 && if(DeviceHandler::GetUSBFilesystemType(i) != PART_FS_NTFS &&
strncmp(usbHandle->GetFSName(i), "FAT", 3) != 0 && DeviceHandler::GetUSBFilesystemType(i) != PART_FS_FAT &&
strncmp(usbHandle->GetFSName(i), "LINUX", 5) != 0) DeviceHandler::GetUSBFilesystemType(i) != PART_FS_EXT)
{ {
continue; continue;
} }
@ -64,7 +65,6 @@ static int FindGamePartition()
static int PartitionChoice() static int PartitionChoice()
{ {
int ret = -1; int ret = -1;
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandle();
int choice = WindowPrompt(tr( "No WBFS or FAT/NTFS/EXT partition found" ), int choice = WindowPrompt(tr( "No WBFS or FAT/NTFS/EXT partition found" ),
tr( "You need to select or format a partition" ), tr( "Select" ), tr( "Format" ), tr( "Return" )); tr( "You need to select or format a partition" ), tr( "Select" ), tr( "Format" ), tr( "Return" ));
@ -79,9 +79,9 @@ static int PartitionChoice()
if(part_num >= 0) if(part_num >= 0)
{ {
if(IosLoader::IsWaninkokoIOS() && NandTitles.VersionOf(TITLE_ID(1, IOS_GetVersion())) < 18 && if(IosLoader::IsWaninkokoIOS() && NandTitles.VersionOf(TITLE_ID(1, IOS_GetVersion())) < 18 &&
(strncmp(usbHandle->GetFSName(part_num), "NTFS", 4) == 0 || (DeviceHandler::GetUSBFilesystemType(part_num) == PART_FS_NTFS ||
strncmp(usbHandle->GetFSName(part_num), "FAT", 3) == 0 || DeviceHandler::GetUSBFilesystemType(part_num) == PART_FS_FAT ||
strncmp(usbHandle->GetFSName(part_num), "LINUX", 5) == 0)) DeviceHandler::GetUSBFilesystemType(part_num) == PART_FS_EXT))
{ {
WindowPrompt(tr("Warning:"), tr("You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."), tr("OK")); WindowPrompt(tr("Warning:"), tr("You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."), tr("OK"));
} }

View File

@ -161,7 +161,7 @@ int frag_remap(FragList *ff, FragList *log, FragList *phy)
return 0; return 0;
} }
int get_frag_list_for_file(char *fname, u8 *id, const u8 wbfs_part_fs, const u32 lba_offset) int get_frag_list_for_file(char *fname, u8 *id, const u8 wbfs_part_fs, const u32 lba_offset, const u32 hdd_sector_size)
{ {
struct stat st; struct stat st;
FragList *fs = NULL; FragList *fs = NULL;
@ -220,7 +220,7 @@ int get_frag_list_for_file(char *fname, u8 *id, const u8 wbfs_part_fs, const u32
// if wbfs file format, remap. // if wbfs file format, remap.
wbfs_disc_t *d = WBFS_OpenDisc(id); wbfs_disc_t *d = WBFS_OpenDisc(id);
if (!d) { ret_val = -4; WBFS_CloseDisc(d); goto out; } if (!d) { ret_val = -4; WBFS_CloseDisc(d); goto out; }
ret = wbfs_get_fragments(d, &frag_append, fs); ret = wbfs_get_fragments(d, &frag_append, fs, hdd_sector_size);
WBFS_CloseDisc(d); WBFS_CloseDisc(d);
if (ret) { ret_val = -5; goto out; } if (ret) { ret_val = -5; goto out; }
} }
@ -234,7 +234,7 @@ int get_frag_list_for_file(char *fname, u8 *id, const u8 wbfs_part_fs, const u32
wbfs_disc_t *d = WBFS_OpenDisc(id); wbfs_disc_t *d = WBFS_OpenDisc(id);
if (!d) { ret_val = -4; goto out; } if (!d) { ret_val = -4; goto out; }
frag_init(fw, MAX_FRAG); frag_init(fw, MAX_FRAG);
ret = wbfs_get_fragments(d, &frag_append, fw); ret = wbfs_get_fragments(d, &frag_append, fw, hdd_sector_size);
if (ret) { ret_val = -5; goto out; } if (ret) { ret_val = -5; goto out; }
WBFS_CloseDisc(d); WBFS_CloseDisc(d);
// DEBUG: frag_list->num = MAX_FRAG-10; // stress test // DEBUG: frag_list->num = MAX_FRAG-10; // stress test

View File

@ -39,7 +39,7 @@ int frag_get(FragList *ff, u32 offset, u32 count, u32 *poffset, u32 *psector, u3
int frag_remap(FragList *ff, FragList *log, FragList *phy); int frag_remap(FragList *ff, FragList *log, FragList *phy);
int get_frag_list_for_file(char *fname, u8 *id, const u8 wbfs_part_fs, const u32 lba_offset); int get_frag_list_for_file(char *fname, u8 *id, const u8 wbfs_part_fs, const u32 lba_offset, const u32 hdd_sector_size);
int get_frag_list(u8 *id); int get_frag_list(u8 *id);
int set_frag_list(u8 *id); int set_frag_list(u8 *id);

View File

@ -59,8 +59,9 @@
#define isMEM2Buffer(p) (((u32) p & 0x10000000) != 0) #define isMEM2Buffer(p) (((u32) p & 0x10000000) != 0)
#define MAX_BUFFER_SECTORS 256 #define MAX_SECTOR_SIZE 4096
#define UMS_HEAPSIZE 0x8000 #define MAX_BUFFER_SECTORS 128
#define UMS_HEAPSIZE 2*1024
/* Variables */ /* Variables */
static char fs[] ATTRIBUTE_ALIGN(32) = "/dev/usb2"; static char fs[] ATTRIBUTE_ALIGN(32) = "/dev/usb2";
@ -69,15 +70,14 @@ static char fs3[] ATTRIBUTE_ALIGN(32) = "/dev/usb/ehc";
static u8 * mem2_ptr = NULL; static u8 * mem2_ptr = NULL;
static s32 hid = -1, fd = -1; static s32 hid = -1, fd = -1;
static u32 usb2_port = 0; //autodetect mode (works only with hermes ios & rodries ehcmodule) static u32 usb2_port = -1; //current USB port
u32 hdd_sector_size = 512; bool hddInUse[2] = { false, false };
u32 hdd_sector_size[2] = { 512, 512 };
s32 USBStorage2_Init(void) s32 USBStorage2_Init(u32 port)
{ {
s32 ret; if(hddInUse[port])
return 0;
/* Already open */
if (fd >= 0) return 0;
/* Create heap */ /* Create heap */
if (hid < 0) if (hid < 0)
@ -87,46 +87,33 @@ s32 USBStorage2_Init(void)
} }
/* Open USB device */ /* Open USB device */
fd = IOS_Open(fs, 0); if (fd < 0) fd = IOS_Open(fs, 0);
if (fd < 0) fd = IOS_Open(fs2, 0); if (fd < 0) fd = IOS_Open(fs2, 0);
if (fd < 0) fd = IOS_Open(fs3, 0); if (fd < 0) fd = IOS_Open(fs3, 0);
if (fd < 0) return fd; if (fd < 0) return fd;
IOS_IoctlvFormat(hid, fd, USB_IOCTL_SET_PORT, "i:", usb2_port); USBStorage2_SetPort(port);
/* Initialize USB storage */ /* Initialize USB storage */
ret = IOS_IoctlvFormat(hid, fd, USB_IOCTL_UMS_INIT, ":"); IOS_IoctlvFormat(hid, fd, USB_IOCTL_UMS_INIT, ":");
/* Get device capacity */ /* Get device capacity */
if (USBStorage2_GetCapacity(&hdd_sector_size) == 0) if (USBStorage2_GetCapacity(port, &hdd_sector_size[port]) == 0)
{ return IPC_ENOENT;
ret = IPC_ENOENT;
goto err; hddInUse[port] = true;
}
return 0; // 0->HDD, 1->DVD return 0; // 0->HDD, 1->DVD
err:
/* Close USB device */
if (fd >= 0)
{
IOS_Close(fd);
fd = -1;
}
return ret;
} }
void USBStorage2_Deinit(void) void USBStorage2_Deinit()
{ {
/* Close USB device */ /* Close USB device */
if (fd >= 0) if (fd >= 0)
{ {
IOS_Close(fd); IOS_Close(fd); // not sure to close the fd is needed
fd = -1; fd = -1;
} }
hdd_sector_size = 512;
} }
s32 USBStorage2_SetPort(u32 port) s32 USBStorage2_SetPort(u32 port)
@ -154,13 +141,17 @@ s32 USBStorage2_GetPort()
return usb2_port; return usb2_port;
} }
s32 USBStorage2_Watchdog(u32 on_off) s32 USBStorage2_GetCapacity(u32 port, u32 *_sector_size)
{ {
if (fd >= 0) if (fd >= 0)
{ {
s32 ret; s32 ret;
u32 sector_size = 0;
USBStorage2_SetPort(port);
ret = IOS_IoctlvFormat(hid, fd, USB_IOCTL_UMS_WATCHDOG, "i:", on_off); ret = IOS_IoctlvFormat(hid, fd, USB_IOCTL_UMS_GET_CAPACITY, ":i", &sector_size);
if (ret && _sector_size) *_sector_size = sector_size;
return ret; return ret;
} }
@ -168,23 +159,7 @@ s32 USBStorage2_Watchdog(u32 on_off)
return IPC_ENOENT; return IPC_ENOENT;
} }
s32 USBStorage2_GetCapacity(u32 *_sector_size) s32 USBStorage2_ReadSectors(u32 port, u32 sector, u32 numSectors, void *buffer)
{
if (fd >= 0)
{
s32 ret;
ret = IOS_IoctlvFormat(hid, fd, USB_IOCTL_UMS_GET_CAPACITY, ":i", &hdd_sector_size);
if (ret && _sector_size) *_sector_size = hdd_sector_size;
return ret;
}
return IPC_ENOENT;
}
s32 USBStorage2_ReadSectors(u32 sector, u32 numSectors, void *buffer)
{ {
u8 *buf = (u8 *) buffer; u8 *buf = (u8 *) buffer;
s32 ret = -1; s32 ret = -1;
@ -193,14 +168,16 @@ s32 USBStorage2_ReadSectors(u32 sector, u32 numSectors, void *buffer)
if (fd < 0) return fd; if (fd < 0) return fd;
if (!mem2_ptr) if (!mem2_ptr)
mem2_ptr = (u8 *) MEM2_alloc(hdd_sector_size * MAX_BUFFER_SECTORS); mem2_ptr = (u8 *) MEM2_alloc(MAX_SECTOR_SIZE * MAX_BUFFER_SECTORS);
USBStorage2_SetPort(port);
s32 read_secs, read_size; s32 read_secs, read_size;
while(numSectors > 0) while(numSectors > 0)
{ {
read_secs = numSectors > MAX_BUFFER_SECTORS ? MAX_BUFFER_SECTORS : numSectors; read_secs = numSectors > MAX_BUFFER_SECTORS ? MAX_BUFFER_SECTORS : numSectors;
read_size = read_secs*hdd_sector_size; read_size = read_secs*hdd_sector_size[port];
// Do not read more than MAX_BUFFER_SECTORS sectors at once and create a mem overflow! // Do not read more than MAX_BUFFER_SECTORS sectors at once and create a mem overflow!
if (!isMEM2Buffer(buffer)) if (!isMEM2Buffer(buffer))
@ -227,7 +204,7 @@ s32 USBStorage2_ReadSectors(u32 sector, u32 numSectors, void *buffer)
return ret; return ret;
} }
s32 USBStorage2_WriteSectors(u32 sector, u32 numSectors, const void *buffer) s32 USBStorage2_WriteSectors(u32 port, u32 sector, u32 numSectors, const void *buffer)
{ {
u8 *buf = (u8 *) buffer; u8 *buf = (u8 *) buffer;
s32 ret = -1; s32 ret = -1;
@ -237,14 +214,16 @@ s32 USBStorage2_WriteSectors(u32 sector, u32 numSectors, const void *buffer)
/* Device not opened */ /* Device not opened */
if (!mem2_ptr) if (!mem2_ptr)
mem2_ptr = (u8 *) MEM2_alloc(hdd_sector_size * MAX_BUFFER_SECTORS); mem2_ptr = (u8 *) MEM2_alloc(MAX_SECTOR_SIZE * MAX_BUFFER_SECTORS);
USBStorage2_SetPort(port);
s32 write_size, write_secs; s32 write_size, write_secs;
while(numSectors > 0) while(numSectors > 0)
{ {
write_secs = numSectors > MAX_BUFFER_SECTORS ? MAX_BUFFER_SECTORS : numSectors; write_secs = numSectors > MAX_BUFFER_SECTORS ? MAX_BUFFER_SECTORS : numSectors;
write_size = write_secs*hdd_sector_size; write_size = write_secs*hdd_sector_size[port];
/* MEM1 buffer */ /* MEM1 buffer */
if (!isMEM2Buffer(buffer)) if (!isMEM2Buffer(buffer))
@ -274,22 +253,22 @@ s32 USBStorage2_WriteSectors(u32 sector, u32 numSectors, const void *buffer)
static bool __usbstorage_Startup(void) static bool __usbstorage_Startup(void)
{ {
return USBStorage2_Init() >= 0; return USBStorage2_Init(0) >= 0;
} }
static bool __usbstorage_IsInserted(void) static bool __usbstorage_IsInserted(void)
{ {
return (USBStorage2_GetCapacity(NULL) != 0); return (USBStorage2_GetCapacity(0, NULL) != 0);
} }
static bool __usbstorage_ReadSectors(u32 sector, u32 numSectors, void *buffer) static bool __usbstorage_ReadSectors(u32 sector, u32 numSectors, void *buffer)
{ {
return (USBStorage2_ReadSectors(sector, numSectors, buffer) >= 0); return (USBStorage2_ReadSectors(0, sector, numSectors, buffer) >= 0);
} }
static bool __usbstorage_WriteSectors(u32 sector, u32 numSectors, const void *buffer) static bool __usbstorage_WriteSectors(u32 sector, u32 numSectors, const void *buffer)
{ {
return (USBStorage2_WriteSectors(sector, numSectors, buffer) >= 0); return (USBStorage2_WriteSectors(0, sector, numSectors, buffer) >= 0);
} }
static bool __usbstorage_ClearStatus(void) static bool __usbstorage_ClearStatus(void)
@ -299,11 +278,12 @@ static bool __usbstorage_ClearStatus(void)
static bool __usbstorage_Shutdown(void) static bool __usbstorage_Shutdown(void)
{ {
USBStorage2_Deinit(); hddInUse[0] = false;
hdd_sector_size[0] = 512;
return true; return true;
} }
const DISC_INTERFACE __io_usbstorage2 = { const DISC_INTERFACE __io_usbstorage2_port0 = {
DEVICE_TYPE_WII_UMS, FEATURE_MEDIUM_CANREAD | FEATURE_MEDIUM_CANWRITE | FEATURE_WII_USB, DEVICE_TYPE_WII_UMS, FEATURE_MEDIUM_CANREAD | FEATURE_MEDIUM_CANWRITE | FEATURE_WII_USB,
(FN_MEDIUM_STARTUP) &__usbstorage_Startup, (FN_MEDIUM_STARTUP) &__usbstorage_Startup,
(FN_MEDIUM_ISINSERTED) &__usbstorage_IsInserted, (FN_MEDIUM_ISINSERTED) &__usbstorage_IsInserted,
@ -312,3 +292,40 @@ const DISC_INTERFACE __io_usbstorage2 = {
(FN_MEDIUM_CLEARSTATUS) &__usbstorage_ClearStatus, (FN_MEDIUM_CLEARSTATUS) &__usbstorage_ClearStatus,
(FN_MEDIUM_SHUTDOWN) &__usbstorage_Shutdown (FN_MEDIUM_SHUTDOWN) &__usbstorage_Shutdown
}; };
static bool __usbstorage_Startup2(void)
{
return USBStorage2_Init(1) >= 0;
}
static bool __usbstorage_IsInserted2(void)
{
return (USBStorage2_GetCapacity(1, NULL) != 0);
}
static bool __usbstorage_ReadSectors2(u32 sector, u32 numSectors, void *buffer)
{
return (USBStorage2_ReadSectors(1, sector, numSectors, buffer) >= 0);
}
static bool __usbstorage_WriteSectors2(u32 sector, u32 numSectors, const void *buffer)
{
return (USBStorage2_WriteSectors(1, sector, numSectors, buffer) >= 0);
}
static bool __usbstorage_Shutdown2(void)
{
hddInUse[1] = false;
hdd_sector_size[1] = 512;
return true;
}
const DISC_INTERFACE __io_usbstorage2_port1 = {
DEVICE_TYPE_WII_UMS, FEATURE_MEDIUM_CANREAD | FEATURE_MEDIUM_CANWRITE | FEATURE_WII_USB,
(FN_MEDIUM_STARTUP) &__usbstorage_Startup2,
(FN_MEDIUM_ISINSERTED) &__usbstorage_IsInserted2,
(FN_MEDIUM_READSECTORS) &__usbstorage_ReadSectors2,
(FN_MEDIUM_WRITESECTORS) &__usbstorage_WriteSectors2,
(FN_MEDIUM_CLEARSTATUS) &__usbstorage_ClearStatus,
(FN_MEDIUM_SHUTDOWN) &__usbstorage_Shutdown2
};

View File

@ -9,22 +9,20 @@ extern "C"
#endif #endif
/* Prototypes */ /* Prototypes */
s32 USBStorage2_Init(void); s32 USBStorage2_Init(u32 port);
void USBStorage2_Deinit(void); void USBStorage2_Deinit();
s32 USBStorage2_Umount(void); s32 USBStorage2_GetCapacity(u32 port, u32 *size);
s32 USBStorage2_GetCapacity(u32 *);
s32 USBStorage2_ReadSectors(u32, u32, void *); s32 USBStorage2_ReadSectors(u32 port, u32 sector, u32 numSectors, void *buffer);
s32 USBStorage2_WriteSectors(u32, u32, const void *); s32 USBStorage2_WriteSectors(u32 port, u32 sector, u32 numSectors, const void *buffer);
s32 USBStorage2_Watchdog(u32 on_off);
s32 USBStorage2_SetPort(u32 port); s32 USBStorage2_SetPort(u32 port);
s32 USBStorage2_GetPort(); s32 USBStorage2_GetPort();
#define DEVICE_TYPE_WII_UMS (('W'<<24)|('U'<<16)|('M'<<8)|'S') #define DEVICE_TYPE_WII_UMS (('W'<<24)|('U'<<16)|('M'<<8)|'S')
extern const DISC_INTERFACE __io_usbstorage2; extern const DISC_INTERFACE __io_usbstorage2_port0;
extern const DISC_INTERFACE __io_usbstorage2_port1;
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -28,8 +28,6 @@ wbfs_disc_t* WBFS_OpenDisc(u8 *discid)
if(!VALID(part)) if(!VALID(part))
return NULL; return NULL;
DeviceHandler::SetUSBPortFromPartition(part);
return WbfsList[part]->OpenDisc(discid); return WbfsList[part]->OpenDisc(discid);
} }
@ -42,8 +40,6 @@ void WBFS_CloseDisc(wbfs_disc_t *disc)
if(!VALID(part_num)) if(!VALID(part_num))
return; return;
DeviceHandler::SetUSBPortFromPartition(part_num);
WbfsList[part_num]->CloseDisc(disc); WbfsList[part_num]->CloseDisc(disc);
} }
@ -55,10 +51,9 @@ s32 WBFS_Init(u32 device)
s32 WBFS_OpenAll() s32 WBFS_OpenAll()
{ {
int ret = -1; int ret = -1;
int partCount = DeviceHandler::GetUSBPartitionCount();
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandle(); for(int i = 0; i < partCount; ++i)
for(int i = 0; i < usbHandle->GetPartitionTotalCount(); ++i)
{ {
if(WBFS_OpenPart(i) == 0) if(WBFS_OpenPart(i) == 0)
ret = 0; ret = 0;
@ -69,14 +64,9 @@ s32 WBFS_OpenAll()
s32 WBFS_OpenPart(int part_num) s32 WBFS_OpenPart(int part_num)
{ {
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandle(); PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandleFromPartition(part_num);
if(part_num < 0 || part_num >= usbHandle->GetPartitionTotalCount()) if(!usbHandle || part_num < 0 || part_num >= DeviceHandler::GetUSBPartitionCount())
return -1; return -1;
//! No need to switch ports on other partitions than WBFS
//! the open() function does not actually read from drive there.
if(strncmp(usbHandle->GetFSName(part_num), "WBFS", 4) == 0)
DeviceHandler::SetUSBPortFromPartition(part_num);
// close // close
WBFS_Close(part_num); WBFS_Close(part_num);
@ -84,23 +74,26 @@ s32 WBFS_OpenPart(int part_num)
if(part_num >= (int) WbfsList.size()) if(part_num >= (int) WbfsList.size())
WbfsList.resize(part_num+1); WbfsList.resize(part_num+1);
gprintf("\tWBFS_OpenPart: filesystem: %s, start sector %u, sector count: %u\n", usbHandle->GetFSName(part_num), usbHandle->GetLBAStart(part_num), usbHandle->GetSecCount(part_num)); int portPart = DeviceHandler::PartitionToPortPartition(part_num);
int usbPort = DeviceHandler::PartitionToUSBPort(part_num);
if (strncmp(usbHandle->GetFSName(part_num), "FAT", 3) == 0) gprintf("\tWBFS_OpenPart: filesystem: %s, start sector %u, sector count: %u\n", usbHandle->GetFSName(portPart), usbHandle->GetLBAStart(portPart), usbHandle->GetSecCount(portPart));
if (strncmp(usbHandle->GetFSName(portPart), "FAT", 3) == 0)
{ {
WbfsList[part_num] = new Wbfs_Fat(usbHandle->GetLBAStart(part_num), usbHandle->GetSecCount(part_num), part_num); WbfsList[part_num] = new Wbfs_Fat(usbHandle->GetLBAStart(portPart), usbHandle->GetSecCount(portPart), part_num, usbPort);
} }
else if (strncmp(usbHandle->GetFSName(part_num), "NTFS", 4) == 0) else if (strncmp(usbHandle->GetFSName(portPart), "NTFS", 4) == 0)
{ {
WbfsList[part_num] = new Wbfs_Ntfs(usbHandle->GetLBAStart(part_num), usbHandle->GetSecCount(part_num), part_num); WbfsList[part_num] = new Wbfs_Ntfs(usbHandle->GetLBAStart(portPart), usbHandle->GetSecCount(portPart), part_num, usbPort);
} }
else if (strncmp(usbHandle->GetFSName(part_num), "LINUX", 5) == 0) else if (strncmp(usbHandle->GetFSName(portPart), "LINUX", 5) == 0)
{ {
WbfsList[part_num] = new Wbfs_Ext(usbHandle->GetLBAStart(part_num), usbHandle->GetSecCount(part_num), part_num); WbfsList[part_num] = new Wbfs_Ext(usbHandle->GetLBAStart(portPart), usbHandle->GetSecCount(portPart), part_num, usbPort);
} }
else if (strncmp(usbHandle->GetFSName(part_num), "WBFS", 4) == 0) else if (strncmp(usbHandle->GetFSName(portPart), "WBFS", 4) == 0)
{ {
WbfsList[part_num] = new Wbfs_Wbfs(usbHandle->GetLBAStart(part_num), usbHandle->GetSecCount(part_num), part_num); WbfsList[part_num] = new Wbfs_Wbfs(usbHandle->GetLBAStart(portPart), usbHandle->GetSecCount(portPart), part_num, usbPort);
} }
else else
{ {
@ -122,11 +115,6 @@ bool WBFS_Close(int part_num)
if(!VALID(part_num)) if(!VALID(part_num))
return false; return false;
//! No need to switch ports on other partitions than WBFS
//! the close() function does not actually write to drive there.
if(WbfsList[part_num]->GetFSType() == PART_FS_WBFS)
DeviceHandler::SetUSBPortFromPartition(part_num);
delete WbfsList[part_num]; delete WbfsList[part_num];
WbfsList[part_num] = NULL; WbfsList[part_num] = NULL;
@ -143,9 +131,9 @@ void WBFS_CloseAll()
WBFS_Close(i); WBFS_Close(i);
} }
s32 WBFS_Format(u32 lba, u32 size) s32 WBFS_Format(u32 lba, u32 size, u32 port)
{ {
Wbfs_Wbfs Part(WBFS_MIN_DEVICE, lba, size); Wbfs_Wbfs Part(WBFS_MIN_DEVICE, lba, size, port);
return Part.Format(); return Part.Format();
} }
@ -155,7 +143,6 @@ s32 WBFS_GetCount(int part_num, u32 *count)
if(!VALID(part_num)) if(!VALID(part_num))
return -1; return -1;
DeviceHandler::SetUSBPortFromPartition(part_num);
int ret = WbfsList[part_num]->GetCount(count); int ret = WbfsList[part_num]->GetCount(count);
return ret; return ret;
@ -166,8 +153,6 @@ s32 WBFS_GetHeaders(int part_num, struct discHdr *outbuf, u32 cnt, u32 len)
if(!VALID(part_num)) if(!VALID(part_num))
return -1; return -1;
DeviceHandler::SetUSBPortFromPartition(part_num);
return WbfsList[part_num]->GetHeaders(outbuf, cnt, len); return WbfsList[part_num]->GetHeaders(outbuf, cnt, len);
} }
@ -177,8 +162,6 @@ s32 WBFS_CheckGame(u8 *discid)
if(!VALID(part_num)) if(!VALID(part_num))
return 0; return 0;
DeviceHandler::SetUSBPortFromPartition(part_num);
return WbfsList[part_num]->CheckGame(discid); return WbfsList[part_num]->CheckGame(discid);
} }
@ -187,8 +170,6 @@ s32 WBFS_AddGame(void)
if(!VALID(Settings.partition)) if(!VALID(Settings.partition))
return -1; return -1;
DeviceHandler::SetUSBPortFromPartition(Settings.partition);
return WbfsList[Settings.partition]->AddGame(); return WbfsList[Settings.partition]->AddGame();
} }
@ -198,8 +179,6 @@ s32 WBFS_RemoveGame(u8 *discid)
if(!VALID(part_num)) if(!VALID(part_num))
return -1; return -1;
DeviceHandler::SetUSBPortFromPartition(part_num);
return WbfsList[part_num]->RemoveGame(discid); return WbfsList[part_num]->RemoveGame(discid);
} }
@ -209,8 +188,6 @@ s32 WBFS_GameSize(u8 *discid, f32 *size)
if(!VALID(part_num)) if(!VALID(part_num))
return -1; return -1;
DeviceHandler::SetUSBPortFromPartition(part_num);
return WbfsList[part_num]->GameSize(discid, size); return WbfsList[part_num]->GameSize(discid, size);
} }
@ -219,8 +196,6 @@ s32 WBFS_DiskSpace(f32 *used, f32 *free)
if(!VALID(Settings.partition)) if(!VALID(Settings.partition))
return -1; return -1;
DeviceHandler::SetUSBPortFromPartition(Settings.partition);
return WbfsList[Settings.partition]->DiskSpace(used, free); return WbfsList[Settings.partition]->DiskSpace(used, free);
} }
@ -230,8 +205,6 @@ s32 WBFS_RenameGame(u8 *discid, const void *newname)
if(!VALID(part_num)) if(!VALID(part_num))
return -1; return -1;
DeviceHandler::SetUSBPortFromPartition(part_num);
return WbfsList[part_num]->RenameGame(discid, newname); return WbfsList[part_num]->RenameGame(discid, newname);
} }
@ -241,8 +214,6 @@ s32 WBFS_ReIDGame(u8 *discid, const void *newID)
if(!VALID(part_num)) if(!VALID(part_num))
return -1; return -1;
DeviceHandler::SetUSBPortFromPartition(part_num);
return WbfsList[part_num]->ReIDGame(discid, newID); return WbfsList[part_num]->ReIDGame(discid, newID);
} }
@ -251,8 +222,6 @@ u64 WBFS_EstimeGameSize(void)
if(!VALID(Settings.partition)) if(!VALID(Settings.partition))
return 0; return 0;
DeviceHandler::SetUSBPortFromPartition(Settings.partition);
return WbfsList[Settings.partition]->EstimateGameSize(); return WbfsList[Settings.partition]->EstimateGameSize();
} }
@ -262,8 +231,6 @@ int WBFS_GetFragList(u8 *id)
if(!VALID(part_num)) if(!VALID(part_num))
return -1; return -1;
DeviceHandler::SetUSBPortFromPartition(part_num);
return WbfsList[part_num]->GetFragList(id); return WbfsList[part_num]->GetFragList(id);
} }

View File

@ -20,7 +20,7 @@ extern "C"
/* Prototypes */ /* Prototypes */
s32 WBFS_Init(u32 device); s32 WBFS_Init(u32 device);
s32 WBFS_Format(u32 lba, u32 size); s32 WBFS_Format(u32 lba, u32 size, u32 port);
s32 WBFS_GetCount(int part, u32 *count); s32 WBFS_GetCount(int part, u32 *count);
s32 WBFS_GetHeaders(int part, struct discHdr *, u32, u32); s32 WBFS_GetHeaders(int part, struct discHdr *, u32, u32);
s32 WBFS_CheckGame(u8 *gameid); s32 WBFS_CheckGame(u8 *gameid);

View File

@ -12,24 +12,22 @@
#include "wbfs_base.h" #include "wbfs_base.h"
Wbfs::Wbfs(u32 l, u32 s, u32 part) Wbfs::Wbfs(u32 l, u32 s, u32 part, u32 port)
: hdd(NULL), lba(l), size(s), partition(part) : hdd(NULL), lba(l), size(s), partition(part), usbport(port)
{ {
} }
s32 Wbfs::Init(u32 device) s32 Wbfs::Init(u32 device)
{ {
s32 ret; s32 ret;
const DISC_INTERFACE * handle = DeviceHandler::GetUSBInterface();
switch (WBFS_DEVICE_USB) switch (WBFS_DEVICE_USB)
{ {
case WBFS_DEVICE_USB: case WBFS_DEVICE_USB:
/* Initialize USB storage */ /* Initialize USB storage */
ret = handle->startup();
if (ret) if (DeviceHandler::GetUSBPartitionCount() > 0)
{ {
currentHandle = handle;
/* Setup callbacks */ /* Setup callbacks */
readCallback = __ReadUSB; readCallback = __ReadUSB;
writeCallback = __WriteUSB; writeCallback = __WriteUSB;

View File

@ -12,7 +12,7 @@
class Wbfs class Wbfs
{ {
public: public:
Wbfs(u32 lba, u32 size, u32 part); Wbfs(u32 lba, u32 size, u32 part, u32 usbport);
~Wbfs() { Close(); }; ~Wbfs() { Close(); };
static s32 Init(u32); static s32 Init(u32);
s32 CheckGame(u8 *); s32 CheckGame(u8 *);
@ -40,6 +40,7 @@ class Wbfs
const u32 lba; const u32 lba;
const u32 size; const u32 size;
const u32 partition; const u32 partition;
const u32 usbport;
}; };
#endif //_H #endif //_H

View File

@ -6,8 +6,8 @@
class Wbfs_Ext: public Wbfs_Fat class Wbfs_Ext: public Wbfs_Fat
{ {
public: public:
Wbfs_Ext(u32 lba, u32 size, u32 part) : Wbfs_Ext(u32 lba, u32 size, u32 part, u32 port) :
Wbfs_Fat(lba, size, part) Wbfs_Fat(lba, size, part, port)
{ {
} }
virtual u8 GetFSType(void) { return PART_FS_EXT; } virtual u8 GetFSType(void) { return PART_FS_EXT; }

View File

@ -36,10 +36,10 @@ using namespace std;
static const char wbfs_fat_dir[] = "/wbfs"; static const char wbfs_fat_dir[] = "/wbfs";
static const char invalid_path[] = "/\\:|<>?*\"'"; static const char invalid_path[] = "/\\:|<>?*\"'";
extern u32 hdd_sector_size; extern u32 hdd_sector_size[2];
Wbfs_Fat::Wbfs_Fat(u32 lba, u32 size, u32 part) : Wbfs_Fat::Wbfs_Fat(u32 lba, u32 size, u32 part, u32 port) :
Wbfs(lba, size, part), fat_hdr_list(NULL), fat_hdr_count(0) Wbfs(lba, size, part, port), fat_hdr_list(NULL), fat_hdr_count(0)
{ {
memset(wbfs_fs_drive, 0, sizeof(wbfs_fs_drive)); memset(wbfs_fs_drive, 0, sizeof(wbfs_fs_drive));
} }
@ -48,13 +48,13 @@ s32 Wbfs_Fat::Open()
{ {
Close(); Close();
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandle(); if(partition < (u32) DeviceHandler::GetUSBPartitionCount())
if(partition < (u32) usbHandle->GetPartitionTotalCount())
{ {
if (lba == usbHandle->GetLBAStart(partition)) PartitionHandle *usbHandle = DeviceHandler::Instance()->GetUSBHandleFromPartition(partition);
int portPart = DeviceHandler::PartitionToPortPartition(partition);
if (lba == usbHandle->GetLBAStart(portPart))
{ {
sprintf(wbfs_fs_drive, "%s:", usbHandle->MountName(partition)); sprintf(wbfs_fs_drive, "%s:", usbHandle->MountName(portPart));
return 0; return 0;
} }
} }
@ -90,7 +90,7 @@ wbfs_disc_t* Wbfs_Fat::OpenDisc(u8 *discid)
wbfs_disc_t *iso_file = (wbfs_disc_t *) calloc(sizeof(wbfs_disc_t), 1); wbfs_disc_t *iso_file = (wbfs_disc_t *) calloc(sizeof(wbfs_disc_t), 1);
if (iso_file == NULL) return NULL; if (iso_file == NULL) return NULL;
// mark with a special wbfs_part // mark with a special wbfs_part
wbfs_iso_file.wbfs_sec_sz = 512; wbfs_iso_file.wbfs_sec_sz = hdd_sector_size[usbport];
iso_file->p = &wbfs_iso_file; iso_file->p = &wbfs_iso_file;
iso_file->header = (wbfs_disc_info_t*) malloc(sizeof(wbfs_disc_info_t)); iso_file->header = (wbfs_disc_info_t*) malloc(sizeof(wbfs_disc_info_t));
if(!iso_file->header) if(!iso_file->header)
@ -307,14 +307,14 @@ u64 Wbfs_Fat::EstimateGameSize()
{ {
wbfs_t *part = NULL; wbfs_t *part = NULL;
u64 size = (u64) 143432 * 2 * 0x8000ULL; u64 size = (u64) 143432 * 2 * 0x8000ULL;
u32 n_sector = size / hdd_sector_size; u32 n_sector = size / hdd_sector_size[usbport];
u32 wii_sec_sz;
// init a temporary dummy part // init a temporary dummy part
// as a placeholder for wbfs_size_disc // as a placeholder for wbfs_size_disc
part = wbfs_open_partition(nop_rw_sector, nop_rw_sector, NULL, hdd_sector_size, n_sector, 0, 1); wbfs_set_force_mode(1);
part = wbfs_open_partition(nop_rw_sector, nop_rw_sector, NULL, hdd_sector_size[usbport], n_sector, 0, 1);
wbfs_set_force_mode(0);
if (!part) return -1; if (!part) return -1;
wii_sec_sz = part->wii_sec_sz;
partition_selector_t part_sel = (partition_selector_t) Settings.InstallPartitions; partition_selector_t part_sel = (partition_selector_t) Settings.InstallPartitions;
@ -649,12 +649,17 @@ wbfs_t* Wbfs_Fat::OpenPart(char *fname)
// wbfs 'partition' file // wbfs 'partition' file
ret = split_open(&split, fname); ret = split_open(&split, fname);
if (ret) return NULL; if (ret) return NULL;
wbfs_set_force_mode(1);
part = wbfs_open_partition(split_read_sector, nop_rw_sector, //readonly //split_write_sector, part = wbfs_open_partition(split_read_sector, nop_rw_sector, //readonly //split_write_sector,
&split, hdd_sector_size, split.total_sec, 0, 0); &split, hdd_sector_size[usbport], split.total_sec, 0, 0);
wbfs_set_force_mode(0);
if (!part) if (!part)
{
split_close(&split); split_close(&split);
}
return part; return part;
} }
@ -732,11 +737,15 @@ wbfs_t* Wbfs_Fat::CreatePart(u8 *id, char *path)
return NULL; return NULL;
} }
part = wbfs_open_partition(split_read_sector, split_write_sector, &split, hdd_sector_size, n_sector, 0, 1); wbfs_set_force_mode(1);
part = wbfs_open_partition(split_read_sector, split_write_sector, &split, hdd_sector_size[usbport], n_sector, 0, 1);
wbfs_set_force_mode(0);
if (!part) if (!part)
{
split_close(&split); split_close(&split);
}
return part; return part;
} }
@ -813,5 +822,5 @@ int Wbfs_Fat::GetFragList(u8 *id)
int ret = FindFilename(id, fname, sizeof(fname)); int ret = FindFilename(id, fname, sizeof(fname));
if (!ret) return -1; if (!ret) return -1;
return get_frag_list_for_file(fname, id, GetFSType(), lba); return get_frag_list_for_file(fname, id, GetFSType(), lba, hdd_sector_size[usbport]);
} }

View File

@ -10,7 +10,7 @@
class Wbfs_Fat: public Wbfs class Wbfs_Fat: public Wbfs
{ {
public: public:
Wbfs_Fat(u32 lba, u32 size, u32 part); Wbfs_Fat(u32 lba, u32 size, u32 part, u32 port);
virtual s32 Open(); virtual s32 Open();
virtual void Close(); virtual void Close();

View File

@ -6,8 +6,8 @@
class Wbfs_Ntfs: public Wbfs_Fat class Wbfs_Ntfs: public Wbfs_Fat
{ {
public: public:
Wbfs_Ntfs(u32 lba, u32 size, u32 part) : Wbfs_Ntfs(u32 lba, u32 size, u32 part, u32 port) :
Wbfs_Fat(lba, size, part) Wbfs_Fat(lba, size, part, port)
{ {
} }
virtual u8 GetFSType(void) { return PART_FS_NTFS; } virtual u8 GetFSType(void) { return PART_FS_NTFS; }

View File

@ -12,7 +12,6 @@
rw_sector_callback_t readCallback = NULL; rw_sector_callback_t readCallback = NULL;
rw_sector_callback_t writeCallback = NULL; rw_sector_callback_t writeCallback = NULL;
const DISC_INTERFACE * currentHandle = NULL;
s32 __ReadDVD(void *fp, u32 lba, u32 len, void *iobuf) s32 __ReadDVD(void *fp, u32 lba, u32 len, void *iobuf)
{ {
@ -80,7 +79,7 @@ s32 __ReadUSB(void *fp, u32 lba, u32 count, void *iobuf)
if (sectors > MAX_NB_SECTORS) sectors = MAX_NB_SECTORS; if (sectors > MAX_NB_SECTORS) sectors = MAX_NB_SECTORS;
/* USB read */ /* USB read */
ret = currentHandle->readSectors(partition_offset + cnt, sectors, ptr); ret = info->handle->readSectors(partition_offset + cnt, sectors, ptr);
if (!ret) return -1; if (!ret) return -1;
/* Increment counter */ /* Increment counter */
@ -108,7 +107,7 @@ s32 __WriteUSB(void *fp, u32 lba, u32 count, void *iobuf)
if (sectors > MAX_NB_SECTORS) sectors = MAX_NB_SECTORS; if (sectors > MAX_NB_SECTORS) sectors = MAX_NB_SECTORS;
/* USB write */ /* USB write */
ret = currentHandle->writeSectors(partition_offset + cnt, sectors, ptr); ret = info->handle->writeSectors(partition_offset + cnt, sectors, ptr);
if (!ret) return -1; if (!ret) return -1;
/* Increment counter */ /* Increment counter */

View File

@ -15,11 +15,11 @@ extern "C"
u32 hdd_sector_size; u32 hdd_sector_size;
u32 partition_lba; u32 partition_lba;
u32 partition_num_sec; u32 partition_num_sec;
const DISC_INTERFACE * handle;
} WBFS_PartInfo; } WBFS_PartInfo;
extern rw_sector_callback_t readCallback; extern rw_sector_callback_t readCallback;
extern rw_sector_callback_t writeCallback; extern rw_sector_callback_t writeCallback;
extern const DISC_INTERFACE * currentHandle;
s32 __ReadDVD(void *fp, u32 lba, u32 len, void *iobuf); s32 __ReadDVD(void *fp, u32 lba, u32 len, void *iobuf);
s32 __ReadUSB(void *fp, u32 lba, u32 count, void *iobuf); s32 __ReadUSB(void *fp, u32 lba, u32 count, void *iobuf);

View File

@ -1,21 +1,24 @@
#include "wbfs_wbfs.h" #include "wbfs_wbfs.h"
#include "Controls/DeviceHandler.hpp"
#include "prompts/ProgressWindow.h" #include "prompts/ProgressWindow.h"
#include "settings/CSettings.h" #include "settings/CSettings.h"
#include "usbloader/wbfs.h" #include "usbloader/wbfs.h"
#include "usbloader/usbstorage2.h"
#include "wbfs_rw.h" #include "wbfs_rw.h"
#define MAX_WBFS_SECTORSIZE 4096 #define MAX_WBFS_SECTORSIZE 4096
extern u32 hdd_sector_size; extern u32 hdd_sector_size[2];
s32 Wbfs_Wbfs::Open() s32 Wbfs_Wbfs::Open()
{ {
wbfs_t *part = NULL; wbfs_t *part = NULL;
PartInfo.wbfs_sector_size = MAX_WBFS_SECTORSIZE; PartInfo.wbfs_sector_size = MAX_WBFS_SECTORSIZE;
PartInfo.hdd_sector_size = hdd_sector_size; PartInfo.hdd_sector_size = hdd_sector_size[usbport];
PartInfo.partition_lba = lba; PartInfo.partition_lba = lba;
PartInfo.partition_num_sec = size; PartInfo.partition_num_sec = size;
PartInfo.handle = (usbport == 0) ? DeviceHandler::GetUSB0Interface() : DeviceHandler::GetUSB1Interface();
u8 * buffer = (u8 *) malloc(MAX_WBFS_SECTORSIZE); u8 * buffer = (u8 *) malloc(MAX_WBFS_SECTORSIZE);
memset(buffer, 0, MAX_WBFS_SECTORSIZE); memset(buffer, 0, MAX_WBFS_SECTORSIZE);
@ -80,17 +83,18 @@ void Wbfs_Wbfs::CloseDisc(wbfs_disc_t *disc)
s32 Wbfs_Wbfs::Format() s32 Wbfs_Wbfs::Format()
{ {
WBFS_PartInfo HDD_Inf; WBFS_PartInfo HDD_Inf;
HDD_Inf.wbfs_sector_size = hdd_sector_size; HDD_Inf.wbfs_sector_size = hdd_sector_size[usbport];
HDD_Inf.hdd_sector_size = hdd_sector_size; HDD_Inf.hdd_sector_size = hdd_sector_size[usbport];
HDD_Inf.partition_lba = lba; HDD_Inf.partition_lba = lba;
HDD_Inf.partition_num_sec = size; HDD_Inf.partition_num_sec = size;
HDD_Inf.handle = (usbport == 0) ? DeviceHandler::GetUSB0Interface() : DeviceHandler::GetUSB1Interface();
//! If size is over 500GB in sectors and sector size is 512 //! If size is over 500GB in sectors and sector size is 512
//! set 2048 as hdd sector size //! set 2048 as hdd sector size
if(size > 1048576000 && hdd_sector_size == 512) if(size > 1048576000 && hdd_sector_size[usbport] == 512)
{ {
HDD_Inf.wbfs_sector_size = 2048; HDD_Inf.wbfs_sector_size = 2048;
HDD_Inf.partition_num_sec = size/(2048/hdd_sector_size); HDD_Inf.partition_num_sec = size/(2048/hdd_sector_size[usbport]);
} }
wbfs_t *partition = NULL; wbfs_t *partition = NULL;
@ -221,5 +225,5 @@ s32 Wbfs_Wbfs::GetFragList(u8 *id)
{ {
//! Doesn't have to be called ".iso" just something different than .wbfs but with a dot. //! Doesn't have to be called ".iso" just something different than .wbfs but with a dot.
//! So that the code doesn't fail. //! So that the code doesn't fail.
return get_frag_list_for_file((char *) ".iso", id, GetFSType(), lba); return get_frag_list_for_file((char *) ".iso", id, GetFSType(), lba, hdd_sector_size[usbport]);
} }

View File

@ -9,8 +9,8 @@
class Wbfs_Wbfs: public Wbfs class Wbfs_Wbfs: public Wbfs
{ {
public: public:
Wbfs_Wbfs(u32 device, u32 lba, u32 size) : Wbfs_Wbfs(u32 device, u32 lba, u32 size, u32 port) :
Wbfs(device, lba, size) Wbfs(device, lba, size, port)
{ {
} }

View File

@ -665,7 +665,7 @@ bool WiiTDB::GetGenreList(const char * id, vector<string> & genre)
++ptr; ++ptr;
} }
while(genre_num > 0 && genre[genre_num].size() > 0 && genre[genre_num][genre[genre_num].size()-1] == ' ') while(genre.size() > genre_num && genre[genre_num].size() > 0 && genre[genre_num][genre[genre_num].size()-1] == ' ')
genre[genre_num].erase(genre[genre_num].size()-1); genre[genre_num].erase(genre[genre_num].size()-1);
delete [] data; delete [] data;