Commit Graph

266 Commits

Author SHA1 Message Date
Sintendo
f2392e4048 Avoid map/set double lookups
Fix some common anti-patterns with these data structures.

- You can dereference the iterator returned by `find` to access the
  underlying value directly, without an extra `operator[]`/`at`.
- Rather than checking for an element before insertion/deletion, you can
  just do the operation and if needed check the return value to
  determine if the insertion/deletion succeeded.
2025-07-08 06:53:42 +02:00
Martino Fontana
832570c658 Core: Add VBI Frequency Override
This feature allows overriding the frequency of the Vertical Blank Interrupt. For many games, this means that their gameplay speed will change without affecting audio, which would be useful by itself (e.g. grinding in RPGs).

However, there are games that use delta time for their game logic, which allows them to be played at >60 FPS at the same gameplay speed!

Some games aren't dynamic though, and require a patch to adjust their game speed variable.
2025-05-12 18:54:36 +02:00
Dr. Dystopia
ebc9c8492d Use std::views::values and std::views::keys functions - NetPlayServer 2025-04-02 20:06:10 +02:00
JMC47
225039f742
Merge pull request #13427 from LillyJadeKatrin/retroachievements-code-approval-fix
Fixed Multi Config Code Approvals
2025-03-15 13:57:48 -04:00
LillyJadeKatrin
0615ade725 Fixed Multi Config Code Approvals
Refactors the AR/Gecko/Patch code approval process to verify from every possible game ini, not just the base game ID. This fixes codes on specific revisions or codes general to any region.
2025-03-15 07:57:16 -04:00
JMC47
9f43f59c9b
Merge pull request #13276 from JoshuaVandaele/sfml-3.0.0
Migrate to SFML 3.0.0
2025-03-10 15:03:36 -04:00
Luz Paz
fb6c625fed Core/Core: fix typos
Found via `codespell -q 3 -S "./Externals,./Data/Sys/wiitdb-??.txt,*.po,*.pot" -L andf,asnd,bootup,bufferin,clen,collet,datas,delt,fpr,inout,inport,interm,pixelx,re-use,re-used,sav,stateman,strat,wil`
2025-03-08 15:41:53 -05:00
Joshua Vandaële
0a83783fae
Migrate to SFML>=3.0.0 2025-02-25 06:42:13 +01:00
Jordan Woyak
3b85653003 NetPlay: Implement GetInterfaceListInternal for Windows. 2025-01-04 00:29:34 -06:00
mitaclaw
140252ffc0 Modernize std::any_of with ranges
In WiimoteReal.cpp, JitRegCache.cpp, lambda predicates were replaced by pointers to member functions because ranges algorithms are able invoke those.

In ConvertDialog.cpp, the `std::mem_fn` helper was removed because ranges algorithms are able to handle pointers to member functions as predicates.
2024-12-15 19:54:16 -08:00
mitaclaw
860e6cf5cb Modernize std::all_of with ranges
In DITSpecification.cpp, MaterialAsset.cpp, and ShaderAsset.cpp, lambda predicates were replaced by pointers to member functions because ranges algorithms are able invoke those.

In NetPlayClient.cpp, the non-trivial `NetPlay::Player` elements were being passed by value in `NetPlayClient::DoAllPlayersHaveGame()`. This has been fixed.

In WIABlob.cpp, the second example's predicate was returning the `std::optional` by value instead of implicitly converting it to a bool. This has been fixed.
2024-12-15 19:50:34 -08:00
LillyJadeKatrin
3c255b55e8 Add AR Code Whitelist Approval 2024-11-27 21:21:26 -05:00
LillyJadeKatrin
13a1956cfa Add Gecko Code Whitelist Approval 2024-11-27 21:21:25 -05:00
LillyJadeKatrin
9b6555c49c Force NetPlay Clients to Host Hardcore Status
If the host is in hardcore mode, all joining players will be set to hardcore mode; if not, all joining players will be set to softcore. This ensures all players have the same settings and remain synchroized.
2024-11-10 09:40:47 -05:00
Alfred Wingate
d7c93d87be
Add support for libfmt-11
fmt::join was moved into fmt/ranges.h

Signed-off-by: Alfred Wingate <parona@protonmail.com>
2024-08-22 16:54:35 +03:00
Dr. Dystopia
618b41a459 Use 'contains' method 2024-08-14 22:18:28 +02:00
Lioncache
9abcc1c08b Core/NetPlayServer: Use fmt::format_to_n in GetInterfaceHost()
Lets us avoid some noisy deprecation warnings on macOS (and also lets us use
a more generic formatting specifier).
2023-12-18 13:08:57 -05:00
LillyJadeKatrin
3aebbbb3e7 Disable cheats in hardcore mode
RetroAchievements does not allow cheats such as Action Replay or Gecko in hardcore mode, for fairness.
2023-12-02 16:41:17 -05:00
Mai
d85cb749c0
Merge pull request #11382 from skyfloogle/traversal-fix-2
Traversal: Use low TTL for probe packet
2023-11-30 18:03:50 -05:00
Admiral H. Curtiss
b181842092
Netplay: Fix building on clang 17. 2023-11-03 16:15:04 +01:00
Floogle
bee6d5bfb6 Netplay: Don't log skippable events as errors 2023-10-28 18:06:07 +02:00
jmlee337
550b9782e1
Do not try portmapping when using traversal server
using portmapping with hosting while using traversal server (which is possible by checking the option while under "direct connect" and flipping back to traversal server) causes dolphin to request a mapping to external port 0.

