- Reverted to 921

- Removed no disc in drive patch
- DoGameHooks should be called always
This commit is contained in:
r-win 2010-05-29 07:38:54 +00:00
parent edbedb5336
commit 8a4e192022
66 changed files with 2284 additions and 1416 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>1.0 r930</version> <version>1.0 r931</version>
<release_date>201005251241</release_date> <release_date>201005290726</release_date>
<short_description>Loads games from USB-devices</short_description> <short_description>Loads games from USB-devices</short_description>
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times. <long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.
The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller. The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller.

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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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) \n" "Last-Translator: David Jelinek (djelinek@hotmail.com) \n"
"Language-Team: r823 - last version on http://djelinek.sweb.cz/_USBLoderGX/czech.lang \n" "Language-Team: r823 - last version on http://djelinek.sweb.cz/_USBLoderGX/czech.lang \n"
@ -606,6 +606,9 @@ msgstr "Nemecky"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Hlavní menu" msgstr "Hlavní menu"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Cesta pro Homebrew aplikace" msgstr "Cesta pro Homebrew aplikace"
@ -1162,6 +1165,9 @@ msgstr "USB zarízení nenalezeno"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX je zabezpecen" msgstr "USB Loader GX je zabezpecen"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr ""
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Nelze otevrít WAD, který byl nyní stažen (%s)." msgstr "Nelze otevrít WAD, který byl nyní stažen (%s)."
@ -1368,3 +1374,36 @@ msgstr "z "
msgid "seconds left" msgid "seconds left"
msgstr "sekund zbývá" msgstr "sekund zbývá"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "obsahuje více jak 255 rádek kódu. To muže vyvolat neocekáváné výsledky."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Cesta pro hudbu na pozadí zmenena"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Nastavit jako hudbu na pozadí?"
#~ msgid "The file is not a .wad"
#~ msgstr "Soubor není typu WAD"
#~ msgid "Can't decompress LZ77"
#~ msgstr "Nelze dekomprimovat LZ77"
#~ msgid "Can't find disc"
#~ msgstr "Nelze nalézt disc"
#~ msgid "IMD5 Header not right."
#~ msgstr "Hlavička IMD5 není správná."
#~ msgid "IMET Header wrong."
#~ msgstr "Hlavička IMET není správná."
#~ msgid "Exit USB Loader GX?"
#~ msgstr "Ukoncit USB Loader GX?"
#~ msgid "No WBFS partition found"
#~ msgstr "Nebyl nalezen oddíl WBFS"
#~ msgid "You need to format a partition"
#~ msgstr "Musíte naformátovat oddíl"

View File

@ -1,11 +1,11 @@
# USB Loader GX language source file. # USB Loader GX language source file.
# danish.lang - r921 # danish.lang - r916
# don't delete/change this line (é). # don't delete/change this line (é).
msgid "" 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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+0100\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: dorf[dk]\n" "Last-Translator: dorf[dk]\n"
"Language-Team: dorf[dk]\n" "Language-Team: dorf[dk]\n"
@ -606,6 +606,9 @@ msgstr "Tysk"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "" msgstr ""
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Sti til homebrew-programmer" msgstr "Sti til homebrew-programmer"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Opdateringen lykkedes" msgstr "Opdateringen lykkedes"
msgid "Successfully Updated thanks to www.techjawa.com" msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Opdatering lykkedes takket www.techjawa.com" msgstr ""
msgid "Successfully deleted:" msgid "Successfully deleted:"
msgstr "Sletningen lykkedes:" msgstr "Sletningen lykkedes:"
@ -1162,6 +1165,9 @@ msgstr "USB-enhed ikke fundet"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX er beskyttet" msgstr "USB Loader GX er beskyttet"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "USB Loader GX fungerer kun med Hermes CIOS rev 4! Kontrollér, at revision 4 er installeret!"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Ikke i stand til at åbne den WAD, der blev downloadet (%s)." msgstr "Ikke i stand til at åbne den WAD, der blev downloadet (%s)."
@ -1368,3 +1374,33 @@ msgstr "af"
msgid "seconds left" msgid "seconds left"
msgstr "sekunder tilbage" msgstr "sekunder tilbage"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "indeholder over 225 linjer kode. Det vil give uventede resultater."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Sti til baggrundsmusik ændret"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Indstil som baggrundsmusik?"
#~ msgid "Install not possible"
#~ msgstr "Kan ikke installere"
#~ msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
#~ msgstr "Der bruges et NTFS filsystem. Da der kan forekomme skrivefejl på NTFS-partitioner, kan der ikke installeres spil."
#~ msgid "Can't decompress LZ77"
#~ msgstr "Kan ikke udpakke LZ77"
#~ msgid "Can't find disc"
#~ msgstr "Kan ikke finde disk"
#~ msgid "IMD5 Header not right."
#~ msgstr "Fejl i IMD5 header."
#~ msgid "IMET Header wrong."
#~ msgstr "Fejl i IMET header."
#~ msgid "Exit USB Loader GX?"
#~ msgstr "Afslut USB Loader GX?"

View File

@ -1,12 +1,12 @@
# USB Loader GX language source file. # USB Loader GX language source file.
# dutch.lang - r929 # dutch.lang - r912
# don't delete/change this line (é). # don't delete/change this line (é).
msgid "" 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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+0100\n"
"PO-Revision-Date: 2010-04-12 07:37+0100\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: glowy\n" "Last-Translator: glowy\n"
"Language-Team: tj_cool, glowy\n" "Language-Team: tj_cool, glowy\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -606,6 +606,9 @@ msgstr "Duits"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "" msgstr ""
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Locatie homebrew apps" msgstr "Locatie homebrew apps"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Met succes geüpdate!" msgstr "Met succes geüpdate!"
msgid "Successfully Updated thanks to www.techjawa.com" msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Met succes geüpdate met dank aan www.techjawa.com" msgstr ""
msgid "Successfully deleted:" msgid "Successfully deleted:"
msgstr "Met succes verwijderd:" msgstr "Met succes verwijderd:"
@ -1162,6 +1165,9 @@ msgstr "USB Apparaat niet gevonden"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX is vergrendeld" msgstr "USB Loader GX is vergrendeld"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "USB Loader GX werkt alleen met Hermes cIOS rev 4! Zorg dat je revisie 4 hebt geïnstalleerd!"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Wad is gedownload maar kan niet worden geopend (%s)." msgstr "Wad is gedownload maar kan niet worden geopend (%s)."
@ -1368,3 +1374,60 @@ msgstr "van"
msgid "seconds left" msgid "seconds left"
msgstr "seconden over" msgstr "seconden over"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "bevat meer dan 255 lijnen met code. Dit kan slechte gevolgen hebben."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Locatie achtergrondmuziek gewijzigd."
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Instellen als achtergrondmuziek?"
#~ msgid "The file is not a .wad"
#~ msgstr "Dit is geen .wad bestand"
#~ msgid "Install not possible"
#~ msgstr "Installatie niet mogelijk"
#~ msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
#~ msgstr "Je gebruikt het NTFS bestandssysteem. Door mogelijke schrijffouten naar een NTFS partitie, is een spel installeren niet mogelijk."
#~ msgid "Partition Format Menu"
#~ msgstr "Partitie Formatteer Menu"
#~ msgid "Unlock the app first."
#~ msgstr "Geef app eerst vrij."
#~ msgid "You can't access this menu!"
#~ msgstr "Je hebt geen toegang tot dit menu!"
#~ msgid "Can't decompress LZ77"
#~ msgstr "Kan LZ77 niet uitpakken"
#~ msgid "Can't find disc"
#~ msgstr "Kan disk niet vinden"
#~ msgid "IMD5 Header not right."
#~ msgstr "IMD5 Header niet correct."
#~ msgid "IMET Header wrong."
#~ msgstr "IMET Header niet correct."
#~ msgid "Failed to extract opening.bnr"
#~ msgstr "Uitpakken opening.bnr mislukt"
#~ msgid "Homebrew Channel"
#~ msgstr "Homebrew Kanaal"
#~ msgid "ERROR: USB device could not be loaded!"
#~ msgstr "FOUT: USB apparaat kon niet geladen worden!"
#~ msgid "ERROR: cIOS could not be loaded!"
#~ msgstr "FOUT: cIOS kon niet geladen worden!"
#~ msgid "Loading..."
#~ msgstr "Laden..."
#~ msgid "Waiting for your slow USB Device: %i secs..."
#~ msgstr "Wachten op traag USB apparaat: %i sec..."

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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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"
@ -606,6 +606,9 @@ msgstr ""
msgid "HOME Menu" msgid "HOME Menu"
msgstr "" msgstr ""
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "" msgstr ""
@ -1162,6 +1165,9 @@ msgstr ""
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "" msgstr ""
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr ""
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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"
@ -606,6 +606,9 @@ msgstr "Saksa"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "" msgstr ""
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrew Apps polku" msgstr "Homebrew Apps polku"
@ -1162,6 +1165,9 @@ msgstr "USB-laitetta ei löytynyt"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX on suojattu." msgstr "USB Loader GX on suojattu."
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr ""
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Wadia (%s) jonka juuri latasit ei voitu avata." msgstr "Wadia (%s) jonka juuri latasit ei voitu avata."
@ -1368,3 +1374,24 @@ msgstr "josta"
msgid "seconds left" msgid "seconds left"
msgstr "sekuntia jäljellä" msgstr "sekuntia jäljellä"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "Sisältää yli 255 riviä koodia. Muodostaa odottamattomia virheitä."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Taustamusiikin polku muutettu"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Aseta taustamusiikiksi?"
#~ msgid "The file is not a .wad"
#~ msgstr "Tiedosto ei ole .wad"
#~ msgid "Exit USB Loader GX?"
#~ msgstr "Poistu USB Loader GX:stä?"
#~ msgid "No WBFS partition found"
#~ msgstr "Ei WBFS-osioita löytynyt"
#~ msgid "You need to format a partition"
#~ msgstr "Sinun täytyy formatoida osio"

View File

@ -1,11 +1,11 @@
# USB Loader GX language source file. # USB Loader GX language source file.
# French V13 r926 # French V12.8 r920
# don't delete/change this line (é). # don't delete/change this line (é).
msgid "" 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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+0100\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: Kin8\n" "Last-Translator: Kin8\n"
"Language-Team: Badablek, Amour, ikya & Kin8\n" "Language-Team: Badablek, Amour, ikya & Kin8\n"
@ -606,6 +606,9 @@ msgstr "Allemand"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Menu HOME" msgstr "Menu HOME"
msgid "Hermes CIOS"
msgstr "CIOS d'Hermès"
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Dossier Homebrew Apps" msgstr "Dossier Homebrew Apps"
@ -823,7 +826,7 @@ msgid "No USB Device found."
msgstr "Aucun périphérique USB trouvé." msgstr "Aucun périphérique USB trouvé."
msgid "No WBFS or FAT/NTFS partition found" msgid "No WBFS or FAT/NTFS partition found"
msgstr "Partition WBFS/FAT/NTFS introuvable" msgstr "Aucune partition WBFS ou FAT/NTFS trouvée"
msgid "No cheats were selected" msgid "No cheats were selected"
msgstr "Aucune selection de triche" msgstr "Aucune selection de triche"
@ -850,7 +853,7 @@ msgid "Normal Covers"
msgstr "Jaquettes 2D" msgstr "Jaquettes 2D"
msgid "Not Found" msgid "Not Found"
msgstr "Non trouvé" msgstr "Pas trouvé"
msgid "Not a DOL/ELF file." msgid "Not a DOL/ELF file."
msgstr "Ce n'est pas un fichier DOL/ELF" msgstr "Ce n'est pas un fichier DOL/ELF"
@ -1162,6 +1165,9 @@ msgstr "Périphérique USB introuvable"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX est verrouillé" msgstr "USB Loader GX est verrouillé"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "USB Loader GX fonctionne avec le CIOS d'Hermès rev4 seulement! Assurez-vous qu'il soit installé!"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Ouverture du WAD impossible (%s)." msgstr "Ouverture du WAD impossible (%s)."
@ -1368,3 +1374,57 @@ msgstr "sur"
msgid "seconds left" msgid "seconds left"
msgstr "secondes restantes" msgstr "secondes restantes"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "Contient plus de 255 lignes de code. Cela produira des résultats inattendus."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Dossier fond sonore modifié."
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Utiliser comme fond sonore ?"
#~ msgid "Install not possible"
#~ msgstr "Installation impossible"
#~ msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
#~ msgstr "Le système de fichier NTFS est utilisé. En raison à de possibles erreurs d'écriture sur une partition de NTFS, l'installation d'un jeu est impossible."
#~ msgid "Partition Format Menu"
#~ msgstr "Menu Formatage Partition"
#~ msgid "Unlock the app first."
#~ msgstr "Déverrouillage nécessaire."
#~ msgid "You can't access this menu!"
#~ msgstr "Accès à ce menu refusé!"
#~ msgid "Can't decompress LZ77"
#~ msgstr "Décompression LZ77 Impossible"
#~ msgid "Can't find disc"
#~ msgstr "Disque non trouvé"
#~ msgid "IMD5 Header not right."
#~ msgstr "En-tête IMD5 erronée"
#~ msgid "IMET Header wrong."
#~ msgstr "En-tête IMET erronée"
#~ msgid "Failed to extract opening.bnr"
#~ msgstr "Extraction opening.bnr échouée"
#~ msgid "You need to start this game one time to create a save file, then exit and start it again."
#~ msgstr "Vous devez lancer ce jeu une fois pour créer une sauvegarde, puis éteindre et le lancer à nouveau."
#~ msgid "ERROR: USB device could not be loaded!"
#~ msgstr "ERREUR: Impossible de charger le périph. USB!"
#~ msgid "ERROR: cIOS could not be loaded!"
#~ msgstr "ERREUR: Impossible de charger le cIOS!"
#~ msgid "Loading..."
#~ msgstr "Chargement..."
#~ msgid "Waiting for your slow USB Device: %i secs..."
#~ msgstr "Attente de votre périphérique USB: %i secs..."

View File

@ -1,11 +1,11 @@
# USB Loader GX language source file. # USB Loader GX language source file.
# german.lang - r928 # german.lang - r913
# don't delete/change this line (é). # don't delete/change this line (é).
msgid "" 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: 2010-05-01 20:50+0200\n" "POT-Creation-Date: 2010-03-16 16:17+0100\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: ZEN.13\n" "Last-Translator: ZEN.13\n"
"Language-Team: Snoozer, wishmasterf, Bertilax, ZEN.13\n" "Language-Team: Snoozer, wishmasterf, Bertilax, ZEN.13\n"
@ -126,7 +126,7 @@ msgid "AUTO"
msgstr "" msgstr ""
msgid "All partitions" msgid "All partitions"
msgstr "Alle Partitionen" msgstr "alle Partitionen"
msgid "All the features of USB Loader GX are unlocked." msgid "All the features of USB Loader GX are unlocked."
msgstr "Alle Funktionen des USB Loader GX sind jetzt freigeschaltet." msgstr "Alle Funktionen des USB Loader GX sind jetzt freigeschaltet."
@ -135,7 +135,7 @@ msgid "Alternate DOL"
msgstr "Alternative DOL" msgstr "Alternative DOL"
msgid "An Error occured" msgid "An Error occured"
msgstr "Ein Fehler ist aufgetreten." msgstr "Ein Fehler ist aufgetreten"
msgid "Anti" msgid "Anti"
msgstr "" msgstr ""
@ -198,19 +198,19 @@ msgid "Boot/Standard"
msgstr "Bootstandard (cIOS)" msgstr "Bootstandard (cIOS)"
msgid "Boot?" msgid "Boot?"
msgstr "Kanael starten?" msgstr "Starten?"
msgid "Both" msgid "Both"
msgstr "ID und Region" msgstr "Beides (ID und Region)"
msgid "Can't be formatted" msgid "Can't be formatted"
msgstr "Kann nicht formatiert werden." msgstr "Kann nicht formatiert werden"
msgid "Can't create directory" msgid "Can't create directory"
msgstr "Verzeichnis kann nicht erstellt werden." msgstr "Verzeichnis kann nicht erstellt werden"
msgid "Can't create file" msgid "Can't create file"
msgstr "Datei kann nicht erstellt werden." msgstr "Datei kann nicht erstellt werden"
msgid "Can't delete:" msgid "Can't delete:"
msgstr "Löschen fehlgeschlagen:" msgstr "Löschen fehlgeschlagen:"
@ -231,16 +231,16 @@ msgid "Checking existing artwork"
msgstr "Prüfe existierende Artworks" msgstr "Prüfe existierende Artworks"
msgid "Checking for Updates" msgid "Checking for Updates"
msgstr "Suche nach Updates" msgstr "Suche nach Aktualisierungen"
msgid "Click to Download Covers" msgid "Click to Download Covers"
msgstr "Cover herunterladen" msgstr "Cover herunterzuladen"
msgid "Click to change game ID" msgid "Click to change game ID"
msgstr "Spiel ID ändern" msgstr "Spiel ID ändern"
msgid "Clock" msgid "Clock"
msgstr "Uhrformat" msgstr "Uhr"
msgid "Close" msgid "Close"
msgstr " Schließen" msgstr " Schließen"
@ -310,7 +310,7 @@ msgid "Could not set USB."
msgstr "USB konnte nicht gesetzt werden." msgstr "USB konnte nicht gesetzt werden."
msgid "Cover Download" msgid "Cover Download"
msgstr "Welche Cover herunterladen?" msgstr "Welche Cover heruntergeladen?"
msgid "Cover Path Changed" msgid "Cover Path Changed"
msgstr "Pfad geändert" msgstr "Pfad geändert"
@ -349,7 +349,7 @@ msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
msgid "Delete ?" msgid "Delete ?"
msgstr "Wirklich löschen?" msgstr "Löschen ?"
msgid "Delete Cheat GCT" msgid "Delete Cheat GCT"
msgstr "Lösche GCT Cheatdatei" msgstr "Lösche GCT Cheatdatei"
@ -391,7 +391,7 @@ msgid "DiskFlip"
msgstr "DiscFlip" msgstr "DiscFlip"
msgid "Display" msgid "Display"
msgstr "Spielinfos anzeigen" msgstr "Anzeige"
msgid "Display as a carousel" msgid "Display as a carousel"
msgstr "Karussell-Ansicht" msgstr "Karussell-Ansicht"
@ -427,7 +427,7 @@ msgid "Do you want to use the alternate DOL that is known to be correct?"
msgstr "Die bekannte Alternative DOL verwenden?" msgstr "Die bekannte Alternative DOL verwenden?"
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Alle Sprachdateien aktualisieren?" msgstr "Alle Sprachdateien aktualisieren/herunterladen?"
msgid "Done!" msgid "Done!"
msgstr "Fertig!" msgstr "Fertig!"
@ -445,13 +445,13 @@ msgid "Download Now"
msgstr "Herunterladen" msgstr "Herunterladen"
msgid "Download failed." msgid "Download failed."
msgstr "Download fehlgeschlagen" msgstr "Download fehlgeschlagen."
msgid "Download finished" msgid "Download finished"
msgstr "Download abgeschlossen" msgstr "Download abgeschlossen"
msgid "Download request failed." msgid "Download request failed."
msgstr "Downloadanfrage fehlgeschlagen" msgstr "Downloadanfrage fehlgeschlagen."
msgid "Downloading" msgid "Downloading"
msgstr "Dateien werden heruntergeladen" msgstr "Dateien werden heruntergeladen"
@ -523,7 +523,7 @@ msgid "Feb"
msgstr "Februar" msgstr "Februar"
msgid "File not found." msgid "File not found."
msgstr "Datei nicht gefunden" msgstr "Datei nicht gefunden."
msgid "Finishing installation... Ok!" msgid "Finishing installation... Ok!"
msgstr "Beende Installation... OK!" msgstr "Beende Installation... OK!"
@ -547,7 +547,7 @@ msgid "French"
msgstr "Französisch" msgstr "Französisch"
msgid "Full Shutdown" msgid "Full Shutdown"
msgstr "WiiConnect24 aus" msgstr "Komplett"
msgid "GAMEID_Gamename" msgid "GAMEID_Gamename"
msgstr "SPIELID_Spielname" msgstr "SPIELID_Spielname"
@ -592,7 +592,7 @@ msgid "Game is already installed:"
msgstr "Spiel ist bereits installiert:" msgstr "Spiel ist bereits installiert:"
msgid "Game partition" msgid "Game partition"
msgstr "Spielpartition" msgstr "nur Spiel"
msgid "Gamename [GAMEID]" msgid "Gamename [GAMEID]"
msgstr "Spielname [SPIELID]" msgstr "Spielname [SPIELID]"
@ -606,8 +606,11 @@ msgstr "Deutsch"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "HOME Menü" msgstr "HOME Menü"
msgid "Hermes CIOS"
msgstr "cIOS 222/223"
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrew Apps" msgstr "Homebrew Anwedungen"
msgid "Homebrew Appspath changed" msgid "Homebrew Appspath changed"
msgstr "Pfad geändert" msgstr "Pfad geändert"
@ -642,7 +645,7 @@ msgid "Insert Disk"
msgstr "Disc einlegen" msgstr "Disc einlegen"
msgid "Insert a Wii Disc!" msgid "Insert a Wii Disc!"
msgstr "Eine Wii Disc einlegen!" msgstr "Bitte eine Wii Disc einlegen!"
msgid "Insert an SD-Card to download images." msgid "Insert an SD-Card to download images."
msgstr "SD Karte einlegen um Bilder herunterzuladen." msgstr "SD Karte einlegen um Bilder herunterzuladen."
@ -751,16 +754,16 @@ msgid "Lock Console"
msgstr "Konsole sperren" msgstr "Konsole sperren"
msgid "Locked" msgid "Locked"
msgstr "Gesperrt" msgstr "gesperrt"
msgid "Loop Directory" msgid "Loop Directory"
msgstr "Verzeichnis abspielen" msgstr "Verzeichnis wiederholen"
msgid "Loop Music" msgid "Loop Music"
msgstr "Scheife" msgstr "1 Titel wiederholen"
msgid "Loop Sound" msgid "Loop Sound"
msgstr "Wiederholung" msgstr "Wiederholen"
msgid "Mar" msgid "Mar"
msgstr "März" msgstr "März"
@ -781,13 +784,13 @@ msgid "Mount DVD drive"
msgstr "Spiel starten" msgstr "Spiel starten"
msgid "Music Loop Mode" msgid "Music Loop Mode"
msgstr "HGM Wiederholung" msgstr "Wiederholungsmodus"
msgid "Music Volume" msgid "Music Volume"
msgstr "Musik Lautstärke" msgstr "Musik Lautstärke"
msgid "Neither" msgid "Neither"
msgstr "Keine" msgstr "Nichts"
msgid "Network init error" msgid "Network init error"
msgstr "Netzwerkinitialisierungsfehler" msgstr "Netzwerkinitialisierungsfehler"
@ -796,7 +799,7 @@ msgid "New Disc Detected"
msgstr "Neu Disc im Laufwerk festgestellt" msgstr "Neu Disc im Laufwerk festgestellt"
msgid "Next" msgid "Next"
msgstr "Weiter" msgstr "Nächste"
msgid "No" msgid "No"
msgstr "Nein" msgstr "Nein"
@ -805,7 +808,7 @@ msgid "No .dol or .elf files found."
msgstr "Keine .dol oder .elf Dateien gefunden." msgstr "Keine .dol oder .elf Dateien gefunden."
msgid "No Cheatfile found" msgid "No Cheatfile found"
msgstr "Keine Cheatdatei gefunden." msgstr "Keine Cheatdatei gefunden"
msgid "No DOL file found on disc." msgid "No DOL file found on disc."
msgstr "Keine DOL auf der Disc gefunden." msgstr "Keine DOL auf der Disc gefunden."
@ -826,7 +829,7 @@ msgid "No WBFS or FAT/NTFS partition found"
msgstr "Keine WBFS oder FAT/NTFS Partition gefunden" msgstr "Keine WBFS oder FAT/NTFS Partition gefunden"
msgid "No cheats were selected" msgid "No cheats were selected"
msgstr "Es wurden keine Cheats ausgewählt." msgstr "Es wurden keine Cheats ausgewählt"
msgid "No data could be read." msgid "No data could be read."
msgstr "Daten konnten nicht gelesen werden." msgstr "Daten konnten nicht gelesen werden."
@ -835,7 +838,7 @@ msgid "No file missing!"
msgstr "Keine Datei fehlt!" msgstr "Keine Datei fehlt!"
msgid "No new updates." msgid "No new updates."
msgstr "Keine Updates verfügbar." msgstr "Keine Aktualisierungen verfügbar."
msgid "No themes found on the site." msgid "No themes found on the site."
msgstr "Keine Themes auf der Seite gefunden." msgstr "Keine Themes auf der Seite gefunden."
@ -859,7 +862,7 @@ msgid "Not a WAD file."
msgstr "Das ist keine WAD Datei." msgstr "Das ist keine WAD Datei."
msgid "Not a Wii Disc" msgid "Not a Wii Disc"
msgstr "Keine Wii Disc." msgstr "Das ist keine Wii Disc"
msgid "Not enough free memory." msgid "Not enough free memory."
msgstr "Nicht genügend freier Speicher." msgstr "Nicht genügend freier Speicher."
@ -889,7 +892,7 @@ msgid "Official Site:"
msgstr "Offizielle Seite:" msgstr "Offizielle Seite:"
msgid "Only Customs" msgid "Only Customs"
msgstr "nur Community" msgstr "nur von der Community"
msgid "Only Original" msgid "Only Original"
msgstr "nur Originale" msgstr "nur Originale"
@ -925,7 +928,7 @@ msgid "Patch Country Strings"
msgstr "Country Strings patchen" msgstr "Country Strings patchen"
msgid "Pick from a list" msgid "Pick from a list"
msgstr "Wähle aus der Liste" msgstr "Wähle aus Liste"
msgid "Play Count" msgid "Play Count"
msgstr "Spielzähler" msgstr "Spielzähler"
@ -934,7 +937,7 @@ msgid "Play Next"
msgstr "Nächster Titel" msgstr "Nächster Titel"
msgid "Play Once" msgid "Play Once"
msgstr "Einmal abspielen" msgstr "nur einmal abspielen"
msgid "Play Previous" msgid "Play Previous"
msgstr "Vorheriger Titel" msgstr "Vorheriger Titel"
@ -949,7 +952,7 @@ msgid "Power off the Wii"
msgstr "Wii ausschalten" msgstr "Wii ausschalten"
msgid "Prev" msgid "Prev"
msgstr "Zurück" msgstr "Vorherige"
msgid "Prompts Buttons" msgid "Prompts Buttons"
msgstr "Anzeige" msgstr "Anzeige"
@ -961,7 +964,7 @@ msgid "Quick Boot"
msgstr "Schnelles Laden" msgstr "Schnelles Laden"
msgid "Random Directory Music" msgid "Random Directory Music"
msgstr "Zufällig" msgstr "Zufällig aus gewähltem Verzeichnis"
msgid "Reading WAD data... Ok!" msgid "Reading WAD data... Ok!"
msgstr "Lese WAD Daten... OK!" msgstr "Lese WAD Daten... OK!"
@ -973,7 +976,7 @@ msgid "Released"
msgstr "Erschienen am" msgstr "Erschienen am"
msgid "Reload SD" msgid "Reload SD"
msgstr "SD Karte erneut laden" msgstr "SD Karte erneut lesen"
msgid "Remove update" msgid "Remove update"
msgstr "Update entfernen" msgstr "Update entfernen"
@ -991,7 +994,7 @@ msgid "Reset to standard BGM?"
msgstr "Auf Standard zurücksetzen?" msgstr "Auf Standard zurücksetzen?"
msgid "Restarting..." msgid "Restarting..."
msgstr "Starte neu..." msgstr "Damit die neue Version benutzt werden kann, muss der Loader neu gestartet werden."
msgid "Return" msgid "Return"
msgstr "Zurück" msgstr "Zurück"
@ -1048,7 +1051,7 @@ msgid "Shutdown System"
msgstr "System herunterfahren" msgstr "System herunterfahren"
msgid "Shutdown to Idle" msgid "Shutdown to Idle"
msgstr "WiiConnect24 an" msgstr "Stand By"
msgid "Sort alphabetically" msgid "Sort alphabetically"
msgstr "Alphabetisch ordnen" msgstr "Alphabetisch ordnen"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Erfolgreich aktualisiert" msgstr "Erfolgreich aktualisiert"
msgid "Successfully Updated thanks to www.techjawa.com" msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Erfolgreich aktualisiert. Dank an: www.techjawa.com" msgstr ""
msgid "Successfully deleted:" msgid "Successfully deleted:"
msgstr "Erfolgreich gelöscht:" msgstr "Erfolgreich gelöscht:"
@ -1117,7 +1120,7 @@ msgid "The entered directory does not exist. Would you like to create it?"
msgstr "Das eingegebene Verzeichnis existiert nicht. Möchtest du es erstellen?" msgstr "Das eingegebene Verzeichnis existiert nicht. Möchtest du es erstellen?"
msgid "The wad file was installed. But It could not be deleted from the SD card." msgid "The wad file was installed. But It could not be deleted from the SD card."
msgstr "Die WAD Datei wurde installiert. Sie konnte aber nicht von der SD Karte gelöscht werden." msgstr "Die WAD Datei wurde installiert. Aber sie konnte nicht von der SD Karte gelöscht werden."
#, c-format #, c-format
msgid "The wad installation failed with error %ld" msgid "The wad installation failed with error %ld"
@ -1154,13 +1157,16 @@ msgid "Tooltips"
msgstr "" msgstr ""
msgid "Transfer failed." msgid "Transfer failed."
msgstr "Übertragung fehlgeschlagen" msgstr "Übertragung fehlgeschlagen."
msgid "USB Device not found" msgid "USB Device not found"
msgstr "USB Gerät nicht gefunden." msgstr "USB Gerät nicht gefunden"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX ist jetzt geschützt." msgstr "USB Loader GX ist jetzt geschützt"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "Hermes' cIOS funktioniert beim USB Loader GX nur mit rev4! Bitte versichere dich das du rev4 installiert hast!"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
@ -1185,13 +1191,13 @@ msgid "Unlock console to use this option."
msgstr "Entsperre den Loader, um diese Option zu nutzen." msgstr "Entsperre den Loader, um diese Option zu nutzen."
msgid "Unlocked" msgid "Unlocked"
msgstr "Entsperrt" msgstr "entsperrt"
msgid "Unsupported format, try to extract manually." msgid "Unsupported format, try to extract manually."
msgstr "Nicht unterstütztes Format. Versuch es manuell zu Entpacken." msgstr "Nicht unterstütztes Format. Versuch es manuell zu Entpacken."
msgid "Update" msgid "Update"
msgstr "" msgstr "Aktualisieren"
msgid "Update All" msgid "Update All"
msgstr "Alles" msgstr "Alles"
@ -1203,7 +1209,7 @@ msgid "Update Files"
msgstr "Aktualisieren" msgstr "Aktualisieren"
msgid "Update Path" msgid "Update Path"
msgstr "Updates" msgstr "Aktualisierungen"
msgid "Update Path changed." msgid "Update Path changed."
msgstr "Pfad geändert" msgstr "Pfad geändert"
@ -1212,7 +1218,7 @@ msgid "Update all Language Files"
msgstr "Sprachdateien aktualisieren" msgstr "Sprachdateien aktualisieren"
msgid "Update failed" msgid "Update failed"
msgstr "Update fehlgeschlagen" msgstr "Aktualisierung fehlgeschlagen"
msgid "Update to" msgid "Update to"
msgstr "Aktualisiere auf" msgstr "Aktualisiere auf"
@ -1297,10 +1303,10 @@ msgid "You don't have Parental Control enabled. If you wish to use Parental Cont
msgstr "Du hast die Wii-Altersbeschränkung nicht aktiviert. Wenn du sie nutzen möchtest, aktiviere sie in den Wii-Systemeinstellungen." msgstr "Du hast die Wii-Altersbeschränkung nicht aktiviert. Wenn du sie nutzen möchtest, aktiviere sie in den Wii-Systemeinstellungen."
msgid "You have attempted to load a bad image" msgid "You have attempted to load a bad image"
msgstr "Du hast versucht ein 'schlechtes Bild' zu laden." msgstr "Du hast versucht ein 'schlechtes Bild' zu laden"
msgid "You need to select or format a partition" msgid "You need to select or format a partition"
msgstr "Du must eine Partition auswählen oder formatieren." msgstr "Du must eine Partition auswählen oder formatieren"
#, c-format #, c-format
msgid "Your URL has been saved in %sWiiTDB_URL.txt." msgid "Your URL has been saved in %sWiiTDB_URL.txt."
@ -1349,7 +1355,7 @@ msgid "for hosting the themes"
msgstr "für das Hosten der Themes" msgstr "für das Hosten der Themes"
msgid "for hosting the update files" msgid "for hosting the update files"
msgstr "für das Hosten der Updates" msgstr "für das Hosten der Aktualisierungen"
msgid "for the USB Loader source" msgid "for the USB Loader source"
msgstr "für die Veröffentlichung des USB Loader-Quellcodes" msgstr "für die Veröffentlichung des USB Loader-Quellcodes"
@ -1368,3 +1374,48 @@ msgstr "von"
msgid "seconds left" msgid "seconds left"
msgstr "Sekunden verbleiben" msgstr "Sekunden verbleiben"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "enthält mehr als 255 Zeilen Code. Es wird unerwartete Ergebnisse geben."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Pfad geändert"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Als Hintergrundmusik verwenden?"
#~ msgid "The file is not a .wad"
#~ msgstr "Die Datei ist keine .wad"
#~ msgid "Install not possible"
#~ msgstr "Installation nicht möglich"
#~ msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
#~ msgstr "Du benutzt das NTFS Dateisystem. Wegen möglicher Schreibfehler auf einer NTFS Partition, ist das Installieren eines Spiels nicht möglich."
#~ msgid "Partition Format Menu"
#~ msgstr "Partitionen Formatierungs-Menü"
#~ msgid "Unlock the app first."
#~ msgstr "Entsperre zuerst den Loader."
#~ msgid "You can't access this menu!"
#~ msgstr "Du kannst auf dieses Menü nicht zugreifen!"
#~ msgid "Can't decompress LZ77"
#~ msgstr "LZ77 konnte nicht entpackt werden"
#~ msgid "Can't find disc"
#~ msgstr "Keine Disc gefunden"
#~ msgid "IMD5 Header not right."
#~ msgstr "IMD5 Header falsch."
#~ msgid "IMET Header wrong."
#~ msgstr "IMET Header falsch."
#~ msgid "Homebrew Channel"
#~ msgstr "Homebrew Kanal"
#~ msgid "You need to start this game one time to create a save file, then exit and start it again."
#~ msgstr "Du must dieses Spiel einmal starten um einen Speicherstand zu erstellen, dann verlassen und es neustarten."

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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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"
@ -606,6 +606,9 @@ msgstr "Német"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "HOME Menü" msgstr "HOME Menü"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrew Útvonal" msgstr "Homebrew Útvonal"
@ -1162,6 +1165,9 @@ msgstr "USB Meghajtó nem található"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX levédve" msgstr "USB Loader GX levédve"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "Az USB Loader GX csak Hermes CIOS rev 4 mellett működik! Gyõződj meg róla, hogy telepítetted!"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Az épp letöltött wad megnyitása nem sikerült (%s)." msgstr "Az épp letöltött wad megnyitása nem sikerült (%s)."
@ -1368,3 +1374,36 @@ msgstr "./"
msgid "seconds left" msgid "seconds left"
msgstr "hátralévõ másodperc" msgstr "hátralévõ másodperc"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "több mint 255 sorból áll a kód. Kiszámíthatatlan eredmények várhatók."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Háttérzene útvonala megváltozott."
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Beállítod háttérzenének?"
#~ msgid "The file is not a .wad"
#~ msgstr "A fájl nem .wad"
#~ msgid "Install not possible"
#~ msgstr "A telepítés nem lehetséges"
#~ msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
#~ msgstr "NTFS fájlrendszert használata esetén a lehetséges írási hibák miatt játékok telepítése nem lehetséges."
#~ msgid "Can't decompress LZ77"
#~ msgstr "LZ77 nem kitömöríthetõ"
#~ msgid "Can't find disc"
#~ msgstr "Lemez nem található"
#~ msgid "IMD5 Header not right."
#~ msgstr "IMD5 Fejléc nem megfelelõ."
#~ msgid "IMET Header wrong."
#~ msgstr "IMET fejléc nem megfelelõ."
#~ msgid "Exit USB Loader GX?"
#~ msgstr "Kilépés az USB Loader GX-bõl?"

