- 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">
<name> USB Loader GX</name>
<coder>USB Loader GX Team</coder>
<version>1.0 r930</version>
<release_date>201005251241</release_date>
<version>1.0 r931</version>
<release_date>201005290726</release_date>
<short_description>Loads games from USB-devices</short_description>
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.
The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller.

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: David Jelinek (djelinek@hotmail.com) \n"
"Language-Team: r823 - last version on http://djelinek.sweb.cz/_USBLoderGX/czech.lang \n"
@ -606,6 +606,9 @@ msgstr "Nemecky"
msgid "HOME Menu"
msgstr "Hlavní menu"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "Cesta pro Homebrew aplikace"
@ -1162,6 +1165,9 @@ msgstr "USB zarízení nenalezeno"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Nelze otevrít WAD, který byl nyní stažen (%s)."
@ -1368,3 +1374,36 @@ msgstr "z "
msgid "seconds left"
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.
# danish.lang - r921
# danish.lang - r916
# don't delete/change this line (é).
msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: dorf[dk]\n"
"Language-Team: dorf[dk]\n"
@ -606,6 +606,9 @@ msgstr "Tysk"
msgid "HOME Menu"
msgstr ""
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "Sti til homebrew-programmer"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Opdateringen lykkedes"
msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Opdatering lykkedes takket www.techjawa.com"
msgstr ""
msgid "Successfully deleted:"
msgstr "Sletningen lykkedes:"
@ -1162,6 +1165,9 @@ msgstr "USB-enhed ikke fundet"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Ikke i stand til at åbne den WAD, der blev downloadet (%s)."
@ -1368,3 +1374,33 @@ msgstr "af"
msgid "seconds left"
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.
# dutch.lang - r929
# dutch.lang - r912
# don't delete/change this line (é).
msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-11 06:03+0200\n"
"PO-Revision-Date: 2010-04-12 07:37+0100\n"
"POT-Creation-Date: 2010-03-16 16:17+0100\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: glowy\n"
"Language-Team: tj_cool, glowy\n"
"MIME-Version: 1.0\n"
@ -606,6 +606,9 @@ msgstr "Duits"
msgid "HOME Menu"
msgstr ""
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "Locatie homebrew apps"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Met succes geüpdate!"
msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Met succes geüpdate met dank aan www.techjawa.com"
msgstr ""
msgid "Successfully deleted:"
msgstr "Met succes verwijderd:"
@ -1162,6 +1165,9 @@ msgstr "USB Apparaat niet gevonden"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Wad is gedownload maar kan niet worden geopend (%s)."
@ -1368,3 +1374,60 @@ msgstr "van"
msgid "seconds left"
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 ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: \n"
"Language-Team: \n"
@ -606,6 +606,9 @@ msgstr ""
msgid "HOME Menu"
msgstr ""
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr ""
@ -1162,6 +1165,9 @@ msgstr ""
msgid "USB Loader GX is protected"
msgstr ""
msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
msgstr ""
#, c-format
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: c64rmx\n"
"Language-Team: \n"
@ -606,6 +606,9 @@ msgstr "Saksa"
msgid "HOME Menu"
msgstr ""
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "Homebrew Apps polku"
@ -1162,6 +1165,9 @@ msgstr "USB-laitetta ei löytynyt"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Wadia (%s) jonka juuri latasit ei voitu avata."
@ -1368,3 +1374,24 @@ msgstr "josta"
msgid "seconds left"
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.
# French V13 r926
# French V12.8 r920
# don't delete/change this line (é).
msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: Kin8\n"
"Language-Team: Badablek, Amour, ikya & Kin8\n"
@ -606,6 +606,9 @@ msgstr "Allemand"
msgid "HOME Menu"
msgstr "Menu HOME"
msgid "Hermes CIOS"
msgstr "CIOS d'Hermès"
msgid "Homebrew Apps Path"
msgstr "Dossier Homebrew Apps"
@ -823,7 +826,7 @@ msgid "No USB Device found."
msgstr "Aucun périphérique USB trouvé."
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"
msgstr "Aucune selection de triche"
@ -850,7 +853,7 @@ msgid "Normal Covers"
msgstr "Jaquettes 2D"
msgid "Not Found"
msgstr "Non trouvé"
msgstr "Pas trouvé"
msgid "Not a DOL/ELF file."
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"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Ouverture du WAD impossible (%s)."
@ -1368,3 +1374,57 @@ msgstr "sur"
msgid "seconds left"
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.
# german.lang - r928
# german.lang - r913
# don't delete/change this line (é).
msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: ZEN.13\n"
"Language-Team: Snoozer, wishmasterf, Bertilax, ZEN.13\n"
@ -126,7 +126,7 @@ msgid "AUTO"
msgstr ""
msgid "All partitions"
msgstr "Alle Partitionen"
msgstr "alle Partitionen"
msgid "All the features of USB Loader GX are unlocked."
msgstr "Alle Funktionen des USB Loader GX sind jetzt freigeschaltet."
@ -135,7 +135,7 @@ msgid "Alternate DOL"
msgstr "Alternative DOL"
msgid "An Error occured"
msgstr "Ein Fehler ist aufgetreten."
msgstr "Ein Fehler ist aufgetreten"
msgid "Anti"
msgstr ""
@ -198,19 +198,19 @@ msgid "Boot/Standard"
msgstr "Bootstandard (cIOS)"
msgid "Boot?"
msgstr "Kanael starten?"
msgstr "Starten?"
msgid "Both"
msgstr "ID und Region"
msgstr "Beides (ID und Region)"
msgid "Can't be formatted"
msgstr "Kann nicht formatiert werden."
msgstr "Kann nicht formatiert werden"
msgid "Can't create directory"
msgstr "Verzeichnis kann nicht erstellt werden."
msgstr "Verzeichnis kann nicht erstellt werden"
msgid "Can't create file"
msgstr "Datei kann nicht erstellt werden."
msgstr "Datei kann nicht erstellt werden"
msgid "Can't delete:"
msgstr "Löschen fehlgeschlagen:"
@ -231,16 +231,16 @@ msgid "Checking existing artwork"
msgstr "Prüfe existierende Artworks"
msgid "Checking for Updates"
msgstr "Suche nach Updates"
msgstr "Suche nach Aktualisierungen"
msgid "Click to Download Covers"
msgstr "Cover herunterladen"
msgstr "Cover herunterzuladen"
msgid "Click to change game ID"
msgstr "Spiel ID ändern"
msgid "Clock"
msgstr "Uhrformat"
msgstr "Uhr"
msgid "Close"
msgstr " Schließen"
@ -310,7 +310,7 @@ msgid "Could not set USB."
msgstr "USB konnte nicht gesetzt werden."
msgid "Cover Download"
msgstr "Welche Cover herunterladen?"
msgstr "Welche Cover heruntergeladen?"
msgid "Cover Path Changed"
msgstr "Pfad geändert"
@ -349,7 +349,7 @@ msgid "Delete"
msgstr "Löschen"
msgid "Delete ?"
msgstr "Wirklich löschen?"
msgstr "Löschen ?"
msgid "Delete Cheat GCT"
msgstr "Lösche GCT Cheatdatei"
@ -391,7 +391,7 @@ msgid "DiskFlip"
msgstr "DiscFlip"
msgid "Display"
msgstr "Spielinfos anzeigen"
msgstr "Anzeige"
msgid "Display as a carousel"
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?"
msgid "Do you wish to update/download all language files?"
msgstr "Alle Sprachdateien aktualisieren?"
msgstr "Alle Sprachdateien aktualisieren/herunterladen?"
msgid "Done!"
msgstr "Fertig!"
@ -445,13 +445,13 @@ msgid "Download Now"
msgstr "Herunterladen"
msgid "Download failed."
msgstr "Download fehlgeschlagen"
msgstr "Download fehlgeschlagen."
msgid "Download finished"
msgstr "Download abgeschlossen"
msgid "Download request failed."
msgstr "Downloadanfrage fehlgeschlagen"
msgstr "Downloadanfrage fehlgeschlagen."
msgid "Downloading"
msgstr "Dateien werden heruntergeladen"
@ -523,7 +523,7 @@ msgid "Feb"
msgstr "Februar"
msgid "File not found."
msgstr "Datei nicht gefunden"
msgstr "Datei nicht gefunden."
msgid "Finishing installation... Ok!"
msgstr "Beende Installation... OK!"
@ -547,7 +547,7 @@ msgid "French"
msgstr "Französisch"
msgid "Full Shutdown"
msgstr "WiiConnect24 aus"
msgstr "Komplett"
msgid "GAMEID_Gamename"
msgstr "SPIELID_Spielname"
@ -592,7 +592,7 @@ msgid "Game is already installed:"
msgstr "Spiel ist bereits installiert:"
msgid "Game partition"
msgstr "Spielpartition"
msgstr "nur Spiel"
msgid "Gamename [GAMEID]"
msgstr "Spielname [SPIELID]"
@ -606,8 +606,11 @@ msgstr "Deutsch"
msgid "HOME Menu"
msgstr "HOME Menü"
msgid "Hermes CIOS"
msgstr "cIOS 222/223"
msgid "Homebrew Apps Path"
msgstr "Homebrew Apps"
msgstr "Homebrew Anwedungen"
msgid "Homebrew Appspath changed"
msgstr "Pfad geändert"
@ -642,7 +645,7 @@ msgid "Insert Disk"
msgstr "Disc einlegen"
msgid "Insert a Wii Disc!"
msgstr "Eine Wii Disc einlegen!"
msgstr "Bitte eine Wii Disc einlegen!"
msgid "Insert an SD-Card to download images."
msgstr "SD Karte einlegen um Bilder herunterzuladen."
@ -751,16 +754,16 @@ msgid "Lock Console"
msgstr "Konsole sperren"
msgid "Locked"
msgstr "Gesperrt"
msgstr "gesperrt"
msgid "Loop Directory"
msgstr "Verzeichnis abspielen"
msgstr "Verzeichnis wiederholen"
msgid "Loop Music"
msgstr "Scheife"
msgstr "1 Titel wiederholen"
msgid "Loop Sound"
msgstr "Wiederholung"
msgstr "Wiederholen"
msgid "Mar"
msgstr "März"
@ -781,13 +784,13 @@ msgid "Mount DVD drive"
msgstr "Spiel starten"
msgid "Music Loop Mode"
msgstr "HGM Wiederholung"
msgstr "Wiederholungsmodus"
msgid "Music Volume"
msgstr "Musik Lautstärke"
msgid "Neither"
msgstr "Keine"
msgstr "Nichts"
msgid "Network init error"
msgstr "Netzwerkinitialisierungsfehler"
@ -796,7 +799,7 @@ msgid "New Disc Detected"
msgstr "Neu Disc im Laufwerk festgestellt"
msgid "Next"
msgstr "Weiter"
msgstr "Nächste"
msgid "No"
msgstr "Nein"
@ -805,7 +808,7 @@ msgid "No .dol or .elf files found."
msgstr "Keine .dol oder .elf Dateien gefunden."
msgid "No Cheatfile found"
msgstr "Keine Cheatdatei gefunden."
msgstr "Keine Cheatdatei gefunden"
msgid "No DOL file found on disc."
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"
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."
msgstr "Daten konnten nicht gelesen werden."
@ -835,7 +838,7 @@ msgid "No file missing!"
msgstr "Keine Datei fehlt!"
msgid "No new updates."
msgstr "Keine Updates verfügbar."
msgstr "Keine Aktualisierungen verfügbar."
msgid "No themes found on the site."
msgstr "Keine Themes auf der Seite gefunden."
@ -859,7 +862,7 @@ msgid "Not a WAD file."
msgstr "Das ist keine WAD Datei."
msgid "Not a Wii Disc"
msgstr "Keine Wii Disc."
msgstr "Das ist keine Wii Disc"
msgid "Not enough free memory."
msgstr "Nicht genügend freier Speicher."
@ -889,7 +892,7 @@ msgid "Official Site:"
msgstr "Offizielle Seite:"
msgid "Only Customs"
msgstr "nur Community"
msgstr "nur von der Community"
msgid "Only Original"
msgstr "nur Originale"
@ -925,7 +928,7 @@ msgid "Patch Country Strings"
msgstr "Country Strings patchen"
msgid "Pick from a list"
msgstr "Wähle aus der Liste"
msgstr "Wähle aus Liste"
msgid "Play Count"
msgstr "Spielzähler"
@ -934,7 +937,7 @@ msgid "Play Next"
msgstr "Nächster Titel"
msgid "Play Once"
msgstr "Einmal abspielen"
msgstr "nur einmal abspielen"
msgid "Play Previous"
msgstr "Vorheriger Titel"
@ -949,7 +952,7 @@ msgid "Power off the Wii"
msgstr "Wii ausschalten"
msgid "Prev"
msgstr "Zurück"
msgstr "Vorherige"
msgid "Prompts Buttons"
msgstr "Anzeige"
@ -961,7 +964,7 @@ msgid "Quick Boot"
msgstr "Schnelles Laden"
msgid "Random Directory Music"
msgstr "Zufällig"
msgstr "Zufällig aus gewähltem Verzeichnis"
msgid "Reading WAD data... Ok!"
msgstr "Lese WAD Daten... OK!"
@ -973,7 +976,7 @@ msgid "Released"
msgstr "Erschienen am"
msgid "Reload SD"
msgstr "SD Karte erneut laden"
msgstr "SD Karte erneut lesen"
msgid "Remove update"
msgstr "Update entfernen"
@ -991,7 +994,7 @@ msgid "Reset to standard BGM?"
msgstr "Auf Standard zurücksetzen?"
msgid "Restarting..."
msgstr "Starte neu..."
msgstr "Damit die neue Version benutzt werden kann, muss der Loader neu gestartet werden."
msgid "Return"
msgstr "Zurück"
@ -1048,7 +1051,7 @@ msgid "Shutdown System"
msgstr "System herunterfahren"
msgid "Shutdown to Idle"
msgstr "WiiConnect24 an"
msgstr "Stand By"
msgid "Sort alphabetically"
msgstr "Alphabetisch ordnen"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Erfolgreich aktualisiert"
msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Erfolgreich aktualisiert. Dank an: www.techjawa.com"
msgstr ""
msgid "Successfully deleted:"
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?"
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
msgid "The wad installation failed with error %ld"
@ -1154,13 +1157,16 @@ msgid "Tooltips"
msgstr ""
msgid "Transfer failed."
msgstr "Übertragung fehlgeschlagen"
msgstr "Übertragung fehlgeschlagen."
msgid "USB Device not found"
msgstr "USB Gerät nicht gefunden."
msgstr "USB Gerät nicht gefunden"
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
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."
msgid "Unlocked"
msgstr "Entsperrt"
msgstr "entsperrt"
msgid "Unsupported format, try to extract manually."
msgstr "Nicht unterstütztes Format. Versuch es manuell zu Entpacken."
msgid "Update"
msgstr ""
msgstr "Aktualisieren"
msgid "Update All"
msgstr "Alles"
@ -1203,7 +1209,7 @@ msgid "Update Files"
msgstr "Aktualisieren"
msgid "Update Path"
msgstr "Updates"
msgstr "Aktualisierungen"
msgid "Update Path changed."
msgstr "Pfad geändert"
@ -1212,7 +1218,7 @@ msgid "Update all Language Files"
msgstr "Sprachdateien aktualisieren"
msgid "Update failed"
msgstr "Update fehlgeschlagen"
msgstr "Aktualisierung fehlgeschlagen"
msgid "Update to"
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."
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"
msgstr "Du must eine Partition auswählen oder formatieren."
msgstr "Du must eine Partition auswählen oder formatieren"
#, c-format
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"
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"
msgstr "für die Veröffentlichung des USB Loader-Quellcodes"
@ -1368,3 +1374,48 @@ msgstr "von"
msgid "seconds left"
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 ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: Springdale\n"
"Language-Team: Tusk, Springdale\n"
@ -606,6 +606,9 @@ msgstr "Német"
msgid "HOME Menu"
msgstr "HOME Menü"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "Homebrew Útvonal"
@ -1162,6 +1165,9 @@ msgstr "USB Meghajtó nem található"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Az épp letöltött wad megnyitása nem sikerült (%s)."
@ -1368,3 +1374,36 @@ msgstr "./"
msgid "seconds left"
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.
# italian.lang - v61 - r926
# italian.lang - v60 - r913
# don't delete/change this line (é).
msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: Cambo \n"
"Language-Team: FoxeJoe, Cambo\n"
@ -606,6 +606,9 @@ msgstr "Tedesco"
msgid "HOME Menu"
msgstr "Menu HOME"
msgid "Hermes CIOS"
msgstr "cIOS di Hermes"
msgid "Homebrew Apps Path"
msgstr "Percorso Applic. Homebrew"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Aggiornamento Eseguito"
msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Aggiornamento Eseguito grazie a www.techjawa.com"
msgstr ""
msgid "Successfully deleted:"
msgstr "Eliminato con successo:"
@ -1162,6 +1165,9 @@ msgstr "Dispositivo USB non Trovato"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Non riesco ad aprire il wad da poco scaricato (%s)."
@ -1368,3 +1374,60 @@ msgstr "di"
msgid "seconds left"
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.
# japanese.lang - r924
# japanese.lang - r913
# don't delete/change this line (é).
msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: hosigumayuugi\n"
"Language-Team: hosigumayuugi\n"
@ -606,6 +606,9 @@ msgstr "ドイツ語"
msgid "HOME Menu"
msgstr "HOMEボタンメニュー"
msgid "Hermes CIOS"
msgstr "注意事項"
msgid "Homebrew Apps Path"
msgstr "Homebrewのパス"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "更新しました"
msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "更新しました www.techjawa.comに感謝!"
msgstr ""
msgid "Successfully deleted:"
msgstr "削除に成功しました"
@ -1162,6 +1165,9 @@ msgstr "USBデバイスを検出できませんでした"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "ダウンロード中のためWADを開けません (%s)."
@ -1368,3 +1374,51 @@ msgstr "中"
msgid "seconds left"
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 ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: nextos@korea.com\n"
"Language-Team: \n"
@ -606,6 +606,9 @@ msgstr "독일어"
msgid "HOME Menu"
msgstr "HOME 메뉴"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "홈브류 경로"
@ -1162,6 +1165,9 @@ msgstr "USB 장치가 없습니다."
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "방금 다운로드한 wad화일(%s)을 열수가 없음."
@ -1368,3 +1374,27 @@ msgstr "중"
msgid "seconds left"
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 ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: raschi\n"
"Language-Team: raschi\n"
@ -606,6 +606,9 @@ msgstr "Tysk"
msgid "HOME Menu"
msgstr "HOME Meny"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "Homebrew Apps sti"
@ -1162,6 +1165,9 @@ msgstr "USB enhet ikke funnet"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Kan ikke åpne nedlastet WAD fil (%s)."
@ -1368,3 +1374,36 @@ msgstr "av"
msgid "seconds left"
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 ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: ziom666 (zadania_prog@vp.pl)\n"
"Language-Team: \n"
@ -606,6 +606,9 @@ msgstr "niemiecki"
msgid "HOME Menu"
msgstr "Menu"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "Sciezka plikacji homebrew"
@ -1162,6 +1165,9 @@ msgstr "Nie znaleziono urzadzenia USB"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Nie udalo sie zainstalowac dopiero co pobranego pliku (%s)"
@ -1368,3 +1374,30 @@ msgstr "z"
msgid "seconds left"
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.
# portuguese_br.lang - r921
# portuguese_br.lang - r823
# don't delete/change this line (é).
msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: aniemotion\n"
"Language-Team: boto12, aniemotion\n"
"Last-Translator: boto12\n"
"Language-Team: boto12\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -126,7 +126,7 @@ msgid "AUTO"
msgstr ""
msgid "All partitions"
msgstr "Todas as Partições"
msgstr ""
msgid "All the features of USB Loader GX are unlocked."
msgstr "As configurações estão desbloqueadas."
@ -147,7 +147,7 @@ msgid "Apr"
msgstr "Abr"
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?"
msgstr "Tem certeza?"
@ -165,13 +165,13 @@ msgid "AutoPatch"
msgstr "Patch automático"
msgid "BCA Codes Path"
msgstr "Caminho do BCA Codes"
msgstr ""
msgid "BCA Codes Path changed"
msgstr "Caminho do BCA Codes alterado"
msgstr ""
msgid "BETA revisions"
msgstr "Revisões BETA"
msgstr ""
msgid "Back"
msgstr "Voltar"
@ -219,7 +219,7 @@ msgid "Cancel"
msgstr "Cancelar"
msgid "Change Play Path"
msgstr "Alterar Caminho para Play"
msgstr ""
msgid "Channels"
msgstr "Canais"
@ -409,7 +409,7 @@ msgid "Do you really want to delete:"
msgstr "Tem a certeza que quer eliminar o jogo:"
msgid "Do you want to apply it now?"
msgstr "Deseja aplicar agora?"
msgstr ""
msgid "Do you want to change language?"
msgstr "Deseja alterar o idioma?"
@ -475,10 +475,10 @@ msgid "ERROR:"
msgstr "ERRO:"
msgid "ERROR: Can't set up theme."
msgstr "ERRO: Impossível aplicar tema"
msgstr ""
msgid "Enable Parental Control"
msgstr "Ligar Controle de Pais"
msgstr ""
msgid "English"
msgstr "Inglês"
@ -508,7 +508,7 @@ msgid "Extracting files..."
msgstr "Extraindo arquivos..."
msgid "FAT: Use directories"
msgstr "FAT: Usar Diretórios"
msgstr ""
msgid "Failed formating"
msgstr "Falha ao formatar"
@ -565,7 +565,7 @@ msgid "GUI Settings"
msgstr "Definições de Interface"
msgid "GXtheme.cfg not found in any subfolder."
msgstr "GXtheme.cfg não encontrado em nenhuma subpasta"
msgstr ""
msgid "Game ID"
msgstr "ID do Jogo"
@ -583,7 +583,7 @@ msgid "Game Size"
msgstr "Tamanho do Jogo"
msgid "Game Sound Mode"
msgstr "Modo de Som do Jogo"
msgstr ""
msgid "Game Sound Volume"
msgstr "Volume dos Sons dos Jogos"
@ -592,10 +592,10 @@ msgid "Game is already installed:"
msgstr "Este jogo já está instalado:"
msgid "Game partition"
msgstr "Partição de Game"
msgstr ""
msgid "Gamename [GAMEID]"
msgstr "Nome do Jogo [GAMEID]"
msgstr ""
msgid "Games"
msgstr "Jogos"
@ -606,6 +606,9 @@ msgstr "Alemão"
msgid "HOME Menu"
msgstr "Menu Inicial"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "Pasta Apps Homebrew"
@ -657,7 +660,7 @@ msgid "Install"
msgstr "Instalar"
msgid "Install 1:1 Copy"
msgstr "Instalar 1:1 Copy"
msgstr ""
msgid "Install Error!"
msgstr "Erro de Instalação!"
@ -666,7 +669,7 @@ msgid "Install a game"
msgstr "Instalar um jogo"
msgid "Install partitions"
msgstr "Instalare partições"
msgstr ""
msgid "Installing content... Ok!"
msgstr "Instalando conteúdo... Ok!"
@ -684,7 +687,7 @@ msgid "Installing wad"
msgstr "Instalando wad"
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."
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"
msgid "Loop Directory"
msgstr "Repitir Diretório"
msgstr ""
msgid "Loop Music"
msgstr "Repitir Música"
msgstr ""
msgid "Loop Sound"
msgstr "Repitir Som"
msgstr ""
msgid "Mar"
msgstr ""
msgid "Mark new games"
msgstr "Marcar games novos"
msgstr ""
msgid "May"
msgstr "Mai"
@ -781,7 +784,7 @@ msgid "Mount DVD drive"
msgstr "Carregar leitor DVD"
msgid "Music Loop Mode"
msgstr "Modo Repetição de Música"
msgstr ""
msgid "Music Volume"
msgstr "Volume da Música"
@ -841,7 +844,7 @@ msgid "No themes found on the site."
msgstr "Nenhum tema encontrado no site"
msgid "None"
msgstr "Nenhum"
msgstr ""
msgid "Normal"
msgstr ""
@ -856,7 +859,7 @@ msgid "Not a DOL/ELF file."
msgstr "Não é um arquivo DOL/ELF válido."
msgid "Not a WAD file."
msgstr "Não é um arquivo Wad"
msgstr ""
msgid "Not a Wii Disc"
msgstr "Não é um Disco do Wii"
@ -904,7 +907,7 @@ msgid "Parental Control"
msgstr "Controle de Pais"
msgid "Parental Control disabled"
msgstr "Controle dos Pais desligado"
msgstr ""
msgid "Partition"
msgstr "Partição"
@ -931,16 +934,16 @@ msgid "Play Count"
msgstr "Vezes jogadas"
msgid "Play Next"
msgstr "Tocar Próximo"
msgstr ""
msgid "Play Once"
msgstr "Tocar uma só vez"
msgstr ""
msgid "Play Previous"
msgstr "Tocar Anteior"
msgstr ""
msgid "Playing Music:"
msgstr "Tocando a Música:"
msgstr ""
msgid "Please wait..."
msgstr "Por favor aguarde..."
@ -961,7 +964,7 @@ msgid "Quick Boot"
msgstr "Inicialização Rápida"
msgid "Random Directory Music"
msgstr "Diretótio Aleatório de Músicas"
msgstr ""
msgid "Reading WAD data... Ok!"
msgstr "Lendo dados do WAD... Ok!"
@ -976,19 +979,19 @@ msgid "Reload SD"
msgstr "Atualizar do cartão SD"
msgid "Remove update"
msgstr "Remover atualização"
msgstr ""
msgid "Rename Game on WBFS"
msgstr "Alterar nome do jogo na partição WBFS"
msgid "Reset BG Music"
msgstr "Resetar Música de Fundo"
msgstr ""
msgid "Reset Playcounter"
msgstr "Limpar Contagem"
msgid "Reset to standard BGM?"
msgstr "Resetar para Música de Fundo padrão?"
msgstr ""
msgid "Restarting..."
msgstr "O Wii irá reiniciar"
@ -1027,7 +1030,7 @@ msgid "Screensaver"
msgstr "Proteção de tela"
msgid "Select"
msgstr "selecionar"
msgstr ""
msgid "Select a DOL"
msgstr "Selecionar um DOL"
@ -1063,10 +1066,10 @@ msgid "Sound"
msgstr "Audio"
msgid "Sound+BGM"
msgstr "Som+Music de Fundo"
msgstr ""
msgid "Sound+Quiet"
msgstr "Som+Quieto"
msgstr ""
msgid "Spanish"
msgstr "Espanhol"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Programa atualizado com Sucesso"
msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Atualizado com sucesso graças a www.techjawa.com"
msgstr ""
msgid "Successfully deleted:"
msgstr "Eliminado com Sucesso:"
@ -1162,6 +1165,9 @@ msgstr "Dispositivo USB não encontrado"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Não é possível abrir o arquivo wad baixado (%s)."
@ -1179,7 +1185,7 @@ msgid "Uninstalling wad"
msgstr "Desinstalando wad"
msgid "Unlock Parental Control"
msgstr "Desbloquear Controle de Pais"
msgstr ""
msgid "Unlock console to use this option."
msgstr "Desbloquear configuração antes de usar esta opção."
@ -1243,10 +1249,10 @@ msgid "Video Mode"
msgstr "Modo de Vídeo"
msgid "WIP Patches Path"
msgstr "Caminho WIP Patches"
msgstr ""
msgid "WIP Patches Path changed"
msgstr "Caminho WIP Patches alterado"
msgstr ""
msgid "Waiting for USB Device"
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."
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"
msgstr "Você tentou carregar uma imagem corrompida"
msgid "You need to select or format a partition"
msgstr "Você precisa selecionar ou formatar uma partição"
msgstr ""
#, c-format
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!"
msgid "for FAT/NTFS support"
msgstr "para suporte a FAT/NTFS"
msgstr ""
msgid "for Ocarina"
msgstr "pelo Ocarina"
@ -1368,3 +1374,39 @@ msgstr "de"
msgid "seconds left"
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.
# portuguese_pt.lang - r921
# portuguese_pt.lang - r903
# don't delete/change this line (é).
msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-11 06:03+0200\n"
"PO-Revision-Date: 2010-03-22 10:55-0000\n"
"POT-Creation-Date: 2010-03-16 16:17+0100\n"
"PO-Revision-Date: 2010-02-01 18:10-0000\n"
"Last-Translator: Sky8000\n"
"Language-Team: Sky8000 <sky8000@hotmail.com>\n"
"MIME-Version: 1.0\n"
@ -606,6 +606,9 @@ msgstr "Alemão"
msgid "HOME Menu"
msgstr "Menú Inicial"
msgid "Hermes CIOS"
msgstr "CIOS Hermes"
msgid "Homebrew Apps Path"
msgstr "Pasta Apps Homebrew"
@ -754,10 +757,10 @@ msgid "Locked"
msgstr "Bloqueado"
msgid "Loop Directory"
msgstr "Repetir Pasta"
msgstr ""
msgid "Loop Music"
msgstr "Repetir Música"
msgstr ""
msgid "Loop Sound"
msgstr "Repetir Sons"
@ -856,7 +859,7 @@ msgid "Not a DOL/ELF file."
msgstr "Não é um ficheiro DOL/ELF válido."
msgid "Not a WAD file."
msgstr "Não é um ficheiro WAD."
msgstr ""
msgid "Not a Wii Disc"
msgstr "Não é um Disco da Wii"
@ -934,7 +937,7 @@ msgid "Play Next"
msgstr "Próxima"
msgid "Play Once"
msgstr "Tocar uma vez."
msgstr ""
msgid "Play Previous"
msgstr "Anterior"
@ -961,7 +964,7 @@ msgid "Quick Boot"
msgstr "Arranque Rápido"
msgid "Random Directory Music"
msgstr "Pasta de Música Aleatória"
msgstr ""
msgid "Reading WAD data... Ok!"
msgstr "Lendo dados do WAD... Ok!"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Actualização Concluída"
msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Actualizado com Sucesso graças a www.techjawa.com"
msgstr ""
msgid "Successfully deleted:"
msgstr "Eliminado com Sucesso:"
@ -1162,6 +1165,9 @@ msgstr "Dispositivo USB não encontrado"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Não é possível abrir o ficheiro wad descarregado (%s)."
@ -1368,3 +1374,48 @@ msgstr "de"
msgid "seconds left"
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 ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: nikolai_ca\n"
"Language-Team: Kir, alendit, nikolai_ca\n"
@ -606,6 +606,9 @@ msgstr "Немецкий"
msgid "HOME Menu"
msgstr "Домашнее Меню"
msgid "Hermes CIOS"
msgstr "Hermes CIOS"
msgid "Homebrew Apps Path"
msgstr "Путь к хоумбрю-программам"
@ -1162,6 +1165,9 @@ msgstr "USB устройство не найдено"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Не могу открыть скачанный WAD (%s)"
@ -1368,3 +1374,39 @@ msgstr "из"
msgid "seconds left"
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 ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: knife.hu kavid\n"
"Language-Team: kavid\n"
@ -606,6 +606,9 @@ msgstr "德文"
msgid "HOME Menu"
msgstr "主菜单"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "自制程序路径"
@ -1162,6 +1165,9 @@ msgstr "找不到 USB 设备"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "不能打开刚下载的 WAD 文件 (%s)."
@ -1368,3 +1374,27 @@ msgstr "的"
msgid "seconds left"
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.
# spanish.lang - r921
# spanish.lang - r903
# don't delete/change this line (é).
msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: SirPalax\n"
"Language-Team: Penn, SirPalax\n"
@ -606,6 +606,9 @@ msgstr "Alemán"
msgid "HOME Menu"
msgstr "Menú HOME"
msgid "Hermes CIOS"
msgstr "cIOS Hermes"
msgid "Homebrew Apps Path"
msgstr "Ruta Apps Homebrew"
@ -754,10 +757,10 @@ msgid "Locked"
msgstr "Bloqueada"
msgid "Loop Directory"
msgstr "Carpeta de bucle"
msgstr ""
msgid "Loop Music"
msgstr "Bucle musical"
msgstr ""
msgid "Loop Sound"
msgstr "Bucle de sonido"
@ -856,7 +859,7 @@ msgid "Not a DOL/ELF file."
msgstr "No es un archivo DOL/ELF."
msgid "Not a WAD file."
msgstr "No es un archivo WAD."
msgstr ""
msgid "Not a Wii Disc"
msgstr "No es un Disco Wii"
@ -934,7 +937,7 @@ msgid "Play Next"
msgstr "Oír Siguiente"
msgid "Play Once"
msgstr "Oir una vez"
msgstr ""
msgid "Play Previous"
msgstr "Oír Anterior"
@ -961,7 +964,7 @@ msgid "Quick Boot"
msgstr "Inicio Rápido"
msgid "Random Directory Music"
msgstr "Aleatorio de la carpeta musical"
msgstr ""
msgid "Reading WAD data... Ok!"
msgstr "Leyendo datos del WAD... ¡Correcto!"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "Actualización correcta"
msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "Actualización correcta gracias a www.techjawa.com"
msgstr ""
msgid "Successfully deleted:"
msgstr "Borrado correctamente:"
@ -1162,6 +1165,9 @@ msgstr "USB no encontrado"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "No se puede abrir el WAD que acabas de descargar (%s)."
@ -1368,3 +1374,69 @@ msgstr "de"
msgid "seconds left"
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 ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: Katsurou\n"
"Language-Team: Katsurou, pirateX\n"
@ -606,6 +606,9 @@ msgstr "Tyska"
msgid "HOME Menu"
msgstr "Hemmeny"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "Homebrew Apps"
@ -1162,6 +1165,9 @@ msgstr "USB-enhet ej hittad"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Kunde inte öppna den nedladdade wad filen (%s)."
@ -1368,3 +1374,63 @@ msgstr "av"
msgid "seconds left"
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.
# tchinese.lang - r929
# tchinese.lang - r911
# don't delete/change this line (é).
msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: Jane.H\n"
"Language-Team: kyogc, Miller, Mika Li, Jane.H\n"
"Last-Translator: Mika Li\n"
"Language-Team: kyogc, Miller, Mika Li\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -550,7 +550,7 @@ msgid "Full Shutdown"
msgstr "關機"
msgid "GAMEID_Gamename"
msgstr "GAMEID_遊戲名稱"
msgstr ""
msgid "GCT Cheatcodes Path"
msgstr "金手指檔案路徑"
@ -595,7 +595,7 @@ msgid "Game partition"
msgstr "遊戲磁區"
msgid "Gamename [GAMEID]"
msgstr "遊戲名稱 [GAMEID]"
msgstr ""
msgid "Games"
msgstr "遊戲數量"
@ -606,6 +606,9 @@ msgstr "德文"
msgid "HOME Menu"
msgstr "主選單"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "HBC 應用程式路徑"
@ -841,7 +844,7 @@ msgid "No themes found on the site."
msgstr "在網站上找不到主題"
msgid "None"
msgstr "沒有"
msgstr ""
msgid "Normal"
msgstr "一般"
@ -1090,7 +1093,7 @@ msgid "Successfully Updated"
msgstr "更新已完成"
msgid "Successfully Updated thanks to www.techjawa.com"
msgstr "已更新成功,感謝 www.techjawa.com"
msgstr ""
msgid "Successfully deleted:"
msgstr "成功的刪除:"
@ -1162,6 +1165,9 @@ msgstr "找不到 USB 設備"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "不能打開剛下載的 WAD 文件 (%s)."
@ -1368,3 +1374,48 @@ msgstr "的"
msgid "seconds left"
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 ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: Nitro_subzero \n"
"Language-Team: Nitro_subzero\n"
@ -606,6 +606,9 @@ msgstr "เยอรมัน"
msgid "HOME Menu"
msgstr "เมนู HOME"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "ที่เก็บโปรแกรม Homebrew"
@ -1162,6 +1165,9 @@ msgstr "ไม่พบอุปกรณ์ USB"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "ไม่สามารถเปิดไฟล์ Wad ที่เพิ่งดาวน์โหลดมาได้ (%s)."
@ -1368,3 +1374,54 @@ msgstr "จาก"
msgid "seconds left"
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 ""
"Project-Id-Version: USB Loader GX\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"
"Last-Translator: omercigingelini\n"
"Language-Team: omercigingelini\n"
@ -606,6 +606,9 @@ msgstr "Almanca"
msgid "HOME Menu"
msgstr "HOME Menü"
msgid "Hermes CIOS"
msgstr ""
msgid "Homebrew Apps Path"
msgstr "Homebrew Yazılımlarının Yolu"
@ -1162,6 +1165,9 @@ msgstr "USB Aygıtı bulunamadı"
msgid "USB Loader GX is protected"
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
msgid "Unable to open the wad that was just downloaded (%s)."
msgstr "Az önce indirilen wad açılamıyor(%s)"
@ -1368,3 +1374,39 @@ msgstr "./"
msgid "seconds left"
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_End();
}
extern "C" void StopAudio() {
ShutdownAudio();
}

