diff options
author | pineappleEA <pineaea@gmail.com> | 2024-02-11 07:03:11 +0100 |
---|---|---|
committer | pineappleEA <pineaea@gmail.com> | 2024-02-11 07:03:11 +0100 |
commit | 53f2e2f45271a551c0e8ee48ce9604580eeab12d (patch) | |
tree | 0dbc921ce62872696dea618be165ba1ac4670167 | |
parent | 491be807d7b1097e89e536510be405bf8f1e12df (diff) |
early-access version 4131EA-4131
-rwxr-xr-x | README.md | 2 | ||||
-rwxr-xr-x | src/core/memory/cheat_engine.cpp | 3 | ||||
-rwxr-xr-x | src/yuzu/configuration/shared_translation.cpp | 158 |
3 files changed, 119 insertions, 44 deletions
@@ -1,7 +1,7 @@ | |||
1 | yuzu emulator early access | 1 | yuzu emulator early access |
2 | ============= | 2 | ============= |
3 | 3 | ||
4 | This is the source code for early-access 4130. | 4 | This is the source code for early-access 4131. |
5 | 5 | ||
6 | ## Legal Notice | 6 | ## Legal Notice |
7 | 7 | ||
diff --git a/src/core/memory/cheat_engine.cpp b/src/core/memory/cheat_engine.cpp index 44e7cc20b..66135e7c3 100755 --- a/src/core/memory/cheat_engine.cpp +++ b/src/core/memory/cheat_engine.cpp | |||
@@ -65,8 +65,7 @@ void StandardVmCallbacks::MemoryWriteUnsafe(VAddr address, const void* data, u64 | |||
65 | return; | 65 | return; |
66 | } | 66 | } |
67 | 67 | ||
68 | if (system.ApplicationMemory().WriteBlock(address, data, size) && | 68 | if (system.ApplicationMemory().WriteBlock(address, data, size)) { |
69 | system.ApplicationProcess()->Is64Bit()) { | ||
70 | Core::InvalidateInstructionCacheRange(system.ApplicationProcess(), address, size); | 69 | Core::InvalidateInstructionCacheRange(system.ApplicationProcess(), address, size); |
71 | } | 70 | } |
72 | } | 71 | } |
diff --git a/src/yuzu/configuration/shared_translation.cpp b/src/yuzu/configuration/shared_translation.cpp index ce65b2bf1..d138b53c8 100755 --- a/src/yuzu/configuration/shared_translation.cpp +++ b/src/yuzu/configuration/shared_translation.cpp | |||
@@ -54,13 +54,28 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent) { | |||
54 | QStringLiteral()); | 54 | QStringLiteral()); |
55 | 55 | ||
56 | // Core | 56 | // Core |
57 | INSERT(Settings, use_multi_core, tr("Multicore CPU Emulation"), QStringLiteral()); | 57 | INSERT( |
58 | INSERT(Settings, memory_layout_mode, tr("Memory Layout"), QStringLiteral()); | 58 | Settings, use_multi_core, tr("Multicore CPU Emulation"), |
59 | tr("This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4.\n" | ||
60 | "This is mainly a debug option and shouldn’t be disabled.")); | ||
61 | INSERT( | ||
62 | Settings, memory_layout_mode, tr("Memory Layout"), | ||
63 | tr("Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the " | ||
64 | "developer kit's 8/6GB.\nIt’s doesn’t improve stability or performance and is intended " | ||
65 | "to let big texture mods fit in emulated RAM.\nEnabling it will increase memory " | ||
66 | "use. It is not recommended to enable unless a specific game with a texture mod needs " | ||
67 | "it.")); | ||
59 | INSERT(Settings, use_speed_limit, QStringLiteral(), QStringLiteral()); | 68 | INSERT(Settings, use_speed_limit, QStringLiteral(), QStringLiteral()); |
60 | INSERT(Settings, speed_limit, tr("Limit Speed Percent"), QStringLiteral()); | 69 | INSERT(Settings, speed_limit, tr("Limit Speed Percent"), |
70 | tr("Controls the game's maximum rendering speed, but it’s up to each game if it runs " | ||
71 | "faster or not.\n200% for a 30 FPS game is 60 FPS, and for a " | ||
72 | "60 FPS game it will be 120 FPS.\nDisabling it means unlocking the framerate to the " | ||
73 | "maximum your PC can reach.")); | ||
61 | 74 | ||
62 | // Cpu | 75 | // Cpu |
63 | INSERT(Settings, cpu_accuracy, tr("Accuracy:"), QStringLiteral()); | 76 | INSERT(Settings, cpu_accuracy, tr("Accuracy:"), |
77 | tr("This setting controls the accuracy of the emulated CPU.\nDon't change this unless " | ||
78 | "you know what you are doing.")); | ||
64 | INSERT(Settings, cpu_backend, tr("Backend:"), QStringLiteral()); | 79 | INSERT(Settings, cpu_backend, tr("Backend:"), QStringLiteral()); |
65 | 80 | ||
66 | // Cpu Debug | 81 | // Cpu Debug |
@@ -80,34 +95,75 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent) { | |||
80 | tr("This option improves the speed of 32 bits ASIMD floating-point functions by running " | 95 | tr("This option improves the speed of 32 bits ASIMD floating-point functions by running " |
81 | "with incorrect rounding modes.")); | 96 | "with incorrect rounding modes.")); |
82 | INSERT(Settings, cpuopt_unsafe_inaccurate_nan, tr("Inaccurate NaN handling"), | 97 | INSERT(Settings, cpuopt_unsafe_inaccurate_nan, tr("Inaccurate NaN handling"), |
83 | tr("This option improves speed by removing NaN checking. Please note this also reduces " | 98 | tr("This option improves speed by removing NaN checking.\nPlease note this also reduces " |
84 | "accuracy of certain floating-point instructions.")); | 99 | "accuracy of certain floating-point instructions.")); |
85 | INSERT(Settings, cpuopt_unsafe_fastmem_check, tr("Disable address space checks"), | 100 | INSERT(Settings, cpuopt_unsafe_fastmem_check, tr("Disable address space checks"), |
86 | tr("This option improves speed by eliminating a safety check before every memory " | 101 | tr("This option improves speed by eliminating a safety check before every memory " |
87 | "read/write " | 102 | "read/write in guest.\nDisabling it may allow a game to read/write the emulator's " |
88 | "in guest. Disabling it may allow a game to read/write the emulator's memory.")); | 103 | "memory.")); |
89 | INSERT( | 104 | INSERT( |
90 | Settings, cpuopt_unsafe_ignore_global_monitor, tr("Ignore global monitor"), | 105 | Settings, cpuopt_unsafe_ignore_global_monitor, tr("Ignore global monitor"), |
91 | tr("This option improves speed by relying only on the semantics of cmpxchg to ensure " | 106 | tr("This option improves speed by relying only on the semantics of cmpxchg to ensure " |
92 | "safety of exclusive access instructions. Please note this may result in deadlocks and " | 107 | "safety of exclusive access instructions.\nPlease note this may result in deadlocks and " |
93 | "other race conditions.")); | 108 | "other race conditions.")); |
94 | 109 | ||
95 | // Renderer | 110 | // Renderer |
96 | INSERT(Settings, renderer_backend, tr("API:"), QStringLiteral()); | 111 | INSERT( |
97 | INSERT(Settings, vulkan_device, tr("Device:"), QStringLiteral()); | 112 | Settings, renderer_backend, tr("API:"), |
98 | INSERT(Settings, shader_backend, tr("Shader Backend:"), QStringLiteral()); | 113 | tr("Switches between the available graphics APIs.\nVulkan is recommended in most cases.")); |
99 | INSERT(Settings, resolution_setup, tr("Resolution:"), QStringLiteral()); | 114 | INSERT(Settings, vulkan_device, tr("Device:"), |
115 | tr("This setting selects the GPU to use with the Vulkan backend.")); | ||
116 | INSERT(Settings, shader_backend, tr("Shader Backend:"), | ||
117 | tr("The shader backend to use for the OpenGL renderer.\nGLSL is the fastest in " | ||
118 | "performance and the best in rendering accuracy.\n" | ||
119 | "GLASM is a deprecated NVIDIA-only backend that offers much better shader building " | ||
120 | "performance at the cost of FPS and rendering accuracy.\n" | ||
121 | "SPIR-V compiles the fastest, but yields poor results on most GPU drivers.")); | ||
122 | INSERT(Settings, resolution_setup, tr("Resolution:"), | ||
123 | tr("Forces the game to render at a different resolution.\nHigher resolutions require " | ||
124 | "much more VRAM and bandwidth.\n" | ||
125 | "Options lower than 1X can cause rendering issues.")); | ||
100 | INSERT(Settings, scaling_filter, tr("Window Adapting Filter:"), QStringLiteral()); | 126 | INSERT(Settings, scaling_filter, tr("Window Adapting Filter:"), QStringLiteral()); |
101 | INSERT(Settings, fsr_sharpening_slider, tr("FSR Sharpness:"), QStringLiteral()); | 127 | INSERT(Settings, fsr_sharpening_slider, tr("FSR Sharpness:"), |
102 | INSERT(Settings, anti_aliasing, tr("Anti-Aliasing Method:"), QStringLiteral()); | 128 | tr("Determines how sharpened the image will look while using FSR’s dynamic contrast.")); |
103 | INSERT(Settings, fullscreen_mode, tr("Fullscreen Mode:"), QStringLiteral()); | 129 | INSERT(Settings, anti_aliasing, tr("Anti-Aliasing Method:"), |
104 | INSERT(Settings, aspect_ratio, tr("Aspect Ratio:"), QStringLiteral()); | 130 | tr("The anti-aliasing method to use.\nSMAA offers the best quality.\nFXAA has a " |
105 | INSERT(Settings, use_disk_shader_cache, tr("Use disk pipeline cache"), QStringLiteral()); | 131 | "lower performance impact and can produce a better and more stable picture under " |
106 | INSERT(Settings, use_asynchronous_gpu_emulation, tr("Use asynchronous GPU emulation"), | 132 | "very low resolutions.")); |
107 | QStringLiteral()); | 133 | INSERT(Settings, fullscreen_mode, tr("Fullscreen Mode:"), |
108 | INSERT(Settings, nvdec_emulation, tr("NVDEC emulation:"), QStringLiteral()); | 134 | tr("The method used to render the window in fullscreen.\nBorderless offers the best " |
109 | INSERT(Settings, accelerate_astc, tr("ASTC Decoding Method:"), QStringLiteral()); | 135 | "compatibility with the on-screen keyboard that some games request for " |
110 | INSERT(Settings, astc_recompression, tr("ASTC Recompression Method:"), QStringLiteral()); | 136 | "input.\nExclusive " |
137 | "fullscreen may offer better performance and better Freesync/Gsync support.")); | ||
138 | INSERT(Settings, aspect_ratio, tr("Aspect Ratio:"), | ||
139 | tr("Stretches the game to fit the specified aspect ratio.\nSwitch games only support " | ||
140 | "16:9, so custom game mods are required to get other ratios.\nAlso controls the " | ||
141 | "aspect ratio of captured screenshots.")); | ||
142 | INSERT(Settings, use_disk_shader_cache, tr("Use disk pipeline cache"), | ||
143 | tr("Allows saving shaders to storage for faster loading on following game " | ||
144 | "boots.\nDisabling " | ||
145 | "it is only intended for debugging.")); | ||
146 | INSERT( | ||
147 | Settings, use_asynchronous_gpu_emulation, tr("Use asynchronous GPU emulation"), | ||
148 | tr("Uses an extra CPU thread for rendering.\nThis option should always remain enabled.")); | ||
149 | INSERT(Settings, nvdec_emulation, tr("NVDEC emulation:"), | ||
150 | tr("Specifies how videos should be decoded.\nIt can either use the CPU or the GPU for " | ||
151 | "decoding, or perform no decoding at all (black screen on videos).\n" | ||
152 | "In most cases, GPU decoding provides the best performance.")); | ||
153 | INSERT(Settings, accelerate_astc, tr("ASTC Decoding Method:"), | ||
154 | tr("This option controls how ASTC textures should be decoded.\n" | ||
155 | "CPU: Use the CPU for decoding, slowest but safest method.\n" | ||
156 | "GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most " | ||
157 | "games and users.\n" | ||
158 | "CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely " | ||
159 | "eliminates ASTC decoding\nstuttering at the cost of rendering issues while the " | ||
160 | "texture is being decoded.")); | ||
161 | INSERT( | ||
162 | Settings, astc_recompression, tr("ASTC Recompression Method:"), | ||
163 | tr("Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing " | ||
164 | "the emulator to decompress to an intermediate format any card supports, RGBA8.\n" | ||
165 | "This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but " | ||
166 | "negatively affecting image quality.")); | ||
111 | INSERT( | 167 | INSERT( |
112 | Settings, vsync_mode, tr("VSync Mode:"), | 168 | Settings, vsync_mode, tr("VSync Mode:"), |
113 | tr("FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen " | 169 | tr("FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen " |
@@ -121,22 +177,29 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent) { | |||
121 | 177 | ||
122 | // Renderer (Advanced Graphics) | 178 | // Renderer (Advanced Graphics) |
123 | INSERT(Settings, async_presentation, tr("Enable asynchronous presentation (Vulkan only)"), | 179 | INSERT(Settings, async_presentation, tr("Enable asynchronous presentation (Vulkan only)"), |
124 | QStringLiteral()); | 180 | tr("Slightly improves performance by moving presentation to a separate CPU thread.")); |
125 | INSERT( | 181 | INSERT( |
126 | Settings, renderer_force_max_clock, tr("Force maximum clocks (Vulkan only)"), | 182 | Settings, renderer_force_max_clock, tr("Force maximum clocks (Vulkan only)"), |
127 | tr("Runs work in the background while waiting for graphics commands to keep the GPU from " | 183 | tr("Runs work in the background while waiting for graphics commands to keep the GPU from " |
128 | "lowering its clock speed.")); | 184 | "lowering its clock speed.")); |
129 | INSERT(Settings, max_anisotropy, tr("Anisotropic Filtering:"), QStringLiteral()); | 185 | INSERT(Settings, max_anisotropy, tr("Anisotropic Filtering:"), |
130 | INSERT(Settings, gpu_accuracy, tr("Accuracy Level:"), QStringLiteral()); | 186 | tr("Controls the quality of texture rendering at oblique angles.\nIt’s a light setting " |
131 | INSERT( | 187 | "and safe to set at 16x on most GPUs.")); |
132 | Settings, use_asynchronous_shaders, tr("Use asynchronous shader building (Hack)"), | 188 | INSERT(Settings, gpu_accuracy, tr("Accuracy Level:"), |
133 | tr("Enables asynchronous shader compilation, which may reduce shader stutter. This feature " | 189 | tr("GPU emulation accuracy.\nMost games render fine with Normal, but High is still " |
134 | "is experimental.")); | 190 | "required for some.\nParticles tend to only render correctly with High " |
191 | "accuracy.\nExtreme should only be used for debugging.\nThis option can " | ||
192 | "be changed while playing.\nSome games may require booting on high to render " | ||
193 | "properly.")); | ||
194 | INSERT(Settings, use_asynchronous_shaders, tr("Use asynchronous shader building (Hack)"), | ||
195 | tr("Enables asynchronous shader compilation, which may reduce shader stutter.\nThis " | ||
196 | "feature " | ||
197 | "is experimental.")); | ||
135 | INSERT(Settings, use_fast_gpu_time, tr("Use Fast GPU Time (Hack)"), | 198 | INSERT(Settings, use_fast_gpu_time, tr("Use Fast GPU Time (Hack)"), |
136 | tr("Enables Fast GPU Time. This option will force most games to run at their highest " | 199 | tr("Enables Fast GPU Time. This option will force most games to run at their highest " |
137 | "native resolution.")); | 200 | "native resolution.")); |
138 | INSERT(Settings, use_vulkan_driver_pipeline_cache, tr("Use Vulkan pipeline cache"), | 201 | INSERT(Settings, use_vulkan_driver_pipeline_cache, tr("Use Vulkan pipeline cache"), |
139 | tr("Enables GPU vendor-specific pipeline cache. This option can improve shader loading " | 202 | tr("Enables GPU vendor-specific pipeline cache.\nThis option can improve shader loading " |
140 | "time significantly in cases where the Vulkan driver does not store pipeline cache " | 203 | "time significantly in cases where the Vulkan driver does not store pipeline cache " |
141 | "files internally.")); | 204 | "files internally.")); |
142 | INSERT( | 205 | INSERT( |
@@ -157,19 +220,27 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent) { | |||
157 | // Renderer (Debug) | 220 | // Renderer (Debug) |
158 | 221 | ||
159 | // System | 222 | // System |
160 | INSERT(Settings, rng_seed, tr("RNG Seed"), QStringLiteral()); | 223 | INSERT(Settings, rng_seed, tr("RNG Seed"), |
224 | tr("Controls the seed of the random number generator.\nMainly used for speedrunning " | ||
225 | "purposes.")); | ||
161 | INSERT(Settings, rng_seed_enabled, QStringLiteral(), QStringLiteral()); | 226 | INSERT(Settings, rng_seed_enabled, QStringLiteral(), QStringLiteral()); |
162 | INSERT(Settings, device_name, tr("Device Name"), QStringLiteral()); | 227 | INSERT(Settings, device_name, tr("Device Name"), tr("The name of the emulated Switch.")); |
163 | INSERT(Settings, custom_rtc, tr("Custom RTC Date:"), QStringLiteral()); | 228 | INSERT(Settings, custom_rtc, tr("Custom RTC Date:"), |
229 | tr("This option allows to change the emulated clock of the Switch.\n" | ||
230 | "Can be used to manipulate time in games.")); | ||
164 | INSERT(Settings, custom_rtc_enabled, QStringLiteral(), QStringLiteral()); | 231 | INSERT(Settings, custom_rtc_enabled, QStringLiteral(), QStringLiteral()); |
165 | INSERT(Settings, custom_rtc_offset, QStringLiteral(" "), | 232 | INSERT(Settings, custom_rtc_offset, QStringLiteral(" "), |
166 | QStringLiteral("The number of seconds from the current unix time")); | 233 | QStringLiteral("The number of seconds from the current unix time")); |
167 | INSERT(Settings, language_index, tr("Language:"), | 234 | INSERT(Settings, language_index, tr("Language:"), |
168 | tr("Note: this can be overridden when region setting is auto-select")); | 235 | tr("Note: this can be overridden when region setting is auto-select")); |
169 | INSERT(Settings, region_index, tr("Region:"), QStringLiteral()); | 236 | INSERT(Settings, region_index, tr("Region:"), tr("The region of the emulated Switch.")); |
170 | INSERT(Settings, time_zone_index, tr("Time Zone:"), QStringLiteral()); | 237 | INSERT(Settings, time_zone_index, tr("Time Zone:"), |
238 | tr("The time zone of the emulated Switch.")); | ||
171 | INSERT(Settings, sound_index, tr("Sound Output Mode:"), QStringLiteral()); | 239 | INSERT(Settings, sound_index, tr("Sound Output Mode:"), QStringLiteral()); |
172 | INSERT(Settings, use_docked_mode, tr("Console Mode:"), QStringLiteral()); | 240 | INSERT(Settings, use_docked_mode, tr("Console Mode:"), |
241 | tr("Selects if the console is emulated in Docked or Handheld mode.\nGames will change " | ||
242 | "their resolution, details and supported controllers and depending on this setting.\n" | ||
243 | "Setting to Handheld can help improve performance for low end systems.")); | ||
173 | INSERT(Settings, current_user, QStringLiteral(), QStringLiteral()); | 244 | INSERT(Settings, current_user, QStringLiteral(), QStringLiteral()); |
174 | 245 | ||
175 | // Controls | 246 | // Controls |
@@ -187,14 +258,19 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent) { | |||
187 | // Ui | 258 | // Ui |
188 | 259 | ||
189 | // Ui General | 260 | // Ui General |
190 | INSERT(UISettings, select_user_on_boot, tr("Prompt for user on game boot"), QStringLiteral()); | 261 | INSERT(UISettings, select_user_on_boot, tr("Prompt for user on game boot"), |
262 | tr("Ask to select a user profile on each boot, useful if multiple people use yuzu on " | ||
263 | "the same PC.")); | ||
191 | INSERT(UISettings, pause_when_in_background, tr("Pause emulation when in background"), | 264 | INSERT(UISettings, pause_when_in_background, tr("Pause emulation when in background"), |
192 | QStringLiteral()); | 265 | tr("This setting pauses yuzu when focusing other windows.")); |
193 | INSERT(UISettings, confirm_before_stopping, tr("Confirm before stopping emulation"), | 266 | INSERT(UISettings, confirm_before_stopping, tr("Confirm before stopping emulation"), |
194 | QStringLiteral()); | 267 | tr("This setting overrides game prompts asking to confirm stopping the game.\nEnabling " |
195 | INSERT(UISettings, hide_mouse, tr("Hide mouse on inactivity"), QStringLiteral()); | 268 | "it bypasses such prompts and directly exits the emulation.")); |
269 | INSERT(UISettings, hide_mouse, tr("Hide mouse on inactivity"), | ||
270 | tr("This setting hides the mouse after 2.5s of inactivity.")); | ||
196 | INSERT(UISettings, controller_applet_disabled, tr("Disable controller applet"), | 271 | INSERT(UISettings, controller_applet_disabled, tr("Disable controller applet"), |
197 | QStringLiteral()); | 272 | tr("Forcibly disables the use of the controller applet by guests.\nWhen a guest " |
273 | "attempts to open the controller applet, it is immediately closed.")); | ||
198 | 274 | ||
199 | // Linux | 275 | // Linux |
200 | INSERT(Settings, enable_gamemode, tr("Enable Gamemode"), QStringLiteral()); | 276 | INSERT(Settings, enable_gamemode, tr("Enable Gamemode"), QStringLiteral()); |