View File

@ -1,11 +1,11 @@
# USB Loader GX language source file. # USB Loader GX language source file.
# italian.lang - v61 - r926 # italian.lang - v60 - r913
# don't delete/change this line (é). # don't delete/change this line (é).
msgid "" 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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+0100\n"
"PO-Revision-Date: 2010-02-21 08:00+0200\n" "PO-Revision-Date: 2010-02-21 08:00+0200\n"
"Last-Translator: Cambo \n" "Last-Translator: Cambo \n"
"Language-Team: FoxeJoe, Cambo\n" "Language-Team: FoxeJoe, Cambo\n"
@ -606,6 +606,9 @@ msgstr "Tedesco"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Menu HOME" msgstr "Menu HOME"
msgid "Hermes CIOS"
msgstr "cIOS di Hermes"
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Percorso Applic. Homebrew" msgstr "Percorso Applic. Homebrew"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Aggiornamento Eseguito" msgstr "Aggiornamento Eseguito"
msgid "Successfully Updated thanks to www.techjawa.com" msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Aggiornamento Eseguito grazie a www.techjawa.com" msgstr ""
msgid "Successfully deleted:" msgid "Successfully deleted:"
msgstr "Eliminato con successo:" msgstr "Eliminato con successo:"
@ -1162,6 +1165,9 @@ msgstr "Dispositivo USB non Trovato"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX è Protetto" msgstr "USB Loader GX è Protetto"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "USB Loader GX funziona solo con la rev 4 del cIOS di Hermes! Accertarsi di aver installato la rev 4!"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Non riesco ad aprire il wad da poco scaricato (%s)." msgstr "Non riesco ad aprire il wad da poco scaricato (%s)."
@ -1368,3 +1374,60 @@ msgstr "di"
msgid "seconds left" msgid "seconds left"
msgstr "secondi mancanti" msgstr "secondi mancanti"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "contiene più di 255 linee di codice. Possibili effetti inattesi."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Percorso Musica modificato"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Imposto come Musica Sottofondo?"
#~ msgid "Install not possible"
#~ msgstr "Impossibile installare"
#~ msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
#~ msgstr "E' in uso una partizione NTFS. Poiché sono possibili errori in scrittura nelle partizioni NTFS, non è possibile installare alcun gioco."
#~ msgid "Partition Format Menu"
#~ msgstr "Menu Formattazione Partizioni"
#~ msgid "Unlock the app first."
#~ msgstr "L'applicazione deve essere sbloccata."
#~ msgid "You can't access this menu!"
#~ msgstr "Non puoi accedere a questo menu!"
#~ msgid "Can't decompress LZ77"
#~ msgstr "Impossibile decomprimere LZ77"
#~ msgid "Can't find disc"
#~ msgstr "Impossibile trovare il disco"
#~ msgid "IMD5 Header not right."
#~ msgstr "Header IMD5 non corretto."
#~ msgid "IMET Header wrong."
#~ msgstr "Header IMET errato."
#~ msgid "Failed to extract opening.bnr"
#~ msgstr "Estrazione opening.bnr fallita"
#~ msgid "Homebrew Channel"
#~ msgstr "Canale Homebrew"
#~ msgid "You need to start this game one time to create a save file, then exit and start it again."
#~ msgstr "Devi caricare questo gioco almeno una volta per creare un file di salvataggio, quindi esci dal gioco e ricaricalo di nuovo."
#~ msgid "ERROR: USB device could not be loaded!"
#~ msgstr "ERRORE: non si accede alla periferica USB!"
#~ msgid "ERROR: cIOS could not be loaded!"
#~ msgstr "ERRORE: non si carica il cIOS!"
#~ msgid "Loading..."
#~ msgstr "Sto caricando..."
#~ msgid "Waiting for your slow USB Device: %i secs..."
#~ msgstr "Sto aspettando la tua lenta periferica USB: %i secs..."

View File

@ -1,11 +1,11 @@
# USB Loader GX language source file. # USB Loader GX language source file.
# japanese.lang - r924 # japanese.lang - r913
# don't delete/change this line (é). # don't delete/change this line (é).
msgid "" 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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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\n" "Language-Team: hosigumayuugi\n"
@ -606,6 +606,9 @@ msgstr "ドイツ語"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "HOMEボタンメニュー" msgstr "HOMEボタンメニュー"
msgid "Hermes CIOS"
msgstr "注意事項"
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrewのパス" msgstr "Homebrewのパス"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "更新しました" msgstr "更新しました"
msgid "Successfully Updated thanks to www.techjawa.com" msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "更新しました www.techjawa.comに感謝!" msgstr ""
msgid "Successfully deleted:" msgid "Successfully deleted:"
msgstr "削除に成功しました" msgstr "削除に成功しました"
@ -1162,6 +1165,9 @@ msgstr "USBデバイスを検出できませんでした"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loaderは保護されています" msgstr "USB Loaderは保護されています"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "cIOS222と223はrev4の場合のみ 使用できます"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "ダウンロード中のためWADを開けません (%s)." msgstr "ダウンロード中のためWADを開けません (%s)."
@ -1368,3 +1374,51 @@ msgstr "中"
msgid "seconds left" msgid "seconds left"
msgstr "秒で完了" msgstr "秒で完了"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "コードが255行を超えていて 正しく実行できません"
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "BGMのパスを変更しました"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "BGMに設定しますか"
#~ msgid "Install not possible"
#~ msgstr "インストールできません"
#~ msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
#~ msgstr "NTFS領域にインストール中にエラーが発生するとインストールに失敗します"
#~ msgid "Partition Format Menu"
#~ msgstr "初期化メニュー"
#~ msgid "Unlock the app first."
#~ msgstr "先にロックを解除してください"
#~ msgid "You can't access this menu!"
#~ msgstr "このメニューは使用できません"
#~ msgid "Random Directory music"
#~ msgstr "フォルダ内でランダムに再生"
#~ msgid "Can't decompress LZ77"
#~ msgstr "LZ77を解凍できませんでした"
#~ msgid "Can't find disc"
#~ msgstr "ディスクが見つかりません"
#~ msgid "IMD5 Header not right."
#~ msgstr "IMD5ヘッダが正しくありません"
#~ msgid "IMET Header wrong."
#~ msgstr "IMETヘッダが間違っています"
#~ msgid "Exit USB Loader GX?"
#~ msgstr "USBLoaderGXを終了しますか"
#~ msgid "Failed to extract opening.bnr"
#~ msgstr "opening.bnrの抽出に失敗しました"
#~ msgid "Homebrew Channel"
#~ msgstr "HBCへ"

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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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"
@ -606,6 +606,9 @@ msgstr "독일어"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "HOME 메뉴" msgstr "HOME 메뉴"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "홈브류 경로" msgstr "홈브류 경로"
@ -1162,6 +1165,9 @@ msgstr "USB 장치가 없습니다."
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB 로더 GX 잠김 상태" msgstr "USB 로더 GX 잠김 상태"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr ""
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "방금 다운로드한 wad화일(%s)을 열수가 없음." msgstr "방금 다운로드한 wad화일(%s)을 열수가 없음."
@ -1368,3 +1374,27 @@ msgstr "중"
msgid "seconds left" msgid "seconds left"
msgstr "초 남았습니다" msgstr "초 남았습니다"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "255라인 이상이면 예상치 못한 결과가 나오죠."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "배경음악 경로 변경됨."
#~ msgid "Set as backgroundmusic?"
#~ msgstr "벼경음악 설정?"
#~ msgid "The file is not a .wad"
#~ msgstr "화일이 .wad 아님"
#~ msgid "Exit USB Loader GX?"
#~ msgstr "USB로더 GX를 종료할까요?"
#~ msgid "No WBFS partition found"
#~ msgstr "WBFS 파티션이 없습니다."
#~ msgid "You need to format a partition"
#~ msgstr "파티션을 포맷해야 합니다"
#~ msgid "Homebrew Channel"
#~ 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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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"
@ -606,6 +606,9 @@ msgstr "Tysk"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "HOME Meny" msgstr "HOME Meny"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrew Apps sti" msgstr "Homebrew Apps sti"
@ -1162,6 +1165,9 @@ msgstr "USB enhet ikke funnet"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX er beskyttet" msgstr "USB Loader GX er beskyttet"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr ""
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Kan ikke åpne nedlastet WAD fil (%s)." msgstr "Kan ikke åpne nedlastet WAD fil (%s)."
@ -1368,3 +1374,36 @@ msgstr "av"
msgid "seconds left" msgid "seconds left"
msgstr "sekunder gjenstår" msgstr "sekunder gjenstår"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "inneholder over 255 linjer med kode. Den kan føre til uønskede resultater."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Bakgrunnsmusikk sti endret"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Bruk som bakgrunnsmusikk?"
#~ msgid "The file is not a .wad"
#~ msgstr "Denne filen er ikke en .wad"
#~ msgid "Exit USB Loader GX?"
#~ msgstr "Avslutt USB Loader GX?"
#~ msgid "No WBFS partition found"
#~ msgstr "Ingen WBFS partisjon funnet"
#~ msgid "You need to format a partition"
#~ msgstr "Du må formatere en partisjon"
#~ msgid "ERROR: USB device could not be loaded!"
#~ msgstr "FEIL: USB enhet kan ikke lastes!"
#~ msgid "ERROR: cIOS could not be loaded!"
#~ msgstr "FEIL: cIOS kan ikke lastes!"
#~ msgid "Loading..."
#~ msgstr "Laster..."
#~ msgid "Waiting for your slow USB Device: %i secs..."
#~ msgstr "Venter på USB enhet: %i sek..."

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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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"
@ -606,6 +606,9 @@ msgstr "niemiecki"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Menu" msgstr "Menu"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Sciezka plikacji homebrew" msgstr "Sciezka plikacji homebrew"
@ -1162,6 +1165,9 @@ msgstr "Nie znaleziono urzadzenia USB"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX zabezpieczony" msgstr "USB Loader GX zabezpieczony"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "USB Loader GX dziala tylko z Hermes CIOS rev 4! Upewnij sie czy masz zainstalowana wersje 4!"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Nie udalo sie zainstalowac dopiero co pobranego pliku (%s)" msgstr "Nie udalo sie zainstalowac dopiero co pobranego pliku (%s)"
@ -1368,3 +1374,30 @@ msgstr "z"
msgid "seconds left" msgid "seconds left"
msgstr "sekund pozostalo" msgstr "sekund pozostalo"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "zawiera ponad 255 linii kodu. Bedzie coS nie tak."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Sciezka do muzyki w tle zmieniona"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Ustawic jako muzyke w tle?"
#~ msgid "The file is not a .wad"
#~ msgstr "To nie plik .wad"
#~ msgid "Install not possible"
#~ msgstr "Nie mozna zainstalowac"
#~ msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
#~ msgstr "Uzywasz partycji NTFS. Instalacja gier na tej partycji nie jest mozliwa."
#~ msgid "Exit USB Loader GX?"
#~ msgstr "Zakonczyc prace programu?"
#~ msgid "No WBFS partition found"
#~ msgstr "Nie znaleziono partycji WBFS"
#~ msgid "You need to format a partition"
#~ msgstr "Musisz sformatowac partycje"

View File

@ -1,14 +1,14 @@
# USB Loader GX language source file. # USB Loader GX language source file.
# portuguese_br.lang - r921 # portuguese_br.lang - r823
# don't delete/change this line (é). # don't delete/change this line (é).
msgid "" 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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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: boto12\n"
"Language-Team: boto12, aniemotion\n" "Language-Team: boto12\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
@ -126,7 +126,7 @@ msgid "AUTO"
msgstr "" msgstr ""
msgid "All partitions" msgid "All partitions"
msgstr "Todas as Partições" msgstr ""
msgid "All the features of USB Loader GX are unlocked." msgid "All the features of USB Loader GX are unlocked."
msgstr "As configurações estão desbloqueadas." msgstr "As configurações estão desbloqueadas."
@ -147,7 +147,7 @@ msgid "Apr"
msgstr "Abr" msgstr "Abr"
msgid "Are you sure you want to enable Parent Control?" msgid "Are you sure you want to enable Parent Control?"
msgstr "Tem certeza que você deseja ligar o Controle de Pais?" msgstr ""
msgid "Are you sure?" msgid "Are you sure?"
msgstr "Tem certeza?" msgstr "Tem certeza?"
@ -165,13 +165,13 @@ msgid "AutoPatch"
msgstr "Patch automático" msgstr "Patch automático"
msgid "BCA Codes Path" msgid "BCA Codes Path"
msgstr "Caminho do BCA Codes" msgstr ""
msgid "BCA Codes Path changed" msgid "BCA Codes Path changed"
msgstr "Caminho do BCA Codes alterado" msgstr ""
msgid "BETA revisions" msgid "BETA revisions"
msgstr "Revisões BETA" msgstr ""
msgid "Back" msgid "Back"
msgstr "Voltar" msgstr "Voltar"
@ -219,7 +219,7 @@ msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
msgid "Change Play Path" msgid "Change Play Path"
msgstr "Alterar Caminho para Play" msgstr ""
msgid "Channels" msgid "Channels"
msgstr "Canais" msgstr "Canais"
@ -409,7 +409,7 @@ msgid "Do you really want to delete:"
msgstr "Tem a certeza que quer eliminar o jogo:" msgstr "Tem a certeza que quer eliminar o jogo:"
msgid "Do you want to apply it now?" msgid "Do you want to apply it now?"
msgstr "Deseja aplicar agora?" msgstr ""
msgid "Do you want to change language?" msgid "Do you want to change language?"
msgstr "Deseja alterar o idioma?" msgstr "Deseja alterar o idioma?"
@ -475,10 +475,10 @@ msgid "ERROR:"
msgstr "ERRO:" msgstr "ERRO:"
msgid "ERROR: Can't set up theme." msgid "ERROR: Can't set up theme."
msgstr "ERRO: Impossível aplicar tema" msgstr ""
msgid "Enable Parental Control" msgid "Enable Parental Control"
msgstr "Ligar Controle de Pais" msgstr ""
msgid "English" msgid "English"
msgstr "Inglês" msgstr "Inglês"
@ -508,7 +508,7 @@ msgid "Extracting files..."
msgstr "Extraindo arquivos..." msgstr "Extraindo arquivos..."
msgid "FAT: Use directories" msgid "FAT: Use directories"
msgstr "FAT: Usar Diretórios" msgstr ""
msgid "Failed formating" msgid "Failed formating"
msgstr "Falha ao formatar" msgstr "Falha ao formatar"
@ -565,7 +565,7 @@ msgid "GUI Settings"
msgstr "Definições de Interface" msgstr "Definições de Interface"
msgid "GXtheme.cfg not found in any subfolder." msgid "GXtheme.cfg not found in any subfolder."
msgstr "GXtheme.cfg não encontrado em nenhuma subpasta" msgstr ""
msgid "Game ID" msgid "Game ID"
msgstr "ID do Jogo" msgstr "ID do Jogo"
@ -583,7 +583,7 @@ msgid "Game Size"
msgstr "Tamanho do Jogo" msgstr "Tamanho do Jogo"
msgid "Game Sound Mode" msgid "Game Sound Mode"
msgstr "Modo de Som do Jogo" msgstr ""
msgid "Game Sound Volume" msgid "Game Sound Volume"
msgstr "Volume dos Sons dos Jogos" msgstr "Volume dos Sons dos Jogos"
@ -592,10 +592,10 @@ msgid "Game is already installed:"
msgstr "Este jogo já está instalado:" msgstr "Este jogo já está instalado:"
msgid "Game partition" msgid "Game partition"
msgstr "Partição de Game" msgstr ""
msgid "Gamename [GAMEID]" msgid "Gamename [GAMEID]"
msgstr "Nome do Jogo [GAMEID]" msgstr ""
msgid "Games" msgid "Games"
msgstr "Jogos" msgstr "Jogos"
@ -606,6 +606,9 @@ msgstr "Alemão"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Menu Inicial" msgstr "Menu Inicial"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Pasta Apps Homebrew" msgstr "Pasta Apps Homebrew"
@ -657,7 +660,7 @@ msgid "Install"
msgstr "Instalar" msgstr "Instalar"
msgid "Install 1:1 Copy" msgid "Install 1:1 Copy"
msgstr "Instalar 1:1 Copy" msgstr ""
msgid "Install Error!" msgid "Install Error!"
msgstr "Erro de Instalação!" msgstr "Erro de Instalação!"
@ -666,7 +669,7 @@ msgid "Install a game"
msgstr "Instalar um jogo" msgstr "Instalar um jogo"
msgid "Install partitions" msgid "Install partitions"
msgstr "Instalare partições" msgstr ""
msgid "Installing content... Ok!" msgid "Installing content... Ok!"
msgstr "Instalando conteúdo... Ok!" msgstr "Instalando conteúdo... Ok!"
@ -684,7 +687,7 @@ msgid "Installing wad"
msgstr "Instalando wad" msgstr "Instalando wad"
msgid "Invalid PIN code" msgid "Invalid PIN code"
msgstr "Código PIN inválido" msgstr ""
msgid "It seems that you have some information that will be helpful to us. Please pass this information along to the DEV team." msgid "It seems that you have some information that will be helpful to us. Please pass this information along to the DEV team."
msgstr "Parece que tem uma informação que pode ser útil. Por favor envie esta informação a nossa equipe de desenvolvimento." msgstr "Parece que tem uma informação que pode ser útil. Por favor envie esta informação a nossa equipe de desenvolvimento."
@ -754,19 +757,19 @@ msgid "Locked"
msgstr "Bloqueado" msgstr "Bloqueado"
msgid "Loop Directory" msgid "Loop Directory"
msgstr "Repitir Diretório" msgstr ""
msgid "Loop Music" msgid "Loop Music"
msgstr "Repitir Música" msgstr ""
msgid "Loop Sound" msgid "Loop Sound"
msgstr "Repitir Som" msgstr ""
msgid "Mar" msgid "Mar"
msgstr "" msgstr ""
msgid "Mark new games" msgid "Mark new games"
msgstr "Marcar games novos" msgstr ""
msgid "May" msgid "May"
msgstr "Mai" msgstr "Mai"
@ -781,7 +784,7 @@ msgid "Mount DVD drive"
msgstr "Carregar leitor DVD" msgstr "Carregar leitor DVD"
msgid "Music Loop Mode" msgid "Music Loop Mode"
msgstr "Modo Repetição de Música" msgstr ""
msgid "Music Volume" msgid "Music Volume"
msgstr "Volume da Música" msgstr "Volume da Música"
@ -841,7 +844,7 @@ msgid "No themes found on the site."
msgstr "Nenhum tema encontrado no site" msgstr "Nenhum tema encontrado no site"
msgid "None" msgid "None"
msgstr "Nenhum" msgstr ""
msgid "Normal" msgid "Normal"
msgstr "" msgstr ""
@ -856,7 +859,7 @@ msgid "Not a DOL/ELF file."
msgstr "Não é um arquivo DOL/ELF válido." msgstr "Não é um arquivo DOL/ELF válido."
msgid "Not a WAD file." msgid "Not a WAD file."
msgstr "Não é um arquivo Wad" msgstr ""
msgid "Not a Wii Disc" msgid "Not a Wii Disc"
msgstr "Não é um Disco do Wii" msgstr "Não é um Disco do Wii"
@ -904,7 +907,7 @@ msgid "Parental Control"
msgstr "Controle de Pais" msgstr "Controle de Pais"
msgid "Parental Control disabled" msgid "Parental Control disabled"
msgstr "Controle dos Pais desligado" msgstr ""
msgid "Partition" msgid "Partition"
msgstr "Partição" msgstr "Partição"
@ -931,16 +934,16 @@ msgid "Play Count"
msgstr "Vezes jogadas" msgstr "Vezes jogadas"
msgid "Play Next" msgid "Play Next"
msgstr "Tocar Próximo" msgstr ""
msgid "Play Once" msgid "Play Once"
msgstr "Tocar uma só vez" msgstr ""
msgid "Play Previous" msgid "Play Previous"
msgstr "Tocar Anteior" msgstr ""
msgid "Playing Music:" msgid "Playing Music:"
msgstr "Tocando a Música:" msgstr ""
msgid "Please wait..." msgid "Please wait..."
msgstr "Por favor aguarde..." msgstr "Por favor aguarde..."
@ -961,7 +964,7 @@ msgid "Quick Boot"
msgstr "Inicialização Rápida" msgstr "Inicialização Rápida"
msgid "Random Directory Music" msgid "Random Directory Music"
msgstr "Diretótio Aleatório de Músicas" msgstr ""
msgid "Reading WAD data... Ok!" msgid "Reading WAD data... Ok!"
msgstr "Lendo dados do WAD... Ok!" msgstr "Lendo dados do WAD... Ok!"
@ -976,19 +979,19 @@ msgid "Reload SD"
msgstr "Atualizar do cartão SD" msgstr "Atualizar do cartão SD"
msgid "Remove update" msgid "Remove update"
msgstr "Remover atualização" msgstr ""
msgid "Rename Game on WBFS" msgid "Rename Game on WBFS"
msgstr "Alterar nome do jogo na partição WBFS" msgstr "Alterar nome do jogo na partição WBFS"
msgid "Reset BG Music" msgid "Reset BG Music"
msgstr "Resetar Música de Fundo" msgstr ""
msgid "Reset Playcounter" msgid "Reset Playcounter"
msgstr "Limpar Contagem" msgstr "Limpar Contagem"
msgid "Reset to standard BGM?" msgid "Reset to standard BGM?"
msgstr "Resetar para Música de Fundo padrão?" msgstr ""
msgid "Restarting..." msgid "Restarting..."
msgstr "O Wii irá reiniciar" msgstr "O Wii irá reiniciar"
@ -1027,7 +1030,7 @@ msgid "Screensaver"
msgstr "Proteção de tela" msgstr "Proteção de tela"
msgid "Select" msgid "Select"
msgstr "selecionar" msgstr ""
msgid "Select a DOL" msgid "Select a DOL"
msgstr "Selecionar um DOL" msgstr "Selecionar um DOL"
@ -1063,10 +1066,10 @@ msgid "Sound"
msgstr "Audio" msgstr "Audio"
msgid "Sound+BGM" msgid "Sound+BGM"
msgstr "Som+Music de Fundo" msgstr ""
msgid "Sound+Quiet" msgid "Sound+Quiet"
msgstr "Som+Quieto" msgstr ""
msgid "Spanish" msgid "Spanish"
msgstr "Espanhol" msgstr "Espanhol"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Programa atualizado com Sucesso" msgstr "Programa atualizado com Sucesso"
msgid "Successfully Updated thanks to www.techjawa.com" msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Atualizado com sucesso graças a www.techjawa.com" msgstr ""
msgid "Successfully deleted:" msgid "Successfully deleted:"
msgstr "Eliminado com Sucesso:" msgstr "Eliminado com Sucesso:"
@ -1162,6 +1165,9 @@ msgstr "Dispositivo USB não encontrado"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "O USB Loader GX está bloqueado" msgstr "O USB Loader GX está bloqueado"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr ""
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Não é possível abrir o arquivo wad baixado (%s)." msgstr "Não é possível abrir o arquivo wad baixado (%s)."
@ -1179,7 +1185,7 @@ msgid "Uninstalling wad"
msgstr "Desinstalando wad" msgstr "Desinstalando wad"
msgid "Unlock Parental Control" msgid "Unlock Parental Control"
msgstr "Desbloquear Controle de Pais" msgstr ""
msgid "Unlock console to use this option." msgid "Unlock console to use this option."
msgstr "Desbloquear configuração antes de usar esta opção." msgstr "Desbloquear configuração antes de usar esta opção."
@ -1243,10 +1249,10 @@ msgid "Video Mode"
msgstr "Modo de Vídeo" msgstr "Modo de Vídeo"
msgid "WIP Patches Path" msgid "WIP Patches Path"
msgstr "Caminho WIP Patches" msgstr ""
msgid "WIP Patches Path changed" msgid "WIP Patches Path changed"
msgstr "Caminho WIP Patches alterado" msgstr ""
msgid "Waiting for USB Device" msgid "Waiting for USB Device"
msgstr "Aguardando pelo Dispositivo USB" msgstr "Aguardando pelo Dispositivo USB"
@ -1294,13 +1300,13 @@ msgid "You are choosing to display favorites and you do not have any selected."
msgstr "Está tentando visualizar os favoritos, mas não existe nenhum selecionado." msgstr "Está tentando visualizar os favoritos, mas não existe nenhum selecionado."
msgid "You don't have Parental Control enabled. If you wish to use Parental Control, enable it in the Wii Settings." msgid "You don't have Parental Control enabled. If you wish to use Parental Control, enable it in the Wii Settings."
msgstr "Você não tem o Controle de Pais ligado. Se você deseja usar o Controle de Pais, ligue-o nas Configurações do Wii." msgstr ""
msgid "You have attempted to load a bad image" msgid "You have attempted to load a bad image"
msgstr "Você tentou carregar uma imagem corrompida" msgstr "Você tentou carregar uma imagem corrompida"
msgid "You need to select or format a partition" msgid "You need to select or format a partition"
msgstr "Você precisa selecionar ou formatar uma partição" msgstr ""
#, c-format #, c-format
msgid "Your URL has been saved in %sWiiTDB_URL.txt." msgid "Your URL has been saved in %sWiiTDB_URL.txt."
@ -1331,7 +1337,7 @@ msgid "files not found on the server!"
msgstr "arquivos não encontrados no servidor!" msgstr "arquivos não encontrados no servidor!"
msgid "for FAT/NTFS support" msgid "for FAT/NTFS support"
msgstr "para suporte a FAT/NTFS" msgstr ""
msgid "for Ocarina" msgid "for Ocarina"
msgstr "pelo Ocarina" msgstr "pelo Ocarina"
@ -1368,3 +1374,39 @@ msgstr "de"
msgid "seconds left" msgid "seconds left"
msgstr "segundos restantes" msgstr "segundos restantes"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "contém mais de 255 linhas de código. Os resultados podem ser inesperados."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Pasta Música Fundo modificada"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Definir como música de fundo?"
#~ msgid "The file is not a .wad"
#~ msgstr "O arquivo não é um .wad"
#~ msgid "Can't decompress LZ77"
#~ msgstr "Não foi possivel descomprimir LZ77"
#~ msgid "Can't find disc"
#~ msgstr "Disco não encontrado"
#~ msgid "IMD5 Header not right."
#~ msgstr "Cabeçalho IMD5 não esta correto"
#~ msgid "IMET Header wrong."
#~ msgstr "Cabeçalho IMET errado"
#~ msgid "Exit USB Loader GX?"
#~ msgstr "Deseja sair do USB Loader GX?"
#~ msgid "You need to format a partition"
#~ msgstr "É necessário FORMATAR a partição"
#~ msgid "Failed to extract opening.bnr"
#~ msgstr "Falha ao extrair opening.bnr"
#~ msgid "Homebrew Channel"
#~ msgstr "Canal Homebrew"

