* Improved GameCube controller functions (patch by Dynamit)

R+Z=Screenshot, X=Gameinfo window, Y=Covers download
* Added Classic Controller and GameCube Controller support
  in GameInfo window: 
  Right stick=3D Cover movement, X=Flip 3DCover 180°, L/R=Zoom
* Added Wifi6 and wifi10 pictures for GameInfo window.
  (Thanks OriginalHamster)
* Added device priority selection for GameCube listing
  in global Loader settings (SD->USB, or USB->SD)
* Added a "Use global" language setting for Gamecube games.
* Added support for USB devices with modified MBR's signature
  to prevent WiiU's format message.
* Prevent Rockband cursor display on GameCube and WiiWare
  games with "band" in the title (Crach bandicoot, Beach
  Bandits, etc.)
* Added Dol's Video mode patcher in Loader/Game settings,
  for games which couldn't be forced. (MadWorld, MotoGP08,
  Mario Party 8, etc.)
    ♦ Region patch = Patches the dol's known video modes
            to the region selected in "Video mode" setting,
            but keep interlace/progressive references.
    ♦ ON = Patch all dol's known video modes to the one
            selected in "Video mode" setting.
    ♦ ALL = Patch all dol's found video mode patterns 
            (even unknown video modes) to the one selected 
            in "Video mode" setting.

* DML: Updated DM(L) version detection up to v2.10
* DML: Automatically enable PADHook if Screenshot setting
       is enabled
* DML: Fixed a bug where multiple video modes could be set
       at the same time
* DEVO: Added a prompt if trying to launch a game from a 
        non FAT32 partition.
* DEVO: Added Direct Mapping Buttons setting (Devo r200+)
* DEVO: Added support for Language setting

* Language files updated: Chinese, French
This commit is contained in:
Cyan 2013-08-18 14:30:39 +00:00
parent 96b36741d4
commit cd3b443f4e
53 changed files with 1561 additions and 742 deletions

View File

@ -2,8 +2,8 @@
<app version="1"> <app version="1">
<name> USB Loader GX</name> <name> USB Loader GX</name>
<coder>USB Loader GX Team</coder> <coder>USB Loader GX Team</coder>
<version>3.0 r1215</version> <version>3.0 r1216</version>
<release_date>20130526121306</release_date> <release_date>20130818134939</release_date>
<!-- // remove this line to enable arguments <!-- // remove this line to enable arguments
<arguments> <arguments>
<arg>--ios=250</arg> <arg>--ios=250</arg>

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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: r1056 - last version on http://djelinek.sweb.cz/_USBLoderGX/czech.lang \n" "Language-Team: r1056 - last version on http://djelinek.sweb.cz/_USBLoderGX/czech.lang \n"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Upravené/Originál" msgstr "Upravené/Originál"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr "Prejete si synchronizovat informace o volných sektorech na vsech FAT 32
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Prejete si zaktualizovat vsechny jazykové soubory?" msgstr "Prejete si zaktualizovat vsechny jazykové soubory?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "Stažení" msgstr "Stažení"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: Fox888[dk]\n" "Last-Translator: Fox888[dk]\n"
"Language-Team: [dk]\n" "Language-Team: [dk]\n"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Tilpassede/Originale" msgstr "Tilpassede/Originale"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr "Vil du synkronisere fri plads info sector på alle FAT32 Partitioner?"
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Skal alle sprogfiler opdateres/downloades?" msgstr "Skal alle sprogfiler opdateres/downloades?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "" msgstr ""
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\n"
"PO-Revision-Date: 2011-12-17 14:22+0100\n" "PO-Revision-Date: 2011-12-17 14:22+0100\n"
"Last-Translator: Arthur117\n" "Last-Translator: Arthur117\n"
"Language-Team: tj_cool, glowy, Arthur117\n" "Language-Team: tj_cool, glowy, Arthur117\n"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Aangepast/Origineel" msgstr "Aangepast/Origineel"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr "Wil je de vrije ruimte informatie sector synchroniseren op alle FAT32 pa
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Wil je alle taalbestanden updaten/downloaden?" msgstr "Wil je alle taalbestanden updaten/downloaden?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "" msgstr ""
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "" msgstr ""
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr ""
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "" msgstr ""
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "" msgstr ""
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Omat/Alkuperäiset" msgstr "Omat/Alkuperäiset"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr ""
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Haluatko päivittää/ladata kaikki kielitiedostot?" msgstr "Haluatko päivittää/ladata kaikki kielitiedostot?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "" msgstr ""
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

View File

@ -1,11 +1,11 @@
# USB Loader GX language source file. # USB Loader GX language source file.
# French.lang - r1211 # French.lang - r1216
# 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: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: Cyan\n" "Last-Translator: Cyan\n"
"Language-Team: Badablek, Amour, ikya, Cyan & Kin8\n" "Language-Team: Badablek, Amour, ikya, Cyan & Kin8\n"
@ -494,6 +494,12 @@ msgstr "Persos"
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Persos/Originaux" msgstr "Persos/Originaux"
msgid "DEVO D Buttons"
msgstr "DEVO Boutons directs"
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "DEVO Forcer 16:9" msgstr "DEVO Forcer 16:9"
@ -503,6 +509,9 @@ msgstr "DEVO LED detect. activité"
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "DEVO MemCard Émulation" msgstr "DEVO MemCard Émulation"
msgid "DEVO Timer Fix"
msgstr "DEVO Correction timing"
msgid "DML Auto" msgid "DML Auto"
msgstr "Auto" msgstr "Auto"
@ -719,6 +728,9 @@ msgstr "Voulez-vous synchroniser l'information d'espace libre disponible sur tou
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Voulez-vous actualiser/télécharger tous les fichiers langue ?" msgstr "Voulez-vous actualiser/télécharger tous les fichiers langue ?"
msgid "Dol Video Patch"
msgstr "Patch vidéo Dol"
msgid "Download" msgid "Download"
msgstr "Télécharger" msgstr "Télécharger"
@ -1986,6 +1998,9 @@ msgstr "Pour lancer les jeux GameCube avec DIOS MIOS vous devez utiliser une par
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "Pour lancer les jeux GameCube avec Devolution vous devez placer le fichier loader.bin dans le Dossier Loader Devolution." msgstr "Pour lancer les jeux GameCube avec Devolution vous devez placer le fichier loader.bin dans le Dossier Loader Devolution."
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr "Pour lancer les jeux GameCube avec Devolution vous devez utiliser une partition FAT32."
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "Délai des Info-bulles" msgstr "Délai des Info-bulles"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr "Community"
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Community/Original" msgstr "Community/Original"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr "DEVO LED Aktivität"
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "DEVO MemCard Emulation" msgstr "DEVO MemCard Emulation"
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "DML Auto" msgstr "DML Auto"
@ -719,6 +728,9 @@ msgstr "Soll die freier Speicher Info auf allen Partitionen synchronisiert werde
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Alle Sprachdateien aktualisieren?" msgstr "Alle Sprachdateien aktualisieren?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "Herunterladen" msgstr "Herunterladen"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "Um GameCube Spiele mit Devolution zu starten, muss sich die loader.bin Datei in Devolution Pfad befinden." msgstr "Um GameCube Spiele mit Devolution zu starten, muss sich die loader.bin Datei in Devolution Pfad befinden."
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "Tooltip Verzögerung" msgstr "Tooltip Verzögerung"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\n"
"Last-Translator: nakata6790\n" "Last-Translator: nakata6790\n"
"Language-Team: nakata6790 (aka0107@gmail.com)\n" "Language-Team: nakata6790 (aka0107@gmail.com)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -493,6 +493,12 @@ msgstr "ÔñïðïðïéçìÝíá"
msgid "Customs/Original" msgid "Customs/Original"
msgstr "ÔñïðïðïéçìÝíá/ÁõèåíôéêÜ" msgstr "ÔñïðïðïéçìÝíá/ÁõèåíôéêÜ"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -502,6 +508,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "åîïìïßùóç ôçò memory card áðü ôï devolution" msgstr "åîïìïßùóç ôçò memory card áðü ôï devolution"
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "áõôüìáôá áðü ôï DML" msgstr "áõôüìáôá áðü ôï DML"
@ -718,6 +727,9 @@ msgstr "ÈÝëåôå íá óõã÷ñïíßóåôå ôïí êåíü ÷þñï áð
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "ÈÝëåôå íá áíáâáèìßóåôå/êáôåâÜóåôå üëá ôá áñ÷åßá ìåôáöñÜóåùí;" msgstr "ÈÝëåôå íá áíáâáèìßóåôå/êáôåâÜóåôå üëá ôá áñ÷åßá ìåôáöñÜóåùí;"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "ËÞøç" msgstr "ËÞøç"
@ -1985,6 +1997,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "Ãéá áíáðáñáãùãÞ ôßôëùí Gamecube ìå ôï ðñüãñáììá devolution ÷ñåéÜæåóôå ôï áñ÷åßï loader.bin óôï êáèïñéìÝíï ìïíïðÜôé ôïõ devolution." msgstr "Ãéá áíáðáñáãùãÞ ôßôëùí Gamecube ìå ôï ðñüãñáììá devolution ÷ñåéÜæåóôå ôï áñ÷åßï loader.bin óôï êáèïñéìÝíï ìïíïðÜôé ôïõ devolution."
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "ÊáèõóôÝñçóç åìöÜíéóçò åôéêåôþí" msgstr "ÊáèõóôÝñçóç åìöÜíéóçò åôéêåôþí"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Egyéni/Eredeti" msgstr "Egyéni/Eredeti"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr ""
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Minden nyelvi fájl letöltése/frissítése?" msgstr "Minden nyelvi fájl letöltése/frissítése?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "Letöltés" msgstr "Letöltés"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\n"
"PO-Revision-Date: 2011-09-11 12:19+0100\n" "PO-Revision-Date: 2011-09-11 12:19+0100\n"
"Last-Translator: xFede\n" "Last-Translator: xFede\n"
"Language-Team: xFede (fedeanto11@gmail.com)\n" "Language-Team: xFede (fedeanto11@gmail.com)\n"
@ -494,6 +494,12 @@ msgstr "Personalizzati"
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Modific./origin." msgstr "Modific./origin."
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr "Led attività DEVO"
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "Emulazione memory card DEVO" msgstr "Emulazione memory card DEVO"
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "Patch auto DML" msgstr "Patch auto DML"
@ -719,6 +728,9 @@ msgstr "Vuoi sincronizzare le info sullo spazio libero in tutte le partizioni FA
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Vuoi scaricare/aggiornare tutte le traduzioni?" msgstr "Vuoi scaricare/aggiornare tutte le traduzioni?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "Scarica" msgstr "Scarica"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "Per avviare i giochi Gamecube con devolution devi avere il file loader.bin nel tuo percorso devolution." msgstr "Per avviare i giochi Gamecube con devolution devi avere il file loader.bin nel tuo percorso devolution."
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "Ritardo suggerimenti" msgstr "Ritardo suggerimenti"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr "カスタム"
msgid "Customs/Original" msgid "Customs/Original"
msgstr "カスタムを優先" msgstr "カスタムを優先"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "DEVOメモカエミュ" msgstr "DEVOメモカエミュ"
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "DML 自動" msgstr "DML 自動"
@ -719,6 +728,9 @@ msgstr "全てのFAT32領域のセクタで空き容量情報を同期します
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "すべての言語をダウンロードしますか?" msgstr "すべての言語をダウンロードしますか?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "ダウンロード" msgstr "ダウンロード"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "GCゲームをDevolutionで起動するにはloader.binがDevolutionのパスにある必要があります" msgstr "GCゲームをDevolutionで起動するにはloader.binがDevolutionのパスにある必要があります"
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "ヒントバルーンの遅延" msgstr "ヒントバルーンの遅延"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "커스텀/오리지널" msgstr "커스텀/오리지널"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr ""
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "정말로 모든 언어화일을 업데이트하고 다운로드 할까요?" msgstr "정말로 모든 언어화일을 업데이트하고 다운로드 할까요?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "" msgstr ""
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Custom/Original" msgstr "Custom/Original"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr "Vil du synkronisere ledig plass info sektor på alle FAT32 partisjoner?"
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Vil du oppdatere/laste ned alle språkfiler?" msgstr "Vil du oppdatere/laste ned alle språkfiler?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "Last ned" msgstr "Last ned"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "" msgstr ""
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr ""
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Zaktualizowac wszystkie pliki jezykowe?" msgstr "Zaktualizowac wszystkie pliki jezykowe?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "Pobierz" msgstr "Pobierz"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Alternativas/Originais" msgstr "Alternativas/Originais"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr ""
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Deseja atualizar todos os arquivos de idioma?" msgstr "Deseja atualizar todos os arquivos de idioma?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "Baixar" msgstr "Baixar"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\n"
"PO-Revision-Date: 2011-11-03 11:00+0000\n" "PO-Revision-Date: 2011-11-03 11:00+0000\n"
"Last-Translator: pplucky <pplucky@gmail.com>\n" "Last-Translator: pplucky <pplucky@gmail.com>\n"
"Language-Team: Sky8000, pplucky\n" "Language-Team: Sky8000, pplucky\n"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Personalizadas/Originais" msgstr "Personalizadas/Originais"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr "Deseja sincronizar a info de espaço livre em todas as partições FAT32
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Queres actualizar todos os ficheiros de idioma?" msgstr "Queres actualizar todos os ficheiros de idioma?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "Descarregar" msgstr "Descarregar"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Измененный/Оригинальные" msgstr "Измененный/Оригинальные"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr ""
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Вы действительно хотите обновить/загрузить все языковые файлы?" msgstr "Вы действительно хотите обновить/загрузить все языковые файлы?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "Загрузка" msgstr "Загрузка"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\n"
"PO-Revision-Date: 2011-07-25 16:40+0200\n" "PO-Revision-Date: 2011-07-25 16:40+0200\n"
"Last-Translator: Galen/xFede\n" "Last-Translator: Galen/xFede\n"
"Language-Team: Penn, SirPalax, hvy109\n" "Language-Team: Penn, SirPalax, hvy109\n"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Artísticas/Originales" msgstr "Artísticas/Originales"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr "¿Quieres sincronizar el sector de información de espacio libre en toda
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "¿Quieres actualizar/descargar todos los archivos de idiomas?" msgstr "¿Quieres actualizar/descargar todos los archivos de idiomas?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "Descargar" msgstr "Descargar"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "Retraso de ayuda rapida" msgstr "Retraso de ayuda rapida"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Anpassade/Original" msgstr "Anpassade/Original"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr ""
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Vill du uppdatera/ladda ner alla språkfiler?" msgstr "Vill du uppdatera/ladda ner alla språkfiler?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "Ladda ner" msgstr "Ladda ner"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr "自訂"
msgid "Customs/Original" msgid "Customs/Original"
msgstr "自製/原始" msgstr "自製/原始"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr "DEVO LED燈 開啟"
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "DEVO 記憶卡模擬" msgstr "DEVO 記憶卡模擬"
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "DML 自動" msgstr "DML 自動"
@ -719,6 +728,9 @@ msgstr "是否要同步所有FAT32分區可用空間資訊"
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "是否要更新/下載所有語言檔案嗎?" msgstr "是否要更新/下載所有語言檔案嗎?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "下載" msgstr "下載"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "用Devolution執行GameCube遊戲你需在Devolution 路徑中放置loader.bin檔。" msgstr "用Devolution執行GameCube遊戲你需在Devolution 路徑中放置loader.bin檔。"
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "提示訊息 延遲時間" msgstr "提示訊息 延遲時間"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "กำหนดเอง/ดั้งเดิม" msgstr "กำหนดเอง/ดั้งเดิม"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr ""
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "ต้องการอัพเดทหรือดาวน์โหลด ไฟล์ภาษา ทั้งหมด?" msgstr "ต้องการอัพเดทหรือดาวน์โหลด ไฟล์ภาษา ทั้งหมด?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "ดาวน์โหลด" msgstr "ดาวน์โหลด"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-17 13:57+0100\n" "POT-Creation-Date: 2013-08-18 15:50+0200\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"
@ -494,6 +494,12 @@ msgstr ""
msgid "Customs/Original" msgid "Customs/Original"
msgstr "Kişisel/Orjinal" msgstr "Kişisel/Orjinal"
msgid "DEVO D Buttons"
msgstr ""
msgid "DEVO F-Zero AX"
msgstr ""
msgid "DEVO Force Widescreen" msgid "DEVO Force Widescreen"
msgstr "" msgstr ""
@ -503,6 +509,9 @@ msgstr ""
msgid "DEVO MemCard Emulation" msgid "DEVO MemCard Emulation"
msgstr "" msgstr ""
msgid "DEVO Timer Fix"
msgstr ""
msgid "DML Auto" msgid "DML Auto"
msgstr "" msgstr ""
@ -719,6 +728,9 @@ msgstr ""
msgid "Do you wish to update/download all language files?" msgid "Do you wish to update/download all language files?"
msgstr "Tüm dil dosyalarını indirmek/güncellemek istiyor musunuz?" msgstr "Tüm dil dosyalarını indirmek/güncellemek istiyor musunuz?"
msgid "Dol Video Patch"
msgstr ""
msgid "Download" msgid "Download"
msgstr "İndir" msgstr "İndir"
@ -1986,6 +1998,9 @@ msgstr ""
msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path." msgid "To run GameCube games with Devolution you need the loader.bin file in your Devolution Path."
msgstr "" msgstr ""
msgid "To run GameCube games with Devolution you need to use a FAT32 partition."
msgstr ""
msgid "Tooltip Delay" msgid "Tooltip Delay"
msgstr "" msgstr ""

