mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-11-04 18:45:05 +01:00
*added ability to boot main.dol directly for channels (real and emu). The launcher method can be setup in the loader setting.
*added channel hooking (real and emu). *proper catch of none existing cheats on server if file is not found *added back channel nand emulation mode and per game nand emu settings for channels (emulation mode can't be set to OFF for emu channels) *improved handle of cached titles. (on first boot of this revision the cache title file will be renewed) *settings title, keyboard text and key color can be changed by themes now *added optional background image for list/carousel/grid layouts. The files do not actually exist in the loader. They are loaded if they exists otherwise the default background image is used.See here for filenames: http://code.google.com/p/usbloader-gui/source/browse/trunk/source/themes/filelist.h?r=1148#776 *add flush of homebrew memory before launching app_booter *change: if titles from wiitdb is not enabled the title will be read from game disc header on /title [ID6]/[ID6].wbfs (iso/ciso) pattern. Title caching can still be used and is recommended in that case. *added keep of AHBPROT flag on IOS Reload. Homebrews booted now have AHBPROT. (thanks davebaol) *fixed loading ocarina files from SD when doing nand emulation from SD *fix port libs includes reference in Makefile
This commit is contained in:
parent
b9c86e8db9
commit
63631b8028
@ -2,8 +2,8 @@
|
||||
<app version="1">
|
||||
<name> USB Loader GX</name>
|
||||
<coder>USB Loader GX Team</coder>
|
||||
<version>2.3 r1147</version>
|
||||
<release_date>201201052225</release_date>
|
||||
<version>2.3 r1148</version>
|
||||
<release_date>201201081807</release_date>
|
||||
<!-- // remove this line to enable arguments
|
||||
<arguments>
|
||||
<arg>--ios=250</arg>
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: David Jelinek (djelinek@hotmail.com) e->e,r->r,u->u, c->c \n"
|
||||
"Language-Team: r1056 - last version on http://djelinek.sweb.cz/_USBLoderGX/czech.lang \n"
|
||||
@ -235,6 +235,9 @@ msgstr "Zablokovat spouštění titulu"
|
||||
msgid "Block Updates"
|
||||
msgstr "Zablokovat aktualizace"
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr ""
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr ""
|
||||
msgid "Change Play Path"
|
||||
msgstr "Zmena cesty prehrávání"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr ""
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr "Hudební smycka"
|
||||
msgid "Loop Sound"
|
||||
msgstr "Zvuková smycka"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr "Muj tester:"
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "Mód hudební smycky"
|
||||
msgid "Music Volume"
|
||||
msgstr "Hlasitost hudby"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: Fox888[dk]\n"
|
||||
"Language-Team: [dk]\n"
|
||||
@ -235,6 +235,9 @@ msgstr "Bloker indlæsning af titler"
|
||||
msgid "Block Updates"
|
||||
msgstr "Bloker opdateringer"
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr ""
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr "Kategorier:"
|
||||
msgid "Change Play Path"
|
||||
msgstr "Ændre sti til musik"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr ""
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr "Afspil musik i løkke"
|
||||
msgid "Loop Sound"
|
||||
msgstr "Afspil lyd i løkke"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr "Hoved tester:"
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "Musik i løkke"
|
||||
msgid "Music Volume"
|
||||
msgstr "Lydstyrke"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2011-12-17 14:22+0100\n"
|
||||
"Last-Translator: Arthur117\n"
|
||||
"Language-Team: tj_cool, glowy, Arthur117\n"
|
||||
@ -235,6 +235,9 @@ msgstr "Blokkeer Titel Launcher"
|
||||
msgid "Block Updates"
|
||||
msgstr "Blokkeer Updates"
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "Start/Standaard"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr "Categorieën:"
|
||||
msgid "Change Play Path"
|
||||
msgstr "Verander afspeel locatie"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr ""
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr "Herhaal Muziek"
|
||||
msgid "Loop Sound"
|
||||
msgstr "Geluid herhalen"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr "Hoofd tester:"
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "Muziek Herhaal Mode"
|
||||
msgid "Music Volume"
|
||||
msgstr "Muziekvolume"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -235,6 +235,9 @@ msgstr ""
|
||||
msgid "Block Updates"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr ""
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr ""
|
||||
msgid "Change Play Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr ""
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr ""
|
||||
msgid "Loop Sound"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr ""
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr ""
|
||||
msgid "Music Volume"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: c64rmx\n"
|
||||
"Language-Team: \n"
|
||||
@ -235,6 +235,9 @@ msgstr ""
|
||||
msgid "Block Updates"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "Käynnistys/Standardi"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr ""
|
||||
msgid "Change Play Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr ""
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr ""
|
||||
msgid "Loop Sound"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr ""
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr ""
|
||||
msgid "Music Volume"
|
||||
msgstr "Voimakkuus"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: Cyan\n"
|
||||
"Language-Team: Badablek, Amour, ikya, Cyan & Kin8\n"
|
||||
@ -235,6 +235,9 @@ msgstr "Bloquer Menu Chaînes"
|
||||
msgid "Block Updates"
|
||||
msgstr "Bloquer Mise à jour"
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "IOS par défaut"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr "Catégories:"
|
||||
msgid "Change Play Path"
|
||||
msgstr "Changer dossier"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr "Chaînes"
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr "Répéter musique"
|
||||
msgid "Loop Sound"
|
||||
msgstr "Intro en boucle"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr "Testeur:"
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "Type de boucle"
|
||||
msgid "Music Volume"
|
||||
msgstr "Volume musique"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr "Chaînes sur Nand réel"
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2010-07-03 17:35-0800\n"
|
||||
"Last-Translator: TheRealVisitor\n"
|
||||
"Language-Team: Bertilax, Snoozer, wishmasterf, ZEN.13, TheRealVisitor\n"
|
||||
@ -235,6 +235,9 @@ msgstr "Blocke Title Launcher"
|
||||
msgid "Block Updates"
|
||||
msgstr "Blocke Updates"
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "Bootstandard (cIOS)"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr "Kategorien:"
|
||||
msgid "Change Play Path"
|
||||
msgstr "Pfad ändern"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr "Kanäle"
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr "Wiederholung"
|
||||
msgid "Loop Sound"
|
||||
msgstr "Wiederholung"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr "Haupttester:"
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "HGM Wiederholung"
|
||||
msgid "Music Volume"
|
||||
msgstr "Musik Lautstärke"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr "Nand Kanäle"
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-12-29 11:05+0100\n"
|
||||
"Last-Translator: Springdale\n"
|
||||
"Language-Team: Tusk, Springdale\n"
|
||||
@ -235,6 +235,9 @@ msgstr ""
|
||||
msgid "Block Updates"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "Boot/Alapértelmezett"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr ""
|
||||
msgid "Change Play Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr "Csatornák"
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr ""
|
||||
msgid "Loop Sound"
|
||||
msgstr "Folyamatos hang"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr ""
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr ""
|
||||
msgid "Music Volume"
|
||||
msgstr "Zene Hangerõ"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2011-09-11 12:19+0100\n"
|
||||
"Last-Translator: xFede\n"
|
||||
"Language-Team: Cambo\n"
|
||||
@ -235,6 +235,9 @@ msgstr "Blocca Avvia Titoli"
|
||||
msgid "Block Updates"
|
||||
msgstr "Blocca Aggiornamenti"
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "cIOS Predefinito"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr "Categorie:"
|
||||
msgid "Change Play Path"
|
||||
msgstr "Cambia Percorso Musica"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr "Canali"
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr "Ripeti Brano"
|
||||
msgid "Loop Sound"
|
||||
msgstr "Suono Ripetuto"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr "Tester principale:"
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "Ripeti Musica Sottof."
|
||||
msgid "Music Volume"
|
||||
msgstr "Volume Musica"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr "Canali NAND"
|
||||
|
||||
@ -1817,4 +1829,4 @@ msgid "of"
|
||||
msgstr "di"
|
||||
|
||||
msgid "seconds left"
|
||||
msgstr "secondi rimanenti"
|
||||
msgstr "secondi rimanenti"
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: hosigumayuugi\n"
|
||||
"Language-Team: hosigumayuugi\n"
|
||||
@ -235,6 +235,9 @@ msgstr "タイトル起動を制限"
|
||||
msgid "Block Updates"
|
||||
msgstr "更新を制限"
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "使用するcIOS"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr "カテゴリ:"
|
||||
msgid "Change Play Path"
|
||||
msgstr "パスの変更"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr "チャンネル"
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr "ループさせる"
|
||||
msgid "Loop Sound"
|
||||
msgstr "ループさせる"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr "メインテスター:"
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "ループ機能"
|
||||
msgid "Music Volume"
|
||||
msgstr "BGMの音量"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr "Wii本体NANDチャンネル"
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: nextos@korea.com\n"
|
||||
"Language-Team: \n"
|
||||
@ -235,6 +235,9 @@ msgstr ""
|
||||
msgid "Block Updates"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "기본 부팅설정"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr ""
|
||||
msgid "Change Play Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr ""
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr ""
|
||||
msgid "Loop Sound"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr ""
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr ""
|
||||
msgid "Music Volume"
|
||||
msgstr "음량"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: raschi\n"
|
||||
"Language-Team: raschi\n"
|
||||
@ -235,6 +235,9 @@ msgstr "Blokkér title launcher"
|
||||
msgid "Block Updates"
|
||||
msgstr "Blokkér oppdateringer"
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "Boot/Standard"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr "Kategorier:"
|
||||
msgid "Change Play Path"
|
||||
msgstr "Endre spill sti"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr ""
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr "Loop musikk"
|
||||
msgid "Loop Sound"
|
||||
msgstr "Loop lyd"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr "Hovedtester:"
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "Musikk loop modus"
|
||||
msgid "Music Volume"
|
||||
msgstr "Musikk volum"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: ziom666 (zadania_prog@vp.pl)\n"
|
||||
"Language-Team: \n"
|
||||
@ -235,6 +235,9 @@ msgstr ""
|
||||
msgid "Block Updates"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr ""
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr ""
|
||||
msgid "Change Play Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr "Kanaly"
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr ""
|
||||
msgid "Loop Sound"
|
||||
msgstr "Zapetl dzwieki"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr ""
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr ""
|
||||
msgid "Music Volume"
|
||||
msgstr "Poziom glosnosci"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-23 18:52+0200\n"
|
||||
"Last-Translator: aniemotion\n"
|
||||
"Language-Team: boto12, aniemotion\n"
|
||||
@ -235,6 +235,9 @@ msgstr "Bloquear título do lançador"
|
||||
msgid "Block Updates"
|
||||
msgstr "Bloquear atualizações"
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "Carregar/Standard"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr "Categorias:"
|
||||
msgid "Change Play Path"
|
||||
msgstr "Alterar Caminho para Play"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr ""
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr "Repitir Música"
|
||||
msgid "Loop Sound"
|
||||
msgstr "Repitir Som"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr ""
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "Modo Repetição de Música"
|
||||
msgid "Music Volume"
|
||||
msgstr "Volume da Música"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2011-11-03 11:00+0000\n"
|
||||
"Last-Translator: pplucky <pplucky@gmail.com>\n"
|
||||
"Language-Team: Sky8000, pplucky\n"
|
||||
@ -235,6 +235,9 @@ msgstr "Bloquear Gestor de Títulos"
|
||||
msgid "Block Updates"
|
||||
msgstr "Bloquear Actualizações"
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "Arranque/Std"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr "Categorias:"
|
||||
msgid "Change Play Path"
|
||||
msgstr "Alterar Caminho de Músicas"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr ""
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr "Repetir Música"
|
||||
msgid "Loop Sound"
|
||||
msgstr "Repetir Sons"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr "Tester principal:"
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "Modo de Repetição"
|
||||
msgid "Music Volume"
|
||||
msgstr "Volume Música"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: nikolai_ca\n"
|
||||
"Language-Team: Kir, alendit, nikolai_ca\n"
|
||||
@ -235,6 +235,9 @@ msgstr ""
|
||||
msgid "Block Updates"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "Загрузка/Стандарт"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr ""
|
||||
msgid "Change Play Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr "Каналы"
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr ""
|
||||
msgid "Loop Sound"
|
||||
msgstr "Зациклить звут"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr ""
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr ""
|
||||
msgid "Music Volume"
|
||||
msgstr "Громкость"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: knife.hu kavid emul8ion\n"
|
||||
"Language-Team: kavid\n"
|
||||
@ -235,6 +235,9 @@ msgstr "Title启动器"
|
||||
msgid "Block Updates"
|
||||
msgstr "更新"
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "启动/标准"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr ""
|
||||
msgid "Change Play Path"
|
||||
msgstr "更改游戏路径"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr "频道"
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr "循环音乐"
|
||||
msgid "Loop Sound"
|
||||
msgstr "循环声音"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr "主要测试员"
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "音乐循环模式"
|
||||
msgid "Music Volume"
|
||||
msgstr "音量"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2011-07-25 16:40+0200\n"
|
||||
"Last-Translator: Galen/xFede\n"
|
||||
"Language-Team: Penn, SirPalax, hvy109\n"
|
||||
@ -235,6 +235,9 @@ msgstr "Bloq. Lanzador Canales"
|
||||
msgid "Block Updates"
|
||||
msgstr "Bloq. Actualizaciones"
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "Inicio/Estándar"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr "Categorías:"
|
||||
msgid "Change Play Path"
|
||||
msgstr "Cambiar Ruta"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr ""
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr "Bucle musical"
|
||||
msgid "Loop Sound"
|
||||
msgstr "Bucle de sonido"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr "Probador principal:"
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "Modo Bucle Musical"
|
||||
msgid "Music Volume"
|
||||
msgstr "Volumen de la Música"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2010-01-19 17:39+0200\n"
|
||||
"Last-Translator: Katsurou\n"
|
||||
"Language-Team: Katsurou, pirateX\n"
|
||||
@ -235,6 +235,9 @@ msgstr ""
|
||||
msgid "Block Updates"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "Boot/Standard"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr ""
|
||||
msgid "Change Play Path"
|
||||
msgstr "Ändra spel sökväg"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr "Kannaler"
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr ""
|
||||
msgid "Loop Sound"
|
||||
msgstr "Loopa ljudet"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr ""
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "Musik Återuppspelningsläge"
|
||||
msgid "Music Volume"
|
||||
msgstr "Volym"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2010-02-15 21:00+0800\n"
|
||||
"Last-Translator: Jane.H\n"
|
||||
"Language-Team: kyogc, Miller, Mika Li, Jane.H\n"
|
||||
@ -235,6 +235,9 @@ msgstr "封鎖 Title 啟動"
|
||||
msgid "Block Updates"
|
||||
msgstr "封鎖更新"
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "啟動/標準"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr "類別:"
|
||||
msgid "Change Play Path"
|
||||
msgstr "變更執行路徑"
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr ""
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr "重複音樂"
|
||||
msgid "Loop Sound"
|
||||
msgstr "重複音樂"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr "主要測試者:"
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr "音樂循環模式"
|
||||
msgid "Music Volume"
|
||||
msgstr "音樂音量"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: Nitro_subzero \n"
|
||||
"Language-Team: Nitro_subzero\n"
|
||||
@ -235,6 +235,9 @@ msgstr ""
|
||||
msgid "Block Updates"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "บูต/มาตราฐาน"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr ""
|
||||
msgid "Change Play Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr "แชนแนล"
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr ""
|
||||
msgid "Loop Sound"
|
||||
msgstr "เล่นเสียงซ้ำ"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr ""
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr ""
|
||||
msgid "Music Volume"
|
||||
msgstr "ความดังเสียงเพลง"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-01-03 19:16+0100\n"
|
||||
"POT-Creation-Date: 2012-01-08 19:07+0100\n"
|
||||
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
|
||||
"Last-Translator: omercigingelini\n"
|
||||
"Language-Team: omercigingelini\n"
|
||||
@ -235,6 +235,9 @@ msgstr ""
|
||||
msgid "Block Updates"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot Content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Boot/Standard"
|
||||
msgstr "Boot/Standart"
|
||||
|
||||
@ -290,6 +293,9 @@ msgstr ""
|
||||
msgid "Change Play Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channel Launcher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Channels"
|
||||
msgstr "Kanallar"
|
||||
|
||||
@ -1048,6 +1054,9 @@ msgstr ""
|
||||
msgid "Loop Sound"
|
||||
msgstr "Döngüdeki Ses"
|
||||
|
||||
msgid "Main DOL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Main tester:"
|
||||
msgstr ""
|
||||
|
||||
@ -1078,6 +1087,9 @@ msgstr ""
|
||||
msgid "Music Volume"
|
||||
msgstr "Ses Seviyesi"
|
||||
|
||||
msgid "Nand Chan. Emulation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nand Channels"
|
||||
msgstr ""
|
||||
|
||||
|
4
Makefile
4
Makefile
@ -133,8 +133,8 @@ export OFILES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
|
||||
#---------------------------------------------------------------------------------
|
||||
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
|
||||
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
||||
-I$(CURDIR)/$(BUILD) \
|
||||
-I$(LIBOGC_INC) -I$(PORTLIBS)/include/freetype2
|
||||
-I$(CURDIR)/$(BUILD) -I$(LIBOGC_INC) \
|
||||
-I$(PORTLIBS) -I$(PORTLIBS)/include/freetype2
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# build a list of library paths
|
||||
|
1432
Themes/Default.them
1432
Themes/Default.them
File diff suppressed because it is too large
Load Diff
@ -52,6 +52,9 @@ do
|
||||
echo -e '\t{"'$i'", '$filename'_'$extension', '$filename'_'$extension'_size, NULL, 0},' >> $outFile
|
||||
done
|
||||
|
||||
echo -e '\t{"listBackground.png", NULL, 0, NULL, 0},\t// Optional' >> $outFile
|
||||
echo -e '\t{"carouselBackground.png", NULL, 0, NULL, 0},\t// Optional' >> $outFile
|
||||
echo -e '\t{"gridBackground.png", NULL, 0, NULL, 0},\t// Optional' >> $outFile
|
||||
echo -e '\t{NULL, NULL, 0, NULL, 0}' >> $outFile
|
||||
echo '};' >> $outFile
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
@ -32,6 +32,7 @@
|
||||
#include "settings/GameTitles.h"
|
||||
#include "patches/gamepatches.h"
|
||||
#include "wad/nandtitle.h"
|
||||
#include "memory/memory.h"
|
||||
#include "utils/lz77.h"
|
||||
#include "gecko.h"
|
||||
|
||||
@ -141,34 +142,55 @@ vector<struct discHdr> & Channels::GetEmuHeaders(void)
|
||||
|
||||
u8 * Channels::GetDol(const u64 &title, u8 *tmdBuffer)
|
||||
{
|
||||
bool found = false;
|
||||
static const u8 dolsign[6] = {0x00, 0x00, 0x01, 0x00, 0x00, 0x00};
|
||||
static u8 dolhead[32] ATTRIBUTE_ALIGN(32);
|
||||
u8 *buffer = NULL;
|
||||
u32 filesize = 0;
|
||||
u32 bootcontent;
|
||||
u32 bootcontent = 0xDEADBEAF;
|
||||
u32 high = TITLE_UPPER(title);
|
||||
u32 low = TITLE_LOWER(title);
|
||||
|
||||
_tmd * tmd_file = (_tmd *) SIGNATURE_PAYLOAD((u32 *)tmdBuffer);
|
||||
for(u32 i = 0; i < tmd_file->num_contents; ++i)
|
||||
{
|
||||
if(tmd_file->contents[i].index == tmd_file->boot_index)
|
||||
{
|
||||
bootcontent = tmd_file->contents[i].cid;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!found)
|
||||
{
|
||||
gprintf("Channel main.dol boot index not found\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char *filepath = (char *) memalign(32, ISFS_MAXPATH);
|
||||
if(!filepath)
|
||||
return NULL;
|
||||
|
||||
_tmd * tmd_file = (_tmd *) SIGNATURE_PAYLOAD((u32 *)tmdBuffer);
|
||||
|
||||
if(!Settings.UseChanLauncher)
|
||||
{
|
||||
for(u32 i = 0; i < tmd_file->num_contents; ++i)
|
||||
{
|
||||
if(tmd_file->contents[i].index == tmd_file->boot_index)
|
||||
continue; // Skip loader
|
||||
|
||||
snprintf(filepath, ISFS_MAXPATH, "/title/%08x/%08x/content/%08x.app", high, low, tmd_file->contents[i].cid);
|
||||
|
||||
s32 fd = ISFS_Open(filepath, ISFS_OPEN_READ);
|
||||
if(fd < 0)
|
||||
continue;
|
||||
|
||||
s32 ret = ISFS_Read(fd, dolhead, 32);
|
||||
ISFS_Close(fd);
|
||||
|
||||
if(ret != 32)
|
||||
continue;
|
||||
|
||||
if(memcmp(dolhead, dolsign, sizeof(dolsign)) == 0)
|
||||
{
|
||||
bootcontent = tmd_file->contents[i].cid;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//! Fall back to boot content if dol is not found
|
||||
if(bootcontent == 0xDEADBEAF)
|
||||
{
|
||||
bootcontent = tmd_file->contents[tmd_file->boot_index].cid;
|
||||
if(!Settings.UseChanLauncher) gprintf("Main dol not found -> ");
|
||||
gprintf("Loading boot content index\n");
|
||||
}
|
||||
|
||||
snprintf(filepath, ISFS_MAXPATH, "/title/%08x/%08x/content/%08x.app", high, low, bootcontent);
|
||||
gprintf("Loading Channel DOL: %s\n", filepath);
|
||||
|
||||
@ -293,12 +315,18 @@ u32 Channels::LoadChannel(const u64 &chantitle)
|
||||
|
||||
if(dolfile->bss_start)
|
||||
{
|
||||
if(!(dolfile->bss_start & 0x80000000))
|
||||
dolfile->bss_start |= 0x80000000;
|
||||
dolfile->bss_start |= 0x80000000;
|
||||
|
||||
ICInvalidateRange((void *)dolfile->bss_start, dolfile->bss_size);
|
||||
memset((void *)dolfile->bss_start, 0, dolfile->bss_size);
|
||||
DCFlushRange((void *)dolfile->bss_start, dolfile->bss_size);
|
||||
if(dolfile->bss_start < 0x81800000)
|
||||
{
|
||||
// For homebrews...not all have it clean.
|
||||
if(dolfile->bss_start + dolfile->bss_size >= 0x81800000)
|
||||
dolfile->bss_size = 0x81800000 - dolfile->bss_start;
|
||||
|
||||
memset((void *)dolfile->bss_start, 0, dolfile->bss_size);
|
||||
DCFlushRange((void *)dolfile->bss_start, dolfile->bss_size);
|
||||
ICInvalidateRange((void *)dolfile->bss_start, dolfile->bss_size);
|
||||
}
|
||||
}
|
||||
|
||||
int i;
|
||||
@ -312,9 +340,9 @@ u32 Channels::LoadChannel(const u64 &chantitle)
|
||||
u8 *dolChunkOffset = (u8 *)dolfile->section_start[i];
|
||||
u32 dolChunkSize = dolfile->section_size[i];
|
||||
|
||||
ICInvalidateRange(dolChunkOffset, dolChunkSize);
|
||||
memmove (dolChunkOffset, chanDOL + dolfile->section_pos[i], dolChunkSize);
|
||||
DCFlushRange(dolChunkOffset, dolChunkSize);
|
||||
ICInvalidateRange(dolChunkOffset, dolChunkSize);
|
||||
|
||||
RegisterDOL(dolChunkOffset, dolChunkSize);
|
||||
}
|
||||
@ -323,16 +351,22 @@ u32 Channels::LoadChannel(const u64 &chantitle)
|
||||
|
||||
free(dolfile);
|
||||
|
||||
// Preparations
|
||||
memset((void *)Disc_ID, 0, 6);
|
||||
*Disc_ID = TITLE_LOWER(chantitle); // Game ID
|
||||
*Arena_H = 0; // Arena High, the apploader does this too
|
||||
*BI2 = 0x817FE000; // BI2, the apploader does this too
|
||||
*Bus_Speed = 0x0E7BE2C0; // bus speed
|
||||
*CPU_Speed = 0x2B73A840; // cpu speed
|
||||
*GameID_Address = 0x81000000; // Game id address, while there's all 0s at 0x81000000 when using the apploader...
|
||||
memcpy((void *)Online_Check, (void *)Disc_ID, 4);// online check
|
||||
|
||||
memset((void *)0x817FE000, 0, 0x2000); // Clearing BI2
|
||||
DCFlushRange((void*)0x817FE000, 0x2000);
|
||||
|
||||
// IOS Version Check
|
||||
*(vu32*)0x80003140 = ((ios << 16)) | 0xFFFF;
|
||||
*(vu32*)0x80003188 = ((ios << 16)) | 0xFFFF;
|
||||
DCFlushRange((void *)0x80003140, 4);
|
||||
DCFlushRange((void *)0x80003188, 4);
|
||||
|
||||
// Game ID Online Check
|
||||
memset((void *)0x80000000, 0, 6);
|
||||
*(vu32 *)0x80000000 = TITLE_LOWER(chantitle);
|
||||
DCFlushRange((void *)0x80000000, 6);
|
||||
|
||||
ISFS_Deinitialize();
|
||||
|
||||
|
@ -213,7 +213,7 @@ GuiKeyboard::GuiKeyboard(char * t, u32 max, int minimum, int lang)
|
||||
keyTextboxImg->SetPosition(0, 40);//(0,0);
|
||||
this->Append(keyTextboxImg);
|
||||
|
||||
kbText = new GuiText(kbtextstr, 20, ( GXColor ) {0, 0, 0, 0xff});
|
||||
kbText = new GuiText(kbtextstr, 20, thColor("r=0 g=0 b=0 a=255 - keyboard text color"));
|
||||
kbText->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
kbText->SetPosition(0, 53);//(0, 13);
|
||||
this->Append(kbText);
|
||||
@ -238,13 +238,11 @@ GuiKeyboard::GuiKeyboard(char * t, u32 max, int minimum, int lang)
|
||||
keyBackOverImg = new GuiImage(keyMedium);
|
||||
if (mode == 3)
|
||||
{
|
||||
keyBackText = new GuiText("Retour", 20, ( GXColor )
|
||||
{ 0, 0, 0, 0xff});
|
||||
keyBackText = new GuiText("Retour", 20, thColor("r=0 g=0 b=0 a=255 - keyboard key text color"));
|
||||
}
|
||||
else
|
||||
{
|
||||
keyBackText = new GuiText("Back", 20, ( GXColor )
|
||||
{ 0, 0, 0, 0xff});
|
||||
keyBackText = new GuiText("Back", 20, thColor("r=0 g=0 b=0 a=255 - keyboard key text color"));
|
||||
}
|
||||
//keyBack = new GuiButton(keyMedium->GetWidth(), keyMedium->GetHeight());
|
||||
keyBack = new GuiButton(keyBackImg, keyBackOverImg, 0, 3, 11 * 42 + 40 + eurocheck, 0 * 42 + 120, trigA,
|
||||
@ -271,13 +269,11 @@ GuiKeyboard::GuiKeyboard(char * t, u32 max, int minimum, int lang)
|
||||
keyClearOverImg = new GuiImage(keyMedium);
|
||||
if (mode == 3)
|
||||
{
|
||||
keyClearText = new GuiText("Effacer", 20, ( GXColor )
|
||||
{ 0, 0, 0, 0xff});
|
||||
keyClearText = new GuiText("Effacer", 20, thColor("r=0 g=0 b=0 a=255 - keyboard key text color"));
|
||||
}
|
||||
else
|
||||
{
|
||||
keyClearText = new GuiText("Clear", 20, ( GXColor )
|
||||
{ 0, 0, 0, 0xff});
|
||||
keyClearText = new GuiText("Clear", 20, thColor("r=0 g=0 b=0 a=255 - keyboard key text color"));
|
||||
}
|
||||
keyClear = new GuiButton(keyClearImg, keyClearOverImg, 0, 3, (10 * 42 + 40) + eurocheck, 4 * 42 + 120, trigA,
|
||||
btnSoundOver, btnSoundClick, 1);
|
||||
@ -294,8 +290,7 @@ GuiKeyboard::GuiKeyboard(char * t, u32 max, int minimum, int lang)
|
||||
|
||||
keyAltImg = new GuiImage(keyMedium);
|
||||
keyAltOverImg = new GuiImage(keyMedium);
|
||||
keyAltText = new GuiText("Alt Gr", 20, ( GXColor )
|
||||
{ 0, 0, 0, 0xff});
|
||||
keyAltText = new GuiText("Alt Gr", 20, thColor("r=0 g=0 b=0 a=255 - keyboard key text color"));
|
||||
keyAlt = new GuiButton(keyAltImg, keyAltOverImg, 0, 3, 84 + eurocheck, 4 * 42 + 120, trigA, btnSoundOver,
|
||||
btnSoundClick, 1);
|
||||
//keyAlt = new GuiButton(keyMedium->GetWidth(), keyMedium->GetHeight());
|
||||
@ -314,8 +309,7 @@ GuiKeyboard::GuiKeyboard(char * t, u32 max, int minimum, int lang)
|
||||
|
||||
keyAlt2Img = new GuiImage(keyMedium);
|
||||
keyAlt2OverImg = new GuiImage(keyMedium);
|
||||
keyAlt2Text = new GuiText("Accent", 20, ( GXColor )
|
||||
{ 0, 0, 0, 0xff});
|
||||
keyAlt2Text = new GuiText("Accent", 20, thColor("r=0 g=0 b=0 a=255 - keyboard key text color"));
|
||||
keyAlt2 = new GuiButton(keyAlt2Img, keyAlt2OverImg, 0, 3, (8 * 42 + 40) + eurocheck, 4 * 42 + 120, trigA,
|
||||
btnSoundOver, btnSoundClick, 1);
|
||||
//keyAlt2 = new GuiButton(keyMedium->GetWidth(), keyMedium->GetHeight());
|
||||
@ -334,8 +328,7 @@ GuiKeyboard::GuiKeyboard(char * t, u32 max, int minimum, int lang)
|
||||
|
||||
keyCapsImg = new GuiImage(keyMedium);
|
||||
keyCapsOverImg = new GuiImage(keyMedium);
|
||||
keyCapsText = new GuiText("Caps", 20, ( GXColor )
|
||||
{ 0, 0, 0, 0xff});
|
||||
keyCapsText = new GuiText("Caps", 20, thColor("r=0 g=0 b=0 a=255 - keyboard key text color"));
|
||||
keyCaps = new GuiButton(keyCapsImg, keyCapsOverImg, 0, 3, 0 + eurocheck, 2 * 42 + 120, trigA, btnSoundOver,
|
||||
btnSoundClick, 1);
|
||||
//keyCaps = new GuiButton(keyMedium->GetWidth(), keyMedium->GetHeight());
|
||||
@ -351,8 +344,7 @@ GuiKeyboard::GuiKeyboard(char * t, u32 max, int minimum, int lang)
|
||||
|
||||
keyShiftImg = new GuiImage(keyMedium);
|
||||
keyShiftOverImg = new GuiImage(keyMedium);
|
||||
keyShiftText = new GuiText("Shift", 20, ( GXColor )
|
||||
{ 0, 0, 0, 0xff});
|
||||
keyShiftText = new GuiText("Shift", 20, thColor("r=0 g=0 b=0 a=255 - keyboard key text color"));
|
||||
keyShift = new GuiButton(keyShiftImg, keyShiftOverImg, 0, 3, 21 + eurocheck, 3 * 42 + 120, trigA, btnSoundOver,
|
||||
btnSoundClick, 1);
|
||||
//keyShift = new GuiButton(keyMedium->GetWidth(), keyMedium->GetHeight());
|
||||
@ -391,8 +383,7 @@ GuiKeyboard::GuiKeyboard(char * t, u32 max, int minimum, int lang)
|
||||
keyImg[i][j] = new GuiImage(key);
|
||||
keyImgOver[i][j] = new GuiImage(keyOver);
|
||||
txt[0] = keys[i][j].ch;
|
||||
keyTxt[i][j] = new GuiText(txt, 20, ( GXColor )
|
||||
{ 0, 0, 0, 0xff});
|
||||
keyTxt[i][j] = new GuiText(txt, 20, thColor("r=0 g=0 b=0 a=255 - keyboard key text color"));
|
||||
keyTxt[i][j]->SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
|
||||
keyTxt[i][j]->SetPosition(0, -10);
|
||||
keyBtn[i][j] = new GuiButton(keyImg[i][j], keyImgOver[i][j], 0, 3, (j * 42 + 21 * i + 40) + eurocheck,
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "settings/CGameSettings.h"
|
||||
#include "settings/CGameStatistics.h"
|
||||
#include "settings/CGameCategories.hpp"
|
||||
#include "settings/GameTitles.h"
|
||||
#include "usbloader/usbstorage2.h"
|
||||
#include "usbloader/MountGamePartition.h"
|
||||
#include "usbloader/GameBooter.hpp"
|
||||
@ -261,6 +262,8 @@ int StartUpProcess::Execute()
|
||||
gprintf("\tLoading game categories...%s\n", GameCategories.Load(Settings.ConfigPath) ? "done" : "failed");
|
||||
gprintf("\tLoading font...%s\n", Theme::LoadFont(Settings.ConfigPath) ? "done" : "failed (using default)");
|
||||
gprintf("\tLoading theme...%s\n", Theme::Load(Settings.theme) ? "done" : "failed (using default)");
|
||||
if(Settings.CacheTitles)
|
||||
gprintf("\tLoading cached titles...%s\n", GameTitles.ReadCachedTitles(Settings.titlestxt_path) ? "done" : "failed (using default)");
|
||||
|
||||
//! Init the rest of the System
|
||||
Sys_Init();
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include <string>
|
||||
#include "Controls/DeviceHandler.hpp"
|
||||
#include "settings/CSettings.h"
|
||||
#include "system/IosLoader.h"
|
||||
#include "lstub.h"
|
||||
#include "sys.h"
|
||||
#include "gecko.h"
|
||||
@ -97,13 +98,15 @@ static int RunAppbooter()
|
||||
ExitApp();
|
||||
|
||||
if(Settings.EntryIOS != IOS_GetVersion())
|
||||
IOS_ReloadIOS(Settings.EntryIOS);
|
||||
IosLoader::ReloadIosKeepingRights(Settings.EntryIOS);
|
||||
|
||||
struct __argv args;
|
||||
SetupARGV(&args);
|
||||
|
||||
u32 cpu_isr;
|
||||
|
||||
DCFlushRange(homebrewbuffer, homebrewsize);
|
||||
|
||||
memcpy(BOOTER_ADDR, app_booter_bin, app_booter_bin_size);
|
||||
DCFlushRange(BOOTER_ADDR, app_booter_bin_size);
|
||||
|
||||
|
@ -53,6 +53,9 @@ GameBrowseMenu::GameBrowseMenu()
|
||||
gameCoverImg = NULL;
|
||||
GameIDTxt = NULL;
|
||||
GameRegionTxt = NULL;
|
||||
listBackground = NULL;
|
||||
carouselBackground = NULL;
|
||||
gridBackground = NULL;
|
||||
WDVD_GetCoverStatus(&DiscDriveCoverOld);
|
||||
gameList.FilterList();
|
||||
HDDSizeCallback.SetCallback(this, &GameBrowseMenu::UpdateFreeSpace);
|
||||
@ -360,6 +363,12 @@ GameBrowseMenu::~GameBrowseMenu()
|
||||
|
||||
RemoveAll();
|
||||
|
||||
//! Reset optional background image
|
||||
bgImg->SetImage(background);
|
||||
|
||||
delete listBackground;
|
||||
delete carouselBackground;
|
||||
delete gridBackground;
|
||||
delete btnInstall;
|
||||
delete btnInstallOver;
|
||||
delete btnSettings;
|
||||
@ -658,6 +667,16 @@ void GameBrowseMenu::ReloadBrowser()
|
||||
gameBrowser->SetPosition(thInt("200 - game list layout pos x"), thInt("49 - game list layout pos y"));
|
||||
gameBrowser->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
|
||||
gameBrowser->SetSelectedOption(Settings.SelectedGame);
|
||||
|
||||
//! Setup optional background image
|
||||
const u8 *backgroundImgData = Resources::GetFile("listBackground.png");
|
||||
u32 backgroundImgDataSize = Resources::GetFileSize("listBackground.png");
|
||||
if(backgroundImgData && !listBackground)
|
||||
listBackground = new GuiImageData(backgroundImgData, backgroundImgDataSize);
|
||||
if(listBackground)
|
||||
bgImg->SetImage(listBackground);
|
||||
else
|
||||
bgImg->SetImage(background);
|
||||
}
|
||||
else if (Settings.gameDisplay == GRID_MODE)
|
||||
{
|
||||
@ -694,6 +713,16 @@ void GameBrowseMenu::ReloadBrowser()
|
||||
gameBrowser = new GuiGameGrid(thInt("640 - game grid layout width"), thInt("400 - game grid layout height"), Settings.theme_path, Settings.GameListOffset);
|
||||
gameBrowser->SetPosition(thInt("0 - game grid layout pos x"), thInt("20 - game grid layout pos y"));
|
||||
gameBrowser->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
|
||||
|
||||
//! Setup optional background image
|
||||
const u8 *backgroundImgData = Resources::GetFile("gridBackground.png");
|
||||
u32 backgroundImgDataSize = Resources::GetFileSize("gridBackground.png");
|
||||
if(backgroundImgData && !gridBackground)
|
||||
gridBackground = new GuiImageData(backgroundImgData, backgroundImgDataSize);
|
||||
if(gridBackground)
|
||||
bgImg->SetImage(gridBackground);
|
||||
else
|
||||
bgImg->SetImage(background);
|
||||
}
|
||||
else if (Settings.gameDisplay == CAROUSEL_MODE)
|
||||
{
|
||||
@ -730,6 +759,16 @@ void GameBrowseMenu::ReloadBrowser()
|
||||
gameBrowser = new GuiGameCarousel(thInt("640 - game carousel layout width"), thInt("400 - game carousel layout height"), Settings.theme_path, Settings.GameListOffset);
|
||||
gameBrowser->SetPosition(thInt("0 - game carousel layout pos x"), thInt("-20 - game carousel layout pos y"));
|
||||
gameBrowser->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
|
||||
|
||||
//! Setup optional background image
|
||||
const u8 *backgroundImgData = Resources::GetFile("carouselBackground.png");
|
||||
u32 backgroundImgDataSize = Resources::GetFileSize("carouselBackground.png");
|
||||
if(backgroundImgData && !carouselBackground)
|
||||
carouselBackground = new GuiImageData(backgroundImgData, backgroundImgDataSize);
|
||||
if(carouselBackground)
|
||||
bgImg->SetImage(carouselBackground);
|
||||
else
|
||||
bgImg->SetImage(background);
|
||||
}
|
||||
|
||||
|
||||
@ -854,7 +893,7 @@ int GameBrowseMenu::MainLoop()
|
||||
else
|
||||
{
|
||||
gameList.ReadGameList();
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, false, false);
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, false);
|
||||
if(Settings.ShowFreeSpace)
|
||||
{
|
||||
ThreadedTask::Instance()->AddCallback(&HDDSizeCallback);
|
||||
@ -1158,7 +1197,7 @@ int GameBrowseMenu::MainLoop()
|
||||
}
|
||||
|
||||
wString oldFilter(gameList.GetCurrentFilter());
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, false, false);
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, false);
|
||||
gameList.FilterList(oldFilter.c_str());
|
||||
ReloadBrowser();
|
||||
}
|
||||
|
@ -37,6 +37,9 @@ class GameBrowseMenu : public GuiWindow
|
||||
GuiGameBrowser * gameBrowser;
|
||||
GuiSearchBar * searchBar;
|
||||
|
||||
GuiImageData * listBackground;
|
||||
GuiImageData * carouselBackground;
|
||||
GuiImageData * gridBackground;
|
||||
GuiImageData * btnInstall;
|
||||
GuiImageData * btnInstallOver;
|
||||
GuiImageData * btnSettings;
|
||||
|
@ -160,8 +160,9 @@ int UpdateGameTDB()
|
||||
//! The zip file is not needed anymore so we can remove it
|
||||
remove(ZipPath.c_str());
|
||||
|
||||
//! Reload all titles because the file changed now.
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, true);
|
||||
//! Reload all titles and reload cached titles because the file changed now.
|
||||
GameTitles.SetDefault();
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||
|
||||
return (result ? filesize : -1);
|
||||
}
|
||||
|
@ -194,6 +194,7 @@ void dogamehooks(u32 hooktype, void *addr, u32 len)
|
||||
if(hooktype == 0x00)
|
||||
return;
|
||||
|
||||
bool isChannel = (*((char *) 0x80000005) == 0) && (*((char *) 0x80000006) == 0);
|
||||
void *addr_start = addr;
|
||||
void *addr_end = addr+len;
|
||||
|
||||
@ -210,9 +211,6 @@ void dogamehooks(u32 hooktype, void *addr, u32 len)
|
||||
if(memcmp(addr_start, viwiihooks, sizeof(viwiihooks))==0){
|
||||
patchhook((u32)addr_start, len);
|
||||
}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0){
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x02:
|
||||
@ -224,9 +222,6 @@ void dogamehooks(u32 hooktype, void *addr, u32 len)
|
||||
if(memcmp(addr_start, kpadoldhooks, sizeof(kpadoldhooks))==0){
|
||||
patchhook((u32)addr_start, len);
|
||||
}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0){
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x03:
|
||||
@ -234,9 +229,6 @@ void dogamehooks(u32 hooktype, void *addr, u32 len)
|
||||
if(memcmp(addr_start, joypadhooks, sizeof(joypadhooks))==0){
|
||||
patchhook((u32)addr_start, len);
|
||||
}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0){
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x04:
|
||||
@ -244,9 +236,6 @@ void dogamehooks(u32 hooktype, void *addr, u32 len)
|
||||
if(memcmp(addr_start, gxdrawhooks, sizeof(gxdrawhooks))==0){
|
||||
patchhook((u32)addr_start, len);
|
||||
}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0){
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x05:
|
||||
@ -254,9 +243,6 @@ void dogamehooks(u32 hooktype, void *addr, u32 len)
|
||||
if(memcmp(addr_start, gxflushhooks, sizeof(gxflushhooks))==0){
|
||||
patchhook((u32)addr_start, len);
|
||||
}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0){
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x06:
|
||||
@ -264,9 +250,6 @@ void dogamehooks(u32 hooktype, void *addr, u32 len)
|
||||
if(memcmp(addr_start, ossleepthreadhooks, sizeof(ossleepthreadhooks))==0){
|
||||
patchhook((u32)addr_start, len);
|
||||
}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0){
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x07:
|
||||
@ -274,9 +257,6 @@ void dogamehooks(u32 hooktype, void *addr, u32 len)
|
||||
if(memcmp(addr_start, axnextframehooks, sizeof(axnextframehooks))==0){
|
||||
patchhook((u32)addr_start, len);
|
||||
}
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0){
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
}
|
||||
break;
|
||||
/*
|
||||
case 0x08:
|
||||
@ -290,6 +270,20 @@ void dogamehooks(u32 hooktype, void *addr, u32 len)
|
||||
break;
|
||||
*/
|
||||
}
|
||||
|
||||
if(memcmp(addr_start, multidolhooks, sizeof(multidolhooks))==0)
|
||||
{
|
||||
multidolhook((u32)addr_start+sizeof(multidolhooks)-4);
|
||||
}
|
||||
|
||||
if(isChannel && memcmp(addr_start, multidolchanhooks, sizeof(multidolchanhooks)) == 0)
|
||||
{
|
||||
*(((u32*)addr_start)+1) = 0x7FE802A6;
|
||||
DCFlushRange(((u32*)addr_start)+1, 4);
|
||||
ICInvalidateRange(((u32*)addr_start)+1, 4);
|
||||
multidolhook((u32)addr_start+sizeof(multidolchanhooks)-4);
|
||||
}
|
||||
|
||||
addr_start += 4;
|
||||
}
|
||||
}
|
||||
|
@ -1317,13 +1317,16 @@ int CodeDownload(const char *id)
|
||||
if (file.data != NULL)
|
||||
{
|
||||
bool validUrl = false;
|
||||
char *textCpy = new (std::nothrow) char[file.size+1];
|
||||
if(textCpy)
|
||||
if(file.size > 0)
|
||||
{
|
||||
memcpy(textCpy, file.data, file.size);
|
||||
textCpy[file.size] = '\0';
|
||||
validUrl = (strcasestr(textCpy, "404 Not Found") == 0);
|
||||
delete [] textCpy;
|
||||
char *textCpy = new (std::nothrow) char[file.size+1];
|
||||
if(textCpy)
|
||||
{
|
||||
memcpy(textCpy, file.data, file.size);
|
||||
textCpy[file.size] = '\0';
|
||||
validUrl = (strcasestr(textCpy, "404 Not Found") == 0);
|
||||
delete [] textCpy;
|
||||
}
|
||||
}
|
||||
|
||||
if(!validUrl)
|
||||
|
@ -130,6 +130,7 @@ void CSettings::SetDefault()
|
||||
GameListOffset = 0;
|
||||
sneekVideoPatch = OFF;
|
||||
NandEmuMode = OFF;
|
||||
NandEmuChanMode = 2;
|
||||
UseSystemFont = ON;
|
||||
Hooktype = 0;
|
||||
WiirdDebugger = OFF;
|
||||
@ -140,6 +141,7 @@ void CSettings::SetDefault()
|
||||
SearchMode = SEARCH_BEGINNING;
|
||||
GameAspectRatio = ASPECT_SYSTEM_DEFAULT;
|
||||
PointerSpeed = 0.15f;
|
||||
UseChanLauncher = OFF;
|
||||
}
|
||||
|
||||
bool CSettings::Load()
|
||||
@ -305,6 +307,7 @@ bool CSettings::Save()
|
||||
fprintf(file, "GameListOffset = %d\n", GameListOffset);
|
||||
fprintf(file, "sneekVideoPatch = %d\n", sneekVideoPatch);
|
||||
fprintf(file, "NandEmuMode = %d\n", NandEmuMode);
|
||||
fprintf(file, "NandEmuChanMode = %d\n", NandEmuChanMode);
|
||||
fprintf(file, "NandEmuPath = %s\n", NandEmuPath);
|
||||
fprintf(file, "NandEmuChanPath = %s\n", NandEmuChanPath);
|
||||
fprintf(file, "UseSystemFont = %d\n", UseSystemFont);
|
||||
@ -316,6 +319,7 @@ bool CSettings::Save()
|
||||
fprintf(file, "SearchMode = %d\n", SearchMode);
|
||||
fprintf(file, "GameAspectRatio = %d\n", GameAspectRatio);
|
||||
fprintf(file, "PointerSpeed = %g\n", PointerSpeed);
|
||||
fprintf(file, "UseChanLauncher = %d\n", UseChanLauncher);
|
||||
fclose(file);
|
||||
|
||||
return true;
|
||||
@ -625,6 +629,10 @@ bool CSettings::SetSetting(char *name, char *value)
|
||||
{
|
||||
if (sscanf(value, "%d", &i) == 1) NandEmuMode = i;
|
||||
}
|
||||
else if(strcmp(name, "NandEmuChanMode") == 0)
|
||||
{
|
||||
if (sscanf(value, "%d", &i) == 1) NandEmuChanMode = i;
|
||||
}
|
||||
else if(strcmp(name, "LoaderMode") == 0)
|
||||
{
|
||||
if (sscanf(value, "%d", &i) == 1) LoaderMode = i;
|
||||
@ -637,6 +645,10 @@ bool CSettings::SetSetting(char *name, char *value)
|
||||
{
|
||||
if (sscanf(value, "%d", &i) == 1) GameAspectRatio = i;
|
||||
}
|
||||
else if(strcmp(name, "UseChanLauncher") == 0)
|
||||
{
|
||||
if (sscanf(value, "%d", &i) == 1) UseChanLauncher = i;
|
||||
}
|
||||
else if (strcmp(name, "InstallPartitions") == 0)
|
||||
{
|
||||
InstallPartitions = strtoul(value, 0, 16);
|
||||
|
@ -130,6 +130,7 @@ class CSettings
|
||||
std::vector<u32> EnabledCategories;
|
||||
u8 EntryIOS;
|
||||
short NandEmuMode;
|
||||
short NandEmuChanMode;
|
||||
short UseSystemFont;
|
||||
short Hooktype;
|
||||
short WiirdDebugger;
|
||||
@ -139,6 +140,7 @@ class CSettings
|
||||
short LoaderMode;
|
||||
short SearchMode;
|
||||
short GameAspectRatio;
|
||||
short UseChanLauncher;
|
||||
|
||||
// This variable is not saved to the settings file
|
||||
bool FirstTimeRun;
|
||||
|
@ -4,6 +4,10 @@
|
||||
#include "usbloader/GameList.h"
|
||||
#include "Channels/channels.h"
|
||||
#include "xml/GameTDB.hpp"
|
||||
#include "svnrev.h"
|
||||
#include "gecko.h"
|
||||
|
||||
#define VALID_CACHE_REVISION 1148
|
||||
|
||||
CGameTitles GameTitles;
|
||||
|
||||
@ -22,8 +26,11 @@ void CGameTitles::SetGameTitle(const char * id, const char * title)
|
||||
}
|
||||
|
||||
GameTitle newTitle;
|
||||
newTitle.Title = title;
|
||||
snprintf(newTitle.GameID, sizeof(newTitle.GameID), id);
|
||||
newTitle.Title = title;
|
||||
newTitle.ParentalRating = -1;
|
||||
newTitle.PlayersCount = 1;
|
||||
newTitle.FromWiiTDB = 0;
|
||||
|
||||
TitleList.push_back(newTitle);
|
||||
}
|
||||
@ -103,6 +110,7 @@ typedef struct _CacheTitle
|
||||
{
|
||||
char GameID[7];
|
||||
char Title[100];
|
||||
char FromWiiTDB;
|
||||
int ParentalRating;
|
||||
int PlayersCount;
|
||||
|
||||
@ -110,10 +118,25 @@ typedef struct _CacheTitle
|
||||
|
||||
u32 CGameTitles::ReadCachedTitles(const char * path)
|
||||
{
|
||||
std::string Cachepath = path;
|
||||
if(path[strlen(path)-1] != '/')
|
||||
Cachepath += '/';
|
||||
Cachepath += "TitlesCache.bin";
|
||||
|
||||
//! Load cached least so that the titles are preloaded before reading list
|
||||
FILE * f = fopen(path, "rb");
|
||||
FILE * f = fopen(Cachepath.c_str(), "rb");
|
||||
if(!f) return 0;
|
||||
|
||||
u32 revision = 0;
|
||||
|
||||
fread(&revision, 1, 4, f);
|
||||
|
||||
if(revision < VALID_CACHE_REVISION)
|
||||
{
|
||||
fclose(f);
|
||||
return 0;
|
||||
}
|
||||
|
||||
char LangCode[11];
|
||||
memset(LangCode, 0, sizeof(LangCode));
|
||||
|
||||
@ -141,6 +164,7 @@ u32 CGameTitles::ReadCachedTitles(const char * path)
|
||||
TitleList[i].Title = CachedList[i].Title;
|
||||
TitleList[i].ParentalRating = CachedList[i].ParentalRating;
|
||||
TitleList[i].PlayersCount = CachedList[i].PlayersCount;
|
||||
TitleList[i].FromWiiTDB = CachedList[i].FromWiiTDB;
|
||||
}
|
||||
|
||||
return count;
|
||||
@ -148,13 +172,19 @@ u32 CGameTitles::ReadCachedTitles(const char * path)
|
||||
|
||||
void CGameTitles::WriteCachedTitles(const char * path)
|
||||
{
|
||||
FILE *f = fopen(path, "wb");
|
||||
std::string Cachepath = path;
|
||||
if(path[strlen(path)-1] != '/')
|
||||
Cachepath += '/';
|
||||
Cachepath += "TitlesCache.bin";
|
||||
|
||||
FILE *f = fopen(Cachepath.c_str(), "wb");
|
||||
if(!f)
|
||||
return;
|
||||
|
||||
CacheTitle Cache;
|
||||
u32 count = TitleList.size();
|
||||
|
||||
u32 revision = atoi(GetRev());
|
||||
fwrite(&revision, 1, 4, f);
|
||||
fwrite(Settings.db_language, 1, 10, f);
|
||||
fwrite(&count, 1, 4, f);
|
||||
|
||||
@ -162,10 +192,11 @@ void CGameTitles::WriteCachedTitles(const char * path)
|
||||
{
|
||||
memset(&Cache, 0, sizeof(CacheTitle));
|
||||
|
||||
strcpy(Cache.GameID, TitleList[i].GameID);
|
||||
snprintf(Cache.Title, sizeof(Cache.Title), TitleList[i].Title.c_str());
|
||||
strncpy(Cache.GameID, TitleList[i].GameID, sizeof(Cache.GameID)-1);
|
||||
strncpy(Cache.Title, TitleList[i].Title.c_str(), sizeof(Cache.Title)-1);
|
||||
Cache.ParentalRating = TitleList[i].ParentalRating;
|
||||
Cache.PlayersCount = TitleList[i].PlayersCount;
|
||||
Cache.FromWiiTDB = TitleList[i].FromWiiTDB;
|
||||
|
||||
fwrite(&Cache, 1, sizeof(CacheTitle), f);
|
||||
}
|
||||
@ -187,7 +218,8 @@ void CGameTitles::GetMissingTitles(std::vector<std::string> &MissingTitles, bool
|
||||
if(strncasecmp(TitleList[n].GameID, (const char *) FullList[i]->id, 6) == 0)
|
||||
{
|
||||
UsedCachedList[n] = true;
|
||||
isCached = true;
|
||||
//! If the title is not from WiiTDB, try to reload it
|
||||
isCached = TitleList[n].FromWiiTDB;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -213,10 +245,8 @@ void CGameTitles::GetMissingTitles(std::vector<std::string> &MissingTitles, bool
|
||||
}
|
||||
}
|
||||
|
||||
void CGameTitles::LoadTitlesFromGameTDB(const char * path, bool forceCacheReload, bool removeUnused)
|
||||
void CGameTitles::LoadTitlesFromGameTDB(const char * path, bool removeUnused)
|
||||
{
|
||||
this->SetDefault();
|
||||
|
||||
if(!path || !Settings.titlesOverride)
|
||||
return;
|
||||
|
||||
@ -224,14 +254,8 @@ void CGameTitles::LoadTitlesFromGameTDB(const char * path, bool forceCacheReload
|
||||
if(path[strlen(path)-1] != '/')
|
||||
Filepath += '/';
|
||||
|
||||
std::string Cachepath = Filepath;
|
||||
Cachepath += "TitlesCache.bin";
|
||||
Filepath += "wiitdb.xml";
|
||||
|
||||
//! Read game titles cache database
|
||||
if(!forceCacheReload && Settings.CacheTitles)
|
||||
ReadCachedTitles(Cachepath.c_str());
|
||||
|
||||
//! Read game list
|
||||
gameList.LoadUnfiltered();
|
||||
|
||||
@ -240,10 +264,7 @@ void CGameTitles::LoadTitlesFromGameTDB(const char * path, bool forceCacheReload
|
||||
GetMissingTitles(MissingTitles, removeUnused);
|
||||
|
||||
if(MissingTitles.size() == 0)
|
||||
{
|
||||
WriteCachedTitles(Cachepath.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
std::string Title;
|
||||
|
||||
@ -258,9 +279,8 @@ void CGameTitles::LoadTitlesFromGameTDB(const char * path, bool forceCacheReload
|
||||
continue;
|
||||
|
||||
this->SetGameTitle(MissingTitles[i].c_str(), Title.c_str());
|
||||
|
||||
TitleList[TitleList.size()-1].ParentalRating = -1;
|
||||
TitleList[TitleList.size()-1].PlayersCount = 1;
|
||||
//! Title is loaded from WiiTDB, remember that it's good
|
||||
TitleList[TitleList.size()-1].FromWiiTDB = 1;
|
||||
|
||||
Rating = XML_DB.GetRating(MissingTitles[i].c_str());
|
||||
if(Rating < 0)
|
||||
@ -274,7 +294,4 @@ void CGameTitles::LoadTitlesFromGameTDB(const char * path, bool forceCacheReload
|
||||
if(ret > 0)
|
||||
TitleList[TitleList.size()-1].PlayersCount = ret;
|
||||
}
|
||||
|
||||
if(Settings.CacheTitles)
|
||||
WriteCachedTitles(Cachepath.c_str());
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ typedef struct _GameTitle
|
||||
std::string Title;
|
||||
int ParentalRating;
|
||||
int PlayersCount;
|
||||
char FromWiiTDB;
|
||||
|
||||
} GameTitle;
|
||||
|
||||
@ -35,14 +36,15 @@ class CGameTitles
|
||||
//! Get possible number of players for this game
|
||||
int GetPlayersCount(const char * id) const;
|
||||
//! Load Game Titles from GameTDB
|
||||
void LoadTitlesFromGameTDB(const char * path, bool forceCacheReload = false, bool removeUnused = true);
|
||||
void LoadTitlesFromGameTDB(const char * path, bool removeUnused = true);
|
||||
//! Set default game titles
|
||||
void SetDefault();
|
||||
//! Free memory and remove all titles - Same as SetDefault()
|
||||
void Clear() { SetDefault(); }
|
||||
protected:
|
||||
//! Cache titles functions
|
||||
u32 ReadCachedTitles(const char * path);
|
||||
void WriteCachedTitles(const char * path);
|
||||
protected:
|
||||
void GetMissingTitles(std::vector<std::string> &MissingTitles, bool removeUnused);
|
||||
|
||||
std::vector<GameTitle> TitleList;
|
||||
|
@ -89,8 +89,6 @@ int MenuLanguageSelect()
|
||||
int cnt = 0;
|
||||
int ret = 0, choice = 0;
|
||||
int returnhere = 0;
|
||||
char OldLangCode[10];
|
||||
snprintf(OldLangCode, sizeof(OldLangCode), Settings.db_language);
|
||||
|
||||
GuiImageData btnOutline(Resources::GetFile("button_dialogue_box.png"), Resources::GetFileSize("button_dialogue_box.png"));
|
||||
GuiImageData settingsbg(Resources::GetFile("settings_background.png"), Resources::GetFileSize("settings_background.png"));
|
||||
@ -312,12 +310,6 @@ int MenuLanguageSelect()
|
||||
|
||||
}
|
||||
|
||||
//! Reload game list in new language
|
||||
if(strcmp(Settings.db_language, OldLangCode) != 0)
|
||||
{
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||
}
|
||||
|
||||
w.SetEffect( EFFECT_FADE, -20 );
|
||||
while ( w.GetEffect() > 0 ) usleep( 50 );
|
||||
|
||||
|
@ -69,17 +69,24 @@ FeatureSettingsMenu::FeatureSettingsMenu()
|
||||
Options->SetName(Idx++, "%s", tr( "Install WAD to EmuNand" ));
|
||||
|
||||
OldTitlesOverride = Settings.titlesOverride;
|
||||
OldCacheTitles = Settings.CacheTitles;
|
||||
|
||||
SetOptionValues();
|
||||
}
|
||||
|
||||
FeatureSettingsMenu::~FeatureSettingsMenu()
|
||||
{
|
||||
if (Settings.titlesOverride != OldTitlesOverride)
|
||||
if ( Settings.titlesOverride != OldTitlesOverride
|
||||
|| Settings.CacheTitles != OldCacheTitles)
|
||||
{
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, true);
|
||||
if(!Settings.titlesOverride)
|
||||
//! Remove cached titles and reload new titles
|
||||
GameTitles.SetDefault();
|
||||
if(Settings.titlesOverride) {
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||
}
|
||||
else
|
||||
{
|
||||
//! Don't override titles, in other words read them from disc header or directory names
|
||||
gameList.ReadGameList();
|
||||
gameList.LoadUnfiltered();
|
||||
}
|
||||
@ -144,9 +151,6 @@ int FeatureSettingsMenu::GetMenuInternal()
|
||||
else if (ret == ++Idx)
|
||||
{
|
||||
if (++Settings.CacheTitles >= MAX_ON_OFF) Settings.CacheTitles = 0;
|
||||
|
||||
if(Settings.CacheTitles) //! create new cache file
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||
}
|
||||
|
||||
//! Settings: Wiilight
|
||||
@ -253,7 +257,7 @@ int FeatureSettingsMenu::GetMenuInternal()
|
||||
{
|
||||
if(gameList[i]->type != TYPE_GAME_WII && gameList[i]->type != TYPE_GAME_NANDCHAN)
|
||||
continue;
|
||||
|
||||
|
||||
if(gameList[i]->tid != 0) //! Channels
|
||||
{
|
||||
snprintf(nandPath, sizeof(nandPath), "/title/%08x/%08x/data", (u32) (gameList[i]->tid >> 32), (u32) gameList[i]->tid );
|
||||
|
@ -36,6 +36,7 @@ class FeatureSettingsMenu : public SettingsMenu
|
||||
int GetMenuInternal();
|
||||
|
||||
int OldTitlesOverride;
|
||||
int OldCacheTitles;
|
||||
|
||||
OptionList GuiOptions;
|
||||
};
|
||||
|
@ -278,7 +278,7 @@ void FlyingButtonsMenu::ShowMenu()
|
||||
//! Free memory if not done yet because new is allocated
|
||||
HideMenu();
|
||||
|
||||
titleTxt = new GuiText(MenuTitle.c_str(), 28, ( GXColor ) {0, 0, 0, 255});
|
||||
titleTxt = new GuiText(MenuTitle.c_str(), 28, thColor("r=0 g=0 b=0 a=255 - settings title text color"));
|
||||
titleTxt->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
titleTxt->SetPosition(0, 40);
|
||||
titleTxt->SetMaxWidth(310, SCROLL_HORIZONTAL);
|
||||
|
@ -233,7 +233,8 @@ int GuiSettingsMenu::GetMenuInternal()
|
||||
if (returnhere == 2)
|
||||
{
|
||||
//! Language changed. Reload game titles with new lang code.
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, true);
|
||||
GameTitles.SetDefault();
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||
return MENU_SETTINGS;
|
||||
}
|
||||
|
||||
|
@ -187,7 +187,7 @@ void GameLoadSM::SetOptionNames()
|
||||
Options->SetName(Idx++, "%s", tr( "Select DOL Offset" ));
|
||||
}
|
||||
Options->SetName(Idx++, "%s", tr( "Block IOS Reload" ));
|
||||
if(Header->type == TYPE_GAME_WII)
|
||||
if(Header->type == TYPE_GAME_WII || Header->type == TYPE_GAME_EMUNANDCHAN)
|
||||
{
|
||||
Options->SetName(Idx++, "%s", tr( "Nand Emulation" ));
|
||||
Options->SetName(Idx++, "%s", tr( "Nand Emu Path" ));
|
||||
@ -296,7 +296,7 @@ void GameLoadSM::SetOptionValues()
|
||||
else
|
||||
Options->SetValue(Idx++, "%s", tr( OnOffText[GameConfig.iosreloadblock]) );
|
||||
|
||||
if(Header->type == TYPE_GAME_WII)
|
||||
if(Header->type == TYPE_GAME_WII || Header->type == TYPE_GAME_EMUNANDCHAN)
|
||||
{
|
||||
//! Settings: Nand Emulation
|
||||
if(GameConfig.NandEmuMode == INHERIT)
|
||||
@ -482,15 +482,19 @@ int GameLoadSM::GetMenuInternal()
|
||||
}
|
||||
|
||||
//! Settings: Nand Emulation
|
||||
else if ((Header->type == TYPE_GAME_WII) && ret == ++Idx)
|
||||
else if ((Header->type == TYPE_GAME_WII || Header->type == TYPE_GAME_EMUNANDCHAN) && ret == ++Idx)
|
||||
{
|
||||
if(!IosLoader::IsD2X())
|
||||
WindowPrompt(tr("Error:"), tr("Nand Emulation is only available on D2X cIOS!"), tr("OK"));
|
||||
else if (++GameConfig.NandEmuMode >= 3) GameConfig.NandEmuMode = INHERIT;
|
||||
|
||||
//! On titles from emulated nand path disabling the nand emu mode is not allowed
|
||||
if(Header->type == TYPE_GAME_EMUNANDCHAN && GameConfig.NandEmuMode == OFF)
|
||||
GameConfig.NandEmuMode = 1;
|
||||
}
|
||||
|
||||
//! Settings: Nand Emu Path
|
||||
else if ((Header->type == TYPE_GAME_WII) && ret == ++Idx)
|
||||
else if ((Header->type == TYPE_GAME_WII || Header->type == TYPE_GAME_EMUNANDCHAN) && ret == ++Idx)
|
||||
{
|
||||
if(!IosLoader::IsD2X())
|
||||
WindowPrompt(tr("Error:"), tr("Nand Emulation is only available on D2X cIOS!"), tr("OK"));
|
||||
|
@ -114,7 +114,7 @@ HardDriveSM::~HardDriveSM()
|
||||
//! Reload the new game titles
|
||||
gameList.ReadGameList();
|
||||
gameList.LoadUnfiltered();
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -111,6 +111,12 @@ static const char * HooktypeText[] =
|
||||
trNOOP( "AXNextFrame" ),
|
||||
};
|
||||
|
||||
static const char * ChannelLaunchText[] =
|
||||
{
|
||||
trNOOP( "Main DOL" ),
|
||||
trNOOP( "Boot Content" ),
|
||||
};
|
||||
|
||||
LoaderSettings::LoaderSettings()
|
||||
: SettingsMenu(tr("Loader Settings"), &GuiOptions, MENU_NONE)
|
||||
{
|
||||
@ -130,9 +136,11 @@ LoaderSettings::LoaderSettings()
|
||||
Options->SetName(Idx++, "%s", tr( "Block IOS Reload" ));
|
||||
Options->SetName(Idx++, "%s", tr( "Return To" ));
|
||||
Options->SetName(Idx++, "%s", tr( "Nand Saves Emulation" ));
|
||||
Options->SetName(Idx++, "%s", tr( "Nand Chan. Emulation" ));
|
||||
Options->SetName(Idx++, "%s", tr( "Hooktype" ));
|
||||
Options->SetName(Idx++, "%s", tr( "Wiird Debugger" ));
|
||||
Options->SetName(Idx++, "%s", tr( "Debugger Paused Start" ));
|
||||
Options->SetName(Idx++, "%s", tr( "Channel Launcher" ));
|
||||
|
||||
SetOptionValues();
|
||||
|
||||
@ -150,7 +158,7 @@ LoaderSettings::~LoaderSettings()
|
||||
}
|
||||
|
||||
gameList.LoadUnfiltered();
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, false, false);
|
||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -213,6 +221,9 @@ void LoaderSettings::SetOptionValues()
|
||||
//! Settings: Nand Emulation
|
||||
Options->SetValue(Idx++, "%s", tr( NandEmuText[Settings.NandEmuMode] ));
|
||||
|
||||
//! Settings: Nand Chan. Emulation
|
||||
Options->SetValue(Idx++, "%s", tr( NandEmuText[Settings.NandEmuChanMode] ));
|
||||
|
||||
//! Settings: Hooktype
|
||||
Options->SetValue(Idx++, "%s", tr( HooktypeText[Settings.Hooktype] ));
|
||||
|
||||
@ -221,6 +232,9 @@ void LoaderSettings::SetOptionValues()
|
||||
|
||||
//! Settings: Wiird Debugger Pause on Start
|
||||
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.WiirdDebuggerPause] ));
|
||||
|
||||
//! Settings: Channel Launcher
|
||||
Options->SetValue(Idx++, "%s", tr( ChannelLaunchText[Settings.UseChanLauncher] ));
|
||||
}
|
||||
|
||||
int LoaderSettings::GetMenuInternal()
|
||||
@ -344,6 +358,14 @@ int LoaderSettings::GetMenuInternal()
|
||||
else if (++Settings.NandEmuMode >= 3) Settings.NandEmuMode = 0;
|
||||
}
|
||||
|
||||
//! Settings: Nand Chan. Emulation
|
||||
else if (ret == ++Idx )
|
||||
{
|
||||
if(!IosLoader::IsD2X())
|
||||
WindowPrompt(tr("Error:"), tr("Nand Emulation is only available on D2X cIOS!"), tr("OK"));
|
||||
else if (++Settings.NandEmuChanMode >= 3) Settings.NandEmuChanMode = 1;
|
||||
}
|
||||
|
||||
//! Settings: Hooktype
|
||||
else if (ret == ++Idx )
|
||||
{
|
||||
@ -362,6 +384,12 @@ int LoaderSettings::GetMenuInternal()
|
||||
if (++Settings.WiirdDebuggerPause >= MAX_ON_OFF) Settings.WiirdDebuggerPause = 0;
|
||||
}
|
||||
|
||||
//! Settings: Channel Launcher
|
||||
else if (ret == ++Idx )
|
||||
{
|
||||
if (++Settings.UseChanLauncher >= MAX_ON_OFF) Settings.UseChanLauncher = 0;
|
||||
}
|
||||
|
||||
SetOptionValues();
|
||||
|
||||
return MENU_NONE;
|
||||
|
@ -74,6 +74,8 @@ void AppCleanUp(void)
|
||||
extern u8 mountMethod;
|
||||
gprintf("Exiting main GUI. mountMethod = %d\n", mountMethod);
|
||||
|
||||
if(Settings.CacheTitles)
|
||||
GameTitles.WriteCachedTitles(Settings.titlestxt_path);
|
||||
Settings.Save();
|
||||
|
||||
ExitGUIThreads();
|
||||
|
@ -1,4 +1,5 @@
|
||||
#include <gctypes.h>
|
||||
#include <ogc/machine/processor.h>
|
||||
|
||||
#include "IosLoader.h"
|
||||
#include "Controls/DeviceHandler.hpp"
|
||||
@ -17,6 +18,11 @@
|
||||
#include "utils/tools.h"
|
||||
#include "gecko.h"
|
||||
|
||||
#define CheckAHBPROT() (read32(0x0D800064) == 0xFFFFFFFF)
|
||||
#define MEM2_PROT 0x0D8B420A
|
||||
#define ES_MODULE_START ((u16 *)0x939F0000)
|
||||
#define ES_MODULE_END (ES_MODULE_START + 0x4000)
|
||||
#define ES_HACK_OFFSET 4
|
||||
|
||||
/*
|
||||
* Buffer variables for the IOS info to avoid loading it several times
|
||||
@ -148,7 +154,7 @@ s32 IosLoader::ReloadIosSafe(s32 ios)
|
||||
return -33;
|
||||
}
|
||||
|
||||
s32 r = IOS_ReloadIOS(ios);
|
||||
s32 r = ReloadIosKeepingRights(ios);
|
||||
if (r >= 0) WII_Initialize();
|
||||
|
||||
IosLoader::LoadIOSModules(IOS_GetVersion(), IOS_GetRevision());
|
||||
@ -156,6 +162,45 @@ s32 IosLoader::ReloadIosSafe(s32 ios)
|
||||
return r;
|
||||
}
|
||||
|
||||
/*
|
||||
* Reloads a certain IOS and keeps the AHBPROT flag enabled if available.
|
||||
*/
|
||||
s32 IosLoader::ReloadIosKeepingRights(s32 ios)
|
||||
{
|
||||
if (CheckAHBPROT())
|
||||
{
|
||||
static const u16 ticket_check[] = {
|
||||
0x685B, // ldr r3, [r3, #4] ; Get TMD pointer
|
||||
0x22EC, 0x0052, // movs r2, 0x1D8 ; Set offset of access rights field in TMD
|
||||
0x189B, // adds r3, r3, r2 ; Add offset to TMD pointer
|
||||
0x681B, // ldr r3, [r3] ; Load access rights. We'll hack it with full access rights!!!
|
||||
0x4698, // mov r8, r3 ; Store it for the DVD video bitcheck later
|
||||
0x07DB // lsls r3, r3, 0x1F ; check AHBPROT bit
|
||||
};
|
||||
|
||||
/* Disable MEM 2 protection */
|
||||
write16(MEM2_PROT, 2);
|
||||
|
||||
for (u16 *patchme = ES_MODULE_START; patchme < ES_MODULE_END; patchme++)
|
||||
{
|
||||
if (!memcmp(patchme, ticket_check, sizeof(ticket_check)))
|
||||
{
|
||||
gprintf("ReloadIos: Found TMD access rights check at %p\n", patchme);
|
||||
|
||||
/* Apply patch */
|
||||
patchme[ES_HACK_OFFSET] = 0x23FF; // li r3, 0xFF ; Set full access rights
|
||||
|
||||
/* Flush cache */
|
||||
DCFlushRange(patchme+ES_HACK_OFFSET, 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Reload IOS. MEM2 protection is implicitly re-enabled */
|
||||
return IOS_ReloadIOS(ios);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* Private/Protected Methods:
|
||||
******************************************************************************/
|
||||
|
@ -19,6 +19,7 @@ class IosLoader
|
||||
static s32 LoadAppCios();
|
||||
static s32 LoadGameCios(s32 ios);
|
||||
static s32 ReloadIosSafe(s32 ios);
|
||||
static s32 ReloadIosKeepingRights(s32 ios);
|
||||
static bool IsHermesIOS(s32 ios = IOS_GetVersion());
|
||||
static bool IsWaninkokoIOS(s32 ios = IOS_GetVersion());
|
||||
static bool IsD2X(s32 ios = IOS_GetVersion());
|
||||
|
@ -38,6 +38,9 @@ extern const u32 arrangeList_png_size;
|
||||
extern const u8 arrangeList_gray_png[];
|
||||
extern const u32 arrangeList_gray_png_size;
|
||||
|
||||
extern const u8 background_png[];
|
||||
extern const u32 background_png_size;
|
||||
|
||||
extern const u8 balanceboard_png[];
|
||||
extern const u32 balanceboard_png_size;
|
||||
|
||||
@ -161,6 +164,9 @@ extern const u32 drums_png_size;
|
||||
extern const u8 drumsR_png[];
|
||||
extern const u32 drumsR_png_size;
|
||||
|
||||
extern const u8 dvd_png[];
|
||||
extern const u32 dvd_png_size;
|
||||
|
||||
extern const u8 dvd_gray_png[];
|
||||
extern const u32 dvd_gray_png_size;
|
||||
|
||||
@ -200,33 +206,9 @@ extern const u32 exit_top_over_png_size;
|
||||
extern const u8 favIcon_png[];
|
||||
extern const u32 favIcon_png_size;
|
||||
|
||||
extern const u8 background_png[];
|
||||
extern const u32 background_png_size;
|
||||
|
||||
extern const u8 dvd_png[];
|
||||
extern const u32 dvd_png_size;
|
||||
|
||||
extern const u8 favIcon_gray_png[];
|
||||
extern const u32 favIcon_gray_png_size;
|
||||
|
||||
extern const u8 icon_folder_png[];
|
||||
extern const u32 icon_folder_png_size;
|
||||
|
||||
extern const u8 nintendodsR_png[];
|
||||
extern const u32 nintendodsR_png_size;
|
||||
|
||||
extern const u8 playersSort_png[];
|
||||
extern const u32 playersSort_png_size;
|
||||
|
||||
extern const u8 rplayer3_point_png[];
|
||||
extern const u32 rplayer3_point_png_size;
|
||||
|
||||
extern const u8 sdcard_png[];
|
||||
extern const u32 sdcard_png_size;
|
||||
|
||||
extern const u8 startgame_arrow_left_png[];
|
||||
extern const u32 startgame_arrow_left_png_size;
|
||||
|
||||
extern const u8 favorite_png[];
|
||||
extern const u32 favorite_png_size;
|
||||
|
||||
@ -257,6 +239,9 @@ extern const u32 guitarR_png_size;
|
||||
extern const u8 gxlogo_png[];
|
||||
extern const u32 gxlogo_png_size;
|
||||
|
||||
extern const u8 icon_folder_png[];
|
||||
extern const u32 icon_folder_png_size;
|
||||
|
||||
extern const u8 keyboard_backspace_over_png[];
|
||||
extern const u32 keyboard_backspace_over_png_size;
|
||||
|
||||
@ -314,6 +299,9 @@ extern const u32 new_png_size;
|
||||
extern const u8 nintendods_png[];
|
||||
extern const u32 nintendods_png_size;
|
||||
|
||||
extern const u8 nintendodsR_png[];
|
||||
extern const u32 nintendodsR_png_size;
|
||||
|
||||
extern const u8 nocover_png[];
|
||||
extern const u32 nocover_png_size;
|
||||
|
||||
@ -389,6 +377,9 @@ extern const u32 player4_grab_png_size;
|
||||
extern const u8 player4_point_png[];
|
||||
extern const u32 player4_point_png_size;
|
||||
|
||||
extern const u8 playersSort_png[];
|
||||
extern const u32 playersSort_png_size;
|
||||
|
||||
extern const u8 progressbar_png[];
|
||||
extern const u32 progressbar_png_size;
|
||||
|
||||
@ -410,6 +401,9 @@ extern const u32 rplayer1_point_png_size;
|
||||
extern const u8 rplayer2_point_png[];
|
||||
extern const u32 rplayer2_point_png_size;
|
||||
|
||||
extern const u8 rplayer3_point_png[];
|
||||
extern const u32 rplayer3_point_png_size;
|
||||
|
||||
extern const u8 rplayer4_point_png[];
|
||||
extern const u32 rplayer4_point_png_size;
|
||||
|
||||
@ -431,6 +425,9 @@ extern const u32 scrollbar_arrowup_png_size;
|
||||
extern const u8 scrollbar_box_png[];
|
||||
extern const u32 scrollbar_box_png_size;
|
||||
|
||||
extern const u8 sdcard_png[];
|
||||
extern const u32 sdcard_png_size;
|
||||
|
||||
extern const u8 sdcard_over_png[];
|
||||
extern const u32 sdcard_over_png_size;
|
||||
|
||||
@ -455,6 +452,9 @@ extern const u32 settings_title_png_size;
|
||||
extern const u8 settings_title_over_png[];
|
||||
extern const u32 settings_title_over_png_size;
|
||||
|
||||
extern const u8 startgame_arrow_left_png[];
|
||||
extern const u32 startgame_arrow_left_png_size;
|
||||
|
||||
extern const u8 startgame_arrow_right_png[];
|
||||
extern const u32 startgame_arrow_right_png_size;
|
||||
|
||||
@ -592,6 +592,7 @@ RecourceFile Resources::RecourceFiles[] =
|
||||
{"arrangeGrid_gray.png", arrangeGrid_gray_png, arrangeGrid_gray_png_size, NULL, 0},
|
||||
{"arrangeList.png", arrangeList_png, arrangeList_png_size, NULL, 0},
|
||||
{"arrangeList_gray.png", arrangeList_gray_png, arrangeList_gray_png_size, NULL, 0},
|
||||
{"background.png", background_png, background_png_size, NULL, 0},
|
||||
{"balanceboard.png", balanceboard_png, balanceboard_png_size, NULL, 0},
|
||||
{"balanceboardR.png", balanceboardR_png, balanceboardR_png_size, NULL, 0},
|
||||
{"battery.png", battery_png, battery_png_size, NULL, 0},
|
||||
@ -633,6 +634,7 @@ RecourceFile Resources::RecourceFiles[] =
|
||||
{"dialogue_box_startgame.png", dialogue_box_startgame_png, dialogue_box_startgame_png_size, NULL, 0},
|
||||
{"drums.png", drums_png, drums_png_size, NULL, 0},
|
||||
{"drumsR.png", drumsR_png, drumsR_png_size, NULL, 0},
|
||||
{"dvd.png", dvd_png, dvd_png_size, NULL, 0},
|
||||
{"dvd_gray.png", dvd_gray_png, dvd_gray_png_size, NULL, 0},
|
||||
{"esrb_ao.png", esrb_ao_png, esrb_ao_png_size, NULL, 0},
|
||||
{"esrb_e.png", esrb_e_png, esrb_e_png_size, NULL, 0},
|
||||
@ -646,15 +648,7 @@ RecourceFile Resources::RecourceFiles[] =
|
||||
{"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},
|
||||
{"favIcon.png", favIcon_png, favIcon_png_size, NULL, 0},
|
||||
{"background.png", background_png, background_png_size, NULL, 0},
|
||||
{"dvd.png", dvd_png, dvd_png_size, NULL, 0},
|
||||
{"favIcon_gray.png", favIcon_gray_png, favIcon_gray_png_size, NULL, 0},
|
||||
{"icon_folder.png", icon_folder_png, icon_folder_png_size, NULL, 0},
|
||||
{"nintendodsR.png", nintendodsR_png, nintendodsR_png_size, NULL, 0},
|
||||
{"playersSort.png", playersSort_png, playersSort_png_size, NULL, 0},
|
||||
{"rplayer3_point.png", rplayer3_point_png, rplayer3_point_png_size, NULL, 0},
|
||||
{"sdcard.png", sdcard_png, sdcard_png_size, NULL, 0},
|
||||
{"startgame_arrow_left.png", startgame_arrow_left_png, startgame_arrow_left_png_size, NULL, 0},
|
||||
{"favorite.png", favorite_png, favorite_png_size, NULL, 0},
|
||||
{"gameinfo1.png", gameinfo1_png, gameinfo1_png_size, NULL, 0},
|
||||
{"gameinfo1a.png", gameinfo1a_png, gameinfo1a_png_size, NULL, 0},
|
||||
@ -665,6 +659,7 @@ RecourceFile Resources::RecourceFiles[] =
|
||||
{"guitar.png", guitar_png, guitar_png_size, NULL, 0},
|
||||
{"guitarR.png", guitarR_png, guitarR_png_size, NULL, 0},
|
||||
{"gxlogo.png", gxlogo_png, gxlogo_png_size, NULL, 0},
|
||||
{"icon_folder.png", icon_folder_png, icon_folder_png_size, NULL, 0},
|
||||
{"keyboard_backspace_over.png", keyboard_backspace_over_png, keyboard_backspace_over_png_size, NULL, 0},
|
||||
{"keyboard_clear_over.png", keyboard_clear_over_png, keyboard_clear_over_png_size, NULL, 0},
|
||||
{"keyboard_key.png", keyboard_key_png, keyboard_key_png_size, NULL, 0},
|
||||
@ -684,6 +679,7 @@ RecourceFile Resources::RecourceFiles[] =
|
||||
{"motionplusR.png", motionplusR_png, motionplusR_png_size, NULL, 0},
|
||||
{"new.png", new_png, new_png_size, NULL, 0},
|
||||
{"nintendods.png", nintendods_png, nintendods_png_size, NULL, 0},
|
||||
{"nintendodsR.png", nintendodsR_png, nintendodsR_png_size, NULL, 0},
|
||||
{"nocover.png", nocover_png, nocover_png_size, NULL, 0},
|
||||
{"nocoverFlat.png", nocoverFlat_png, nocoverFlat_png_size, NULL, 0},
|
||||
{"nocoverFull.png", nocoverFull_png, nocoverFull_png_size, NULL, 0},
|
||||
@ -709,6 +705,7 @@ RecourceFile Resources::RecourceFiles[] =
|
||||
{"player3_point.png", player3_point_png, player3_point_png_size, NULL, 0},
|
||||
{"player4_grab.png", player4_grab_png, player4_grab_png_size, NULL, 0},
|
||||
{"player4_point.png", player4_point_png, player4_point_png_size, NULL, 0},
|
||||
{"playersSort.png", playersSort_png, playersSort_png_size, NULL, 0},
|
||||
{"progressbar.png", progressbar_png, progressbar_png_size, NULL, 0},
|
||||
{"progressbar_empty.png", progressbar_empty_png, progressbar_empty_png_size, NULL, 0},
|
||||
{"progressbar_outline.png", progressbar_outline_png, progressbar_outline_png_size, NULL, 0},
|
||||
@ -716,6 +713,7 @@ RecourceFile Resources::RecourceFiles[] =
|
||||
{"remove.png", remove_png, remove_png_size, NULL, 0},
|
||||
{"rplayer1_point.png", rplayer1_point_png, rplayer1_point_png_size, NULL, 0},
|
||||
{"rplayer2_point.png", rplayer2_point_png, rplayer2_point_png_size, NULL, 0},
|
||||
{"rplayer3_point.png", rplayer3_point_png, rplayer3_point_png_size, NULL, 0},
|
||||
{"rplayer4_point.png", rplayer4_point_png, rplayer4_point_png_size, NULL, 0},
|
||||
{"scrollBarBottom.png", scrollBarBottom_png, scrollBarBottom_png_size, NULL, 0},
|
||||
{"scrollBarTile.png", scrollBarTile_png, scrollBarTile_png_size, NULL, 0},
|
||||
@ -723,6 +721,7 @@ RecourceFile Resources::RecourceFiles[] =
|
||||
{"scrollbar_arrowdown.png", scrollbar_arrowdown_png, scrollbar_arrowdown_png_size, NULL, 0},
|
||||
{"scrollbar_arrowup.png", scrollbar_arrowup_png, scrollbar_arrowup_png_size, NULL, 0},
|
||||
{"scrollbar_box.png", scrollbar_box_png, scrollbar_box_png_size, NULL, 0},
|
||||
{"sdcard.png", sdcard_png, sdcard_png_size, NULL, 0},
|
||||
{"sdcard_over.png", sdcard_over_png, sdcard_over_png_size, NULL, 0},
|
||||
{"searchIcon.png", searchIcon_png, searchIcon_png_size, NULL, 0},
|
||||
{"searchIcon_gray.png", searchIcon_gray_png, searchIcon_gray_png_size, NULL, 0},
|
||||
@ -731,6 +730,7 @@ RecourceFile Resources::RecourceFiles[] =
|
||||
{"settings_button_over.png", settings_button_over_png, settings_button_over_png_size, NULL, 0},
|
||||
{"settings_title.png", settings_title_png, settings_title_png_size, NULL, 0},
|
||||
{"settings_title_over.png", settings_title_over_png, settings_title_over_png_size, NULL, 0},
|
||||
{"startgame_arrow_left.png", startgame_arrow_left_png, startgame_arrow_left_png_size, NULL, 0},
|
||||
{"startgame_arrow_right.png", startgame_arrow_right_png, startgame_arrow_right_png_size, NULL, 0},
|
||||
{"theme_box.png", theme_box_png, theme_box_png_size, NULL, 0},
|
||||
{"theme_dialogue_box.png", theme_dialogue_box_png, theme_dialogue_box_png_size, NULL, 0},
|
||||
@ -773,6 +773,9 @@ RecourceFile Resources::RecourceFiles[] =
|
||||
{"success.ogg", success_ogg, success_ogg_size, NULL, 0},
|
||||
{"clock.ttf", clock_ttf, clock_ttf_size, NULL, 0},
|
||||
{"font.ttf", font_ttf, font_ttf_size, NULL, 0},
|
||||
{"listBackground.png", NULL, 0, NULL, 0}, // Optional
|
||||
{"carouselBackground.png", NULL, 0, NULL, 0}, // Optional
|
||||
{"gridBackground.png", NULL, 0, NULL, 0}, // Optional
|
||||
{NULL, NULL, 0, NULL, 0}
|
||||
};
|
||||
|
||||
|
@ -131,10 +131,6 @@ void GameBooter::SetupNandEmu(u8 NandEmuMode, const char *NandEmuPath, struct di
|
||||
DeviceHandler::Instance()->UnMountSD();
|
||||
|
||||
Enable_Emu(strncmp(NandEmuPath, "usb", 3) == 0 ? EMU_USB : EMU_SD);
|
||||
|
||||
//! Remount SD again after activating NAND emu
|
||||
if(strncmp(NandEmuPath, "sd", 2) == 0)
|
||||
DeviceHandler::Instance()->MountSD();
|
||||
}
|
||||
}
|
||||
|
||||
@ -238,7 +234,9 @@ int GameBooter::BootGame(struct discHdr *gameHdr)
|
||||
const char *NandEmuPath = game_cfg->NandEmuPath.size() == 0 ? Settings.NandEmuPath : game_cfg->NandEmuPath.c_str();
|
||||
if(gameHeader.tid != 0)
|
||||
{
|
||||
NandEmuMode = (gameHeader.type == TYPE_GAME_EMUNANDCHAN) ? 2 : 0; // If from emu nand set full emulation mode
|
||||
NandEmuMode = (gameHeader.type == TYPE_GAME_EMUNANDCHAN)
|
||||
? (game_cfg->NandEmuMode == INHERIT ? Settings.NandEmuChanMode : game_cfg->NandEmuMode) //! Emulated nand title
|
||||
: 0; //! Real nand title
|
||||
NandEmuPath = game_cfg->NandEmuPath.size() == 0 ? Settings.NandEmuChanPath : game_cfg->NandEmuPath.c_str();
|
||||
}
|
||||
|
||||
@ -261,16 +259,16 @@ int GameBooter::BootGame(struct discHdr *gameHdr)
|
||||
if(Settings.PlaylogUpdate)
|
||||
Playlog_Update((char *) gameHeader.id, BNRInstance::Instance()->GetIMETTitle(CONF_GetLanguage()));
|
||||
|
||||
//! Setup NAND emulation
|
||||
SetupNandEmu(NandEmuMode, NandEmuPath, gameHeader);
|
||||
|
||||
// Load wip codes
|
||||
//! Load wip codes
|
||||
load_wip_code(gameHeader.id);
|
||||
|
||||
//! Load Ocarina codes
|
||||
if (ocarinaChoice)
|
||||
ocarina_load_code(Settings.Cheatcodespath, gameHeader.id);
|
||||
|
||||
//! Setup NAND emulation
|
||||
SetupNandEmu(NandEmuMode, NandEmuPath, gameHeader);
|
||||
|
||||
//! Setup disc stuff if we load a game
|
||||
if(gameHeader.tid == 0)
|
||||
{
|
||||
@ -334,8 +332,6 @@ int GameBooter::BootGame(struct discHdr *gameHdr)
|
||||
gprintf("\tChannel Boot\n");
|
||||
// Load dol
|
||||
AppEntrypoint = Channels::LoadChannel(gameHeader.tid);
|
||||
/* Setup low memory */
|
||||
Disc_SetLowMem();
|
||||
/* Setup video mode */
|
||||
Disc_SelectVMode(videoChoice);
|
||||
}
|
||||
|
@ -164,9 +164,6 @@ int MountGamePartition(bool ShowGUI)
|
||||
}
|
||||
|
||||
gprintf("LoadTitlesFromGameTDB\n");
|
||||
//! Clear list if available
|
||||
GameTitles.Clear();
|
||||
|
||||
//! gameList is loaded in GameTitles.LoadTitlesFromGameTDB after cache file load
|
||||
//! for speed up purpose. If titles override active, load game list here.
|
||||
if(Settings.titlesOverride)
|
||||
|
@ -61,19 +61,14 @@ void Disc_SelectVMode(u8 videoselected)
|
||||
|
||||
/* Get video mode configuration */
|
||||
bool progressive = (CONF_GetProgressiveScan() > 0) && VIDEO_HaveComponentCable();
|
||||
bool PAL60 = CONF_GetEuRGB60() > 0;
|
||||
u32 tvmode = CONF_GetVideo();
|
||||
|
||||
/* Select video mode register */
|
||||
switch (tvmode)
|
||||
{
|
||||
case CONF_VIDEO_PAL:
|
||||
if (CONF_GetEuRGB60() > 0)
|
||||
{
|
||||
vmode_reg = VI_EURGB60;
|
||||
vmode = progressive ? &TVNtsc480Prog : &TVEurgb60Hz480IntDf;
|
||||
}
|
||||
else
|
||||
vmode_reg = VI_PAL;
|
||||
vmode_reg = PAL60 ? VI_EURGB60 : VI_PAL;
|
||||
break;
|
||||
|
||||
case CONF_VIDEO_MPAL:
|
||||
@ -100,41 +95,42 @@ void Disc_SelectVMode(u8 videoselected)
|
||||
case 'Y':
|
||||
if (tvmode != CONF_VIDEO_PAL)
|
||||
{
|
||||
vmode_reg = VI_PAL;
|
||||
vmode = progressive ? &TVNtsc480Prog : &TVNtsc480IntDf;
|
||||
vmode_reg = PAL60 ? VI_EURGB60 : VI_PAL;
|
||||
vmode = progressive ? &TVNtsc480Prog : (PAL60 ? &TVEurgb60Hz480IntDf : &TVPal528IntDf);
|
||||
}
|
||||
break;
|
||||
// NTSC
|
||||
case 'E':
|
||||
case 'J':
|
||||
default:
|
||||
if (tvmode != CONF_VIDEO_NTSC)
|
||||
{
|
||||
vmode_reg = VI_NTSC;
|
||||
vmode = progressive ? &TVNtsc480Prog : &TVEurgb60Hz480IntDf;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case VIDEO_MODE_PAL50: // PAL50
|
||||
vmode = &TVPal528IntDf;
|
||||
vmode_reg = vmode->viTVMode >> 2;
|
||||
vmode_reg = VI_PAL;
|
||||
break;
|
||||
case VIDEO_MODE_PAL60: // PAL60
|
||||
vmode = progressive ? &TVNtsc480Prog : &TVEurgb60Hz480IntDf;
|
||||
vmode_reg = progressive ? TVEurgb60Hz480Prog.viTVMode >> 2 : vmode->viTVMode >> 2;
|
||||
vmode_reg = VI_EURGB60;
|
||||
break;
|
||||
case VIDEO_MODE_NTSC: // NTSC
|
||||
vmode = progressive ? &TVNtsc480Prog : &TVNtsc480IntDf;
|
||||
vmode_reg = vmode->viTVMode >> 2;
|
||||
vmode_reg = VI_NTSC;
|
||||
break;
|
||||
case VIDEO_MODE_PAL480P:
|
||||
vmode = &TVNtsc480Prog;
|
||||
vmode_reg = TVEurgb60Hz480Prog.viTVMode >> 2;
|
||||
vmode_reg = VI_EURGB60;
|
||||
break;
|
||||
case VIDEO_MODE_NTSC480P:
|
||||
vmode = &TVNtsc480Prog;
|
||||
vmode_reg = vmode->viTVMode >> 2;
|
||||
vmode_reg = VI_NTSC;
|
||||
break;
|
||||
case VIDEO_MODE_SYSDEFAULT: // AUTO PATCH TO SYSTEM
|
||||
break;
|
||||
@ -145,12 +141,11 @@ void __Disc_SetVMode(void)
|
||||
{
|
||||
/* Set video mode register */
|
||||
*Video_Mode = vmode_reg;
|
||||
DCFlushRange((void *) Video_Mode, 4);
|
||||
|
||||
/* Set video mode */
|
||||
if (vmode != NULL)
|
||||
{
|
||||
VIDEO_Configure(vmode);
|
||||
}
|
||||
|
||||
/* Setup video */
|
||||
VIDEO_SetBlack(TRUE);
|
||||
@ -289,7 +284,7 @@ s32 Disc_JumpToEntrypoint(s32 hooktype, u32 dolparameter)
|
||||
{
|
||||
if(hooktype)
|
||||
{
|
||||
__asm__(
|
||||
asm volatile (
|
||||
"lis %r3, returnpoint@h\n"
|
||||
"ori %r3, %r3, returnpoint@l\n"
|
||||
"mtlr %r3\n"
|
||||
@ -311,7 +306,7 @@ s32 Disc_JumpToEntrypoint(s32 hooktype, u32 dolparameter)
|
||||
}
|
||||
else
|
||||
{
|
||||
__asm__(
|
||||
asm volatile (
|
||||
"isync\n"
|
||||
"lis %r3, AppEntrypoint@h\n"
|
||||
"ori %r3, %r3, AppEntrypoint@l\n"
|
||||
@ -327,7 +322,7 @@ s32 Disc_JumpToEntrypoint(s32 hooktype, u32 dolparameter)
|
||||
}
|
||||
else if (hooktype)
|
||||
{
|
||||
__asm__(
|
||||
asm volatile (
|
||||
"lis %r3, AppEntrypoint@h\n"
|
||||
"ori %r3, %r3, AppEntrypoint@l\n"
|
||||
"lwz %r3, 0(%r3)\n"
|
||||
@ -341,7 +336,7 @@ s32 Disc_JumpToEntrypoint(s32 hooktype, u32 dolparameter)
|
||||
}
|
||||
else
|
||||
{
|
||||
__asm__(
|
||||
asm volatile (
|
||||
"lis %r3, AppEntrypoint@h\n"
|
||||
"ori %r3, %r3, AppEntrypoint@l\n"
|
||||
"lwz %r3, 0(%r3)\n"
|
||||
|
@ -447,7 +447,7 @@ s32 Wbfs_Fat::GetHeadersCount()
|
||||
// if we have titles.txt entry use that
|
||||
title = GameTitles.GetTitle(id);
|
||||
// if no titles.txt get title from dir or file name
|
||||
if ((!title || *title == 0) && *fname_title != 0)
|
||||
if ((!title || *title == 0) && *fname_title != 0 && Settings.titlesOverride)
|
||||
title = fname_title;
|
||||
|
||||
if (title && *title != 0)
|
||||
@ -562,6 +562,7 @@ s32 Wbfs_Fat::GetHeadersCount()
|
||||
|
||||
fat_hdr_list = tmpList;
|
||||
memcpy(&fat_hdr_list[fat_hdr_count - 1], &tmpHdr, sizeof(struct discHdr));
|
||||
GameTitles.SetGameTitle(tmpHdr.id, tmpHdr.title);
|
||||
}
|
||||
|
||||
closedir(dir_iter);
|
||||
|
Loading…
Reference in New Issue
Block a user