View File

@ -1,12 +1,12 @@
# USB Loader GX language source file. # USB Loader GX language source file.
# portuguese_pt.lang - r921 # portuguese_pt.lang - r903
# don't delete/change this line (é). # don't delete/change this line (é).
msgid "" 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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+0100\n"
"PO-Revision-Date: 2010-03-22 10:55-0000\n" "PO-Revision-Date: 2010-02-01 18:10-0000\n"
"Last-Translator: Sky8000\n" "Last-Translator: Sky8000\n"
"Language-Team: Sky8000 <sky8000@hotmail.com>\n" "Language-Team: Sky8000 <sky8000@hotmail.com>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -606,6 +606,9 @@ msgstr "Alemão"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Menú Inicial" msgstr "Menú Inicial"
msgid "Hermes CIOS"
msgstr "CIOS Hermes"
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Pasta Apps Homebrew" msgstr "Pasta Apps Homebrew"
@ -754,10 +757,10 @@ msgid "Locked"
msgstr "Bloqueado" msgstr "Bloqueado"
msgid "Loop Directory" msgid "Loop Directory"
msgstr "Repetir Pasta" msgstr ""
msgid "Loop Music" msgid "Loop Music"
msgstr "Repetir Música" msgstr ""
msgid "Loop Sound" msgid "Loop Sound"
msgstr "Repetir Sons" msgstr "Repetir Sons"
@ -856,7 +859,7 @@ msgid "Not a DOL/ELF file."
msgstr "Não é um ficheiro DOL/ELF válido." msgstr "Não é um ficheiro DOL/ELF válido."
msgid "Not a WAD file." msgid "Not a WAD file."
msgstr "Não é um ficheiro WAD." msgstr ""
msgid "Not a Wii Disc" msgid "Not a Wii Disc"
msgstr "Não é um Disco da Wii" msgstr "Não é um Disco da Wii"
@ -934,7 +937,7 @@ msgid "Play Next"
msgstr "Próxima" msgstr "Próxima"
msgid "Play Once" msgid "Play Once"
msgstr "Tocar uma vez." msgstr ""
msgid "Play Previous" msgid "Play Previous"
msgstr "Anterior" msgstr "Anterior"
@ -961,7 +964,7 @@ msgid "Quick Boot"
msgstr "Arranque Rápido" msgstr "Arranque Rápido"
msgid "Random Directory Music" msgid "Random Directory Music"
msgstr "Pasta de Música Aleatória" msgstr ""
msgid "Reading WAD data... Ok!" msgid "Reading WAD data... Ok!"
msgstr "Lendo dados do WAD... Ok!" msgstr "Lendo dados do WAD... Ok!"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Actualização Concluída" msgstr "Actualização Concluída"
msgid "Successfully Updated thanks to www.techjawa.com" msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Actualizado com Sucesso graças a www.techjawa.com" msgstr ""
msgid "Successfully deleted:" msgid "Successfully deleted:"
msgstr "Eliminado com Sucesso:" msgstr "Eliminado com Sucesso:"
@ -1162,6 +1165,9 @@ msgstr "Dispositivo USB não encontrado"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "O USB Loader GX está bloqueado" msgstr "O USB Loader GX está bloqueado"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "O USB Loader GX só suporta o CIOS Hermes revisão 4! Verifique se esta é a revisão que tem instalada!"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Não é possível abrir o ficheiro wad descarregado (%s)." msgstr "Não é possível abrir o ficheiro wad descarregado (%s)."
@ -1368,3 +1374,48 @@ msgstr "de"
msgid "seconds left" msgid "seconds left"
msgstr "segundos restantes" msgstr "segundos restantes"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "contém mais de 255 linhas de código. Os resultados podem ser inesperados."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Pasta Música Fundo alterada"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Definir como música de fundo?"
#~ msgid "The file is not a .wad"
#~ msgstr "O ficheiro não é um .wad"
#~ msgid "Install not possible"
#~ msgstr "Não é possível instalar"
#~ msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
#~ msgstr "Está a utilizar um sistema de ficheiros NTFS. Devido à possibilidade de ocorrerem erros na gravação não será possível instalar jogos."
#~ msgid "Partition Format Menu"
#~ msgstr "Menu de Formatação de Partição"
#~ msgid "Unlock the app first."
#~ msgstr "Desbloquear aplicação primeiro."
#~ msgid "You can't access this menu!"
#~ msgstr "Não tem acesso a este menu!"
#~ msgid "Can't decompress LZ77"
#~ msgstr "Não é possível descomprimir LZ77"
#~ msgid "Can't find disc"
#~ msgstr "Disco não encontrado"
#~ msgid "IMD5 Header not right."
#~ msgstr "O cabeçalho IMD5 não está correcto."
#~ msgid "IMET Header wrong."
#~ msgstr "Cabeçalho IMET errado."
#~ msgid "Failed to extract opening.bnr"
#~ msgstr "Falha ao extrair o opening.bnr"
#~ msgid "Homebrew Channel"
#~ msgstr "Canal Homebrew"

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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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"
@ -606,6 +606,9 @@ msgstr "Немецкий"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Домашнее Меню" msgstr "Домашнее Меню"
msgid "Hermes CIOS"
msgstr "Hermes CIOS"
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Путь к хоумбрю-программам" msgstr "Путь к хоумбрю-программам"
@ -1162,6 +1165,9 @@ msgstr "USB устройство не найдено"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX заблокирован" msgstr "USB Loader GX заблокирован"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "USB Loader GX будет работать только с Hermes CIOS rev 4! Пожалуйста убедитесь что у вас установлена версия 4!"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Не могу открыть скачанный WAD (%s)" msgstr "Не могу открыть скачанный WAD (%s)"
@ -1368,3 +1374,39 @@ msgstr "из"
msgid "seconds left" msgid "seconds left"
msgstr "секунд осталось" msgstr "секунд осталось"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "содержит более 255 строк кода. Результаты будут непредсказуемы."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Путь к фоновой музыке изменен."
#~ msgid "Set as backgroundmusic?"
#~ msgstr "установить как фоновую музыку"
#~ msgid "The file is not a .wad"
#~ msgstr "Это не файл .wad"
#~ msgid "Install not possible"
#~ msgstr "Установка невозможна"
#~ msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
#~ msgstr "Вы используете файловую систему NTFS. Из-за возможных ошибок записи на раздел NTFS установка игры невозможна."
#~ msgid "Partition Format Menu"
#~ msgstr "Меню форматирования раздела"
#~ msgid "Unlock the app first."
#~ msgstr "Разблокируйте приложение сначала."
#~ msgid "You can't access this menu!"
#~ msgstr "Вы не можете использовать это меню!"
#~ msgid "Exit USB Loader GX?"
#~ msgstr "Выйти из USB Loader GX?"
#~ msgid "No WBFS partition found"
#~ msgstr "Не найден раздел WBFS"
#~ msgid "You need to format a partition"
#~ 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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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\n" "Last-Translator: knife.hu kavid\n"
"Language-Team: kavid\n" "Language-Team: kavid\n"
@ -606,6 +606,9 @@ msgstr "德文"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "主菜单" msgstr "主菜单"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "自制程序路径" msgstr "自制程序路径"
@ -1162,6 +1165,9 @@ msgstr "找不到 USB 设备"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX 被锁定" msgstr "USB Loader GX 被锁定"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr ""
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "不能打开刚下载的 WAD 文件 (%s)." msgstr "不能打开刚下载的 WAD 文件 (%s)."
@ -1368,3 +1374,27 @@ msgstr "的"
msgid "seconds left" msgid "seconds left"
msgstr "剩余秒数" msgstr "剩余秒数"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "代码超过255行,这可能会导致不可预知的结果."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "背景音乐路径已变更"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "设置成背景音乐?"
#~ msgid "The file is not a .wad"
#~ msgstr "这不是一个 WAD 文件"
#~ msgid "Exit USB Loader GX?"
#~ msgstr "退出 USB Loader GX?"
#~ msgid "No WBFS partition found"
#~ msgstr "找不到 WBFS 分区"
#~ msgid "You need to format a partition"
#~ msgstr "必须格式化一个分区"
#~ msgid "Homebrew Channel"
#~ msgstr "Homebrew 频道"

View File

@ -1,11 +1,11 @@
# USB Loader GX language source file. # USB Loader GX language source file.
# spanish.lang - r921 # spanish.lang - r903
# don't delete/change this line (é). # don't delete/change this line (é).
msgid "" 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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+0100\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: SirPalax\n" "Last-Translator: SirPalax\n"
"Language-Team: Penn, SirPalax\n" "Language-Team: Penn, SirPalax\n"
@ -606,6 +606,9 @@ msgstr "Alemán"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Menú HOME" msgstr "Menú HOME"
msgid "Hermes CIOS"
msgstr "cIOS Hermes"
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Ruta Apps Homebrew" msgstr "Ruta Apps Homebrew"
@ -754,10 +757,10 @@ msgid "Locked"
msgstr "Bloqueada" msgstr "Bloqueada"
msgid "Loop Directory" msgid "Loop Directory"
msgstr "Carpeta de bucle" msgstr ""
msgid "Loop Music" msgid "Loop Music"
msgstr "Bucle musical" msgstr ""
msgid "Loop Sound" msgid "Loop Sound"
msgstr "Bucle de sonido" msgstr "Bucle de sonido"
@ -856,7 +859,7 @@ msgid "Not a DOL/ELF file."
msgstr "No es un archivo DOL/ELF." msgstr "No es un archivo DOL/ELF."
msgid "Not a WAD file." msgid "Not a WAD file."
msgstr "No es un archivo WAD." msgstr ""
msgid "Not a Wii Disc" msgid "Not a Wii Disc"
msgstr "No es un Disco Wii" msgstr "No es un Disco Wii"
@ -934,7 +937,7 @@ msgid "Play Next"
msgstr "Oír Siguiente" msgstr "Oír Siguiente"
msgid "Play Once" msgid "Play Once"
msgstr "Oir una vez" msgstr ""
msgid "Play Previous" msgid "Play Previous"
msgstr "Oír Anterior" msgstr "Oír Anterior"
@ -961,7 +964,7 @@ msgid "Quick Boot"
msgstr "Inicio Rápido" msgstr "Inicio Rápido"
msgid "Random Directory Music" msgid "Random Directory Music"
msgstr "Aleatorio de la carpeta musical" msgstr ""
msgid "Reading WAD data... Ok!" msgid "Reading WAD data... Ok!"
msgstr "Leyendo datos del WAD... ¡Correcto!" msgstr "Leyendo datos del WAD... ¡Correcto!"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Actualización correcta" msgstr "Actualización correcta"
msgid "Successfully Updated thanks to www.techjawa.com" msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Actualización correcta gracias a www.techjawa.com" msgstr ""
msgid "Successfully deleted:" msgid "Successfully deleted:"
msgstr "Borrado correctamente:" msgstr "Borrado correctamente:"
@ -1162,6 +1165,9 @@ msgstr "USB no encontrado"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX está protegido" msgstr "USB Loader GX está protegido"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "¡USB Loader GX sólo funciona con cIOS Hermes rev 4!. ¡Por favor, asegúrate de que tienes instalada la versión 4!"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "No se puede abrir el WAD que acabas de descargar (%s)." msgstr "No se puede abrir el WAD que acabas de descargar (%s)."
@ -1368,3 +1374,69 @@ msgstr "de"
msgid "seconds left" msgid "seconds left"
msgstr "segundos restantes" msgstr "segundos restantes"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "contiene más de 255 líneas de código. Se producirán resultados inesperados."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Ruta de Música de fondo cambiada"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "¿Poner como música de fondo?"
#~ msgid "The file is not a .wad"
#~ msgstr "El archivo no es un .wad"
#~ msgid "Install not possible"
#~ msgstr "Imposible instalar"
#~ msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
#~ msgstr "Estás utilizando un sistema de archivos NTFS. Debido a posibles errores de escritura en la partición NTFS, la instalación del juego es imposible."
#~ msgid "Partition Format Menu"
#~ msgstr "Menú Formatear Partición"
#~ msgid "Unlock the app first."
#~ msgstr "Desbloquea primero la aplicación."
#~ msgid "You can't access this menu!"
#~ msgstr "¡No puedes acceder a este menú!"
#~ msgid "Can't decompress LZ77"
#~ msgstr "No se puede descomprimir LZ77"
#~ msgid "Can't find disc"
#~ msgstr "No se encuentra el disco"
#~ msgid "IMD5 Header not right."
#~ msgstr "Cabecera IMD5 incorrecta."
#~ msgid "IMET Header wrong."
#~ msgstr "Cabecera IMET defectuosa."
#~ msgid "Exit USB Loader GX?"
#~ msgstr "¿Salir de USB Loader GX?"
#~ msgid "No WBFS partition found"
#~ msgstr "Partición WBFS no encontrada"
#~ msgid "You need to format a partition"
#~ msgstr "Necesitas formatear una partición"
#~ msgid "Failed to extract opening.bnr"
#~ msgstr "Fallo al extraer opening.bnr"
#~ msgid "Homebrew Channel"
#~ msgstr "Canal Homebrew"
#~ msgid "ERROR: USB device could not be loaded!"
#~ msgstr "ERROR: ¡No se pudo cargar dispositivo USB!"
#~ msgid "ERROR: cIOS could not be loaded!"
#~ msgstr "ERROR: ¡No se pudo cargar cIOS!"
#~ msgid "Loading..."
#~ msgstr "Cargando..."
#~ msgid "Waiting for your slow USB Device: %i secs..."
#~ msgstr "Esperando a tu lento disp. USB: %i segs..."

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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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"
@ -606,6 +606,9 @@ msgstr "Tyska"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "Hemmeny" msgstr "Hemmeny"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrew Apps" msgstr "Homebrew Apps"
@ -1162,6 +1165,9 @@ msgstr "USB-enhet ej hittad"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX är skyddad" msgstr "USB Loader GX är skyddad"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "USB Loader GX kommer endast köra med Hermes CIOS ver 4! Vänligen kontrollera att du har ver 4 installerad!"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Kunde inte öppna den nedladdade wad filen (%s)." msgstr "Kunde inte öppna den nedladdade wad filen (%s)."
@ -1368,3 +1374,63 @@ msgstr "av"
msgid "seconds left" msgid "seconds left"
msgstr "sekunder kvar" msgstr "sekunder kvar"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "Innehåller över 255 rader kod. Det kommer att skapa oväntade resultat."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Sökväg till bakgrundsmusik ändrad."
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Ställ in som bakgrundsmusik?"
#~ msgid "The file is not a .wad"
#~ msgstr "Filen är inte en .wad"
#~ msgid "Install not possible"
#~ msgstr "Installation inte möjlig"
#~ msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
#~ msgstr "Du använder NTFS filsystem. Pågrund av möjliga skriv fel till en NTFS partition, så är det inte möjligt att installera spel."
#~ msgid "Partition Format Menu"
#~ msgstr "Partitions formaterings meny"
#~ msgid "Unlock the app first."
#~ msgstr "Lås upp appen först."
#~ msgid "You can't access this menu!"
#~ msgstr "Du kan inte komma åt denna menyn!"
#~ msgid "Can't decompress LZ77"
#~ msgstr "Kunde inte dekomprimera LZ77"
#~ msgid "Can't find disc"
#~ msgstr "Kunde inte hitta skiva"
#~ msgid "IMD5 Header not right."
#~ msgstr "IMD5 Rubrik stämmer inte."
#~ msgid "IMET Header wrong."
#~ msgstr "IMET Rubriken är fel."
#~ msgid "No WBFS or FAT game partition found"
#~ msgstr "Ingen WBFS eller FAT spel partition hittad"
#~ msgid "Exit USB Loader GX?"
#~ msgstr "Avsluta USB Loader GX?"
#~ msgid "Homebrew Channel"
#~ msgstr "Homebrew Kanalen"
#~ msgid "ERROR: USB device could not be loaded!"
#~ msgstr "FEL: USB-enhet kunde inte laddas!"
#~ msgid "ERROR: cIOS could not be loaded!"
#~ msgstr "FEL: cIOS kunde inte laddas!"
#~ msgid "Loading..."
#~ msgstr "Laddar..."
#~ msgid "Waiting for your slow USB Device: %i secs..."
#~ msgstr "Väntar på din slöa USB-enhet: %i sek..."

View File

@ -1,14 +1,14 @@
# USB Loader GX language source file. # USB Loader GX language source file.
# tchinese.lang - r929 # tchinese.lang - r911
# don't delete/change this line (é). # don't delete/change this line (é).
msgid "" 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: 2010-04-13 15:20+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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: Mika Li\n"
"Language-Team: kyogc, Miller, Mika Li, Jane.H\n" "Language-Team: kyogc, Miller, Mika Li\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
@ -550,7 +550,7 @@ msgid "Full Shutdown"
msgstr "關機" msgstr "關機"
msgid "GAMEID_Gamename" msgid "GAMEID_Gamename"
msgstr "GAMEID_遊戲名稱" msgstr ""
msgid "GCT Cheatcodes Path" msgid "GCT Cheatcodes Path"
msgstr "金手指檔案路徑" msgstr "金手指檔案路徑"
@ -595,7 +595,7 @@ msgid "Game partition"
msgstr "遊戲磁區" msgstr "遊戲磁區"
msgid "Gamename [GAMEID]" msgid "Gamename [GAMEID]"
msgstr "遊戲名稱 [GAMEID]" msgstr ""
msgid "Games" msgid "Games"
msgstr "遊戲數量" msgstr "遊戲數量"
@ -606,6 +606,9 @@ msgstr "德文"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "主選單" msgstr "主選單"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "HBC 應用程式路徑" msgstr "HBC 應用程式路徑"
@ -841,7 +844,7 @@ msgid "No themes found on the site."
msgstr "在網站上找不到主題" msgstr "在網站上找不到主題"
msgid "None" msgid "None"
msgstr "沒有" msgstr ""
msgid "Normal" msgid "Normal"
msgstr "一般" msgstr "一般"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "更新已完成" msgstr "更新已完成"
msgid "Successfully Updated thanks to www.techjawa.com" msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "已更新成功,感謝 www.techjawa.com" msgstr ""
msgid "Successfully deleted:" msgid "Successfully deleted:"
msgstr "成功的刪除:" msgstr "成功的刪除:"
@ -1162,6 +1165,9 @@ msgstr "找不到 USB 設備"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX 被鎖定" msgstr "USB Loader GX 被鎖定"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "USB Loader GX 只能執行 Hermes CIO rev4請確認您安裝的版本是 rev4"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "不能打開剛下載的 WAD 文件 (%s)." msgstr "不能打開剛下載的 WAD 文件 (%s)."
@ -1368,3 +1374,48 @@ msgstr "的"
msgid "seconds left" msgid "seconds left"
msgstr "剩餘秒數" msgstr "剩餘秒數"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "超過255行的指令,將導致無法預期的結果"
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "背景音樂路徑"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "設定背景音樂"
#~ msgid "The file is not a .wad"
#~ msgstr "這不是一個 WAD 文件"
#~ msgid "Install not possible"
#~ msgstr "無法安裝"
#~ msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
#~ msgstr "您正在使用 NTFS 文件系統。由於可能一個錯誤寫入到一個 NTFS 分區,這時候是無法安裝遊戲的。"
#~ msgid "Partition Format Menu"
#~ msgstr "磁區格式化"
#~ msgid "Unlock the app first."
#~ msgstr "請先將此應用程式解鎖"
#~ msgid "You can't access this menu!"
#~ msgstr "您無法存取此選單"
#~ msgid "Can't decompress LZ77"
#~ msgstr "無法解壓縮的LZ77"
#~ msgid "Can't find disc"
#~ msgstr "找不到磁碟"
#~ msgid "IMD5 Header not right."
#~ msgstr "IMD5 標題不正確"
#~ msgid "IMET Header wrong."
#~ msgstr "沒有開頭音樂"
#~ msgid "Exit USB Loader GX?"
#~ msgstr "離開 USB Loader GX?"
#~ msgid "Homebrew Channel"
#~ msgstr "Homebrew 頻道"

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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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"
@ -606,6 +606,9 @@ msgstr "เยอรมัน"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "เมนู HOME" msgstr "เมนู HOME"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "ที่เก็บโปรแกรม Homebrew" msgstr "ที่เก็บโปรแกรม Homebrew"
@ -1162,6 +1165,9 @@ msgstr "ไม่พบอุปกรณ์ USB"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX 5 ถูกป้องกัน" msgstr "USB Loader GX 5 ถูกป้องกัน"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr ""
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "ไม่สามารถเปิดไฟล์ Wad ที่เพิ่งดาวน์โหลดมาได้ (%s)." msgstr "ไม่สามารถเปิดไฟล์ Wad ที่เพิ่งดาวน์โหลดมาได้ (%s)."
@ -1368,3 +1374,54 @@ msgstr "จาก"
msgid "seconds left" msgid "seconds left"
msgstr "วินาทีที่เหลือ" msgstr "วินาทีที่เหลือ"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "มีจำนวนบรรทัดมากกว่า 255 บรรทัด ซึ่งอาจทำให้เกิดผลที่ไม่คาดคิด."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "เปลี่ยนที่เก็บ ดนตรีเบื้องหลัง"
#~ msgid "Set as backgroundmusic?"
#~ msgstr "เลือกเป็น Background music?"
#~ msgid "The file is not a .wad"
#~ msgstr "ไม่ใช่ไฟล์ .wad"
#~ msgid "Can't decompress LZ77"
#~ msgstr "คลายไฟล์ LZ777 ไม่ได้"
#~ msgid "Can't find disc"
#~ msgstr "หาแผ่นไม่เจอ"
#~ msgid "IMD5 Header not right."
#~ msgstr "ส่วนขยายไฟล์ผิดพลาด"
#~ msgid "IMET Header wrong."
#~ msgstr "ส่วนขยายไฟล์ผิดพลาด"
#~ msgid "Exit USB Loader GX?"
#~ msgstr "ปิด USB Loader GX?"
#~ msgid "No WBFS partition found"
#~ msgstr "ไม่พบพาร์ติชั่นแบบ WBFS "
#~ msgid "You need to format a partition"
#~ msgstr "ต้องทำการฟอร์แมทพาร์ติชั่น"
#~ msgid "Failed to extract opening.bnr"
#~ msgstr "แตกไฟล์ opening.bnr ไม่ได้"
#~ msgid "You need to start this game one time to create a save file, then exit and start it again."
#~ msgstr "คุณต้องเริ่มโหลดเกมส์นี้ใหม่ เพื่อสร้างไฟล์เซฟ ดังนั้นออกจากเกมส์แล้วเริ่มโหลดอีกครั้ง"
#~ msgid "ERROR: USB device could not be loaded!"
#~ msgstr "ผิดพลาด! ไม่สามารถโหลดอุปกรณ์ USB ได้"
#~ msgid "ERROR: cIOS could not be loaded!"
#~ msgstr "ผิดพลาด! ไม่สามารถโหลด cIOS ได้"
#~ msgid "Loading..."
#~ msgstr "กำลังโหลด..."
#~ msgid "Waiting for your slow USB Device: %i secs..."
#~ msgstr "กำลังรออุปกรณ์ USB อันเชื่องช้าของคุณ: %i วินาที..."

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: 2010-04-11 06:03+0200\n" "POT-Creation-Date: 2010-03-16 16:17+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"
@ -606,6 +606,9 @@ msgstr "Almanca"
msgid "HOME Menu" msgid "HOME Menu"
msgstr "HOME Menü" msgstr "HOME Menü"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path" msgid "Homebrew Apps Path"
msgstr "Homebrew Yazılımlarının Yolu" msgstr "Homebrew Yazılımlarının Yolu"
@ -1162,6 +1165,9 @@ msgstr "USB Aygıtı bulunamadı"
msgid "USB Loader GX is protected" msgid "USB Loader GX is protected"
msgstr "USB Loader GX koruma altında" msgstr "USB Loader GX koruma altında"
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr "USB Loader GX sadece Hermes CIOS rev4 ile çalışır! Lütfen rev4 ün yüklü olduğundan emin olun!"
#, c-format #, c-format
msgid "Unable to open the wad that was just downloaded (%s)." msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Az önce indirilen wad açılamıyor(%s)" msgstr "Az önce indirilen wad açılamıyor(%s)"
@ -1368,3 +1374,39 @@ msgstr "./"
msgid "seconds left" msgid "seconds left"
msgstr "saniye kaldı" msgstr "saniye kaldı"
#~ msgid "contains over 255 lines of code. It will produce unexpected results."
#~ msgstr "255 satırdan fazla kod içeriyor. Beklenmeyen sonuçlar üretebilir."
#~ msgid "Backgroundmusic Path changed."
#~ msgstr "Arkaplan müzik Yolu değişti."
#~ msgid "Set as backgroundmusic?"
#~ msgstr "Arkaplan müziği olarak ayarla?"
#~ msgid "The file is not a .wad"
#~ msgstr "Bu dosya .wad değil"
#~ msgid "Can't decompress LZ77"
#~ msgstr "LZ77 açılamıyor"
#~ msgid "Can't find disc"
#~ msgstr "Disk bulunamıyor"
#~ msgid "IMD5 Header not right."
#~ msgstr "IMD5 Başlığı doğru değil"
#~ msgid "IMET Header wrong."
#~ msgstr "IMET Başlığı yanlış"
#~ msgid "No WBFS or FAT game partition found"
#~ msgstr "WBFS veya FAT oyun bölümü bulunamadı"
#~ msgid "for FAT support"
#~ msgstr "FAT desteği için"
#~ msgid "Failed to extract opening.bnr"
#~ msgstr "opening.bnr çıkartılamadı"
#~ msgid "Homebrew Channel"
#~ msgstr "Homebrew Kanalı"

Binary file not shown.

BIN
data/ehcmodule_frag_v4.bin Normal file

Binary file not shown.

BIN
data/ehcmodule_frag_v5.bin Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
<pd><ViewState><e p="gui\source\mload" x="false"></e><e p="gui\source\settings" x="false"></e><e p="gui\source\images" x="false"></e><e p="gui\source\libfat" x="false"></e><e p="gui\source\prompts" x="false"></e><e p="gui\source\banner" x="false"></e><e p="gui\source\cheats" x="false"></e><e p="gui\source\libntfs" x="false"></e><e p="gui\source\network" x="false"></e><e p="gui\source\fonts" x="false"></e><e p="gui\source\menu" x="false"></e><e p="gui\source\ramdisk" x="false"></e><e p="gui\source\sounds" x="false"></e><e p="gui\source\wad" x="false"></e><e p="gui" x="true"></e><e p="gui\source\homebrewboot" x="false"></e><e p="gui\source\language" x="false"></e><e p="gui\source" x="true"></e><e p="gui\source\libwbfs" x="false"></e><e p="gui\source\libwiigui" x="false"></e><e p="gui\source\patches" x="false"></e><e p="gui\source\themes" x="false"></e><e p="gui\source\usbloader\wbfs" x="false"></e><e p="gui\source\memory" x="false"></e><e p="gui\source\unzip" x="false"></e><e p="gui\source\usbloader" x="true"></e><e p="gui\source\xml" x="false"></e></ViewState></pd> <pd><ViewState><e p="gui\source\mload" x="false"></e><e p="gui\source\settings" x="false"></e><e p="gui\source\images" x="false"></e><e p="gui\source\libfat" x="false"></e><e p="gui\source\prompts" x="false"></e><e p="gui\source\banner" x="false"></e><e p="gui\source\cheats" x="false"></e><e p="gui\source\libntfs" x="false"></e><e p="gui\source\network" x="true"></e><e p="gui\source\fonts" x="false"></e><e p="gui\source\menu" x="false"></e><e p="gui\source\ramdisk" x="false"></e><e p="gui\source\sounds" x="false"></e><e p="gui\source\wad" x="false"></e><e p="gui" x="true"></e><e p="gui\source\homebrewboot" x="false"></e><e p="gui\source\language" x="false"></e><e p="gui\source" x="true"></e><e p="gui\source\libwbfs" x="false"></e><e p="gui\source\libwiigui" x="false"></e><e p="gui\source\patches" x="false"></e><e p="gui\source\themes" x="false"></e><e p="gui\source\memory" x="false"></e><e p="gui\source\unzip" x="false"></e><e p="gui\source\usbloader" x="false"></e><e p="gui\source\xml" x="false"></e></ViewState></pd>

View File

@ -31,7 +31,3 @@ void ShutdownAudio() {
ASND_Pause(1); ASND_Pause(1);
ASND_End(); ASND_End();
} }
extern "C" void StopAudio() {
ShutdownAudio();
}

View File