View File

@ -37,34 +37,5 @@ bool InitGecko()
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 */

View File

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

View File

@ -16,7 +16,6 @@
#include <unistd.h>
#include <locale.h>
#include <wiiuse/wpad.h>
#include <ogc/libversion.h>
//#include <debug.h>
extern "C"
{
@ -96,6 +95,21 @@ static void BootUpProblems()
time_t endtime = time(0) + 30;
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_Init();
ret2 = WBFS_Init(WBFS_DEVICE_USB);
@ -140,16 +154,15 @@ unsigned int *xfb = NULL;
void InitTextVideo ()
{
gprintf("\n\nInitTextVideo ()");
gprintf("\nInitTextVideo ()");
if (textVideoInit)
{
gprintf("...0\n");
gprintf("...0");
return;
}
dbvideo=1;
VIDEO_Init();
// get default video mode
// get default video mode
GXRModeObj *vmode = VIDEO_GetPreferredMode(NULL);
// widescreen fix
@ -174,7 +187,7 @@ void InitTextVideo ()
//send console output to the gecko
if (geckoinit)CON_EnableGecko(1, 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.
gprintf("------------------\n");
gprintf("USB Loader GX rev%s\n",GetRev());
gprintf("<< %s >>\n", _V_STRING );
gprintf("main(%d", argc);
gprintf("\n\n------------------");
gprintf("\nUSB Loader GX rev%s",GetRev());
gprintf("\nmain(%d", argc);
for (int i=0;i<argc;i++)
gprintf(", %s",argv[i]?argv[i]:"<NULL>");
gprintf(")\n");
gprintf(")");
// This part is added, because we need a identify patched ios
// printf("\n\tReloading into ios 236");
@ -211,7 +223,7 @@ main(int argc, char *argv[])
IOS_ReloadIOSsafe(36);
}
printf("Starting up\n");
printf("\n\tStarting up");
MEM2_init(36); // Initialize 36 MB
MEM2_takeBigOnes(true);
@ -281,7 +293,7 @@ main(int argc, char *argv[])
if (ret < 0)
{
printf("\n\tIOS 249 failed, reloading ios 222...");
printf("\n\tIOS 249 failed, reloading ios 222...");
ret = IOS_ReloadIOSsafe(222);
printf("%d", ret);
@ -305,7 +317,12 @@ main(int argc, char *argv[])
}
}
}
load_ehc_module();
printf("\n\tInitialize sd card");
SDCard_Init();
printf("\n\tLoad ehc module");
load_ehc_module();
printf("\n\tdeinit sd card");
SDCard_deInit();
}
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...");
ret = IOS_ReloadIOSsafe(222);
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");
load_ehc_module();
printf("\n\tdeinit sd card");
SDCard_deInit();
printf("\n\tInitialize wbfs...");
USBDevice_deInit();
@ -376,25 +407,66 @@ main(int argc, char *argv[])
// gprintf("\n\tbootDevice = %s",bootDevice);
/* Load Custom IOS */
if (Settings.cios != IOS_GetVersion())
{
printf("\n\tReloading IOS to config setting (%d)...", ciosSetting2Cios(Settings.cios));
if (Sys_IosReload(ciosSetting2Cios(Settings.cios)) < 0) {
int alt_ios = (Settings.cios == ios222 || Settings.cios == ios223) ? 249 : 222;
ret = Sys_IosReload(alt_ios);
if (ret < 0)
{
printf("\nERROR: cIOS could not be loaded!");
sleep(5);
exit(0);
}
}
if ((Settings.cios == ios222 && IOS_GetVersion() != 222) ||
(Settings.cios == ios223 && IOS_GetVersion() != 223))
{
printf("\n\tReloading IOS to config setting (%d)...", Settings.cios == ios222 ? 222 : 223);
SDCard_deInit(); // unmount SD for reloading IOS
USBDevice_deInit(); // unmount USB for reloading 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)
{
printf("\nERROR: cIOS could not be loaded!");
sleep(5);
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
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
//its not really a headless mode. more like hairless.
if (argc > 1 && argv[1])

View File

@ -25,9 +25,9 @@
#include "usbloader/getentries.h"
#include "wad/title.h"
#include "xml/xml.h"
#include "audio.h"
#include "gecko.h"
#include "menu.h"
#include "audio.h"
#include "sys.h"
#include "wpad.h"
#include "settings/newtitles.h"
@ -345,7 +345,6 @@ int MainMenu(int menu) {
delete coverImg;
delete fontClock;
delete fontSystem;
ShutdownAudio();
StopGX();
gettextCleanUp();
@ -415,13 +414,14 @@ int MainMenu(int menu) {
}
}
int ret = 0;
header = (mountMethod?dvdheader:&gameList[gameSelected]);
struct Game_CFG* game_cfg = CFG_get_game_opt(header->id);
if (game_cfg) {
videoChoice = game_cfg->video;
videoChoice = game_cfg->video;
languageChoice = game_cfg->language;
ocarinaChoice = game_cfg->ocarina;
viChoice = game_cfg->vipatch;
@ -433,9 +433,48 @@ int MainMenu(int menu) {
alternatedoloffset = game_cfg->alternatedolstart;
}
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 = ciosSetting2Cios(iosChoice);
int ios2;
switch (iosChoice) {
case i249:
ios2 = 249;
break;
case i222:
ios2 = 222;
break;
case i223:
ios2 = 223;
break;
default:
ios2 = 249;
break;
}
// 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();
// You cannot reload ios when loading from fat
@ -451,6 +490,10 @@ int MainMenu(int menu) {
ret = get_frag_list(header->id);
gprintf("%d\n", ret);
gprintf("\nSetting fragment list...");
ret = set_frag_list(header->id);
gprintf("%d\n", ret);
ret = Disc_SetUSB(header->id);
if (ret < 0) Sys_BackToLoader();
gprintf("\n\tUSB set to game");
@ -603,13 +646,14 @@ int MainMenu(int menu) {
vipatch = 0;
break;
}
u32 rtrnID = GetReturnToTitle();
gprintf("Disc_wiiBoot\n" );
gprintf("\n\tDisc_wiiBoot");
ret = Disc_WiiBoot( videoselected, cheat, vipatch, countrystrings, errorfixer002, alternatedol, alternatedoloffset, rtrnID );
ret = Disc_WiiBoot(videoselected, cheat, vipatch, countrystrings, errorfixer002, alternatedol, alternatedoloffset);
if (ret < 0) {
Sys_LoadMenu();
}
printf("Returning entry point: 0x%0x\n", ret);
}
return 0;
}

View File

@ -14,7 +14,7 @@
#include "main.h"
void InitGUIThreads(void);
extern "C" void ExitGUIThreads(void);
void ExitGUIThreads(void);
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;
if(mload_init()<0) return -1;
ret = IOS_IoctlvFormat(hid, mload_fd, MLOAD_GET_MLOAD_VERSION, ":");
return ret;
}
int is_ios=0;
FILE *fp;
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 */
typedef struct {
/* Syscall base */
u32 syscall;
if(fp!=NULL)
{
/* Module versions */
u32 dipVersion;
u32 esVersion;
u32 ffsVersion;
u32 iopVersion;
} iosInfo;
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);
int wanin_mload_get_IOS_base()
{
int ret;
iosInfo ios;
memset(&ios, 0, sizeof(ios));
if(mload_init()<0) return -1;
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;
if(fread(external_ehcmodule,1, size_external_ehcmodule ,fp)!=size_external_ehcmodule)
{free(external_ehcmodule); external_ehcmodule=NULL;}
fclose(fp);
}
}
}
}
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_GET_IOS_BASE 0x4D4C4401
#define MLOAD_GET_MLOAD_VERSION 0x4D4C4402
#define MLOAD_LOAD_MODULE 0x4D4C4480
#define MLOAD_RUN_MODULE 0x4D4C4481
#define MLOAD_RUN_THREAD 0x4D4C4482

