| Age | Commit message (Collapse) | Author |
|
is running.
|
|
reads from table updates.
Preparations for auto update while a game is running.
|
|
replace with a signal that is only sent at the correct time.
|
|
DolphinQt/InputCommon: Make input mapping and output testing non-blocking.
|
|
Add SYSCONF country code to DTM
|
|
JitArm64_Integer: Carry flag optimizations
|
|
JitArm64_LoadStore: Small dcbx optimization
|
|
ScmRevGen: Don't generate Info.plist files directly
|
|
AdvancedWidget: Replace FFV1 codec with Ut Video
|
|
JitArm64: Optimize crXXX
|
|
|
|
|
|
|
|
|
|
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.
|
|
The new `Common::Contains` and `Common::ContainsSubrange` function objects mirror C++23's `std::ranges::contains` and `std::ranges::contains_subrange`, respectively.
|
|
DolphinQt/HacksWidget: Convert accuracy slider to ConfigSlider
|
|
Android: Fix VSync option not working
|
|
Ut Video is faster and more compatible with editing programs, but produces larger files.
|
|
Recently there was some issues in TASVideos trying to sync a Donkey Kong Country Returns TAS. It eventually was synced by directly using the config from the TAS author. The exact setting which caused the desync was narrowed down to being in SYSCONF, with the country code. The TAS author lives in the US, so the country code matched the US country code, while the person attempting to sync the TAS did not live in the US.
Adding SYSCONF country code to the DTM should avoid this being an issue for future Dolphin versions.
|
|
Before:
0x5280000d mov w13, #0x0 ; =0
0x1a1f01ae adc w14, w13, wzr
After:
0x1a9f37ee cset w14, hs
|
|
Before:
0x52800019 mov w25, #0x0 ; =0
0x394bd3b8 ldrb w24, [x29, #0x2f4]
0x2b180339 adds w25, w25, w24
After:
0x394bd3b9 ldrb w25, [x29, #0x2f4]
|
|
When the input register and carry flags are known, we can always
precompute the result.
We still materialize the immediate when the condition register
needs to be updated, but this seems to be a general problem. I might
look into that one day, but for now this'll do.
- ConstantFalse
Before:
0x52800119 mov w25, #0x8 ; =8
0x2a1903fa mov w26, w25
After:
N/A
- ConstantTrue
Before:
0x52800119 mov w25, #0x8 ; =8
0x1100073a add w26, w25, #0x1
After:
N/A
|
|
Same thing we did for subfex.
Before:
0x1280001a mov w26, #-0x1 ; =-1
0x1a1f035a adc w26, w26, wzr
After:
0x5a9f23fa csetm w26, lo
|
|
Similar to what we did for subfex, but for 0.
Before:
0x5280001b mov w27, #0x0 ; =0
0x1a1f037b adc w27, w27, wzr
After:
0x1a9f37fb cset w27, hs
|
|
Same optimization we did for subfex. Skip loading the carry flag into a
temporary register first when we're dealing with zero.
Before:
0x394bd3b8 ldrb w24, [x29, #0x2f4]
0x2a1803f9 mov w25, w24
After:
0x394bd3b9 ldrb w25, [x29, #0x2f4]
|
|
When both the input register and the carry flag are constants, the
result can be precomputed.
Before:
0x52800016 mov w22, #0x0 ; =0
0x2a3603f6 mvn w22, w22
After:
|
|
The result is either -1 or 0 depending on the state of the carry flag.
This can be done with a csetm instruction.
Before:
0x1280001a mov w26, #-0x1 ; =-1
0x1a1f035a adc w26, w26, wzr
After:
0x5a9f23fa csetm w26, lo
|
|
When the immediate is zero, we can load the carry flag from memory
directly to the destination register.
Before:
0x394bd3b8 ldrb w24, [x29, #0x2f4]
0x2a1803f9 mov w25, w24
After:
0x394bd3b9 ldrb w25, [x29, #0x2f4]
|
|
|
|
|
|
|
|
Add some unit test coverage of the `SplitPath` function
|
|
|
|
|
|
Ranges Algorithms Modernization - Of
|
|
|
|
It happened due to a typo from SECTION_GFX_HARDWARE
|
|
|
|
Jit_FloatingPoint: fselx - Prefer BLENDVPD over VBLENDVPD
|
|
JitArm64: Optimize ps_sel with d == b || d == c
|
|
Add ability to edit game-specific GFX settings from game properties tab.
|
|
AchievementManager: Make SetHardcoreMode private
|
|
Ranges Algorithms Modernization - Return
|
|
JitArm64_Integer: Optimize subfic for -1
|
|
VKSwapChain: Always use surface formats with a normal sRGB color space if not RGBA16F
|
|
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.
|
|
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.
|
|
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.
|
|
`Common::IsLower(char)` was omitted as nothing needed it.
|