@ -37,34 +37,5 @@ bool InitGecko()
else return false; else return false;
} }
char ascii(char s) {
if(s < 0x20) return '.';
if(s > 0x7E) return '.';
return s;
}
void hexdump(void *d, int len) {
u8 *data;
int i, off;
data = (u8*)d;
gprintf("\n 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF");
gprintf("\n==== =============================================== ================\n");
for (off=0; off<len; off += 16) {
gprintf("%04x ",off);
for(i=0; i<16; i++)
if((i+off)>=len) gprintf(" ");
else gprintf("%02x ",data[off+i]);
gprintf(" ");
for(i=0; i<16; i++)
if((i+off)>=len) gprintf(" ");
else gprintf("%c",ascii(data[off+i]));
gprintf("\n");
}
}
#endif /* NO_DEBUG */ #endif /* NO_DEBUG */

View File

@ -11,7 +11,6 @@ extern "C" {
//use this just like printf(); //use this just like printf();
void gprintf(const char *str, ...); void gprintf(const char *str, ...);
bool InitGecko(); bool InitGecko();
void hexdump(void *d, int len);
#else #else
#define gprintf(...) #define gprintf(...)
#define InitGecko() false #define InitGecko() false

View File

@ -16,7 +16,6 @@
#include <unistd.h> #include <unistd.h>
#include <locale.h> #include <locale.h>
#include <wiiuse/wpad.h> #include <wiiuse/wpad.h>
#include <ogc/libversion.h>
//#include <debug.h> //#include <debug.h>
extern "C" extern "C"
{ {
@ -96,6 +95,21 @@ static void BootUpProblems()
time_t endtime = time(0) + 30; time_t endtime = time(0) + 30;
do do
{ {
/*ret2 = IOS_ReloadIOSsafe(249);
if (ret2 < 0) {
ret2 = IOS_ReloadIOSsafe(222);
SDCard_Init();
load_ehc_module();
SDCard_deInit();
if(ret2 <0) {
boottext.SetText("ERROR: cIOS could not be loaded!");
bootimage.Draw();
boottext.Draw();
Menu_Render();
sleep(5);
SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);
}
}*/
USBDevice_deInit(); USBDevice_deInit();
USBDevice_Init(); USBDevice_Init();
ret2 = WBFS_Init(WBFS_DEVICE_USB); ret2 = WBFS_Init(WBFS_DEVICE_USB);
@ -140,15 +154,14 @@ unsigned int *xfb = NULL;
void InitTextVideo () void InitTextVideo ()
{ {
gprintf("\n\nInitTextVideo ()"); gprintf("\nInitTextVideo ()");
if (textVideoInit) if (textVideoInit)
{ {
gprintf("...0\n"); gprintf("...0");
return; return;
} }
dbvideo=1; dbvideo=1;
VIDEO_Init(); VIDEO_Init();
// get default video mode // get default video mode
GXRModeObj *vmode = VIDEO_GetPreferredMode(NULL); GXRModeObj *vmode = VIDEO_GetPreferredMode(NULL);
@ -174,7 +187,7 @@ void InitTextVideo ()
//send console output to the gecko //send console output to the gecko
if (geckoinit)CON_EnableGecko(1, true); if (geckoinit)CON_EnableGecko(1, true);
textVideoInit = true; textVideoInit = true;
gprintf("...1\n"); gprintf("...1");
} }
@ -195,13 +208,12 @@ main(int argc, char *argv[])
__exception_setreload(5); //auto reset code dump nobody gives us codedump info anyways. __exception_setreload(5); //auto reset code dump nobody gives us codedump info anyways.
gprintf("------------------\n"); gprintf("\n\n------------------");
gprintf("USB Loader GX rev%s\n",GetRev()); gprintf("\nUSB Loader GX rev%s",GetRev());
gprintf("<< %s >>\n", _V_STRING ); gprintf("\nmain(%d", argc);
gprintf("main(%d", argc);
for (int i=0;i<argc;i++) for (int i=0;i<argc;i++)
gprintf(", %s",argv[i]?argv[i]:"<NULL>"); gprintf(", %s",argv[i]?argv[i]:"<NULL>");
gprintf(")\n"); gprintf(")");
// This part is added, because we need a identify patched ios // This part is added, because we need a identify patched ios
// printf("\n\tReloading into ios 236"); // printf("\n\tReloading into ios 236");
@ -211,7 +223,7 @@ main(int argc, char *argv[])
IOS_ReloadIOSsafe(36); IOS_ReloadIOSsafe(36);
} }
printf("Starting up\n"); printf("\n\tStarting up");
MEM2_init(36); // Initialize 36 MB MEM2_init(36); // Initialize 36 MB
MEM2_takeBigOnes(true); MEM2_takeBigOnes(true);
@ -305,7 +317,12 @@ main(int argc, char *argv[])
} }
} }
} }
printf("\n\tInitialize sd card");
SDCard_Init();
printf("\n\tLoad ehc module");
load_ehc_module(); load_ehc_module();
printf("\n\tdeinit sd card");
SDCard_deInit();
} }
printf("\n\tInit wbfs..."); printf("\n\tInit wbfs...");
@ -317,8 +334,22 @@ main(int argc, char *argv[])
printf("\n\tYou have issues with a slow disc, or a difficult disc\n\tReloading 222..."); printf("\n\tYou have issues with a slow disc, or a difficult disc\n\tReloading 222...");
ret = IOS_ReloadIOSsafe(222); ret = IOS_ReloadIOSsafe(222);
printf("%d", ret); printf("%d", ret);
/*if(ret < 0) {
// printf("\n\tSleeping for 4 seconds");
// sleep(4);
InitVideo(); // Initialise video
Menu_Render();
BootUpProblems();
startupproblem = true;
ret = 1;
}*/
printf("\n\tInitialize sd card");
SDCard_Init();
printf("\n\tLoad ehc module"); printf("\n\tLoad ehc module");
load_ehc_module(); load_ehc_module();
printf("\n\tdeinit sd card");
SDCard_deInit();
printf("\n\tInitialize wbfs..."); printf("\n\tInitialize wbfs...");
USBDevice_deInit(); USBDevice_deInit();
@ -376,25 +407,66 @@ main(int argc, char *argv[])
// gprintf("\n\tbootDevice = %s",bootDevice); // gprintf("\n\tbootDevice = %s",bootDevice);
/* Load Custom IOS */ /* Load Custom IOS */
if (Settings.cios != IOS_GetVersion()) if ((Settings.cios == ios222 && IOS_GetVersion() != 222) ||
(Settings.cios == ios223 && IOS_GetVersion() != 223))
{ {
printf("\n\tReloading IOS to config setting (%d)...", ciosSetting2Cios(Settings.cios)); printf("\n\tReloading IOS to config setting (%d)...", Settings.cios == ios222 ? 222 : 223);
if (Sys_IosReload(ciosSetting2Cios(Settings.cios)) < 0) { SDCard_deInit(); // unmount SD for reloading IOS
int alt_ios = (Settings.cios == ios222 || Settings.cios == ios223) ? 249 : 222; USBDevice_deInit(); // unmount USB for reloading IOS
ret = Sys_IosReload(alt_ios); USBStorage2_Deinit();
ret = IOS_ReloadIOSsafe(Settings.cios == ios222 ? 222 : 223);
printf("%d", ret);
SDCard_Init();
load_ehc_module();
if (ret < 0)
{
SDCard_deInit();
Settings.cios = ios249;
ret = IOS_ReloadIOSsafe(249);
// now mount SD:/ //no need to keep mindlessly mounting and unmounting SD card
SDCard_Init();
}
USBDevice_Init(); // and mount USB:/
WBFS_Init(WBFS_DEVICE_USB);
} else if ((Settings.cios == ios249 && IOS_GetVersion() != 249) ||
(Settings.cios == ios250 && IOS_GetVersion() != 250))
{
printf("\n\tReloading IOS to config setting (%d)...", ios249 ? 249 : 250);
SDCard_deInit(); // unmount SD for reloading IOS
USBDevice_deInit(); // unmount USB for reloading IOS
USBStorage2_Deinit();
ret = IOS_ReloadIOSsafe(ios249 ? 249 : 250);
printf("%d", ret);
if (ret < 0)
{
Settings.cios = ios222;
ret = IOS_ReloadIOSsafe(222);
SDCard_Init();
load_ehc_module();
}
else SDCard_Init(); // now mount SD:/ //no need to keep mindlessly mounting and unmounting SD card
USBDevice_Init(); // and mount USB:/
WBFS_Init(WBFS_DEVICE_USB);
}
// Partition_GetList(&partitions);
if (ret < 0) if (ret < 0)
{ {
printf("\nERROR: cIOS could not be loaded!"); printf("\nERROR: cIOS could not be loaded!");
sleep(5); sleep(5);
exit(0); exit(0);
//SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);
} }
} //gprintf("\n\tcIOS = %u (Rev %u)",IOS_GetVersion(), IOS_GetRevision());//don't need gprintf if sending console shit to gecko, too
SDCard_Init();
}
printf("\n\tcIOS = %u (Rev %u)",IOS_GetVersion(), IOS_GetRevision()); printf("\n\tcIOS = %u (Rev %u)",IOS_GetVersion(), IOS_GetRevision());
// printf("Sleeping for 5 seconds\n");
// sleep(5);
//if a ID was passed via args copy it and try to boot it after the partition is mounted //if a ID was passed via args copy it and try to boot it after the partition is mounted
//its not really a headless mode. more like hairless. //its not really a headless mode. more like hairless.
if (argc > 1 && argv[1]) if (argc > 1 && argv[1])

View File

@ -25,9 +25,9 @@
#include "usbloader/getentries.h" #include "usbloader/getentries.h"
#include "wad/title.h" #include "wad/title.h"
#include "xml/xml.h" #include "xml/xml.h"
#include "audio.h"
#include "gecko.h" #include "gecko.h"
#include "menu.h" #include "menu.h"
#include "audio.h"
#include "sys.h" #include "sys.h"
#include "wpad.h" #include "wpad.h"
#include "settings/newtitles.h" #include "settings/newtitles.h"
@ -345,7 +345,6 @@ int MainMenu(int menu) {
delete coverImg; delete coverImg;
delete fontClock; delete fontClock;
delete fontSystem; delete fontSystem;
ShutdownAudio(); ShutdownAudio();
StopGX(); StopGX();
gettextCleanUp(); gettextCleanUp();
@ -415,6 +414,7 @@ int MainMenu(int menu) {
} }
} }
int ret = 0; int ret = 0;
header = (mountMethod?dvdheader:&gameList[gameSelected]); header = (mountMethod?dvdheader:&gameList[gameSelected]);
@ -433,9 +433,48 @@ int MainMenu(int menu) {
alternatedoloffset = game_cfg->alternatedolstart; alternatedoloffset = game_cfg->alternatedolstart;
} }
reloadblock = game_cfg->iosreloadblock; reloadblock = game_cfg->iosreloadblock;
} else {
videoChoice = Settings.video;
languageChoice = Settings.language;
ocarinaChoice = Settings.ocarina;
viChoice = Settings.vpatch;
if (Settings.cios == ios222) {
iosChoice = i222;
} else {
iosChoice = i249;
}
fix002 = Settings.error002;
countrystrings = Settings.patchcountrystrings;
if (!altdoldefault) {
alternatedol = off;
alternatedoloffset = 0;
}
reloadblock = off;
}
int ios2;
switch (iosChoice) {
case i249:
ios2 = 249;
break;
case i222:
ios2 = 222;
break;
case i223:
ios2 = 223;
break;
default:
ios2 = 249;
break;
} }
int ios2 = ciosSetting2Cios(iosChoice); // When the selected ios is 249, and you're loading from FAT, reset ios to 222
if (load_from_fs != PART_FS_WBFS && ios2 == 249) {
ios2 = 222;
}
bool onlinefix = ShutdownWC24(); bool onlinefix = ShutdownWC24();
// You cannot reload ios when loading from fat // You cannot reload ios when loading from fat
@ -451,6 +490,10 @@ int MainMenu(int menu) {
ret = get_frag_list(header->id); ret = get_frag_list(header->id);
gprintf("%d\n", ret); gprintf("%d\n", ret);
gprintf("\nSetting fragment list...");
ret = set_frag_list(header->id);
gprintf("%d\n", ret);
ret = Disc_SetUSB(header->id); ret = Disc_SetUSB(header->id);
if (ret < 0) Sys_BackToLoader(); if (ret < 0) Sys_BackToLoader();
gprintf("\n\tUSB set to game"); gprintf("\n\tUSB set to game");
@ -603,13 +646,14 @@ int MainMenu(int menu) {
vipatch = 0; vipatch = 0;
break; break;
} }
u32 rtrnID = GetReturnToTitle(); gprintf("\n\tDisc_wiiBoot");
gprintf("Disc_wiiBoot\n" );
ret = Disc_WiiBoot( videoselected, cheat, vipatch, countrystrings, errorfixer002, alternatedol, alternatedoloffset, rtrnID ); ret = Disc_WiiBoot(videoselected, cheat, vipatch, countrystrings, errorfixer002, alternatedol, alternatedoloffset);
if (ret < 0) { if (ret < 0) {
Sys_LoadMenu(); Sys_LoadMenu();
} }
printf("Returning entry point: 0x%0x\n", ret);
} }
return 0; return 0;
} }

View File

@ -14,7 +14,7 @@
#include "main.h" #include "main.h"
void InitGUIThreads(void); void InitGUIThreads(void);
extern "C" void ExitGUIThreads(void); void ExitGUIThreads(void);
int MainMenu (int menuitem); int MainMenu (int menuitem);

View File