BIN
data/images/wifi10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
data/images/wifi6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -87,7 +87,7 @@ BoxCover::~BoxCover()
//! Remove me later //! Remove me later
void BoxCover::WiiPADControl(GuiTrigger *t) void BoxCover::WiiPADControl(GuiTrigger *t)
{ {
if(t->wpad.btns_d & WPAD_BUTTON_A) if((t->wpad.btns_d & WPAD_BUTTON_A) || (t->wpad.btns_h & WPAD_CLASSIC_BUTTON_A) || (t->pad.btns_h & PAD_BUTTON_A))
{ {
if(t->wpad.ir.valid) if(t->wpad.ir.valid)
{ {
@ -99,7 +99,22 @@ void BoxCover::WiiPADControl(GuiTrigger *t)
movePosX = 0.0f; movePosX = 0.0f;
movePosY = 0.0f; movePosY = 0.0f;
if(moveChan >= 0 && moveChan < 3) // GameCube and Classic Controller
s8 movX = fabs(t->pad.stickX) > 10.0f ? t->pad.stickX : t->WPAD_Stick(0, 0);
s8 movY = fabs(t->pad.stickY) > 10.0f ? t->pad.stickY : t->WPAD_Stick(0, 1);
//! Drop stick moves of less than 10 because of sensitivity
if(fabs(movX) < 10.0f) movX = 0;
if(fabs(movY) < 10.0f) movY = 0;
if(movX < -PADCAL)
PosX += (movX + PADCAL) * Settings.PointerSpeed * fabs(PosZ)/3400.f;
if(movX > PADCAL)
PosX += (movX - PADCAL) * Settings.PointerSpeed * fabs(PosZ)/3400.f;
if(movY < -PADCAL)
PosY += (movY + PADCAL) * Settings.PointerSpeed * fabs(PosZ)/3400.f;
if(movY > PADCAL)
PosY += (movY - PADCAL) * Settings.PointerSpeed * fabs(PosZ)/3400.f;
if(moveChan >= 0 && moveChan < 4)
{ {
char name[50]; char name[50];
snprintf(name, sizeof(name), "player%i_grab.png", moveChan+1); snprintf(name, sizeof(name), "player%i_grab.png", moveChan+1);
@ -109,15 +124,15 @@ void BoxCover::WiiPADControl(GuiTrigger *t)
else else
moveChan = -1; moveChan = -1;
} }
else if((t->wpad.btns_h & WPAD_BUTTON_A) && moveChan == t->chan && t->wpad.ir.valid && !effects) else if(((t->wpad.btns_h & WPAD_BUTTON_A) || (t->wpad.btns_h & WPAD_CLASSIC_BUTTON_A) || (t->pad.btns_h & PAD_BUTTON_A)) && moveChan == t->chan && t->wpad.ir.valid && !effects)
{ {
movePosX = (t->wpad.ir.x-moveStartPosX) * fabs(PosZ)/3400.f; movePosX = (t->wpad.ir.x-moveStartPosX) * fabs(PosZ)/3400.f;
movePosY = (moveStartPosY-t->wpad.ir.y) * fabs(PosZ)/3400.f; movePosY = (moveStartPosY-t->wpad.ir.y) * fabs(PosZ)/3400.f;
last_manual_move_frame = frameCount; last_manual_move_frame = frameCount;
} }
else if(!(t->wpad.btns_h & WPAD_BUTTON_A) && moveChan == t->chan) else if(!(t->wpad.btns_h & WPAD_BUTTON_A) && !(t->wpad.btns_h & WPAD_CLASSIC_BUTTON_A) && !(t->pad.btns_h & PAD_BUTTON_A) && moveChan == t->chan)
{ {
if(moveChan >= 0 && moveChan < 3) if(moveChan >= 0 && moveChan < 4)
{ {
char name[50]; char name[50];
snprintf(name, sizeof(name), "player%i_point.png", moveChan+1); snprintf(name, sizeof(name), "player%i_point.png", moveChan+1);
@ -125,27 +140,27 @@ void BoxCover::WiiPADControl(GuiTrigger *t)
} }
} }
if(t->wpad.btns_h & WPAD_BUTTON_UP) if((t->wpad.btns_h & WPAD_BUTTON_UP) || (t->pad.substickY > PADCAL))
{ {
RotX -= 2.0f; RotX -= 2.0f;
last_manual_move_frame = frameCount; last_manual_move_frame = frameCount;
} }
if(t->wpad.btns_h & WPAD_BUTTON_DOWN) if((t->wpad.btns_h & WPAD_BUTTON_DOWN) || (t->pad.substickY < -PADCAL))
{ {
RotX += 2.0f; RotX += 2.0f;
last_manual_move_frame = frameCount; last_manual_move_frame = frameCount;
} }
if(t->wpad.btns_h & WPAD_BUTTON_LEFT) if((t->wpad.btns_h & WPAD_BUTTON_LEFT) || (t->pad.substickX < -PADCAL))
{ {
RotY -= 2.0f; RotY -= 2.0f;
last_manual_move_frame = frameCount; last_manual_move_frame = frameCount;
} }
if(t->wpad.btns_h & WPAD_BUTTON_RIGHT) if((t->wpad.btns_h & WPAD_BUTTON_RIGHT) || (t->pad.substickX > PADCAL))
{ {
RotY += 2.0f; RotY += 2.0f;
last_manual_move_frame = frameCount; last_manual_move_frame = frameCount;
} }
if(t->wpad.btns_d & WPAD_BUTTON_2) if((t->wpad.btns_d & WPAD_BUTTON_2) || (t->pad.btns_d & PAD_BUTTON_X) || (t->wpad.btns_d & WPAD_CLASSIC_BUTTON_X))
{ {
if(RotY < 180.0f) if(RotY < 180.0f)
SetEffect(EFFECT_BOX_ROTATE_X, 10, 180); SetEffect(EFFECT_BOX_ROTATE_X, 10, 180);
@ -153,12 +168,12 @@ void BoxCover::WiiPADControl(GuiTrigger *t)
SetEffect(EFFECT_BOX_ROTATE_X, -10, -180); SetEffect(EFFECT_BOX_ROTATE_X, -10, -180);
last_manual_move_frame = frameCount; last_manual_move_frame = frameCount;
} }
if(t->wpad.btns_h & WPAD_BUTTON_PLUS) if((t->wpad.btns_h & WPAD_BUTTON_PLUS) || (t->pad.btns_h & PAD_TRIGGER_R) || (t->wpad.btns_h & WPAD_CLASSIC_BUTTON_FULL_R))
{ {
if(PosZ < -2.8f) if(PosZ < -2.8f)
PosZ += 0.4f*fabs(PosZ)/19.f; PosZ += 0.4f*fabs(PosZ)/19.f;
} }
if(t->wpad.btns_h & WPAD_BUTTON_MINUS) if((t->wpad.btns_h & WPAD_BUTTON_MINUS) || (t->pad.btns_h & PAD_TRIGGER_L) || (t->wpad.btns_h & WPAD_CLASSIC_BUTTON_FULL_L))
{ {
if(PosZ > -43.0f) if(PosZ > -43.0f)
PosZ -= 0.4f*fabs(PosZ)/19.f; PosZ -= 0.4f*fabs(PosZ)/19.f;
@ -167,11 +182,11 @@ void BoxCover::WiiPADControl(GuiTrigger *t)
void BoxCover::Update(GuiTrigger * t) void BoxCover::Update(GuiTrigger * t)
{ {
s8 movY = t->WPAD_Stick(0, 0) ; s8 movY = t->WPAD_Stick((t->wpad.exp.type == WPAD_EXP_CLASSIC), 0);
s8 movX = t->WPAD_Stick(0, 1); s8 movX = t->WPAD_Stick((t->wpad.exp.type == WPAD_EXP_CLASSIC), 1);
//! Drop nunchuck moves of less than 5 because of sensitivity //! Drop stick moves of less than 10 because of sensitivity
if(fabs(movY) < 5.0f) movY = 0; if(fabs(movY) < 10.0f) movY = 0;
if(fabs(movX) < 5.0f) movX = 0; if(fabs(movX) < 10.0f) movX = 0;
if(movY != 0 || movX != 0) if(movY != 0 || movX != 0)
last_manual_move_frame = frameCount; last_manual_move_frame = frameCount;

View File

@ -246,7 +246,7 @@ int PartitionHandle::FindPartitions()
} }
// If this is not the device's master boot record // If this is not the device's master boot record
if (mbr->signature != MBR_SIGNATURE) if (mbr->signature != MBR_SIGNATURE && mbr->signature != MBR_SIGNATURE_MOD)
{ {
// Check if the device has only one WBFS partition without a table. // Check if the device has only one WBFS partition without a table.
wbfs_head_t *head = (wbfs_head_t *) mbr; wbfs_head_t *head = (wbfs_head_t *) mbr;

View File

@ -37,6 +37,8 @@
#define MBR_SIGNATURE 0x55AA #define MBR_SIGNATURE 0x55AA
#define EBR_SIGNATURE MBR_SIGNATURE #define EBR_SIGNATURE MBR_SIGNATURE
#define MBR_SIGNATURE_MOD 0x55AB /* modified MBR_SIGNATURE to prevent the format message on WiiU */
#define PARTITION_BOOTABLE 0x80 /* Bootable (active) */ #define PARTITION_BOOTABLE 0x80 /* Bootable (active) */
#define PARTITION_NONBOOTABLE 0x00 /* Non-bootable */ #define PARTITION_NONBOOTABLE 0x00 /* Non-bootable */
#define PARTITION_TYPE_GPT 0xEE /* Indicates that a GPT header is available */ #define PARTITION_TYPE_GPT 0xEE /* Indicates that a GPT header is available */

View File

@ -20,7 +20,7 @@
#define LAUNCH_DEVO() ((void(*)(void))loader_bin)() #define LAUNCH_DEVO() ((void(*)(void))loader_bin)()
#define DEVO_SIG 0x3EF9DB23 #define DEVO_SIG 0x3EF9DB23
#define DEVO_CONFIG_VERSION 0x0111 #define DEVO_CONFIG_VERSION 0x0112
enum DEVOConfig enum DEVOConfig
{ {
@ -28,13 +28,14 @@ enum DEVOConfig
DEVO_CFG_WIDE = (1<<1), // added in Devo r142 DEVO_CFG_WIDE = (1<<1), // added in Devo r142
DEVO_CFG_NOLED = (1<<2), DEVO_CFG_NOLED = (1<<2),
DEVO_CFG_FZERO_AX = (1<<3), // added in Devo r196, config version x0111 DEVO_CFG_FZERO_AX = (1<<3), // added in Devo r196, config version x0111
DEVO_CFG_TIMER_FIX = (1<<4) DEVO_CFG_TIMER_FIX = (1<<4),
DEVO_CFG_D_BUTTONS = (1<<5) // added in Devo r200, config version 0x0112
}; };
typedef struct _DEVO_CFG typedef struct _DEVO_CFG
{ {
u32 signature; //0x3EF9DB23 u32 signature; //0x3EF9DB23
u16 version; //0x00000110 u16 version; //0x00000112
u16 device_signature; u16 device_signature;
u32 memcard_cluster; u32 memcard_cluster;
u32 disc1_cluster; u32 disc1_cluster;

View File

@ -231,7 +231,7 @@ u32 GCGames::LoadAllGames(void)
for(u32 i = 0; i < sdGCList.size(); ++i) for(u32 i = 0; i < sdGCList.size(); ++i)
{ {
if(Settings.GameCubeSource == GC_SOURCE_AUTO) if(Settings.GameCubeSource != GC_SOURCE_SD)
{ {
u32 n; u32 n;
for(n = 0; n < HeaderList.size(); ++n) for(n = 0; n < HeaderList.size(); ++n)
@ -239,11 +239,12 @@ u32 GCGames::LoadAllGames(void)
//! Display only one game if it is present on both SD and USB. //! Display only one game if it is present on both SD and USB.
if(memcmp(HeaderList[n].id, sdGCList[i].id, 6) == 0) if(memcmp(HeaderList[n].id, sdGCList[i].id, 6) == 0)
{ {
if(IosLoader::GetMIOSInfo() == DIOS_MIOS || IosLoader::GetMIOSInfo() == QUADFORCE_USB) // DIOS MIOS - Show only the game on USB if((Settings.GameCubeSource == GC_SOURCE_MAIN_SD) ||
(Settings.GameCubeSource == GC_SOURCE_AUTO && (IosLoader::GetMIOSInfo() == DIOS_MIOS || IosLoader::GetMIOSInfo() == QUADFORCE_USB))) // DIOS MIOS - Show the game on USB in priority
{ {
break; break;
} }
else // replace the one loaded from USB with the same games on SD since we can load them directly else // replace the one loaded from USB with the same games on SD
{ {
memcpy(&HeaderList[n], &sdGCList[i], sizeof(struct discHdr)); memcpy(&HeaderList[n], &sdGCList[i], sizeof(struct discHdr));
PathList[n] = sdGCPathList[i]; PathList[n] = sdGCPathList[i];
@ -258,7 +259,7 @@ u32 GCGames::LoadAllGames(void)
PathList.push_back(sdGCPathList[i]); PathList.push_back(sdGCPathList[i]);
} }
} }
else // GC_SOURCE_SD, or GC_SOURCE_BOTH (show duplicates) else // GC_SOURCE_SD
{ {
HeaderList.push_back(sdGCList[i]); HeaderList.push_back(sdGCList[i]);
PathList.push_back(sdGCPathList[i]); PathList.push_back(sdGCPathList[i]);

View File

@ -56,6 +56,8 @@ void UpdatePads()
if((userInput[i].wpad.btns_h & WPAD_NUNCHUK_BUTTON_Z) && (userInput[i].wpad.btns_d & WPAD_NUNCHUK_BUTTON_C)) if((userInput[i].wpad.btns_h & WPAD_NUNCHUK_BUTTON_Z) && (userInput[i].wpad.btns_d & WPAD_NUNCHUK_BUTTON_C))
ScreenShot(); ScreenShot();
} }
if((userInput[i].pad.btns_h & PAD_TRIGGER_R) && (userInput[i].pad.btns_d & PAD_TRIGGER_Z))
ScreenShot();
} }
} }

View File

@ -109,9 +109,9 @@ GameBrowseMenu::GameBrowseMenu()
trigHome = new GuiTrigger; trigHome = new GuiTrigger;
trigHome->SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, PAD_BUTTON_START); trigHome->SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, PAD_BUTTON_START);
trig2 = new GuiTrigger; trig2 = new GuiTrigger;
trig2->SetButtonOnlyTrigger(-1, WPAD_BUTTON_2 | WPAD_CLASSIC_BUTTON_X, 0); trig2->SetButtonOnlyTrigger(-1, WPAD_BUTTON_2 | WPAD_CLASSIC_BUTTON_X, PAD_BUTTON_Y);
trig1 = new GuiTrigger; trig1 = new GuiTrigger;
trig1->SetButtonOnlyTrigger(-1, WPAD_BUTTON_1 | WPAD_CLASSIC_BUTTON_Y, 0); trig1->SetButtonOnlyTrigger(-1, WPAD_BUTTON_1 | WPAD_CLASSIC_BUTTON_Y, PAD_BUTTON_X);
usedSpaceTxt = new GuiText(" ", 18, thColor("r=55 g=190 b=237 a=255 - hdd info color")); usedSpaceTxt = new GuiText(" ", 18, thColor("r=55 g=190 b=237 a=255 - hdd info color"));
usedSpaceTxt->SetAlignment(thAlign("center - hdd info align hor"), thAlign("top - hdd info align ver")); usedSpaceTxt->SetAlignment(thAlign("center - hdd info align hor"), thAlign("top - hdd info align ver"));

View File

@ -20,6 +20,7 @@ typedef struct _appDOL
static appDOL *dolList = NULL; static appDOL *dolList = NULL;
static int dolCount = 0; static int dolCount = 0;
extern GXRModeObj *rmode;
void RegisterDOL(u8 *dst, int len) void RegisterDOL(u8 *dst, int len)
{ {
@ -48,7 +49,7 @@ void ClearDOLList()
dolCount = 0; dolCount = 0;
} }
void gamepatches(u8 videoSelected, u8 aspectForce, u8 languageChoice, u8 patchcountrystring, void gamepatches(u8 videoSelected, u8 videoPatchDol, u8 aspectForce, u8 languageChoice, u8 patchcountrystring,
u8 vipatch, u8 sneekVideoPatch, u8 hooktype, u8 fix002, u64 returnTo) u8 vipatch, u8 sneekVideoPatch, u8 hooktype, u8 fix002, u64 returnTo)
{ {
int i; int i;
@ -62,7 +63,7 @@ void gamepatches(u8 videoSelected, u8 aspectForce, u8 languageChoice, u8 patchco
u8 *dst = dolList[i].dst; u8 *dst = dolList[i].dst;
int len = dolList[i].len; int len = dolList[i].len;
VideoModePatcher(dst, len, videoSelected); VideoModePatcher(dst, len, videoSelected, videoPatchDol);
dogamehooks(hooktype, dst, len); dogamehooks(hooktype, dst, len);
@ -212,26 +213,131 @@ bool PoPPatch()
/** Insert the individual gamepatches above with the patterns and patch data **/ /** Insert the individual gamepatches above with the patterns and patch data **/
/** Following is only the VideoPatcher **/ /** Following is only the VideoPatcher **/
#if 0 /** Isn't used right now **/ // Some missing video modes
static GXRModeObj TVPal528Prog = {
6, // viDisplayMode
640, // fbWidth
528, // efbHeight
528, // xfbHeight
40, // viXOrigin // (VI_MAX_WIDTH_PAL - 640)/2,
23, // viYOrigin // game uses 0x17 instead of 0x18 so we don't use (VI_MAX_HEIGHT_PAL - 528)/2
640, // viWidth
528, // viHeight
VI_XFBMODE_SF, // xFBmode
GX_FALSE, // field_rendering
GX_FALSE, // aa
static GXRModeObj* vmodes[] = // sample points arranged in increasing Y order
{ {
{6,6},{6,6},{6,6}, // pix 0, 3 sample points, 1/12 units, 4 bits each
{6,6},{6,6},{6,6}, // pix 1
{6,6},{6,6},{6,6}, // pix 2
{6,6},{6,6},{6,6} // pix 3
},
// vertical filter[7], 1/64 units, 6 bits each
{
0, // line n-1
0, // line n-1
21, // line n
22, // line n
21, // line n
0, // line n+1
0 // line n+1
}
};
static GXRModeObj TVPal528ProgSoft = {
6, // viDisplayMode
640, // fbWidth
528, // efbHeight
528, // xfbHeight
40, // viXOrigin
23, // viYOrigin
640, // viWidth
528, // viHeight
VI_XFBMODE_SF, // xFBmode
GX_FALSE, // field_rendering
GX_FALSE, // aa
// sample points arranged in increasing Y order
{
{6,6},{6,6},{6,6}, // pix 0, 3 sample points, 1/12 units, 4 bits each
{6,6},{6,6},{6,6}, // pix 1
{6,6},{6,6},{6,6}, // pix 2
{6,6},{6,6},{6,6} // pix 3
},
// vertical filter[7], 1/64 units, 6 bits each
{
8, // line n-1
8, // line n-1
10, // line n
12, // line n
10, // line n
8, // line n+1
8 // line n+1
}
};
static GXRModeObj TVPal524ProgAa = {
6, // viDisplayMode
640, // fbWidth
264, // efbHeight
524, // xfbHeight
40, // viXOrigin
23, // viYOrigin
640, // viWidth
524, // viHeight
VI_XFBMODE_SF, // xFBmode
GX_FALSE, // field_rendering
GX_TRUE, // aa
// sample points arranged in increasing Y order
{
{3,2},{9,6},{3,10}, // pix 0, 3 sample points, 1/12 units, 4 bits each
{3,2},{9,6},{3,10}, // pix 1
{9,2},{3,6},{9,10}, // pix 2
{9,2},{3,6},{9,10} // pix 3
},
// vertical filter[7], 1/64 units, 6 bits each
{
4, // line n-1
8, // line n-1
12, // line n
16, // line n
12, // line n
8, // line n+1
4 // line n+1
}
};
static GXRModeObj* vmodes[] = {
&TVNtsc240Ds, &TVNtsc240Ds,
&TVNtsc240DsAa, &TVNtsc240DsAa,
&TVNtsc240Int, &TVNtsc240Int,
&TVNtsc240IntAa, &TVNtsc240IntAa,
&TVNtsc480IntDf, &TVNtsc480Int,
&TVNtsc480IntAa, &TVNtsc480IntAa,
&TVNtsc480IntDf,
&TVNtsc480Prog, &TVNtsc480Prog,
&TVNtsc480ProgSoft,
&TVNtsc480ProgAa,
&TVMpal480IntDf, &TVMpal480IntDf,
&TVPal264Ds, &TVPal264Ds,
&TVPal264DsAa, &TVPal264DsAa,
&TVPal264Int, &TVPal264Int,
&TVPal264IntAa, &TVPal264IntAa,
&TVPal524ProgAa,
&TVPal524IntAa, &TVPal524IntAa,
&TVPal528Int, &TVPal528Int,
&TVPal528IntDf, &TVPal528IntDf,
&TVPal574IntDfScale, &TVPal528Prog,
&TVPal528ProgSoft,
&TVPal576IntDfScale,
&TVEurgb60Hz240Ds, &TVEurgb60Hz240Ds,
&TVEurgb60Hz240DsAa, &TVEurgb60Hz240DsAa,
&TVEurgb60Hz240Int, &TVEurgb60Hz240Int,
@ -244,25 +350,87 @@ static GXRModeObj* vmodes[] =
&TVEurgb60Hz480ProgAa &TVEurgb60Hz480ProgAa
}; };
#endif static const char * vmodes_name[] = {
"TVNtsc240Ds",
static GXRModeObj* PAL2NTSC[] = { &TVMpal480IntDf, &TVNtsc480IntDf, &TVPal264Ds, &TVNtsc240Ds, &TVPal264DsAa, "TVNtsc240DsAa",
&TVNtsc240DsAa, &TVPal264Int, &TVNtsc240Int, &TVPal264IntAa, &TVNtsc240IntAa, &TVPal524IntAa, &TVNtsc480IntAa, "TVNtsc240Int",
&TVPal528Int, &TVNtsc480IntAa, &TVPal528IntDf, &TVNtsc480IntDf, &TVPal576IntDfScale, &TVNtsc480IntDf, "TVNtsc240IntAa",
&TVEurgb60Hz240Ds, &TVNtsc240Ds, &TVEurgb60Hz240DsAa, &TVNtsc240DsAa, &TVEurgb60Hz240Int, &TVNtsc240Int, "TVNtsc480Int",
&TVEurgb60Hz240IntAa, &TVNtsc240IntAa, &TVEurgb60Hz480Int, &TVNtsc480IntAa, &TVEurgb60Hz480IntDf, "TVNtsc480IntDf(Aa)",
&TVNtsc480IntDf, &TVEurgb60Hz480IntAa, &TVNtsc480IntAa, &TVEurgb60Hz480Prog, &TVNtsc480Prog, "TVNtsc480IntAa",
&TVEurgb60Hz480ProgSoft, &TVNtsc480Prog, &TVEurgb60Hz480ProgAa, &TVNtsc480Prog, 0, 0 "TVNtsc480Prog",
"TVNtsc480ProgSoft",
"TVNtsc480ProgAa",
"TVMpal480IntDf",
"TVPal264Ds",
"TVPal264DsAa",
"TVPal264Int",
"TVPal264IntAa",
"TVPal524ProgAa",
"TVPal524IntAa",
"TVPal528Int",
"TVPal528IntDf",
"TVPal528Prog",
"TVPal528ProgSoft",
"TVPal576IntDfScale",
"TVEurgb60Hz240Ds",
"TVEurgb60Hz240DsAa",
"TVEurgb60Hz240Int",
"TVEurgb60Hz240IntAa",
"TVEurgb60Hz480Int",
"TVEurgb60Hz480IntDf",
"TVEurgb60Hz480IntAa",
"TVEurgb60Hz480Prog",
"TVEurgb60Hz480ProgSoft",
"TVEurgb60Hz480ProgAa"
}; };
static GXRModeObj* NTSC2PAL[] = { &TVNtsc240Ds, &TVPal264Ds, &TVNtsc240DsAa, &TVPal264DsAa, &TVNtsc240Int, static GXRModeObj* PAL2NTSC[] = {
&TVPal264Int, &TVNtsc240IntAa, &TVPal264IntAa, &TVNtsc480IntDf, &TVPal528IntDf, &TVNtsc480IntAa, &TVMpal480IntDf, &TVNtsc480IntDf,
&TVPal524IntAa, &TVNtsc480Prog, &TVPal528IntDf, 0, 0 &TVPal264Ds, &TVNtsc240Ds,
&TVPal264DsAa, &TVNtsc240DsAa,
&TVPal264Int, &TVNtsc240Int,
&TVPal264IntAa, &TVNtsc240IntAa,
&TVPal524IntAa, &TVNtsc480IntAa,
&TVPal528Int, &TVNtsc480Int,
&TVPal528IntDf, &TVNtsc480IntDf,
&TVPal528Prog, &TVNtsc480Prog,
&TVPal576IntDfScale, &TVNtsc480IntDf,
&TVEurgb60Hz240Ds, &TVNtsc240Ds,
&TVEurgb60Hz240DsAa, &TVNtsc240DsAa,
&TVEurgb60Hz240Int, &TVNtsc240Int,
&TVEurgb60Hz240IntAa, &TVNtsc240IntAa,
&TVEurgb60Hz480Int, &TVNtsc480Int,
&TVEurgb60Hz480IntDf, &TVNtsc480IntDf,
&TVEurgb60Hz480IntAa, &TVNtsc480IntAa,
&TVEurgb60Hz480Prog, &TVNtsc480Prog,
&TVEurgb60Hz480ProgSoft, &TVNtsc480Prog,
&TVEurgb60Hz480ProgAa, &TVNtsc480Prog,
0, 0
}; };
static GXRModeObj* NTSC2PAL60[] = { &TVNtsc240Ds, &TVEurgb60Hz240Ds, &TVNtsc240DsAa, &TVEurgb60Hz240DsAa, static GXRModeObj* NTSC2PAL[] = {
&TVNtsc240Int, &TVEurgb60Hz240Int, &TVNtsc240IntAa, &TVEurgb60Hz240IntAa, &TVNtsc480IntDf, &TVNtsc240Ds, &TVPal264Ds,
&TVEurgb60Hz480IntDf, &TVNtsc480IntAa, &TVEurgb60Hz480IntAa, &TVNtsc480Prog, &TVEurgb60Hz480Prog, 0, 0 &TVNtsc240DsAa, &TVPal264DsAa,
&TVNtsc240Int, &TVPal264Int,
&TVNtsc240IntAa, &TVPal264IntAa,
&TVNtsc480Int, &TVPal528Int,
&TVNtsc480IntDf, &TVPal528IntDf,
&TVNtsc480IntAa, &TVPal524IntAa,
&TVNtsc480Prog, &TVPal528Prog,
0, 0
};
static GXRModeObj* NTSC2PAL60[] = {
&TVNtsc240Ds, &TVEurgb60Hz240Ds,
&TVNtsc240DsAa, &TVEurgb60Hz240DsAa,
&TVNtsc240Int, &TVEurgb60Hz240Int,
&TVNtsc240IntAa, &TVEurgb60Hz240IntAa,
&TVNtsc480Int, &TVEurgb60Hz480Int,
&TVNtsc480IntDf, &TVEurgb60Hz480IntDf,
&TVNtsc480IntAa, &TVEurgb60Hz480IntAa,
&TVNtsc480Prog, &TVEurgb60Hz480Prog,
0, 0
}; };
static bool compare_videomodes(GXRModeObj* mode1, GXRModeObj* mode2) static bool compare_videomodes(GXRModeObj* mode1, GXRModeObj* mode2)
@ -349,7 +517,7 @@ static bool Search_and_patch_Video_Modes(u8 * Address, u32 Size, GXRModeObj* Tab
{ {
u8 *Addr = (u8 *) Address; u8 *Addr = (u8 *) Address;
bool found = 0; bool found = 0;
u32 i; u32 i, j;
while (Size >= sizeof(GXRModeObj)) while (Size >= sizeof(GXRModeObj))
{ {
@ -357,6 +525,26 @@ static bool Search_and_patch_Video_Modes(u8 * Address, u32 Size, GXRModeObj* Tab
{ {
if (compare_videomodes(Table[i], (GXRModeObj*) Addr)) if (compare_videomodes(Table[i], (GXRModeObj*) Addr))
{ {
u8 current_vmode = 0;
u8 target_vmode = 0;
for(j = 0; j < sizeof(vmodes)/sizeof(vmodes[0]); j++)
{
if(compare_videomodes(Table[i], vmodes[j]))
{
current_vmode = j;
break;
}
}
for(j = 0; j < sizeof(vmodes)/sizeof(vmodes[0]); j++)
{
if(compare_videomodes(Table[i+1], vmodes[j]))
{
target_vmode = j;
break;
}
}
gprintf("Video mode found in dol: %s, replaced by: %s \n", vmodes_name[current_vmode], vmodes_name[target_vmode]);
found = 1; found = 1;
patch_videomode((GXRModeObj*) Addr, Table[i + 1]); patch_videomode((GXRModeObj*) Addr, Table[i + 1]);
Addr += (sizeof(GXRModeObj) - 4); Addr += (sizeof(GXRModeObj) - 4);
@ -372,36 +560,114 @@ static bool Search_and_patch_Video_Modes(u8 * Address, u32 Size, GXRModeObj* Tab
return found; return found;
} }
void VideoModePatcher(u8 * dst, int len, u8 videoSelected) static bool Search_and_patch_Video_To(void *Address, u32 Size, GXRModeObj* Table[], GXRModeObj* rmode, bool patchAll)
{
u8 *Addr = (u8 *)Address;
bool found = 0;
u32 i;
u8 target_vmode = 0;
for(i = 0; i < sizeof(vmodes)/sizeof(vmodes[0]); i++)
{
if(compare_videomodes(Table[i], rmode))
{
target_vmode = i;
break;
}
}
while(Size >= sizeof(GXRModeObj))
{
// Video mode pattern found
if( (((GXRModeObj*)Addr)->fbWidth == 0x0280 && ((GXRModeObj*)Addr)->viWidth == 0x02c4) || // TVEurgb60Hz480Prog
(((GXRModeObj*)Addr)->fbWidth == 0x0280 && ((GXRModeObj*)Addr)->viWidth == 0x0280) ) // All other video modes
{
// display found video mode patterns
GXRModeObj* vidmode = (GXRModeObj*)Addr;
gprintf("Video pattern found \t%08x %04x %04x %04x %04x %04x %04x %04x %08x %04x %04x ",
vidmode->viTVMode, vidmode->fbWidth, vidmode->efbHeight, vidmode->xfbHeight, vidmode->viXOrigin, vidmode->viYOrigin,
vidmode->viWidth, vidmode->viHeight, vidmode->xfbMode, vidmode->field_rendering, vidmode->aa);
gprintf("%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x ",
vidmode->sample_pattern[0][0], vidmode->sample_pattern[1][0], vidmode->sample_pattern[2][0], vidmode->sample_pattern[3][0], vidmode->sample_pattern[4][0],
vidmode->sample_pattern[5][0], vidmode->sample_pattern[6][0], vidmode->sample_pattern[7][0], vidmode->sample_pattern[8][0], vidmode->sample_pattern[9][0],
vidmode->sample_pattern[10][0], vidmode->sample_pattern[11][0], vidmode->sample_pattern[0][1], vidmode->sample_pattern[1][1], vidmode->sample_pattern[2][1],
vidmode->sample_pattern[3][1], vidmode->sample_pattern[4][1], vidmode->sample_pattern[5][1], vidmode->sample_pattern[6][1], vidmode->sample_pattern[7][1],
vidmode->sample_pattern[8][1], vidmode->sample_pattern[9][1], vidmode->sample_pattern[10][1], vidmode->sample_pattern[11][1]);
gprintf("%02x%02x%02x%02x%02x%02x%02x \n",
vidmode->vfilter[0], vidmode->vfilter[1] , vidmode->vfilter[2], vidmode->vfilter[3] , vidmode->vfilter[4],vidmode->vfilter[5], vidmode->vfilter[6]);
found = 0;
for(i = 0; i < sizeof(vmodes)/sizeof(vmodes[0]); i++)
{
if(compare_videomodes(Table[i], (GXRModeObj*)Addr))
{
found = 1;
gprintf("Video mode found in dol: %s, replaced by: %s \n", vmodes_name[i], vmodes_name[target_vmode]);
patch_videomode((GXRModeObj*)Addr, rmode);
Addr += (sizeof(GXRModeObj)-4);
Size -= (sizeof(GXRModeObj)-4);
break;
}
}
if(patchAll && !found)
{
gprintf("Video mode found in dol: Unknown, replaced by: %s \n", vmodes_name[target_vmode]);
patch_videomode((GXRModeObj*)Addr, rmode);
Addr += (sizeof(GXRModeObj)-4);
Size -= (sizeof(GXRModeObj)-4);
}
}
Addr += 4;
Size -= 4;
}
return found;
}
void VideoModePatcher(u8 * dst, int len, u8 videoSelected, u8 VideoPatchDol)
{ {
GXRModeObj** table = NULL; GXRModeObj** table = NULL;
if (videoSelected == VIDEO_MODE_PATCH) // patch enum'd in cfg.h if (videoSelected == VIDEO_MODE_PATCH) // patch enum'd in cfg.h
{ {
switch (CONF_GetVideo()) switch (CONF_GetVideo())
{ {
case CONF_VIDEO_PAL: case CONF_VIDEO_PAL:
if (CONF_GetEuRGB60() > 0) table = CONF_GetEuRGB60() > 0 ? NTSC2PAL60 : NTSC2PAL;
{
table = NTSC2PAL60;
}
else
{
table = NTSC2PAL;
}
break; break;
case CONF_VIDEO_MPAL: case CONF_VIDEO_MPAL:
table = NTSC2PAL; table = NTSC2PAL;
break; break;
default: default:
table = PAL2NTSC; table = PAL2NTSC;
break; break;
} }
Search_and_patch_Video_Modes(dst, len, table); Search_and_patch_Video_Modes(dst, len, table);
} }
else if(VideoPatchDol == VIDEO_PATCH_DOL_REGION ) //&& rmode != NULL)
{
switch(rmode->viTVMode >> 2)
{
case VI_PAL:
case VI_MPAL:
table = NTSC2PAL;
break;
case VI_EURGB60:
table = NTSC2PAL60;
break;
default:
table = PAL2NTSC;
}
Search_and_patch_Video_Modes(dst, len, table);
}
else if (VideoPatchDol == VIDEO_PATCH_DOL_ON && rmode != NULL)
{
Search_and_patch_Video_To(dst, len, vmodes, rmode, false);
}
else if (VideoPatchDol == VIDEO_PATCH_DOL_ALL && rmode != NULL)
{
Search_and_patch_Video_To(dst, len, vmodes, rmode, true);
}
} }
void sneek_video_patch(void *addr, u32 len) void sneek_video_patch(void *addr, u32 len)

View File

@ -9,12 +9,12 @@ extern "C" {
void RegisterDOL(u8 *dst, int len); void RegisterDOL(u8 *dst, int len);
void ClearDOLList(); void ClearDOLList();
void gamepatches(u8 videoSelected, u8 aspectForce, u8 languageChoice, u8 patchcountrystring, void gamepatches(u8 videoSelected, u8 videoPatchDol, u8 aspectForce, u8 languageChoice, u8 patchcountrystring,
u8 vipatch, u8 sneekVideoPatch, u8 hooktype, u8 fix002, u64 returnTo); u8 vipatch, u8 sneekVideoPatch, u8 hooktype, u8 fix002, u64 returnTo);
bool Anti_002_fix(u8 * Address, int Size); bool Anti_002_fix(u8 * Address, int Size);
bool NSMBPatch(); bool NSMBPatch();
bool PoPPatch(); bool PoPPatch();
void VideoModePatcher(u8 * dst, int len, u8 videoSelected); void VideoModePatcher(u8 * dst, int len, u8 videoSelected, u8 VideoPatchDol);
void sneek_video_patch(void *addr, u32 len); void sneek_video_patch(void *addr, u32 len);
bool PatchReturnTo(void *Address, int Size, u32 id); bool PatchReturnTo(void *Address, int Size, u32 id);
int PatchNewReturnTo(int es_fd, u64 title); int PatchNewReturnTo(int es_fd, u64 title);

View File

@ -73,11 +73,13 @@ static const char * DMLVersions[] =
"v2.7", // DML 2.7 "v2.7", // DML 2.7
"v2.8", // DML 2.8 "v2.8", // DML 2.8
"v2.8", // DM 2.8 "v2.8", // DM 2.8
"v2.9+", // DML 2.9 "v2.9", // DML 2.9
"v2.9+", // DM 2.9 "v2.9", // DM 2.9
"v2.0", // QuadForce v2.0 "v2.0", // QuadForce v2.0
"v3.0", // QuadForce v3.0 "v3.0", // QuadForce v3.0
"v4.0+", // QuadForce v4.0 SD "v4.0+", // QuadForce v4.0 SD
"v2.10+", // DML 2.10
"v2.10+", // DM 2.10
"v4.1", // QuadForce v4.1 USB "v4.1", // QuadForce v4.1 USB
}; };

View File

@ -532,6 +532,12 @@ static int InternalShowGameInfo(struct discHdr *header)
else if(GameInfo.WifiPlayers == 4) else if(GameInfo.WifiPlayers == 4)
wifiplayersImgData = Resources::GetImageData("wifi4.png"); wifiplayersImgData = Resources::GetImageData("wifi4.png");
else if(GameInfo.WifiPlayers == 6)
wifiplayersImgData = Resources::GetImageData("wifi6.png");
else if(GameInfo.WifiPlayers == 10)
wifiplayersImgData = Resources::GetImageData("wifi10.png");
else if(GameInfo.WifiPlayers == 8) else if(GameInfo.WifiPlayers == 8)
wifiplayersImgData =Resources::GetImageData("wifi8.png"); wifiplayersImgData =Resources::GetImageData("wifi8.png");

View File

@ -187,6 +187,7 @@ bool CGameSettings::Save()
{ {
fprintf(f, "game:%s = ", GameList[i].id); fprintf(f, "game:%s = ", GameList[i].id);
fprintf(f, "video:%d; ", GameList[i].video); fprintf(f, "video:%d; ", GameList[i].video);
fprintf(f, "videoPatchDol:%d; ", GameList[i].videoPatchDol);
fprintf(f, "aspectratio:%d; ", GameList[i].aspectratio); fprintf(f, "aspectratio:%d; ", GameList[i].aspectratio);
fprintf(f, "language:%d; ", GameList[i].language); fprintf(f, "language:%d; ", GameList[i].language);
fprintf(f, "ocarina:%d; ", GameList[i].ocarina); fprintf(f, "ocarina:%d; ", GameList[i].ocarina);
@ -221,6 +222,7 @@ bool CGameSettings::Save()
fprintf(f, "DEVOActivityLED:%d; ", GameList[i].DEVOActivityLED); fprintf(f, "DEVOActivityLED:%d; ", GameList[i].DEVOActivityLED);
fprintf(f, "DEVOFZeroAX:%d; ", GameList[i].DEVOFZeroAX); fprintf(f, "DEVOFZeroAX:%d; ", GameList[i].DEVOFZeroAX);
fprintf(f, "DEVOTimerFix:%d; ", GameList[i].DEVOTimerFix); fprintf(f, "DEVOTimerFix:%d; ", GameList[i].DEVOTimerFix);
fprintf(f, "DEVODButtons:%d; ", GameList[i].DEVODButtons);
fprintf(f, "Locked:%d;\n", GameList[i].Locked); fprintf(f, "Locked:%d;\n", GameList[i].Locked);
} }
fprintf(f, "# END\n"); fprintf(f, "# END\n");
@ -236,6 +238,11 @@ bool CGameSettings::SetSetting(GameCFG & game, const char *name, const char *val
game.video = atoi(value); game.video = atoi(value);
return true; return true;
} }
if (strcmp(name, "videoPatchDol") == 0)
{
game.videoPatchDol = atoi(value);
return true;
}
else if(strcmp(name, "aspectratio") == 0) else if(strcmp(name, "aspectratio") == 0)
{ {
game.aspectratio = atoi(value); game.aspectratio = atoi(value);
@ -411,6 +418,11 @@ bool CGameSettings::SetSetting(GameCFG & game, const char *name, const char *val
game.DEVOTimerFix = atoi(value); game.DEVOTimerFix = atoi(value);
return true; return true;
} }
else if(strcmp(name, "DEVODButtons") == 0)
{
game.DEVODButtons = atoi(value);
return true;
}
return false; return false;
} }
@ -513,6 +525,7 @@ void CGameSettings::SetDefault(GameCFG &game)
{ {
memset(game.id, 0, sizeof(game.id)); memset(game.id, 0, sizeof(game.id));
game.video = INHERIT; game.video = INHERIT;
game.videoPatchDol = INHERIT;
game.aspectratio = INHERIT; game.aspectratio = INHERIT;
game.language = INHERIT; game.language = INHERIT;
game.ocarina = INHERIT; game.ocarina = INHERIT;
@ -547,5 +560,6 @@ void CGameSettings::SetDefault(GameCFG &game)
game.DEVOActivityLED = INHERIT; game.DEVOActivityLED = INHERIT;
game.DEVOFZeroAX = INHERIT; game.DEVOFZeroAX = INHERIT;
game.DEVOTimerFix = INHERIT; game.DEVOTimerFix = INHERIT;
game.DEVODButtons = INHERIT;
game.Locked = OFF; game.Locked = OFF;
} }

View File

@ -11,6 +11,7 @@ typedef struct _GameCFG
{ {
char id[7]; char id[7];
short video; short video;
short videoPatchDol;
short aspectratio; short aspectratio;
short language; short language;
short ocarina; short ocarina;
@ -45,12 +46,14 @@ typedef struct _GameCFG
short DEVOActivityLED; short DEVOActivityLED;
short DEVOFZeroAX; short DEVOFZeroAX;
short DEVOTimerFix; short DEVOTimerFix;
short DEVODButtons;
short Locked; short Locked;
void operator=(const struct _GameCFG &game) void operator=(const struct _GameCFG &game)
{ {
memcpy(this->id, game.id, sizeof(game.id)); memcpy(this->id, game.id, sizeof(game.id));
this->video = game.video; this->video = game.video;
this->videoPatchDol = game.videoPatchDol;
this->aspectratio = game.aspectratio; this->aspectratio = game.aspectratio;
this->language = game.language; this->language = game.language;
this->ocarina = game.ocarina; this->ocarina = game.ocarina;
@ -85,6 +88,7 @@ typedef struct _GameCFG
this->DEVOActivityLED = game.DEVOActivityLED; this->DEVOActivityLED = game.DEVOActivityLED;
this->DEVOFZeroAX = game.DEVOFZeroAX; this->DEVOFZeroAX = game.DEVOFZeroAX;
this->DEVOTimerFix = game.DEVOTimerFix; this->DEVOTimerFix = game.DEVOTimerFix;
this->DEVODButtons = game.DEVODButtons;
this->Locked = game.Locked; this->Locked = game.Locked;
} }
} GameCFG; } GameCFG;

View File

@ -92,6 +92,7 @@ void CSettings::SetDefault()
godmode = 1; godmode = 1;
videomode = VIDEO_MODE_DISCDEFAULT; videomode = VIDEO_MODE_DISCDEFAULT;
videopatch = OFF; videopatch = OFF;
videoPatchDol = OFF;
language = CONSOLE_DEFAULT; language = CONSOLE_DEFAULT;
ocarina = OFF; ocarina = OFF;
hddinfo = CLOCK_HR12; hddinfo = CLOCK_HR12;
@ -185,6 +186,7 @@ void CSettings::SetDefault()
DEVOActivityLED = ON; DEVOActivityLED = ON;
DEVOFZeroAX = OFF; DEVOFZeroAX = OFF;
DEVOTimerFix = OFF; DEVOTimerFix = OFF;
DEVODButtons = OFF;
GCInstallCompressed = OFF; GCInstallCompressed = OFF;
GCInstallAligned = OFF; GCInstallAligned = OFF;
} }
@ -273,6 +275,7 @@ bool CSettings::Save()
fprintf(file, "godmode = %d\n", godmode); fprintf(file, "godmode = %d\n", godmode);
fprintf(file, "videomode = %d\n", videomode); fprintf(file, "videomode = %d\n", videomode);
fprintf(file, "videopatch = %d\n", videopatch); fprintf(file, "videopatch = %d\n", videopatch);
fprintf(file, "videoPatchDol = %d\n", videoPatchDol);
fprintf(file, "language = %d\n", language); fprintf(file, "language = %d\n", language);
fprintf(file, "ocarina = %d\n", ocarina); fprintf(file, "ocarina = %d\n", ocarina);
fprintf(file, "hddinfo = %d\n", hddinfo); fprintf(file, "hddinfo = %d\n", hddinfo);
@ -417,6 +420,7 @@ bool CSettings::Save()
fprintf(file, "DEVOActivityLED = %d\n", DEVOActivityLED); fprintf(file, "DEVOActivityLED = %d\n", DEVOActivityLED);
fprintf(file, "DEVOFZeroAX = %d\n", DEVOFZeroAX); fprintf(file, "DEVOFZeroAX = %d\n", DEVOFZeroAX);
fprintf(file, "DEVOTimerFix = %d\n", DEVOTimerFix); fprintf(file, "DEVOTimerFix = %d\n", DEVOTimerFix);
fprintf(file, "DEVODButtons = %d\n", DEVODButtons);
fprintf(file, "DEVOLoaderPath = %s\n", DEVOLoaderPath); fprintf(file, "DEVOLoaderPath = %s\n", DEVOLoaderPath);
fprintf(file, "GCInstallCompressed = %d\n", GCInstallCompressed); fprintf(file, "GCInstallCompressed = %d\n", GCInstallCompressed);
fprintf(file, "GCInstallAligned = %d\n", GCInstallAligned); fprintf(file, "GCInstallAligned = %d\n", GCInstallAligned);
@ -443,6 +447,11 @@ bool CSettings::SetSetting(char *name, char *value)
videopatch = atoi(value); videopatch = atoi(value);
return true; return true;
} }
else if (strcmp(name, "videoPatchDol") == 0)
{
videoPatchDol = atoi(value);
return true;
}
else if (strcmp(name, "language") == 0) else if (strcmp(name, "language") == 0)
{ {
language = atoi(value); language = atoi(value);
@ -892,6 +901,11 @@ bool CSettings::SetSetting(char *name, char *value)
DEVOTimerFix = atoi(value); DEVOTimerFix = atoi(value);
return true; return true;
} }
else if (strcmp(name, "DEVODButtons") == 0)
{
DEVODButtons = atoi(value);
return true;
}
else if (strcmp(name, "DEVOLoaderPath") == 0) else if (strcmp(name, "DEVOLoaderPath") == 0)
{ {
strlcpy(DEVOLoaderPath, value, sizeof(DEVOLoaderPath)); strlcpy(DEVOLoaderPath, value, sizeof(DEVOLoaderPath));

View File

@ -92,6 +92,7 @@ class CSettings
short language; short language;
short ocarina; short ocarina;
short videopatch; short videopatch;
short videoPatchDol;
short sinfo; short sinfo;
short hddinfo; short hddinfo;
short rumble; short rumble;
@ -187,6 +188,7 @@ class CSettings
short DEVOActivityLED; short DEVOActivityLED;
short DEVOFZeroAX; short DEVOFZeroAX;
short DEVOTimerFix; short DEVOTimerFix;
short DEVODButtons;
short GCInstallCompressed; short GCInstallCompressed;
short GCInstallAligned; short GCInstallAligned;

View File

@ -71,6 +71,15 @@ enum
VIDEO_MODE_MAX VIDEO_MODE_MAX
}; };
enum
{
VIDEO_PATCH_DOL_OFF,
VIDEO_PATCH_DOL_REGION,
VIDEO_PATCH_DOL_ON,
VIDEO_PATCH_DOL_ALL,
VIDEO_PATCH_DOL_MAX,
};
enum enum
{ {
ASPECT_FORCE_4_3, ASPECT_FORCE_4_3,
@ -285,7 +294,8 @@ enum
GC_SOURCE_MAIN, GC_SOURCE_MAIN,
GC_SOURCE_SD, GC_SOURCE_SD,
GC_SOURCE_AUTO, GC_SOURCE_AUTO,
// GC_SOURCE_BOTH, // GCGames::getPath(GameID) always returns the first encountered path in the gameList GC_SOURCE_MAIN_SD,
GC_SOURCE_SD_MAIN,
CG_SOURCE_MAX_CHOICE CG_SOURCE_MAX_CHOICE
}; };

View File

@ -181,6 +181,7 @@ void GCGameLoadSM::SetOptionNames()
Options->SetName(Idx++, "%s", tr( "DEVO LED Activity" )); Options->SetName(Idx++, "%s", tr( "DEVO LED Activity" ));
Options->SetName(Idx++, "%s", tr( "DEVO F-Zero AX" )); Options->SetName(Idx++, "%s", tr( "DEVO F-Zero AX" ));
Options->SetName(Idx++, "%s", tr( "DEVO Timer Fix" )); Options->SetName(Idx++, "%s", tr( "DEVO Timer Fix" ));
Options->SetName(Idx++, "%s", tr( "DEVO D Buttons" ));
} }
void GCGameLoadSM::SetOptionValues() void GCGameLoadSM::SetOptionValues()
@ -201,7 +202,8 @@ void GCGameLoadSM::SetOptionValues()
//! Settings: Game Language //! Settings: Game Language
if(GameConfig.language == INHERIT) if(GameConfig.language == INHERIT)
GameConfig.language = GC_LANG_CONSOLE_DEFAULT; Options->SetValue(Idx++, tr("Use global"));
else
Options->SetValue(Idx++, "%s", tr(LanguageText[GameConfig.language])); Options->SetValue(Idx++, "%s", tr(LanguageText[GameConfig.language]));
//! Settings: Ocarina //! Settings: Ocarina
@ -321,6 +323,11 @@ void GCGameLoadSM::SetOptionValues()
else else
Options->SetValue(Idx++, "%s", tr(OnOffText[GameConfig.DEVOTimerFix])); Options->SetValue(Idx++, "%s", tr(OnOffText[GameConfig.DEVOTimerFix]));
//! Settings: DEVO Direct Button Mapping
if(GameConfig.DEVODButtons == INHERIT)
Options->SetValue(Idx++, tr("Use global"));
else
Options->SetValue(Idx++, "%s", tr(OnOffText[GameConfig.DEVODButtons]));
} }
int GCGameLoadSM::GetMenuInternal() int GCGameLoadSM::GetMenuInternal()
@ -369,7 +376,7 @@ int GCGameLoadSM::GetMenuInternal()
//! Settings: Game Language //! Settings: Game Language
else if (ret == ++Idx) else if (ret == ++Idx)
{ {
if (++GameConfig.language >= GC_MAX_LANGUAGE) GameConfig.language = GC_ENGLISH; if (++GameConfig.language >= GC_MAX_LANGUAGE) GameConfig.language = INHERIT;
} }
//! Settings: Ocarina //! Settings: Ocarina
@ -480,6 +487,12 @@ int GCGameLoadSM::GetMenuInternal()
if (++GameConfig.DEVOTimerFix >= MAX_ON_OFF) GameConfig.DEVOTimerFix = INHERIT; if (++GameConfig.DEVOTimerFix >= MAX_ON_OFF) GameConfig.DEVOTimerFix = INHERIT;
} }
//!Settings: DEVO Direct Button Mapping
else if (ret == ++Idx)
{
if (++GameConfig.DEVODButtons >= MAX_ON_OFF) GameConfig.DEVODButtons = INHERIT;
}
SetOptionValues(); SetOptionValues();
return MENU_NONE; return MENU_NONE;

View File

@ -54,6 +54,14 @@ static const char * VideoModeText[] =
trNOOP( "Force NTSC480p" ), trNOOP( "Force NTSC480p" ),
}; };
static const char * VideoPatchDolText[] =
{
trNOOP( "OFF" ),
trNOOP( "Region Patch" ),
trNOOP( "ON" ),
trNOOP( "All" ),
};
static const char * AspectText[] = static const char * AspectText[] =
{ {
trNOOP( "Force 4:3" ), trNOOP( "Force 4:3" ),
@ -174,8 +182,9 @@ void GameLoadSM::SetOptionNames()
Options->SetName(Idx++, "%s", tr( "Game Lock" )); Options->SetName(Idx++, "%s", tr( "Game Lock" ));
Options->SetName(Idx++, "%s", tr( "Favorite Level" )); Options->SetName(Idx++, "%s", tr( "Favorite Level" ));
Options->SetName(Idx++, "%s", tr( "Video Mode" )); Options->SetName(Idx++, "%s", tr( "Video Mode" ));
Options->SetName(Idx++, "%s", tr( "VIDTV Patch" )); Options->SetName(Idx++, "%s", tr( "Dol Video Patch" ));
Options->SetName(Idx++, "%s", tr( "Sneek Video Patch" )); Options->SetName(Idx++, "%s", tr( "Sneek Video Patch" ));
Options->SetName(Idx++, "%s", tr( "VIDTV Patch" ));
Options->SetName(Idx++, "%s", tr( "Aspect Ratio" )); Options->SetName(Idx++, "%s", tr( "Aspect Ratio" ));
Options->SetName(Idx++, "%s", tr( "Patch Country Strings" )); Options->SetName(Idx++, "%s", tr( "Patch Country Strings" ));
Options->SetName(Idx++, "%s", tr( "Game Language" )); Options->SetName(Idx++, "%s", tr( "Game Language" ));
@ -221,11 +230,11 @@ void GameLoadSM::SetOptionValues()
else else
Options->SetValue(Idx++, "%s", tr(VideoModeText[GameConfig.video])); Options->SetValue(Idx++, "%s", tr(VideoModeText[GameConfig.video]));
//! Settings: VIDTV Patch //! Settings: Dol Video Patch
if(GameConfig.vipatch == INHERIT) if(GameConfig.videoPatchDol == INHERIT)
Options->SetValue(Idx++, tr("Use global")); Options->SetValue(Idx++, tr("Use global"));
else else
Options->SetValue(Idx++, "%s", tr(OnOffText[GameConfig.vipatch])); Options->SetValue(Idx++, "%s", tr(VideoPatchDolText[GameConfig.videoPatchDol]));
//! Settings: Sneek Video Patch //! Settings: Sneek Video Patch
if(GameConfig.sneekVideoPatch == INHERIT) if(GameConfig.sneekVideoPatch == INHERIT)
@ -233,6 +242,12 @@ void GameLoadSM::SetOptionValues()
else else
Options->SetValue(Idx++, "%s", tr(OnOffText[GameConfig.sneekVideoPatch])); Options->SetValue(Idx++, "%s", tr(OnOffText[GameConfig.sneekVideoPatch]));
//! Settings: VIDTV Patch
if(GameConfig.vipatch == INHERIT)
Options->SetValue(Idx++, tr("Use global"));
else
Options->SetValue(Idx++, "%s", tr(OnOffText[GameConfig.vipatch]));
//! Settings: Aspect Ratio //! Settings: Aspect Ratio
if(GameConfig.aspectratio == INHERIT) if(GameConfig.aspectratio == INHERIT)
Options->SetValue(Idx++, tr("Use global")); Options->SetValue(Idx++, tr("Use global"));
@ -385,10 +400,10 @@ int GameLoadSM::GetMenuInternal()
if (++GameConfig.video >= VIDEO_MODE_MAX) GameConfig.video = INHERIT; if (++GameConfig.video >= VIDEO_MODE_MAX) GameConfig.video = INHERIT;
} }
//! Settings: VIDTV Patch //! Settings: Dol Video Patch
if (ret == ++Idx) else if (ret == ++Idx)
{ {
if (++GameConfig.vipatch >= MAX_ON_OFF) GameConfig.vipatch = INHERIT; if (++GameConfig.videoPatchDol >= VIDEO_PATCH_DOL_MAX) GameConfig.videoPatchDol = INHERIT;
} }
//! Settings: Sneek Video Patch //! Settings: Sneek Video Patch
@ -397,6 +412,12 @@ int GameLoadSM::GetMenuInternal()
if (++GameConfig.sneekVideoPatch >= MAX_ON_OFF) GameConfig.sneekVideoPatch = INHERIT; if (++GameConfig.sneekVideoPatch >= MAX_ON_OFF) GameConfig.sneekVideoPatch = INHERIT;
} }
//! Settings: VIDTV Patch
if (ret == ++Idx)
{
if (++GameConfig.vipatch >= MAX_ON_OFF) GameConfig.vipatch = INHERIT;
}
//! Settings: Aspect Ratio //! Settings: Aspect Ratio
else if (ret == ++Idx) else if (ret == ++Idx)
{ {

View File

@ -63,6 +63,14 @@ static const char * VideoModeText[] =
trNOOP( "Force NTSC480p" ), trNOOP( "Force NTSC480p" ),
}; };
static const char * VideoPatchDolText[] =
{
trNOOP( "OFF" ),
trNOOP( "Region Patch" ),
trNOOP( "ON" ),
trNOOP( "All" ),
};
static const char * LanguageText[] = static const char * LanguageText[] =
{ {
trNOOP( "Japanese" ), trNOOP( "Japanese" ),
@ -116,12 +124,13 @@ static const char * GCMode[] =
trNOOP( "Devolution" ), trNOOP( "Devolution" ),
}; };
static const char * GCSourceText[] = static const char * GCSourceText[][3] =
{ {
trNOOP( "Main Path" ), { trNOOP( "Main Path" ), "", "" },
trNOOP( "SD Path" ), { trNOOP( "SD Path" ), "", "" },
trNOOP( "Auto" ), { trNOOP( "Auto" ), "", "" },
trNOOP( "Both" ), { trNOOP( "Main Path" ), "/", trNOOP( "SD Path" ) },
{ trNOOP( "SD Path" ), "/", trNOOP( "Main Path" ) },
}; };
static const char * DMLVideoText[] = static const char * DMLVideoText[] =
@ -158,8 +167,9 @@ LoaderSettings::LoaderSettings()
int Idx = 0; int Idx = 0;
Options->SetName(Idx++, "%s", tr( "Video Mode" )); Options->SetName(Idx++, "%s", tr( "Video Mode" ));
Options->SetName(Idx++, "%s", tr( "VIDTV Patch" )); Options->SetName(Idx++, "%s", tr( "Dol Video Patch" ));
Options->SetName(Idx++, "%s", tr( "Sneek Video Patch" )); Options->SetName(Idx++, "%s", tr( "Sneek Video Patch" ));
Options->SetName(Idx++, "%s", tr( "VIDTV Patch" ));
Options->SetName(Idx++, "%s", tr( "Aspect Ratio" )); Options->SetName(Idx++, "%s", tr( "Aspect Ratio" ));
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" ));
@ -192,6 +202,7 @@ LoaderSettings::LoaderSettings()
Options->SetName(Idx++, "%s", tr( "DEVO LED Activity" )); Options->SetName(Idx++, "%s", tr( "DEVO LED Activity" ));
Options->SetName(Idx++, "%s", tr( "DEVO F-Zero AX" )); Options->SetName(Idx++, "%s", tr( "DEVO F-Zero AX" ));
Options->SetName(Idx++, "%s", tr( "DEVO Timer Fix" )); Options->SetName(Idx++, "%s", tr( "DEVO Timer Fix" ));
Options->SetName(Idx++, "%s", tr( "DEVO D Buttons" ));
SetOptionValues(); SetOptionValues();
@ -226,12 +237,15 @@ void LoaderSettings::SetOptionValues()
//! Settings: Video Mode //! Settings: Video Mode
Options->SetValue(Idx++, "%s", tr(VideoModeText[Settings.videomode])); Options->SetValue(Idx++, "%s", tr(VideoModeText[Settings.videomode]));
//! Settings: VIDTV Patch //! Settings: Dol Video Patch
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.videopatch] )); Options->SetValue(Idx++, "%s", tr( VideoPatchDolText[Settings.videoPatchDol] ));
//! Settings: Sneek Video Patch //! Settings: Sneek Video Patch
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.sneekVideoPatch] )); Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.sneekVideoPatch] ));
//! Settings: VIDTV Patch
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.videopatch] ));
//! Settings: Aspect Ratio //! Settings: Aspect Ratio
Options->SetValue(Idx++, "%s", tr( AspectText[Settings.GameAspectRatio] )); Options->SetValue(Idx++, "%s", tr( AspectText[Settings.GameAspectRatio] ));
@ -289,7 +303,8 @@ void LoaderSettings::SetOptionValues()
Options->SetValue(Idx++, "%s", tr(GCMode[Settings.GameCubeMode])); Options->SetValue(Idx++, "%s", tr(GCMode[Settings.GameCubeMode]));
//! Settings: GameCube Source //! Settings: GameCube Source
Options->SetValue(Idx++, "%s", tr(GCSourceText[Settings.GameCubeSource])); Options->SetValue(Idx++, "%s%s%s", tr(GCSourceText[Settings.GameCubeSource][0]),
GCSourceText[Settings.GameCubeSource][1], tr(GCSourceText[Settings.GameCubeSource][2]));
//! Settings: DML Video Mode //! Settings: DML Video Mode
Options->SetValue(Idx++, "%s", tr(DMLVideoText[Settings.DMLVideo])); Options->SetValue(Idx++, "%s", tr(DMLVideoText[Settings.DMLVideo]));
@ -336,6 +351,9 @@ void LoaderSettings::SetOptionValues()
//! Settings: DEVO Timer Fix //! Settings: DEVO Timer Fix
Options->SetValue(Idx++, "%s", tr(OnOffText[Settings.DEVOTimerFix])); Options->SetValue(Idx++, "%s", tr(OnOffText[Settings.DEVOTimerFix]));
//! Settings: DEVO Direct Button Mapping
Options->SetValue(Idx++, "%s", tr(OnOffText[Settings.DEVODButtons]));
} }
int LoaderSettings::GetMenuInternal() int LoaderSettings::GetMenuInternal()
@ -353,10 +371,10 @@ int LoaderSettings::GetMenuInternal()
if (++Settings.videomode >= VIDEO_MODE_MAX) Settings.videomode = 0; if (++Settings.videomode >= VIDEO_MODE_MAX) Settings.videomode = 0;
} }
//! Settings: VIDTV Patch //! Settings: Dol Video Patch
else if (ret == ++Idx) if (ret == ++Idx)
{ {
if (++Settings.videopatch >= MAX_ON_OFF) Settings.videopatch = 0; if (++Settings.videoPatchDol >= VIDEO_PATCH_DOL_MAX) Settings.videoPatchDol = 0;
} }
//! Settings: Sneek Video Patch //! Settings: Sneek Video Patch
@ -365,6 +383,12 @@ int LoaderSettings::GetMenuInternal()
if (++Settings.sneekVideoPatch >= MAX_ON_OFF) Settings.sneekVideoPatch = 0; if (++Settings.sneekVideoPatch >= MAX_ON_OFF) Settings.sneekVideoPatch = 0;
} }
//! Settings: VIDTV Patch
else if (ret == ++Idx)
{
if (++Settings.videopatch >= MAX_ON_OFF) Settings.videopatch = 0;
}
//! Settings: Aspect Ratio //! Settings: Aspect Ratio
else if (ret == ++Idx ) else if (ret == ++Idx )
{ {
@ -579,12 +603,18 @@ int LoaderSettings::GetMenuInternal()
if (++Settings.DEVOFZeroAX >= MAX_ON_OFF) Settings.DEVOFZeroAX = 0; if (++Settings.DEVOFZeroAX >= MAX_ON_OFF) Settings.DEVOFZeroAX = 0;
} }
//! Settings: DEVO Activity LED //! Settings: DEVO Timer Fix
else if (ret == ++Idx) else if (ret == ++Idx)
{ {
if (++Settings.DEVOTimerFix >= MAX_ON_OFF) Settings.DEVOTimerFix = 0; if (++Settings.DEVOTimerFix >= MAX_ON_OFF) Settings.DEVOTimerFix = 0;
} }
//! Settings: DEVO Direct Button Mapping
else if (ret == ++Idx)
{
if (++Settings.DEVODButtons >= MAX_ON_OFF) Settings.DEVODButtons = 0;
}
SetOptionValues(); SetOptionValues();
return MENU_NONE; return MENU_NONE;

