mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-12-22 18:01:54 +01:00
*Add boot without HDD connected (channel mode is fallback). Timeout of 20 secs still comes up on start but you have now the chance to cancel it by pressing B (with a message ;-))
*Optimized TMD loading. Removed unnecessary accesses to it. *Fixed ocarina path loading for channels *Optimized device shutdown before game/channel start *A few code optimizations
This commit is contained in:
parent
a14051ecca
commit
5cbb7e69fd
@ -2,8 +2,8 @@
|
||||
<app version="1">
|
||||
<name> USB Loader GX</name>
|
||||
<coder>USB Loader GX Team</coder>
|
||||
<version>2.3 r1132</version>
|
||||
<release_date>201111170321</release_date>
|
||||
<version>2.3 r1133</version>
|
||||
<release_date>201111181802</release_date>
|
||||
<!-- // remove this line to enable arguments
|
||||
<arguments>
|
||||
<arg>--ios=250</arg>
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: David Jelinek (djelinek@hotmail.com) e->e,r->r,u->u, c->c \n"
|
||||
"Language-Team: r1056 - last version on http://djelinek.sweb.cz/_USBLoderGX/czech.lang \n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " nelze stáhnout."
|
||||
@ -1495,6 +1495,9 @@ msgstr "Úspešne rozbalené téma."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Úspešne nainstalováno"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr "FAT32 volné místo"
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Popisky"
|
||||
msgid "Transfer failed"
|
||||
msgstr "Prenos selhal"
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "USB zarízení nenalezeno"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX je zabezpecen"
|
||||
@ -1734,11 +1737,11 @@ msgstr "Nyní pouzíváte IOS:"
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr "Pokousíte se vybrat oddíl FAT32/NTFS/EXT s cIOS 249 Rev < 18. To není podporováno. Pokracujte na vasi odpovednost."
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Musíte vybrat nebo naformátovat oddíl"
|
||||
msgid "You cannot delete this category."
|
||||
msgstr ""
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr "a prekladatelé pro jazykové aktualizace"
|
||||
@ -1794,6 +1797,12 @@ msgstr "z "
|
||||
msgid "seconds left"
|
||||
msgstr "sekund zbývá"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "USB zarízení nenalezeno"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Musíte vybrat nebo naformátovat oddíl"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Jazykový soubor"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: Fox888[dk]\n"
|
||||
"Language-Team: [dk]\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " kunne ikke downloades."
|
||||
@ -1495,6 +1495,9 @@ msgstr "Udpakning af tema lykkedes."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Installationen lykkedes:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr "Synkronisere FAT32 FS Info"
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Værktøjstips"
|
||||
msgid "Transfer failed"
|
||||
msgstr "Overførelse fejlede"
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "USB-enhed ikke fundet"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX er beskyttet"
|
||||
@ -1734,12 +1737,12 @@ msgstr "Du brug i øjeblikket IOS"
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr "Du prøver at vælge en FAT32/NTFS/EXT partition med cIOS 249 Rev < 18. Dette er ikke understøttet. Fortsætte er på egen risiko"
|
||||
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgstr "Du kan ikke slette denne kategori."
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Du skal vælge eller formattere en partition"
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr "og oversættere for sprog filer"
|
||||
|
||||
@ -1794,6 +1797,12 @@ msgstr "af"
|
||||
msgid "seconds left"
|
||||
msgstr "sekunder tilbage"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "USB-enhed ikke fundet"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Du skal vælge eller formattere en partition"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Sprog Fil"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2011-06-30 14:22+0100\n"
|
||||
"Last-Translator: glowy\n"
|
||||
"Language-Team: tj_cool, glowy\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " kon niet worden gedownload."
|
||||
@ -1495,6 +1495,9 @@ msgstr "Thema succesvol uitgepakt."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Met succes geïnstalleerd:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr "FAT32 FS Info sync"
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Knopinfo"
|
||||
msgid "Transfer failed"
|
||||
msgstr "Overdracht mislukt."
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "USB Apparaat niet gevonden"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX is vergrendeld"
|
||||
@ -1734,12 +1737,12 @@ msgstr "Je gebruikt op dit moment IOS"
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr "Je probeert een FAT32/NTFS/EXT partitie te selecteren met cIOS 249 Rev < 18. Dit word niet ondersteund. Verder gaan is op eigen risico."
|
||||
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgstr "Je kunt deze categorie niet verwijderen."
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Je moet een partitie selecteren of formatteren"
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr "en vertalers voor taalbestand updates"
|
||||
|
||||
@ -1794,6 +1797,12 @@ msgstr "van"
|
||||
msgid "seconds left"
|
||||
msgstr "seconden over"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "USB Apparaat niet gevonden"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Je moet een partitie selecteren of formatteren"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Taal bestand"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr ""
|
||||
@ -1495,6 +1495,9 @@ msgstr ""
|
||||
msgid "Successfully installed:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr ""
|
||||
|
||||
@ -1571,7 +1574,7 @@ msgstr ""
|
||||
msgid "Transfer failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
@ -1734,10 +1737,10 @@ msgstr ""
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgid "You cannot delete this category."
|
||||
msgstr ""
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: c64rmx\n"
|
||||
"Language-Team: \n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr "Latausta ei voitu suorittaa"
|
||||
@ -1495,6 +1495,9 @@ msgstr ""
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Asennettu onnistuneesti:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr ""
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Vinkit"
|
||||
msgid "Transfer failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "USB-laitetta ei löytynyt"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX on suojattu."
|
||||
@ -1734,10 +1737,10 @@ msgstr ""
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgid "You cannot delete this category."
|
||||
msgstr ""
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
@ -1794,6 +1797,9 @@ msgstr "josta"
|
||||
msgid "seconds left"
|
||||
msgstr "sekuntia jäljellä"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "USB-laitetta ei löytynyt"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "KieliTiedosto"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: Cyan\n"
|
||||
"Language-Team: Badablek, Amour, ikya, Cyan & Kin8\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " ne peut pas être téléchargé."
|
||||
@ -1495,6 +1495,9 @@ msgstr "Succès de l'extraction du thème."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Installé avec succès:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr "Synch. info FAT32"
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Info-bulles"
|
||||
msgid "Transfer failed"
|
||||
msgstr "Échec du transfert"
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "Périphérique USB introuvable"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX est verrouillé"
|
||||
@ -1734,12 +1737,12 @@ msgstr "Vous utilisez actuellement l'IOS"
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr "Vous essayez de sélectionner une partition FAT32/NTFS/EXT avec un cIOS 249 Rev < 18 (non supporté). Continuez à vos risques."
|
||||
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgstr "Vous ne pouvez pas supprimer cette catégorie."
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Vous devez choisir ou formater une partition"
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr "et les traducteurs pour la MàJ des fichiers langue"
|
||||
|
||||
@ -1794,6 +1797,12 @@ msgstr "sur"
|
||||
msgid "seconds left"
|
||||
msgstr "secondes restantes"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "Périphérique USB introuvable"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Vous devez choisir ou formater une partition"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Fichier de langue"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2010-07-03 17:35-0800\n"
|
||||
"Last-Translator: TheRealVisitor\n"
|
||||
"Language-Team: Bertilax, Snoozer, wishmasterf, ZEN.13, TheRealVisitor\n"
|
||||
"Language: German\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: German\n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " konnte nicht heruntergeladen werden."
|
||||
@ -1495,6 +1495,9 @@ msgstr "Theme erfolgreich entpackt."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Erfolgreich installiert:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr "Sync. FAT32 FS Info"
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Quickinfo"
|
||||
msgid "Transfer failed"
|
||||
msgstr "Transfer fehlgeschlagen"
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "USB Gerät nicht gefunden."
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX ist jetzt geschützt."
|
||||
@ -1734,12 +1737,12 @@ msgstr "Du benutzt zur Zeit das IOS"
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr "Es wird versucht eine FAT32/NTFS/EXT Partition mit dem cIOS 249 Rev < 18 auszuwählen. Das wird nicht unterstützt. Weiter auf eigene Gefahr."
|
||||
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgstr "Kategorie kann nicht gelöscht werden."
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Du musst eine Partition auswählen oder formatieren."
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr "und Übersetzer für Sprachdateien Updates"
|
||||
|
||||
@ -1794,6 +1797,12 @@ msgstr "von"
|
||||
msgid "seconds left"
|
||||
msgstr "Sekunden verbleiben"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "USB Gerät nicht gefunden."
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Du musst eine Partition auswählen oder formatieren."
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Sprachdatei"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-12-29 11:05+0100\n"
|
||||
"Last-Translator: Springdale\n"
|
||||
"Language-Team: Tusk, Springdale\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr "nem letölthetõ."
|
||||
@ -1495,6 +1495,9 @@ msgstr "Téma kicsomagolva."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Sikeresen telepítve:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr ""
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Súgók"
|
||||
msgid "Transfer failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "USB Meghajtó nem található"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX levédve"
|
||||
@ -1734,11 +1737,11 @@ msgstr ""
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Választanod vagy formáznod kell egy partíciót"
|
||||
msgid "You cannot delete this category."
|
||||
msgstr ""
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr ""
|
||||
@ -1794,6 +1797,12 @@ msgstr "./"
|
||||
msgid "seconds left"
|
||||
msgstr "hátralévõ másodperc"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "USB Meghajtó nem található"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Választanod vagy formáznod kell egy partíciót"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Nyelvi fájl"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2011-09-11 12:19+0100\n"
|
||||
"Last-Translator: xFede\n"
|
||||
"Language-Team: Cambo\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " non può essere scaricato."
|
||||
@ -1495,6 +1495,9 @@ msgstr "Tema estratto correttamente."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Installato correttamente:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr "Sincr. info Spazio Lib."
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Suggerimenti"
|
||||
msgid "Transfer failed"
|
||||
msgstr "Trasferimento fallito"
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "Periferica USB non trovata"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX è protetto"
|
||||
@ -1734,12 +1737,12 @@ msgstr "Al momento stai utilizzando l'IOS"
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr "Stai cercando di selezionare una partizione FAT32/NTFS/EXT con un cIOS 249 di versione < 18. Continua a tuo rischio e pericolo."
|
||||
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgstr "Non puoi eliminare questa categoria."
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Devi selezionare o formattare una partizione"
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr "ed ai traduttori per gli aggiornamenti dei file di lingua"
|
||||
|
||||
@ -1794,5 +1797,11 @@ msgstr "di"
|
||||
msgid "seconds left"
|
||||
msgstr "secondi rimanenti"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "Periferica USB non trovata"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Devi selezionare o formattare una partizione"
|
||||
|
||||
#~ msgid "WiiTDB is up to date."
|
||||
#~ msgstr "WiiTDB è aggiornato."
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-12 18:58+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: hosigumayuugi\n"
|
||||
"Language-Team: hosigumayuugi\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr "ダウンロードできませんでした"
|
||||
@ -1495,6 +1495,9 @@ msgstr "テーマの解凍を完了しました."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "このゲームをインストールしました"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr "FAT32FS情報を同期"
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "ヒントバルーン"
|
||||
msgid "Transfer failed"
|
||||
msgstr "転送に失敗しました"
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "USB機器が見つかりません"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "GXは保護されています"
|
||||
@ -1734,12 +1737,12 @@ msgstr "使用中のIOS:IOS"
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr "rev17以前のcIOS249ではFAT32/NTFS/EXTに対応していません"
|
||||
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgstr "このカテゴリは削除できません"
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "領域を選択するか初期化してください"
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr "/ K-M / ichiroling …日本語化"
|
||||
|
||||
@ -1794,6 +1797,12 @@ msgstr "中"
|
||||
msgid "seconds left"
|
||||
msgstr "秒で完了"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "USB機器が見つかりません"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "領域を選択するか初期化してください"
|
||||
|
||||
#~ msgid "GameTDB Files"
|
||||
#~ msgstr "ゲーム名リスト"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: nextos@korea.com\n"
|
||||
"Language-Team: \n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " 다운로드할수 없음."
|
||||
@ -1495,6 +1495,9 @@ msgstr ""
|
||||
msgid "Successfully installed:"
|
||||
msgstr "설치 성공:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr ""
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Tooltips"
|
||||
msgid "Transfer failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "USB 장치가 없습니다."
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB 로더 GX 잠김 상태"
|
||||
@ -1734,10 +1737,10 @@ msgstr ""
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgid "You cannot delete this category."
|
||||
msgstr ""
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
@ -1794,6 +1797,9 @@ msgstr "중"
|
||||
msgid "seconds left"
|
||||
msgstr "초 남았습니다"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "USB 장치가 없습니다."
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "언어화일"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: raschi\n"
|
||||
"Language-Team: raschi\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " kan ikke lastes ned."
|
||||
@ -1495,6 +1495,9 @@ msgstr "Vellykket utpakking av tema."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Vellykket installering:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr "Synkroniser FAT32 FS info"
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Verktøystips"
|
||||
msgid "Transfer failed"
|
||||
msgstr "Overføring feilet"
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "USB enhet ikke funnet"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX er beskyttet"
|
||||
@ -1734,12 +1737,12 @@ msgstr "Du bruker IOS"
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr "Du prøver å velge en FAT32/NTFS/EXT partisjon med cIOS 249 rev < 18. Dette er ikke støttet. Fortsett på eget ansvar."
|
||||
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgstr "Du kan ikke slette denne kategori."
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Du må velge en partisjon"
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr "og oversettere for språkfiler"
|
||||
|
||||
@ -1794,6 +1797,12 @@ msgstr "av"
|
||||
msgid "seconds left"
|
||||
msgstr "sekunder gjenstår"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "USB enhet ikke funnet"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Du må velge en partisjon"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Språk Fil"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: ziom666 (zadania_prog@vp.pl)\n"
|
||||
"Language-Team: \n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " nie udalo sie pobrac"
|
||||
@ -1495,6 +1495,9 @@ msgstr "Pomyslnie rozpakowano temat."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Pomyslnie zainstalowano:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr ""
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Chmurki z podpowiedziami"
|
||||
msgid "Transfer failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "Nie znaleziono urzadzenia USB"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX zabezpieczony"
|
||||
@ -1734,11 +1737,11 @@ msgstr ""
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Musisz wybrac, lub sformatowac partycje"
|
||||
msgid "You cannot delete this category."
|
||||
msgstr ""
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr ""
|
||||
@ -1794,6 +1797,12 @@ msgstr "z"
|
||||
msgid "seconds left"
|
||||
msgstr "sekund pozostalo"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "Nie znaleziono urzadzenia USB"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Musisz wybrac, lub sformatowac partycje"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Plik jezykowy"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-23 18:52+0200\n"
|
||||
"Last-Translator: aniemotion\n"
|
||||
"Language-Team: boto12, aniemotion\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " não foi baixado."
|
||||
@ -1495,6 +1495,9 @@ msgstr "Tema extraido com sucesso."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Instalado com Sucesso:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr ""
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Dicas"
|
||||
msgid "Transfer failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "Dispositivo USB não encontrado"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "O USB Loader GX está bloqueado"
|
||||
@ -1734,11 +1737,11 @@ msgstr ""
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Você precisa selecionar ou formatar uma partição"
|
||||
msgid "You cannot delete this category."
|
||||
msgstr ""
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr ""
|
||||
@ -1794,6 +1797,12 @@ msgstr "de"
|
||||
msgid "seconds left"
|
||||
msgstr "segundos restantes"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "Dispositivo USB não encontrado"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Você precisa selecionar ou formatar uma partição"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Idiomas"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2011-11-03 11:00+0000\n"
|
||||
"Last-Translator: pplucky <pplucky@gmail.com>\n"
|
||||
"Language-Team: Sky8000, pplucky\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " não foi descarregado."
|
||||
@ -1495,6 +1495,9 @@ msgstr "Tema extraído com sucesso."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Instalado com Sucesso:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr "Sincronizar Info FAT32"
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Dicas"
|
||||
msgid "Transfer failed"
|
||||
msgstr "Transferência falhada"
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "Dispositivo USB não encontrado"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "O USB Loader GX está bloqueado"
|
||||
@ -1734,12 +1737,12 @@ msgstr "Está a usar o IOS"
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr "Está a tentar seleccionar uma partição FAT32/NTFS/EXT com um cIOS 249 Rev < 18. Isto não é suportado. Continue por sua conta e risco."
|
||||
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgstr "Não pode apagar esta categoria."
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Necessita seleccionar ou formatar uma partição"
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr "e tradutores para as actualizações de idioma"
|
||||
|
||||
@ -1794,6 +1797,12 @@ msgstr "de"
|
||||
msgid "seconds left"
|
||||
msgstr "segundos restantes"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "Dispositivo USB não encontrado"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Necessita seleccionar ou formatar uma partição"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Idiomas"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: nikolai_ca\n"
|
||||
"Language-Team: Kir, alendit, nikolai_ca\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " не мог быть загружен"
|
||||
@ -1495,6 +1495,9 @@ msgstr "Успешно извлечена тема."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Успешно установлено:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr ""
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Подсказки"
|
||||
msgid "Transfer failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "USB устройство не найдено"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX заблокирован"
|
||||
@ -1734,10 +1737,10 @@ msgstr ""
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgid "You cannot delete this category."
|
||||
msgstr ""
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
@ -1794,6 +1797,9 @@ msgstr "из"
|
||||
msgid "seconds left"
|
||||
msgstr "секунд осталось"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "USB устройство не найдено"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Языковой файл"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: knife.hu kavid emul8ion\n"
|
||||
"Language-Team: kavid\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr "不能下载."
|
||||
@ -1495,6 +1495,9 @@ msgstr "解压主题成功"
|
||||
msgid "Successfully installed:"
|
||||
msgstr "成功安装:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr "同步FAT32信息"
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "提示信息"
|
||||
msgid "Transfer failed"
|
||||
msgstr "传输失败"
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "找不到 USB 设备"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX 被锁定"
|
||||
@ -1734,11 +1737,11 @@ msgstr "正在使用IOS"
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr "cIOS 249低于r18版本不支持FAT32/NTFS/EXT分区.如要继续风险自负"
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "你需要选择或者格式化一个分区"
|
||||
msgid "You cannot delete this category."
|
||||
msgstr ""
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr "以及翻译人员的语言文件更新"
|
||||
@ -1794,6 +1797,12 @@ msgstr "的"
|
||||
msgid "seconds left"
|
||||
msgstr "剩余秒数"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "找不到 USB 设备"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "你需要选择或者格式化一个分区"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "语言文件"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2011-07-25 16:40+0200\n"
|
||||
"Last-Translator: Galen/xFede\n"
|
||||
"Language-Team: Penn, SirPalax, hvy109\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " no se han podido descargar."
|
||||
@ -1495,6 +1495,9 @@ msgstr "Tema extraido correctamente."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Instalado correctamente:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr "Sinc. Esp. Libre (FAT32)"
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "InfoBurbujas"
|
||||
msgid "Transfer failed"
|
||||
msgstr "Transferencia fallida"
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "USB no encontrado"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX está protegido"
|
||||
@ -1734,12 +1737,12 @@ msgstr "Estás usando el IOS"
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr "Estás intentando seleccionar una partición FAT32/NTFS/EXT con cIOS 249 Rev < 18. Esto no es soportado. Continúa bajo tu propio riesgo."
|
||||
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgstr "No puedes borrar esta categoría."
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Necesitas seleccionar o formatear una partición"
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr "y traductores por los archivos de idiomas"
|
||||
|
||||
@ -1794,6 +1797,12 @@ msgstr "de"
|
||||
msgid "seconds left"
|
||||
msgstr "segundos restantes"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "USB no encontrado"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Necesitas seleccionar o formatear una partición"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Idiomas"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2010-01-19 17:39+0200\n"
|
||||
"Last-Translator: Katsurou\n"
|
||||
"Language-Team: Katsurou, pirateX\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr "Kunde inte laddas ner."
|
||||
@ -1495,6 +1495,9 @@ msgstr "Extrahering av tema lyckades."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Lyckad installation av:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr ""
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Verktygstips"
|
||||
msgid "Transfer failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "USB-enhet ej hittad"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX är skyddad"
|
||||
@ -1734,11 +1737,11 @@ msgstr ""
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Du måste välja eller formatera en partition"
|
||||
msgid "You cannot delete this category."
|
||||
msgstr ""
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr ""
|
||||
@ -1794,6 +1797,12 @@ msgstr "av"
|
||||
msgid "seconds left"
|
||||
msgstr "sekunder kvar"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "USB-enhet ej hittad"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Du måste välja eller formatera en partition"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Språk fil"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+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"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr "不能下載。"
|
||||
@ -1495,6 +1495,9 @@ msgstr "成功獲取主題。"
|
||||
msgid "Successfully installed:"
|
||||
msgstr "成功安裝:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr "同步FAT32檔案系統資訊"
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "提示信息"
|
||||
msgid "Transfer failed"
|
||||
msgstr "傳輸失敗"
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "找不到 USB 設備"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX 被上鎖保護"
|
||||
@ -1734,12 +1737,12 @@ msgstr "目前你使用中的IOS"
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr "你嘗試用高於 cIOS 249 版本18去選取 FAT32/NTFS/EXT 磁區。這格式不支援。繼續請自行承擔風險。"
|
||||
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgstr "無法刪除此類別。"
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "選擇你要格式化的磁區"
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr "及對所有語言檔更新的翻譯者"
|
||||
|
||||
@ -1794,6 +1797,12 @@ msgstr "的"
|
||||
msgid "seconds left"
|
||||
msgstr "剩餘秒數"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "找不到 USB 設備"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "選擇你要格式化的磁區"
|
||||
|
||||
#~ msgid "Are you sure you want to import game categories from WiiTDB?"
|
||||
#~ msgstr "確定要從WiiTDB匯入遊戲類別嗎?"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: Nitro_subzero \n"
|
||||
"Language-Team: Nitro_subzero\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " ไม่สามารถดาวน์โหลดได้"
|
||||
@ -1495,6 +1495,9 @@ msgstr "ขยายไฟล์ธีมสำเร็จ."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "ติดตั้งสำเร็จ:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr ""
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "คำแนะนำ"
|
||||
msgid "Transfer failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "ไม่พบอุปกรณ์ USB"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX 5 ถูกป้องกัน"
|
||||
@ -1734,10 +1737,10 @@ msgstr ""
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgid "You cannot delete this category."
|
||||
msgstr ""
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
@ -1794,6 +1797,9 @@ msgstr "จาก"
|
||||
msgid "seconds left"
|
||||
msgstr "วินาทีที่เหลือ"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "ไม่พบอุปกรณ์ USB"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "ไฟล์ภาษา"
|
||||
|
||||
|
@ -5,14 +5,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-11-15 21:46+0100\n"
|
||||
"POT-Creation-Date: 2011-11-20 10:55+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: omercigingelini\n"
|
||||
"Language-Team: omercigingelini\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
|
||||
msgid " could not be downloaded."
|
||||
msgstr " indirilemedi."
|
||||
@ -1495,6 +1495,9 @@ msgstr "Tema başarıyla çıkarıldı."
|
||||
msgid "Successfully installed:"
|
||||
msgstr "Başarıyla kuruldu:"
|
||||
|
||||
msgid "Switching to channel list mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "Sync FAT32 FS Info"
|
||||
msgstr ""
|
||||
|
||||
@ -1571,8 +1574,8 @@ msgstr "Yardımlar"
|
||||
msgid "Transfer failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Device not found"
|
||||
msgstr "USB Aygıtı bulunamadı"
|
||||
msgid "USB Device not found."
|
||||
msgstr ""
|
||||
|
||||
msgid "USB Loader GX is protected"
|
||||
msgstr "USB Loader GX koruma altında"
|
||||
@ -1734,11 +1737,11 @@ msgstr ""
|
||||
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
|
||||
msgstr ""
|
||||
|
||||
msgid "You cannot delete this category."
|
||||
msgid "You can select or format a partition or use the channel loader mode."
|
||||
msgstr ""
|
||||
|
||||
msgid "You need to select or format a partition"
|
||||
msgstr "Bir bölüm seçmeniz ya da formatlamanız gerekiyor"
|
||||
msgid "You cannot delete this category."
|
||||
msgstr ""
|
||||
|
||||
msgid "and translators for language files updates"
|
||||
msgstr ""
|
||||
@ -1794,6 +1797,12 @@ msgstr "./"
|
||||
msgid "seconds left"
|
||||
msgstr "saniye kaldı"
|
||||
|
||||
#~ msgid "USB Device not found"
|
||||
#~ msgstr "USB Aygıtı bulunamadı"
|
||||
|
||||
#~ msgid "You need to select or format a partition"
|
||||
#~ msgstr "Bir bölüm seçmeniz ya da formatlamanız gerekiyor"
|
||||
|
||||
#~ msgid "Language File"
|
||||
#~ msgstr "Dil dosyası"
|
||||
|
||||
|
4
Makefile
4
Makefile
@ -62,9 +62,9 @@ endif
|
||||
#---------------------------------------------------------------------------------
|
||||
# options for code generation
|
||||
#---------------------------------------------------------------------------------
|
||||
CFLAGS = -g -O3 -Wall -Wno-multichar -Wno-unused-parameter -Wextra $(MACHDEP) $(INCLUDE) -DBUILD_IOS=$(IOS)
|
||||
CFLAGS = -g -ggdb -O3 -Wall -Wno-multichar -Wno-unused-parameter -Wextra $(MACHDEP) $(INCLUDE) -DBUILD_IOS=$(IOS)
|
||||
CXXFLAGS = $(CFLAGS)
|
||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map,--section-start,.init=0x80B00000,-wrap,malloc,-wrap,free,-wrap,memalign,-wrap,calloc,-wrap,realloc,-wrap,malloc_usable_size
|
||||
LDFLAGS = -g -ggdb $(MACHDEP) -Wl,-Map,$(notdir $@).map,--section-start,.init=0x80B00000,-wrap,malloc,-wrap,free,-wrap,memalign,-wrap,calloc,-wrap,realloc,-wrap,malloc_usable_size
|
||||
|
||||
ifeq ($(BUILDMODE),channel)
|
||||
CFLAGS += -DFULLCHANNEL
|
||||
|
@ -1,18 +1,18 @@
|
||||
#define STUB 0x3400
|
||||
|
||||
.text
|
||||
.section .text
|
||||
.globl _unstub_start
|
||||
|
||||
_unstub_start:
|
||||
isync
|
||||
// set MSR[DR:IR] = 00, jump to STUB
|
||||
lis 3,STUB@h
|
||||
ori 3,3,STUB@l
|
||||
mtsrr0 3
|
||||
|
||||
mfmsr 3
|
||||
li 4,0x30
|
||||
andc 3,3,4
|
||||
mtsrr1 3
|
||||
rfi
|
||||
#define STUB 0x3400
|
||||
|
||||
.text
|
||||
.section .text
|
||||
.globl _unstub_start
|
||||
|
||||
_unstub_start:
|
||||
isync
|
||||
// set MSR[DR:IR] = 00, jump to STUB
|
||||
lis 3,STUB@h
|
||||
ori 3,3,STUB@l
|
||||
mtsrr0 3
|
||||
|
||||
mfmsr 3
|
||||
li 4,0x30
|
||||
andc 3,3,4
|
||||
mtsrr1 3
|
||||
rfi
|
||||
|
@ -51,19 +51,19 @@ Channels *Channels::instance = NULL;
|
||||
|
||||
void Channels::GetEmuChannelList()
|
||||
{
|
||||
EmuChannels.clear();
|
||||
EmuChannels.clear();
|
||||
|
||||
char filepath[1024];
|
||||
char filepath[1024];
|
||||
int language = CONF_GetLanguage();
|
||||
|
||||
snprintf(filepath, sizeof(filepath), "%s/title/00010001", Settings.NandEmuChanPath);
|
||||
ParseTitleDir(filepath, language);
|
||||
snprintf(filepath, sizeof(filepath), "%s/title/00010001", Settings.NandEmuChanPath);
|
||||
ParseTitleDir(filepath, language);
|
||||
|
||||
snprintf(filepath, sizeof(filepath), "%s/title/00010004", Settings.NandEmuChanPath);
|
||||
ParseTitleDir(filepath, language);
|
||||
snprintf(filepath, sizeof(filepath), "%s/title/00010004", Settings.NandEmuChanPath);
|
||||
ParseTitleDir(filepath, language);
|
||||
|
||||
snprintf(filepath, sizeof(filepath), "%s/title/00010002", Settings.NandEmuChanPath);
|
||||
ParseTitleDir(filepath, language);
|
||||
snprintf(filepath, sizeof(filepath), "%s/title/00010002", Settings.NandEmuChanPath);
|
||||
ParseTitleDir(filepath, language);
|
||||
}
|
||||
|
||||
void Channels::GetChannelList()
|
||||
@ -80,29 +80,29 @@ void Channels::GetChannelList()
|
||||
if (!tid)
|
||||
break;
|
||||
|
||||
//remove ones not actually installed on the nand
|
||||
if (!NandTitles.Exists(tid))
|
||||
continue;
|
||||
//remove ones not actually installed on the nand
|
||||
if (!NandTitles.Exists(tid))
|
||||
continue;
|
||||
|
||||
char id[5];
|
||||
NandTitles.AsciiTID(tid, id);
|
||||
const char *name = GameTitles.GetTitle(id);
|
||||
std::string TitleName;
|
||||
char id[5];
|
||||
NandTitles.AsciiTID(tid, id);
|
||||
const char *name = GameTitles.GetTitle(id);
|
||||
std::string TitleName;
|
||||
|
||||
if(!name || *name == '\0')
|
||||
{
|
||||
name = NandTitles.NameOf(tid);
|
||||
// Set title for caching
|
||||
if(name)
|
||||
GameTitles.SetGameTitle(id, name);
|
||||
}
|
||||
if(!name || *name == '\0')
|
||||
{
|
||||
name = NandTitles.NameOf(tid);
|
||||
// Set title for caching
|
||||
if(name)
|
||||
GameTitles.SetGameTitle(id, name);
|
||||
}
|
||||
|
||||
int s = NandChannels.size();
|
||||
NandChannels.resize(s + 1);
|
||||
memset(&NandChannels[s], 0, sizeof(struct discHdr));
|
||||
memcpy(NandChannels[s].id, id, 4);
|
||||
NandChannels[s].tid = tid;
|
||||
strncpy(NandChannels[s].title, name ? name : "", sizeof(NandChannels[s].title)-1);
|
||||
int s = NandChannels.size();
|
||||
NandChannels.resize(s + 1);
|
||||
memset(&NandChannels[s], 0, sizeof(struct discHdr));
|
||||
memcpy(NandChannels[s].id, id, 4);
|
||||
NandChannels[s].tid = tid;
|
||||
strncpy(NandChannels[s].title, name ? name : "", sizeof(NandChannels[s].title)-1);
|
||||
}
|
||||
|
||||
// Get count of system titles
|
||||
@ -121,25 +121,25 @@ void Channels::GetChannelList()
|
||||
if (!NandTitles.Exists(tid))
|
||||
continue;
|
||||
|
||||
char id[5];
|
||||
NandTitles.AsciiTID(tid, id);
|
||||
const char *name = GameTitles.GetTitle(id);
|
||||
std::string TitleName;
|
||||
char id[5];
|
||||
NandTitles.AsciiTID(tid, id);
|
||||
const char *name = GameTitles.GetTitle(id);
|
||||
std::string TitleName;
|
||||
|
||||
if(!name || *name == '\0')
|
||||
{
|
||||
name = NandTitles.NameOf(tid);
|
||||
// Set title for caching
|
||||
if(name)
|
||||
GameTitles.SetGameTitle(id, name);
|
||||
}
|
||||
if(!name || *name == '\0')
|
||||
{
|
||||
name = NandTitles.NameOf(tid);
|
||||
// Set title for caching
|
||||
if(name)
|
||||
GameTitles.SetGameTitle(id, name);
|
||||
}
|
||||
|
||||
int s = NandChannels.size();
|
||||
NandChannels.resize(s + 1);
|
||||
memset(&NandChannels[s], 0, sizeof(struct discHdr));
|
||||
memcpy(NandChannels[s].id, id, 4);
|
||||
NandChannels[s].tid = tid;
|
||||
strncpy(NandChannels[s].title, name ? name : "", sizeof(NandChannels[s].title)-1);
|
||||
int s = NandChannels.size();
|
||||
NandChannels.resize(s + 1);
|
||||
memset(&NandChannels[s], 0, sizeof(struct discHdr));
|
||||
memcpy(NandChannels[s].id, id, 4);
|
||||
NandChannels[s].tid = tid;
|
||||
strncpy(NandChannels[s].title, name ? name : "", sizeof(NandChannels[s].title)-1);
|
||||
}
|
||||
|
||||
ISFS_Deinitialize();
|
||||
@ -147,45 +147,32 @@ void Channels::GetChannelList()
|
||||
|
||||
vector<struct discHdr> & Channels::GetDiscHeaderList(void)
|
||||
{
|
||||
if(Settings.NandEmuChanMode != 0)
|
||||
{
|
||||
if(EmuChannels.empty())
|
||||
this->GetEmuChannelList();
|
||||
if(Settings.NandEmuChanMode != 0)
|
||||
{
|
||||
if(EmuChannels.empty())
|
||||
this->GetEmuChannelList();
|
||||
|
||||
return EmuChannels;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(NandChannels.empty())
|
||||
this->GetChannelList();
|
||||
return EmuChannels;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(NandChannels.empty())
|
||||
this->GetChannelList();
|
||||
|
||||
return NandChannels;
|
||||
}
|
||||
return NandChannels;
|
||||
}
|
||||
}
|
||||
|
||||
u8 * Channels::GetDol(u64 title)
|
||||
u8 * Channels::GetDol(const u64 &title, u8 *tmdBuffer)
|
||||
{
|
||||
char *filepath = (char *) memalign(32, ISFS_MAXPATH);
|
||||
if(!filepath)
|
||||
return NULL;
|
||||
|
||||
bool found = false;
|
||||
u8 *buffer = NULL;
|
||||
u32 filesize = 0;
|
||||
u32 bootcontent;
|
||||
u32 high = TITLE_UPPER(title);
|
||||
u32 low = TITLE_LOWER(title);
|
||||
|
||||
snprintf(filepath, ISFS_MAXPATH, "/title/%08x/%08x/content/title.tmd", high, low);
|
||||
|
||||
u8 *buffer = NULL;
|
||||
u32 filesize = 0;
|
||||
|
||||
if (NandTitle::LoadFileFromNand(filepath, &buffer, &filesize, false) < 0)
|
||||
{
|
||||
free(filepath);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
_tmd * tmd_file = (_tmd *) SIGNATURE_PAYLOAD((u32 *)buffer);
|
||||
bool found = false;
|
||||
_tmd * tmd_file = (_tmd *) SIGNATURE_PAYLOAD((u32 *)tmdBuffer);
|
||||
for(u32 i = 0; i < tmd_file->num_contents; ++i)
|
||||
{
|
||||
if(tmd_file->contents[i].index == tmd_file->boot_index)
|
||||
@ -196,15 +183,12 @@ u8 * Channels::GetDol(u64 title)
|
||||
}
|
||||
}
|
||||
|
||||
free(buffer);
|
||||
buffer = NULL;
|
||||
filesize = 0;
|
||||
|
||||
if(!found)
|
||||
{
|
||||
free(filepath);
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
|
||||
char *filepath = (char *) memalign(32, ISFS_MAXPATH);
|
||||
if(!filepath)
|
||||
return NULL;
|
||||
|
||||
snprintf(filepath, ISFS_MAXPATH, "/title/%08x/%08x/content/%08x.app", high, low, bootcontent);
|
||||
gprintf("Loading Channel DOL: %s\n", filepath);
|
||||
@ -212,68 +196,111 @@ u8 * Channels::GetDol(u64 title)
|
||||
if (NandTitle::LoadFileFromNand(filepath, &buffer, &filesize, false) < 0)
|
||||
{
|
||||
gprintf("Failed loading DOL file\n");
|
||||
free(filepath);
|
||||
return NULL;
|
||||
free(filepath);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
free(filepath);
|
||||
|
||||
if (isLZ77compressed(buffer))
|
||||
{
|
||||
u8 *decompressed = NULL;
|
||||
u32 size = 0;
|
||||
if (decompressLZ77content(buffer, filesize, &decompressed, &size) < 0)
|
||||
{
|
||||
gprintf("Decompression failed\n");
|
||||
free(buffer);
|
||||
return NULL;
|
||||
}
|
||||
free(buffer);
|
||||
buffer = decompressed;
|
||||
filesize = size;
|
||||
u8 *decompressed = NULL;
|
||||
u32 size = 0;
|
||||
if (decompressLZ77content(buffer, filesize, &decompressed, &size) < 0)
|
||||
{
|
||||
gprintf("Decompression failed\n");
|
||||
free(buffer);
|
||||
return NULL;
|
||||
}
|
||||
free(buffer);
|
||||
buffer = decompressed;
|
||||
filesize = size;
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
u8 Channels::GetRequestedIOS(u64 title)
|
||||
u8 Channels::GetRequestedIOS(const u64 &title)
|
||||
{
|
||||
u8 IOS = 0;
|
||||
|
||||
char *filepath = (char *) memalign(32, ISFS_MAXPATH);
|
||||
if(!filepath)
|
||||
return 0;
|
||||
u32 tmdSize = 0;
|
||||
u8 *titleTMD = GetTMD(title, &tmdSize, true, "");
|
||||
if (!titleTMD)
|
||||
return 0;
|
||||
|
||||
snprintf(filepath, ISFS_MAXPATH, "/title/%08x/%08x/content/title.tmd", TITLE_UPPER(title), TITLE_LOWER(title));
|
||||
|
||||
u8 *titleTMD = NULL;
|
||||
u32 filesize = 0;
|
||||
|
||||
if (NandTitle::LoadFileFromNand(filepath, &titleTMD, &filesize, false) < 0)
|
||||
{
|
||||
free(filepath);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(filesize > 0x18B)
|
||||
if(tmdSize > 0x18B)
|
||||
IOS = titleTMD[0x18B];
|
||||
|
||||
free(titleTMD);
|
||||
free(filepath);
|
||||
|
||||
return IOS;
|
||||
}
|
||||
|
||||
u32 Channels::LoadChannel(u64 chantitle)
|
||||
u8 *Channels::GetTMD(const u64 &tid, u32 *size, bool isfsInit, const char *prefix)
|
||||
{
|
||||
char *filepath = (char *) memalign(32, ISFS_MAXPATH);
|
||||
if(!filepath)
|
||||
return NULL;
|
||||
|
||||
if(!prefix)
|
||||
prefix = "";
|
||||
|
||||
sprintf(filepath, "%s/title/%08x/%08x/content/title.tmd", prefix, TITLE_UPPER(tid), TITLE_LOWER(tid));
|
||||
|
||||
u8 *tmdBuffer = NULL;
|
||||
u32 tmdSize = 0;
|
||||
|
||||
int ret;
|
||||
|
||||
if(*prefix != '\0')
|
||||
ret = LoadFileToMem(filepath, &tmdBuffer, &tmdSize);
|
||||
else
|
||||
ret = NandTitle::LoadFileFromNand(filepath, &tmdBuffer, &tmdSize, isfsInit);
|
||||
|
||||
free(filepath);
|
||||
|
||||
if (ret < 0)
|
||||
{
|
||||
gprintf("Reading TMD...Failed!\n");
|
||||
if(tmdBuffer)
|
||||
free(tmdBuffer);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(size)
|
||||
*size = tmdSize;
|
||||
|
||||
return tmdBuffer;
|
||||
}
|
||||
|
||||
u32 Channels::LoadChannel(const u64 &chantitle)
|
||||
{
|
||||
ISFS_Initialize();
|
||||
|
||||
u8 *chanDOL = GetDol(chantitle);
|
||||
if(!chanDOL)
|
||||
return 0;
|
||||
|
||||
u32 ios = 0;
|
||||
Identify(chantitle, &ios);
|
||||
u32 tmdSize = 0;
|
||||
u8 *tmdBuffer = GetTMD(chantitle, &tmdSize, false, "");
|
||||
if(!tmdBuffer)
|
||||
{
|
||||
ISFS_Deinitialize();
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 *chanDOL = GetDol(chantitle, tmdBuffer);
|
||||
if(!chanDOL)
|
||||
{
|
||||
ISFS_Deinitialize();
|
||||
free(tmdBuffer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(tmdSize > 0x18B)
|
||||
ios = tmdBuffer[0x18B];
|
||||
|
||||
Identify(chantitle, tmdBuffer, tmdSize);
|
||||
|
||||
free(tmdBuffer);
|
||||
|
||||
dolheader *dolfile = (dolheader *)chanDOL;
|
||||
|
||||
@ -298,7 +325,7 @@ u32 Channels::LoadChannel(u64 chantitle)
|
||||
memmove (dolChunkOffset, chanDOL + dolfile->section_pos[i], dolChunkSize);
|
||||
DCFlushRange(dolChunkOffset, dolChunkSize);
|
||||
|
||||
RegisterDOL(dolChunkOffset, dolChunkSize);
|
||||
RegisterDOL(dolChunkOffset, dolChunkSize);
|
||||
}
|
||||
|
||||
u32 chanEntryPoint = dolfile->entry_point;
|
||||
@ -339,30 +366,18 @@ static bool Identify_GenerateTik(signed_blob **outbuf, u32 *outlen)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Channels::Identify(u64 titleid, u32 *ios)
|
||||
bool Channels::Identify(const u64 &titleid, u8 *tmdBuffer, u32 tmdSize)
|
||||
{
|
||||
char *filepath = (char *) memalign(32, ISFS_MAXPATH);
|
||||
|
||||
sprintf(filepath, "/title/%08x/%08x/content/title.tmd", TITLE_UPPER(titleid), TITLE_LOWER(titleid));
|
||||
|
||||
u8 *tmdBuffer = NULL;
|
||||
u32 tmdSize = 0;
|
||||
if (NandTitle::LoadFileFromNand(filepath, &tmdBuffer, &tmdSize, false) < 0)
|
||||
{
|
||||
free(filepath);
|
||||
gprintf("Reading TMD...Failed!\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
*ios = (u32)(tmdBuffer[0x18b]);
|
||||
if(!filepath)
|
||||
return false;
|
||||
|
||||
u32 tikSize;
|
||||
signed_blob *tikBuffer = NULL;
|
||||
|
||||
if(!Identify_GenerateTik(&tikBuffer,&tikSize))
|
||||
{
|
||||
free(tmdBuffer);
|
||||
free(filepath);
|
||||
free(filepath);
|
||||
gprintf("Generating fake ticket...Failed!");
|
||||
return false;
|
||||
}
|
||||
@ -373,10 +388,9 @@ bool Channels::Identify(u64 titleid, u32 *ios)
|
||||
if (NandTitle::LoadFileFromNand(filepath, &certBuffer, &certSize, false) < 0)
|
||||
{
|
||||
gprintf("Reading certs...Failed!\n");
|
||||
free(tmdBuffer);
|
||||
free(tikBuffer);
|
||||
free(filepath);
|
||||
return false;
|
||||
free(tikBuffer);
|
||||
free(filepath);
|
||||
return false;
|
||||
}
|
||||
s32 ret = ES_Identify((signed_blob*)certBuffer, certSize, (signed_blob*)tmdBuffer, tmdSize, tikBuffer, tikSize, NULL);
|
||||
if (ret < 0)
|
||||
@ -401,9 +415,8 @@ bool Channels::Identify(u64 titleid, u32 *ios)
|
||||
}
|
||||
}
|
||||
|
||||
free(tmdBuffer);
|
||||
free(tikBuffer);
|
||||
free(filepath);
|
||||
free(tikBuffer);
|
||||
free(filepath);
|
||||
free(certBuffer);
|
||||
|
||||
return ret < 0 ? false : true;
|
||||
@ -435,7 +448,7 @@ bool Channels::ParseTitleDir(char *path, int language)
|
||||
if(!dirent->d_name)
|
||||
continue;
|
||||
|
||||
//these can't be booted anyways
|
||||
//these can't be booted anyways
|
||||
if(*dirent->d_name == '.' || strcmp(dirent->d_name, "48414141") == 0 || strcmp(dirent->d_name, "48414641") == 0)
|
||||
{
|
||||
continue;
|
||||
@ -457,28 +470,28 @@ bool Channels::ParseTitleDir(char *path, int language)
|
||||
if(tid == 0x00010001AF1BF516LL || tid == 0x0001000148415858LL)
|
||||
strcpy(id, "JODI");
|
||||
|
||||
std::string TitleName;
|
||||
std::string TitleName;
|
||||
|
||||
const char *title = GameTitles.GetTitle(id);
|
||||
if(title && *title != '\0')
|
||||
{
|
||||
TitleName = title;
|
||||
}
|
||||
else if(GetEmuChanTitle(path, language, TitleName))
|
||||
{
|
||||
GameTitles.SetGameTitle(id, TitleName.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
TitleName = id;
|
||||
}
|
||||
const char *title = GameTitles.GetTitle(id);
|
||||
if(title && *title != '\0')
|
||||
{
|
||||
TitleName = title;
|
||||
}
|
||||
else if(GetEmuChanTitle(path, language, TitleName))
|
||||
{
|
||||
GameTitles.SetGameTitle(id, TitleName.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
TitleName = id;
|
||||
}
|
||||
|
||||
int s = EmuChannels.size();
|
||||
EmuChannels.resize(s + 1);
|
||||
memset(&EmuChannels[s], 0, sizeof(struct discHdr));
|
||||
memcpy(EmuChannels[s].id, id, 4);
|
||||
EmuChannels[s].tid = tid;
|
||||
strncpy(EmuChannels[s].title, TitleName.c_str(), sizeof(EmuChannels[s].title)-1);
|
||||
int s = EmuChannels.size();
|
||||
EmuChannels.resize(s + 1);
|
||||
memset(&EmuChannels[s], 0, sizeof(struct discHdr));
|
||||
memcpy(EmuChannels[s].id, id, 4);
|
||||
EmuChannels[s].tid = tid;
|
||||
strncpy(EmuChannels[s].title, TitleName.c_str(), sizeof(EmuChannels[s].title)-1);
|
||||
}
|
||||
|
||||
closedir(dir);
|
||||
@ -569,15 +582,15 @@ bool Channels::GetEmuChanTitle(char *tmdpath, int language, std::string &Title)
|
||||
for (int i = 0; i < IMET_MAX_NAME_LEN; i++)
|
||||
wName[i] = imet->name_japanese[i + (language * IMET_MAX_NAME_LEN)];
|
||||
|
||||
wString wsname(wName);
|
||||
Title = wsname.toUTF8();
|
||||
wString wsname(wName);
|
||||
Title = wsname.toUTF8();
|
||||
|
||||
free(imet);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
u8 *Channels::GetOpeningBnr(u64 title)
|
||||
u8 *Channels::GetOpeningBnr(const u64 &title)
|
||||
{
|
||||
u8 *banner = NULL;
|
||||
u32 high = TITLE_UPPER(title);
|
||||
|
@ -35,27 +35,28 @@ using namespace std;
|
||||
class Channels
|
||||
{
|
||||
public:
|
||||
static Channels *Instance(void) { if(!instance) instance = new Channels(); return instance; }
|
||||
static void DestroyInstance(void) { if(instance) delete instance; instance = NULL; }
|
||||
static Channels *Instance(void) { if(!instance) instance = new Channels(); return instance; }
|
||||
static void DestroyInstance(void) { if(instance) delete instance; instance = NULL; }
|
||||
|
||||
static u32 LoadChannel(u64 chantitle);
|
||||
static u8 GetRequestedIOS(u64 title);
|
||||
static u8 *GetDol(u64 title);
|
||||
static u8 *GetOpeningBnr(u64 title);
|
||||
static u32 LoadChannel(const u64 &chantitle);
|
||||
static u8 GetRequestedIOS(const u64 &title);
|
||||
static u8 *GetTMD(const u64 &tid, u32 *size, bool isfsInit, const char *prefix);
|
||||
static u8 *GetDol(const u64 &title, u8 *tmdBuffer);
|
||||
static u8 *GetOpeningBnr(const u64 &title);
|
||||
|
||||
void GetChannelList();
|
||||
void GetEmuChannelList();
|
||||
vector<struct discHdr> & GetDiscHeaderList(void);
|
||||
void GetChannelList();
|
||||
void GetEmuChannelList();
|
||||
vector<struct discHdr> & GetDiscHeaderList(void);
|
||||
private:
|
||||
static Channels *instance;
|
||||
static Channels *instance;
|
||||
|
||||
static bool Identify(u64 titleid, u32 *ios);
|
||||
static bool Identify(const u64 &titleid, u8 *tmdBuffer, u32 tmdSize);
|
||||
|
||||
bool ParseTitleDir(char *path, int language);
|
||||
bool GetEmuChanTitle(char *tmdpath, int language, std::string &Title);
|
||||
bool ParseTitleDir(char *path, int language);
|
||||
bool GetEmuChanTitle(char *tmdpath, int language, std::string &Title);
|
||||
|
||||
vector<struct discHdr> NandChannels;
|
||||
vector<struct discHdr> EmuChannels;
|
||||
vector<struct discHdr> NandChannels;
|
||||
vector<struct discHdr> EmuChannels;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -40,6 +40,18 @@ StartUpProcess::StartUpProcess()
|
||||
messageTxt = new GuiText(" ", 22, (GXColor) {255, 255, 255, 255});
|
||||
messageTxt->SetAlignment(ALIGN_CENTER, ALIGN_MIDDLE);
|
||||
messageTxt->SetPosition(screenwidth/2, screenheight/2+60);
|
||||
|
||||
cancelTxt = new GuiText("Press B to cancel", 18, (GXColor) {255, 255, 255, 255});
|
||||
cancelTxt->SetAlignment(ALIGN_CENTER, ALIGN_MIDDLE);
|
||||
cancelTxt->SetPosition(screenwidth/2, screenheight/2+90);
|
||||
|
||||
trigB = new GuiTrigger;
|
||||
trigB->SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
|
||||
|
||||
cancelBtn = new GuiButton(0, 0);
|
||||
cancelBtn->SetTrigger(trigB);
|
||||
|
||||
drawCancel = false;
|
||||
}
|
||||
|
||||
StartUpProcess::~StartUpProcess()
|
||||
@ -48,7 +60,9 @@ StartUpProcess::~StartUpProcess()
|
||||
delete GXImageData;
|
||||
delete GXImage;
|
||||
delete titleTxt;
|
||||
delete messageTxt;
|
||||
delete cancelTxt;
|
||||
delete cancelBtn;
|
||||
delete trigB;
|
||||
}
|
||||
|
||||
int StartUpProcess::ParseArguments(int argc, char *argv[])
|
||||
@ -123,22 +137,33 @@ void StartUpProcess::SetTextf(const char * format, ...)
|
||||
|
||||
bool StartUpProcess::USBSpinUp()
|
||||
{
|
||||
drawCancel = true;
|
||||
bool started = false;
|
||||
const DISC_INTERFACE * handle = Settings.USBPort == 1 ? DeviceHandler::GetUSB1Interface() : DeviceHandler::GetUSB0Interface();
|
||||
Timer countDown;
|
||||
// wait 10 sec for the USB to spin up...stupid slow ass HDD
|
||||
// wait 20 sec for the USB to spin up...stupid slow ass HDD
|
||||
do
|
||||
{
|
||||
started = (handle->startup() && handle->isInserted());
|
||||
if(started)
|
||||
break;
|
||||
|
||||
|
||||
UpdatePads();
|
||||
for(int i = 0; i < 4; ++i)
|
||||
cancelBtn->Update(&userInput[i]);
|
||||
|
||||
if(cancelBtn->GetState() == STATE_CLICKED)
|
||||
break;
|
||||
|
||||
messageTxt->SetTextf("Waiting for HDD: %i sec left\n", 20-(int)countDown.elapsed());
|
||||
Draw();
|
||||
usleep(50000);
|
||||
}
|
||||
while(countDown.elapsed() < 20.f);
|
||||
|
||||
drawCancel = false;
|
||||
|
||||
return started;
|
||||
}
|
||||
|
||||
@ -168,6 +193,8 @@ int StartUpProcess::Execute()
|
||||
Sys_BackToLoader();
|
||||
}
|
||||
|
||||
SetupPads();
|
||||
|
||||
SetTextf("Initialize sd card\n");
|
||||
DeviceHandler::Instance()->MountSD();
|
||||
|
||||
@ -185,17 +212,25 @@ int StartUpProcess::Execute()
|
||||
{
|
||||
SetTextf("Loading cIOS %i\n", Settings.cios);
|
||||
|
||||
// Unmount devices
|
||||
DeviceHandler::DestroyInstance();
|
||||
USBStorage2_Deinit();
|
||||
|
||||
// Shut down pads
|
||||
WPAD_Shutdown();
|
||||
|
||||
// Loading now the cios setup in the settings
|
||||
IosLoader::LoadAppCios();
|
||||
|
||||
SetTextf("Reloading into cIOS %i R%i\n", IOS_GetVersion(), IOS_GetRevision());
|
||||
|
||||
// Re-Mount devices
|
||||
DeviceHandler::Instance()->MountSD();
|
||||
USBSpinUp();
|
||||
DeviceHandler::Instance()->MountAllUSB(false);
|
||||
|
||||
// Start pads again
|
||||
SetupPads();
|
||||
}
|
||||
|
||||
if(!IosLoader::IsHermesIOS())
|
||||
@ -220,7 +255,6 @@ int StartUpProcess::Execute()
|
||||
|
||||
//! Init the rest of the System
|
||||
Sys_Init();
|
||||
SetupPads();
|
||||
InitAudio();
|
||||
setlocale(LC_CTYPE, "C-UTF-8");
|
||||
setlocale(LC_MESSAGES, "C-UTF-8");
|
||||
@ -234,6 +268,8 @@ void StartUpProcess::Draw()
|
||||
GXImage->Draw();
|
||||
titleTxt->Draw();
|
||||
messageTxt->Draw();
|
||||
if(drawCancel)
|
||||
cancelTxt->Draw();
|
||||
Menu_Render();
|
||||
}
|
||||
|
||||
|
@ -18,11 +18,16 @@ class StartUpProcess
|
||||
static int ParseArguments(int argc, char *argv[]);
|
||||
static int QuickGameBoot(const char * gameID);
|
||||
|
||||
bool drawCancel;
|
||||
|
||||
GuiImageData * GXImageData;
|
||||
GuiImage * background;
|
||||
GuiImage * GXImage;
|
||||
GuiText * titleTxt;
|
||||
GuiText * messageTxt;
|
||||
GuiText * cancelTxt;
|
||||
GuiButton * cancelBtn;
|
||||
GuiTrigger * trigB;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -21,10 +21,6 @@ static void _decrypt_title_key(u8 *tik, u8 *title_key)
|
||||
//_aes_cbc_dec(common_key, iv, tik + 0x01bf, 16, title_key);
|
||||
aes_decrypt(iv, tik + 0x01bf, title_key, 16);
|
||||
}
|
||||
static u32 _be32(const u8 *p)
|
||||
{
|
||||
return (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3];
|
||||
}
|
||||
|
||||
static void disc_read(wiidisc_t *d, u32 offset, u8 *data, u32 len)
|
||||
{
|
||||
@ -99,8 +95,8 @@ static u32 do_fst(wiidisc_t *d, u8 *fst, const char *names, u32 i)
|
||||
const char *name;
|
||||
u32 j;
|
||||
|
||||
name = names + (_be32(fst + 12 * i) & 0x00ffffff);
|
||||
size = _be32(fst + 12 * i + 8);
|
||||
name = names + (wbfs_be32(fst + 12 * i) & 0x00ffffff);
|
||||
size = wbfs_be32(fst + 12 * i + 8);
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
@ -122,7 +118,7 @@ static u32 do_fst(wiidisc_t *d, u8 *fst, const char *names, u32 i)
|
||||
}
|
||||
else
|
||||
{
|
||||
offset = _be32(fst + 12 * i + 4);
|
||||
offset = wbfs_be32(fst + 12 * i + 4);
|
||||
|
||||
if (d->extract_pathname && strcasecmp(name, d->extract_pathname) == 0)
|
||||
{
|
||||
@ -148,13 +144,13 @@ static void do_files(wiidisc_t*d)
|
||||
u32 n_files;
|
||||
partition_read(d, 0, b, 0x480, 0);
|
||||
|
||||
dol_offset = _be32(b + 0x0420);
|
||||
fst_offset = _be32(b + 0x0424);
|
||||
fst_size = _be32(b + 0x0428) << 2;
|
||||
dol_offset = wbfs_be32(b + 0x0420);
|
||||
fst_offset = wbfs_be32(b + 0x0424);
|
||||
fst_size = wbfs_be32(b + 0x0428) << 2;
|
||||
|
||||
apl_offset = 0x2440 >> 2;
|
||||
partition_read(d, apl_offset, apl_header, 0x20, 0);
|
||||
apl_size = 0x20 + _be32(apl_header + 0x14) + _be32(apl_header + 0x18);
|
||||
apl_size = 0x20 + wbfs_be32(apl_header + 0x14) + wbfs_be32(apl_header + 0x18);
|
||||
// fake read dol and partition
|
||||
if (apl_size) partition_read(d, apl_offset, 0, apl_size, 1);
|
||||
partition_read(d, dol_offset, 0, (fst_offset - dol_offset) << 2, 1);
|
||||
@ -165,7 +161,7 @@ static void do_files(wiidisc_t*d)
|
||||
if (fst == 0)
|
||||
wbfs_fatal( "malloc fst" );
|
||||
partition_read(d, fst_offset, fst, fst_size, 0);
|
||||
n_files = _be32(fst + 8);
|
||||
n_files = wbfs_be32(fst + 8);
|
||||
|
||||
|
||||
if (d->extract_pathname && strcmp(d->extract_pathname, "FST") == 0)
|
||||
@ -205,12 +201,12 @@ static void do_partition(wiidisc_t*d)
|
||||
partition_raw_read(d, 0, tik, 0x2a4);
|
||||
partition_raw_read(d, 0x2a4 >> 2, b, 0x1c);
|
||||
|
||||
tmd_size = _be32(b);
|
||||
tmd_offset = _be32(b + 4);
|
||||
cert_size = _be32(b + 8);
|
||||
cert_offset = _be32(b + 0x0c);
|
||||
h3_offset = _be32(b + 0x10);
|
||||
d->partition_data_offset = _be32(b + 0x14);
|
||||
tmd_size = wbfs_be32(b);
|
||||
tmd_offset = wbfs_be32(b + 4);
|
||||
cert_size = wbfs_be32(b + 8);
|
||||
cert_offset = wbfs_be32(b + 0x0c);
|
||||
h3_offset = wbfs_be32(b + 0x10);
|
||||
d->partition_data_offset = wbfs_be32(b + 0x14);
|
||||
d->partition_block = (d->partition_raw_offset + d->partition_data_offset) >> 13;
|
||||
tmd = wbfs_ioalloc( tmd_size );
|
||||
if (tmd == 0)
|
||||
@ -264,7 +260,7 @@ static void do_disc(wiidisc_t*d)
|
||||
u32 magic;
|
||||
u32 i;
|
||||
disc_read(d, 0, b, 0x100);
|
||||
magic = _be32(b + 24);
|
||||
magic = wbfs_be32(b + 24);
|
||||
if (magic != 0x5D1C9EA3)
|
||||
{
|
||||
wbfs_iofree( b );
|
||||
@ -272,12 +268,12 @@ static void do_disc(wiidisc_t*d)
|
||||
return;
|
||||
}
|
||||
disc_read(d, 0x40000 >> 2, b, 0x100);
|
||||
n_partitions = _be32(b);
|
||||
disc_read(d, _be32(b + 4), b, 0x100);
|
||||
n_partitions = wbfs_be32(b);
|
||||
disc_read(d, wbfs_be32(b + 4), b, 0x100);
|
||||
for (i = 0; i < n_partitions; i++)
|
||||
{
|
||||
partition_offset[i] = _be32(b + 8 * i);
|
||||
partition_type[i] = _be32(b + 8 * i + 4);
|
||||
partition_offset[i] = wbfs_be32(b + 8 * i);
|
||||
partition_type[i] = wbfs_be32(b + 8 * i + 4);
|
||||
}
|
||||
for (i = 0; i < n_partitions; i++)
|
||||
{
|
||||
@ -340,16 +336,16 @@ void wd_fix_partition_table(wiidisc_t *d, partition_selector_t selector, u8* par
|
||||
u32 n_partitions, i, j;
|
||||
u32 *b32;
|
||||
if (selector == ALL_PARTITIONS) return;
|
||||
n_partitions = _be32(b);
|
||||
if (_be32(b + 4) - (0x40000 >> 2) > 0x50)
|
||||
n_partitions = wbfs_be32(b);
|
||||
if (wbfs_be32(b + 4) - (0x40000 >> 2) > 0x50)
|
||||
wbfs_fatal( "cannot modify this partition table. Please report the bug." );
|
||||
|
||||
b += (_be32(b + 4) - (0x40000 >> 2)) * 4;
|
||||
b += (wbfs_be32(b + 4) - (0x40000 >> 2)) * 4;
|
||||
j = 0;
|
||||
for (i = 0; i < n_partitions; i++)
|
||||
{
|
||||
partition_offset = _be32(b + 8 * i);
|
||||
partition_type = _be32(b + 8 * i + 4);
|
||||
partition_offset = wbfs_be32(b + 8 * i);
|
||||
partition_type = wbfs_be32(b + 8 * i + 4);
|
||||
if (!test_parition_skip(partition_type, selector))
|
||||
{
|
||||
b32 = (u32*) (b + 8 * j);
|
||||
|
@ -1238,23 +1238,22 @@ void GameBrowseMenu::UpdateGameInfoText(const u8 * gameId)
|
||||
|
||||
char gameregion[10];
|
||||
char IDfull[7];
|
||||
memset(IDfull, 0, sizeof(IDfull));
|
||||
snprintf(IDfull, sizeof(IDfull), (char *) gameId);
|
||||
|
||||
switch (IDfull[3])
|
||||
{
|
||||
case 'E':
|
||||
sprintf(gameregion, "NTSC U");
|
||||
strcpy(gameregion, "NTSC U");
|
||||
break;
|
||||
case 'J':
|
||||
sprintf(gameregion, "NTSC J");
|
||||
strcpy(gameregion, "NTSC J");
|
||||
break;
|
||||
case 'W':
|
||||
sprintf(gameregion, "NTSC T");
|
||||
strcpy(gameregion, "NTSC T");
|
||||
break;
|
||||
default:
|
||||
case 'K':
|
||||
sprintf(gameregion, "NTSC K");
|
||||
strcpy(gameregion, "NTSC K");
|
||||
break;
|
||||
case 'P':
|
||||
case 'D':
|
||||
@ -1266,7 +1265,7 @@ void GameBrowseMenu::UpdateGameInfoText(const u8 * gameId)
|
||||
case 'X':
|
||||
case 'Y':
|
||||
case 'Z':
|
||||
sprintf(gameregion, " PAL ");
|
||||
strcpy(gameregion, " PAL ");
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1476,3 +1475,4 @@ void GameBrowseMenu::UpdateFreeSpace(void * arg)
|
||||
|
||||
usedSpaceTxt->SetText(spaceinfo);
|
||||
}
|
||||
|
||||
|
@ -704,6 +704,7 @@ static int LoadGameConfig(const char *CheatFilepath)
|
||||
|
||||
tempgameconf = (u8*) malloc(filesize);
|
||||
if (tempgameconf == NULL) {
|
||||
tempgameconf = (u8 *) defaultgameconfig;
|
||||
fclose(fp);
|
||||
return -1;
|
||||
}
|
||||
@ -715,6 +716,7 @@ static int LoadGameConfig(const char *CheatFilepath)
|
||||
if (ret != filesize)
|
||||
{
|
||||
free(tempgameconf);
|
||||
tempgameconf = (u8 *) defaultgameconfig;
|
||||
return -1;
|
||||
}
|
||||
tempgameconfsize = filesize;
|
||||
@ -725,16 +727,13 @@ static int LoadGameConfig(const char *CheatFilepath)
|
||||
int ocarina_load_code(const char *CheatFilepath, u8 *gameid)
|
||||
{
|
||||
char filepath[150];
|
||||
char id[7];
|
||||
|
||||
gprintf("Ocarina: Searching codes...");
|
||||
gprintf("\n");
|
||||
memset(id, 0, sizeof(id));
|
||||
memcpy(id, gameid, 6);
|
||||
snprintf(filepath, sizeof(filepath), "%s%s.gct", CheatFilepath, id);
|
||||
|
||||
sprintf(filepath, "%s%.6s", CheatFilepath, gameid);
|
||||
filepath[strlen(CheatFilepath) + 6] = 0x2E;
|
||||
filepath[strlen(CheatFilepath) + 7] = 0x67;
|
||||
filepath[strlen(CheatFilepath) + 8] = 0x63;
|
||||
filepath[strlen(CheatFilepath) + 9] = 0x74;
|
||||
filepath[strlen(CheatFilepath) + 10] = 0;
|
||||
gprintf("Ocarina: Searching codes...%s\n", filepath);
|
||||
|
||||
FILE * fp = fopen(filepath, "rb");
|
||||
if (!fp)
|
||||
|
@ -11,8 +11,8 @@ enum
|
||||
|
||||
enum
|
||||
{
|
||||
LOAD_GAMES = 0,
|
||||
LOAD_CHANNELS = 1
|
||||
LOAD_GAMES = 0,
|
||||
LOAD_CHANNELS = 1
|
||||
};
|
||||
|
||||
enum
|
||||
|
@ -196,6 +196,23 @@ int GameBooter::SetupDisc(u8 * gameID)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void GameBooter::ShutDownDevices(int gameUSBPort)
|
||||
{
|
||||
gprintf("Shutting down devices...\n");
|
||||
//! Flush all caches and close up all devices
|
||||
WBFS_CloseAll();
|
||||
DeviceHandler::DestroyInstance();
|
||||
|
||||
//! Shadow mload - Only needed on some games with Hermes v5.1 (Check is inside the function)
|
||||
shadow_mload();
|
||||
|
||||
if(Settings.USBPort == 2)
|
||||
//! Reset USB port because device handler changes it for cache flushing
|
||||
USBStorage2_SetPort(gameUSBPort);
|
||||
USBStorage2_Deinit();
|
||||
USB_Deinitialize();
|
||||
}
|
||||
|
||||
int GameBooter::BootGame(const char * gameID)
|
||||
{
|
||||
if(!gameID || strlen(gameID) < 3)
|
||||
@ -314,15 +331,14 @@ int GameBooter::BootGame(const char * gameID)
|
||||
{
|
||||
gprintf("\tGame Boot\n");
|
||||
AppEntrypoint = BootPartition(Settings.dolpath, videoChoice, alternatedol, alternatedoloffset);
|
||||
//! Flush all caches and close up all devices
|
||||
DeviceHandler::DestroyInstance();
|
||||
// Reading of game is done we can close devices now
|
||||
ShutDownDevices(usbport);
|
||||
}
|
||||
else
|
||||
{
|
||||
//! shutdown now and avoid later crashs with free if memory gets overwritten by channel
|
||||
ShutDownDevices(usbport);
|
||||
gprintf("\tChannel Boot\n");
|
||||
//! Flush all caches and close up all devices
|
||||
//! Avoid later crashs with free if memory gets overwritten by game
|
||||
DeviceHandler::DestroyInstance();
|
||||
/* Setup low memory */
|
||||
Disc_SetLowMem();
|
||||
/* Setup video mode */
|
||||
@ -346,18 +362,6 @@ int GameBooter::BootGame(const char * gameID)
|
||||
//! Load Code handler if needed
|
||||
load_handler(Hooktype, WiirdDebugger, Settings.WiirdDebuggerPause);
|
||||
|
||||
//! Shadow mload - Only needed on some games with Hermes v5.1 (Check is inside the function)
|
||||
shadow_mload();
|
||||
|
||||
gprintf("Shutting down devices...\n");
|
||||
// Close all handlers
|
||||
WBFS_CloseAll();
|
||||
if(Settings.USBPort == 2)
|
||||
//! Reset USB port because device handler changes it for cache flushing
|
||||
USBStorage2_SetPort(usbport);
|
||||
USBStorage2_Deinit();
|
||||
USB_Deinitialize();
|
||||
|
||||
//! Jump to the entrypoint of the game - the last function of the USB Loader
|
||||
gprintf("Jumping to game entrypoint: 0x%08X.\n", AppEntrypoint);
|
||||
return Disc_JumpToEntrypoint(Hooktype, WDMMenu::GetDolParameter());
|
||||
|
@ -30,6 +30,7 @@ class GameBooter
|
||||
static void SetupNandEmu(u8 NandEmuMode, const char *NandEmuPath, struct discHdr &gameHeader);
|
||||
static int SetupDisc(u8 *gameID);
|
||||
static u32 BootPartition(char * dolpath, u8 videoselected, u8 alternatedol, u32 alternatedoloffset);
|
||||
static void ShutDownDevices(int gameUSBPort);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "usbloader/GameList.h"
|
||||
#include "settings/GameTitles.h"
|
||||
#include "xml/GameTDB.hpp"
|
||||
#include "utils/ShowError.h"
|
||||
|
||||
static int FindGamePartition()
|
||||
{
|
||||
@ -66,12 +67,11 @@ static int PartitionChoice()
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
int choice = WindowPrompt(tr( "No WBFS or FAT/NTFS/EXT partition found" ),
|
||||
tr( "You need to select or format a partition" ), tr( "Select" ), tr( "Format" ), tr( "Return" ));
|
||||
|
||||
int choice = WindowPrompt(tr( "No WBFS or FAT/NTFS/EXT partition found" ), tr( "You can select or format a partition or use the channel loader mode." ), tr( "Select" ), tr( "Format" ), tr( "Channels" ));
|
||||
if (choice == 0)
|
||||
{
|
||||
Sys_LoadMenu();
|
||||
Settings.LoaderMode = LOAD_CHANNELS;
|
||||
return 0;
|
||||
}
|
||||
else if(choice == 1)
|
||||
{
|
||||
@ -110,30 +110,34 @@ static int PartitionChoice()
|
||||
***************************************************************************/
|
||||
int MountGamePartition(bool ShowGUI)
|
||||
{
|
||||
s32 ret = -1;
|
||||
gprintf("MountGamePartition()\n");
|
||||
|
||||
s32 wbfsinit = MountWBFS(ShowGUI);
|
||||
if (wbfsinit < 0)
|
||||
s32 wbfsinit = WBFS_Init(WBFS_DEVICE_USB);
|
||||
if (wbfsinit < 0 && Settings.LoaderMode == LOAD_GAMES)
|
||||
{
|
||||
if(ShowGUI) WindowPrompt(tr( "Error !" ), tr( "USB Device not found" ), tr( "OK" ));
|
||||
Sys_LoadMenu();
|
||||
if(ShowGUI)
|
||||
ShowError("%s %s", tr( "USB Device not found." ), tr("Switching to channel list mode."));
|
||||
|
||||
Settings.LoaderMode = LOAD_CHANNELS;
|
||||
}
|
||||
|
||||
s32 ret = -1;
|
||||
|
||||
if(Settings.MultiplePartitions)
|
||||
ret = WBFS_OpenAll();
|
||||
else
|
||||
ret = WBFS_OpenPart(Settings.partition);
|
||||
{
|
||||
if(Settings.MultiplePartitions)
|
||||
ret = WBFS_OpenAll();
|
||||
else
|
||||
ret = WBFS_OpenPart(Settings.partition);
|
||||
|
||||
if(ret < 0)
|
||||
ret = FindGamePartition();
|
||||
if(ret < 0)
|
||||
ret = FindGamePartition();
|
||||
|
||||
if (ret < 0 && ShowGUI)
|
||||
ret = PartitionChoice();
|
||||
|
||||
if(ret < 0)
|
||||
Sys_LoadMenu();
|
||||
if(ret < 0 && Settings.LoaderMode == LOAD_GAMES)
|
||||
{
|
||||
Settings.LoaderMode = LOAD_CHANNELS;
|
||||
if(ShowGUI)
|
||||
ret = PartitionChoice();
|
||||
}
|
||||
}
|
||||
|
||||
gprintf("\tDisc_Init\n");
|
||||
ret = Disc_Init();
|
||||
|
@ -62,13 +62,13 @@ static s32 Nand_Mount(nandDevice *dev)
|
||||
vector = (ioctlv *) memalign(32, sizeof(ioctlv));
|
||||
if(vector == NULL)
|
||||
{
|
||||
/* Close FAT module */
|
||||
IOS_Close(fd);
|
||||
return -2;
|
||||
/* Close FAT module */
|
||||
IOS_Close(fd);
|
||||
return -2;
|
||||
}
|
||||
|
||||
vector[0].data = &partition;
|
||||
vector[0].len = sizeof(u32);
|
||||
vector[0].data = &partition;
|
||||
vector[0].len = sizeof(u32);
|
||||
|
||||
/* Mount device */
|
||||
ret = IOS_Ioctlv(fd, dev->mountCmd, 1, 0, vector);
|
||||
@ -123,15 +123,15 @@ static s32 Nand_Enable(nandDevice *dev)
|
||||
vector = (ioctlv *)memalign(32, sizeof(ioctlv)*2);
|
||||
if(vector == NULL)
|
||||
{
|
||||
/* Close FAT module */
|
||||
IOS_Close(fd);
|
||||
return -2;
|
||||
/* Close FAT module */
|
||||
IOS_Close(fd);
|
||||
return -2;
|
||||
}
|
||||
|
||||
vector[0].data = &mode;
|
||||
vector[0].len = sizeof(u32);
|
||||
vector[1].data = path;
|
||||
vector[1].len = sizeof(path);
|
||||
vector[0].data = &mode;
|
||||
vector[0].len = sizeof(u32);
|
||||
vector[1].data = path;
|
||||
vector[1].len = sizeof(path);
|
||||
|
||||
ret = IOS_Ioctlv(fd, 100, 2, 0, vector);
|
||||
|
||||
|
@ -233,29 +233,3 @@ int WBFS_GetFragList(u8 *id)
|
||||
|
||||
return WbfsList[part_num]->GetFragList(id);
|
||||
}
|
||||
|
||||
int MountWBFS(bool ShowGUI)
|
||||
{
|
||||
if(ShowGUI)
|
||||
return WBFS_Init(WBFS_DEVICE_USB);
|
||||
|
||||
int ret = -1;
|
||||
time_t currTime = time(0);
|
||||
|
||||
while (time(0) - currTime < 30)
|
||||
{
|
||||
ret = WBFS_Init(WBFS_DEVICE_USB);
|
||||
printf("%i...", int(time(0) - currTime));
|
||||
if (ret < 0)
|
||||
sleep(1);
|
||||
else
|
||||
break;
|
||||
|
||||
DeviceHandler::Instance()->UnMountAllUSB();
|
||||
DeviceHandler::Instance()->MountAllUSB();
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -41,7 +41,6 @@ extern "C"
|
||||
bool WBFS_Close(int part);
|
||||
void WBFS_CloseAll();
|
||||
bool WBFS_Selected();
|
||||
int MountWBFS(bool ShowGUI);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -25,63 +25,63 @@
|
||||
|
||||
u32 packBytes(int a, int b, int c, int d)
|
||||
{
|
||||
return (d << 24) | (c << 16) | (b << 8) | (a);
|
||||
return (d << 24) | (c << 16) | (b << 8) | (a);
|
||||
}
|
||||
|
||||
s32 __decompressLZ77_11(u8 *in, u32 inputLen, u8 **output, u32 *outputLen)
|
||||
{
|
||||
int x, y;
|
||||
int x, y;
|
||||
|
||||
u8 *out = NULL;
|
||||
u8 *out = NULL;
|
||||
|
||||
u32 compressedPos = 0x4;
|
||||
u32 decompressedPos = 0x0;
|
||||
u32 decompressedSize = 0;
|
||||
u32 compressedPos = 0x4;
|
||||
u32 decompressedPos = 0x0;
|
||||
u32 decompressedSize = 0;
|
||||
|
||||
decompressedSize = packBytes(in[0], in[1], in[2], in[3]) >> 8;
|
||||
decompressedSize = packBytes(in[0], in[1], in[2], in[3]) >> 8;
|
||||
|
||||
if (!decompressedSize)
|
||||
{
|
||||
decompressedSize = packBytes(in[4], in[5], in[6], in[7]);
|
||||
compressedPos += 0x4;
|
||||
}
|
||||
if (!decompressedSize)
|
||||
{
|
||||
decompressedSize = packBytes(in[4], in[5], in[6], in[7]);
|
||||
compressedPos += 0x4;
|
||||
}
|
||||
|
||||
printf("Decompressed size : %i\n", decompressedSize);
|
||||
printf("Decompressed size : %i\n", decompressedSize);
|
||||
|
||||
out = memalign(32, ALIGN32(decompressedSize));
|
||||
out = memalign(32, ALIGN32(decompressedSize));
|
||||
if (out == NULL)
|
||||
{
|
||||
printf("Out of memory\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
while (compressedPos < inputLen && decompressedPos < decompressedSize)
|
||||
{
|
||||
u8 byteFlag = in[compressedPos];
|
||||
compressedPos++;
|
||||
while (compressedPos < inputLen && decompressedPos < decompressedSize)
|
||||
{
|
||||
u8 byteFlag = in[compressedPos];
|
||||
compressedPos++;
|
||||
|
||||
for (x = 7; x >= 0; x--)
|
||||
{
|
||||
if ((byteFlag & (1 << x)) > 0)
|
||||
{
|
||||
u8 first = in[compressedPos];
|
||||
u8 second = in[compressedPos + 1];
|
||||
for (x = 7; x >= 0; x--)
|
||||
{
|
||||
if ((byteFlag & (1 << x)) > 0)
|
||||
{
|
||||
u8 first = in[compressedPos];
|
||||
u8 second = in[compressedPos + 1];
|
||||
|
||||
u32 pos, copyLen;
|
||||
u32 pos, copyLen;
|
||||
|
||||
if (first < 0x20)
|
||||
{
|
||||
u8 third = in[compressedPos + 2];
|
||||
if (first < 0x20)
|
||||
{
|
||||
u8 third = in[compressedPos + 2];
|
||||
|
||||
if (first >= 0x10)
|
||||
{
|
||||
u32 fourth = in[compressedPos + 3];
|
||||
if (first >= 0x10)
|
||||
{
|
||||
u32 fourth = in[compressedPos + 3];
|
||||
|
||||
pos = (u32)(((third & 0xF) << 8) | fourth) + 1;
|
||||
copyLen = (u32)((second << 4) | ((first & 0xF) << 12) | (third >> 4)) + 273;
|
||||
pos = (u32)(((third & 0xF) << 8) | fourth) + 1;
|
||||
copyLen = (u32)((second << 4) | ((first & 0xF) << 12) | (third >> 4)) + 273;
|
||||
|
||||
compressedPos += 4;
|
||||
} else
|
||||
compressedPos += 4;
|
||||
} else
|
||||
{
|
||||
pos = (u32)(((second & 0xF) << 8) | third) + 1;
|
||||
copyLen = (u32)(((first & 0xF) << 4) | (second >> 4)) + 17;
|
||||
@ -135,7 +135,7 @@ s32 __decompressLZ77_10(u8 *in, u32 inputLen, u8 **output, u32 *outputLen)
|
||||
|
||||
printf("Decompressed size : %i\n", decompressedSize);
|
||||
|
||||
out = memalign(32, ALIGN32(decompressedSize));
|
||||
out = memalign(32, ALIGN32(decompressedSize));
|
||||
if (out == NULL)
|
||||
{
|
||||
printf("Out of memory\n");
|
||||
@ -197,18 +197,18 @@ int isLZ77compressed(u8 *buffer)
|
||||
|
||||
int decompressLZ77content(u8 *buffer, u32 length, u8 **output, u32 *outputLen)
|
||||
{
|
||||
int ret;
|
||||
int ret;
|
||||
switch (buffer[0])
|
||||
{
|
||||
case LZ77_0x10_FLAG:
|
||||
ret = __decompressLZ77_10(buffer, length, output, outputLen);
|
||||
{
|
||||
case LZ77_0x10_FLAG:
|
||||
ret = __decompressLZ77_10(buffer, length, output, outputLen);
|
||||
break;
|
||||
case LZ77_0x11_FLAG:
|
||||
ret = __decompressLZ77_11(buffer, length, output, outputLen);
|
||||
case LZ77_0x11_FLAG:
|
||||
ret = __decompressLZ77_11(buffer, length, output, outputLen);
|
||||
break;
|
||||
default:
|
||||
default:
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
@ -434,13 +434,13 @@ int NandTitle::LoadFileFromNand(const char *filepath, u8 **outbuffer, u32 *outfi
|
||||
if(!stats)
|
||||
return IPC_ENOMEM;
|
||||
|
||||
if(isfsInit) ISFS_Initialize();
|
||||
if(isfsInit) ISFS_Initialize();
|
||||
|
||||
int fd = ISFS_Open(filepath, ISFS_OPEN_READ);
|
||||
if(fd < 0)
|
||||
{
|
||||
free(stats);
|
||||
if(isfsInit) ISFS_Deinitialize();
|
||||
if(isfsInit) ISFS_Deinitialize();
|
||||
return fd;
|
||||
}
|
||||
|
||||
@ -449,7 +449,7 @@ int NandTitle::LoadFileFromNand(const char *filepath, u8 **outbuffer, u32 *outfi
|
||||
{
|
||||
free(stats);
|
||||
ISFS_Close(fd);
|
||||
if(isfsInit) ISFS_Deinitialize();
|
||||
if(isfsInit) ISFS_Deinitialize();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -461,7 +461,7 @@ int NandTitle::LoadFileFromNand(const char *filepath, u8 **outbuffer, u32 *outfi
|
||||
if(!buffer)
|
||||
{
|
||||
ISFS_Close(fd);
|
||||
if(isfsInit) ISFS_Deinitialize();
|
||||
if(isfsInit) ISFS_Deinitialize();
|
||||
return IPC_ENOMEM;
|
||||
}
|
||||
|
||||
|
@ -150,13 +150,13 @@ size_t utf8Len(const char *s)
|
||||
const wchar_t *wcscasestr(const wchar_t *s1, const wchar_t *s2)
|
||||
{
|
||||
if(*s2 == 0)
|
||||
return (wchar_t *)s1;
|
||||
return (wchar_t *)s1;
|
||||
|
||||
int s1_len = wcslen(s1);
|
||||
int s2_len = wcslen(s2);
|
||||
|
||||
if(s1_len < s2_len)
|
||||
return 0;
|
||||
return 0;
|
||||
|
||||
const wchar_t *end = &s1[s1_len-s2_len];
|
||||
for(const wchar_t *s = s1; s <= end; s++)
|
||||
|
Loading…
Reference in New Issue
Block a user