@ -1,334 +0,0 @@
#define size_dip_plugin_249 5276
unsigned char dip_plugin_249[5276] __attribute__((aligned (32)))={
0x7f, 0x45, 0x4c, 0x46, 0x01, 0x02, 0x01, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x02, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x13, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x34, 0x00, 0x20, 0x00, 0x05, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xa0,
0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xd4, 0x00, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x08, 0x13, 0x70, 0x00, 0x00,
0x13, 0x70, 0x00, 0x00, 0x00, 0x00, 0x12, 0xa4, 0x00, 0x00, 0x12, 0xa4, 0x00, 0xf0, 0x00, 0x05,
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x13, 0xac, 0x13, 0x70, 0x20, 0x00,
0x13, 0x70, 0x20, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03, 0xc3, 0x00, 0x00, 0xf0, 0x00, 0x06,
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06,
0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x13, 0x70, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x10, 0x00,
0x00, 0x00, 0x00, 0x7f, 0x13, 0x73, 0xe3, 0x00, 0xe3, 0xa0, 0x00, 0x00, 0xe3, 0xa0, 0x10, 0x00,
0xe5, 0x9f, 0x30, 0x00, 0xe1, 0x2f, 0xff, 0x13, 0x13, 0x70, 0x03, 0x51, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x4b, 0x06, 0xb0, 0x89, 0x93, 0x00,
0x46, 0x68, 0x23, 0x00, 0x21, 0x00, 0x22, 0x00, 0x93, 0x01, 0x93, 0x02, 0xf0, 0x00, 0xf9, 0x1f,
0xb0, 0x09, 0xbd, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xb5, 0x10, 0x1c, 0x03, 0x22, 0x20, 0x1c, 0x0c,
0x48, 0x09, 0x1c, 0x19, 0xf0, 0x01, 0xf8, 0xa0, 0x4a, 0x08, 0x23, 0x01, 0x68, 0x11, 0x42, 0x19,
0xd1, 0xfc, 0x2c, 0x00, 0xd0, 0x04, 0x1c, 0x20, 0x49, 0x03, 0x22, 0x20, 0xf0, 0x01, 0xf8, 0x94,
0x4b, 0x03, 0x68, 0x18, 0xbd, 0x10, 0x46, 0xc0, 0x0d, 0x00, 0x60, 0x00, 0x0d, 0x00, 0x60, 0x1c,
0x0d, 0x00, 0x60, 0x20, 0xb5, 0xf0, 0xb0, 0x8b, 0x1c, 0x07, 0x0a, 0xcb, 0x20, 0xa0, 0x1c, 0x0d,
0x92, 0x01, 0x93, 0x00, 0x02, 0x00, 0x26, 0x00, 0xac, 0x02, 0xe0, 0x17, 0x22, 0x20, 0x21, 0x00,
0x1c, 0x20, 0xf0, 0x01, 0xf8, 0xb9, 0x4b, 0x0c, 0x1c, 0x38, 0x60, 0x23, 0x23, 0x00, 0x60, 0x63,
0x60, 0xa3, 0x9b, 0x00, 0x1c, 0x29, 0x60, 0xe3, 0x9b, 0x01, 0x36, 0x01, 0x61, 0x23, 0xf0, 0x00,
0xed, 0x2a, 0x1c, 0x20, 0x1c, 0x39, 0x1c, 0x2a, 0xf0, 0x00, 0xf8, 0xd9, 0x2e, 0x0f, 0xd8, 0x01,
0x28, 0x00, 0xd1, 0xe3, 0xb0, 0x0b, 0xbd, 0xf0, 0xd0, 0x00, 0x00, 0x00, 0xb5, 0xf0, 0xb0, 0x83,
0x24, 0x80, 0x93, 0x01, 0x01, 0x24, 0x18, 0x53, 0x90, 0x00, 0x1c, 0x0f, 0x1c, 0x16, 0x42, 0xa3,
0xd9, 0x01, 0x24, 0x65, 0xe0, 0x07, 0x1c, 0x20, 0x21, 0x20, 0xf0, 0x00, 0xe8, 0x92, 0x1c, 0x05,
0x28, 0x00, 0xd1, 0x02, 0x24, 0x16, 0x42, 0x64, 0xe0, 0x0e, 0x1c, 0x21, 0x9a, 0x01, 0xf7, 0xff,
0xff, 0xb9, 0x1c, 0x04, 0x28, 0x00, 0xd1, 0x04, 0x19, 0xa9, 0x98, 0x00, 0x1c, 0x3a, 0xf0, 0x01,
0xf8, 0x3b, 0x1c, 0x28, 0xf0, 0x00, 0xe8, 0x88, 0xb0, 0x03, 0x1c, 0x20, 0xbd, 0xf0, 0x46, 0xc0,
0xb5, 0xf0, 0xb0, 0x87, 0x92, 0x02, 0x0a, 0x56, 0x23, 0xff, 0x22, 0x80, 0x01, 0x12, 0x03, 0xdb,
0x90, 0x05, 0x91, 0x04, 0x20, 0x00, 0x27, 0x00, 0x92, 0x00, 0x93, 0x03, 0xe0, 0x32, 0x9a, 0x04,
0x9b, 0x02, 0x02, 0x75, 0x1b, 0xd4, 0x42, 0xab, 0xd8, 0x01, 0x25, 0x00, 0xe0, 0x02, 0x9a, 0x02,
0x1b, 0x55, 0x00, 0xad, 0x9b, 0x05, 0x22, 0x80, 0x19, 0xdb, 0x1c, 0x18, 0x1c, 0x21, 0x01, 0x12,
0x93, 0x01, 0xf0, 0x00, 0xf8, 0x99, 0x28, 0x00, 0xd0, 0x01, 0x2d, 0x00, 0xd0, 0x0b, 0x9a, 0x00,
0x19, 0x2b, 0x42, 0x93, 0xd9, 0x00, 0x1b, 0x54, 0x98, 0x01, 0x1c, 0x21, 0x1c, 0x2a, 0x1c, 0x33,
0xf7, 0xff, 0xff, 0xa4, 0xe0, 0x0a, 0x9b, 0x03, 0x1c, 0x04, 0x42, 0x98, 0xd9, 0x01, 0x24, 0xff,
0x03, 0xe4, 0x98, 0x01, 0x1c, 0x21, 0x1c, 0x32, 0xf7, 0xff, 0xff, 0x6c, 0x19, 0x65, 0x0a, 0xed,
0x19, 0x76, 0x19, 0x3f, 0x9a, 0x04, 0x42, 0x97, 0xd3, 0xc9, 0xb0, 0x07, 0xbd, 0xf0, 0x46, 0xc0,
0xb5, 0xf0, 0xb0, 0x89, 0x1c, 0x0d, 0x1c, 0x06, 0x1c, 0x17, 0x46, 0x68, 0x22, 0x20, 0x21, 0x00,
0xf0, 0x01, 0xf8, 0x22, 0x4b, 0x07, 0x1c, 0x30, 0x1c, 0x29, 0x93, 0x00, 0x95, 0x01, 0x97, 0x02,
0xf0, 0x00, 0xec, 0x98, 0x1c, 0x31, 0x1c, 0x2a, 0x46, 0x68, 0xf0, 0x00, 0xf8, 0x48, 0xb0, 0x09,
0xbd, 0xf0, 0x46, 0xc0, 0xa8, 0x00, 0x00, 0x00, 0xb5, 0x10, 0xf7, 0xff, 0xff, 0xe1, 0xbd, 0x10,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0x7c,
0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x13, 0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e,
0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0x68, 0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x0d,
0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e, 0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0x54,
0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x07, 0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e,
0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0x40, 0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x01,
0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0x2f, 0xff, 0x17, 0xb5, 0xf0, 0x46, 0x57,
0x46, 0x46, 0xb4, 0xc0, 0x68, 0x05, 0x46, 0x8a, 0x4b, 0x09, 0x68, 0x1b, 0x47, 0x18, 0xb5, 0xf0,
0x46, 0x5f, 0x46, 0x56, 0x46, 0x4d, 0x46, 0x44, 0xb4, 0xf0, 0x4b, 0x06, 0x68, 0x1b, 0x47, 0x18,
0x13, 0x70, 0x21, 0x14, 0x13, 0x70, 0x21, 0x20, 0x13, 0x70, 0x21, 0x24, 0x13, 0x70, 0x21, 0x28,
0x13, 0x70, 0x21, 0x18, 0x13, 0x70, 0x21, 0x1c, 0xb5, 0x30, 0x06, 0xc3, 0xd0, 0x01, 0x20, 0x00,
0xe0, 0x18, 0x4b, 0x0d, 0x42, 0x98, 0xd9, 0x01, 0x23, 0x00, 0xe0, 0x02, 0x23, 0xc0, 0x04, 0x5b,
0x1a, 0x1b, 0x4c, 0x0a, 0x19, 0x05, 0x4c, 0x0a, 0x42, 0xa5, 0xd8, 0x01, 0x4b, 0x09, 0x1a, 0x1b,
0x42, 0x93, 0xd2, 0x01, 0x20, 0x00, 0xe0, 0x03, 0x1c, 0x18, 0x42, 0x8b, 0xd9, 0x00, 0x1c, 0x08,
0x3a, 0x01, 0x43, 0x90, 0xbd, 0x30, 0x46, 0xc0, 0x01, 0x7f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00,
0x03, 0x61, 0x7f, 0xff, 0x13, 0x61, 0x80, 0x00, 0xb5, 0x70, 0x4c, 0x09, 0x1c, 0x05, 0x1c, 0x0e,
0x68, 0x20, 0x00, 0x91, 0x22, 0x00, 0xf0, 0x00, 0xeb, 0xd6, 0x28, 0x00, 0xdb, 0x07, 0x68, 0x20,
0x1c, 0x29, 0x1c, 0x32, 0xf0, 0x00, 0xeb, 0xc6, 0x28, 0x00, 0xdd, 0x00, 0x20, 0x00, 0xbd, 0x70,
0x13, 0x70, 0x20, 0x00, 0xb5, 0x10, 0x4b, 0x05, 0x68, 0x18, 0x28, 0x00, 0xdb, 0x01, 0xf0, 0x00,
0xeb, 0xb6, 0x4a, 0x02, 0x23, 0x01, 0x42, 0x5b, 0x60, 0x13, 0xbd, 0x10, 0x13, 0x70, 0x20, 0x00,
0xb5, 0x10, 0x21, 0x00, 0xf0, 0x00, 0xeb, 0xa6, 0x4b, 0x02, 0x60, 0x18, 0x28, 0x00, 0xdd, 0x00,
0x20, 0x00, 0xbd, 0x10, 0x13, 0x70, 0x20, 0x00, 0xb5, 0x10, 0x48, 0x06, 0xf0, 0x00, 0xeb, 0xea,
0x48, 0x05, 0xf0, 0x00, 0xfb, 0x15, 0x48, 0x05, 0x21, 0x00, 0x22, 0x00, 0xf0, 0x00, 0xfb, 0x18,
0x20, 0x00, 0xbd, 0x10, 0x13, 0x70, 0x20, 0xa8, 0x13, 0x70, 0x21, 0x00, 0x13, 0x70, 0x03, 0x79,
0xb5, 0x10, 0xf0, 0x00, 0xeb, 0xf6, 0xf0, 0x00, 0xeb, 0xfa, 0x1c, 0x04, 0x20, 0x01, 0x42, 0x40,
0xf0, 0x00, 0xeb, 0xf8, 0x4b, 0x04, 0x68, 0x58, 0xf0, 0x00, 0xf8, 0x08, 0x1c, 0x20, 0xf0, 0x00,
0xeb, 0xf2, 0x20, 0x00, 0xbd, 0x10, 0x46, 0xc0, 0x13, 0x70, 0x21, 0x00, 0xb5, 0x10, 0x4b, 0x41,
0x42, 0x98, 0xd0, 0x32, 0x42, 0x98, 0xd8, 0x03, 0x4b, 0x3f, 0x42, 0x98, 0xd1, 0x79, 0xe0, 0x06,
0x4b, 0x3e, 0x42, 0x98, 0xd0, 0x4f, 0x4b, 0x3e, 0x42, 0x98, 0xd1, 0x72, 0xe0, 0x4b, 0x48, 0x3d,
0x4c, 0x3d, 0x21, 0x04, 0x60, 0x04, 0xf0, 0x00, 0xeb, 0xc8, 0x4b, 0x3c, 0x48, 0x3c, 0x21, 0x04,
0x60, 0x03, 0xf0, 0x00, 0xeb, 0xc2, 0x48, 0x3b, 0x21, 0x04, 0x60, 0x04, 0xf0, 0x00, 0xeb, 0xbc,
0x4b, 0x39, 0x48, 0x3a, 0x21, 0x04, 0x60, 0x03, 0xf0, 0x00, 0xeb, 0xb6, 0x4b, 0x38, 0x4a, 0x39,
0x60, 0x1a, 0x4a, 0x39, 0x60, 0x5a, 0x4a, 0x39, 0x60, 0x9a, 0x4a, 0x39, 0x60, 0xda, 0x3a, 0x30,
0x61, 0x1a, 0x4a, 0x38, 0x61, 0x5a, 0x4a, 0x38, 0xe0, 0x4a, 0x48, 0x38, 0x4c, 0x2a, 0x21, 0x04,
0x60, 0x04, 0xf0, 0x00, 0xeb, 0xa2, 0x4b, 0x29, 0x48, 0x35, 0x21, 0x04, 0x60, 0x03, 0xf0, 0x00,
0xeb, 0x9c, 0x48, 0x34, 0x21, 0x04, 0x60, 0x04, 0xf0, 0x00, 0xeb, 0x96, 0x4b, 0x26, 0x48, 0x32,
0x21, 0x04, 0x60, 0x03, 0xf0, 0x00, 0xeb, 0x90, 0x4b, 0x25, 0x4a, 0x30, 0x60, 0x1a, 0x4a, 0x30,
0x60, 0x5a, 0x4a, 0x30, 0x60, 0x9a, 0x4a, 0x30, 0x60, 0xda, 0x3a, 0x2c, 0x61, 0x1a, 0x4a, 0x2f,
0x61, 0x5a, 0x4a, 0x2f, 0xe0, 0x24, 0x48, 0x17, 0x4c, 0x17, 0x21, 0x04, 0x60, 0x04, 0xf0, 0x00,
0xeb, 0x7c, 0x4b, 0x16, 0x48, 0x16, 0x21, 0x04, 0x60, 0x03, 0xf0, 0x00, 0xeb, 0x76, 0x48, 0x15,
0x21, 0x04, 0x60, 0x04, 0xf0, 0x00, 0xeb, 0x70, 0x4b, 0x13, 0x48, 0x14, 0x21, 0x04, 0x60, 0x03,
0xf0, 0x00, 0xeb, 0x6a, 0x4b, 0x12, 0x4a, 0x23, 0x60, 0x1a, 0x4a, 0x13, 0x60, 0x5a, 0x4a, 0x13,
0x60, 0x9a, 0x4a, 0x13, 0x60, 0xda, 0x3a, 0x30, 0x61, 0x1a, 0x4a, 0x1f, 0x61, 0x5a, 0x4a, 0x1f,
0x61, 0x9a, 0xbd, 0x10, 0x48, 0x88, 0xe1, 0x4c, 0x48, 0x77, 0x6f, 0x72, 0x49, 0x2a, 0xca, 0x9d,
0x4a, 0x26, 0x2a, 0xf5, 0x20, 0x20, 0x04, 0x00, 0x4b, 0x00, 0x47, 0x18, 0x13, 0x70, 0x05, 0x29,
0x20, 0x20, 0x04, 0x04, 0x20, 0x20, 0x0e, 0xf8, 0x13, 0x70, 0x06, 0x81, 0x20, 0x20, 0x0e, 0xfc,
0x13, 0x70, 0x21, 0x14, 0x20, 0x20, 0x2a, 0x71, 0x20, 0x20, 0x04, 0x0d, 0x20, 0x20, 0x0f, 0x05,
0x20, 0x20, 0x09, 0x6d, 0x20, 0x20, 0x38, 0x7d, 0x20, 0x22, 0xdd, 0x60, 0x20, 0x20, 0x03, 0xb8,
0x20, 0x20, 0x03, 0xbc, 0x20, 0x20, 0x0d, 0x2c, 0x20, 0x20, 0x0d, 0x30, 0x20, 0x20, 0x28, 0x75,
0x20, 0x20, 0x03, 0xc5, 0x20, 0x20, 0x0d, 0x39, 0x20, 0x20, 0x08, 0xc5, 0x20, 0x20, 0x36, 0x5d,
0x20, 0x22, 0xcd, 0xac, 0x20, 0x20, 0x29, 0x45, 0x20, 0x20, 0x37, 0x51, 0x20, 0x22, 0xcd, 0x60,
0xb5, 0x70, 0x68, 0x03, 0x68, 0xc2, 0x2b, 0x86, 0xd0, 0x1a, 0x2b, 0x86, 0xd8, 0x04, 0x2b, 0x79,
0xd0, 0x07, 0x2b, 0x7a, 0xd1, 0x2c, 0xe0, 0x0a, 0x2b, 0x88, 0xd0, 0x1b, 0x2b, 0x95, 0xd1, 0x27,
0xe0, 0x1f, 0x4b, 0x15, 0x68, 0x1a, 0x23, 0x1c, 0x42, 0x1a, 0xd1, 0x07, 0xe0, 0x20, 0x4b, 0x12,
0x24, 0x1c, 0x68, 0x1d, 0x42, 0x25, 0xd0, 0x1b, 0x69, 0x5b, 0x60, 0x13, 0x20, 0x01, 0xe0, 0x19,
0x4b, 0x0d, 0x22, 0x1c, 0x68, 0x1c, 0x42, 0x14, 0xd0, 0x12, 0x69, 0x5a, 0x21, 0x04, 0x43, 0x8a,
0x61, 0x5a, 0xe7, 0xf3, 0x4b, 0x08, 0x68, 0x1c, 0x23, 0x1c, 0x42, 0x1c, 0xd0, 0x08, 0x23, 0x02,
0xe7, 0xeb, 0x4b, 0x05, 0x68, 0x1c, 0x23, 0x1c, 0x42, 0x1c, 0xd0, 0x01, 0x23, 0x0a, 0xe7, 0xe4,
0xf7, 0xff, 0xfe, 0x64, 0xbd, 0x70, 0x46, 0xc0, 0x13, 0x70, 0x21, 0x30, 0xb5, 0x70, 0x4b, 0x17,
0x68, 0x5b, 0x2b, 0x01, 0xd0, 0x03, 0x2b, 0x02, 0xd1, 0x0a, 0x4b, 0x15, 0xe0, 0x00, 0x4b, 0x15,
0x42, 0x9a, 0xd3, 0x05, 0x4a, 0x14, 0x4b, 0x11, 0x20, 0xa0, 0x61, 0x1a, 0x02, 0x00, 0xe0, 0x1b,
0x4b, 0x0e, 0x68, 0xdd, 0x68, 0x9c, 0x68, 0x1b, 0x19, 0x2c, 0x18, 0xa2, 0x06, 0xdc, 0xd5, 0x02,
0xf0, 0x00, 0xfd, 0x2a, 0xe0, 0x10, 0x07, 0x1c, 0xd5, 0x02, 0xf7, 0xff, 0xfe, 0x85, 0xe0, 0x0b,
0x07, 0x5c, 0xd5, 0x02, 0xf0, 0x00, 0xfa, 0xd8, 0xe0, 0x06, 0x07, 0xdc, 0xd5, 0x02, 0xf7, 0xff,
0xfd, 0x97, 0xe0, 0x01, 0xf7, 0xff, 0xfd, 0xf8, 0xbd, 0x70, 0x46, 0xc0, 0x13, 0x70, 0x21, 0x30,
0x7e, 0xd3, 0x80, 0x00, 0x46, 0x09, 0x00, 0x00, 0x00, 0x05, 0x21, 0x00, 0xb5, 0x10, 0x20, 0x80,
0x01, 0x00, 0x21, 0x20, 0xf7, 0xff, 0xed, 0xfc, 0x1c, 0x04, 0x28, 0x00, 0xd0, 0x0f, 0x21, 0x80,
0x22, 0xa0, 0x01, 0x09, 0x05, 0xd2, 0xf7, 0xff, 0xff, 0xb9, 0x28, 0x00, 0xd0, 0x01, 0x23, 0x01,
0xe0, 0x00, 0x23, 0x02, 0x4a, 0x02, 0x1c, 0x20, 0x60, 0x53, 0xf7, 0xff, 0xed, 0xf6, 0xbd, 0x10,
0x13, 0x70, 0x21, 0x30, 0xb5, 0x10, 0x22, 0x00, 0x1c, 0x04, 0xf7, 0xff, 0xff, 0xa7, 0x28, 0x00,
0xdb, 0x0d, 0x69, 0xa2, 0x4b, 0x06, 0x42, 0x9a, 0xd1, 0x09, 0x4b, 0x06, 0x21, 0x01, 0x68, 0x1a,
0x70, 0x11, 0x68, 0x1b, 0x78, 0x5b, 0x2b, 0x00, 0xd1, 0x01, 0xf7, 0xff, 0xed, 0xc6, 0xbd, 0x10,
0x5d, 0x1c, 0x9e, 0xa3, 0x13, 0x70, 0x21, 0x2c, 0xb5, 0xf0, 0x78, 0x03, 0xb0, 0x83, 0x1c, 0x05,
0x1c, 0x0e, 0x1c, 0x17, 0x2b, 0xe0, 0xd1, 0x00, 0xe0, 0xde, 0x4c, 0xb7, 0x22, 0x00, 0x61, 0x22,
0x2b, 0xe4, 0xd1, 0x00, 0xe0, 0xc0, 0x2b, 0xe4, 0xd8, 0x2b, 0x2b, 0xa8, 0xd1, 0x00, 0xe0, 0xa0,
0x2b, 0xa8, 0xd8, 0x10, 0x2b, 0x8a, 0xd0, 0x52, 0x2b, 0x8a, 0xd8, 0x05, 0x2b, 0x70, 0xd0, 0x66,
0x2b, 0x71, 0xd0, 0x00, 0xe1, 0x50, 0xe0, 0x8d, 0x2b, 0x8d, 0xd1, 0x00, 0xe0, 0x91, 0x2b, 0xa4,
0xd0, 0x00, 0xe1, 0x49, 0xe0, 0xae, 0x2b, 0xd9, 0xd1, 0x00, 0xe0, 0x98, 0x2b, 0xd9, 0xd8, 0x06,
0x2b, 0xab, 0xd1, 0x00, 0xe0, 0xa0, 0x2b, 0xd0, 0xd0, 0x00, 0xe1, 0x3d, 0xe0, 0x81, 0x2b, 0xdb,
0xd1, 0x00, 0xe0, 0xaa, 0x2b, 0xdb, 0xd2, 0x00, 0xe0, 0x83, 0x2b, 0xe0, 0xd0, 0x00, 0xe1, 0x33,
0xe0, 0xaa, 0x2b, 0xf6, 0xd1, 0x00, 0xe1, 0x25, 0x2b, 0xf6, 0xd8, 0x12, 0x2b, 0xf2, 0xd1, 0x00,
0xe0, 0xb2, 0x2b, 0xf2, 0xd8, 0x06, 0x2b, 0xf0, 0xd1, 0x00, 0xe0, 0xa8, 0x2b, 0xf1, 0xd0, 0x00,
0xe1, 0x22, 0xe0, 0xa7, 0x2b, 0xf4, 0xd1, 0x00, 0xe0, 0xb5, 0x2b, 0xf4, 0xd9, 0x00, 0xe0, 0xc7,
0xe0, 0xae, 0x2b, 0xf9, 0xd1, 0x00, 0xe0, 0xe2, 0x2b, 0xf9, 0xd8, 0x06, 0x2b, 0xf7, 0xd1, 0x00,
0xe0, 0xc1, 0x2b, 0xf8, 0xd0, 0x00, 0xe1, 0x0f, 0xe0, 0xd4, 0x2b, 0xfb, 0xd1, 0x00, 0xe0, 0xfa,
0x2b, 0xfb, 0xd2, 0x00, 0xe0, 0xf5, 0x2b, 0xff, 0xd0, 0x00, 0xe1, 0x05, 0xe0, 0xfd, 0x69, 0xa3,
0x2b, 0x00, 0xd0, 0x00, 0xe1, 0x10, 0x68, 0x22, 0x21, 0x03, 0x43, 0x8a, 0x60, 0xa3, 0x60, 0xe3,
0x60, 0x63, 0x61, 0x23, 0x61, 0x63, 0x23, 0x1c, 0x60, 0x22, 0x42, 0x1a, 0xd1, 0x00, 0xe0, 0xf3,
0xf7, 0xff, 0xfc, 0x52, 0x69, 0x62, 0x23, 0x04, 0x43, 0x13, 0x61, 0x63, 0xe0, 0xfc, 0x68, 0xa2,
0x68, 0xe3, 0x92, 0x01, 0x68, 0x22, 0x93, 0x00, 0x23, 0x1c, 0x42, 0x1a, 0xd0, 0x01, 0x24, 0x00,
0xe0, 0x0a, 0x1c, 0x3a, 0xf7, 0xff, 0xfd, 0x6b, 0x1c, 0x04, 0x28, 0x00, 0xd0, 0x04, 0x4b, 0x72,
0x22, 0x01, 0x68, 0x19, 0x43, 0x0a, 0x60, 0x1a, 0x9a, 0x00, 0x2a, 0x00, 0xd1, 0x07, 0x9b, 0x01,
0x2b, 0x00, 0xd1, 0x04, 0x4b, 0x6c, 0x68, 0x1a, 0x23, 0x1d, 0x42, 0x1a, 0xd0, 0x04, 0x1c, 0x30,
0x1c, 0x39, 0xf7, 0xff, 0xff, 0x3f, 0x1c, 0x04, 0x2c, 0x00, 0xd0, 0x00, 0xe0, 0xd5, 0xf7, 0xff,
0xff, 0x1d, 0xe0, 0xd2, 0x68, 0x23, 0x07, 0x9a, 0xd4, 0x00, 0xe0, 0xbd, 0x68, 0x41, 0x68, 0x82,
0xe0, 0x05, 0x68, 0x69, 0x68, 0xaa, 0x2b, 0xd0, 0xd1, 0x01, 0x02, 0xc9, 0x02, 0x52, 0x1c, 0x30,
0xe0, 0x02, 0x1c, 0x08, 0x22, 0x40, 0x1c, 0x39, 0xf7, 0xff, 0xfe, 0xd0, 0xe0, 0xb1, 0x68, 0x22,
0x23, 0x1d, 0x42, 0x1a, 0xd1, 0x00, 0xe0, 0xa7, 0x68, 0x43, 0x68, 0x82, 0x07, 0x9b, 0x43, 0x13,
0x4a, 0x56, 0x40, 0x13, 0x60, 0xe3, 0xe0, 0xaf, 0x68, 0x22, 0x23, 0x1d, 0x42, 0x1a, 0xd0, 0x00,
0xe0, 0xaa, 0xe0, 0x99, 0x68, 0x22, 0x23, 0x1d, 0x42, 0x1a, 0xd1, 0x00, 0xe0, 0x94, 0x4a, 0x50,
0x4b, 0x4d, 0x24, 0xa0, 0x61, 0x1a, 0x02, 0x24, 0xe0, 0x9f, 0x68, 0x21, 0x23, 0x1c, 0x42, 0x19,
0xd1, 0x00, 0xe0, 0x89, 0x60, 0x32, 0xe0, 0x97, 0x4b, 0x47, 0x22, 0x1c, 0x68, 0x19, 0x42, 0x11,
0xd1, 0x02, 0x69, 0x1b, 0x2b, 0x00, 0xd0, 0x7f, 0x4b, 0x43, 0x69, 0x1b, 0xe0, 0x45, 0x68, 0x43,
0x60, 0xa3, 0xe0, 0x89, 0x68, 0xa3, 0xe0, 0x40, 0x68, 0x43, 0x2b, 0x00, 0xd0, 0x03, 0x68, 0x22,
0x23, 0x02, 0x43, 0x13, 0xe0, 0x02, 0x68, 0x23, 0x22, 0x02, 0x43, 0x93, 0x60, 0x23, 0xe0, 0x7b,
0x68, 0x22, 0x23, 0x02, 0xe0, 0x30, 0x68, 0x46, 0xf0, 0x00, 0xf9, 0xb4, 0x68, 0x23, 0x22, 0x04,
0x43, 0x93, 0x60, 0x23, 0x2e, 0x00, 0xd0, 0x6f, 0x1c, 0x29, 0x1e, 0x70, 0x31, 0x08, 0xf0, 0x00,
0xf9, 0xb7, 0x1c, 0x04, 0x28, 0x00, 0xd1, 0x68, 0x4b, 0x2f, 0x22, 0x04, 0x68, 0x19, 0xe0, 0x16,
0x68, 0x22, 0x23, 0x04, 0xe0, 0x18, 0x68, 0x45, 0xf7, 0xff, 0xfd, 0x2c, 0x68, 0x23, 0x22, 0x08,
0x43, 0x93, 0x60, 0x23, 0x2d, 0x00, 0xd0, 0x57, 0x1c, 0x28, 0xf0, 0x00, 0xe9, 0x5c, 0xf7, 0xff,
0xfd, 0x2f, 0x1c, 0x04, 0x28, 0x00, 0xd1, 0x50, 0x4b, 0x23, 0x22, 0x08, 0x68, 0x19, 0x43, 0x0a,
0x60, 0x1a, 0xe0, 0x4a, 0x68, 0x22, 0x23, 0x08, 0x40, 0x13, 0x60, 0x33, 0xe0, 0x44, 0x68, 0x43,
0x68, 0x87, 0x93, 0x00, 0x68, 0xc5, 0xf0, 0x00, 0xfa, 0x8b, 0x68, 0x23, 0x22, 0x10, 0x43, 0x93,
0x60, 0x23, 0x2f, 0x00, 0xd0, 0x38, 0x9a, 0x00, 0x2a, 0x00, 0xd0, 0x35, 0x2d, 0x00, 0xd0, 0x33,
0x1c, 0x38, 0xf0, 0x00, 0xe9, 0x38, 0x1c, 0x2a, 0x1c, 0x01, 0x98, 0x00, 0xf0, 0x00, 0xfb, 0xc8,
0x60, 0x30, 0x28, 0x00, 0xdd, 0x28, 0x4b, 0x10, 0x22, 0x10, 0x68, 0x19, 0x43, 0x0a, 0x60, 0x1a,
0xe0, 0x22, 0x68, 0x23, 0xe7, 0xd9, 0x4b, 0x0f, 0x60, 0x0b, 0x68, 0x23, 0x60, 0x4b, 0x68, 0x63,
0x60, 0x8b, 0xe0, 0x19, 0x68, 0x43, 0x61, 0xa3, 0xe0, 0x16, 0x68, 0x40, 0xf0, 0x00, 0xe9, 0x1a,
0x1c, 0x31, 0xf7, 0xff, 0xfb, 0x71, 0xe0, 0x04, 0x1c, 0x28, 0x1c, 0x31, 0x1c, 0x3a, 0xf7, 0xff,
0xfc, 0x86, 0x1c, 0x04, 0xe0, 0x09, 0x46, 0xc0, 0x13, 0x70, 0x21, 0x30, 0xff, 0xff, 0x80, 0x00,
0x00, 0x05, 0x31, 0x00, 0x48, 0x45, 0x4c, 0x4f, 0x24, 0x00, 0xb0, 0x03, 0x1c, 0x20, 0xbd, 0xf0,
0xb5, 0x10, 0x1c, 0x01, 0x22, 0x00, 0x20, 0x12, 0x23, 0x00, 0xf0, 0x00, 0xe8, 0xf8, 0xbd, 0x10,
0xb5, 0x70, 0x1c, 0x05, 0x1c, 0x0c, 0x1c, 0x13, 0x1c, 0x29, 0x1c, 0x22, 0x20, 0x10, 0xf0, 0x00,
0xe8, 0xee, 0xbd, 0x70, 0xe6, 0x00, 0x00, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0x30,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0x50, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0x70,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0xb0,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0xd0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0xf0,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0x30,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0x50, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0x70,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0xb0,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0xd0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0xf0,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0x30,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0x50, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0x70,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0xb0,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0xd0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0xf0,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x30,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x50, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x70,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0xb0,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0xd0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0xf0,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x30,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x50, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x70,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0xb0,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0xd0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0xf0,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x05, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x05, 0x30,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x05, 0x50, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x06, 0x90,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x07, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x08, 0x10,
0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x09, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x0a, 0x10,
0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0xa0, 0x20, 0x0e, 0xe2, 0x90, 0x10, 0x00, 0xe3, 0xb0, 0x00, 0x04,
0xef, 0x00, 0x00, 0xab, 0xe1, 0x2f, 0xff, 0x12, 0xe5, 0x9f, 0xc0, 0x54, 0xe5, 0x9c, 0xc0, 0x00,
0xe1, 0xa0, 0x00, 0x00, 0xe7, 0x9c, 0xc1, 0x0b, 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1c,
0xe3, 0xa0, 0xb0, 0x3f, 0xea, 0xff, 0xff, 0xf7, 0xe3, 0xa0, 0xb0, 0x40, 0xea, 0xff, 0xff, 0xf5,
0xe3, 0xa0, 0x00, 0x00, 0xee, 0x07, 0x0f, 0x15, 0xe1, 0x2f, 0xff, 0x1e, 0xee, 0x13, 0x0f, 0x10,
0xe1, 0x2f, 0xff, 0x1e, 0xee, 0x03, 0x0f, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xef, 0x00, 0x00, 0xcc,
0xe1, 0x2f, 0xff, 0x1e, 0xe3, 0xc0, 0x01, 0x02, 0xe1, 0x2f, 0xff, 0x1e, 0xe3, 0x80, 0x01, 0x02,
0xe1, 0x2f, 0xff, 0x1e, 0x13, 0x70, 0x21, 0x00, 0xb5, 0x70, 0x4c, 0x13, 0x1c, 0x06, 0x68, 0x20,
0x23, 0x04, 0x62, 0x02, 0x1c, 0x02, 0x32, 0x20, 0x60, 0x02, 0x32, 0x20, 0xb0, 0x82, 0x64, 0x01,
0x60, 0x43, 0x60, 0x82, 0x60, 0xc3, 0x61, 0x41, 0x61, 0x06, 0x1c, 0x0d, 0x21, 0x44, 0xf7, 0xff,
0xef, 0xa6, 0x4b, 0x0a, 0x49, 0x0a, 0x68, 0x18, 0x68, 0x23, 0x22, 0x02, 0x93, 0x00, 0x23, 0x01,
0xf7, 0xff, 0xef, 0x70, 0x1c, 0x04, 0x28, 0x00, 0xd1, 0x03, 0x1c, 0x30, 0x1c, 0x29, 0xf7, 0xff,
0xef, 0x92, 0xb0, 0x02, 0x1c, 0x20, 0xbd, 0x70, 0x13, 0x70, 0x21, 0x4c, 0x13, 0x70, 0x20, 0x04,
0x57, 0x46, 0x53, 0x02, 0xb5, 0x10, 0x4b, 0x05, 0x68, 0x18, 0x28, 0x00, 0xdd, 0x01, 0xf7, 0xff,
0xef, 0x46, 0x4a, 0x02, 0x23, 0x01, 0x42, 0x5b, 0x60, 0x13, 0xbd, 0x10, 0x13, 0x70, 0x20, 0x04,
0xb5, 0x70, 0x4c, 0x18, 0xb0, 0x82, 0x68, 0x23, 0x1c, 0x05, 0x1c, 0x0e, 0x2b, 0x00, 0xd1, 0x09,
0x20, 0x44, 0x21, 0x20, 0xf7, 0xff, 0xea, 0xf4, 0x60, 0x20, 0x28, 0x00, 0xd1, 0x02, 0x20, 0x16,
0x42, 0x40, 0xe0, 0x1d, 0x4b, 0x10, 0x00, 0xad, 0x58, 0xe8, 0x21, 0x01, 0xf7, 0xff, 0xef, 0x22,
0x4d, 0x0e, 0x60, 0x28, 0x28, 0x00, 0xdb, 0x13, 0x4c, 0x0a, 0x1c, 0x31, 0x68, 0x20, 0x22, 0x06,
0x30, 0x20, 0xf0, 0x00, 0xfa, 0x99, 0x68, 0x23, 0x68, 0x28, 0x1c, 0x1a, 0x32, 0x20, 0x60, 0x1a,
0x22, 0x06, 0x60, 0x5a, 0x49, 0x06, 0x93, 0x00, 0x22, 0x01, 0x23, 0x00, 0xf7, 0xff, 0xef, 0x22,
0xb0, 0x02, 0xbd, 0x70, 0x13, 0x70, 0x21, 0x4c, 0x13, 0x70, 0x20, 0xa0, 0x13, 0x70, 0x20, 0x04,
0x57, 0x46, 0x53, 0x01, 0xb5, 0x10, 0x4c, 0x0e, 0xb0, 0x82, 0x68, 0x23, 0x2b, 0x00, 0xda, 0x14,
0x1c, 0x20, 0x30, 0x20, 0x21, 0x01, 0xf7, 0xff, 0xee, 0xf6, 0x60, 0x20, 0x28, 0x00, 0xda, 0x02,
0x20, 0x0b, 0x42, 0x40, 0xe0, 0x0a, 0x23, 0x00, 0x22, 0x00, 0x49, 0x06, 0x93, 0x00, 0xf7, 0xff,
0xef, 0x02, 0x4a, 0x05, 0x23, 0x80, 0x00, 0x9b, 0x60, 0x13, 0x20, 0x00, 0xb0, 0x02, 0xbd, 0x10,
0x13, 0x70, 0x20, 0x20, 0x55, 0x4d, 0x53, 0x01, 0x13, 0x70, 0x21, 0x60, 0xb5, 0x70, 0x4b, 0x1e,
0xb0, 0x82, 0x68, 0x1b, 0x2b, 0x00, 0xdb, 0x33, 0x4e, 0x1c, 0x1c, 0x33, 0x33, 0x40, 0x62, 0x33,
0x23, 0x04, 0x62, 0x73, 0x62, 0xf3, 0x68, 0x33, 0x64, 0x71, 0x43, 0x59, 0x64, 0x30, 0x1c, 0x34,
0x1c, 0x30, 0x30, 0x44, 0x34, 0x20, 0x62, 0xb0, 0x63, 0x32, 0x63, 0x71, 0x1c, 0x25, 0x36, 0x38,
0x68, 0x28, 0x68, 0x69, 0xf7, 0xff, 0xef, 0x02, 0x35, 0x08, 0x42, 0xb5, 0xd1, 0xf8, 0x4d, 0x0f,
0x21, 0x18, 0x35, 0x20, 0x1c, 0x28, 0xf7, 0xff, 0xee, 0xfa, 0x4b, 0x0b, 0x49, 0x0c, 0x68, 0x18,
0x22, 0x02, 0x23, 0x01, 0x95, 0x00, 0xf7, 0xff, 0xee, 0xc6, 0x28, 0x00, 0xdb, 0x08, 0x68, 0x20,
0x68, 0x61, 0xf7, 0xff, 0xee, 0xe8, 0x34, 0x08, 0x42, 0xb4, 0xd1, 0xf8, 0x20, 0x01, 0xe0, 0x00,
0x20, 0x00, 0xb0, 0x02, 0xbd, 0x70, 0x46, 0xc0, 0x13, 0x70, 0x20, 0x20, 0x13, 0x70, 0x21, 0x60,
0x55, 0x4d, 0x53, 0x03, 0xb5, 0x70, 0x4b, 0x1c, 0xb0, 0x82, 0x68, 0x1c, 0x2c, 0x00, 0xdb, 0x2f,
0x4e, 0x1a, 0x60, 0x30, 0x20, 0x04, 0x62, 0x70, 0x62, 0xf0, 0x68, 0x5b, 0x60, 0x71, 0x43, 0x59,
0x1d, 0x34, 0x62, 0xb4, 0x34, 0x1c, 0x62, 0x36, 0x63, 0x32, 0x63, 0x71, 0x1c, 0x25, 0x36, 0x38,
0x68, 0x28, 0x68, 0x69, 0xf7, 0xff, 0xee, 0xc2, 0x35, 0x08, 0x42, 0xb5, 0xd1, 0xf8, 0x4d, 0x0f,
0x21, 0x18, 0x35, 0x20, 0x1c, 0x28, 0xf7, 0xff, 0xee, 0xba, 0x4b, 0x0b, 0x21, 0x02, 0x68, 0x18,
0x22, 0x02, 0x23, 0x01, 0x95, 0x00, 0xf7, 0xff, 0xee, 0x86, 0x28, 0x00, 0xdb, 0x08, 0x68, 0x20,
0x68, 0x61, 0xf7, 0xff, 0xee, 0xa8, 0x34, 0x08, 0x42, 0xb4, 0xd1, 0xf8, 0x20, 0x01, 0xe0, 0x00,
0x20, 0x00, 0xb0, 0x02, 0xbd, 0x70, 0x46, 0xc0, 0x13, 0x70, 0x20, 0x60, 0x13, 0x70, 0x21, 0xc0,
0xb5, 0x10, 0x4c, 0x0e, 0xb0, 0x82, 0x68, 0x23, 0x2b, 0x00, 0xda, 0x13, 0x1c, 0x20, 0x30, 0x20,
0x21, 0x01, 0xf7, 0xff, 0xee, 0x50, 0x60, 0x20, 0x28, 0x00, 0xda, 0x02, 0x20, 0x0b, 0x42, 0x40,
0xe0, 0x09, 0x23, 0x00, 0x21, 0x01, 0x22, 0x00, 0x93, 0x00, 0xf7, 0xff, 0xee, 0x5c, 0x23, 0x80,
0x00, 0x9b, 0x60, 0x63, 0x20, 0x00, 0xb0, 0x02, 0xbd, 0x10, 0x46, 0xc0, 0x13, 0x70, 0x20, 0x60,
0x4b, 0x02, 0x22, 0x00, 0x60, 0x1a, 0x60, 0x5a, 0x60, 0x9a, 0x47, 0x70, 0x13, 0x70, 0x22, 0x00,
0xb5, 0xf0, 0x4d, 0x33, 0x24, 0xa0, 0xb0, 0x83, 0x0b, 0xcf, 0x00, 0xa4, 0x9e, 0x09, 0x60, 0xef,
0x42, 0xa7, 0xd9, 0x01, 0x4c, 0x2f, 0x60, 0xec, 0x4d, 0x2d, 0x4f, 0x2f, 0x68, 0xec, 0x46, 0x9c,
0x00, 0x64, 0x19, 0x3c, 0x89, 0xa4, 0x61, 0x2c, 0x61, 0x6c, 0x00, 0x67, 0x68, 0x45, 0x19, 0x3f,
0x00, 0xbf, 0x95, 0x00, 0x19, 0xc7, 0x18, 0x55, 0x37, 0x0c, 0x95, 0x01, 0xe0, 0x33, 0x68, 0x3d,
0x42, 0x8d, 0xd8, 0x17, 0x68, 0xbb, 0x18, 0xeb, 0x42, 0x8b, 0xd9, 0x2a, 0x4f, 0x20, 0x1b, 0x4d,
0x46, 0x63, 0x61, 0x7c, 0x61, 0xbd, 0x60, 0x19, 0x00, 0x63, 0x19, 0x1c, 0x00, 0xa4, 0x19, 0x00,
0x69, 0x03, 0x99, 0x08, 0x18, 0xeb, 0x60, 0x0b, 0x69, 0x43, 0x1b, 0x5d, 0x60, 0x35, 0x42, 0x95,
0xd9, 0x2b, 0xe0, 0x14, 0x9b, 0x01, 0x42, 0x9d, 0xd2, 0x13, 0x4f, 0x15, 0x46, 0x63, 0x1a, 0x69,
0x61, 0x7c, 0x61, 0xb9, 0x60, 0x1d, 0x00, 0x63, 0x19, 0x1c, 0x00, 0xa4, 0x19, 0x00, 0x69, 0x03,
0x9c, 0x08, 0x1a, 0x52, 0x60, 0x23, 0x69, 0x43, 0x60, 0x33, 0x42, 0x93, 0xd9, 0x15, 0x60, 0x32,
0xe0, 0x13, 0x34, 0x01, 0x37, 0x0c, 0x9d, 0x00, 0x42, 0xac, 0xd3, 0xc8, 0x4d, 0x08, 0x18, 0x51,
0x61, 0x6c, 0x68, 0x02, 0x46, 0x63, 0x42, 0x91, 0xd9, 0x02, 0x20, 0x02, 0x42, 0x40, 0xe0, 0x05,
0x60, 0x19, 0x99, 0x08, 0x23, 0x00, 0x60, 0x0b, 0x60, 0x33, 0x20, 0x00, 0xb0, 0x03, 0xbd, 0xf0,
0x13, 0x70, 0x27, 0x00, 0x00, 0x00, 0x02, 0x7f, 0x13, 0x70, 0x22, 0x00, 0xb5, 0xf0, 0xb0, 0x85,
0x1c, 0x07, 0x1c, 0x0e, 0x92, 0x03, 0x4c, 0x28, 0xe0, 0x47, 0x4a, 0x28, 0x4b, 0x28, 0x68, 0x50,
0x93, 0x00, 0x1c, 0x23, 0x33, 0x24, 0x93, 0x01, 0x1c, 0x39, 0x9a, 0x03, 0x4b, 0x25, 0xf7, 0xff,
0xff, 0x7f, 0x62, 0xa0, 0x28, 0x00, 0xd1, 0x3c, 0x69, 0xe2, 0x1b, 0xd2, 0x62, 0xe2, 0x2a, 0x00,
0xd0, 0x0b, 0x02, 0x52, 0x1c, 0x30, 0x21, 0x00, 0xf0, 0x00, 0xf9, 0x66, 0x6a, 0xe3, 0x02, 0x5a,
0x18, 0xb6, 0x9a, 0x03, 0x18, 0xff, 0x1a, 0xd2, 0x92, 0x03, 0x4d, 0x17, 0x6a, 0x69, 0x29, 0x00,
0xd0, 0x1a, 0x4b, 0x16, 0x68, 0x9b, 0x2b, 0x01, 0xd1, 0x04, 0x6a, 0x28, 0x1c, 0x32, 0xf7, 0xff,
0xfe, 0xb5, 0xe0, 0x03, 0x6a, 0x28, 0x1c, 0x32, 0xf7, 0xff, 0xfe, 0xf4, 0x4b, 0x0e, 0x62, 0xa8,
0x6a, 0x9a, 0x2a, 0x00, 0xd1, 0x01, 0x20, 0x03, 0xe0, 0x0d, 0x6a, 0x5b, 0x02, 0x5a, 0x18, 0xb6,
0x9a, 0x03, 0x18, 0xff, 0x1a, 0xd2, 0x92, 0x03, 0x4b, 0x07, 0x6a, 0x5a, 0x6a, 0xdb, 0x18, 0xd3,
0x2b, 0x00, 0xd1, 0x02, 0x20, 0x04, 0x42, 0x40, 0xe0, 0x03, 0x9b, 0x03, 0x2b, 0x00, 0xd1, 0xb4,
0x20, 0x00, 0xb0, 0x05, 0xbd, 0xf0, 0x46, 0xc0, 0x13, 0x70, 0x27, 0x00, 0x13, 0x70, 0x22, 0x00,
0x13, 0x70, 0x27, 0x20, 0x13, 0x70, 0x27, 0x1c, 0xb5, 0xf8, 0x24, 0x7f, 0x1c, 0x0f, 0x1c, 0x1e,
0x09, 0xc1, 0x4b, 0x17, 0x40, 0x20, 0x24, 0x80, 0x00, 0x80, 0x00, 0xa4, 0x1a, 0x24, 0x63, 0x19,
0x63, 0x58, 0x63, 0x9c, 0x42, 0x94, 0xd9, 0x00, 0x63, 0x9a, 0x4a, 0x11, 0x23, 0x80, 0x6b, 0x90,
0x00, 0x9b, 0x42, 0x98, 0xd1, 0x01, 0x23, 0x00, 0x63, 0x93, 0x4c, 0x0d, 0x6b, 0xa3, 0x2b, 0x00,
0xd0, 0x10, 0x1c, 0x25, 0x35, 0x40, 0x1c, 0x08, 0x22, 0x01, 0x1c, 0x29, 0xf7, 0xff, 0xff, 0x7e,
0x4b, 0x08, 0x64, 0x18, 0x28, 0x00, 0xd1, 0x09, 0x6b, 0x61, 0x6b, 0xa2, 0x18, 0x69, 0x1c, 0x38,
0xf0, 0x00, 0xf8, 0xba, 0x4b, 0x02, 0x20, 0x00, 0x6b, 0x9b, 0x60, 0x33, 0xbd, 0xf8, 0x46, 0xc0,
0x13, 0x70, 0x27, 0x00, 0x13, 0x70, 0x29, 0x00, 0xb5, 0xf0, 0x4c, 0x1f, 0x1c, 0x07, 0x1c, 0x0d,
0x1c, 0x23, 0xb0, 0x83, 0x1c, 0x10, 0x1c, 0x16, 0x33, 0x44, 0x1c, 0x39, 0x1c, 0x2a, 0xf7, 0xff,
0xff, 0xbb, 0x90, 0x01, 0x64, 0xa0, 0x28, 0x00, 0xd1, 0x2a, 0x6c, 0x63, 0x08, 0x9a, 0x18, 0xff,
0x1a, 0xed, 0x4b, 0x16, 0x18, 0xb6, 0x42, 0x9d, 0xd9, 0x0f, 0x09, 0xf0, 0x0a, 0x6a, 0x64, 0xe0,
0x65, 0x22, 0x1c, 0x39, 0xf7, 0xff, 0xff, 0x4a, 0x64, 0xa0, 0x28, 0x00, 0xd1, 0x19, 0x6d, 0x23,
0x01, 0xda, 0x02, 0x5b, 0x18, 0xb6, 0x18, 0xff, 0x1a, 0xed, 0x2d, 0x00, 0xd0, 0x10, 0x4c, 0x0a,
0x1c, 0x30, 0x1c, 0x23, 0x33, 0x44, 0x1c, 0x39, 0x1c, 0x2a, 0xf7, 0xff, 0xff, 0x95, 0x64, 0xa0,
0x28, 0x00, 0xd1, 0x06, 0x6c, 0x63, 0x42, 0x9d, 0xd0, 0x03, 0x20, 0x05, 0x42, 0x40, 0xe0, 0x00,
0x98, 0x01, 0xb0, 0x03, 0xbd, 0xf0, 0x46, 0xc0, 0x13, 0x70, 0x29, 0x00, 0x00, 0x00, 0x01, 0xff,
0xb5, 0xf0, 0x4b, 0x32, 0x1c, 0x15, 0x68, 0x1a, 0xb0, 0x83, 0x1c, 0x06, 0x1c, 0x0f, 0x2a, 0x00,
0xd0, 0x03, 0x22, 0x00, 0x60, 0x1a, 0x60, 0x5a, 0x60, 0x9a, 0x1e, 0x73, 0x2b, 0x01, 0xd8, 0x4f,
0x2d, 0x00, 0xd0, 0x4d, 0x4b, 0x2a, 0x42, 0x9d, 0xd9, 0x01, 0x25, 0x02, 0xe0, 0x49, 0x4c, 0x29,
0x2e, 0x01, 0xd1, 0x02, 0xf7, 0xff, 0xfd, 0xce, 0xe0, 0x01, 0xf7, 0xff, 0xfe, 0x71, 0x4b, 0x25,
0x65, 0x60, 0x6d, 0x5a, 0x2a, 0x00, 0xd0, 0x01, 0x1c, 0x15, 0xe0, 0x3b, 0x4c, 0x1f, 0x33, 0x58,
0x60, 0x63, 0x60, 0xa6, 0x1c, 0x38, 0x1c, 0x29, 0xf7, 0xff, 0xec, 0xfc, 0x68, 0x60, 0x21, 0x00,
0x4a, 0x1b, 0xf0, 0x00, 0xf8, 0x79, 0x1c, 0x2a, 0x68, 0x60, 0x1c, 0x39, 0xf0, 0x00, 0xf8, 0x34,
0x1c, 0x38, 0x1c, 0x29, 0xf7, 0xff, 0xec, 0xf2, 0x21, 0xa0, 0x68, 0x60, 0x23, 0x00, 0x34, 0x0c,
0x22, 0x00, 0x00, 0x89, 0x03, 0xd6, 0x96, 0x01, 0xe0, 0x01, 0x04, 0x33, 0x0c, 0x1b, 0x00, 0x5e,
0x18, 0xf6, 0x00, 0xb6, 0x19, 0x86, 0x69, 0x77, 0x68, 0xf6, 0x46, 0xbc, 0x9f, 0x01, 0x44, 0x66,
0x42, 0xb7, 0xd3, 0x04, 0x68, 0x47, 0x1c, 0x5e, 0x46, 0xbc, 0x45, 0x66, 0xd3, 0xed, 0x32, 0x01,
0x80, 0x23, 0x34, 0x02, 0x42, 0x8a, 0xd1, 0xe5, 0x4b, 0x04, 0x22, 0x01, 0x60, 0x1a, 0xe0, 0x01,
0x25, 0x01, 0x42, 0x6d, 0xb0, 0x03, 0x1c, 0x28, 0xbd, 0xf0, 0x46, 0xc0, 0x13, 0x70, 0x22, 0x00,
0x00, 0x03, 0xa9, 0x8c, 0x13, 0x70, 0x29, 0x00, 0xb5, 0xf0, 0x1c, 0x06, 0x1c, 0x0d, 0x1c, 0x14,
0x2a, 0x0f, 0xd9, 0x03, 0x1c, 0x0b, 0x43, 0x03, 0x07, 0x9f, 0xd0, 0x0a, 0x2c, 0x00, 0xd0, 0x05,
0x23, 0x00, 0x5c, 0xea, 0x54, 0xf2, 0x33, 0x01, 0x42, 0xa3, 0xd1, 0xfa, 0xbc, 0xf0, 0xbc, 0x02,
0x47, 0x08, 0x1c, 0x15, 0x1c, 0x0c, 0x1c, 0x03, 0x68, 0x26, 0x60, 0x1e, 0x68, 0x66, 0x60, 0x5e,
0x68, 0xa6, 0x60, 0x9e, 0x68, 0xe6, 0x3d, 0x10, 0x60, 0xde, 0x34, 0x10, 0x33, 0x10, 0x2d, 0x0f,
0xd8, 0xf2, 0x3a, 0x10, 0x09, 0x13, 0x1c, 0x5d, 0x01, 0x2d, 0x01, 0x1b, 0x19, 0x46, 0x19, 0x4d,
0x1a, 0xd1, 0x1c, 0x0c, 0x29, 0x03, 0xd9, 0xd9, 0x23, 0x00, 0x58, 0xea, 0x50, 0xf2, 0x33, 0x04,
0x1a, 0xca, 0x2a, 0x03, 0xd8, 0xf9, 0x39, 0x04, 0x08, 0x8c, 0x1c, 0x63, 0x00, 0x9b, 0x00, 0xa4,
0x18, 0xf6, 0x18, 0xed, 0x1b, 0x0c, 0xe7, 0xc9, 0xb5, 0x70, 0x1c, 0x03, 0x07, 0x84, 0xd0, 0x0d,
0x2a, 0x00, 0xd0, 0x40, 0x06, 0x0d, 0x3a, 0x01, 0x0e, 0x2d, 0x24, 0x03, 0xe0, 0x02, 0x2a, 0x00,
0xd0, 0x39, 0x3a, 0x01, 0x70, 0x1d, 0x33, 0x01, 0x42, 0x23, 0xd1, 0xf8, 0x2a, 0x03, 0xd9, 0x29,
0x25, 0xff, 0x40, 0x0d, 0x02, 0x2c, 0x43, 0x25, 0x04, 0x2c, 0x1c, 0x1e, 0x43, 0x25, 0x2a, 0x0f,
0xd9, 0x12, 0x1c, 0x16, 0x1c, 0x1c, 0x3e, 0x10, 0x60, 0x25, 0x60, 0x65, 0x60, 0xa5, 0x60, 0xe5,
0x34, 0x10, 0x2e, 0x0f, 0xd8, 0xf7, 0x3a, 0x10, 0x09, 0x16, 0x36, 0x01, 0x01, 0x36, 0x19, 0x9e,
0x23, 0x0f, 0x40, 0x1a, 0x2a, 0x03, 0xd9, 0x0c, 0x23, 0x00, 0x50, 0xf5, 0x33, 0x04, 0x1a, 0xd4,
0x2c, 0x03, 0xd8, 0xfa, 0x3a, 0x04, 0x08, 0x93, 0x33, 0x01, 0x00, 0x9b, 0x18, 0xf6, 0x23, 0x03,
0x40, 0x1a, 0x1c, 0x33, 0x2a, 0x00, 0xd0, 0x06, 0x06, 0x09, 0x0e, 0x0c, 0x21, 0x00, 0x54, 0x5c,
0x31, 0x01, 0x42, 0x8a, 0xd1, 0xfb, 0xbc, 0x70, 0xbc, 0x02, 0x47, 0x08, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x64, 0x65, 0x76,
0x2f, 0x75, 0x73, 0x62, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x64, 0x65, 0x76,
0x2f, 0x73, 0x64, 0x69, 0x6f, 0x2f, 0x73, 0x64, 0x68, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x70, 0x20, 0xd6,
0x13, 0x70, 0x20, 0xe0, 0x24, 0x49, 0x4f, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a,
0x20, 0x44, 0x49, 0x50, 0x50, 0x3a, 0x20, 0x4d, 0x61, 0x72, 0x20, 0x20, 0x37, 0x20, 0x32, 0x30,
0x31, 0x30, 0x20, 0x31, 0x31, 0x3a, 0x35, 0x34, 0x3a, 0x32, 0x36, 0x20, 0x36, 0x34, 0x4d, 0x24,
0x0a, 0x00, 0x2f, 0x64, 0x65, 0x76, 0x2f, 0x75, 0x73, 0x62, 0x32, 0x00, 0x2f, 0x64, 0x65, 0x76,
0x2f, 0x73, 0x64, 0x69, 0x6f, 0x2f, 0x73, 0x64, 0x68, 0x63, 0x00, 0x00
};