View File

@ -344,7 +344,12 @@ u8 IosLoader::GetDMLVersion(char* releaseDate)
strptime("Apr 5 2013 18:29:35", "%b %d %Y %H:%M:%S", &time); strptime("Apr 5 2013 18:29:35", "%b %d %Y %H:%M:%S", &time);
const time_t dm_2_9_time = mktime(&time); const time_t dm_2_9_time = mktime(&time);
if(difftime(unixTime, dm_2_9_time) >= 0) currentDMLVersion = DML_VERSION_DM_2_9; // Timestamp of DM 2.10
strptime("May 24 2013 21:22:22", "%b %d %Y %H:%M:%S", &time);
const time_t dm_2_10_time = mktime(&time);
if(difftime(unixTime, dm_2_10_time) >= 0) currentDMLVersion = DML_VERSION_DM_2_10;
else if(difftime(unixTime, dm_2_9_time) >= 0) currentDMLVersion = DML_VERSION_DM_2_9;
else if(difftime(unixTime, dm_2_8_time) >= 0) currentDMLVersion = DML_VERSION_DM_2_8; else if(difftime(unixTime, dm_2_8_time) >= 0) currentDMLVersion = DML_VERSION_DM_2_8;
else if(difftime(unixTime, dm_2_7_time) >= 0) currentDMLVersion = DML_VERSION_DM_2_7; else if(difftime(unixTime, dm_2_7_time) >= 0) currentDMLVersion = DML_VERSION_DM_2_7;
else if(difftime(unixTime, dm_2_6_1_time) >= 0) currentDMLVersion = DML_VERSION_DM_2_6_1; else if(difftime(unixTime, dm_2_6_1_time) >= 0) currentDMLVersion = DML_VERSION_DM_2_6_1;
@ -414,7 +419,12 @@ u8 IosLoader::GetDMLVersion(char* releaseDate)
strptime("Apr 5 2013 18:20:33", "%b %d %Y %H:%M:%S", &time); strptime("Apr 5 2013 18:20:33", "%b %d %Y %H:%M:%S", &time);
const time_t dml_2_9_time = mktime(&time); const time_t dml_2_9_time = mktime(&time);
if(difftime(unixTime, dml_2_9_time) >= 0) currentDMLVersion = DML_VERSION_DML_2_9; // Timestamp of DML 2.10
strptime("May 24 2013 18:51:58", "%b %d %Y %H:%M:%S", &time);
const time_t dml_2_10_time = mktime(&time);
if(difftime(unixTime, dml_2_10_time) >= 0) currentDMLVersion = DML_VERSION_DML_2_10;
else if(difftime(unixTime, dml_2_9_time) >= 0) currentDMLVersion = DML_VERSION_DML_2_9;
else if(difftime(unixTime, dml_2_8_time) >= 0) currentDMLVersion = DML_VERSION_DML_2_8; else if(difftime(unixTime, dml_2_8_time) >= 0) currentDMLVersion = DML_VERSION_DML_2_8;
else if(difftime(unixTime, dml_2_7_time) >= 0) currentDMLVersion = DML_VERSION_DML_2_7; else if(difftime(unixTime, dml_2_7_time) >= 0) currentDMLVersion = DML_VERSION_DML_2_7;
else if(difftime(unixTime, dml_2_6_time) >= 0) currentDMLVersion = DML_VERSION_DML_2_6; else if(difftime(unixTime, dml_2_6_time) >= 0) currentDMLVersion = DML_VERSION_DML_2_6;

