mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-11-22 11:19:17 +01:00
Alright guys, after 3-4 Month of cleaning up the source, it's finally here:
USB Loader GX v2.0 A few cosmetic changes along on this rev: *Removed unused resources *Fix a compile warning *Fixed crash on formatting drive to WBFS *A few source/function movement from one file to another *Renamed global game settings to "Loader Settings"
This commit is contained in:
parent
f9b64b2241
commit
34692131a2
@ -2,8 +2,8 @@
|
|||||||
<app version="1">
|
<app version="1">
|
||||||
<name> USB Loader GX</name>
|
<name> USB Loader GX</name>
|
||||||
<coder>USB Loader GX Team</coder>
|
<coder>USB Loader GX Team</coder>
|
||||||
<version>1.0 r1035</version>
|
<version>2.0 r1036</version>
|
||||||
<release_date>201101081236</release_date>
|
<release_date>201101081426</release_date>
|
||||||
<no_ios_reload/>
|
<no_ios_reload/>
|
||||||
<short_description>Loads games from USB-devices</short_description>
|
<short_description>Loads games from USB-devices</short_description>
|
||||||
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.
|
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: David Jelinek (djelinek@hotmail.com) e->e,r->r,u->u, c->c \n"
|
"Last-Translator: David Jelinek (djelinek@hotmail.com) e->e,r->r,u->u, c->c \n"
|
||||||
"Language-Team: r1000 - last version on http://djelinek.sweb.cz/_USBLoderGX/czech.lang \n"
|
"Language-Team: r1000 - last version on http://djelinek.sweb.cz/_USBLoderGX/czech.lang \n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Nahrát soubor z: %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Spustit tento DOL jako náhradní DOL?"
|
msgstr "Spustit tento DOL jako náhradní DOL?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: dorf[dk]\n"
|
"Last-Translator: dorf[dk]\n"
|
||||||
"Language-Team: dorf[dk]\n"
|
"Language-Team: dorf[dk]\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Indlæs fil fra %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Indlæs denne DOL som alternativ DOL?"
|
msgstr "Indlæs denne DOL som alternativ DOL?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2010-04-12 07:37+0100\n"
|
"PO-Revision-Date: 2010-04-12 07:37+0100\n"
|
||||||
"Last-Translator: glowy\n"
|
"Last-Translator: glowy\n"
|
||||||
"Language-Team: tj_cool, glowy\n"
|
"Language-Team: tj_cool, glowy\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Laad bestand van %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Deze DOL als alt DOL gebruiken?"
|
msgstr "Deze DOL als alt DOL gebruiken?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@ -766,6 +766,9 @@ msgstr ""
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: c64rmx\n"
|
"Last-Translator: c64rmx\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Lataa tiedosto: %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Lataa tämä vaihtoehtoisesti tämä dol?"
|
msgstr "Lataa tämä vaihtoehtoisesti tämä dol?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-06 19:58+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: Andresayang, Cyan, jero\n"
|
"Last-Translator: Andresayang, Cyan, jero\n"
|
||||||
"Language-Team: Badablek, Amour, ikya & Kin8\n"
|
"Language-Team: Badablek, Amour, ikya & Kin8\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Charger le fichier de: %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Charger comme DOL alternatif ?"
|
msgstr "Charger comme DOL alternatif ?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr "Chargement thème par défaut."
|
msgstr "Chargement thème par défaut."
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-06 19:58+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2010-07-03 17:35-0800\n"
|
"PO-Revision-Date: 2010-07-03 17:35-0800\n"
|
||||||
"Last-Translator: TheRealVisitor\n"
|
"Last-Translator: TheRealVisitor\n"
|
||||||
"Language-Team: Bertilax, Snoozer, wishmasterf, ZEN.13, TheRealVisitor\n"
|
"Language-Team: Bertilax, Snoozer, wishmasterf, ZEN.13, TheRealVisitor\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Datei von %s laden?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Diese DOL als Alternative DOL laden?"
|
msgstr "Diese DOL als Alternative DOL laden?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr "Lade Standardtheme"
|
msgstr "Lade Standardtheme"
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-12-29 11:05+0100\n"
|
"PO-Revision-Date: 2009-12-29 11:05+0100\n"
|
||||||
"Last-Translator: Springdale\n"
|
"Last-Translator: Springdale\n"
|
||||||
"Language-Team: Tusk, Springdale\n"
|
"Language-Team: Tusk, Springdale\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Fájl betöltése innen: %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "DOL betöltése alternatív DOL-ként?"
|
msgstr "DOL betöltése alternatív DOL-ként?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
# USB Loader GX language source file.
|
# USB Loader GX language source file.
|
||||||
# italian.lang - v65 - r1033
|
# italian.lang - v66 - r1035
|
||||||
# don't delete/change this line (é).
|
# don't delete/change this line (é).
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2011-01-08 08:30+0200\n"
|
"PO-Revision-Date: 2011-01-09 02:30+0200\n"
|
||||||
"Last-Translator: Cambo \n"
|
"Last-Translator: Cambo \n"
|
||||||
"Language-Team: Cambo\n"
|
"Language-Team: Cambo\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -182,10 +182,10 @@ msgid "Big thanks to:"
|
|||||||
msgstr "Grazie mille a:"
|
msgstr "Grazie mille a:"
|
||||||
|
|
||||||
msgid "Block IOS Reload"
|
msgid "Block IOS Reload"
|
||||||
msgstr "Blocca Ricarica IOS"
|
msgstr "Blocca Ricarica cIOS"
|
||||||
|
|
||||||
msgid "Boot/Standard"
|
msgid "Boot/Standard"
|
||||||
msgstr "Riavvio/Standard"
|
msgstr "cIOS Predefinito"
|
||||||
|
|
||||||
msgid "Boot?"
|
msgid "Boot?"
|
||||||
msgstr "Vuoi riavviare?"
|
msgstr "Vuoi riavviare?"
|
||||||
@ -584,19 +584,19 @@ msgid "GCT File created"
|
|||||||
msgstr "File GCT creato"
|
msgstr "File GCT creato"
|
||||||
|
|
||||||
msgid "GUI Settings"
|
msgid "GUI Settings"
|
||||||
msgstr "Impostazioni Loader"
|
msgstr "Interfaccia Grafica"
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "ID Gioco"
|
msgstr "ID Gioco"
|
||||||
|
|
||||||
msgid "Game IOS"
|
msgid "Game IOS"
|
||||||
msgstr "IOS Gioco"
|
msgstr "cIOS Gioco"
|
||||||
|
|
||||||
msgid "Game Language"
|
msgid "Game Language"
|
||||||
msgstr "Lingua Gioco"
|
msgstr "Lingua Gioco"
|
||||||
|
|
||||||
msgid "Game Load"
|
msgid "Game Load"
|
||||||
msgstr "Impostazioni Gioco"
|
msgstr "Caricamento Giochi"
|
||||||
|
|
||||||
msgid "Game Lock"
|
msgid "Game Lock"
|
||||||
msgstr "Bloccaggio Gioco"
|
msgstr "Bloccaggio Gioco"
|
||||||
@ -766,6 +766,9 @@ msgstr "Vuoi caricare il file da: %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Vuoi caricare questo DOL come DOL alternativo?"
|
msgstr "Vuoi caricare questo DOL come DOL alternativo?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr "Sto caricando il tema predefinito."
|
msgstr "Sto caricando il tema predefinito."
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: hosigumayuugi\n"
|
"Last-Translator: hosigumayuugi\n"
|
||||||
"Language-Team: hosigumayuugi\n"
|
"Language-Team: hosigumayuugi\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "%sからファイルをロードしますか?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "このDOLを代替DOLとしてロードしますか?"
|
msgstr "このDOLを代替DOLとしてロードしますか?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr "標準のテーマを読み込み中"
|
msgstr "標準のテーマを読み込み中"
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: nextos@korea.com\n"
|
"Last-Translator: nextos@korea.com\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@ -766,6 +766,9 @@ msgstr "화일 로드는 %s 에서?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "이 DOL화일을 alternate DOL로 로딩할까요?"
|
msgstr "이 DOL화일을 alternate DOL로 로딩할까요?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: raschi\n"
|
"Last-Translator: raschi\n"
|
||||||
"Language-Team: raschi\n"
|
"Language-Team: raschi\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Start fil fra: %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Last denne DOL som alternativ DOL?"
|
msgstr "Last denne DOL som alternativ DOL?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: ziom666 (zadania_prog@vp.pl)\n"
|
"Last-Translator: ziom666 (zadania_prog@vp.pl)\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Zaladowac plik z: %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Zaladowac ten DOL jako alternatywnt?"
|
msgstr "Zaladowac ten DOL jako alternatywnt?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-23 18:52+0200\n"
|
"PO-Revision-Date: 2009-10-23 18:52+0200\n"
|
||||||
"Last-Translator: aniemotion\n"
|
"Last-Translator: aniemotion\n"
|
||||||
"Language-Team: boto12, aniemotion\n"
|
"Language-Team: boto12, aniemotion\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Carregar arquivo de: %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Carregar este DOL como DOL alternativo?"
|
msgstr "Carregar este DOL como DOL alternativo?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2010-03-22 10:55-0000\n"
|
"PO-Revision-Date: 2010-03-22 10:55-0000\n"
|
||||||
"Last-Translator: Sky8000\n"
|
"Last-Translator: Sky8000\n"
|
||||||
"Language-Team: Sky8000 <sky8000@hotmail.com>\n"
|
"Language-Team: Sky8000 <sky8000@hotmail.com>\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Carregar ficheiro de: %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Carregar este DOL como DOL alternativo?"
|
msgstr "Carregar este DOL como DOL alternativo?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: nikolai_ca\n"
|
"Last-Translator: nikolai_ca\n"
|
||||||
"Language-Team: Kir, alendit, nikolai_ca\n"
|
"Language-Team: Kir, alendit, nikolai_ca\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Загрузить файл из %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Загрузить этот DOL в качестве альтернативного ?"
|
msgstr "Загрузить этот DOL в качестве альтернативного ?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-08 13:01+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: knife.hu kavid emul8ion\n"
|
"Last-Translator: knife.hu kavid emul8ion\n"
|
||||||
"Language-Team: kavid\n"
|
"Language-Team: kavid\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "从%s 加载文件?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "加载这个 DOL 作为 ALT DOL?"
|
msgstr "加载这个 DOL 作为 ALT DOL?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr "正在加载默认主题."
|
msgstr "正在加载默认主题."
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: SirPalax\n"
|
"Last-Translator: SirPalax\n"
|
||||||
"Language-Team: Penn, SirPalax\n"
|
"Language-Team: Penn, SirPalax\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "¿Cargar el archivo desde: %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "¿Cargar este DOL como DOL Alternativo?"
|
msgstr "¿Cargar este DOL como DOL Alternativo?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2010-01-19 17:39+0200\n"
|
"PO-Revision-Date: 2010-01-19 17:39+0200\n"
|
||||||
"Last-Translator: Katsurou\n"
|
"Last-Translator: Katsurou\n"
|
||||||
"Language-Team: Katsurou, pirateX\n"
|
"Language-Team: Katsurou, pirateX\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Ladda fil från: %s?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Ladda denna DOL som alternativ DOL?"
|
msgstr "Ladda denna DOL som alternativ DOL?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-08 09:04+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2010-02-15 21:00+0800\n"
|
"PO-Revision-Date: 2010-02-15 21:00+0800\n"
|
||||||
"Last-Translator: Jane.H\n"
|
"Last-Translator: Jane.H\n"
|
||||||
"Language-Team: kyogc, Miller, Mika Li, Jane.H\n"
|
"Language-Team: kyogc, Miller, Mika Li, Jane.H\n"
|
||||||
@ -395,7 +395,7 @@ msgid "Do you want to format:"
|
|||||||
msgstr "是否格式化:"
|
msgstr "是否格式化:"
|
||||||
|
|
||||||
msgid "Do you want to load the default theme?"
|
msgid "Do you want to load the default theme?"
|
||||||
msgstr ""
|
msgstr "是否要載入預設佈景主題嗎?"
|
||||||
|
|
||||||
msgid "Do you want to load this theme?"
|
msgid "Do you want to load this theme?"
|
||||||
msgstr "是否要載入這佈景主題嗎?"
|
msgstr "是否要載入這佈景主題嗎?"
|
||||||
@ -766,6 +766,9 @@ msgstr "檔案載入位置: %s"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "載入這個 DOL 作為替代 DOL?"
|
msgstr "載入這個 DOL 作為替代 DOL?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr "正在載入預設主題。"
|
msgstr "正在載入預設主題。"
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: Nitro_subzero \n"
|
"Last-Translator: Nitro_subzero \n"
|
||||||
"Language-Team: Nitro_subzero\n"
|
"Language-Team: Nitro_subzero\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "โหลดไฟล์จาก: %s ?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "โหลด DOL นี้เป็น alternate DOL?"
|
msgstr "โหลด DOL นี้เป็น alternate DOL?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: USB Loader GX\n"
|
"Project-Id-Version: USB Loader GX\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-01-07 14:00+0100\n"
|
"POT-Creation-Date: 2011-01-09 11:32+0100\n"
|
||||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||||
"Last-Translator: omercigingelini\n"
|
"Last-Translator: omercigingelini\n"
|
||||||
"Language-Team: omercigingelini\n"
|
"Language-Team: omercigingelini\n"
|
||||||
@ -766,6 +766,9 @@ msgstr "Dosya %s 'ten yüklensin mi?"
|
|||||||
msgid "Load this DOL as alternate DOL?"
|
msgid "Load this DOL as alternate DOL?"
|
||||||
msgstr "Bu DOL alternatif DOL olarak mı yüklensin?"
|
msgstr "Bu DOL alternatif DOL olarak mı yüklensin?"
|
||||||
|
|
||||||
|
msgid "Loader Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Loading default theme."
|
msgid "Loading default theme."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
@ -191,9 +191,6 @@ extern const u32 settings_button_png_size;
|
|||||||
extern const u8 settings_button_over_png[];
|
extern const u8 settings_button_over_png[];
|
||||||
extern const u32 settings_button_over_png_size;
|
extern const u32 settings_button_over_png_size;
|
||||||
|
|
||||||
extern const u8 settings_menu_button_png[];
|
|
||||||
extern const u32 settings_menu_button_png_size;
|
|
||||||
|
|
||||||
extern const u8 wiimote_poweroff_png[];
|
extern const u8 wiimote_poweroff_png[];
|
||||||
extern const u32 wiimote_poweroff_png_size;
|
extern const u32 wiimote_poweroff_png_size;
|
||||||
|
|
||||||
@ -275,15 +272,6 @@ extern const u32 battery_red_png_size;
|
|||||||
extern const u8 battery_bar_red_png[];
|
extern const u8 battery_bar_red_png[];
|
||||||
extern const u32 battery_bar_red_png_size;
|
extern const u32 battery_bar_red_png_size;
|
||||||
|
|
||||||
extern const u8 arrow_next_png[];
|
|
||||||
extern const u32 arrow_next_png_size;
|
|
||||||
|
|
||||||
extern const u8 arrow_previous_png[];
|
|
||||||
extern const u32 arrow_previous_png_size;
|
|
||||||
|
|
||||||
extern const u8 mp3_pause_png[];
|
|
||||||
extern const u32 mp3_pause_png_size;
|
|
||||||
|
|
||||||
extern const u8 exit_top_png[];
|
extern const u8 exit_top_png[];
|
||||||
extern const u32 exit_top_png_size;
|
extern const u32 exit_top_png_size;
|
||||||
|
|
||||||
@ -299,9 +287,6 @@ extern const u32 exit_bottom_over_png_size;
|
|||||||
extern const u8 exit_button_png[];
|
extern const u8 exit_button_png[];
|
||||||
extern const u32 exit_button_png_size;
|
extern const u32 exit_button_png_size;
|
||||||
|
|
||||||
extern const u8 mp3_stop_png[];
|
|
||||||
extern const u32 mp3_stop_png_size;
|
|
||||||
|
|
||||||
extern const u8 favorite_png[];
|
extern const u8 favorite_png[];
|
||||||
extern const u32 favorite_png_size;
|
extern const u32 favorite_png_size;
|
||||||
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
Before Width: | Height: | Size: 3.3 KiB |
Binary file not shown.
Before Width: | Height: | Size: 641 B |
Binary file not shown.
Before Width: | Height: | Size: 1.3 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.9 KiB |
@ -19,7 +19,7 @@
|
|||||||
#include "utils/ShowError.h"
|
#include "utils/ShowError.h"
|
||||||
#include "gecko.h"
|
#include "gecko.h"
|
||||||
|
|
||||||
static const char * LanguageFilesURL = "http://usbloader-gui.googlecode.com/svn/trunk/Languages/";
|
static const char * LanguageFilesURL = "http://usbloader-gui.googlecode.com/svn/tags/USBLoaderGX_v2/Languages/";
|
||||||
|
|
||||||
int DownloadAllLanguageFiles()
|
int DownloadAllLanguageFiles()
|
||||||
{
|
{
|
||||||
|
@ -230,8 +230,8 @@ void GuiImage::SetImage(GuiImageData * img)
|
|||||||
}
|
}
|
||||||
|
|
||||||
image = NULL;
|
image = NULL;
|
||||||
width = NULL;
|
width = 0;
|
||||||
height = NULL;
|
height = 0;
|
||||||
imgType = IMAGE_DATA;
|
imgType = IMAGE_DATA;
|
||||||
|
|
||||||
if(img)
|
if(img)
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "http.h"
|
#include "http.h"
|
||||||
#include "svnrev.h"
|
#include "svnrev.h"
|
||||||
#include "buildtype.h"
|
|
||||||
#include "gecko.h"
|
#include "gecko.h"
|
||||||
#include "update.h"
|
#include "update.h"
|
||||||
|
|
||||||
@ -365,35 +364,6 @@ int NetworkWait()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Update check
|
|
||||||
***************************************************************************/
|
|
||||||
int CheckUpdate()
|
|
||||||
{
|
|
||||||
if (!networkinitialized)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
int revnumber = 0;
|
|
||||||
int currentrev = atoi(GetRev());
|
|
||||||
|
|
||||||
#ifdef FULLCHANNEL
|
|
||||||
struct block file = downloadfile( "http://www.techjawa.com/usbloadergx/wadrev.txt" );
|
|
||||||
#else
|
|
||||||
struct block file = downloadfile("http://www.techjawa.com/usbloadergx/rev.txt");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (file.data != NULL)
|
|
||||||
{
|
|
||||||
revnumber = atoi((char *) file.data);
|
|
||||||
free(file.data);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (revnumber > currentrev)
|
|
||||||
return revnumber;
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* HaltNetwork
|
* HaltNetwork
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
@ -19,7 +19,6 @@ s32 network_request(s32 connection, const char * request, char * filename);
|
|||||||
s32 network_read(s32 connection, u8 *buf, u32 len);
|
s32 network_read(s32 connection, u8 *buf, u32 len);
|
||||||
s32 download_request(const char * url, char * filename = NULL);
|
s32 download_request(const char * url, char * filename = NULL);
|
||||||
void CloseConnection();
|
void CloseConnection();
|
||||||
int CheckUpdate();
|
|
||||||
char * HEAD_Request(const char * url);
|
char * HEAD_Request(const char * url);
|
||||||
void HaltNetworkThread();
|
void HaltNetworkThread();
|
||||||
void ResumeNetworkWait();
|
void ResumeNetworkWait();
|
||||||
|
@ -47,6 +47,8 @@
|
|||||||
#include "prompts/PromptWindows.h"
|
#include "prompts/PromptWindows.h"
|
||||||
#include "FileOperations/fileops.h"
|
#include "FileOperations/fileops.h"
|
||||||
#include "xml/WiiTDB.hpp"
|
#include "xml/WiiTDB.hpp"
|
||||||
|
#include "buildtype.h"
|
||||||
|
#include "svnrev.h"
|
||||||
|
|
||||||
static const char * WiiTDB_URL = "http://wiitdb.com/wiitdb.zip";
|
static const char * WiiTDB_URL = "http://wiitdb.com/wiitdb.zip";
|
||||||
|
|
||||||
@ -196,6 +198,32 @@ static void UpdateMetaXml()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CheckUpdate()
|
||||||
|
{
|
||||||
|
if (!IsNetworkInit())
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
int revnumber = 0;
|
||||||
|
int currentrev = atoi(GetRev());
|
||||||
|
|
||||||
|
#ifdef FULLCHANNEL
|
||||||
|
struct block file = downloadfile( "http://www.techjawa.com/usbloadergx/wadrev.txt" );
|
||||||
|
#else
|
||||||
|
struct block file = downloadfile("http://www.techjawa.com/usbloadergx/rev.txt");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (file.data != NULL)
|
||||||
|
{
|
||||||
|
revnumber = atoi((char *) file.data);
|
||||||
|
free(file.data);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (revnumber > currentrev)
|
||||||
|
return revnumber;
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
static int ApplicationDownload(int newrev)
|
static int ApplicationDownload(int newrev)
|
||||||
{
|
{
|
||||||
bool update_error = false;
|
bool update_error = false;
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#ifndef _UPDATEOPS_H_
|
#ifndef _UPDATEOPS_H_
|
||||||
#define _UPDATEOPS_H_
|
#define _UPDATEOPS_H_
|
||||||
|
|
||||||
|
int CheckUpdate();
|
||||||
int CheckForBetaUpdate();
|
int CheckForBetaUpdate();
|
||||||
int UpdateWiiTDB();
|
int UpdateWiiTDB();
|
||||||
int UpdateApp();
|
int UpdateApp();
|
||||||
|
@ -241,14 +241,11 @@ void WindowCredits()
|
|||||||
i++;
|
i++;
|
||||||
|
|
||||||
#ifdef FULLCHANNEL
|
#ifdef FULLCHANNEL
|
||||||
char svnTmp[4];//did this to hide the M after the rev# that is made by altering it
|
|
||||||
//to be ready to be in a full channel
|
|
||||||
snprintf( svnTmp, sizeof( svnTmp ), "%s", GetRev() );
|
|
||||||
char SvnRev[30];
|
char SvnRev[30];
|
||||||
snprintf( SvnRev, sizeof( SvnRev ), "Rev%sc IOS%u (Rev %u)", svnTmp, IOS_GetVersion(), IOS_GetRevision() );
|
snprintf( SvnRev, sizeof( SvnRev ), "V2.0c IOS%u (Rev %u)", IOS_GetVersion(), IOS_GetRevision() );
|
||||||
#else
|
#else
|
||||||
char SvnRev[30];
|
char SvnRev[30];
|
||||||
snprintf(SvnRev, sizeof(SvnRev), "Rev%s IOS%u (Rev %u)", GetRev(), IOS_GetVersion(), IOS_GetRevision());
|
snprintf(SvnRev, sizeof(SvnRev), "V2.0 IOS%u (Rev %u)", IOS_GetVersion(), IOS_GetRevision());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
txt[i] = new GuiText(SvnRev, 16, ( GXColor ) {255, 255, 255, 255});
|
txt[i] = new GuiText(SvnRev, 16, ( GXColor ) {255, 255, 255, 255});
|
||||||
|
@ -396,7 +396,7 @@ int MenuThemeSelect()
|
|||||||
}
|
}
|
||||||
GuiButton defaultBtn( btnOutline.GetWidth(), btnOutline.GetHeight() );
|
GuiButton defaultBtn( btnOutline.GetWidth(), btnOutline.GetHeight() );
|
||||||
defaultBtn.SetAlignment( ALIGN_CENTRE, ALIGN_TOP );
|
defaultBtn.SetAlignment( ALIGN_CENTRE, ALIGN_TOP );
|
||||||
defaultBtn.SetPosition( 190, 400 );
|
defaultBtn.SetPosition( 0, 400 );
|
||||||
defaultBtn.SetLabel( &defaultBtnTxt );
|
defaultBtn.SetLabel( &defaultBtnTxt );
|
||||||
defaultBtn.SetImage( &defaultBtnImg );
|
defaultBtn.SetImage( &defaultBtnImg );
|
||||||
defaultBtn.SetSoundOver( btnSoundOver );
|
defaultBtn.SetSoundOver( btnSoundOver );
|
||||||
@ -427,6 +427,7 @@ int MenuThemeSelect()
|
|||||||
w.Append( &backgroundImg );
|
w.Append( &backgroundImg );
|
||||||
w.Append( &pathBtn );
|
w.Append( &pathBtn );
|
||||||
w.Append( &backBtn );
|
w.Append( &backBtn );
|
||||||
|
w.Append( &defaultBtn );
|
||||||
w.Append( &optionBrowser4 );
|
w.Append( &optionBrowser4 );
|
||||||
mainWindow->Append( &w );
|
mainWindow->Append( &w );
|
||||||
|
|
||||||
@ -449,12 +450,13 @@ int MenuThemeSelect()
|
|||||||
|
|
||||||
else if ( defaultBtn.GetState() == STATE_CLICKED )
|
else if ( defaultBtn.GetState() == STATE_CLICKED )
|
||||||
{
|
{
|
||||||
choice = WindowPrompt( tr( "Loading default theme." ), 0, tr( "OK" ), tr( "Cancel" ) );
|
choice = WindowPrompt(0, tr( "Do you want to load the default theme?" ), tr( "OK" ), tr( "Cancel" ) );
|
||||||
if ( choice == 1 )
|
if ( choice == 1 )
|
||||||
{
|
{
|
||||||
snprintf(Settings.theme_path, sizeof(Settings.theme_path), "%stheme/", Settings.ConfigPath);
|
HaltGui();
|
||||||
strcpy(Settings.theme, "");
|
|
||||||
Theme::SetDefault();
|
Theme::SetDefault();
|
||||||
|
Theme::Reload();
|
||||||
|
ResumeGui();
|
||||||
Settings.Save();
|
Settings.Save();
|
||||||
returnVal = 1;
|
returnVal = 1;
|
||||||
}
|
}
|
||||||
@ -508,13 +510,16 @@ int MenuThemeSelect()
|
|||||||
if ( !CheckFile( Settings.theme ) )
|
if ( !CheckFile( Settings.theme ) )
|
||||||
{
|
{
|
||||||
WindowPrompt( tr( "File not found." ), tr( "Loading default theme." ), tr( "OK" ) );
|
WindowPrompt( tr( "File not found." ), tr( "Loading default theme." ), tr( "OK" ) );
|
||||||
|
HaltGui();
|
||||||
Theme::SetDefault();
|
Theme::SetDefault();
|
||||||
strcpy(Settings.theme, "");
|
Theme::Reload();
|
||||||
|
ResumeGui();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
HaltGui();
|
HaltGui();
|
||||||
Theme::Load(Settings.theme);
|
Theme::Load(Settings.theme);
|
||||||
|
Theme::Reload();
|
||||||
ResumeGui();
|
ResumeGui();
|
||||||
}
|
}
|
||||||
Settings.Save();
|
Settings.Save();
|
||||||
|
@ -139,25 +139,7 @@ int CustomPathsSM::GetMenuInternal()
|
|||||||
if(parent) parent->SetState(STATE_DEFAULT);
|
if(parent) parent->SetState(STATE_DEFAULT);
|
||||||
this->Append(optionBrowser);
|
this->Append(optionBrowser);
|
||||||
if (res == 1)
|
if (res == 1)
|
||||||
{
|
|
||||||
HaltGui();
|
|
||||||
mainWindow->Remove(bgImg);
|
|
||||||
if(pointer[0]) delete pointer[0];
|
|
||||||
if(pointer[1]) delete pointer[1];
|
|
||||||
if(pointer[2]) delete pointer[2];
|
|
||||||
if(pointer[3]) delete pointer[3];
|
|
||||||
pointer[0] = Resources::GetImageData("player1_point.png");
|
|
||||||
pointer[1] = Resources::GetImageData("player2_point.png");
|
|
||||||
pointer[2] = Resources::GetImageData("player3_point.png");
|
|
||||||
pointer[3] = Resources::GetImageData("player4_point.png");
|
|
||||||
if(background) delete background;
|
|
||||||
background = Resources::GetImageData(Settings.widescreen ? "wbackground.png" : "background.png");
|
|
||||||
if(bgImg) delete bgImg;
|
|
||||||
bgImg = new GuiImage(background);
|
|
||||||
mainWindow->Append(bgImg);
|
|
||||||
ResumeGui();
|
|
||||||
return MENU_SETTINGS;
|
return MENU_SETTINGS;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Settings: WiiTDB Path
|
//! Settings: WiiTDB Path
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Copyright (C) 2010
|
* Copyright (C) 2010
|
||||||
* by Dimok
|
* by Dimok
|
||||||
*
|
*
|
||||||
@ -22,20 +22,14 @@
|
|||||||
* distribution.
|
* distribution.
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include "GameLoadSM.hpp"
|
#include <gccore.h>
|
||||||
#include "Controls/DeviceHandler.hpp"
|
|
||||||
#include "settings/CSettings.h"
|
#include "settings/CSettings.h"
|
||||||
|
#include "themes/CTheme.h"
|
||||||
#include "prompts/PromptWindows.h"
|
#include "prompts/PromptWindows.h"
|
||||||
|
#include "prompts/DiscBrowser.h"
|
||||||
#include "language/gettext.h"
|
#include "language/gettext.h"
|
||||||
#include "wad/nandtitle.h"
|
#include "wad/nandtitle.h"
|
||||||
#include "prompts/TitleBrowser.h"
|
#include "GameLoadSM.hpp"
|
||||||
#include "usbloader/GameList.h"
|
|
||||||
#include "usbloader/wbfs.h"
|
|
||||||
#include "usbloader/utils.h"
|
|
||||||
#include "system/IosLoader.h"
|
|
||||||
#include "settings/GameTitles.h"
|
|
||||||
#include "xml/xml.h"
|
|
||||||
#include "menu.h"
|
|
||||||
|
|
||||||
static const char * OnOffText[MAX_ON_OFF] =
|
static const char * OnOffText[MAX_ON_OFF] =
|
||||||
{
|
{
|
||||||
@ -65,21 +59,7 @@ static const char * LanguageText[MAX_LANGUAGE] =
|
|||||||
trNOOP( "SChinese" ),
|
trNOOP( "SChinese" ),
|
||||||
trNOOP( "TChinese" ),
|
trNOOP( "TChinese" ),
|
||||||
trNOOP( "Korean" ),
|
trNOOP( "Korean" ),
|
||||||
trNOOP( "Console Default" )
|
trNOOP( "Console Default" ),
|
||||||
};
|
|
||||||
|
|
||||||
static const char * InstallToText[INSTALL_TO_MAX] =
|
|
||||||
{
|
|
||||||
trNOOP( "None" ),
|
|
||||||
trNOOP( "GAMEID_Gamename" ),
|
|
||||||
trNOOP( "Gamename [GAMEID]" )
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char * SplitSizeText[INSTALL_TO_MAX] =
|
|
||||||
{
|
|
||||||
trNOOP( "No Splitting" ),
|
|
||||||
trNOOP( "Split each 2GB" ),
|
|
||||||
trNOOP( "Split each 4GB" ),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char * Error002Text[3] =
|
static const char * Error002Text[3] =
|
||||||
@ -89,20 +69,87 @@ static const char * Error002Text[3] =
|
|||||||
trNOOP( "Anti" )
|
trNOOP( "Anti" )
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline bool IsValidPartition(int fs_type, int cios)
|
static const char * ParentalText[5] =
|
||||||
{
|
{
|
||||||
if (IosLoader::IsWaninkokoIOS() && NandTitles.VersionOf(TITLE_ID(1, cios)) < 18)
|
trNOOP( "0 (Everyone)" ),
|
||||||
|
trNOOP( "1 (Child 7+)" ),
|
||||||
|
trNOOP( "2 (Teen 12+)" ),
|
||||||
|
trNOOP( "3 (Mature 16+)" ),
|
||||||
|
trNOOP( "4 (Adults Only 18+)" )
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char * AlternateDOLText[] =
|
||||||
|
{
|
||||||
|
trNOOP( "OFF" ),
|
||||||
|
trNOOP( "Select a DOL from Game" ),
|
||||||
|
trNOOP( "Load From SD/USB" ),
|
||||||
|
};
|
||||||
|
|
||||||
|
GameLoadSM::GameLoadSM(const char * GameID)
|
||||||
|
: SettingsMenu(tr("Game Load"), &GuiOptions, MENU_NONE)
|
||||||
|
{
|
||||||
|
//! Setup default settings from global settings
|
||||||
|
snprintf(GameConfig.id, sizeof(GameConfig.id), "%s", (char *) GameID);
|
||||||
|
SetDefaultConfig();
|
||||||
|
|
||||||
|
GameCFG * existCFG = GameSettings.GetGameCFG(GameID);
|
||||||
|
|
||||||
|
//! Overwrite with existing if available
|
||||||
|
if (existCFG)
|
||||||
|
memcpy(&GameConfig, existCFG, sizeof(GameCFG));
|
||||||
|
|
||||||
|
if(!btnOutline)
|
||||||
|
btnOutline = Resources::GetImageData("button_dialogue_box.png");
|
||||||
|
if(!trigA)
|
||||||
|
trigA = new GuiTrigger();
|
||||||
|
trigA->SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
|
||||||
|
|
||||||
|
saveBtnTxt = new GuiText(tr( "Save" ), 22, thColor("r=0 g=0 b=0 a=255 - prompt windows text color"));
|
||||||
|
saveBtnTxt->SetMaxWidth(btnOutline->GetWidth() - 30);
|
||||||
|
saveBtnImg = new GuiImage (btnOutline);
|
||||||
|
if (Settings.wsprompt == ON)
|
||||||
{
|
{
|
||||||
return fs_type == PART_FS_WBFS;
|
saveBtnTxt->SetWidescreen(Settings.widescreen);
|
||||||
}
|
saveBtnImg->SetWidescreen(Settings.widescreen);
|
||||||
else
|
|
||||||
{
|
|
||||||
return fs_type == PART_FS_WBFS || fs_type == PART_FS_FAT || fs_type == PART_FS_NTFS || fs_type == PART_FS_EXT;
|
|
||||||
}
|
}
|
||||||
|
saveBtn = new GuiButton(saveBtnImg, saveBtnImg, 2, 3, 180, 400, trigA, btnSoundOver, btnSoundClick2, 1);
|
||||||
|
saveBtn->SetLabel(saveBtnTxt);
|
||||||
|
Append(saveBtn);
|
||||||
|
|
||||||
|
SetOptionNames();
|
||||||
|
SetOptionValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
GameLoadSM::GameLoadSM()
|
GameLoadSM::~GameLoadSM()
|
||||||
: SettingsMenu(tr("Game Load"), &GuiOptions, MENU_NONE)
|
{
|
||||||
|
HaltGui();
|
||||||
|
//! The rest is destroyed in SettingsMenu.cpp
|
||||||
|
Remove(saveBtn);
|
||||||
|
delete saveBtnTxt;
|
||||||
|
delete saveBtnImg;
|
||||||
|
delete saveBtn;
|
||||||
|
ResumeGui();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GameLoadSM::SetDefaultConfig()
|
||||||
|
{
|
||||||
|
GameConfig.video = Settings.videomode;
|
||||||
|
GameConfig.language = Settings.language;
|
||||||
|
GameConfig.ocarina = Settings.ocarina;
|
||||||
|
GameConfig.vipatch = Settings.videopatch;
|
||||||
|
GameConfig.ios = Settings.cios;
|
||||||
|
GameConfig.parentalcontrol = 0;
|
||||||
|
GameConfig.errorfix002 = Settings.error002;
|
||||||
|
GameConfig.patchcountrystrings = Settings.patchcountrystrings;
|
||||||
|
GameConfig.loadalternatedol = OFF;
|
||||||
|
GameConfig.alternatedolstart = 0;
|
||||||
|
GameConfig.iosreloadblock = OFF;
|
||||||
|
strcpy(GameConfig.alternatedolname, "");
|
||||||
|
GameConfig.returnTo = 1;
|
||||||
|
GameConfig.Locked = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GameLoadSM::SetOptionNames()
|
||||||
{
|
{
|
||||||
int Idx = 0;
|
int Idx = 0;
|
||||||
|
|
||||||
@ -111,32 +158,14 @@ GameLoadSM::GameLoadSM()
|
|||||||
Options->SetName(Idx++, "%s", tr( "Game Language" ));
|
Options->SetName(Idx++, "%s", tr( "Game Language" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "Patch Country Strings" ));
|
Options->SetName(Idx++, "%s", tr( "Patch Country Strings" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "Ocarina" ));
|
Options->SetName(Idx++, "%s", tr( "Ocarina" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "Boot/Standard" ));
|
Options->SetName(Idx++, "%s", tr( "Game IOS" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "Partition" ));
|
Options->SetName(Idx++, "%s", tr( "Parental Control" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "Install directories" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Game Split Size" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Quick Boot" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Error 002 fix" ));
|
Options->SetName(Idx++, "%s", tr( "Error 002 fix" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "Install partitions" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Return To" ));
|
Options->SetName(Idx++, "%s", tr( "Return To" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "Messageboard Update" ));
|
Options->SetName(Idx++, "%s", tr( "Alternate DOL" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Select DOL Offset" ));
|
||||||
SetOptionValues();
|
Options->SetName(Idx++, "%s", tr( "Block IOS Reload" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Game Lock" ));
|
||||||
OldSettingsPartition = Settings.partition;
|
|
||||||
}
|
|
||||||
|
|
||||||
GameLoadSM::~GameLoadSM()
|
|
||||||
{
|
|
||||||
//! if partition has changed, Reinitialize it
|
|
||||||
if (Settings.partition != OldSettingsPartition)
|
|
||||||
{
|
|
||||||
WBFS_OpenPart(Settings.partition);
|
|
||||||
|
|
||||||
//! Reload the new game titles
|
|
||||||
gameList.ReadGameList();
|
|
||||||
GameTitles.LoadTitlesFromWiiTDB(Settings.titlestxt_path);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameLoadSM::SetOptionValues()
|
void GameLoadSM::SetOptionValues()
|
||||||
@ -144,65 +173,79 @@ void GameLoadSM::SetOptionValues()
|
|||||||
int Idx = 0;
|
int Idx = 0;
|
||||||
|
|
||||||
//! Settings: Video Mode
|
//! Settings: Video Mode
|
||||||
Options->SetValue(Idx++, "%s", tr(VideoModeText[Settings.videomode]));
|
Options->SetValue(Idx++, "%s", tr(VideoModeText[GameConfig.video]));
|
||||||
|
|
||||||
//! Settings: VIDTV Patch
|
//! Settings: VIDTV Patch
|
||||||
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.videopatch] ));
|
Options->SetValue(Idx++, "%s", tr(OnOffText[GameConfig.vipatch]));
|
||||||
|
|
||||||
//! Settings: Game Language
|
//! Settings: Game Language
|
||||||
Options->SetValue(Idx++, "%s", tr( LanguageText[Settings.language] ));
|
Options->SetValue(Idx++, "%s", tr(LanguageText[GameConfig.language]));
|
||||||
|
|
||||||
//! Settings: Patch Country Strings
|
//! Settings: Patch Country Strings
|
||||||
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.patchcountrystrings] ));
|
Options->SetValue(Idx++, "%s", tr(OnOffText[GameConfig.patchcountrystrings]));
|
||||||
|
|
||||||
//! Settings: Ocarina
|
//! Settings: Ocarina
|
||||||
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.ocarina] ));
|
Options->SetValue(Idx++, "%s", tr(OnOffText[GameConfig.ocarina]));
|
||||||
|
|
||||||
//! Settings: Boot/Standard
|
//! Settings: Game IOS
|
||||||
if (Settings.godmode)
|
Options->SetValue(Idx++, "%i", GameConfig.ios);
|
||||||
Options->SetValue(Idx++, "IOS %i", Settings.cios);
|
|
||||||
else
|
|
||||||
Options->SetValue(Idx++, "********");
|
|
||||||
|
|
||||||
//! Settings: Partition
|
//! Settings: Parental Control
|
||||||
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandle();
|
Options->SetValue(Idx++, "%s", tr(ParentalText[GameConfig.parentalcontrol]));
|
||||||
// Get the partition name and it's size in GB's
|
|
||||||
Options->SetValue(Idx++, "%s (%.2fGB)", usbHandle->GetFSName(Settings.partition), usbHandle->GetSize(Settings.partition)/GB_SIZE);
|
|
||||||
|
|
||||||
//! Settings: Install directories
|
|
||||||
Options->SetValue(Idx++, "%s", tr( InstallToText[Settings.InstallToDir] ));
|
|
||||||
|
|
||||||
//! Settings: Game Split Size
|
|
||||||
Options->SetValue(Idx++, "%s", tr( SplitSizeText[Settings.GameSplit] ));
|
|
||||||
|
|
||||||
//! Settings: Quick Boot
|
|
||||||
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.quickboot] ));
|
|
||||||
|
|
||||||
//! Settings: Error 002 fix
|
//! Settings: Error 002 fix
|
||||||
Options->SetValue(Idx++, "%s", tr( Error002Text[Settings.error002] ));
|
Options->SetValue(Idx++, "%s", tr(Error002Text[GameConfig.errorfix002]));
|
||||||
|
|
||||||
//! Settings: Install partitions
|
|
||||||
if(Settings.InstallPartitions == ONLY_GAME_PARTITION)
|
|
||||||
Options->SetValue(Idx++, "%s", tr("Only Game Partition"));
|
|
||||||
else if(Settings.InstallPartitions == ALL_PARTITIONS)
|
|
||||||
Options->SetValue(Idx++, "%s", tr("All Partitions"));
|
|
||||||
else if(Settings.InstallPartitions == REMOVE_UPDATE_PARTITION)
|
|
||||||
Options->SetValue(Idx++, "%s", tr("Remove update"));
|
|
||||||
|
|
||||||
//! Settings: Return To
|
//! Settings: Return To
|
||||||
const char* TitleName = NULL;
|
if(GameConfig.returnTo)
|
||||||
int haveTitle = NandTitles.FindU32(Settings.returnTo);
|
{
|
||||||
if (haveTitle >= 0)
|
const char* TitleName = NULL;
|
||||||
TitleName = NandTitles.NameFromIndex(haveTitle);
|
int haveTitle = NandTitles.FindU32(Settings.returnTo);
|
||||||
TitleName = TitleName ? TitleName : strlen(Settings.returnTo) > 0 ? Settings.returnTo : tr(OnOffText[0]);
|
if (haveTitle >= 0)
|
||||||
Options->SetValue(Idx++, "%s", TitleName);
|
TitleName = NandTitles.NameFromIndex(haveTitle);
|
||||||
|
Options->SetValue(Idx++, "%s", TitleName ? TitleName : strlen(Settings.returnTo) > 0 ?
|
||||||
|
Settings.returnTo : tr( OnOffText[0] ));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Options->SetValue(Idx++, "%s", tr( OnOffText[0] ));
|
||||||
|
}
|
||||||
|
|
||||||
//! Settings: Messageboard Update
|
//! Settings: Alternate DOL
|
||||||
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.PlaylogUpdate] ));
|
Options->SetValue(Idx++, "%s", tr( AlternateDOLText[GameConfig.loadalternatedol] ));
|
||||||
|
|
||||||
|
//! Settings: Select DOL Offset
|
||||||
|
if(GameConfig.loadalternatedol != 1)
|
||||||
|
Options->SetValue(Idx++, tr("Not required"));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(strcmp(GameConfig.alternatedolname, "") != 0)
|
||||||
|
Options->SetValue(Idx++, "%i <%s>", GameConfig.alternatedolstart, GameConfig.alternatedolname);
|
||||||
|
else
|
||||||
|
Options->SetValue(Idx++, "%i", GameConfig.alternatedolstart);
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Block IOS Reload
|
||||||
|
Options->SetValue(Idx++, "%s", tr( OnOffText[GameConfig.iosreloadblock] ));
|
||||||
|
|
||||||
|
//! Settings: Game Lock
|
||||||
|
Options->SetValue(Idx++, "%s", tr( OnOffText[GameConfig.Locked] ));
|
||||||
}
|
}
|
||||||
|
|
||||||
int GameLoadSM::GetMenuInternal()
|
int GameLoadSM::GetMenuInternal()
|
||||||
{
|
{
|
||||||
|
if (saveBtn->GetState() == STATE_CLICKED)
|
||||||
|
{
|
||||||
|
if (GameSettings.AddGame(GameConfig) && GameSettings.Save())
|
||||||
|
{
|
||||||
|
WindowPrompt(tr( "Successfully Saved" ), 0, tr( "OK" ));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
WindowPrompt(tr( "Save Failed. No device inserted?" ), 0, tr( "OK" ));
|
||||||
|
|
||||||
|
saveBtn->ResetState();
|
||||||
|
}
|
||||||
|
|
||||||
int ret = optionBrowser->GetClickedOption();
|
int ret = optionBrowser->GetClickedOption();
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
@ -213,140 +256,148 @@ int GameLoadSM::GetMenuInternal()
|
|||||||
//! Settings: Video Mode
|
//! Settings: Video Mode
|
||||||
if (ret == ++Idx)
|
if (ret == ++Idx)
|
||||||
{
|
{
|
||||||
if (++Settings.videomode >= VIDEO_MODE_MAX) Settings.videomode = 0;
|
if (++GameConfig.video >= VIDEO_MODE_MAX) GameConfig.video = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Settings: VIDTV Patch
|
//! Settings: VIDTV Patch
|
||||||
else if (ret == ++Idx)
|
else if (ret == ++Idx)
|
||||||
{
|
{
|
||||||
if (++Settings.videopatch >= MAX_ON_OFF) Settings.videopatch = 0;
|
if (++GameConfig.vipatch >= MAX_ON_OFF) GameConfig.vipatch = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Settings: Game Language
|
//! Settings: Game Language
|
||||||
else if (ret == ++Idx)
|
else if (ret == ++Idx)
|
||||||
{
|
{
|
||||||
if (++Settings.language >= MAX_LANGUAGE) Settings.language = 0;
|
if (++GameConfig.language >= MAX_LANGUAGE) GameConfig.language = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Settings: Patch Country Strings
|
//! Settings: Patch Country Strings
|
||||||
else if (ret == ++Idx)
|
else if (ret == ++Idx)
|
||||||
{
|
{
|
||||||
if (++Settings.patchcountrystrings >= MAX_ON_OFF) Settings.patchcountrystrings = 0;
|
if (++GameConfig.patchcountrystrings >= MAX_ON_OFF) GameConfig.patchcountrystrings = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Settings: Ocarina
|
//! Settings: Ocarina
|
||||||
else if (ret == ++Idx)
|
else if (ret == ++Idx)
|
||||||
{
|
{
|
||||||
if (++Settings.ocarina >= MAX_ON_OFF) Settings.ocarina = 0;
|
if (++GameConfig.ocarina >= MAX_ON_OFF) GameConfig.ocarina = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Settings: Boot/Standard
|
//! Settings: Game IOS
|
||||||
else if (ret == ++Idx)
|
else if (ret == ++Idx)
|
||||||
{
|
{
|
||||||
if(!Settings.godmode)
|
|
||||||
return MENU_NONE;
|
|
||||||
|
|
||||||
char entered[4];
|
char entered[4];
|
||||||
snprintf(entered, sizeof(entered), "%i", Settings.cios);
|
snprintf(entered, sizeof(entered), "%i", GameConfig.ios);
|
||||||
if(OnScreenKeyboard(entered, sizeof(entered), 0))
|
if(OnScreenKeyboard(entered, sizeof(entered), 0))
|
||||||
{
|
{
|
||||||
Settings.cios = atoi(entered);
|
GameConfig.ios = atoi(entered);
|
||||||
if(Settings.cios < 200) Settings.cios = 200;
|
if(GameConfig.ios < 200) GameConfig.ios = 200;
|
||||||
else if(Settings.cios > 255) Settings.cios = 255;
|
else if(GameConfig.ios > 255) GameConfig.ios = 255;
|
||||||
|
|
||||||
if(NandTitles.IndexOf(TITLE_ID(1, Settings.cios)) < 0)
|
if(NandTitles.IndexOf(TITLE_ID(1, GameConfig.ios)) < 0)
|
||||||
{
|
{
|
||||||
WindowPrompt(tr("Warning:"), tr("This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."), tr("OK"));
|
WindowPrompt(tr("Warning:"), tr("This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."), tr("OK"));
|
||||||
}
|
}
|
||||||
else if(Settings.cios == 254)
|
else if(GameConfig.ios == 254)
|
||||||
{
|
{
|
||||||
WindowPrompt(tr("Warning:"), tr("This IOS is the BootMii ios. If you are sure it is not BootMii and you have something else installed there than ignore this warning."), tr("OK"));
|
WindowPrompt(tr("Warning:"), tr("This IOS is the BootMii ios. If you are sure it is not BootMii and you have something else installed there than ignore this warning."), tr("OK"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Settings: Partition
|
//! Settings: Parental Control
|
||||||
else if (ret == ++Idx)
|
else if (ret == ++Idx)
|
||||||
{
|
{
|
||||||
if(DeviceHandler::Instance()->GetUSBHandle()->GetPartitionCount() < 2)
|
if (++GameConfig.parentalcontrol >= 5) GameConfig.parentalcontrol = 0;
|
||||||
return MENU_NONE;
|
|
||||||
|
|
||||||
// Select the next valid partition, even if that's the same one
|
|
||||||
int fs_type = 0;
|
|
||||||
int ios = IOS_GetVersion();
|
|
||||||
int retries = 20;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
Settings.partition = (Settings.partition + 1) % DeviceHandler::Instance()->GetUSBHandle()->GetPartitionCount();
|
|
||||||
fs_type = DeviceHandler::GetUSBFilesystemType(Settings.partition);
|
|
||||||
}
|
|
||||||
while (!IsValidPartition(fs_type, ios) && --retries > 0);
|
|
||||||
|
|
||||||
if(fs_type == PART_FS_FAT && Settings.GameSplit == GAMESPLIT_NONE)
|
|
||||||
Settings.GameSplit = GAMESPLIT_4GB;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Install directories
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++Settings.InstallToDir >= INSTALL_TO_MAX) Settings.InstallToDir = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Game Split Size
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++Settings.GameSplit >= GAMESPLIT_MAX)
|
|
||||||
{
|
|
||||||
if(DeviceHandler::GetUSBFilesystemType(Settings.partition) == PART_FS_FAT)
|
|
||||||
Settings.GameSplit = GAMESPLIT_2GB;
|
|
||||||
else
|
|
||||||
Settings.GameSplit = GAMESPLIT_NONE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Quick Boot
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++Settings.quickboot >= MAX_ON_OFF) Settings.quickboot = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Settings: Error 002 fix
|
//! Settings: Error 002 fix
|
||||||
else if (ret == ++Idx )
|
|
||||||
{
|
|
||||||
if (++Settings.error002 >= 3) Settings.error002 = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Install partitions
|
|
||||||
else if (ret == ++Idx)
|
else if (ret == ++Idx)
|
||||||
{
|
{
|
||||||
switch(Settings.InstallPartitions)
|
if (++GameConfig.errorfix002 >= 3) GameConfig.errorfix002 = 0;
|
||||||
{
|
|
||||||
case ONLY_GAME_PARTITION:
|
|
||||||
Settings.InstallPartitions = ALL_PARTITIONS;
|
|
||||||
break;
|
|
||||||
case ALL_PARTITIONS:
|
|
||||||
Settings.InstallPartitions = REMOVE_UPDATE_PARTITION;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
case REMOVE_UPDATE_PARTITION:
|
|
||||||
Settings.InstallPartitions = ONLY_GAME_PARTITION;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Settings: Return To
|
//! Settings: Return To
|
||||||
else if (ret == ++Idx)
|
else if (ret == ++Idx)
|
||||||
{
|
{
|
||||||
char tidChar[10];
|
if (++GameConfig.returnTo >= MAX_ON_OFF) GameConfig.returnTo = 0;
|
||||||
bool getChannel = TitleSelector(tidChar);
|
|
||||||
if (getChannel)
|
|
||||||
snprintf(Settings.returnTo, sizeof(Settings.returnTo), "%s", tidChar);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Settings: Messageboard Update
|
//! Settings: Alternate DOL
|
||||||
else if (ret == ++Idx )
|
else if (ret == ++Idx)
|
||||||
{
|
{
|
||||||
if (++Settings.PlaylogUpdate >= MAX_ON_OFF) Settings.PlaylogUpdate = 0;
|
if (++GameConfig.loadalternatedol > 2)
|
||||||
|
GameConfig.loadalternatedol = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Select DOL Offset from Game
|
||||||
|
else if (ret == ++Idx && GameConfig.loadalternatedol == 1)
|
||||||
|
{
|
||||||
|
char filename[10];
|
||||||
|
snprintf(filename, 7, "%s", GameConfig.id);
|
||||||
|
|
||||||
|
//alt dol menu for games that require more than a single alt dol
|
||||||
|
int autodol = autoSelectDolMenu(filename, false);
|
||||||
|
|
||||||
|
if (autodol > 0)
|
||||||
|
{
|
||||||
|
GameConfig.alternatedolstart = autodol;
|
||||||
|
snprintf(GameConfig.alternatedolname, sizeof(GameConfig.alternatedolname), "%s <%i>", tr( "AUTO" ), autodol);
|
||||||
|
SetOptionValues();
|
||||||
|
return MENU_NONE;
|
||||||
|
}
|
||||||
|
else if (autodol == 0)
|
||||||
|
{
|
||||||
|
GameConfig.loadalternatedol = 0;
|
||||||
|
SetOptionValues();
|
||||||
|
return MENU_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//check to see if we already know the offset of the correct dol
|
||||||
|
autodol = autoSelectDol(filename, false);
|
||||||
|
//if we do know that offset ask if they want to use it
|
||||||
|
if (autodol > 0)
|
||||||
|
{
|
||||||
|
int dolchoice = WindowPrompt(0, tr( "Do you want to use the alternate DOL that is known to be correct?" ),
|
||||||
|
tr( "Yes" ), tr( "Pick from a list" ), tr( "Cancel" ));
|
||||||
|
if (dolchoice == 1)
|
||||||
|
{
|
||||||
|
GameConfig.alternatedolstart = autodol;
|
||||||
|
snprintf(GameConfig.alternatedolname, sizeof(GameConfig.alternatedolname), "%s <%i>", tr( "AUTO" ), autodol);
|
||||||
|
}
|
||||||
|
else if (dolchoice == 2) //they want to search for the correct dol themselves
|
||||||
|
{
|
||||||
|
int res = DiscBrowse(GameConfig.id, GameConfig.alternatedolname, sizeof(GameConfig.alternatedolname));
|
||||||
|
if (res >= 0)
|
||||||
|
GameConfig.alternatedolstart = res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int res = DiscBrowse(GameConfig.id, GameConfig.alternatedolname, sizeof(GameConfig.alternatedolname));
|
||||||
|
if (res >= 0)
|
||||||
|
{
|
||||||
|
GameConfig.alternatedolstart = res;
|
||||||
|
char tmp[170];
|
||||||
|
snprintf(tmp, sizeof(tmp), "%s %s - %i", tr( "It seems that you have some information that will be helpful to us. Please pass this information along to the DEV team." ), filename, GameConfig.alternatedolstart);
|
||||||
|
WindowPrompt(0, tmp, tr( "OK" ));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(GameConfig.alternatedolstart == 0)
|
||||||
|
GameConfig.loadalternatedol = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Block IOS Reload
|
||||||
|
else if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
if (++GameConfig.iosreloadblock >= MAX_ON_OFF) GameConfig.iosreloadblock = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Game Lock
|
||||||
|
else if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
if (++GameConfig.Locked >= MAX_ON_OFF) GameConfig.Locked = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
SetOptionValues();
|
SetOptionValues();
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Copyright (C) 2010
|
* Copyright (C) 2010
|
||||||
* by Dimok
|
* by Dimok
|
||||||
*
|
*
|
||||||
@ -21,24 +21,30 @@
|
|||||||
* 3. This notice may not be removed or altered from any source
|
* 3. This notice may not be removed or altered from any source
|
||||||
* distribution.
|
* distribution.
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#ifndef GAMELOADSM_HPP_
|
#ifndef GAMELOAD_SM_HPP
|
||||||
#define GAMELOADSM_HPP_
|
#define GAMELOAD_SM_HPP
|
||||||
|
|
||||||
#include "SettingsMenu.hpp"
|
#include "SettingsMenu.hpp"
|
||||||
|
#include "settings/CGameSettings.h"
|
||||||
|
|
||||||
class GameLoadSM : public SettingsMenu
|
class GameLoadSM : public SettingsMenu
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GameLoadSM();
|
GameLoadSM(const char * GameID);
|
||||||
~GameLoadSM();
|
~GameLoadSM();
|
||||||
virtual int GetType() { return CGameLoadSM; };
|
virtual int GetType() { return CGameLoadSM; };
|
||||||
protected:
|
protected:
|
||||||
|
void SetDefaultConfig();
|
||||||
|
void SetOptionNames();
|
||||||
void SetOptionValues();
|
void SetOptionValues();
|
||||||
int GetMenuInternal();
|
int GetMenuInternal();
|
||||||
|
|
||||||
int OldSettingsPartition;
|
GameCFG GameConfig;
|
||||||
|
|
||||||
OptionList GuiOptions;
|
OptionList GuiOptions;
|
||||||
|
|
||||||
|
GuiText * saveBtnTxt;
|
||||||
|
GuiImage * saveBtnImg;
|
||||||
|
GuiButton * saveBtn;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
#include "language/gettext.h"
|
#include "language/gettext.h"
|
||||||
#include "wad/nandtitle.h"
|
#include "wad/nandtitle.h"
|
||||||
#include "cheats/cheatmenu.h"
|
#include "cheats/cheatmenu.h"
|
||||||
#include "IndGameLoadSM.hpp"
|
#include "GameLoadSM.hpp"
|
||||||
#include "UninstallSM.hpp"
|
#include "UninstallSM.hpp"
|
||||||
|
|
||||||
GameSettingsMenu::GameSettingsMenu(struct discHdr * header)
|
GameSettingsMenu::GameSettingsMenu(struct discHdr * header)
|
||||||
@ -65,7 +65,7 @@ void GameSettingsMenu::CreateSettingsMenu(int menuNr)
|
|||||||
{
|
{
|
||||||
HideMenu();
|
HideMenu();
|
||||||
ResumeGui();
|
ResumeGui();
|
||||||
CurrentMenu = new IndGameLoadSM((const char *) DiscHeader->id);
|
CurrentMenu = new GameLoadSM((const char *) DiscHeader->id);
|
||||||
Append(CurrentMenu);
|
Append(CurrentMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,8 +107,8 @@ void GameSettingsMenu::DeleteSettingsMenu()
|
|||||||
|
|
||||||
switch(type)
|
switch(type)
|
||||||
{
|
{
|
||||||
case CIndGameLoadSM:
|
case CGameLoadSM:
|
||||||
delete ((IndGameLoadSM *) CurrentMenu);
|
delete ((GameLoadSM *) CurrentMenu);
|
||||||
break;
|
break;
|
||||||
case CUninstallSM:
|
case CUninstallSM:
|
||||||
delete ((UninstallSM *) CurrentMenu);
|
delete ((UninstallSM *) CurrentMenu);
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include "network/update.h"
|
#include "network/update.h"
|
||||||
#include "language/gettext.h"
|
#include "language/gettext.h"
|
||||||
#include "GUISettingsMenu.hpp"
|
#include "GUISettingsMenu.hpp"
|
||||||
#include "GameLoadSM.hpp"
|
#include "LoaderSettings.hpp"
|
||||||
#include "ParentalControlSM.hpp"
|
#include "ParentalControlSM.hpp"
|
||||||
#include "SoundSettingsMenu.hpp"
|
#include "SoundSettingsMenu.hpp"
|
||||||
#include "CustomPathsSM.hpp"
|
#include "CustomPathsSM.hpp"
|
||||||
@ -52,7 +52,7 @@ void GlobalSettings::SetupMainButtons()
|
|||||||
int pos = 0;
|
int pos = 0;
|
||||||
|
|
||||||
SetMainButton(pos++, tr( "GUI Settings" ), MainButtonImgData, MainButtonImgOverData);
|
SetMainButton(pos++, tr( "GUI Settings" ), MainButtonImgData, MainButtonImgOverData);
|
||||||
SetMainButton(pos++, tr( "Game Load" ), MainButtonImgData, MainButtonImgOverData);
|
SetMainButton(pos++, tr( "Loader Settings" ), MainButtonImgData, MainButtonImgOverData);
|
||||||
SetMainButton(pos++, tr( "Parental Control" ), MainButtonImgData, MainButtonImgOverData);
|
SetMainButton(pos++, tr( "Parental Control" ), MainButtonImgData, MainButtonImgOverData);
|
||||||
SetMainButton(pos++, tr( "Sound" ), MainButtonImgData, MainButtonImgOverData);
|
SetMainButton(pos++, tr( "Sound" ), MainButtonImgData, MainButtonImgOverData);
|
||||||
SetMainButton(pos++, tr( "Custom Paths" ), MainButtonImgData, MainButtonImgOverData);
|
SetMainButton(pos++, tr( "Custom Paths" ), MainButtonImgData, MainButtonImgOverData);
|
||||||
@ -82,7 +82,7 @@ void GlobalSettings::CreateSettingsMenu(int menuNr)
|
|||||||
{
|
{
|
||||||
HideMenu();
|
HideMenu();
|
||||||
ResumeGui();
|
ResumeGui();
|
||||||
CurrentMenu = new GameLoadSM();
|
CurrentMenu = new LoaderSettings();
|
||||||
Append(CurrentMenu);
|
Append(CurrentMenu);
|
||||||
}
|
}
|
||||||
//! Parental Control
|
//! Parental Control
|
||||||
@ -179,8 +179,8 @@ void GlobalSettings::DeleteSettingsMenu()
|
|||||||
case CGUISettingsMenu:
|
case CGUISettingsMenu:
|
||||||
delete ((GuiSettingsMenu *) CurrentMenu);
|
delete ((GuiSettingsMenu *) CurrentMenu);
|
||||||
break;
|
break;
|
||||||
case CGameLoadSM:
|
case CLoaderSettings:
|
||||||
delete ((GameLoadSM *) CurrentMenu);
|
delete ((LoaderSettings *) CurrentMenu);
|
||||||
break;
|
break;
|
||||||
case CParentalControlSM:
|
case CParentalControlSM:
|
||||||
delete ((ParentalControlSM *) CurrentMenu);
|
delete ((ParentalControlSM *) CurrentMenu);
|
||||||
|
@ -1,407 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
* Copyright (C) 2010
|
|
||||||
* by Dimok
|
|
||||||
*
|
|
||||||
* This software is provided 'as-is', without any express or implied
|
|
||||||
* warranty. In no event will the authors be held liable for any
|
|
||||||
* damages arising from the use of this software.
|
|
||||||
*
|
|
||||||
* Permission is granted to anyone to use this software for any
|
|
||||||
* purpose, including commercial applications, and to alter it and
|
|
||||||
* redistribute it freely, subject to the following restrictions:
|
|
||||||
*
|
|
||||||
* 1. The origin of this software must not be misrepresented; you
|
|
||||||
* must not claim that you wrote the original software. If you use
|
|
||||||
* this software in a product, an acknowledgment in the product
|
|
||||||
* documentation would be appreciated but is not required.
|
|
||||||
*
|
|
||||||
* 2. Altered source versions must be plainly marked as such, and
|
|
||||||
* must not be misrepresented as being the original software.
|
|
||||||
*
|
|
||||||
* 3. This notice may not be removed or altered from any source
|
|
||||||
* distribution.
|
|
||||||
***************************************************************************/
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <gccore.h>
|
|
||||||
#include "settings/CSettings.h"
|
|
||||||
#include "themes/CTheme.h"
|
|
||||||
#include "prompts/PromptWindows.h"
|
|
||||||
#include "prompts/DiscBrowser.h"
|
|
||||||
#include "language/gettext.h"
|
|
||||||
#include "wad/nandtitle.h"
|
|
||||||
#include "IndGameLoadSM.hpp"
|
|
||||||
|
|
||||||
static const char * OnOffText[MAX_ON_OFF] =
|
|
||||||
{
|
|
||||||
trNOOP( "OFF" ),
|
|
||||||
trNOOP( "ON" )
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char * VideoModeText[VIDEO_MODE_MAX] =
|
|
||||||
{
|
|
||||||
trNOOP( "System Default" ),
|
|
||||||
trNOOP( "Disc Default" ),
|
|
||||||
trNOOP( "Force PAL50" ),
|
|
||||||
trNOOP( "Force PAL60" ),
|
|
||||||
trNOOP( "Force NTSC" ),
|
|
||||||
trNOOP( "Region Patch" ),
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char * LanguageText[MAX_LANGUAGE] =
|
|
||||||
{
|
|
||||||
trNOOP( "Japanese" ),
|
|
||||||
trNOOP( "English" ),
|
|
||||||
trNOOP( "German" ),
|
|
||||||
trNOOP( "French" ),
|
|
||||||
trNOOP( "Spanish" ),
|
|
||||||
trNOOP( "Italian" ),
|
|
||||||
trNOOP( "Dutch" ),
|
|
||||||
trNOOP( "SChinese" ),
|
|
||||||
trNOOP( "TChinese" ),
|
|
||||||
trNOOP( "Korean" ),
|
|
||||||
trNOOP( "Console Default" ),
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char * Error002Text[3] =
|
|
||||||
{
|
|
||||||
trNOOP( "No" ),
|
|
||||||
trNOOP( "Yes" ),
|
|
||||||
trNOOP( "Anti" )
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char * ParentalText[5] =
|
|
||||||
{
|
|
||||||
trNOOP( "0 (Everyone)" ),
|
|
||||||
trNOOP( "1 (Child 7+)" ),
|
|
||||||
trNOOP( "2 (Teen 12+)" ),
|
|
||||||
trNOOP( "3 (Mature 16+)" ),
|
|
||||||
trNOOP( "4 (Adults Only 18+)" )
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char * AlternateDOLText[] =
|
|
||||||
{
|
|
||||||
trNOOP( "OFF" ),
|
|
||||||
trNOOP( "Select a DOL from Game" ),
|
|
||||||
trNOOP( "Load From SD/USB" ),
|
|
||||||
};
|
|
||||||
|
|
||||||
IndGameLoadSM::IndGameLoadSM(const char * GameID)
|
|
||||||
: SettingsMenu(tr("Game Load"), &GuiOptions, MENU_NONE)
|
|
||||||
{
|
|
||||||
//! Setup default settings from global settings
|
|
||||||
snprintf(GameConfig.id, sizeof(GameConfig.id), "%s", (char *) GameID);
|
|
||||||
SetDefaultConfig();
|
|
||||||
|
|
||||||
GameCFG * existCFG = GameSettings.GetGameCFG(GameID);
|
|
||||||
|
|
||||||
//! Overwrite with existing if available
|
|
||||||
if (existCFG)
|
|
||||||
memcpy(&GameConfig, existCFG, sizeof(GameCFG));
|
|
||||||
|
|
||||||
if(!btnOutline)
|
|
||||||
btnOutline = Resources::GetImageData("button_dialogue_box.png");
|
|
||||||
if(!trigA)
|
|
||||||
trigA = new GuiTrigger();
|
|
||||||
trigA->SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
|
|
||||||
|
|
||||||
saveBtnTxt = new GuiText(tr( "Save" ), 22, thColor("r=0 g=0 b=0 a=255 - prompt windows text color"));
|
|
||||||
saveBtnTxt->SetMaxWidth(btnOutline->GetWidth() - 30);
|
|
||||||
saveBtnImg = new GuiImage (btnOutline);
|
|
||||||
if (Settings.wsprompt == ON)
|
|
||||||
{
|
|
||||||
saveBtnTxt->SetWidescreen(Settings.widescreen);
|
|
||||||
saveBtnImg->SetWidescreen(Settings.widescreen);
|
|
||||||
}
|
|
||||||
saveBtn = new GuiButton(saveBtnImg, saveBtnImg, 2, 3, 180, 400, trigA, btnSoundOver, btnSoundClick2, 1);
|
|
||||||
saveBtn->SetLabel(saveBtnTxt);
|
|
||||||
Append(saveBtn);
|
|
||||||
|
|
||||||
SetOptionNames();
|
|
||||||
SetOptionValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
IndGameLoadSM::~IndGameLoadSM()
|
|
||||||
{
|
|
||||||
HaltGui();
|
|
||||||
//! The rest is destroyed in SettingsMenu.cpp
|
|
||||||
Remove(saveBtn);
|
|
||||||
delete saveBtnTxt;
|
|
||||||
delete saveBtnImg;
|
|
||||||
delete saveBtn;
|
|
||||||
ResumeGui();
|
|
||||||
}
|
|
||||||
|
|
||||||
void IndGameLoadSM::SetDefaultConfig()
|
|
||||||
{
|
|
||||||
GameConfig.video = Settings.videomode;
|
|
||||||
GameConfig.language = Settings.language;
|
|
||||||
GameConfig.ocarina = Settings.ocarina;
|
|
||||||
GameConfig.vipatch = Settings.videopatch;
|
|
||||||
GameConfig.ios = Settings.cios;
|
|
||||||
GameConfig.parentalcontrol = 0;
|
|
||||||
GameConfig.errorfix002 = Settings.error002;
|
|
||||||
GameConfig.patchcountrystrings = Settings.patchcountrystrings;
|
|
||||||
GameConfig.loadalternatedol = OFF;
|
|
||||||
GameConfig.alternatedolstart = 0;
|
|
||||||
GameConfig.iosreloadblock = OFF;
|
|
||||||
strcpy(GameConfig.alternatedolname, "");
|
|
||||||
GameConfig.returnTo = 1;
|
|
||||||
GameConfig.Locked = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void IndGameLoadSM::SetOptionNames()
|
|
||||||
{
|
|
||||||
int Idx = 0;
|
|
||||||
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Video Mode" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "VIDTV Patch" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Game Language" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Patch Country Strings" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Ocarina" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Game IOS" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Parental Control" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Error 002 fix" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Return To" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Alternate DOL" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Select DOL Offset" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Block IOS Reload" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Game Lock" ));
|
|
||||||
}
|
|
||||||
|
|
||||||
void IndGameLoadSM::SetOptionValues()
|
|
||||||
{
|
|
||||||
int Idx = 0;
|
|
||||||
|
|
||||||
//! Settings: Video Mode
|
|
||||||
Options->SetValue(Idx++, "%s", tr(VideoModeText[GameConfig.video]));
|
|
||||||
|
|
||||||
//! Settings: VIDTV Patch
|
|
||||||
Options->SetValue(Idx++, "%s", tr(OnOffText[GameConfig.vipatch]));
|
|
||||||
|
|
||||||
//! Settings: Game Language
|
|
||||||
Options->SetValue(Idx++, "%s", tr(LanguageText[GameConfig.language]));
|
|
||||||
|
|
||||||
//! Settings: Patch Country Strings
|
|
||||||
Options->SetValue(Idx++, "%s", tr(OnOffText[GameConfig.patchcountrystrings]));
|
|
||||||
|
|
||||||
//! Settings: Ocarina
|
|
||||||
Options->SetValue(Idx++, "%s", tr(OnOffText[GameConfig.ocarina]));
|
|
||||||
|
|
||||||
//! Settings: Game IOS
|
|
||||||
Options->SetValue(Idx++, "%i", GameConfig.ios);
|
|
||||||
|
|
||||||
//! Settings: Parental Control
|
|
||||||
Options->SetValue(Idx++, "%s", tr(ParentalText[GameConfig.parentalcontrol]));
|
|
||||||
|
|
||||||
//! Settings: Error 002 fix
|
|
||||||
Options->SetValue(Idx++, "%s", tr(Error002Text[GameConfig.errorfix002]));
|
|
||||||
|
|
||||||
//! Settings: Return To
|
|
||||||
if(GameConfig.returnTo)
|
|
||||||
{
|
|
||||||
const char* TitleName = NULL;
|
|
||||||
int haveTitle = NandTitles.FindU32(Settings.returnTo);
|
|
||||||
if (haveTitle >= 0)
|
|
||||||
TitleName = NandTitles.NameFromIndex(haveTitle);
|
|
||||||
Options->SetValue(Idx++, "%s", TitleName ? TitleName : strlen(Settings.returnTo) > 0 ?
|
|
||||||
Settings.returnTo : tr( OnOffText[0] ));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Options->SetValue(Idx++, "%s", tr( OnOffText[0] ));
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Alternate DOL
|
|
||||||
Options->SetValue(Idx++, "%s", tr( AlternateDOLText[GameConfig.loadalternatedol] ));
|
|
||||||
|
|
||||||
//! Settings: Select DOL Offset
|
|
||||||
if(GameConfig.loadalternatedol != 1)
|
|
||||||
Options->SetValue(Idx++, tr("Not required"));
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(strcmp(GameConfig.alternatedolname, "") != 0)
|
|
||||||
Options->SetValue(Idx++, "%i <%s>", GameConfig.alternatedolstart, GameConfig.alternatedolname);
|
|
||||||
else
|
|
||||||
Options->SetValue(Idx++, "%i", GameConfig.alternatedolstart);
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Block IOS Reload
|
|
||||||
Options->SetValue(Idx++, "%s", tr( OnOffText[GameConfig.iosreloadblock] ));
|
|
||||||
|
|
||||||
//! Settings: Game Lock
|
|
||||||
Options->SetValue(Idx++, "%s", tr( OnOffText[GameConfig.Locked] ));
|
|
||||||
}
|
|
||||||
|
|
||||||
int IndGameLoadSM::GetMenuInternal()
|
|
||||||
{
|
|
||||||
if (saveBtn->GetState() == STATE_CLICKED)
|
|
||||||
{
|
|
||||||
if (GameSettings.AddGame(GameConfig) && GameSettings.Save())
|
|
||||||
{
|
|
||||||
WindowPrompt(tr( "Successfully Saved" ), 0, tr( "OK" ));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
WindowPrompt(tr( "Save Failed. No device inserted?" ), 0, tr( "OK" ));
|
|
||||||
|
|
||||||
saveBtn->ResetState();
|
|
||||||
}
|
|
||||||
|
|
||||||
int ret = optionBrowser->GetClickedOption();
|
|
||||||
|
|
||||||
if (ret < 0)
|
|
||||||
return MENU_NONE;
|
|
||||||
|
|
||||||
int Idx = -1;
|
|
||||||
|
|
||||||
//! Settings: Video Mode
|
|
||||||
if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++GameConfig.video >= VIDEO_MODE_MAX) GameConfig.video = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: VIDTV Patch
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++GameConfig.vipatch >= MAX_ON_OFF) GameConfig.vipatch = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Game Language
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++GameConfig.language >= MAX_LANGUAGE) GameConfig.language = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Patch Country Strings
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++GameConfig.patchcountrystrings >= MAX_ON_OFF) GameConfig.patchcountrystrings = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Ocarina
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++GameConfig.ocarina >= MAX_ON_OFF) GameConfig.ocarina = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Game IOS
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
char entered[4];
|
|
||||||
snprintf(entered, sizeof(entered), "%i", GameConfig.ios);
|
|
||||||
if(OnScreenKeyboard(entered, sizeof(entered), 0))
|
|
||||||
{
|
|
||||||
GameConfig.ios = atoi(entered);
|
|
||||||
if(GameConfig.ios < 200) GameConfig.ios = 200;
|
|
||||||
else if(GameConfig.ios > 255) GameConfig.ios = 255;
|
|
||||||
|
|
||||||
if(NandTitles.IndexOf(TITLE_ID(1, GameConfig.ios)) < 0)
|
|
||||||
{
|
|
||||||
WindowPrompt(tr("Warning:"), tr("This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."), tr("OK"));
|
|
||||||
}
|
|
||||||
else if(GameConfig.ios == 254)
|
|
||||||
{
|
|
||||||
WindowPrompt(tr("Warning:"), tr("This IOS is the BootMii ios. If you are sure it is not BootMii and you have something else installed there than ignore this warning."), tr("OK"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Parental Control
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++GameConfig.parentalcontrol >= 5) GameConfig.parentalcontrol = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Error 002 fix
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++GameConfig.errorfix002 >= 3) GameConfig.errorfix002 = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Return To
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++GameConfig.returnTo >= MAX_ON_OFF) GameConfig.returnTo = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Alternate DOL
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++GameConfig.loadalternatedol > 2)
|
|
||||||
GameConfig.loadalternatedol = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Select DOL Offset from Game
|
|
||||||
else if (ret == ++Idx && GameConfig.loadalternatedol == 1)
|
|
||||||
{
|
|
||||||
char filename[10];
|
|
||||||
snprintf(filename, 7, "%s", GameConfig.id);
|
|
||||||
|
|
||||||
//alt dol menu for games that require more than a single alt dol
|
|
||||||
int autodol = autoSelectDolMenu(filename, false);
|
|
||||||
|
|
||||||
if (autodol > 0)
|
|
||||||
{
|
|
||||||
GameConfig.alternatedolstart = autodol;
|
|
||||||
snprintf(GameConfig.alternatedolname, sizeof(GameConfig.alternatedolname), "%s <%i>", tr( "AUTO" ), autodol);
|
|
||||||
SetOptionValues();
|
|
||||||
return MENU_NONE;
|
|
||||||
}
|
|
||||||
else if (autodol == 0)
|
|
||||||
{
|
|
||||||
GameConfig.loadalternatedol = 0;
|
|
||||||
SetOptionValues();
|
|
||||||
return MENU_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
//check to see if we already know the offset of the correct dol
|
|
||||||
autodol = autoSelectDol(filename, false);
|
|
||||||
//if we do know that offset ask if they want to use it
|
|
||||||
if (autodol > 0)
|
|
||||||
{
|
|
||||||
int dolchoice = WindowPrompt(0, tr( "Do you want to use the alternate DOL that is known to be correct?" ),
|
|
||||||
tr( "Yes" ), tr( "Pick from a list" ), tr( "Cancel" ));
|
|
||||||
if (dolchoice == 1)
|
|
||||||
{
|
|
||||||
GameConfig.alternatedolstart = autodol;
|
|
||||||
snprintf(GameConfig.alternatedolname, sizeof(GameConfig.alternatedolname), "%s <%i>", tr( "AUTO" ), autodol);
|
|
||||||
}
|
|
||||||
else if (dolchoice == 2) //they want to search for the correct dol themselves
|
|
||||||
{
|
|
||||||
int res = DiscBrowse(GameConfig.id, GameConfig.alternatedolname, sizeof(GameConfig.alternatedolname));
|
|
||||||
if (res >= 0)
|
|
||||||
GameConfig.alternatedolstart = res;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int res = DiscBrowse(GameConfig.id, GameConfig.alternatedolname, sizeof(GameConfig.alternatedolname));
|
|
||||||
if (res >= 0)
|
|
||||||
{
|
|
||||||
GameConfig.alternatedolstart = res;
|
|
||||||
char tmp[170];
|
|
||||||
snprintf(tmp, sizeof(tmp), "%s %s - %i", tr( "It seems that you have some information that will be helpful to us. Please pass this information along to the DEV team." ), filename, GameConfig.alternatedolstart);
|
|
||||||
WindowPrompt(0, tmp, tr( "OK" ));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(GameConfig.alternatedolstart == 0)
|
|
||||||
GameConfig.loadalternatedol = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Block IOS Reload
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++GameConfig.iosreloadblock >= MAX_ON_OFF) GameConfig.iosreloadblock = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Game Lock
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++GameConfig.Locked >= MAX_ON_OFF) GameConfig.Locked = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetOptionValues();
|
|
||||||
|
|
||||||
return MENU_NONE;
|
|
||||||
}
|
|
||||||
|
|
356
source/settings/menus/LoaderSettings.cpp
Normal file
356
source/settings/menus/LoaderSettings.cpp
Normal file
@ -0,0 +1,356 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* Copyright (C) 2010
|
||||||
|
* by Dimok
|
||||||
|
*
|
||||||
|
* This software is provided 'as-is', without any express or implied
|
||||||
|
* warranty. In no event will the authors be held liable for any
|
||||||
|
* damages arising from the use of this software.
|
||||||
|
*
|
||||||
|
* Permission is granted to anyone to use this software for any
|
||||||
|
* purpose, including commercial applications, and to alter it and
|
||||||
|
* redistribute it freely, subject to the following restrictions:
|
||||||
|
*
|
||||||
|
* 1. The origin of this software must not be misrepresented; you
|
||||||
|
* must not claim that you wrote the original software. If you use
|
||||||
|
* this software in a product, an acknowledgment in the product
|
||||||
|
* documentation would be appreciated but is not required.
|
||||||
|
*
|
||||||
|
* 2. Altered source versions must be plainly marked as such, and
|
||||||
|
* must not be misrepresented as being the original software.
|
||||||
|
*
|
||||||
|
* 3. This notice may not be removed or altered from any source
|
||||||
|
* distribution.
|
||||||
|
***************************************************************************/
|
||||||
|
#include <unistd.h>
|
||||||
|
#include "LoaderSettings.hpp"
|
||||||
|
#include "Controls/DeviceHandler.hpp"
|
||||||
|
#include "settings/CSettings.h"
|
||||||
|
#include "prompts/PromptWindows.h"
|
||||||
|
#include "language/gettext.h"
|
||||||
|
#include "wad/nandtitle.h"
|
||||||
|
#include "prompts/TitleBrowser.h"
|
||||||
|
#include "usbloader/GameList.h"
|
||||||
|
#include "usbloader/wbfs.h"
|
||||||
|
#include "usbloader/utils.h"
|
||||||
|
#include "system/IosLoader.h"
|
||||||
|
#include "settings/GameTitles.h"
|
||||||
|
#include "xml/xml.h"
|
||||||
|
#include "menu.h"
|
||||||
|
|
||||||
|
static const char * OnOffText[MAX_ON_OFF] =
|
||||||
|
{
|
||||||
|
trNOOP( "OFF" ),
|
||||||
|
trNOOP( "ON" )
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char * VideoModeText[VIDEO_MODE_MAX] =
|
||||||
|
{
|
||||||
|
trNOOP( "System Default" ),
|
||||||
|
trNOOP( "Disc Default" ),
|
||||||
|
trNOOP( "Force PAL50" ),
|
||||||
|
trNOOP( "Force PAL60" ),
|
||||||
|
trNOOP( "Force NTSC" ),
|
||||||
|
trNOOP( "Region Patch" ),
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char * LanguageText[MAX_LANGUAGE] =
|
||||||
|
{
|
||||||
|
trNOOP( "Japanese" ),
|
||||||
|
trNOOP( "English" ),
|
||||||
|
trNOOP( "German" ),
|
||||||
|
trNOOP( "French" ),
|
||||||
|
trNOOP( "Spanish" ),
|
||||||
|
trNOOP( "Italian" ),
|
||||||
|
trNOOP( "Dutch" ),
|
||||||
|
trNOOP( "SChinese" ),
|
||||||
|
trNOOP( "TChinese" ),
|
||||||
|
trNOOP( "Korean" ),
|
||||||
|
trNOOP( "Console Default" )
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char * InstallToText[INSTALL_TO_MAX] =
|
||||||
|
{
|
||||||
|
trNOOP( "None" ),
|
||||||
|
trNOOP( "GAMEID_Gamename" ),
|
||||||
|
trNOOP( "Gamename [GAMEID]" )
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char * SplitSizeText[INSTALL_TO_MAX] =
|
||||||
|
{
|
||||||
|
trNOOP( "No Splitting" ),
|
||||||
|
trNOOP( "Split each 2GB" ),
|
||||||
|
trNOOP( "Split each 4GB" ),
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char * Error002Text[3] =
|
||||||
|
{
|
||||||
|
trNOOP( "No" ),
|
||||||
|
trNOOP( "Yes" ),
|
||||||
|
trNOOP( "Anti" )
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline bool IsValidPartition(int fs_type, int cios)
|
||||||
|
{
|
||||||
|
if (IosLoader::IsWaninkokoIOS() && NandTitles.VersionOf(TITLE_ID(1, cios)) < 18)
|
||||||
|
{
|
||||||
|
return fs_type == PART_FS_WBFS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return fs_type == PART_FS_WBFS || fs_type == PART_FS_FAT || fs_type == PART_FS_NTFS || fs_type == PART_FS_EXT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LoaderSettings::LoaderSettings()
|
||||||
|
: SettingsMenu(tr("Loader Settings"), &GuiOptions, MENU_NONE)
|
||||||
|
{
|
||||||
|
int Idx = 0;
|
||||||
|
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Video Mode" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "VIDTV Patch" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Game Language" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Patch Country Strings" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Ocarina" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Boot/Standard" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Partition" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Install directories" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Game Split Size" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Quick Boot" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Error 002 fix" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Install partitions" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Return To" ));
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Messageboard Update" ));
|
||||||
|
|
||||||
|
SetOptionValues();
|
||||||
|
|
||||||
|
OldSettingsPartition = Settings.partition;
|
||||||
|
}
|
||||||
|
|
||||||
|
LoaderSettings::~LoaderSettings()
|
||||||
|
{
|
||||||
|
//! if partition has changed, Reinitialize it
|
||||||
|
if (Settings.partition != OldSettingsPartition)
|
||||||
|
{
|
||||||
|
WBFS_OpenPart(Settings.partition);
|
||||||
|
|
||||||
|
//! Reload the new game titles
|
||||||
|
gameList.ReadGameList();
|
||||||
|
GameTitles.LoadTitlesFromWiiTDB(Settings.titlestxt_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoaderSettings::SetOptionValues()
|
||||||
|
{
|
||||||
|
int Idx = 0;
|
||||||
|
|
||||||
|
//! Settings: Video Mode
|
||||||
|
Options->SetValue(Idx++, "%s", tr(VideoModeText[Settings.videomode]));
|
||||||
|
|
||||||
|
//! Settings: VIDTV Patch
|
||||||
|
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.videopatch] ));
|
||||||
|
|
||||||
|
//! Settings: Game Language
|
||||||
|
Options->SetValue(Idx++, "%s", tr( LanguageText[Settings.language] ));
|
||||||
|
|
||||||
|
//! Settings: Patch Country Strings
|
||||||
|
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.patchcountrystrings] ));
|
||||||
|
|
||||||
|
//! Settings: Ocarina
|
||||||
|
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.ocarina] ));
|
||||||
|
|
||||||
|
//! Settings: Boot/Standard
|
||||||
|
if (Settings.godmode)
|
||||||
|
Options->SetValue(Idx++, "IOS %i", Settings.cios);
|
||||||
|
else
|
||||||
|
Options->SetValue(Idx++, "********");
|
||||||
|
|
||||||
|
//! Settings: Partition
|
||||||
|
PartitionHandle * usbHandle = DeviceHandler::Instance()->GetUSBHandle();
|
||||||
|
// Get the partition name and it's size in GB's
|
||||||
|
Options->SetValue(Idx++, "%s (%.2fGB)", usbHandle->GetFSName(Settings.partition), usbHandle->GetSize(Settings.partition)/GB_SIZE);
|
||||||
|
|
||||||
|
//! Settings: Install directories
|
||||||
|
Options->SetValue(Idx++, "%s", tr( InstallToText[Settings.InstallToDir] ));
|
||||||
|
|
||||||
|
//! Settings: Game Split Size
|
||||||
|
Options->SetValue(Idx++, "%s", tr( SplitSizeText[Settings.GameSplit] ));
|
||||||
|
|
||||||
|
//! Settings: Quick Boot
|
||||||
|
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.quickboot] ));
|
||||||
|
|
||||||
|
//! Settings: Error 002 fix
|
||||||
|
Options->SetValue(Idx++, "%s", tr( Error002Text[Settings.error002] ));
|
||||||
|
|
||||||
|
//! Settings: Install partitions
|
||||||
|
if(Settings.InstallPartitions == ONLY_GAME_PARTITION)
|
||||||
|
Options->SetValue(Idx++, "%s", tr("Only Game Partition"));
|
||||||
|
else if(Settings.InstallPartitions == ALL_PARTITIONS)
|
||||||
|
Options->SetValue(Idx++, "%s", tr("All Partitions"));
|
||||||
|
else if(Settings.InstallPartitions == REMOVE_UPDATE_PARTITION)
|
||||||
|
Options->SetValue(Idx++, "%s", tr("Remove update"));
|
||||||
|
|
||||||
|
//! Settings: Return To
|
||||||
|
const char* TitleName = NULL;
|
||||||
|
int haveTitle = NandTitles.FindU32(Settings.returnTo);
|
||||||
|
if (haveTitle >= 0)
|
||||||
|
TitleName = NandTitles.NameFromIndex(haveTitle);
|
||||||
|
TitleName = TitleName ? TitleName : strlen(Settings.returnTo) > 0 ? Settings.returnTo : tr(OnOffText[0]);
|
||||||
|
Options->SetValue(Idx++, "%s", TitleName);
|
||||||
|
|
||||||
|
//! Settings: Messageboard Update
|
||||||
|
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.PlaylogUpdate] ));
|
||||||
|
}
|
||||||
|
|
||||||
|
int LoaderSettings::GetMenuInternal()
|
||||||
|
{
|
||||||
|
int ret = optionBrowser->GetClickedOption();
|
||||||
|
|
||||||
|
if (ret < 0)
|
||||||
|
return MENU_NONE;
|
||||||
|
|
||||||
|
int Idx = -1;
|
||||||
|
|
||||||
|
//! Settings: Video Mode
|
||||||
|
if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
if (++Settings.videomode >= VIDEO_MODE_MAX) Settings.videomode = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: VIDTV Patch
|
||||||
|
else if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
if (++Settings.videopatch >= MAX_ON_OFF) Settings.videopatch = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Game Language
|
||||||
|
else if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
if (++Settings.language >= MAX_LANGUAGE) Settings.language = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Patch Country Strings
|
||||||
|
else if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
if (++Settings.patchcountrystrings >= MAX_ON_OFF) Settings.patchcountrystrings = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Ocarina
|
||||||
|
else if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
if (++Settings.ocarina >= MAX_ON_OFF) Settings.ocarina = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Boot/Standard
|
||||||
|
else if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
if(!Settings.godmode)
|
||||||
|
return MENU_NONE;
|
||||||
|
|
||||||
|
char entered[4];
|
||||||
|
snprintf(entered, sizeof(entered), "%i", Settings.cios);
|
||||||
|
if(OnScreenKeyboard(entered, sizeof(entered), 0))
|
||||||
|
{
|
||||||
|
Settings.cios = atoi(entered);
|
||||||
|
if(Settings.cios < 200) Settings.cios = 200;
|
||||||
|
else if(Settings.cios > 255) Settings.cios = 255;
|
||||||
|
|
||||||
|
if(NandTitles.IndexOf(TITLE_ID(1, Settings.cios)) < 0)
|
||||||
|
{
|
||||||
|
WindowPrompt(tr("Warning:"), tr("This IOS was not found on the titles list. If you are sure you have it installed than ignore this warning."), tr("OK"));
|
||||||
|
}
|
||||||
|
else if(Settings.cios == 254)
|
||||||
|
{
|
||||||
|
WindowPrompt(tr("Warning:"), tr("This IOS is the BootMii ios. If you are sure it is not BootMii and you have something else installed there than ignore this warning."), tr("OK"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Partition
|
||||||
|
else if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
if(DeviceHandler::Instance()->GetUSBHandle()->GetPartitionCount() < 2)
|
||||||
|
return MENU_NONE;
|
||||||
|
|
||||||
|
// Select the next valid partition, even if that's the same one
|
||||||
|
int fs_type = 0;
|
||||||
|
int ios = IOS_GetVersion();
|
||||||
|
int retries = 20;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
Settings.partition = (Settings.partition + 1) % DeviceHandler::Instance()->GetUSBHandle()->GetPartitionCount();
|
||||||
|
fs_type = DeviceHandler::GetUSBFilesystemType(Settings.partition);
|
||||||
|
}
|
||||||
|
while (!IsValidPartition(fs_type, ios) && --retries > 0);
|
||||||
|
|
||||||
|
if(fs_type == PART_FS_FAT && Settings.GameSplit == GAMESPLIT_NONE)
|
||||||
|
Settings.GameSplit = GAMESPLIT_4GB;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Install directories
|
||||||
|
else if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
if (++Settings.InstallToDir >= INSTALL_TO_MAX) Settings.InstallToDir = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Game Split Size
|
||||||
|
else if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
if (++Settings.GameSplit >= GAMESPLIT_MAX)
|
||||||
|
{
|
||||||
|
if(DeviceHandler::GetUSBFilesystemType(Settings.partition) == PART_FS_FAT)
|
||||||
|
Settings.GameSplit = GAMESPLIT_2GB;
|
||||||
|
else
|
||||||
|
Settings.GameSplit = GAMESPLIT_NONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Quick Boot
|
||||||
|
else if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
if (++Settings.quickboot >= MAX_ON_OFF) Settings.quickboot = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Error 002 fix
|
||||||
|
else if (ret == ++Idx )
|
||||||
|
{
|
||||||
|
if (++Settings.error002 >= 3) Settings.error002 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Install partitions
|
||||||
|
else if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
switch(Settings.InstallPartitions)
|
||||||
|
{
|
||||||
|
case ONLY_GAME_PARTITION:
|
||||||
|
Settings.InstallPartitions = ALL_PARTITIONS;
|
||||||
|
break;
|
||||||
|
case ALL_PARTITIONS:
|
||||||
|
Settings.InstallPartitions = REMOVE_UPDATE_PARTITION;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
case REMOVE_UPDATE_PARTITION:
|
||||||
|
Settings.InstallPartitions = ONLY_GAME_PARTITION;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Return To
|
||||||
|
else if (ret == ++Idx)
|
||||||
|
{
|
||||||
|
char tidChar[10];
|
||||||
|
bool getChannel = TitleSelector(tidChar);
|
||||||
|
if (getChannel)
|
||||||
|
snprintf(Settings.returnTo, sizeof(Settings.returnTo), "%s", tidChar);
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Settings: Messageboard Update
|
||||||
|
else if (ret == ++Idx )
|
||||||
|
{
|
||||||
|
if (++Settings.PlaylogUpdate >= MAX_ON_OFF) Settings.PlaylogUpdate = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
SetOptionValues();
|
||||||
|
|
||||||
|
return MENU_NONE;
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Copyright (C) 2010
|
* Copyright (C) 2010
|
||||||
* by Dimok
|
* by Dimok
|
||||||
*
|
*
|
||||||
@ -21,30 +21,24 @@
|
|||||||
* 3. This notice may not be removed or altered from any source
|
* 3. This notice may not be removed or altered from any source
|
||||||
* distribution.
|
* distribution.
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#ifndef INDIVIDUAL_GAMELOAD_SM_HPP
|
#ifndef LOADERSETTINGS_HPP_
|
||||||
#define INDIVIDUAL_GAMELOAD_SM_HPP
|
#define LOADERSETTINGS_HPP_
|
||||||
|
|
||||||
#include "SettingsMenu.hpp"
|
#include "SettingsMenu.hpp"
|
||||||
#include "settings/CGameSettings.h"
|
|
||||||
|
|
||||||
class IndGameLoadSM : public SettingsMenu
|
class LoaderSettings : public SettingsMenu
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
IndGameLoadSM(const char * GameID);
|
LoaderSettings();
|
||||||
~IndGameLoadSM();
|
~LoaderSettings();
|
||||||
virtual int GetType() { return CIndGameLoadSM; };
|
virtual int GetType() { return CLoaderSettings; };
|
||||||
protected:
|
protected:
|
||||||
void SetDefaultConfig();
|
|
||||||
void SetOptionNames();
|
|
||||||
void SetOptionValues();
|
void SetOptionValues();
|
||||||
int GetMenuInternal();
|
int GetMenuInternal();
|
||||||
|
|
||||||
GameCFG GameConfig;
|
int OldSettingsPartition;
|
||||||
OptionList GuiOptions;
|
|
||||||
|
|
||||||
GuiText * saveBtnTxt;
|
OptionList GuiOptions;
|
||||||
GuiImage * saveBtnImg;
|
|
||||||
GuiButton * saveBtn;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -32,11 +32,11 @@ enum
|
|||||||
{
|
{
|
||||||
CSettingsMenu = 0,
|
CSettingsMenu = 0,
|
||||||
CGUISettingsMenu,
|
CGUISettingsMenu,
|
||||||
CGameLoadSM,
|
CLoaderSettings,
|
||||||
CParentalControlSM,
|
CParentalControlSM,
|
||||||
CSoundSettingsMenu,
|
CSoundSettingsMenu,
|
||||||
CCustomPathsSM,
|
CCustomPathsSM,
|
||||||
CIndGameLoadSM,
|
CGameLoadSM,
|
||||||
CUninstallSM,
|
CUninstallSM,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "libwiigui/gui.h"
|
#include "libwiigui/gui.h"
|
||||||
#include "settings/CSettings.h"
|
#include "settings/CSettings.h"
|
||||||
#include "FileOperations/fileops.h"
|
#include "FileOperations/fileops.h"
|
||||||
|
#include "menu/menus.h"
|
||||||
#include "FreeTypeGX.h"
|
#include "FreeTypeGX.h"
|
||||||
|
|
||||||
FreeTypeGX * fontSystem = NULL;
|
FreeTypeGX * fontSystem = NULL;
|
||||||
@ -38,6 +39,31 @@ static u32 MainFontSize = 0;
|
|||||||
|
|
||||||
bool Theme::ShowTooltips = true;
|
bool Theme::ShowTooltips = true;
|
||||||
|
|
||||||
|
void Theme::Reload()
|
||||||
|
{
|
||||||
|
HaltGui();
|
||||||
|
mainWindow->Remove(bgImg);
|
||||||
|
for(int i = 0; i < 4; ++i)
|
||||||
|
{
|
||||||
|
char image[50];
|
||||||
|
snprintf(image, sizeof(image), "player%i_point.png", i+1);
|
||||||
|
delete pointer[i];
|
||||||
|
pointer[i] = Resources::GetImageData(image);
|
||||||
|
}
|
||||||
|
delete btnSoundClick;
|
||||||
|
delete btnSoundClick2;
|
||||||
|
delete btnSoundOver;
|
||||||
|
btnSoundClick = new GuiSound(Resources::GetFile("button_click.wav"), Resources::GetFileSize("button_click.wav"), Settings.sfxvolume);
|
||||||
|
btnSoundClick2 = new GuiSound(Resources::GetFile("button_click2.wav"), Resources::GetFileSize("button_click2.wav"), Settings.sfxvolume);
|
||||||
|
btnSoundOver = new GuiSound(Resources::GetFile("button_over.wav"), Resources::GetFileSize("button_over.wav"), Settings.sfxvolume);
|
||||||
|
delete background;
|
||||||
|
background = Resources::GetImageData(Settings.widescreen ? "wbackground.png" : "background.png");
|
||||||
|
delete bgImg;
|
||||||
|
bgImg = new GuiImage(background);
|
||||||
|
mainWindow->Append(bgImg);
|
||||||
|
ResumeGui();
|
||||||
|
}
|
||||||
|
|
||||||
void Theme::CleanUp()
|
void Theme::CleanUp()
|
||||||
{
|
{
|
||||||
ThemeCleanUp();
|
ThemeCleanUp();
|
||||||
|
@ -16,6 +16,8 @@ class Theme
|
|||||||
static bool Load(const char * path);
|
static bool Load(const char * path);
|
||||||
//!Load font data
|
//!Load font data
|
||||||
static bool LoadFont(const char *path);
|
static bool LoadFont(const char *path);
|
||||||
|
//!Reload the main images/sounds for the new theme
|
||||||
|
static void Reload();
|
||||||
//!Clear all image/font/theme data and free the memory
|
//!Clear all image/font/theme data and free the memory
|
||||||
static void CleanUp();
|
static void CleanUp();
|
||||||
|
|
||||||
|
@ -55,7 +55,6 @@ RecourceFile Resources::RecourceFiles[] =
|
|||||||
{"menu_button_over.png", menu_button_over_png, menu_button_over_png_size, NULL, 0},
|
{"menu_button_over.png", menu_button_over_png, menu_button_over_png_size, NULL, 0},
|
||||||
{"settings_button.png", settings_button_png, settings_button_png_size, NULL, 0},
|
{"settings_button.png", settings_button_png, settings_button_png_size, NULL, 0},
|
||||||
{"settings_button_over.png", settings_button_over_png, settings_button_over_png_size, NULL, 0},
|
{"settings_button_over.png", settings_button_over_png, settings_button_over_png_size, NULL, 0},
|
||||||
{"settings_menu_button.png", settings_menu_button_png, settings_menu_button_png_size, NULL, 0},
|
|
||||||
{"wiimote_poweroff.png", wiimote_poweroff_png, wiimote_poweroff_png_size, NULL, 0},
|
{"wiimote_poweroff.png", wiimote_poweroff_png, wiimote_poweroff_png_size, NULL, 0},
|
||||||
{"dialogue_box.png", dialogue_box_png, dialogue_box_png_size, NULL, 0},
|
{"dialogue_box.png", dialogue_box_png, dialogue_box_png_size, NULL, 0},
|
||||||
{"theme_box.png", theme_box_png, theme_box_png_size, NULL, 0},
|
{"theme_box.png", theme_box_png, theme_box_png_size, NULL, 0},
|
||||||
@ -83,10 +82,6 @@ RecourceFile Resources::RecourceFiles[] =
|
|||||||
{"battery_red.png", battery_red_png, battery_red_png_size, NULL, 0},
|
{"battery_red.png", battery_red_png, battery_red_png_size, NULL, 0},
|
||||||
{"battery_bar_white.png", battery_bar_white_png, battery_bar_white_png_size, NULL, 0},
|
{"battery_bar_white.png", battery_bar_white_png, battery_bar_white_png_size, NULL, 0},
|
||||||
{"battery_bar_red.png", battery_bar_red_png, battery_bar_red_png_size, NULL, 0},
|
{"battery_bar_red.png", battery_bar_red_png, battery_bar_red_png_size, NULL, 0},
|
||||||
{"arrow_next.png", arrow_next_png, arrow_next_png_size, NULL, 0},
|
|
||||||
{"arrow_previous.png", arrow_previous_png, arrow_previous_png_size, NULL, 0},
|
|
||||||
{"mp3_pause.png", mp3_pause_png, mp3_pause_png_size, NULL, 0},
|
|
||||||
{"mp3_stop.png", mp3_stop_png, mp3_stop_png_size, NULL, 0},
|
|
||||||
{"exit_top.png", exit_top_png, exit_top_png_size, NULL, 0},
|
{"exit_top.png", exit_top_png, exit_top_png_size, NULL, 0},
|
||||||
{"exit_top_over.png", exit_top_over_png, exit_top_over_png_size, NULL, 0},
|
{"exit_top_over.png", exit_top_over_png, exit_top_over_png_size, NULL, 0},
|
||||||
{"exit_bottom.png", exit_bottom_png, exit_bottom_png_size, NULL, 0},
|
{"exit_bottom.png", exit_bottom_png, exit_bottom_png_size, NULL, 0},
|
||||||
|
@ -118,20 +118,7 @@ int ThemeDownloader::MainLoop()
|
|||||||
{
|
{
|
||||||
HaltGui();
|
HaltGui();
|
||||||
Theme::SetDefault();
|
Theme::SetDefault();
|
||||||
mainWindow->Remove(bgImg);
|
Theme::Reload();
|
||||||
if(pointer[0]) delete pointer[0];
|
|
||||||
if(pointer[1]) delete pointer[1];
|
|
||||||
if(pointer[2]) delete pointer[2];
|
|
||||||
if(pointer[3]) delete pointer[3];
|
|
||||||
pointer[0] = Resources::GetImageData("player1_point.png");
|
|
||||||
pointer[1] = Resources::GetImageData("player2_point.png");
|
|
||||||
pointer[2] = Resources::GetImageData("player3_point.png");
|
|
||||||
pointer[3] = Resources::GetImageData("player4_point.png");
|
|
||||||
if(background) delete background;
|
|
||||||
background = Resources::GetImageData(Settings.widescreen ? "wbackground.png" : "background.png");
|
|
||||||
if(bgImg) delete bgImg;
|
|
||||||
bgImg = new GuiImage(background);
|
|
||||||
mainWindow->Append(bgImg);
|
|
||||||
ResumeGui();
|
ResumeGui();
|
||||||
return MENU_THEMEDOWNLOADER;
|
return MENU_THEMEDOWNLOADER;
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,9 @@ bool WBFS_Mounted()
|
|||||||
|
|
||||||
s32 WBFS_Format(u32 lba, u32 size)
|
s32 WBFS_Format(u32 lba, u32 size)
|
||||||
{
|
{
|
||||||
return current->Format();
|
Wbfs_Wbfs Part(wbfsDev, lba, size);
|
||||||
|
|
||||||
|
return Part.Format();
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 WBFS_GetCount(u32 *count)
|
s32 WBFS_GetCount(u32 *count)
|
||||||
|
@ -35,18 +35,9 @@ class Wbfs
|
|||||||
virtual s32 RenameGame(u8 *, const void *) = 0;
|
virtual s32 RenameGame(u8 *, const void *) = 0;
|
||||||
virtual s32 ReIDGame(u8 *discid, const void *newID) = 0;
|
virtual s32 ReIDGame(u8 *discid, const void *newID) = 0;
|
||||||
virtual f32 EstimateGameSize(void) = 0;
|
virtual f32 EstimateGameSize(void) = 0;
|
||||||
|
|
||||||
/*
|
|
||||||
static s32 OpenPart(u32 part_fat, u32 part_idx, u32 part_lba, u32 part_size, char *partition);
|
|
||||||
static s32 OpenNamed(char *partition);
|
|
||||||
static s32 OpenLBA(u32 lba, u32 size);
|
|
||||||
*/
|
|
||||||
protected:
|
protected:
|
||||||
static u32 nb_sectors;
|
static u32 nb_sectors;
|
||||||
|
|
||||||
/* WBFS HDD */
|
|
||||||
wbfs_t *hdd;
|
wbfs_t *hdd;
|
||||||
|
|
||||||
u32 device, lba, size;
|
u32 device, lba, size;
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ EOF
|
|||||||
<app version="1">
|
<app version="1">
|
||||||
<name> USB Loader GX</name>
|
<name> USB Loader GX</name>
|
||||||
<coder>USB Loader GX Team</coder>
|
<coder>USB Loader GX Team</coder>
|
||||||
<version>1.0 r$rev_new</version>
|
<version>2.0 r$rev_new</version>
|
||||||
<release_date>$rev_date</release_date>
|
<release_date>$rev_date</release_date>
|
||||||
<no_ios_reload/>
|
<no_ios_reload/>
|
||||||
<short_description>Loads games from USB-devices</short_description>
|
<short_description>Loads games from USB-devices</short_description>
|
||||||
|
Loading…
Reference in New Issue
Block a user