View File

@ -1,3 +0,0 @@
#define size_dip_plugin_249 5276
extern unsigned char dip_plugin_249[5276];

291
source/mload/fatffs_util.c Normal file
View File

@ -0,0 +1,291 @@
/*
From Custom IOS Module (FAT)
Copyright (C) 2009 Waninkoko.
Copyright (C) 2010 Hermes.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "fatffs_util.h"
#include <string.h>
#include <sys/dir.h>
#include <sys/stat.h>
#include <stdio.h>
#include <malloc.h>
extern u32 nand_mode;
s32 FAT_DeleteDir(const char *dirpath)
{
DIR_ITER *dir;
s32 ret;
/* Open directory */
dir = diropen(dirpath);
if (!dir)
return -1;
/* Read entries */
for (;;) {
char filename[256], newpath[256];
struct stat filestat;
/* Read entry */
if (dirnext(dir, filename, &filestat))
break;
/* Non valid entry */
if (filename[0]=='.')
continue;
/* Generate entry path */
strcpy(newpath, dirpath);
strcat(newpath, "/");
strcat(newpath, filename);
/* Delete directory contents */
if (filestat.st_mode & S_IFDIR)
FAT_DeleteDir(newpath);
/* Delete object */
ret = remove(newpath);
/* Error */
if (ret != 0)
break;
}
/* Close directory */
dirclose(dir);
return 0;
}
static int global_error=0;
static char temp_read_buffer[16384] ATTRIBUTE_ALIGN(32);
s32 _FFS_to_FAT_Copy(const char *ffsdirpath, const char *fatdirpath)
{
int n;
u32 blocks, ionodes;
int pos=0;
char *list;
s32 ret;
u32 ionodes_temp;
if(ISFS_GetUsage(ffsdirpath, &blocks, &ionodes)) {global_error=-1;return -1;}
list= memalign(32, ionodes*13);
if(!list) {global_error=-2;return -2;}
if(ISFS_ReadDir(ffsdirpath, list , &ionodes)) {free(list);global_error=-3;return -3;}
if(ionodes) mkdir(fatdirpath, S_IRWXO | S_IRWXG | S_IRWXU);
/* Read entries */
for (n=0;n<ionodes;n++) {
char * filename;
char newffspath[256], newfatpath[256];
/* Read entry */
filename=&list[pos];
pos+=strlen(&list[pos])+1;
/* Non valid entry */
if (filename[0]=='.')
continue;
/* Generate entry path */
strcpy(newffspath, ffsdirpath);
strcat(newffspath, "/");
strcat(newffspath, filename);
strcpy(newfatpath, fatdirpath);
strcat(newfatpath, "/");
strcat(newfatpath, filename);
ret=ISFS_ReadDir(newffspath, NULL, &ionodes_temp);
if(ret==0) // it is a directory
{
_FFS_to_FAT_Copy(newffspath, newfatpath);
if(global_error) {free(list);return global_error;}
}
else // copy the file
{
int fd;
FILE *fp;
fd=ISFS_Open(newffspath, ISFS_OPEN_READ);
if(fd<0)
{
global_error=-4;
free(list);return global_error;
}
else
{
int len;
fp=fopen(newfatpath,"w");
if(!fd) {ISFS_Close(fd);global_error=-5;free(list);return global_error;}
len= ISFS_Seek(fd, 0, 2);
//if(len<0) {ISFS_Close(fd);global_error=-6;free(list);return global_error;}
ISFS_Seek(fd, 0, 0);
while(len>0)
{
ret=len; if(len>16384) ret=16384;
if(ISFS_Read(fd, temp_read_buffer, ret)!=ret)
{
global_error=-7;
break;
}
if(fwrite(temp_read_buffer, 1, ret, fp)!=ret)
{
global_error=-8;
break;
}
len-=ret;
}
fclose(fp);
ISFS_Close(fd);
if(global_error) {free(list);return global_error;}
}
}
}
free(list);
return 0;
}
s32 FFS_to_FAT_Copy(const char *ffsdirpath, const char *fatdirpath)
{
u32 blocks, ionodes;
int ret;
char create_dir[256];
ISFS_Initialize();
ret=ISFS_GetUsage(ffsdirpath, &blocks, &ionodes);
if(ret==0)
{
int n=0;
// creating the path directory
strcpy(create_dir, fatdirpath);
while(create_dir[n]!=0 && create_dir[n]!='/') n++;
if(create_dir[n]=='/') n++;
while(create_dir[n]!=0)
{
if(create_dir[n]=='/')
{
create_dir[n]=0;
mkdir(create_dir, S_IRWXO | S_IRWXG | S_IRWXU);
create_dir[n]='/';
}
n++;
}
global_error=0;
// copy files
_FFS_to_FAT_Copy(ffsdirpath, fatdirpath);
ret=global_error=0;
}
else ret=-101;
ISFS_Deinitialize();
return ret;
}
static char temp_cad[512];
void create_FAT_FFS_Directory(struct discHdr *header)
{
char device[2][4]={
"sd:",
"ud:"
};
if(!header) return;
sprintf((char *) temp_cad,"%s/nand%c", &device[(nand_mode & 2)!=0][0], (nand_mode & 0xc) ? 49+((nand_mode>>2) & 3) : '\0');
sprintf((char *) temp_cad+32,"%2.2x%2.2x%2.2x%2.2x", header->id[0], header->id[1], header->id[2], header->id[3]);
sprintf((char *) temp_cad+64,"%s/title/00010000/%s", temp_cad, temp_cad+32);
sprintf((char *) temp_cad+128,"%s/title/00010004/%s", temp_cad, temp_cad+32);
sprintf((char *) temp_cad+256,"/title/00010000/%s", temp_cad+32);
sprintf((char *) temp_cad+384,"/title/00010004/%s", temp_cad+32);
}
int test_FAT_game(char * directory)
{
DIR_ITER * dir=NULL;
dir= diropen(directory);
if(dir) {dirclose(dir);return 1;}
return 0;
}
char *get_FAT_directory1(void)
{
return temp_cad+64;
}
char *get_FAT_directory2(void)
{
return temp_cad+128;
}
char *get_FFS_directory1(void)
{
return temp_cad+256;
}
char *get_FFS_directory2(void)
{
return temp_cad+384;
}

View File

@ -0,0 +1,24 @@
#ifndef _FAT_UTIL_
#define _FAT_UTIL_
#include <gctypes.h>
#include "usbloader/disc.h"
s32 FAT_DeleteDir(const char *dirpath);
s32 FFS_to_FAT_Copy(const char *ffsdirpath, const char *fatdirpath);
void create_FAT_FFS_Directory(struct discHdr *header);
int test_FAT_game(char * directory);
char *get_FAT_directory1(void);
char *get_FAT_directory2(void);
char *get_FFS_directory1(void);
char *get_FFS_directory2(void);
#endif

View File

@ -484,52 +484,115 @@ return ret;
} }
int mload_get_version() /*
int load_ehc_module()
{ {
int ret; int is_ios=0;
if(mload_init()<0) return -1; FILE *fp;
ret = IOS_IoctlvFormat(hid, mload_fd, MLOAD_GET_MLOAD_VERSION, ":");
return ret;
}
if(!external_ehcmodule)
{
fp=fopen("SD:/apps/usbloader_gx/ehcmodule.elf","rb");
if(fp==NULL)
fp=fopen("SD:/apps/usbloadergx/ehcmodule.elf","rb");
/* IOS info structure */ if(fp!=NULL)
typedef struct { {
/* Syscall base */
u32 syscall;
/* Module versions */ fseek(fp, 0, SEEK_END);
u32 dipVersion; size_external_ehcmodule = ftell(fp);
u32 esVersion; external_ehcmodule = memalign(32, size_external_ehcmodule);
u32 ffsVersion; if(!external_ehcmodule)
u32 iopVersion; {fclose(fp);}
} iosInfo; else
{
fseek(fp, 0, SEEK_SET);
int wanin_mload_get_IOS_base() if(fread(external_ehcmodule,1, size_external_ehcmodule ,fp)!=size_external_ehcmodule)
{ {free(external_ehcmodule); external_ehcmodule=NULL;}
int ret;
iosInfo ios;
memset(&ios, 0, sizeof(ios));
if(mload_init()<0) return -1; fclose(fp);
ret= IOS_IoctlvFormat(hid, mload_fd, MLOAD_GET_IOS_BASE, ":d", &ios, sizeof(ios));
//printf("get_ios_base: %d %x\n", ret, ios.dipVersion);
if (ret == 0) {
switch(ios.dipVersion) {
case 0x48776F72: /* DIP: 07/11/08 14:34:26 */
return 37;
case 0x4888E14C: /* DIP: 07/24/08 20:08:44 */
return 38;
case 0x4A262AF5: /* DIP: 06/03/09 07:49:09 */
return 57;
case 0x492ACA9D: /* DIP: 11/24/08 15:39:09 */
return 60;
} }
} }
return ret; }
if(!external_ehcmodule)
{
if(mload_init()<0) return -1;
if (IOS_GetRevision() == 4) {
gprintf("Loading ehcmodule v4\n");
mload_elf((void *) ehcmodule_frag_v4_bin, &my_data_elf);
} else if (IOS_GetRevision() == 0) { // 0? Strange value for v5 ehcmodule
gprintf("Loading ehcmodule v5\n");
mload_elf((void *) ehcmodule_frag_v5_bin, &my_data_elf);
}
thread_id = mload_run_thread(my_data_elf.start, my_data_elf.stack, my_data_elf.size_stack, my_data_elf.prio);
if(thread_id < 0) return -1;
}
else
{
if(mload_init()<0) return -1;
mload_elf((void *) external_ehcmodule, &my_data_elf);
thread_id = mload_run_thread(my_data_elf.start, my_data_elf.stack, my_data_elf.size_stack, my_data_elf.prio);
if(thread_id<0) return -1;
}
usleep(350*1000);
// Test for IOS
mload_seek(0x20207c84, SEEK_SET);
mload_read(patch_datas, 4);
if(patch_datas[0]==0x6e657665)
{
is_ios=38;
}
else
{
is_ios=36;
}
if(is_ios==36)
{
// IOS 36
memcpy(ios_36, dip_plugin, 4); // copy the entry_point
memcpy((void *) dip_plugin, ios_36, 4*10); // copy the adresses from the array
mload_seek(0x1377E000, SEEK_SET); // copy dip_plugin in the starlet
mload_write(dip_plugin,size_dip_plugin);
// enables DIP plugin
mload_seek(0x20209040, SEEK_SET);
mload_write(ios_36, 4);
}
if(is_ios==38)
{
// IOS 38
memcpy(ios_38, dip_plugin, 4); // copy the entry_point
memcpy((void *) dip_plugin, ios_38, 4*10); // copy the adresses from the array
mload_seek(0x1377E000, SEEK_SET); // copy dip_plugin in the starlet
mload_write(dip_plugin,size_dip_plugin);
// enables DIP plugin
mload_seek(0x20208030, SEEK_SET);
mload_write(ios_38, 4);
}
mload_close();
return 0;
} }
int patch_cios_data() {
patch_datas[0]=*((u32 *) (dip_plugin+16*4));
mload_set_ES_ioctlv_vector((void *) patch_datas[0]);
return 1;
}
*/

View File

@ -28,8 +28,6 @@
#define MLOAD_MLOAD_THREAD_ID 0x4D4C4400 #define MLOAD_MLOAD_THREAD_ID 0x4D4C4400
#define MLOAD_GET_IOS_BASE 0x4D4C4401 #define MLOAD_GET_IOS_BASE 0x4D4C4401
#define MLOAD_GET_MLOAD_VERSION 0x4D4C4402
#define MLOAD_LOAD_MODULE 0x4D4C4480 #define MLOAD_LOAD_MODULE 0x4D4C4480
#define MLOAD_RUN_MODULE 0x4D4C4481 #define MLOAD_RUN_MODULE 0x4D4C4481
#define MLOAD_RUN_THREAD 0x4D4C4482 #define MLOAD_RUN_THREAD 0x4D4C4482

View File

@ -1,11 +1,12 @@
#include "mload_modules.h" #include "mload_modules.h"
#include "ehcmodule_frag_bin.h" #include "ehcmodule_frag_v4_bin.h"
#include "dip_plugin_249.h" #include "ehcmodule_frag_v5_bin.h"
#include "sys.h"
#include "gecko.h" #include "gecko.h"
#define ALIGNED(x) __attribute__((aligned(x))) #define ALIGNED(x) __attribute__((aligned(x)))
#define DEBUG_MLOAD
/* Used for Hermes NAND emulation */ /* Used for Hermes NAND emulation */
int global_mount; int global_mount;
int sd_ok=0; int sd_ok=0;
@ -82,6 +83,7 @@ static u32 ios_60[16] ATTRIBUTE_ALIGN(32)=
0x20203750+1, // ios_printf (thumb) 0x20203750+1, // ios_printf (thumb)
}; };
u32 patch_datas[8] ATTRIBUTE_ALIGN(32); u32 patch_datas[8] ATTRIBUTE_ALIGN(32);
data_elf my_data_elf; data_elf my_data_elf;
@ -91,19 +93,105 @@ int size_external_ehcmodule=0;
static int my_thread_id=0; static int my_thread_id=0;
int load_ehc_module_hermes() int load_ehc_module()
{ {
int is_ios=0; int is_ios=0;
#if 0
FILE *fp;
// WARNING!!!: load external module suspended
if(sd_ok && !external_ehcmodule)
{
fp=fopen("sd:/apps/usbloader_gx/ehcmodule.elf","rb");
if(fp==NULL)
fp=fopen("sd:/apps/usbloadergx/ehcmodule.elf","rb");
if(fp!=0)
{
fseek(fp, 0, SEEK_END);
size_external_ehcmodule = ftell(fp);
external_ehcmodule= memalign(32, size_external_ehcmodule);
if(!external_ehcmodule)
{fclose(fp);}
else
{
fseek(fp, 0, SEEK_SET);
if(fread(external_ehcmodule,1, size_external_ehcmodule ,fp)!=size_external_ehcmodule)
{free(external_ehcmodule); external_ehcmodule=NULL;}
fclose(fp);
}
}
}
#endif
/*
if(mload_init()<0) return -1; if(mload_init()<0) return -1;
mload_elf((void *) ehcmodule_frag_bin, &my_data_elf); mload_elf((void *) logmodule, &my_data_elf);
my_thread_id= mload_run_thread(my_data_elf.start, my_data_elf.stack, my_data_elf.size_stack, my_data_elf.prio); my_thread_id= mload_run_thread(my_data_elf.start, my_data_elf.stack, my_data_elf.size_stack, my_data_elf.prio);
if(my_thread_id<0) return -2; if(my_thread_id<0) return -1;
*/
if(!external_ehcmodule)
{
#ifdef DEBUG_MLOAD
gprintf("before mload_init\n");
#endif
if(mload_init()<0) return -1;
#ifdef DEBUG_MLOAD
gprintf("after mload_init\n");
#endif
if (IOS_GetRevision() == 4) {
#ifdef DEBUG_MLOAD
gprintf("Loading ehcmodule v4\n");
#endif
mload_elf((void *) ehcmodule_frag_v4_bin, &my_data_elf);
} else if (IOS_GetRevision() == 65535) {
#ifdef DEBUG_MLOAD
gprintf("Loading ehcmodule v5\n");
#endif
mload_elf((void *) ehcmodule_frag_v5_bin, &my_data_elf);
} else {
return -2;
}
// mload_elf((void *) ehcmodule, &my_data_elf);
#ifdef DEBUG_MLOAD
gprintf("before mload_run_thread\n");
#endif
my_thread_id= mload_run_thread(my_data_elf.start, my_data_elf.stack, my_data_elf.size_stack, my_data_elf.prio);
if(my_thread_id<0) return -1;
//if(mload_module(ehcmodule, size_ehcmodule)<0) return -1;
}
else
{
//if(mload_module(external_ehcmodule, size_external_ehcmodule)<0) return -1;
if(mload_init()<0) return -1;
mload_elf((void *) external_ehcmodule, &my_data_elf);
my_thread_id= mload_run_thread(my_data_elf.start, my_data_elf.stack, my_data_elf.size_stack, my_data_elf.prio);
if(my_thread_id<0) return -1;
}
usleep(350*1000); usleep(350*1000);
// Test for IOS // Test for IOS
#if 0
mload_seek(0x20207c84, SEEK_SET);
mload_read(patch_datas, 32);
if(patch_datas[0]==0x6e657665 )
{
is_ios=38;
}
else
{
is_ios=36;
}
#endif
is_ios=mload_get_IOS_base(); is_ios=mload_get_IOS_base();
switch(is_ios) switch(is_ios)
@ -176,39 +264,11 @@ int load_ehc_module_hermes()
} }
return 0;
}
int load_dip_249()
{
gprintf("load_dip_249\n");
int ret = -1;
if (is_ios_type(IOS_TYPE_WANIN) && IOS_GetRevision() >= 18)
{
gprintf("mload_init\n");
if(mload_init()<0) {
return -2;
}
gprintf("mload_module\n");
ret = mload_module(dip_plugin_249, size_dip_plugin_249);
gprintf("mload_close\n");
mload_close(); mload_close();
}
gprintf("mload done\n");
return ret;
}
int load_ehc_module() return 0;
{
if (is_ios_type(IOS_TYPE_HERMES))
return load_ehc_module_hermes();
else if (is_ios_type(IOS_TYPE_WANIN))
return load_dip_249();
return -1;
} }
#if 0
#define IOCTL_FAT_MOUNTSD 0xF0 #define IOCTL_FAT_MOUNTSD 0xF0
#define IOCTL_FAT_UMOUNTSD 0xF1 #define IOCTL_FAT_UMOUNTSD 0xF1
#define IOCTL_FAT_MOUNTUSB 0xF2 #define IOCTL_FAT_MOUNTUSB 0xF2
@ -368,8 +428,6 @@ s32 ret;
return ret; return ret;
} }
#endif
void enable_ES_ioctlv_vector(void) void enable_ES_ioctlv_vector(void)
{ {
patch_datas[0]=*((u32 *) (dip_plugin+16*4)); patch_datas[0]=*((u32 *) (dip_plugin+16*4));
@ -405,7 +463,11 @@ void test_and_patch_for_port1()
u8 * ehc_data = NULL; u8 * ehc_data = NULL;
ehc_data=search_for_ehcmodule_cfg((void *) ehcmodule_frag_bin, ehcmodule_frag_bin_size); if (IOS_GetRevision() == 4) {
ehc_data=search_for_ehcmodule_cfg((void *) ehcmodule_frag_v4_bin, ehcmodule_frag_v4_bin_size);
} else if (IOS_GetRevision() == 65535) {
ehc_data=search_for_ehcmodule_cfg((void *) ehcmodule_frag_v5_bin, ehcmodule_frag_v5_bin_size);
}
if(ehc_data) if(ehc_data)
{ {

View File

@ -32,7 +32,7 @@
#include "fatmounter.h" #include "fatmounter.h"
#include "settings/cfg.h" #include "settings/cfg.h"
#include "mload/mload.h" #include "mload/mload.h"
#include "mload/mload_modules.h" #include "mload/dip_plugin.h"
#include "gecko.h" #include "gecko.h"
#include "patchcode.h" #include "patchcode.h"
@ -830,7 +830,9 @@ u32 do_bca_code(u8 *gameid)
} }
} }
Set_DIP_BCA_Datas((u8 *) &bcaCode); mload_seek(*((u32 *) (dip_plugin+15*4)), SEEK_SET); // offset 15 (bca_data area)
mload_write(bcaCode, 64);
mload_close();
} }
return 0; return 0;
} }

View File

