diff options
| -rw-r--r-- | CMakeLists.txt | 2 | ||||
| -rw-r--r-- | README.md | 77 | ||||
| m--------- | externals/dynarmic | 0 | ||||
| -rw-r--r-- | src/audio_core/sink_context.h | 2 | ||||
| -rw-r--r-- | src/common/hex_util.h | 3 | ||||
| -rw-r--r-- | src/common/logging/types.h | 2 | ||||
| -rw-r--r-- | src/core/crypto/key_manager.cpp | 2 | ||||
| -rw-r--r-- | src/core/file_sys/registered_cache.cpp | 13 | ||||
| -rw-r--r-- | src/core/frontend/input.h | 1 | ||||
| -rw-r--r-- | src/core/hle/api_version.h | 2 | ||||
| -rw-r--r-- | src/core/hle/service/mii/manager.h | 2 | ||||
| -rw-r--r-- | src/core/hle/service/service.cpp | 6 | ||||
| -rw-r--r-- | src/core/hle/service/spl/spl_results.h | 2 | ||||
| -rw-r--r-- | src/core/hle/service/spl/spl_types.h | 2 | ||||
| -rw-r--r-- | src/input_common/mouse/mouse_poller.cpp | 2 | ||||
| -rw-r--r-- | src/input_common/touch_from_button.cpp | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_arb_decompiler.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/about_dialog.cpp | 3 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 6 |
20 files changed, 96 insertions, 36 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 97afaf1a9..60ec58eda 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
| @@ -172,7 +172,7 @@ macro(yuzu_find_packages) | |||
| 172 | set(REQUIRED_LIBS | 172 | set(REQUIRED_LIBS |
| 173 | # Cmake Pkg Prefix Version Conan Pkg | 173 | # Cmake Pkg Prefix Version Conan Pkg |
| 174 | "Catch2 2.13 catch2/2.13.0" | 174 | "Catch2 2.13 catch2/2.13.0" |
| 175 | "fmt 7.1 fmt/7.1.2" | 175 | "fmt 8.0 fmt/8.0.0" |
| 176 | "lz4 1.8 lz4/1.9.2" | 176 | "lz4 1.8 lz4/1.9.2" |
| 177 | "nlohmann_json 3.8 nlohmann_json/3.8.0" | 177 | "nlohmann_json 3.8 nlohmann_json/3.8.0" |
| 178 | "ZLIB 1.2 zlib/1.2.11" | 178 | "ZLIB 1.2 zlib/1.2.11" |
| @@ -1,43 +1,80 @@ | |||
| 1 | yuzu emulator | 1 | <h1 align="center"> |
| 2 | ============= | 2 | <br> |
| 3 | [](https://travis-ci.com/yuzu-emu/yuzu) | 3 | <a href="https://yuzu-emu.org/"><img src="https://raw.githubusercontent.com/yuzu-emu/yuzu-assets/master/icons/icon.png" alt="yuzu" width="200"></a> |
| 4 | [](https://dev.azure.com/yuzu-emu/yuzu/) | 4 | <br> |
| 5 | [](https://discord.com/invite/u77vRWY) | 5 | <b>yuzu</b> |
| 6 | <br> | ||
| 7 | </h1> | ||
| 6 | 8 | ||
| 7 | yuzu is an experimental open-source emulator for the Nintendo Switch from the creators of [Citra](https://citra-emu.org/). | 9 | <h4 align="center"><b>yuzu</b> is the world's most popular, open-source, Nintendo Switch emulator — started by the creators of <a href="https://citra-emu.org" target="_blank">Citra</a>. |
| 10 | <br> | ||
| 11 | It is written in C++ with portability in mind, and we actively maintain builds for Windows and Linux. | ||
| 12 | </h4> | ||
| 8 | 13 | ||
| 9 | It is written in C++ with portability in mind, with builds actively maintained for Windows and Linux. The emulator is capable of running several commercial games. | 14 | <p align="center"> |
| 15 | <a href="https://dev.azure.com/yuzu-emu/yuzu/"> | ||
| 16 | <img src="https://dev.azure.com/yuzu-emu/yuzu/_apis/build/status/yuzu%20mainline?branchName=master" | ||
| 17 | alt="Azure Mainline CI Build Status"> | ||
| 18 | </a> | ||
| 19 | <a href="https://discord.com/invite/u77vRWY"> | ||
| 20 | <img src="https://img.shields.io/discord/398318088170242053?color=%237289DA&label=yuzu&logo=discord&logoColor=white" | ||
| 21 | alt="Discord"> | ||
| 22 | </a> | ||
| 23 | </p> | ||
| 10 | 24 | ||
| 11 | yuzu only emulates a subset of Switch hardware and therefore most commercial games **do not** run at full speed or are not fully functional. | 25 | <p align="center"> |
| 26 | <a href="#compatibility">Compatibility</a> | | ||
| 27 | <a href="#development">Development</a> | | ||
| 28 | <a href="#building">Building</a> | | ||
| 29 | <a href="#download">Download</a> | | ||
| 30 | <a href="#support">Support</a> | | ||
| 31 | <a href="#license">License</a> | ||
| 32 | </p> | ||
| 12 | 33 | ||
| 13 | Do you want to check which games are compatible and which ones are not? Please visit our [Compatibility page](https://yuzu-emu.org/game/)! | 34 | ## Compatibility |
| 14 | 35 | ||
| 15 | yuzu is licensed under the GPLv2 (or any later version). Refer to the license.txt file included. | 36 | The emulator is capable of running most commercial games at full speed, provided you meet the [necessary hardware requirements](https://yuzu-emu.org/help/quickstart/#hardware-requirements). |
| 16 | 37 | ||
| 17 | Check out our [website](https://yuzu-emu.org/)! | 38 | For a full list of games yuzu support, please visit our [Compatibility page](https://yuzu-emu.org/game/) |
| 18 | 39 | ||
| 19 | For development discussion, please join us on [Discord](https://discord.com/invite/u77vRWY). | 40 | Check out our [website](https://yuzu-emu.org/) for the latest news on exciting features, monthly progress reports, and more! |
| 20 | 41 | ||
| 21 | ### Development | 42 | ## Development |
| 22 | 43 | ||
| 23 | Most of the development happens on GitHub. It's also where [our central repository](https://github.com/yuzu-emu/yuzu) is hosted. | 44 | Most of the development happens on GitHub. It's also where [our central repository](https://github.com/yuzu-emu/yuzu) is hosted. For development discussion, please join us on [Discord](https://discord.com/invite/u77vRWY). |
| 24 | 45 | ||
| 25 | If you want to contribute please take a look at the [Contributor's Guide](https://github.com/yuzu-emu/yuzu/wiki/Contributing) and [Developer Information](https://github.com/yuzu-emu/yuzu/wiki/Developer-Information). You should also contact any of the developers on Discord in order to know about the current state of the emulator. | 46 | If you want to contribute, please take a look at the [Contributor's Guide](https://github.com/yuzu-emu/yuzu/wiki/Contributing) and [Developer Information](https://github.com/yuzu-emu/yuzu/wiki/Developer-Information). |
| 47 | You can also contact any of the developers on Discord in order to know about the current state of the emulator. | ||
| 26 | 48 | ||
| 27 | If you want to contribute to the user interface translation, please check out the [yuzu project on transifex](https://www.transifex.com/yuzu-emulator/yuzu). We centralize translation work there, and periodically upstream translations. | 49 | If you want to contribute to the user interface translation project, please check out the [yuzu project on transifex](https://www.transifex.com/yuzu-emulator/yuzu). We centralize translation work there, and periodically upstream translations. |
| 28 | 50 | ||
| 29 | ### Building | 51 | ## Building |
| 30 | 52 | ||
| 31 | * __Windows__: [Windows Build](https://github.com/yuzu-emu/yuzu/wiki/Building-For-Windows) | 53 | * __Windows__: [Windows Build](https://github.com/yuzu-emu/yuzu/wiki/Building-For-Windows) |
| 32 | * __Linux__: [Linux Build](https://github.com/yuzu-emu/yuzu/wiki/Building-For-Linux) | 54 | * __Linux__: [Linux Build](https://github.com/yuzu-emu/yuzu/wiki/Building-For-Linux) |
| 33 | 55 | ||
| 56 | ## Download | ||
| 34 | 57 | ||
| 35 | ### Support | 58 | You can download the latest releases automatically via the installer on our [downloads](https://yuzu-emu.org/downloads/) page. |
| 36 | We happily accept monetary donations, or donated games and hardware. Please see our [donations page](https://yuzu-emu.org/donate/) for more information on how you can contribute to yuzu. Any donations received will go towards things like: | 59 | |
| 60 | |||
| 61 | ## Support | ||
| 62 | |||
| 63 | If you enjoy the project and want to support us financially, check out our Patreon! | ||
| 64 | |||
| 65 | <a href="https://www.patreon.com/yuzuteam"> | ||
| 66 | <img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" width="160"> | ||
| 67 | </a> | ||
| 68 | |||
| 69 | Any donations received will go towards things like: | ||
| 37 | * Switch consoles to explore and reverse-engineer the hardware | 70 | * Switch consoles to explore and reverse-engineer the hardware |
| 38 | * Switch games for testing, reverse-engineering, and implementing new features | 71 | * Switch games for testing, reverse-engineering, and implementing new features |
| 39 | * Web hosting and infrastructure setup | 72 | * Web hosting and infrastructure setup |
| 40 | * Software licenses (e.g. Visual Studio, IDA Pro, etc.) | 73 | * Software licenses (e.g. Visual Studio, IDA Pro, etc.) |
| 41 | * Additional hardware (e.g. GPUs as-needed to improve rendering support, other peripherals to add support for, etc.) | 74 | * Additional hardware (e.g. GPUs as-needed to improve rendering support, other peripherals to add support for, etc.) |
| 42 | 75 | ||
| 43 | We also more than gladly accept used Switch consoles, preferably ones with firmware 3.0.0 or lower! If you would like to give yours away, don't hesitate to join our [Discord](https://discord.gg/VXqngT3) and talk to bunnei. You may also contact: donations@yuzu-emu.org. | 76 | If you wish to support us a different way, please join our [Discord](https://discord.gg/u77vRWY) and talk to bunnei. You may also contact: donations@yuzu-emu.org. |
| 77 | |||
| 78 | ## License | ||
| 79 | |||
| 80 | yuzu is licensed under the GPLv2 (or any later version). Refer to the [license.txt](https://github.com/yuzu-emu/yuzu/blob/master/license.txt) file. | ||
diff --git a/externals/dynarmic b/externals/dynarmic | |||
| Subproject c6125082ea992c245edab26b6f86e7b904b86ee | Subproject 7946868af49d403fe54c92d2d60ef986513d1fe | ||
diff --git a/src/audio_core/sink_context.h b/src/audio_core/sink_context.h index 66ee4e8a0..9e2b69785 100644 --- a/src/audio_core/sink_context.h +++ b/src/audio_core/sink_context.h | |||
| @@ -4,6 +4,8 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <array> | ||
| 8 | #include <vector> | ||
| 7 | #include "audio_core/common.h" | 9 | #include "audio_core/common.h" |
| 8 | #include "common/common_funcs.h" | 10 | #include "common/common_funcs.h" |
| 9 | #include "common/common_types.h" | 11 | #include "common/common_types.h" |
diff --git a/src/common/hex_util.h b/src/common/hex_util.h index a8d414fb8..f5f9e4507 100644 --- a/src/common/hex_util.h +++ b/src/common/hex_util.h | |||
| @@ -53,8 +53,9 @@ template <typename ContiguousContainer> | |||
| 53 | std::string out; | 53 | std::string out; |
| 54 | out.reserve(std::size(data) * pad_width); | 54 | out.reserve(std::size(data) * pad_width); |
| 55 | 55 | ||
| 56 | const auto format_str = fmt::runtime(upper ? "{:02X}" : "{:02x}"); | ||
| 56 | for (const u8 c : data) { | 57 | for (const u8 c : data) { |
| 57 | out += fmt::format(upper ? "{:02X}" : "{:02x}", c); | 58 | out += fmt::format(format_str, c); |
| 58 | } | 59 | } |
| 59 | 60 | ||
| 60 | return out; | 61 | return out; |
diff --git a/src/common/logging/types.h b/src/common/logging/types.h index ee9a1ed84..88b0e9c01 100644 --- a/src/common/logging/types.h +++ b/src/common/logging/types.h | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #pragma once | ||
| 6 | |||
| 5 | #include <chrono> | 7 | #include <chrono> |
| 6 | 8 | ||
| 7 | #include "common/common_types.h" | 9 | #include "common/common_types.h" |
diff --git a/src/core/crypto/key_manager.cpp b/src/core/crypto/key_manager.cpp index fb451a423..a98daed89 100644 --- a/src/core/crypto/key_manager.cpp +++ b/src/core/crypto/key_manager.cpp | |||
| @@ -835,7 +835,7 @@ void KeyManager::SetKey(S128KeyType id, Key128 key, u64 field1, u64 field2) { | |||
| 835 | "key_area_key_ocean_{:02X}", | 835 | "key_area_key_ocean_{:02X}", |
| 836 | "key_area_key_system_{:02X}", | 836 | "key_area_key_system_{:02X}", |
| 837 | }; | 837 | }; |
| 838 | WriteKeyToFile(category, fmt::format(kak_names.at(field2), field1), key); | 838 | WriteKeyToFile(category, fmt::format(fmt::runtime(kak_names.at(field2)), field1), key); |
| 839 | } else if (id == S128KeyType::Master) { | 839 | } else if (id == S128KeyType::Master) { |
| 840 | WriteKeyToFile(category, fmt::format("master_key_{:02X}", field1), key); | 840 | WriteKeyToFile(category, fmt::format("master_key_{:02X}", field1), key); |
| 841 | } else if (id == S128KeyType::Package1) { | 841 | } else if (id == S128KeyType::Package1) { |
diff --git a/src/core/file_sys/registered_cache.cpp b/src/core/file_sys/registered_cache.cpp index 066c6789a..7a646b5f1 100644 --- a/src/core/file_sys/registered_cache.cpp +++ b/src/core/file_sys/registered_cache.cpp | |||
| @@ -58,14 +58,17 @@ static bool FollowsNcaIdFormat(std::string_view name) { | |||
| 58 | 58 | ||
| 59 | static std::string GetRelativePathFromNcaID(const std::array<u8, 16>& nca_id, bool second_hex_upper, | 59 | static std::string GetRelativePathFromNcaID(const std::array<u8, 16>& nca_id, bool second_hex_upper, |
| 60 | bool within_two_digit, bool cnmt_suffix) { | 60 | bool within_two_digit, bool cnmt_suffix) { |
| 61 | if (!within_two_digit) | 61 | if (!within_two_digit) { |
| 62 | return fmt::format(cnmt_suffix ? "{}.cnmt.nca" : "/{}.nca", | 62 | const auto format_str = fmt::runtime(cnmt_suffix ? "{}.cnmt.nca" : "/{}.nca"); |
| 63 | Common::HexToString(nca_id, second_hex_upper)); | 63 | return fmt::format(format_str, Common::HexToString(nca_id, second_hex_upper)); |
| 64 | } | ||
| 64 | 65 | ||
| 65 | Core::Crypto::SHA256Hash hash{}; | 66 | Core::Crypto::SHA256Hash hash{}; |
| 66 | mbedtls_sha256_ret(nca_id.data(), nca_id.size(), hash.data(), 0); | 67 | mbedtls_sha256_ret(nca_id.data(), nca_id.size(), hash.data(), 0); |
| 67 | return fmt::format(cnmt_suffix ? "/000000{:02X}/{}.cnmt.nca" : "/000000{:02X}/{}.nca", hash[0], | 68 | |
| 68 | Common::HexToString(nca_id, second_hex_upper)); | 69 | const auto format_str = |
| 70 | fmt::runtime(cnmt_suffix ? "/000000{:02X}/{}.cnmt.nca" : "/000000{:02X}/{}.nca"); | ||
| 71 | return fmt::format(format_str, hash[0], Common::HexToString(nca_id, second_hex_upper)); | ||
| 69 | } | 72 | } |
| 70 | 73 | ||
| 71 | static std::string GetCNMTName(TitleType type, u64 title_id) { | 74 | static std::string GetCNMTName(TitleType type, u64 title_id) { |
diff --git a/src/core/frontend/input.h b/src/core/frontend/input.h index 7a047803e..f1747c5b2 100644 --- a/src/core/frontend/input.h +++ b/src/core/frontend/input.h | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <functional> | ||
| 7 | #include <memory> | 8 | #include <memory> |
| 8 | #include <string> | 9 | #include <string> |
| 9 | #include <tuple> | 10 | #include <tuple> |
diff --git a/src/core/hle/api_version.h b/src/core/hle/api_version.h index 811732179..5e10a7ad9 100644 --- a/src/core/hle/api_version.h +++ b/src/core/hle/api_version.h | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #pragma once | ||
| 6 | |||
| 5 | #include "common/common_types.h" | 7 | #include "common/common_types.h" |
| 6 | 8 | ||
| 7 | // This file contains yuzu's HLE API version constants. | 9 | // This file contains yuzu's HLE API version constants. |
diff --git a/src/core/hle/service/mii/manager.h b/src/core/hle/service/mii/manager.h index ec7efa5f7..8e048fc56 100644 --- a/src/core/hle/service/mii/manager.h +++ b/src/core/hle/service/mii/manager.h | |||
| @@ -4,6 +4,8 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <array> | ||
| 8 | #include <vector> | ||
| 7 | #include "common/bit_field.h" | 9 | #include "common/bit_field.h" |
| 8 | #include "common/common_funcs.h" | 10 | #include "common/common_funcs.h" |
| 9 | #include "common/uuid.h" | 11 | #include "common/uuid.h" |
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 4e1541630..663b83cd3 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp | |||
| @@ -149,10 +149,10 @@ void ServiceFrameworkBase::ReportUnimplementedFunction(Kernel::HLERequestContext | |||
| 149 | std::string function_name = info == nullptr ? fmt::format("{}", ctx.GetCommand()) : info->name; | 149 | std::string function_name = info == nullptr ? fmt::format("{}", ctx.GetCommand()) : info->name; |
| 150 | 150 | ||
| 151 | fmt::memory_buffer buf; | 151 | fmt::memory_buffer buf; |
| 152 | fmt::format_to(buf, "function '{}': port='{}' cmd_buf={{[0]=0x{:X}", function_name, | 152 | fmt::format_to(std::back_inserter(buf), "function '{}': port='{}' cmd_buf={{[0]=0x{:X}", |
| 153 | service_name, cmd_buf[0]); | 153 | function_name, service_name, cmd_buf[0]); |
| 154 | for (int i = 1; i <= 8; ++i) { | 154 | for (int i = 1; i <= 8; ++i) { |
| 155 | fmt::format_to(buf, ", [{}]=0x{:X}", i, cmd_buf[i]); | 155 | fmt::format_to(std::back_inserter(buf), ", [{}]=0x{:X}", i, cmd_buf[i]); |
| 156 | } | 156 | } |
| 157 | buf.push_back('}'); | 157 | buf.push_back('}'); |
| 158 | 158 | ||
diff --git a/src/core/hle/service/spl/spl_results.h b/src/core/hle/service/spl/spl_results.h index 878fa91b7..a07c61409 100644 --- a/src/core/hle/service/spl/spl_results.h +++ b/src/core/hle/service/spl/spl_results.h | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #pragma once | ||
| 6 | |||
| 5 | #include "core/hle/result.h" | 7 | #include "core/hle/result.h" |
| 6 | 8 | ||
| 7 | namespace Service::SPL { | 9 | namespace Service::SPL { |
diff --git a/src/core/hle/service/spl/spl_types.h b/src/core/hle/service/spl/spl_types.h index 23c39f7ed..a654e7556 100644 --- a/src/core/hle/service/spl/spl_types.h +++ b/src/core/hle/service/spl/spl_types.h | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #pragma once | ||
| 6 | |||
| 5 | #include <span> | 7 | #include <span> |
| 6 | 8 | ||
| 7 | #include "common/bit_field.h" | 9 | #include "common/bit_field.h" |
diff --git a/src/input_common/mouse/mouse_poller.cpp b/src/input_common/mouse/mouse_poller.cpp index d96104a4e..758f7af1f 100644 --- a/src/input_common/mouse/mouse_poller.cpp +++ b/src/input_common/mouse/mouse_poller.cpp | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <algorithm> | ||
| 6 | #include <memory> | ||
| 5 | #include <mutex> | 7 | #include <mutex> |
| 6 | #include <utility> | 8 | #include <utility> |
| 7 | 9 | ||
diff --git a/src/input_common/touch_from_button.cpp b/src/input_common/touch_from_button.cpp index e94ba197b..5b24fd8bf 100644 --- a/src/input_common/touch_from_button.cpp +++ b/src/input_common/touch_from_button.cpp | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <algorithm> | ||
| 5 | #include "common/settings.h" | 6 | #include "common/settings.h" |
| 6 | #include "core/frontend/framebuffer_layout.h" | 7 | #include "core/frontend/framebuffer_layout.h" |
| 7 | #include "input_common/touch_from_button.h" | 8 | #include "input_common/touch_from_button.h" |
diff --git a/src/video_core/renderer_opengl/gl_arb_decompiler.cpp b/src/video_core/renderer_opengl/gl_arb_decompiler.cpp index 3e4d88c30..e8d8d2aa5 100644 --- a/src/video_core/renderer_opengl/gl_arb_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_arb_decompiler.cpp | |||
| @@ -454,7 +454,7 @@ private: | |||
| 454 | 454 | ||
| 455 | template <typename... Args> | 455 | template <typename... Args> |
| 456 | void AddExpression(std::string_view text, Args&&... args) { | 456 | void AddExpression(std::string_view text, Args&&... args) { |
| 457 | shader_source += fmt::format(text, std::forward<Args>(args)...); | 457 | shader_source += fmt::format(fmt::runtime(text), std::forward<Args>(args)...); |
| 458 | } | 458 | } |
| 459 | 459 | ||
| 460 | template <typename... Args> | 460 | template <typename... Args> |
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index ac78d344c..9c28498e8 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp | |||
| @@ -96,7 +96,7 @@ public: | |||
| 96 | // etc). | 96 | // etc). |
| 97 | template <typename... Args> | 97 | template <typename... Args> |
| 98 | void AddLine(std::string_view text, Args&&... args) { | 98 | void AddLine(std::string_view text, Args&&... args) { |
| 99 | AddExpression(fmt::format(text, std::forward<Args>(args)...)); | 99 | AddExpression(fmt::format(fmt::runtime(text), std::forward<Args>(args)...)); |
| 100 | AddNewLine(); | 100 | AddNewLine(); |
| 101 | } | 101 | } |
| 102 | 102 | ||
diff --git a/src/yuzu/about_dialog.cpp b/src/yuzu/about_dialog.cpp index a2e0e6962..6b0155a78 100644 --- a/src/yuzu/about_dialog.cpp +++ b/src/yuzu/about_dialog.cpp | |||
| @@ -14,7 +14,8 @@ AboutDialog::AboutDialog(QWidget* parent) : QDialog(parent), ui(new Ui::AboutDia | |||
| 14 | const auto build_id = std::string(Common::g_build_id); | 14 | const auto build_id = std::string(Common::g_build_id); |
| 15 | 15 | ||
| 16 | const auto yuzu_build = fmt::format("yuzu Development Build | {}-{}", branch_name, description); | 16 | const auto yuzu_build = fmt::format("yuzu Development Build | {}-{}", branch_name, description); |
| 17 | const auto override_build = fmt::format(std::string(Common::g_title_bar_format_idle), build_id); | 17 | const auto override_build = |
| 18 | fmt::format(fmt::runtime(std::string(Common::g_title_bar_format_idle)), build_id); | ||
| 18 | const auto yuzu_build_version = override_build.empty() ? yuzu_build : override_build; | 19 | const auto yuzu_build_version = override_build.empty() ? yuzu_build : override_build; |
| 19 | 20 | ||
| 20 | ui->setupUi(this); | 21 | ui->setupUi(this); |
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 75ab5ef44..6f5b2f6d6 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp | |||
| @@ -236,7 +236,8 @@ GMainWindow::GMainWindow() | |||
| 236 | const auto build_id = std::string(Common::g_build_id); | 236 | const auto build_id = std::string(Common::g_build_id); |
| 237 | 237 | ||
| 238 | const auto yuzu_build = fmt::format("yuzu Development Build | {}-{}", branch_name, description); | 238 | const auto yuzu_build = fmt::format("yuzu Development Build | {}-{}", branch_name, description); |
| 239 | const auto override_build = fmt::format(std::string(Common::g_title_bar_format_idle), build_id); | 239 | const auto override_build = |
| 240 | fmt::format(fmt::runtime(std::string(Common::g_title_bar_format_idle)), build_id); | ||
| 240 | const auto yuzu_build_version = override_build.empty() ? yuzu_build : override_build; | 241 | const auto yuzu_build_version = override_build.empty() ? yuzu_build : override_build; |
| 241 | 242 | ||
| 242 | LOG_INFO(Frontend, "yuzu Version: {}", yuzu_build_version); | 243 | LOG_INFO(Frontend, "yuzu Version: {}", yuzu_build_version); |
| @@ -2858,7 +2859,8 @@ void GMainWindow::UpdateWindowTitle(const std::string& title_name, | |||
| 2858 | const auto build_id = std::string(Common::g_build_id); | 2859 | const auto build_id = std::string(Common::g_build_id); |
| 2859 | 2860 | ||
| 2860 | const auto yuzu_title = fmt::format("yuzu | {}-{}", branch_name, description); | 2861 | const auto yuzu_title = fmt::format("yuzu | {}-{}", branch_name, description); |
| 2861 | const auto override_title = fmt::format(std::string(Common::g_title_bar_format_idle), build_id); | 2862 | const auto override_title = |
| 2863 | fmt::format(fmt::runtime(std::string(Common::g_title_bar_format_idle)), build_id); | ||
| 2862 | const auto window_title = override_title.empty() ? yuzu_title : override_title; | 2864 | const auto window_title = override_title.empty() ? yuzu_title : override_title; |
| 2863 | 2865 | ||
| 2864 | if (title_name.empty()) { | 2866 | if (title_name.empty()) { |