View File

@ -1,11 +1,12 @@
#include "mload_modules.h"
#include "ehcmodule_frag_bin.h"
#include "dip_plugin_249.h"
#include "sys.h"
#include "ehcmodule_frag_v4_bin.h"
#include "ehcmodule_frag_v5_bin.h"
#include "gecko.h"
#define ALIGNED(x) __attribute__((aligned(x)))
#define DEBUG_MLOAD
/* Used for Hermes NAND emulation */
int global_mount;
int sd_ok=0;
@ -82,6 +83,7 @@ static u32 ios_60[16] ATTRIBUTE_ALIGN(32)=
0x20203750+1, // ios_printf (thumb)
};
u32 patch_datas[8] ATTRIBUTE_ALIGN(32);
data_elf my_data_elf;
@ -91,19 +93,105 @@ int size_external_ehcmodule=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;
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);
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);
// 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();
switch(is_ios)
@ -176,39 +264,11 @@ int load_ehc_module_hermes()
}
return 0;
}
mload_close();
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();
}
gprintf("mload done\n");
return ret;
return 0;
}
int load_ehc_module()
{
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_UMOUNTSD 0xF1
#define IOCTL_FAT_MOUNTUSB 0xF2
@ -368,8 +428,6 @@ s32 ret;
return ret;
}
#endif
void enable_ES_ioctlv_vector(void)
{
patch_datas[0]=*((u32 *) (dip_plugin+16*4));
@ -405,7 +463,11 @@ void test_and_patch_for_port1()
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)
{

View File

@ -32,7 +32,7 @@
#include "fatmounter.h"
#include "settings/cfg.h"
#include "mload/mload.h"
#include "mload/mload_modules.h"
#include "mload/dip_plugin.h"
#include "gecko.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;
}

