JosJuice
fef77a5f20
PPCSymbolDB: Add missing locking
...
9395238 added locking in some PPCSymbolDB functions that access member
variables, but far from all. To ensure thread safety, this commit adds
the missing locking.
2025-07-27 16:26:47 +02:00
JosJuice
803e6b017b
PPCSymbolDB: Reduce lock contention in LoadMap/LoadMapOnBoot
...
By building the map in a local variable and then swapping it with the
member variable, we avoid the need to hold a lock while building the
map.
2025-07-27 16:26:47 +02:00
Jordan Woyak
62c773ac75
Common/Timer: Add a SteadyAwakeClock class which counts non-suspended system running time.
2025-07-24 23:56:10 -05:00
Jordan Woyak
bfef65a9d1
BTReal: Implement Realtek Bluetooth firmware loading.
...
Logic and structures are largely taken from Linux source:
drivers/bluetooth/btusb.c
drivers/bluetooth/btrtl.c
drivers/bluetooth/btrtl.h
2025-07-23 19:58:25 -05:00
Jordan Woyak
2b541361c6
Common: Move AsU8Span utility function from BTReal to Common/BitUtils.
2025-07-23 19:58:25 -05:00
Admiral H. Curtiss
68713e08b4
Common: Move GetDeviceProperty() into its own header
...
Otherwise we include Windows headers in the entire codebase through CommonFuncs.h
2025-07-19 21:24:51 +02:00
JMC47
295ae819f5
Merge pull request #13792 from Tilka/wii_banners
...
WiiSaveBanner: fall back to $userdir/Load/WiiBanners
2025-07-16 20:29:46 -04:00
Dentomologist
8a28b95480
IOFile: Require trivially copyable types
...
Require ReadArray and WriteArray to be called with a trivially copyable
type.
ReadArray and WriteArray call std::fread and std::fwrite respectively.
These functions trigger undefined behavior when the objects are not
trivially copyable, so this adds that requirement to the callers.
2025-07-14 11:55:24 -07:00
Joshua Vandaële
06882bd2dc
Fix various warnings
2025-07-12 12:47:30 +02:00
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
Jordan Woyak
d55012f8d0
Merge pull request #13726 from hoogmin/cpp23_ranges_patch
...
Common: Replace Contains and ContainsSubrange with C++23 std::ranges equivalents
2025-07-07 21:05:28 -05:00
Tillmann Karras
fe6fd2279c
WiiSaveBanner: fall back to $userdir/Load/WiiBanners
...
Unlike custom banners which work as an override, this mechanism works as
a fallback. The use case is if you have games you don't really play but
want to keep around for testing purposes without filling up your NAND
with lots of saves. For ease of use, the directory structure is the same
but only title/$title_hi/$title_lo/data/banner.bin files are
relevant.
2025-07-04 23:15:50 +01:00
TryTwo
fe121e4c6e
PPCSymbolDB: Move loading map on boot logic from boot.cpp into PPCSymbolDB, as it will be needing a mutex.
...
Cleanup loading code and reduce amount of signals.
On boot. allow previously loaded map to be kept, if its filename matches. Useful for restarting a game with a large symbol map.
2025-06-25 12:01:16 -07:00
JMC47
19f3b7e61f
Merge pull request #13691 from TryTwo/PR_Notes
...
Debugger Add note-type symbols .
2025-06-22 01:05:42 -04:00
TryTwo
040d9a4336
Debugger symbols: Add new symbol type: Notes.. Notes are for naming single instructions, or small groups of instructions.
...
Notes are separate from function symbols, and can be searched separately.
Unlike functions, notes of different length can overlap each other.
In the instruction window, a note will always display over the function symbol.
2025-06-19 17:55:35 -07:00
Jordan Woyak
3a94289ad6
Merge pull request #13744 from JoshuaVandaele/windows-specific-getdevicename
...
Host: Implement a Windows-only implementation of `GetDeviceNameFromVIDPID`
2025-06-15 15:44:31 -05:00
Dr. Dystopia
ca8f9b672b
Source: Remove redundant lambda parameter lists
2025-06-14 10:19:31 +02:00
Joshua Vandaële
d93245cc7a
Host: Implement a Windows-only implementation of GetDeviceNameFromVIDPID
2025-06-13 17:46:53 +02:00
Tilka
19fbbf0dba
Merge pull request #13727 from JoshuaVandaele/fmt-11.2.0-localtime-deprec
...
fmt: Replace deprecated `fmt::localtime` usage with `Common::LocalTime`
2025-06-08 04:04:37 +01:00
Jordan Woyak
65f3ba70f5
Merge pull request #13522 from tygyh/Enforce-overriding-destructor-style-Core&UnitTests
...
Core & UnitTests: Make overriding explicit and remove redundant virtual specifiers on overriding destructors
2025-06-07 17:55:14 -05:00
iwubcode
7d59c2743d
Common: Add class 'FilesystemWatcher' that is used to watch paths and receive callbacks about filesystem level events for anything under that path
2025-06-06 23:03:02 -05:00
Javier Martinez
d766c527c7
Common: Replace Contains and ContainsSubrange with C++23 std::ranges equivalents
...
Common: Use feature macros for better compatibility
Common/Contains.h: fix linting issue
Common/Contains.h: Add C++23 TODO
Common/Contains.h: Fix comment lint issue.
2025-06-05 19:18:08 -04:00
JMC47
8def02072b
Merge pull request #13379 from JoshuaVandaele/system-ng
...
Use minizip-ng in non-compatibility mode
2025-06-04 15:21:05 -04:00
Joshua Vandaële
4b65cc9a4c
fmt: Replace deprecated fmt::localtime usage with Common::LocalTime
2025-06-04 13:32:12 +02:00
Jordan Woyak
31d0756808
Config: Make s_callbacks_lock recursive to fix hardcore mode deadlock.
2025-05-30 17:33:01 -05:00
JosJuice
18a78a9bab
Merge pull request #13647 from jordan-woyak/sha1-avoid-memcpy
...
Crypto/SHA1: Re-add memcpy avoiding optimization to BlockContext::Update.
2025-05-25 12:40:43 +02:00
Joshua Vandaële
2ed5f16600
minizip-ng: Stop using compatibility mode
2025-05-22 12:51:55 +02:00
Jordan Woyak
9ba71448cc
WorkQueueThread: Fix Cancel() race with internal command queue.
2025-05-20 21:51:25 -05:00
Jordan Woyak
bb77d61967
Crypto/SHA1: Re-add memcpy avoiding optimization to BlockContext::Update.
2025-05-09 20:59:17 -05:00
JMC47
463bd86145
Merge pull request #13641 from jordan-woyak/sha1-fix
...
Crypto/SHA1: Fix past-the-last-element std::array access and modernize code.
2025-05-09 18:56:20 -04:00
JMC47
7113bafd94
Merge pull request #13586 from Tilka/spr_disasm
...
GekkoDisassembler: standardize SPR names and add missing ones
2025-05-09 18:55:53 -04:00
Jordan Woyak
a9ab0e979e
Crypto/SHA1: Fix past-the-last-element std::array access and modernize code.
2025-05-08 03:03:59 -05:00
Jordan Woyak
845fecff22
Common/BitField: Make deleted functions public.
2025-05-05 19:34:35 -05:00
Jordan Woyak
2dc975fa92
Common: Replace enable_if with concepts and other minor modernizations.
2025-05-05 19:34:24 -05:00
Admiral H. Curtiss
d2db9d9590
Merge pull request #13608 from jordan-woyak/async-work-thread
...
Common: Add AsyncWorkThread.
2025-05-04 18:45:14 +02:00
Admiral H. Curtiss
2a3580fda5
Merge pull request #13482 from jordan-woyak/string-util-concepts
...
StringUtil: Use concepts instead of enable_if.
2025-05-04 17:47:37 +02:00
Admiral H. Curtiss
380a9291ad
Merge pull request #13602 from jordan-woyak/move-only-function
...
Common: Add MoveOnlyFunction.
2025-05-04 17:28:06 +02:00
Jordan Woyak
5a80105555
Common and VideoCommon: Change texture data from std::vector to Common::UniqueBuffer.
2025-05-03 18:32:30 -05:00
JosJuice
c8be819711
LogManager: Stop using manual memory management
...
This fixes a memory leak that would occur when the Android frontend
calls LogManager::Init more than once in order to reload settings.
Note that the log window listener is now owned by LogManager instead of
by the frontend, making it consistent with the other log listeners.
2025-05-02 21:14:32 +02:00
JosJuice
b566e81644
Merge pull request #13596 from JosJuice/config-callback-locking
...
Config: Add locking for config changed callbacks
2025-05-02 08:49:22 +02:00
Jordan Woyak
be4b0af971
Common: Add AsyncWorkThread.
2025-05-01 22:54:40 -05:00
Jordan Woyak
20874124c2
StringUtil: Use concepts instead of enable_if.
2025-05-01 16:30:37 -05:00
Dr. Dystopia
f240e20e3f
Make overriding explicit and remove redundant virtual specifiers on overriding destructors - Core & UnitTests
2025-05-01 15:00:37 +02:00
Admiral H. Curtiss
2e20e24136
Merge pull request #13587 from jordan-woyak/manual-value
...
Common: Move some duplicate container element construction logic into a ManuallyConstructedValue template.
2025-04-30 23:45:33 +02:00
Jordan Woyak
4899913446
Common: Move some duplicate container element construction logic into a ManuallyConstructedValue template.
2025-04-30 14:56:07 -05:00
Jordan Woyak
a149b9d62d
WorkQueueThread: Cleanups. Implement in terms of WaitableSPSCQueue. Add single producer WorkQueueThreadSP.
2025-04-30 14:31:51 -05:00
OatmealDome
0b0151770a
Merge pull request #13436 from JoshuaVandaele/clang-format-19
...
Update clang-format to version 19
2025-04-30 01:17:31 -04:00
Jordan Woyak
e403dee3da
Common: Add MoveOnlyFunction.
2025-04-27 20:07:13 -05:00
JosJuice
f060baa257
Config: Add locking for config changed callbacks
...
Different threads are adding and calling callbacks, so this should have
some locking. This is both to ensure thread safety when accessing
`s_callbacks` and to ensure that there won't be situations where a
callback gets called after it's removed.
`s_callback_guards` is also accessed from multiple threads and has
therefore been made atomic.
2025-04-26 12:56:37 +02:00
Dentomologist
3a883f28d6
Config: Add [[nodiscard]] to AddConfigChangedCallback
...
Require callers of Config::AddConfigChangedCallback and
CPUThreadConfigCallback::AddConfigChangedCallback to handle the returned
ConfigChangedCallbackIDs to hopefully prevent future issues with
callbacks getting called after their associated objects have been
destroyed.
2025-04-25 16:04:12 -07:00
Tilka
805307f432
Merge pull request #13451 from vyuuui/numeric_labels
...
Add numeric label support to assembler
2025-04-25 01:56:43 +01:00
Tilka
50026ab795
Merge pull request #13497 from hoogmin/modernize_fs_path
...
Core/Common/FileUtil.cpp: Use std path utility for automatic path separator handling.
2025-04-25 01:38:35 +01:00
Tillmann Karras
4d9dc1e1cd
GekkoDisassembler: standardize SPR names and add missing ones
2025-04-25 00:24:12 +01:00
Joshua Vandaële
bf554edfe0
linter: Add and apply new formatting rules
...
New rules:
`InsertNewlineAtEOF: true`
`RemoveSemicolon: true`
`RequiresClausePosition: WithPreceding`
2025-04-23 11:19:57 +02:00
Joshua Vandaële
2c54ee94c1
linter: Apply clang-format 19.1 formatting
...
find ./Source/ -name '*.cpp' -o -name '*.h' | xargs clang-format-19 -i
2025-04-23 11:19:20 +02:00
Jordan Woyak
af960651e8
Common: SPSCQueue cleanups and improvements.
2025-04-22 23:49:32 -05:00
Jordan Woyak
ac76deaef0
Merge pull request #13529 from jordan-woyak/StateBuffer
...
Core/State: Avoid unnecessarily value-initializing large buffers.
2025-04-22 16:30:51 -05:00
OatmealDome
da84a9f605
Merge pull request #13477 from OatmealDome/macos-11
...
CMakeLists: Bump minimum macOS to 11.0
2025-04-22 17:27:12 -04:00
JosJuice
e468e2359a
IOS: Only have one USBScanner
...
Some games open two USB interfaces, e.g. /dev/usb/oh0 and /dev/usb/hid.
This was causing us to run two scanning threads at once, using up more
CPU time for scanning than we need to.
2025-04-21 21:57:49 +02:00
JosJuice
c0c180bdc2
Merge pull request #13467 from JosJuice/profiler-thread-safety
...
Common: Make Profiler thread safe
2025-04-21 20:19:47 +02:00
OatmealDome
7213cdd439
MemoryUtil: Remove availability checks for macOS 11
2025-04-21 00:24:58 -04:00
Tilka
0a52140145
Merge pull request #13549 from shuffle2/ucrtpatch
...
remove ucrt compat patches
2025-04-20 22:24:57 +01:00
Shawn Hoffman
2d1161150b
remove ucrt compat patches
...
Dolphin has not supported a version of windows where
these binaries exist for a while.
2025-04-20 12:50:10 -07:00
Shawn Hoffman
5dd896a7d9
HttpRequest: remove some legacy code for windows < 8.1
2025-04-20 11:46:09 -07:00
Jordan Woyak
12dcd6c285
Common: Add UniqueBuffer and SharedBuffer templates.
2025-04-19 17:13:40 -05:00
Jordan Woyak
f78fa2e9f1
LinearDiskCache: Use make_unique_for_overwrite.
2025-04-19 17:13:40 -05:00
Jordan Woyak
cb20959679
Common/Timer: Change HANDLE to void* to avoid including Windows.h to fix cmake build.
2025-04-18 21:50:15 -05:00
OatmealDome
2af276d27e
MemArenaDarwin: Initialize all address variables passed to vm_map
2025-04-16 00:50:54 -04:00
Javier Martinez
7ca8dc3767
Use std path utility for automatic path seperator handling.
...
It was being done manually, which a TODO comment advised against.
Using generic_string() from std::filesystem::path solves this.
Fix encoding issue using generic_wstring instead.
2025-04-08 16:54:11 -04:00
Jordan Woyak
e0e53f3235
Common/Timer: Use YieldProcessor on Windows.
2025-04-03 15:48:51 -05:00
Jordan Woyak
e5c8935acc
Common: Create a PrecisionTimer class.
2025-04-03 15:48:51 -05:00
JosJuice
957265ba52
Common: Make Profiler thread safe
2025-03-29 15:05:02 +01:00
JMC47
1981f22228
Merge pull request #13433 from iwubcode/update_min_win10
...
Update our minimum windows 10 version to 1903 and reinstate code that depends on it
2025-03-25 18:30:15 -04:00
vyuuui
e34907025d
Add numeric label support to assembler
2025-03-24 18:59:32 -07:00
JMC47
ad3650abfc
Merge pull request #13093 from mitaclaw/ranges-modernization-4-projection
...
Ranges Algorithms Modernization - Projection
2025-03-23 15:56:13 -04:00
Jordan Woyak
ba1bf6959e
Config: Allow passing a DefaultState object to Set functions to delete keys.
2025-03-17 20:46:24 -05:00
OatmealDome
07cec796f4
Merge pull request #13417 from luzpaz/typo-source-core-common
...
Core/Common: Fix typos
2025-03-16 14:53:02 -04:00
iwubcode
c1dea828ab
Common: use std::chrono for GetLocalTimeSinceJan1970 on Windows
...
Co-authored-by: Shawn Hoffman <godisgovernment@gmail.com>
2025-03-16 00:59:45 -05:00
iwubcode
373a1a5dc0
Update min win10 version from 1703/15063 to 1903/18362
...
Co-authored-by: Shawn Hoffman <godisgovernment@gmail.com>
2025-03-16 00:59:45 -05:00
JMC47
1bd3e79fda
Merge pull request #13378 from jordan-woyak/desired-ext-state
...
WiimoteEmu: Clean up variant handling in DesiredExtensionState.
2025-03-15 17:26:49 -04:00
JosJuice
e637a05707
Merge pull request #12866 from JosJuice/android-log-types-sorting
...
Android: Replace log type names map with array
2025-03-15 16:01:33 +01:00
JosJuice
8c7ab286f5
Merge pull request #13181 from tygyh/Replace-'reinterpret_cast'
...
Replace 'reinterpret_cast' with 'static_cast'
2025-03-15 15:31:38 +01:00
Luz Paz
1b47dbf519
Core/Common: Fix typos
...
Found via `codespell -q 3 -S "./Externals,./Data/Sys/wiitdb-??.txt,*.po,*.pot" -L andf,asnd,bootup,brocken,bufferin,clen,collet,datas,delt,diety,extint,fpr,inout,inport,interm,nd,nin,ontop,pixelx,re-use,re-used,sav,stateman,strat,transer,wil`
2025-03-11 19:48:45 -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
mitaclaw
258ec4f9cd
Modernize std::lower_bound/upper_bound with ranges and projections
2025-03-09 13:26:38 -07:00
mitaclaw
8b9f92a0af
Modernize std::sort with ranges and projections
...
In PPCTables.cpp, the code is currently unused so I was unable to test it.
In CustomPipeline.cpp, a pointer to member function cannot be used due to 16.4.5.2.1 of the C++ Standard regarding "addressable functions". https://eel.is/c++draft/namespace.std#6
In Fs.cpp and DirectoryBlob.cpp, these examples used projections in a previous iteration of this commit, but no longer do. Still, they remain in this commit because the PR they would actually belong to is already merged.
2025-03-09 13:26:38 -07:00
mitaclaw
62b2b939b5
Simplify std::find_if with std::ranges::find and projections
...
In LabelMap.cpp, the code is currently unused so I was unable to test it.
In WiiUtils.cpp, the magic value `1u` was replaced by the constant value `DiscIO::PARTITION_UPDATE`.
2025-03-09 13:26:35 -07:00
mitaclaw
1e5e9219cd
Common: Create Range Projections For std::pair
2025-03-09 13:19:41 -07:00
Jordan Woyak
1d481a395a
VariantUtil: Introduce WithVariantAlternative to dynamically construct and visit a variant alternative.
2025-02-25 17:22:59 -06:00
Joshua Vandaële
0a83783fae
Migrate to SFML>=3.0.0
2025-02-25 06:42:13 +01:00
JosJuice
0f83598493
Common: Make SD pack/unpack strings translatable
...
Regression from adc5b81 .
2025-02-23 23:09:24 +01:00
Jordan Woyak
adc5b81c31
DolphinQt: Rename the pack/unpack SD Card buttons.
2025-02-12 13:30:48 -06:00
Admiral H. Curtiss
f1fe32c93b
Merge pull request #13254 from brad0/openbsd_aarch64
...
ArmCPUDetect: Add OpenBSD support for elf_aux_info
2025-02-02 18:12:03 +01:00
Jordan Woyak
9777e8e76b
Common: Make SmallVector work with non-standard-layout types.
2025-01-26 13:03:39 -06:00
Brad Smith
a20f96b78c
ArmCPUDetect: Add OpenBSD support for elf_aux_info
2025-01-22 22:58:00 -05:00
iwubcode
75425ced05
Common: add 'clear' function to SmallVector
2025-01-20 15:13:56 -06:00
OatmealDome
7ba56bc738
Merge pull request #13269 from OatmealDome/memarena-darwin
...
MemArena: Add Darwin implementation
2025-01-20 14:11:37 -05:00
Joshua Vandaële
fa442dc90b
Fix build with minizip-ng 4.0.8
2025-01-19 10:30:41 +01:00
Daniel Peukert
f28e134c88
Clean up CRLF line endings
2025-01-12 11:06:04 +01:00
Admiral H. Curtiss
0e5d7d0f2d
Merge pull request #13268 from AdmiralCurtiss/ini-delete-case-sensitive
...
Common/IniFile: Fix case sensitivity mismatch in IniFile::Section::Delete()
2025-01-08 21:42:32 +01:00
OatmealDome
d5dbb0b285
MemArena: Add Darwin implementation
2025-01-08 12:46:31 -05:00
Admiral H. Curtiss
c567248b73
Common/IniFile: Fix case sensitivity mismatch in IniFile::Section::Delete()
...
values uses a case insensitive comparison, so erasing the equivalent key in keys_order also must do so.
2025-01-08 05:30:39 +01:00
Ferdinand Bachmann
b79bdb13c0
Common: Fix compile failure with fmt>=11
2025-01-04 19:13:05 +01:00
mitaclaw
110d32729e
Simplify std::find with Common::Contains
...
In NandPaths.cpp, the `std::initializer_list<char>` of illegal characters has been turned into a `char[]` (similar to the one in GameList.cpp).
The reverse iteration in ResourcePack.cpp seemed to provide no benefits, and doing without it it seemed to have no ill effects.
2025-01-01 09:52:03 -08:00
mitaclaw
6f10acea3f
Common: Create "Contains.h" Algorithm Header
...
The new `Common::Contains` and `Common::ContainsSubrange` function objects mirror C++23's `std::ranges::contains` and `std::ranges::contains_subrange`, respectively.
2025-01-01 09:52:01 -08:00
JMC47
532a8621da
Merge pull request #13116 from mitaclaw/ranges-modernization-8-trivial-of
...
Ranges Algorithms Modernization - Of
2024-12-26 16:51:53 -05:00
JMC47
1ba8541da9
Merge pull request #13091 from mitaclaw/ranges-modernization-2-returns
...
Ranges Algorithms Modernization - Return
2024-12-20 12:50:19 -05:00
mitaclaw
2b0cd16c8c
Modernize std::none_of with ranges
...
In JitRegCache.cpp, the lambda predicate were replaced by a pointer to member function because ranges algorithms are able to 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.
In BoundingBox.cpp, the lambda predicate was returning the bool element unchanged, so `std::identity` was a better fit.
2024-12-15 19:54:17 -08: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
mitaclaw
826e2bbf98
StringUtil: More Wrappers For <cctype>
...
`Common::IsLower(char)` was omitted as nothing needed it.
2024-12-15 19:50:34 -08:00
Amber Brault
1c4bfc35d9
Core: Store object name separately for symbols
2024-11-11 12:36:53 -05:00
Dr. Dystopia
6d44afc7dd
Replace 'reinterpret_cast' with 'static_cast'
2024-11-08 07:26:47 +01:00
JMC47
aa8226fa88
Merge pull request #12744 from nlebeck/settingshandler-split-2
...
Split `SettingsHandler` into separate reader and writer classes
2024-10-27 19:23:05 -04:00
JMC47
96c9591b99
Merge pull request #13096 from mitaclaw/ranges-modernization-7-rewrite
...
Ranges Algorithms Modernization - Rewrite
2024-10-27 19:17:01 -04:00
Niel Lebeck
1d79991ec4
Split SettingsHandler into separate reader and writer classes
2024-10-21 20:20:15 -07:00
mitaclaw
9afd09598c
DolphinQt: JIT Widget Refresh
...
Fulfilling a certain six-year-old todo.
2024-10-19 02:30:44 -07:00
mitaclaw
ca9222a16b
Move UICommon/Disassembler to Common/HostDisassembler
...
A preliminary commit for a cleaner diff and an easier review
2024-10-19 00:14:54 -07:00
mitaclaw
5f3a8ff0de
Modernize std::unique with ranges
...
The new return value is `std::ranges::subrange`.
2024-10-17 18:39:12 -07:00
JosJuice
07605bf67c
Merge pull request #13090 from mitaclaw/ranges-modernization-1-trivial
...
Ranges Algorithms Modernization - Trivial
2024-10-15 17:08:55 +02:00
Tilka
c1832d17f6
Merge pull request #13117 from mitaclaw/ranges-modernization-9-trivial-find
...
Ranges Algorithms Modernization - Find
2024-10-11 20:27:18 +01:00
mitaclaw
e8d5fb89e4
C++20: Synthesize operator!= From operator==
...
The inequality operator is automatically generated by the compiler if `operator==` is defined.
2024-10-10 20:23:55 -07:00
mitaclaw
6ca7e2856b
Modernize std::find with ranges
2024-10-10 15:28:11 -07:00
mitaclaw
ebf7cebc32
Modernize std::sort with ranges
2024-10-10 00:53:48 -07:00
mitaclaw
0a80243a92
Modernize std::replace with ranges
2024-10-10 00:53:48 -07:00
mitaclaw
72436a0d1f
Modernize std::transform with ranges
...
In StringUtil.h, the lambdas wrapping `Common::ToLower(char)` and `Common::ToUpper(char)` were only necessary due to the function names being overloaded.
2024-10-10 00:53:48 -07:00
mitaclaw
7ce170f138
Modernize std::copy with ranges
2024-10-10 00:53:48 -07:00
mitaclaw
4cc5e1972a
Modernize std::count_if with ranges
2024-10-10 00:53:48 -07:00
mitaclaw
809766a439
Simplify std::fill with std::array::fill
2024-10-09 17:26:10 -07:00
JMC47
b1cd4a6690
Merge pull request #13068 from mitaclaw/redundant-case-insensitive
...
IniFile: Migrate `Common::CaseInsensitiveLess` to StringUtil
2024-09-26 18:24:36 -04:00
mitaclaw
5f90673686
StringUtil: Remove JoinStrings
...
With 12 uses of `JoinStrings` in the codebase vs 36 uses of `fmt::join`, fmtlib's range adapter for string concatenation with delimiters is clearly the preferred option.
2024-09-22 21:09:36 -07:00
mitaclaw
508ccc2054
IniFile: Migrate Common::CaseInsensitiveLess to StringUtil
...
Migrating `Common::CaseInsensitiveLess` to StringUtil.h will hopefully discourage rolling one's own solution in the future for case-insensitive associative containers when this (quite robust!) solution already exists.
`Common::CaseInsensitiveStringCompare::IsEqual` was removed in favor of using the `Common::CaseInsensitiveEquals` function.
The `a.size() != b.size()` condition in `Common::CaseInsensitiveEquals` can be removed, since `std::ranges::equal` already checks this condition (confirmed in libc++).
2024-09-21 23:15:42 -07:00
Admiral H. Curtiss
e1b1e4b4cf
Merge pull request #13031 from parona-source/libfmt-11
...
Add support for libfmt-11
2024-08-31 15:34:48 +02:00
mitaclaw
76a998ecf9
TypeUtils: Remove Common::Fill
...
This temporary solution is no longer needed.
2024-08-22 17:29:26 -07: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
9602f36248
Remove redundant semicolons
2024-08-20 14:59:54 +02:00
Tilka
b3652a6fe7
Merge pull request #12889 from mitaclaw/constexpr-bitutils-1
...
BitUtils: Constexpr BitCastToArray, Remove BitCastFromArray
2024-08-17 03:28:06 +01:00
mitaclaw
6ffd71ffae
BitUtils: Constexpr BitCastToArray, Remove BitCastFromArray
...
`std::bit_cast` participates in overload resolution only if `sizeof(To) == sizeof(From)` and both `To` and `From` are *TriviallyCopyable* types, so the static assertions here can be removed. `[[nodiscard]]` was added as well.
2024-08-16 12:21:49 -07:00
OatmealDome
f10f08d1c2
UICommon: Remove Steam user directory logic
2024-08-15 12:42:16 -04:00
Tilka
18ac8bf405
Merge pull request #12990 from tygyh/Use-contains-method
...
Use 'contains' method
2024-08-14 23:54:16 +01:00
Dr. Dystopia
618b41a459
Use 'contains' method
2024-08-14 22:18:28 +02:00
Dr. Dystopia
b86291f868
Fix comments
2024-08-13 06:58:23 +02:00
Tilka
56e7e37d4f
Merge pull request #12957 from Dentomologist/adjust_include_order_and_spacing
...
Adjust order and spacing of various #includes
2024-08-07 03:27:23 +01:00
Dentomologist
d627b78c46
Adjust order and spacing of various #includes
...
Move some #includes around to match the Contributing guidelines.
2024-07-26 14:28:34 -07:00
mitaclaw
f79520a906
Cached Interpreter 2.0
...
It now supports variable-sized data payloads and memory range freeing. It's a little faster, too.
2024-07-23 14:06:21 -07:00
mitaclaw
ffc7bcfbf8
Emitters: Define Trivial Getters Inline
2024-07-21 21:35:29 -07:00
SimoneN64
2dcb612497
Change OperandDesc variables to not be underscore-prefixed in order to comply with https://eel.is/c++draft/lex.name#3.1 (fixes compilation under newlib; e.g. devkitPro)
2024-07-21 18:35:38 +02:00
Admiral H. Curtiss
3ca50f7879
Implement File::GetExePath() for FreeBSD
2024-07-07 21:09:50 +02:00
Admiral H. Curtiss
3a63633be3
Common/Crypto/SHA1: Use span and string_view for Context::Update()
2024-07-04 22:37:07 +02:00
LillyJadeKatrin
bf97305a60
AchievementManager: Cache Badges on Disk
...
Badges are saved in /User/Cache/RetroAchievements on first download and reused from there instead of redownloaded.
2024-07-04 22:12:28 +02:00
LillyJadeKatrin
360f899f68
Common/Crypto/SHA1: Add DigestToString() utility function
2024-07-04 22:12:20 +02:00
OatmealDome
35f383d9b0
ScmRevGen: Set commits ahead to zero when on a tag
2024-06-29 22:59:40 -04:00
JosJuice
ea7928b3cd
Android: Replace log type names map with array
...
Storing the log type names in a map results in them getting re-sorted by
their keys, which doesn't quite give us the sorting we want. In
particular, the Achievements category ended up being sorted at R (for
RetroAchivements) instead of at A. Every use of the map is just
iterating through it, so there's no real reason why it has to be a map
anyway.
2024-06-15 20:06:34 +02:00
Admiral H. Curtiss
e282649b57
Merge pull request #12798 from mitaclaw/branch-watch-tool-fixes-2
...
Branch Watch Tool: Optimizations
2024-06-15 16:57:05 +02:00
Admiral H. Curtiss
a95c3dbc97
Merge pull request #12818 from iwubcode/json_file_operations
...
Common: add Json helper utilities for loading or saving to a file
2024-06-15 16:43:38 +02:00
Admiral H. Curtiss
34f81ad9ac
Merge pull request #12838 from sepalani/sock-reshade
...
Socket: Fix connect issues when using ReShade
2024-06-15 15:12:51 +02:00
Sepalani
44028cbbb1
Socket: Fix connect issues when using ReShade
2024-06-11 12:18:42 +04:00
Admiral H. Curtiss
5589e1e00f
Merge pull request #12830 from VampireFlower/aliases
...
Assembler: Add aliases for r1 and r2
2024-06-10 18:35:40 +02:00
VampireFlower
473db6882d
r32 doesn't exist
2024-06-06 13:05:45 -06:00
VampireFlower
8f03d9e8ca
handle sp and rtoc as GPR aliases
...
Co-Authored-By: mitaclaw <140017135+mitaclaw@users.noreply.github.com>
2024-06-06 13:05:43 -06:00
mitaclaw
8050760fe9
BranchWatchTableModel: Assume Unreachable Code Truly Is
2024-06-05 19:59:39 -07:00
Jordan Woyak
98e6a95e87
FatFsUtil: Generate a non-partitioned image in our folder-to-sdcard conversion.
2024-06-04 15:17:05 -05:00
LillyJadeKatrin
9499e14209
Add user agent to headers for all RetroAchievements server calls
...
Requested agent syntax is "Dolphin/5.0-23456"
2024-06-03 00:24:43 -04:00
iwubcode
e92f59e2d4
Common: add JsonUtil cpp which was missed initially
2024-05-31 23:08:39 -05:00
iwubcode
d494059164
Common: update json util function for converting to numeric value to use a static_cast. As discussed, a Saturating cast doesn't make sense when converting a double to a float
2024-05-31 23:08:05 -05:00
iwubcode
1d4f758b14
Common: add file serialization/deserialization functions for JSON
2024-05-31 22:36:12 -05:00
Brad Smith
57963c87d8
Add OpenBSD/arm64 support.
...
Fix building on OpenBSD/arm64 and add CPU feature detection.
2024-05-22 14:32:37 -04:00
mitaclaw
28f8ab9e8a
Arm64FloatEmitter: 64-Bit Assert In ABI_PushRegisters
2024-05-07 13:51:50 -07:00
JosJuice
2c91367429
Merge pull request #12737 from nlebeck/settingshandler-split
...
Eliminate SettingsHandler's `SetBytes` and `Reset` methods
2024-05-05 22:35:23 +02:00
Tilka
c442c0d5e5
Merge pull request #10957 from Pokechu22/std-bitcast
...
Replace Common::BitCast with std::bit_cast
2024-05-04 08:24:59 +01:00
Pokechu22
fbbfea8e8e
Replace Common::BitCast with std::bit_cast
2024-05-03 18:43:51 -07:00
Guilherme Janczak
0859d2c472
improve NetBSD-specific code
...
NetBSD doesn't put packages in /usr/local like /CMakeLists.txt thought.
The `#ifdef __NetBSD__` around iconv was actually breaking compilation
on NetBSD when using the system libiconv (there's also a GNU iconv
package)
A C program included from C++ source broke on NetBSD specifically, work
around it.
This doesn't fix compilation on NetBSD, which is currently broken, but
is closer to correct.
2024-05-03 15:12:29 +00:00
Niel Lebeck
36cdb4a544
Eliminate SettingsHandler's SetBytes and Reset methods
...
Also make the `Decrypt` method private.
As far as I can tell, the only motivation for exposing the `SetBytes`
and `Reset` methods is to allow `CBoot::SetupWiiMemory` to use the same
`SettingsHandler` instance to read settings data and then write it back.
It seems cleaner to just use two separate instances, and require a given
`SettingsHandler` instance to be used for either writing data to a
buffer or reading data from a buffer, but not both.
A natural next step is to split the `SettingsHandler` class into two
classes, one for writing data and one for reading data. I've deferred
that change for a future PR.
2024-04-23 17:19:01 -07:00
JosJuice
e8154a529f
JitArm64: Increase farcode & nearcode cache size
...
This is a JitArm64 version of 219610d8a0 .
Due to limitations on how far you can jump with a single AArch64 branch
instruction, going above the former limit of 128 MiB of code (counting
nearcode and farcode combined) requires a bit of restructuring. With the
restructuring in place, the limit now is 256 MiB. See the new large
comment in Jit.h for a description of the new memory layout.
2024-04-22 08:31:48 +02:00
JosJuice
de33831783
Arm64Emitter: Fix shadowed variable
...
A lambda at the end of ARM64XEmitter::ParallelMoves named its parameter
`move`.
2024-04-21 16:20:59 +02:00
JosJuice
e140491fa9
Arm64Emitter: Fix incorrect assert category
2024-04-21 16:19:10 +02:00
JosJuice
3cfa233b63
VideoCommon: Use GetSpanForAddress safely in texture decoding
...
Now only VertexLoader remains... But that one might be tricky.
2024-04-20 18:31:08 +02:00
Admiral H. Curtiss
1805f6e381
Merge pull request #12660 from jordan-woyak/hide-makepkg
...
Hide branch name from title bar when there are no commits ahead of master.
2024-04-18 17:21:24 +02:00
OatmealDome
dbc7e03577
Merge pull request #12709 from mitaclaw/rcheevos-posix
...
RetroAchievements: Put "RetroAchievements.ini" in the correct config location for POSIX
2024-04-15 01:21:43 -04:00
mitaclaw
48b38f6e9b
RetroAchievements: Put "RetroAchievements.ini" in the correct config location for POSIX
2024-04-14 21:47:41 -07:00
Niel Lebeck
d2b96736e0
Pass SettingsHandler buffers by const ref instead of rvalue ref
2024-04-12 18:50:21 -07:00
Admiral H. Curtiss
0c1a76398b
Merge pull request #12691 from mitaclaw/jit-profiling-restoration
...
JitCache: Software Profiling Restoration
2024-04-13 01:35:25 +02:00
mitaclaw
30c63fa4a6
Common: Remove Unused PerformanceCounter Code
2024-04-09 13:43:32 -07:00
mitaclaw
ee8bcf2ccc
JitCache: Software Profiling Restoration
...
Rekindle software JIT profiling with a std::chrono conversion and a config connection.
2024-04-09 13:43:31 -07:00
mitaclaw
cf74c0d683
PPCCache: Avoid Global System Accessor
2024-04-08 19:49:57 -07:00
mitaclaw
88dadf81d4
FileUtil: Fix BranchWatch User Path
...
I mistakenly put `D_DUMP_IDX` here instead of `D_DUMPDEBUG_IDX`.
2024-03-29 11:05:45 -07:00
Jordan Woyak
02f57a4778
Replace SCM_IS_MASTER with SCM_COMMITS_AHEAD_MASTER
2024-03-23 16:48:52 -05:00
Admiral H. Curtiss
b510ac89a3
Merge pull request #12355 from fuzziqersoftware/tapserver-modem-adapter
...
Implement tapserver-based modem adapter
2024-03-22 02:47:06 +01:00
iwubcode
146504d635
Common: add json utility functions 'ReadStringFromJson' and 'ReadBoolFromJson' to match 'ReadNumericFromJson' functionality for other data types, similarly support other data types for 'ToJsonArray'
2024-03-20 17:34:25 -05:00
iwubcode
69694494ce
Common: update 'ReadNumericOrDefault' to 'ReadNumericFromJson' and have it return an optional, this provides the caller with more flexibility
2024-03-20 17:34:25 -05:00
Martin Michelsen
083116a89c
rewrite tapserver interface for better error handling
2024-03-17 18:37:55 -07:00
mitaclaw
8134c8a572
BranchWatchDialog: A Total Replacement for CodeDiffDialog
...
With a purpose-built Branch Watch feature built into the emulated system: BranchWatchDialog, replacing CodeDiffDialog, is now better than ever!
2024-02-27 11:40:58 -08:00
Mai
27415b0ba1
Merge pull request #12587 from AdmiralCurtiss/localtime
...
Core: Fix crash when inspecting a savestate with a timestamp that causes localtime() to error out
2024-02-18 17:12:29 -05:00
iwubcode
edbf8f1772
Common: add json utility functions for Vec3 serialization
2024-02-17 22:06:06 -06:00
Admiral H. Curtiss
52410813f2
Common: Add utility function that wraps localtime_s() or localtime_t().
2024-02-18 04:40:25 +01:00
Peter Lafreniere
3da2e15e6b
IOFile: avoid clearing errors on null file struct
...
When performing a default compilation with recent GCC & glibc,
the use of -Werror=nonnull causes a build error.
The error is given as IOFile::ClearError() can call std::clearerr()
with a null file, which can trigger a null-pointer dereference in libc.
Change the std::clearerr() call to be conditional on a file being open.
2024-02-11 20:55:31 -05:00
JosJuice
b5c5371848
Arm64Emitter: Don't optimize ADD to MOV for SP
...
Unlike ADD (immediate), MOV (register) treats SP as ZR. Therefore the
ADDI2R optimization that was added in 67791d227c can't optimize ADD to
MOV when exactly one of the registers is SP.
There currently isn't any code in Dolphin that calls ADDI2R with
parameters that would trigger this case.
2024-02-06 21:58:07 +01:00
Lioncash
16d8b6e6b3
Common/HookableEvent: std::move callback instance in Register()
...
Potentially avoids reallocations if the capture buffer of the callback
is quite large.
2024-01-31 13:16:50 -05:00
iwubcode
b37f096f4b
Common: add determinant functions to Matrix33 and Matrix44
2024-01-24 23:02:57 -06:00
iwubcode
b5a6225e1a
VideoCommon: add function to serialize ShaderAsset to json
2024-01-23 11:58:32 -06:00