mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-11-22 03:09:15 +01:00
Improve caching
Thanks to Oddx. I just tested his changes, fixed some issues and then refactored code.
This commit is contained in:
parent
1d582f97c2
commit
8ab03c4bf9
@ -344,6 +344,9 @@ msgstr ""
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr ""
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Adresár neexistuje!"
|
msgstr "Adresár neexistuje!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "Vynutit PAL50"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "Vynutit PAL60"
|
msgstr "Vynutit PAL60"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr ""
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "ID hry"
|
msgstr "ID hry"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr ""
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "Název hry [IdHry]"
|
msgstr "Název hry [IdHry]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Hry"
|
msgstr "Hry"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "Obnovit hudbu na pozadí"
|
msgstr "Obnovit hudbu na pozadí"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,7 +2188,7 @@ msgstr "Spouštec kanálu"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
@ -2280,9 +2283,6 @@ msgstr ""
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "Odinstalace"
|
msgstr "Odinstalace"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr "Cache BNR Filer"
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr "Sti til Cache BNR Filer"
|
msgstr "Sti til Cache BNR Filer"
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "Cache titler"
|
msgstr "Cache titler"
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr "Devolution's loader.bin filen kunne ikke loades."
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Mappen eksisterer ikke!"
|
msgstr "Mappen eksisterer ikke!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr "Disk"
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr "Disk 1"
|
msgstr "Disk 1"
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "Tving PAL50"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "Tving PAL60"
|
msgstr "Tving PAL60"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr "Tving Titler fra Disk"
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr "Tving Widescreen"
|
msgstr "Tving Widescreen"
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr "GameCube Spil Slet"
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr "GameCube Installations Menu"
|
msgstr "GameCube Installations Menu"
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr "Sti til Spil Header Cache filer"
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "Spil-ID"
|
msgstr "Spil-ID"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr "GameCube Kilde"
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "Spilnavn [SPILID]"
|
msgstr "Spilnavn [SPILID]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Spil"
|
msgstr "Spil"
|
||||||
|
|
||||||
@ -1848,8 +1851,8 @@ msgstr "Nulstil Alle Spilindstillinger"
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "Nulstil BG-musik"
|
msgstr "Nulstil BG-musik"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr "Nulstil Spilheader Cache"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
msgstr "Nulstil spiltæller"
|
msgstr "Nulstil spiltæller"
|
||||||
@ -2185,8 +2188,8 @@ msgstr "Titel-starter"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr "Titler Sti"
|
msgstr "Titler Sti"
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr "Titler fra GameTDB"
|
msgstr "Titler Fra"
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
msgstr "For at køre GameCube spil fra Disken skal du sætte GameCube-tilstanden til MIOS i spilindstillingerne."
|
msgstr "For at køre GameCube spil fra Disken skal du sætte GameCube-tilstanden til MIOS i spilindstillingerne."
|
||||||
@ -2280,9 +2283,6 @@ msgstr "USBloaderGX kunne ikke skrive en Nintendont config fil. Vil du starte Ni
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr "USBloaderGX r1218 kræves for Nintendont Alpha v0.1. Opdater venligst din Nintendont boot.dol version."
|
msgstr "USBloaderGX r1218 kræves for Nintendont Alpha v0.1. Opdater venligst din Nintendont boot.dol version."
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr "Brug Game Header Cache"
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "Afinstallér"
|
msgstr "Afinstallér"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr "Cache BNR Bestanden"
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr "Cache BNR Bestandspad"
|
msgstr "Cache BNR Bestandspad"
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "Titels cachen"
|
msgstr "Titels cachen"
|
||||||
|
|
||||||
@ -639,11 +642,14 @@ msgstr "Devolution's loader.bin bestand kan niet worden geladen."
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Map bestaat niet!"
|
msgstr "Map bestaat niet!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr "Disc 1"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 2"
|
msgid "Disc 2"
|
||||||
msgstr "Disc 2"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc Artwork Download"
|
msgid "Disc Artwork Download"
|
||||||
msgstr "Download disk labels"
|
msgstr "Download disk labels"
|
||||||
@ -1011,9 +1017,6 @@ msgstr "Forceer PAL50"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "Forceer PAL60"
|
msgstr "Forceer PAL60"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr "Forceer titels van Disk"
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr "Forceer Breedbeeld"
|
msgstr "Forceer Breedbeeld"
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr "GameCube Spel Verwijderen"
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr "GameCube Installatie Menu"
|
msgstr "GameCube Installatie Menu"
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "Spel ID"
|
msgstr "Spel ID"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr "GameCube Bron"
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "Spelnaam [SPELID]"
|
msgstr "Spelnaam [SPELID]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Spellen"
|
msgstr "Spellen"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "Reset achtergrond muziek"
|
msgstr "Reset achtergrond muziek"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,8 +2188,8 @@ msgstr "Titel Launcher"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr "Titels van GameTDB"
|
msgstr "Titels Van"
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
msgstr "Om GameCube spellen vanaf disk te spelen moet je de GameCube modus op MIOS zetten in de spel instellingen."
|
msgstr "Om GameCube spellen vanaf disk te spelen moet je de GameCube modus op MIOS zetten in de spel instellingen."
|
||||||
@ -2280,9 +2283,6 @@ msgstr "USBLoaderGX kon Nintendont config bestand niet schrijven. Nintendont toc
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "Verwijderen"
|
msgstr "Verwijderen"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr ""
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr ""
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr ""
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr ""
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr ""
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,7 +2188,7 @@ msgstr ""
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
@ -2280,9 +2283,6 @@ msgstr ""
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr ""
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr ""
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr ""
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr ""
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "Peli ID"
|
msgstr "Peli ID"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr ""
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Pelejä"
|
msgstr "Pelejä"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,7 +2188,7 @@ msgstr "Nimilaukaisin"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
@ -2280,9 +2283,6 @@ msgstr ""
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "Poista"
|
msgstr "Poista"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr "Fichiers BNR en cache"
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr "Dossier de cache BNR"
|
msgstr "Dossier de cache BNR"
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "Titres en cache"
|
msgstr "Titres en cache"
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr "Le fichier loader.bin de Devolution n'a pu être chargé."
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Répertoire inexistant!"
|
msgstr "Répertoire inexistant!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr "Disque"
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr "Disque 1"
|
msgstr "Disque 1"
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "Forcer PAL50"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "Forcer PAL60"
|
msgstr "Forcer PAL60"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr "Forcer charg. titres du disque"
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr "Forcer 16:9"
|
msgstr "Forcer 16:9"
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr "Menu de suppression GameCube"
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr "Menu d'installation GameCube"
|
msgstr "Menu d'installation GameCube"
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "ID du jeu"
|
msgstr "ID du jeu"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr "Source GameCube"
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "NomJeu [IDJEU]"
|
msgstr "NomJeu [IDJEU]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Jeux"
|
msgstr "Jeux"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "Fond sonore par defaut"
|
msgstr "Fond sonore par defaut"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,8 +2188,8 @@ msgstr "Menu Chaînes"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr "Dossier titres"
|
msgstr "Dossier titres"
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr "Titres de GameTDB"
|
msgstr "Titres de"
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
msgstr "Pour lancer les jeux GameCube à partir du disque vous devez placer le Mode GameCube sur MIOS dans les paramètres du jeu."
|
msgstr "Pour lancer les jeux GameCube à partir du disque vous devez placer le Mode GameCube sur MIOS dans les paramètres du jeu."
|
||||||
@ -2280,9 +2283,6 @@ msgstr "USBLoaderGX n'a pas pu créer le fichier de configuration de Nintendont.
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr "Nintendont Alpha v0.1 ne fonctionne qu'avec USBLoaderGX r1218. Veuillez mettre à jour votre version de Nintendont."
|
msgstr "Nintendont Alpha v0.1 ne fonctionne qu'avec USBLoaderGX r1218. Veuillez mettre à jour votre version de Nintendont."
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "Désinstaller"
|
msgstr "Désinstaller"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr "BNR-Cache"
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr "Cache BNR Dateien"
|
msgstr "Cache BNR Dateien"
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "Titel cachen"
|
msgstr "Titel cachen"
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr "Devolution's loader.bin Datei kann nicht geladen werden."
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Verzeichnis existiert nicht!"
|
msgstr "Verzeichnis existiert nicht!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr "Disk"
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr "Disk 1"
|
msgstr "Disk 1"
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "PAL50 erzw."
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "PAL60 erzw."
|
msgstr "PAL60 erzw."
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr "Erzwinge DVD-Titel"
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr "Erzwinge Widescreen"
|
msgstr "Erzwinge Widescreen"
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr "GameCube Spiele Löschen"
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr "GameCube Installationsmenü"
|
msgstr "GameCube Installationsmenü"
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "Spiel ID"
|
msgstr "Spiel ID"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr "GameCube Quelle"
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "Spielname [SPIELID]"
|
msgstr "Spielname [SPIELID]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Spiele"
|
msgstr "Spiele"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "Musik zurücksetzen"
|
msgstr "Musik zurücksetzen"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,8 +2188,8 @@ msgstr "Channel Launcher"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr "Namen aus der WiiTDB"
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
msgstr "Um GameCube Spiele von DVD zu starten, muss der GameCube Modus in den Spieleinstellungen auf MIOS gesetzt werden."
|
msgstr "Um GameCube Spiele von DVD zu starten, muss der GameCube Modus in den Spieleinstellungen auf MIOS gesetzt werden."
|
||||||
@ -2280,9 +2283,6 @@ msgstr "USBLoaderGX konnte die Nintendont config Dateien nicht ändern. Nintendo
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr "USBLoaderGX r1218 wird benötigt um Nintendont Alpha v0.1 starten zu können. Bitte aktualisiere deine Nintendont Version."
|
msgstr "USBLoaderGX r1218 wird benötigt um Nintendont Alpha v0.1 starten zu können. Bitte aktualisiere deine Nintendont Version."
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "Deinstallieren"
|
msgstr "Deinstallieren"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr "αποθήκευση αρχείων BNR"
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr "αποθήκευση τοποθεσίας αρχείων BNR"
|
msgstr "αποθήκευση τοποθεσίας αρχείων BNR"
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "Αποθήκευση τίτλων"
|
msgstr "Αποθήκευση τίτλων"
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr "Το αρχείο loader.bin του devolution δεν φορτώθηκε
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Ο φάκελος δεν υπάρχει!"
|
msgstr "Ο φάκελος δεν υπάρχει!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "Επιβολή PAL50"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "Επιβολή PAL60"
|
msgstr "Επιβολή PAL60"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr "Επιβολή ονόματος από το ίδιο το παιχνίδι"
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr "Διαγραφή παιχνιδιών GameCube"
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr "menu εγκατάστασης παιχνιδιών GameCube"
|
msgstr "menu εγκατάστασης παιχνιδιών GameCube"
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "ID παιχνιδιού"
|
msgstr "ID παιχνιδιού"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr ""
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "όνομα παιχνιδιού [κωδικόςπαιχνιδιού]"
|
msgstr "όνομα παιχνιδιού [κωδικόςπαιχνιδιού]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Παιχνίδια"
|
msgstr "Παιχνίδια"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "Επαναφορά μουσικής υπόκρουσης."
|
msgstr "Επαναφορά μουσικής υπόκρουσης."
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,8 +2188,8 @@ msgstr "Εκκινητής τίτλων"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr "Τίτλοι από το GameTDB"
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
msgstr "Για αναπαραγωγή τίτλων Gamecube από τους αυθεντικούς δίσκους τους, πρέπει να ορίσετε την επιλογή GameCube σε ΜΙΟS, στις ρυθμίσεις κάθε τίτλου."
|
msgstr "Για αναπαραγωγή τίτλων Gamecube από τους αυθεντικούς δίσκους τους, πρέπει να ορίσετε την επιλογή GameCube σε ΜΙΟS, στις ρυθμίσεις κάθε τίτλου."
|
||||||
@ -2280,9 +2283,6 @@ msgstr ""
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "Απεγκατάσταση"
|
msgstr "Απεγκατάσταση"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr ""
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr ""
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "A könyvtár nem létezik!"
|
msgstr "A könyvtár nem létezik!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr ""
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr ""
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "Játék ID"
|
msgstr "Játék ID"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr ""
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Játékok"
|
msgstr "Játékok"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,7 +2188,7 @@ msgstr "Programindító"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
|
@ -344,6 +344,9 @@ msgstr "Cache file BNR"
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr "Percorso cache file BNR"
|
msgstr "Percorso cache file BNR"
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "Cache titoli"
|
msgstr "Cache titoli"
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr "Impossibile caricare il file loader.bin di Devolution."
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Il percorso non esiste!"
|
msgstr "Il percorso non esiste!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr "Disco 1"
|
msgstr "Disco 1"
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "Forza PAL50"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "Forza PAL60"
|
msgstr "Forza PAL60"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr "Forza titolo da disco"
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr "Forza Widescreen"
|
msgstr "Forza Widescreen"
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr "Menu disinstallazioni GC"
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr "Menu installazioni GC"
|
msgstr "Menu installazioni GC"
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "ID gioco"
|
msgstr "ID gioco"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr "Sorgente GameCube"
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "Nomegioco [IDGIOCO]"
|
msgstr "Nomegioco [IDGIOCO]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Giochi"
|
msgstr "Giochi"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "Ripristina musica sottofondo"
|
msgstr "Ripristina musica sottofondo"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,8 +2188,8 @@ msgstr "Avvia titoli"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr "Percorso titoli"
|
msgstr "Percorso titoli"
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr "Titoli da GameTDB"
|
msgstr "Titoli da"
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
msgstr "Per avviare i giochi GameCube da disco devi impostare la modalità Gamecube su MIOS nelle impostazioni del gioco."
|
msgstr "Per avviare i giochi GameCube da disco devi impostare la modalità Gamecube su MIOS nelle impostazioni del gioco."
|
||||||
|
@ -344,6 +344,9 @@ msgstr "BNRファイルをキャッシュ"
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr "BNRファイルキャッシュ"
|
msgstr "BNRファイルキャッシュ"
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "ゲーム名のキャッシュ"
|
msgstr "ゲーム名のキャッシュ"
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr "Devolutionのloader.binが読み込めません"
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "フォルダがありません"
|
msgstr "フォルダがありません"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "PAL50に強制"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "PAL60に強制"
|
msgstr "PAL60に強制"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr "ディスク内のゲーム名に強制"
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr "GCゲームの削除"
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr "GCインストールメニュー"
|
msgstr "GCインストールメニュー"
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "IDのみ"
|
msgstr "IDのみ"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr ""
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "ゲーム名 [ゲームID]"
|
msgstr "ゲーム名 [ゲームID]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "ゲーム"
|
msgstr "ゲーム"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "BGMをリセット"
|
msgstr "BGMをリセット"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,8 +2188,8 @@ msgstr "ランチャー"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr "ゲーム名の日本語化"
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
msgstr "GCゲームをディスク起動するには設定でGCモードをMIOSにしてください"
|
msgstr "GCゲームをディスク起動するには設定でGCモードをMIOSにしてください"
|
||||||
|
@ -344,6 +344,9 @@ msgstr "BNR 파일 캐쉬"
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr "BNR 파일 경로 캐쉬"
|
msgstr "BNR 파일 경로 캐쉬"
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr "캐시 경로"
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "타이틀 캐쉬"
|
msgstr "타이틀 캐쉬"
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr "데볼루션의 loader.bin 파일을 로드 할 수 없습니다."
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "디렉토리가 존재하지 않습니다!"
|
msgstr "디렉토리가 존재하지 않습니다!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr "디스크"
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr "디스크 1"
|
msgstr "디스크 1"
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "강제 PAL50"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "강제 PAL60"
|
msgstr "강제 PAL60"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr "디스크에서 강제 타이틀"
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr "강제 와이드스크린"
|
msgstr "강제 와이드스크린"
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr "게임큐브 게임 삭제"
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr "게임큐브 설치 메뉴"
|
msgstr "게임큐브 설치 메뉴"
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr "게임 헤더 캐시 파일 경로"
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "게임 ID"
|
msgstr "게임 ID"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr "게임큐브 소스"
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "게임이름 [게임ID]"
|
msgstr "게임이름 [게임ID]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "게임"
|
msgstr "게임"
|
||||||
|
|
||||||
@ -1848,8 +1851,8 @@ msgstr "모든 게임 설정 재설정"
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "배경 음악 리셋"
|
msgstr "배경 음악 리셋"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr "게임 헤더 캐시 리셋"
|
msgstr "캐시된 타이틀 재설정"
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
msgstr "실행 횟수 리셋"
|
msgstr "실행 횟수 리셋"
|
||||||
@ -2185,8 +2188,8 @@ msgstr "타이틀 실행기"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr "타이틀 경로"
|
msgstr "타이틀 경로"
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr "GameTDB의 타이틀"
|
msgstr "제목 출처"
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
msgstr "디스크에서 게임큐브 게임을 실행하려면 게임 설정에서 게임큐브 모드를 MIOS로 설정해야 합니다."
|
msgstr "디스크에서 게임큐브 게임을 실행하려면 게임 설정에서 게임큐브 모드를 MIOS로 설정해야 합니다."
|
||||||
|
@ -344,6 +344,9 @@ msgstr ""
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "Cache titler"
|
msgstr "Cache titler"
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr ""
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Mappe finnes ikke!"
|
msgstr "Mappe finnes ikke!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "Tving PAL50"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "Tving PAL60"
|
msgstr "Tving PAL60"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr ""
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "Spill ID"
|
msgstr "Spill ID"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr ""
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "Spillnavn [SPILLID]"
|
msgstr "Spillnavn [SPILLID]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Spill"
|
msgstr "Spill"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "Tilbakestill BG musikk"
|
msgstr "Tilbakestill BG musikk"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,7 +2188,7 @@ msgstr "Tittel Laster"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
@ -2280,9 +2283,6 @@ msgstr ""
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr ""
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr ""
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Katalog nie istnieje!"
|
msgstr "Katalog nie istnieje!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr ""
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr ""
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "ID gry"
|
msgstr "ID gry"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr ""
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Liczba gier"
|
msgstr "Liczba gier"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,7 +2188,7 @@ msgstr "Uruchom tytul"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
@ -2280,9 +2283,6 @@ msgstr ""
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "Odinstaluj"
|
msgstr "Odinstaluj"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr "Cache de Banners"
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr "Caminho Cache"
|
msgstr "Caminho Cache"
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "Títulos em Cache"
|
msgstr "Títulos em Cache"
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr "O arquivo loader.bin do Devolution não pode ser lido"
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Pasta não existe!"
|
msgstr "Pasta não existe!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr "Disco 1"
|
msgstr "Disco 1"
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "Forçar PAL50"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "Forçar PAL60"
|
msgstr "Forçar PAL60"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr "Carregar Nome de Disco"
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr "Desinstalar Jogos GameCube"
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr "Instalar Jogos GameCube"
|
msgstr "Instalar Jogos GameCube"
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "ID do Jogo"
|
msgstr "ID do Jogo"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr "Pasta de Jogos"
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "Nome Jogo [IDJOGO]"
|
msgstr "Nome Jogo [IDJOGO]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Jogos"
|
msgstr "Jogos"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "Música padrão"
|
msgstr "Música padrão"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,8 +2188,8 @@ msgstr "Gestor de Títulos"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr "Pasta Títulos"
|
msgstr "Pasta Títulos"
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr "Títulos do GameTDB"
|
msgstr "Títulos do"
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
msgstr "Para rodar jogos de GameCube em disco, você precisa definir o modo de GameCube para MIOS nas configurações do jogo"
|
msgstr "Para rodar jogos de GameCube em disco, você precisa definir o modo de GameCube para MIOS nas configurações do jogo"
|
||||||
@ -2280,9 +2283,6 @@ msgstr "USB Loader GX não conseguiu gravar configurações do Nintendont. Rodar
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr "USB Loader GX r1218 é exigido para usar o Nintendont Alpha v0.1. Atualize sua versão do Nintendont"
|
msgstr "USB Loader GX r1218 é exigido para usar o Nintendont Alpha v0.1. Atualize sua versão do Nintendont"
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "Desinstalar"
|
msgstr "Desinstalar"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr ""
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "Títulos em Cache"
|
msgstr "Títulos em Cache"
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr ""
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Pasta não existe!"
|
msgstr "Pasta não existe!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "Forçar PAL50"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "Forçar PAL60"
|
msgstr "Forçar PAL60"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr ""
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "ID do Jogo"
|
msgstr "ID do Jogo"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr ""
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "Nome Jogo [IDJOGO]"
|
msgstr "Nome Jogo [IDJOGO]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Jogos"
|
msgstr "Jogos"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "Reinicializar Música de Fundo"
|
msgstr "Reinicializar Música de Fundo"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,8 +2188,8 @@ msgstr "Gestor de Títulos"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr "Títulos do GameTDB"
|
msgstr "Títulos do"
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2280,9 +2283,6 @@ msgstr ""
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr ""
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr ""
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Каталог не существует!"
|
msgstr "Каталог не существует!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr ""
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr ""
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "ID игры"
|
msgstr "ID игры"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr ""
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Игры"
|
msgstr "Игры"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,7 +2188,7 @@ msgstr "Загрузчик тайтла"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
@ -2280,9 +2283,6 @@ msgstr ""
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "Деинсталлировать"
|
msgstr "Деинсталлировать"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr "缓存 BNR 文件"
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr "缓存 BNR 文件路径"
|
msgstr "缓存 BNR 文件路径"
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "缓存游戏标题"
|
msgstr "缓存游戏标题"
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr "无法加载 Devolution 的 loader.bin。"
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "目录不存在!"
|
msgstr "目录不存在!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr "光盘 1"
|
msgstr "光盘 1"
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "强制 PAL50"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "强制 PAL60"
|
msgstr "强制 PAL60"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr "强制从光盘读取标题"
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr "强制宽屏"
|
msgstr "强制宽屏"
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr "GameCube 游戏删除"
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr "GameCube 安装菜单"
|
msgstr "GameCube 安装菜单"
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "游戏 ID"
|
msgstr "游戏 ID"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr "GameCube 来源"
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "游戏名 [GAMEID]"
|
msgstr "游戏名 [GAMEID]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "游戏"
|
msgstr "游戏"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "重置背景音乐"
|
msgstr "重置背景音乐"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,8 +2188,8 @@ msgstr "系统频道"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr "从 GameTDB 读取标题"
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
msgstr "想要加载光盘上的 GameCube 游戏,请将游戏设置中的 GameCube 模式设置为 MIOS。"
|
msgstr "想要加载光盘上的 GameCube 游戏,请将游戏设置中的 GameCube 模式设置为 MIOS。"
|
||||||
@ -2280,9 +2283,6 @@ msgstr "USBloaderGX不能写Nintendont设置文件,是否运行Nintendont?"
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr "USBloaderGX r1218之针对nintendont Alpha v0.1,请更新你的Nintendont boot。dol版本。"
|
msgstr "USBloaderGX r1218之针对nintendont Alpha v0.1,请更新你的Nintendont boot。dol版本。"
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "删除"
|
msgstr "删除"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr "Caché de archivos BNR"
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr "Caché de archivos BNR"
|
msgstr "Caché de archivos BNR"
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "Caché de Títulos"
|
msgstr "Caché de Títulos"
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr "No se pudo cargar el loader.bin de Devolution."
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "¡La carpeta no existe!"
|
msgstr "¡La carpeta no existe!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr "Disco 1"
|
msgstr "Disco 1"
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "Forzar PAL50"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "Forzar PAL60"
|
msgstr "Forzar PAL60"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr "Forzar títulos del disco"
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr "Forzar 16:9"
|
msgstr "Forzar 16:9"
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr "Borrar juego de GameCube"
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr "Menú de instalación GameCube"
|
msgstr "Menú de instalación GameCube"
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr "Ruta del caché de Headers"
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "ID de Juego"
|
msgstr "ID de Juego"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr "Origen GameCube"
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "NombreJuego [IDJUEGO]"
|
msgstr "NombreJuego [IDJUEGO]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Juegos"
|
msgstr "Juegos"
|
||||||
|
|
||||||
@ -1848,8 +1851,8 @@ msgstr "Reiniciar configuración de juegos"
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "Reiniciar Música de Fondo"
|
msgstr "Reiniciar Música de Fondo"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr "Reiniciar caché de Headers"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
msgstr "Reiniciar Partidas"
|
msgstr "Reiniciar Partidas"
|
||||||
@ -2185,8 +2188,8 @@ msgstr "Lanzador de Canales"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr "Ruta de títulos"
|
msgstr "Ruta de títulos"
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr "Títulos GameTDB"
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
msgstr "Para cargar juegos de GameCube desde Disco debes configurar el modo GameCube a MIOS."
|
msgstr "Para cargar juegos de GameCube desde Disco debes configurar el modo GameCube a MIOS."
|
||||||
@ -2280,9 +2283,6 @@ msgstr "No se pudo escribir la configuración de Nintendont, ¿continuar de toda
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr "Se necesita la versión r1218 para Nintendont Alpha 0.1. Por favor, actualiza el boot.dol de Nintendont."
|
msgstr "Se necesita la versión r1218 para Nintendont Alpha 0.1. Por favor, actualiza el boot.dol de Nintendont."
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr "Usar caché de encabezado de juego"
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "Desinstalar"
|
msgstr "Desinstalar"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr ""
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr ""
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Katalog existerar inte!"
|
msgstr "Katalog existerar inte!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr ""
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr ""
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "Spel-ID"
|
msgstr "Spel-ID"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr ""
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Spel"
|
msgstr "Spel"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "återställ BG musik"
|
msgstr "återställ BG musik"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,7 +2188,7 @@ msgstr "Titel startare"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
@ -2280,9 +2283,6 @@ msgstr ""
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "Avinstallera"
|
msgstr "Avinstallera"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr "緩衝頻道動畫檔案"
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr "緩衝頻道動畫檔案路徑"
|
msgstr "緩衝頻道動畫檔案路徑"
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr "遊戲標題緩衝"
|
msgstr "遊戲標題緩衝"
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr "Devolution的loader.bin檔無法載入。"
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "目錄不存在"
|
msgstr "目錄不存在"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr "光碟 1"
|
msgstr "光碟 1"
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr "強制 PAL50"
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr "強制 PAL60"
|
msgstr "強制 PAL60"
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr "強制從光碟顯示標題"
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr "GameCube 遊戲刪除"
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr "GameCube 安裝畫面"
|
msgstr "GameCube 安裝畫面"
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "遊戲 ID"
|
msgstr "遊戲 ID"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr "GameCube 來源"
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr "遊戲名稱 [GAMEID]"
|
msgstr "遊戲名稱 [GAMEID]"
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "遊戲數量"
|
msgstr "遊戲數量"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr "重設背景音樂"
|
msgstr "重設背景音樂"
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,8 +2188,8 @@ msgstr "系統頻道"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr "從GameTDB顯示遊戲名稱"
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
msgstr "用光碟執行GameCube遊戲,你需在遊戲設定中設定GameCube 模式為MIOS。"
|
msgstr "用光碟執行GameCube遊戲,你需在遊戲設定中設定GameCube 模式為MIOS。"
|
||||||
@ -2280,9 +2283,6 @@ msgstr ""
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "移除"
|
msgstr "移除"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr ""
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr ""
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "ไม่พบไดเรคทอรี่นี้ !"
|
msgstr "ไม่พบไดเรคทอรี่นี้ !"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr ""
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr ""
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "เกมส์ ID"
|
msgstr "เกมส์ ID"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr ""
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "เกมส์"
|
msgstr "เกมส์"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,7 +2188,7 @@ msgstr "Title Launcher"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
@ -2280,9 +2283,6 @@ msgstr ""
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "ถอนการติดตั้ง"
|
msgstr "ถอนการติดตั้ง"
|
||||||
|
|
||||||
|
@ -344,6 +344,9 @@ msgstr ""
|
|||||||
msgid "Cache BNR Files Path"
|
msgid "Cache BNR Files Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cache Path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Cache Titles"
|
msgid "Cache Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -639,6 +642,9 @@ msgstr ""
|
|||||||
msgid "Directory does not exist!"
|
msgid "Directory does not exist!"
|
||||||
msgstr "Klasör bulunamadı!"
|
msgstr "Klasör bulunamadı!"
|
||||||
|
|
||||||
|
msgid "Disc"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disc 1"
|
msgid "Disc 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1011,9 +1017,6 @@ msgstr ""
|
|||||||
msgid "Force PAL60"
|
msgid "Force PAL60"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Force Titles from Disc"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Force Widescreen"
|
msgid "Force Widescreen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1104,9 +1107,6 @@ msgstr ""
|
|||||||
msgid "GameCube Install Menu"
|
msgid "GameCube Install Menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Game Header Cache Files Path"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Game ID"
|
msgid "Game ID"
|
||||||
msgstr "Oyun ID"
|
msgstr "Oyun ID"
|
||||||
|
|
||||||
@ -1167,6 +1167,9 @@ msgstr ""
|
|||||||
msgid "Gamename [GAMEID]"
|
msgid "Gamename [GAMEID]"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "GameTDB"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Games"
|
msgid "Games"
|
||||||
msgstr "Oyunlar"
|
msgstr "Oyunlar"
|
||||||
|
|
||||||
@ -1848,7 +1851,7 @@ msgstr ""
|
|||||||
msgid "Reset BG Music"
|
msgid "Reset BG Music"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Game Header Cache"
|
msgid "Reset Cached Titles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Reset Playcounter"
|
msgid "Reset Playcounter"
|
||||||
@ -2185,7 +2188,7 @@ msgstr "Başlık Başlatıcı"
|
|||||||
msgid "Titles Path"
|
msgid "Titles Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Titles from GameTDB"
|
msgid "Titles From"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
msgid "To run GameCube games from Disc you need to set the GameCube mode to MIOS in the game settings."
|
||||||
@ -2280,9 +2283,6 @@ msgstr ""
|
|||||||
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
msgid "USBloaderGX r1218 is required for Nintendont Alpha v0.1. Please update your Nintendont boot.dol version."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Use Game Header Cache"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Uninstall"
|
msgid "Uninstall"
|
||||||
msgstr "Kaldır"
|
msgstr "Kaldır"
|
||||||
|
|
||||||
|
@ -58,8 +58,23 @@ typedef struct _dolheader
|
|||||||
|
|
||||||
Channels *Channels::instance = NULL;
|
Channels *Channels::instance = NULL;
|
||||||
|
|
||||||
void Channels::GetEmuChannelList()
|
void Channels::clear()
|
||||||
{
|
{
|
||||||
|
EmuChannels.clear();
|
||||||
|
//! Clear memory of the vector completely
|
||||||
|
std::vector<struct discHdr>().swap(EmuChannels);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Channels::GetEmuChannelList(bool use_cache)
|
||||||
|
{
|
||||||
|
if (use_cache && Settings.CacheTitles && isCacheFile(EMUNAND_HEADER_CACHE_FILE))
|
||||||
|
{
|
||||||
|
if (EmuChannels.empty())
|
||||||
|
LoadGameHeaderCache(EmuChannels);
|
||||||
|
if (!EmuChannels.empty())
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
EmuChannels.clear();
|
EmuChannels.clear();
|
||||||
|
|
||||||
char filepath[1024];
|
char filepath[1024];
|
||||||
@ -73,6 +88,9 @@ void Channels::GetEmuChannelList()
|
|||||||
|
|
||||||
snprintf(filepath, sizeof(filepath), "%s/title/00010002", Settings.NandEmuChanPath);
|
snprintf(filepath, sizeof(filepath), "%s/title/00010002", Settings.NandEmuChanPath);
|
||||||
ParseTitleDir(filepath, language);
|
ParseTitleDir(filepath, language);
|
||||||
|
|
||||||
|
if (Settings.CacheTitles)
|
||||||
|
SaveGameHeaderCache(EmuChannels);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Channels::GetChannelList()
|
void Channels::GetChannelList()
|
||||||
@ -111,16 +129,8 @@ void Channels::InternalGetNandChannelList(u32 type)
|
|||||||
if (tid == 0x000100014c554c5aLL || tid == 0x00010001AF1BF516LL || tid == 0x0001000148415858LL)
|
if (tid == 0x000100014c554c5aLL || tid == 0x00010001AF1BF516LL || tid == 0x0001000148415858LL)
|
||||||
strcpy(id, "JODI");
|
strcpy(id, "JODI");
|
||||||
|
|
||||||
const char *name = GameTitles.GetTitle(id);
|
std::string TitleName(NandTitles.NameOf(tid));
|
||||||
std::string TitleName;
|
TitleName.erase(0, TitleName.find_first_not_of(' '));
|
||||||
|
|
||||||
if (!name || *name == '\0')
|
|
||||||
{
|
|
||||||
name = NandTitles.NameOf(tid);
|
|
||||||
// Set title for caching
|
|
||||||
if (name)
|
|
||||||
GameTitles.SetGameTitle(id, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
int s = NandChannels.size();
|
int s = NandChannels.size();
|
||||||
NandChannels.resize(s + 1);
|
NandChannels.resize(s + 1);
|
||||||
@ -128,7 +138,7 @@ void Channels::InternalGetNandChannelList(u32 type)
|
|||||||
memcpy(NandChannels[s].id, id, 4);
|
memcpy(NandChannels[s].id, id, 4);
|
||||||
NandChannels[s].tid = tid;
|
NandChannels[s].tid = tid;
|
||||||
NandChannels[s].type = TYPE_GAME_NANDCHAN;
|
NandChannels[s].type = TYPE_GAME_NANDCHAN;
|
||||||
strncpy(NandChannels[s].title, name ? name : "", sizeof(NandChannels[s].title) - 1);
|
strncpy(NandChannels[s].title, TitleName.c_str(), sizeof(NandChannels[s].title) - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,19 +152,8 @@ std::vector<struct discHdr> &Channels::GetNandHeaders(void)
|
|||||||
|
|
||||||
std::vector<struct discHdr> &Channels::GetEmuHeaders(void)
|
std::vector<struct discHdr> &Channels::GetEmuHeaders(void)
|
||||||
{
|
{
|
||||||
if (Settings.UseGameHeaderCache && isCacheFile(EMUNAND_HEADER_CACHE_FILE))
|
|
||||||
{
|
|
||||||
if (EmuChannels.empty())
|
if (EmuChannels.empty())
|
||||||
LoadGameHeaderCache(EmuChannels);
|
this->GetEmuChannelList(true);
|
||||||
if (!EmuChannels.empty())
|
|
||||||
return EmuChannels;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (EmuChannels.empty())
|
|
||||||
this->GetEmuChannelList();
|
|
||||||
|
|
||||||
if (Settings.UseGameHeaderCache && !EmuChannels.empty())
|
|
||||||
SaveGameHeaderCache(EmuChannels);
|
|
||||||
|
|
||||||
return EmuChannels;
|
return EmuChannels;
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,8 @@ public:
|
|||||||
static u8 *GetOpeningBnr(const u64 &title, u32 *outsize, const char *pathPrefix);
|
static u8 *GetOpeningBnr(const u64 &title, u32 *outsize, const char *pathPrefix);
|
||||||
|
|
||||||
void GetChannelList();
|
void GetChannelList();
|
||||||
void GetEmuChannelList();
|
void GetEmuChannelList(bool use_cache = false);
|
||||||
|
void clear();
|
||||||
std::vector<struct discHdr> & GetNandHeaders(void);
|
std::vector<struct discHdr> & GetNandHeaders(void);
|
||||||
std::vector<struct discHdr> & GetEmuHeaders(void);
|
std::vector<struct discHdr> & GetEmuHeaders(void);
|
||||||
private:
|
private:
|
||||||
|
@ -37,9 +37,9 @@
|
|||||||
#include "utils/StringTools.h"
|
#include "utils/StringTools.h"
|
||||||
#include "DirList.h"
|
#include "DirList.h"
|
||||||
|
|
||||||
DirList::DirList(const char * path, const char *filter, u32 flags)
|
DirList::DirList(const char * path, const char *filter, u32 flags, s32 max_depth)
|
||||||
{
|
{
|
||||||
this->LoadPath(path, filter, flags);
|
this->LoadPath(path, filter, flags, max_depth);
|
||||||
this->SortList();
|
this->SortList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,16 +48,16 @@ DirList::~DirList()
|
|||||||
ClearList();
|
ClearList();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DirList::LoadPath(const char * folder, const char *filter, u32 flags)
|
bool DirList::LoadPath(const char * folder, const char *filter, u32 flags, s32 max_depth)
|
||||||
{
|
{
|
||||||
if(!folder) return false;
|
if(!folder) return false;
|
||||||
|
|
||||||
std::string folderpath(folder);
|
std::string folderpath(folder);
|
||||||
|
|
||||||
return LoadPath(folderpath, filter, flags);
|
return LoadPath(folderpath, filter, flags, max_depth);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DirList::LoadPath(std::string &folderpath, const char *filter, u32 flags)
|
bool DirList::LoadPath(std::string &folderpath, const char *filter, u32 flags, s32 max_depth)
|
||||||
{
|
{
|
||||||
if(folderpath.size() < 3)
|
if(folderpath.size() < 3)
|
||||||
return false;
|
return false;
|
||||||
@ -103,12 +103,12 @@ bool DirList::LoadPath(std::string &folderpath, const char *filter, u32 flags)
|
|||||||
if(strcmp(filename,".") == 0 || strcmp(filename,"..") == 0)
|
if(strcmp(filename,".") == 0 || strcmp(filename,"..") == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(flags & CheckSubfolders)
|
if((flags & CheckSubfolders) && (max_depth != 0))
|
||||||
{
|
{
|
||||||
int length = folderpath.size();
|
int length = folderpath.size();
|
||||||
if(!isRoot) folderpath += '/';
|
if(!isRoot) folderpath += '/';
|
||||||
folderpath += filename;
|
folderpath += filename;
|
||||||
LoadPath(folderpath, filter, flags);
|
LoadPath(folderpath, filter, flags, max_depth - 1);
|
||||||
folderpath.erase(length);
|
folderpath.erase(length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,12 +47,12 @@ class DirList
|
|||||||
//!\param path Path from where to load the filelist of all files
|
//!\param path Path from where to load the filelist of all files
|
||||||
//!\param filter A fileext that needs to be filtered
|
//!\param filter A fileext that needs to be filtered
|
||||||
//!\param flags search/filter flags from the enum
|
//!\param flags search/filter flags from the enum
|
||||||
DirList(const char * path, const char *filter = NULL, u32 flags = Files | Dirs);
|
DirList(const char * path, const char *filter = NULL, u32 flags = Files | Dirs, s32 max_depth = -1);
|
||||||
//!Destructor
|
//!Destructor
|
||||||
~DirList();
|
~DirList();
|
||||||
//! Load all the files from a directory
|
//! Load all the files from a directory
|
||||||
bool LoadPath(const char * path, const char *filter = NULL, u32 flags = Files | Dirs);
|
bool LoadPath(const char * path, const char *filter = NULL, u32 flags = Files | Dirs, s32 max_depth = -1);
|
||||||
bool LoadPath(std::string &path, const char *filter = NULL, u32 flags = Files | Dirs);
|
bool LoadPath(std::string &path, const char *filter = NULL, u32 flags = Files | Dirs, s32 max_depth = -1);
|
||||||
//! Get a filename of the list
|
//! Get a filename of the list
|
||||||
//!\param list index
|
//!\param list index
|
||||||
const char * GetFilename(int index);
|
const char * GetFilename(int index);
|
||||||
|
@ -40,7 +40,6 @@
|
|||||||
#include "language/gettext.h"
|
#include "language/gettext.h"
|
||||||
#include "DirList.h"
|
#include "DirList.h"
|
||||||
#include "fileops.h"
|
#include "fileops.h"
|
||||||
#include "gecko.h"
|
|
||||||
|
|
||||||
#define BLOCKSIZE 70*1024 //70KB
|
#define BLOCKSIZE 70*1024 //70KB
|
||||||
#define VectorResize(List) if(List.capacity()-List.size() == 0) List.reserve(List.size()+100)
|
#define VectorResize(List) if(List.capacity()-List.size() == 0) List.reserve(List.size()+100)
|
||||||
@ -453,7 +452,6 @@ extern "C" bool RemoveDirectory(const char *path)
|
|||||||
ShowProgress(tr("Deleting directories..."), dir.GetFilename(i), 0, done, fileCount, false, false);
|
ShowProgress(tr("Deleting directories..."), dir.GetFilename(i), 0, done, fileCount, false, false);
|
||||||
rmdir(dir.GetFilepath(i));
|
rmdir(dir.GetFilepath(i));
|
||||||
done++;
|
done++;
|
||||||
gprintf("%s\n", dir.GetFilepath(i));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,6 +58,19 @@ const char *GCGames::GetPath(const char *gameID) const
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GCGames::clear()
|
||||||
|
{
|
||||||
|
PathList.clear();
|
||||||
|
HeaderList.clear();
|
||||||
|
sdGCList.clear();
|
||||||
|
sdGCPathList.clear();
|
||||||
|
//! Clear memory of the vector completely
|
||||||
|
std::vector<std::string>().swap(PathList);
|
||||||
|
std::vector<struct discHdr>().swap(HeaderList);
|
||||||
|
std::vector<struct discHdr>().swap(sdGCList);
|
||||||
|
std::vector<std::string>().swap(sdGCPathList);
|
||||||
|
}
|
||||||
|
|
||||||
void GCGames::LoadGameList(const std::string &path, std::vector<struct discHdr> &headerList, std::vector<std::string> &pathList)
|
void GCGames::LoadGameList(const std::string &path, std::vector<struct discHdr> &headerList, std::vector<std::string> &pathList)
|
||||||
{
|
{
|
||||||
struct discHdr tmpHdr;
|
struct discHdr tmpHdr;
|
||||||
@ -65,7 +78,7 @@ void GCGames::LoadGameList(const std::string &path, std::vector<struct discHdr>
|
|||||||
u8 id[8];
|
u8 id[8];
|
||||||
u8 disc_number = 0;
|
u8 disc_number = 0;
|
||||||
char fpath[1024];
|
char fpath[1024];
|
||||||
char fname_title[64];
|
char fname_title[130];
|
||||||
DIR *dir_iter;
|
DIR *dir_iter;
|
||||||
struct dirent *dirent;
|
struct dirent *dirent;
|
||||||
|
|
||||||
@ -174,19 +187,21 @@ void GCGames::LoadGameList(const std::string &path, std::vector<struct discHdr>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we have titles.txt entry use that
|
std::string title = "";
|
||||||
const char *title = GameTitles.GetTitle(id);
|
if (Settings.TitlesType == TITLETYPE_FORCED_DISC && GameTitles.GetTitleType((const char *)id) == TITLETYPE_FORCED_DISC)
|
||||||
|
title.assign(GameTitles.GetTitle((const char *)id));
|
||||||
|
|
||||||
// if no titles.txt get title from dir or file name
|
if (title.length() == 0 && Settings.TitlesType != TITLETYPE_FORCED_DISC && strlen(fname_title) > 0)
|
||||||
if (strlen(title) == 0 && !Settings.ForceDiscTitles && strlen(fname_title) > 0)
|
title.assign(fname_title);
|
||||||
title = fname_title;
|
|
||||||
|
|
||||||
if (*id != 0 && strlen(title) > 0)
|
title.erase(0, title.find_first_not_of(' '));
|
||||||
|
|
||||||
|
if (*id != 0 && title.length() > 0 && title.length() < 64)
|
||||||
{
|
{
|
||||||
std::string gamePath = std::string(path) + dirname + (extracted ? "/" : strrchr(fpath, '/'));
|
std::string gamePath = std::string(path) + dirname + (extracted ? "/" : strrchr(fpath, '/'));
|
||||||
memset(&tmpHdr, 0, sizeof(tmpHdr));
|
memset(&tmpHdr, 0, sizeof(tmpHdr));
|
||||||
memcpy(tmpHdr.id, id, sizeof(tmpHdr.id));
|
memcpy(tmpHdr.id, id, sizeof(tmpHdr.id));
|
||||||
snprintf(tmpHdr.title, sizeof(tmpHdr.title), "%s", title);
|
snprintf(tmpHdr.title, sizeof(tmpHdr.title), "%s", title.c_str());
|
||||||
tmpHdr.magic = GCGames::MAGIC;
|
tmpHdr.magic = GCGames::MAGIC;
|
||||||
tmpHdr.type = extracted ? TYPE_GAME_GC_EXTRACTED : TYPE_GAME_GC_IMG;
|
tmpHdr.type = extracted ? TYPE_GAME_GC_EXTRACTED : TYPE_GAME_GC_IMG;
|
||||||
tmpHdr.disc_no = disc_number;
|
tmpHdr.disc_no = disc_number;
|
||||||
@ -209,11 +224,14 @@ void GCGames::LoadGameList(const std::string &path, std::vector<struct discHdr>
|
|||||||
std::string gamePath = std::string(path) + dirname + (extracted ? "/" : strrchr(fpath, '/'));
|
std::string gamePath = std::string(path) + dirname + (extracted ? "/" : strrchr(fpath, '/'));
|
||||||
tmpHdr.magic = tmpHdr.gc_magic;
|
tmpHdr.magic = tmpHdr.gc_magic;
|
||||||
tmpHdr.type = extracted ? TYPE_GAME_GC_EXTRACTED : TYPE_GAME_GC_IMG;
|
tmpHdr.type = extracted ? TYPE_GAME_GC_EXTRACTED : TYPE_GAME_GC_IMG;
|
||||||
|
title.assign(tmpHdr.title);
|
||||||
|
title.erase(0, title.find_first_not_of(' '));
|
||||||
|
snprintf(tmpHdr.title, sizeof(tmpHdr.title), "%s", title.c_str());
|
||||||
headerList.push_back(tmpHdr);
|
headerList.push_back(tmpHdr);
|
||||||
pathList.push_back(gamePath);
|
pathList.push_back(gamePath);
|
||||||
|
|
||||||
// Save title for next start
|
// Save title for next start
|
||||||
GameTitles.SetGameTitle(tmpHdr.id, tmpHdr.title);
|
if (Settings.TitlesType == TITLETYPE_FORCED_DISC && GameTitles.GetTitleType((const char *)tmpHdr.id) != TITLETYPE_MANUAL_OVERRIDE)
|
||||||
|
GameTitles.SetGameTitle((const char *)tmpHdr.id, tmpHdr.title, TITLETYPE_FORCED_DISC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -221,14 +239,14 @@ void GCGames::LoadGameList(const std::string &path, std::vector<struct discHdr>
|
|||||||
closedir(dir_iter);
|
closedir(dir_iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 GCGames::LoadAllGames(void)
|
u32 GCGames::LoadAllGames(bool use_cache)
|
||||||
{
|
{
|
||||||
if (Settings.UseGameHeaderCache && isCacheFile(GAMECUBE_HEADER_CACHE_FILE))
|
if (use_cache && Settings.CacheTitles && isCacheFile(GAMECUBE_HEADER_CACHE_FILE))
|
||||||
{
|
{
|
||||||
if (HeaderList.empty() && PathList.empty())
|
if (HeaderList.empty() && PathList.empty())
|
||||||
LoadGameHeaderCache(HeaderList, PathList);
|
LoadGameHeaderCache(HeaderList, PathList);
|
||||||
if (!HeaderList.empty())
|
if (!HeaderList.empty())
|
||||||
return (int)HeaderList.size();
|
return HeaderList.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
PathList.clear();
|
PathList.clear();
|
||||||
@ -282,7 +300,10 @@ u32 GCGames::LoadAllGames(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Settings.UseGameHeaderCache && !HeaderList.empty() && !PathList.empty())
|
if (HeaderList.size() > 0 || sdGCList.size() > 0)
|
||||||
|
GameTitles.SortTitleList();
|
||||||
|
|
||||||
|
if (Settings.CacheTitles)
|
||||||
SaveGameHeaderCache(HeaderList, PathList);
|
SaveGameHeaderCache(HeaderList, PathList);
|
||||||
|
|
||||||
return HeaderList.size();
|
return HeaderList.size();
|
||||||
|
@ -36,9 +36,10 @@ public:
|
|||||||
|
|
||||||
static u8 *GetOpeningBnr(const char *gameID);
|
static u8 *GetOpeningBnr(const char *gameID);
|
||||||
|
|
||||||
u32 LoadAllGames(void);
|
u32 LoadAllGames(bool use_cache = false);
|
||||||
|
|
||||||
void LoadGameList(const std::string &path, std::vector<struct discHdr> &headerList, std::vector<std::string> &pathList);
|
void LoadGameList(const std::string &path, std::vector<struct discHdr> &headerList, std::vector<std::string> &pathList);
|
||||||
|
void clear();
|
||||||
|
|
||||||
bool RemoveGame(const char *gameID);
|
bool RemoveGame(const char *gameID);
|
||||||
bool RemoveSDGame(const char *gameID);
|
bool RemoveSDGame(const char *gameID);
|
||||||
@ -48,7 +49,8 @@ public:
|
|||||||
|
|
||||||
std::vector<struct discHdr> & GetHeaders(void)
|
std::vector<struct discHdr> & GetHeaders(void)
|
||||||
{
|
{
|
||||||
LoadAllGames();
|
if (HeaderList.empty())
|
||||||
|
LoadAllGames(true);
|
||||||
|
|
||||||
return HeaderList;
|
return HeaderList;
|
||||||
}
|
}
|
||||||
|
@ -270,7 +270,6 @@ int StartUpProcess::Execute(bool quickGameBoot)
|
|||||||
gprintf("\tLoading game settings...%s\n", GameSettings.Load(Settings.ConfigPath) ? "done" : "failed");
|
gprintf("\tLoading game settings...%s\n", GameSettings.Load(Settings.ConfigPath) ? "done" : "failed");
|
||||||
gprintf("\tLoading game statistics...%s\n", GameStatistics.Load(Settings.ConfigPath) ? "done" : "failed");
|
gprintf("\tLoading game statistics...%s\n", GameStatistics.Load(Settings.ConfigPath) ? "done" : "failed");
|
||||||
gprintf("\tLoading game categories...%s\n", GameCategories.Load(Settings.ConfigPath) ? "done" : "failed");
|
gprintf("\tLoading game categories...%s\n", GameCategories.Load(Settings.ConfigPath) ? "done" : "failed");
|
||||||
if (Settings.CacheTitles)
|
|
||||||
gprintf("\tLoading cached titles...%s\n", GameTitles.ReadCachedTitles(Settings.titlestxt_path) ? "done" : "failed (using default)");
|
gprintf("\tLoading cached titles...%s\n", GameTitles.ReadCachedTitles(Settings.titlestxt_path) ? "done" : "failed (using default)");
|
||||||
|
|
||||||
// Some settings need to be enabled to boot directly into games
|
// Some settings need to be enabled to boot directly into games
|
||||||
|
265
source/cache/cache.cpp
vendored
265
source/cache/cache.cpp
vendored
@ -1,9 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
Code by Oddx @ GBAtemp.net
|
Code by Oddx @ GBAtemp.net
|
||||||
Loosely based on emuNAND caching by geoGolem.
|
|
||||||
*/
|
*/
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
#include <zlib.h>
|
||||||
|
|
||||||
#include "cache.hpp"
|
#include "cache.hpp"
|
||||||
#include "usbloader/disc.h"
|
#include "usbloader/disc.h"
|
||||||
@ -13,28 +13,106 @@
|
|||||||
#include "Channels/channels.h"
|
#include "Channels/channels.h"
|
||||||
#include "usbloader/GameList.h"
|
#include "usbloader/GameList.h"
|
||||||
#include "GameCube/GCGames.h"
|
#include "GameCube/GCGames.h"
|
||||||
|
#include "FileOperations/DirList.h"
|
||||||
|
#include "wad/nandtitle.h"
|
||||||
|
#include "Controls/DeviceHandler.hpp"
|
||||||
|
#include "gecko.h"
|
||||||
|
|
||||||
void ResetGameHeaderCache()
|
void ResetGameHeaderCache()
|
||||||
{
|
{
|
||||||
RemoveDirectory(Settings.GameHeaderCachePath);
|
RemoveDirectory(Settings.GameHeaderCachePath);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// emuNAND
|
void GetDirectoryList(const char *path, std::string &list)
|
||||||
|
{
|
||||||
|
DirList dir(path, 0, DirList::Files | DirList::Dirs);
|
||||||
|
for (int i = 0; i < dir.GetFilecount(); ++i)
|
||||||
|
list.append(dir.GetFilepath(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GetListWBFS(std::string &list)
|
||||||
|
{
|
||||||
|
char drive[11];
|
||||||
|
int portPart;
|
||||||
|
u16 partitions = DeviceHandler::GetUSBPartitionCount();
|
||||||
|
for (u16 i = 0; i < partitions; ++i)
|
||||||
|
{
|
||||||
|
PartitionHandle *usb = DeviceHandler::Instance()->GetUSBHandleFromPartition(i);
|
||||||
|
if (!usb)
|
||||||
|
continue;
|
||||||
|
portPart = DeviceHandler::PartitionToPortPartition(i);
|
||||||
|
snprintf(drive, sizeof(drive), "%s:/wbfs", usb->MountName(portPart));
|
||||||
|
gprintf("Partition: %d - %s\n", i, drive);
|
||||||
|
GetDirectoryList(drive, list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isCacheCurrent()
|
||||||
|
{
|
||||||
|
if (!Settings.CacheTitles)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
char filepath[256] = {};
|
||||||
|
std::string list;
|
||||||
|
|
||||||
|
// GameCube
|
||||||
|
snprintf(filepath, sizeof(filepath), "%s", Settings.GameCubePath);
|
||||||
|
GetDirectoryList(filepath, list);
|
||||||
|
snprintf(filepath, sizeof(filepath), "%s", Settings.GameCubeSDPath);
|
||||||
|
GetDirectoryList(filepath, list);
|
||||||
|
|
||||||
|
// Wii
|
||||||
|
GetListWBFS(list);
|
||||||
|
|
||||||
|
// EmuNAND
|
||||||
|
snprintf(filepath, sizeof(filepath), "%s/title/00010001", Settings.NandEmuChanPath);
|
||||||
|
GetDirectoryList(filepath, list);
|
||||||
|
snprintf(filepath, sizeof(filepath), "%s/title/00010002", Settings.NandEmuChanPath);
|
||||||
|
GetDirectoryList(filepath, list);
|
||||||
|
snprintf(filepath, sizeof(filepath), "%s/title/00010004", Settings.NandEmuChanPath);
|
||||||
|
GetDirectoryList(filepath, list);
|
||||||
|
|
||||||
|
// NAND
|
||||||
|
u32 types[3] = {0x00010001, 0x00010002, 0x00010004};
|
||||||
|
for (u32 i = 0; i < 3; ++i)
|
||||||
|
{
|
||||||
|
u32 num_titles = NandTitles.SetType(types[i]);
|
||||||
|
for (u32 x = 0; x < num_titles; ++x)
|
||||||
|
{
|
||||||
|
u64 tid = NandTitles.Next();
|
||||||
|
if (!tid)
|
||||||
|
break;
|
||||||
|
snprintf(filepath, sizeof(filepath), "%016llx", tid);
|
||||||
|
list.append(filepath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate a CRC-32 hash
|
||||||
|
u32 crc = crc32(0L, Z_NULL, 0);
|
||||||
|
crc = crc32(crc, (u8 *)list.c_str(), list.length());
|
||||||
|
|
||||||
|
if (Settings.CacheCheckCRC == crc)
|
||||||
|
return true;
|
||||||
|
gprintf("Resetting cache\n");
|
||||||
|
Settings.CacheCheckCRC = crc;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// EmuNAND
|
||||||
void SaveGameHeaderCache(std::vector<struct discHdr> &list)
|
void SaveGameHeaderCache(std::vector<struct discHdr> &list)
|
||||||
{
|
{
|
||||||
std::string path = std::string(Settings.GameHeaderCachePath) + EMUNAND_HEADER_CACHE_FILE;
|
std::string path = std::string(Settings.GameHeaderCachePath) + EMUNAND_HEADER_CACHE_FILE;
|
||||||
|
if (list.empty())
|
||||||
|
RemoveFile(path.c_str());
|
||||||
|
|
||||||
if (!CheckFile(Settings.GameHeaderCachePath))
|
|
||||||
CreateSubfolder(Settings.GameHeaderCachePath);
|
CreateSubfolder(Settings.GameHeaderCachePath);
|
||||||
|
|
||||||
FILE *cache = fopen(path.c_str(), "wb");
|
FILE *cache = fopen(path.c_str(), "wb");
|
||||||
|
|
||||||
if (!cache)
|
if (!cache)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fwrite((void *)&list[0], 1, list.size() * sizeof(struct discHdr), cache);
|
fwrite((void *)&list[0], 1, list.size() * sizeof(struct discHdr), cache);
|
||||||
|
|
||||||
fclose(cache);
|
fclose(cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,7 +121,6 @@ void LoadGameHeaderCache(std::vector<struct discHdr> &list)
|
|||||||
std::string path = std::string(Settings.GameHeaderCachePath) + EMUNAND_HEADER_CACHE_FILE;
|
std::string path = std::string(Settings.GameHeaderCachePath) + EMUNAND_HEADER_CACHE_FILE;
|
||||||
|
|
||||||
FILE *cache = fopen(path.c_str(), "rb");
|
FILE *cache = fopen(path.c_str(), "rb");
|
||||||
|
|
||||||
if (!cache)
|
if (!cache)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -55,7 +132,7 @@ void LoadGameHeaderCache(std::vector<struct discHdr> &list)
|
|||||||
u32 count = (u32)(fileSize / sizeof(struct discHdr));
|
u32 count = (u32)(fileSize / sizeof(struct discHdr));
|
||||||
|
|
||||||
list.reserve(count + list.size());
|
list.reserve(count + list.size());
|
||||||
for (u32 i = 0; i < count; i++)
|
for (u32 i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
fseek(cache, i * sizeof(struct discHdr), SEEK_SET);
|
fseek(cache, i * sizeof(struct discHdr), SEEK_SET);
|
||||||
fread((void *)&tmp, 1, sizeof(struct discHdr), cache);
|
fread((void *)&tmp, 1, sizeof(struct discHdr), cache);
|
||||||
@ -68,6 +145,10 @@ void LoadGameHeaderCache(std::vector<struct discHdr> &list)
|
|||||||
// Wii
|
// Wii
|
||||||
void SaveGameHeaderCache(std::vector<struct discHdr> &list, std::vector<int> &plist)
|
void SaveGameHeaderCache(std::vector<struct discHdr> &list, std::vector<int> &plist)
|
||||||
{
|
{
|
||||||
|
std::string path = std::string(Settings.GameHeaderCachePath) + WII_HEADER_CACHE_FILE;
|
||||||
|
if (list.empty() || plist.empty())
|
||||||
|
RemoveFile(path.c_str());
|
||||||
|
|
||||||
std::vector<struct wiiCache> wiictmp;
|
std::vector<struct wiiCache> wiictmp;
|
||||||
struct wiiCache gtmp;
|
struct wiiCache gtmp;
|
||||||
|
|
||||||
@ -79,18 +160,13 @@ void SaveGameHeaderCache(std::vector<struct discHdr> &list, std::vector<int> &pl
|
|||||||
wiictmp.push_back(gtmp);
|
wiictmp.push_back(gtmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string path = std::string(Settings.GameHeaderCachePath) + WII_HEADER_CACHE_FILE;
|
|
||||||
|
|
||||||
if (!CheckFile(Settings.GameHeaderCachePath))
|
|
||||||
CreateSubfolder(Settings.GameHeaderCachePath);
|
CreateSubfolder(Settings.GameHeaderCachePath);
|
||||||
|
|
||||||
FILE *cache = fopen(path.c_str(), "wb");
|
FILE *cache = fopen(path.c_str(), "wb");
|
||||||
|
|
||||||
if (!cache)
|
if (!cache)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fwrite((void *)&wiictmp[0], 1, wiictmp.size() * sizeof(struct wiiCache), cache);
|
fwrite((void *)&wiictmp[0], 1, wiictmp.size() * sizeof(struct wiiCache), cache);
|
||||||
|
|
||||||
fclose(cache);
|
fclose(cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,7 +175,6 @@ void LoadGameHeaderCache(std::vector<struct discHdr> &list, std::vector<int> &pl
|
|||||||
std::string path = std::string(Settings.GameHeaderCachePath) + WII_HEADER_CACHE_FILE;
|
std::string path = std::string(Settings.GameHeaderCachePath) + WII_HEADER_CACHE_FILE;
|
||||||
|
|
||||||
FILE *cache = fopen(path.c_str(), "rb");
|
FILE *cache = fopen(path.c_str(), "rb");
|
||||||
|
|
||||||
if (!cache)
|
if (!cache)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -112,7 +187,7 @@ void LoadGameHeaderCache(std::vector<struct discHdr> &list, std::vector<int> &pl
|
|||||||
|
|
||||||
list.reserve(count + list.size());
|
list.reserve(count + list.size());
|
||||||
plist.reserve(count + plist.size());
|
plist.reserve(count + plist.size());
|
||||||
for (u32 i = 0; i < count; i++)
|
for (u32 i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
fseek(cache, i * sizeof(struct wiiCache), SEEK_SET);
|
fseek(cache, i * sizeof(struct wiiCache), SEEK_SET);
|
||||||
fread((void *)&wiictmp, 1, sizeof(struct wiiCache), cache);
|
fread((void *)&wiictmp, 1, sizeof(struct wiiCache), cache);
|
||||||
@ -126,6 +201,10 @@ void LoadGameHeaderCache(std::vector<struct discHdr> &list, std::vector<int> &pl
|
|||||||
// GameCube
|
// GameCube
|
||||||
void SaveGameHeaderCache(std::vector<struct discHdr> &list, std::vector<std::string> &plist)
|
void SaveGameHeaderCache(std::vector<struct discHdr> &list, std::vector<std::string> &plist)
|
||||||
{
|
{
|
||||||
|
std::string path = std::string(Settings.GameHeaderCachePath) + GAMECUBE_HEADER_CACHE_FILE;
|
||||||
|
if (list.empty() || plist.empty())
|
||||||
|
RemoveFile(path.c_str());
|
||||||
|
|
||||||
std::vector<struct gcCache> gcctmp;
|
std::vector<struct gcCache> gcctmp;
|
||||||
struct gcCache gtmp;
|
struct gcCache gtmp;
|
||||||
|
|
||||||
@ -139,18 +218,13 @@ void SaveGameHeaderCache(std::vector<struct discHdr> &list, std::vector<std::str
|
|||||||
gcctmp.push_back(gtmp);
|
gcctmp.push_back(gtmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string path = std::string(Settings.GameHeaderCachePath) + GAMECUBE_HEADER_CACHE_FILE;
|
|
||||||
|
|
||||||
if (!CheckFile(Settings.GameHeaderCachePath))
|
|
||||||
CreateSubfolder(Settings.GameHeaderCachePath);
|
CreateSubfolder(Settings.GameHeaderCachePath);
|
||||||
|
|
||||||
FILE *cache = fopen(path.c_str(), "wb");
|
FILE *cache = fopen(path.c_str(), "wb");
|
||||||
|
|
||||||
if (!cache)
|
if (!cache)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fwrite((void *)&gcctmp[0], 1, gcctmp.size() * sizeof(struct gcCache), cache);
|
fwrite((void *)&gcctmp[0], 1, gcctmp.size() * sizeof(struct gcCache), cache);
|
||||||
|
|
||||||
fclose(cache);
|
fclose(cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,7 +233,6 @@ void LoadGameHeaderCache(std::vector<struct discHdr> &list, std::vector<std::str
|
|||||||
std::string path = std::string(Settings.GameHeaderCachePath) + GAMECUBE_HEADER_CACHE_FILE;
|
std::string path = std::string(Settings.GameHeaderCachePath) + GAMECUBE_HEADER_CACHE_FILE;
|
||||||
|
|
||||||
FILE *cache = fopen(path.c_str(), "rb");
|
FILE *cache = fopen(path.c_str(), "rb");
|
||||||
|
|
||||||
if (!cache)
|
if (!cache)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -172,7 +245,7 @@ void LoadGameHeaderCache(std::vector<struct discHdr> &list, std::vector<std::str
|
|||||||
|
|
||||||
list.reserve(count + list.size());
|
list.reserve(count + list.size());
|
||||||
plist.reserve(count + plist.size());
|
plist.reserve(count + plist.size());
|
||||||
for (u32 i = 0; i < count; i++)
|
for (u32 i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
fseek(cache, i * sizeof(struct gcCache), SEEK_SET);
|
fseek(cache, i * sizeof(struct gcCache), SEEK_SET);
|
||||||
fread((void *)&gcctmp, 1, sizeof(struct gcCache), cache);
|
fread((void *)&gcctmp, 1, sizeof(struct gcCache), cache);
|
||||||
@ -181,158 +254,12 @@ void LoadGameHeaderCache(std::vector<struct discHdr> &list, std::vector<std::str
|
|||||||
std::string tmp((char *)gcctmp.path);
|
std::string tmp((char *)gcctmp.path);
|
||||||
plist.push_back(tmp);
|
plist.push_back(tmp);
|
||||||
}
|
}
|
||||||
fclose(cache);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SaveFilteredListCache(std::vector<struct discHdr *> &list, const wchar_t *gameFilter)
|
|
||||||
{
|
|
||||||
std::string path = std::string(Settings.GameHeaderCachePath) + FilteredListCacheFileName(gameFilter);
|
|
||||||
|
|
||||||
if (!CheckFile(Settings.GameHeaderCachePath))
|
|
||||||
CreateSubfolder(Settings.GameHeaderCachePath);
|
|
||||||
|
|
||||||
FILE *cache = fopen(path.c_str(), "wb");
|
|
||||||
|
|
||||||
if (!cache)
|
|
||||||
return;
|
|
||||||
|
|
||||||
std::vector<struct gameHdr> tmplist;
|
|
||||||
struct gameHdr tmp;
|
|
||||||
|
|
||||||
for (u32 i = 0; i < list.size(); ++i)
|
|
||||||
{
|
|
||||||
memcpy(tmp.id, list[i]->id, 6);
|
|
||||||
tmplist.push_back(tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
fwrite((void *)&tmplist[0], 1, tmplist.size() * sizeof(struct gameHdr), cache);
|
|
||||||
fclose(cache);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LoadFilteredListCache(std::vector<struct discHdr *> &list, const wchar_t *gameFilter)
|
|
||||||
{
|
|
||||||
std::string path = std::string(Settings.GameHeaderCachePath) + FilteredListCacheFileName(gameFilter);
|
|
||||||
|
|
||||||
if (!CheckFile(Settings.GameHeaderCachePath))
|
|
||||||
CreateSubfolder(Settings.GameHeaderCachePath);
|
|
||||||
|
|
||||||
FILE *cache = fopen(path.c_str(), "rb");
|
|
||||||
|
|
||||||
if (!cache)
|
|
||||||
return;
|
|
||||||
|
|
||||||
struct gameHdr tmp;
|
|
||||||
|
|
||||||
fseek(cache, 0, SEEK_END);
|
|
||||||
u64 fileSize = ftell(cache);
|
|
||||||
fseek(cache, 0, SEEK_SET);
|
|
||||||
|
|
||||||
u32 count = (u32)(fileSize / sizeof(struct gameHdr));
|
|
||||||
|
|
||||||
list.reserve(count + list.size());
|
|
||||||
for (u32 i = 0; i < count; i++)
|
|
||||||
{
|
|
||||||
bool found = false;
|
|
||||||
fseek(cache, i * sizeof(struct gameHdr), SEEK_SET);
|
|
||||||
fread((void *)&tmp, 1, sizeof(struct gameHdr), cache);
|
|
||||||
|
|
||||||
if (!found)
|
|
||||||
{
|
|
||||||
std::vector<struct discHdr> &tmplist = gameList.GetFullGameList();
|
|
||||||
for (u32 c = 0; c < tmplist.size(); ++c)
|
|
||||||
{
|
|
||||||
struct discHdr *header = &tmplist[c];
|
|
||||||
if (strncasecmp((const char *)tmp.id, (const char *)header->id, 6) == 0)
|
|
||||||
{
|
|
||||||
list.push_back(header);
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!found)
|
|
||||||
{
|
|
||||||
std::vector<struct discHdr> &tmplist = GCGames::Instance()->GetHeaders();
|
|
||||||
for (u32 c = 0; c < tmplist.size(); ++c)
|
|
||||||
{
|
|
||||||
struct discHdr *header = &tmplist[c];
|
|
||||||
if (strncasecmp((const char *)tmp.id, (const char *)header->id, 6) == 0)
|
|
||||||
{
|
|
||||||
list.push_back(header);
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!found)
|
|
||||||
{
|
|
||||||
std::vector<struct discHdr> &tmplist = Channels::Instance()->GetNandHeaders();
|
|
||||||
for (u32 c = 0; c < tmplist.size(); ++c)
|
|
||||||
{
|
|
||||||
struct discHdr *header = &tmplist[c];
|
|
||||||
if (strncasecmp((const char *)tmp.id, (const char *)header->id, 6) == 0)
|
|
||||||
{
|
|
||||||
list.push_back(header);
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!found)
|
|
||||||
{
|
|
||||||
std::vector<struct discHdr> &tmplist = Channels::Instance()->GetEmuHeaders();
|
|
||||||
for (u32 c = 0; c < tmplist.size(); ++c)
|
|
||||||
{
|
|
||||||
struct discHdr *header = &tmplist[c];
|
|
||||||
if (strncasecmp((const char *)tmp.id, (const char *)header->id, 6) == 0)
|
|
||||||
{
|
|
||||||
list.push_back(header);
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(cache);
|
fclose(cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string FilteredListCacheFileName(const wchar_t *gameFilter)
|
|
||||||
{
|
|
||||||
std::string tmp;
|
|
||||||
tmp = "FL";
|
|
||||||
tmp += "_" + std::to_string(Settings.LoaderMode);
|
|
||||||
tmp += "_" + std::to_string(Settings.GameSort);
|
|
||||||
if (gameFilter)
|
|
||||||
{
|
|
||||||
std::wstring ws(gameFilter);
|
|
||||||
std::string gf(ws.begin(), ws.end());
|
|
||||||
if ((gf.length()) > 0)
|
|
||||||
tmp += "_" + gf;
|
|
||||||
}
|
|
||||||
tmp += ".cache";
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string FilteredListCacheFileName()
|
|
||||||
{
|
|
||||||
std::string tmp;
|
|
||||||
tmp = "FL";
|
|
||||||
tmp += "_" + std::to_string(Settings.LoaderMode);
|
|
||||||
tmp += "_" + std::to_string(Settings.GameSort);
|
|
||||||
tmp += ".cache";
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool isCacheFile(std::string filename)
|
bool isCacheFile(std::string filename)
|
||||||
{
|
{
|
||||||
std::string path = std::string(Settings.GameHeaderCachePath) + filename;
|
std::string path = std::string(Settings.GameHeaderCachePath) + filename;
|
||||||
|
return CheckFile(path.c_str());
|
||||||
if (CheckFile(path.c_str()))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
16
source/cache/cache.hpp
vendored
16
source/cache/cache.hpp
vendored
@ -1,6 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Code by Oddx @ GBAtemp.net
|
Code by Oddx @ GBAtemp.net
|
||||||
Loosely based on emuNAND caching by geoGolem.
|
|
||||||
*/
|
*/
|
||||||
#include "usbloader/disc.h"
|
#include "usbloader/disc.h"
|
||||||
#include "settings/CSettings.h"
|
#include "settings/CSettings.h"
|
||||||
@ -30,7 +29,13 @@ struct gcCache
|
|||||||
u8 path[200];
|
u8 path[200];
|
||||||
};
|
};
|
||||||
|
|
||||||
// emuNAND
|
void ResetGameHeaderCache();
|
||||||
|
void GetDirectoryList(const char *path, std::string &list);
|
||||||
|
void GetListWBFS(std::string &list);
|
||||||
|
bool isCacheCurrent();
|
||||||
|
bool isCacheFile(std::string filename);
|
||||||
|
|
||||||
|
// EmuNAND
|
||||||
void SaveGameHeaderCache(std::vector<struct discHdr> &list);
|
void SaveGameHeaderCache(std::vector<struct discHdr> &list);
|
||||||
void LoadGameHeaderCache(std::vector<struct discHdr> &list);
|
void LoadGameHeaderCache(std::vector<struct discHdr> &list);
|
||||||
|
|
||||||
@ -42,11 +47,4 @@ void LoadGameHeaderCache(std::vector<struct discHdr> &list, std::vector<int> &pl
|
|||||||
void SaveGameHeaderCache(std::vector<struct discHdr> &list, std::vector<std::string> &plist);
|
void SaveGameHeaderCache(std::vector<struct discHdr> &list, std::vector<std::string> &plist);
|
||||||
void LoadGameHeaderCache(std::vector<struct discHdr> &list, std::vector<std::string> &plist);
|
void LoadGameHeaderCache(std::vector<struct discHdr> &list, std::vector<std::string> &plist);
|
||||||
|
|
||||||
void ResetGameHeaderCache();
|
|
||||||
|
|
||||||
void SaveFilteredListCache(std::vector<struct discHdr *> &list, const wchar_t *gameFilter);
|
|
||||||
void LoadFilteredListCache(std::vector<struct discHdr *> &list, const wchar_t *gameFilter);
|
|
||||||
|
|
||||||
std::string FilteredListCacheFileName(const wchar_t *gameFilter);
|
|
||||||
std::string FilteredListCacheFileName();
|
|
||||||
bool isCacheFile(std::string filename);
|
bool isCacheFile(std::string filename);
|
||||||
|
@ -44,7 +44,7 @@ extern int connection;
|
|||||||
HomebrewBrowser::HomebrewBrowser()
|
HomebrewBrowser::HomebrewBrowser()
|
||||||
: FlyingButtonsMenu(tr( "Homebrew Launcher" ))
|
: FlyingButtonsMenu(tr( "Homebrew Launcher" ))
|
||||||
{
|
{
|
||||||
HomebrewList = new DirList(Settings.homebrewapps_path, ".dol,.elf", DirList::Files | DirList::Dirs | DirList::CheckSubfolders | DirList::MainDOL);
|
HomebrewList = new DirList(Settings.homebrewapps_path, ".dol,.elf", DirList::Files | DirList::Dirs | DirList::CheckSubfolders | DirList::MainDOL, 1);
|
||||||
|
|
||||||
if (IsNetworkInit())
|
if (IsNetworkInit())
|
||||||
ResumeNetworkWait();
|
ResumeNetworkWait();
|
||||||
|
@ -329,17 +329,6 @@ GameBrowseMenu::GameBrowseMenu()
|
|||||||
gameCoverImg->SetPosition(thInt("26 - cover/download btn pos x"), thInt("58 - cover/download btn pos y"));
|
gameCoverImg->SetPosition(thInt("26 - cover/download btn pos x"), thInt("58 - cover/download btn pos y"));
|
||||||
gameCoverImg->SetWidescreen(Settings.widescreen);
|
gameCoverImg->SetWidescreen(Settings.widescreen);
|
||||||
|
|
||||||
IDBtnTT = new GuiTooltip(tr( "Click to change game ID" ));
|
|
||||||
if (Settings.wsprompt) IDBtnTT->SetWidescreen(Settings.widescreen);
|
|
||||||
IDBtnTT->SetAlpha(thInt("255 - tooltip alpha"));
|
|
||||||
idBtn = new GuiButton(60, 23);
|
|
||||||
idBtn->SetPosition(thInt("68 - gameID btn pos x"), thInt("305 - gameID btn pos y"));
|
|
||||||
idBtn->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
||||||
idBtn->SetSoundOver(btnSoundOver);
|
|
||||||
idBtn->SetTrigger(0, trigA);
|
|
||||||
idBtn->SetToolTip(IDBtnTT, 205, -30);
|
|
||||||
idBtn->SetSelectable(false);
|
|
||||||
|
|
||||||
GXColor clockColor = thColor("r=138 g=138 b=138 a=240 - clock color");
|
GXColor clockColor = thColor("r=138 g=138 b=138 a=240 - clock color");
|
||||||
float clockFontScaleFactor = thFloat("1.0 - Overrided clock scale factor. 1.0=allow user setting") != 1.0f ? thFloat("1.0 - Overrided clock scale factor. 1.0=allow user setting") : Settings.ClockFontScaleFactor;
|
float clockFontScaleFactor = thFloat("1.0 - Overrided clock scale factor. 1.0=allow user setting") != 1.0f ? thFloat("1.0 - Overrided clock scale factor. 1.0=allow user setting") : Settings.ClockFontScaleFactor;
|
||||||
clockTimeBack = new GuiText("88:88", 40 / Settings.FontScaleFactor * clockFontScaleFactor, (GXColor) {clockColor.r, clockColor.g, clockColor.b, (u8)(clockColor.a / 6)});
|
clockTimeBack = new GuiText("88:88", 40 / Settings.FontScaleFactor * clockFontScaleFactor, (GXColor) {clockColor.r, clockColor.g, clockColor.b, (u8)(clockColor.a / 6)});
|
||||||
@ -495,7 +484,6 @@ GameBrowseMenu::~GameBrowseMenu()
|
|||||||
delete loaderModeBtn;
|
delete loaderModeBtn;
|
||||||
delete homebrewBtn;
|
delete homebrewBtn;
|
||||||
delete DownloadBtn;
|
delete DownloadBtn;
|
||||||
delete idBtn;
|
|
||||||
|
|
||||||
delete installBtnTT;
|
delete installBtnTT;
|
||||||
delete settingsBtnTT;
|
delete settingsBtnTT;
|
||||||
@ -515,7 +503,6 @@ GameBrowseMenu::~GameBrowseMenu()
|
|||||||
delete loaderModeBtnTT;
|
delete loaderModeBtnTT;
|
||||||
delete homebrewBtnTT;
|
delete homebrewBtnTT;
|
||||||
delete DownloadBtnTT;
|
delete DownloadBtnTT;
|
||||||
delete IDBtnTT;
|
|
||||||
|
|
||||||
delete gameBrowser;
|
delete gameBrowser;
|
||||||
mainWindow->Remove(searchBar);
|
mainWindow->Remove(searchBar);
|
||||||
@ -863,9 +850,6 @@ void GameBrowseMenu::ReloadBrowser()
|
|||||||
if (Settings.godmode || !(Settings.ParentalBlocks & BLOCK_COVER_DOWNLOADS))
|
if (Settings.godmode || !(Settings.ParentalBlocks & BLOCK_COVER_DOWNLOADS))
|
||||||
Append(DownloadBtn);
|
Append(DownloadBtn);
|
||||||
|
|
||||||
if ((Settings.gameDisplay == LIST_MODE) && (Settings.godmode || !(Settings.ParentalBlocks & BLOCK_GAMEID_CHANGE)))
|
|
||||||
Append(idBtn);
|
|
||||||
|
|
||||||
Append(favoriteBtn);
|
Append(favoriteBtn);
|
||||||
Append(searchBtn);
|
Append(searchBtn);
|
||||||
Append(sortBtn);
|
Append(sortBtn);
|
||||||
@ -961,7 +945,7 @@ int GameBrowseMenu::MainLoop()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
gameList.ReadGameList();
|
gameList.ReadGameList();
|
||||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, false);
|
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||||
if(Settings.ShowFreeSpace)
|
if(Settings.ShowFreeSpace)
|
||||||
{
|
{
|
||||||
ThreadedTask::Instance()->AddCallback(&HDDSizeCallback);
|
ThreadedTask::Instance()->AddCallback(&HDDSizeCallback);
|
||||||
@ -1317,7 +1301,7 @@ int GameBrowseMenu::MainLoop()
|
|||||||
{
|
{
|
||||||
WBFS_ReInit(WBFS_DEVICE_USB);
|
WBFS_ReInit(WBFS_DEVICE_USB);
|
||||||
}
|
}
|
||||||
gameList.ReadGameList();
|
gameList.ReadGameList(true);
|
||||||
|
|
||||||
if(Settings.ShowFreeSpace)
|
if(Settings.ShowFreeSpace)
|
||||||
{
|
{
|
||||||
@ -1327,32 +1311,12 @@ int GameBrowseMenu::MainLoop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
wString oldFilter(gameList.GetCurrentFilter());
|
wString oldFilter(gameList.GetCurrentFilter());
|
||||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, false);
|
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||||
gameList.FilterList(oldFilter.c_str());
|
gameList.FilterList(oldFilter.c_str());
|
||||||
ReloadBrowser();
|
ReloadBrowser();
|
||||||
}
|
}
|
||||||
loaderModeBtn->ResetState();
|
loaderModeBtn->ResetState();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (Settings.gameDisplay == LIST_MODE && idBtn->GetState() == STATE_CLICKED)
|
|
||||||
{
|
|
||||||
gprintf("\tidBtn Clicked\n");
|
|
||||||
struct discHdr * header = gameList[GetSelectedGame()];
|
|
||||||
//enter new game ID
|
|
||||||
char entered[7];
|
|
||||||
snprintf(entered, sizeof(entered), "%s", (char *) header->id);
|
|
||||||
int result = OnScreenKeyboard(entered, sizeof(entered), 0);
|
|
||||||
if (result == 1)
|
|
||||||
{
|
|
||||||
WBFS_ReIDGame(header->id, entered);
|
|
||||||
wString oldFilter(gameList.GetCurrentFilter());
|
|
||||||
gameList.ReadGameList();
|
|
||||||
gameList.FilterList(oldFilter.c_str());
|
|
||||||
ReloadBrowser();
|
|
||||||
}
|
|
||||||
idBtn->ResetState();
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (Settings.gameDisplay == LIST_MODE && GetSelectedGame() != gameSelectedOld)
|
else if (Settings.gameDisplay == LIST_MODE && GetSelectedGame() != gameSelectedOld)
|
||||||
{
|
{
|
||||||
gameSelectedOld = GetSelectedGame();
|
gameSelectedOld = GetSelectedGame();
|
||||||
@ -1389,7 +1353,7 @@ void GameBrowseMenu::CheckDiscSlotUpdate()
|
|||||||
|
|
||||||
delayCounter = 0;
|
delayCounter = 0;
|
||||||
u32 DiscDriveCover = 0;
|
u32 DiscDriveCover = 0;
|
||||||
WDVD_GetCoverStatus(&DiscDriveCover);//for detecting if i disc has been inserted
|
WDVD_GetCoverStatus(&DiscDriveCover);//for detecting if a disc has been inserted
|
||||||
|
|
||||||
if ((DiscDriveCover & 0x02) && (DiscDriveCover != DiscDriveCoverOld))
|
if ((DiscDriveCover & 0x02) && (DiscDriveCover != DiscDriveCoverOld))
|
||||||
{
|
{
|
||||||
|
@ -148,7 +148,6 @@ class GameBrowseMenu : public GuiWindow
|
|||||||
GuiButton * loaderModeBtn;
|
GuiButton * loaderModeBtn;
|
||||||
GuiButton * homebrewBtn;
|
GuiButton * homebrewBtn;
|
||||||
GuiButton * DownloadBtn;
|
GuiButton * DownloadBtn;
|
||||||
GuiButton * idBtn;
|
|
||||||
|
|
||||||
GuiTooltip * installBtnTT;
|
GuiTooltip * installBtnTT;
|
||||||
GuiTooltip * settingsBtnTT;
|
GuiTooltip * settingsBtnTT;
|
||||||
@ -168,7 +167,6 @@ class GameBrowseMenu : public GuiWindow
|
|||||||
GuiTooltip * loaderModeBtnTT;
|
GuiTooltip * loaderModeBtnTT;
|
||||||
GuiTooltip * homebrewBtnTT;
|
GuiTooltip * homebrewBtnTT;
|
||||||
GuiTooltip * DownloadBtnTT;
|
GuiTooltip * DownloadBtnTT;
|
||||||
GuiTooltip * IDBtnTT;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include "utils/tools.h"
|
#include "utils/tools.h"
|
||||||
#include "system/IosLoader.h"
|
#include "system/IosLoader.h"
|
||||||
#include "cache/cache.hpp"
|
#include "cache/cache.hpp"
|
||||||
|
#include "settings/GameTitles.h"
|
||||||
|
|
||||||
#define WII_MAGIC 0x5D1C9EA3
|
#define WII_MAGIC 0x5D1C9EA3
|
||||||
|
|
||||||
@ -148,7 +149,6 @@ int MenuGCInstall()
|
|||||||
if(ret >= 0) {
|
if(ret >= 0) {
|
||||||
//! success
|
//! success
|
||||||
installed_games++;
|
installed_games++;
|
||||||
ResetGameHeaderCache();
|
|
||||||
}
|
}
|
||||||
else if(ret == PROGRESS_CANCELED)
|
else if(ret == PROGRESS_CANCELED)
|
||||||
{
|
{
|
||||||
@ -184,6 +184,7 @@ int MenuGCInstall()
|
|||||||
return result;
|
return result;
|
||||||
|
|
||||||
gameList.FilterList();
|
gameList.FilterList();
|
||||||
|
isCacheCurrent();
|
||||||
bgMusic->Pause();
|
bgMusic->Pause();
|
||||||
GuiSound instsuccess(Resources::GetFile("success.ogg"), Resources::GetFileSize("success.ogg"), Settings.sfxvolume);
|
GuiSound instsuccess(Resources::GetFile("success.ogg"), Resources::GetFileSize("success.ogg"), Settings.sfxvolume);
|
||||||
instsuccess.SetVolume(Settings.sfxvolume);
|
instsuccess.SetVolume(Settings.sfxvolume);
|
||||||
@ -289,9 +290,9 @@ int MenuInstall()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
ShowProgress(tr("Install finished"), headerdisc.title, tr("Reloading game list now, please wait..."), gamesize, gamesize, true, true);
|
ShowProgress(tr("Install finished"), headerdisc.title, tr("Reloading game list now, please wait..."), gamesize, gamesize, true, true);
|
||||||
ResetGameHeaderCache();
|
|
||||||
gameList.ReadGameList(); //get the entries again
|
gameList.ReadGameList(); //get the entries again
|
||||||
gameList.FilterList();
|
gameList.FilterList();
|
||||||
|
isCacheCurrent();
|
||||||
bgMusic->Pause();
|
bgMusic->Pause();
|
||||||
GuiSound instsuccess(Resources::GetFile("success.ogg"), Resources::GetFileSize("success.ogg"), Settings.sfxvolume);
|
GuiSound instsuccess(Resources::GetFile("success.ogg"), Resources::GetFileSize("success.ogg"), Settings.sfxvolume);
|
||||||
instsuccess.SetVolume(Settings.sfxvolume);
|
instsuccess.SetVolume(Settings.sfxvolume);
|
||||||
|
@ -137,9 +137,8 @@ int UpdateGameTDB()
|
|||||||
remove(ZipPath.c_str());
|
remove(ZipPath.c_str());
|
||||||
|
|
||||||
//! Reload all titles and reload cached titles because the file changed now.
|
//! Reload all titles and reload cached titles because the file changed now.
|
||||||
GameTitles.SetDefault();
|
GameTitles.Reset();
|
||||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||||
|
|
||||||
return (result ? filesize : -1);
|
return (result ? filesize : -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "banner/OpeningBNR.hpp"
|
#include "banner/OpeningBNR.hpp"
|
||||||
#include "utils/ShowError.h"
|
#include "utils/ShowError.h"
|
||||||
#include "utils/tools.h"
|
#include "utils/tools.h"
|
||||||
|
#include "cache/cache.hpp"
|
||||||
|
|
||||||
#define NONE 0
|
#define NONE 0
|
||||||
#define LEFT 1
|
#define LEFT 1
|
||||||
@ -601,26 +602,37 @@ int GameWindow::MainLoop()
|
|||||||
{
|
{
|
||||||
// Hide the window
|
// Hide the window
|
||||||
Hide();
|
Hide();
|
||||||
|
|
||||||
// This button can only be clicked when this is not a dvd header
|
// This button can only be clicked when this is not a dvd header
|
||||||
struct discHdr *header = gameList[gameSelected];
|
struct discHdr *header = gameList[gameSelected];
|
||||||
|
// Enter the new game title
|
||||||
//enter new game title
|
char entered[130];
|
||||||
char entered[60];
|
|
||||||
snprintf(entered, sizeof(entered), "%s", GameTitles.GetTitle(header));
|
snprintf(entered, sizeof(entered), "%s", GameTitles.GetTitle(header));
|
||||||
int result = OnScreenKeyboard(entered, 60, 0);
|
int result = OnScreenKeyboard(entered, 129, 0);
|
||||||
if (result == 1)
|
if (result == 1)
|
||||||
{
|
{
|
||||||
WBFS_RenameGame(header->id, entered);
|
if (strlen(entered) > 0)
|
||||||
GameTitles.SetGameTitle(header->id, entered);
|
GameTitles.SetGameTitle(header->id, entered, TITLETYPE_MANUAL_OVERRIDE);
|
||||||
|
else
|
||||||
|
GameTitles.SetGameTitle(header->id, header->title, TITLETYPE_DEFAULT);
|
||||||
|
// Refresh and set the title for the window
|
||||||
wString oldFilter(gameList.GetCurrentFilter());
|
wString oldFilter(gameList.GetCurrentFilter());
|
||||||
gameList.ReadGameList();
|
|
||||||
gameList.FilterList(oldFilter.c_str());
|
gameList.FilterList(oldFilter.c_str());
|
||||||
if(browserMenu) browserMenu->ReloadBrowser();
|
nameTxt->SetText(GameTitles.GetTitle(header));
|
||||||
|
// Remember the games new position
|
||||||
|
for (int i = 0; i < gameList.size(); ++i)
|
||||||
|
{
|
||||||
|
if (strncasecmp((const char *)gameList[i]->id, (const char *)header->id, 6) == 0)
|
||||||
|
{
|
||||||
|
Settings.SelectedGame = 0;
|
||||||
|
Settings.GameListOffset = i;
|
||||||
|
gameSelected = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (browserMenu)
|
||||||
|
browserMenu->ReloadBrowser();
|
||||||
}
|
}
|
||||||
// Show the window again
|
// Show the window again
|
||||||
Show();
|
Show();
|
||||||
|
|
||||||
nameBtn->ResetState();
|
nameBtn->ResetState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,13 +133,14 @@ void CSettings::SetDefault()
|
|||||||
wiilight = WIILIGHT_ON;
|
wiilight = WIILIGHT_ON;
|
||||||
autonetwork = OFF;
|
autonetwork = OFF;
|
||||||
patchcountrystrings = OFF;
|
patchcountrystrings = OFF;
|
||||||
titlesOverride = ON;
|
TitlesType = TITLETYPE_FROMWIITDB;
|
||||||
ForceDiscTitles = OFF;
|
CacheCheck = ON;
|
||||||
|
CacheCheckCRC = 0;
|
||||||
|
CacheTitles = ON;
|
||||||
screensaver = SCREENSAVER_10_MIN;
|
screensaver = SCREENSAVER_10_MIN;
|
||||||
musicloopmode = ON;
|
musicloopmode = ON;
|
||||||
marknewtitles = ON;
|
marknewtitles = ON;
|
||||||
ShowFreeSpace = ON;
|
ShowFreeSpace = ON;
|
||||||
UseGameHeaderCache = OFF;
|
|
||||||
PlaylogUpdate = OFF;
|
PlaylogUpdate = OFF;
|
||||||
ParentalBlocks = BLOCK_ALL;
|
ParentalBlocks = BLOCK_ALL;
|
||||||
InstallToDir = INSTALL_TO_NAME_GAMEID;
|
InstallToDir = INSTALL_TO_NAME_GAMEID;
|
||||||
@ -150,7 +151,6 @@ void CSettings::SetDefault()
|
|||||||
BlockIOSReload = AUTO;
|
BlockIOSReload = AUTO;
|
||||||
USBPort = 0;
|
USBPort = 0;
|
||||||
USBAutoMount = ON;
|
USBAutoMount = ON;
|
||||||
CacheTitles = ON;
|
|
||||||
WSFactor = 0.8f; //actually should be 0.75 for real widescreen
|
WSFactor = 0.8f; //actually should be 0.75 for real widescreen
|
||||||
FontScaleFactor = 0.8f; //it's a work around to not have to change ALL fonts now
|
FontScaleFactor = 0.8f; //it's a work around to not have to change ALL fonts now
|
||||||
ClockFontScaleFactor = 1.0f; // Scale of 1 to prevent misaligned clock.
|
ClockFontScaleFactor = 1.0f; // Scale of 1 to prevent misaligned clock.
|
||||||
@ -372,8 +372,10 @@ bool CSettings::Save()
|
|||||||
fprintf(file, "BcaCodepath = %s\n", BcaCodepath);
|
fprintf(file, "BcaCodepath = %s\n", BcaCodepath);
|
||||||
fprintf(file, "WipCodepath = %s\n", WipCodepath);
|
fprintf(file, "WipCodepath = %s\n", WipCodepath);
|
||||||
fprintf(file, "WDMpath = %s\n", WDMpath);
|
fprintf(file, "WDMpath = %s\n", WDMpath);
|
||||||
fprintf(file, "titlesOverride = %d\n", titlesOverride);
|
fprintf(file, "TitlesType = %d\n", TitlesType);
|
||||||
fprintf(file, "ForceDiscTitles = %d\n", ForceDiscTitles);
|
fprintf(file, "CacheCheck = %d\n", CacheCheck);
|
||||||
|
fprintf(file, "CacheCheckCRC = %08X\n", CacheCheckCRC);
|
||||||
|
fprintf(file, "CacheTitles = %d\n", CacheTitles);
|
||||||
fprintf(file, "patchcountrystrings = %d\n", patchcountrystrings);
|
fprintf(file, "patchcountrystrings = %d\n", patchcountrystrings);
|
||||||
fprintf(file, "screensaver = %d\n", screensaver);
|
fprintf(file, "screensaver = %d\n", screensaver);
|
||||||
fprintf(file, "musicloopmode = %d\n", musicloopmode);
|
fprintf(file, "musicloopmode = %d\n", musicloopmode);
|
||||||
@ -383,7 +385,6 @@ bool CSettings::Save()
|
|||||||
fprintf(file, "partition = %d\n", partition);
|
fprintf(file, "partition = %d\n", partition);
|
||||||
fprintf(file, "marknewtitles = %d\n", marknewtitles);
|
fprintf(file, "marknewtitles = %d\n", marknewtitles);
|
||||||
fprintf(file, "ShowFreeSpace = %d\n", ShowFreeSpace);
|
fprintf(file, "ShowFreeSpace = %d\n", ShowFreeSpace);
|
||||||
fprintf(file, "UseGameHeaderCache = %d\n", UseGameHeaderCache);
|
|
||||||
fprintf(file, "InstallToDir = %d\n", InstallToDir);
|
fprintf(file, "InstallToDir = %d\n", InstallToDir);
|
||||||
fprintf(file, "GameSplit = %d\n", GameSplit);
|
fprintf(file, "GameSplit = %d\n", GameSplit);
|
||||||
fprintf(file, "InstallPartitions = %08X\n", (unsigned int)InstallPartitions);
|
fprintf(file, "InstallPartitions = %08X\n", (unsigned int)InstallPartitions);
|
||||||
@ -394,7 +395,6 @@ bool CSettings::Save()
|
|||||||
fprintf(file, "MultiplePartitions = %d\n", MultiplePartitions);
|
fprintf(file, "MultiplePartitions = %d\n", MultiplePartitions);
|
||||||
fprintf(file, "USBPort = %d\n", USBPort);
|
fprintf(file, "USBPort = %d\n", USBPort);
|
||||||
fprintf(file, "USBAutoMount = %d\n", USBAutoMount);
|
fprintf(file, "USBAutoMount = %d\n", USBAutoMount);
|
||||||
fprintf(file, "CacheTitles = %d\n", CacheTitles);
|
|
||||||
fprintf(file, "BlockIOSReload = %d\n", BlockIOSReload);
|
fprintf(file, "BlockIOSReload = %d\n", BlockIOSReload);
|
||||||
fprintf(file, "WSFactor = %0.3f\n", WSFactor);
|
fprintf(file, "WSFactor = %0.3f\n", WSFactor);
|
||||||
fprintf(file, "FontScaleFactor = %0.3f\n", FontScaleFactor);
|
fprintf(file, "FontScaleFactor = %0.3f\n", FontScaleFactor);
|
||||||
@ -702,14 +702,24 @@ bool CSettings::SetSetting(char *name, char *value)
|
|||||||
screensaver = atoi(value);
|
screensaver = atoi(value);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (strcmp(name, "titlesOverride") == 0)
|
else if (strcmp(name, "TitlesType") == 0)
|
||||||
{
|
{
|
||||||
titlesOverride = atoi(value);
|
TitlesType = atoi(value);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (strcmp(name, "ForceDiscTitles") == 0)
|
else if (strcmp(name, "CacheCheck") == 0)
|
||||||
{
|
{
|
||||||
ForceDiscTitles = atoi(value);
|
CacheCheck = atoi(value);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (strcmp(name, "CacheCheckCRC") == 0)
|
||||||
|
{
|
||||||
|
CacheCheckCRC = strtoul(value, 0, 16);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (strcmp(name, "CacheTitles") == 0)
|
||||||
|
{
|
||||||
|
CacheTitles = atoi(value);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (strcmp(name, "musicloopmode") == 0)
|
else if (strcmp(name, "musicloopmode") == 0)
|
||||||
@ -747,11 +757,6 @@ bool CSettings::SetSetting(char *name, char *value)
|
|||||||
ShowFreeSpace = atoi(value);
|
ShowFreeSpace = atoi(value);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (strcmp(name, "UseGameHeaderCache") == 0)
|
|
||||||
{
|
|
||||||
UseGameHeaderCache = atoi(value);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (strcmp(name, "HomeMenu") == 0)
|
else if (strcmp(name, "HomeMenu") == 0)
|
||||||
{
|
{
|
||||||
HomeMenu = atoi(value);
|
HomeMenu = atoi(value);
|
||||||
@ -777,11 +782,6 @@ bool CSettings::SetSetting(char *name, char *value)
|
|||||||
USBAutoMount = atoi(value);
|
USBAutoMount = atoi(value);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (strcmp(name, "CacheTitles") == 0)
|
|
||||||
{
|
|
||||||
CacheTitles = atoi(value);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (strcmp(name, "patchcountrystrings") == 0)
|
else if (strcmp(name, "patchcountrystrings") == 0)
|
||||||
{
|
{
|
||||||
patchcountrystrings = atoi(value);
|
patchcountrystrings = atoi(value);
|
||||||
|
@ -84,8 +84,8 @@ class CSettings
|
|||||||
char WiinnertagPath[100];
|
char WiinnertagPath[100];
|
||||||
char NandEmuPath[50];
|
char NandEmuPath[50];
|
||||||
char NandEmuChanPath[50];
|
char NandEmuChanPath[50];
|
||||||
char BNRCachePath[50];
|
char BNRCachePath[100];
|
||||||
char GameHeaderCachePath[50];
|
char GameHeaderCachePath[100];
|
||||||
char GameCubePath[100];
|
char GameCubePath[100];
|
||||||
char GameCubeSDPath[100];
|
char GameCubeSDPath[100];
|
||||||
char DEVOLoaderPath[100];
|
char DEVOLoaderPath[100];
|
||||||
@ -135,7 +135,10 @@ class CSettings
|
|||||||
short partition;
|
short partition;
|
||||||
short musicloopmode;
|
short musicloopmode;
|
||||||
short godmode;
|
short godmode;
|
||||||
short titlesOverride; // db_titles
|
short TitlesType;
|
||||||
|
short CacheCheck;
|
||||||
|
u32 CacheCheckCRC;
|
||||||
|
short CacheTitles;
|
||||||
short gridRows;
|
short gridRows;
|
||||||
short autonetwork;
|
short autonetwork;
|
||||||
short discart;
|
short discart;
|
||||||
@ -146,12 +149,10 @@ class CSettings
|
|||||||
short GameSplit;
|
short GameSplit;
|
||||||
short PlaylogUpdate;
|
short PlaylogUpdate;
|
||||||
short ShowFreeSpace;
|
short ShowFreeSpace;
|
||||||
short UseGameHeaderCache;
|
|
||||||
short HomeMenu;
|
short HomeMenu;
|
||||||
short MultiplePartitions;
|
short MultiplePartitions;
|
||||||
short USBPort;
|
short USBPort;
|
||||||
short USBAutoMount;
|
short USBAutoMount;
|
||||||
short CacheTitles;
|
|
||||||
short BlockIOSReload;
|
short BlockIOSReload;
|
||||||
u32 InstallPartitions;
|
u32 InstallPartitions;
|
||||||
u32 ParentalBlocks;
|
u32 ParentalBlocks;
|
||||||
@ -183,7 +184,6 @@ class CSettings
|
|||||||
short UseChanLauncher;
|
short UseChanLauncher;
|
||||||
int AdjustOverscanX;
|
int AdjustOverscanX;
|
||||||
int AdjustOverscanY;
|
int AdjustOverscanY;
|
||||||
short ForceDiscTitles;
|
|
||||||
short TooltipDelay;
|
short TooltipDelay;
|
||||||
short GameWindowMode;
|
short GameWindowMode;
|
||||||
short CacheBNRFiles;
|
short CacheBNRFiles;
|
||||||
|
@ -1,27 +1,43 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
#include "GameTitles.h"
|
#include "GameTitles.h"
|
||||||
#include "CSettings.h"
|
#include "CSettings.h"
|
||||||
#include "usbloader/GameList.h"
|
#include "usbloader/GameList.h"
|
||||||
#include "Channels/channels.h"
|
#include "Channels/channels.h"
|
||||||
#include "xml/GameTDB.hpp"
|
#include "xml/GameTDB.hpp"
|
||||||
#include "svnrev.h"
|
#include "svnrev.h"
|
||||||
#include "gecko.h"
|
#include "FileOperations/fileops.h"
|
||||||
|
|
||||||
#define VALID_CACHE_REVISION 1280
|
#define VALID_CACHE_REVISION 1280
|
||||||
|
|
||||||
CGameTitles GameTitles;
|
CGameTitles GameTitles;
|
||||||
|
|
||||||
void CGameTitles::SetGameTitle(const char * id, const char * title, const std::string region)
|
bool dbExists = false;
|
||||||
|
|
||||||
|
void CGameTitles::SortTitleList()
|
||||||
{
|
{
|
||||||
if(!id || !title)
|
std::sort(TitleList.begin(), TitleList.end(), [](const GameTitle &x, const GameTitle &y)
|
||||||
|
{ return (strncasecmp(x.GameID, y.GameID, 6) < 0); });
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGameTitles::SetGameTitle(const char *id, const char *title, char TitleType, const std::string region, int ParentalRating, int PlayersCount)
|
||||||
|
{
|
||||||
|
if (!id || !title)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for(u32 i = 0; i < TitleList.size(); ++i)
|
for (u32 i = 0; i < TitleList.size(); ++i)
|
||||||
{
|
{
|
||||||
if(strncasecmp(id, TitleList[i].GameID, 6) == 0)
|
if (strncasecmp(TitleList[i].GameID, id, 6) == 0)
|
||||||
{
|
{
|
||||||
TitleList[i].Title = title;
|
TitleList[i].Title = title;
|
||||||
TitleList[i].Region = region;
|
TitleList[i].Region = region;
|
||||||
|
if (ParentalRating != -1)
|
||||||
|
TitleList[i].ParentalRating = ParentalRating;
|
||||||
|
if (PlayersCount != 1)
|
||||||
|
TitleList[i].PlayersCount = PlayersCount;
|
||||||
|
TitleList[i].TitleType = TitleType;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -30,85 +46,107 @@ void CGameTitles::SetGameTitle(const char * id, const char * title, const std::s
|
|||||||
snprintf(newTitle.GameID, sizeof(newTitle.GameID), id);
|
snprintf(newTitle.GameID, sizeof(newTitle.GameID), id);
|
||||||
newTitle.Title = title;
|
newTitle.Title = title;
|
||||||
newTitle.Region = region;
|
newTitle.Region = region;
|
||||||
newTitle.ParentalRating = -1;
|
newTitle.ParentalRating = ParentalRating;
|
||||||
newTitle.PlayersCount = 1;
|
newTitle.PlayersCount = PlayersCount;
|
||||||
newTitle.FromWiiTDB = 0;
|
newTitle.TitleType = TitleType;
|
||||||
|
|
||||||
TitleList.push_back(newTitle);
|
TitleList.push_back(newTitle);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * CGameTitles::GetTitle(const char * id) const
|
const char *CGameTitles::GetTitle(const char *id, bool allow_access) const
|
||||||
{
|
{
|
||||||
if(!id)
|
if (!id)
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
for(u32 i = 0; i < TitleList.size(); ++i)
|
auto game = std::lower_bound(TitleList.begin(), TitleList.end(), id, [](const GameTitle >, const char *gameid)
|
||||||
|
{ return (strncasecmp(gt.GameID, gameid, 6) < 0); });
|
||||||
|
if (game != TitleList.end())
|
||||||
{
|
{
|
||||||
if(strncasecmp(id, TitleList[i].GameID, 6) == 0)
|
if (strncasecmp((const char *)game->GameID, (const char *)id, 6) == 0)
|
||||||
return TitleList[i].Title.c_str();
|
{
|
||||||
|
if ((dbExists && Settings.TitlesType == TITLETYPE_FROMWIITDB) || game->TitleType == TITLETYPE_MANUAL_OVERRIDE || (Settings.TitlesType == TITLETYPE_FORCED_DISC && game->TitleType == TITLETYPE_FORCED_DISC) || allow_access)
|
||||||
|
return game->Title.c_str();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i < gameList.size(); ++i)
|
for (int i = 0; i < gameList.size(); ++i)
|
||||||
{
|
{
|
||||||
if(strncasecmp(id, (char *) gameList[i]->id, 6) == 0)
|
if (strncasecmp((const char *)gameList[i]->id, id, 6) == 0)
|
||||||
return gameList[i]->title;
|
return gameList[i]->title;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * CGameTitles::GetTitle(const struct discHdr *header) const
|
const char *CGameTitles::GetTitle(const struct discHdr *header) const
|
||||||
{
|
{
|
||||||
if(!header)
|
if (!header)
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
for(u32 i = 0; i < TitleList.size(); ++i)
|
auto game = std::lower_bound(TitleList.begin(), TitleList.end(), (const char *)header->id, [](const GameTitle >, const char *gameid)
|
||||||
|
{ return (strncasecmp(gt.GameID, gameid, 6) < 0); });
|
||||||
|
if (game != TitleList.end())
|
||||||
{
|
{
|
||||||
if(strncasecmp((const char *) header->id, TitleList[i].GameID, 6) == 0)
|
if (strncasecmp(game->GameID, (const char *)header->id, 6) == 0)
|
||||||
return TitleList[i].Title.c_str();
|
{
|
||||||
|
if ((dbExists && Settings.TitlesType == TITLETYPE_FROMWIITDB) || game->TitleType == TITLETYPE_MANUAL_OVERRIDE || (Settings.TitlesType == TITLETYPE_FORCED_DISC && game->TitleType == TITLETYPE_FORCED_DISC))
|
||||||
|
return game->Title.c_str();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return header->title;
|
return header->title;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * CGameTitles::GetRegion(const char * id) const
|
char CGameTitles::GetTitleType(const char *id) const
|
||||||
{
|
{
|
||||||
if(!id || !Settings.titlesOverride)
|
if (!id)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
for (u32 i = 0; i < TitleList.size(); ++i)
|
||||||
|
{
|
||||||
|
if (strncasecmp(TitleList[i].GameID, id, 6) == 0)
|
||||||
|
return TitleList[i].TitleType;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *CGameTitles::GetRegion(const char *id) const
|
||||||
|
{
|
||||||
|
if (!id || Settings.TitlesType != TITLETYPE_FROMWIITDB)
|
||||||
return "NULL";
|
return "NULL";
|
||||||
|
|
||||||
for(u32 i = 0; i < TitleList.size(); ++i)
|
for (u32 i = 0; i < TitleList.size(); ++i)
|
||||||
{
|
{
|
||||||
if(strncasecmp(id, TitleList[i].GameID, 6) == 0)
|
if (strncasecmp(TitleList[i].GameID, id, 6) == 0)
|
||||||
return TitleList[i].Region.c_str();
|
return TitleList[i].Region.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
return "NULL";
|
return "NULL";
|
||||||
}
|
}
|
||||||
|
|
||||||
int CGameTitles::GetParentalRating(const char * id) const
|
int CGameTitles::GetParentalRating(const char *id) const
|
||||||
{
|
{
|
||||||
if(!id)
|
if (!id)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
for(u32 i = 0; i < TitleList.size(); ++i)
|
for (u32 i = 0; i < TitleList.size(); ++i)
|
||||||
{
|
{
|
||||||
if(strncasecmp(id, TitleList[i].GameID, 6) == 0)
|
if (strncasecmp(TitleList[i].GameID, id, 6) == 0)
|
||||||
return TitleList[i].ParentalRating;
|
return TitleList[i].ParentalRating;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CGameTitles::GetPlayersCount(const char *id) const
|
||||||
int CGameTitles::GetPlayersCount(const char * id) const
|
|
||||||
{
|
{
|
||||||
if(!id)
|
if (!id)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
for(u32 i = 0; i < TitleList.size(); ++i)
|
for (u32 i = 0; i < TitleList.size(); ++i)
|
||||||
{
|
{
|
||||||
if(strncasecmp(id, TitleList[i].GameID, 6) == 0)
|
if (strncasecmp(TitleList[i].GameID, id, 6) == 0)
|
||||||
return TitleList[i].PlayersCount;
|
return TitleList[i].PlayersCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,33 +160,41 @@ void CGameTitles::SetDefault()
|
|||||||
std::vector<GameTitle>().swap(TitleList);
|
std::vector<GameTitle>().swap(TitleList);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct _CacheTitle
|
void CGameTitles::Reset()
|
||||||
{
|
{
|
||||||
char GameID[7];
|
if (TitleList.empty())
|
||||||
char Title[130]; // long titles e.g. RGOJJ9 & DLSP64
|
return;
|
||||||
char Region[7];
|
|
||||||
char FromWiiTDB;
|
|
||||||
int ParentalRating;
|
|
||||||
int PlayersCount;
|
|
||||||
|
|
||||||
} ATTRIBUTE_PACKED CacheTitle;
|
for (u32 i = 0; i < TitleList.size(); ++i)
|
||||||
|
{
|
||||||
|
if (TitleList[i].TitleType < TITLETYPE_MANUAL_OVERRIDE)
|
||||||
|
TitleList[i].TitleType = TITLETYPE_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
u32 CGameTitles::ReadCachedTitles(const char * path)
|
u32 CGameTitles::ReadCachedTitles(const char *path)
|
||||||
{
|
{
|
||||||
std::string Cachepath = path;
|
std::string dbpath(Settings.titlestxt_path);
|
||||||
if(path[strlen(path)-1] != '/')
|
if (dbpath.back() != '/')
|
||||||
|
dbpath += '/';
|
||||||
|
dbpath += "wiitdb.xml";
|
||||||
|
dbExists = CheckFile(dbpath.c_str());
|
||||||
|
|
||||||
|
std::string Cachepath(path);
|
||||||
|
if (Cachepath.back() != '/')
|
||||||
Cachepath += '/';
|
Cachepath += '/';
|
||||||
Cachepath += "TitlesCache.bin";
|
Cachepath += "TitlesCache.bin";
|
||||||
|
|
||||||
//! Load cached last so that the titles are preloaded before reading list
|
//! Load cached last so that the titles are preloaded before reading list
|
||||||
FILE * f = fopen(Cachepath.c_str(), "rb");
|
FILE *f = fopen(Cachepath.c_str(), "rb");
|
||||||
if(!f) return 0;
|
if (!f)
|
||||||
|
return 0;
|
||||||
|
|
||||||
u32 revision = 0;
|
u32 revision = 0;
|
||||||
|
|
||||||
fread(&revision, 1, 4, f);
|
fread(&revision, 1, 4, f);
|
||||||
|
|
||||||
if(revision < VALID_CACHE_REVISION)
|
if (revision < VALID_CACHE_REVISION)
|
||||||
{
|
{
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return 0;
|
return 0;
|
||||||
@ -160,7 +206,7 @@ u32 CGameTitles::ReadCachedTitles(const char * path)
|
|||||||
fread(LangCode, 1, 10, f);
|
fread(LangCode, 1, 10, f);
|
||||||
|
|
||||||
//! Check if cache has correct language code
|
//! Check if cache has correct language code
|
||||||
if(strcmp(LangCode, Settings.db_language) != 0)
|
if (strcmp(LangCode, Settings.db_language) != 0)
|
||||||
{
|
{
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return 0;
|
return 0;
|
||||||
@ -172,31 +218,31 @@ u32 CGameTitles::ReadCachedTitles(const char * path)
|
|||||||
std::vector<CacheTitle> CachedList(count);
|
std::vector<CacheTitle> CachedList(count);
|
||||||
TitleList.resize(count);
|
TitleList.resize(count);
|
||||||
|
|
||||||
fread(&CachedList[0], 1, count*sizeof(CacheTitle), f);
|
fread(&CachedList[0], 1, count * sizeof(CacheTitle), f);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
for(u32 i = 0; i < count; ++i)
|
for (u32 i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
strcpy(TitleList[i].GameID, CachedList[i].GameID);
|
strcpy(TitleList[i].GameID, CachedList[i].GameID);
|
||||||
TitleList[i].Title = CachedList[i].Title;
|
TitleList[i].Title = CachedList[i].Title;
|
||||||
TitleList[i].Region = CachedList[i].Region;
|
TitleList[i].Region = CachedList[i].Region;
|
||||||
TitleList[i].ParentalRating = CachedList[i].ParentalRating;
|
TitleList[i].ParentalRating = CachedList[i].ParentalRating;
|
||||||
TitleList[i].PlayersCount = CachedList[i].PlayersCount;
|
TitleList[i].PlayersCount = CachedList[i].PlayersCount;
|
||||||
TitleList[i].FromWiiTDB = CachedList[i].FromWiiTDB;
|
TitleList[i].TitleType = CachedList[i].TitleType;
|
||||||
}
|
}
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGameTitles::WriteCachedTitles(const char * path)
|
void CGameTitles::WriteCachedTitles(const char *path)
|
||||||
{
|
{
|
||||||
std::string Cachepath = path;
|
std::string Cachepath(path);
|
||||||
if(path[strlen(path)-1] != '/')
|
if (Cachepath.back() != '/')
|
||||||
Cachepath += '/';
|
Cachepath += '/';
|
||||||
Cachepath += "TitlesCache.bin";
|
Cachepath += "TitlesCache.bin";
|
||||||
|
|
||||||
FILE *f = fopen(Cachepath.c_str(), "wb");
|
FILE *f = fopen(Cachepath.c_str(), "wb");
|
||||||
if(!f)
|
if (!f)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CacheTitle Cache;
|
CacheTitle Cache;
|
||||||
@ -205,8 +251,9 @@ void CGameTitles::WriteCachedTitles(const char * path)
|
|||||||
fwrite(&revision, 1, 4, f);
|
fwrite(&revision, 1, 4, f);
|
||||||
fwrite(Settings.db_language, 1, 10, f);
|
fwrite(Settings.db_language, 1, 10, f);
|
||||||
fwrite(&count, 1, 4, f);
|
fwrite(&count, 1, 4, f);
|
||||||
|
SortTitleList();
|
||||||
|
|
||||||
for(u32 i = 0; i < count; ++i)
|
for (u32 i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
memset(&Cache, 0, sizeof(CacheTitle));
|
memset(&Cache, 0, sizeof(CacheTitle));
|
||||||
snprintf(Cache.GameID, sizeof(Cache.GameID), "%s", TitleList[i].GameID);
|
snprintf(Cache.GameID, sizeof(Cache.GameID), "%s", TitleList[i].GameID);
|
||||||
@ -214,7 +261,7 @@ void CGameTitles::WriteCachedTitles(const char * path)
|
|||||||
snprintf(Cache.Region, sizeof(Cache.Region), "%s", TitleList[i].Region.c_str());
|
snprintf(Cache.Region, sizeof(Cache.Region), "%s", TitleList[i].Region.c_str());
|
||||||
Cache.ParentalRating = TitleList[i].ParentalRating;
|
Cache.ParentalRating = TitleList[i].ParentalRating;
|
||||||
Cache.PlayersCount = TitleList[i].PlayersCount;
|
Cache.PlayersCount = TitleList[i].PlayersCount;
|
||||||
Cache.FromWiiTDB = TitleList[i].FromWiiTDB;
|
Cache.TitleType = TitleList[i].TitleType;
|
||||||
|
|
||||||
fwrite(&Cache, 1, sizeof(CacheTitle), f);
|
fwrite(&Cache, 1, sizeof(CacheTitle), f);
|
||||||
}
|
}
|
||||||
@ -222,99 +269,109 @@ void CGameTitles::WriteCachedTitles(const char * path)
|
|||||||
fclose(f);
|
fclose(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGameTitles::GetMissingTitles(std::vector<std::string> &MissingTitles, bool removeUnused)
|
int CGameTitles::GetMissingTitles(std::vector<std::string> &MissingTitles, std::vector<struct discHdr *> &headerlist)
|
||||||
{
|
{
|
||||||
std::vector<struct discHdr *> &FullList = gameList.GetFilteredList();
|
for (u32 i = 0; i < headerlist.size(); ++i)
|
||||||
std::vector<bool> UsedCachedList(TitleList.size(), false);
|
|
||||||
|
|
||||||
for(u32 i = 0; i < FullList.size(); ++i)
|
|
||||||
{
|
{
|
||||||
bool isCached = false;
|
bool found = false;
|
||||||
|
for (u32 n = 0; n < TitleList.size(); ++n)
|
||||||
for(u32 n = 0; n < TitleList.size(); ++n)
|
|
||||||
{
|
{
|
||||||
if(strncasecmp(TitleList[n].GameID, (const char *) FullList[i]->id, 6) == 0)
|
if (strncasecmp(TitleList[n].GameID, (const char *)headerlist[i]->id, 6) == 0)
|
||||||
{
|
{
|
||||||
UsedCachedList[n] = true;
|
if (TitleList[n].TitleType >= TITLETYPE_FROMWIITDB)
|
||||||
//! If the title is not from WiiTDB, try to reload it
|
found = true;
|
||||||
isCached = TitleList[n].FromWiiTDB;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!found /*&& !headerlist[i]->tid*/)
|
||||||
if(!isCached)
|
MissingTitles.push_back((std::string)(const char *)headerlist[i]->id);
|
||||||
{
|
|
||||||
char gameID[7];
|
|
||||||
snprintf(gameID, sizeof(gameID), (const char *) FullList[i]->id);
|
|
||||||
MissingTitles.push_back(std::string(gameID));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return MissingTitles.size();
|
||||||
|
}
|
||||||
|
|
||||||
if(!removeUnused)
|
void CGameTitles::CleanTitles(std::vector<struct discHdr *> &headerlist)
|
||||||
|
{
|
||||||
|
if (TitleList.empty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for(u32 n = 0; n < TitleList.size(); ++n)
|
for (u32 n = 0; n < TitleList.size(); ++n)
|
||||||
{
|
{
|
||||||
if(!UsedCachedList[n])
|
bool isCached = false;
|
||||||
|
for (u32 i = 0; i < headerlist.size(); ++i)
|
||||||
{
|
{
|
||||||
TitleList.erase(TitleList.begin()+n);
|
if (strncasecmp(TitleList[n].GameID, (const char *)headerlist[i]->id, 6) == 0)
|
||||||
|
{
|
||||||
|
isCached = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isCached)
|
||||||
|
{
|
||||||
|
TitleList.erase(TitleList.begin() + n);
|
||||||
n--;
|
n--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGameTitles::LoadTitlesFromGameTDB(const char * path, bool removeUnused)
|
void CGameTitles::LoadTitlesFromGameTDB(const char *path)
|
||||||
{
|
{
|
||||||
if(!path || !Settings.titlesOverride)
|
if (!path || Settings.TitlesType != TITLETYPE_FROMWIITDB)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
std::string Filepath = path;
|
std::string Filepath(path);
|
||||||
if(path[strlen(path)-1] != '/')
|
if (Filepath.back() != '/')
|
||||||
Filepath += '/';
|
Filepath += '/';
|
||||||
|
|
||||||
Filepath += "wiitdb.xml";
|
Filepath += "wiitdb.xml";
|
||||||
|
|
||||||
//! Read game list
|
std::vector<struct discHdr *> headerlist;
|
||||||
gameList.LoadUnfiltered();
|
if (!gameList.GetGameListHeaders(headerlist, MODE_ALL))
|
||||||
|
|
||||||
//! Removed unused cache titles and get the still missing ones
|
|
||||||
std::vector<std::string> MissingTitles;
|
|
||||||
GetMissingTitles(MissingTitles, removeUnused);
|
|
||||||
|
|
||||||
if(MissingTitles.size() == 0)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
std::string Title;
|
//! Removed unused cache titles and get the still missing ones
|
||||||
|
CleanTitles(headerlist);
|
||||||
|
std::vector<std::string> MissingTitles;
|
||||||
|
if (!GetMissingTitles(MissingTitles, headerlist))
|
||||||
|
return;
|
||||||
|
|
||||||
|
GameTDB XML_DB;
|
||||||
|
if (!XML_DB.OpenFile(Filepath.c_str()))
|
||||||
|
return;
|
||||||
|
dbExists = true;
|
||||||
|
|
||||||
GameTDB XML_DB(Filepath.c_str());
|
|
||||||
XML_DB.SetLanguageCode(Settings.db_language);
|
XML_DB.SetLanguageCode(Settings.db_language);
|
||||||
int Rating;
|
|
||||||
std::string RatValTxt;
|
|
||||||
std::string Region;
|
|
||||||
|
|
||||||
for(u32 i = 0; i < MissingTitles.size(); ++i)
|
for (u32 i = 0; i < MissingTitles.size(); ++i)
|
||||||
{
|
{
|
||||||
if(!XML_DB.GetTitle(MissingTitles[i].c_str(), Title))
|
std::string Title;
|
||||||
|
std::string Region;
|
||||||
|
std::string RatValTxt;
|
||||||
|
int ParentalRating = -1;
|
||||||
|
int PlayersCount = 1;
|
||||||
|
|
||||||
|
if (!XML_DB.GetTitle(MissingTitles[i].c_str(), Title))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(XML_DB.GetRegion(MissingTitles[i].c_str(), Region))
|
// This change allows the game to be sorted correctly
|
||||||
this->SetGameTitle(MissingTitles[i].c_str(), Title.c_str(), Region);
|
if (Title.compare("Ōkami") == 0)
|
||||||
|
Title.assign("Okami");
|
||||||
|
|
||||||
|
int Rating = XML_DB.GetRating(MissingTitles[i].c_str());
|
||||||
|
if (Rating >= 0)
|
||||||
|
{
|
||||||
|
if (XML_DB.GetRatingValue(MissingTitles[i].c_str(), RatValTxt))
|
||||||
|
ParentalRating = GameTDB::ConvertRating(RatValTxt.c_str(), GameTDB::RatingToString(Rating), "PEGI");
|
||||||
|
}
|
||||||
|
|
||||||
|
int pc = XML_DB.GetPlayers(MissingTitles[i].c_str());
|
||||||
|
if (pc > 0)
|
||||||
|
PlayersCount = pc;
|
||||||
|
|
||||||
|
if (XML_DB.GetRegion(MissingTitles[i].c_str(), Region))
|
||||||
|
SetGameTitle(MissingTitles[i].c_str(), Title.c_str(), TITLETYPE_FROMWIITDB, Region, ParentalRating, PlayersCount);
|
||||||
else
|
else
|
||||||
this->SetGameTitle(MissingTitles[i].c_str(), Title.c_str());
|
SetGameTitle(MissingTitles[i].c_str(), Title.c_str(), TITLETYPE_FROMWIITDB, "NULL", ParentalRating, PlayersCount);
|
||||||
//! Title is loaded from WiiTDB, remember that it's good
|
|
||||||
TitleList[TitleList.size()-1].FromWiiTDB = 1;
|
|
||||||
|
|
||||||
Rating = XML_DB.GetRating(MissingTitles[i].c_str());
|
|
||||||
if(Rating < 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if(!XML_DB.GetRatingValue(MissingTitles[i].c_str(), RatValTxt))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
TitleList[TitleList.size()-1].ParentalRating = GameTDB::ConvertRating(RatValTxt.c_str(), GameTDB::RatingToString(Rating), "PEGI");
|
|
||||||
int ret = XML_DB.GetPlayers(MissingTitles[i].c_str());
|
|
||||||
if(ret > 0)
|
|
||||||
TitleList[TitleList.size()-1].PlayersCount = ret;
|
|
||||||
}
|
}
|
||||||
XML_DB.CloseFile();
|
XML_DB.CloseFile();
|
||||||
|
SortTitleList();
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <gctypes.h>
|
#include <gctypes.h>
|
||||||
#include "usbloader/disc.h"
|
#include "usbloader/disc.h"
|
||||||
|
#include "SettingsEnums.h"
|
||||||
|
|
||||||
typedef struct _GameTitle
|
typedef struct _GameTitle
|
||||||
{
|
{
|
||||||
@ -13,25 +14,39 @@ typedef struct _GameTitle
|
|||||||
std::string Region;
|
std::string Region;
|
||||||
int ParentalRating;
|
int ParentalRating;
|
||||||
int PlayersCount;
|
int PlayersCount;
|
||||||
char FromWiiTDB;
|
char TitleType;
|
||||||
|
|
||||||
} GameTitle;
|
} GameTitle;
|
||||||
|
|
||||||
|
typedef struct _CacheTitle
|
||||||
|
{
|
||||||
|
char GameID[7];
|
||||||
|
char Title[130]; // long titles e.g. RGOJJ9 & DLSP64
|
||||||
|
char Region[7];
|
||||||
|
int ParentalRating;
|
||||||
|
int PlayersCount;
|
||||||
|
char TitleType;
|
||||||
|
|
||||||
|
} ATTRIBUTE_PACKED CacheTitle;
|
||||||
|
|
||||||
class CGameTitles
|
class CGameTitles
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
//! Sort the title list
|
||||||
|
void SortTitleList();
|
||||||
//! Set a game title from GameTDB
|
//! Set a game title from GameTDB
|
||||||
void SetGameTitle(const char * id, const char * title, const std::string region = "NULL");
|
void SetGameTitle(const char * id, const char * title, char TitleType = TITLETYPE_DEFAULT, std::string region = "NULL", int ParentalRating = -1, int PlayersCount = 1);
|
||||||
//! Overload
|
//! Overload
|
||||||
void SetGameTitle(const u8 * id, const char * title) { SetGameTitle((const char *) id, title, "NULL"); };
|
void SetGameTitle(const u8 * id, const char * title, char TitleType = TITLETYPE_DEFAULT) { SetGameTitle((const char *) id, title, TitleType); };
|
||||||
|
|
||||||
//! Get a game title
|
//! Get a game title
|
||||||
const char * GetTitle(const char * id) const;
|
const char * GetTitle(const char * id, bool allow_access = false) const;
|
||||||
//! Overload
|
//! Overload
|
||||||
const char * GetTitle(const u8 * id) const { return GetTitle((const char *) id); };
|
const char * GetTitle(const u8 * id, bool allow_access = false) const { return GetTitle((const char *) id, allow_access); };
|
||||||
//! Overload
|
//! Overload
|
||||||
const char * GetTitle(const struct discHdr *header) const;
|
const char * GetTitle(const struct discHdr *header) const;
|
||||||
|
//! Get title type
|
||||||
|
char GetTitleType(const char * id) const;
|
||||||
//! Get game region
|
//! Get game region
|
||||||
const char * GetRegion(const char * id) const;
|
const char * GetRegion(const char * id) const;
|
||||||
//! Get game parental rating
|
//! Get game parental rating
|
||||||
@ -39,16 +54,18 @@ class CGameTitles
|
|||||||
//! Get possible number of players for this game
|
//! Get possible number of players for this game
|
||||||
int GetPlayersCount(const char * id) const;
|
int GetPlayersCount(const char * id) const;
|
||||||
//! Load Game Titles from GameTDB
|
//! Load Game Titles from GameTDB
|
||||||
void LoadTitlesFromGameTDB(const char * path, bool removeUnused = true);
|
void LoadTitlesFromGameTDB(const char * path);
|
||||||
//! Set default game titles
|
//! Set default game titles
|
||||||
void SetDefault();
|
void SetDefault();
|
||||||
|
void Reset();
|
||||||
//! Free memory and remove all titles - Same as SetDefault()
|
//! Free memory and remove all titles - Same as SetDefault()
|
||||||
void Clear() { SetDefault(); }
|
void Clear() { SetDefault(); }
|
||||||
//! Cache titles functions
|
//! Cache titles functions
|
||||||
u32 ReadCachedTitles(const char * path);
|
u32 ReadCachedTitles(const char * path);
|
||||||
void WriteCachedTitles(const char * path);
|
void WriteCachedTitles(const char * path);
|
||||||
protected:
|
protected:
|
||||||
void GetMissingTitles(std::vector<std::string> &MissingTitles, bool removeUnused);
|
int GetMissingTitles(std::vector<std::string> &MissingTitles, std::vector<struct discHdr *> &headerlist);
|
||||||
|
void CleanTitles(std::vector<struct discHdr *> &headerlist);
|
||||||
|
|
||||||
std::vector<GameTitle> TitleList;
|
std::vector<GameTitle> TitleList;
|
||||||
};
|
};
|
||||||
|
@ -385,7 +385,14 @@ enum
|
|||||||
PRIVSERV_ALTWFC,
|
PRIVSERV_ALTWFC,
|
||||||
PRIVSERV_CUSTOM,
|
PRIVSERV_CUSTOM,
|
||||||
PRIVSERV_MAX_CHOICE
|
PRIVSERV_MAX_CHOICE
|
||||||
|
};
|
||||||
|
|
||||||
|
enum TITLETYPE
|
||||||
|
{
|
||||||
|
TITLETYPE_DEFAULT,
|
||||||
|
TITLETYPE_FORCED_DISC,
|
||||||
|
TITLETYPE_FROMWIITDB,
|
||||||
|
TITLETYPE_MANUAL_OVERRIDE = 7
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -37,6 +37,8 @@
|
|||||||
#include "themes/CTheme.h"
|
#include "themes/CTheme.h"
|
||||||
#include "FileOperations/fileops.h"
|
#include "FileOperations/fileops.h"
|
||||||
#include "gecko.h"
|
#include "gecko.h"
|
||||||
|
#include "cache/cache.hpp"
|
||||||
|
#include "usbloader/GameList.h"
|
||||||
|
|
||||||
CustomPathsSM::CustomPathsSM()
|
CustomPathsSM::CustomPathsSM()
|
||||||
: SettingsMenu(tr("Custom Paths"), &GuiOptions, MENU_NONE)
|
: SettingsMenu(tr("Custom Paths"), &GuiOptions, MENU_NONE)
|
||||||
@ -65,7 +67,7 @@ CustomPathsSM::CustomPathsSM()
|
|||||||
Options->SetName(Idx++, tr("Devolution Loader Path"));
|
Options->SetName(Idx++, tr("Devolution Loader Path"));
|
||||||
Options->SetName(Idx++, tr("Nintendont Loader Path"));
|
Options->SetName(Idx++, tr("Nintendont Loader Path"));
|
||||||
Options->SetName(Idx++, tr("Cache BNR Files Path"));
|
Options->SetName(Idx++, tr("Cache BNR Files Path"));
|
||||||
Options->SetName(Idx++, tr("Game Header Cache Files Path"));
|
Options->SetName(Idx++, tr("Cache Path"));
|
||||||
|
|
||||||
SetOptionValues();
|
SetOptionValues();
|
||||||
}
|
}
|
||||||
@ -143,7 +145,7 @@ void CustomPathsSM::SetOptionValues()
|
|||||||
//! Settings: Cache BNR Files Path
|
//! Settings: Cache BNR Files Path
|
||||||
Options->SetValue(Idx++, Settings.BNRCachePath);
|
Options->SetValue(Idx++, Settings.BNRCachePath);
|
||||||
|
|
||||||
//! Settings: Game Header Cache Files Path
|
//! Settings: Cache Path
|
||||||
Options->SetValue(Idx++, Settings.GameHeaderCachePath);
|
Options->SetValue(Idx++, Settings.GameHeaderCachePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -316,7 +318,7 @@ int CustomPathsSM::GetMenuInternal()
|
|||||||
else if(result == 1)
|
else if(result == 1)
|
||||||
{
|
{
|
||||||
Channels::Instance()->GetEmuChannelList();
|
Channels::Instance()->GetEmuChannelList();
|
||||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, false);
|
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,10 +374,10 @@ int CustomPathsSM::GetMenuInternal()
|
|||||||
ChangePath(Settings.BNRCachePath, sizeof(Settings.BNRCachePath));
|
ChangePath(Settings.BNRCachePath, sizeof(Settings.BNRCachePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Settings: Game Header Cache Files Path
|
//! Settings: Cache Path
|
||||||
else if (ret == ++Idx)
|
else if (ret == ++Idx)
|
||||||
{
|
{
|
||||||
titleTxt->SetText(tr( "Game Header Cache Files Path" ));
|
titleTxt->SetText(tr( "Cache Path" ));
|
||||||
ChangePath(Settings.GameHeaderCachePath, sizeof(Settings.GameHeaderCachePath));
|
ChangePath(Settings.GameHeaderCachePath, sizeof(Settings.GameHeaderCachePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#include "FeatureSettingsMenu.hpp"
|
#include "FeatureSettingsMenu.hpp"
|
||||||
#include "Channels/channels.h"
|
#include "Channels/channels.h"
|
||||||
|
#include "GameCube/GCGames.h"
|
||||||
#include "settings/CGameCategories.hpp"
|
#include "settings/CGameCategories.hpp"
|
||||||
#include "settings/CGameSettings.h"
|
#include "settings/CGameSettings.h"
|
||||||
#include "settings/GameTitles.h"
|
#include "settings/GameTitles.h"
|
||||||
@ -62,14 +63,47 @@ static const char * WiilightText[WIILIGHT_MAX] =
|
|||||||
trNOOP( "Only for Install" )
|
trNOOP( "Only for Install" )
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const char * TitleTypeText[] =
|
||||||
|
{
|
||||||
|
trNOOP( "Folder" ),
|
||||||
|
trNOOP( "Disc" ),
|
||||||
|
trNOOP( "GameTDB" )
|
||||||
|
};
|
||||||
|
|
||||||
FeatureSettingsMenu::FeatureSettingsMenu()
|
FeatureSettingsMenu::FeatureSettingsMenu()
|
||||||
: SettingsMenu(tr("Features Settings"), &GuiOptions, MENU_NONE)
|
: SettingsMenu(tr("Features Settings"), &GuiOptions, MENU_NONE)
|
||||||
|
{
|
||||||
|
SetOptionNames();
|
||||||
|
SetOptionValues();
|
||||||
|
OldTitlesType = Settings.TitlesType;
|
||||||
|
OldCacheTitles = Settings.CacheTitles;
|
||||||
|
}
|
||||||
|
|
||||||
|
FeatureSettingsMenu::~FeatureSettingsMenu()
|
||||||
|
{
|
||||||
|
if (Settings.TitlesType != OldTitlesType || Settings.CacheTitles != OldCacheTitles)
|
||||||
|
{
|
||||||
|
//! Remove cached titles and reload new titles
|
||||||
|
GameTitles.Reset();
|
||||||
|
gameList.clear();
|
||||||
|
GCGames::Instance()->clear();
|
||||||
|
Channels::Instance()->clear();
|
||||||
|
|
||||||
|
if ((Settings.CacheTitles && (Settings.TitlesType == TITLETYPE_FORCED_DISC || OldTitlesType == TITLETYPE_FORCED_DISC)) || (!Settings.CacheTitles && OldCacheTitles))
|
||||||
|
ResetGameHeaderCache();
|
||||||
|
|
||||||
|
gameList.LoadUnfiltered();
|
||||||
|
}
|
||||||
|
//! EmuNAND contents might of changed
|
||||||
|
isCacheCurrent();
|
||||||
|
}
|
||||||
|
|
||||||
|
void FeatureSettingsMenu::SetOptionNames()
|
||||||
{
|
{
|
||||||
int Idx = 0;
|
int Idx = 0;
|
||||||
Options->SetName(Idx++, "%s", tr( "Titles from GameTDB" ));
|
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Titles From" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "Cache Titles" ));
|
Options->SetName(Idx++, "%s", tr( "Cache Titles" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "Use Game Header Cache" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Force Titles from Disc" ));
|
|
||||||
Options->SetName(Idx++, "%s", tr( "Wiilight" ));
|
Options->SetName(Idx++, "%s", tr( "Wiilight" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "Rumble" ));
|
Options->SetName(Idx++, "%s", tr( "Rumble" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "AutoInit Network" ));
|
Options->SetName(Idx++, "%s", tr( "AutoInit Network" ));
|
||||||
@ -86,54 +120,20 @@ FeatureSettingsMenu::FeatureSettingsMenu()
|
|||||||
Options->SetName(Idx++, "%s", tr( "WiiU Widescreen" ));
|
Options->SetName(Idx++, "%s", tr( "WiiU Widescreen" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "Boot Neek System Menu" ));
|
Options->SetName(Idx++, "%s", tr( "Boot Neek System Menu" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "Reset All Game Settings" ));
|
Options->SetName(Idx++, "%s", tr( "Reset All Game Settings" ));
|
||||||
Options->SetName(Idx++, "%s", tr( "Reset Game Header Cache" ));
|
if (Settings.CacheTitles)
|
||||||
|
Options->SetName(Idx++, "%s", tr( "Reset Cached Titles" ));
|
||||||
OldTitlesOverride = Settings.titlesOverride;
|
|
||||||
OldCacheTitles = Settings.CacheTitles;
|
|
||||||
OldForceDiscTitles = Settings.ForceDiscTitles;
|
|
||||||
|
|
||||||
SetOptionValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
FeatureSettingsMenu::~FeatureSettingsMenu()
|
|
||||||
{
|
|
||||||
if ( Settings.titlesOverride != OldTitlesOverride
|
|
||||||
|| Settings.CacheTitles != OldCacheTitles
|
|
||||||
|| Settings.ForceDiscTitles != OldForceDiscTitles)
|
|
||||||
{
|
|
||||||
if(Settings.ForceDiscTitles)
|
|
||||||
Settings.titlesOverride = OFF;
|
|
||||||
|
|
||||||
//! Remove cached titles and reload new titles
|
|
||||||
GameTitles.SetDefault();
|
|
||||||
if(Settings.titlesOverride) {
|
|
||||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//! Don't override titles, in other words read them from disc header or directory names
|
|
||||||
gameList.ReadGameList();
|
|
||||||
gameList.LoadUnfiltered();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeatureSettingsMenu::SetOptionValues()
|
void FeatureSettingsMenu::SetOptionValues()
|
||||||
{
|
{
|
||||||
int Idx = 0;
|
int Idx = 0;
|
||||||
|
|
||||||
//! Settings: Titles from GameTDB
|
//! Settings: Titles From
|
||||||
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.titlesOverride] ));
|
Options->SetValue(Idx++, "%s", tr( TitleTypeText[Settings.TitlesType] ));
|
||||||
|
|
||||||
//! Settings: Cache Titles
|
//! Settings: Cache Titles
|
||||||
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.CacheTitles] ));
|
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.CacheTitles] ));
|
||||||
|
|
||||||
//! Settings: Use Game Header Cache
|
|
||||||
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.UseGameHeaderCache] ));
|
|
||||||
|
|
||||||
//! Settings: Force Titles from Disc
|
|
||||||
Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.ForceDiscTitles] ));
|
|
||||||
|
|
||||||
//! Settings: Wiilight
|
//! Settings: Wiilight
|
||||||
Options->SetValue(Idx++, "%s", tr( WiilightText[Settings.wiilight] ));
|
Options->SetValue(Idx++, "%s", tr( WiilightText[Settings.wiilight] ));
|
||||||
|
|
||||||
@ -191,28 +191,19 @@ int FeatureSettingsMenu::GetMenuInternal()
|
|||||||
int Idx = -1;
|
int Idx = -1;
|
||||||
|
|
||||||
|
|
||||||
//! Settings: Titles from GameTDB
|
//! Settings: Titles From
|
||||||
if (ret == ++Idx)
|
if (ret == ++Idx)
|
||||||
{
|
{
|
||||||
if (++Settings.titlesOverride >= MAX_ON_OFF) Settings.titlesOverride = 0;
|
if (++Settings.TitlesType >= 3) Settings.TitlesType = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Settings: Cache Titles
|
//! Settings: Cache Titles
|
||||||
else if (ret == ++Idx)
|
else if (ret == ++Idx)
|
||||||
{
|
{
|
||||||
if (++Settings.CacheTitles >= MAX_ON_OFF) Settings.CacheTitles = 0;
|
if (++Settings.CacheTitles >= MAX_ON_OFF) Settings.CacheTitles = 0;
|
||||||
}
|
Options->ClearList();
|
||||||
|
SetOptionNames();
|
||||||
//! Settings: Use Game Header Cache
|
SetOptionValues();
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++Settings.UseGameHeaderCache >= MAX_ON_OFF) Settings.UseGameHeaderCache = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Settings: Force Titles from Disc
|
|
||||||
else if (ret == ++Idx)
|
|
||||||
{
|
|
||||||
if (++Settings.ForceDiscTitles >= MAX_ON_OFF) Settings.ForceDiscTitles = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Settings: Wiilight
|
//! Settings: Wiilight
|
||||||
@ -332,8 +323,7 @@ int FeatureSettingsMenu::GetMenuInternal()
|
|||||||
|
|
||||||
for(int i = 0; i < gameList.size(); ++i)
|
for(int i = 0; i < gameList.size(); ++i)
|
||||||
{
|
{
|
||||||
if( gameList[i]->type != TYPE_GAME_WII_IMG
|
if(gameList[i]->type != TYPE_GAME_WII_IMG && gameList[i]->type != TYPE_GAME_NANDCHAN)
|
||||||
&& gameList[i]->type != TYPE_GAME_NANDCHAN)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(gameList[i]->tid != 0) //! Channels
|
if(gameList[i]->tid != 0) //! Channels
|
||||||
@ -548,7 +538,6 @@ int FeatureSettingsMenu::GetMenuInternal()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Refresh new EmuNAND content
|
// Refresh new EmuNAND content
|
||||||
ResetGameHeaderCache();
|
|
||||||
Channels::Instance()->GetEmuChannelList();
|
Channels::Instance()->GetEmuChannelList();
|
||||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||||
}
|
}
|
||||||
@ -639,7 +628,6 @@ int FeatureSettingsMenu::GetMenuInternal()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Refresh new EmuNAND content
|
// Refresh new EmuNAND content
|
||||||
ResetGameHeaderCache();
|
|
||||||
Channels::Instance()->GetEmuChannelList();
|
Channels::Instance()->GetEmuChannelList();
|
||||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||||
}
|
}
|
||||||
@ -749,14 +737,17 @@ int FeatureSettingsMenu::GetMenuInternal()
|
|||||||
GameSettings.RemoveAll();
|
GameSettings.RemoveAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Reset Game Header Cache
|
//! Reset Cached Titles
|
||||||
else if(ret == ++Idx)
|
else if(Settings.CacheTitles && ret == ++Idx)
|
||||||
{
|
{
|
||||||
int choice = WindowPrompt(tr( "Are you sure you want to reset?" ), 0, tr( "Yes" ), tr( "Cancel" ));
|
int choice = WindowPrompt(tr( "Are you sure you want to reset?" ), 0, tr( "Yes" ), tr( "Cancel" ));
|
||||||
if (choice == 1)
|
if (choice == 1)
|
||||||
{
|
{
|
||||||
|
gameList.clear();
|
||||||
|
GCGames::Instance()->clear();
|
||||||
|
Channels::Instance()->clear();
|
||||||
ResetGameHeaderCache();
|
ResetGameHeaderCache();
|
||||||
gameList.ReadGameList();
|
gameList.LoadUnfiltered();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetOptionValues();
|
SetOptionValues();
|
||||||
|
@ -32,12 +32,12 @@ class FeatureSettingsMenu : public SettingsMenu
|
|||||||
FeatureSettingsMenu();
|
FeatureSettingsMenu();
|
||||||
virtual ~FeatureSettingsMenu();
|
virtual ~FeatureSettingsMenu();
|
||||||
protected:
|
protected:
|
||||||
|
void SetOptionNames();
|
||||||
void SetOptionValues();
|
void SetOptionValues();
|
||||||
int GetMenuInternal();
|
int GetMenuInternal();
|
||||||
|
|
||||||
int OldTitlesOverride;
|
int OldTitlesType;
|
||||||
int OldCacheTitles;
|
int OldCacheTitles;
|
||||||
int OldForceDiscTitles;
|
|
||||||
|
|
||||||
OptionList GuiOptions;
|
OptionList GuiOptions;
|
||||||
};
|
};
|
||||||
|
@ -280,7 +280,7 @@ int GuiSettingsMenu::GetMenuInternal()
|
|||||||
if (returnhere == 2)
|
if (returnhere == 2)
|
||||||
{
|
{
|
||||||
//! Language changed. Reload game titles with new lang code.
|
//! Language changed. Reload game titles with new lang code.
|
||||||
GameTitles.SetDefault();
|
GameTitles.Reset();
|
||||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||||
return MENU_SETTINGS;
|
return MENU_SETTINGS;
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,6 @@ HardDriveSM::~HardDriveSM()
|
|||||||
//! Reload the new game titles
|
//! Reload the new game titles
|
||||||
gameList.ReadGameList();
|
gameList.ReadGameList();
|
||||||
gameList.LoadUnfiltered();
|
gameList.LoadUnfiltered();
|
||||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, false);
|
|
||||||
|
|
||||||
if(oldSettingsUSBAutoMount != Settings.USBAutoMount || NewSettingsUSBPort == -1)
|
if(oldSettingsUSBAutoMount != Settings.USBAutoMount || NewSettingsUSBPort == -1)
|
||||||
{
|
{
|
||||||
|
@ -226,7 +226,6 @@ LoaderSettings::~LoaderSettings()
|
|||||||
}
|
}
|
||||||
|
|
||||||
gameList.LoadUnfiltered();
|
gameList.LoadUnfiltered();
|
||||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(oldGameCubeSource != Settings.GameCubeSource)
|
if(oldGameCubeSource != Settings.GameCubeSource)
|
||||||
@ -1067,4 +1066,3 @@ int LoaderSettings::GetMenuInternal()
|
|||||||
|
|
||||||
return MENU_NONE;
|
return MENU_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,17 +129,17 @@ int UninstallSM::GetMenuInternal()
|
|||||||
if(ret >= 0)
|
if(ret >= 0)
|
||||||
{
|
{
|
||||||
wString oldFilter(gameList.GetCurrentFilter());
|
wString oldFilter(gameList.GetCurrentFilter());
|
||||||
ResetGameHeaderCache();
|
|
||||||
gameList.ReadGameList();
|
gameList.ReadGameList();
|
||||||
gameList.FilterList(oldFilter.c_str());
|
gameList.FilterList(oldFilter.c_str());
|
||||||
|
isCacheCurrent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(DiscHeader->type == TYPE_GAME_GC_IMG)
|
else if(DiscHeader->type == TYPE_GAME_GC_IMG)
|
||||||
{
|
{
|
||||||
GCGames::Instance()->RemoveGame(GameID);
|
GCGames::Instance()->RemoveGame(GameID);
|
||||||
ResetGameHeaderCache();
|
|
||||||
// Reload list
|
// Reload list
|
||||||
GCGames::Instance()->LoadAllGames();
|
GCGames::Instance()->LoadAllGames();
|
||||||
|
isCacheCurrent();
|
||||||
}
|
}
|
||||||
else if(DiscHeader->type == TYPE_GAME_EMUNANDCHAN && DiscHeader->tid != 0)
|
else if(DiscHeader->type == TYPE_GAME_EMUNANDCHAN && DiscHeader->tid != 0)
|
||||||
{
|
{
|
||||||
@ -151,8 +151,8 @@ int UninstallSM::GetMenuInternal()
|
|||||||
snprintf(filepath, sizeof(filepath), "%s/title/%08x/%08x/", Settings.NandEmuChanPath, (unsigned int) (DiscHeader->tid >> 32), (unsigned int) DiscHeader->tid);
|
snprintf(filepath, sizeof(filepath), "%s/title/%08x/%08x/", Settings.NandEmuChanPath, (unsigned int) (DiscHeader->tid >> 32), (unsigned int) DiscHeader->tid);
|
||||||
RemoveDirectory(filepath);
|
RemoveDirectory(filepath);
|
||||||
|
|
||||||
ResetGameHeaderCache();
|
|
||||||
Channels::Instance()->GetEmuChannelList();
|
Channels::Instance()->GetEmuChannelList();
|
||||||
|
isCacheCurrent();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(choice == 2)
|
if(choice == 2)
|
||||||
|
@ -91,7 +91,6 @@ void AppCleanUp(void)
|
|||||||
|
|
||||||
BannerAsync::ThreadExit();
|
BannerAsync::ThreadExit();
|
||||||
|
|
||||||
if(Settings.CacheTitles)
|
|
||||||
GameTitles.WriteCachedTitles(Settings.titlestxt_path);
|
GameTitles.WriteCachedTitles(Settings.titlestxt_path);
|
||||||
Settings.Save();
|
Settings.Save();
|
||||||
|
|
||||||
|
@ -55,8 +55,10 @@ void GameList::clear()
|
|||||||
FullGameList.clear();
|
FullGameList.clear();
|
||||||
GamePartitionList.clear();
|
GamePartitionList.clear();
|
||||||
FilteredList.clear();
|
FilteredList.clear();
|
||||||
|
EnabledGameList.clear();
|
||||||
//! Clear memory of the vector completely
|
//! Clear memory of the vector completely
|
||||||
std::vector<struct discHdr *>().swap(FilteredList);
|
std::vector<struct discHdr *>().swap(FilteredList);
|
||||||
|
std::vector<struct discHdr *>().swap(EnabledGameList);
|
||||||
std::vector<struct discHdr>().swap(FullGameList);
|
std::vector<struct discHdr>().swap(FullGameList);
|
||||||
std::vector<int>().swap(GamePartitionList);
|
std::vector<int>().swap(GamePartitionList);
|
||||||
}
|
}
|
||||||
@ -118,6 +120,9 @@ int GameList::InternalReadList(int part)
|
|||||||
if (cnt == 0)
|
if (cnt == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
// Sort the titles by game ID for faster searching
|
||||||
|
GameTitles.SortTitleList();
|
||||||
|
|
||||||
/* Buffer length */
|
/* Buffer length */
|
||||||
u32 len = sizeof(struct discHdr) * cnt;
|
u32 len = sizeof(struct discHdr) * cnt;
|
||||||
|
|
||||||
@ -165,14 +170,14 @@ int GameList::InternalReadList(int part)
|
|||||||
return PartGameList.size();
|
return PartGameList.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
int GameList::ReadGameList()
|
int GameList::ReadGameList(bool use_cache)
|
||||||
{
|
{
|
||||||
if (Settings.UseGameHeaderCache && isCacheFile(WII_HEADER_CACHE_FILE))
|
if (use_cache && Settings.CacheTitles && isCacheFile(WII_HEADER_CACHE_FILE))
|
||||||
{
|
{
|
||||||
if (FullGameList.empty() && GamePartitionList.empty())
|
if (FullGameList.empty() && GamePartitionList.empty())
|
||||||
LoadGameHeaderCache(FullGameList, GamePartitionList);
|
LoadGameHeaderCache(FullGameList, GamePartitionList);
|
||||||
if (!FullGameList.empty())
|
if (!FullGameList.empty())
|
||||||
return (int)FullGameList.size();
|
return FullGameList.size();
|
||||||
}
|
}
|
||||||
// Clear list
|
// Clear list
|
||||||
FullGameList.clear();
|
FullGameList.clear();
|
||||||
@ -199,17 +204,16 @@ int GameList::ReadGameList()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Settings.UseGameHeaderCache && !FullGameList.empty() && !GamePartitionList.empty())
|
if (Settings.CacheTitles)
|
||||||
SaveGameHeaderCache(FullGameList, GamePartitionList);
|
SaveGameHeaderCache(FullGameList, GamePartitionList);
|
||||||
|
|
||||||
return cnt;
|
return cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameList::InternalFilterList(std::vector<struct discHdr> &FullList)
|
void GameList::InternalFilterList(std::vector<struct discHdr *> &FullList)
|
||||||
{
|
{
|
||||||
for (u32 i = 0; i < FullList.size(); ++i)
|
for (u32 i = 0; i < FullList.size(); ++i)
|
||||||
{
|
{
|
||||||
struct discHdr *header = &FullList[i];
|
struct discHdr *header = FullList[i];
|
||||||
|
|
||||||
/* Register game */
|
/* Register game */
|
||||||
NewTitles::Instance()->CheckGame(header->id);
|
NewTitles::Instance()->CheckGame(header->id);
|
||||||
@ -231,7 +235,7 @@ void GameList::InternalFilterList(std::vector<struct discHdr> &FullList)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//ignore uLoader cfg "iso". i was told it is "__CFG_" but not confirmed
|
// Ignore uLoader cfg "iso". i was told it is "__CFG_" but not confirmed
|
||||||
if (strncasecmp((char *)header->id, "__CFG_", 6) == 0)
|
if (strncasecmp((char *)header->id, "__CFG_", 6) == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -326,65 +330,27 @@ void GameList::InternalFilterList(std::vector<struct discHdr> &FullList)
|
|||||||
|
|
||||||
int GameList::FilterList(const wchar_t *gameFilter)
|
int GameList::FilterList(const wchar_t *gameFilter)
|
||||||
{
|
{
|
||||||
if ((Settings.LoaderMode & MODE_WIIGAMES) && (FullGameList.size() == 0))
|
|
||||||
ReadGameList();
|
|
||||||
|
|
||||||
if (gameFilter)
|
if (gameFilter)
|
||||||
GameFilter.assign(gameFilter);
|
GameFilter.assign(gameFilter);
|
||||||
|
|
||||||
FilteredList.clear();
|
FilteredList.clear();
|
||||||
|
|
||||||
int allType = DISABLED;
|
EnabledList();
|
||||||
// Verify the display mode for category "All"
|
InternalFilterList(EnabledGameList);
|
||||||
for (u32 n = 0; n < Settings.EnabledCategories.size(); ++n)
|
|
||||||
{
|
|
||||||
if (Settings.EnabledCategories[n] == 0)
|
|
||||||
{
|
|
||||||
allType = ENABLED;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Settings.UseGameHeaderCache && allType == ENABLED && Settings.godmode && isCacheFile(FilteredListCacheFileName(gameFilter)))
|
|
||||||
{
|
|
||||||
LoadFilteredListCache(FilteredList, GameFilter.c_str());
|
|
||||||
GuiSearchBar::FilterList(FilteredList, GameFilter);
|
|
||||||
if (!FilteredList.empty())
|
|
||||||
return FilteredList.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Filter current game list if selected
|
|
||||||
if (Settings.LoaderMode & MODE_WIIGAMES)
|
|
||||||
InternalFilterList(FullGameList);
|
|
||||||
|
|
||||||
// Filter gc game list if selected
|
|
||||||
if (Settings.LoaderMode & MODE_GCGAMES)
|
|
||||||
InternalFilterList(GCGames::Instance()->GetHeaders());
|
|
||||||
|
|
||||||
// Filter nand channel list if selected
|
|
||||||
if (Settings.LoaderMode & MODE_NANDCHANNELS)
|
|
||||||
InternalFilterList(Channels::Instance()->GetNandHeaders());
|
|
||||||
|
|
||||||
// Filter emu nand channel list if selected
|
|
||||||
if (Settings.LoaderMode & MODE_EMUCHANNELS)
|
|
||||||
InternalFilterList(Channels::Instance()->GetEmuHeaders());
|
|
||||||
|
|
||||||
NewTitles::Instance()->Save();
|
NewTitles::Instance()->Save();
|
||||||
GuiSearchBar::FilterList(FilteredList, GameFilter);
|
GuiSearchBar::FilterList(FilteredList, GameFilter);
|
||||||
|
|
||||||
SortList();
|
SortList();
|
||||||
|
|
||||||
if (Settings.UseGameHeaderCache && allType == ENABLED && Settings.godmode && !FilteredList.empty() && (Settings.GameSort & SORT_RANKING) == 0 && (Settings.GameSort & SORT_PLAYCOUNT) == 0 && (Settings.GameSort & SORT_FAVORITE) == 0)
|
|
||||||
SaveFilteredListCache(FilteredList, GameFilter.c_str());
|
|
||||||
|
|
||||||
return FilteredList.size();
|
return FilteredList.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameList::InternalLoadUnfiltered(std::vector<struct discHdr> &FullList)
|
void GameList::InternalLoadUnfiltered(std::vector<struct discHdr *> &FullList)
|
||||||
{
|
{
|
||||||
for (u32 i = 0; i < FullList.size(); ++i)
|
for (u32 i = 0; i < FullList.size(); ++i)
|
||||||
{
|
{
|
||||||
struct discHdr *header = &FullList[i];
|
struct discHdr *header = FullList[i];
|
||||||
|
|
||||||
/* Register game */
|
/* Register game */
|
||||||
NewTitles::Instance()->CheckGame(header->id);
|
NewTitles::Instance()->CheckGame(header->id);
|
||||||
@ -395,47 +361,66 @@ void GameList::InternalLoadUnfiltered(std::vector<struct discHdr> &FullList)
|
|||||||
|
|
||||||
int GameList::LoadUnfiltered()
|
int GameList::LoadUnfiltered()
|
||||||
{
|
{
|
||||||
if ((Settings.LoaderMode & MODE_WIIGAMES) && (FullGameList.size() == 0))
|
|
||||||
ReadGameList();
|
|
||||||
|
|
||||||
GameFilter.clear();
|
GameFilter.clear();
|
||||||
FilteredList.clear();
|
FilteredList.clear();
|
||||||
|
|
||||||
if (Settings.UseGameHeaderCache && isCacheFile(FilteredListCacheFileName()))
|
EnabledList();
|
||||||
{
|
InternalLoadUnfiltered(EnabledGameList);
|
||||||
LoadFilteredListCache(FilteredList, GameFilter.c_str());
|
|
||||||
GuiSearchBar::FilterList(FilteredList, GameFilter);
|
|
||||||
if (!FilteredList.empty())
|
|
||||||
return FilteredList.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Filter current game list if selected
|
|
||||||
if (Settings.LoaderMode & MODE_WIIGAMES)
|
|
||||||
InternalLoadUnfiltered(FullGameList);
|
|
||||||
|
|
||||||
// Filter gc game list if selected
|
|
||||||
if (Settings.LoaderMode & MODE_GCGAMES)
|
|
||||||
InternalLoadUnfiltered(GCGames::Instance()->GetHeaders());
|
|
||||||
|
|
||||||
// Filter nand channel list if selected
|
|
||||||
if (Settings.LoaderMode & MODE_NANDCHANNELS)
|
|
||||||
InternalLoadUnfiltered(Channels::Instance()->GetNandHeaders());
|
|
||||||
|
|
||||||
// Filter emu nand channel list if selected
|
|
||||||
if (Settings.LoaderMode & MODE_EMUCHANNELS)
|
|
||||||
InternalLoadUnfiltered(Channels::Instance()->GetEmuHeaders());
|
|
||||||
|
|
||||||
NewTitles::Instance()->Save();
|
NewTitles::Instance()->Save();
|
||||||
GuiSearchBar::FilterList(FilteredList, GameFilter);
|
GuiSearchBar::FilterList(FilteredList, GameFilter);
|
||||||
|
|
||||||
SortList();
|
SortList();
|
||||||
|
|
||||||
if (Settings.UseGameHeaderCache && !FilteredList.empty() && (Settings.GameSort & SORT_RANKING) == 0 && (Settings.GameSort & SORT_PLAYCOUNT) == 0 && (Settings.GameSort & SORT_FAVORITE) == 0)
|
|
||||||
SaveFilteredListCache(FilteredList, GameFilter.c_str());
|
|
||||||
|
|
||||||
return FilteredList.size();
|
return FilteredList.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int GameList::EnabledList()
|
||||||
|
{
|
||||||
|
EnabledGameList.clear();
|
||||||
|
|
||||||
|
if (Settings.TitlesType == TITLETYPE_FROMWIITDB)
|
||||||
|
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
||||||
|
|
||||||
|
GetGameListHeaders(EnabledGameList, Settings.LoaderMode);
|
||||||
|
|
||||||
|
return EnabledGameList.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GameList::InternalGetGameListHeaders(std::vector<struct discHdr *> &tmplist, std::vector<struct discHdr> &FullList)
|
||||||
|
{
|
||||||
|
for (u32 i = 0; i < FullList.size(); ++i)
|
||||||
|
{
|
||||||
|
struct discHdr *header = &FullList[i];
|
||||||
|
tmplist.push_back(header);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int GameList::GetGameListHeaders(std::vector<struct discHdr *> &tmplist, short LoaderMode)
|
||||||
|
{
|
||||||
|
// Filter current game list if selected
|
||||||
|
if (LoaderMode & MODE_WIIGAMES)
|
||||||
|
{
|
||||||
|
if (FullGameList.size() == 0)
|
||||||
|
ReadGameList(true);
|
||||||
|
InternalGetGameListHeaders(tmplist, FullGameList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filter GC game list if selected
|
||||||
|
if (LoaderMode & MODE_GCGAMES)
|
||||||
|
InternalGetGameListHeaders(tmplist, GCGames::Instance()->GetHeaders());
|
||||||
|
|
||||||
|
// Filter NAND channel list if selected
|
||||||
|
if (LoaderMode & MODE_NANDCHANNELS)
|
||||||
|
InternalGetGameListHeaders(tmplist, Channels::Instance()->GetNandHeaders());
|
||||||
|
|
||||||
|
// Filter EmuNAND channel list if selected
|
||||||
|
if (LoaderMode & MODE_EMUCHANNELS)
|
||||||
|
InternalGetGameListHeaders(tmplist, Channels::Instance()->GetEmuHeaders());
|
||||||
|
|
||||||
|
return tmplist.size();
|
||||||
|
}
|
||||||
|
|
||||||
void GameList::SortList()
|
void GameList::SortList()
|
||||||
{
|
{
|
||||||
if (FilteredList.size() < 2)
|
if (FilteredList.size() < 2)
|
||||||
|
@ -10,11 +10,12 @@ class GameList
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GameList() : selectedGame(0) { };
|
GameList() : selectedGame(0) { };
|
||||||
int ReadGameList();
|
int ReadGameList(bool use_cache = false);
|
||||||
int size() const { return FilteredList.size(); }
|
int size() const { return FilteredList.size(); }
|
||||||
int GameCount() const { return FullGameList.size(); }
|
int GameCount() const { return FullGameList.size(); }
|
||||||
int FilterList(const wchar_t * gameFilter = NULL);
|
int FilterList(const wchar_t * gameFilter = NULL);
|
||||||
int LoadUnfiltered();
|
int LoadUnfiltered();
|
||||||
|
int EnabledList();
|
||||||
struct discHdr * at(int i) const { return operator[](i); }
|
struct discHdr * at(int i) const { return operator[](i); }
|
||||||
struct discHdr * operator[](int i) const { if (i < 0 || i >= (int) FilteredList.size()) return NULL; return FilteredList[i]; }
|
struct discHdr * operator[](int i) const { if (i < 0 || i >= (int) FilteredList.size()) return NULL; return FilteredList[i]; }
|
||||||
struct discHdr * GetDiscHeader(const char * gameID) const;
|
struct discHdr * GetDiscHeader(const char * gameID) const;
|
||||||
@ -35,10 +36,12 @@ class GameList
|
|||||||
void RemovePartition(int part_num);
|
void RemovePartition(int part_num);
|
||||||
std::vector<struct discHdr *> &GetFilteredList(void) { return FilteredList; }
|
std::vector<struct discHdr *> &GetFilteredList(void) { return FilteredList; }
|
||||||
std::vector<struct discHdr> &GetFullGameList(void) { return FullGameList; }
|
std::vector<struct discHdr> &GetFullGameList(void) { return FullGameList; }
|
||||||
|
int GetGameListHeaders(std::vector<struct discHdr *> &tmplist, short LoaderMode);
|
||||||
protected:
|
protected:
|
||||||
int InternalReadList(int part);
|
int InternalReadList(int part);
|
||||||
void InternalFilterList(std::vector<struct discHdr> &FullList);
|
void InternalFilterList(std::vector<struct discHdr *> &FullList);
|
||||||
void InternalLoadUnfiltered(std::vector<struct discHdr> &FullList);
|
void InternalLoadUnfiltered(std::vector<struct discHdr *> &FullList);
|
||||||
|
void InternalGetGameListHeaders(std::vector<struct discHdr *> &tmplist, std::vector<struct discHdr> &FullList);
|
||||||
static bool NameSortCallback(const struct discHdr *a, const struct discHdr *b);
|
static bool NameSortCallback(const struct discHdr *a, const struct discHdr *b);
|
||||||
static bool PlaycountSortCallback(const struct discHdr *a, const struct discHdr *b);
|
static bool PlaycountSortCallback(const struct discHdr *a, const struct discHdr *b);
|
||||||
static bool RankingSortCallback(const struct discHdr *a, const struct discHdr *b);
|
static bool RankingSortCallback(const struct discHdr *a, const struct discHdr *b);
|
||||||
@ -47,6 +50,7 @@ class GameList
|
|||||||
wString GameFilter;
|
wString GameFilter;
|
||||||
int selectedGame;
|
int selectedGame;
|
||||||
std::vector<struct discHdr *> FilteredList;
|
std::vector<struct discHdr *> FilteredList;
|
||||||
|
std::vector<struct discHdr *> EnabledGameList;
|
||||||
std::vector<struct discHdr> FullGameList;
|
std::vector<struct discHdr> FullGameList;
|
||||||
std::vector<int> GamePartitionList;
|
std::vector<int> GamePartitionList;
|
||||||
};
|
};
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include "settings/GameTitles.h"
|
#include "settings/GameTitles.h"
|
||||||
#include "xml/GameTDB.hpp"
|
#include "xml/GameTDB.hpp"
|
||||||
#include "utils/ShowError.h"
|
#include "utils/ShowError.h"
|
||||||
|
#include "cache/cache.hpp"
|
||||||
|
|
||||||
static int FindGamePartition()
|
static int FindGamePartition()
|
||||||
{
|
{
|
||||||
@ -25,6 +26,7 @@ static int FindGamePartition()
|
|||||||
|
|
||||||
if (WBFS_OpenPart(i) == 0)
|
if (WBFS_OpenPart(i) == 0)
|
||||||
{
|
{
|
||||||
|
GameTitles.SortTitleList();
|
||||||
Settings.partition = i;
|
Settings.partition = i;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -54,6 +56,7 @@ static int FindGamePartition()
|
|||||||
|
|
||||||
if (count > 0)
|
if (count > 0)
|
||||||
{
|
{
|
||||||
|
GameTitles.SortTitleList();
|
||||||
Settings.partition = i;
|
Settings.partition = i;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -66,6 +69,7 @@ static int FindGamePartition()
|
|||||||
|
|
||||||
if(firstValidPartition >= 0)
|
if(firstValidPartition >= 0)
|
||||||
{
|
{
|
||||||
|
GameTitles.SortTitleList();
|
||||||
Settings.partition = firstValidPartition;
|
Settings.partition = firstValidPartition;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -167,12 +171,9 @@ int MountGamePartition(bool ShowGUI)
|
|||||||
Sys_LoadMenu();
|
Sys_LoadMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
gprintf("LoadTitlesFromGameTDB\n");
|
if(ShowGUI && Settings.CacheCheck && !isCacheCurrent())
|
||||||
//! gameList is loaded in GameTitles.LoadTitlesFromGameTDB after cache file load
|
ResetGameHeaderCache();
|
||||||
//! for speed up purpose. If titles override active, load game list here.
|
|
||||||
if(Settings.titlesOverride)
|
|
||||||
GameTitles.LoadTitlesFromGameTDB(Settings.titlestxt_path);
|
|
||||||
else
|
|
||||||
gameList.LoadUnfiltered();
|
gameList.LoadUnfiltered();
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
#include "gecko.h"
|
#include "gecko.h"
|
||||||
|
|
||||||
#define MAX_FAT_PATH 1024
|
#define MAX_FAT_PATH 1024
|
||||||
#define TITLE_LEN 64
|
#define TITLE_LEN 130
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@ -367,19 +367,24 @@ bool Wbfs_Fat::CheckLayoutB(char *fname, int len, u8* id, char *fname_title)
|
|||||||
void Wbfs_Fat::AddHeader(struct discHdr *discHeader)
|
void Wbfs_Fat::AddHeader(struct discHdr *discHeader)
|
||||||
{
|
{
|
||||||
//! First allocate before reallocating
|
//! First allocate before reallocating
|
||||||
if(!fat_hdr_list)
|
if (!fat_hdr_list)
|
||||||
fat_hdr_list = (struct discHdr *) malloc(sizeof(struct discHdr));
|
fat_hdr_list = (struct discHdr *)malloc(sizeof(struct discHdr));
|
||||||
|
|
||||||
struct discHdr *tmpList = (struct discHdr *) realloc(fat_hdr_list, (fat_hdr_count+1) * sizeof(struct discHdr));
|
struct discHdr *tmpList = (struct discHdr *)realloc(fat_hdr_list, (fat_hdr_count + 1) * sizeof(struct discHdr));
|
||||||
if(!tmpList)
|
if (!tmpList)
|
||||||
return; //out of memory, keep the list until now and stop
|
return; // out of memory, keep the list until now and stop
|
||||||
|
|
||||||
for(int j = 0; j < 6; ++j)
|
for (int j = 0; j < 6; ++j)
|
||||||
discHeader->id[j] = toupper((int) discHeader->id[j]);
|
discHeader->id[j] = toupper((int)discHeader->id[j]);
|
||||||
|
|
||||||
|
std::string title(discHeader->title);
|
||||||
|
title.erase(0, title.find_first_not_of(' '));
|
||||||
|
snprintf(discHeader->title, sizeof(discHeader->title), "%s", title.c_str());
|
||||||
|
|
||||||
fat_hdr_list = tmpList;
|
fat_hdr_list = tmpList;
|
||||||
memcpy(&fat_hdr_list[fat_hdr_count], discHeader, sizeof(struct discHdr));
|
memcpy(&fat_hdr_list[fat_hdr_count], discHeader, sizeof(struct discHdr));
|
||||||
GameTitles.SetGameTitle(discHeader->id, discHeader->title);
|
if ((Settings.TitlesType == TITLETYPE_FORCED_DISC && GameTitles.GetTitleType((const char *)discHeader->id) != TITLETYPE_MANUAL_OVERRIDE))
|
||||||
|
GameTitles.SetGameTitle((const char *)discHeader->id, discHeader->title, TITLETYPE_FORCED_DISC);
|
||||||
fat_hdr_count++;
|
fat_hdr_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -395,7 +400,6 @@ s32 Wbfs_Fat::GetHeadersCount()
|
|||||||
int len;
|
int len;
|
||||||
u8 id[8];
|
u8 id[8];
|
||||||
memset(id, 0, sizeof(id));
|
memset(id, 0, sizeof(id));
|
||||||
const char *title;
|
|
||||||
DIR *dir_iter;
|
DIR *dir_iter;
|
||||||
struct dirent *dirent;
|
struct dirent *dirent;
|
||||||
|
|
||||||
@ -491,17 +495,18 @@ s32 Wbfs_Fat::GetHeadersCount()
|
|||||||
snprintf(fpath, sizeof(fpath), "%s/%s/%.6s.wbfs", path, dirent->d_name, (char *) id);
|
snprintf(fpath, sizeof(fpath), "%s/%s/%.6s.wbfs", path, dirent->d_name, (char *) id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we have titles.txt entry use that
|
std::string title = "";
|
||||||
title = GameTitles.GetTitle(id);
|
if (Settings.TitlesType == TITLETYPE_FORCED_DISC && GameTitles.GetTitleType((const char *)id) == TITLETYPE_FORCED_DISC)
|
||||||
// if no titles.txt get title from dir or file name
|
title.assign(GameTitles.GetTitle((const char *)id));
|
||||||
if (strlen(title) == 0 && !Settings.ForceDiscTitles && strlen(fname_title) > 0)
|
|
||||||
title = fname_title;
|
|
||||||
|
|
||||||
if (strlen(title) > 0)
|
if (title.length() == 0 && Settings.TitlesType != TITLETYPE_FORCED_DISC && strlen(fname_title) > 0)
|
||||||
|
title.assign(fname_title);
|
||||||
|
|
||||||
|
if (*id != 0 && title.length() > 0 && title.length() < 64)
|
||||||
{
|
{
|
||||||
memset(&tmpHdr, 0, sizeof(tmpHdr));
|
memset(&tmpHdr, 0, sizeof(tmpHdr));
|
||||||
memcpy(tmpHdr.id, id, sizeof(tmpHdr.id));
|
memcpy(tmpHdr.id, id, sizeof(tmpHdr.id));
|
||||||
snprintf(tmpHdr.title, sizeof(tmpHdr.title), "%s", title);
|
snprintf(tmpHdr.title, sizeof(tmpHdr.title), "%s", title.c_str());
|
||||||
tmpHdr.magic = 0x5D1C9EA3;
|
tmpHdr.magic = 0x5D1C9EA3;
|
||||||
AddHeader(&tmpHdr);
|
AddHeader(&tmpHdr);
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
Reference in New Issue
Block a user