View File

@ -26,7 +26,6 @@
#include "usbloader/apploader.h"
#include "patchcode.h"
#include "../gecko.h"
//#include "sd.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 vidolpatcher(void *addr, u32 len);
void patchdebug(void *addr, u32 len);
bool PatchReturnTo(void *Address, int Size, u32 id);
#ifdef __cplusplus
}

View File

@ -1772,6 +1772,14 @@ DiscWait(const char *title, const char *msg, const char *btn1Label, const char *
while (i >= 0) {
VIDEO_WaitVSync();
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);
USBDevice_deInit();
USBDevice_Init();

View File

@ -205,7 +205,7 @@ int TitleBrowser(u32 type) {
}
}
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;
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_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_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_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_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
***************************************************************************/
@ -995,6 +1003,9 @@ int MenuSettings()
if (++Settings.cios >= settings_cios_max) {
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)
options2.SetValue(Idx, "%s", opts_cios[Settings.cios]);
@ -1006,7 +1017,12 @@ int MenuSettings()
{
if (firstRun) options2.SetName(Idx, "%s", tr("Partition"));
if (ret == Idx) {
Settings.partition = Settings.partition + 1 == partitions.num ? 0 : Settings.partition + 1;
// Select the next valid partition, even if that's the same one
do
{
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];
@ -2200,7 +2216,8 @@ int MenuSettings()
ResumeGui();
return menu;
}
}
/********************************************************************************
*Game specific settings
@ -2421,8 +2438,9 @@ int GameSettings(struct discHdr * header)
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;
languageChoice = game_cfg->language;
ocarinaChoice = game_cfg->ocarina;
@ -2436,11 +2454,35 @@ int GameSettings(struct discHdr * header)
reloadblock = game_cfg->iosreloadblock;
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();
while (MainButton1.GetEffect() > 0) usleep(50);
while (menu == MENU_NONE)
{
VIDEO_WaitVSync ();
@ -2591,7 +2633,7 @@ int GameSettings(struct discHdr * header)
if(ret == ++Idx || firstRun)
{
if(firstRun) options2.SetName(Idx, "IOS");
if(ret == Idx && ++iosChoice >= settings_cios_max)
if(ret == Idx && ++iosChoice >= settings_ios_max)
iosChoice = 0;
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"));
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);
/* 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
@ -2976,6 +3036,8 @@ int GameSettings(struct discHdr * header)
w.SetEffect(EFFECT_FADE, -20);
while (w.GetEffect()>0) usleep(50);
HaltGui();
mainWindow->RemoveAll();

View File

@ -1258,6 +1258,7 @@ void cfg_parsearg(int argc, char **argv)
// PER-GAME SETTINGS
// return existing or new
struct Game_CFG* cfg_get_game(u8 *id) {
struct Game_CFG *game = CFG_get_game_opt(id);
@ -1268,22 +1269,6 @@ struct Game_CFG* cfg_get_game(u8 *id) {
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
void cfg_set_game_opt(struct Game_CFG *game, u8 *id) {
strncpy((char*)game->id, (char*)id, 6);
@ -1753,7 +1738,6 @@ struct Game_CFG* CFG_get_game_opt(u8 *id) {
return &cfg_game[i];
}
}
CFG_set_game_default();
return NULL;
}
@ -1951,21 +1935,3 @@ void GetLanguageToLangCode(int *langid, char *langcode) {
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);
struct Game_CFG* CFG_get_game_opt(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_num(u8 *id);
bool CFG_reset_all_playcounters();
@ -299,11 +298,18 @@ extern "C" {
settings_sinfo_max // always the last entry
};
enum {
i249=0,
i222,
i223,
i250,
settings_ios_max // always the last entry
};
enum {
ios249=0,
ios222,
ios223,
ios224,
ios250,
settings_cios_max // always the last entry
};
@ -458,8 +464,6 @@ extern "C" {
void GetLanguageToLangCode(int *langid, char *langcode);
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 *cfg_get_title(u8 *id) ;
void title_set(char *id, char *title);

View File

@ -1,323 +1,283 @@
#include <stdio.h>
#include <ogcsys.h>
#include <unistd.h>
#include "settings/cfg.h"
#include "usbloader/wdvd.h"
#include "usbloader/usbstorage2.h"
#include "usbloader/disc.h"
#include "usbloader/wbfs.h"
#include "usbloader/partition_usbloader.h"
#include "mload/mload_modules.h"
// #include "menu.h"
#include "fatmounter.h"
#include "sys.h"
#include "wpad.h"
extern char game_partition[6];
extern u8 load_from_fs;
extern int screenheight;
extern int screenwidth;
//Wiilight stuff
static vu32 *_wiilight_reg = (u32*)0xCD0000C0;
void wiilight(int enable) { // Toggle wiilight (thanks Bool for wiilight source)
u32 val = (*_wiilight_reg&~0x20);
if (enable && Settings.wiilight) val |= 0x20;
*_wiilight_reg=val;
}
/* Variables */
u8 shutdown = 0;
u8 reset = 0;
void __Sys_ResetCallback(void) {
/* Reboot console */
reset = 1;
}
void __Sys_PowerCallback(void) {
/* Poweroff console */
shutdown = 1;
}
void Sys_Init(void) {
/* Initialize video subsytem */
//VIDEO_Init();
/* Set RESET/POWER button callback */
SYS_SetResetCallback(__Sys_ResetCallback);
SYS_SetPowerCallback(__Sys_PowerCallback);
}
void ExitGUIThreads(void);
void StopAudio();
void StopGX();
static void _ExitApp() {
ExitGUIThreads();
StopGX();
StopAudio();
UnmountNTFS();
SDCard_deInit();
USBDevice_deInit();
mload_set_ES_ioctlv_vector(NULL);
mload_close();
}
void Sys_Reboot(void) {
/* Restart console */
_ExitApp();
STM_RebootSystem();
}
int Sys_ChangeIos(int ios) {
s32 prevIos = IOS_GetVersion();
SDCard_deInit();
USBDevice_deInit();
WPAD_Flush(0);
WPAD_Disconnect(0);
WPAD_Shutdown();
WDVD_Close();
USBStorage2_Deinit();
s32 ret = IOS_ReloadIOSsafe(ios);
if (ret < 0) {
ios = prevIos;
}
load_ehc_module();
SDCard_Init();
USBDevice_Init();
PAD_Init();
Wpad_Init();
WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
WBFS_Init(WBFS_DEVICE_USB);
Disc_Init();
if (ios_supports_frag()) {
WBFS_OpenNamed((char *) &game_partition);
} else {
WBFS_Open();
}
return ret;
}
int Sys_IosReload(int IOS) {
s32 ret = -1;
//shutdown SD and USB before IOS Reload in DiscWait
SDCard_deInit();
USBDevice_deInit();
WPAD_Flush(0);
WPAD_Disconnect(0);
WPAD_Shutdown();
WDVD_Close();
USBStorage2_Deinit();
if (is_ios_type(IOS_TYPE_HERMES) || is_ios_type(IOS_TYPE_WANIN)) {
int i;
for (i = 0; i < 10; i++) {
ret = IOS_ReloadIOSsafe(IOS);
if (ret < 0) return ret;
load_ehc_module();
ret = WBFS_Init(WBFS_DEVICE_USB);
if (!(ret < 0)) break;
sleep(1);
USBStorage2_Deinit();
}
if (ret>=0) {
ret = Disc_Init();
/*
if (ret>=0) {
if (ios_supports_frag() && game_partition[0] != '\0') {
ret = WBFS_OpenNamed((char *) &game_partition);
} else {
ret = WBFS_Open();
}
}
*/
} else Sys_BackToLoader();
}
PAD_Init();
Wpad_Init();
WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
//reinitialize SD and USB
SDCard_Init();
USBDevice_Init();
return ret;
}
#define ShutdownToDefault 0
#define ShutdownToIdle 1
#define ShutdownToStandby 2
static void _Sys_Shutdown(int SHUTDOWN_MODE) {
_ExitApp();
WPAD_Flush(0);
WPAD_Disconnect(0);
WPAD_Shutdown();
/* Poweroff console */
if ((CONF_GetShutdownMode() == CONF_SHUTDOWN_IDLE && SHUTDOWN_MODE != ShutdownToStandby) || SHUTDOWN_MODE == ShutdownToIdle) {
s32 ret;
/* Set LED mode */
ret = CONF_GetIdleLedMode();
if (ret >= 0 && ret <= 2)
STM_SetLedMode(ret);
/* Shutdown to idle */
STM_ShutdownToIdle();
} else {
/* Shutdown to standby */
STM_ShutdownToStandby();
}
}
void Sys_Shutdown(void) {
_Sys_Shutdown(ShutdownToDefault);
}
void Sys_ShutdownToIdel(void) {
_Sys_Shutdown(ShutdownToIdle);
}
void Sys_ShutdownToStandby(void) {
_Sys_Shutdown(ShutdownToStandby);
}
void Sys_LoadMenu(void) {
_ExitApp();
/* Return to the Wii system menu */
SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);
}
void Sys_BackToLoader(void) {
if (*((u32*) 0x80001800)) {
_ExitApp();
exit(0);
}
// Channel Version
Sys_LoadMenu();
}
bool Sys_IsHermes() {
return IOS_GetVersion() == 222 || IOS_GetVersion() == 223;
}
// #include "prompts/PromptWindows.h"
void ShowMemInfo() {
char buf[255];
struct mallinfo mymallinfo = mallinfo();
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");
}
#include "wad/title.h"
s32 ios222rev = -69;
s32 ios223rev = -69;
s32 ios249rev = -69;
s32 ios250rev = -69;
s32 IOS_ReloadIOSsafe(int ios)
{
if (ios==222)
{
if (ios222rev == -69)
ios222rev = getIOSrev(0x00000001000000dell);
if (ios222rev > 0 && (ios222rev != 4 && ios222rev != 5))return -2;
}
else if (ios==223)
{
if (ios223rev == -69)
ios223rev = getIOSrev(0x00000001000000dfll);
if (ios223rev > 0 && (ios223rev != 4 && ios223rev != 5))return -2;
}
else if (ios==249)
{
if (ios249rev == -69)
ios249rev = getIOSrev(0x00000001000000f9ll);
if (ios249rev >= 0 && !(ios249rev>=9 && ios249rev<65280))return -2;
}
else if (ios==250)
{
if (ios250rev == -69)
ios250rev = getIOSrev(0x00000001000000fall);
if (ios250rev >= 0 && !(ios250rev>=9 && ios250rev<65280))return -2;
}
s32 r = IOS_ReloadIOS(ios);
if (r >= 0) {
WII_Initialize();
}
return r;
}
#include <time.h>
s32 TakeScreenshot(const char *path);
void ScreenShot()
{
time_t rawtime;
struct tm * timeinfo;
char buffer [80];
char buffer2 [80];
time ( &rawtime );
timeinfo = localtime ( &rawtime );
//USBLoader_GX_ScreenShot-Month_Day_Hour_Minute_Second_Year.png
strftime (buffer,80,"USBLoader_GX_ScreenShot-%b%d%H%M%S%y.png",timeinfo);
sprintf(buffer2, "%s/config/%s", bootDevice, buffer);
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));
}
#include <stdio.h>
#include <ogcsys.h>
#include <unistd.h>
#include "usbloader/wdvd.h"
#include "usbloader/usbstorage2.h"
#include "usbloader/disc.h"
#include "usbloader/wbfs.h"
#include "usbloader/partition_usbloader.h"
#include "mload/mload_modules.h"
#include "video.h"
#include "audio.h"
#include "menu.h"
#include "fatmounter.h"
#include "sys.h"
#include "wpad.h"
extern char game_partition[6];
extern u8 load_from_fs;
//Wiilight stuff
static vu32 *_wiilight_reg = (u32*)0xCD0000C0;
void wiilight(int enable) { // Toggle wiilight (thanks Bool for wiilight source)
u32 val = (*_wiilight_reg&~0x20);
if (enable && Settings.wiilight) val |= 0x20;
*_wiilight_reg=val;
}
/* Variables */
u8 shutdown = 0;
u8 reset = 0;
void __Sys_ResetCallback(void) {
/* Reboot console */
reset = 1;
}
void __Sys_PowerCallback(void) {
/* Poweroff console */
shutdown = 1;
}
void Sys_Init(void) {
/* Initialize video subsytem */
//VIDEO_Init();
/* Set RESET/POWER button callback */
SYS_SetResetCallback(__Sys_ResetCallback);
SYS_SetPowerCallback(__Sys_PowerCallback);
}
static void _ExitApp() {
ExitGUIThreads();
StopGX();
ShutdownAudio();
UnmountNTFS();
SDCard_deInit();
USBDevice_deInit();
mload_set_ES_ioctlv_vector(NULL);
mload_close();
}
void Sys_Reboot(void) {
/* Restart console */
_ExitApp();
STM_RebootSystem();
}
int Sys_ChangeIos(int ios) {
s32 prevIos = IOS_GetVersion();
SDCard_deInit();
USBDevice_deInit();
WPAD_Flush(0);
WPAD_Disconnect(0);
WPAD_Shutdown();
WDVD_Close();
USBStorage2_Deinit();
s32 ret = IOS_ReloadIOSsafe(ios);
if (ret < 0) {
ios = prevIos;
}
SDCard_Init();
if (ios == 222 || ios == 223) {
load_ehc_module();
}
USBDevice_Init();
PAD_Init();
Wpad_Init();
WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
WBFS_Init(WBFS_DEVICE_USB);
Disc_Init();
if (Sys_IsHermes()) {
WBFS_OpenNamed((char *) &game_partition);
} else {
WBFS_Open();
}
return ret;
}
int Sys_IosReload(int IOS) {
s32 ret = -1;
//shutdown SD and USB before IOS Reload in DiscWait
SDCard_deInit();
USBDevice_deInit();
WPAD_Flush(0);
WPAD_Disconnect(0);
WPAD_Shutdown();
WDVD_Close();
USBStorage2_Deinit();
if (IOS == 249 || IOS == 222 || IOS == 223) {
for (int i = 0; i < 10; i++) {
ret = IOS_ReloadIOSsafe(IOS);
if (ret < 0) return ret;
if (IOS == 222 || IOS == 223) load_ehc_module();
ret = WBFS_Init(WBFS_DEVICE_USB);
if (!(ret < 0)) break;
sleep(1);
USBStorage2_Deinit();
}
if (ret>=0) {
ret = Disc_Init();
if (ret>=0) {
ret = WBFS_Open();
}
} else Sys_BackToLoader();
}
PAD_Init();
Wpad_Init();
WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
//reinitialize SD and USB
SDCard_Init();
USBDevice_Init();
return ret;
}
#define ShutdownToDefault 0
#define ShutdownToIdle 1
#define ShutdownToStandby 2
static void _Sys_Shutdown(int SHUTDOWN_MODE) {
_ExitApp();
WPAD_Flush(0);
WPAD_Disconnect(0);
WPAD_Shutdown();
/* Poweroff console */
if ((CONF_GetShutdownMode() == CONF_SHUTDOWN_IDLE && SHUTDOWN_MODE != ShutdownToStandby) || SHUTDOWN_MODE == ShutdownToIdle) {
s32 ret;
/* Set LED mode */
ret = CONF_GetIdleLedMode();
if (ret >= 0 && ret <= 2)
STM_SetLedMode(ret);
/* Shutdown to idle */
STM_ShutdownToIdle();
} else {
/* Shutdown to standby */
STM_ShutdownToStandby();
}
}
void Sys_Shutdown(void) {
_Sys_Shutdown(ShutdownToDefault);
}
void Sys_ShutdownToIdel(void) {
_Sys_Shutdown(ShutdownToIdle);
}
void Sys_ShutdownToStandby(void) {
_Sys_Shutdown(ShutdownToStandby);
}
void Sys_LoadMenu(void) {
_ExitApp();
/* Return to the Wii system menu */
SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);
}
void Sys_BackToLoader(void) {
if (*((u32*) 0x80001800)) {
_ExitApp();
exit(0);
}
// Channel Version
Sys_LoadMenu();
}
bool Sys_IsHermes() {
return IOS_GetVersion() == 222 || IOS_GetVersion() == 223;
}
#include "prompts/PromptWindows.h"
void ShowMemInfo() {
char buf[255];
struct mallinfo mymallinfo = mallinfo();
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");
}
#include "wad/title.h"
s32 ios222rev = -69;
s32 ios223rev = -69;
s32 ios249rev = -69;
s32 ios250rev = -69;
s32 IOS_ReloadIOSsafe(int ios)
{
if (ios==222)
{
if (ios222rev == -69)
ios222rev = getIOSrev(0x00000001000000dell);
if (ios222rev > 0 && (ios222rev != 4 && ios222rev != 5))return -2;
}
else if (ios==223)
{
if (ios223rev == -69)
ios223rev = getIOSrev(0x00000001000000dfll);
if (ios223rev > 0 && (ios223rev != 4 && ios223rev != 5))return -2;
}
else if (ios==249)
{
if (ios249rev == -69)
ios249rev = getIOSrev(0x00000001000000f9ll);
if (ios249rev >= 0 && !(ios249rev>=9 && ios249rev<65280))return -2;
}
else if (ios==250)
{
if (ios250rev == -69)
ios250rev = getIOSrev(0x00000001000000fall);
if (ios250rev >= 0 && !(ios250rev>=9 && ios250rev<65280))return -2;
}
s32 r = IOS_ReloadIOS(ios);
if (r >= 0) {
WII_Initialize();
}
return r;
}
#include <time.h>
void ScreenShot()
{
time_t rawtime;
struct tm * timeinfo;
char buffer [80];
char buffer2 [80];
time ( &rawtime );
timeinfo = localtime ( &rawtime );
//USBLoader_GX_ScreenShot-Month_Day_Hour_Minute_Second_Year.png
strftime (buffer,80,"USBLoader_GX_ScreenShot-%b%d%H%M%S%y.png",timeinfo);
sprintf(buffer2, "%s/config/%s", bootDevice, buffer);
TakeScreenshot(buffer2);
}

