* added nand channel emulation (big thanks to TriiForce guys and Miigotu for laying out the foundation)

* added direct list of emu nand channels without activating emu nand (for speed up)
* removed autoclose of search bar and changed the search engine to have both methods
* added setting for switching "Beginning" and "Content" search methods and a quick switch button on search window
* added autocomplete if only one search character is available and more than one match
* added seperate path and setting for emu nand channels/saves
* added caching of emu nand channel titles
* fixed a few alignment issues when activating emu nand (thanks daveboal)
* some minor clean ups

TODO/Next Rev:
* add channels banner sounds
* remove unneeded game settings options on channels
This commit is contained in:
strtoul 2011-11-12 18:14:09 +00:00
parent 164889c917
commit c51b2304c2
67 changed files with 1378 additions and 361 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.3 r1127</version> <version>2.3 r1128</version>
<release_date>201111111858</release_date> <release_date>201111112324</release_date>
<!-- // remove this line to enable arguments <!-- // remove this line to enable arguments
<arguments> <arguments>
<arg>--ios=250</arg> <arg>--ios=250</arg>

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-10-22 12:10+0200\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "Zpet do HBC nebo Wii nabídky"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Hudba na pozadí" msgstr "Hudba na pozadí"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Velké díky pro:" msgstr "Velké díky pro:"
@ -314,6 +317,9 @@ msgstr ""
msgid "Change Play Path" msgid "Change Play Path"
msgstr "Zmena cesty prehrávání" msgstr "Zmena cesty prehrávání"
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "Soubor s cheaty je prázdný" msgstr "Soubor s cheaty je prázdný"
@ -363,6 +369,9 @@ msgstr ""
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "Konzole musí být odemcena pro tuto zmenu" msgstr "Konzole musí být odemcena pro tuto zmenu"
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Pokracovat pri instalaci hry" msgstr "Pokracovat pri instalaci hry"
@ -1006,6 +1015,9 @@ msgstr "Nahrát soubor z: %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Spustit tento DOL jako náhradní DOL?" msgstr "Spustit tento DOL jako náhradní DOL?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "Nstavení spoustení" msgstr "Nstavení spoustení"
@ -1063,6 +1075,12 @@ msgstr "Mód hudební smycky"
msgid "Music Volume" msgid "Music Volume"
msgstr "Hlasitost hudby" msgstr "Hlasitost hudby"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Žádný" msgstr "Žádný"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "Sporic obrazovky" msgstr "Sporic obrazovky"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "Vyber" msgstr "Vyber"

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-10-22 12:10+0200\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "Tilbage til HBC eller Wii-menuen"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Baggrundsmusik" msgstr "Baggrundsmusik"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "En stor tak til:" msgstr "En stor tak til:"
@ -314,6 +317,9 @@ msgstr "Kategorier:"
msgid "Change Play Path" msgid "Change Play Path"
msgstr "Ændre sti til musik" msgstr "Ændre sti til musik"
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "Cheatfilen er tom" msgstr "Cheatfilen er tom"
@ -363,6 +369,9 @@ msgstr "Konsollen skal være låst op for at kunne bruge dette."
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "Konsollen skal være låst op for ændre dette." msgstr "Konsollen skal være låst op for ændre dette."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Fortsæt med at installere spillet?" msgstr "Fortsæt med at installere spillet?"
@ -1006,6 +1015,9 @@ msgstr "Indlæs fil fra %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Indlæs denne DOL som alternativ DOL?" msgstr "Indlæs denne DOL som alternativ DOL?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "Loader Indstillinger" msgstr "Loader Indstillinger"
@ -1063,6 +1075,12 @@ msgstr "Musik i løkke"
msgid "Music Volume" msgid "Music Volume"
msgstr "Lydstyrke" msgstr "Lydstyrke"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "Sti til Nand Emu." msgstr "Sti til Nand Emu."
@ -1075,6 +1093,9 @@ msgstr "Nand emulering er kun mulig med d2x cIOS"
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "Nand emulering virker kun med FAT/FAT32 partitioner!" msgstr "Nand emulering virker kun med FAT/FAT32 partitioner!"
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Ingen" msgstr "Ingen"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "Pauseskærm" msgstr "Pauseskærm"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "Vælg" msgstr "Vælg"

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-10-22 12:10+0200\n" "POT-Creation-Date: 2011-11-12 18:58+0100\n"
"PO-Revision-Date: 2011-06-30 14:22+0100\n" "PO-Revision-Date: 2011-06-30 14:22+0100\n"
"Last-Translator: glowy\n" "Last-Translator: glowy\n"
"Language-Team: tj_cool, glowy\n" "Language-Team: tj_cool, glowy\n"
@ -202,6 +202,9 @@ msgstr "Terug naar HBC of Wii Menu"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Achtergrondmuziek" msgstr "Achtergrondmuziek"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Grote dank aan:" msgstr "Grote dank aan:"
@ -314,6 +317,9 @@ msgstr "Categorieën:"
msgid "Change Play Path" msgid "Change Play Path"
msgstr "Verander afspeel locatie" msgstr "Verander afspeel locatie"
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "Cheatbestand is leeg" msgstr "Cheatbestand is leeg"
@ -363,6 +369,9 @@ msgstr "Console moet worden vrijgegeven om dit te kunnen gebruiken."
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "Console moet worden vrijgegeven om te wijzigen." msgstr "Console moet worden vrijgegeven om te wijzigen."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Installatie spel voortzetten?" msgstr "Installatie spel voortzetten?"
@ -1006,6 +1015,9 @@ msgstr "Laad bestand van %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Deze DOL als alt DOL gebruiken?" msgstr "Deze DOL als alt DOL gebruiken?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "Loader Instellingen" msgstr "Loader Instellingen"
@ -1063,6 +1075,12 @@ msgstr "Muziek Herhaal Mode"
msgid "Music Volume" msgid "Music Volume"
msgstr "Muziekvolume" msgstr "Muziekvolume"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Geen" msgstr "Geen"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "Schermbeveiliging" msgstr "Schermbeveiliging"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "Selecteer" msgstr "Selecteer"

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-10-22 12:10+0200\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr ""
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "" msgstr ""
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "" msgstr ""
@ -314,6 +317,9 @@ msgstr ""
msgid "Change Play Path" msgid "Change Play Path"
msgstr "" msgstr ""
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "" msgstr ""
@ -363,6 +369,9 @@ msgstr ""
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "" msgstr ""
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "" msgstr ""
@ -1006,6 +1015,9 @@ msgstr ""
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "" msgstr ""
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "" msgstr ""
@ -1063,6 +1075,12 @@ msgstr ""
msgid "Music Volume" msgid "Music Volume"
msgstr "" msgstr ""
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "" msgstr ""
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "" msgstr ""
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
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-10-22 12:10+0200\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "Takaisin HBC:hen tai Wii Menuun"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Taustamusiikki" msgstr "Taustamusiikki"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Isot kiitokset:" msgstr "Isot kiitokset:"
@ -314,6 +317,9 @@ msgstr ""
msgid "Change Play Path" msgid "Change Play Path"
msgstr "" msgstr ""
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "Kooditiedosto tyhjä" msgstr "Kooditiedosto tyhjä"
@ -363,6 +369,9 @@ msgstr ""
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "Avaa konsolin lukitus muokataksesi asetuksia." msgstr "Avaa konsolin lukitus muokataksesi asetuksia."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Jatka pelin asennusta?" msgstr "Jatka pelin asennusta?"
@ -1006,6 +1015,9 @@ msgstr "Lataa tiedosto: %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Lataa tämä vaihtoehtoisesti tämä dol?" msgstr "Lataa tämä vaihtoehtoisesti tämä dol?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "" msgstr ""
@ -1063,6 +1075,12 @@ msgstr ""
msgid "Music Volume" msgid "Music Volume"
msgstr "Voimakkuus" msgstr "Voimakkuus"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Ei kumpikaan" msgstr "Ei kumpikaan"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "Näytönsäästäjä" msgstr "Näytönsäästäjä"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
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-11-08 20:25+0100\n" "POT-Creation-Date: 2011-11-12 18:58+0100\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: Cyan\n" "Last-Translator: Cyan\n"
"Language-Team: Badablek, Amour, ikya, Cyan & Kin8\n" "Language-Team: Badablek, Amour, ikya, Cyan & Kin8\n"
@ -202,6 +202,9 @@ msgstr "Retour HBC / Menu Wii"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Fond sonore" msgstr "Fond sonore"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Grand merci à:" msgstr "Grand merci à:"
@ -314,6 +317,9 @@ msgstr "Catégories:"
msgid "Change Play Path" msgid "Change Play Path"
msgstr "Changer dossier" msgstr "Changer dossier"
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "Fichier de triche vide" msgstr "Fichier de triche vide"
@ -363,6 +369,9 @@ msgstr "La console doit être déverrouillée."
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "La console doit être déverrouillée." msgstr "La console doit être déverrouillée."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Continuer l'installation ?" msgstr "Continuer l'installation ?"
@ -1006,6 +1015,9 @@ msgstr "Charger le fichier de: %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Charger comme DOL alternatif ?" msgstr "Charger comme DOL alternatif ?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "Paramètres du Loader" msgstr "Paramètres du Loader"
@ -1063,6 +1075,12 @@ msgstr "Type de boucle"
msgid "Music Volume" msgid "Music Volume"
msgstr "Volume musique" msgstr "Volume musique"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "Dossier Émulation Nand" msgstr "Dossier Émulation Nand"
@ -1075,6 +1093,9 @@ msgstr "L'Émulation Nand n'est disponible qu'avec le cIOS D2X!"
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "L'Émulation Nand ne fonctionne qu'avec une partition FAT/FAT32!" msgstr "L'Émulation Nand ne fonctionne qu'avec une partition FAT/FAT32!"
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Aucun" msgstr "Aucun"
@ -1360,6 +1381,9 @@ msgstr "La sauvegarde de ce jeu est peut-être existante."
msgid "Screensaver" msgid "Screensaver"
msgstr "Économiseur d'écran" msgstr "Économiseur d'écran"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "Choisir" msgstr "Choisir"

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-10-22 16:15+0200\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "Zurück zum Homebrewkanal oder Wii Menü"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Hintergrundmusik" msgstr "Hintergrundmusik"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Großen Dank an:" msgstr "Großen Dank an:"
@ -314,6 +317,9 @@ msgstr "Kategorien:"
msgid "Change Play Path" msgid "Change Play Path"
msgstr "Pfad ändern" msgstr "Pfad ändern"
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "Cheatdatei ist leer" msgstr "Cheatdatei ist leer"
@ -363,6 +369,9 @@ msgstr "Gerät muss für diese Nutzung entsperrt werden."
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "Konsole muss zum Bearbeiten entsperrt werden." msgstr "Konsole muss zum Bearbeiten entsperrt werden."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Fortfahren um Spiel zu installieren?" msgstr "Fortfahren um Spiel zu installieren?"
@ -1006,6 +1015,9 @@ msgstr "Datei von %s laden?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Diese DOL als Alternative DOL laden?" msgstr "Diese DOL als Alternative DOL laden?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "Loader Einstellungen" msgstr "Loader Einstellungen"
@ -1063,6 +1075,12 @@ msgstr "HGM Wiederholung"
msgid "Music Volume" msgid "Music Volume"
msgstr "Musik Lautstärke" msgstr "Musik Lautstärke"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "Nand Emu Pfad" msgstr "Nand Emu Pfad"
@ -1075,6 +1093,9 @@ msgstr "Nand Emulation ist nur für D2X cIOS verfügbar!"
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "Nand Emulation funktionier nut mit FAT/FAT32 Partitionen!" msgstr "Nand Emulation funktionier nut mit FAT/FAT32 Partitionen!"
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Keine" msgstr "Keine"
@ -1360,6 +1381,9 @@ msgstr "Möglicherweise existiert kein Spielstand für dieses Spiel."
msgid "Screensaver" msgid "Screensaver"
msgstr "Bildschirmschoner" msgstr "Bildschirmschoner"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "Auswählen" msgstr "Auswählen"

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-11-08 20:25+0100\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "Visszatérés a HBC-be vagy Wii Menübe"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Háttérzene" msgstr "Háttérzene"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Köszönet:" msgstr "Köszönet:"
@ -314,6 +317,9 @@ msgstr ""
msgid "Change Play Path" msgid "Change Play Path"
msgstr "" msgstr ""
msgid "Channels"
msgstr "Csatornák"
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "A cheat-fájl üres" msgstr "A cheat-fájl üres"
@ -363,6 +369,9 @@ msgstr ""
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "A konzol zárolva, ezért nem változtatható meg." msgstr "A konzol zárolva, ezért nem változtatható meg."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Játék telepítésének folytatása?" msgstr "Játék telepítésének folytatása?"
@ -1006,6 +1015,9 @@ msgstr "Fájl betöltése innen: %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "DOL betöltése alternatív DOL-ként?" msgstr "DOL betöltése alternatív DOL-ként?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "" msgstr ""
@ -1063,6 +1075,12 @@ msgstr ""
msgid "Music Volume" msgid "Music Volume"
msgstr "Zene Hangerõ" msgstr "Zene Hangerõ"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Egyik sem" msgstr "Egyik sem"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "Képernyõkimélõ" msgstr "Képernyõkimélõ"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "Válassz" msgstr "Válassz"
@ -1965,9 +1989,6 @@ msgstr "hátralévõ másodperc"
#~ msgid "Back to Wii Menu" #~ msgid "Back to Wii Menu"
#~ msgstr "Visszatérés a Wii Menübe" #~ msgstr "Visszatérés a Wii Menübe"
#~ msgid "Channels"
#~ msgstr "Csatornák"
#~ msgid "Checking existing artwork" #~ msgid "Checking existing artwork"
#~ msgstr "Meglévõ képek ellenõrzése" #~ msgstr "Meglévõ képek ellenõrzése"

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-11-08 20:25+0100\n" "POT-Creation-Date: 2011-11-12 18:58+0100\n"
"PO-Revision-Date: 2011-09-11 12:19+0100\n" "PO-Revision-Date: 2011-09-11 12:19+0100\n"
"Last-Translator: xFede, Bovirus \n" "Last-Translator: xFede, Bovirus \n"
"Language-Team: Cambo\n" "Language-Team: Cambo\n"
@ -202,6 +202,9 @@ msgstr "Torna a HBC/Menu Wii"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Musica di sottofondo" msgstr "Musica di sottofondo"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Grazie mille a:" msgstr "Grazie mille a:"
@ -314,6 +317,9 @@ msgstr "Categorie:"
msgid "Change Play Path" msgid "Change Play Path"
msgstr "Cambia Percorso Musica" msgstr "Cambia Percorso Musica"
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "Il file dei trucchi è vuoto" msgstr "Il file dei trucchi è vuoto"
@ -363,6 +369,9 @@ msgstr "La Wii deve essere sbloccata per usare questa opzione."
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "La Wii deve essere sbloccata per modificarla." msgstr "La Wii deve essere sbloccata per modificarla."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Proseguire con l'installarazione del gioco?" msgstr "Proseguire con l'installarazione del gioco?"
@ -1006,6 +1015,9 @@ msgstr "Caricare il file da: %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Usare questo DOL come DOL alternativo?" msgstr "Usare questo DOL come DOL alternativo?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "Impostazioni Loader" msgstr "Impostazioni Loader"
@ -1063,6 +1075,12 @@ msgstr "Ripeti Musica Sottof."
msgid "Music Volume" msgid "Music Volume"
msgstr "Volume Musica" msgstr "Volume Musica"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "Percorso NAND Emulata" msgstr "Percorso NAND Emulata"
@ -1075,6 +1093,9 @@ msgstr "L'emulazione della NAND è disponibile solo con i cIOS d2x!"
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "L'emulazione della NAND funziona solo con le partizioni FAT/FAT32!" msgstr "L'emulazione della NAND funziona solo con le partizioni FAT/FAT32!"
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Neanche" msgstr "Neanche"
@ -1360,6 +1381,9 @@ msgstr "Il salvataggio potrebbe non esistere per questo gioco."
msgid "Screensaver" msgid "Screensaver"
msgstr "Salvaschermo" msgstr "Salvaschermo"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "Seleziona" msgstr "Seleziona"

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-11-08 20:25+0100\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "HBC/Wiiメニューへ"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "BGM" msgstr "BGM"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "協力:" msgstr "協力:"
@ -314,6 +317,9 @@ msgstr "カテゴリ:"
msgid "Change Play Path" msgid "Change Play Path"
msgstr "パスの変更" msgstr "パスの変更"
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "チートファイルがありません" msgstr "チートファイルがありません"
@ -363,6 +369,9 @@ msgstr "これを使うにはロックの解除が必要です"
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "変更にはロックの解除が必要です" msgstr "変更にはロックの解除が必要です"
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "このゲームをインストールしますか?" msgstr "このゲームをインストールしますか?"
@ -1006,6 +1015,9 @@ msgstr "%sからファイルをロードしますか"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "このDOLを代替DOLとしてロードしますか" msgstr "このDOLを代替DOLとしてロードしますか"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "ローダーの設定" msgstr "ローダーの設定"
@ -1063,6 +1075,12 @@ msgstr "ループ機能"
msgid "Music Volume" msgid "Music Volume"
msgstr "BGMの音量" msgstr "BGMの音量"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "NANDエミュ" msgstr "NANDエミュ"
@ -1075,6 +1093,9 @@ msgstr "NANDエミュレーションはd2x cIOSのみで動作します!"
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "NANDエミュレーションはFAT/FAT32領域のみで動作します!" msgstr "NANDエミュレーションはFAT/FAT32領域のみで動作します!"
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "非表示" msgstr "非表示"
@ -1360,6 +1381,9 @@ msgstr "このゲームのセーブはありません"
msgid "Screensaver" msgid "Screensaver"
msgstr "スクリーンセーバー" msgstr "スクリーンセーバー"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
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-11-08 20:25+0100\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "홈브류 메뉴 또는 Wii 메뉴로"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "배경음악" msgstr "배경음악"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "감사 :" msgstr "감사 :"
@ -314,6 +317,9 @@ msgstr ""
msgid "Change Play Path" msgid "Change Play Path"
msgstr "" msgstr ""
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "치트화일 내용없음" msgstr "치트화일 내용없음"
@ -363,6 +369,9 @@ msgstr ""
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "변경하려면 콘솔 잠김을 해제하세요." msgstr "변경하려면 콘솔 잠김을 해제하세요."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "계속 설치하겠습니까?" msgstr "계속 설치하겠습니까?"
@ -1006,6 +1015,9 @@ msgstr "화일 로드는 %s 에서?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "이 DOL화일을 alternate DOL로 로딩할까요?" msgstr "이 DOL화일을 alternate DOL로 로딩할까요?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "" msgstr ""
@ -1063,6 +1075,12 @@ msgstr ""
msgid "Music Volume" msgid "Music Volume"
msgstr "음량" msgstr "음량"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "표시 없음" msgstr "표시 없음"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "화면보호기" msgstr "화면보호기"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
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-11-08 20:25+0100\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "Tilbake til HBC eller Wii meny"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Bakgrunnsmusikk" msgstr "Bakgrunnsmusikk"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Stor takk til:" msgstr "Stor takk til:"
@ -314,6 +317,9 @@ msgstr "Kategorier:"
msgid "Change Play Path" msgid "Change Play Path"
msgstr "Endre spill sti" msgstr "Endre spill sti"
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "Juksefil er tom" msgstr "Juksefil er tom"
@ -363,6 +369,9 @@ msgstr "Konsoll må være opplåst for å bruke dette."
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "Konsoll må være opplåst for å modifisere." msgstr "Konsoll må være opplåst for å modifisere."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Fortsett å installere spill?" msgstr "Fortsett å installere spill?"
@ -1006,6 +1015,9 @@ msgstr "Start fil fra: %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Last denne DOL som alternativ DOL?" msgstr "Last denne DOL som alternativ DOL?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "Loader innstillinger" msgstr "Loader innstillinger"
@ -1063,6 +1075,12 @@ msgstr "Musikk loop modus"
msgid "Music Volume" msgid "Music Volume"
msgstr "Musikk volum" msgstr "Musikk volum"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Ingen" msgstr "Ingen"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "Skjermbeskytter" msgstr "Skjermbeskytter"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "Velg" msgstr "Velg"

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-11-08 20:25+0100\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "Powrot do HBC/Wii Menu"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Muzyka w tle" msgstr "Muzyka w tle"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Podziekowania dla" msgstr "Podziekowania dla"
@ -314,6 +317,9 @@ msgstr ""
msgid "Change Play Path" msgid "Change Play Path"
msgstr "" msgstr ""
msgid "Channels"
msgstr "Kanaly"
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "Plik z kodami pusty" msgstr "Plik z kodami pusty"
@ -363,6 +369,9 @@ msgstr ""
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "Aby zmodyfikowac, odblokuj konsole" msgstr "Aby zmodyfikowac, odblokuj konsole"
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Kontynuowac instalacje?" msgstr "Kontynuowac instalacje?"
@ -1006,6 +1015,9 @@ msgstr "Zaladowac plik z: %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Zaladowac ten DOL jako alternatywnt?" msgstr "Zaladowac ten DOL jako alternatywnt?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "" msgstr ""
@ -1063,6 +1075,12 @@ msgstr ""
msgid "Music Volume" msgid "Music Volume"
msgstr "Poziom glosnosci" msgstr "Poziom glosnosci"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "zadne" msgstr "zadne"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "Wygaszacz ekranu" msgstr "Wygaszacz ekranu"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "Wybierz" msgstr "Wybierz"
@ -1968,9 +1992,6 @@ msgstr "sekund pozostalo"
#~ msgid "Back to Wii Menu" #~ msgid "Back to Wii Menu"
#~ msgstr "Powrit do Wii Menu" #~ msgstr "Powrit do Wii Menu"
#~ msgid "Channels"
#~ msgstr "Kanaly"
#~ msgid "Checking existing artwork" #~ msgid "Checking existing artwork"
#~ msgstr "Sprawdzam istniejace prace graficzne" #~ msgstr "Sprawdzam istniejace prace graficzne"

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-11-08 20:25+0100\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "Voltar ao Loader/Menu do Wii"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Música de fundo" msgstr "Música de fundo"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Agradecimentos:" msgstr "Agradecimentos:"
@ -314,6 +317,9 @@ msgstr "Categorias:"
msgid "Change Play Path" msgid "Change Play Path"
msgstr "Alterar Caminho para Play" msgstr "Alterar Caminho para Play"
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "arquivo de truques vazio" msgstr "arquivo de truques vazio"
@ -363,6 +369,9 @@ msgstr "Configuração deve está destravada para habilitar esta."
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "É necessário desbloquear a configuração para poder modificar o parâmetro." msgstr "É necessário desbloquear a configuração para poder modificar o parâmetro."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Continuar instalação do jogo?" msgstr "Continuar instalação do jogo?"
@ -1006,6 +1015,9 @@ msgstr "Carregar arquivo de: %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Carregar este DOL como DOL alternativo?" msgstr "Carregar este DOL como DOL alternativo?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "" msgstr ""
@ -1063,6 +1075,12 @@ msgstr "Modo Repetição de Música"
msgid "Music Volume" msgid "Music Volume"
msgstr "Volume da Música" msgstr "Volume da Música"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Nenhum" msgstr "Nenhum"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "Proteção de tela" msgstr "Proteção de tela"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "selecionar" msgstr "selecionar"

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-10-22 12:10+0200\n" "POT-Creation-Date: 2011-11-12 18:58+0100\n"
"PO-Revision-Date: 2011-11-03 11:00+0000\n" "PO-Revision-Date: 2011-11-03 11: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"
@ -202,6 +202,9 @@ msgstr "Voltar ao HBC ou Menu Wii"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Música de fundo" msgstr "Música de fundo"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Agradecimentos:" msgstr "Agradecimentos:"
@ -314,6 +317,9 @@ msgstr "Categorias:"
msgid "Change Play Path" msgid "Change Play Path"
msgstr "Alterar Caminho de Músicas" msgstr "Alterar Caminho de Músicas"
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "Ficheiro de batota vazio" msgstr "Ficheiro de batota vazio"
@ -363,6 +369,9 @@ msgstr "Consola tem de estar desbloqueada para usar isto."
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "Consola deve estar desbloqueada para modificar o parâmetro." msgstr "Consola deve estar desbloqueada para modificar o parâmetro."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Continuar instalação do jogo?" msgstr "Continuar instalação do jogo?"
@ -1006,6 +1015,9 @@ msgstr "Carregar ficheiro de: %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Carregar este DOL como DOL alternativo?" msgstr "Carregar este DOL como DOL alternativo?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "Definições do Loader" msgstr "Definições do Loader"
@ -1063,6 +1075,12 @@ msgstr "Modo de Repetição"
msgid "Music Volume" msgid "Music Volume"
msgstr "Volume Música" msgstr "Volume Música"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "Caminho Nand Emu" msgstr "Caminho Nand Emu"
@ -1075,6 +1093,9 @@ msgstr "Emulação Nand apenas disponível em cIOS D2X!"
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "Emulação Nand apenas funciona em partições FAT/FAT32!" msgstr "Emulação Nand apenas funciona em partições FAT/FAT32!"
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Nenhum" msgstr "Nenhum"
@ -1360,6 +1381,9 @@ msgstr "Gravação pode não existir para este jogo."
msgid "Screensaver" msgid "Screensaver"
msgstr "Protector de ecrã" msgstr "Protector de ecrã"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "Seleccionar" msgstr "Seleccionar"

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-11-08 20:25+0100\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "Вернуться в HBC или меню Wii"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Фоновая музыка" msgstr "Фоновая музыка"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Большое спасибо:" msgstr "Большое спасибо:"
@ -314,6 +317,9 @@ msgstr ""
msgid "Change Play Path" msgid "Change Play Path"
msgstr "" msgstr ""
msgid "Channels"
msgstr "Каналы"
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "Файл с читами пустой" msgstr "Файл с читами пустой"
@ -363,6 +369,9 @@ msgstr ""
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "Для изменения консоль должна быть разблокирована." msgstr "Для изменения консоль должна быть разблокирована."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Продолжить установку игры ?" msgstr "Продолжить установку игры ?"
@ -1006,6 +1015,9 @@ msgstr "Загрузить файл из %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Загрузить этот DOL в качестве альтернативного ?" msgstr "Загрузить этот DOL в качестве альтернативного ?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "" msgstr ""
@ -1063,6 +1075,12 @@ msgstr ""
msgid "Music Volume" msgid "Music Volume"
msgstr "Громкость" msgstr "Громкость"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Ни то, ни другое" msgstr "Ни то, ни другое"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "Скринсейвер" msgstr "Скринсейвер"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "" msgstr ""
@ -1968,9 +1992,6 @@ msgstr "секунд осталось"
#~ msgid "Back to Wii Menu" #~ msgid "Back to Wii Menu"
#~ msgstr "Вернуться в меню Wii" #~ msgstr "Вернуться в меню Wii"
#~ msgid "Channels"
#~ msgstr "Каналы"
#~ msgid "Checking existing artwork" #~ msgid "Checking existing artwork"
#~ 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-11-08 20:25+0100\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "返回 HBC 或 Wii 系统菜单"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "背景音乐" msgstr "背景音乐"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "非常感谢:" msgstr "非常感谢:"
@ -314,6 +317,9 @@ msgstr ""
msgid "Change Play Path" msgid "Change Play Path"
msgstr "更改游戏路径" msgstr "更改游戏路径"
msgid "Channels"
msgstr "频道"
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "作弊码文件是空的" msgstr "作弊码文件是空的"
@ -363,6 +369,9 @@ msgstr ""
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "需解锁以开启设定功能." msgstr "需解锁以开启设定功能."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "继续安装游戏?" msgstr "继续安装游戏?"
@ -1006,6 +1015,9 @@ msgstr "从%s 加载文件?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "加载这个 DOL 作为 ALT DOL?" msgstr "加载这个 DOL 作为 ALT DOL?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "Loader设置" msgstr "Loader设置"
@ -1063,6 +1075,12 @@ msgstr "音乐循环模式"
msgid "Music Volume" msgid "Music Volume"
msgstr "音量" msgstr "音量"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "全不" msgstr "全不"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "屏幕保护" msgstr "屏幕保护"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "选择" msgstr "选择"
@ -1956,9 +1980,6 @@ msgstr "剩余秒数"
#~ msgid "Back to Wii Menu" #~ msgid "Back to Wii Menu"
#~ msgstr "返回 Wii 系统菜单" #~ msgstr "返回 Wii 系统菜单"
#~ msgid "Channels"
#~ msgstr "频道"
#~ msgid "Checking existing artwork" #~ msgid "Checking existing artwork"
#~ 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-11-08 15:25+0200\n" "POT-Creation-Date: 2011-11-12 18:58+0100\n"
"PO-Revision-Date: 2011-07-25 16:40+0200\n" "PO-Revision-Date: 2011-07-25 16:40+0200\n"
"Last-Translator: Galen/xFede\n" "Last-Translator: Galen/xFede\n"
"Language-Team: Penn, SirPalax, hvy109\n" "Language-Team: Penn, SirPalax, hvy109\n"
@ -202,6 +202,9 @@ msgstr "Volver a HBC o Menú Wii"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Música de fondo" msgstr "Música de fondo"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Gracias a:" msgstr "Gracias a:"
@ -314,6 +317,9 @@ msgstr "Categorías:"
msgid "Change Play Path" msgid "Change Play Path"
msgstr "Cambiar Ruta" msgstr "Cambiar Ruta"
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "El archivo de Trucos está vacio" msgstr "El archivo de Trucos está vacio"
@ -363,6 +369,9 @@ msgstr "Debes desbloquear la consola para poder usar esto."
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "Debes desbloquear la consola para modificarlo." msgstr "Debes desbloquear la consola para modificarlo."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "¿Continuar instalando juego?" msgstr "¿Continuar instalando juego?"
@ -1006,6 +1015,9 @@ msgstr "¿Cargar el archivo desde: %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "¿Cargar este DOL como DOL Alternativo?" msgstr "¿Cargar este DOL como DOL Alternativo?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "Configuración del Cargador" msgstr "Configuración del Cargador"
@ -1063,6 +1075,12 @@ msgstr "Modo Bucle Musical"
msgid "Music Volume" msgid "Music Volume"
msgstr "Volumen de la Música" msgstr "Volumen de la Música"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "Ruta Emul. Nand" msgstr "Ruta Emul. Nand"
@ -1075,6 +1093,9 @@ msgstr "¡La emulación Nand solo está disponible en cIOS D2X!"
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "¡La emulación Nand solo funciona en particiones FAT/FAT32!" msgstr "¡La emulación Nand solo funciona en particiones FAT/FAT32!"
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Ninguno" msgstr "Ninguno"
@ -1360,6 +1381,9 @@ msgstr "Puede no existir partida guardada para este juego"
msgid "Screensaver" msgid "Screensaver"
msgstr "Salvapantallas" msgstr "Salvapantallas"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "Seleccionar" msgstr "Seleccionar"

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-11-08 20:25+0100\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "Tillbaka till HBC eller Wii-Menyn"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Bakgrundsmusik" msgstr "Bakgrundsmusik"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Stort tack till:" msgstr "Stort tack till:"
@ -314,6 +317,9 @@ msgstr ""
msgid "Change Play Path" msgid "Change Play Path"
msgstr "Ändra spel sökväg" msgstr "Ändra spel sökväg"
msgid "Channels"
msgstr "Kannaler"
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "Fuskfilen är blank" msgstr "Fuskfilen är blank"
@ -363,6 +369,9 @@ msgstr ""
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "Konsolen måste vara upplåst för att kunna ändra det." msgstr "Konsolen måste vara upplåst för att kunna ändra det."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Fortsätt installera spel?" msgstr "Fortsätt installera spel?"
@ -1006,6 +1015,9 @@ msgstr "Ladda fil från: %s?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Ladda denna DOL som alternativ DOL?" msgstr "Ladda denna DOL som alternativ DOL?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "" msgstr ""
@ -1063,6 +1075,12 @@ msgstr "Musik Återuppspelningsläge"
msgid "Music Volume" msgid "Music Volume"
msgstr "Volym" msgstr "Volym"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Inget" msgstr "Inget"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "Skärmsläckare" msgstr "Skärmsläckare"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "Välj" msgstr "Välj"
@ -1968,9 +1992,6 @@ msgstr "sekunder kvar"
#~ msgid "Back to Wii Menu" #~ msgid "Back to Wii Menu"
#~ msgstr "Tillbaka till Wii-menyn" #~ msgstr "Tillbaka till Wii-menyn"
#~ msgid "Channels"
#~ msgstr "Kannaler"
#~ msgid "Checking existing artwork" #~ msgid "Checking existing artwork"
#~ msgstr "Kontrollera befintliga konstverk" #~ msgstr "Kontrollera befintliga konstverk"

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-11-08 20:25+0100\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "返回 HBC 或 Wii 系統選單"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "背景音樂" msgstr "背景音樂"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "非常感謝:" msgstr "非常感謝:"
@ -314,6 +317,9 @@ msgstr "類別:"
msgid "Change Play Path" msgid "Change Play Path"
msgstr "變更執行路徑" msgstr "變更執行路徑"
msgid "Channels"
msgstr ""
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "金手指檔是空的" msgstr "金手指檔是空的"
@ -363,6 +369,9 @@ msgstr "控制台必須解鎖才可使用此項。"
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "控制台須解鎖才可變更設定。" msgstr "控制台須解鎖才可變更設定。"
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "繼續安裝遊戲?" msgstr "繼續安裝遊戲?"
@ -1006,6 +1015,9 @@ msgstr "檔案載入位置: %s"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "載入這個 DOL 作為替代 DOL" msgstr "載入這個 DOL 作為替代 DOL"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "Loader設定" msgstr "Loader設定"
@ -1063,6 +1075,12 @@ msgstr "音樂循環模式"
msgid "Music Volume" msgid "Music Volume"
msgstr "音樂音量" msgstr "音樂音量"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "Nand 模擬器路徑" msgstr "Nand 模擬器路徑"
@ -1075,6 +1093,9 @@ msgstr "Nand 模擬器僅可用D2X cIOS!"
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "Nand 模擬器僅能在 FAT/FAT32 格式磁區執行!" msgstr "Nand 模擬器僅能在 FAT/FAT32 格式磁區執行!"
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "皆不顯示" msgstr "皆不顯示"
@ -1360,6 +1381,9 @@ msgstr "這個遊戲的遊戲存檔可能不存在。"
msgid "Screensaver" msgid "Screensaver"
msgstr "螢幕保護" msgstr "螢幕保護"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
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-10-22 12:10+0200\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "กลับไป HBC หรือ เมนู Wii"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "ดนตรีเบื้องหลัง" msgstr "ดนตรีเบื้องหลัง"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "ขอขอบคุณ:" msgstr "ขอขอบคุณ:"
@ -314,6 +317,9 @@ msgstr ""
msgid "Change Play Path" msgid "Change Play Path"
msgstr "" msgstr ""
msgid "Channels"
msgstr "แชนแนล"
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "ไฟล์สูตรโกง ว่างเปล่า" msgstr "ไฟล์สูตรโกง ว่างเปล่า"
@ -363,6 +369,9 @@ msgstr ""
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "ปลดล๊อคคอนโซลก่อน ถึงจะทำการเปลี่ยนแปลงได้" msgstr "ปลดล๊อคคอนโซลก่อน ถึงจะทำการเปลี่ยนแปลงได้"
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "ทำต่อ เพื่อติดตั้งเกมส์?" msgstr "ทำต่อ เพื่อติดตั้งเกมส์?"
@ -1006,6 +1015,9 @@ msgstr "โหลดไฟล์จาก: %s ?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "โหลด DOL นี้เป็น alternate DOL?" msgstr "โหลด DOL นี้เป็น alternate DOL?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "" msgstr ""
@ -1063,6 +1075,12 @@ msgstr ""
msgid "Music Volume" msgid "Music Volume"
msgstr "ความดังเสียงเพลง" msgstr "ความดังเสียงเพลง"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "ไม่ทั้งสอง" msgstr "ไม่ทั้งสอง"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "รักษาหน้าจอ" msgstr "รักษาหน้าจอ"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "" msgstr ""
@ -1926,9 +1950,6 @@ msgstr "วินาทีที่เหลือ"
#~ msgid "Back to Wii Menu" #~ msgid "Back to Wii Menu"
#~ msgstr "กลับไป เมนู Wii" #~ msgstr "กลับไป เมนู Wii"
#~ msgid "Channels"
#~ msgstr "แชนแนล"
#~ msgid "Checking existing artwork" #~ msgid "Checking existing artwork"
#~ 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-10-22 12:10+0200\n" "POT-Creation-Date: 2011-11-12 18:58+0100\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"
@ -202,6 +202,9 @@ msgstr "HBC veya Wii Menüye dönüş"
msgid "Backgroundmusic" msgid "Backgroundmusic"
msgstr "Arkaplan müziği" msgstr "Arkaplan müziği"
msgid "Beginning"
msgstr ""
msgid "Big thanks to:" msgid "Big thanks to:"
msgstr "Teşekkürler:" msgstr "Teşekkürler:"
@ -314,6 +317,9 @@ msgstr ""
msgid "Change Play Path" msgid "Change Play Path"
msgstr "" msgstr ""
msgid "Channels"
msgstr "Kanallar"
msgid "Cheatfile is blank" msgid "Cheatfile is blank"
msgstr "Hile dosyası boş" msgstr "Hile dosyası boş"
@ -363,6 +369,9 @@ msgstr ""
msgid "Console should be unlocked to modify it." msgid "Console should be unlocked to modify it."
msgstr "Degiştirmek için konsolun kilidini açmalısın." msgstr "Degiştirmek için konsolun kilidini açmalısın."
msgid "Content"
msgstr ""
msgid "Continue to install game?" msgid "Continue to install game?"
msgstr "Oyunu kurmaya devam et?" msgstr "Oyunu kurmaya devam et?"
@ -1006,6 +1015,9 @@ msgstr "Dosya %s 'ten yüklensin mi?"
msgid "Load this DOL as alternate DOL?" msgid "Load this DOL as alternate DOL?"
msgstr "Bu DOL alternatif DOL olarak mı yüklensin?" msgstr "Bu DOL alternatif DOL olarak mı yüklensin?"
msgid "Loader Mode"
msgstr ""
msgid "Loader Settings" msgid "Loader Settings"
msgstr "" msgstr ""
@ -1063,6 +1075,12 @@ msgstr ""
msgid "Music Volume" msgid "Music Volume"
msgstr "Ses Seviyesi" msgstr "Ses Seviyesi"
msgid "Nand Channel Emulation"
msgstr ""
msgid "Nand Emu Channel Path"
msgstr ""
msgid "Nand Emu Path" msgid "Nand Emu Path"
msgstr "" msgstr ""
@ -1075,6 +1093,9 @@ msgstr ""
msgid "Nand Emulation only works on FAT/FAT32 partitions!" msgid "Nand Emulation only works on FAT/FAT32 partitions!"
msgstr "" msgstr ""
msgid "Nand Saves Emulation"
msgstr ""
msgid "Neither" msgid "Neither"
msgstr "Hiçbiri" msgstr "Hiçbiri"
@ -1360,6 +1381,9 @@ msgstr ""
msgid "Screensaver" msgid "Screensaver"
msgstr "Ekran Koruyucu" msgstr "Ekran Koruyucu"
msgid "Search Mode"
msgstr ""
msgid "Select" msgid "Select"
msgstr "Seç" msgstr "Seç"
@ -1932,9 +1956,6 @@ msgstr "saniye kaldı"
#~ msgid "Back to Wii Menu" #~ msgid "Back to Wii Menu"
#~ msgstr "Wii Menüye dönüş" #~ msgstr "Wii Menüye dönüş"
#~ msgid "Channels"
#~ msgstr "Kanallar"
#~ msgid "Checking existing artwork" #~ msgid "Checking existing artwork"
#~ msgstr "Hazır görsel kontrol ediliyor" #~ msgstr "Hazır görsel kontrol ediliyor"