@ -26,7 +26,6 @@
#include "usbloader/apploader.h" #include "usbloader/apploader.h"
#include "patchcode.h" #include "patchcode.h"
#include "../gecko.h"
//#include "sd.h" //#include "sd.h"
//#include "fwrite_patch.h" //#include "fwrite_patch.h"
@ -415,138 +414,4 @@ void vidolpatcher(void *addr, u32 len)
} }
} }
//giantpune's magic super patch to return to channels
bool PatchReturnTo(void *Address, int Size, u32 id) {
if( !id )return 0;
//new __OSLoadMenu() (SM2.0 and higher)
u8 SearchPattern[ 12 ] = { 0x38, 0x80, 0x00, 0x02, 0x38, 0x60, 0x00, 0x01, 0x38, 0xa0, 0x00, 0x00 };
//old _OSLoadMenu() (used in launch games)
u8 SearchPatternB[ 12 ] = { 0x38, 0xC0, 0x00, 0x02, 0x38, 0xA0, 0x00, 0x01, 0x38, 0xE0, 0x00, 0x00 };
//identifier for the safe place
u8 SearchPattern2[ 12 ] = { 0x4D, 0x65, 0x74, 0x72, 0x6F, 0x77, 0x65, 0x72, 0x6B, 0x73, 0x20, 0x54 };
int found = 0;
int patched = 0;
u8 oldSDK = 0;
u32 ad[ 4 ] = { 0, 0, 0, 0 };
void *Addr = Address;
void *Addr_end = Address+Size;
while (Addr <= Addr_end - 12 ) {
//find a safe place or the patch to hang out
if ( ! ad[ 3 ] && memcmp( Addr, SearchPattern2, 12 )==0 ) {
ad[ 3 ] = (u32)Addr + 0x30;
gprintf("found a safe place @ %08x\n", ad[ 3 ]);
//hexdump( Addr, 0x50 );
}
//find __OSLaunchMenu() and remember some addresses in it
else if ( memcmp( Addr, SearchPattern, 12 )==0 ) {
ad[ found++ ] = (u32)Addr;
}
else if ( ad[ 0 ] && memcmp( Addr, SearchPattern, 8 )==0 ) //after the first match is found, only search the first 8 bytes for the other 2
{
if( !ad[ 1 ] ) ad[ found++ ] = (u32)Addr;
else if( !ad[ 2 ] ) ad[ found++ ] = (u32)Addr;
if( found >= 3 )break;
}
Addr += 4;
}
//check for the older-ass version of the SDK
if( found < 3 && ad[ 3 ] )
{
Addr = Address;
ad[ 0 ] = 0; ad[ 1 ] = 0;
ad[ 2 ] = 0;
found = 0;
oldSDK = 1;
while (Addr <= Addr_end - 12 ) {
//find __OSLaunchMenu() and remember some addresses in it
if ( memcmp( Addr, SearchPatternB, 12 )==0 ) {
ad[ found++ ] = (u32)Addr;
}
else if ( ad[ 0 ] && memcmp( Addr, SearchPatternB, 8 ) == 0 ) //after the first match is found, only search the first 8 bytes for the other 2
{
if( !ad[ 1 ] ) ad[ found++ ] = (u32)Addr;
else if( !ad[ 2 ] ) ad[ found++ ] = (u32)Addr;
if( found >= 3 )break;
}
Addr += 4;
}
}
//if the function is found and if it is not too far into the main.dol
if( found == 3 && ( ad[ 2 ] - ad[ 3 ] < 0x1000001 ) && ad[ 3 ] )
{
gprintf("patch __OSLaunchMenu( 0x00010001, 0x%08x )\n", id);
u32 nop = 0x60000000;
//the magic that writes the TID to the registers
u8 jump[ 20 ] = { 0x3C, 0x60, 0x00, 0x01, 0x60, 0x63, 0x00, 0x01,
0x3C, 0x80, 0x4A, 0x4F, 0x60, 0x84, 0x44, 0x49,
0x4E, 0x80, 0x00, 0x20 };
if( oldSDK )
{
jump[ 1 ] = 0xA0; //3CA00001 60A50001
jump[ 5 ] = 0xA5; //3CC04A4F 60C64449
jump[ 9 ] = 0xC0;
jump[ 13 ] = 0xC6;
}
//patch the thing to use the new TID
jump[ 10 ] = (u8)( id >> 24 );
jump[ 11 ] = (u8)( id >> 16 );
jump[ 14 ] = (u8)( id >> 8 );
jump[ 15 ] = (u8)id;
void* addr = (u32*)ad[ 3 ];
//write new stuff to memory main.dol in a unused part of the main.dol
memcpy( addr, jump, sizeof( jump ) );
//ES_GetTicketViews()
u32 newval = ( ad[ 3 ] - ad[ 0 ] );
newval &= 0x03FFFFFC;
newval |= 0x48000001;
addr = (u32*)ad[ 0 ];
memcpy( addr, &newval, sizeof( u32 ) );
memcpy( addr + 4, &nop, sizeof( u32 ) );
gprintf("\t%p -> %08x\n", addr, newval );
//ES_GetTicketViews() again
newval = ( ad[ 3 ] - ad[ 1 ] );
newval &= 0x03FFFFFC;
newval |= 0x48000001;
addr = (u32*)ad[ 1 ];
memcpy( addr, &newval, sizeof( u32 ) );
memcpy( addr + 4, &nop, sizeof( u32 ) );
gprintf("\t%p -> %08x\n", addr, newval );
//ES_LaunchTitle()
newval = ( ad[ 3 ] - ad[ 2 ] );
newval &= 0x03FFFFFC;
newval |= 0x48000001;
addr = (u32*)ad[ 2 ];
memcpy( addr, &newval, sizeof( u32 ) );
memcpy( addr + 4, &nop, sizeof( u32 ) );
gprintf("\t%p -> %08x\n", addr, newval );
patched = 1;
}
else
{
gprintf("not patched\n");
gprintf("found %d addresses\n", found);
int i;
for( i = 0; i< 4; i++)
gprintf("ad[ %d ]: %08x\n", i, ad[ i ] );
gprintf("offset : %08x\n", ad[ 2 ] - ad[ 3 ] );
}
return patched;
}

View File

@ -36,7 +36,6 @@ bool dogamehooks(void *addr, u32 len);
void langpatcher(void *addr, u32 len); void langpatcher(void *addr, u32 len);
void vidolpatcher(void *addr, u32 len); void vidolpatcher(void *addr, u32 len);
void patchdebug(void *addr, u32 len); void patchdebug(void *addr, u32 len);
bool PatchReturnTo(void *Address, int Size, u32 id);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -1772,6 +1772,14 @@ DiscWait(const char *title, const char *msg, const char *btn1Label, const char *
while (i >= 0) { while (i >= 0) {
VIDEO_WaitVSync(); VIDEO_WaitVSync();
timerTxt.SetTextf("%u %s", i,tr("seconds left")); timerTxt.SetTextf("%u %s", i,tr("seconds left"));
/* HaltGui();
if (Settings.cios == ios222) {
ret = IOS_ReloadIOS(222);
load_ehc_module();
} else {
ret = IOS_ReloadIOS(249);
}
ResumeGui();*/
sleep(1); sleep(1);
USBDevice_deInit(); USBDevice_deInit();
USBDevice_Init(); USBDevice_Init();

View File

@ -205,7 +205,7 @@ int TitleBrowser(u32 type) {
} }
} }
if (!found) { if (!found) {
if (getName00(name[i], TITLE_ID(0x00010002, sys_titles[i-num_titles]), 2)>=0) if (getName00(name[i], TITLE_ID(0x00010002, sys_titles[i-num_titles]))>=0)
found=2; found=2;
if (!found) { if (!found) {

View File

@ -47,12 +47,20 @@ static const char *opts_no_yes[settings_off_on_max] = {trNOOP("No"),trNOOP("Yes"
static const char *opts_off_on[settings_off_on_max] = {trNOOP("OFF"),trNOOP("ON") }; static const char *opts_off_on[settings_off_on_max] = {trNOOP("OFF"),trNOOP("ON") };
static const char *opts_videomode[settings_language_max][2] = {{"",trNOOP("Disc Default")},{trNOOP("System Default"),""},{trNOOP("AutoPatch"),""},{trNOOP("Force"), " PAL50"},{trNOOP("Force")," PAL60"},{trNOOP("Force")," NTSC"}}; static const char *opts_videomode[settings_language_max][2] = {{"",trNOOP("Disc Default")},{trNOOP("System Default"),""},{trNOOP("AutoPatch"),""},{trNOOP("Force"), " PAL50"},{trNOOP("Force")," PAL60"},{trNOOP("Force")," NTSC"}};
static const char *opts_language[settings_language_max] = {trNOOP("Console Default"),trNOOP("Japanese"),trNOOP("English"),trNOOP("German"),trNOOP("French"),trNOOP("Spanish"),trNOOP("Italian"),trNOOP("Dutch"),trNOOP("SChinese"),trNOOP("TChinese"),trNOOP("Korean")}; static const char *opts_language[settings_language_max] = {trNOOP("Console Default"),trNOOP("Japanese"),trNOOP("English"),trNOOP("German"),trNOOP("French"),trNOOP("Spanish"),trNOOP("Italian"),trNOOP("Dutch"),trNOOP("SChinese"),trNOOP("TChinese"),trNOOP("Korean")};
static const char *opts_cios[settings_cios_max] = {"IOS 249","IOS 222", "IOS 223", "IOS 224", "IOS 250"}; static const char *opts_cios[settings_ios_max] = {"IOS 249","IOS 222", "IOS 223", "IOS 250"};
static const char *opts_parentalcontrol[5] = {trNOOP("0 (Everyone)"),trNOOP("1 (Child 7+)"),trNOOP("2 (Teen 12+)"),trNOOP("3 (Mature 16+)"),trNOOP("4 (Adults Only 18+)")}; static const char *opts_parentalcontrol[5] = {trNOOP("0 (Everyone)"),trNOOP("1 (Child 7+)"),trNOOP("2 (Teen 12+)"),trNOOP("3 (Mature 16+)"),trNOOP("4 (Adults Only 18+)")};
static const char *opts_error002[settings_error002_max] = {trNOOP("No"),trNOOP("Yes"),trNOOP("Anti")}; static const char *opts_error002[settings_error002_max] = {trNOOP("No"),trNOOP("Yes"),trNOOP("Anti")};
static const char *opts_partitions[settings_partitions_max] = {trNOOP("Game partition"),trNOOP("All partitions"), trNOOP("Remove update")}; static const char *opts_partitions[settings_partitions_max] = {trNOOP("Game partition"),trNOOP("All partitions"), trNOOP("Remove update")};
static const char *opts_installdir[settings_installdir_max] = {trNOOP("None"), trNOOP("GAMEID_Gamename"), trNOOP("Gamename [GAMEID]")}; static const char *opts_installdir[settings_installdir_max] = {trNOOP("None"), trNOOP("GAMEID_Gamename"), trNOOP("Gamename [GAMEID]")};
bool IsValidPartition(int fs_type, int cios) {
if (cios == 249 || cios == 250) {
return fs_type == FS_TYPE_WBFS;
} else {
return fs_type == FS_TYPE_WBFS || fs_type == FS_TYPE_FAT32 || fs_type == FS_TYPE_NTFS;
}
}
/**************************************************************************** /****************************************************************************
* MenuSettings * MenuSettings
***************************************************************************/ ***************************************************************************/
@ -995,6 +1003,9 @@ int MenuSettings()
if (++Settings.cios >= settings_cios_max) { if (++Settings.cios >= settings_cios_max) {
Settings.cios = 0; Settings.cios = 0;
} }
if ((Settings.cios == 1 && ios222rev!=4) || (Settings.cios == 2 && ios223rev != 4)) {
WindowPrompt(tr("Hermes CIOS"),tr("USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"),tr("OK"));
}
} }
if (Settings.godmode == 1) if (Settings.godmode == 1)
options2.SetValue(Idx, "%s", opts_cios[Settings.cios]); options2.SetValue(Idx, "%s", opts_cios[Settings.cios]);
@ -1006,8 +1017,13 @@ int MenuSettings()
{ {
if (firstRun) options2.SetName(Idx, "%s", tr("Partition")); if (firstRun) options2.SetName(Idx, "%s", tr("Partition"));
if (ret == Idx) { if (ret == Idx) {
// Select the next valid partition, even if that's the same one
do
{
Settings.partition = Settings.partition + 1 == partitions.num ? 0 : Settings.partition + 1; Settings.partition = Settings.partition + 1 == partitions.num ? 0 : Settings.partition + 1;
} }
while (!IsValidPartition(partitions.pinfo[Settings.partition].fs_type, Settings.cios));
}
PartInfo pInfo = partitions.pinfo[Settings.partition]; PartInfo pInfo = partitions.pinfo[Settings.partition];
f32 partition_size = partitions.pentry[Settings.partition].size * (partitions.sector_size / GB_SIZE); f32 partition_size = partitions.pentry[Settings.partition].size * (partitions.sector_size / GB_SIZE);
@ -2200,7 +2216,8 @@ int MenuSettings()
ResumeGui(); ResumeGui();
return menu; return menu;
} }
/******************************************************************************** /********************************************************************************
*Game specific settings *Game specific settings
@ -2421,8 +2438,9 @@ int GameSettings(struct discHdr * header)
mainWindow->Append(&w); mainWindow->Append(&w);
CFG_set_game_default();
if (game_cfg) {
if (game_cfg) { //if there are saved settings for this game use them
videoChoice = game_cfg->video; videoChoice = game_cfg->video;
languageChoice = game_cfg->language; languageChoice = game_cfg->language;
ocarinaChoice = game_cfg->ocarina; ocarinaChoice = game_cfg->ocarina;
@ -2436,11 +2454,35 @@ int GameSettings(struct discHdr * header)
reloadblock = game_cfg->iosreloadblock; reloadblock = game_cfg->iosreloadblock;
strlcpy(alternatedname, game_cfg->alternatedolname, sizeof(alternatedname)); strlcpy(alternatedname, game_cfg->alternatedolname, sizeof(alternatedname));
} }
else
{
videoChoice = Settings.video;
languageChoice = Settings.language;
ocarinaChoice = Settings.ocarina;
viChoice = Settings.vpatch;
if (Settings.cios == ios222)
iosChoice = i222;
else if (Settings.cios == ios250)
iosChoice = i250;
else if (Settings.cios == ios223)
iosChoice = i223;
else
iosChoice = i249;
parentalcontrolChoice = 0;
fix002 = Settings.error002;
countrystrings = Settings.patchcountrystrings;
alternatedol = off;
alternatedoloffset = 0;
reloadblock = off;
strcpy(alternatedname, "");
}
ResumeGui(); ResumeGui();
while (MainButton1.GetEffect() > 0) usleep(50); while (MainButton1.GetEffect() > 0) usleep(50);
while (menu == MENU_NONE) while (menu == MENU_NONE)
{ {
VIDEO_WaitVSync (); VIDEO_WaitVSync ();
@ -2591,7 +2633,7 @@ int GameSettings(struct discHdr * header)
if(ret == ++Idx || firstRun) if(ret == ++Idx || firstRun)
{ {
if(firstRun) options2.SetName(Idx, "IOS"); if(firstRun) options2.SetName(Idx, "IOS");
if(ret == Idx && ++iosChoice >= settings_cios_max) if(ret == Idx && ++iosChoice >= settings_ios_max)
iosChoice = 0; iosChoice = 0;
options2.SetValue(Idx,"%s",opts_cios[iosChoice]); options2.SetValue(Idx,"%s",opts_cios[iosChoice]);
} }
@ -2930,7 +2972,25 @@ int GameSettings(struct discHdr * header)
int choice1 = WindowPrompt(tr("Are you sure?"),0,tr("Yes"),tr("Cancel")); int choice1 = WindowPrompt(tr("Are you sure?"),0,tr("Yes"),tr("Cancel"));
if (choice1 == 1) if (choice1 == 1)
{ {
CFG_set_game_default(); videoChoice = Settings.video;
viChoice = Settings.vpatch;
languageChoice = Settings.language;
ocarinaChoice = Settings.ocarina;
fix002 = Settings.error002;
countrystrings = Settings.patchcountrystrings;
alternatedol = off;
alternatedoloffset = 0;
reloadblock = off;
if (Settings.cios == ios222)
iosChoice = i222;
else if (Settings.cios == ios250)
iosChoice = i250;
else if (Settings.cios == ios223)
iosChoice = i223;
else
iosChoice = i249;
parentalcontrolChoice = 0;
strcpy(alternatedname, "");
CFG_forget_game_opt(header->id); CFG_forget_game_opt(header->id);
/* commented because the database language now depends on the main language setting, this could be enabled again if there is a separate language setting for the database /* commented because the database language now depends on the main language setting, this could be enabled again if there is a separate language setting for the database
// if default language is different than language from main settings, reload titles // if default language is different than language from main settings, reload titles
@ -2976,6 +3036,8 @@ int GameSettings(struct discHdr * header)
w.SetEffect(EFFECT_FADE, -20); w.SetEffect(EFFECT_FADE, -20);
while (w.GetEffect()>0) usleep(50); while (w.GetEffect()>0) usleep(50);
HaltGui(); HaltGui();
mainWindow->RemoveAll(); mainWindow->RemoveAll();

View File

@ -1258,6 +1258,7 @@ void cfg_parsearg(int argc, char **argv)
// PER-GAME SETTINGS // PER-GAME SETTINGS
// return existing or new // return existing or new
struct Game_CFG* cfg_get_game(u8 *id) { struct Game_CFG* cfg_get_game(u8 *id) {
struct Game_CFG *game = CFG_get_game_opt(id); struct Game_CFG *game = CFG_get_game_opt(id);
@ -1268,22 +1269,6 @@ struct Game_CFG* cfg_get_game(u8 *id) {
return game; return game;
} }
void CFG_set_game_default()
{
videoChoice = Settings.video;
viChoice = Settings.vpatch;
languageChoice = Settings.language;
ocarinaChoice = Settings.ocarina;
fix002 = Settings.error002;
countrystrings = Settings.patchcountrystrings;
alternatedol = off;
alternatedoloffset = 0;
reloadblock = off;
iosChoice = Settings.cios;
parentalcontrolChoice = 0;
strcpy(alternatedname, "");
}
// current options to game // current options to game
void cfg_set_game_opt(struct Game_CFG *game, u8 *id) { void cfg_set_game_opt(struct Game_CFG *game, u8 *id) {
strncpy((char*)game->id, (char*)id, 6); strncpy((char*)game->id, (char*)id, 6);
@ -1753,7 +1738,6 @@ struct Game_CFG* CFG_get_game_opt(u8 *id) {
return &cfg_game[i]; return &cfg_game[i];
} }
} }
CFG_set_game_default();
return NULL; return NULL;
} }
@ -1951,21 +1935,3 @@ void GetLanguageToLangCode(int *langid, char *langcode) {
break; break;
} }
} }
int ciosSetting2Cios(int setting)
{
switch (setting) {
case ios222:
return 222;
case ios223:
return 223;
case ios224:
return 224;
case ios250:
return 250;
case ios249:
default:
return 249;
}
}

View File

@ -239,7 +239,6 @@ extern "C" {
void CFG_Load(void); void CFG_Load(void);
struct Game_CFG* CFG_get_game_opt(u8 *id); struct Game_CFG* CFG_get_game_opt(u8 *id);
struct Game_NUM* CFG_get_game_num(u8 *id); struct Game_NUM* CFG_get_game_num(u8 *id);
void CFG_set_game_default();
bool CFG_save_game_opt(u8 *id); bool CFG_save_game_opt(u8 *id);
bool CFG_save_game_num(u8 *id); bool CFG_save_game_num(u8 *id);
bool CFG_reset_all_playcounters(); bool CFG_reset_all_playcounters();
@ -299,11 +298,18 @@ extern "C" {
settings_sinfo_max // always the last entry settings_sinfo_max // always the last entry
}; };
enum {
i249=0,
i222,
i223,
i250,
settings_ios_max // always the last entry
};
enum { enum {
ios249=0, ios249=0,
ios222, ios222,
ios223, ios223,
ios224,
ios250, ios250,
settings_cios_max // always the last entry settings_cios_max // always the last entry
}; };
@ -458,8 +464,6 @@ extern "C" {
void GetLanguageToLangCode(int *langid, char *langcode); void GetLanguageToLangCode(int *langid, char *langcode);
bool OpenXMLDatabase(char* xmlfilepath, char* argdblang, bool argJPtoEN, bool openfile, bool loadtitles, bool freemem); bool OpenXMLDatabase(char* xmlfilepath, char* argdblang, bool argJPtoEN, bool openfile, bool loadtitles, bool freemem);
int ciosSetting2Cios(int setting);
char *get_title(struct discHdr *header); char *get_title(struct discHdr *header);
char *cfg_get_title(u8 *id) ; char *cfg_get_title(u8 *id) ;
void title_set(char *id, char *title); void title_set(char *id, char *title);

View File

@ -2,14 +2,15 @@
#include <ogcsys.h> #include <ogcsys.h>
#include <unistd.h> #include <unistd.h>
#include "settings/cfg.h"
#include "usbloader/wdvd.h" #include "usbloader/wdvd.h"
#include "usbloader/usbstorage2.h" #include "usbloader/usbstorage2.h"
#include "usbloader/disc.h" #include "usbloader/disc.h"
#include "usbloader/wbfs.h" #include "usbloader/wbfs.h"
#include "usbloader/partition_usbloader.h" #include "usbloader/partition_usbloader.h"
#include "mload/mload_modules.h" #include "mload/mload_modules.h"
// #include "menu.h" #include "video.h"
#include "audio.h"
#include "menu.h"
#include "fatmounter.h" #include "fatmounter.h"
#include "sys.h" #include "sys.h"
#include "wpad.h" #include "wpad.h"
@ -17,12 +18,8 @@
extern char game_partition[6]; extern char game_partition[6];
extern u8 load_from_fs; extern u8 load_from_fs;
extern int screenheight;
extern int screenwidth;
//Wiilight stuff //Wiilight stuff
static vu32 *_wiilight_reg = (u32*)0xCD0000C0; static vu32 *_wiilight_reg = (u32*)0xCD0000C0;
void wiilight(int enable) { // Toggle wiilight (thanks Bool for wiilight source) void wiilight(int enable) { // Toggle wiilight (thanks Bool for wiilight source)
u32 val = (*_wiilight_reg&~0x20); u32 val = (*_wiilight_reg&~0x20);
if (enable && Settings.wiilight) val |= 0x20; if (enable && Settings.wiilight) val |= 0x20;
@ -52,14 +49,10 @@ void Sys_Init(void) {
SYS_SetPowerCallback(__Sys_PowerCallback); SYS_SetPowerCallback(__Sys_PowerCallback);
} }
void ExitGUIThreads(void);
void StopAudio();
void StopGX();
static void _ExitApp() { static void _ExitApp() {
ExitGUIThreads(); ExitGUIThreads();
StopGX(); StopGX();
StopAudio(); ShutdownAudio();
UnmountNTFS(); UnmountNTFS();
SDCard_deInit(); SDCard_deInit();
@ -93,8 +86,11 @@ int Sys_ChangeIos(int ios) {
ios = prevIos; ios = prevIos;
} }
load_ehc_module();
SDCard_Init(); SDCard_Init();
if (ios == 222 || ios == 223) {
load_ehc_module();
}
USBDevice_Init(); USBDevice_Init();
PAD_Init(); PAD_Init();
@ -105,7 +101,7 @@ int Sys_ChangeIos(int ios) {
WBFS_Init(WBFS_DEVICE_USB); WBFS_Init(WBFS_DEVICE_USB);
Disc_Init(); Disc_Init();
if (ios_supports_frag()) { if (Sys_IsHermes()) {
WBFS_OpenNamed((char *) &game_partition); WBFS_OpenNamed((char *) &game_partition);
} else { } else {
WBFS_Open(); WBFS_Open();
@ -129,12 +125,11 @@ int Sys_IosReload(int IOS) {
USBStorage2_Deinit(); USBStorage2_Deinit();
if (is_ios_type(IOS_TYPE_HERMES) || is_ios_type(IOS_TYPE_WANIN)) { if (IOS == 249 || IOS == 222 || IOS == 223) {
int i; for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
ret = IOS_ReloadIOSsafe(IOS); ret = IOS_ReloadIOSsafe(IOS);
if (ret < 0) return ret; if (ret < 0) return ret;
load_ehc_module(); if (IOS == 222 || IOS == 223) load_ehc_module();
ret = WBFS_Init(WBFS_DEVICE_USB); ret = WBFS_Init(WBFS_DEVICE_USB);
if (!(ret < 0)) break; if (!(ret < 0)) break;
sleep(1); sleep(1);
@ -142,15 +137,9 @@ int Sys_IosReload(int IOS) {
} }
if (ret>=0) { if (ret>=0) {
ret = Disc_Init(); ret = Disc_Init();
/*
if (ret>=0) { if (ret>=0) {
if (ios_supports_frag() && game_partition[0] != '\0') {
ret = WBFS_OpenNamed((char *) &game_partition);
} else {
ret = WBFS_Open(); ret = WBFS_Open();
} }
}
*/
} else Sys_BackToLoader(); } else Sys_BackToLoader();
} }
@ -220,13 +209,13 @@ bool Sys_IsHermes() {
return IOS_GetVersion() == 222 || IOS_GetVersion() == 223; return IOS_GetVersion() == 222 || IOS_GetVersion() == 223;
} }
// #include "prompts/PromptWindows.h" #include "prompts/PromptWindows.h"
void ShowMemInfo() { void ShowMemInfo() {
char buf[255]; char buf[255];
struct mallinfo mymallinfo = mallinfo(); struct mallinfo mymallinfo = mallinfo();
sprintf((char *) &buf,"Total: %d, Used: %d, Can be freed: %d", mymallinfo.arena/1024, mymallinfo.uordblks/1024, mymallinfo.keepcost/1024); sprintf((char *) &buf,"Total: %d, Used: %d, Can be freed: %d", mymallinfo.arena/1024, mymallinfo.uordblks/1024, mymallinfo.keepcost/1024);
// WindowPrompt("Mem info", (char *) &buf, "OK"); WindowPrompt("Mem info", (char *) &buf, "OK");
} }
@ -277,8 +266,6 @@ s32 IOS_ReloadIOSsafe(int ios)
#include <time.h> #include <time.h>
s32 TakeScreenshot(const char *path);
void ScreenShot() void ScreenShot()
{ {
time_t rawtime; time_t rawtime;
@ -294,30 +281,3 @@ void ScreenShot()
TakeScreenshot(buffer2); TakeScreenshot(buffer2);
} }
int get_ios_type()
{
switch (IOS_GetVersion()) {
case 249:
case 250:
return IOS_TYPE_WANIN;
case 222:
case 223:
if (IOS_GetRevision() == 1)
return IOS_TYPE_KWIIRK;
case 224:
return IOS_TYPE_HERMES;
}
return IOS_TYPE_UNK;
}
int is_ios_type(int type)
{
return (get_ios_type() == type);
}
int ios_supports_frag()
{
return ((is_ios_type(IOS_TYPE_HERMES) && IOS_GetRevision() >= 4) ||
(is_ios_type(IOS_TYPE_WANIN) && IOS_GetRevision() >= 18));
}

View File

@ -1,10 +1,6 @@
#ifndef _SYS_H_ #ifndef _SYS_H_
#define _SYS_H_ #define _SYS_H_
#ifdef __cplusplus
extern "C" {
#endif
void wiilight(int enable); void wiilight(int enable);
/* Prototypes */ /* Prototypes */
@ -27,18 +23,5 @@ extern s32 ios223rev;
extern s32 ios249rev; extern s32 ios249rev;
extern s32 ios250rev; extern s32 ios250rev;
#define IOS_TYPE_UNK 0
#define IOS_TYPE_WANIN 1
#define IOS_TYPE_HERMES 2
#define IOS_TYPE_KWIIRK 3
int get_ios_type();
int is_ios_type(int type);
int ios_supports_frag();
#ifdef __cplusplus
}
#endif
#endif #endif

View File