View File

@ -1,10 +1,6 @@
#ifndef _SYS_H_
#define _SYS_H_
#ifdef __cplusplus
extern "C" {
#endif
void wiilight(int enable);
/* Prototypes */
@ -27,18 +23,5 @@ extern s32 ios223rev;
extern s32 ios249rev;
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

View File

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

View File

@ -10,7 +10,7 @@ extern "C" {
bool Load_Dol(void **buffer, int* dollen, char * path);
bool Remove_001_Protection(void *Address, int Size);
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
}

View File

@ -13,7 +13,6 @@
#include "settings/cfg.h"
#include "gecko.h"
#include "patches/wip.h"
#include "sys.h"
extern bool geckoinit;
@ -34,6 +33,11 @@ static u8 *appldr = (u8 *)0x81200000;
static u32 buffer[0x20] ATTRIBUTE_ALIGN(32);
struct SSettings Settings;
static void __noprint(const char *fmt, ...) {
}
bool compare_videomodes(GXRModeObj* mode1, GXRModeObj* mode2) {
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 ||
@ -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 **/
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)
{
@ -290,8 +274,6 @@ bool NewSuperMarioBrosPatch(void *Address, int Size)
void gamepatches(void * dst, int len, u8 videoSelected, u8 patchcountrystring, u8 vipatch, u8 cheat) {
PretendThereIsADiscInTheDrive(dst, len);
GXRModeObj** table = NULL;
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);
}
if(cheat)
dogamehooks(dst,len);
dogamehooks(dst,len);
if (vipatch)
vidolpatcher(dst,len);
//if (vipatch)//moved to degamehooks()
// vidolpatcher(dst,len);
/*LANGUAGE PATCH - FISHEARS*/
langpatcher(dst,len);
//langpatcher(dst,len);//moved to degamehooks()
/*Thanks to WiiPower*/
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_init appldr_init;
app_main appldr_main;
@ -355,8 +336,7 @@ s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8
u32 appldr_len;
s32 ret;
gprintf("Apploader_Run( %p, %d, %d, %d, %d, %d, %d, %d, %08x )\n", \
entry, cheat, videoSelected, vipatch, patchcountrystring, error002fix, alternatedol, alternatedoloffset, rtrn );
gprintf("\nApploader_Run() started");
//u32 geckoattached = usb_isgeckoalive(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);
/* Initialize apploader */
appldr_init( gprintf );
appldr_init(__noprint);
if (error002fix!=0) {
/* 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 dolStart = 0x90000000;
u32 dolEnd = 0x0;
for (;;) {
void *dst = NULL;
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 */
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);
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();
@ -437,11 +402,8 @@ s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8
DCFlushRange(dolbuffer, dollen);
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 */
*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;
*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)
SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);

