diff --git a/pcsx2-qt/Translations/pcsx2-qt_en.ts b/pcsx2-qt/Translations/pcsx2-qt_en.ts index 54866da7e3..c0cf2bf23e 100644 --- a/pcsx2-qt/Translations/pcsx2-qt_en.ts +++ b/pcsx2-qt/Translations/pcsx2-qt_en.ts @@ -3673,42 +3673,42 @@ Achievements: %5 (%6) <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="437"/> + <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="431"/> <source>Saving screenshot to '{}'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="449"/> + <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="443"/> <source>Saved screenshot to '{}'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="456"/> + <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="450"/> <source>Failed to save screenshot to '{}'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="527"/> + <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="521"/> <source>Host GPU device encountered an error and was recovered. This may have broken rendering.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="631"/> + <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="625"/> <source>CAS is not available, your graphics driver does not support the required functionality.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="706"/> + <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="700"/> <source>Saving {0} GS dump {1} to '{2}'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="727"/> + <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="721"/> <source>Failed to render/download screenshot.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="738"/> + <location filename="../../pcsx2/GS/Renderers/Common/GSRenderer.cpp" line="732"/> <source>Saved GS dump to '{}'.</source> <translation type="unfinished"></translation> </message> @@ -3728,7 +3728,7 @@ Achievements: %5 (%6) <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp" line="2952"/> + <location filename="../../pcsx2/GS/Renderers/Vulkan/GSDeviceVK.cpp" line="2942"/> <source>Spin GPU During Readbacks is enabled, but calibrated timestamps are unavailable. This might be really slow.</source> <translation type="unfinished"></translation> </message> @@ -6695,272 +6695,272 @@ Swap chain: see Microsoft's Terminology Portal.</extracomment> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="47"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="48"/> <source>Target speed set to {:.0f}%.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="65"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="66"/> <source>Volume: Muted</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="70"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="71"/> <source>Volume: {}%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="105"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="106"/> <source>Save slot {} selected (last save: {}).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="111"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="112"/> <source>Save slot {} selected (no save yet).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="123"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="124"/> <source>No save state found in slot {}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="137"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="143"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="148"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="155"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="159"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="164"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="173"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="181"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="189"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="206"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="211"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="216"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="221"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="226"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="231"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="235"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="240"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="245"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="138"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="144"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="149"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="156"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="160"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="165"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="174"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="182"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="190"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="207"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="212"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="217"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="222"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="227"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="232"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="236"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="241"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="246"/> <source>System</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="137"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="138"/> <source>Open Pause Menu</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="144"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="145"/> <source>Open Achievements List</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="149"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="150"/> <source>Open Leaderboards List</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="155"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="156"/> <source>Toggle Pause</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="159"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="160"/> <source>Toggle Fullscreen</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="164"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="165"/> <source>Toggle Frame Limit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="174"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="175"/> <source>Toggle Turbo / Fast Forward</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="181"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="182"/> <source>Toggle Slow Motion</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="190"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="191"/> <source>Turbo / Fast Forward (Hold)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="206"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="207"/> <source>Increase Target Speed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="211"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="212"/> <source>Decrease Target Speed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="216"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="217"/> <source>Increase Volume</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="221"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="222"/> <source>Decrease Volume</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="226"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="227"/> <source>Toggle Mute</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="231"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="232"/> <source>Frame Advance</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="235"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="236"/> <source>Shut Down Virtual Machine</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="240"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="241"/> <source>Reset Virtual Machine</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="246"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="247"/> <source>Toggle Input Recording Mode</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="251"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="256"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="261"/> - <location filename="../../pcsx2/Hotkeys.cpp" line="266"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="252"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="257"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="262"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="267"/> <source>Save States</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="252"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="253"/> <source>Select Previous Save Slot</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="257"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="258"/> <source>Select Next Save Slot</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="262"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="263"/> <source>Save State To Selected Slot</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="267"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="268"/> <source>Load State From Selected Slot</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="282"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="283"/> <source>Save State To Slot 1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="283"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="284"/> <source>Load State From Slot 1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="284"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="285"/> <source>Save State To Slot 2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="285"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="286"/> <source>Load State From Slot 2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="286"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="287"/> <source>Save State To Slot 3</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="287"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="288"/> <source>Load State From Slot 3</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="288"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="289"/> <source>Save State To Slot 4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="289"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="290"/> <source>Load State From Slot 4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="290"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="291"/> <source>Save State To Slot 5</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="291"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="292"/> <source>Load State From Slot 5</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="292"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="293"/> <source>Save State To Slot 6</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="293"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="294"/> <source>Load State From Slot 6</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="294"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="295"/> <source>Save State To Slot 7</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="295"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="296"/> <source>Load State From Slot 7</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="296"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="297"/> <source>Save State To Slot 8</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="297"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="298"/> <source>Load State From Slot 8</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="298"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="299"/> <source>Save State To Slot 9</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="299"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="300"/> <source>Load State From Slot 9</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="300"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="301"/> <source>Save State To Slot 10</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Hotkeys.cpp" line="301"/> + <location filename="../../pcsx2/Hotkeys.cpp" line="302"/> <source>Load State From Slot 10</source> <translation type="unfinished"></translation> </message> @@ -8324,18 +8324,13 @@ The saves will not be recoverable.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Sio.cpp" line="212"/> - <source>Memory Card in port %d / slot %d reinserted</source> + <location filename="../../pcsx2/Sio.cpp" line="912"/> + <source>Memory card in port {} / slot {} reinserted</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/Sio.cpp" line="594"/> - <source>Memory Card in port {} / slot {} reinserted.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../pcsx2/Sio.cpp" line="934"/> - <source>Force ejecting all Memory Cards.</source> + <location filename="../../pcsx2/Sio.cpp" line="938"/> + <source>Force ejecting all Memory Cards. Reinserting in 1 second.</source> <translation type="unfinished"></translation> </message> </context> @@ -10861,207 +10856,207 @@ The URL was: %1</source> <context> <name>VMManager</name> <message> - <location filename="../../pcsx2/VMManager.cpp" line="1549"/> + <location filename="../../pcsx2/VMManager.cpp" line="1538"/> <source>Failed to back up old save state {}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="1572"/> + <location filename="../../pcsx2/VMManager.cpp" line="1561"/> <source>Failed to save save state: {}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="1589"/> + <location filename="../../pcsx2/VMManager.cpp" line="1578"/> <source>State saved to slot {}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="1596"/> + <location filename="../../pcsx2/VMManager.cpp" line="1585"/> <source>Failed to save save state to slot {}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="1683"/> + <location filename="../../pcsx2/VMManager.cpp" line="1672"/> <source>There is no save state in slot {}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="1696"/> + <location filename="../../pcsx2/VMManager.cpp" line="1685"/> <source>Loading state from slot {}...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="1713"/> + <location filename="../../pcsx2/VMManager.cpp" line="1702"/> <source>Saving state to slot {}...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="1775"/> + <location filename="../../pcsx2/VMManager.cpp" line="1764"/> <source>Disc removed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="1781"/> + <location filename="../../pcsx2/VMManager.cpp" line="1770"/> <source>Disc changed to '{}'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="1788"/> + <location filename="../../pcsx2/VMManager.cpp" line="1777"/> <source>Failed to open new disc image '{}'. Reverting to old image.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="1796"/> + <location filename="../../pcsx2/VMManager.cpp" line="1785"/> <source>Failed to switch back to old disc image. Removing disc.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2228"/> + <location filename="../../pcsx2/VMManager.cpp" line="2216"/> <source>Cheats have been disabled due to achievements hardcore mode.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2282"/> + <location filename="../../pcsx2/VMManager.cpp" line="2270"/> <source>Fast CDVD is enabled, this may break games.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2286"/> + <location filename="../../pcsx2/VMManager.cpp" line="2274"/> <source>Cycle rate/skip is not at default, this may crash or make games run too slow.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2291"/> + <location filename="../../pcsx2/VMManager.cpp" line="2279"/> <source>Audio is using async mix, expect desynchronization in FMVs.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2294"/> + <location filename="../../pcsx2/VMManager.cpp" line="2282"/> <source>Upscale multiplier is below native, this will break rendering.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2298"/> + <location filename="../../pcsx2/VMManager.cpp" line="2286"/> <source>Mipmapping is not set to automatic. This may break rendering in some games.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2303"/> + <location filename="../../pcsx2/VMManager.cpp" line="2291"/> <source>Texture filtering is not set to Bilinear (PS2). This will break rendering in some games.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2309"/> + <location filename="../../pcsx2/VMManager.cpp" line="2297"/> <source>Trilinear filtering is not set to automatic. This may break rendering in some games.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2315"/> + <location filename="../../pcsx2/VMManager.cpp" line="2303"/> <source>Blending is below basic, this may break effects in some games.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2320"/> + <location filename="../../pcsx2/VMManager.cpp" line="2308"/> <source>Hardware Download Mode is not set to Accurate, this may break rendering in some games.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2326"/> + <location filename="../../pcsx2/VMManager.cpp" line="2314"/> <source>EE FPU Round Mode is not set to default, this may break some games.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2332"/> + <location filename="../../pcsx2/VMManager.cpp" line="2320"/> <source>EE FPU Clamp Mode is not set to default, this may break some games.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2338"/> + <location filename="../../pcsx2/VMManager.cpp" line="2326"/> <source>VU Round Mode is not set to default, this may break some games.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2345"/> + <location filename="../../pcsx2/VMManager.cpp" line="2333"/> <source>VU Clamp Mode is not set to default, this may break some games.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2350"/> + <location filename="../../pcsx2/VMManager.cpp" line="2338"/> <source>Game Fixes are not enabled. Compatibility with some games may be affected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2355"/> + <location filename="../../pcsx2/VMManager.cpp" line="2343"/> <source>Compatibility Patches are not enabled. Compatibility with some games may be affected.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2359"/> + <location filename="../../pcsx2/VMManager.cpp" line="2347"/> <source>Frame rate for NTSC is not default. This may break some games.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2361"/> + <location filename="../../pcsx2/VMManager.cpp" line="2349"/> <source>Frame rate for PAL is not default. This may break some games.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2380"/> + <location filename="../../pcsx2/VMManager.cpp" line="2368"/> <source>EE Recompiler is not enabled, this will significantly reduce performance.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2385"/> + <location filename="../../pcsx2/VMManager.cpp" line="2373"/> <source>VU0 Recompiler is not enabled, this will significantly reduce performance.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2390"/> + <location filename="../../pcsx2/VMManager.cpp" line="2378"/> <source>VU1 Recompiler is not enabled, this will significantly reduce performance.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2395"/> + <location filename="../../pcsx2/VMManager.cpp" line="2383"/> <source>IOP Recompiler is not enabled, this will significantly reduce performance.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2400"/> + <location filename="../../pcsx2/VMManager.cpp" line="2388"/> <source>EE Cache is enabled, this will significantly reduce performance.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2405"/> + <location filename="../../pcsx2/VMManager.cpp" line="2393"/> <source>EE Wait Loop Detection is not enabled, this may reduce performance.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2410"/> + <location filename="../../pcsx2/VMManager.cpp" line="2398"/> <source>INTC Spin Detection is not enabled, this may reduce performance.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2415"/> + <location filename="../../pcsx2/VMManager.cpp" line="2403"/> <source>Instant VU1 is disabled, this may reduce performance.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2420"/> + <location filename="../../pcsx2/VMManager.cpp" line="2408"/> <source>mVU Flag Hack is not enabled, this may reduce performance.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2425"/> + <location filename="../../pcsx2/VMManager.cpp" line="2413"/> <source>GPU Palette Conversion is enabled, this may reduce performance.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2430"/> + <location filename="../../pcsx2/VMManager.cpp" line="2418"/> <source>Texture Preloading is not Full, this may reduce performance.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../pcsx2/VMManager.cpp" line="2435"/> + <location filename="../../pcsx2/VMManager.cpp" line="2423"/> <source>Estimate texture region is enabled, this may reduce performance.</source> <translation type="unfinished"></translation> </message> diff --git a/pcsx2/CDVD/CDVD.cpp b/pcsx2/CDVD/CDVD.cpp index 30b3c09aaa..4c37387aa5 100644 --- a/pcsx2/CDVD/CDVD.cpp +++ b/pcsx2/CDVD/CDVD.cpp @@ -19,6 +19,7 @@ #include "IopHw.h" #include "IopDma.h" #include "VMManager.h" +#include "Sio.h" #include <cctype> #include <ctime> @@ -1528,6 +1529,7 @@ void cdvdVsync() cdvd.RTCcount = 0; cdvdUpdateTrayState(); + AutoEject::CountDownTicks(); cdvd.RTC.second++; if (cdvd.RTC.second < 60) diff --git a/pcsx2/MemoryCardFile.cpp b/pcsx2/MemoryCardFile.cpp index a0c85a75ad..70f7310f18 100644 --- a/pcsx2/MemoryCardFile.cpp +++ b/pcsx2/MemoryCardFile.cpp @@ -24,6 +24,7 @@ #include "MemoryCardFile.h" #include "MemoryCardFolder.h" +#include "Sio.h" #include "System.h" #include "Config.h" @@ -292,14 +293,11 @@ void FileMemoryCard::Open() cont = true; } - if (EmuConfig.Mcd[slot].Type != MemoryCardType::File) - { - str = "[is not memcard file]"; + if (EmuConfig.Mcd[slot].Type == MemoryCardType::File) + Console.WriteLn(cont ? Color_Gray : Color_Green, fmt::format("McdSlot {} [File]: {}", slot, str)); + else cont = true; - } - Console.WriteLn(cont ? Color_Gray : Color_Green, "McdSlot %u [File]: %.*s", slot, - static_cast<int>(str.size()), str.data()); if (cont) continue; @@ -660,6 +658,20 @@ void FileMcd_EmuClose() Mcd::impl.Close(); } +void FileMcd_CancelEject() +{ + AutoEject::ClearAll(); +} + +void FileMcd_Reopen(std::string new_serial) +{ + Console.WriteLn("Reopening memory cards..."); + FileMcd_EmuClose(); + FileMcd_EmuOpen(); + + sioSetGameSerial(new_serial); +} + s32 FileMcd_IsPresent(uint port, uint slot) { const uint combinedSlot = FileMcd_ConvertToSlot(port, slot); @@ -776,20 +788,25 @@ void FileMcd_NextFrame(uint port, uint slot) } } -bool FileMcd_ReIndex(uint port, uint slot, const std::string& filter) +int FileMcd_ReIndex(uint port, uint slot, const std::string& filter) { - const uint combinedSlot = FileMcd_ConvertToSlot(port, slot); + const int combinedSlot = FileMcd_ConvertToSlot(port, slot); + switch (EmuConfig.Mcd[combinedSlot].Type) { //case MemoryCardType::File: // return Mcd::impl.ReIndex( combinedSlot, filter ); // break; case MemoryCardType::Folder: - return Mcd::implFolder.ReIndex(combinedSlot, EmuConfig.McdFolderAutoManage, filter); + if (!Mcd::implFolder.ReIndex(combinedSlot, EmuConfig.McdFolderAutoManage, filter)) + return -1; break; default: - return false; + return -1; + break; } + + return combinedSlot; } // -------------------------------------------------------------------------------------- diff --git a/pcsx2/MemoryCardFile.h b/pcsx2/MemoryCardFile.h index a0ad382de5..ea95f0589c 100644 --- a/pcsx2/MemoryCardFile.h +++ b/pcsx2/MemoryCardFile.h @@ -47,6 +47,8 @@ extern std::string FileMcd_GetDefaultName(uint slot); uint FileMcd_ConvertToSlot(uint port, uint slot); void FileMcd_EmuOpen(); void FileMcd_EmuClose(); +void FileMcd_CancelEject(); +void FileMcd_Reopen(std::string new_serial); s32 FileMcd_IsPresent(uint port, uint slot); void FileMcd_GetSizeInfo(uint port, uint slot, McdSizeInfo* outways); bool FileMcd_IsPSX(uint port, uint slot); @@ -55,7 +57,7 @@ s32 FileMcd_Save(uint port, uint slot, const u8* src, u32 adr, int size); s32 FileMcd_EraseBlock(uint port, uint slot, u32 adr); u64 FileMcd_GetCRC(uint port, uint slot); void FileMcd_NextFrame(uint port, uint slot); -bool FileMcd_ReIndex(uint port, uint slot, const std::string& filter); +int FileMcd_ReIndex(uint port, uint slot, const std::string& filter); std::vector<AvailableMcdInfo> FileMcd_GetAvailableCards(bool include_in_use_cards); std::optional<AvailableMcdInfo> FileMcd_GetCardInfo(const std::string_view& name); diff --git a/pcsx2/Pcsx2Config.cpp b/pcsx2/Pcsx2Config.cpp index d4c386a141..e5e7400eb8 100644 --- a/pcsx2/Pcsx2Config.cpp +++ b/pcsx2/Pcsx2Config.cpp @@ -1373,7 +1373,6 @@ Pcsx2Config::Pcsx2Config() { Mcd[slot].Enabled = !FileMcd_IsMultitapSlot(slot); // enables main 2 slots Mcd[slot].Filename = FileMcd_GetDefaultName(slot); - // Folder memory card is autodetected later. Mcd[slot].Type = MemoryCardType::File; } diff --git a/pcsx2/Sio.cpp b/pcsx2/Sio.cpp index 967846785e..678b51d197 100644 --- a/pcsx2/Sio.cpp +++ b/pcsx2/Sio.cpp @@ -204,15 +204,6 @@ void Sio0::SetTxData(u8 value) if (mcd->autoEjectTicks) { SetRxData(0x00); - mcd->autoEjectTicks--; - - if (mcd->autoEjectTicks == 0) - { - Host::AddKeyedOSDMessage(fmt::format("AutoEjectSlotClear{}{}", port, slot), - fmt::format(TRANSLATE_SV("MemoryCard", "Memory Card in port %d / slot %d reinserted"), - port + 1, slot + 1), - Host::OSD_INFO_DURATION); - } return; } @@ -585,16 +576,6 @@ void Sio2::Memcard() fifoOut.push_back(0x00); } - mcd->autoEjectTicks--; - - if (mcd->autoEjectTicks == 0) - { - Host::AddKeyedOSDMessage(fmt::format("AutoEjectSlotClear{}{}", port, slot), - fmt::format( - TRANSLATE_SV("MemoryCard", "Memory Card in port {} / slot {} reinserted."), port + 1, slot + 1), - Host::OSD_INFO_DURATION); - } - return; } @@ -833,7 +814,8 @@ void sioNextFrame() { void sioSetGameSerial( const std::string& serial ) { for ( uint port = 0; port < 2; ++port ) { for ( uint slot = 0; slot < 4; ++slot ) { - if ( mcds[port][slot].ReIndex( serial ) ) { + if ( int index = mcds[port][slot].ReIndex( serial ) >= 0 ) { + Console.WriteLn("Ejecting Memory Card %u (port %u slot %u) due to source change. Reinsert in 1 second.", index, port, slot); AutoEject::Set( port, slot ); } } @@ -915,11 +897,33 @@ bool sioPortAndSlotIsMultitap(u32 port, u32 slot) return (slot != 0); } +void AutoEject::CountDownTicks() +{ + bool reinserted = false; + for (size_t port = 0; port < SIO::PORTS; port++) + { + for (size_t slot = 0; slot < SIO::SLOTS; slot++) + { + if (mcds[port][slot].autoEjectTicks > 0) + { + if (--mcds[port][slot].autoEjectTicks == 0) + { + Host::AddKeyedOSDMessage(fmt::format("AutoEjectSlotClear{}{}", port, slot), + fmt::format(TRANSLATE_SV("MemoryCard", "Memory card in port {} / slot {} reinserted"), + port + 1, slot + 1), + Host::OSD_INFO_DURATION); + } + } + } + } +} + void AutoEject::Set(size_t port, size_t slot) { - if (EmuConfig.McdEnableEjection) + if (EmuConfig.McdEnableEjection && mcds[port][slot].autoEjectTicks == 0) { - mcds[port][slot].autoEjectTicks = 60; + mcds[port][slot].autoEjectTicks = 1; // 1 second is enough. + mcds[port][slot].term = 0x55; // Reset terminator to default (0x55), forces the PS2 to recheck the memcard. } } @@ -931,7 +935,7 @@ void AutoEject::Clear(size_t port, size_t slot) void AutoEject::SetAll() { Host::AddIconOSDMessage("AutoEjectAllSet", ICON_FA_SD_CARD, - TRANSLATE_SV("MemoryCard", "Force ejecting all Memory Cards."), Host::OSD_INFO_DURATION); + TRANSLATE_SV("MemoryCard", "Force ejecting all Memory Cards. Reinserting in 1 second."), Host::OSD_INFO_DURATION); for (size_t port = 0; port < SIO::PORTS; port++) { diff --git a/pcsx2/Sio.h b/pcsx2/Sio.h index 0445db7350..8525abf97a 100644 --- a/pcsx2/Sio.h +++ b/pcsx2/Sio.h @@ -99,7 +99,7 @@ struct _mcd FileMcd_NextFrame( port, slot ); } - bool ReIndex(const std::string& filter) { + int ReIndex(const std::string& filter) { return FileMcd_ReIndex(port, slot, filter); } }; @@ -243,6 +243,7 @@ extern void sioSetGameSerial(const std::string& serial); namespace AutoEject { + extern void CountDownTicks(); extern void Set(size_t port, size_t slot); extern void Clear(size_t port, size_t slot); extern void SetAll(); diff --git a/pcsx2/VMManager.cpp b/pcsx2/VMManager.cpp index 685af1f6b9..88e5b48d1b 100644 --- a/pcsx2/VMManager.cpp +++ b/pcsx2/VMManager.cpp @@ -627,9 +627,16 @@ void VMManager::Internal::UpdateEmuFolders() if (EmuFolders::MemoryCards != old_memcards_directory) { - FileMcd_EmuClose(); - FileMcd_EmuOpen(); + std::string memcardFilters = ""; + if (const GameDatabaseSchema::GameEntry* game = GameDatabase::findGame(s_disc_serial)) + { + memcardFilters = game->memcardFiltersAsString(); + } + AutoEject::SetAll(); + + if(!GSDumpReplayer::IsReplayingDump()) + FileMcd_Reopen(memcardFilters.empty() ? s_disc_serial : memcardFilters); } if (EmuFolders::Textures != old_textures_directory) @@ -882,13 +889,6 @@ void VMManager::UpdateDiscDetails(bool booting) Console.WriteLn(Color_StrongGreen, fmt::format(" Version: {}", s_disc_version)); Console.WriteLn(Color_StrongGreen, fmt::format(" CRC: {:08X}", s_disc_crc)); - sioSetGameSerial(memcardFilters.empty() ? s_disc_serial : memcardFilters); - - // If we don't reset the timer here, when using folder memcards the reindex will cause an eject, - // which a bunch of games don't like since they access the memory card on boot. - if (booting) - AutoEject::ClearAll(); - UpdateGameSettingsLayer(); ApplySettings(); @@ -903,6 +903,9 @@ void VMManager::UpdateDiscDetails(bool booting) Achievements::GameChanged(s_disc_crc, s_current_crc); ReloadPINE(); UpdateDiscordPresence(Achievements::GetRichPresenceString()); + + if (!GSDumpReplayer::IsReplayingDump()) + FileMcd_Reopen(memcardFilters.empty() ? s_disc_serial : memcardFilters); } void VMManager::ClearDiscDetails() @@ -1145,17 +1148,11 @@ bool VMManager::Initialize(VMBootParameters boot_params) } ScopedGuard close_cdvd(&DoCDVDclose); - // Must be before updating serial because of folder memcards. - if (!GSDumpReplayer::IsReplayingDump()) - { - Console.WriteLn("Opening Memory cards..."); - FileMcd_EmuOpen(); - } - ScopedGuard close_memcards(&FileMcd_EmuClose); - // Figure out which game we're running! This also loads game settings. UpdateDiscDetails(true); + ScopedGuard close_memcards(&FileMcd_EmuClose); + // Read fast boot setting late so it can be overridden per-game. // ELFs must be fast booted, and GS dumps are never fast booted. s_fast_boot_requested = @@ -1958,7 +1955,9 @@ void VMManager::Internal::EntryPointCompilingOnCPUThread() HandleELFChange(true); Patch::ApplyLoadedPatches(Patch::PPT_ONCE_ON_LOAD); - + // If the config changes at this point, it's a reset, so the game doesn't currently know about the memcard + // so there's no need to leave the eject running. + FileMcd_CancelEject(); // Toss all the recs, we're going to be executing new code. SysClearExecutionCache(); } @@ -2113,9 +2112,6 @@ void VMManager::CheckForMemoryCardConfigChanges(const Pcsx2Config& old_config) Console.WriteLn("Updating memory card configuration"); - FileMcd_EmuClose(); - FileMcd_EmuOpen(); - // force card eject when files change for (u32 port = 0; port < 2; port++) { @@ -2130,7 +2126,6 @@ void VMManager::CheckForMemoryCardConfigChanges(const Pcsx2Config& old_config) } } } - // force reindexing, mc folder code is janky std::string sioSerial; { @@ -2140,7 +2135,9 @@ void VMManager::CheckForMemoryCardConfigChanges(const Pcsx2Config& old_config) if (sioSerial.empty()) sioSerial = s_disc_serial; } - sioSetGameSerial(sioSerial); + + if (!GSDumpReplayer::IsReplayingDump()) + FileMcd_Reopen(sioSerial); } void VMManager::CheckForMiscConfigChanges(const Pcsx2Config& old_config)