Merge branch 'Lime3DS:master' into master
16
.ci/pack.sh
|
@ -46,20 +46,8 @@ function pack_artifacts() {
|
|||
tar czvf "$ARCHIVE_FULL_NAME" "$REV_NAME"
|
||||
fi
|
||||
mv "$ARCHIVE_FULL_NAME" artifacts/
|
||||
|
||||
if [ -z "$SKIP_7Z" ]; then
|
||||
# Create .7z
|
||||
ARCHIVE_FULL_NAME="$ARCHIVE_NAME.7z"
|
||||
mv "$REV_NAME" "$RELEASE_NAME"
|
||||
7z a "$ARCHIVE_FULL_NAME" "$RELEASE_NAME"
|
||||
mv "$ARCHIVE_FULL_NAME" artifacts/
|
||||
|
||||
# Clean up created release artifacts directory.
|
||||
rm -rf "$RELEASE_NAME"
|
||||
else
|
||||
# Clean up created rev artifacts directory.
|
||||
rm -rf "$REV_NAME"
|
||||
fi
|
||||
# Clean up created rev artifacts directory.
|
||||
rm -rf "$REV_NAME"
|
||||
}
|
||||
|
||||
if [ -n "$UNPACKED" ]; then
|
||||
|
|
2
.github/workflows/build.yml
vendored
|
@ -284,4 +284,4 @@ jobs:
|
|||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
asset_paths: '["./**/*.tar.*","./**/*.AppImage","./**/*.7z","./**/*.zip","./**/*.apk","./**/*.aab"]'
|
||||
asset_paths: '["./**/*.tar.*","./**/*.AppImage","./**/*.zip","./**/*.apk"]'
|
||||
|
|
21
README.md
|
@ -19,9 +19,25 @@
|
|||
|
||||
Download the latest release from [Releases](https://github.com/Lime3DS/Lime3DS/releases).
|
||||
|
||||
---
|
||||
### Android
|
||||
Download the latest `.apk` release from [Releases](https://github.com/Lime3DS/Lime3DS/releases). (A F-Droid/IzzyOnDroid release is planned to drop soon)
|
||||
The recommended method of downloading Lime3DS on Android is via Obtainium:
|
||||
1. Download and install Obtainium from [here](https://github.com/ImranR98/Obtainium/releases) (use the file named `app-release.apk`)
|
||||
2. Open Obtainium and click 'Add App'
|
||||
3. Type `https://github.com/Lime3DS/Lime3DS` into the 'App Source URL' section
|
||||
4. Click 'Add'
|
||||
5. Click 'Install' (or 'Update' if you have an existing APK install)
|
||||
6. Lime3DS is now ready to use
|
||||
|
||||
Using Obtainium will allow for quick and easy installation of updates.
|
||||
\
|
||||
\
|
||||
\
|
||||
Alternatively, you can install the latest APK from the [Releases](https://github.com/Lime3DS/Lime3DS/releases) page.
|
||||
|
||||
This will require a new APK to be manually downloaded each time an update is released.
|
||||
|
||||
---
|
||||
### Linux
|
||||
|
||||
Lime3DS is available as an AppImage on the [Releases](https://github.com/Lime3DS/Lime3DS/releases) page.
|
||||
|
@ -30,6 +46,9 @@ We are also on Flathub:
|
|||
|
||||
<a href=https://flathub.org/apps/io.github.lime3ds.Lime3DS><img width='180' alt='Download on Flathub' src='https://dl.flathub.org/assets/badges/flathub-badge-en.png'/></a>
|
||||
|
||||
# Build Instructions
|
||||
Please refer to our website's [wiki](https://lime3ds.github.io/pages/wiki.html) in order to find building instructions for Windows, Linux, Android and MacOS
|
||||
|
||||
# Contribute
|
||||
If you believe you can help with this project, please lend us your talent! We're a team of passionate enthusiasts who need all the help we can get.
|
||||
|
||||
|
|
5
dist/languages/da_DK.ts
vendored
|
@ -3893,6 +3893,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonym data bliver indsamlet</a>for at hjælpe med at forbedre Citra.<br/><br/>Har du lyst til at dele din brugsdata med os?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/de.ts
vendored
|
@ -3895,6 +3895,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation>Möchten Sie <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>anonyme Nutzungsdaten</a> an das Citra Team senden und so helfen, Citra weiter zu verbessern?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/el.ts
vendored
|
@ -3894,6 +3894,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Συλλέγονται ανώνυμα δεδομένα</a> για τη βελτίωση του Citra. <br/><br/>Θέλετε να μοιραστείτε τα δεδομένα χρήσης σας με εμάς;</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/es_ES.ts
vendored
|
@ -3896,6 +3896,11 @@ Por favor, compruebe la instalación de FFmpeg usada para la compilación.</tran
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Se recogen datos anónimos</a> para ayudar a mejorar Citra. <br/><br/>¿Quieres compartir tus datos de uso con nosotros?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/fi.ts
vendored
|
@ -3893,6 +3893,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonyymiä tietoa kerätään</a>parantaaksemme Citraa. <br/><br/>Haluaisitko jakaa käyttötetoa meidän kanssa?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/fr.ts
vendored
|
@ -3896,6 +3896,11 @@ Veuillez vérifier votre installation FFmpeg utilisée pour la compilation.</tra
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Des données anonymes sont collectées</a> afin d'aider à l'amélioration de Citra. <br/><br/>Souhaitez vous communiquer vos données avec nous ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/hu_HU.ts
vendored
|
@ -3892,6 +3892,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/id.ts
vendored
|
@ -3895,6 +3895,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Data anonim dikumpulkan</a>untuk membantu Citra menjadi lebih baik. <br/><br/>Apakah Anda ingin membagikan penggunaan data Anda dengan kami?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/it.ts
vendored
|
@ -3896,6 +3896,11 @@ Verifica l'installazione di FFmpeg usata per la compilazione.</translation>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Vengono raccolti dati anonimi </a> per aiutare lo sviluppo di Citra. <br/><br/>Vuoi condividere i tuoi dati di utilizzo con noi?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/ja_JP.ts
vendored
|
@ -3897,6 +3897,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>匿名のデータ</a>がCitraの改善のために収集されます<br/><br/>利用状況データの提供に同意しますか?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/ko_KR.ts
vendored
|
@ -3896,6 +3896,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation>Citra를 개선하기위해 <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>익명데이터가 수집됩니다</a>. <br/><br/>사용 데이터를 공유하시겠습니까?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/lt_LT.ts
vendored
|
@ -3891,6 +3891,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anoniminiai duomenys yra renkami </a> kad padėtumėte Citra komandai. <br/><br/>Ar norite pasidalinti savo duomenimis su mumis?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/nb.ts
vendored
|
@ -3894,6 +3894,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonym data samles inn</a> for å forbedre Citra. <br/><br/>Vil du dele dine brukerdata med oss?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/nl.ts
vendored
|
@ -3896,6 +3896,11 @@ Controleer de FFmpeg-installatie die wordt gebruikt voor de compilatie.</transla
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonieme gegevens worden verzameld</a> om Citra te helpen verbeteren. <br/><br/> Wilt u uw gebruiksgegevens met ons delen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/pl_PL.ts
vendored
|
@ -3893,6 +3893,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonimowe dane są zbierane</a> w celu wsparcia rozwoju Citry. <br/><br/>Czy chciałbyś się z nami podzielić danymi użytkowania?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/pt_BR.ts
vendored
|
@ -3895,6 +3895,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Dados anônimos são recolhidos</a> para ajudar a melhorar o Citra. <br/><br/>Gostaria de compartilhar os seus dados de utilização conosco?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/ro_RO.ts
vendored
|
@ -3894,6 +3894,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Date anonime sunt colectate</a> pentru a ajuta îmbunătățirea lui Citra. <br/><br/> Doriți să partajați uzul de datele cu noi?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/ru_RU.ts
vendored
|
@ -3898,6 +3898,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation>Для оказания помощи в улучшении приложения Citra <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>проводится сбор анонимных данных</a>. <br/><br/>Поделиться данными об использовании?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/tr_TR.ts
vendored
|
@ -3893,6 +3893,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Citrayı geliştirmeye yardımcı olmak için</a> anonim veri toplandı. <br/><br/>Kullanım verinizi bizimle paylaşmak ister misiniz?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/vi_VN.ts
vendored
|
@ -3893,6 +3893,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Dữ liệu ẩn danh được thu thập</a> để giúp cải thiện Citra. <br/><br/>Bạn có muốn chia sẻ dữ liệu của bạn với chúng tôi?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/zh_CN.ts
vendored
|
@ -3896,6 +3896,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>我们收集匿名数据</a>来帮助改进 Citra 。<br/><br/>您愿意和我们分享你的使用数据吗?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/zh_TW.ts
vendored
|
@ -3894,6 +3894,11 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>收集匿名的使用資料</a>可以用來改善 Citra。<br/><br/>您同意將您的使用資料分享給 Citra 嗎?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
|
@ -278,11 +278,6 @@ android.applicationVariants.configureEach {
|
|||
include("*.apk")
|
||||
into(layout.buildDirectory.dir("bundle"))
|
||||
}
|
||||
project.copy {
|
||||
from(layout.buildDirectory.dir("outputs/bundle/${variant.name}"))
|
||||
include("*.aab")
|
||||
into(layout.buildDirectory.dir("bundle"))
|
||||
}
|
||||
}
|
||||
}
|
||||
tasks.named("bundle${capitalizedName}").configure { finalizedBy(copyTask) }
|
||||
|
|
|
@ -619,8 +619,93 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
|
|||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_reset_all -> {
|
||||
resetAllScales()
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale -> {
|
||||
showAdjustScaleDialog()
|
||||
showAdjustScaleDialog("controlScale")
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_button_a -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_A)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_button_b -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_B)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_button_x -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_X)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_button_y -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_Y)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_button_l -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.TRIGGER_L)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_button_r -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.TRIGGER_R)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_button_zl -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_ZL)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_button_zr -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_ZR)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_button_start -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_START)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_button_select -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_SELECT)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_controller_dpad -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.DPAD)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_controller_circlepad -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.STICK_LEFT)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_controller_c -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.STICK_C)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_button_home -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_HOME)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_scale_button_swap -> {
|
||||
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_SWAP)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_emulation_adjust_opacity -> {
|
||||
showAdjustOpacityDialog()
|
||||
true
|
||||
}
|
||||
|
||||
|
@ -769,16 +854,16 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
|
|||
.show()
|
||||
}
|
||||
|
||||
private fun showAdjustScaleDialog() {
|
||||
private fun showAdjustScaleDialog(target: String) {
|
||||
val sliderBinding = DialogSliderBinding.inflate(layoutInflater)
|
||||
|
||||
sliderBinding.apply {
|
||||
slider.valueTo = 150f
|
||||
slider.value = preferences.getInt("controlScale", 50).toFloat()
|
||||
slider.value = preferences.getInt(target, 50).toFloat()
|
||||
slider.addOnChangeListener(
|
||||
Slider.OnChangeListener { slider: Slider, progress: Float, _: Boolean ->
|
||||
textValue.text = (progress.toInt() + 50).toString()
|
||||
setControlScale(slider.value.toInt())
|
||||
setControlScale(slider.value.toInt(), target)
|
||||
})
|
||||
textValue.text = (sliderBinding.slider.value.toInt() + 50).toString()
|
||||
textUnits.text = "%"
|
||||
|
@ -789,20 +874,85 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
|
|||
.setTitle(R.string.emulation_control_scale)
|
||||
.setView(sliderBinding.root)
|
||||
.setNegativeButton(android.R.string.cancel) { _: DialogInterface?, _: Int ->
|
||||
setControlScale(previousProgress)
|
||||
setControlScale(previousProgress, target)
|
||||
}
|
||||
.setPositiveButton(android.R.string.ok) { _: DialogInterface?, _: Int ->
|
||||
setControlScale(sliderBinding.slider.value.toInt())
|
||||
setControlScale(sliderBinding.slider.value.toInt(), target)
|
||||
}
|
||||
.setNeutralButton(R.string.slider_default) { _: DialogInterface?, _: Int ->
|
||||
setControlScale(50)
|
||||
setControlScale(50, target)
|
||||
}
|
||||
.show()
|
||||
}
|
||||
|
||||
private fun setControlScale(scale: Int) {
|
||||
private fun showAdjustOpacityDialog() {
|
||||
val sliderBinding = DialogSliderBinding.inflate(layoutInflater)
|
||||
|
||||
sliderBinding.apply {
|
||||
slider.valueTo = 100f
|
||||
slider.value = preferences.getInt("controlOpacity", 50).toFloat()
|
||||
slider.addOnChangeListener(
|
||||
Slider.OnChangeListener { slider: Slider, progress: Float, _: Boolean ->
|
||||
textValue.text = (progress.toInt()).toString()
|
||||
setControlOpacity(slider.value.toInt())
|
||||
})
|
||||
textValue.text = (sliderBinding.slider.value.toInt()).toString()
|
||||
textUnits.text = "%"
|
||||
}
|
||||
val previousProgress = sliderBinding.slider.value.toInt()
|
||||
|
||||
MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(R.string.emulation_control_opacity)
|
||||
.setView(sliderBinding.root)
|
||||
.setNegativeButton(android.R.string.cancel) { _: DialogInterface?, _: Int ->
|
||||
setControlOpacity(previousProgress)
|
||||
}
|
||||
.setPositiveButton(android.R.string.ok) { _: DialogInterface?, _: Int ->
|
||||
setControlOpacity(sliderBinding.slider.value.toInt())
|
||||
}
|
||||
.setNeutralButton(R.string.slider_default) { _: DialogInterface?, _: Int ->
|
||||
setControlOpacity(50)
|
||||
}
|
||||
.show()
|
||||
}
|
||||
|
||||
private fun setControlScale(scale: Int, target: String) {
|
||||
preferences.edit()
|
||||
.putInt("controlScale", scale)
|
||||
.putInt(target, scale)
|
||||
.apply()
|
||||
binding.surfaceInputOverlay.refreshControls()
|
||||
}
|
||||
|
||||
private fun resetScale(target: String) {
|
||||
preferences.edit().putInt(
|
||||
target,
|
||||
50
|
||||
).apply()
|
||||
}
|
||||
|
||||
private fun resetAllScales() {
|
||||
resetScale("controlScale")
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_A)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_B)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_X)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_Y)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.TRIGGER_L)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.TRIGGER_R)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_ZL)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_ZR)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_START)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_SELECT)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.DPAD)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.STICK_LEFT)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.STICK_C)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_HOME)
|
||||
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_SWAP)
|
||||
binding.surfaceInputOverlay.refreshControls()
|
||||
}
|
||||
|
||||
private fun setControlOpacity(opacity: Int) {
|
||||
preferences.edit()
|
||||
.putInt("controlOpacity", opacity)
|
||||
.apply()
|
||||
binding.surfaceInputOverlay.refreshControls()
|
||||
}
|
||||
|
@ -818,8 +968,9 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
|
|||
}
|
||||
|
||||
private fun resetInputOverlay() {
|
||||
resetAllScales()
|
||||
preferences.edit()
|
||||
.putInt("controlScale", 50)
|
||||
.putInt("controlOpacity", 50)
|
||||
.apply()
|
||||
|
||||
val editor = preferences.edit()
|
||||
|
|
|
@ -939,11 +939,17 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
|||
scale *= (preferences.getInt("controlScale", 50) + 50).toFloat()
|
||||
scale /= 100f
|
||||
|
||||
|
||||
scale *= (preferences.getInt("controlScale-$buttonId", 50) + 50).toFloat()
|
||||
scale /= 100f
|
||||
|
||||
val opacity: Int = preferences.getInt("controlOpacity", 50) * 255 / 100
|
||||
|
||||
// Initialize the InputOverlayDrawableButton.
|
||||
val defaultStateBitmap = getBitmap(context, defaultResId, scale)
|
||||
val pressedStateBitmap = getBitmap(context, pressedResId, scale)
|
||||
val overlayDrawable =
|
||||
InputOverlayDrawableButton(res, defaultStateBitmap, pressedStateBitmap, buttonId)
|
||||
InputOverlayDrawableButton(res, defaultStateBitmap, pressedStateBitmap, buttonId, opacity)
|
||||
|
||||
// The X and Y coordinates of the InputOverlayDrawableButton on the InputOverlay.
|
||||
// These were set in the input overlay configuration menu.
|
||||
|
@ -995,6 +1001,15 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
|||
scale *= (preferences.getInt("controlScale", 50) + 50).toFloat()
|
||||
scale /= 100f
|
||||
|
||||
scale *= (preferences.getInt(
|
||||
"controlScale-" + NativeLibrary.ButtonType.DPAD,
|
||||
50
|
||||
) + 50).toFloat()
|
||||
|
||||
scale /= 100f
|
||||
|
||||
val opacity: Int = preferences.getInt("controlOpacity", 50) * 255 / 100
|
||||
|
||||
// Initialize the InputOverlayDrawableDpad.
|
||||
val defaultStateBitmap = getBitmap(context, defaultResId, scale)
|
||||
val pressedOneDirectionStateBitmap = getBitmap(context, pressedOneDirectionResId, scale)
|
||||
|
@ -1007,7 +1022,8 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
|||
buttonUp,
|
||||
buttonDown,
|
||||
buttonLeft,
|
||||
buttonRight
|
||||
buttonRight,
|
||||
opacity
|
||||
)
|
||||
|
||||
// The X and Y coordinates of the InputOverlayDrawableDpad on the InputOverlay.
|
||||
|
@ -1052,6 +1068,11 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
|||
scale *= (preferences.getInt("controlScale", 50) + 50).toFloat()
|
||||
scale /= 100f
|
||||
|
||||
scale *= (preferences.getInt("controlScale-$joystick", 50) + 50).toFloat()
|
||||
scale /= 100f
|
||||
|
||||
val opacity: Int = preferences.getInt("controlOpacity", 50) * 255 / 100
|
||||
|
||||
// Initialize the InputOverlayDrawableJoystick.
|
||||
val bitmapOuter = getBitmap(context, resOuter, scale)
|
||||
val bitmapInnerDefault = getBitmap(context, defaultResInner, scale)
|
||||
|
@ -1088,7 +1109,8 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
|||
bitmapInnerPressed,
|
||||
outerRect,
|
||||
innerRect,
|
||||
joystick
|
||||
joystick,
|
||||
opacity
|
||||
)
|
||||
|
||||
// Need to set the image's position
|
||||
|
|
|
@ -26,7 +26,8 @@ class InputOverlayDrawableButton(
|
|||
res: Resources,
|
||||
defaultStateBitmap: Bitmap,
|
||||
pressedStateBitmap: Bitmap,
|
||||
val id: Int
|
||||
val id: Int,
|
||||
val opacity: Int
|
||||
) {
|
||||
var trackId: Int
|
||||
private var previousTouchX = 0
|
||||
|
@ -114,7 +115,11 @@ class InputOverlayDrawableButton(
|
|||
controlPositionY = y
|
||||
}
|
||||
|
||||
fun draw(canvas: Canvas) = currentStateBitmapDrawable.draw(canvas)
|
||||
fun draw(canvas: Canvas) {
|
||||
val bitmapDrawable: BitmapDrawable = currentStateBitmapDrawable
|
||||
bitmapDrawable.alpha = opacity
|
||||
bitmapDrawable.draw(canvas)
|
||||
}
|
||||
|
||||
private val currentStateBitmapDrawable: BitmapDrawable
|
||||
get() = if (pressedState) pressedStateBitmap else defaultStateBitmap
|
||||
|
|
|
@ -25,6 +25,7 @@ import io.github.lime3ds.android.NativeLibrary
|
|||
* @param downId Identifier for the down button.
|
||||
* @param leftId Identifier for the left button.
|
||||
* @param rightId Identifier for the right button.
|
||||
* @param opacity 0-255 alpha value
|
||||
*/
|
||||
class InputOverlayDrawableDpad(
|
||||
res: Resources,
|
||||
|
@ -34,7 +35,8 @@ class InputOverlayDrawableDpad(
|
|||
val upId: Int,
|
||||
val downId: Int,
|
||||
val leftId: Int,
|
||||
val rightId: Int
|
||||
val rightId: Int,
|
||||
val opacity: Int
|
||||
) {
|
||||
var trackId: Int
|
||||
private var previousTouchX = 0
|
||||
|
@ -137,6 +139,7 @@ class InputOverlayDrawableDpad(
|
|||
|
||||
// Pressed up
|
||||
if (upButtonState && !leftButtonState && !rightButtonState) {
|
||||
pressedOneDirectionStateBitmap.alpha = opacity
|
||||
pressedOneDirectionStateBitmap.draw(canvas)
|
||||
return
|
||||
}
|
||||
|
@ -145,6 +148,7 @@ class InputOverlayDrawableDpad(
|
|||
if (downButtonState && !leftButtonState && !rightButtonState) {
|
||||
canvas.save()
|
||||
canvas.rotate(180f, px.toFloat(), py.toFloat())
|
||||
pressedOneDirectionStateBitmap.alpha = opacity
|
||||
pressedOneDirectionStateBitmap.draw(canvas)
|
||||
canvas.restore()
|
||||
return
|
||||
|
@ -154,6 +158,7 @@ class InputOverlayDrawableDpad(
|
|||
if (leftButtonState && !upButtonState && !downButtonState) {
|
||||
canvas.save()
|
||||
canvas.rotate(270f, px.toFloat(), py.toFloat())
|
||||
pressedOneDirectionStateBitmap.alpha = opacity
|
||||
pressedOneDirectionStateBitmap.draw(canvas)
|
||||
canvas.restore()
|
||||
return
|
||||
|
@ -163,6 +168,7 @@ class InputOverlayDrawableDpad(
|
|||
if (rightButtonState && !upButtonState && !downButtonState) {
|
||||
canvas.save()
|
||||
canvas.rotate(90f, px.toFloat(), py.toFloat())
|
||||
pressedOneDirectionStateBitmap.alpha = opacity
|
||||
pressedOneDirectionStateBitmap.draw(canvas)
|
||||
canvas.restore()
|
||||
return
|
||||
|
@ -170,6 +176,7 @@ class InputOverlayDrawableDpad(
|
|||
|
||||
// Pressed up left
|
||||
if (upButtonState && leftButtonState && !rightButtonState) {
|
||||
pressedTwoDirectionsStateBitmap.alpha = opacity
|
||||
pressedTwoDirectionsStateBitmap.draw(canvas)
|
||||
return
|
||||
}
|
||||
|
@ -178,6 +185,7 @@ class InputOverlayDrawableDpad(
|
|||
if (upButtonState && !leftButtonState && rightButtonState) {
|
||||
canvas.save()
|
||||
canvas.rotate(90f, px.toFloat(), py.toFloat())
|
||||
pressedTwoDirectionsStateBitmap.alpha = opacity
|
||||
pressedTwoDirectionsStateBitmap.draw(canvas)
|
||||
canvas.restore()
|
||||
return
|
||||
|
@ -187,6 +195,7 @@ class InputOverlayDrawableDpad(
|
|||
if (downButtonState && leftButtonState && !rightButtonState) {
|
||||
canvas.save()
|
||||
canvas.rotate(270f, px.toFloat(), py.toFloat())
|
||||
pressedTwoDirectionsStateBitmap.alpha = opacity
|
||||
pressedTwoDirectionsStateBitmap.draw(canvas)
|
||||
canvas.restore()
|
||||
return
|
||||
|
@ -196,12 +205,14 @@ class InputOverlayDrawableDpad(
|
|||
if (downButtonState && !leftButtonState && rightButtonState) {
|
||||
canvas.save()
|
||||
canvas.rotate(180f, px.toFloat(), py.toFloat())
|
||||
pressedTwoDirectionsStateBitmap.alpha = opacity
|
||||
pressedTwoDirectionsStateBitmap.draw(canvas)
|
||||
canvas.restore()
|
||||
return
|
||||
}
|
||||
|
||||
// Not pressed
|
||||
defaultStateBitmap.alpha = opacity
|
||||
defaultStateBitmap.draw(canvas)
|
||||
}
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ import kotlin.math.sqrt
|
|||
* @param rectOuter [Rect] which represents the outer joystick bounds.
|
||||
* @param rectInner [Rect] which represents the inner joystick bounds.
|
||||
* @param joystickId Identifier for which joystick this is.
|
||||
* @param opacity 0-255 alpha value
|
||||
*/
|
||||
class InputOverlayDrawableJoystick(
|
||||
res: Resources,
|
||||
|
@ -37,7 +38,8 @@ class InputOverlayDrawableJoystick(
|
|||
bitmapInnerPressed: Bitmap,
|
||||
rectOuter: Rect,
|
||||
rectInner: Rect,
|
||||
val joystickId: Int
|
||||
val joystickId: Int,
|
||||
val opacity: Int
|
||||
) {
|
||||
var trackId = -1
|
||||
var xAxis = 0f
|
||||
|
@ -79,10 +81,14 @@ class InputOverlayDrawableJoystick(
|
|||
boundsBoxBitmap.alpha = 0
|
||||
boundsBoxBitmap.bounds = virtBounds
|
||||
setInnerBounds()
|
||||
defaultStateInnerBitmap.alpha = opacity
|
||||
pressedStateInnerBitmap.alpha = opacity
|
||||
outerBitmap.alpha = opacity
|
||||
}
|
||||
|
||||
fun draw(canvas: Canvas?) {
|
||||
outerBitmap.draw(canvas!!)
|
||||
currentStateBitmapDrawable.alpha = opacity
|
||||
currentStateBitmapDrawable.draw(canvas)
|
||||
boundsBoxBitmap.draw(canvas)
|
||||
}
|
||||
|
@ -103,7 +109,7 @@ class InputOverlayDrawableJoystick(
|
|||
}
|
||||
pressedState = true
|
||||
outerBitmap.alpha = 0
|
||||
boundsBoxBitmap.alpha = 255
|
||||
boundsBoxBitmap.alpha = opacity
|
||||
if (EmulationMenuSettings.joystickRelCenter) {
|
||||
virtBounds.offset(
|
||||
xPosition - virtBounds.centerX(),
|
||||
|
@ -123,7 +129,7 @@ class InputOverlayDrawableJoystick(
|
|||
yAxis = 0.0f
|
||||
angle = 0.0f
|
||||
radius = 0.0f
|
||||
outerBitmap.alpha = 255
|
||||
outerBitmap.alpha = opacity
|
||||
boundsBoxBitmap.alpha = 0
|
||||
virtBounds = Rect(origBounds.left, origBounds.top, origBounds.right, origBounds.bottom)
|
||||
bounds = Rect(origBounds.left, origBounds.top, origBounds.right, origBounds.bottom)
|
||||
|
|
|
@ -264,9 +264,8 @@ void Config::ReadValues() {
|
|||
}
|
||||
|
||||
// Web Service
|
||||
NetSettings::values.enable_telemetry =
|
||||
sdl2_config->GetBoolean("WebService", "enable_telemetry", false);
|
||||
NetSettings::values.web_api_url = sdl2_config->GetString("WebService", "web_api_url", "");
|
||||
NetSettings::values.web_api_url =
|
||||
sdl2_config->GetString("WebService", "web_api_url", "https://api.citra-emu.org");
|
||||
NetSettings::values.citra_username = sdl2_config->GetString("WebService", "citra_username", "");
|
||||
NetSettings::values.citra_token = sdl2_config->GetString("WebService", "citra_token", "");
|
||||
}
|
||||
|
|
|
@ -353,11 +353,8 @@ gdbstub_port=24689
|
|||
# To LLE a service module add "LLE\<module name>=true"
|
||||
|
||||
[WebService]
|
||||
# Whether or not to enable telemetry
|
||||
# 0 (default): No, 1: Yes
|
||||
enable_telemetry =
|
||||
# URL for Web API
|
||||
web_api_url =
|
||||
web_api_url = https://api.citra-emu.org
|
||||
# Username and token for Citra Web Service
|
||||
# See https://profile.citra-emu.org/ for more info
|
||||
citra_username =
|
||||
|
|
|
@ -38,7 +38,6 @@
|
|||
#include "core/hle/service/nfc/nfc.h"
|
||||
#include "core/loader/loader.h"
|
||||
#include "core/savestate.h"
|
||||
#include "core/telemetry_session.h"
|
||||
#include "jni/android_common/android_common.h"
|
||||
#include "jni/applets/mii_selector.h"
|
||||
#include "jni/applets/swkbd.h"
|
||||
|
@ -166,7 +165,7 @@ static Core::System::ResultStatus RunCitra(const std::string& filepath) {
|
|||
#elif ENABLE_VULKAN
|
||||
window = std::make_unique<EmuWindow_Android_Vulkan>(s_surf, vulkan_library);
|
||||
#else
|
||||
// TODO: Add a null renderer backend for this, perhaps.
|
||||
// TODO: Add a null renderer backend for this, perhaps.
|
||||
#error "At least one renderer must be enabled."
|
||||
#endif
|
||||
break;
|
||||
|
@ -208,9 +207,6 @@ static Core::System::ResultStatus RunCitra(const std::string& filepath) {
|
|||
return load_result;
|
||||
}
|
||||
|
||||
auto& telemetry_session = system.TelemetrySession();
|
||||
telemetry_session.AddField(Common::Telemetry::FieldType::App, "Frontend", "Android");
|
||||
|
||||
stop_run = false;
|
||||
pause_emulation = false;
|
||||
|
||||
|
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 8.4 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 8.4 KiB |
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 9.8 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 9.8 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 17 KiB |