@ -8,9 +8,7 @@
#include "apploader.h" #include "apploader.h"
#include "wdvd.h" #include "wdvd.h"
#include "fstfile.h" #include "fstfile.h"
#include "../gecko.h"
#include "../patches/dvd_broadway.h" #include "../patches/dvd_broadway.h"
#include "../patches/patchcode.h"
extern u8 mountMethod; extern u8 mountMethod;
@ -26,10 +24,15 @@ bool Load_Dol(void **buffer, int* dollen, char * filepath) {
memcpy(gameidbuffer6, (char*)0x80000000, 6); memcpy(gameidbuffer6, (char*)0x80000000, 6);
snprintf(fullpath, 200, "%s%s.dol", filepath, gameidbuffer6); snprintf(fullpath, 200, "%s%s.dol", filepath, gameidbuffer6);
// SDCard_Init();
// USBDevice_Init();
file = fopen(fullpath, "rb"); file = fopen(fullpath, "rb");
if (file == NULL) { if (file == NULL) {
fclose(file); fclose(file);
// SDCard_deInit();
// USBDevice_deInit();
return false; return false;
} }
@ -41,16 +44,22 @@ bool Load_Dol(void **buffer, int* dollen, char * filepath) {
dol_buffer = malloc(filesize); dol_buffer = malloc(filesize);
if (dol_buffer == NULL) { if (dol_buffer == NULL) {
fclose(file); fclose(file);
// SDCard_deInit();
// USBDevice_deInit();
return false; return false;
} }
ret = fread( dol_buffer, 1, filesize, file); ret = fread( dol_buffer, 1, filesize, file);
if (ret != filesize) { if (ret != filesize) {
free(dol_buffer); free(dol_buffer);
fclose(file); fclose(file);
// SDCard_deInit();
// USBDevice_deInit();
return false; return false;
} }
fclose(file); fclose(file);
// SDCard_deInit();
// USBDevice_deInit();
*buffer = dol_buffer; *buffer = dol_buffer;
*dollen = filesize; *dollen = filesize;
return true; return true;
@ -179,7 +188,7 @@ void __dvd_readidcb(s32 result)
{ {
dvddone = result; dvddone = result;
} }
u32 Load_Dol_from_disc(u32 doloffset, u8 videoSelected, u8 patchcountrystring, u8 vipatch, u8 cheat, u32 rtrn ) { u32 Load_Dol_from_disc(u32 doloffset, u8 videoSelected, u8 patchcountrystring, u8 vipatch, u8 cheat) {
int ret; int ret;
void *dol_header; void *dol_header;
u32 entrypoint; u32 entrypoint;
@ -207,8 +216,6 @@ u32 Load_Dol_from_disc(u32 doloffset, u8 videoSelected, u8 patchcountrystring, u
void *offset; void *offset;
u32 pos; u32 pos;
u32 len; u32 len;
u32 dolStart = 0x90000000;
u32 dolEnd = 0x0;
while (load_dol_image_modified(&offset, &pos, &len)) { while (load_dol_image_modified(&offset, &pos, &len)) {
if (len != 0) { if (len != 0) {
@ -218,24 +225,12 @@ u32 Load_Dol_from_disc(u32 doloffset, u8 videoSelected, u8 patchcountrystring, u
gamepatches(offset, len, videoSelected, patchcountrystring, vipatch, cheat); gamepatches(offset, len, videoSelected, patchcountrystring, vipatch, cheat);
DCFlushRange(offset, len); DCFlushRange(offset, len);
if( (u32)offset < dolStart )
dolStart = (u32)offset;
if( (u32)offset + len > dolEnd )
dolEnd = (u32)offset + len;
Remove_001_Protection(offset, len); Remove_001_Protection(offset, len);
} }
} }
gprintf("start: %08x\tend: %x\n", dolStart, dolEnd );
if( PatchReturnTo( (u32*)dolStart, dolEnd - dolStart , rtrn ) )
{
// gprintf("return-to patched\n" );
DCFlushRange( (u32*)dolStart, dolEnd - dolStart );
}
free(dol_header); free(dol_header);
return entrypoint; return entrypoint;

View File

@ -10,7 +10,7 @@ extern "C" {
bool Load_Dol(void **buffer, int* dollen, char * path); bool Load_Dol(void **buffer, int* dollen, char * path);
bool Remove_001_Protection(void *Address, int Size); bool Remove_001_Protection(void *Address, int Size);
u32 load_dol_image(void * dolstart); u32 load_dol_image(void * dolstart);
u32 Load_Dol_from_disc(u32 doloffset, u8 videoSelected, u8 patchcountrystring, u8 vipatch, u8 cheat, u32 rtrn); u32 Load_Dol_from_disc(u32 doloffset, u8 videoSelected, u8 patchcountrystring, u8 vipatch, u8 cheat);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -13,7 +13,6 @@
#include "settings/cfg.h" #include "settings/cfg.h"
#include "gecko.h" #include "gecko.h"
#include "patches/wip.h" #include "patches/wip.h"
#include "sys.h"
extern bool geckoinit; extern bool geckoinit;
@ -34,6 +33,11 @@ static u8 *appldr = (u8 *)0x81200000;
static u32 buffer[0x20] ATTRIBUTE_ALIGN(32); static u32 buffer[0x20] ATTRIBUTE_ALIGN(32);
struct SSettings Settings; struct SSettings Settings;
static void __noprint(const char *fmt, ...) {
}
bool compare_videomodes(GXRModeObj* mode1, GXRModeObj* mode2) { bool compare_videomodes(GXRModeObj* mode1, GXRModeObj* mode2) {
if (mode1->viTVMode != mode2->viTVMode || mode1->fbWidth != mode2->fbWidth || mode1->efbHeight != mode2->efbHeight || mode1->xfbHeight != mode2->xfbHeight || if (mode1->viTVMode != mode2->viTVMode || mode1->fbWidth != mode2->fbWidth || mode1->efbHeight != mode2->efbHeight || mode1->xfbHeight != mode2->xfbHeight ||
mode1->viXOrigin != mode2->viXOrigin || mode1->viYOrigin != mode2->viYOrigin || mode1->viWidth != mode2->viWidth || mode1->viHeight != mode2->viHeight || mode1->viXOrigin != mode2->viXOrigin || mode1->viYOrigin != mode2->viYOrigin || mode1->viWidth != mode2->viWidth || mode1->viHeight != mode2->viHeight ||
@ -224,30 +228,10 @@ void Anti_002_fix(void *Address, int Size) {
} }
} }
void PretendThereIsADiscInTheDrive(void *buffer, u32 len)
{
const u8 oldcode[] = { 0x54, 0x60, 0xF7, 0xFF, 0x40, 0x82, 0x00, 0x0C, 0x54, 0x60, 0x07, 0xFF, 0x41, 0x82, 0x00, 0x0C };
const u8 newcode[] = { 0x54, 0x60, 0xF7, 0xFF, 0x40, 0x82, 0x00, 0x0C, 0x54, 0x60, 0x07, 0xFF, 0x48, 0x00, 0x00, 0x0C };
int n;
/* Patch cover register */
for(n=0;n<(len-sizeof(oldcode));n+=4)
{
if (memcmp(buffer+n, (void *) oldcode, sizeof(oldcode)) == 0)
{
memcpy(buffer+n, (void *) newcode, sizeof(newcode));
}
}
}
/** Thanks to WiiPower **/ /** Thanks to WiiPower **/
bool NewSuperMarioBrosPatch(void *Address, int Size) bool NewSuperMarioBrosPatch(void *Address, int Size)
{ {
if (is_ios_type(IOS_TYPE_HERMES)) return false; // Don't use this when using Hermes, it'll use the BCA fix instead... if (IOS_GetVersion() == 222 || IOS_GetVersion() == 223) return false; // Don't use this when using Hermes, it'll use the BCA fix instead...
if (memcmp("SMNE", (char *)0x80000000, 4) == 0) if (memcmp("SMNE", (char *)0x80000000, 4) == 0)
{ {
@ -290,8 +274,6 @@ bool NewSuperMarioBrosPatch(void *Address, int Size)
void gamepatches(void * dst, int len, u8 videoSelected, u8 patchcountrystring, u8 vipatch, u8 cheat) { void gamepatches(void * dst, int len, u8 videoSelected, u8 patchcountrystring, u8 vipatch, u8 cheat) {
PretendThereIsADiscInTheDrive(dst, len);
GXRModeObj** table = NULL; GXRModeObj** table = NULL;
if (videoSelected == 5) // patch if (videoSelected == 5) // patch
@ -320,15 +302,14 @@ void gamepatches(void * dst, int len, u8 videoSelected, u8 patchcountrystring, u
Search_and_patch_Video_Modes(dst, len, table); Search_and_patch_Video_Modes(dst, len, table);
} }
if(cheat)
dogamehooks(dst,len); dogamehooks(dst,len);
if (vipatch) //if (vipatch)//moved to degamehooks()
vidolpatcher(dst,len); // vidolpatcher(dst,len);
/*LANGUAGE PATCH - FISHEARS*/ /*LANGUAGE PATCH - FISHEARS*/
langpatcher(dst,len); //langpatcher(dst,len);//moved to degamehooks()
/*Thanks to WiiPower*/ /*Thanks to WiiPower*/
if (patchcountrystring == 1) if (patchcountrystring == 1)
@ -347,7 +328,7 @@ void gamepatches(void * dst, int len, u8 videoSelected, u8 patchcountrystring, u
} }
s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8 patchcountrystring, u8 error002fix, u8 alternatedol, u32 alternatedoloffset, u32 rtrn) { s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8 patchcountrystring, u8 error002fix, u8 alternatedol, u32 alternatedoloffset) {
app_entry appldr_entry; app_entry appldr_entry;
app_init appldr_init; app_init appldr_init;
app_main appldr_main; app_main appldr_main;
@ -355,8 +336,7 @@ s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8
u32 appldr_len; u32 appldr_len;
s32 ret; s32 ret;
gprintf("Apploader_Run( %p, %d, %d, %d, %d, %d, %d, %d, %08x )\n", \ gprintf("\nApploader_Run() started");
entry, cheat, videoSelected, vipatch, patchcountrystring, error002fix, alternatedol, alternatedoloffset, rtrn );
//u32 geckoattached = usb_isgeckoalive(EXI_CHANNEL_1); //u32 geckoattached = usb_isgeckoalive(EXI_CHANNEL_1);
//if (geckoattached)usb_flush(EXI_CHANNEL_1); //if (geckoattached)usb_flush(EXI_CHANNEL_1);
@ -382,7 +362,7 @@ s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8
appldr_entry(&appldr_init, &appldr_main, &appldr_final); appldr_entry(&appldr_init, &appldr_main, &appldr_final);
/* Initialize apploader */ /* Initialize apploader */
appldr_init( gprintf ); appldr_init(__noprint);
if (error002fix!=0) { if (error002fix!=0) {
/* ERROR 002 fix (thanks to WiiPower for sharing this)*/ /* ERROR 002 fix (thanks to WiiPower for sharing this)*/
@ -390,9 +370,6 @@ s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8
// *(u32 *)0x80003140 = *(u32 *)0x80003188; // *(u32 *)0x80003140 = *(u32 *)0x80003188;
} }
u32 dolStart = 0x90000000;
u32 dolEnd = 0x0;
for (;;) { for (;;) {
void *dst = NULL; void *dst = NULL;
int len = 0, offset = 0; int len = 0, offset = 0;
@ -405,21 +382,9 @@ s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8
/* Read data from DVD */ /* Read data from DVD */
WDVD_Read(dst, len, (u64)(offset << 2)); WDVD_Read(dst, len, (u64)(offset << 2));
if( !alternatedol )gamepatches(dst, len, videoSelected, patchcountrystring, vipatch, cheat); gamepatches(dst, len, videoSelected, patchcountrystring, vipatch, cheat);
DCFlushRange(dst, len); DCFlushRange(dst, len);
if( (u32)dst < dolStart )dolStart = (u32)dst;
if( (u32)dst + len > dolEnd ) dolEnd = (u32)dst + len;
}
//this patch should be run on the entire dol at 1 time
if( !alternatedol && rtrn)
{
if( PatchReturnTo( (u32*)dolStart, dolEnd - dolStart , rtrn) )
{
//gprintf("return-to patched\n" );
DCFlushRange( (u32*)dolStart, dolEnd - dolStart );
}
} }
*entry = appldr_final(); *entry = appldr_final();
@ -437,11 +402,8 @@ s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8
DCFlushRange(dolbuffer, dollen); DCFlushRange(dolbuffer, dollen);
gamepatches(dolbuffer, dollen, videoSelected, patchcountrystring, vipatch, cheat); gamepatches(dolbuffer, dollen, videoSelected, patchcountrystring, vipatch, cheat);
if( PatchReturnTo( (u32*)dolStart, dolEnd - dolStart , rtrn ) )
{
//gprintf("return-to patched\n" );
DCFlushRange(dolbuffer, dollen); DCFlushRange(dolbuffer, dollen);
}
/* Set entry point from apploader */ /* Set entry point from apploader */
*entry = (entry_point) load_dol_image(dolbuffer); *entry = (entry_point) load_dol_image(dolbuffer);
@ -455,7 +417,7 @@ s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8
FST_ENTRY *fst = (FST_ENTRY *)*(u32 *)0x80000038; FST_ENTRY *fst = (FST_ENTRY *)*(u32 *)0x80000038;
*entry = (entry_point) Load_Dol_from_disc(fst[alternatedoloffset].fileoffset, videoSelected, patchcountrystring, vipatch, cheat, rtrn ); *entry = (entry_point) Load_Dol_from_disc(fst[alternatedoloffset].fileoffset, videoSelected, patchcountrystring, vipatch, cheat);
if (*entry == 0) if (*entry == 0)
SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0); SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);

View File

@ -9,8 +9,8 @@ extern "C" {
typedef void (*entry_point)(void); typedef void (*entry_point)(void);
/* Prototypes */ /* Prototypes */
s32 Apploader_Run(entry_point *, u8, u8, u8, u8, u8, u8, u32, u32); s32 Apploader_Run(entry_point *, u8, u8, u8, u8, u8, u8, u32);
void gamepatches(void * dst, int len, u8 videoSelected, u8 patchcountrystring, u8 vipatch, u8 cheat ); void gamepatches(void * dst, int len, u8 videoSelected, u8 patchcountrystring, u8 vipatch, u8 cheat);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -8,15 +8,13 @@
#include "patches/fst.h" #include "patches/fst.h"
#include "apploader.h" #include "apploader.h"
#include "disc.h" #include "disc.h"
#include "video.h"
#include "wdvd.h" #include "wdvd.h"
#include "alternatedol.h" #include "alternatedol.h"
#include "memory.h" #include "memory.h"
#include "wbfs.h" #include "wbfs.h"
#include "gecko.h" #include "../gecko.h"
#include "fatmounter.h" #include "../fatmounter.h"
#include "sys.h"
#include "frag.h"
#include "usbstorage2.h"
/* Constants */ /* Constants */
#define PTABLE_OFFSET 0x40000 #define PTABLE_OFFSET 0x40000
@ -242,7 +240,6 @@ s32 Disc_Wait(void) {
} }
s32 Disc_SetUSB(const u8 *id) { s32 Disc_SetUSB(const u8 *id) {
if (is_ios_type(IOS_TYPE_HERMES)) {
u32 part = 0; u32 part = 0;
if (wbfs_part_fs) { if (wbfs_part_fs) {
part = wbfs_part_lba; part = wbfs_part_lba;
@ -250,28 +247,8 @@ s32 Disc_SetUSB(const u8 *id) {
part = wbfs_part_idx ? wbfs_part_idx - 1 : 0; part = wbfs_part_idx ? wbfs_part_idx - 1 : 0;
} }
int ret;
if (id && *id) {
ret = set_frag_list((u8 *) id);
} else {
ret = USBStorage_WBFS_SetFragList(NULL, 0);
}
if (ret) {
return ret;
}
/* Set USB mode */ /* Set USB mode */
return WDVD_SetUSBMode(id, part); return WDVD_SetUSBMode(id, part);
}
if (WBFS_DEVICE_USB && wbfs_part_fs) {
gprintf("Setting frag list for wanin\n");
return set_frag_list((u8 *) id);
}
gprintf("Setting disc usb thing for wanin\n");
return WDVD_SetWBFSMode(WBFS_DEVICE_USB, (u8 *) id);
} }
s32 Disc_ReadHeader(void *outbuf) { s32 Disc_ReadHeader(void *outbuf) {
@ -296,7 +273,7 @@ s32 Disc_IsWii(void) {
return 0; return 0;
} }
s32 Disc_BootPartition(u64 offset, u8 videoselected, u8 cheat, u8 vipatch, u8 patchcountrystring, u8 error002fix, u8 alternatedol, u32 alternatedoloffset, u32 rtrn) { s32 Disc_BootPartition(u64 offset, u8 videoselected, u8 cheat, u8 vipatch, u8 patchcountrystring, u8 error002fix, u8 alternatedol, u32 alternatedoloffset) {
entry_point p_entry; entry_point p_entry;
s32 ret; s32 ret;
@ -314,7 +291,7 @@ s32 Disc_BootPartition(u64 offset, u8 videoselected, u8 cheat, u8 vipatch, u8 pa
__Disc_SetLowMem(); __Disc_SetLowMem();
/* Run apploader */ /* Run apploader */
ret = Apploader_Run(&p_entry, cheat, videoselected, vipatch, patchcountrystring, error002fix, alternatedol, alternatedoloffset, rtrn); ret = Apploader_Run(&p_entry, cheat, videoselected, vipatch, patchcountrystring, error002fix, alternatedol, alternatedoloffset);
if (ret < 0) if (ret < 0)
return ret; return ret;
@ -388,7 +365,7 @@ s32 Disc_BootPartition(u64 offset, u8 videoselected, u8 cheat, u8 vipatch, u8 pa
return 0; return 0;
} }
s32 Disc_WiiBoot(u8 videoselected, u8 cheat, u8 vipatch, u8 patchcountrystring, u8 error002fix, u8 alternatedol, u32 alternatedoloffset, u32 rtrn) { s32 Disc_WiiBoot(u8 videoselected, u8 cheat, u8 vipatch, u8 patchcountrystring, u8 error002fix, u8 alternatedol, u32 alternatedoloffset) {
u64 offset; u64 offset;
s32 ret; s32 ret;
@ -398,7 +375,7 @@ s32 Disc_WiiBoot(u8 videoselected, u8 cheat, u8 vipatch, u8 patchcountrystring,
return ret; return ret;
/* Boot partition */ /* Boot partition */
return Disc_BootPartition(offset, videoselected, cheat, vipatch, patchcountrystring, error002fix, alternatedol, alternatedoloffset, rtrn); return Disc_BootPartition(offset, videoselected, cheat, vipatch, patchcountrystring, error002fix, alternatedol, alternatedoloffset);
} }

View File

@ -47,8 +47,8 @@ extern "C" {
s32 Disc_SetUSB(const u8 *); s32 Disc_SetUSB(const u8 *);
s32 Disc_ReadHeader(void *); s32 Disc_ReadHeader(void *);
s32 Disc_IsWii(void); s32 Disc_IsWii(void);
s32 Disc_BootPartition(u64, u8, u8, u8, u8, u8, u8, u32, u32); s32 Disc_BootPartition(u64, u8, u8, u8, u8, u8, u8, u32);
s32 Disc_WiiBoot(u8, u8, u8, u8, u8, u8, u32, u32); s32 Disc_WiiBoot(u8, u8, u8, u8, u8, u8, u32);
s32 __Disc_FindPartition(u64 *outbuf); s32 __Disc_FindPartition(u64 *outbuf);
void PatchCountryStrings(void *Address, int Size); void PatchCountryStrings(void *Address, int Size);
s32 __Disc_FindPartition(u64 *outbuf); s32 __Disc_FindPartition(u64 *outbuf);

View File

@ -11,9 +11,6 @@
#include "usbstorage2.h" #include "usbstorage2.h"
#include "frag.h" #include "frag.h"
#include "utils.h" #include "utils.h"
#include "sys.h"
#include "wdvd.h"
#include "gecko.h"
FragList *frag_list = NULL; FragList *frag_list = NULL;
@ -155,31 +152,27 @@ int set_frag_list(u8 *id)
{ {
if (wbfs_part_fs == PART_FS_WBFS) return 0; if (wbfs_part_fs == PART_FS_WBFS) return 0;
if (frag_list == NULL) { if (frag_list == NULL) {
if (wbfs_part_fs == PART_FS_FAT) {
// fall back to old fat method
// printf("FAT: fallback to old method\n");
return 0;
}
// ntfs has no fallback, return error
return -1; return -1;
} }
// (+1 for header which is same size as fragment) // (+1 for header which is same size as fragment)
int size = sizeof(Fragment) * (frag_list->num + 1); int size = sizeof(Fragment) * (frag_list->num + 1);
int ret; int ret = USBStorage_WBFS_SetFragList(frag_list, size);
DCFlushRange(frag_list, size);
if (is_ios_type(IOS_TYPE_HERMES)) {
ret = USBStorage_WBFS_SetFragList(frag_list, size);
} else {
gprintf("Calling WDVD_SetFragList\n");
ret = WDVD_SetFragList(wbfsDev, frag_list, size);
}
if (ret) { if (ret) {
// printf("set_frag: %d\n", ret);
return ret; return ret;
} }
// verify id matches // verify id matches
char discid[8]; char discid[8];
memset(discid, 0, sizeof(discid)); memset(discid, 0, sizeof(discid));
if (is_ios_type(IOS_TYPE_HERMES)) { ret = USBStorage_WBFS_Read(0, 6, discid);
ret = USBStorage_WBFS_Read(0, 8, discid); return 0;
} else {
ret = WDVD_UnencryptedRead(discid, 8, 0);
}
return (memcmp(id, discid, 6) != 0) ? -1 : 0;
} }

View File

@ -50,8 +50,8 @@ distribution.
#define USB_IOCTL_WBFS_READ_DISC (WBFS_BASE+0x2) #define USB_IOCTL_WBFS_READ_DISC (WBFS_BASE+0x2)
#define USB_IOCTL_WBFS_READ_DIRECT_DISC (WBFS_BASE+0x3) #define USB_IOCTL_WBFS_READ_DIRECT_DISC (WBFS_BASE+0x3)
#define USB_IOCTL_WBFS_STS_DISC (WBFS_BASE+0x4) #define USB_IOCTL_WBFS_STS_DISC (WBFS_BASE+0x4)
#define USB_IOCTL_WBFS_SET_DEVICE (WBFS_BASE+0x14) #define USB_IOCTL_WBFS_SET_DEVICE (WBFS_BASE+0x50)
#define USB_IOCTL_WBFS_SET_FRAGLIST (WBFS_BASE+0x15) #define USB_IOCTL_WBFS_SET_FRAGLIST (WBFS_BASE+0x51)
#define UMS_HEAPSIZE 0x1000 //0x10000 #define UMS_HEAPSIZE 0x1000 //0x10000

View File

@ -11,6 +11,7 @@
#include "gecko.h" #include "gecko.h"
Wbfs *current = NULL; Wbfs *current = NULL;
#define DEBUG_WBFS
/* WBFS device */ /* WBFS device */
s32 wbfsDev = WBFS_MIN_DEVICE; s32 wbfsDev = WBFS_MIN_DEVICE;
@ -56,11 +57,20 @@ s32 WBFS_OpenPart(u32 part_fs, u32 part_idx, u32 part_lba, u32 part_size, char *
if (part_fs == PART_FS_FAT) { if (part_fs == PART_FS_FAT) {
current = new Wbfs_Fat(wbfsDev, part_lba, part_size); current = new Wbfs_Fat(wbfsDev, part_lba, part_size);
strcpy(wbfs_fs_drive, "USB:"); strcpy(wbfs_fs_drive, "USB:");
#ifdef DEBUG_WBFS
gprintf("\n\tCreated WBFS_Fat instance at lba: %d of size %d", part_lba, part_size);
#endif
} else if (part_fs == PART_FS_NTFS) { } else if (part_fs == PART_FS_NTFS) {
current = new Wbfs_Ntfs(wbfsDev, part_lba, part_size); current = new Wbfs_Ntfs(wbfsDev, part_lba, part_size);
strcpy(wbfs_fs_drive, "NTFS:"); strcpy(wbfs_fs_drive, "NTFS:");
#ifdef DEBUG_WBFS
gprintf("\n\tCreated WBFS_Ntfs instance at lba: %d of size %d", part_lba, part_size);
#endif
} else { } else {
current = new Wbfs_Wbfs(wbfsDev, part_lba, part_size); current = new Wbfs_Wbfs(wbfsDev, part_lba, part_size);
#ifdef DEBUG_WBFS
gprintf("\n\tCreated WBFS_Wbfs instance at lba: %d of size %d", part_lba, part_size);
#endif
} }
if (current->Open()) if (current->Open())
{ {

View File

@ -366,6 +366,9 @@ s32 Wbfs_Fat::GetHeadersCount()
dir_iter = diropen(path); dir_iter = diropen(path);
if (!dir_iter) return 0; if (!dir_iter) return 0;
dir_iter = diropen(path);
if (!dir_iter) return 0;
while (dirnext(dir_iter, fname, &st) == 0) { while (dirnext(dir_iter, fname, &st) == 0) {
//printf("found: %s\n", fname); Wpad_WaitButtonsCommon(); //printf("found: %s\n", fname); Wpad_WaitButtonsCommon();
if ((char)fname[0] == '.') continue; if ((char)fname[0] == '.') continue;

View File

@ -17,7 +17,6 @@
#define IOCTL_DI_OFFSET 0xD9 #define IOCTL_DI_OFFSET 0xD9
#define IOCTL_DI_DISC_BCA 0xDA #define IOCTL_DI_DISC_BCA 0xDA
#define IOCTL_DI_STOPMOTOR 0xE3 #define IOCTL_DI_STOPMOTOR 0xE3
#define IOCTL_DI_SETWBFSMODE 0xF4
#define IOCTL_DI_SETUSBMODE 0xF4 #define IOCTL_DI_SETUSBMODE 0xF4
#define IOCTL_DI_DISABLERESET 0xF6 #define IOCTL_DI_DISABLERESET 0xF6
@ -25,10 +24,6 @@
#define DI_SETWBFSMODE 0xfe #define DI_SETWBFSMODE 0xfe
#define DI_SETOFFSETBASE 0xf1 #define DI_SETOFFSETBASE 0xf1
#define IOCTL_DI_SETFRAG 0xF9
#define IOCTL_DI_GETMODE 0xFA
#define IOCTL_DI_HELLO 0xFB
/* Variables */ /* Variables */
static u32 inbuf[8] ATTRIBUTE_ALIGN(32); static u32 inbuf[8] ATTRIBUTE_ALIGN(32);
static u32 outbuf[8] ATTRIBUTE_ALIGN(32); static u32 outbuf[8] ATTRIBUTE_ALIGN(32);
@ -311,27 +306,6 @@ s32 WDVD_DisableReset(u8 val) {
return (ret == 1) ? 0 : -ret; return (ret == 1) ? 0 : -ret;
} }
s32 WDVD_SetWBFSMode(u32 mode, u8 *discid)
{
s32 ret;
memset(inbuf, 0, sizeof(inbuf));
/* Set USB mode */
inbuf[0] = IOCTL_DI_SETWBFSMODE << 24;
inbuf[1] = mode;
/* Copy disc ID */
if (discid)
memcpy(&inbuf[2], discid, 6);
ret = IOS_Ioctl(di_fd, IOCTL_DI_SETWBFSMODE, inbuf, sizeof(inbuf), outbuf, sizeof(outbuf));
if (ret < 0)
return ret;
return (ret == 1) ? 0 : -ret;
}
/** Hermes **/ /** Hermes **/
s32 WDVD_SetUSBMode(const u8 *id, s32 partition) { s32 WDVD_SetUSBMode(const u8 *id, s32 partition) {
s32 ret; s32 ret;
@ -345,8 +319,10 @@ s32 WDVD_SetUSBMode(const u8 *id, s32 partition) {
/* Copy ID */ /* Copy ID */
if (id) { if (id) {
memcpy(&inbuf[2], id, 6); memcpy(&inbuf[2], id, 6);
if (IOS_GetVersion() != 249) {
inbuf[5] = partition; inbuf[5] = partition;
} }
}
ret = IOS_Ioctl(di_fd, IOCTL_DI_SETUSBMODE, inbuf, sizeof(inbuf), outbuf, sizeof(outbuf)); ret = IOS_Ioctl(di_fd, IOCTL_DI_SETUSBMODE, inbuf, sizeof(inbuf), outbuf, sizeof(outbuf));
if (ret!=1) { if (ret!=1) {
@ -378,25 +354,3 @@ s32 WDVD_Read_Disc_BCA(void *buf)
return (ret == 1) ? 0 : -ret; return (ret == 1) ? 0 : -ret;
} }
s32 WDVD_SetFragList(int device, void *fraglist, int size)
{
s32 ret;
memset(inbuf, 0, sizeof(inbuf));
memset(outbuf, 0, sizeof(outbuf));
/* Set FRAG mode */
inbuf[0] = IOCTL_DI_SETFRAG << 24;
inbuf[1] = device;
inbuf[2] = (u32)fraglist;
inbuf[3] = size;
DCFlushRange(fraglist, size);
ret = IOS_Ioctl(di_fd, IOCTL_DI_SETFRAG, inbuf, sizeof(inbuf), outbuf, sizeof(outbuf));
if (ret < 0)
return ret;
return (ret == 1) ? 0 : -ret;
}

View File

@ -22,10 +22,8 @@ extern "C" {
s32 WDVD_WaitForDisc(void); s32 WDVD_WaitForDisc(void);
s32 WDVD_GetCoverStatus(u32 *); s32 WDVD_GetCoverStatus(u32 *);
s32 WDVD_DisableReset(u8); s32 WDVD_DisableReset(u8);
s32 WDVD_SetWBFSMode(u32, u8 *);
s32 WDVD_SetUSBMode(const u8 *, s32 partition); s32 WDVD_SetUSBMode(const u8 *, s32 partition);
s32 WDVD_Read_Disc_BCA(void *buf); s32 WDVD_Read_Disc_BCA(void *buf);
s32 WDVD_SetFragList(int device, void *fraglist, int size);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -13,7 +13,7 @@
void InitVideo (); void InitVideo ();
void InitVideodebug(); void InitVideodebug();
extern "C" void StopGX(); void StopGX();
void ResetVideo_Menu(); void ResetVideo_Menu();
void Menu_Render(); void Menu_Render();
void Menu_DrawImg(f32 xpos, f32 ypos, f32 zpos, f32 width, f32 height, u8 data[], void Menu_DrawImg(f32 xpos, f32 ypos, f32 zpos, f32 width, f32 height, u8 data[],
@ -21,7 +21,7 @@ void Menu_DrawImg(f32 xpos, f32 ypos, f32 zpos, f32 width, f32 height, u8 data[]
void Menu_DrawTPLImg(f32 xpos, f32 ypos, f32 zpos, f32 width, f32 height, GXTexObj *texObj, void Menu_DrawTPLImg(f32 xpos, f32 ypos, f32 zpos, f32 width, f32 height, GXTexObj *texObj,
f32 degrees, f32 scaleX, f32 scaleY, u8 alpha, int XX1, int YY1,int XX2, int YY2,int XX3, int YY3,int XX4, int YY4); f32 degrees, f32 scaleX, f32 scaleY, u8 alpha, int XX1, int YY1,int XX2, int YY2,int XX3, int YY3,int XX4, int YY4);
void Menu_DrawRectangle(f32 x, f32 y, f32 width, f32 height, GXColor color, u8 filled); void Menu_DrawRectangle(f32 x, f32 y, f32 width, f32 height, GXColor color, u8 filled);
extern "C" s32 TakeScreenshot(const char *path); s32 TakeScreenshot(const char *path);
extern int screenheight; extern int screenheight;
extern int screenwidth; extern int screenwidth;

View File

@ -945,52 +945,5 @@ out:
gprintf(" = %d",ret); gprintf(" = %d",ret);
return ret; return ret;
} }
#define TITLE_LOWER(x) ((u32)(x))
u32 GetReturnToTitle()
{
u32 tmdsize;
u64 tid = 0;
u64 *list;
u32 titlecount;
s32 ret;
u32 i;
ret = ES_GetNumTitles(&titlecount);
if(ret < 0)
return 0;
list = memalign(32, titlecount * sizeof(u64) + 32);
ret = ES_GetTitles(list, titlecount);
if(ret < 0) {
free(list);
return 0;
}
for(i=0; i<titlecount; i++) {
if (list[i]==TITLE_ID(0x00010001,0x554c4e52)
|| list[i]==TITLE_ID(0x00010001,0x554e454f))
{
tid = list[i];
break;
}
}
for(i=0; i<titlecount && !tid ; i++) {
if (list[i]==TITLE_ID(0x00010001,0x4A4F4449)
|| list[i]==TITLE_ID(0x00010001,0x48415858))
{
tid = list[i];
break;
}
}
free(list);
if(!tid)
return 0;
if(ES_GetStoredTMDSize(tid, &tmdsize) < 0)
return 0;
return TITLE_LOWER(tid);
}

View File

@ -42,7 +42,7 @@ extern "C" {
s32 getNameBN(char *name, u64 id); s32 getNameBN(char *name, u64 id);
// Get the name of a title from its 00000000.app in NAND // Get the name of a title from its 00000000.app in NAND
s32 getName00(char *name, u64 id, int lang); s32 getName00(char *name, u64 id, int lang = 2);
// Get string representation of lower title id // Get string representation of lower title id
char *titleText(u32 kind, u32 title); char *titleText(u32 kind, u32 title);
@ -70,8 +70,6 @@ s32 WII_BootHBC();
//get the rev of a ISO and such without having to load it //get the rev of a ISO and such without having to load it
s32 getIOSrev(u64 req); s32 getIOSrev(u64 req);
u32 GetReturnToTitle();
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif