diff options
Diffstat (limited to 'src')
30 files changed, 118 insertions, 349 deletions
diff --git a/src/android/app/src/main/res/values-de/strings.xml b/src/android/app/src/main/res/values-de/strings.xml index 969223ef8..0c1d91264 100644 --- a/src/android/app/src/main/res/values-de/strings.xml +++ b/src/android/app/src/main/res/values-de/strings.xml @@ -235,26 +235,6 @@ <string name="region_korea">Korea</string> <string name="region_taiwan">Taiwan</string> - <!-- Language Names --> - <string name="language_japanese">Japanisch (日本語)</string> - <string name="language_english">Englisch</string> - <string name="language_french">Französisch (Français)</string> - <string name="langauge_german">Deutsch (German)</string> - <string name="language_italian">Italienisch (Italiano)</string> - <string name="language_spanish">Spanisch (Español)</string> - <string name="language_chinese">Chinesisch (简体中文)</string> - <string name="language_korean">Koreanisch (한국어)</string> - <string name="language_dutch">Niederländisch (Nederlands)</string> - <string name="language_portuguese">Portugiesisch (Português)</string> - <string name="language_russian">Russisch (Русский)</string> - <string name="language_taiwanese">Taiwanesisch (台湾)</string> - <string name="language_british_english">Britisches Englisch</string> - <string name="language_canadian_french">Kanadisches Französisch (Français canadien)</string> - <string name="language_latin_american_spanish">Lateinamerikanisches Spanisch (Español latinoamericano)</string> - <string name="language_simplified_chinese">Vereinfachtes Chinesisch (简体中文)</string> - <string name="language_traditional_chinese">Traditionelles Chinesisch (正體中文)</string> - <string name="language_brazilian_portuguese">Brasilianisches Portugiesisch (Português do Brasil)</string> - <!-- Renderer APIs --> <string name="renderer_vulkan">Vulkan</string> <string name="renderer_none">Keiner</string> diff --git a/src/android/app/src/main/res/values-es/strings.xml b/src/android/app/src/main/res/values-es/strings.xml index 986e80e50..357f956d1 100644 --- a/src/android/app/src/main/res/values-es/strings.xml +++ b/src/android/app/src/main/res/values-es/strings.xml @@ -241,24 +241,6 @@ <string name="region_taiwan">Taiwán</string> <!-- Language Names --> - <string name="language_japanese">Japonés (日本語)</string> - <string name="language_english">Inglés (English)</string> - <string name="language_french">Francés (Français)</string> - <string name="langauge_german">Alemán (deutsch)</string> - <string name="language_italian">Italiano (Italiano)</string> - <string name="language_spanish">Español (Español)</string> - <string name="language_chinese">Chino (简体中文)</string> - <string name="language_korean">Coreano (한국어)</string> - <string name="language_dutch">Holandés (nederlands)</string> - <string name="language_portuguese">Portugués (Português)</string> - <string name="language_russian">Ruso (Русский)</string> - <string name="language_taiwanese">Taiwanés (台湾)</string> - <string name="language_british_english">Inglés británico</string> - <string name="language_canadian_french">Francés Canadiense (Français canadien)</string> - <string name="language_latin_american_spanish">Español Latinoamericano (Español latinoamericano)</string> - <string name="language_simplified_chinese">Chino Simplificado (简体中文)</string> - <string name="language_traditional_chinese">Chino tradicional (正體中文)</string> - <string name="language_brazilian_portuguese">Portugués Brasileño (Português do Brasil)</string> <!-- Renderer APIs --> <string name="renderer_vulkan">Vulkan</string> diff --git a/src/android/app/src/main/res/values-fr/strings.xml b/src/android/app/src/main/res/values-fr/strings.xml index 14a9b2d5c..dfca1c830 100644 --- a/src/android/app/src/main/res/values-fr/strings.xml +++ b/src/android/app/src/main/res/values-fr/strings.xml @@ -241,24 +241,6 @@ <string name="region_taiwan">Taïwan</string> <!-- Language Names --> - <string name="language_japanese">Japonais (日本語)</string> - <string name="language_english">Anglais</string> - <string name="language_french">Français (Français)</string> - <string name="langauge_german">Allemand (Deutsch)</string> - <string name="language_italian">Italien (Italiano)</string> - <string name="language_spanish">Espagnol (Español)</string> - <string name="language_chinese">Chinois (简体中文)</string> - <string name="language_korean">Coréen (한국어)</string> - <string name="language_dutch">Néerlandais (Nederlands)</string> - <string name="language_portuguese">Portugais (Português)</string> - <string name="language_russian">Russe (Русский)</string> - <string name="language_taiwanese">Taïwanais (台湾)</string> - <string name="language_british_english">Anglais Britannique</string> - <string name="language_canadian_french">Français canadien (Français canadien)</string> - <string name="language_latin_american_spanish">Espagnol latino-américain (Español latinoamericano)</string> - <string name="language_simplified_chinese">Chinois simplifié (简体中文)</string> - <string name="language_traditional_chinese">Chinois Traditionnel (正體中文)</string> - <string name="language_brazilian_portuguese">Portugais brésilien (Português do Brasil)</string> <!-- Renderer APIs --> <string name="renderer_vulkan">Vulkan</string> diff --git a/src/android/app/src/main/res/values-it/strings.xml b/src/android/app/src/main/res/values-it/strings.xml index 47a4cfa31..089d93ed6 100644 --- a/src/android/app/src/main/res/values-it/strings.xml +++ b/src/android/app/src/main/res/values-it/strings.xml @@ -241,24 +241,6 @@ <string name="region_taiwan">Taiwan</string> <!-- Language Names --> - <string name="language_japanese">Giapponese (日本語)</string> - <string name="language_english">Inglese (English)</string> - <string name="language_french">Francese (Français)</string> - <string name="langauge_german">Tedesco (Deutsch)</string> - <string name="language_italian">Italiano (Italiano)</string> - <string name="language_spanish">Spagnolo (Español)</string> - <string name="language_chinese">Cinese (简体中文)</string> - <string name="language_korean">Coreano (한국어)</string> - <string name="language_dutch">Olandese (Nederlands)</string> - <string name="language_portuguese">Portoghese (Português)</string> - <string name="language_russian">Russo (Русский)</string> - <string name="language_taiwanese">Taiwanese (台湾)</string> - <string name="language_british_english">Inglese britannico</string> - <string name="language_canadian_french">Francese Canadese (Français canadien)</string> - <string name="language_latin_american_spanish">Spagnolo Latino Americano (Español latinoamericano)</string> - <string name="language_simplified_chinese">Cinese Semplificato (简体中文)</string> - <string name="language_traditional_chinese">Cinese tradizionale (正體中文)</string> - <string name="language_brazilian_portuguese">Portoghese (Português)</string> <!-- Renderer APIs --> <string name="renderer_vulkan">Vulkan</string> diff --git a/src/android/app/src/main/res/values-ja/strings.xml b/src/android/app/src/main/res/values-ja/strings.xml index 46eda9ef7..39b590bee 100644 --- a/src/android/app/src/main/res/values-ja/strings.xml +++ b/src/android/app/src/main/res/values-ja/strings.xml @@ -239,24 +239,6 @@ <string name="region_taiwan">台湾</string> <!-- Language Names --> - <string name="language_japanese">日本語</string> - <string name="language_english">英語</string> - <string name="language_french">フランス語 (Français)</string> - <string name="langauge_german">ドイツ語 (Deutsch)</string> - <string name="language_italian">イタリア語 (Italiano)</string> - <string name="language_spanish">スペイン語 (Español)</string> - <string name="language_chinese">中国語 (简体中文)</string> - <string name="language_korean">韓国語 (한국어)</string> - <string name="language_dutch">オランダ語 (Nederlands)</string> - <string name="language_portuguese">ポルトガル語 (Português)</string> - <string name="language_russian">ロシア語 (Русский)</string> - <string name="language_taiwanese">台湾語 (台湾)</string> - <string name="language_british_english">イギリス英語</string> - <string name="language_canadian_french">フランス語(カナダ) (Français canadien)</string> - <string name="language_latin_american_spanish">スペイン語(ラテンアメリカ) (Español latinoamericano)</string> - <string name="language_simplified_chinese">中国語 (简体中文)</string> - <string name="language_traditional_chinese">繁体字中国語 (正體中文)</string> - <string name="language_brazilian_portuguese">ポルトガル語(ブラジル) (Português do Brasil)</string> <!-- Renderer APIs --> <string name="renderer_vulkan">Vulkan</string> diff --git a/src/android/app/src/main/res/values-ko/strings.xml b/src/android/app/src/main/res/values-ko/strings.xml index 5da80ab4b..cbcb2873f 100644 --- a/src/android/app/src/main/res/values-ko/strings.xml +++ b/src/android/app/src/main/res/values-ko/strings.xml @@ -241,24 +241,6 @@ <string name="region_taiwan">타이완</string> <!-- Language Names --> - <string name="language_japanese">일본어 (日本語)</string> - <string name="language_english">영어 (English)</string> - <string name="language_french">프랑스어 (Français)</string> - <string name="langauge_german">독일어(Deutsch)</string> - <string name="language_italian">이탈리아어 (Italiano)</string> - <string name="language_spanish">스페인어 (Español)</string> - <string name="language_chinese">중국어 (简体中文)</string> - <string name="language_korean">한국어 (Korean)</string> - <string name="language_dutch">네덜란드어 (Nederlands)</string> - <string name="language_portuguese">포르투갈어 (Português)</string> - <string name="language_russian">러시아어 (Русский)</string> - <string name="language_taiwanese">대만어 (台湾)</string> - <string name="language_british_english">영어 (British English)</string> - <string name="language_canadian_french">캐나다 프랑스어 (Français canadien)</string> - <string name="language_latin_american_spanish">라틴 아메리카 스페인어 (Español latinoamericano)</string> - <string name="language_simplified_chinese">중국어 간체 (简体中文)</string> - <string name="language_traditional_chinese">중국어 번체 (正體中文)</string> - <string name="language_brazilian_portuguese">브라질 포르투갈어 (Português do Brasil)</string> <!-- Renderer APIs --> <string name="renderer_vulkan">불칸</string> diff --git a/src/android/app/src/main/res/values-nb/strings.xml b/src/android/app/src/main/res/values-nb/strings.xml index 3e1f9bce5..e48a4be38 100644 --- a/src/android/app/src/main/res/values-nb/strings.xml +++ b/src/android/app/src/main/res/values-nb/strings.xml @@ -241,24 +241,6 @@ <string name="region_taiwan">Taiwan</string> <!-- Language Names --> - <string name="language_japanese">Japansk (日本語)</string> - <string name="language_english">Engelsk</string> - <string name="language_french">Fransk (Français)</string> - <string name="langauge_german">Tysk (Deutsch)</string> - <string name="language_italian">Italiensk (Italiano)</string> - <string name="language_spanish">Spansk (Español)</string> - <string name="language_chinese">Kinesisk (简体中文)</string> - <string name="language_korean">Koreansk (한국어)</string> - <string name="language_dutch">Nederlandsk (Nederlands)</string> - <string name="language_portuguese">Portugisisk (Português)</string> - <string name="language_russian">Russisk (Русский)</string> - <string name="language_taiwanese">Taiwansk (台湾)</string> - <string name="language_british_english">Britisk Engelsk</string> - <string name="language_canadian_french">Kanadisk fransk (Français canadien)</string> - <string name="language_latin_american_spanish">Latinamerikansk spansk (Español latinoamericano)</string> - <string name="language_simplified_chinese">Forenklet kinesisk (简体中文)</string> - <string name="language_traditional_chinese">Tradisjonell Kinesisk (正體中文)</string> - <string name="language_brazilian_portuguese">Brasiliansk portugisisk (Português do Brasil)</string> <!-- Renderer APIs --> <string name="renderer_vulkan">Vulkan</string> diff --git a/src/android/app/src/main/res/values-pl/strings.xml b/src/android/app/src/main/res/values-pl/strings.xml index 1cd1a8f87..bc9c0f7f4 100644 --- a/src/android/app/src/main/res/values-pl/strings.xml +++ b/src/android/app/src/main/res/values-pl/strings.xml @@ -241,24 +241,6 @@ <string name="region_taiwan">Tajwan</string> <!-- Language Names --> - <string name="language_japanese">Japoński (日本語)</string> - <string name="language_english">Angielski</string> - <string name="language_french">Francuski (Francja)</string> - <string name="langauge_german">Niemiecki (Niemcy)</string> - <string name="language_italian">Włoski (Włochy)</string> - <string name="language_spanish">Hiszpański (Hiszpania)</string> - <string name="language_chinese">Chiński (简体中文)</string> - <string name="language_korean">Koreański (한국어)</string> - <string name="language_dutch">Duński (Holandia)</string> - <string name="language_portuguese">Portugalski (Portugalia)</string> - <string name="language_russian">Rosyjski (Русский)</string> - <string name="language_taiwanese">Tajwański (台湾)</string> - <string name="language_british_english">Angielski Brytyjski</string> - <string name="language_canadian_french">Francuski (Kanada)</string> - <string name="language_latin_american_spanish">Hiszpański (Ameryka Latynoska)</string> - <string name="language_simplified_chinese">Chiński uproszczony (简体中文)</string> - <string name="language_traditional_chinese">Chiński tradycyjny (正體中文)</string> - <string name="language_brazilian_portuguese">Portugalski (Brazylia)</string> <!-- Renderer APIs --> <string name="renderer_vulkan">Vulkan</string> diff --git a/src/android/app/src/main/res/values-pt-rBR/strings.xml b/src/android/app/src/main/res/values-pt-rBR/strings.xml index 35197c280..75fe0edbf 100644 --- a/src/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/src/android/app/src/main/res/values-pt-rBR/strings.xml @@ -241,24 +241,6 @@ <string name="region_taiwan">Taiwan</string> <!-- Language Names --> - <string name="language_japanese">Japônes (日本語)</string> - <string name="language_english">Português do Brasil</string> - <string name="language_french">Francês (Français)</string> - <string name="langauge_german">Alemão (Deutsch)</string> - <string name="language_italian">Italiano (Italiano)</string> - <string name="language_spanish">Espanhol (Español)</string> - <string name="language_chinese">Mandarim (简体中文)</string> - <string name="language_korean">Coreano (한국어)</string> - <string name="language_dutch">Holandês (Nederlands)</string> - <string name="language_portuguese">Português (Português)</string> - <string name="language_russian">Russo (Русский)</string> - <string name="language_taiwanese">Taiwanês (台湾)</string> - <string name="language_british_english">Inglês britânico (British English)</string> - <string name="language_canadian_french">Fracês Canadiano (Français canadien)</string> - <string name="language_latin_american_spanish">Espanhol da América Latina (Español latino-americano)</string> - <string name="language_simplified_chinese">Chinês Simplificado (简体中文)</string> - <string name="language_traditional_chinese">Chinês tradicional (正體中文)</string> - <string name="language_brazilian_portuguese">Português do Brasil (Português do Brasil)</string> <!-- Renderer APIs --> <string name="renderer_vulkan">Vulcano</string> diff --git a/src/android/app/src/main/res/values-pt-rPT/strings.xml b/src/android/app/src/main/res/values-pt-rPT/strings.xml index 8761e2374..96b040c66 100644 --- a/src/android/app/src/main/res/values-pt-rPT/strings.xml +++ b/src/android/app/src/main/res/values-pt-rPT/strings.xml @@ -241,24 +241,6 @@ <string name="region_taiwan">Taiwan</string> <!-- Language Names --> - <string name="language_japanese">Japonês (日本語)</string> - <string name="language_english">Inglês</string> - <string name="language_french">Francês (Français)</string> - <string name="langauge_german">Alemão (Deutsch)</string> - <string name="language_italian">Italiano (Italiano)</string> - <string name="language_spanish">Espanhol (Español)</string> - <string name="language_chinese">Chinês simplificado (简体中文)</string> - <string name="language_korean">Coreano (한국어)</string> - <string name="language_dutch">Holandês (Nederlands)</string> - <string name="language_portuguese">Português (Português)</string> - <string name="language_russian">Russo (Русский)</string> - <string name="language_taiwanese">Taiwanês (台湾)</string> - <string name="language_british_english">Inglês Britânico</string> - <string name="language_canadian_french">Fracês Canadiano (Français canadien)</string> - <string name="language_latin_american_spanish">Espanhol da América Latina (Español latino-americano)</string> - <string name="language_simplified_chinese">Chinês Simplificado (简体中文)</string> - <string name="language_traditional_chinese">Chinês Tradicional (正 體 中文)</string> - <string name="language_brazilian_portuguese">Português do Brasil (Português do Brasil)</string> <!-- Renderer APIs --> <string name="renderer_vulkan">Vulcano</string> diff --git a/src/android/app/src/main/res/values-ru/strings.xml b/src/android/app/src/main/res/values-ru/strings.xml index 0fb4908f7..8d954f59e 100644 --- a/src/android/app/src/main/res/values-ru/strings.xml +++ b/src/android/app/src/main/res/values-ru/strings.xml @@ -241,24 +241,6 @@ <string name="region_taiwan">Тайвань</string> <!-- Language Names --> - <string name="language_japanese">Японский (日本語)</string> - <string name="language_english">Английский (English)</string> - <string name="language_french">Французский (Français)</string> - <string name="langauge_german">Немецкий (Deutsch)</string> - <string name="language_italian">Итальянский (Italiano)</string> - <string name="language_spanish">Испанский (Español)</string> - <string name="language_chinese">Китайский (简体中文)</string> - <string name="language_korean">Корейский (한국어)</string> - <string name="language_dutch">Голландский (Nederlands)</string> - <string name="language_portuguese">Португальский (Português)</string> - <string name="language_russian">Русский</string> - <string name="language_taiwanese">Тайваньский (台湾)</string> - <string name="language_british_english">Британский английский</string> - <string name="language_canadian_french">Канадский французский (Français canadien)</string> - <string name="language_latin_american_spanish">Латиноамериканский испанский (Español latinoamericano)</string> - <string name="language_simplified_chinese">Упрощенный китайский (简体中文)</string> - <string name="language_traditional_chinese">Традиционный китайский (正體中文)</string> - <string name="language_brazilian_portuguese">Бразильский португальский (Português do Brasil)</string> <!-- Renderer APIs --> <string name="renderer_vulkan">Vulkan</string> diff --git a/src/android/app/src/main/res/values-uk/strings.xml b/src/android/app/src/main/res/values-uk/strings.xml index 0d11eb2d2..6c028535b 100644 --- a/src/android/app/src/main/res/values-uk/strings.xml +++ b/src/android/app/src/main/res/values-uk/strings.xml @@ -241,24 +241,6 @@ <string name="region_taiwan">Тайвань</string> <!-- Language Names --> - <string name="language_japanese">Японська (日本語)</string> - <string name="language_english">Англійська (English)</string> - <string name="language_french">Французька (Français)</string> - <string name="langauge_german">Німецька (Deutsch)</string> - <string name="language_italian">Італійська (Italiano)</string> - <string name="language_spanish">Іспанська (Español)</string> - <string name="language_chinese">Китайскька (简体中文)</string> - <string name="language_korean">Корейська (한국어)</string> - <string name="language_dutch">Голландська (Nederlands)</string> - <string name="language_portuguese">Португальська (Português)</string> - <string name="language_russian">Російська (Русский)</string> - <string name="language_taiwanese">Тайванська (台湾)</string> - <string name="language_british_english">Британська англійська</string> - <string name="language_canadian_french">Канадська французька (Français canadien)</string> - <string name="language_latin_american_spanish">Латиноамериканська іспанська (Español latinoamericano)</string> - <string name="language_simplified_chinese">Спрощена китайська (简体中文)</string> - <string name="language_traditional_chinese">Традиційна китайська (正體中文)</string> - <string name="language_brazilian_portuguese">Бразильська португальська (Português do Brasil)</string> <!-- Renderer APIs --> <string name="renderer_vulkan">Vulkan</string> diff --git a/src/android/app/src/main/res/values-zh-rCN/strings.xml b/src/android/app/src/main/res/values-zh-rCN/strings.xml index e00bbaa2e..e4ad2ed07 100644 --- a/src/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/src/android/app/src/main/res/values-zh-rCN/strings.xml @@ -241,24 +241,6 @@ <string name="region_taiwan">中国台湾</string> <!-- Language Names --> - <string name="language_japanese">日语 (日本語)</string> - <string name="language_english">英语 (English)</string> - <string name="language_french">法语 (Français)</string> - <string name="langauge_german">德语 (Deutsch)</string> - <string name="language_italian">意大利语 (Italiano)</string> - <string name="language_spanish">西班牙语 (Español)</string> - <string name="language_chinese">中文 (简体中文)</string> - <string name="language_korean">韩语 (한국어)</string> - <string name="language_dutch">荷兰语 (Nederlands)</string> - <string name="language_portuguese">葡萄牙语 (Português)</string> - <string name="language_russian">俄语 (Русский)</string> - <string name="language_taiwanese">台湾中文 (台灣)</string> - <string name="language_british_english">英式英语</string> - <string name="language_canadian_french">加拿大法语 (Français canadien)</string> - <string name="language_latin_american_spanish">拉丁美洲西班牙语 (Español latinoamericano)</string> - <string name="language_simplified_chinese">简体中文 (简体中文)</string> - <string name="language_traditional_chinese">繁体中文 (正體中文)</string> - <string name="language_brazilian_portuguese">巴西葡萄牙语 (Português do Brasil)</string> <!-- Renderer APIs --> <string name="renderer_vulkan">Vulkan</string> diff --git a/src/android/app/src/main/res/values-zh-rTW/strings.xml b/src/android/app/src/main/res/values-zh-rTW/strings.xml index a54d04248..0d32f23df 100644 --- a/src/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/src/android/app/src/main/res/values-zh-rTW/strings.xml @@ -241,24 +241,6 @@ <string name="region_taiwan">台灣</string> <!-- Language Names --> - <string name="language_japanese">日文 (日本語)</string> - <string name="language_english">英文</string> - <string name="language_french">法文 (Français)</string> - <string name="langauge_german">德文 (Deutsch)</string> - <string name="language_italian">義大利文 (Italiano)</string> - <string name="language_spanish">西班牙文 (Español)</string> - <string name="language_chinese">中文 (简体中文)</string> - <string name="language_korean">韓文 (한국어)</string> - <string name="language_dutch">荷蘭文 (Nederlands)</string> - <string name="language_portuguese">葡萄牙文 (Português)</string> - <string name="language_russian">俄文 (Русский)</string> - <string name="language_taiwanese">台文 (台灣)</string> - <string name="language_british_english">英式英文</string> - <string name="language_canadian_french">加拿大法文 (Français canadien)</string> - <string name="language_latin_american_spanish">拉丁美洲西班牙文 (Español latinoamericano)</string> - <string name="language_simplified_chinese">簡體中文 (简体中文)</string> - <string name="language_traditional_chinese">正體中文 (正體中文)</string> - <string name="language_brazilian_portuguese">巴西葡萄牙文 (Português do Brasil)</string> <!-- Renderer APIs --> <string name="renderer_vulkan">Vulkan</string> diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index bfdebd35b..02e25504d 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -287,24 +287,24 @@ <string name="region_taiwan">Taiwan</string> <!-- Language Names --> - <string name="language_japanese">Japanese (日本語)</string> - <string name="language_english">English</string> - <string name="language_french">French (Français)</string> - <string name="langauge_german">German (Deutsch)</string> - <string name="language_italian">Italian (Italiano)</string> - <string name="language_spanish">Spanish (Español)</string> - <string name="language_chinese">Chinese (简体中文)</string> - <string name="language_korean">Korean (한국어)</string> - <string name="language_dutch">Dutch (Nederlands)</string> - <string name="language_portuguese">Portuguese (Português)</string> - <string name="language_russian">Russian (Русский)</string> - <string name="language_taiwanese">Taiwanese (台湾)</string> - <string name="language_british_english">British English</string> - <string name="language_canadian_french">Canadian French (Français canadien)</string> - <string name="language_latin_american_spanish">Latin American Spanish (Español latinoamericano)</string> - <string name="language_simplified_chinese">Simplified Chinese (简体中文)</string> - <string name="language_traditional_chinese">Traditional Chinese (正體中文)</string> - <string name="language_brazilian_portuguese">Brazilian Portuguese (Português do Brasil)</string> + <string name="language_japanese" translatable="false">日本語</string> + <string name="language_english" translatable="false">English</string> + <string name="language_french" translatable="false">Français</string> + <string name="langauge_german" translatable="false">Deutsch</string> + <string name="language_italian" translatable="false">Italiano</string> + <string name="language_spanish" translatable="false">Español</string> + <string name="language_chinese" translatable="false">简体中文</string> + <string name="language_korean" translatable="false">한국어</string> + <string name="language_dutch" translatable="false">Nederlands</string> + <string name="language_portuguese" translatable="false">Português</string> + <string name="language_russian" translatable="false">Русский</string> + <string name="language_taiwanese" translatable="false">台湾</string> + <string name="language_british_english" translatable="false">British English</string> + <string name="language_canadian_french" translatable="false">Français canadien</string> + <string name="language_latin_american_spanish" translatable="false">Español latinoamericano</string> + <string name="language_simplified_chinese" translatable="false">简体中文</string> + <string name="language_traditional_chinese" translatable="false">正體中文</string> + <string name="language_brazilian_portuguese" translatable="false">Português do Brasil</string> <!-- Memory Sizes --> <string name="memory_byte">Byte</string> diff --git a/src/common/page_table.h b/src/common/page_table.h index fec8378f3..e653d52ad 100644 --- a/src/common/page_table.h +++ b/src/common/page_table.h @@ -51,7 +51,7 @@ struct PageTable { class PageInfo { public: /// Returns the page pointer - [[nodiscard]] u8* Pointer() const noexcept { + [[nodiscard]] uintptr_t Pointer() const noexcept { return ExtractPointer(raw.load(std::memory_order_relaxed)); } @@ -61,7 +61,7 @@ struct PageTable { } /// Returns the page pointer and attribute pair, extracted from the same atomic read - [[nodiscard]] std::pair<u8*, PageType> PointerType() const noexcept { + [[nodiscard]] std::pair<uintptr_t, PageType> PointerType() const noexcept { const uintptr_t non_atomic_raw = raw.load(std::memory_order_relaxed); return {ExtractPointer(non_atomic_raw), ExtractType(non_atomic_raw)}; } @@ -73,13 +73,13 @@ struct PageTable { } /// Write a page pointer and type pair atomically - void Store(u8* pointer, PageType type) noexcept { - raw.store(reinterpret_cast<uintptr_t>(pointer) | static_cast<uintptr_t>(type)); + void Store(uintptr_t pointer, PageType type) noexcept { + raw.store(pointer | static_cast<uintptr_t>(type)); } /// Unpack a pointer from a page info raw representation - [[nodiscard]] static u8* ExtractPointer(uintptr_t raw) noexcept { - return reinterpret_cast<u8*>(raw & (~uintptr_t{0} << ATTRIBUTE_BITS)); + [[nodiscard]] static uintptr_t ExtractPointer(uintptr_t raw) noexcept { + return raw & (~uintptr_t{0} << ATTRIBUTE_BITS); } /// Unpack a page type from a page info raw representation diff --git a/src/core/arm/arm_interface.cpp b/src/core/arm/arm_interface.cpp index aa0eb9791..0c012f094 100644 --- a/src/core/arm/arm_interface.cpp +++ b/src/core/arm/arm_interface.cpp @@ -217,8 +217,8 @@ void ARM_Interface::Run() { } } -void ARM_Interface::LoadWatchpointArray(const WatchpointArray& wp) { - watchpoints = ℘ +void ARM_Interface::LoadWatchpointArray(const WatchpointArray* wp) { + watchpoints = wp; } const Kernel::DebugWatchpoint* ARM_Interface::MatchingWatchpoint( diff --git a/src/core/arm/arm_interface.h b/src/core/arm/arm_interface.h index d5f2fa09a..3d866ff6f 100644 --- a/src/core/arm/arm_interface.h +++ b/src/core/arm/arm_interface.h @@ -186,7 +186,7 @@ public: virtual void SaveContext(ThreadContext64& ctx) const = 0; virtual void LoadContext(const ThreadContext32& ctx) = 0; virtual void LoadContext(const ThreadContext64& ctx) = 0; - void LoadWatchpointArray(const WatchpointArray& wp); + void LoadWatchpointArray(const WatchpointArray* wp); /// Clears the exclusive monitor's state. virtual void ClearExclusiveState() = 0; diff --git a/src/core/hle/kernel/k_auto_object.cpp b/src/core/hle/kernel/k_auto_object.cpp index 0ae42c95c..9cd7a9fd5 100644 --- a/src/core/hle/kernel/k_auto_object.cpp +++ b/src/core/hle/kernel/k_auto_object.cpp @@ -15,8 +15,8 @@ void KAutoObject::RegisterWithKernel() { m_kernel.RegisterKernelObject(this); } -void KAutoObject::UnregisterWithKernel() { - m_kernel.UnregisterKernelObject(this); +void KAutoObject::UnregisterWithKernel(KernelCore& kernel, KAutoObject* self) { + kernel.UnregisterKernelObject(self); } } // namespace Kernel diff --git a/src/core/hle/kernel/k_auto_object.h b/src/core/hle/kernel/k_auto_object.h index f384b1568..8d4e0df44 100644 --- a/src/core/hle/kernel/k_auto_object.h +++ b/src/core/hle/kernel/k_auto_object.h @@ -159,14 +159,15 @@ public: // If ref count hits zero, destroy the object. if (cur_ref_count - 1 == 0) { + KernelCore& kernel = m_kernel; this->Destroy(); - this->UnregisterWithKernel(); + KAutoObject::UnregisterWithKernel(kernel, this); } } private: void RegisterWithKernel(); - void UnregisterWithKernel(); + static void UnregisterWithKernel(KernelCore& kernel, KAutoObject* self); protected: KernelCore& m_kernel; diff --git a/src/core/hle/kernel/k_scheduler.cpp b/src/core/hle/kernel/k_scheduler.cpp index 75ce5a23c..d8143c650 100644 --- a/src/core/hle/kernel/k_scheduler.cpp +++ b/src/core/hle/kernel/k_scheduler.cpp @@ -510,11 +510,12 @@ void KScheduler::Unload(KThread* thread) { void KScheduler::Reload(KThread* thread) { auto& cpu_core = m_kernel.System().ArmInterface(m_core_id); + auto* process = thread->GetOwnerProcess(); cpu_core.LoadContext(thread->GetContext32()); cpu_core.LoadContext(thread->GetContext64()); cpu_core.SetTlsAddress(GetInteger(thread->GetTlsAddress())); cpu_core.SetTPIDR_EL0(thread->GetTpidrEl0()); - cpu_core.LoadWatchpointArray(thread->GetOwnerProcess()->GetWatchpoints()); + cpu_core.LoadWatchpointArray(process ? &process->GetWatchpoints() : nullptr); cpu_core.ClearExclusiveState(); } diff --git a/src/core/hle/kernel/k_thread.cpp b/src/core/hle/kernel/k_thread.cpp index d88909889..7df8fd7f7 100644 --- a/src/core/hle/kernel/k_thread.cpp +++ b/src/core/hle/kernel/k_thread.cpp @@ -129,7 +129,7 @@ Result KThread::Initialize(KThreadFunction func, uintptr_t arg, KProcessAddress case ThreadType::User: ASSERT(((owner == nullptr) || (owner->GetCoreMask() | (1ULL << virt_core)) == owner->GetCoreMask())); - ASSERT(((owner == nullptr) || + ASSERT(((owner == nullptr) || (prio > Svc::LowestThreadPriority) || (owner->GetPriorityMask() | (1ULL << prio)) == owner->GetPriorityMask())); break; case ThreadType::Kernel: diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 09c53ea92..fa5273402 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -83,7 +83,7 @@ struct Memory::Impl { return {}; } - return system.DeviceMemory().GetPointer<u8>(paddr) + vaddr; + return system.DeviceMemory().GetPointer<u8>(paddr + vaddr); } [[nodiscard]] u8* GetPointerFromDebugMemory(u64 vaddr) const { @@ -94,7 +94,7 @@ struct Memory::Impl { return {}; } - return system.DeviceMemory().GetPointer<u8>(paddr) + vaddr; + return system.DeviceMemory().GetPointer<u8>(paddr + vaddr); } u8 Read8(const Common::ProcessAddress addr) { @@ -220,7 +220,8 @@ struct Memory::Impl { break; } case Common::PageType::Memory: { - u8* mem_ptr = pointer + page_offset + (page_index << YUZU_PAGEBITS); + u8* mem_ptr = + reinterpret_cast<u8*>(pointer + page_offset + (page_index << YUZU_PAGEBITS)); on_memory(copy_amount, mem_ptr); break; } @@ -462,7 +463,7 @@ struct Memory::Impl { break; case Common::PageType::Memory: current_page_table->pointers[vaddr >> YUZU_PAGEBITS].Store( - nullptr, Common::PageType::DebugMemory); + 0, Common::PageType::DebugMemory); break; default: UNREACHABLE(); @@ -480,7 +481,8 @@ struct Memory::Impl { case Common::PageType::DebugMemory: { u8* const pointer{GetPointerFromDebugMemory(vaddr & ~YUZU_PAGEMASK)}; current_page_table->pointers[vaddr >> YUZU_PAGEBITS].Store( - pointer - (vaddr & ~YUZU_PAGEMASK), Common::PageType::Memory); + reinterpret_cast<uintptr_t>(pointer) - (vaddr & ~YUZU_PAGEMASK), + Common::PageType::Memory); break; } default: @@ -520,7 +522,7 @@ struct Memory::Impl { case Common::PageType::DebugMemory: case Common::PageType::Memory: current_page_table->pointers[vaddr >> YUZU_PAGEBITS].Store( - nullptr, Common::PageType::RasterizerCachedMemory); + 0, Common::PageType::RasterizerCachedMemory); break; case Common::PageType::RasterizerCachedMemory: // There can be more than one GPU region mapped per CPU region, so it's common @@ -548,10 +550,11 @@ struct Memory::Impl { // pagetable after unmapping a VMA. In that case the underlying VMA will no // longer exist, and we should just leave the pagetable entry blank. current_page_table->pointers[vaddr >> YUZU_PAGEBITS].Store( - nullptr, Common::PageType::Unmapped); + 0, Common::PageType::Unmapped); } else { current_page_table->pointers[vaddr >> YUZU_PAGEBITS].Store( - pointer - (vaddr & ~YUZU_PAGEMASK), Common::PageType::Memory); + reinterpret_cast<uintptr_t>(pointer) - (vaddr & ~YUZU_PAGEMASK), + Common::PageType::Memory); } break; } @@ -598,7 +601,7 @@ struct Memory::Impl { "Mapping memory page without a pointer @ {:016x}", base * YUZU_PAGESIZE); while (base != end) { - page_table.pointers[base].Store(nullptr, type); + page_table.pointers[base].Store(0, type); page_table.backing_addr[base] = 0; page_table.blocks[base] = 0; base += 1; @@ -607,7 +610,8 @@ struct Memory::Impl { auto orig_base = base; while (base != end) { auto host_ptr = - system.DeviceMemory().GetPointer<u8>(target) - (base << YUZU_PAGEBITS); + reinterpret_cast<uintptr_t>(system.DeviceMemory().GetPointer<u8>(target)) - + (base << YUZU_PAGEBITS); auto backing = GetInteger(target) - (base << YUZU_PAGEBITS); page_table.pointers[base].Store(host_ptr, type); page_table.backing_addr[base] = backing; @@ -633,8 +637,8 @@ struct Memory::Impl { // Avoid adding any extra logic to this fast-path block const uintptr_t raw_pointer = current_page_table->pointers[vaddr >> YUZU_PAGEBITS].Raw(); - if (u8* const pointer = Common::PageTable::PageInfo::ExtractPointer(raw_pointer)) { - return &pointer[vaddr]; + if (const uintptr_t pointer = Common::PageTable::PageInfo::ExtractPointer(raw_pointer)) { + return reinterpret_cast<u8*>(pointer + vaddr); } switch (Common::PageTable::PageInfo::ExtractType(raw_pointer)) { case Common::PageType::Unmapped: @@ -828,7 +832,7 @@ bool Memory::IsValidVirtualAddress(const Common::ProcessAddress vaddr) const { return false; } const auto [pointer, type] = page_table.pointers[page].PointerType(); - return pointer != nullptr || type == Common::PageType::RasterizerCachedMemory || + return pointer != 0 || type == Common::PageType::RasterizerCachedMemory || type == Common::PageType::DebugMemory; } diff --git a/src/video_core/query_cache.h b/src/video_core/query_cache.h index 1528cc1dd..7047e2e63 100644 --- a/src/video_core/query_cache.h +++ b/src/video_core/query_cache.h @@ -103,7 +103,9 @@ public: explicit QueryCacheBase(VideoCore::RasterizerInterface& rasterizer_, Core::Memory::Memory& cpu_memory_) : rasterizer{rasterizer_}, - cpu_memory{cpu_memory_}, streams{{CounterStream{static_cast<QueryCache&>(*this), + // Use reinterpret_cast instead of static_cast as workaround for + // UBSan bug (https://github.com/llvm/llvm-project/issues/59060) + cpu_memory{cpu_memory_}, streams{{CounterStream{reinterpret_cast<QueryCache&>(*this), VideoCore::QueryType::SamplesPassed}}} { (void)slot_async_jobs.insert(); // Null value } diff --git a/src/video_core/rasterizer_accelerated.cpp b/src/video_core/rasterizer_accelerated.cpp index 4a197d65d..f200a650f 100644 --- a/src/video_core/rasterizer_accelerated.cpp +++ b/src/video_core/rasterizer_accelerated.cpp @@ -13,7 +13,8 @@ namespace VideoCore { using namespace Core::Memory; -RasterizerAccelerated::RasterizerAccelerated(Memory& cpu_memory_) : cpu_memory{cpu_memory_} {} +RasterizerAccelerated::RasterizerAccelerated(Memory& cpu_memory_) + : cached_pages(std::make_unique<CachedPages>()), cpu_memory{cpu_memory_} {} RasterizerAccelerated::~RasterizerAccelerated() = default; @@ -26,7 +27,7 @@ void RasterizerAccelerated::UpdatePagesCachedCount(VAddr addr, u64 size, int del std::atomic_thread_fence(std::memory_order_acquire); const u64 page_end = Common::DivCeil(addr + size, YUZU_PAGESIZE); for (u64 page = addr >> YUZU_PAGEBITS; page != page_end; ++page) { - std::atomic_uint16_t& count = cached_pages.at(page >> 2).Count(page); + std::atomic_uint16_t& count = cached_pages->at(page >> 2).Count(page); if (delta > 0) { ASSERT_MSG(count.load(std::memory_order::relaxed) < UINT16_MAX, "Count may overflow!"); diff --git a/src/video_core/rasterizer_accelerated.h b/src/video_core/rasterizer_accelerated.h index 7118b8aff..e6c0ea87a 100644 --- a/src/video_core/rasterizer_accelerated.h +++ b/src/video_core/rasterizer_accelerated.h @@ -41,7 +41,8 @@ private: }; static_assert(sizeof(CacheEntry) == 8, "CacheEntry should be 8 bytes!"); - std::array<CacheEntry, 0x2000000> cached_pages; + using CachedPages = std::array<CacheEntry, 0x2000000>; + std::unique_ptr<CachedPages> cached_pages; Core::Memory::Memory& cpu_memory; }; diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index e04852e01..9c6fbb918 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -554,14 +554,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR } sets_per_pool = 64; - if (extensions.extended_dynamic_state3 && is_amd_driver && - properties.properties.driverVersion >= VK_MAKE_API_VERSION(0, 2, 0, 270)) { - LOG_WARNING(Render_Vulkan, - "AMD drivers after 23.5.2 have broken extendedDynamicState3ColorBlendEquation"); - features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false; - features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation = false; - dynamic_state3_blending = false; - } if (is_amd_driver) { // AMD drivers need a higher amount of Sets per Pool in certain circumstances like in XC2. sets_per_pool = 96; diff --git a/src/yuzu/discord_impl.cpp b/src/yuzu/discord_impl.cpp index ac2fc1bcb..57b50abd0 100644 --- a/src/yuzu/discord_impl.cpp +++ b/src/yuzu/discord_impl.cpp @@ -3,9 +3,14 @@ #include <chrono> #include <string> + +#include <QEventLoop> +#include <QNetworkAccessManager> +#include <QNetworkReply> + #include <discord_rpc.h> #include <fmt/format.h> -#include <httplib.h> + #include "common/common_types.h" #include "common/string_util.h" #include "core/core.h" @@ -31,7 +36,7 @@ void DiscordImpl::Pause() { Discord_ClearPresence(); } -static std::string GetGameString(const std::string& title) { +std::string DiscordImpl::GetGameString(const std::string& title) { // Convert to lowercase std::string icon_name = Common::ToLower(title); @@ -56,51 +61,56 @@ static std::string GetGameString(const std::string& title) { return icon_name; } -void DiscordImpl::Update() { +void DiscordImpl::UpdateGameStatus(bool use_default) { + const std::string default_text = "yuzu is an emulator for the Nintendo Switch"; + const std::string default_image = "yuzu_logo"; + const std::string url = use_default ? default_image : game_url; s64 start_time = std::chrono::duration_cast<std::chrono::seconds>( std::chrono::system_clock::now().time_since_epoch()) .count(); + DiscordRichPresence presence{}; + + presence.largeImageKey = url.c_str(); + presence.largeImageText = game_title.c_str(); + presence.smallImageKey = default_image.c_str(); + presence.smallImageText = default_text.c_str(); + presence.state = game_title.c_str(); + presence.details = "Currently in game"; + presence.startTimestamp = start_time; + Discord_UpdatePresence(&presence); +} + +void DiscordImpl::Update() { const std::string default_text = "yuzu is an emulator for the Nintendo Switch"; const std::string default_image = "yuzu_logo"; - std::string game_cover_url = "https://yuzu-emu.org"; - std::string title; - - DiscordRichPresence presence{}; if (system.IsPoweredOn()) { - system.GetAppLoader().ReadTitle(title); + system.GetAppLoader().ReadTitle(game_title); // Used to format Icon URL for yuzu website game compatibility page - std::string icon_name = GetGameString(title); - - // New Check for game cover - httplib::Client cli(game_cover_url); - cli.set_connection_timeout(std::chrono::seconds(3)); - cli.set_read_timeout(std::chrono::seconds(3)); - - if (auto res = cli.Head(fmt::format("/images/game/boxart/{}.png", icon_name))) { - if (res->status == 200) { - game_cover_url += fmt::format("/images/game/boxart/{}.png", icon_name); - } else { - game_cover_url = "yuzu_logo"; - } - } else { - game_cover_url = "yuzu_logo"; - } - - presence.largeImageKey = game_cover_url.c_str(); - presence.largeImageText = title.c_str(); - - presence.smallImageKey = default_image.c_str(); - presence.smallImageText = default_text.c_str(); - presence.state = title.c_str(); - presence.details = "Currently in game"; - } else { - presence.largeImageKey = default_image.c_str(); - presence.largeImageText = default_text.c_str(); - presence.details = "Currently not in game"; + std::string icon_name = GetGameString(game_title); + game_url = fmt::format("https://yuzu-emu.org/images/game/boxart/{}.png", icon_name); + + QNetworkAccessManager manager; + QNetworkRequest request; + request.setUrl(QUrl(QString::fromStdString(game_url))); + request.setTransferTimeout(3000); + QNetworkReply* reply = manager.head(request); + QEventLoop request_event_loop; + QObject::connect(reply, &QNetworkReply::finished, &request_event_loop, &QEventLoop::quit); + request_event_loop.exec(); + UpdateGameStatus(reply->error()); + return; } + s64 start_time = std::chrono::duration_cast<std::chrono::seconds>( + std::chrono::system_clock::now().time_since_epoch()) + .count(); + + DiscordRichPresence presence{}; + presence.largeImageKey = default_image.c_str(); + presence.largeImageText = default_text.c_str(); + presence.details = "Currently not in game"; presence.startTimestamp = start_time; Discord_UpdatePresence(&presence); } diff --git a/src/yuzu/discord_impl.h b/src/yuzu/discord_impl.h index 84710b9c6..eb6cf9ae0 100644 --- a/src/yuzu/discord_impl.h +++ b/src/yuzu/discord_impl.h @@ -19,6 +19,13 @@ public: void Pause() override; void Update() override; +private: + std::string GetGameString(const std::string& title); + void UpdateGameStatus(bool use_default); + + std::string game_url{}; + std::string game_title{}; + Core::System& system; }; diff --git a/src/yuzu/game_list_worker.cpp b/src/yuzu/game_list_worker.cpp index 5c910c9e0..9404365b4 100644 --- a/src/yuzu/game_list_worker.cpp +++ b/src/yuzu/game_list_worker.cpp @@ -265,7 +265,11 @@ void GameListWorker::AddTitlesToGameList(GameListDir* parent_dir) { std::vector<u8> icon; std::string name; u64 program_id = 0; - loader->ReadProgramId(program_id); + const auto result = loader->ReadProgramId(program_id); + + if (result != Loader::ResultStatus::Success) { + continue; + } const PatchManager patch{program_id, system.GetFileSystemController(), system.GetContentProvider()}; |