View File

@ -63,6 +63,8 @@ enum DMLVersions
DML_VERSION_QUAD_2_0, // Apr 30 2013 17:31:32 DML_VERSION_QUAD_2_0, // Apr 30 2013 17:31:32
DML_VERSION_QUAD_3_0, // May 8 2013 22:21:44 DML_VERSION_QUAD_3_0, // May 8 2013 22:21:44
DML_VERSION_QUAD_4_0, // May 12 2013 20:22:57 DML_VERSION_QUAD_4_0, // May 12 2013 20:22:57
DML_VERSION_DML_2_10, // May 24 2013 18:51:58
DML_VERSION_DM_2_10, // May 24 2013 21:22:22
DML_VERSION_QUAD_4_1, // May 26 2013 ??:??:?? (USB) DML_VERSION_QUAD_4_1, // May 26 2013 ??:??:?? (USB)
DML_VERSION_MAX_VERSION, DML_VERSION_MAX_VERSION,
}; };

View File

@ -1,7 +1,7 @@
/**************************************************************************** /****************************************************************************
* USB Loader GX resource files. * USB Loader GX resource files.
* This file is generated automatically. * This file is generated automatically.
* Includes 198 files. * Includes 200 files.
* *
* NOTE: * NOTE:
* Any manual modification of this file will be overwriten by the generation. * Any manual modification of this file will be overwriten by the generation.
@ -506,6 +506,9 @@ extern const u32 wheelR_png_size;
extern const u8 wifi1_png[]; extern const u8 wifi1_png[];
extern const u32 wifi1_png_size; extern const u32 wifi1_png_size;
extern const u8 wifi10_png[];
extern const u32 wifi10_png_size;
extern const u8 wifi12_png[]; extern const u8 wifi12_png[];
extern const u32 wifi12_png_size; extern const u32 wifi12_png_size;
@ -524,6 +527,9 @@ extern const u32 wifi32_png_size;
extern const u8 wifi4_png[]; extern const u8 wifi4_png[];
extern const u32 wifi4_png_size; extern const u32 wifi4_png_size;
extern const u8 wifi6_png[];
extern const u32 wifi6_png_size;
extern const u8 wifi8_png[]; extern const u8 wifi8_png[];
extern const u32 wifi8_png_size; extern const u32 wifi8_png_size;
@ -772,12 +778,14 @@ RecourceFile Resources::RecourceFiles[] =
{"wheel.png", wheel_png, wheel_png_size, NULL, 0}, {"wheel.png", wheel_png, wheel_png_size, NULL, 0},
{"wheelR.png", wheelR_png, wheelR_png_size, NULL, 0}, {"wheelR.png", wheelR_png, wheelR_png_size, NULL, 0},
{"wifi1.png", wifi1_png, wifi1_png_size, NULL, 0}, {"wifi1.png", wifi1_png, wifi1_png_size, NULL, 0},
{"wifi10.png", wifi10_png, wifi10_png_size, NULL, 0},
{"wifi12.png", wifi12_png, wifi12_png_size, NULL, 0}, {"wifi12.png", wifi12_png, wifi12_png_size, NULL, 0},
{"wifi16.png", wifi16_png, wifi16_png_size, NULL, 0}, {"wifi16.png", wifi16_png, wifi16_png_size, NULL, 0},
{"wifi2.png", wifi2_png, wifi2_png_size, NULL, 0}, {"wifi2.png", wifi2_png, wifi2_png_size, NULL, 0},
{"wifi3.png", wifi3_png, wifi3_png_size, NULL, 0}, {"wifi3.png", wifi3_png, wifi3_png_size, NULL, 0},
{"wifi32.png", wifi32_png, wifi32_png_size, NULL, 0}, {"wifi32.png", wifi32_png, wifi32_png_size, NULL, 0},
{"wifi4.png", wifi4_png, wifi4_png_size, NULL, 0}, {"wifi4.png", wifi4_png, wifi4_png_size, NULL, 0},
{"wifi6.png", wifi6_png, wifi6_png_size, NULL, 0},
{"wifi8.png", wifi8_png, wifi8_png_size, NULL, 0}, {"wifi8.png", wifi8_png, wifi8_png_size, NULL, 0},
{"wifi_btn.png", wifi_btn_png, wifi_btn_png_size, NULL, 0}, {"wifi_btn.png", wifi_btn_png, wifi_btn_png_size, NULL, 0},
{"wiimote.png", wiimote_png, wiimote_png_size, NULL, 0}, {"wiimote.png", wiimote_png, wiimote_png_size, NULL, 0},

View File

@ -267,6 +267,7 @@ int GameBooter::BootGame(struct discHdr *gameHdr)
//! Setup game configuration from game settings. If no game settings exist use global/default. //! Setup game configuration from game settings. If no game settings exist use global/default.
GameCFG * game_cfg = GameSettings.GetGameCFG(gameHeader.id); GameCFG * game_cfg = GameSettings.GetGameCFG(gameHeader.id);
u8 videoChoice = game_cfg->video == INHERIT ? Settings.videomode : game_cfg->video; u8 videoChoice = game_cfg->video == INHERIT ? Settings.videomode : game_cfg->video;
u8 videoPatchDolChoice = game_cfg->videoPatchDol == INHERIT ? Settings.videoPatchDol : game_cfg->videoPatchDol;
u8 aspectChoice = game_cfg->aspectratio == INHERIT ? Settings.GameAspectRatio : game_cfg->aspectratio; u8 aspectChoice = game_cfg->aspectratio == INHERIT ? Settings.GameAspectRatio : game_cfg->aspectratio;
u8 languageChoice = game_cfg->language == INHERIT ? Settings.language : game_cfg->language; u8 languageChoice = game_cfg->language == INHERIT ? Settings.language : game_cfg->language;
u8 ocarinaChoice = game_cfg->ocarina == INHERIT ? Settings.ocarina : game_cfg->ocarina; u8 ocarinaChoice = game_cfg->ocarina == INHERIT ? Settings.ocarina : game_cfg->ocarina;
@ -400,7 +401,7 @@ int GameBooter::BootGame(struct discHdr *gameHdr)
//! Do all the game patches //! Do all the game patches
gprintf("Applying game patches...\n"); gprintf("Applying game patches...\n");
gamepatches(videoChoice, aspectChoice, languageChoice, countrystrings, viChoice, sneekChoice, Hooktype, fix002, returnToChoice); gamepatches(videoChoice, videoPatchDolChoice, aspectChoice, languageChoice, countrystrings, viChoice, sneekChoice, Hooktype, fix002, returnToChoice);
//! Load Code handler if needed //! Load Code handler if needed
load_handler(Hooktype, WiirdDebugger, Settings.WiirdDebuggerPause); load_handler(Hooktype, WiirdDebugger, Settings.WiirdDebuggerPause);
@ -416,7 +417,7 @@ int GameBooter::BootDIOSMIOS(struct discHdr *gameHdr)
GameCFG * game_cfg = GameSettings.GetGameCFG(gameHdr->id); GameCFG * game_cfg = GameSettings.GetGameCFG(gameHdr->id);
u8 videoChoice = game_cfg->video == INHERIT ? Settings.videomode : game_cfg->video; u8 videoChoice = game_cfg->video == INHERIT ? Settings.videomode : game_cfg->video;
u8 languageChoice = game_cfg->language == INHERIT ? 6 : game_cfg->language; s8 languageChoice = game_cfg->language == INHERIT ? Settings.language - 1 : game_cfg->language;
u8 ocarinaChoice = game_cfg->ocarina == INHERIT ? Settings.ocarina : game_cfg->ocarina; u8 ocarinaChoice = game_cfg->ocarina == INHERIT ? Settings.ocarina : game_cfg->ocarina;
u8 dmlVideoChoice = game_cfg->DMLVideo == INHERIT ? Settings.DMLVideo : game_cfg->DMLVideo; u8 dmlVideoChoice = game_cfg->DMLVideo == INHERIT ? Settings.DMLVideo : game_cfg->DMLVideo;
u8 dmlProgressivePatch = game_cfg->DMLProgPatch == INHERIT ? Settings.DMLProgPatch : game_cfg->DMLProgPatch; u8 dmlProgressivePatch = game_cfg->DMLProgPatch == INHERIT ? Settings.DMLProgPatch : game_cfg->DMLProgPatch;
@ -627,7 +628,10 @@ int GameBooter::BootDIOSMIOS(struct discHdr *gameHdr)
if(dmlWidescreenChoice) if(dmlWidescreenChoice)
dml_config->Config |= DML_CFG_FORCE_WIDE; dml_config->Config |= DML_CFG_FORCE_WIDE;
if(dmlScreenshotChoice) if(dmlScreenshotChoice)
{
dml_config->Config |= DML_CFG_SCREENSHOT; dml_config->Config |= DML_CFG_SCREENSHOT;
dml_config->Config |= DML_CFG_PADHOOK;
}
if(bootDisc2 && IosLoader::GetDMLVersion() >= DML_VERSION_DM_2_6_0) if(bootDisc2 && IosLoader::GetDMLVersion() >= DML_VERSION_DM_2_6_0)
dml_config->Config |= DML_CFG_BOOT_DISC2; dml_config->Config |= DML_CFG_BOOT_DISC2;
@ -646,8 +650,9 @@ int GameBooter::BootDIOSMIOS(struct discHdr *gameHdr)
} }
else // Force user choice else // Force user choice
{ {
dml_config->VideoMode = DML_VID_FORCE;
Disc_SelectVMode(videoChoice, false, &dml_config->VideoMode); Disc_SelectVMode(videoChoice, false, &dml_config->VideoMode);
if(!(dml_config->VideoMode & DML_VID_DML_AUTO))
dml_config->VideoMode |= DML_VID_FORCE;
} }
Disc_SetVMode(); Disc_SetVMode();
} }
@ -664,42 +669,9 @@ int GameBooter::BootDIOSMIOS(struct discHdr *gameHdr)
gprintf("DML: setup configuration 0x%X\n", dml_config->Config); gprintf("DML: setup configuration 0x%X\n", dml_config->Config);
gprintf("DML: setup video mode 0x%X\n", dml_config->VideoMode); gprintf("DML: setup video mode 0x%X\n", dml_config->VideoMode);
syssram *sram = __SYS_LockSram(); // Set Sram flags
if(dml_config->VideoMode & DML_VID_FORCE_PROG || dml_config->VideoMode & DML_VID_PROG_PATCH) { bool progressive = (dml_config->VideoMode & DML_VID_FORCE_PROG) || (dml_config->VideoMode & DML_VID_PROG_PATCH);
sram->flags |= 0x80; //set progressive flag PatchSram(languageChoice, true, progressive);
}
else {
sram->flags &= 0x7F; //clear progressive flag
}
// setup video mode flags
if (*Video_Mode == VI_NTSC) {
sram->flags &= ~1; // Clear bit 0 to set the video mode to NTSC
sram->ntd &= 0xBF; //clear pal60 flag
}
else {
sram->flags |= 1; // Set bit 0 to set the video mode to PAL
sram->ntd |= 0x40; //set pal60 flag
}
// Set language flag
if(languageChoice <= GC_DUTCH)
{
sram->lang = languageChoice;
}
else // console default
{
sram->lang = GC_ENGLISH;
if(CONF_GetLanguage() >= CONF_LANG_ENGLISH && CONF_GetLanguage() <= CONF_LANG_DUTCH)
{
sram->lang = CONF_GetLanguage()-1;
}
}
gprintf("DML: setup language 0x%X\n", sram->lang);
__SYS_UnlockSram(1); // 1 -> write changes
while(!__SYS_SyncSram())
usleep(100);
/* NTSC-J Patch */ // Thanks to Fix94 /* NTSC-J Patch */ // Thanks to Fix94
u8 *diskid = (u8 *) Disc_ID; u8 *diskid = (u8 *) Disc_ID;
@ -713,16 +685,17 @@ int GameBooter::BootDIOSMIOS(struct discHdr *gameHdr)
int GameBooter::BootDevolution(struct discHdr *gameHdr) int GameBooter::BootDevolution(struct discHdr *gameHdr)
{ {
const char *RealPath = GCGames::Instance()->GetPath((const char *) gameHdr->id);
// check the settings
GameCFG * game_cfg = GameSettings.GetGameCFG(gameHdr->id); GameCFG * game_cfg = GameSettings.GetGameCFG(gameHdr->id);
u8 videoChoice = game_cfg->video == INHERIT ? Settings.videomode : game_cfg->video; u8 videoChoice = game_cfg->video == INHERIT ? Settings.videomode : game_cfg->video;
int languageChoice = game_cfg->language == INHERIT ? Settings.language -1 : game_cfg->language;
u8 devoMCEmulation = game_cfg->DEVOMCEmulation == INHERIT ? Settings.DEVOMCEmulation : game_cfg->DEVOMCEmulation; u8 devoMCEmulation = game_cfg->DEVOMCEmulation == INHERIT ? Settings.DEVOMCEmulation : game_cfg->DEVOMCEmulation;
u8 devoActivityLEDChoice = game_cfg->DEVOActivityLED == INHERIT ? Settings.DEVOActivityLED : game_cfg->DEVOActivityLED; u8 devoActivityLEDChoice = game_cfg->DEVOActivityLED == INHERIT ? Settings.DEVOActivityLED : game_cfg->DEVOActivityLED;
u8 devoWidescreenChoice = game_cfg->DEVOWidescreen == INHERIT ? Settings.DEVOWidescreen : game_cfg->DEVOWidescreen; u8 devoWidescreenChoice = game_cfg->DEVOWidescreen == INHERIT ? Settings.DEVOWidescreen : game_cfg->DEVOWidescreen;
u8 devoFZeroAXChoice = game_cfg->DEVOFZeroAX == INHERIT ? Settings.DEVOFZeroAX : game_cfg->DEVOFZeroAX; u8 devoFZeroAXChoice = game_cfg->DEVOFZeroAX == INHERIT ? Settings.DEVOFZeroAX : game_cfg->DEVOFZeroAX;
u8 devoTimerFixChoice = game_cfg->DEVOTimerFix == INHERIT ? Settings.DEVOTimerFix : game_cfg->DEVOTimerFix; u8 devoTimerFixChoice = game_cfg->DEVOTimerFix == INHERIT ? Settings.DEVOTimerFix : game_cfg->DEVOTimerFix;
u8 devoDButtonsChoice = game_cfg->DEVODButtons == INHERIT ? Settings.DEVODButtons : game_cfg->DEVODButtons;
if(gameHdr->type == TYPE_GAME_GC_DISC) if(gameHdr->type == TYPE_GAME_GC_DISC)
{ {
@ -736,6 +709,12 @@ int GameBooter::BootDevolution(struct discHdr *gameHdr)
return 0; return 0;
} }
if(strncmp(DeviceHandler::PathToFSName(RealPath), "FAT", 3) != 0)
{
WindowPrompt(tr("Error:"), tr("To run GameCube games with Devolution you need to use a FAT32 partition."), tr("OK"));
return 0;
}
// Check if Devolution is available // Check if Devolution is available
u8 *loader_bin = NULL; u8 *loader_bin = NULL;
int DEVO_version = 0; int DEVO_version = 0;
@ -777,10 +756,6 @@ int GameBooter::BootDevolution(struct discHdr *gameHdr)
// Devolution config // Devolution config
DEVO_CGF *devo_config = (DEVO_CGF*)0x80000020; DEVO_CGF *devo_config = (DEVO_CGF*)0x80000020;
// Get the Game's data
const char *RealPath = GCGames::Instance()->GetPath((const char *) gameHdr->id);
char disc1[100]; char disc1[100];
char disc2[100]; char disc2[100];
bool multiDisc = false; bool multiDisc = false;
@ -834,6 +809,8 @@ int GameBooter::BootDevolution(struct discHdr *gameHdr)
devo_config->options |= DEVO_CFG_FZERO_AX; devo_config->options |= DEVO_CFG_FZERO_AX;
if(devoTimerFixChoice && DEVO_version >= 196) if(devoTimerFixChoice && DEVO_version >= 196)
devo_config->options |= DEVO_CFG_TIMER_FIX; devo_config->options |= DEVO_CFG_TIMER_FIX;
if(devoDButtonsChoice && DEVO_version >= 200)
devo_config->options |= DEVO_CFG_D_BUTTONS;
// check memory card // check memory card
if(devoMCEmulation == DEVO_MC_OFF) if(devoMCEmulation == DEVO_MC_OFF)
@ -898,6 +875,8 @@ int GameBooter::BootDevolution(struct discHdr *gameHdr)
Disc_SelectVMode(videoChoice, true, NULL); Disc_SelectVMode(videoChoice, true, NULL);
Disc_SetVMode(); Disc_SetVMode();
// Set sram flags
PatchSram(languageChoice, false, false);
// flush disc ID and Devolution config out to memory // flush disc ID and Devolution config out to memory
DCFlushRange(lowmem, 64); DCFlushRange(lowmem, 64);
@ -917,3 +896,69 @@ int GameBooter::BootDevolution(struct discHdr *gameHdr)
_CPU_ISR_Restore( cpu_isr ); _CPU_ISR_Restore( cpu_isr );
return 0; return 0;
} }
void GameBooter::PatchSram(int language, bool patchVideoMode, bool progressive)
{
syssram *sram = __SYS_LockSram();
// Setup language flag
if(language >= GC_ENGLISH && language <= GC_DUTCH)
{
sram->lang = language;
}
else // console default
{
sram->lang = GC_ENGLISH;
if(CONF_GetLanguage() >= CONF_LANG_ENGLISH && CONF_GetLanguage() <= CONF_LANG_DUTCH)
{
sram->lang = CONF_GetLanguage()-1;
}
}
gprintf("Sram: Language set to 0x%X\n", sram->lang);
// Setup Video mode flags
if(patchVideoMode)
{
if(progressive)
sram->flags |= 0x80; //set progressive flag
else
sram->flags &= 0x7F; //clear progressive flag
if (*Video_Mode == VI_NTSC)
{
sram->flags &= ~1; // Clear bit 0 to set the video mode to NTSC
sram->ntd &= 0xBF; //clear pal60 flag
}
else
{
sram->flags |= 1; // Set bit 0 to set the video mode to PAL
sram->ntd |= 0x40; //set pal60 flag
}
gprintf("Sram: flags set to 0x%X\n", sram->flags);
gprintf("Sram: ntd set to 0x%X\n", sram->ntd);
}
__SYS_UnlockSram(1); // 1 -> write changes
while(!__SYS_SyncSram())
usleep(100);
// Log Sram's first 20 bytes
/* char srambuff[64];
sram = __SYS_LockSram();
memcpy(srambuff, sram, 20);
__SYS_UnlockSram(0);
int i;
gprintf("SRAM Hex View\n\n");
gprintf(" \t\t 0 1 2 3 4 5 6 7 8 9 A B C D E F\n");
for (i=0;i<20;i++)
{
if( (i%16) == 0 )
gprintf("\n0x%d0h\t\t", i/16);
gprintf("%02X ", srambuff[i]);
}
*/
}