View File

@ -33,6 +33,7 @@ SOURCES := source \
source/prompts \ source/prompts \
source/wad \ source/wad \
source/banner \ source/banner \
source/Channels \
source/BoxCover \ source/BoxCover \
source/cheats \ source/cheats \
source/homebrewboot \ source/homebrewboot \

View File

@ -1,9 +1,11 @@
#include <wctype.h>
#include "gui.h" #include "gui.h"
#include "gui_searchbar.h" #include "gui_searchbar.h"
#include "../wpad.h" #include "../wpad.h"
#include "../main.h" #include "../main.h"
#include "../settings/CSettings.h" #include "../settings/CSettings.h"
#include "../settings/GameTitles.h"
#include "../themes/CTheme.h" #include "../themes/CTheme.h"
#include "../usbloader/GameList.h" #include "../usbloader/GameList.h"
@ -29,9 +31,11 @@ class cSearchButton
}; };
GuiSearchBar::GuiSearchBar(const std::set<wchar_t> &SearchChars) : static wchar_t lastSearchChar = 0;
inSide(0), text((char *) NULL, 22, ( GXColor ) std::set<wchar_t> GuiSearchBar::SearchChars;
{ 0, 0, 0, 255}), buttons(0),
GuiSearchBar::GuiSearchBar() :
inSide(0), text((char *) NULL, 22, ( GXColor ) {0, 0, 0, 255}), buttons(0),
keyImageData(Resources::GetFile("keyboard_key.png"), Resources::GetFileSize("keyboard_key.png")), keyImageData(Resources::GetFile("keyboard_key.png"), Resources::GetFileSize("keyboard_key.png")),
keyOverImageData(Resources::GetFile("keyboard_key_over.png"), Resources::GetFileSize("keyboard_key_over.png")) keyOverImageData(Resources::GetFile("keyboard_key_over.png"), Resources::GetFileSize("keyboard_key_over.png"))
{ {
@ -63,11 +67,15 @@ GuiSearchBar::GuiSearchBar(const std::set<wchar_t> &SearchChars) :
} }
height = 10 + 42 + y * 42 + 10; height = 10 + 42 + y * 42 + 10;
charstr[0] = Settings.SearchMode == SEARCH_BEGINNING ? L'=' : L'*';
searchModeBtn = new cSearchButton(charstr, &keyImageData, &keyOverImageData, 10, 10, &trig, btnSoundOver, btnSoundClick);
this->Append(&searchModeBtn->button);
text.SetText(gameList.GetCurrentFilter()); text.SetText(gameList.GetCurrentFilter());
text.SetPosition(10, 15); text.SetPosition(55, 15);
text.SetAlignment(ALIGN_LEFT, ALIGN_TOP); text.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
text.SetWidescreen(Settings.widescreen); text.SetWidescreen(Settings.widescreen);
text.SetMaxWidth(width - (10 + 2 * 42 + 10), SCROLL_HORIZONTAL); text.SetMaxWidth(width - (55 + 2 * 42 + 10), SCROLL_HORIZONTAL);
this->Append(&text); this->Append(&text);
imgBacspaceBtn = Resources::GetImageData("keyboard_backspace_over.png"); imgBacspaceBtn = Resources::GetImageData("keyboard_backspace_over.png");
@ -105,6 +113,7 @@ GuiSearchBar::~GuiSearchBar()
delete imgClearBtn; delete imgClearBtn;
delete CloseBtn; delete CloseBtn;
delete searchModeBtn;
delete BacspaceBtn; delete BacspaceBtn;
delete BacspaceBtnImg; delete BacspaceBtnImg;
@ -114,10 +123,8 @@ GuiSearchBar::~GuiSearchBar()
} }
void GuiSearchBar::Draw() void GuiSearchBar::Draw()
{ {
Menu_DrawRectangle(this->GetLeft(), this->GetTop(), width, height, ( GXColor ) Menu_DrawRectangle(this->GetLeft(), this->GetTop(), width, height, ( GXColor ) {0, 0, 0, 0xa0}, 1);
{ 0, 0, 0, 0xa0}, 1); Menu_DrawRectangle(this->GetLeft() + 55, this->GetTop() + 15, width - (55 + 2 * 42 + 10), 22, ( GXColor ) {255, 255, 255, 255}, 1);
Menu_DrawRectangle(this->GetLeft() + 10, this->GetTop() + 15, width - (10 + 2 * 42 + 10), 22, ( GXColor )
{ 255, 255, 255, 255}, 1);
GuiWindow::Draw(); GuiWindow::Draw();
} }
void GuiSearchBar::Update(GuiTrigger * t) void GuiSearchBar::Update(GuiTrigger * t)
@ -146,6 +153,8 @@ void GuiSearchBar::Update(GuiTrigger * t)
} }
wchar_t GuiSearchBar::GetClicked() wchar_t GuiSearchBar::GetClicked()
{ {
lastSearchChar = 0;
if (buttons) if (buttons)
{ {
for (int i = 0; i < cnt; i++) for (int i = 0; i < cnt; i++)
@ -153,15 +162,96 @@ wchar_t GuiSearchBar::GetClicked()
if (buttons[i]->button.GetState() == STATE_CLICKED) if (buttons[i]->button.GetState() == STATE_CLICKED)
{ {
buttons[i]->button.ResetState(); buttons[i]->button.ResetState();
return buttons[i]->wchar; lastSearchChar = buttons[i]->wchar;
} }
} }
} }
if (BacspaceBtn->GetState() == STATE_CLICKED) return 8;
else if (ClearBtn->GetState() == STATE_CLICKED) return 7;
else if (CloseBtn->GetState() == STATE_CLICKED) return 27;
return 0; if (BacspaceBtn->GetState() == STATE_CLICKED) lastSearchChar = 8;
else if (ClearBtn->GetState() == STATE_CLICKED) lastSearchChar = 7;
else if (CloseBtn->GetState() == STATE_CLICKED) lastSearchChar = 27;
else if (searchModeBtn->button.GetState() == STATE_CLICKED) lastSearchChar = 6;
return lastSearchChar;
}
void GuiSearchBar::FilterList(std::vector<struct discHdr *> &List, wString &GameFilter)
{
SearchChars.clear();
for (u32 i = 0; i < List.size(); ++i)
{
struct discHdr *header = List.at(i);
wchar_t *gameName = charToWideChar(GameTitles.GetTitle(header));
if (!gameName)
{
List.erase(List.begin()+i);
i--;
continue;
}
if(Settings.SearchMode == SEARCH_BEGINNING)
{
if (GameFilter.size() > 0 && wcsncasecmp(gameName, GameFilter.c_str(), GameFilter.size()) != 0)
{
delete [] gameName;
List.erase(List.begin()+i);
i--;
continue;
}
if ( wcslen(gameName) > GameFilter.size()
&& SearchChars.find(towupper(gameName[GameFilter.size()])) == SearchChars.end()
&& SearchChars.find(towlower(gameName[GameFilter.size()])) == SearchChars.end())
{
SearchChars.insert(gameName[GameFilter.size()]);
}
}
else if(Settings.SearchMode == SEARCH_CONTENT)
{
if(GameFilter.size() > 0)
{
if (wcscasestr(gameName, GameFilter.c_str()) == 0)
{
delete [] gameName;
List.erase(List.begin()+i);
i--;
continue;
}
const wchar_t *found = gameName;
while((found = wcscasestr(found, GameFilter.c_str())) != 0)
{
found += GameFilter.size();
wchar_t ch = towupper(*found);
if(ch)
SearchChars.insert(ch);
}
}
else
{
for(const wchar_t *wPtr = gameName; *wPtr != 0; wPtr++)
{
wchar_t ch = towupper(*wPtr);
if(ch > L'@')
SearchChars.insert(ch);
}
}
}
delete [] gameName;
}
if(List.size() < 2)
SearchChars.clear();
// If the last character was not backslash try autocomplete
if(SearchChars.size() == 1 && GameFilter.size() > 0 && lastSearchChar != 8)
{
GameFilter += *SearchChars.begin();
FilterList(List, GameFilter);
}
} }
/* /*

View File

@ -1,19 +1,27 @@
#ifndef GUI_SEARCHBAR_H_ #ifndef GUI_SEARCHBAR_H_
#define GUI_SEARCHBAR_H_ #define GUI_SEARCHBAR_H_
#include "gui.h"
#include <set> #include <set>
#include <vector>
#include "gui.h"
#include "usbloader/disc.h"
#include "wstring.hpp"
class cSearchButton; class cSearchButton;
class GuiSearchBar: public GuiWindow class GuiSearchBar: public GuiWindow
{ {
public: public:
GuiSearchBar(const std::set<wchar_t> &SearchChars); GuiSearchBar();
virtual ~GuiSearchBar(); virtual ~GuiSearchBar();
void Draw(); void Draw();
void Update(GuiTrigger * t); void Update(GuiTrigger * t);
wchar_t GetClicked(); wchar_t GetClicked();
static void FilterList(std::vector<struct discHdr *> &List, wString &GameFilter);
private: private:
static std::set<wchar_t> SearchChars;
u16 inSide; u16 inSide;
GuiText text; GuiText text;
@ -30,6 +38,7 @@ class GuiSearchBar: public GuiWindow
GuiButton* CloseBtn; GuiButton* CloseBtn;
cSearchButton *searchModeBtn;
cSearchButton **buttons; cSearchButton **buttons;
int cnt; int cnt;
GuiImageData keyImageData; GuiImageData keyImageData;

View File

@ -1,26 +1,25 @@
#include <gccore.h> #include <gccore.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdarg.h>
#include <malloc.h> #include <malloc.h>
#include <sys/iosupport.h> #include <sys/iosupport.h>
/* init-globals */ /* init-globals */
static bool geckoinit = false; static bool geckoinit = false;
#ifndef NO_DEBUG
#include <stdarg.h>
void gprintf(const char *format, ...) void gprintf(const char *format, ...)
{ {
if (!geckoinit) if (!geckoinit)
return; return;
char * tmp = NULL; static char stringBuf[4096];
int len;
va_list va; va_list va;
va_start(va, format); va_start(va, format);
if((vasprintf(&tmp, format, va) >= 0) && tmp) if((len = vsnprintf(stringBuf, sizeof(stringBuf), format, va)) > 0)
{ {
usb_sendbuffer(1, tmp, strlen(tmp)); usb_sendbuffer(1, stringBuf, len);
#ifdef DEBUG_TO_FILE #ifdef DEBUG_TO_FILE
FILE *debugF = fopen("sd:/debug.txt", "a"); FILE *debugF = fopen("sd:/debug.txt", "a");
if(!debugF) if(!debugF)
@ -31,9 +30,6 @@ void gprintf(const char *format, ...)
#endif #endif
} }
va_end(va); va_end(va);
if(tmp)
free(tmp);
} }
bool InitGecko() bool InitGecko()
@ -84,7 +80,7 @@ void hexdump(void *d, int len)
static ssize_t __out_write(struct _reent *r, int fd, const char *ptr, size_t len) static ssize_t __out_write(struct _reent *r, int fd, const char *ptr, size_t len)
{ {
gprintf(ptr); gprintf("%s", ptr);
return len; return len;
} }
@ -122,5 +118,3 @@ void USBGeckoOutput()
devoptab_list[STD_OUT] = &gecko_out; devoptab_list[STD_OUT] = &gecko_out;
devoptab_list[STD_ERR] = &gecko_out; devoptab_list[STD_ERR] = &gecko_out;
} }
#endif /* NO_DEBUG */