View File

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

View File

@ -8,15 +8,13 @@
#include "patches/fst.h"
#include "apploader.h"
#include "disc.h"
#include "video.h"
#include "wdvd.h"
#include "alternatedol.h"
#include "memory.h"
#include "wbfs.h"
#include "gecko.h"
#include "fatmounter.h"
#include "sys.h"
#include "frag.h"
#include "usbstorage2.h"
#include "../gecko.h"
#include "../fatmounter.h"
/* Constants */
#define PTABLE_OFFSET 0x40000
@ -242,36 +240,15 @@ s32 Disc_Wait(void) {
}
s32 Disc_SetUSB(const u8 *id) {
if (is_ios_type(IOS_TYPE_HERMES)) {
u32 part = 0;
if (wbfs_part_fs) {
part = wbfs_part_lba;
} else {
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 */
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);
u32 part = 0;
if (wbfs_part_fs) {
part = wbfs_part_lba;
} else {
part = wbfs_part_idx ? wbfs_part_idx - 1 : 0;
}
gprintf("Setting disc usb thing for wanin\n");
return WDVD_SetWBFSMode(WBFS_DEVICE_USB, (u8 *) id);
/* Set USB mode */
return WDVD_SetUSBMode(id, part);
}
s32 Disc_ReadHeader(void *outbuf) {
@ -296,7 +273,7 @@ s32 Disc_IsWii(void) {
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;
s32 ret;
@ -314,7 +291,7 @@ s32 Disc_BootPartition(u64 offset, u8 videoselected, u8 cheat, u8 vipatch, u8 pa
__Disc_SetLowMem();
/* 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)
return ret;
@ -388,7 +365,7 @@ s32 Disc_BootPartition(u64 offset, u8 videoselected, u8 cheat, u8 vipatch, u8 pa
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;
s32 ret;
@ -398,7 +375,7 @@ s32 Disc_WiiBoot(u8 videoselected, u8 cheat, u8 vipatch, u8 patchcountrystring,
return ret;
/* 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_ReadHeader(void *);
s32 Disc_IsWii(void);
s32 Disc_BootPartition(u64, u8, u8, u8, u8, u8, u8, u32, u32);
s32 Disc_WiiBoot(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);
s32 __Disc_FindPartition(u64 *outbuf);
void PatchCountryStrings(void *Address, int Size);
s32 __Disc_FindPartition(u64 *outbuf);

View File

@ -11,9 +11,6 @@
#include "usbstorage2.h"
#include "frag.h"
#include "utils.h"
#include "sys.h"
#include "wdvd.h"
#include "gecko.h"
FragList *frag_list = NULL;
@ -155,31 +152,27 @@ int set_frag_list(u8 *id)
{
if (wbfs_part_fs == PART_FS_WBFS) return 0;
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;
}
// (+1 for header which is same size as fragment)
int size = sizeof(Fragment) * (frag_list->num + 1);
int ret;
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);
}
int ret = USBStorage_WBFS_SetFragList(frag_list, size);
if (ret) {
// printf("set_frag: %d\n", ret);
return ret;
}
// verify id matches
char discid[8];
memset(discid, 0, sizeof(discid));
if (is_ios_type(IOS_TYPE_HERMES)) {
ret = USBStorage_WBFS_Read(0, 8, discid);
} else {
ret = WDVD_UnencryptedRead(discid, 8, 0);
}
return (memcmp(id, discid, 6) != 0) ? -1 : 0;
ret = USBStorage_WBFS_Read(0, 6, discid);
return 0;
}

View File

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

View File

@ -11,6 +11,7 @@
#include "gecko.h"
Wbfs *current = NULL;
#define DEBUG_WBFS
/* WBFS 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) {
current = new Wbfs_Fat(wbfsDev, part_lba, part_size);
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) {
current = new Wbfs_Ntfs(wbfsDev, part_lba, part_size);
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 {
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())
{

View File

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

View File

@ -17,7 +17,6 @@
#define IOCTL_DI_OFFSET 0xD9
#define IOCTL_DI_DISC_BCA 0xDA
#define IOCTL_DI_STOPMOTOR 0xE3
#define IOCTL_DI_SETWBFSMODE 0xF4
#define IOCTL_DI_SETUSBMODE 0xF4
#define IOCTL_DI_DISABLERESET 0xF6
@ -25,10 +24,6 @@
#define DI_SETWBFSMODE 0xfe
#define DI_SETOFFSETBASE 0xf1
#define IOCTL_DI_SETFRAG 0xF9
#define IOCTL_DI_GETMODE 0xFA
#define IOCTL_DI_HELLO 0xFB
/* Variables */
static u32 inbuf[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;
}
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 **/
s32 WDVD_SetUSBMode(const u8 *id, s32 partition) {
s32 ret;
@ -345,7 +319,9 @@ s32 WDVD_SetUSBMode(const u8 *id, s32 partition) {
/* Copy ID */
if (id) {
memcpy(&inbuf[2], id, 6);
inbuf[5] = partition;
if (IOS_GetVersion() != 249) {
inbuf[5] = partition;
}
}
ret = IOS_Ioctl(di_fd, IOCTL_DI_SETUSBMODE, inbuf, sizeof(inbuf), outbuf, sizeof(outbuf));
@ -378,25 +354,3 @@ s32 WDVD_Read_Disc_BCA(void *buf)
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_GetCoverStatus(u32 *);
s32 WDVD_DisableReset(u8);
s32 WDVD_SetWBFSMode(u32, u8 *);
s32 WDVD_SetUSBMode(const u8 *, s32 partition);
s32 WDVD_Read_Disc_BCA(void *buf);
s32 WDVD_SetFragList(int device, void *fraglist, int size);
#ifdef __cplusplus
}

View File

@ -13,7 +13,7 @@
void InitVideo ();
void InitVideodebug();
extern "C" void StopGX();
void StopGX();
void ResetVideo_Menu();
void Menu_Render();
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,
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);
extern "C" s32 TakeScreenshot(const char *path);
s32 TakeScreenshot(const char *path);
extern int screenheight;
extern int screenwidth;

View File

@ -945,52 +945,5 @@ out:
gprintf(" = %d",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);
// 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
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
s32 getIOSrev(u64 req);
u32 GetReturnToTitle();
#ifdef __cplusplus
}
#endif