In UPnP a mapping to external port 0 is actually the wildcard, which means that connection requests on all
external ports (that are not otherwise mapped) will be forwarded to the client.

Additionally it seems like using port mapping with traversal server is probably not expected behavior, as the option checkbox disappears when traversal server is used.
2023-07-13 01:15:12 -07:00
Floogle
5c1c22bab9 Traversal: Notify user of TTL to be used 2023-05-20 17:15:10 +02:00
Floogle
4f11b0d4c9 Traversal: Autoconfigure TTL to use for probe packet 2023-05-20 17:15:07 +02:00
Admiral H. Curtiss
6a339cbdb3
IOS/ES: Split ESDevice into ESCore and ESDevice.
ESCore implements the core functionality that can also be used outside of emulation. ESDevice implements the IOS device and is only available during emulation.
2023-05-15 20:41:05 +02:00
Lioncash
27f38c6c8f Common/TraversalClient: Move interface into Common namespace
Gets the interface out of the global namespace.
2023-04-24 08:28:25 -04:00
Admiral H. Curtiss
00e4fc4b70
Netplay: Check if save is readable before marking it for sync. 2023-04-23 15:52:38 +02:00
Lioncash
e4caace6bb Common/IniFile: Move interface into Common namespace
Gets this out of the global namespace and into the Common namespace
2023-04-13 10:19:28 -04:00
Lioncash
f5bdfdde1a Common/UPnP: Move interface into Common namespace
Keeps these utilities consistent with the rest of most of the Common
library.
2023-04-12 14:15:58 -04:00
Admiral H. Curtiss
31d2dedcb1
Merge pull request #11749 from lioncash/copy
NetPlayServer: Prevent unnecessary copies in GetInterfaceSet()
2023-04-11 22:09:56 +02:00
Lioncash
09e11b8067 Common: Rename ENetUtil.cpp/.h to ENet.cpp/.h 2023-04-11 11:48:46 -04:00
Lioncash
81493ee910 NetPlayServer: Prevent unnecessary copies in GetInterfaceSet()
This was previously copying each pair out of the vector returned by
GetInterfaceListInternal() when we just need to emplace the first entry
of each pair.
2023-04-11 09:17:03 -04:00
Lioncash
64ce2012e3 Common/ENetUtil: Move interface into Common namespace
Rather than just being under a separate ENetUtil namespace, we can unify
this into the common namespace as Common::ENet.
2023-04-11 09:12:04 -04:00
Admiral H. Curtiss
1e1041f299
NetPlay: Limit ENet's MTU to 1392 as a workaround for dropped packets over VPN via WireGuard, see https://github.com/lsalzman/enet/issues/132 2023-04-02 17:23:10 +02:00
Admiral H. Curtiss
0ccf24b0c5
Netplay: More logging for server and client thread main loops. 2023-03-30 16:57:39 +02:00
Admiral H. Curtiss
bfe0940bbd
Netplay: More logging before game start. 2023-03-30 00:02:30 +02:00
Admiral H. Curtiss
8a3b8a925e
Core: Add option to force linear texture filtering. 2022-12-09 02:02:16 +01:00
Admiral H. Curtiss
70f353fb37
Merge pull request #11283 from AdmiralCurtiss/netplay-save-sync-log
Netplay: Add more logging to save syncing.
2022-11-26 03:53:17 +01:00
Admiral H. Curtiss
2132e005c3
Core: Add config setting for base GCI folder path. 2022-11-22 10:48:37 +01:00
Admiral H. Curtiss
f0b0fcbb95
Netplay: Add more logging to save syncing. 2022-11-16 04:00:43 +01:00
Admiral H. Curtiss
e9caa09f7b
NetPlay: Split SyncSaveData() into two parts.
This allows the 'save collection' part to run even if no clients are connected. Fixes issue 13095.
2022-11-06 01:51:01 +01:00
Admiral H. Curtiss
66684a392f
Deduplicate NetPlayServer::Send() and NetPlayClient::Send() into ENetUtil::SendPacket(). 2022-10-09 02:25:28 +02:00
Admiral H. Curtiss
aade584180
Netplay: Completely rewrite Wiimote syncing logic to be similar to the GameCube controller one. 2022-10-02 23:22:02 +02:00
Admiral H. Curtiss
0d095b4d9b
Netplay: Simplify save data options. 2022-09-20 01:37:32 +02:00
Admiral H. Curtiss
0a517ebdbd
Core: Pass Netplay SRAM through boot process.
This removes the Netplay classes touching emulated hardware structures before emulation even starts.
2022-09-19 21:47:12 +02:00
Admiral H. Curtiss
9963637463
HW: Remove global state from functions in Sram.h. 2022-09-19 21:42:43 +02:00
Admiral H. Curtiss
bec4850fc3
Netplay: Rename variable names in NetSettings to match style guide. 2022-09-19 01:25:46 +02:00
Admiral H. Curtiss
1845a13cbe
Merge pull request #10905 from shuffle2/netplay-hash
netplay: use sha1 instead of md5
2022-08-22 15:57:49 +02:00
Sage King
da803adf15 Work around for compiler bug on Debian and FreeBSD 2022-08-09 16:26:54 -06:00
Sage King
66276ac61b Added type to SyncIndentifierComparison enum in SyncIdentifier.h in an
attempt to fix a failed call to operator<< in SendResponse()
2022-08-09 16:26:53 -06:00