View File

@ -216,13 +216,13 @@ int MainMenu(int menu)
currentMenu = MenuInstall(); currentMenu = MenuInstall();
break; break;
case MENU_SETTINGS: case MENU_SETTINGS:
currentMenu = GlobalSettings::Show(); currentMenu = GlobalSettings::Execute();
break; break;
case MENU_THEMEMENU: case MENU_THEMEMENU:
currentMenu = ThemeMenu::Run(); currentMenu = ThemeMenu::Execute();
break; break;
case MENU_THEMEDOWNLOADER: case MENU_THEMEDOWNLOADER:
currentMenu = ThemeDownloader::Run(); currentMenu = ThemeDownloader::Execute();
break; break;
case MENU_HOMEBREWBROWSE: case MENU_HOMEBREWBROWSE:
currentMenu = HomebrewBrowser::Execute(); currentMenu = HomebrewBrowser::Execute();

View File

@ -59,8 +59,7 @@ GameBrowseMenu::GameBrowseMenu()
GameIDTxt = NULL; GameIDTxt = NULL;
GameRegionTxt = NULL; GameRegionTxt = NULL;
WDVD_GetCoverStatus(&DiscDriveCoverOld); WDVD_GetCoverStatus(&DiscDriveCoverOld);
wString oldFilter(gameList.GetCurrentFilter()); gameList.FilterList();
gameList.FilterList(oldFilter.c_str());
HDDSizeCallback.SetCallback(this, &GameBrowseMenu::UpdateFreeSpace); HDDSizeCallback.SetCallback(this, &GameBrowseMenu::UpdateFreeSpace);
btnInstall = Resources::GetImageData("button_install.png"); btnInstall = Resources::GetImageData("button_install.png");
@ -763,7 +762,7 @@ void GameBrowseMenu::ReloadBrowser()
if (show_searchwindow) if (show_searchwindow)
{ {
searchBar = new GuiSearchBar(gameList.GetAvailableSearchChars()); searchBar = new GuiSearchBar;
mainWindow->Append(searchBar); mainWindow->Append(searchBar);
} }
@ -842,8 +841,7 @@ int GameBrowseMenu::MainLoop()
gprintf("\tLoading font...%s\n", Theme::LoadFont(Settings.theme_path) ? "done" : "failed (using default)"); gprintf("\tLoading font...%s\n", Theme::LoadFont(Settings.theme_path) ? "done" : "failed (using default)");
gprintf("\tLoading theme...%s\n", Theme::Load(Settings.theme) ? "done" : "failed (using default)"); gprintf("\tLoading theme...%s\n", Theme::Load(Settings.theme) ? "done" : "failed (using default)");
bgMusic->Resume(); bgMusic->Resume();
wString oldFilter(gameList.GetCurrentFilter()); gameList.FilterList();
gameList.FilterList(oldFilter.c_str());
ReloadBrowser(); ReloadBrowser();
ResumeGui(); ResumeGui();
sdcardBtn->ResetState(); sdcardBtn->ResetState();
@ -879,13 +877,12 @@ int GameBrowseMenu::MainLoop()
else else
Settings.GameSort |= SORT_FAVORITE; Settings.GameSort |= SORT_FAVORITE;
wString oldFilter(gameList.GetCurrentFilter()); gameList.FilterList();
gameList.FilterList(oldFilter.c_str());
if((Settings.GameSort & SORT_FAVORITE) && gameList.size() == 0) if((Settings.GameSort & SORT_FAVORITE) && gameList.size() == 0)
{ {
Settings.GameSort &= ~SORT_FAVORITE; Settings.GameSort &= ~SORT_FAVORITE;
gameList.FilterList(oldFilter.c_str()); gameList.FilterList();
ShowError(tr("No favorites selected.")); ShowError(tr("No favorites selected."));
} }
else else
@ -896,8 +893,7 @@ int GameBrowseMenu::MainLoop()
{ {
gprintf("\tsearchBtn Clicked\n"); gprintf("\tsearchBtn Clicked\n");
show_searchwindow = !show_searchwindow; show_searchwindow = !show_searchwindow;
wString oldFilter(gameList.GetCurrentFilter()); gameList.FilterList();
gameList.FilterList(oldFilter.c_str());
ReloadBrowser(); ReloadBrowser();
searchBtn->ResetState(); searchBtn->ResetState();
if(show_searchwindow && wcslen(gameList.GetCurrentFilter()) == 0) if(show_searchwindow && wcslen(gameList.GetCurrentFilter()) == 0)
@ -908,39 +904,13 @@ int GameBrowseMenu::MainLoop()
{ {
if (searchChar > 27) //! Character clicked if (searchChar > 27) //! Character clicked
{ {
for(;;) int len = gameList.GetCurrentFilter() ? wcslen(gameList.GetCurrentFilter()) : 0;
{
int len = wcslen(gameList.GetCurrentFilter());
wchar_t newFilter[len + 2]; wchar_t newFilter[len + 2];
wcscpy(newFilter, gameList.GetCurrentFilter()); if (gameList.GetCurrentFilter()) wcscpy(newFilter, gameList.GetCurrentFilter());
newFilter[len] = searchChar; newFilter[len] = searchChar;
newFilter[len + 1] = 0; newFilter[len + 1] = 0;
gameList.FilterList(newFilter); gameList.FilterList(newFilter);
if(gameList.GetAvailableSearchChars().size() != 1)
break;
searchChar = *gameList.GetAvailableSearchChars().begin();
}
bool autoClose = false;
switch(Settings.gameDisplay)
{
case LIST_MODE:
autoClose = gameList.size()<=9;
break;
case CAROUSEL_MODE:
autoClose = gameList.size()<=5;
break;
case GRID_MODE:
autoClose = gameList.size()<=3;
default:
break;
}
if(autoClose) // Close Searchwindow when less than 5 Games found
{
show_searchwindow = false;
searchBtn->StopEffect();
}
} }
else if (searchChar == 27) //! Close else if (searchChar == 27) //! Close
{ {
@ -956,16 +926,16 @@ int GameBrowseMenu::MainLoop()
{ {
int len = wcslen(gameList.GetCurrentFilter()); int len = wcslen(gameList.GetCurrentFilter());
wchar_t newFilter[len + 1]; wchar_t newFilter[len + 1];
wcscpy(newFilter, gameList.GetCurrentFilter()); if (gameList.GetCurrentFilter()) wcscpy(newFilter, gameList.GetCurrentFilter());
int old_game_count = gameList.size(); newFilter[len > 0 ? len - 1 : 0] = 0;
for(; len > 0; len--) gameList.FilterList(newFilter);
{
newFilter[len - 1] = 0; // remove last char
if(len == 1) if(len == 1)
Settings.gridRows = GridRowsPreSearch; //! restore old rows amount so we don't stay on one row Settings.gridRows = GridRowsPreSearch; //! restore old rows amount so we don't stay on one row
if(gameList.FilterList(newFilter) != old_game_count)
break;
} }
else if (searchChar == 6)
{
Settings.SearchMode = Settings.SearchMode == SEARCH_BEGINNING ? SEARCH_CONTENT : SEARCH_BEGINNING;
gameList.FilterList();
} }
ReloadBrowser(); ReloadBrowser();
return MENU_NONE; return MENU_NONE;
@ -996,8 +966,7 @@ int GameBrowseMenu::MainLoop()
Settings.GameSort |= SORT_ABC; Settings.GameSort |= SORT_ABC;
} }
wString oldFilter(gameList.GetCurrentFilter()); gameList.FilterList();
gameList.FilterList(oldFilter.c_str());
ReloadBrowser(); ReloadBrowser();
} }
@ -1065,8 +1034,7 @@ int GameBrowseMenu::MainLoop()
if(WindowPrompt(tr( "Parental Control" ), tr( "Are you sure you want to lock USB Loader GX?" ), tr( "Yes" ), tr( "No" )) == 1) if(WindowPrompt(tr( "Parental Control" ), tr( "Are you sure you want to lock USB Loader GX?" ), tr( "Yes" ), tr( "No" )) == 1)
{ {
Settings.godmode = 0; Settings.godmode = 0;
wString oldFilter(gameList.GetCurrentFilter()); gameList.FilterList();
gameList.FilterList(oldFilter.c_str());
ReloadBrowser(); ReloadBrowser();
} }
} }
@ -1081,8 +1049,7 @@ int GameBrowseMenu::MainLoop()
if(result == 1) if(result == 1)
WindowPrompt( tr( "Correct Password" ), tr( "All the features of USB Loader GX are unlocked." ), tr( "OK" )); WindowPrompt( tr( "Correct Password" ), tr( "All the features of USB Loader GX are unlocked." ), tr( "OK" ));
Settings.godmode = 1; Settings.godmode = 1;
wString oldFilter(gameList.GetCurrentFilter()); gameList.FilterList();
gameList.FilterList(oldFilter.c_str());
ReloadBrowser(); ReloadBrowser();
} }
else if(result < 0) else if(result < 0)
@ -1115,8 +1082,7 @@ int GameBrowseMenu::MainLoop()
mainWindow->SetState(STATE_DEFAULT); mainWindow->SetState(STATE_DEFAULT);
if(promptMenu.categoriesChanged()) if(promptMenu.categoriesChanged())
{ {
wString oldFilter(gameList.GetCurrentFilter()); gameList.FilterList();
gameList.FilterList(oldFilter.c_str());
ReloadBrowser(); ReloadBrowser();
} }
} }

View File

@ -57,8 +57,6 @@ void gamepatches(u8 videoSelected, u8 languageChoice, u8 patchcountrystring,
es_fd = IOS_Open(es_fs, 0); es_fd = IOS_Open(es_fs, 0);
int i; int i;
load_wip_code((u8*) Disc_ID);
/* If a wip file is loaded for this game this does nothing - Dimok */ /* If a wip file is loaded for this game this does nothing - Dimok */
PoPPatch(); PoPPatch();
NSMBPatch(); NSMBPatch();

View File

@ -44,6 +44,8 @@ static int code_size = 0;
static u32 gameconfsize = 0; static u32 gameconfsize = 0;
static u32 *gameconf = NULL; static u32 *gameconf = NULL;
static u32 tempgameconfsize = 0;
static u8 *tempgameconf = NULL;
extern void patchhook(u32 address, u32 len); extern void patchhook(u32 address, u32 len);
@ -342,70 +344,29 @@ void app_pokevalues()
} }
//--------------------------------------------------------------------------------- //---------------------------------------------------------------------------------
static void app_loadgameconfig(const char *CheatFilepath) static void app_loadgameconfig()
//--------------------------------------------------------------------------------- //---------------------------------------------------------------------------------
{ {
gameconfsize = 0;
if (gameconf == NULL) if (gameconf == NULL)
{ {
gameconf = (u32*) malloc(65536); gameconf = (u32*) malloc(65536);
if (gameconf == NULL) if (gameconf == NULL)
return; return;
} }
FILE* fp;
const char *discid = (const char *) Disc_ID; const char *discid = (const char *) Disc_ID;
if(!tempgameconf)
{
tempgameconf = (u8 *) defaultgameconfig;
tempgameconfsize = defaultgameconfig_size;
}
u32 ret; u32 ret;
u32 filesize;
s32 gameidmatch, maxgameidmatch = -1, maxgameidmatch2 = -1; s32 gameidmatch, maxgameidmatch = -1, maxgameidmatch2 = -1;
u32 i, numnonascii, parsebufpos; u32 i, numnonascii, parsebufpos;
u32 codeaddr, codeval, codeaddr2, codeval2, codeoffset; u32 codeaddr, codeval, codeaddr2, codeval2, codeoffset;
u32 temp, tempoffset = 0; u32 temp, tempoffset = 0;
char parsebuffer[18]; char parsebuffer[18];
u8 *tempgameconf = (u8 *) defaultgameconfig;
u32 tempgameconfsize = defaultgameconfig_size;
char filepath[200];
snprintf(filepath, sizeof(filepath), "%s/gameconfig.txt", CheatFilepath);
fp = fopen(filepath, "rb");
if (!fp)
{
snprintf(filepath, sizeof(filepath), "sd:/gameconfig.txt");
fp = fopen(filepath, "rb");
for(i = 1; i <= 8; ++i)
{
if(fp) break;
snprintf(filepath, sizeof(filepath), "usb%i:/gameconfig.txt", i);
fp = fopen(filepath, "rb");
}
}
if (fp)
{
fseek(fp, 0, SEEK_END);
filesize = ftell(fp);
fseek(fp, 0, SEEK_SET);
tempgameconf = (u8*) malloc(filesize);
if (tempgameconf == NULL)
return;
ret = fread((void*) tempgameconf, 1, filesize, fp);
fclose(fp);
if (ret != filesize)
{
free(tempgameconf);
return;
}
tempgameconfsize = filesize;
}
// Remove non-ASCII characters // Remove non-ASCII characters
numnonascii = 0; numnonascii = 0;
for (i = 0; i < tempgameconfsize; i++) for (i = 0; i < tempgameconfsize; i++)
@ -582,7 +543,7 @@ static void app_loadgameconfig(const char *CheatFilepath)
} }
//--------------------------------------------------------------------------------- //---------------------------------------------------------------------------------
void load_handler(const char *gameconfigPath, u32 hooktype, u32 debugger, u32 pauseAtStart) void load_handler(u32 hooktype, u32 debugger, u32 pauseAtStart)
//--------------------------------------------------------------------------------- //---------------------------------------------------------------------------------
{ {
if (hooktype != 0x00) if (hooktype != 0x00)
@ -590,7 +551,7 @@ void load_handler(const char *gameconfigPath, u32 hooktype, u32 debugger, u32 pa
if (debugger == 0x01) if (debugger == 0x01)
codelist = (u8 *) 0x800028B8; codelist = (u8 *) 0x800028B8;
codelistend = (u8 *) 0x80003000; codelistend = (u8 *) 0x80003000;
app_loadgameconfig(gameconfigPath); app_loadgameconfig();
if (debugger == 0x01) if (debugger == 0x01)
{ {
@ -707,6 +668,60 @@ void load_handler(const char *gameconfigPath, u32 hooktype, u32 debugger, u32 pa
} }
} }
static int LoadGameConfig(const char *CheatFilepath)
{
int filesize = 0;
tempgameconf = (u8 *) defaultgameconfig;
tempgameconfsize = defaultgameconfig_size;
gameconfsize = 0;
FILE* fp;
char filepath[200];
snprintf(filepath, sizeof(filepath), "%s/gameconfig.txt", CheatFilepath);
fp = fopen(filepath, "rb");
if (!fp)
{
snprintf(filepath, sizeof(filepath), "sd:/gameconfig.txt");
fp = fopen(filepath, "rb");
int i;
for(i = 1; i <= 8; ++i)
{
if(fp) break;
snprintf(filepath, sizeof(filepath), "usb%i:/gameconfig.txt", i);
fp = fopen(filepath, "rb");
}
}
if (!fp)
return 0;
fseek(fp, 0, SEEK_END);
filesize = ftell(fp);
fseek(fp, 0, SEEK_SET);
tempgameconf = (u8*) malloc(filesize);
if (tempgameconf == NULL) {
fclose(fp);
return -1;
}
int ret = fread((void*) tempgameconf, 1, filesize, fp);
fclose(fp);
if (ret != filesize)
{
free(tempgameconf);
return -1;
}
tempgameconfsize = filesize;
return 0;
}
int ocarina_load_code(const char *CheatFilepath) int ocarina_load_code(const char *CheatFilepath)
{ {
char filepath[150]; char filepath[150];
@ -765,6 +780,8 @@ int ocarina_load_code(const char *CheatFilepath)
gprintf("Ocarina: Codes found.\n"); gprintf("Ocarina: Codes found.\n");
LoadGameConfig(CheatFilepath);
return code_size; return code_size;
} }

View File

@ -31,7 +31,7 @@ extern "C"
// Function prototypes // Function prototypes
void dogamehooks(u32 hooktype, void *addr, u32 len); void dogamehooks(u32 hooktype, void *addr, u32 len);
void load_handler(const char *gameconfigPath, u32 hooktype, u32 debugger, u32 pauseAtStart); void load_handler(u32 hooktype, u32 debugger, u32 pauseAtStart);
void langpatcher(void *addr, u32 len, u8 languageChoice); void langpatcher(void *addr, u32 len, u8 languageChoice);
void vidolpatcher(void *addr, u32 len); void vidolpatcher(void *addr, u32 len);
void patchdebug(void *addr, u32 len); void patchdebug(void *addr, u32 len);

View File

@ -174,6 +174,7 @@ GameWindow::GameWindow(int Selected)
if (!mountMethod)//stuff we don't show if it is a DVD mounted if (!mountMethod)//stuff we don't show if it is a DVD mounted
{ {
Append(nameBtn); Append(nameBtn);
if(Settings.LoaderMode != LOAD_CHANNELS)
Append(sizeTxt); Append(sizeTxt);
Append(btnLeft); Append(btnLeft);
Append(btnRight); Append(btnRight);
@ -411,13 +412,14 @@ void GameWindow::SetWindowEffect(int direction, int in_out)
void GameWindow::ChangeGame(int EffectDirection) void GameWindow::ChangeGame(int EffectDirection)
{ {
struct discHdr * header = (mountMethod ? dvdheader : gameList[gameSelected]); struct discHdr * header = (mountMethod ? dvdheader : gameList[gameSelected]);
LoadGameSound(header->id); if(Settings.LoaderMode != LOAD_CHANNELS)
LoadGameSound(header->id); // Temporary no sounds for channels, will be added later
LoadDiscImage(header->id); LoadDiscImage(header->id);
SetWindowEffect(EffectDirection, OUT); SetWindowEffect(EffectDirection, OUT);
HaltGui(); HaltGui();
if (!mountMethod) if (!mountMethod && Settings.LoaderMode != LOAD_CHANNELS)
{ {
float size = 0.0f; float size = 0.0f;
WBFS_GameSize(header->id, &size); WBFS_GameSize(header->id, &size);
@ -486,7 +488,7 @@ int GameWindow::MainLoop()
ResumeGui(); ResumeGui();
wiilight(0); wiilight(0);
int settret = GameSettingsMenu::Show(browserMenu, mountMethod ? dvdheader : gameList[gameSelected]); int settret = GameSettingsMenu::Execute(browserMenu, mountMethod ? dvdheader : gameList[gameSelected]);
SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50); SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
if(parentElement) if(parentElement)

View File

@ -26,6 +26,8 @@
#include "../usbloader/utils.h" #include "../usbloader/utils.h"
#include "../gecko.h" #include "../gecko.h"
#include "Controls/DeviceHandler.hpp"
#include "usbloader/NandEmu.h"
extern u8 shutdown; extern u8 shutdown;
extern u8 reset; extern u8 reset;
@ -199,7 +201,6 @@ bool TitleSelector(char output[])
int TitleBrowser() int TitleBrowser()
{ {
u32 num_titles; u32 num_titles;
u32 num_sys_titles; u32 num_sys_titles;
s32 ret = -1; s32 ret = -1;

View File

@ -300,7 +300,7 @@ void CGameCategories::RemoveCategory(const char *gameID, unsigned int id)
if(!gameID) return; if(!gameID) return;
string gameID6; string gameID6;
for(int i = 0; i < 6; ++i) for(int i = 0; i < 6 && gameID[i] != 0; ++i)
gameID6.push_back(gameID[i]); gameID6.push_back(gameID[i]);
RemoveCategory(gameID6, id); RemoveCategory(gameID6, id);
@ -333,7 +333,7 @@ bool CGameCategories::isInCategory(const char *gameID, unsigned int id)
if(!gameID) return false; if(!gameID) return false;
string gameID6; string gameID6;
for(int i = 0; i < 6; ++i) for(int i = 0; i < 6 && gameID[i] != 0; ++i)
gameID6.push_back(gameID[i]); gameID6.push_back(gameID[i]);
for (map<string, vector<unsigned int> >::iterator itr = GameCategories.List.begin(); itr != GameCategories.List.end(); itr++) for (map<string, vector<unsigned int> >::iterator itr = GameCategories.List.begin(); itr != GameCategories.List.end(); itr++)

View File

@ -383,7 +383,7 @@ void CGameSettings::ParseLine(char *line)
if(!ReadGameID(line, GameID, 6)) if(!ReadGameID(line, GameID, 6))
return; return;
if(strlen(GameID) != 6) if(strlen(GameID) != 6 && strlen(GameID) != 4)
return; return;
GameCFG NewCFG; GameCFG NewCFG;

View File

@ -217,7 +217,7 @@ void CGameStatistics::ParseLine(char *line)
if(!ReadGameID(line, GameID, 6)) if(!ReadGameID(line, GameID, 6))
return; return;
if(strlen(GameID) != 6) if(strlen(GameID) != 6 && strlen(GameID) != 4)
return; return;
GameStatus NewGame; GameStatus NewGame;

View File

@ -71,6 +71,7 @@ void CSettings::SetDefault()
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);
snprintf(NandEmuPath, sizeof(NandEmuPath), "%s/nand/", BootDevice); snprintf(NandEmuPath, sizeof(NandEmuPath), "%s/nand/", BootDevice);
strcpy(NandEmuChanPath, NandEmuPath);
strcpy(theme, ""); strcpy(theme, "");
strcpy(language_path, ""); strcpy(language_path, "");
strcpy(ogg_path, ""); strcpy(ogg_path, "");
@ -128,12 +129,15 @@ void CSettings::SetDefault()
GameListOffset = 0; GameListOffset = 0;
sneekVideoPatch = OFF; sneekVideoPatch = OFF;
NandEmuMode = OFF; NandEmuMode = OFF;
NandEmuChanMode = OFF;
UseSystemFont = ON; UseSystemFont = ON;
Hooktype = 0; Hooktype = 0;
WiirdDebugger = OFF; WiirdDebugger = OFF;
WiirdDebuggerPause = OFF; WiirdDebuggerPause = OFF;
ShowPlayCount = ON; ShowPlayCount = ON;
RememberUnlock = ON; RememberUnlock = ON;
LoaderMode = LOAD_GAMES;
SearchMode = SEARCH_BEGINNING;
} }
bool CSettings::Load() bool CSettings::Load()
@ -296,11 +300,15 @@ bool CSettings::Save()
fprintf(file, "sneekVideoPatch = %d\n", sneekVideoPatch); fprintf(file, "sneekVideoPatch = %d\n", sneekVideoPatch);
fprintf(file, "NandEmuMode = %d\n", NandEmuMode); fprintf(file, "NandEmuMode = %d\n", NandEmuMode);
fprintf(file, "NandEmuPath = %s\n", NandEmuPath); fprintf(file, "NandEmuPath = %s\n", NandEmuPath);
fprintf(file, "NandEmuChanMode = %d\n", NandEmuChanMode);
fprintf(file, "NandEmuChanPath = %s\n", NandEmuChanPath);
fprintf(file, "UseSystemFont = %d\n", UseSystemFont); fprintf(file, "UseSystemFont = %d\n", UseSystemFont);
fprintf(file, "Hooktype = %d\n", Hooktype); fprintf(file, "Hooktype = %d\n", Hooktype);
fprintf(file, "WiirdDebugger = %d\n", WiirdDebugger); fprintf(file, "WiirdDebugger = %d\n", WiirdDebugger);
fprintf(file, "WiirdDebuggerPause = %d\n", WiirdDebuggerPause); fprintf(file, "WiirdDebuggerPause = %d\n", WiirdDebuggerPause);
fprintf(file, "ShowPlayCount = %d\n", ShowPlayCount); fprintf(file, "ShowPlayCount = %d\n", ShowPlayCount);
fprintf(file, "LoaderMode = %d\n", LoaderMode);
fprintf(file, "SearchMode = %d\n", SearchMode);
fclose(file); fclose(file);
return true; return true;
@ -610,6 +618,18 @@ bool CSettings::SetSetting(char *name, char *value)
{ {
if (sscanf(value, "%d", &i) == 1) NandEmuMode = i; if (sscanf(value, "%d", &i) == 1) NandEmuMode = i;
} }
else if(strcmp(name, "NandEmuChanMode") == 0)
{
if (sscanf(value, "%d", &i) == 1) NandEmuChanMode = i;
}
else if(strcmp(name, "LoaderMode") == 0)
{
if (sscanf(value, "%d", &i) == 1) LoaderMode = i;
}
else if(strcmp(name, "SearchMode") == 0)
{
if (sscanf(value, "%d", &i) == 1) SearchMode = i;
}
else if (strcmp(name, "InstallPartitions") == 0) else if (strcmp(name, "InstallPartitions") == 0)
{ {
InstallPartitions = strtoul(value, 0, 16); InstallPartitions = strtoul(value, 0, 16);
@ -735,6 +755,11 @@ bool CSettings::SetSetting(char *name, char *value)
strcpy(NandEmuPath, value); strcpy(NandEmuPath, value);
return true; return true;
} }
else if (strcmp(name, "NandEmuChanPath") == 0)
{
strcpy(NandEmuChanPath, value);
return true;
}
else if (strcmp(name, "EnabledCategories") == 0) else if (strcmp(name, "EnabledCategories") == 0)
{ {
EnabledCategories.clear(); EnabledCategories.clear();

View File

@ -75,6 +75,7 @@ class CSettings
char WDMpath[100]; char WDMpath[100];
char WiinnertagPath[100]; char WiinnertagPath[100];
char NandEmuPath[50]; char NandEmuPath[50];
char NandEmuChanPath[50];
short videomode; short videomode;
short language; short language;
short ocarina; short ocarina;
@ -128,12 +129,15 @@ class CSettings
std::vector<u32> EnabledCategories; std::vector<u32> EnabledCategories;
u8 EntryIOS; u8 EntryIOS;
short NandEmuMode; short NandEmuMode;
short NandEmuChanMode;
short UseSystemFont; short UseSystemFont;
short Hooktype; short Hooktype;
short WiirdDebugger; short WiirdDebugger;
short WiirdDebuggerPause; short WiirdDebuggerPause;
short ShowPlayCount; short ShowPlayCount;
short RememberUnlock; short RememberUnlock;
short LoaderMode;
short SearchMode;
protected: protected:
bool ValidVersion(FILE * file); bool ValidVersion(FILE * file);
bool SetSetting(char *name, char *value); bool SetSetting(char *name, char *value);

View File

@ -2,6 +2,7 @@
#include "GameTitles.h" #include "GameTitles.h"
#include "CSettings.h" #include "CSettings.h"
#include "usbloader/GameList.h" #include "usbloader/GameList.h"
#include "Channels/channels.h"
#include "xml/GameTDB.hpp" #include "xml/GameTDB.hpp"
CGameTitles GameTitles; CGameTitles GameTitles;
@ -38,10 +39,6 @@ const char * CGameTitles::GetTitle(const char * id) const
return TitleList[i].Title.c_str(); return TitleList[i].Title.c_str();
} }
//! Since not found in the GameTDB search in the game header for a title
if(gameList.GameCount() != gameList.size())
gameList.LoadUnfiltered();
for(int i = 0; i < gameList.size(); ++i) for(int i = 0; i < gameList.size(); ++i)
{ {
if(strncasecmp(id, (char *) gameList[i]->id, 6) == 0) if(strncasecmp(id, (char *) gameList[i]->id, 6) == 0)
@ -178,15 +175,21 @@ void CGameTitles::WriteCachedTitles(const char * path)
void CGameTitles::RemoveUnusedCache(std::vector<std::string> &MissingTitles) void CGameTitles::RemoveUnusedCache(std::vector<std::string> &MissingTitles)
{ {
std::vector<struct discHdr> &FullList = gameList.GetFullGameList();
if(FullList.empty())
gameList.ReadGameList();
std::vector<struct discHdr> &ChanList = Channels::Instance()->GetDiscHeaderList();
std::vector<bool> UsedCachedList(TitleList.size(), false); std::vector<bool> UsedCachedList(TitleList.size(), false);
for(int i = 0; i < gameList.GameCount(); ++i) for(u32 i = 0; i < FullList.size(); ++i)
{ {
bool isCached = false; bool isCached = false;
for(u32 n = 0; n < TitleList.size(); ++n) for(u32 n = 0; n < TitleList.size(); ++n)
{ {
if(strncasecmp(TitleList[n].GameID, (const char *) gameList[i]->id, 6) == 0) if(strncasecmp(TitleList[n].GameID, (const char *) FullList[i].id, 6) == 0)
{ {
UsedCachedList[n] = true; UsedCachedList[n] = true;
isCached = true; isCached = true;
@ -197,7 +200,29 @@ void CGameTitles::RemoveUnusedCache(std::vector<std::string> &MissingTitles)
if(!isCached) if(!isCached)
{ {
char gameID[7]; char gameID[7];
snprintf(gameID, sizeof(gameID), (const char *) gameList[i]->id); snprintf(gameID, sizeof(gameID), (const char *) FullList[i].id);
MissingTitles.push_back(std::string(gameID));
}
}
for(u32 i = 0; i < ChanList.size(); ++i)
{
bool isCached = false;
for(u32 n = 0; n < TitleList.size(); ++n)
{
if(strncasecmp(TitleList[n].GameID, (const char *) ChanList[i].id, 4) == 0)
{
UsedCachedList[n] = true;
isCached = true;
break;
}
}
if(!isCached)
{
char gameID[7];
snprintf(gameID, sizeof(gameID), (const char *) ChanList[i].id);
MissingTitles.push_back(std::string(gameID)); MissingTitles.push_back(std::string(gameID));
} }
} }

View File

@ -9,6 +9,12 @@ enum
AUTO = 2 AUTO = 2
}; };
enum
{
LOAD_GAMES = 0,
LOAD_CHANNELS = 1
};
enum enum
{ {
JAPANESE, JAPANESE,
@ -195,4 +201,11 @@ enum
HOME_MENU_MAX_CHOICE, HOME_MENU_MAX_CHOICE,
}; };
enum
{
SEARCH_BEGINNING,
SEARCH_CONTENT,
SEARCH_MAX_CHOICE
};
#endif #endif

View File

@ -22,10 +22,12 @@
* distribution. * distribution.
***************************************************************************/ ***************************************************************************/
#include <unistd.h> #include <unistd.h>
#include "Channels/channels.h"
#include "Controls/DeviceHandler.hpp" #include "Controls/DeviceHandler.hpp"
#include "CustomPathsSM.hpp" #include "CustomPathsSM.hpp"
#include "settings/SettingsPrompts.h" #include "settings/SettingsPrompts.h"
#include "settings/CSettings.h" #include "settings/CSettings.h"
#include "settings/SettingsEnums.h"
#include "prompts/PromptWindows.h" #include "prompts/PromptWindows.h"
#include "language/gettext.h" #include "language/gettext.h"
#include "prompts/filebrowser.h" #include "prompts/filebrowser.h"
@ -53,6 +55,7 @@ CustomPathsSM::CustomPathsSM()
Options->SetName(Idx++, tr("WDM Files Path")); Options->SetName(Idx++, tr("WDM Files Path"));
Options->SetName(Idx++, tr("Wiinnertag Path")); Options->SetName(Idx++, tr("Wiinnertag Path"));
Options->SetName(Idx++, tr("Nand Emu Path")); Options->SetName(Idx++, tr("Nand Emu Path"));
Options->SetName(Idx++, tr("Nand Emu Channel Path"));
SetOptionValues(); SetOptionValues();
} }
@ -111,6 +114,9 @@ void CustomPathsSM::SetOptionValues()
//! Settings: Nand Emu Path //! Settings: Nand Emu Path
Options->SetValue(Idx++, Settings.NandEmuPath); Options->SetValue(Idx++, Settings.NandEmuPath);
//! Settings: Nand Emu Channel Path
Options->SetValue(Idx++, Settings.NandEmuChanPath);
} }
int CustomPathsSM::GetMenuInternal() int CustomPathsSM::GetMenuInternal()
@ -249,6 +255,25 @@ int CustomPathsSM::GetMenuInternal()
} }
} }
//! Settings: Nand Emu Channel Path
else if (ret == ++Idx)
{
char oldPath[sizeof(Settings.NandEmuChanPath)];
snprintf(oldPath, sizeof(oldPath), Settings.NandEmuChanPath);
titleTxt->SetText(tr( "Nand Emu Channel Path" ));
ChangePath(Settings.NandEmuChanPath, sizeof(Settings.NandEmuChanPath));
if(strncasecmp(DeviceHandler::PathToFSName(Settings.NandEmuChanPath), "FAT", 3) != 0)
{
snprintf(Settings.NandEmuChanPath, sizeof(Settings.NandEmuChanPath), oldPath);
WindowPrompt(tr("Error:"), tr("Nand Emulation only works on FAT/FAT32 partitions!"), tr("OK"));
}
else if(Settings.NandEmuChanMode != OFF)
{
Channels::Instance()->GetEmuChannelList();
}
}
//! Global set back of the titleTxt after a change //! Global set back of the titleTxt after a change
titleTxt->SetText(tr( "Custom Paths" )); titleTxt->SetText(tr( "Custom Paths" ));
SetOptionValues(); SetOptionValues();

View File

@ -96,6 +96,12 @@ static const char * HomeMenuText[HOME_MENU_MAX_CHOICE] =
trNOOP( "Default" ) trNOOP( "Default" )
}; };
static const char * searchModeText[] =
{
trNOOP( "Beginning" ),
trNOOP( "Content" ),
};
GuiSettingsMenu::GuiSettingsMenu() GuiSettingsMenu::GuiSettingsMenu()
: SettingsMenu(tr("GUI Settings"), &GuiOptions, MENU_NONE) : SettingsMenu(tr("GUI Settings"), &GuiOptions, MENU_NONE)
{ {
@ -116,6 +122,7 @@ GuiSettingsMenu::GuiSettingsMenu()
Options->SetName(Idx++, "%s", tr( "Show Free Space" )); Options->SetName(Idx++, "%s", tr( "Show Free Space" ));
Options->SetName(Idx++, "%s", tr( "HOME Menu" )); Options->SetName(Idx++, "%s", tr( "HOME Menu" ));
Options->SetName(Idx++, "%s", tr( "Use System Font" )); Options->SetName(Idx++, "%s", tr( "Use System Font" ));
Options->SetName(Idx++, "%s", tr( "Search Mode" ));
SetOptionValues(); SetOptionValues();
} }
@ -183,6 +190,9 @@ void GuiSettingsMenu::SetOptionValues()
//! Settings: Use System Font //! Settings: Use System Font
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.UseSystemFont] )); Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.UseSystemFont] ));
//! Settings: Search Mode
Options->SetValue(Idx++, "%s", tr( searchModeText[Settings.SearchMode] ));
} }
int GuiSettingsMenu::GetMenuInternal() int GuiSettingsMenu::GetMenuInternal()
@ -359,6 +369,12 @@ int GuiSettingsMenu::GetMenuInternal()
Settings.FontScaleFactor = 1.0f; Settings.FontScaleFactor = 1.0f;
} }
//! Settings: Search Mode
else if (ret == ++Idx)
{
if (++Settings.SearchMode >= SEARCH_MAX_CHOICE) Settings.SearchMode = 0;
}
SetOptionValues(); SetOptionValues();
return MENU_NONE; return MENU_NONE;

View File

@ -47,7 +47,7 @@ GameSettingsMenu::~GameSettingsMenu()
{ {
} }
int GameSettingsMenu::Show(GameBrowseMenu *parent, struct discHdr * header) int GameSettingsMenu::Execute(GameBrowseMenu *parent, struct discHdr * header)
{ {
GameSettingsMenu * Menu = new GameSettingsMenu(parent, header); GameSettingsMenu * Menu = new GameSettingsMenu(parent, header);
mainWindow->Append(Menu); mainWindow->Append(Menu);
@ -124,8 +124,7 @@ void GameSettingsMenu::CreateSettingsMenu(int menuNr)
mainWindow->Remove(&promptMenu); mainWindow->Remove(&promptMenu);
if(promptMenu.categoriesChanged()) if(promptMenu.categoriesChanged())
{ {
wString oldFilter(gameList.GetCurrentFilter()); gameList.FilterList();
gameList.FilterList(oldFilter.c_str());
browserMenu->ReloadBrowser(); browserMenu->ReloadBrowser();
} }
mainWindow->SetState(STATE_DEFAULT); mainWindow->SetState(STATE_DEFAULT);

View File

@ -34,7 +34,7 @@ class GameSettingsMenu : public FlyingButtonsMenu
public: public:
GameSettingsMenu(GameBrowseMenu *parent, struct discHdr * header); GameSettingsMenu(GameBrowseMenu *parent, struct discHdr * header);
virtual ~GameSettingsMenu(); virtual ~GameSettingsMenu();
static int Show(GameBrowseMenu *parent, struct discHdr *header); static int Execute(GameBrowseMenu *parent, struct discHdr *header);
protected: protected:
virtual void CreateSettingsMenu(int index); virtual void CreateSettingsMenu(int index);
virtual void DeleteSettingsMenu(); virtual void DeleteSettingsMenu();

View File

@ -49,7 +49,7 @@ GlobalSettings::~GlobalSettings()
delete creditsImgOverData; delete creditsImgOverData;
} }
int GlobalSettings::Show() int GlobalSettings::Execute()
{ {
GlobalSettings * Menu = new GlobalSettings(); GlobalSettings * Menu = new GlobalSettings();
mainWindow->Append(Menu); mainWindow->Append(Menu);

View File

@ -31,7 +31,7 @@ class GlobalSettings : public FlyingButtonsMenu
public: public:
GlobalSettings(); GlobalSettings();
virtual ~GlobalSettings(); virtual ~GlobalSettings();
static int Show(); static int Execute();
protected: protected:
virtual void CreateSettingsMenu(int index); virtual void CreateSettingsMenu(int index);
virtual void DeleteSettingsMenu(); virtual void DeleteSettingsMenu();

View File

@ -25,6 +25,7 @@
#include "LoaderSettings.hpp" #include "LoaderSettings.hpp"
#include "usbloader/usbstorage2.h" #include "usbloader/usbstorage2.h"
#include "settings/CSettings.h" #include "settings/CSettings.h"
#include "settings/GameTitles.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"
@ -32,6 +33,12 @@
#include "system/IosLoader.h" #include "system/IosLoader.h"
#include "menu.h" #include "menu.h"
static const char * dispMethText[] =
{
trNOOP( "Games" ),
trNOOP( "Channels" )
};
static const char * OnOffText[] = static const char * OnOffText[] =
{ {
trNOOP( "OFF" ), trNOOP( "OFF" ),
@ -97,6 +104,7 @@ LoaderSettings::LoaderSettings()
{ {
int Idx = 0; int Idx = 0;
Options->SetName(Idx++, "%s", tr( "Loader Mode" ));
Options->SetName(Idx++, "%s", tr( "Video Mode" )); Options->SetName(Idx++, "%s", tr( "Video Mode" ));
Options->SetName(Idx++, "%s", tr( "VIDTV Patch" )); Options->SetName(Idx++, "%s", tr( "VIDTV Patch" ));
Options->SetName(Idx++, "%s", tr( "Sneek Video Patch" )); Options->SetName(Idx++, "%s", tr( "Sneek Video Patch" ));
@ -108,18 +116,30 @@ LoaderSettings::LoaderSettings()
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( "Return To" )); Options->SetName(Idx++, "%s", tr( "Return To" ));
Options->SetName(Idx++, "%s", tr( "Nand Emulation" )); Options->SetName(Idx++, "%s", tr( "Nand Saves Emulation" ));
Options->SetName(Idx++, "%s", tr( "Nand Channel Emulation" ));
Options->SetName(Idx++, "%s", tr( "Hooktype" )); Options->SetName(Idx++, "%s", tr( "Hooktype" ));
Options->SetName(Idx++, "%s", tr( "Wiird Debugger" )); Options->SetName(Idx++, "%s", tr( "Wiird Debugger" ));
Options->SetName(Idx++, "%s", tr( "Debugger Paused Start" )); Options->SetName(Idx++, "%s", tr( "Debugger Paused Start" ));
SetOptionValues(); SetOptionValues();
oldLoaderMode = Settings.LoaderMode;
}
LoaderSettings::~LoaderSettings()
{
if(oldLoaderMode != Settings.LoaderMode)
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
} }
void LoaderSettings::SetOptionValues() void LoaderSettings::SetOptionValues()
{ {
int Idx = 0; int Idx = 0;
//! Settings: Loader Mode
Options->SetValue(Idx++, "%s", tr(dispMethText[Settings.LoaderMode]));
//! Settings: Video Mode //! Settings: Video Mode
Options->SetValue(Idx++, "%s", tr(VideoModeText[Settings.videomode])); Options->SetValue(Idx++, "%s", tr(VideoModeText[Settings.videomode]));
@ -165,6 +185,9 @@ void LoaderSettings::SetOptionValues()
//! Settings: Nand Emulation //! Settings: Nand Emulation
Options->SetValue(Idx++, "%s", tr( NandEmuText[Settings.NandEmuMode] )); Options->SetValue(Idx++, "%s", tr( NandEmuText[Settings.NandEmuMode] ));
//! Settings: Nand Channel Emulation
Options->SetValue(Idx++, "%s", tr( NandEmuText[Settings.NandEmuChanMode] ));
//! Settings: Hooktype //! Settings: Hooktype
Options->SetValue(Idx++, "%s", tr( HooktypeText[Settings.Hooktype] )); Options->SetValue(Idx++, "%s", tr( HooktypeText[Settings.Hooktype] ));
@ -184,6 +207,12 @@ int LoaderSettings::GetMenuInternal()
int Idx = -1; int Idx = -1;
//! Settings: Loader Mode
if (ret == ++Idx)
{
if (++Settings.LoaderMode >= MAX_ON_OFF) Settings.LoaderMode = LOAD_GAMES;
}
//! Settings: Video Mode //! Settings: Video Mode
if (ret == ++Idx) if (ret == ++Idx)
{ {
@ -280,6 +309,14 @@ int LoaderSettings::GetMenuInternal()
else if (++Settings.NandEmuMode >= 3) Settings.NandEmuMode = 0; else if (++Settings.NandEmuMode >= 3) Settings.NandEmuMode = 0;
} }
//! Settings: Nand Channel Emulation
else if (ret == ++Idx )
{
if(!IosLoader::IsD2X())
WindowPrompt(tr("Error:"), tr("Nand Emulation is only available on D2X cIOS!"), tr("OK"));
else if (++Settings.NandEmuChanMode >= 3) Settings.NandEmuChanMode = 0;
}
//! Settings: Hooktype //! Settings: Hooktype
else if (ret == ++Idx ) else if (ret == ++Idx )
{ {

View File

@ -30,10 +30,12 @@ class LoaderSettings : public SettingsMenu
{ {
public: public:
LoaderSettings(); LoaderSettings();
~LoaderSettings();
protected: protected:
void SetOptionValues(); void SetOptionValues();
int GetMenuInternal(); int GetMenuInternal();
short oldLoaderMode;
OptionList GuiOptions; OptionList GuiOptions;
}; };

View File

@ -108,7 +108,7 @@ ThemeDownloader::~ThemeDownloader()
delete ThemePreviews[i]; delete ThemePreviews[i];
} }
int ThemeDownloader::Run() int ThemeDownloader::Execute()
{ {
ThemeDownloader * Menu = new ThemeDownloader(); ThemeDownloader * Menu = new ThemeDownloader();
mainWindow->Append(Menu); mainWindow->Append(Menu);

View File

@ -32,7 +32,7 @@ class ThemeDownloader : public FlyingButtonsMenu
public: public:
ThemeDownloader(); ThemeDownloader();
virtual ~ThemeDownloader(); virtual ~ThemeDownloader();
static int Run(); static int Execute();
int MainLoop(); int MainLoop();
protected: protected:
void CreateSettingsMenu(int index) { MainButtonClicked(index); }; void CreateSettingsMenu(int index) { MainButtonClicked(index); };

View File

@ -89,7 +89,7 @@ ThemeMenu::~ThemeMenu()
delete ThemePreviews[i]; delete ThemePreviews[i];
} }
int ThemeMenu::Run() int ThemeMenu::Execute()
{ {
ThemeMenu * Menu = new ThemeMenu(); ThemeMenu * Menu = new ThemeMenu();
mainWindow->Append(Menu); mainWindow->Append(Menu);

View File

@ -35,7 +35,7 @@ class ThemeMenu : public FlyingButtonsMenu
public: public:
ThemeMenu(); ThemeMenu();
virtual ~ThemeMenu(); virtual ~ThemeMenu();
static int Run(); static int Execute();
int MainLoop(); int MainLoop();
protected: protected:
void CreateSettingsMenu(int index) { MainButtonClicked(index); }; void CreateSettingsMenu(int index) { MainButtonClicked(index); };

View File

@ -20,6 +20,7 @@
#include "mload/mload_modules.h" #include "mload/mload_modules.h"
#include "system/IosLoader.h" #include "system/IosLoader.h"
#include "Controls/DeviceHandler.hpp" #include "Controls/DeviceHandler.hpp"
#include "Channels/channels.h"
#include "usbloader/disc.h" #include "usbloader/disc.h"
#include "usbloader/apploader.h" #include "usbloader/apploader.h"
#include "usbloader/usbstorage2.h" #include "usbloader/usbstorage2.h"
@ -134,28 +135,28 @@ void GameBooter::SetupAltDOL(u8 * gameID, u8 &alternatedol, u32 &alternatedoloff
alternatedol = OFF; alternatedol = OFF;
} }
void GameBooter::SetupNandEmu(u8 NandEmuMode, struct discHdr &gameHeader) void GameBooter::SetupNandEmu(u8 NandEmuMode, const char *NandEmuPath, struct discHdr &gameHeader)
{ {
if(NandEmuMode && strchr(Settings.NandEmuPath, '/')) if(NandEmuMode && strchr(NandEmuPath, '/'))
{ {
//! Create save game path and title.tmd for not existing saves //! Create save game path and title.tmd for not existing saves
CreateSavePath(&gameHeader); CreateSavePath(&gameHeader);
gprintf("Enabling Nand Emulation on: %s\n", Settings.NandEmuPath); gprintf("Enabling Nand Emulation on: %s\n", NandEmuPath);
Set_FullMode(NandEmuMode == 2); Set_FullMode(NandEmuMode == 2);
Set_Path(strchr(Settings.NandEmuPath, '/')); Set_Path(strchr(NandEmuPath, '/'));
//! Set which partition to use (USB only) //! Set which partition to use (USB only)
if(strncmp(Settings.NandEmuPath, "usb", 3) == 0) if(strncmp(NandEmuPath, "usb", 3) == 0)
Set_Partition(atoi(Settings.NandEmuPath+3)-1); Set_Partition(atoi(NandEmuPath+3)-1);
//! Unmount SD since NAND Emu mount fails otherwise //! Unmount SD since NAND Emu mount fails otherwise
else if(strncmp(Settings.NandEmuPath, "sd", 2) == 0) else if(strncmp(NandEmuPath, "sd", 2) == 0)
DeviceHandler::Instance()->UnMountSD(); DeviceHandler::Instance()->UnMountSD();
Enable_Emu(strncmp(Settings.NandEmuPath, "usb", 3) == 0 ? EMU_USB : EMU_SD); Enable_Emu(strncmp(NandEmuPath, "usb", 3) == 0 ? EMU_USB : EMU_SD);
//! Remount SD again after activating NAND emu //! Remount SD again after activating NAND emu
if(strncmp(Settings.NandEmuPath, "sd", 2) == 0) if(strncmp(NandEmuPath, "sd", 2) == 0)
DeviceHandler::Instance()->MountSD(); DeviceHandler::Instance()->MountSD();
} }
} }
@ -259,8 +260,21 @@ int GameBooter::BootGame(const char * gameID)
Playlog_Update((char *) gameHeader.id, BNRInstance::Instance()->GetIMETTitle(CONF_GetLanguage())); Playlog_Update((char *) gameHeader.id, BNRInstance::Instance()->GetIMETTitle(CONF_GetLanguage()));
//! Setup NAND emulation //! Setup NAND emulation
SetupNandEmu(NandEmuMode, gameHeader); if(Settings.LoaderMode != LOAD_CHANNELS)
SetupNandEmu(NandEmuMode, Settings.NandEmuPath, gameHeader);
else
SetupNandEmu(Settings.NandEmuChanMode, Settings.NandEmuChanPath, gameHeader);
// Load wip codes
load_wip_code(gameHeader.id);
//! Load Ocarina codes
if (ocarinaChoice)
ocarina_load_code(Settings.Cheatcodespath);
//! Setup disc stuff if we load a game
if(Settings.LoaderMode != LOAD_CHANNELS)
{
//! Setup disc in cIOS and open it //! Setup disc in cIOS and open it
ret = SetupDisc(gameHeader.id); ret = SetupDisc(gameHeader.id);
if (ret < 0) if (ret < 0)
@ -270,6 +284,7 @@ int GameBooter::BootGame(const char * gameID)
gprintf("Loading BCA data..."); gprintf("Loading BCA data...");
ret = do_bca_code(Settings.BcaCodepath, gameHeader.id); ret = do_bca_code(Settings.BcaCodepath, gameHeader.id);
gprintf("%d\n", ret); gprintf("%d\n", ret);
}
//! Setup IOS reload block //! Setup IOS reload block
if (IosLoader::IsHermesIOS()) if (IosLoader::IsHermesIOS())
@ -290,16 +305,38 @@ int GameBooter::BootGame(const char * gameID)
reloadblock = 0; reloadblock = 0;
} }
//! Now we can free up the memory used by the game list //! Now we can free up the memory used by the game/channel lists
gameList.clear(); gameList.clear();
Channels::DestroyInstance();
//! Load main.dol or alternative dol into memory, start the game apploader and get game entrypoint //! Load main.dol or alternative dol into memory, start the game apploader and get game entrypoint
gprintf("\tDisc_wiiBoot\n"); if(Settings.LoaderMode != LOAD_CHANNELS)
{
gprintf("\tGame Boot\n");
AppEntrypoint = BootPartition(Settings.dolpath, videoChoice, alternatedol, alternatedoloffset); AppEntrypoint = BootPartition(Settings.dolpath, videoChoice, alternatedol, alternatedoloffset);
//! Flush all caches and close up all devices
DeviceHandler::DestroyInstance();
}
else
{
gprintf("\tChannel Boot\n");
//! Flush all caches and close up all devices
//! Avoid later crashs with free if memory gets overwritten by game
DeviceHandler::DestroyInstance();
/* Setup low memory */
Disc_SetLowMem();
/* Setup video mode */
Disc_SelectVMode(videoChoice);
// Load dol
u64 tid;
memcpy(&tid, gameHeader.tid, 8);
AppEntrypoint = Channels::LoadChannel(tid);
}
//! No entrypoint found...back to HBC/SystemMenu //! No entrypoint found...back to HBC/SystemMenu
if(AppEntrypoint == 0) if(AppEntrypoint == 0)
{ {
gprintf("AppEntryPoint is 0, something went wrong\n");
WDVD_ClosePartition(); WDVD_ClosePartition();
Sys_BackToLoader(); Sys_BackToLoader();
} }
@ -308,20 +345,15 @@ int GameBooter::BootGame(const char * gameID)
gprintf("Applying game patches...\n"); gprintf("Applying game patches...\n");
gamepatches(videoChoice, languageChoice, countrystrings, viChoice, sneekChoice, Hooktype, fix002, reloadblock, iosChoice, returnToChoice); gamepatches(videoChoice, languageChoice, countrystrings, viChoice, sneekChoice, Hooktype, fix002, reloadblock, iosChoice, returnToChoice);
//! Load Ocarina codes
if (ocarinaChoice)
ocarina_load_code(Settings.Cheatcodespath);
//! Load Code handler if needed //! Load Code handler if needed
load_handler(Settings.Cheatcodespath, Hooktype, WiirdDebugger, Settings.WiirdDebuggerPause); load_handler(Hooktype, WiirdDebugger, Settings.WiirdDebuggerPause);
//! 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();
gprintf("Shutting down devices...\n"); gprintf("Shutting down devices...\n");
//! Flush all caches and close up all devices // Close all handlers
WBFS_CloseAll(); WBFS_CloseAll();
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_SetPort(usbport); USBStorage2_SetPort(usbport);

View File

@ -27,7 +27,7 @@ class GameBooter
private: private:
static int FindDiscHeader(const char * gameID, struct discHdr &gameHeader); static int FindDiscHeader(const char * gameID, struct discHdr &gameHeader);
static void SetupAltDOL(u8 * gameID, u8 &alternatedol, u32 &alternatedoloffset); static void SetupAltDOL(u8 * gameID, u8 &alternatedol, u32 &alternatedoloffset);
static void SetupNandEmu(u8 NandEmuMode, struct discHdr &gameHeader); static void SetupNandEmu(u8 NandEmuMode, const char *NandEmuPath, struct discHdr &gameHeader);
static int SetupDisc(u8 *gameID); static int SetupDisc(u8 *gameID);
static u32 BootPartition(char * dolpath, u8 videoselected, u8 alternatedol, u32 alternatedoloffset); static u32 BootPartition(char * dolpath, u8 videoselected, u8 alternatedol, u32 alternatedoloffset);
}; };

View File

@ -23,8 +23,8 @@
***************************************************************************/ ***************************************************************************/
#include <algorithm> #include <algorithm>
#include <string> #include <string>
#include <wctype.h>
#include <malloc.h> #include <malloc.h>
#include "GUI/gui_searchbar.h"
#include "usbloader/wbfs.h" #include "usbloader/wbfs.h"
#include "settings/newtitles.h" #include "settings/newtitles.h"
#include "settings/CSettings.h" #include "settings/CSettings.h"
@ -35,13 +35,13 @@
#include "FreeTypeGX.h" #include "FreeTypeGX.h"
#include "GameList.h" #include "GameList.h"
#include "memory/memory.h" #include "memory/memory.h"
#include "Channels/channels.h"
GameList gameList; GameList gameList;
void GameList::clear() void GameList::clear()
{ {
GameFilter.clear(); GameFilter.clear();
AvailableSearchChars.clear();
FullGameList.clear(); FullGameList.clear();
GamePartitionList.clear(); GamePartitionList.clear();
FilteredList.clear(); FilteredList.clear();
@ -90,10 +90,7 @@ void GameList::RemovePartition(int part)
} }
if(FullGameList.size() > 0) if(FullGameList.size() > 0)
{ FilterList();
wString filter(GameFilter);
FilterList(filter.c_str());
}
} }
int GameList::InternalReadList(int part) int GameList::InternalReadList(int part)
@ -156,6 +153,9 @@ int GameList::InternalReadList(int part)
int GameList::ReadGameList() int GameList::ReadGameList()
{ {
if(Settings.LoaderMode == LOAD_CHANNELS)
return 0;
// Clear list // Clear list
clear(); clear();
@ -183,15 +183,22 @@ int GameList::ReadGameList()
int GameList::FilterList(const wchar_t * gameFilter) int GameList::FilterList(const wchar_t * gameFilter)
{ {
if (FullGameList.size() == 0) ReadGameList(); std::vector<struct discHdr> *FullList = &FullGameList;
if (gameFilter) GameFilter.assign(gameFilter);
if(Settings.LoaderMode == LOAD_CHANNELS)
FullList = &(Channels::Instance()->GetDiscHeaderList());
else if (FullGameList.size() == 0)
ReadGameList();
if (gameFilter)
GameFilter.assign(gameFilter);
FilteredList.clear(); FilteredList.clear();
AvailableSearchChars.clear();
for (u32 i = 0; i < FullGameList.size(); ++i) for (u32 i = 0; i < FullList->size(); ++i)
{ {
struct discHdr *header = &FullGameList[i]; struct discHdr *header = &FullList->at(i);
/* Register game */ /* Register game */
NewTitles::Instance()->CheckGame(header->id); NewTitles::Instance()->CheckGame(header->id);
@ -240,47 +247,14 @@ int GameList::FilterList(const wchar_t * gameFilter)
if(GameCategories.isInCategory((char *) header->id, Settings.EnabledCategories[n])) if(GameCategories.isInCategory((char *) header->id, Settings.EnabledCategories[n]))
break; break;
} }
if(n == Settings.EnabledCategories.size()) continue; if(n == Settings.EnabledCategories.size())
wchar_t *gameName = charToWideChar(GameTitles.GetTitle(header));
if (gameName)
{
if ( GameFilter.size() ) // has Filter
{
bool found = false;
wchar_t *s1 = gameName, *s2;
while( (s2 = wcscasestr(s1, GameFilter.c_str())) ) // search filter in gameName
{
found = true;
wchar_t ch = towupper(s2[GameFilter.size()]);
if(ch) AvailableSearchChars.insert(ch);
s1++; // try search filter in gameName more times
}
if(!found)
{
delete [] gameName;
continue; continue;
}
}
else // no Filter -> makes all chars as aviable
{
for(wchar_t *ch = gameName; *ch; ch++)
if(*ch >= '@') // limit chars by empty filter
AvailableSearchChars.insert(towupper(*ch));
}
delete [] gameName;
}
FilteredList.push_back(header); FilteredList.push_back(header);
} }
NewTitles::Instance()->Save(); NewTitles::Instance()->Save();
GuiSearchBar::FilterList(FilteredList, GameFilter);
if (FilteredList.size() < 2)
if (FilteredList.size() < 2)
AvailableSearchChars.clear();
SortList(); SortList();
@ -289,36 +263,29 @@ int GameList::FilterList(const wchar_t * gameFilter)
int GameList::LoadUnfiltered() int GameList::LoadUnfiltered()
{ {
if (FullGameList.size() == 0) ReadGameList(); std::vector<struct discHdr> *FullList = &FullGameList;
if(Settings.LoaderMode == LOAD_CHANNELS)
FullList = &(Channels::Instance()->GetDiscHeaderList());
else if (FullGameList.size() == 0)
ReadGameList();
GameFilter.clear(); GameFilter.clear();
AvailableSearchChars.clear();
FilteredList.clear(); FilteredList.clear();
for (u32 i = 0; i < FullGameList.size(); ++i) for (u32 i = 0; i < FullList->size(); ++i)
{ {
struct discHdr *header = &FullGameList[i]; struct discHdr *header = &FullList->at(i);
/* Register game */ /* Register game */
NewTitles::Instance()->CheckGame(header->id); NewTitles::Instance()->CheckGame(header->id);
wchar_t *gameName = charToWideChar(GameTitles.GetTitle(header));
if (gameName)
{
for(wchar_t *ch = gameName; *ch; ch++)
if(*ch >= '@') // limit chars by unfiltered list
AvailableSearchChars.insert(towupper(*ch));
delete [] gameName;
}
FilteredList.push_back(header); FilteredList.push_back(header);
} }
NewTitles::Instance()->Save(); NewTitles::Instance()->Save();
GuiSearchBar::FilterList(FilteredList, GameFilter);
if (FilteredList.size() < 2)
AvailableSearchChars.clear();
SortList(); SortList();

View File

@ -2,7 +2,6 @@
#define GAME_LIST_H_ #define GAME_LIST_H_
#include <vector> #include <vector>
#include <set>
#include "Controls/DeviceHandler.hpp" #include "Controls/DeviceHandler.hpp"
#include "wstring.hpp" #include "wstring.hpp"
#include "usbloader/disc.h" #include "usbloader/disc.h"
@ -20,7 +19,6 @@ class GameList
struct discHdr * operator[](int i) const { if (i < 0 || i >= (int) FilteredList.size()) return NULL; return FilteredList[i]; } struct discHdr * operator[](int i) const { if (i < 0 || i >= (int) FilteredList.size()) return NULL; return FilteredList[i]; }
struct discHdr * GetDiscHeader(const char * gameID) const; struct discHdr * GetDiscHeader(const char * gameID) const;
const wchar_t * GetCurrentFilter() const { return GameFilter.c_str(); } const wchar_t * GetCurrentFilter() const { return GameFilter.c_str(); }
const std::set<wchar_t> &GetAvailableSearchChars() const { return AvailableSearchChars; }
void SortList(); void SortList();
void clear(); void clear();
bool operator!() const { return (FullGameList.size() == 0); } bool operator!() const { return (FullGameList.size() == 0); }
@ -35,6 +33,8 @@ class GameList
int GetPartitionNumber(const u8 *gameid) const; int GetPartitionNumber(const u8 *gameid) const;
int GetGameFS(const u8 *gameID) const { return DeviceHandler::Instance()->GetFilesystemType(USB1+GetPartitionNumber(gameID)); } int GetGameFS(const u8 *gameID) const { return DeviceHandler::Instance()->GetFilesystemType(USB1+GetPartitionNumber(gameID)); }
void RemovePartition(int part_num); void RemovePartition(int part_num);
std::vector<struct discHdr *> &GetFilteredList(void) { return FilteredList; }
std::vector<struct discHdr> &GetFullGameList(void) { return FullGameList; }
protected: protected:
int InternalReadList(int part); int InternalReadList(int part);
static bool NameSortCallback(const struct discHdr *a, const struct discHdr *b); static bool NameSortCallback(const struct discHdr *a, const struct discHdr *b);
@ -42,7 +42,6 @@ class GameList
static bool RankingSortCallback(const struct discHdr *a, const struct discHdr *b); static bool RankingSortCallback(const struct discHdr *a, const struct discHdr *b);
static bool PlayersSortCallback(const struct discHdr *a, const struct discHdr *b); static bool PlayersSortCallback(const struct discHdr *a, const struct discHdr *b);
std::set<wchar_t> AvailableSearchChars;
wString GameFilter; wString GameFilter;
int selectedGame; int selectedGame;
std::vector<struct discHdr *> FilteredList; std::vector<struct discHdr *> FilteredList;

View File

@ -9,6 +9,7 @@
#include <string.h> #include <string.h>
#include "system/IosLoader.h" #include "system/IosLoader.h"
#include "utils/tools.h"
#include "gecko.h" #include "gecko.h"
#include "NandEmu.h" #include "NandEmu.h"
@ -33,20 +34,18 @@ static nandDevice ndevList[] =
}; };
/* Buffer */ /* Buffer */
static u32 inbuf[8] ATTRIBUTE_ALIGN(32);
static const char fs[] ATTRIBUTE_ALIGN(32) = "/dev/fs"; static const char fs[] ATTRIBUTE_ALIGN(32) = "/dev/fs";
static const char fat[] ATTRIBUTE_ALIGN(32) = "fat"; static const char fat[] ATTRIBUTE_ALIGN(32) = "fat";
static int mounted = 0; static u32 partition ATTRIBUTE_ALIGN(32) = 0;
static int partition = 0; static u32 mode ATTRIBUTE_ALIGN(32) = 0;
static char path[32] ATTRIBUTE_ALIGN(32) = "\0";
static int fullmode = 0; static int fullmode = 0;
static char path[32] = "\0"; static int mounted = 0;
static s32 Nand_Mount(nandDevice *dev) static s32 Nand_Mount(nandDevice *dev)
{ {
s32 fd, ret; s32 fd, ret;
u32 inlen = 0;
ioctlv *vector = NULL; ioctlv *vector = NULL;
u32 *buffer = NULL;
/* Open FAT module */ /* Open FAT module */
fd = IOS_Open(fat, 0); fd = IOS_Open(fat, 0);
@ -58,27 +57,27 @@ static s32 Nand_Mount(nandDevice *dev)
// and the nand is always expected to be on the 1st partition. // and the nand is always expected to be on the 1st partition.
// However this way earlier d2x betas having revision 21 take in // However this way earlier d2x betas having revision 21 take in
// consideration the partition argument. // consideration the partition argument.
inlen = 1;
/* Allocate memory */ /* Allocate memory */
buffer = (u32 *)memalign(32, sizeof(u32)*3); vector = (ioctlv *) memalign(32, sizeof(ioctlv));
if(vector == NULL)
{
/* Close FAT module */
IOS_Close(fd);
return -2;
}
/* Set vector pointer */ vector[0].data = &partition;
vector = (ioctlv *)buffer; vector[0].len = sizeof(u32);
buffer[0] = (u32)(buffer + 2);
buffer[1] = sizeof(u32);
buffer[2] = (u32)partition;
/* Mount device */ /* Mount device */
ret = IOS_Ioctlv(fd, dev->mountCmd, inlen, 0, vector); ret = IOS_Ioctlv(fd, dev->mountCmd, 1, 0, vector);
/* Close FAT module */ /* Close FAT module */
IOS_Close(fd); IOS_Close(fd);
/* Free memory */ /* Free memory */
if(buffer != NULL) free(vector);
free(buffer);
return ret; return ret;
} }
@ -104,7 +103,7 @@ static s32 Nand_Unmount(nandDevice *dev)
static s32 Nand_Enable(nandDevice *dev) static s32 Nand_Enable(nandDevice *dev)
{ {
s32 fd, ret; s32 fd, ret;
u32 *buffer = NULL; ioctlv *vector = NULL;
// Open /dev/fs // Open /dev/fs
fd = IOS_Open(fs, 0); fd = IOS_Open(fs, 0);
@ -113,29 +112,31 @@ static s32 Nand_Enable(nandDevice *dev)
//FULL NAND emulation since rev18 //FULL NAND emulation since rev18
//needed for reading images on triiforce mrc folder using ISFS commands //needed for reading images on triiforce mrc folder using ISFS commands
inbuf[0] = dev->mode | fullmode; mode = dev->mode | fullmode;
// NOTE: // NOTE:
// The official cIOSX rev21 by Waninkoko provides an undocumented feature // The official cIOSX rev21 by Waninkoko provides an undocumented feature
// to set nand path when mounting the device. // to set nand path when mounting the device.
// This feature has been discovered during d2x development. // This feature has been discovered during d2x development.
int pathlen = strlen(path)+1;
/* Allocate memory */ /* Allocate memory */
buffer = (u32 *)memalign(32, (sizeof(u32)*5)+pathlen); vector = (ioctlv *)memalign(32, sizeof(ioctlv)*2);
if(vector == NULL)
{
/* Close FAT module */
IOS_Close(fd);
return -2;
}
buffer[0] = (u32)(buffer + 4); vector[0].data = &mode;
buffer[1] = sizeof(u32); // actually not used by cios vector[0].len = sizeof(u32);
buffer[2] = (u32)(buffer + 5); vector[1].data = path;
buffer[3] = pathlen; // actually not used by cios vector[1].len = sizeof(path);
buffer[4] = inbuf[0];
strcpy((char*)(buffer+5), path);
ret = IOS_Ioctlv(fd, 100, 2, 0, (ioctlv *)buffer); ret = IOS_Ioctlv(fd, 100, 2, 0, vector);
/* Free memory */ /* Free memory */
if(buffer != NULL) free(vector);
free(buffer);
// Close /dev/fs // Close /dev/fs
IOS_Close(fd); IOS_Close(fd);
@ -153,10 +154,10 @@ static s32 Nand_Disable(void)
return fd; return fd;
// Set input buffer // Set input buffer
inbuf[0] = 0; mode = 0;
// Disable NAND emulator // Disable NAND emulator
ret = IOS_Ioctl(fd, 100, inbuf, sizeof(inbuf), NULL, 0); ret = IOS_Ioctl(fd, 100, &mode, sizeof(mode), NULL, 0);
// Close /dev/fs // Close /dev/fs
IOS_Close(fd); IOS_Close(fd);

View File

@ -17,6 +17,10 @@
#include "../settings/SettingsEnums.h" #include "../settings/SettingsEnums.h"
#include "../gecko.h" #include "../gecko.h"
// Global app entry point
extern u32 AppEntrypoint;
void _unstub_start();
/* Constants */ /* Constants */
#define PTABLE_OFFSET 0x40000 #define PTABLE_OFFSET 0x40000
#define WII_MAGIC 0x5D1C9EA3 #define WII_MAGIC 0x5D1C9EA3
@ -284,7 +288,33 @@ s32 Disc_JumpToEntrypoint(s32 hooktype, u32 dolparameter)
/* Originally from tueidj - taken from NeoGamme (thx) */ /* Originally from tueidj - taken from NeoGamme (thx) */
*(vu32*)0xCC003024 = dolparameter != 0 ? dolparameter : 1; *(vu32*)0xCC003024 = dolparameter != 0 ? dolparameter : 1;
if (hooktype) if(AppEntrypoint == 0x3400 && hooktype)
{
__asm__(
"lis %r3, returnpoint@h\n"
"ori %r3, %r3, returnpoint@l\n"
"mtlr %r3\n"
"lis %r3, 0x8000\n"
"ori %r3, %r3, 0x18A8\n"
"mtctr %r3\n"
"bctr\n"
"returnpoint:\n"
"bl DCDisable\n"
"bl ICDisable\n"
"li %r3, 0\n"
"mtsrr1 %r3\n"
"lis %r4, AppEntrypoint@h\n"
"ori %r4,%r4,AppEntrypoint@l\n"
"lwz %r4, 0(%r4)\n"
"mtsrr0 %r4\n"
"rfi\n"
);
}
else if(AppEntrypoint == 0x3400)
{
_unstub_start();
}
else if (hooktype)
{ {
__asm__( __asm__(
"lis %r3, AppEntrypoint@h\n" "lis %r3, AppEntrypoint@h\n"

View File

@ -23,7 +23,9 @@ extern "C"
/* Padding */ /* Padding */
u8 is_ciso; u8 is_ciso;
u8 unused1[13];
/* Unused, on channel list mode this is the full 64 bit tid and zeros */
u8 tid[13];
/* Magic word */ /* Magic word */
u32 magic; u32 magic;

214
source/utils/lz77.c Executable file
View File

@ -0,0 +1,214 @@
/*******************************************************************************
* lz77.c
*
* Copyright (c) 2009 The Lemon Man
* Copyright (c) 2009 Nicksasa
* Copyright (c) 2009 WiiPower
*
* Distributed under the terms of the GNU General Public License (v2)
* See http://www.gnu.org/licenses/gpl-2.0.txt for more info.
*
* Description:
* -----------
*
******************************************************************************/
#include <gccore.h>
#include <malloc.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include "lz77.h"
#define ALIGN32(x) (((x) + 31) & ~31)
u32 packBytes(int a, int b, int c, int d)
{
return (d << 24) | (c << 16) | (b << 8) | (a);
}
s32 __decompressLZ77_11(u8 *in, u32 inputLen, u8 **output, u32 *outputLen)
{
int x, y;
u8 *out = NULL;
u32 compressedPos = 0x4;
u32 decompressedPos = 0x0;
u32 decompressedSize = 0;
decompressedSize = packBytes(in[0], in[1], in[2], in[3]) >> 8;
if (!decompressedSize)
{
decompressedSize = packBytes(in[4], in[5], in[6], in[7]);
compressedPos += 0x4;
}
printf("Decompressed size : %i\n", decompressedSize);
out = memalign(32, ALIGN32(decompressedSize));
if (out == NULL)
{
printf("Out of memory\n");
return -1;
}
while (compressedPos < inputLen && decompressedPos < decompressedSize)
{
u8 byteFlag = in[compressedPos];
compressedPos++;
for (x = 7; x >= 0; x--)
{
if ((byteFlag & (1 << x)) > 0)
{
u8 first = in[compressedPos];
u8 second = in[compressedPos + 1];
u32 pos, copyLen;
if (first < 0x20)
{
u8 third = in[compressedPos + 2];
if (first >= 0x10)
{
u32 fourth = in[compressedPos + 3];
pos = (u32)(((third & 0xF) << 8) | fourth) + 1;
copyLen = (u32)((second << 4) | ((first & 0xF) << 12) | (third >> 4)) + 273;
compressedPos += 4;
} else
{
pos = (u32)(((second & 0xF) << 8) | third) + 1;
copyLen = (u32)(((first & 0xF) << 4) | (second >> 4)) + 17;
compressedPos += 3;
}
} else
{
pos = (u32)(((first & 0xF) << 8) | second) + 1;
copyLen = (u32)(first >> 4) + 1;
compressedPos += 2;
}
for (y = 0; y < (int) copyLen; y++)
{
out[decompressedPos + y] = out[decompressedPos - pos + y];
}
decompressedPos += copyLen;
} else
{
out[decompressedPos] = in[compressedPos];
decompressedPos++;
compressedPos++;
}
if (compressedPos >= inputLen || decompressedPos >= decompressedSize)
break;
}
}
*output = out;
*outputLen = decompressedSize;
return 0;
}
s32 __decompressLZ77_10(u8 *in, u32 inputLen, u8 **output, u32 *outputLen)
{
int x, y;
u8 *out = NULL;
u32 compressedPos = 0;
u32 decompressedSize = 0x4;
u32 decompressedPos = 0;
decompressedSize = packBytes(in[0], in[1], in[2], in[3]) >> 8;
//int compressionType = (packBytes(in[0], in[1], in[2], in[3]) >> 4) & 0xF;
printf("Decompressed size : %i\n", decompressedSize);
out = memalign(32, ALIGN32(decompressedSize));
if (out == NULL)
{
printf("Out of memory\n");
return -1;
}
compressedPos += 0x4;
while (decompressedPos < decompressedSize)
{
u8 flag = *(u8*)(in + compressedPos);
compressedPos += 1;
for (x = 0; x < 8; x++)
{
if (flag & 0x80)
{
u8 first = in[compressedPos];
u8 second = in[compressedPos + 1];
u16 pos = (u16)((((first << 8) + second) & 0xFFF) + 1);
u8 copyLen = (u8)(3 + ((first >> 4) & 0xF));
for (y = 0; y < copyLen; y++)
{
out[decompressedPos + y] = out[decompressedPos - pos + (y % pos)];
}
compressedPos += 2;
decompressedPos += copyLen;
} else
{
out[decompressedPos] = in[compressedPos];
compressedPos += 1;
decompressedPos += 1;
}
flag <<= 1;
if (decompressedPos >= decompressedSize)
break;
}
}
*output = out;
*outputLen = decompressedSize;
return 0;
}
int isLZ77compressed(u8 *buffer)
{
if ((buffer[0] == LZ77_0x10_FLAG) || (buffer[0] == LZ77_0x11_FLAG))
{
return 1;
}
return 0;
}
int decompressLZ77content(u8 *buffer, u32 length, u8 **output, u32 *outputLen)
{
int ret;
switch (buffer[0])
{
case LZ77_0x10_FLAG:
ret = __decompressLZ77_10(buffer, length, output, outputLen);
break;
case LZ77_0x11_FLAG:
ret = __decompressLZ77_11(buffer, length, output, outputLen);
break;
default:
ret = -1;
break;
}
return ret;
}

34
source/utils/lz77.h Executable file
View File

@ -0,0 +1,34 @@
/*******************************************************************************
* lz77.h
*
* Copyright (c) 2009 The Lemon Man
* Copyright (c) 2009 Nicksasa
* Copyright (c) 2009 WiiPower
*
* Distributed under the terms of the GNU General Public License (v2)
* See http://www.gnu.org/licenses/gpl-2.0.txt for more info.
*
* Description:
* -----------
*
******************************************************************************/
#ifndef _LZ77_MODULE
#define _LZ77_MODULE
#define LZ77_0x10_FLAG 0x10
#define LZ77_0x11_FLAG 0x11
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
int isLZ77compressed(u8 *buffer);
int decompressLZ77content(u8 *buffer, u32 length, u8 **output, u32 *outputLen);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif

View File

@ -425,7 +425,7 @@ u64 NandTitle::FindU32(const char *s)
return 0; return 0;
} }
int NandTitle::LoadFileFromNand(const char *filepath, u8 **outbuffer, u32 *outfilesize) int NandTitle::LoadFileFromNand(const char *filepath, u8 **outbuffer, u32 *outfilesize, bool isfsInit)
{ {
if(!filepath) if(!filepath)
return -1; return -1;
@ -434,13 +434,13 @@ int NandTitle::LoadFileFromNand(const char *filepath, u8 **outbuffer, u32 *outfi
if(!stats) if(!stats)
return IPC_ENOMEM; return IPC_ENOMEM;
ISFS_Initialize(); if(isfsInit) ISFS_Initialize();
int fd = ISFS_Open(filepath, ISFS_OPEN_READ); int fd = ISFS_Open(filepath, ISFS_OPEN_READ);
if(fd < 0) if(fd < 0)
{ {
free(stats); free(stats);
ISFS_Deinitialize(); if(isfsInit) ISFS_Deinitialize();
return fd; return fd;
} }
@ -449,7 +449,7 @@ int NandTitle::LoadFileFromNand(const char *filepath, u8 **outbuffer, u32 *outfi
{ {
free(stats); free(stats);
ISFS_Close(fd); ISFS_Close(fd);
ISFS_Deinitialize(); if(isfsInit) ISFS_Deinitialize();
return ret; return ret;
} }
@ -461,14 +461,14 @@ int NandTitle::LoadFileFromNand(const char *filepath, u8 **outbuffer, u32 *outfi
if(!buffer) if(!buffer)
{ {
ISFS_Close(fd); ISFS_Close(fd);
ISFS_Deinitialize(); if(isfsInit) ISFS_Deinitialize();
return IPC_ENOMEM; return IPC_ENOMEM;
} }
ret = ISFS_Read(fd, buffer, filesize); ret = ISFS_Read(fd, buffer, filesize);
ISFS_Close(fd); ISFS_Close(fd);
ISFS_Deinitialize(); if(isfsInit) ISFS_Deinitialize();
if (ret < 0) if (ret < 0)
{ {

View File

@ -95,7 +95,9 @@ class NandTitle
u64 operator[](u32 i) { return At(i); } u64 operator[](u32 i) { return At(i); }
static int LoadFileFromNand(const char *filepath, u8 **outbuffer, u32 *outfilesize); bool GetName(u64 tid, int language, wchar_t* name);
static int LoadFileFromNand(const char *filepath, u8 **outbuffer, u32 *outfilesize, bool isfsInit = true);
static int ExtractFile(const char *nandPath, const char *filepath, bool isfsInit = true); static int ExtractFile(const char *nandPath, const char *filepath, bool isfsInit = true);
static int ExtractDir(const char *wiipath, const char *filepath, bool isfsInit = true); static int ExtractDir(const char *wiipath, const char *filepath, bool isfsInit = true);
private: private:
@ -103,7 +105,6 @@ class NandTitle
std::vector<u64> titleIds; std::vector<u64> titleIds;
std::map<u64, string> NameList; std::map<u64, string> NameList;
bool GetName(u64 tid, int language, wchar_t* name);
tmd* GetTMD(u64 tid); tmd* GetTMD(u64 tid);
u32 currentIndex; u32 currentIndex;

View File

@ -147,15 +147,21 @@ size_t utf8Len(const char *s)
return len; return len;
} }
wchar_t *wcscasestr(const wchar_t *s1, const wchar_t *s2) const wchar_t *wcscasestr(const wchar_t *s1, const wchar_t *s2)
{ {
if(*s2==0) return (wchar_t *)s1; if(*s2 == 0)
return (wchar_t *)s1;
int s1_len = wcslen(s1); int s1_len = wcslen(s1);
int s2_len = wcslen(s2); int s2_len = wcslen(s2);
if(s1_len < s2_len) return 0;
if(s1_len < s2_len)
return 0;
const wchar_t *end = &s1[s1_len-s2_len]; const wchar_t *end = &s1[s1_len-s2_len];
for(wchar_t *s=(wchar_t *)s1; s<=end; s++) for(const wchar_t *s = s1; s <= end; s++)
if(wcsncasecmp(s, s2, s2_len)==0) if(wcsncasecmp(s, s2, s2_len)==0)
return s; return s;
return 0; return 0;
} }

View File

@ -23,6 +23,6 @@ class wString: public std::basic_string<wchar_t, std::char_traits<wchar_t>, std:
size_t utf8Len(const char *s); size_t utf8Len(const char *s);
wchar_t *wcscasestr(const wchar_t *s1, const wchar_t *s2); const wchar_t *wcscasestr(const wchar_t *s1, const wchar_t *s2);
#endif // !defined(__WSTRING_HPP) #endif // !defined(__WSTRING_HPP)