View File

@ -33,6 +33,7 @@ class GameBooter
static void ShutDownDevices(int gameUSBPort); static void ShutDownDevices(int gameUSBPort);
static int BootDIOSMIOS(struct discHdr *gameHdr); static int BootDIOSMIOS(struct discHdr *gameHdr);
static int BootDevolution(struct discHdr *gameHdr); static int BootDevolution(struct discHdr *gameHdr);
static void PatchSram(int language, bool patchVideoMode, bool progressive);
}; };
#endif #endif

View File

@ -28,8 +28,8 @@ extern u32 AppEntrypoint;
/* Disc pointers */ /* Disc pointers */
static u32 *buffer = (u32 *) 0x93000000; static u32 *buffer = (u32 *) 0x93000000;
static u8 *diskid = (u8 *) Disc_ID; static u8 *diskid = (u8 *) Disc_ID;
static GXRModeObj *rmode = NULL;
static u32 rmode_reg = 0; static u32 rmode_reg = 0;
GXRModeObj *rmode = NULL;
void Disc_SetLowMem(void) void Disc_SetLowMem(void)
{ {
@ -43,7 +43,7 @@ void Disc_SetLowMem(void)
/* Setup low memory */ /* Setup low memory */
*Assembler = 0x38A00040; // Assembler *Assembler = 0x38A00040; // Assembler
*(u32 *) 0x800000E4 = 0x80431A80; *(u32 *) 0x800000E4 = 0x80431A80; // OS_Thread
*Dev_Debugger = 0x81800000; // Dev Debugger Monitor Address *Dev_Debugger = 0x81800000; // Dev Debugger Monitor Address
*Simulated_Mem = 0x01800000; // Simulated Memory Size *Simulated_Mem = 0x01800000; // Simulated Memory Size
*(vu32 *) 0xCD00643C = 0x00000000; // 32Mhz on Bus *(vu32 *) 0xCD00643C = 0x00000000; // 32Mhz on Bus
@ -92,7 +92,7 @@ void Disc_SelectVMode(u8 videoselected, bool devolution, u32 *dml_VideoMode)
if(dml_VideoMode) if(dml_VideoMode)
{ {
rmode = progressive ? &TVEurgb60Hz480Prog : (PAL60 ? &TVEurgb60Hz480IntDf : &TVPal528IntDf); rmode = progressive ? &TVEurgb60Hz480Prog : (PAL60 ? &TVEurgb60Hz480IntDf : &TVPal528IntDf);
*dml_VideoMode |= progressive ? DML_VID_FORCE_PROG : (PAL60 ? DML_VID_FORCE_PAL60 : DML_VID_FORCE_PAL50); *dml_VideoMode = progressive ? DML_VID_FORCE_PROG : (PAL60 ? DML_VID_FORCE_PAL60 : DML_VID_FORCE_PAL50);
} }
break; break;
@ -102,7 +102,7 @@ void Disc_SelectVMode(u8 videoselected, bool devolution, u32 *dml_VideoMode)
case CONF_VIDEO_NTSC: case CONF_VIDEO_NTSC:
rmode_reg = VI_NTSC; rmode_reg = VI_NTSC;
if(dml_VideoMode) *dml_VideoMode |= DML_VID_FORCE_NTSC; if(dml_VideoMode) *dml_VideoMode = DML_VID_FORCE_NTSC;
break; break;
} }
@ -128,7 +128,7 @@ void Disc_SelectVMode(u8 videoselected, bool devolution, u32 *dml_VideoMode)
{ {
rmode_reg = PAL60 ? VI_EURGB60 : VI_PAL; rmode_reg = PAL60 ? VI_EURGB60 : VI_PAL;
rmode = progressive ? &TVEurgb60Hz480Prog : (PAL60 ? &TVEurgb60Hz480IntDf : &TVPal528IntDf); rmode = progressive ? &TVEurgb60Hz480Prog : (PAL60 ? &TVEurgb60Hz480IntDf : &TVPal528IntDf);
*dml_VideoMode |= progressive ? DML_VID_FORCE_PROG : (PAL60 ? DML_VID_FORCE_PAL60 : DML_VID_FORCE_PAL50); *dml_VideoMode = progressive ? DML_VID_FORCE_PROG : (PAL60 ? DML_VID_FORCE_PAL60 : DML_VID_FORCE_PAL50);
} }
break; break;
// NTSC // NTSC
@ -143,7 +143,7 @@ void Disc_SelectVMode(u8 videoselected, bool devolution, u32 *dml_VideoMode)
{ {
rmode_reg = VI_NTSC; rmode_reg = VI_NTSC;
rmode = progressive ? &TVNtsc480Prog : &TVNtsc480IntDf; rmode = progressive ? &TVNtsc480Prog : &TVNtsc480IntDf;
*dml_VideoMode |= DML_VID_FORCE_NTSC; *dml_VideoMode = DML_VID_FORCE_NTSC;
} }
break; break;
default: default:
@ -154,7 +154,7 @@ void Disc_SelectVMode(u8 videoselected, bool devolution, u32 *dml_VideoMode)
case VIDEO_MODE_PAL50: // PAL50 case VIDEO_MODE_PAL50: // PAL50
rmode = &TVPal528IntDf; rmode = &TVPal528IntDf;
rmode_reg = VI_PAL; rmode_reg = VI_PAL;
if(dml_VideoMode) *dml_VideoMode |= DML_VID_FORCE_PAL50; if(dml_VideoMode) *dml_VideoMode = DML_VID_FORCE_PAL50;
break; break;
case VIDEO_MODE_PAL60: // PAL60 case VIDEO_MODE_PAL60: // PAL60
rmode = progressive ? &TVNtsc480Prog : &TVEurgb60Hz480IntDf; rmode = progressive ? &TVNtsc480Prog : &TVEurgb60Hz480IntDf;
@ -162,13 +162,13 @@ void Disc_SelectVMode(u8 videoselected, bool devolution, u32 *dml_VideoMode)
if(dml_VideoMode) if(dml_VideoMode)
{ {
rmode = progressive ? &TVEurgb60Hz480Prog : &TVEurgb60Hz480IntDf; rmode = progressive ? &TVEurgb60Hz480Prog : &TVEurgb60Hz480IntDf;
*dml_VideoMode |= progressive ? DML_VID_FORCE_PROG : DML_VID_FORCE_PAL60; *dml_VideoMode = progressive ? DML_VID_FORCE_PROG : DML_VID_FORCE_PAL60;
} }
break; break;
case VIDEO_MODE_NTSC: // NTSC case VIDEO_MODE_NTSC: // NTSC
rmode = progressive ? &TVNtsc480Prog : &TVNtsc480IntDf; rmode = progressive ? &TVNtsc480Prog : &TVNtsc480IntDf;
rmode_reg = VI_NTSC; rmode_reg = VI_NTSC;
if(dml_VideoMode) *dml_VideoMode |= progressive ? DML_VID_FORCE_PROG : DML_VID_FORCE_NTSC; if(dml_VideoMode) *dml_VideoMode = progressive ? DML_VID_FORCE_PROG : DML_VID_FORCE_NTSC;
break; break;
case VIDEO_MODE_PAL480P: case VIDEO_MODE_PAL480P:
rmode = &TVNtsc480Prog; rmode = &TVNtsc480Prog;
@ -176,13 +176,13 @@ void Disc_SelectVMode(u8 videoselected, bool devolution, u32 *dml_VideoMode)
if(dml_VideoMode) if(dml_VideoMode)
{ {
rmode = &TVEurgb60Hz480Prog; rmode = &TVEurgb60Hz480Prog;
*dml_VideoMode |= DML_VID_FORCE_PROG | DML_VID_PROG_PATCH; *dml_VideoMode = DML_VID_FORCE_PROG | DML_VID_PROG_PATCH;
} }
break; break;
case VIDEO_MODE_NTSC480P: case VIDEO_MODE_NTSC480P:
rmode = &TVNtsc480Prog; rmode = &TVNtsc480Prog;
rmode_reg = VI_NTSC; rmode_reg = VI_NTSC;
if(dml_VideoMode) *dml_VideoMode |= DML_VID_FORCE_PROG | DML_VID_PROG_PATCH; if(dml_VideoMode) *dml_VideoMode = DML_VID_FORCE_PROG | DML_VID_PROG_PATCH;
break; break;
case VIDEO_MODE_SYSDEFAULT: // AUTO PATCH TO SYSTEM case VIDEO_MODE_SYSDEFAULT: // AUTO PATCH TO SYSTEM
break; break;
@ -205,6 +205,8 @@ void Disc_SetVMode(void)
VIDEO_WaitVSync(); VIDEO_WaitVSync();
if (rmode->viTVMode & VI_NON_INTERLACE) if (rmode->viTVMode & VI_NON_INTERLACE)
VIDEO_WaitVSync(); VIDEO_WaitVSync();
else while(VIDEO_GetNextField())
VIDEO_WaitVSync();
} }
void __Disc_SetTime(void) void __Disc_SetTime(void)

View File

@ -68,6 +68,8 @@ extern "C"
void Disc_SetVMode(void); void Disc_SetVMode(void);
s32 Disc_JumpToEntrypoint(s32 hooktype, u32 dolparameter); s32 Disc_JumpToEntrypoint(s32 hooktype, u32 dolparameter);
extern GXRModeObj *rmode;
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -11,6 +11,7 @@ void rockout(struct discHdr *header)
HaltGui(); HaltGui();
if (!rockoutSet && header && if (!rockoutSet && header &&
header->id[0] != 'W' && header->id[0] != 'G' && // Exclude Wiiware and GameCube games
( strcasestr(GameTitles.GetTitle(header), "guitar") ( strcasestr(GameTitles.GetTitle(header), "guitar")
|| strcasestr(GameTitles.GetTitle(header), "band") || strcasestr(GameTitles.GetTitle(header), "band")
|| strcasestr(GameTitles.GetTitle(header), "rock"))) || strcasestr(GameTitles.GetTitle(header), "rock")))